- 博客(48)
- 资源 (10)
- 收藏
- 关注
原创 SOEM裸机移植
源码地址https://gitee.com/rathon/apollof429-v2.git还有一些移植细节可以参考我之前写的一些博客硬件平台:正点原子APOLLOF429V2开发板开发环境stm32cubemx6.2.0版本,用的库为STM32Cube_FW_F4_V1.26.2,开发软件为STM32cubeide时钟配置串口配置非gnu版串口重定向在main.c或者.h中添加以下代码进行重定向#include <stdio.h>/* USER CODE BEG
2024-12-29 21:40:18
1229
原创 SOEM主站开发开篇
好久不更新博客了,我也有点怀念CSDN啦。从2025年开始,我计划更新一系列博客,并带来一些好玩的东西(敬请期待~)。首先,把EtherCAT相关的博客重写一遍,写个几十篇吧,把这些年的遗憾完结一下。
2024-12-29 21:14:04
347
1
原创 rt thread smart适配野火imx6ull开发板的KSZ8081网卡
rt thread smart适配野火imx6ull开发板的KSZ8081网卡
2022-04-16 14:25:06
2648
原创 grbl源码解析——速度前瞻(2)
本文参考了两篇论文《基于运动控制卡的PC数控进给速度前瞻控制_刘青山》、《嵌入式数控系统速度前瞻规划算法研究_游达章》planner_recalculate if (!(block->condition & PL_COND_FLAG_SYSTEM_MOTION)) { float nominal_speed = plan_compute_profile_nominal_speed(block); plan_compute_profile_parameters(block,
2021-10-13 18:01:16
6141
5
原创 grbl源码解析——速度前瞻(1)
本文参考了两篇论文《基于运动控制卡的PC数控进给速度前瞻控制_刘青山》、《嵌入式数控系统速度前瞻规划算法研究_游达章》plan_buffer_line速度前瞻位于直线、圆弧插补之后,首先是通过plan_buffer_line(float *target, plan_line_data_t *pl_data)函数进行拐点处的速度计算。uint8_t plan_buffer_line(float *target, plan_line_data_t *pl_data){ // Prepare and
2021-10-13 17:54:14
12002
4
原创 grbl源码解析——圆弧插补
uint8_tgc_execute_line(char *line)函数,对G02,G03代码进行解析,目的是求出圆心坐标。接着调用mc_arc函数进行后续数据处理。// position == current xyz, target == target xyz,// offset == offset from current xyz, axis_X defines circle plane in tool space, axis_linear is// the direction of heli
2021-10-13 17:40:53
6435
原创 matlab调用c的dll动态链接库_环境设置
在matla和c混合编程时,用vs编译dl阶段可能会出现如下报错,此时需要对vs环境进行配置错误 LNK2019 无法解析的外部符号 mxCreateString_800,该符号在函数 ReadFrameData 中被引用 dllfile 错误 LNK2019 无法解析的外部符号 mxGetData_800,该符号在函数 ReadData 中被引用 dllfile 错误 LNK2019 无法解析的外部符号 mxSetField_800,该符号在函数 ReadData 中被引用 dllfile 错
2021-01-05 20:21:34
1182
1
原创 matlab调用c的dll动态链接库
1创建动态链接库平台vs2017编写程序cal.h文件#ifndef _CAL_H#define _CAL_Htypedef struct hello{ double add1; double add2; double sum;}hello;#define DLLEXPORT __declspec( dllexport )DLLEXPORT void add(hello * x, double a, double b);#endifcal.c文件#include
2021-01-04 20:35:52
1737
原创 基于STM32构建EtherCAT主站(SOEM方案)1
最近两月的周末,本人将SOEM主站移植到了STM32上,在free run模式下运行正常,可以驱动倍福的io从站;在DC模式下存在一些bug,只能驱动一部分的伺服驱动器。准备在博客上记录一些移植过程,和大家分享一下,肯定会有一些说的不对的地方,欢迎大家批评指正。整个移植过程其实和将lwip移植到stm32上的方法类似,SOEM主站在设计时就采用了硬件抽象层、操作系统抽象层的架构,因此改一下osal、oshw、nicdrv这几部分的代码就可以了。当然了,移植过程中参考了许多网上资料(不限于以下几个)。在
2020-12-05 18:23:33
13879
14
原创 stm32f767 nucleo串口通讯显示乱码
在stm32f767 nucleo上移植野火的stm32f767串口通讯程序,一直显示乱码。由于nucleo板子并没有焊接25M晶体振荡器,而是使用了板上的stlink输出的8Mhz的时钟,因此需要对时钟进行重新配置。系统时钟设置对了,可是还是显示乱码,这是为什么呢???这个问题折磨了我整整两天,反复查看代码,阅读手册,就是没整明白。也许是老天爷也看不下去了吧,在一个偶然的机会下我点击了MDK的配置选项,一刹那间,我似乎找到了问题所在。哈哈,问题就这样轻松解决了,下图就是那个困扰了我多日的原因
2020-09-26 20:21:10
507
原创 EtherCAT igh主站控制松下伺服(csp模式)
完整代码#include <errno.h>#include <signal.h>#include <stdio.h>#include <string.h>#include <sys/resource.h>#include <sys/time.h>#include <sys/types.h>#include <unistd.h>#include <sys/mman.h>#inclu
2020-09-06 10:27:49
6832
18
原创 ubuntu14.04、xenomai3.1、ethercat igh构建主站(3)
这篇主要写了一个小例子的运行。我把完整的工程项目上传到了CSDN上。分享两个ethercat igh master采用倍福的EL2008,运行效果如下图所示。Makefile之前有人问我怎么编译?我写了一个Makefile,在工程目录输入make就可以了。代码如下:CC = x86_64-linux-gnu-gccINCPATH = -I./igh-output/include -I./xenomai-Output/include -I./xenomai-Output/inc
2020-06-29 12:51:38
4745
6
原创 ubuntu14.04、xenomai3.1、ethercat igh构建主站(2)
我是在i9 9900k的主机上编译的linux内核、xenomai以及ethercat igh。有如下两个版本:1.linux4.9.38+xenomai3.1+ethercat igh2.linux3.14.44+xenomai2.6.5+ethercat igh我分别在i5 6600和i5 4460上进行了测试。都能成功驱动台达ethercat伺服(ASD-A2-0421-E),说明主站可以正常运行。xenomai的实时性方面,i5 4460主机的效果比i5 6600主机好很多。i5
2020-06-29 11:20:02
7669
7
原创 ubuntu14.04、xenomai2.6.5、ethercat igh构建主站
参考文献https://rtt-lwr.readthedocs.io/en/latest/rtpc/xenomai.htmlhttps://rtt-lwr.readthedocs.io/en/latest/rtpc/xenomai3.html材料linux内核:3.14.44xenomai2.6.5ipipe-core-3.14.44-x86-11.patch一些安装包sudo apt-get install build-essential libncurses5-dev bison fle
2020-06-29 09:49:37
2831
4
原创 ubuntu14.04、xenomai3.1、ethercat igh构建主站(1)
内核选用4.1.18参考文章https://rtt-lwr.readthedocs.io/en/latest/rtpc/xenomai3.htmlhttps://rtt-lwr.readthedocs.io/en/latest/rtpc/xenomai.htmlhttps://www.bilibili.com/video/BV1wg4y1z7C2?t=1399第一步./scripts/prepare-kernel.sh --linux=/home/vmuser/workspace/linux-4
2020-06-22 19:27:45
9334
26
原创 EtherCAT igh主站控制埃斯顿伺服(csp模式)
完整代码算了、干脆直接贴代码了。最近都在搞EtherCAT主站、从站的应用,过段日子再分享一些项目中基础的东西。驱动伺服主要还是参考厂商提供的EtherCAT伺服参考手册,基本上都采用CIA402协议,各个厂商的伺服使能、使用步骤都是一样的。#include <errno.h>#include <signal.h>#include <stdio.h>#include <string.h>#include <sys/resource.h>
2020-05-20 10:38:00
7870
13
原创 EtherCAT igh主站控制埃斯顿伺服回零
完整代码#include <errno.h>#include <signal.h>#include <stdio.h>#include <string.h>#include <sys/resource.h>#include <sys/time.h>#include <sys/types.h>#include <unistd.h>#include <sys/mman.h>#inclu
2020-05-20 10:28:11
2760
1
原创 EtherCAT igh "Fatal Sync Error"——0x002C,0x001A
问题还没解决,后续会跟进。打算记录一下调试过程,以防后面忘记。当然也希望有朋友能指点我一下,哈哈。使用igh进行开发,遇到了一个报错,这种报错无规律可言,测试的时候,有时会出现,有时不出现。这个问题,我问了一个网友,他的回答如下:EtherCAT从站有个本地时钟(是个定时器,1ms一次中断,这个中断函数会去喂狗,就是累加一个数),sync会去清零这个累加数(清除喂狗的次数)。当喂狗的次数(...
2019-12-30 16:12:46
4406
18
原创 EtherCAT igh函数尝试
尝试igh函数的功能,加深对不同函数的认识,总结相关函数的用法。1.ecrt_master_get_slave/** Obtains slave information. * * Tries to find the slave with the given ring position. The obtained * information is stored in a structure...
2019-12-06 10:52:13
1531
原创 EtherCAT igh主站控制3个台达asdaa2伺服转圈圈
1.查看ASDA的PDO映射 打开ASDA的Delta_ASDA2-E_rev4-00_XML_TSE_20160620.xml文件 修改main.c的pdo部分/* Master 0, Slave 0 * Vendor ID: 0x000001dd * Product code: 0x10305070 * Revision number: 0x02040608...
2019-12-03 15:09:45
6766
17
原创 EtherCAT igh源码的ecrt_slave_config_dc()函数的理解。
总结一下自己对igh的ecrt_slave_config_dc()函数的理解。参考了igh的example里的“dc_user例程”。例程里有这样一处代码:// configure SYNC signals for this slave ecrt_slave_config_dc(sc, 0x0700, PERIOD_NS, 4400000, 0, 0);在slave_config.c文件...
2019-12-03 14:18:26
6009
3
原创 POSIX创建终止线程
本文参考《嵌入式Linux开发教程》和《Linux/UNIX系统编程手册》。创建线程int pthread_create(pthread_t *thread, const pthread_attr_t *attr,void *(*start_routine) (void *), void *arg);thread 用来指向新创建线程的 ID;attr 用来表示一个封装了线程各种属性的属性...
2019-07-27 15:56:27
227
原创 POSIX信号量
本文参考《嵌入式Linux开发教程》和《Linux/UNIX系统编程手册》。多进程编程中需要关注进程间的同步及互斥问题。同步是指多个进程为了完成同一个任务相互协作运行,而互斥是指不同的进程为了争夺有限的系统资源(硬件或软件资源)而相互竞争运行。信号量是用来解决进程间同步与互斥问题的一种进程间通信机制,它是一个特殊的变量,变量的值代表着关联资源的可用数量。若等于0 则意味着目前没有可用的资源。...
2019-07-26 11:17:56
391
原创 POSIX共享内存
本文参考《嵌入式Linux开发教程》和《Linux/UNIX系统编程手册》。共享内存概述共享内存是允许两个不相关的进程访问同一个逻辑内存的进程间通信方法,是在两个正在运行的进程之间共享和传递数据的一种非常有效的方式。不同进程之间的共享内存通常安排为同一段物理内存。进程可以将同一段共享内存连接到它们自己的地址空间中,所有进程都可以访问共享内存中的地址,就好像它们是由用 C语言 malloc()...
2019-07-26 09:46:16
511
原创 System V IPC与POSIX IPC
本文参考《Linux/UNIX系统编程手册》。System V IPC包括三种不同的进程间通信机制:1.消息队列用来在进程间传递消息。2.信号量允许多个进程同步它们的动作。3.共享内存使得多个进程能够共享内存(即同被映射到多个进程的虚拟内存的页帧)的同一块区域(称为一个段)。POSIX IPC...
2019-07-26 09:02:18
338
原创 linux进程:fork、exce、wait
linux使用fork()来创建一个新进程,fork函数将运行着的进程分裂出另一个子进程,它通过拷贝父进程的方式创建子进程。子进程与父进程有相同的代码空间、文件描述符等资源。进程创建后,子进程与父进程开始并发执行,执行顺序由内核调度算法来决定。fork()函数如果成功创建了进程,就会对父子进程各返回一次,其中对父进程返回子进程的 PID,对子进程返回 0;失败则返回小于 0 的错误码。#i...
2019-07-24 16:10:31
383
原创 基于AM4377的EtherCAT主站控制stm32从站
本文为一个igh小例程,用于控制EtherCAT从站。主站控制3个倍福EL2008从站每秒钟实现1次亮灭,每秒读取stm32从站的AD数据并在串口中打印出来,stm32从站的8路输出由8路输入控制(用key控制led亮灭)。程序参考了igh提供的example。实验设备为安装了xenomai和igh的am4377开发板、倍福EL2008从站和淘宝店家“易元素电子”的stm32从站。igh ...
2019-07-23 11:51:24
4472
20
基于stm32构建EtherCAT主站,采用了开源的soem方案
2020-12-05
igh_xenomai_demo.zip
2020-06-29
ethercat igh.zip
2020-06-29
linux3.14.44_xenomai2.6.5_igh.zip
2020-06-29
linux4.9.38_xenomai3.1_igh.zip
2020-06-28
EtherCAT igh主站控制3个台达asdaa2伺服转圈圈
2019-12-03
基于AM4377的EtherCAT主站控制stm32从站的小程序
2019-07-23
ethercat从站stm32程序和使用文档,实现了IO、AD、DA功能。
2019-07-20
beaglebone(AM335X)igh-ethercat主站小程序
2019-07-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人