分享
2023年有轨电车轨道模块中实时操作系统的应用.docx
下载文档

ID:1251636

大小:21.46KB

页数:5页

格式:DOCX

时间:2023-04-19

收藏 分享赚钱
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,汇文网负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
网站客服:3074922707
2023 有轨电车 轨道 模块 实时 操作系统 应用
有轨电车轨道模块中实时操作系统的应用 :该文主要介绍将实时操作系统应用于有轨电车轨道模块控制系统,通过实时系统弥补离散控制系统实时性差的问题。采取基于LPC1700的实时多任务操作系统μC/OS-Ⅱ进行有轨电车轨道模块的通信控制,从而实现了各个模块通信的实时性。 关键词:实时操作系统;轨道模块;LPC1700;μC/OS-Ⅱ 中图分类号: TP31 文献标识码:A 文章编号:1009-3044(2023)18-4341-03 The Application of Real-time Operating System in the Track Module of the Tram ZHAO Sheng-yan, LING Xiao-ming (Lanzhou Jiaotong University, Lanzhou 730070, China) Abstract: In this paper, a real-time control system was used to the orbital module control system of the tram"s main track,, through the real-time system we solved the problem of poor real-time in discrete control system.By using the real-time multitasking operating system named μC/OS-Ⅱwhich based on LPC1700,we control the communication of the tram"s track module and implement the real-time communication of the modules. Key words: RTOS(real-time operating system); orbital module; LPC1700; μC/OS-Ⅱ 1 概述 在城市各种公共交通工具中,城市轨道交通具有运量大、速度快、平安可靠、污染底等特点[1]。而在轨道交通控制系统中,轨道模块控制系统是交通运营方面极为重要的一个环节。传统的轨道模块控制系统是离散模块,离散模块无法实现各个模块的通信的实时性。因此,为了更好地提高系统的实时性,研究将实时操作系统应用于轨道模块,已成为完善控制系统十分重要的一个方面。基于以上原因,该文研究了有轨电车轨道模块控制中实时多任务操作系统μC/OS-Ⅱ的应用,并通过实际应用验证了其可行性。 采用基于LPC1700的实时多任务操作系统μC/OS-Ⅱ进行有轨电车轨道模块控制时,首先要将μC/OS-Ⅱ移植到LPC1700微处理器上。μC/OS-Ⅱ是一个完整的,可移植、固化、裁剪的占先式实时多任务内核。μC/OS-Ⅱ是在PC机上开发和测试的,但μC/OS-Ⅱ的实际对象是嵌入式系统,并且很容易移植到不同架构的微处理器上[2]。该文将简单介绍如何将μC/OS-Ⅱ移植到LPC1700上并且实现有轨电车轨道模块控制系统中多任务的运行。 计算机在执行应用程序时,经常要用I/O设备进行数据的输入和输出,而I/O设备在工作时总是需要一段时间的。于是在I/O设备工作期间,如果CPU没有其他任务,那么就只能等待,因此就会使计算机运行一个应用程序所花的时间比拟长,也就是说,这种系统的实时性较差。多任务运行的实现实际上是靠CPU在许多任务之间转换和调度。CPU只有一个,轮番效劳于一系列任务中的某一个。多任务运行使CPU的利用率到达最高,并使应用程序模块化[3]。该文就是使用了多任务,将一个大的应用程序分成相对独立的多个任务来完成,从而给应用程序的设计和维护也提供了极大的方便。 2 基于LPC1700的μC/OS-Ⅱ的移植 1) 移植要求 在将实时操作系统应用在有轨电车轨道模块控制系统中时,我们采用了LPC1700微处理器,移植过程在Keil μVision4集成开发环境上完成。由于LPC1700微处理器支持并能产生中断、具有堆栈指针、具有CPU内部存放器入栈和出栈指令,并且Keil μVision4的C编译器可直接在C语言中开关中断,并支持内嵌汇编指令[4]。所以,以Keil μVision4为开发平台,以LPC1700作为目标微处理器来移植μC/OS-Ⅱ是完全可行的。 2) 需要移植的主要内容 需移植的μC/OS-Ⅱ的软件体系结构如图1所示。 从图中我们可以明确知道对于μC/OS-Ⅱ的移植主要是编写OS_CPU.H、OS_CPU_C.C和OS_CPU_A.ASM三个文件中的代码[5]。 3) 移植后的测试 在验证移植的μC/OS-Ⅱ是否正常工作时,首先不加任何应用代码来测试移植好的μC/OS-Ⅱ,也就是说,应该先测试内核自身的运行状况。这样做的好处是:如果有些局部没有正常工作,我们可以明白是移植本身的问题,而不是应用代码产生的问题。在进行此次移植代码的测试时,采用了以下四个步骤[6]: ① 确保C编译器、汇编编译器及链接器正常工作; ② 验证OSTaskStkInit()和OSStartHighRdy()函数; ③ 验证OSCtxSw()函数; ④ 验证OSIntCtxSw()和OSTickISR()函数。 3 有轨电车正线联锁控制系统实时多任务的实现 μC/OS-Ⅱ的任务有两种:用户任务和系统任务。由应用程序设计者编写的任务,叫做用户任务;由系统提供的任务叫做系统任务。用户任务是为了解决应用问题而编写的;系统任务是为应用程序提供某种效劳或为系统本身效劳的[6]。下面的任务就是针对有轨电车轨道模块所设计的用户任务,轨道模块实现对轨道区段的状态采集,将状态信息传至联锁CPU模块进行联锁运算,确保行车平安,以下是轨道模块相关功能的实现方式。 1) 双ARM同步任务的实现 在建立此任务时,由于每次任务执行的时间必须相同,因此让双ARM同步任务的执行时间是0.5ms。具体实现方法是:首先为双ARM同步任务配置堆栈空间,其代码为static OS_STK stkARM_synTask[256],并在main()函数中创立此任务,代码为OSTaskCreate(CupledTask, (void x)0, &stkCupledTask[sizeof(stkCupledTask) / 4 - 1],12)。其次让定时器0每隔0.5ms中断一次,在每次中断时,用消息邮箱发送消息给所有的任务。发送消息邮箱的具体步骤是:定义消息邮箱指针:OS_EVENT xMybox;在main()函数中创立消息邮箱:Mybox = OSMboxCreate((void x)0),最后发送消息:OSMboxPostOpt(Mybox,(void x)1,OS_POST_OPT_BROADCAST)。当处于挂起状态的双ARM同步任务接收到消息时,就会立刻进入就绪态,当其他更高优先级的任务运行结束后,此任务即刻进入运行态。进入主机调试窗口观察到的结果如图2所示。进入从机调试窗口观察到的结果如图3所示。 2) 采集外线状态任务的实现 由于信号采集任务的优先级高于数据处理任务的优先级,即信息传递的上游任务的优先级高于下游任务的优先级,所以让采集外线状态任务的优先级高于双ARM同步任务的优先级[3]。在函数main()中创立此任务,其代码为:OSTaskCreate(GatherTask, (void x)0, &stkGatherTask[sizeof(stkGatherTask) / 4 - 1], 8)。同样地,当任务接收到消息邮箱发送来的消息后,且任务处于就绪态任务的最高优先级时立刻进入运行态。其采集到的外线状态的结果如图4所示。 3) 解析联锁命令任务的实现 解析联锁命令任务是比拟关键的任务,为防止由于联锁命令的漏解析,使得控制系统发出错误的控制指令,我们将此任务的优先级设得比拟高,创立任务的代码为:OSTaskCreate(ParseTask, (void x)0, &stkParseTask[sizeof(stkParseTask) / 4 - 1], 6),当有新数据到达时,判断第一路、第二路有无命令,如果有命令,判断是否为请求命令,假设是请求命令,且有请求数据时,读取请求数据的帧序号。 4) 驱动继电器动作任务的实现 将驱动继电器动作任务创立为主任务,且优先级为创立的任务中最高的优先级:OSTaskCreate(mainTask, (void x)0, &stkMainTask[sizeof(stkMainTask) / 4 - 1],4),我们在安排任务的优先级时,设计了一定的冗余,这样就为以后增加新任务提供方便,即当要创立新的任务而不知道优先级是多少时,就可以在不改变现有任务优先级的情况下,很容易根据需要找到一个适宜的空闲优先级。驱动继电器动作的命令如图5所示。 5) CPU运行灯控制任务的实现 CPU运行灯控制任务的实现采用接收二值信号量的方法,二值信号量的使用范围是:被控制方总能够及时响应控制方发出的信号,完成相应处理器任务,并在下一次信号来到之前进入等待状态[6]。OSTaskCreate(CupledTask, (void x)0, &stkCupledTask[sizeof(stkCupledTask) / 4 - 1],12)是创立CPU运行灯控制任务的代码,中断处理函数每到100ms时给CPU运行控制任务发送二值信号量:OSSemPost(CpuSem),当任务接收到二值信号量时,即刻进入就绪态。 6) 串口2发送数据任务的实现 与CPU运行灯控制任务类似,串口2发送数据任务也通过接收二值信号量的方法,当定时器0每隔50ms时,发送信号量,任务先进行发送数据的配置,包括帧头、帧尾、第一路采集状态数据、第二路采集状态数据、数据校验和等,待接收到信号量时即刻向CPU发送数据[7]。如图6所示为执行CPU通过串口2向监测CPU发送的数据,其中FE是帧头,EF为帧尾,55和55分别是第一路和第二路轨道采集状态,33和44分别为第三路和第四路轨道采集状态,66为故障信息,78为校验和。从图中我们可以看出监测CPU能成功地接收到执行CPU发送的数据。 4 总结 针对有轨电车轨道模块控制系统中,实时性较差的问题,采用了基于LPC1700的μC/OS-Ⅱ实时操作系统,已实现各模块通信的实时性。从文中通信数据结果中可以看出,采用了实时操作系统μC/OS-Ⅱ的各模块能有效满足有轨电车轨道模块控制系统实时性的要求,可以对轨道区段的状态信息进行实时采集,并将状态信息传至联锁CPU模块进行联锁运算,确保了行车平安,具有一定的现实意义。 参考文献: [1] 耿幸福,徐新玉,张国保.城市轨道交通行车组织[M].北京:人民交通出版社,2023:2-10. [2] Jean J.Labrosse.嵌入式实时操作系统μC/OS-Ⅱ[M].邵贝贝,等,译.北京:北京航空航天大学出版社,2003:116-281. [3] 任哲.嵌入式实时操作系统μC/OS-Ⅱ原理及应用[M].北京:北京航空航天大学出版社,2023:42-187. [4] 周立功等.深入浅出Cortex-M3—LPC1700(上册)[M].广州:广州致远电子,2023:213-377. [5] 顾凤玉,施国梁,杨涛.基于LPC2478的μC/OS-Ⅱ的移植及多任务的实现[J].知识与技术,2023,5(7):1776-1779. [6] 周航慈.基于嵌入式实时操作系统的程序设计技术[M].北京:北京航空航天大学出版社,2023:50-160. [7] 周立功,等.深入浅出Cortex-M3—LPC1700(下册)[M].广州:广州致远电子,2023:142-200.

此文档下载收益归作者所有

下载文档
你可能关注的文档
收起
展开