3.2中转时延测试分析
TSIM3AA82是一种双端口1394芯片,因此可以将多个I/O模块串联,如图5所示。模块1最后上电,并进行总线复位,强制自己为根节点。模块1的节点号为0,模块2、3、4节点号相应为1、2、3。
寄存器Ping_Timer记录了Ping包从发出到收回的时间,每次40 as。现在从O节点分别向1、2、3节点发送Ping包,共测试20次。0节点到l节点的Ping_Timer值稳定为14;0节点到2节点的Ping_Timer值为19共14次,值为20共6次;0节点到3节点的Ping_Timer值为24共12次,值为25共8次,测试结果如表1所示。
0到1节点不经过转发,仅仅是数据传输时间。0节点到2节点的传输增加了1节点的两次转发时间。0节点到3节点的传输增加了1节点两次转发及2节点两次转发的时间。
按照以上分析,采用代数平均数算法,可计算得到节点转发时间为108.7 as。而TSB43AA82芯片的PHY Internal Registers中的delay字段定义了中转时延的最大值,即从数据的第1位接收到数据包被转发所需要的最大时间,为144+(delay×20)as,其中TSB43AA82中delay为0。故最坏情况下转发器转发数据的延迟为144 ns。所测得的中转时延为108.7 n8在144 ns以内,与理论值完全符合。
3.3 多节点的伺服同步
一个数控系统中有多个伺服单元,这些伺服单元可以通过各自的I/O模块与上位机进行通信。高档数控系统对于各个伺服单元之间的伺服周期同步有较高的要求。
可以利用上位机向所有节点发送1394广播包作为同步信号,各节点收到广播包后开始执行新得到的插补命令,从而实现各个伺服节点同时执行同一插补周期的数据。根据1394网络拓扑结构及1394传输协议可知,数据的传输是经过各个节点的转发实现的,所以在逻辑位置上距离上位机较远的节点收到广播包比其他节点要晚,导致同步信号不够准确。
针对这一情况,可以利用3.2节所测节点中转时延,人为地补足这个时间差,实现更高精度的同步。由于采用的TSB43AA82是双端口1394芯片,拓扑结构比较简单,呈线性,一般上位机强制为根节点,节点号为0。假设整个数控系统共有m个节点,则逻辑位置上距离上位机最远的节点号为m-1。可以编程控制节点号为i的节点在收到广播包后延时(m-1-i)×108.7 as,之后执行插补命令,从而实现各节点之间真正的伺服同步。
4 结束语
本设计的基于IEEE 1394通信的I/O模块经测试完全满足高档数控系统的实时性要求。根据3.2节中转时延的测试结果,可以利用1394广播包来同步多个节点模块。另外该模块利用光耦芯片与外界环境隔离,能够有效预防干扰。除数控系统外,该模块还可广泛应用于很多其他场合,负责实时数据采集及高速数据传输。