当前位置:首页 > 通信技术 > 通信技术
[导读]摘要:为了处理TDCS车站分机从铁路局调度中心、车务终端和计算机联锁设备接收的各种信息,在此基于Windows操作系统设计了实时多任务程序。在多任务程序中,使用消息机制和消息缓冲区实现多线程之间的通信,使用信号量

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

    列车调度指挥系统(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,并对报文中所有与起始码和结束码相同的字符进行转义。接收方接收到该报文时,再按照转义规则对其进行还原。本文定义的通用串口数据协议封装类如下:
   
    其中:报文类型、序列号和CRC错误检测缀的作用与以太网通信协议相同;从机地址用来区分该报文的目的地是无线车次号设备、无线调度命令设备还是计算机联锁设备。
    查询命令的数据格式如表1所示。


3.3 自定义协议的解析及应用
    对于从设备读取来的数据如何才能正确按照上述协议分析并使用,则必须设计相应的分析算法进行分析并处理。在此设计了一个数据分析类来进行处理:
   
   
    数据接收和分析基本流程:数据接收任务调用数据分析类的Write()函数,将接收到的数据写入数据分析类缓冲区;数据处理任务调用数据分析类Read()函数读取数据分析类缓冲区的数据进行处理,读取的规则是按照数据协议格式来读取。它的基本流程如图2所示。


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

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭