下面的讨论主要针对主从式。
原始的办法是采用轮询方式,无法保证系统的确定的时态特性,对通信的滞后无法预测和控制。因此要采取恰当的调度策略。
1。通信数据的实时性
通信是用来节点之间交换数据,这些数据
(1)实时数据:包括周期实时数据和非周期性实时数据
(2)非实时数据
数据的实时性是以数据的截止期来表示的,所谓实时通信既是满足任务截止期的通信,工业控制系统的数据截止期满足采样周期和系统的稳定性要求 。
2。通信调度的基本方法
两种基本方法:
时间触发(TT)
事件触发,(ET)
1)时间触发(TT)
一个任务: J={C,D,T,R} 其中:C:执行时间;D:为J的死期;T为J的请求周期;R为J的最初请求时刻。
任务调度算法是在某一时刻将任务分配到处理器上的执行的一组规则。
任务调度算法一般是基于优先级关系的。如果调度过程中优先级不变则任务调度算法是静态的,否则为动态调度。
时间触发适合周期性任务调度,如现场传感器、变送器、节点状态数据以及执行器的控制更新数据。
时间调度算法分:占先式和非占先式两种。
周期性传输过程的描述,以及对应的静态和动态的传输方法,产生一个大规划周期的传输规划时刻表;由于大周期是各个周期过程的周期的最小公倍数。
2) 事件触发(ET)
事件触发的调度方法适合突发任务的调度,如具有硬实时要求的调度(紧急停车、报警、故障处理),
(1)调度模型:Tindell和Clark1994年最早提出了事件触发的任务的调度模型,采用周期性的任务策略来传输突发任务,其周期为最小的两个任务之间的间隔。
(2)基于中断的传输策略:
有的学者在时间触发的基础上,提出了扩展的时间调度方法(FTT),即TDMA协议的基础上,每个时间片采用两阶段:周期数据传输阶段和非周期数据传输阶段。
3、CAN协议现场总线控制系统的实时通信调度
(1)优先级相同的数据传输
假设:系统工作在主从方式,现场从节点是通过硬件中断接收主机发送的信息,回收的报文也在该中断服务程序中完成的。
现场节点的信息优先级相同,即实时性相同。分析协议,我们可以看出,只要确定通信的目的地址和通信报文的用途(命令字),即可根据命令字和主节点的有关信息组成一个完整的报文,所以将主机和现场节点通信的所有报文的目的地址和命令字提取出来,组成一个任务列表(一个报文占一个任务)。具体分析如下:
设:某一报文的目的地址和命令字为NODEx和CMDx,则主机根据事先制定的协议(命令字)可以组成一个完整的发送报文,现场节点收到该报文后,根据NODEx和CMDx可以组成一个回收报文,所以{NODEx、CMDx}可以唯一确定这一次传输过程(即一个任务)。
{NODEx、CMDx}为一个任务。
将系统内所有需要的{NODEx、CMDx}即可组成任务列表。
unsigned char task_tab[N][2]={ {NODE1、CMD1},……}
(2) 多种优先级任务传输策略
根据系统的信息实时性,将系统中的传输任务分为若干种不同周期的任务(一般不要超过四种)。这样就可形成若干种不同周期的任务列表。
在定时中断服务程序中,每中断一次,只能完成某一类任务列表的某一个任务。在这几类任务中,周期短的任务优先级最高,周期长的任务优先级低。只有当高一级的任务列表中的任务在其循环周期内完成传输后,才进入下一级的任务的传输。高一级的任务传输可以打断优先级低的任务传输循环,当高一级的任务在其循环周期传输完成后,接着进行被中断的任务传输循环。不管是哪一种任务,其单个任务的传输过程和一般周期性任务的传输过程一样。
(3)非周期性的数据传输策略
A.紧急任务传输
一个紧急任务也是由{NODEex、CMDex}来表示
性质:非周期性的实时性,其传输过程和一个一般的任务的传输过程一样。
首先查询是否有紧急任务,有,传输紧急任务列表中的表头任务(紧急任务采取队列形式,先进先出,在一个传输周期中,只传送一个紧急任务),对于紧急任务的传输,采用确认措施,只有确认一个紧急任务的传输过程完成,才将其从紧急任务的队列中删除,否则重新传输这个紧急任务。只有在紧急任务传输全部结束后,也就是在紧急任务队列中无紧急任务传输时,才传输一般的周期性任务。
B采用周期性任务传输策略