多任务TDCS车站分机通信协议的设计

发布者:彭勇最新更新时间:2011-08-06 关键字:TDCS  车站分机  多任务  通信协议 手机看文章 扫描二维码
随时随地手机看文章

为了处理TDCS车站分机从铁路局调度中心、车务终端和计算机联锁设备接收的各种信息,在此基于Windows操作系统设计了实时多任务程序。在多任务程序中,使用消息机制和消息缓冲区实现多线程之间的通信,使用信号量和互斥量实现多线程之间的同步;针对以太网通信任务和串口通信任务,建立了相应的数据结构,并设计了一个数据包分析算法来解析自定义协议。实践证明,该设计具有响应速度快、适应性强的特点。

列车调度指挥系统(TDCS)是实现铁路各级运输调度对列车进行透明指挥、实时调整、集中控制的现代化信息系统,它由铁道部、铁路局中心局域网及车站基层网组成。TDCS车站分机是车站基层网的设备,起到信息的采集、上传及下发的作用,在整个系统中占有非常重要的地位。

1 功能分析
在车站分机系统中,车站分机软件主要实现两个方面的功能:
(1)接收铁路局调度中心和车务终端的调度命令,经过命令解析处理后,经无线调度命令设备发送至列车执行;
(2)接收计算机联锁设备、无线车次号设备、无线调度命令设备发送的状态信息,经过解析和重新封装后,将状态信息发送到铁路局调度中心和车务终端。
由以上分析可知,系统主要有以下3个功能模块:接收状态模块、接收命令模块和数据处理模块。其中,接收状态模块由RS 422串口通信方式实现;接收命令模块由以太网通信方式实现;数据处理模块主要负责数据的处理和发送。

2 多任务模型的创建
基于Windows操作系统,针对上述3个模块,本文分别建立了3个任务:串口通信任务、以太网通信任务、数据处理任务。其中数据处理任务作为主线程,包含数据的接收与上传,其处理过程如下:
(1)接收线程收到数据,放入缓冲区,并用PostMessage()向主线程发送消息,通知主线程有数据存入缓冲区;
(2)主线程使用ReadFile()函数读取缓冲区数据;
(3)主线程判断收到的数据是否有变化:若有变化,调用WriteFile()函数或SendData()函数发送消息,并将定时器清除;否则,继续等待。数据处理任务的具体流程如图1所示。

 


在该系统中,使用AfxBeginThread()函数创建以太网通信任务、串口通信任务和数据处理任务之后,用消息机制实现了多任务之间的通信,而用信号量、互斥等方式实现了线程之间全局变量和函数的同步。

3 通信协议设计和解析
协议是数据发送与接收方都必须遵守的一种规则,这种规则一部分是发送方及接收方所认识的信息组成格式即信息结构,另一部分是由信息结构的协议类型及协议操作符所组成的会话方式即传输控制。
在该系统中,从串口和以太网接收到的各种的数据的类型和长度是不一致的,数据处理任务要对其分门别类进行处理就必须明确数据的类型、实际长度以及数据本身。因此必须定义一种数据传输的协议以保证通信的可靠性和数据读取的可用性。本文针对以太网通信和串口通信,分别建立了对应的数据协议。
3.1 以太网通信协议
以太网通信涉及的信息包括计算机联锁设备状态信息、无线车次号信息、调度命令信息。本文定义了一种以太网信息通用的数据协议封装类如下:


在该数据结构中,报文类型用来识别该报文是联锁设备信息、无线车次号信息或者调度命令信息;序列号用来判断接收报文的连续性;CRC错误检测缀用来判断接收报文的正确性,可以根据需要选择不同的生成多项式;接收数据数组将根据联锁设备信息、无线车次号信息和调度命令信息的相应内容填充。
3.2 串口通信协议
串口通信采用RS 422方式。在嵌入式车站分机中,冗余的处理器单元采用轮询的方式进行一主多从通信。车站分机作为主机,无线车次号设备、无线命令调度设备和计算机联锁设备作为从机。具体为:使用1问1答的方式,整个系统中车站分机发送查询命令,其他设备是从机,只能被动地接收和发送数据。
在串口通信中,必须为每一个数据报文设计一个起始码和结束码,如0x03,并对报文中所有与起始码和结束码相同的字符进行转义。接收方接收到该报文时,再按照转义规则对其进行还原。本文定义的通用串口数据协议封装类如下:
[page]

其中:报文类型、序列号和CRC错误检测缀的作用与以太网通信协议相同;从机地址用来区分该报文的目的地是无线车次号设备、无线调度命令设备还是计算机联锁设备。

查询命令的数据格式如表1所示。

 


3.3 自定义协议的解析及应用
对于从设备读取来的数据如何才能正确按照上述协议分析并使用,则必须设计相应的分析算法进行分析并处理。在此设计了一个数据分析类来进行处理:



数据接收和分析基本流程:数据接收任务调用数据分析类的Write()函数,将接收到的数据写入数据分析类缓冲区;数据处理任务调用数据分析类Read()函数读取数据分析类缓冲区的数据进行处理,读取的规则是按照数据协议格式来读取。它的基本流程如图2所示。

 



4 结语
在Windows平台下,应用程序开发人员可以利用它提供的多任务机制开发具有并发需求的软件系统,它的多任务机制允许多个进程和多个线程同时执行。
车站分机通信软件就是在此基础上开发的;协议是数据发送与接收方都必须遵守的一种规则,在该系统中,从串口和以太网接到的收数据格式不一致,如果不对其进行统一的数据格式打包,在传输大量的数据和进行超时及异常处理时,就必须进行繁琐的编程。本文中自定义了协议包的信息结构,并给出了它的解析算法,在通信软件中起到了化繁为简的作用。

 

关键字:TDCS  车站分机  多任务  通信协议 引用地址:多任务TDCS车站分机通信协议的设计

上一篇:HI与Obigo对日本市场签署HTML5 Web技术谅解备忘录
下一篇:ZigBee联盟完成ZigBee Building Automation 标准

推荐阅读最新更新时间:2024-05-07 16:30

基于VxWorks的多DSP系统的多任务程序设计
摘要:多DSP信号处理板广泛地运用于工业、军事、通信和医疗等许多方面。本文介绍一种基于VxWorks实时操作系统的ADSP21160的多DSP板设计,以及该板在数字式声纳的实时信号处理系统中的应用,并介绍在VxWorks实时操作系统下的软件算法仿真和实现。 关键词:多DSP阵列 声纳系统 VxWorks 近年来,计算机产品的应用领域越来越广,数字信号处理器的发展表现得尤为明显。DSP芯片制造商和DSP板开发商利用自身的优势不断开发出多DSP结构的产品来满足这种需求。通常的DSP设备是与嵌入式系统相结合,来实时地完成某一特定任务。随着信号采集速度和处理速度的要求越来越高,许多领域都需要进行多处理器运算,其中包括医学、图像处
[应用]
基于AVR单片机的多任务嵌入式Internet系统设计
  1 引言   目前,嵌入式系统已经广泛渗透到人们的工作、生活中。从家用电器、信息终端、手持通信设备到仪器仪表、制造工业、过程控制等领域,嵌入式设备已随处可见。另一方面,近几年来Internet技术的飞速发展给嵌入式应用带来了新的契机,在未来嵌入式系统中应用Internet技术具有很大的优势。   目前嵌入式Internet技术的实现主要有下面三种方式 :   第一种方式是EMIT技术,采用支持TCP/IP协议的高性能服务器作为网关(emGateway), 嵌入式设备通过RS-232、RS-485或者CAN总线等与网关服务器连接,间接通过服务器网关连接Internet。经过多年的发展EMIT技术已经在工业设备的网络化中得到
[单片机]
基于AVR单片机的<font color='red'>多任务</font>嵌入式Internet系统设计
工业以太网有哪几种_工业以太网缺点及维护
  工业以太网有哪几种   工业以太网是一种通用的工业网络,根据应用场景和需求的不同,可以分为以下几种:   PROFINET:PROFINET是一种基于以太网的工业通信协议,采用ISO/OSI参考模型,支持实时、非实时和IT通信,是工业以太网的一种重要应用。   EtherCAT:EtherCAT是一种基于以太网的实时控制网络,采用分布式控制技术,具有高速传输、实时性和扩展性等特点,适用于机器人控制、运动控制等领域。   Ethernet/IP:Ethernet/IP是一种基于以太网的通信协议,支持TCP/IP协议栈,适用于工业控制和自动化领域的数据传输和通信。   Modbus TCP:Modbus TCP是一种基于以太网的通
[嵌入式]
单片机多机通信原理简述
简述单片机多机通信的原理。 答:若置SM2=1,则允许多机通信。多机通信协议规定,第9位数据(D8)为1,说明本帧数据为地址帧;若第9位为0,则本帧为数据帧。当一片89C52(主机)与多片89C5l(从机)通信时,所有从机的SM2位都置l。主机首先发送的一帧数据为地址,即某从机机号,其中第9位为1,所有的从机接收到数据后,将其中第9位装入RB8中。各个从机根据收到的第9位数据(RB8中)的值来决定从机可否再接收主机的信息。若(RB8)=0,说明是数据帧,则使接收中断标志位RI=0,信息丢失;若(RB8)=1,说明是地址帧,数据装入SBUF并置RI=1,中断所有从机,被寻址的目标从机清除SM2,以接收主机发来的一帧数据。其他从机仍
[单片机]
程序的多任务和资源复用举例
程序的多任务和资源复用举例 有一台机电设备,有两个按键,控制设备的两个不同部分。 现要求:  每个按键按下,相应控制程序运行。但两个按键可以同时按下,就是说两个控制程序可能 需要同时运行。使用一个89C52,如何编写程序? 注:此程序不使用RTOS等操作系统。 /*程序说明:  一)产生波形可以使用中断中计数来产生精确的波形。    本答案中为更能体现程序的多任务和资源复用问题,采用主程序循环产生。  二)请特别注意,题意是两个程序在并发运行,实际按本答案可以扩展到N个不同任务同时运行,在此就不讨论。    (对大程序结构增加了很多其它的概念)  三)因为在论坛上直接贴出,所以程序放在一个文件中。    应该按Timer.c,
[单片机]
基于ARM9和μC/OSII高速实时多任务数据采集的智能化设计
引言 随着IT技术、电子技术、通信技术、以及自动控制技术的飞速发展,对工业现场数据的高速实时采集就成为电子产品和工业控制技术发展不可避免的一个环节。 本文针对高速实时多任务数据采集中的多任务实现算法以及实时性、实效性和高速性的要求,提出了基于ARM9和μC/OSII操作系统的智能化设计方案,实现了任务优先级动态调度、系统工作参数动态设定、系统内部软件智能化设计,针对低速外围设备进行了系统优化,并提高了系统可靠性改善了内部任务同步性。 1 整体电路设计 整个采集系统的硬件电路如图1所示。首先利用多路调制电路对12路信号进行调制,这部分包含相应的信号转换、抗干扰、以及初步的信号处理等,使得各路采集信号能够达到ARM9内核对信号采集
[单片机]
基于ARM9和μC/OSII高速实时<font color='red'>多任务</font>数据采集的智能化设计
单片机系统中的多任务多线程机制的实现
摘要:单片机系统的开发多情况下不是在嵌入式操作系统平台上进行的,而是直接基于处理器编写。在多任务并行执行的要求下,可以借鉴操作系统中的任务和线程机制,对资源和处理器合理进行调度。本文以实例对此进行讨论。 关键词:单片机 任务 线程 并行处理 引言 首先要指出的是一点是,我们不是讨论嵌入式实时多任务操作系统(RTOS)的设计。我们讨论的是,在不使用RTOS的控制系统中,如何体现多任务多线程机制的程序设计思想。 一些嵌入式设备可以需要操作系统,例如掌上电脑、PDA、网络控制器等高性能的手持设备和移动设备。它们往往和无线通信、互联网访问和多媒体处理等复杂而强大的功能联系在一起;对CPU要求也很高,往往是以通用CPU为原型的各种高
[单片机]
stm32之SPI通信协议实例详解
  之前一直对SPI通信一知半解,所以想抽空把它搞得明白一些。考虑到之前是结合Flash芯片来学的,十分不直观,而且主要把时间和精力都花在Flash芯片的datasheet和驱动上了,SPI通信也没学好。所以这次就考虑用4位数码管显示模块,模块是直接买的现成的,这样可以简化操作,把精力聚焦到学习的核心–SPI通信本身上来。   本次采用的模块是用2片74HC595串联驱动的,一片用来控制数码管的位选(U1),一片用来控制数码管的段选(U2)。 接口比较简单,总共5个引脚,2个引脚分别接VCC和GND,DIO用来接收串行数据的输入,SCLK用来接收同步时钟,每个SCLK上升沿74HC595内部的移位寄存器会移一位,RCLK用
[单片机]
stm32之SPI<font color='red'>通信协议</font>实例详解
小广播
最新网络通信文章
换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved