(1)EPA服务栈模块:系统管理服务包括设备查询、设备声明等服务,应用访问服务包括域操作服务、事件操作服务、变量操作服务,各种服务对相应的服务报文进行处理。 以域下载服务为例说明服务栈的实现流程如图3示。
(2)EPA套接字映射模块:对服务栈数据进行封装,并作为与UDP层之间的数据接口,其接口函数包括创建与关闭EPA套接字函数、发送应用服务报文与响应报文函数,发送系统管理报文与响应报文函数,从UDP层接收应用服务与系统管理报文函数等。EPA套接字开UDP套接字的实现语句如下:
if(!udp_open(&gEPA_AP_Sock, EPA_AP_PORT, -1, EPA_AP_PORT, NULL))
SockErr=1;
else SockErr=0;
(3)时钟同步服务的实现采用IEEE 1588精确时钟同步协议,该协议用于分布式系统中的设备通过以太网的亚微秒级时钟同步。设备与主时钟通过交换同步报文而实现同步,同步报文分为同步信息(Sync)、附加信息(Follow_Up)、延时请求(Delay_Req)、延时响应(Delay_Rsp)四种报文。同步过程分两个阶段,第一阶段通过Sync和Follow_Up报文测量时间偏差,第二个阶段通过Delay_Req和Delay_Rsp测量延迟(网络延迟和协议栈延迟),进一步校正偏差。为了进一步减少协议栈带来的延迟,可以让时间同步服务尽量接近物理层,这里通过修改TCP/IP库文件实现。
(4)实时调度的实现,包括时间中断调度函数——判断是否到达本设备的周期报文发送时间或非周期报文发送开始时间,以及报文发送函数——实现对几个优先级的数据队列报文发送等。
4.2 在μC/OS-II中的实现
在完成各个模块的编写之后,通信协议在μC/OS-II系统中的实现主要是根据应用要求进行任务的创建、划分以及任务间通信与调度的设计。因为μC/OS-II在RABBIT2000中的移植已经由Dynamic开发平台实现,这里不再详细介绍。模块与任务之间非一一对应关系,因为模块是基于功能进行划分,而任务是基于时间优先级进行划分。划分任务优先级就是确定任务实时性要求的过程。实时性要求越高的,则任务优先级越高,其对应的优先级号越低。μC/OS-II共支持最多56个用户任务,对于本系统来说是绰绰有余的。按照优先级由高到低次序的任务划分与调度方案如下:
(1)设备管理任务:完成设备的上电与初始化组态,之后根据设备状态机,在设备为正常可操作状态下被挂起,直到设备状态被其他事件改变后由信号量激活。
(2)周期性报文发送任务:由时间调度任务在宏周期内本设备周期性报文发送时间到达时产生中断激活而进入就绪状态,在中断退出后成为最高优先级任务被执行,立即发送周期性报文,发送完毕即挂起等待下一次激活。
(3)非周期性报文发送任务:与任务(2)相似,在非周期报文发送时间到被激活,通过调度算法发送非周期性报文。以上两个任务由于不会在同一时间段执行,因此实际运行时的优先级是等同的。
(4)功能块调度任务:在组态的功能块调度时间到达时被激活,或者在控制回路中上一个功能块执行之后被激活,立刻执行后挂起。由于首先要确保EPA网络通信的确定性,所以此任务的优先级低于前两个任务。
(5)时间调度任务:通过对网络时间的判断,在到达以上三个任务的执行时间时进入时间中断函数,给相应的任务发送信号量,使任务进入就绪状态,中断退出即可以执行就绪的高优先级任务。根据时间精度的要求设置内核调用OSTimeTick的频率,可以通过#define OS_TICKS_PER_SEC 256,实现每秒256次的Tick频率。
(6)普通报文接收任务:套接字映射实体侦听来自EPA网络的报文并根据需要调用相应的应用层服务处理报文,设为每100ms执行一次。
(7)时钟同步任务:独立接收与发送时间同步报文,以确保设备时间与网络时间的同步。由于主时钟发送Sync报文周期为2秒一次,所以其优先级可以低于时间调度任务,设为每2秒执行一次。
(8)串口通信任务:与电动执行器进行周期性的串口通信,根据电动执行器的物理特性,通信频率设为每秒2次,其通信方法在后文中介绍。
各任务之间采用全局变量或者消息机制进行通信,以完成任务状态机的变化。任务堆栈则根据各任务的实际需要分配,这里不再详述。
5. 测试
为了测试通信协议的实现,使用通信卡的RS-232串口与某型电动执行器的异步串行通信接口相连,形成一个EPA现场设备。EPA通信卡接收来自EPA网络的阀位指令并通过串行口传送给电动执行器,电动执行器接到阀位指令后向网板发出应答帧,双方各自一收一发完成一个周期的通信。通信中网板是主节点,电动执行器为从节点,每周期通信均是由通信卡发起,电动执行器响应。
通过EPA网桥将该设备加入EPA网络进行测试,经过专家组的验收,该实验系统成功通过了一致性测试、互可操作性测试等服务测试,时钟同步精度也达到了毫秒级,基本上实现了EPA通信卡的功能。
6. 结束语
系统实时性要求越高,对硬件的要求也越高,如果要求时钟同步精度和通信调度发送报文的时间精度达到实际应用的水平,并且进一步提高EPA设备通信的可靠性,则需要采用硬件实现的方法,即开发EPA专用通信芯片,在芯片级实现通信协议,预计EPA芯片很快会面世。相信在众多研究机构与厂商的共同努力下,EPA的推广应用将会取得丰硕的成果。
本文作者创新点:针对EPA通信协议提出了一种新的实现方法,此方法基于μC/OS-II嵌入式操作系统,用多任务的方式实现了各个协议实体及其调度。