搜索
bottom↓
回复: 102

基于stm32和soem的EtherCAT主站代码分享

  [复制链接]

出0入131汤圆

发表于 2020-9-9 11:50:21 | 显示全部楼层 |阅读模式
看到网友对stm32 做 EtherCAT主站感兴趣,现分享我之前调试的代码

其实就是吧开源的soem代码移植到了stm32上面而已,实在是没啥原创内容,但是走了弯路。

这个主站使用的stm32h743,nucleo-h743

伺服使用的是汇川伺服,io也是可以驱动的,某宝上随便买个io从站都可以用。

这个程序呢,也只是验证一下Ecat通讯是没问题的,至于伺服的加减速,插补等,是没有的,你们自己编写吧。


下面说说所走的弯路:这个汇川伺服,我刚开始调试的时候,就是可以使能伺服,但是就是不能正常运转,指令可以发过去,但是不返回数据。

后来不知道改了什么代码,伺服可以正常转了,可能是dc同步问题,也可能是我的初始化有问题,也可能是汇川的底层写的有问题。

为什么这么说呢,因为我做产品不使用汇川伺服,买了松下的伺服,调试的很顺利,没有汇川这么麻烦,汇川伺服至少耽误了我2个月的时间。

就是从可以使能伺服到伺服运转花了2个月的时间,一度想放弃,因为不知道哪里出了问题。如果一开始用松下伺服,就没这么多事情了。


欢迎交流








本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入131汤圆

 楼主| 发表于 2020-9-9 11:56:48 | 显示全部楼层


移植过程参考这篇论文(我不是作者),在此感谢一下作者。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入131汤圆

 楼主| 发表于 2020-9-9 13:48:23 | 显示全部楼层
阿豪博士 发表于 2020-9-9 13:09
请问一下,这是双网卡吗?

这个单网卡的

出0入131汤圆

 楼主| 发表于 2020-9-9 14:14:30 | 显示全部楼层
jianbo513 发表于 2020-9-9 14:04
etherCAT也在考虑用,多谢分享

ecat的伺服还是贵一些,我打算换成stm32发脉冲了

出0入131汤圆

 楼主| 发表于 2020-9-9 14:16:49 | 显示全部楼层
whatcanitbe 发表于 2020-9-9 13:00
谢谢共享,ethercat做插补的话可以达到 相当于 脉冲式控制  多少M的插补速度? ...

你说的插补速度我不懂,ecat通讯周期可以选择1ms 2ms 4ms,快的话500us 250us 125us,当然得伺服支持才行,有的伺服不支持这么快的通讯周期。

我这个程序是1ms通讯一次

出0入131汤圆

 楼主| 发表于 2020-9-10 12:11:35 | 显示全部楼层
落叶知秋 发表于 2020-9-9 17:43
这个我有印象,哈哈

多谢坛友相助

出0入131汤圆

 楼主| 发表于 2020-9-10 12:19:55 | 显示全部楼层
whatcanitbe 发表于 2020-9-9 17:58
如果方便的话,还是想买块你的这个板子试试插补性能。

实际上,我的项目由于特殊性,没有用到插补功能,虽然是4轴联动,但是我并没有去编写直线插补圆弧插补之类的算法,我只是在相应的时刻去运转停止电机而已


插补肯定是没有问题的,无论是发脉冲,还是走ecat,还是canopen等等,本质上就是告诉电机在指定的时刻走到指定的位置而已。

所以,如果你做过发脉冲之类的插补,移植一下也很容易的。

至于我的硬件,就是stm32f429+lan8720,和很多开发板一样的。

出0入131汤圆

 楼主| 发表于 2020-9-11 09:58:17 | 显示全部楼层
MoMo_avr 发表于 2020-9-11 09:16
soem是个好东西,我用的407+83848的开发板搞的主站,发现M4在1ms位置环周期跑2~3个轴已经比较吃力了(soem ...

这个和soem没有关系,soem只负责和驱动器通讯,实测pdo通讯一次的时间也就70多us,你说的吃力是不是电机位置算法比较耗时间,优化一下你的电机位置算法试试

出0入131汤圆

 楼主| 发表于 2020-9-27 15:00:06 | 显示全部楼层
leiga1029 发表于 2020-9-27 12:12
楼主您好,
有二个问题想请教您:
1:您分享的程式码为 ST STM32H743ZI所用,那在回答栏里您有提到你的硬件为 ...


1 最初我没有画板子,买的nucleo-h743测试的,测试成功之后 才自己根据需求自己画了一块板。

网络部分几乎一致,necleo的phy是lan8742,我用的是lan8720,我看了寄存器几乎一致,代码也基本上可以通用。

代码等我有空整理一下。

2 我不认识作者,所以没有代码。

出0入131汤圆

 楼主| 发表于 2020-9-29 08:58:55 | 显示全部楼层
LCH201328 发表于 2020-9-29 08:03
你好,我看定时器里面的ethercat接收函数是阻塞的,这很占用cpu使用率吧?你实际产品也是这么做的吗? ...

确实是阻塞的,但是并没有占用很多,数据发出去,再收回来 大概70多us,所以不碍事。

出0入131汤圆

 楼主| 发表于 2020-10-19 10:12:59 | 显示全部楼层
heky_007 发表于 2020-10-19 08:10
实际带东元伺服可以控制电机旋转停止,

管用吗?

长时间跑一下试试,看看可报警

出0入131汤圆

 楼主| 发表于 2021-3-19 09:38:14 | 显示全部楼层
zzh90513 发表于 2021-3-18 18:20
请教下,从机支持更快的扫描周期主要取决于什么,跟MCU的执行速度直接相关吗? 使用ET1100或者LAN9252这 ...

我没有开发过io从站,但是我买过io从站(8入8出),用的就只是一片lan9252,没有mcu,扫描周期1ms完全没问题。更快点也没问题。

出0入131汤圆

 楼主| 发表于 2021-5-10 16:43:57 | 显示全部楼层
NM2012 发表于 2021-4-28 14:15
我拆过南京十点的他们耦合器里面有丛站芯片后面那个刀片是输入输出模块里面都有一片丛站芯片加一片stm单 ...

那种是可以扩展的,一片lan9252最多只能扩展16个io,如果需要更多的io,就需要stm32,或者 用多片lan9252,我也测试过ax58100,一片58100可以扩展32个io,基本上不需要单片机了。

出0入131汤圆

 楼主| 发表于 2021-6-6 17:06:44 | 显示全部楼层
A_jie 发表于 2021-6-3 22:08
楼主,我现在用的一个407+Lan8720驱伺服,第一个品牌的伺服运转正常;另外一个品牌目前能使能,但是转不起 ...


我也遇到过这个问题,后来我没有解决。 只是我换了同品牌的伺服驱动器。

我怀疑是dc同步有问题,现在没有精力去研究了。

现在,我开始走发脉冲的方案了
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-6 02:38

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表