基于状态机远程控制技术.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于状态机远程控制技术

基于状态机远程控制技术 0引言 远程通讯系统一般要求通信距离在30公里以上,所以通常情况下通信环境比较复杂,在较长距离下的电磁干扰和信号衰弱对通讯系统的稳定性都提出了较高的要求。串口是常用的计算机与外部设备之间的数据传输通道[1],由于使用其通信方便易行,且能实现数据的远距离传输,故可采用串口通信作为远程通信的渠道。同时要利用合理的通信帧定义模式进而实现远程通信协议的同步性问题,目前较为常用的方法有逐次比较法[2]、基于FIFO队列同步法[3]、状态机消息同步法[4]。实验表明状态机消息同步法最大限度地减少了系统的冗余运算和中断后数据丢失的问题,保证了控制站第一时间获得被控设备是否接受指令开始运行的信息,实现了控制的可视性,进而保证了系统的稳定运行。 1通讯设备配置 系统采用串口通讯的方式实现PC机与外部设备的连接,利用VC++编写的控制软件和指令接收软件实现系统指令的发送和执行。外部设备采用PDL35数传电台,这种电台能够实现最大19200比特每秒的传输速度,并且具有低功耗和前向纠错的能力,提高了抗干扰性和覆盖性。控制设备通过电台向工作设备发送标准化指令,双方基于特定频率的无线电互相访问。连接成功后进入设置主界面后可查看电台类型、频率范围、固定版号等信息。主要在”RadioLink”选项卡下设置通讯频率、波特率与通信灵敏度。特别需要注意的是通信频率和通信灵敏度需要基站和移动站完全一致。 2通讯帧格式定义 对于远程通讯系统,需要完成多个不同的工作,并且实时返回工作状态以保证远程控制的可靠性。这就需要对通信协议进行特殊的定义以进行解析同步,进而完成各项工作。本系统中定义通信协议帧结构如图2所示。帧头用于同步[5],一般为一个或两个ASCII字符,本系统中使用一个字节0xFF表示,系统接收此字符后开始接收中断。帧发送方用1字节表示,分别用0x01表示1号基站发送的命令,同时也意味着任何接收设备会向此基站反馈设备是否正常运行。帧接收方表示方法与发送方相同,0x01表示命令是发送给1号设备的,其他设备在接受此命令时不工作。帧类型定义了系统命令表征的不同功能,帧内容主要包含了指导接收设备如何执行功能的具体信息,而帧内容长度则作为帧内容的校验信息指导接收设备提取接收信息。在本系统采用一个字节的0xFE作为结束码,当系统检测到此数据段的时候跳出系统中断。表1为通信协议中帧内容的详细格式。 3串口通信数据解析及处理 3.1逐次比较法 这是一种比较基本的方法,首先等待串口数据,在串口接收中断服务程序中每收到一个数据就与已知的命令数据串进行比较[6],如果不一致则等待新数据直到接收的数据与包头信息的第1个数据相同。第1个字节的数据比较正确后将收到的第2个字节与已知数据串信息的第2个字节进行比较,如果不正确则退出此中断。程序流程如图3所示。此种方法代码量小、编程简单,可用于在主程序中数据量较小并且格式相对固定的程序。但是这种方法浪费了大量的中断进程,并且在每个中断过程中执行命令操作需要消耗较多的机器周期,无法满足串口数据量较大且传输较快的情况。 3.2基于数组的FIFO队列法 也有人提出对上述方法的改进,首先定义一个固定长度的全局数组,并将数组看做是一个先入先出的FIFO队列[8]。在串口接收中断中,每接收一个数据就保存在此数组中,将得到的数据与已知的命令格式串进行比较,如果正确则将数组中的所有数据向前移动一个字节,串口接收到的新字节存入数组末字节中,将整个数组与协议中的包头信息比较如果正确则置位已同步标志位然后开始接收存储有用数据[8],否则继续等待同步。其流程图如图4所示。此种方法与逐次比较的帧同步方法相比能够比较快速正确地检测出同步包头,但是对数据格式要求相对固定,特别是帧内容形式比较复杂的时候难以对数组的长度进行限制,在提取相关的信息的时候会浪费大量的时间。 3.3基于字符串的状态机消息相应机制 鉴于以上两种方法的缺点,在本系统中采用基于字符串的状态消息响应机制,首先将命令转化为字符串的格式,以十六机制代码发送给电台进行传输。在接收方,首先检测同步字符,当检测到同步字符时,响应状态机消息机制,同时将此字符串依次存入缓存中。由于传输距离比较远,一般存在字符串命令不能在一个机器周期内到达的情况,则指定系统一直处于写缓存状态中。当第一个机器周期没有检测到结束码,则将缓存内容写给一个过渡变量,同时清空缓存以完成下一步写缓存操作。依次进行以上操作,在每一次机器周期结束后将缓存中的数据累加到过渡变量中,直到系统检测到接收数据的最后一个字节变量为结束码,此时将缓存中的变量赋值给消息效应命令,开始状态机响应环节。状态机状态转移图如图5所示。当 数据完成初始检测校验,即检测到结束码0xFE之后,系统开始

文档评论(0)

linsspace + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档