大家好,
虽然我对工控这个领域的知识还是很有限,但我想尝试探索 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 接口
3 Likes
你好,
不好意思,最近没来看论坛了。
1.) 我是有注意到有两个开源主站代码,不过我没有深入去学习。我之前是想参考这个博客的 在RT-Thread上移植EtherCAT开源主站SOEM1.4.0_ethercat主机移植_lg28870983的博客-CSDN博客 , 但是我发现到 rt-thread 还没支持 VisionFive2, 所以我便继续在 Debian 上测试。
2.)我的代码是 console application, 并没有图形界面,不过这个和 EtherCAT 没有关联,我们可以用一些 platform 例如 Qt, 去创造一个图形界面然后再调用 SOEM 的 API 就可以完成一个有图形界面的 App 了。
3.)从站确实可以去弄一些定制, 但是我只是很普通的命令(速度,加速度),所以我并没有再从站去弄什么。我的理解是,在比较专业的应用里,是要在从站去做些设置,例如 PDO (Process Data Objects), 来决定每个都交换什么 data, PDO mapping 越大,意味着一次交换的数据越多,但是交换的频率也越慢, 所以选择需要的就好。
我觉得,可能瓶颈还是在 real-time (实时性), 因为目前好像还没有一个real-time OS (例如 rt-thread) 可以支持 VisionFive2.
另外我也注意到了,有人在 VisionFive2 上启用了 OpenPLC, 如果能把 EtherCAT 开源主站代码和 OpenPLC 结合起来,那应该很不错
2 Likes