多任务TDCS车站分机通信协议的设计
摘要:为了处理TDCS车站分机从铁路局调度中心、车务终端和计算机联锁设备接收的各种信息,在此基于Windows操作系统设计了实时多任务程序。在多任务程序中,使用消息机制和消息缓冲区实现多线程之间的通信,使用信号量和互斥量实现多线程之间的同步;针对以太网通信任务和串口通信任务,建立了相应的数据结构,并设计了一个数据包分析算法来解析自定义协议。实践证明,该设计具有响应速度快、适应性强的特点。
关键词:TDCS;车站分机;多任务;通信协议
列车调度指挥系统(TDCS)是实现铁路各级运输调度对列车进行透明指挥、实时调整、集中控制的现代化信息系统,它由铁道部、铁路局中心局域网及车站基层网组成。TDCS车站分机是车站基层网的设备,起到信息的采集、上传及下发的作用,在整个系统中占有非常重要的地位。
1 功能分析
在车站分机系统中,车站分机软件主要实现两个方面的功能:
(1)接收铁路局调度中心和车务终端的调度命令,经过命令解析处理后,经无线调度命令设备发送至列车执行;
(2)接收计算机联锁设备、无线车次号设备、无线调度命令设备发送的状态信息,经过解析和重新封装后,将状态信息发送到铁路局调度中心和车务终端。
由以上分析可知,系统主要有以下3个功能模块:接收状态模块、接收命令模块和数据处理模块。其中,接收状态模块由RS 422串口通信方式实现;接收命令模块由以太网通信方式实现;数据处理模块主要负责数据的处理和发送。
2 多任务模型的创建
基于Windows操作系统,针对上述3个模块,本文分别建立了3个任务:串口通信任务、以太网通信任务、数据处理任务。其中数据处理任务作为主线程,包含数据的接收与上传,其处理过程如下:
(1)接收线程收到数据,放入缓冲区,并用PostMessage()向主线程发送消息,通知主线程有数据存入缓冲区;
(2)主线程使用ReadFile()函数读取缓冲区数据;
(3)主线程判断收到的数据是否有变化:若有变化,调用WriteFile()函数或SendData()函数发送消息,并将定时器清除;否则,继续等待。数据处理任务的具体流程如图1所示。
在该系统中,使用AfxBeginThread()函数创建以太网通信任务、串口通信任务和数据处理任务之后,用消息机制实现了多任务之间的通信,而用信号量、互斥等方式实现了线程之间全局变量和函数的同步。
评论