列车运行控制试验三试验报告材料_第1页
列车运行控制试验三试验报告材料_第2页
列车运行控制试验三试验报告材料_第3页
列车运行控制试验三试验报告材料_第4页
列车运行控制试验三试验报告材料_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实用标准文档列车运行控制应答器报文组帧学院:电子信息工程学院 班级:自 动 化 1301成员:文案大全目录1 实验目标 31.1 实验整体目标 31.2 实验具体目标 32 实验过程 32.1 原理分析 32.1.1 应答器报文结构原理 32.1.2 线路参数相关的应答器信息包定义 42.2 仿真环境 42.3 程序编写 52.3.1 程序分析 52.3.2 程序框图 62.3.3 程序代码 63 实验结果分析 74 实验总结 13附 源代码 141 实验目标1.1 实验整体目标理解应答器报文结构和填写方式; 完成应答器报文的解码, 并理解应答器报 文的应用方式;理解 ETCS语言的应用。1.

2、2 实验具体目标在完成实验二的基础上, 填写应答器信息解码程序。 能够将闭塞分区长度和 线路限速信息解码出来, 填入速度防护程序所需的输入变量中, 并通过 Excel 中 列车的运行情况判定程序是否正常实现了相应的功能。 该部分仍为正线接车、 18 号以下道岔侧线接车、 18 号以上道岔侧线接车和引导接车四种情况,其具体码 序与实验二相同,此处不再罗列。2 实验过程2.1 原理分析2.1.1 应答器报文结构原理应答器设于各车站进站信号机、 出站信号机、 区间闭塞分区入口以及电分相 区前方、 列控系统级间切换点前方、 大型桥隧前方等特殊地点, 向列控车载设备 传输定位信息、线路参数、临时限速等信

3、息。每经过一个应答器组,车载设备会 收到一个完整的、 固定长度的报文帧 (104 字节),其中包含发送线路信息的用户 信息包,由于报文以 ETCS语言的方式传输, 因此接收到的报文是以 ETCS语言进 行编码后的二进制数据。控车程序对应答器报文按照规定的格式进行解析和处理, 才能获得可用的数 据。 ETCS语言组成关系如下:2.1.2 线路参数相关的应答器信息包定义当列车在线路上正常运行时, 接收应答器信息, 从而获得轨道区段长度、 线 路限速等信息,在本实验中,解码的是提供线路限速的线路速度信息包【 ETCS- 27】和提供闭塞分区长度的轨道区段信息包【 CTCS-1】。【ETCS-27】包

4、中针对速度变化点描述定义情况可用下图表示:信息包的其他具体结构和变量情况等信息在实验过程中可具体参考实验指 导书。2.1.3 整体函数变量情况BaliseBitToByte() 函数中,其输入变量和输出变量为:2.2 仿真环境本实验的仿真仍在 excel 中完成,与实验二列车运行的线路相同。 不同的是 本次实验中线路上正常铺设区间、 进站等应答器组, 当列车经过应答器组时, 接 收它们提供的信息。具体仿真环境结构如下图所示:2.3 程序编写2.3.1 程序分析本实验需要编写的仿真程序, 即为实验二中控制程序大致流程中应答器信息 读取部分,解析应答器报文, 并提取出有用的信息计算该应答器组中存储

5、的闭塞 分区长度和线路限速, 输出给仿真环境, 由仿真环境进行数据的进一步转换, 变 为 ATPprotection() 程序的输入,完成线路数据的使用,正确完成超速防护的功2.3.2 程序框图2.3.3 程序代码(注:本部分只列出关键部分,完整代码请查看附录)实现变量由 bit 到字节转换,将线路允许速度填充到 sLineAllowSpeed 数组中offset = 50VarBitNum = 8TotoalBitBeforeVar = offsetNID_PACKET1 = ff.GetValueOfVar(VarBitNum, TotoalBitBeforeVar, Telegram)

6、/ 读取 NID_PACKET中1 的信息VarBitNum = 13TotoalBitBeforeVar = offset + 10L_PACKET1 = ff.GetValueOfVar(VarBitNum, TotoalBitBeforeVar, Telegram) / 读取 L_PACKET1中的信息If NID_PACKET1 = 27 Then/ 判断是否读取线路信息包 ETCS-27中的数据sLineAllowSpeed(0, 0) = 0VarBitNum = 15TotoalBitBeforeVar = offset + 25D_STATIC = ff.GetValueOfV

7、ar(VarBitNum, TotoalBitBeforeVar, Telegram)/ 读取应答器中速度信息起始点距离VarBitNum = 7TotoalBitBeforeVar = offset + 40V_STATIC = ff.GetValueOfVar(VarBitNum, TotoalBitBeforeVar, Telegram)/ 读取应答器中最大允许列车速度VarBitNum = 5TotoalBitBeforeVar = offset + 53N_ITER = ff.GetValueOfVar(VarBitNum, TotoalBitBeforeVar, Telegram)

8、/ 速度变化点数量If N_ITER = 1 Then/ 变化点数量为 1 时VarBitNum = 15TotoalBitBeforeVar = offset + 58D_STATIC = ff.GetValueOfVar(VarBitNum, TotoalBitBeforeVar, Telegram)VarBitNum = 7TotoalBitBeforeVar = offset + 73V_STATIC = ff.GetValueOfVar(VarBitNum, TotoalBitBeforeVar, Telegram)sLineAllowSpeed(1, 0) = D_STATICsL

9、ineAllowSpeed(0, 1) = V_STATIC * 5End If实现变量由 bit 到字节转换,将轨道电路合并为闭塞分区填充到 sBlocks 数组If NID_PACKET = 44 Then/ 判断是否读取线路信息包 CTCS-1中的数据Q_SCALE = ff.GetValueOfVar(VarBitNum, Telegram)If Q_SCALE = 0 ThenB = 0.1/ 获取轨道区段的长度分辨率信息TotoalBitBeforeVar,NID_SIGNAL =Telegram)/ 获取信号灯情况ff.GetValueOfVar(VarBitNum,Totoal

10、BitBeforeVar,VarBitNum = 15TotoalBitBeforeVar = offset + L_PACKET1 + 73L_SECTION1 = ff.GetValueOfVar(VarBitNum, Telegram)/ 读取轨道区段信息TotoalBitBeforeVar,If NID_SIGNAL = 0 Then / 判断是否有信号机sBlocks(r) = s * B/ 有信号机则确定闭塞分区区间长度s=0/ 中间变量置零r = r + 1 End If Next End If3 实验结果分析实验结果记录表测试案例正线接车停车测试步骤a. 设置初速度 200km

11、/h ,加速运行;b. 选择正线接车进路类型,直到列车停车;c. 观察所计算的允许速度曲线是否正确;d. 查看记录文件。8测试结果正线接车测试结果截图实验结果记录表测试案例18 号道岔以下接车停车功能测试步骤a. 设置初速度 200km/h ,加速运行;b. 选择 18 号道岔一下侧线接车进路类型,直到列车停车;c. 观察所计算的允许速度曲线是否正确;d. 查看记录文件。测试结果18 号道岔以下接车测试结果截图9实验结果记录表测试案例18号道岔以上接车停车功能测试步骤a. 设置初速度 200km/h ,加速运行;b. 选择 18号道岔以上侧线接车进路类型,直到列车停车;c. 观察所计算的允许速

12、度曲线是否正确;d. 查看记录文件。测试结果18号道岔以上接车停车功能测试结果截图10实验结果记录表测试案例侧线引导接车停车功能测试步骤a. 设置初速度 200km/h ,加速运行;b. 选择侧线引导接车进路类型,直到列车停车;c. 观察所计算的允许速度曲线是否正确;d. 查看记录文件。测试结果侧线引导接车停车功能测试结果截图调试记录汇总表问题描述原因分析解决方法开始运行后图像与实验二完全一致实验过程操作错误本实验中为“人工解析”开始运行后无曲线生成实验理解错误在实验二的基础上完成 实验三,因此应先将实验 二程序正确完成并写入 整体程序中,再进行实验 三程序的编写和测试SBlocks()函数运

13、行错误未对中间变量置零,导 致后面的区间赋值错误对中间变量 s 置零Telegram()函数运行错 误未在函数开始前对 Telegram 进行正确定义定义 Telegram 函数并定 义类型11124 实验总结本次实验在完成实验二的基础上进行, 由于完成实验二时对实验环境及程序 编写都有了较为深入的了解, 因此完成实验三的过程中难度相对较小, 只需增加 程序对应答器中相关信息进行读取, 数据处理后输出到实验二已完成的程序中即 可。虽然实验过程中没有遇到很大的困难,但实验过程还是让我们有很大收获,首先是对地面设备有了更多的了解,熟悉了应答器的工作方式及ETCS语言,并能通过程序的编写对其进行运用

14、。综合实验二与实验三, 很多函数是系统中已有的, 自己编写时直接调用即可, 需要我们完成的程序部分也大部分参考了以前的程序, 在读懂程序的基础上, 还 应该自己思考程序的优化与完善, 而不仅局限于看懂已有的程序, 这是在今后的 学习过程中需要提升的。13附 源代码Public Function BaliseBitToByte(Telegram() As Byte, ByRef sBlocks() AsSingle, ByRef sLineAllowSpeed() As Single)code here beginDim NID_PACKET1 As LongDim NID_PACKET2 As

15、 LongDim L_PACKET1 As LongDim Q_SCALE As LongDim NID_SIGNAL As LongDim L_SECTION1 As LongDim L_SECTION As LongDim N_ITER As LongDim D_STATIC As LongDim V_STATIC As LongDim VarBitNum As ByteDim TotoalBitBeforeVar As IntegerDim offset As SingleDim B As SingleDim i As SingleDim r As SingleDim s As Sing

16、le offset = 50VarBitNum = 8TotoalBitBeforeVar = offsetNID_PACKET1 = ff.GetValueOfVar(VarBitNum, TotoalBitBeforeVar, Telegram)VarBitNum = 13TotoalBitBeforeVar = offset + 10L_PACKET1 = ff.GetValueOfVar(VarBitNum, TotoalBitBeforeVar, Telegram)If NID_PACKET1 = 27 Then sLineAllowSpeed(0, 0) = 0VarBitNum

17、= 15TotoalBitBeforeVar = offset + 25D_STATIC = ff.GetValueOfVar(VarBitNum, TotoalBitBeforeVar, Telegram)VarBitNum = 7TotoalBitBeforeVar = offset + 40V_STATIC = ff.GetValueOfVar(VarBitNum, TotoalBitBeforeVar, Telegram)VarBitNum = 5TotoalBitBeforeVar = offset + 5314N_ITER = ff.GetValueOfVar(VarBitNum,

18、 TotoalBitBeforeVar, Telegram) If N_ITER = 1 ThenVarBitNum = 15 TotoalBitBeforeVar = offset + 58D_STATIC = ff.GetValueOfVar(VarBitNum, TotoalBitBeforeVar, Telegram)VarBitNum = 7 TotoalBitBeforeVar = offset + 73V_STATIC = ff.GetValueOfVar(VarBitNum, TotoalBitBeforeVar, Telegram)sLineAllowSpeed(1, 0)

19、= D_STATIC sLineAllowSpeed(0, 1) = V_STATIC * 5 End IfIf N_ITER = 2 Then sLineAllowSpeed(0,1)=V_STATIC*5VarBitNum = 15 TotoalBitBeforeVar = offset + 58D_STATIC = ff.GetValueOfVar(VarBitNum, TotoalBitBeforeVar, Telegram)sLineAllowSpeed(1,0)=D_STATIC VarBitNum = 7TotoalBitBeforeVar = offset + 73 V_STA

20、TIC = ff.GetValueOfVar(VarBitNum, TotoalBitBeforeVar, Telegram)sLineAllowSpeed(1, 1) = V_STATIC2 * 5 End IfEnd IfVarBitNum = 8TotoalBitBeforeVar = offset + L_PACKET1NID_PACKET2 = ff.GetValueOfVar(VarBitNum, TotoalBitBeforeVar, Telegram) If NID_PACKET = 44 ThenVarBitNum = 2 TotoalBitBeforeVar = offset + L_PACKET1 + 47Q_SCALE = ff.GetValueOfVar(VarBitNum, TotoalBitBeforeVar, Telegram)If Q_SCALE = 0 ThenB = 0.1ElseIf Q_SCALE = 1 ThenB = 1ElseIf Q_SCALE = 2 ThenB = 1015End IfVarBitNum = 4TotoalBitBeforeVar = offset + L_PACKET1 + 64NID_SIGNAL = ff.GetValueOfVar(VarBitNum,Telegram)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论