介绍
EtherCAT,英文全称Ethernet Control Automation Technology,言外之意,就是利用以太网总线的自动化控制技术;它是一种用在高速、要求实时性的工业场景的通信总线,比如工业机器臂控制、半导体阀门和传感器、伺服电机应用等;EtherCAT使用标准以太网的物理层(PHY)和MAC层(帧结构),通信介质跟标准以太网无异,但它在数据链路层(Layer 2)实现了独特的实时帧处理机制,构建了一套专用于工业控制的实时通信子层和数据报文
EtherNet VS EtherCAT
层级 | EtherNet | EtherCAT |
---|---|---|
物理层 | 相同 | 相同 |
数据链路层 | MAC帧(如IPv4: 0x0800) | 专属MAC帧(0x88A4)+ 实时帧处理逻辑 |
网络层 | IP路由(如IPv4/IPv6),IMGP,RAP | 无 |
传输层 | TCP/UDP | 无 |
应用层 | HTTP/FTP | CoE、FoE、EoE |
EtherCAT数据帧结构
主站
控制端(master),应用场景下一般是PLC居多,但PC Windows也能够做主站,但是实时性不强,需要依赖TwinCAT环境;Linux系统打补丁可以做主站,如IGH EtherCAT主站
从站
EtherCAT网络拓扑的从节点,slave负责接收指令、反馈设备状态,应用场景下有:工业蝶阀、机器臂、伺服电机等,这些均可以用作从站点
网口
EtherCAT从站点一般都会有IN && OUT两个端口(相当于标配),IN表示数据流入、OUT表示数据流出,从主站出发,每个从站点的IN && OUT依次连接成一个闭合网络拓扑结构(类似手拉手);但实际情形会有3个网口,另外一个就是普通以太网,可以用作web、ota等功能
答疑
问题一
问:EtherCAT需要配置IP地址吗?
答:EtherCAT使用MAC地址进行通信,不需要配置IP地址进行
问题二
问:从设备只有一个EtherCAT网口怎么办?
答:EtherCAT从设备原则上只要有一个OUT口就够了,OUT口也能双向通信,IN && OUT通常是工业设计中的硬件冗余
问题三
问:COE是运行在CAN接口协议之上的EtherCAT通信标准吗?
答:不是的,它的物理接口还是EtherCAT网口,只不过采用了CANOpen协议,跟EtherCAT通信标准很像(SDO、PDO)
问题四
问:可以用WireShark抓取EtherCAT数据包吗?
答:不建议,EtherCAT数据帧的以太网类型为 0x88A4
,但Windows下大概率抓不到准确的数据包(需要严苛的条件)
问题五
问:从设备可以主动发起通信吗?
答:不能,从设备之间没有通信的能力,从设备也没有主动和主站通信的能力,需要主站发起(主从设计)
问题六
问:EtherCAT芯片的通信协议栈是开源的吗?比如从站点的协议栈、主站协议栈
答:倍福官网提供了一个SSC Tool的工具,可以用于生成Slave的协议栈,主站有IGH EtherCAT主站(Linux)
问题七
问:EtherCAT可以免费使用吗?
答:目前看来官方有给硬件通信demo(使用专用芯片),可以借鉴参考使用,从站协议栈工具要加入会员才能下载使用,主站代码是开源的
术语
几种EtherCAT模式:
ecat_cia402
:CANOpen over EtherCAT,基于EtherCAT的CANOpen协议
ecat_eoe
:Ethernet over EtherNet,基于EtherNet的EtherCAT协议,也就是将以太网帧拆分成EhterCAT通信数据包
ecat_foe
:File over EtherCAT,基于EtherCAT的文件传输协议
ecat_io
:IO over EtherCAt,基于EtherCAT的IO访问协议
数据结构:
PDO
:Process Data Object,通过广播机制分发数据,用于实时性场合,比如Senor的姿态读取、Motor的运动数据读取
SDO
:Service Data Object,通过请求-应答机制通信,用于非实时性、可靠性场景,如配置Slave设备的内部参数