列车运行控制实验三实验报告.doc_第1页
列车运行控制实验三实验报告.doc_第2页
列车运行控制实验三实验报告.doc_第3页
列车运行控制实验三实验报告.doc_第4页
列车运行控制实验三实验报告.doc_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

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

文档简介

列 车 运 行 控 制应答器报文组帧实验报告学院:电子信息工程学院班级:自 动 化 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 实验总结12附 源代码131 实验目标1.1 实验整体目标理解应答器报文结构和填写方式;完成应答器报文的解码,并理解应答器报文的应用方式;理解ETCS语言的应用。1.2 实验具体目标在完成实验二的基础上,填写应答器信息解码程序。能够将闭塞分区长度和线路限速信息解码出来,填入速度防护程序所需的输入变量中,并通过Excel中列车的运行情况判定程序是否正常实现了相应的功能。该部分仍为正线接车、18号以下道岔侧线接车、18号以上道岔侧线接车和引导接车四种情况,其具体码序与实验二相同,此处不再罗列。2 实验过程2.1 原理分析2.1.1 应答器报文结构原理应答器设于各车站进站信号机、出站信号机、区间闭塞分区入口以及电分相区前方、列控系统级间切换点前方、大型桥隧前方等特殊地点,向列控车载设备传输定位信息、线路参数、临时限速等信息。每经过一个应答器组,车载设备会收到一个完整的、固定长度的报文帧(104字节),其中包含发送线路信息的用户信息包,由于报文以ETCS语言的方式传输,因此接收到的报文是以ETCS语言进行编码后的二进制数据。控车程序对应答器报文按照规定的格式进行解析和处理,才能获得可用的数据。ETCS语言组成关系如下:2.1.2 线路参数相关的应答器信息包定义当列车在线路上正常运行时,接收应答器信息,从而获得轨道区段长度、线路限速等信息,在本实验中,解码的是提供线路限速的线路速度信息包【ETCS-27】和提供闭塞分区长度的轨道区段信息包【CTCS-1】。【ETCS-27】包中针对速度变化点描述定义情况可用下图表示:信息包的其他具体结构和变量情况等信息在实验过程中可具体参考实验指导书。2.1.3 整体函数变量情况BaliseBitToByte()函数中,其输入变量和输出变量为:2.2 仿真环境本实验的仿真仍在excel中完成,与实验二列车运行的线路相同。不同的是本次实验中线路上正常铺设区间、进站等应答器组,当列车经过应答器组时,接收它们提供的信息。具体仿真环境结构如下图所示:2.3 程序编写2.3.1 程序分析本实验需要编写的仿真程序,即为实验二中控制程序大致流程中应答器信息读取部分,解析应答器报文,并提取出有用的信息计算该应答器组中存储的闭塞分区长度和线路限速,输出给仿真环境,由仿真环境进行数据的进一步转换,变为ATPprotection()程序的输入,完成线路数据的使用,正确完成超速防护的功能。2.3.2 程序框图2.3.3 程序代码(注:本部分只列出关键部分,完整代码请查看附录)实现变量由bit到字节转换,将线路允许速度填充到sLineAllowSpeed数组中offset = 50 VarBitNum = 8 TotoalBitBeforeVar = offsetNID_PACKET1 = ff.GetValueOfVar(VarBitNum, TotoalBitBeforeVar, Telegram)/读取NID_PACKET1中的信息 VarBitNum = 13 TotoalBitBeforeVar = offset + 10L_PACKET1 = ff.GetValueOfVar(VarBitNum, TotoalBitBeforeVar, Telegram)/读取L_PACKET1中的信息If NID_PACKET1 = 27 Then/判断是否读取线路信息包ETCS-27中的数据 sLineAllowSpeed(0, 0) = 0 VarBitNum = 15 TotoalBitBeforeVar = offset + 25 D_STATIC = ff.GetValueOfVar(VarBitNum, TotoalBitBeforeVar, Telegram)/读取应答器中速度信息起始点距离 VarBitNum = 7 TotoalBitBeforeVar = offset + 40 V_STATIC = ff.GetValueOfVar(VarBitNum, TotoalBitBeforeVar, Telegram)/读取应答器中最大允许列车速度 VarBitNum = 5 TotoalBitBeforeVar = offset + 53 N_ITER = ff.GetValueOfVar(VarBitNum, TotoalBitBeforeVar, Telegram)/速度变化点数量 If N_ITER = 1 Then/变化点数量为1时 VarBitNum = 15 TotoalBitBeforeVar = offset + 58 D_STATIC = ff.GetValueOfVar(VarBitNum, TotoalBitBeforeVar, Telegram) VarBitNum = 7 TotoalBitBeforeVar = offset + 73 V_STATIC = ff.GetValueOfVar(VarBitNum, TotoalBitBeforeVar, Telegram) sLineAllowSpeed(1, 0) = D_STATIC sLineAllowSpeed(0, 1) = V_STATIC * 5 End If 实现变量由bit到字节转换,将轨道电路合并为闭塞分区填充到sBlocks数组 If NID_PACKET = 44 Then/判断是否读取线路信息包CTCS-1中的数据 Q_SCALE = ff.GetValueOfVar(VarBitNum, TotoalBitBeforeVar, Telegram) If Q_SCALE = 0 Then B = 0.1/获取轨道区段的长度分辨率信息NID_SIGNAL = ff.GetValueOfVar(VarBitNum, TotoalBitBeforeVar, Telegram)/获取信号灯情况VarBitNum = 15 TotoalBitBeforeVar = offset + L_PACKET1 + 73L_SECTION1 = ff.GetValueOfVar(VarBitNum, TotoalBitBeforeVar, Telegram)/读取轨道区段信息 If NID_SIGNAL = 0 Then/判断是否有信号机 sBlocks(r) = s * B/有信号机则确定闭塞分区区间长度 s=0/中间变量置零 r = r + 1 End If Next End If3 实验结果分析实验结果记录表测试案例正线接车停车测试步骤a.设置初速度 200km/h,加速运行; b.选择正线接车进路类型,直到列车停车; c.观察所计算的允许速度曲线是否正确; d.查看记录文件。测试结果正线接车测试结果截图实验结果记录表测试案例18号道岔以下接车停车功能测试步骤a.设置初速度 200km/h,加速运行; b.选择18号道岔一下侧线接车进路类型,直到列车停车; c.观察所计算的允许速度曲线是否正确; d.查看记录文件。测试结果18号道岔以下接车测试结果截图实验结果记录表测试案例18号道岔以上接车停车功能测试步骤a.设置初速度 200km/h,加速运行; b.选择18号道岔以上侧线接车进路类型,直到列车停车; c.观察所计算的允许速度曲线是否正确; d.查看记录文件。测试结果18号道岔以上接车停车功能测试结果截图实验结果记录表测试案例侧线引导接车停车功能测试步骤a.设置初速度 200km/h,加速运行; b.选择侧线引导接车进路类型,直到列车停车; c.观察所计算的允许速度曲线是否正确; d.查看记录文件。测试结果侧线引导接车停车功能测试结果截图调试记录汇总表问题描述原因分析解决方法开始运行后图像与实验二完全一致实验过程操作错误本实验中为“人工解析”开始运行后无曲线生成实验理解错误在实验二的基础上完成实验三,因此应先将实验二程序正确完成并写入整体程序中,再进行实验三程序的编写和测试SBlocks()函数运行错误未对中间变量置零,导致后面的区间赋值错误对中间变量s置零Telegram()函数运行错误未在函数开始前对Telegram进行正确定义定义Telegram函数并定义类型4 实验总结本次实验在完成实验二的基础上进行,由于完成实验二时对实验环境及程序编写都有了较为深入的了解,因此完成实验三的过程中难度相对较小,只需增加程序对应答器中相关信息进行读取,数据处理后输出到实验二已完成的程序中即可。虽然实验过程中没有遇到很大的困难,但实验过程还是让我们有很大收获,首先是对地面设备有了更多的了解,熟悉了应答器的工作方式及ETCS语言,并能通过程序的编写对其进行运用。综合实验二与实验三,很多函数是系统中已有的,自己编写时直接调用即可,需要我们完成的程序部分也大部分参考了以前的程序,在读懂程序的基础上,还应该自己思考程序的优化与完善,而不仅局限于看懂已有的程序,这是在今后的学习过程中需要提升的。附 源代码Public Function BaliseBitToByte(Telegram() As Byte, ByRef sBlocks() As Single, ByRef sLineAllowSpeed() As Single)code here beginDim NID_PACKET1 As LongDim NID_PACKET2 As 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 Singleoffset = 50 VarBitNum = 8 TotoalBitBeforeVar = offsetNID_PACKET1 = ff.GetValueOfVar(VarBitNum, TotoalBitBeforeVar, Telegram) VarBitNum = 13 TotoalBitBeforeVar = offset + 10L_PACKET1 = ff.GetValueOfVar(VarBitNum, TotoalBitBeforeVar, Telegram) If NID_PACKET1 = 27 Then sLineAllowSpeed(0, 0) = 0 VarBitNum = 15 TotoalBitBeforeVar = offset + 25 D_STATIC = ff.GetValueOfVar(VarBitNum, TotoalBitBeforeVar, Telegram) VarBitNum = 7 TotoalBitBeforeVar = offset + 40 V_STATIC = ff.GetValueOfVar(VarBitNum, TotoalBitBeforeVar, Telegram) VarBitNum = 5 TotoalBitBeforeVar = offset + 53 N_ITER = ff.GetValueOfVar(VarBitNum, TotoalBitBeforeVar, Telegram) If N_ITER = 1 Then VarBitNum = 15 TotoalBitBeforeVar = offset + 58 D_STATIC = ff.GetValueOfVar(VarBitNum, TotoalBitBeforeVar, Telegram) VarBitNum = 7 TotoalBitBeforeVar = offset + 73 V_STATIC = ff.GetValueOfVar(VarBitNum, TotoalBitBeforeVar, Telegram) sLineAllowSpeed(1, 0) = D_STATIC sLineAllowSpeed(0, 1) = V_STATIC * 5 End If If N_ITER = 2 Then sLineAllowSpeed(0,1)=V_STATIC*5 VarBitNum = 15 TotoalBitBeforeVar = offset + 58 D_STATIC = ff.GetValueOfVar(VarBitNum, TotoalBitBeforeVar, Telegram) sLineAllowSpeed(1,0)=D_STATIC VarBitNum = 7 TotoalBitBeforeVar = offset + 73 V_STATIC = ff.GetValueOfVar(VarBitNum, TotoalBitBeforeVar, Telegram) sLineAllowSpeed(1, 1) = V_STATIC2 * 5 End IfEnd If VarBitNum = 8 TotoalBitBeforeVar = offset + L_PACKET1NID_PACKET2 = ff.GetValueOfVar(VarBitNum, TotoalBitBeforeVar, Telegram) If NID_PACKET = 44 Then VarBitNum = 2 TotoalBitBeforeVar = offset + L_PACKET1 + 47 Q_SCALE = ff.GetValueOfVar(VarBitNum, TotoalBitBeforeVar, Telegram) If Q_SCALE = 0 Then B = 0.1 ElseIf Q_SCALE = 1 Then B = 1 ElseIf Q_SCALE = 2 Then B = 10 End If VarBitNum = 4 TotoalBitBeforeVar = offset + L_PACKET1 + 64 NID_SIGNAL = ff.GetValueOfVar(VarBitNum, TotoalBitBeforeVar, Telegram) VarBitNum

温馨提示

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

评论

0/150

提交评论