APP下载

用于工业机器人控制的实时以太网的设计∗

2020-12-23莫云杰林永才

计算机与数字工程 2020年11期
关键词:主站报文以太网

莫云杰 林 明 林永才

(1.江苏科技大学电子信息学院 镇江 212000)(2.苏州时运机器人有限公司 苏州 215600)

1 引言

随着工业自动化的控制系统的发展,工业制造的设备不断地朝着智能化,模块化的方向发展。这种发展趋势可以使整个控制系统有着成本降低,便于维护,布线简单的特点。目前,传统的控制总线有CAN,SERCOS,RS232/485 等。这些现场总线协议并不统一,很难相互联系,互相通行需要协议的转换。作为控制总线的话,难以让产品实现模块化的发展。而且传统控制总线控制周期长,而且传输速率只有10Mbit/s 左右,很难用于对实时性要求高的高端数控。从而无形中增加了控制的成本。

而用以太网作为控制总线,很容易解决上述问题。如今以太网传输速率有10/100/1000Mbps,用以太网可以满足数控需要高度实时性的要求,而且以太网结构简单,价格便宜,通用性强。符合模块化设计要求。通过TCP/IP 协议可以将设备的实时情报通过因特网进行远程监控[1]。如文献[1]就采用工业以太网来监控数控机床的工作状态。因此选择以太网作为控制总线是非常合适的。

由于以太网采用CSMA/CD 通讯机制使得以太网通讯周期具有不确定性,所以无法满足实时性的要求所以要对以太网进行改造。一般有三种实施以太网改造方案,改造的方法可以参考文献[2]。这里对以太网的MAC 层进行改造。在实时数据通道内经过修改的实时MAC 层接管通信过程,不再考虑以太网的CSMA/CD 通讯协议,所以可以从根本上解决以太网在高实时性要求下数据延迟以及数据传输的不确定性。彻底避免了网络报文冲突与发送等待,简化了通信数据处理过程。基于该方法实现的的典型实时以太网有德国倍福的Ether-CAT、SERCOS III等[3]。

2 系统结构及原理

工业机器人机械臂由6个控制轴组成[4~5],每个控制轴由一台伺服电机组成。控制电机的转动即可以使机械臂的运动,不同的控制数据可以让机械臂完成特定动作。

整个系统采用精简的三层协议结构:物理层,数据链路层和应用层[6~8]。其中数据链路层中的一些协议是在FPGA 中实现,通过网口由主站传输至各个从站,应用层是通过对数据链路层的配置和一些数据的读写。系统环形拓扑结构的设计,如图1所示,系统分为主站和从站设计,主站一般由工业计算机或者嵌入式系统计算出机器人的轨迹规划,插补,等一系列运动控制算法,主要由主站CPU 负责计算,然后将数据通过实时以太网发送至各个从站,前从站接受数据将数据发送至下一个从站,直到一个循环。各个从站接根据指令通过分析后在对相应的电机进行控制,协同完成整个机械臂的运动。

图1 控制系统架构模型

3 实时以太网传输协议

3.1 实时以太网传输帧设计

由于控制系统采用环形的拓扑结构,数据报文采用集总帧的结构,集总帧即将所有的总站信息包含在一个数据帧里面,主站周期性的发送集总帧。集总帧沿着环形链路传输,每经过一个从站,从站将该帧接收下来,提取到该从站控制数据之后,再将上一周期处理的反馈数据进行数据交换,之后发送给下一个从站,集总帧遍历所有的从站时候返回主站完成一次周期性的的实时通信。该集总帧如图2 所示,可以看到该帧头相对于传统的以太网帧大大简化,并利用了数据带宽。

前导字符表示一段集总帧的开始;定界符:介于前导码与帧有效信息之间;通讯状态码占用一个字节,指示该帧的功能,表示该帧式初始化帧还是正常通信时的帧,在初始化过程中有表示初始化不同的状态。数据部分则是各个从站控制数据的的集合,每个从站数据有16位数据,以块(block)来封装,最多可以支持32个从站。其中第一个字节C/R表示该段数据是主站控制信息还是从站响应信息,updatecounter 是更新计数器,用来区分相邻的报文。MAC ID 表示从站的物理地址,可以表示0-31从站。命令代码表示从站需要执行的命令,有00h空指令、20h 位置指令、21h 控制芯片复位指令,控制字节和控制数据用于周期性和非周期性的控制。间隔符表示有效数据的结束,同步参数纪录时钟同步的时间戳,FCS表示该集总帧的校验序列。

图2 传输帧设计

3.2 时钟同步

在主从设计的控制系统中,基于多轴协同的运动要求,运动控制不但要求要有很高的可靠性和实时性,而且主从站之间还要有严格的同步性,以实现各个控制轴的协同运动,是实现复杂的高精度控制的关键。本设计采用速率100Mbps 的实时以太网,其中的帧的时延主要有两个主要因素:

1)网络延时TC,集总帧报文在以太网传输线缆中的传输时间,与线缆的长度成正比,而且与传输的介质有关,如果从站之间采用的是10m的双绞线的话则线路延时为50ns。

2)从站处理延时Ts,这里包括从站接收到数据之后要将数据提取、处理、插入信息、发送的时间,这里时间一般为几微秒。由于从站采用环形的拓扑结构,从站数量n 越多延时越大,所以本设计最多可以有32个从站,以减少从站延时。

所以整个延时则有

为了解决延迟,这里需要对每个站进行时钟同步,使得所有的站时钟保持一致,这样就可以让所有从站在同一时刻执行指令,这里同步机制借鉴了IEEE1588 精确时钟同步协议,其目的就是将分布式网络内的各个从站时钟与参考时钟进行同步,只需要四帧数据就可以测量两个时钟的时钟误差和网络延时[9~11]。

图3 时钟同步基本原理

如图3 所示,主站先发送Sync 报文给从站,然后随即发送FollowUp 报文,从站接收到Sync 报文的同时记录到达时间Ts1,FollowUp报文中包含主站发送Sync 报文的实际时间Tm1,从站接收到Follow-Up 报文之后记录下Tm1,并在Ts2时刻发送DelayReq报文给主站,主站接收到DelayReq 报文之后记录下接受时间Tm2,然后通过DelayResp 报文将该时间发送给从站。这里我们默认双向传输是对等的,即双向传输的延时一致。这里我们设主从站的时钟偏差时间是φ,线路延时时间是σ,可以得到

这样就可以得到主从时钟的时钟偏差和传输延迟。

4 设计与实现

4.1 FPGA MAC核的设计

主从站的MAC 芯片采用FPGA 设计,FPGA 设计具有灵活性高,资源丰富,成本低廉的特点,而MAC 芯片需要具有数据收发功能,同时还要具有数据存储功能,数据解析即传送,所以对于这种复杂电路设计采用FPGA 模块化的设计,将各个功能封装成模块,具有结构清晰,功能明确,易于开发,可维护性好等特点[11~15]。如图4 所示整个MAC 芯片设计可以分为以下几个模块。

发送模块(TX module)、接收模块(RX module)、寄存器管理模块(Register control module),内存管理模块(RAM management module),总线模块(BUS interface module)。

发送模块(TX module)和接收模块(RX module)用于数据的发送和接受,采用MII 接口与PHY芯片连接,具有CRC校验功能。

内存管理模块(RAM management module)数据收和发的数据保存在两片RAM 中,通过寄存器来控制两片RAM 的交替使用,完成数据的无缝缓冲与处理,提高数据收发的效率。

时序控制模块(Timing control module)主要提供各个模块的时钟信号,还要提供从站同步信号(XSYNC),产生接受中断信号(XINTRX)以及发送时序信号(XTXTIM)。

接收中断信号则是数据接受完成后产生1.28us 的低电平用于被CPU 检测从而做出相应的中断;发送时序信号用于主站在周期性控制时接受CPU 产生0.5ms 的周期发送信号,检测到下降沿则开始发送数据给PHY 芯片;从站同步信号用于各个从站同步,当同步的时候,产生下降沿信号并保持低电平1.28us 被从站CPU 捕获从而做出相应的控制功能。

总线接口模块(BUS interface module)用于数据与CPU的传递。

寄存器控制模块(Register control module)则是用过实现寄存器的访问管理芯片各个功能,通过MDIO实现与PHY芯片片内寄存器读写。

图4 MAC芯片设计结构

4.2 控制程序设计

程序部分为主站和从站程序设计,主站程序状态图5所示。

图5 主站控制状态图

主站主要由芯片复位,芯片初始化,网络配置,发送准备,和循环发送这几个状态,转化关系如上图。CPU 通过读取芯片内部的状态寄存器来判断当前的状态,在不同的状态下,CPU 分别对MAC 芯片采取不同的操作。主站主要是给从站发送配置帧以及在运行状态下循环发送控制数据集总帧。在网络配置的状态下,主站主要发送两个配置帧,配置帧A 和配置帧B。用来建立总站信息。进入循环发送状态,主站CPU 定时器会以0.5ms 定时中断周期循环的发送数据帧,同时要以外部中断方式接收处理从站传回来的反馈信息。

整个状态的转换是在ctrl_eth_m()函数中定义phase实现状态转换:

发送和接收控制数据缓定义的结构体为

Typedef struct{

usigned short data[WORD_SIZE_OF_BLOCK]

}Com_buf;

WORD_SIZE_OF_BLOCK 值为8

在循环发送状态下发送tx_buf,tx_buf 的定义如下:

Com_buf tx_buf[MAX_NS];MAX_NS为32。

从站的控制状态如图6。

图6 从站控制状态图

从站接受主站配置,其区别是主站主要是用于接收帧信号,接收到主站发送配置帧A,B后立马进入正常运行状态,开始循环的接收集总帧。接受完帧信号,XSYNC 向从站CPU 触发处理中断,运行中断程序int_sync_eth_s(),中断程序的流程图如图7所示。

图7 int_sync_eth_s()程序流程图

进入中断程序之后,如果是第一次收到帧信号,为了提高效率,从站设置该从站的读出指针,用来下次接收到信号之后直接从集总帧中读取改从站的信息,执行get_cmd()。最后再通过set_rsp()函数将反馈数据添加到发送寄存器中,随着帧一起发出给下一个从站。

5 实验验证

首先用Modelsim 软件对MAC IP 核进行仿真。如图8 所示,当MII 发送数据使能端(MTxEn)端口有效时,发送数据端口(MTxD)以4bit 数据开始发送至PHY芯片,送至各个从站。

从站PHY 接收到数据后,将数据按4bit(MRxD)发送至MAC 芯片,如图9 所示,开始接收数据,当(MRxDV)有效时,开始发送数据。数据经过处理之后将数据发送至下一个从站。主站和从站的功能不同,所以MAC 芯片在设计也要有所区分。这里的仿真只是仿真收发过程,实际应用会有一些收发过程上的区别。

图8 数据发送仿真

图9 数据接收仿真

通过实验对提出的实时以太网进行验证,系统主站CPU 采用TI AM3358,FPGA 芯片 采用Xilinx Spartan3A XC3S200A。 从 站 采 用 NXP LPC4357JET256 作为控制芯片,和主站采用相同的FPGA 芯片。主站和从站均有两个百兆以太网接口。图10 为从站控制器实物图。PHY 芯片均采用Micrel KSZ8041MLLI。

图10 从站控制器

通过网线将1个主站和2个从站连接。发送数据大小为55Byte,440bit,主站每隔0.5s 发送一次帧信号,数据经过一个环路传回主站,通过对从站持续的观测,运行状态良好,图11 是通过测量从站同步信号来测量出来的同步信号抖动时间,通过十次的观察,发现同步抖动时间平均为94.2ns,满足工业机器人高精度的同步要求。

图11 同步信号抖动时间

6 结语

本从工业机器人控制角度出发,设计了一种用于简单高效的实时以太网控制总线,设计了相关的以太网帧协议,用FPGA设计了相关的MAC层芯片以及CPU相应的控制过程,在实验室内将控制周期控制在1ms以下达到了0.5ms。并且具有很小的同步误差,满足工业机器人控制要求。在投入实际产品应用中还是需要进一步的设计与验证。

猜你喜欢

主站报文以太网
基于J1939 协议多包报文的时序研究及应用
以太网QoS技术研究及实践
Microchip推出首款车载以太网音视频桥接(AVB)全集成解决方案
基于报文类型的限速值动态调整
浅析反驳类报文要点
三大因素驱动创新提速以太网快步迈入“灵活”时代
三大因素驱动创新提速 以太网快步迈入“灵活”时代
县级配电自动化主站系统的设计
PLC控制技术在皮带上料中的应用
基于ENC28J60的嵌入式以太网/CAN网关设计