『7x24小时有问必答』
参数每次上电都得重写一遍?
EtherCAT SDO 配置,一步步来
换了台新驱动器,参数一个个写进去,调好了,收工。
第二天上电一看,全变回默认值了。又写一遍。再上电,又没了。
这种情况一般不是驱动器坏了,是参数下发这件事没安排好。这篇讲 EtherCAT 上 SDO 怎么用,说白了就一件事:怎么让参数每次上电自己写进去,不用人再敲一遍。
一、好消息:SDO 其实不用配
先说个能省事的。
不少人以为 SDO 跟 PDO 一样,要在主站里配一堆表。其实不用。SDO 就是一条现成的通道,驱动器一上电走到某个状态,这条路自己就通了,你什么都不用做。
所以平时说的「配 SDO」,实际是在说下面三件事里的一件。
▲ 通道本身不用配,要配的是中间那件
通道本身不用管。程序里临时读写是另一个话题,用主站给的现成功能块就行。真正要动手的,是中间那个启动参数表。
不过在讲它之前,得先补个前置知识,不然后面会看不懂。
二、驱动器上电,要过四道关
EtherCAT 的从站不是一上电就能干活的,它要一关一关往上走,一共四关。
●第一关 Init,刚上电。这时候两边只做最基本的握手,什么正事都干不了。
●第二关 Pre-Op,能说话了。到了这一关,会打开一条叫「邮箱」的通道,专门用来传参数。SDO 走的就是这条道。所以想写参数,至少得到这一关。
●第三关 Safe-Op,能报数了。驱动器开始往上报位置、状态这些数据,但你给它发指令它不动。
●第四关 Op,全通了。这时候电机才真正听指令。
记住这四个名字就行,后面配参数的时候要用到。顺带一提,现场碰到「设备起不来」,第一件事就是看它卡在第几关,这比瞎猜有效得多。
三、你真正要配的,是一张清单
回到正题。所谓启动参数表,说白了就是一张清单,上面写清楚:每次上电要往驱动器里写哪些参数、各写什么值。
主站在从站过关的时候,会照着这张清单一条条替你发下去。
▲ 启动参数表,一行一条
一行就是一条。要填的东西不多:这条什么时候发、写哪个参数、哪个子索引、这参数多长、写什么值。最后一列的说明是给自己看的,可写可不写,但强烈建议写,过三个月你会感谢自己。
不同主站叫法不一样。倍福的 TwinCAT 里这一页叫 Startup,有的主站叫初始化命令,有的直接写「启动参数」。名字不一样,长得都差不多,找带 Startup 或者 Init 字样的那个标签页就对了。
配好之后,以后每次上电、每次重新扫描,主站都自动照着发一遍。开头那个「参数第二天就没了」的问题,到这儿就解决了。
顺带一个好处:现场换驱动器变得很省事。新的插上去,主站把清单一发,配置跟旧的一模一样,不用人再对着手册敲一遍。
四、每条参数放在哪一关发
清单里有一列叫时机,填的是 IP、PS、SO 这几个缩写。它们说的就是第二章那四道关,具体在哪两关之间把这条发下去。
▲ IP、PS、SO 三个时机,一般选 PS
IP 是第一关跳第二关的时候。邮箱刚打开,能发的东西有限,一般只放跟通信本身相关的基础配置。
PS 是第二关跳第三关的时候。这个最常用,你要配的东西九成都放这儿:运行模式、加减速、电子齿轮比、PDO 映射,全在这一步发。
SO 是第三关跳第四关的时候。这会儿数据都开始跑了,能改的很少,实际用得不多。
所以结论很简单:拿不准就放 PS。放太早,驱动器还没准备好,会报错;放太晚,有些参数已经变成只读的了,照样写不进去。
还有个细节容易忽略:同一关里的多条参数,主站是从上往下按顺序发的。有些参数之间有先后关系,顺序排错了会失败。最典型的就是 PDO 映射那几条,得先清零、再写各项、最后写回条数,这几条在清单里的位置不能乱。
五、第一次配,大概是这么个流程
如果你是头一回弄,可以照着下面走一遍。各家主站界面不同,但步骤是一样的。
●驱动器接好线,主站扫描,确认能认出型号。这一步不通,后面都别谈。
●在设备的属性页里找到 Startup 那一页,一般是个空白的表格。
●点新增,弹出一个对话框,让你填索引和子索引。参数编号从驱动器手册里抄,比如运行模式是 6060h。
●选数据类型。选对了长度会自动带出来,不用自己算。
●填要写的值。比如运行模式想设成 CSP,就填 8。
●时机那一栏选 PS。
●重复上面几步,把要配的参数都加进去,然后保存。
●让主站重新激活配置,跑一遍。跑完翻一下日志,确认没有红色报错。
●最关键的一步:断电、重新上电,然后在线读一下刚才那几个参数,看值对不对。对了才算真的成了。
最后那一步别省。清单填错了但主站没报错的情况是有的,只有断电重来一次才验得出来。
六、SDO 为什么慢
这部分主站会自己处理,你不用操心,但知道一下有好处。
▲ 4 个字节以内一趟搞定,超了就得分段
数据在 4 个字节以内,一条报文就带过去了,对方回一句收到,完事。超过 4 个字节,就得拆成几段一段段发,来回好几趟。传个几十字节的字符串,可能要往返十几次。
所以有两件事别干:别拿 SDO 传大块数据,更别在程序里每个周期都发 SDO。每个周期都要更新的东西,那是 PDO 的活。
七、写不进去的时候,看错误码
参数写失败,驱动器会回一个错误码,主站一般会显示出来。这个码是有含义的,看懂了能省很多瞎试的时间。
错误码
意思是
一般怎么回事
0x06020000
这个参数不存在
索引写错了,或者这台驱动器没这个功能
0x06090011
子索引不存在
索引对了但子索引写错,比如该写 01 写成了 00
0x06010002
只读的,写不进去
想改一个厂家锁死的参数
0x06070010
长度对不上
4 字节的参数按 2 字节写了
0x06090030
值超范围了
填的数超出这个参数允许的上下限
0x08000022
现在这个状态不让改
到了 Op 还想改映射,退回 Pre-Op 再来
0x05040000
等超时了
从站没回话,先查接线和状态
  
这几个占了实际遇到的九成以上。看到码先别急着改线,对着这张表基本能定位。
单独说一下 0x06070010 长度对不上。它经常不是你填错了,而是有些驱动器对同一个参数支持多种长度。手册上写 32 位,从站实际按 16 位实现,你按 32 位写就报这个错。碰到了先用主站的在线读功能读一次,看它实际返回几个字节,按那个来。
八、几个常碰到的问题
●在线改了参数记得同步回清单。调试的时候用在线写功能改了个值,效果不错,结果忘了加进启动参数表,下次上电全白改。这是返工最多的一种。
●清单里某条报错但设备还能跑,别放过。有些主站碰到一条失败会跳过去继续走,设备是起来了,但那个参数没生效,问题往往拖到后面才炸。所以第五章最后那两步不能省。
●换了驱动器型号,清单要重新对。参数编号里 6000h 开头的那一批是标准的,各家通用;但 2000h 开头的是厂家自己定的,各家完全不一样。照搬旧清单,2000h 那些条目多半会报参数不存在。
●SDO 写的是内存,掉电就丢。所以才需要启动参数表每次上电重发一遍。如果你确实想把参数永久存进驱动器,得往 1010h 的子索引 1 里写一个特定的数:0x65766173,这四个字节正好是 ASCII 的 save。写别的值不生效,这是防误触的设计。不过用了启动参数表之后,存不存其实无所谓了。<o:page></o:page>
●别在设备跑起来之后大量用 SDO 读参数。虽然邮箱和实时数据是两条道,但驱动器的处理能力有限,读得太频繁还是会占资源,严重的会影响周期稳定。
整篇就一句话:SDO 通道不用你配,你要配的是那张启动参数清单。清单列全、时机选对、顺序排好,参数就能每次上电自己到位。
下一篇我们接着讲 EtherCAT 从站的落地方案:ESC 专用芯片和 FPGA 到底怎么选、成本和开发周期各是什么量级。欢迎关注我们,一起把这些看着唬人的技术名词一个个拆明白。

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

本帖子中包含更多资源

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

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

本版积分规则

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

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

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


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