上电了,灯也亮了,电机就是不动
EtherCAT 上电全过程,一步步看
柜子上电,驱动器指示灯亮了,主站也说设备在线。程序一跑,电机纹丝不动。
这时候很多人第一反应是驱动器坏了,或者线接错了。其实多半都不是。
从合闸到电机能转,中间有一串固定的动作要走完。这篇就把这个过程从头到尾捋一遍,看完你会知道每一步在干嘛,卡住了该往哪儿看。
一、先记住一件事:这是两段路
整个上电过程,其实是两件独立的事,前后接着做。
▲ 通信是一段,使能是另一段,中间不通着
第一段是把通信接通,让主站和驱动器能说上话。这一段走完,网络就通了。
第二段是把伺服使能,让电机做好出力的准备。这一段走完,电机才真正听指令。
这两段用的是两套完全不同的机制,各管各的。所以会出现这么一种局面:主站界面上一片绿,状态显示 Op,一切正常,但电机就是不动。因为第一段完事了,第二段还没开始。
这句话值得单独拎出来:通信到了 Op,只说明网络通了,不代表电机能动。
二、第一段:通信要过四道关
从站上电以后,要一关一关往上走,一共四关。这四关的名字前面几期提过,这里再过一遍,顺便看看每一关主站在干什么。
▲ 四道关,主站每关干的事不一样
第一关 Init,刚上电。主站在这一步认一认线上挂了几台设备,按接线顺序给每台分一个地址。所以接线顺序不能随便改,中间插拔一台,后面所有设备的编号都会错位。
第二关 Pre-Op,能说话了。这一关会打开一条叫邮箱的通道,专门用来传参数。主站就在这时候把启动参数清单里的东西一条条写进驱动器:运行模式、加减速、PDO 映射,全在这一步。
第三关 Safe-Op,能报数了。驱动器开始往上报位置、状态这些数据,主站能看到反馈了。但输出还压在安全值上,你给它发指令它不动。
第四关 Op,全通了。输入输出都生效,通信这边的活干完了。
这四关是主站自动带着走的,不用你一步步敲。但如果哪一关上不去,主站会明明白白告诉你卡在哪儿,这是排查的第一条线索。
三、第二段:让电机醒过来
通信通了之后,驱动器其实还在睡觉。它知道主站在说什么,但功率没开,电机轴是自由的,用手都能转动。
要让它醒过来,得往一个叫控制字的地方按顺序写三个数。控制字的编号是 6040h。
▲ 往 6040h 里写 6、7、F 三个数
第一步写 6,意思是准备接通。驱动器收到之后做自检,检查母线电压、编码器这些。
第二步写 7,意思是接通。功率回路通上了,但输出还没开。有些机型这一步能听到接触器动作的声音。
第三步写 F,意思是运行使能。到这儿输出打开了,电机开始出力,你会明显感觉到轴被抱住了,用手转不动。
顺序上按 6、7、F 一步步走最稳妥。有些驱动器允许直接写 F 一步到位,但不是所有型号都支持,各家实现不太一样。所以电机不动的时候,先看看是不是跳了步。
四、怎么知道每一步成没成
写下去了不等于成了。驱动器有个地方专门告诉你它现在处在什么状态,叫状态字,编号 6041h。
规范的做法是:写一步,读一次状态字,确认真的到位了,再写下一步。
读到的值 | 现在在哪一步 | 接下来写什么 |
0x40 | 不能接通(刚上电的样子) | 写 0x06 |
0x21 | 准备接通 | 写 0x07 |
0x23 | 已接通 | 写 0x0F |
0x27 | 运行使能,电机能动了 | 不用写了,开始发指令 |
0x08 | 有报警 | 先写 0x80 清报警,再从头走 |
实际读到的数会比表里长一些,因为高位还带着别的信息。一般的做法是把读到的值跟 0x6F 做个与运算,只看低位那几个,再对着上面这张表比。<o:page></o:page>
如果读到的值一直不变,说明这一步没被接受。这时候别急着重写,先看看有没有报警。
五、有报警的时候
状态字里如果出现 0x08,说明驱动器报警了,这时候不管你写什么使能命令它都不会理你。
处理顺序是先查原因,再清报警,最后重新走一遍使能。
清报警的方法是往控制字里写 0x80。注意这个动作看的是这一位从 0 变 1 的那个瞬间,所以得先写别的值,再写 0x80,才算触发了一次。一直挂着 0x80 不动,是清不掉的。
还有一点:报警清掉之后,状态会回到最开始那个不能接通的状态,得从写 6 重新来一遍,不能接着上次的往下走。
六、不动的时候,先看卡在哪
现场碰到电机不动,按下面这个顺序往下排,绝大多数问题很快能定位。
▲ 四种现象,对应四个地方
主站连设备都扫不到,那是最底层的问题,查网线、查供电、查网口方向。EtherCAT 的两个网口是分进出的,接反了报文走不通。
扫到了但卡在 Pre-Op,多半是 PDO 映射的事。主站按配置文件下发的映射,驱动器固件里没有对应参数或者长度对不上,就不肯往下走。看主站给出的错误码一般能定位到具体哪一项。
到了 Op 但数据全是 0,一般是 PDO 那边只配了映射、漏了分配那一步。表印好了但没交上去,驱动器当然什么都不发。<o:page></o:page>
数据都正常了但电机不动,那就是第二段没走完。读一下状态字,看它停在哪个值上,对着第四章那张表往下推就行。
七、几个容易忽略的地方
●使能这三步得在每个通信周期里持续发,不是写一次就完事。控制字是 PDO 里的一项,每个周期都在传,你得让它一直保持在 0x0F,一旦变了驱动器就会退出使能。
●写使能之前,先把目标位置设成当前位置。不然使能那一瞬间,驱动器发现指令位置和实际位置差着一大截,会猛地冲一下。这个动作叫位置跟随,很多人吃过亏。
●运行模式要在使能之前设好。6060h 得先写进去,等使能了再改模式,有些驱动器会直接报错或者动作异常。
●急停和安全回路断开的时候,状态字也会掉。所以设备跑着跑着突然不动了,除了查通信,也要看看急停有没有被碰到。
●不同厂家的驱动器,中间可能还有自己的额外条件。比如有的要求先完成回零才允许某些模式,有的对母线电压有下限要求。这部分翻各家手册的状态机那一章。
整个过程串起来就是:先把通信从 Init 一路带到 Op,再往控制字里按 6、7、F 的顺序写三步,每步读状态字确认。两段都走完,电机才真正听你的。
下一篇我们接着讲 EtherCAT 从站的落地方案:ESC 专用芯片和 FPGA 到底怎么选、成本和开发周期各是什么量级。欢迎关注我们,一起把这些看着唬人的技术名词一个个拆明白。
#工业总线 #EtherCAT #伺服驱动器 #工业通信 #运动控制<o:page></o:page>