大家好,
虽然我对工控这个领域的知识还是很有限,但我想尝试探索 VisionFive2 或 RISC-V 架构在工控领域的潜能。 
这是我购买的EtherCAT 设备,
1.) OL3-E57H EtherCAT 步进驱动器
2.) LC42HS60 步进电机
应用软件方面,我选择了开源的 Simple Open EtherCAT Master Library (SOEM),
然后再用它编写程序应用(Application)
备注:我的操作系统是 Debian , 但 EtherCAT 主站最好是用实时操作系统。
请看下面这个是我上传的视频。当步进电机能按照命令转动起来时,还是很开心的 
如果有网友不清楚什么是 EtherCAT, 请看这个
6 Likes
真棒!赛昉科技也积极在探索工业控制方面的应用,RVspace应用中心罗列了我们推荐的应用文章,正在持续更新中,有好的点子欢迎推荐。
2 Likes
非常高质量的分享!!! 我对这块也非常感兴趣,非常期待您能进一步分享在Debian系统上关于EtherCat主站控制设备的应用程序的实现,非常期待呀!!!
1 Like
OK, 能先简单科普一下比较基础的知识吗? 比如您基于Visionfive 2 移植EtherCat协议的时候,在内核做了哪些工作呀? 然后用户空间使用开源的Simple Open EtherCAT Master Library (SOEM),是通过socket接收/发送EtherCat协议报文吗?
内核不需要更改。
只是要参考驱动器的datasheet, 并根据驱动器支持的协议 (CoE) 来写代码。
我选择了 PV mode (velocity mode),当然还有其他的 mode 可以选择
那么根据 驱动器的datasheet
这是参数:
这是流程 :
例如 : 在 SOEM 那边的代码
#define WRITE(slaveId, idx, sub, buf, value, comment)
{
int __s = sizeof(buf);
buf = value;
int __ret = ec_SDOwrite(slaveId, idx, sub, FALSE, __s, &buf, EC_TIMEOUTRXM);
printf(“Slave: %d - Write at 0x%04x:%d => wkc: %d; data: 0x%.*x\t{%s}\n”, slaveId, idx, sub, __ret, __s, (unsigned int)buf, comment);
}
下面是设置加速度 (0x6083 是加速度, 可以参考上面的截图)
WRITE(l_slaveId, 0x6083, 0, buf32, acceleration, “Target Accerelation”)
而
ec_SDOwrite 是 SOEM 的 API 接口
2 Likes