『7x24小时有问必答』
映射都配好了,怎么还是没数据?
EtherCAT PDO 配置,一步步来
有个场景挺常见。
新买的驱动器接上,主站扫到了,型号也认出来了,映射也照着手册一条条填进去了。结果一跑,要么卡在 Pre-Op 死活上不去,要么状态是上去了,但主站那边位置一直是 0,怎么看都不对。
十有八九是漏了一步。
这篇讲 EtherCAT 上 PDO 到底怎么配。上一篇说过 PDO 就是事先印好的一张表,这篇讲这张表具体怎么印、怎么交上去。
一、先搞清楚这是两层活
很多人卡住,是因为以为配 PDO 就是一件事。其实是两件。
▲ 装表和交表是两件事,都得做
第一层叫装表。你告诉驱动器:这张表里要放控制字、目标位置这几样东西,每样占几个字节。这一步填的是 1600h(收的表)和 1A00h(发的表)。
第二层叫交表。你再告诉驱动器:这次通信,收的这边用第几张表,发的这边用第几张表。这一步填的是 1C12h 和 1C13h。
为什么要分两层?因为一台驱动器里可以存好几张表。比如 1600h 一张、1601h 一张、1602h 一张,分别对应不同的用法。装表只是把这些表准备好,具体这次用哪张,得靠交表这步指定。
开头那个「状态上去了但收不到数据」,绝大多数就是表印好了没交上去。1600h 填得漂漂亮亮,1C12h 是空的,驱动器当然什么都不发。
二、这几个编号分别是干嘛的
把上面那张图翻译成编号,就是这么四组:
编号
干什么用的
谁收谁发
1600h ~ 17FFh
装表:驱动器要收的那几个参数
主站发给驱动器
1A00h ~ 1BFFh
装表:驱动器要发的那几个参数
驱动器报给主站
1C12h
交表:收的这边用哪几张表
对应 SM2
1C13h
交表:发的这边用哪几张表
对应 SM3
  
SM2 和 SM3 是 EtherCAT 里的同步管理器,你可以简单理解成两个数据通道,一个管收一个管发。1C12h 对应收,1C13h 对应发,记住这个对应关系就够了。
这里最容易看反的还是收发方向。这两个字是站在驱动器角度说的:1600h 是驱动器收的,装的是主站发下来的控制字、目标位置;1A00h 是驱动器发的,装的是要报给主站的状态字、当前位置。翻手册的时候留意一下。
三、表里填的那串数是什么意思
打开映射表,你会看到一串像 0x60400010 这样的数。这个数不是随便编的,是三段拼起来的。
▲ 一条映射值是三段拼起来的
前四位是参数编号,中间两位是子索引,最后两位是这个参数占多少位。
以 0x60400010 为例:6040h 是控制字,00 是子索引,10 是十六进制的 16,也就是这个参数占 16 位、2 个字节。
常用的几个直接抄就行:
参数
编号
长度
映射值
控制字
6040h
16 位
0x60400010
目标位置
607Ah
32 位
0x607A0020
目标速度
60FFh
32 位
0x60FF0020
状态字
6041h
16 位
0x60410010
当前位置
6064h
32 位
0x60640020
当前模式
6061h
8 位
0x60610008
<o:p>  
最后两位的位长最容易写错。32 位的参数写成了 0x10,驱动器按 2 个字节去取,后面所有数据全部错位,读出来的位置就成了一堆看不懂的数。
四、大部分人其实不用手动配
讲了这么多,先说个好消息:真正需要自己一条条填的场合并不多。
▲ 先看有没有现成的,实在没有再手动配
驱动器厂家一般会在 ESI 文件里预置好几组常用组合。比如 CSP 模式一组、CSV 模式一组、带转矩前馈的一组。主站软件把 ESI 文件导进去,在下拉框里挑一组,配置就完成了。九成场合这样就够用。<o:page></o:page>
什么时候才需要手动配?就一种情况:预设组合里没有你要的参数。比如你想在每个周期都读到电机温度或者母线电压,而厂家给的几组预设里都没有这一项。
手动配之前先确认一件事:这台驱动器支不支持改映射。有些低成本型号是固定映射,表印死了改不了。这个在 ESI 文件里能查到,主站软件里通常也会显示映射项是不是可编辑。
五、真要手动配,顺序是这样
如果确实要自己排格子,那顺序不能乱。跳步的话从站一般会直接拒绝,返回一个错误码。
▲ 八步走完,顺序不能乱
为什么要先写 0?因为驱动器需要知道你是在「重新排表」,而不是在往一张已经生效的表里乱插东西。子索引 0 存的是「这张表有几项」,把它写成 0,等于告诉驱动器这张表现在作废了,可以重排。等你把各项都填完,再把项数写回去,这张表才重新生效。
交表那一步也是同样的道理,1C12h 的子索引 0 也要先清零再往回写。
上面八步是收的这一组。发的那组步骤完全一样,把 1C12h 换成 1C13h、1600h 换成 1A00h 就行。
实际操作的时候,这些写入动作都是通过 SDO 完成的。所以状态必须在 Pre-Op 以上,因为 Pre-Op 才会打开邮箱通道。
六、几个容易卡住的地方
●卡在 Pre-Op 上不去 Safe-Op,先查映射。这是最高频的问题。主站按 ESI 文件配了一组 PDO,驱动器固件里没这几个参数,或者长度对不上,从站就拒绝往下走。看主站给出的 AL Status Code,一般能查到具体是哪一项。
●状态到了 Op 但数据全是 0,查 1C12h 和 1C13h。这就是开头那个场景,表没交上去。<o:page></o:page>
●位置读不回来,八成是忘了映射 6064h。有人只顾着配控制字和目标位置,忘了把当前位置放进发的那张表。指令发得出去,反馈读不回来,主站做闭环就抓瞎了。CSP 模式下这个特别常见。
●改完 ESI 文件记得让主站重新扫描。驱动器固件升级换了 ESI 之后,主站还拿着旧的配置去对,肯定对不上。
●映射项加起来别超上限。每个从站能装多少字节是有限的,ESI 文件里写着。超了从站会在切状态的时候报错。
●改映射一定要在 Pre-Op 做。到了 Safe-Op 和 Op,这些参数基本都是只读的,写进去会返回错误。
整个流程说白了就八个字:先印表,再交表,顺序别乱。配好之后跑起来,主站每个周期就能按固定格子取数了。
下一篇我们接着讲 EtherCAT 从站的落地方案:ESC 专用芯片和 FPGA 到底怎么选、成本和开发周期各是什么量级。欢迎关注我们,一起把这些看着唬人的技术名词一个个拆明白。
#工业总线 #EtherCAT #伺服驱动器 #工业通信 #运动控制<o:page></o:page>
</o:p>

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

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

x
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

上一主题上一主题         下一主题下一主题
QQ手机版小黑屋粤ICP备17165530号

关于我们·投诉举报· 用户帮助· 联系我们 · 本站服务 · 版权声明· 隐私政策 · 投搞指南

法律保护:PLC技术网,plcjs.com,plcjs.net等字样
Copyright 2010-2030. All rights reserved. 


微信公众号二维码 抖音二维码 百家号二维码 今日头条二维码哔哩哔哩二维码