本文的设计基于时槽通信网络管理的主从调度机制,通信时序如图4所示。网络中有一个主站,和多个从站。主站负责管理整个通信周期的调度。通信周期划分为四个阶段,起始阶段、实时通信阶段、实时通信补发阶段和非实时通信阶段。在通信开始阶段,主站首先广播一个同步帧,通知每个从站准备进行实时通信;在实时通信阶段,主站依次与每个从站进行问答式通信,即发送命令数据,接收响应数据,并从响应数据中判断通信是否失败(命令发送错误或响应接收错误);在实时通信补发阶段,主站对在实时阶段通信失败的从站进行通信重发;最后是非实时通信阶段,主站根据需要与某个从站进行非实时数据的交换。
可靠现场总线通信机制的核心,是通过合理的通信时序和主从站数据链路层调度方法的设计,以达到数据高可靠传输的目的。实时补发的作用是在实时补发阶段,对实时阶段通信失效后的数据进行恢复:可靠调度的作用是保证各个通信阶段正确有效的运行。本文中提出的实时补发阶段,增加了调度的复杂程度,因此在调度中如何保证通信的同步性和实时性成为关键。由于补发阶段在实时阶段之后,不影响同步帧的传输,所以总线的同步性没有改变,只是补发阶段加长了通信周期,会给实时性带来不利影响。
为了减小重发对实时通信的影响,在实践中可将实时补发通信阶段和非实时通信阶段进行时间重叠设计。在一个通信周期内,如果实时通信阶段出错,则进入实时补发通信阶段,不进行非实时通信;如果实时通信阶段不出错,则跳过补发通信阶段,直接进入非实时通信阶段。因为实时通信阶段出错的概率比较小,所以重发通信占用一部分非实时通信资源,从而不用加长通信周期,达到不影响实时通信的目的。
图4 带有实时重发机制的通信时序
2.2主站数据链路层实时可靠调度
主站负责控制整个通信的时序,本文设计的主站数据链路层调度模型如图5所示。整个模型由含有六个状态的有限状态机构成,每个状态负责不同的通信功能。图5中符号含义如下:SoC:通信起始状态;SEND:数据发送状态;RCV:数据接收状态:ERR:接收错误或超时状态;aSYN:非实时通信状态;IDLE:空闲等待状态;FIFO:先进先出的队列,存储从站的目的地址;MEM:存区,存储接收或发送的数据;带方向的实线:代表状态切换的路径,线上标号为整个周期的运行次序;带方向的虚线:代表数据写入或读出FIFO或MEM。
图5 主站实时可靠调度模型
整个通信周期的运行过程叙述如下。
(1)在SoC状态时,首先广播同步起始帧,然后将所有从站的地址依次写入FIFO后,进入SEND状态。
(2)在SEND状态,从FIFO中读出待通信从站的地址,然后从MEM中读取该从站的数据并组帧发送,进入RCV状态。
(3)在RCV状态,等待接收从站的应答帧,如果接收正确则解帧将接收数据写入MEM,返回SEND状态继续发送,如果错误(接收校验错或无接收超时)则进入ERR状态。
(4)在ERR状态,将本次通信从站的地址重新写入FIFO,返回SEND状态。
(5)在SEND状态,如果读取FIFO不空,则继续上述过程,如果FIFO为空或实时通信阶段时间到,则进入aSYN状态。
(6)在aSYN状态,根据需要发送和接收非实时数据,然后进入IDLE状态。
(7)在IDLE状态,清空FIFO,等待下一通信周期的开始,下一通信周期开始时间到进入SoC状态,重复上述过程。