APP下载

基于有限状态机的双控制台同步的实现

2014-10-22李军杰张雷

声学与电子工程 2014年3期
关键词:状态机接收端校验

李军杰 张雷

(第七一五研究所,杭州,310023)

系统中双控制台分别进行操作,需要将操作数据同步,同步的数据不能发生丢失和错误,否则将影响系统的可靠性和稳定性。本文将双台的控制板融入同一个工控机箱(如图1),利用具有高可靠性和强实时性的VME总线进行通信。操作台操作内容不同,则需同步数据不同,本文针对同步数据的多样性,定义数据包格式,然后在有限状态机[1-2]的基础上,对VME总线通信接收端进行设计,保证对不同类型数据包分析的可靠性,并在VxWorks实时操作系统下进行实现。

图1 双控制台结构图

1 定义数据包格式

控制台进行操作时,因操作内容不同,需同步数据的含义和长度不同,若通过VME总线的同一地址,直接发送给另外一个操作台,接收端无法对接收到的数据进行分析。因此有必要将同步数据进行封装后再发送,为了保证接收端对接收到数据的解码分析的正确性,将数据包定义为如表1所示。

表1 数据包格式

表1中,起始标识表示开始接收一个新的数据包,本协议中规定为0x55;命令:用来说明数据包的用途;数据长度:整个包共占的字节数,利用此字节,接收方识别数据包长度并能够准确接收数据包;校验:是对数据包除校验字节外的所有字节的CRC校验;结束标示:表示数据包的结束,本文协议中规定为0xAA。

2 VME通信机制

2.1 有限状态机原理

有限状态机[3]系统是指在不同阶段会呈现出不同运行状态的系统,这些状态是有限的,不重叠的。这样的系统在某一时刻一定会处于其所有状态中的一个状态,此时它接收一部分允许的输入,产生一部分可能的响应,并且迁移到一部分可能的状态。FSM的状态迁移如图2所示。

图2 FSM的状态迁移

FSM包括以下5个要素:(1)状态,是一个系统在其生命周期中某一时刻的运行情况,此时,系统会执行一些动作或等待一些外部输入。(2)条件,状态机对外部消息进行响应的时候,除了需要当前的状态,还要判断跟这个状态相关的一些条件是否成立。这种判断称为 Guard。Guard通过允许或禁止某些操作来影响状态机的行为。(3)事件,就是在一定的时间和空间上发生对系统有意义的事情。(4)动作,当一个事件被状态机系统分发的时候,状态机用动作进行响应,比如修改一下变量的值,进行输入输出,产生另一个事件或迁移到另一个状态等。(5)迁移,从一个状态换到另一个状态的行为。引起状态迁移的事件称为触发事件或触发。

2.2 VME通信接收端状态图

同步数据传输的基本信息单元是数据包,当数据包过长时,数据包需分拆成多块进行传输。如果数据包整个包进行传输,接收端将对接收到的数据包进行解码分析。针对不同的数据包进行分析,本文引入有限状态机。在有限状态机中,状态的变化依赖外部的事件,当条件满足时,发生状态迁移。本文将数据包分析的过程分为不同的状态,将下一个数据作为外部触发事件,使状态发生迁移,直到数据包分析完成。在2.1节有限状态机的基础上,在VME通信的接收端引入状态图[4],如图3。

接收端状态主要分为五个状态:寻找数据包头标识状态、数据包头处理状态、组包状态、校验数据包状态和完成状态。如图3所示,各状态之间的转换如下:当有数据到达时,系统进入寻找数据包头状态,若收到数据非0x55,状态不发生迁移,若收到数据位0x55,则系统状态跳转到数据包头处理状态;进入包头数据处理状态后,若收到数据长度小于4,状态不发生迁移,数据长度大于4后,若长度标识错误,则状态迁移至寻找包头标识状态,若长度标识正确,则进入组包状态;进入组包状态后,数据长度未达到指定长度,状态不发生迁移,否则,状态迁移至校验数据状态;进入校验数据状态后,若数据校验不正确,则状态迁移至寻找包头标识状态,否则进入完成状态。

图3 接收端状态图

3 VxWorks下VME通信实现

根据上述机制,在VxWorks系统下进行软件实现,并在硬件平台上测试。对于不同的硬件平台有不同的BSP包,本实验采用的硬件平台是由工控机箱内的两块VRJ9主板和SHARC信号处理板组成,VRJ9主板配置了POWERPC芯片,VME驱动的配置参照文献[5]进行。测试方法是两块VRJ9主板和SHARC板之间通过VME总线进行通信,利用其中一块主板向另一块主板发送数据,如图4所示,连续多次发送数据,并在显示器上打印各板收到的数据。

图4 实验环境

编写测试程序[6],为VME总线在SHARC板上分配256 byte空间,设置6种数据包类型数据标识分别为0x01、0x02、0x03、0x04、0x05、0x06,数据长度分别为 0x08、0x09、0x10、0x11、0x12、0x13,数据内容都为0xff,每秒钟发送每个类型数据包各一个和一个错误数据包(命令标识为0x01、数据长度0x07,丢失结束标识0xaa,命令内容为 0x20)向对方主板发送。加载测试程序,从两块VRJ9主板打印接收到的数据以及发送和接收到数据总数。

测试30 min后,未出现0x20和其他错误数据,且所接收到的数据为156600 byte,与所发送正确字符数相同,目测接收数据的速度,未发现明显延迟。

4 结论

针对双控制台数据同步的问题,以VEM总线为基础,提出了一种基于有限状态机的双控制台同步方案。通过实验验证,方案能够实现双控制台数据同步,实验结果验证了该方案具有高可靠性和强实时性,为反潜系统上实现双控制台数据同步提供了理论依据。

[1]ALFRED V AHO, MONICA S LAM. 编译原理[M].2版.北京:机械工业出版社,2009.

[2]史雪飞, 王志良, 张琼. 基于有限状态机矩阵模型的人工情绪模型[J].计算机工程,2010,36(18):24-25.

[3]张菁. 基于有限状态机的 UDP传输设计[J].计算机工程,2011.9,37(17):21-24.

[4]李莹. 一种基于状态机的串口通信协议的设计与实现[J].电子设计工程, 2012,20(7):100-104.

[5]凌震莹. 基于VxWorks的VME总线驱动的实现[J].计算机应用与软件, 2011,28(7):299-300.

[6]杨雪峰. 基于有限状态机的PS/2协议的实现[J]. 可编程控制器与工厂自动化,2009,(12):36-39.

猜你喜欢

状态机接收端校验
基于扰动观察法的光通信接收端优化策略
顶管接收端脱壳及混凝土浇筑关键技术
一种设置在密闭结构中的无线电能传输系统
基于多接收线圈的无线电能传输系统优化研究
基于有限状态机的交会对接飞行任务规划方法
炉温均匀性校验在铸锻企业的应用
大型电动机高阻抗差动保护稳定校验研究
基于加窗插值FFT的PMU校验方法
双口RAM读写正确性自动测试的有限状态机控制器设计方法
民用建筑低压配电系统计算校验软件的探讨