列车运行模拟
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
西南交通大学
基于VC的计算机联锁系统中
列车模拟运行的设计及实现
摘要计算机联锁是保证车站内列车和调车作业安全,提高车站通过能力的一种信号设备。
为满足我国铁路电务事业实现跨越式发展的需要,新时期要积极发展车站计算机联锁技术。
本文以计算机联锁技术条件为依据,以软件工程和数据结构为方法,阐述了计算机联锁系统中数据结构的建立方法。
利用Windows下的VC++编程完成需求模块的程序设计,通过调试程序,最终实现了列车的模拟运行。
关键词计算机联锁轨道道岔信号机列车模拟运行
1.概述
1.1计算机联锁的定义与发展
计算机联锁(Computer Interlocking)系统不再是孤立的信号控制系统,而是信号安全综合控制检测系统和综合运营管理系统的一个子系统。
计算机联锁利用计算机对车站作业人员的操作命令及现场表示的信息进行逻辑运算,从而实现对信号机、道岔及进路等进行集中控制,使其达到相互制约的车站联锁设备,即微机集中联锁。
它必须在规定的联锁条件和规定的时序下对进路、信号和道岔实行控制。
自20世纪70年代以来,由于微型计算机的问世以及容错技术的发展,一些发达国家相继着手研究计算机联锁系统。
1978年在瑞典首先使用了计算机联锁系统,此后,美、日、英、德等国家也开发出并使用了计算机联锁系统,日本自80年代初就停止新建继电联锁系统而代之以计算机联锁系统。
在我国,1983年,第一套系统安装在南京梅山铁矿井下200m深处4组道岔的运输线路上,1984年投入运营成功,1994年1月由通号总公司研制的车站计算机联锁控制系统在南京分局浦口到发场开通使用。
自此,车站联锁系统由6502继电器联锁向计算机联锁系统转化已成为事实。
2.计算机联锁系统中列车模拟运行功能的软件结构
计算机联锁系统是以计算机为主要技术实现车站联锁控制的系统,本文中主要实现列车模
拟运行中的以下联锁功能:进路建立、道岔锁闭、选排一致检查及道岔控制命令生成模块、进路解锁模块等功能。
2.1 联锁数据和数据结构
联锁数据是指在联锁计算机中所有参与联锁运算的数据。
联锁数据在计算机存储器中的组织形式称为数据结构,数据结构有静态数据结构和动态数据结构两种,数据结构不仅影响联锁程序的结构,而且对程序占用空间的大小、搜索时间的长短和搜索算法等衡量系统的参数有一定的影响,同时也关系到数据结构本身的生成方式问题。
建立任何一条进路都必须根据联锁关系编制联锁表,联锁表的主要内容有:进路性质、进路方向、进路的范围、防护进路的信号机、进路中的轨道电路区段名称及数量、进路中的道岔名称、应处的位置、数量、进路所涉及的侵限绝缘轨道区段名称及检查条件、进路的接近区段名称、进路的离去区段名称、进路末端是否存在需要结合或照查的设施等。
有一定的影响,同时也关系到数据结构本身的生成方式问题。
建立任何一条进路都必须根据联锁关系编制联锁表,联锁表的主要内容有:进路性质、进路方向、进路的范围、防护进路的信号机、进路中的轨道电路区段名称及数量、进路中的道岔名称、应处的位置、数量、进路所涉及的侵限绝缘轨道区段名称及检查条件、进路的接近区段名称、进路的离去区段名称、进路末端是否存在需要结合或照查的设施等。
3.列车模拟运行功能的实现
3.1软件开发环境和工具
在本文中,采用Visual C++作为开发工具,VC++6.0是Microsoft公司推出的一个基于Windows系统平台、可视化的集成开发环境,它的源程序按C++语言的要求编写,并加入了微软提供的功能强大的MFC(Microsoft Foundation Class)类库。
MFC(Microsoft Foundation Classes)是一个微软公司提供的类库(class libraries),以C++类的形式封装了Windows的API,它包含了窗口等许多类的定义,各种类的集合构成了一个应运程序的框架结构,以减少应用程序开发人员的工作量。
其中包含的类包含大量Windows句柄封装类和Windows的内建控件和组件的封装类。
因此本文使用VC++提供的高度可视化的应用程序开发工具和MFC类库,可使应用程序开发变得简单。
3.2 模拟运行功能的实现
首先,新建一个单文档类型的MFC AppWizard(exe)工程,工程取名为:Text。
既可以在视图类中进行鼠标左键操作信息的捕获,也可以在框架类中进行此项工作为此程序添加一个基类
为CWnd派生的窗口类COutputWnd实现对窗口和界面的创建和定义。
另添加基类为CObject 派生的Cline、CSignal、CSwitch实现对轨道、信号机、道岔的定义和绘画以及重绘。
根据界面,在界面上安排进路,程序接受任务,查找程序里是否有相应进路的事件,如果没有则清除任务,如果有有则检查是否安排的进路与其他进路没有冲突,进路是否被占用,如果被占用则显示进路被占用,否则执行任务。
图 1思路流程图
如图2所示,根据联锁表,选择使用Timer事件,命令当事件触发时,被安排的这条条从信号机Sn到信号机X的列车通过进路时,信号机Sn点亮红灯,进路中轨道区段由蓝色变为灰白色,道岔锁闭,点击手动模拟发车按钮,在轨道区段实现模拟运行。
当车运行到信号机Sn前方第一个轨道区段时,信号机绿灯灭灯,点亮红灯,轨道区段由灰白色变为红色,表示轨道区段处于占用状态。
轨道区段的主要代码如下:
void CLine::drawline(CDC *pDC)
{ COLORREF color;
if (type&4)//判断是否占用,1占用,0未占用
{color=RGB(255,0,0);//被占了就是红色的线 }
else if (type&2)//判断是否选出,1选出,0未选出{color=RGB(255,255,255);//如果选出就是白色
}
else color=RGB(0x2b,0x44,0x90);
CPen linepen(PS_SOLID,2,color);
CPen *poldlinepen=pDC->SelectObject(&linepen);
switch(type&1)
{
case 0:
pDC->MoveTo(point.x,point.y);
pDC->LineTo(point.x+65,point.y);
break;
case 1:
pDC->MoveTo(point.x,point.y);
pDC->LineTo(point.x+150,point.y);
break;
default:
break;
}
pDC->SelectObject(poldlinepen);
}
其效果图如图2:
图2-1即将进入该轨道区段
图2-2离开该轨道区段
信号机是利用MFC类实现画线和画刷功能,首先定义一个CDC类型的指针,用CPen来创建画笔对象。
该类封装了与画笔相关的操作。
它有三个构造函数,其中一个构造函数的原型声明如下所示:
CPen( int nPenStyle, int nWidth, COLORREF crColor);
其中第一个参数(nPenStyle)指定笔的线型(实线、点线、虚线等);第二个参数(nWidth)指定笔的线宽;第三个参数(crColor)指定笔的颜色,这个参数是类型,利用RGB这个宏可以构建这种类型的值。
接着利用SelectObject函数将新的画笔对象进入设备描述表。
再利用画线函数绘制线条。
最后,再次调用SelectObject函数恢复设备描述表中的画笔对象。
MFC提供了一个CBrush类,可以用来创建画刷对象。
当列车进入某轨道区段时,信号机显示红灯,如图3:
图3列车进入某轨道区段
当列车离开该轨道区段时,该信号机显示的是黄灯,如图4所示:
图4列车离开某轨道区段
4.结论
本文采用Windows下的VC++为开发工具,完成文中相关模块的程序设计和实现。
由于程序和数据是独立的,对于不同的车站站场,各模块是通用的,只需修改相应的车站站场数据即可完成程序设计,这种算法不但提高了运算效率,还提高了内存空间的利用率。
在实际的应用过程中,计算机联锁软件的设计可以在满足计算机联锁和6502继电联锁的技术标准的基础上,实现优化系统。
而在继电器执行电路及接口驱动电路等方面可尽量实现统一,实现标准化和简单化,以方便应用。
参考文献
[1] 谢保锋.车站计算机联锁的现状与发展[J].交通运输系统工程与信息,2004,4(4):87~90
[2] 鲁志彤.我国车站计算机联锁系统[J].甘肃科技,2009.25(11):61~62
[3] 喻喜平,浅谈我国车站计算机联锁系统的发展[J].石家庄铁路职业技术学院学报,2007,6(2):110~112
[4] 方亚非,铁路车站计算机联锁系统的现状和发展趋势[J].铁路通信信号工程技术,2007,4(4):7~8
[5] 邢露元,计算机联锁控制系统车站设计[J].科技资讯,2009:29~31
[6] 李翠霞,零基础学Visual C++[M] 机械工业出版社
[7] 谢文站,国产计算机联锁系统的发展现状[J].铁路通信信号工程技术(RSCE),2008,5,(1):51~53
[8] 吴芳美,计算机联锁软件现场测试方法及实现[J].中国铁路,2001(7):27~28
[9] 郭进,铁路信号基础[M] 中国铁道出版社
[10]唐浩强, C语言设计[M] 清华大学出版社
[11] 孙鑫,VC++深入详解[M] 电子工业出版社
[12] 郑莉,C++语言程序设计[M] 清华大学出版社。