基于WIA-PA的现场设备数据链路层的设计与实现
2016-01-12封岸松邱雪维
韩 闯, 封岸松, 邱雪维
(1.沈阳化工大学 信息工程学院, 辽宁 沈阳 110142; 2.沈阳建筑大学 理学院, 辽宁 沈阳 110168)
工业过程自动化的无线网络技术(WIA-PA)是具有我国自主知识产权,符合我国工业应用国情的一种无线标准体系.WIA-PA与Wireless HART、ISA SP100是三个并列的主流工业无线网络标准,与其他两种标准相比,WIA-PA具有集中式和分布式管理相结合的特点,以此来维护网络的长期运行[1].它基于网状和星型混合的网络拓扑结构,以此来保证传输的灵活性和可靠性.WIA-PA是一款可靠性强、低成本、低功耗的工业无线网络.这种网络适用于家庭自动化、医疗、安全管理、资产管理等多方面应用,尤其适用于工业无线自动化领域.
WIA-PA网络拓扑结构由上位机、网关、路由设备、现场设备组成.其通信模型主要由应用层、网络层、数据链路层、物理层组成,物理层完成启动和终止无线射频收发器、能量探测及其空闲信道检测等功能;数据链路层保证现场设备间数据安全、可靠、实时性的传输;网络层提供在网设备可靠的端到端通信及其超帧、链路的管理;应用层提供数据传输服务和数据管理服务[2].本文主要介绍现场设备的数据链路层的设计与实现.
1 数据链路层的总体设计
在设计时将数据链路层分为2个子系统:DLSL(数据链路子层)层子系统和MAC(介质访问控制子层)层子系统.
DLSL层子系统依功能可划分为:DLSL初始化模块、DLSL状态机模块、DLSL数据服务模块、DLSL管理服务模块、DLSL处理MAC层消息模块、通信调度模块、信道跳频模块和安全模块.
MAC层子系统依功能可划分为:MAC层初始化模块、MAC层状态机模块、MAC层数据服务功能模块、MAC层管理服务功能模块、MAC层处理RF消息模块、时隙处理模块和时间同步模块.数据链路层的总体框图如图1所示.
整个应用程序所用的3个任务分别为:管理任务(DMAP_Task())、用户任务(User_Task())、协议栈任务(Stack_Task()).任务与任务之间的通信采用队列方式[3],三个队列分别Q1、Q2、Q3(如图1所示),数据链路层总体分为DLSL层和MAC层,分别提供外部接口供其他层调用.DLSL层向外部提供层发送接口DLS_TxServ()和层接收接口DLS_RxServ(),在接口中依据服务原语调用下层提供的接口或上层提供的接口.MAC向外部提供层发送接口MAC_TxServ()和层接收接口MAC_RxServ(),在接口中调用底层驱动来完成发送或接收硬件中断数据送上层处理.
图1 数据链路层总体框图
接口初步设计流程如图1所示(以DLSL发送接口与MAC层接收接口调用为例):协议栈初始化完成后,协议栈依据消息队列Q2非空来取消息,依据层标识来判断其任务调用的是哪层接口,当底层中断接收到数据后将层标志置为MAC_LAYER,然后放入到Q2中,栈任务从Q2中取出消息判断是MAC_LAYER后,调用MAC接收接口先进行接收数据的解析,然后逐层调用上层接口.当Q2中取出的消息不是接收数据时,栈任务根据层标识,调用相应的层发送接口,然后逐层调用下层发送接口[4].
2 数据链路层的模块设计
2.1 DLSL子系统模块设计
2.1.1 DLSL各模块功能
DLSL子系统各模块功能如表1所示.
表1 DLSL子系统各模块功能
2.1.2 DLSL核心模块的设计
(三)病理变化 对死亡羊只进行剖检,该羊消瘦、眼结膜苍白,显贫血症状,唇内及外阴口各有两个丘疹;心肝未见明显病变。肺微红、无弹性,有一处淤血,两侧肾上有大量坏死灶,前胃及四胃上有少许硬实的结节单个存在;肠系膜淋巴结微肿、发白,其余未见明显示病症状。
DLSL层状态机模块是DLSL子系统模块设计的核心部分,将其设计成接收状态和发送状态来完成DLSL层状态机功能.接收状态机主要是根据当前所处的设备状态来处理从底层传到上层的各种原语消息并修改设备状态;发送状态机主要是根据当前所处的设备状态来处理从上层传到下层的消息并修改设备状态.
DLSL层状态机模块设计流程如图2所示.硬件上电复位,协议栈进行初始化,此时将设备状态设定为初始状态,DMAP向队列中投递请求网络发现消息,协议栈任务从队列中取出,进入DLS_TxServ()接口中,在该接口中运行发送状态机,依据设备状态(Init)调用MAC层的发送接口MAC_TxServ().在MAC_TxServ()中运行MAC层发送状态机,依据网络发现原语类型进行信道扫描,依次扫描到在网路由设备信标帧后,依据信号强度选取信号强度最强的路由作为父设备.在硬件接收ISR中将接收数据加上原语标识和层标识,送到MAC层接口处理,若是信标帧则进行时间同步且发送网络发现证实原语[5].在MAC_RxServ()中依据网络发现证实原语调用DLS_RxServ(),在DLS_RxServ()中依设备状态和原语将消息送队列供DMAP处理,并将设备状态修改为入网(Joining)状态.DMAP处理网络发现证实后,向队列投递加入请求消息,协议栈任务从队列中取出,进入DLS_TxServ()接口中,在该接口中运行发送状态机,依据设备状态(Joining)调用MAC层的发送接口MAC_TxServ().在MAC_TxServ()中运行MAC层发送状态机,依据加入请求原语类型进行信息发送.在硬件接收ISR中将接收数据加上原语标识和层标识,送MAC层接口处理.在MAC_RxServ()中依据加入请求证实原语调DLS_RxServ(),在DLS_RxServ()中依设备状态(Joining)和原语将消息送队列供DMAP处理,DMAP处理后若成功将设备状态修改为在网(Join)状态,若加入失败将重新加入.
图2 DLSL层状态机框图
2.2 MAC子系统模块设计
2.2.1 MAC各模块功能
MAC各模块功能如表2所示.
表2 MAC子系统各模块功能
续 表
2.2.2 MAC核心模块的设计
MAC层状态机模块是MAC层子系统模块的核心部分,将其设计成接收状态和发送状态来完成MAC层状态机.接收状态机主要是根据当前所处的设备状态来处理从底层传到上层的各种原语消息并修改设备状态;发送状态机主要是根据当前所处的设备状态来处理从上层传到下层的消息并修改设备状态[6].
MAC层状态机模块设计流程如图3所示.
图3 MAC层状态机框图
协议栈上电复位后,MAC层发送状态机处于空闲状态,当DMAP请求进行网络发现时,此时状态机转向“信道扫描”状态,调用MAC层的相关原语进行信道扫描.当监听到所有在网的信标帧,并依据信号强度选择最大信号强度路由设备作为簇首且DMAP收到网络发现证实原语后,进入“加入请求状态”,开始发送加入请求,当加入失败,重新加入.当加入成功后,进入空闲状态.当到达时隙边缘且为发送链路时,进入“发送”状态,相反当到达时隙边缘且为接收链路时.设备根据接收到的信标帧或时间同步命令帧进行时间同步处理进入“时间同步”.当设备处于“离开”状态时,处理离开过程,若成功离开后,进入“空闲”状态.
3 数据链路层的关键算法
3.1 通信调度算法
数据链路子层中通信调度算法决定每次数据在何时隙何信道进行传输.该算法原理为:在通信调度模块中,依据传入的相对时隙参数,调用DMAP相关接口,取得DMAP维护的超帧表和Link表对应该时隙的通信资源[7],并依据信道状态调用3种跳频接口,然后再依据取得的Link类型决定接收还是发送.其流程如图4所示.
图4 通信调度算法流程
3.2 时间同步算法
为保证 TDMA通信的可靠性,WIA-PA网络中的设备要与时间源进行时间同步,本设计采用的算法为:使用帧定界符(SFD)中断,时间源在发送信标帧或时间同步命令帧时,在SFD中断中发送完前导码后将全局时间以4B的时间戳形式添加到MAC帧中;同步方在收到信标帧或时间同步帧时,在SFD中断中记录本地时间作为接收时间戳,这个时间差仅是传输过程中的延时,减少了发送时间等其他不确定时间延时.
将本地接收时间和发送方发送时间保存到一个表中,一般情况下将时钟模型简化为一个线性模型.如公式(1)所示.
T(t)=β+αt
(1)
其中:β为接收延迟时间;α为接收速率系数.使用线性回归思想和算法取得时钟漂移参数估计,根据高斯马尔科夫理论证明至少使用4组数据可以获得最好的时钟漂移参数估计[8],因此在初步设计中,保存的表项最大定为6项.依据公式(2)和(3)进行线性回归.
(2)
(3)
其中:n为参与回归的数据组数;Tsend为发送时戳;Tarrive为接收时戳;Tlocal为节点本地时间;Tglobal为节点转换后的全局时间;α*为接收时戳速率接收的节点获得与发送的节点相同的全局时间.
4 测试分析
对1个网关设备、1个路由设备、3个现场设备进行组网,当电源启动后,网关设备、路由设备、现场设备均能正常上线工作,设备状态报告和信道状态报告数据正常.网络由启动到稳定,设备的丢包率由多到少,最后趋于稳定并满足工业现场的要求.
使用Sniffer工具对信道上数据包进行抓取和分析,得出不同设备之间的误差在10~50 μs,能够满足一个时隙内的同步要求,保证现场设备不同节点间的时间同步.
在通信两端的源设备和目的设备间加入障碍物,使其信号强度变差,致使其通信质量降低,利用串口调试助手进行测试,如图5所示,若出现丢包现象,则丢包后进行重传,确保数据链路层数据传输的安全可靠.
图5 串口数据重传测试
5 结 论
以WIA-PA为基础对现场设备的数据链路层进行设计,提出了数据链路层总体框架的设计,并在DLSL层和MAC层提出状态机模块的设计.针对现场设备不同节点之间时间不同步,利用线性回归思想设计出节点之间的时间同步.实验结果表明:该设计在保证不同节点之间时间同步的基础上,又保证了不同节点间数据传输的安全可靠,对WIA-PA工业无线网络的应用发展做出了较大贡献.
[1] 彭瑜.工业无线标准WIA-PA的特点分析和应用展望[J].自动化仪表,2010,31(1):1-4.
[2] 徐伟杰,梁炜,凤超.WIA-PA网络关键技术的设计与实现[J].计算机应用研究,2011,28(6):2265-2270.
[3] 李同波.WIA-PA网络协议栈研究与开发:确定性通信调度方法研究与实现[D].重庆:重庆邮电大学系统工程系,2010:21-25.
[4] 宋晓勤,胡爱群.无线传感器网络中数据链路层和网络层设计[J].电信科学,2005,21(9):9-12.
[5] 华苗苗.无线HART数据链路层协议实现及其时间同步技术研究[D].浙江:浙江大学信息与电子工程学系,2012:66-68.
[6] LIANG W,ZHANG X L,XIAO Y,et al.Survey and Experiments of WIA-PA Specification of Industrial Wireless Network[J].Wireless Communications and Mobile Computing,2011,11(8):1197-1212.
[7] 蔡营.WIA-PA工业无线网络多信道MAC机制研究[D].重庆:西南大学计算机应用技术系,2013:28-29.
[8] 汪付强,曾鹏,于海滨.基于层次结构的工业无线网络时间同步协议[J].计算机应用研究,2010,27(7):2688-2691.