1、CTCS2级列控系统行车许可使用CTCS-2级列控系统行车许可使用班级自动化11042.1实验目的(1) 理解 CTCS-2 级列车运行控制系统地面设备工作原理。(2) 理解 CTCS-2 级列控系统车载设备使用 MA 的原理。 (3) 掌握列控系统车载设备基本工作原理。 (4) 初步具备解决列控系统实际工程问题的能力。2.1实验内容列车在装备 CTCS-2 级列控设备的线路上运行。但是,当前的仿真程序由于车载控车部分的程序不完善,会出现超速或冒进等危险。本实验要求实验人员: (1)补充完成 CTCS-2 级车载安全防护程序 ATPprotection,使列车可安全地在该线路上运行(不超速、不
2、冒进),并且能够完成以下典型场景: 区间运行 正线接车 侧线接车 侧线大号码道岔接车 侧线引导接车(选做) (2)编写完成后,请利用仿真程序测试你的程序功能。2.3实验报告(1) 所编写程序 ATPprotection 的流程图。 (2) 为验证结果正确所设计的测试案例及测试结果,格式如下: 测试案例 测试程序的正线接车停车功能 测试步骤 1、设置初速度 200km/h,加速运行; 2、选择正线接车进路类型,直到列车停车; 3、观察所计算的允许速度曲线是否正确; 4、查看记录文件。 测试结果 正线接车测试结果截图正线接车测试案例 测试程序的18号道岔以下接车停车功能 测试步骤 1、设置初速度
3、200km/h,加速运行; 2、选择18号道岔以下接车进路类型,直到列车停车; 3、观察所计算的允许速度曲线是否正确; 4、查看记录文件。 测试结果 18号道岔以下接车测试结果截图18号道岔以下接车测试案例 测试程序的18号道岔以上接车停车功能 测试步骤 1、设置初速度 200km/h,加速运行; 2、选择18号道岔以下接车进路类型,直到列车停车; 3、观察所计算的允许速度曲线是否正确; 4、查看记录文件。 测试结果 18号道岔以上接车测试结果截图18号道岔以上接车测试案例 测试程序的侧线引导接车停车功能 测试步骤 1、设置初速度 200km/h,加速运行; 2、选择侧线引导接车进路类型,直到
4、列车停车; 3、观察所计算的允许速度曲线是否正确; 4、查看记录文件。 测试结果 侧线引导接车测试结果截图侧线引导接车(3) 实验程序Dim i As IntegerDim k As IntegerDim L As SingleDim s As SingleDim j As IntegerDim TargetDistance As SingleDim TargetSpeed As Singles = 0L = 0TargetDistance = 0For i = 0 To 10 s = s + Blocks(i) If s CurrentPos Then For j = 0 To i L =
5、L + Blocks(j) Next Exit For End IfNextIf TrackSignal = L5 Then For k = (i + 1) To (i + 7) TargetDistance = TargetDistance + Blocks(k) NextTargetDistance = TargetDistance + L - CurrentPosTargetSpeed = 0TrainAllowSpeed = ff.CalcLimit(TargetDistance, TargetSpeed)ElseIf TrackSignal = L4 Then For k = (i
6、+ 1) To (i + 6) TargetDistance = TargetDistance + Blocks(k) NextTargetDistance = TargetDistance + L - CurrentPosTargetSpeed = 0TrainAllowSpeed = ff.CalcLimit(TargetDistance, TargetSpeed)ElseIf TrackSignal = L3 Then For k = (i + 1) To (i + 5) TargetDistance = TargetDistance + Blocks(k) NextTargetDist
7、ance = TargetDistance + L - CurrentPosTargetSpeed = 0TrainAllowSpeed = ff.CalcLimit(TargetDistance, TargetSpeed)ElseIf TrackSignal = L2 Then For k = (i + 1) To (i + 4) TargetDistance = TargetDistance + Blocks(k) NextTargetDistance = TargetDistance + L - CurrentPosTargetSpeed = 0TrainAllowSpeed = ff.
8、CalcLimit(TargetDistance, TargetSpeed)ElseIf TrackSignal = L Then For k = (i + 1) To (i + 3) TargetDistance = TargetDistance + Blocks(k) NextTargetDistance = TargetDistance + L - CurrentPosTargetSpeed = 0TrainAllowSpeed = ff.CalcLimit(TargetDistance, TargetSpeed)ElseIf TrackSignal = LU Then For k =
9、(i + 1) To (i + 2) TargetDistance = TargetDistance + Blocks(k) NextTargetDistance = TargetDistance + L - CurrentPosTargetSpeed = 0TrainAllowSpeed = ff.CalcLimit(TargetDistance, TargetSpeed)ElseIf TrackSignal = U Then k = i + 1 TargetDistance = TargetDistance + Blocks(k) TargetDistance = TargetDistan
10、ce + L - CurrentPos TargetSpeed = 0 TrainAllowSpeed = ff.CalcLimit(TargetDistance, TargetSpeed)ElseIf TrackSignal = U2 Then TargetDistance = L + Blocks(9) - CurrentPos TargetSpeed = 45 TrainAllowSpeed = ff.CalcLimit(TargetDistance, TargetSpeed)ElseIf TrackSignal = UU Then TargetDistance = L - Curren
11、tPos TargetSpeed = 45 TrainAllowSpeed = ff.CalcLimit(TargetDistance, TargetSpeed)ElseIf TrackSignal = U2S Then TargetDistance = L + Blocks(9) - CurrentPos TargetSpeed = 80 TrainAllowSpeed = ff.CalcLimit(TargetDistance, TargetSpeed)ElseIf TrackSignal = UUS Then TargetDistance = L - CurrentPos TargetS
12、peed = 80 TrainAllowSpeed = ff.CalcLimit(TargetDistance, TargetSpeed)ElseIf TrackSignal = HB Then TrainAllowSpeed = 40ElseIf TrackSignal = B Then TrainAllowSpeed = 40ElseIf TrackSignal = HU Then TargetDistance = L - CurrentPos TargetSpeed = 0 TrainAllowSpeed = ff.CalcLimit(TargetDistance, TargetSpee
13、d)End IfIf CurrentPos LineAllowSpeed(0, 1) Then TrainAllowSpeed = LineAllowSpeed(0, 1) End IfElseIf CurrentPos = LineAllowSpeed(2, 0) Then If TrainAllowSpeed LineAllowSpeed(2, 1) Then TrainAllowSpeed = LineAllowSpeed(2, 1) End IfElse If TrainAllowSpeed LineAllowSpeed(1, 1) Then TrainAllowSpeed = Lin
14、eAllowSpeed(1, 1) End IfEnd IfIf CurrentSpeed TrainAllowSpeed Then BrakeFlag = TrueElse BrakeFlag = FalseEnd If(4) 总结实验调试过程中出现的问题,形成调试记录,格式如下:问题现象描述问题原因解决方法1.需要较多的if判断语句,有时甚至需要较多的判断嵌套2.目标距离的计算3.For循环的编写4.目标速度的计算1.接车情况分为多种,每种情况的轨道序列码都不一样;每种轨道序列码的限速信息不一样;D1、D2、D3三段轨道的限速信息不一样;根据列车现行速度和每一点的允许速度,最终输出制动和缓
15、解制动的情况不一致。2.对每种轨道序列码前方允许的空闲闭塞分区不一样;每段轨道长度不一样;列车目前所在的轨道区段需要确定;3.由于每种轨道序列码所预示的前方闭塞分区的数目不一样,列车在不同时刻所在轨道区段不同,所以求取目标距离时for循环的控制次数不一样4.每种轨道序列码所限定的目标速度不一致,再加上每段的限制速度,所以情况复杂1.对每种接车情况所用的轨道序列码分类列举,不重不漏;用if多重嵌套判断语句将每种限速信息准确的叠加到TainAllowSpeed2.根据CurrentPos先确定目前列车所在轨道区段;根据接收到的轨道电路码确定前方空闲闭塞分区数目,并计算空闲闭塞分区的总长度;计算从运
16、行开始区段到目前所在区断的总距离,用上述两者之和减去CurrentPos即可。3.根据接收到的轨道序列码的不同,用if语句分条件求取,并新设变量控制循环次数;每次调用 ATPprotection函数时先用for循环判断列车当前所在区段。4.先用if语句将每种轨道序列码所要求的限速分类作为目标速度,调用函数算出当前允许速度,再用if语句加上每段的速度限制(5) 实验感想总结。这次实验总体来说难度较大 ,虽然实验原理我们课上都有学习,但是要将其真正用软件表现出来还是很困难。首先我们也是第一次用到Excel表格的宏编程,这在以前是没有接触到的。但是有了其他编程语言的基础,上手起来还是可以的。紧接着,就需要把具体的列控系统行车许可用代码的形式表示出来。实验指导书中的介绍很全面,我们也是将其总结与整合,先画出其流程图,分析其中的规律,然后就着手写代码了。这次我们编写可以说是很成功,基本没出现什么大的问题,这也是基于我们在写每一行代码都非常认真的态度。最后,我们的软件就可以完美完成了任务。这次试验让我对自己的专业有了更加直观的认识,也对自己的专业知识有了更加深刻的理解,在以后的学习试验过程中,一定要对自己的专业知识有更深刻的理解,这样才可以在思考的过程中游刃有余。虽然实验过程中遇到了很多困难,但是通过我们的不断努力,都完美的解决了,这对于我们的能力是一种提高。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1