没有合适的资源?快使用搜索试试~ 我知道了~
--第九届国际会计师联合会控制教育进展国际自动控制联合会,俄罗斯下诺夫哥罗德,2012年LEGOMINDSTORMSEARTH1实时控制教学Peter J.Bradley, Juan A.胡安·萨莫拉诺(Juan Zamorano)丹尼尔·布鲁斯南(Daniel Brosnan)波兰理工大学(UPM),西班牙. 电子邮件:pbradley,jzamora,dbrosnan@datsi。upm.es,jpuente@dit.upm.es翻译后摘要:一套软件开发工具,用于建立一个简单的机器人平台上的实时控制系统的文件中描述。这些工具正在实时系统课程中使用,作为学生项目的基础。开发平台是运行GNU/Linux的低成本PC,目标系统是LEGO MINDSTORMS NXT,从而保持实验室的低成本。实时控制软件是使用混合范例开发的。控制算法的功能代码是从Simulink模型中自动生成的。然后,将这些代码集成到基于一组用Ada编写的组件的并发实时软件架构中。这种方法使学生能够利用Simulink提供的用于设计控制算法的高级、面向模型的功能,以及Ada提供的对并发和实时结构的全面支持。关键词:控制教育,实时系统,嵌入式系统,LEGO MINDSTORMS,Simulink,机器人编程,Ada任务程序。1. 介绍掌握实时嵌入式系统编程技能是控制工程师教育的基本组成部分。实际上,大多数控制系统被实现为实时嵌入式计算机系统。微处理器技术的进步使实时控制系统嵌入到各种系统中成为可能,从工业设备到汽车、火车、飞机和消费电子产品。基于模型的软件开发,例如由MatlabAVR/SimulinkAVR代码生成设备实现的软件开发,已经使得开发控制算法的程序代码变得更加容易,并且现在在所有控制工程课程中是常见建模工具允许控制工程师使用基于仿真的高级方法设计和测试复杂的控制算法,然后用某种编程语言(最常见的是C语言)生成可在嵌入式计算机平台上运行的然而,控制算法只是一个完整的嵌入式软件系统的一部分即使是相对简单的嵌入式系统也需要某种操作系统支持设备输入/输出、并发和实时控制以及用户界面等。此外,实时行为和控制性能之间的相互作用可能会在最终系统实现时产生意想不到的问题(Crespo等人,2006年)。因此,我们认为,实时程序设计课程,包括并发性、实时调度和可并行性分析等经典主题,以及输入/输出设备编程(例如,参见Burns和1这项工作得到了MICINN项目TIN 2008 -06766-C 03 -01 RT-MODEL的部分资助。Wellings,2009)仍然需要作为控制电流的一部分。我们已经在芬欧汇川教授这样的课程很多年了,使用Ada(ALRM05)作为主要的编程语言。我们选择Ada是因为它对可靠的软件工程和本地并发性的有力支持。实时编程课程的一个重要方面是实验室工作。寻找实时控制应用程序,同时足够现实,易于 使用 通过 学生 是不 一 简单 任务最近,LEGO®MINDSTORMS®在不同类型的控制相关实验室中获得了广泛的认可(参见例如:Grega和Pilat,2008年; Kim,2011年),由于其作为低成本机器人平台的多功能性和可用性。在本文中,我们描述了一个编程环境,该平台可用于支持实时嵌入式控制系统的过程中,包括所有关键的并发性和实时调度方面,同时仍然是compat- ible与高级控制算法设计使用Matlab和Simulink。本文的其余部分组织如下:第2节介绍了乐高MINDSTORMS NXT架构。第3节介绍如何结合Ada和Simulink开发实时系统实验室项目。嵌入式软件开发工具链在第4节中描述第5节描述了一个控制玩具车速度的学生项目的例子。最后,在第6节中得出了一些结论,并概述了今后的工作计划2. LEGO MINDSTORMS NXTLEGO MINDSTORMS NXT(从现在开始NXT)将乐高世界与数字世界结合在一起。它可以组装各种乐高积木,齿轮和各种其他© 2012 IFAC 112 10.3182/20120619-3-RU-2024.000622012年6月19日至21日,俄罗斯下诺夫哥罗德,国际会计师联合会第九届研讨会113零件以及各种传感器、电机、线性执行器等。NXT的大脑是一个嵌入式系统,也被称为图1显示了它的框图。乐高集团©Fig. 1. NXT框图。智能砖是由一个32位ARM主处理器(AT91SAM7S256)与64 KB的RAM和256 KB闪存,运行在48 MHz。ARM处理器得益于8位AVR协处理器(ATmega 48),该协处理器处理低级任务,如输入的A/D转换和输出端口的PWM生成。两个微控制器之间的通信被设置为由两个微控制器周期性地更新的两个存储器区域。注意,这个通信周期在很大程度上决定了NXT的行为。至于智能砖的软件部分,乐高已将NXT固件作为开源软件发布。固件代码和硬件原理图的可用性鼓励开发人员发布自己的编程环境。因此,NXT可以使用C/C++、Java、Python、Ada、MATLAB等语言从主机进行编程。此外,LabVIEW,Simulink和Microsoft Robotics Studio等开发环境也提供了基于模型的方法来编程NXT。3. ADA、SIMULINK和NXT本论文的目的是演示如何完整地开发一个嵌入式系统的软件,使学生有机会体验整个开发过程。这是一个反馈控制系统的设计,调整和编程与实时软件架构,将支持并发执行的控制器上的NXT。至于过程的第一部分,反馈控制, 控制系统的仿真,采用MATLAB/Simulink环境。在控制理论中使用这种编程环境有许多优点一个给定的控制器可以使用广泛的块库建模,然后调优和测试。此外,Simulink还可以对连续控制器进行离散化,并生成嵌入式环境下的C代码算法.对于该过程的第二部分,即实时软件架构,使用Ada代替C。虽然C语言是嵌入式系统编程中常用的语言,但我们认为它不是一种教授并发概念的好语言。C依赖于对实时操作系统的外部系统调用来提供并发和实时特性。这些操作系统原语的低级特性削弱了并发概念。还有大量已知的C漏洞(参见WG 23-N 0304),这些漏洞可能在高完整性系统中至关重要。最后,C语言的语法容易混淆和出错。另一方面,Ada编程语言为嵌入式实时编程提供了理想的功能。并发和实时是语言的一部分,不需要外部调用 这些特性支持使用高级并发抽象,如任务、受保护对象和同步消息传递,从而简化编程并避免常见陷阱。它提供了以简单方式处理中断的机制,并提供了一种干净有效的方式与I/O寄存器和内存进行交互。此外,AdaAda提供了与其他语言接口的机制。Simulink生成的控制器C代码可以使用标准编译器指令和库包含在Ada软件架构中。如第5.5节所示。系统的可预测行为是实时开发的关键目标之一。这个属性是有约束力的,以确保硬实时系统满足其最后期限。通过执行Ravenscar Profile(Burns等人,2004),我们可以确定任何NXT应用程序的结果都是可预测的,并且可以执行可扩展性分析。Ravenscar配置文件是Ada任务模型的限制集合。此配置文件仅限于固定优先级和抢占式调度,即运行时间调度器确保在任何给定时间,处理器执行当前准备好执行的所有那些任务中的最高优先级任务。此外,即时上限优先级协议(ICPP)(Sha等人,1990年)由Ravenscar profile执行。这意味着当任务锁定资源时,其优先级会暂时提高,因此无法调度可能锁定资源的任务。因此,由于任务通信的优先级反转被最小化和有界。更多信息见ALRM 05,附件D。4. 环境描述4.1 概述NXT的嵌入式软件在GNU/Linux x86主机上开发。本节将解释在主机上构建NXT应用程序所需的工具集和过程。spi总线UART总线声音i2c总线Atmel® AVR按钮主处理器Atmel® ARM7显示USB蓝牙®BluecoreTM4.0电源输入电路输出电路2012年6月19日至21日,俄罗斯下诺夫哥罗德,国际会计师联合会第九届研讨会114NXT驱动程序Ravenscar运行时系统软件构架Ada C代码Ada码Ada码C代码GNAT GPL forMindstorms2011初始化,irq上下文汇编程序例程中间代码汇编代码目标代码有细化命令的目标代码目标文件NXT可执行GNAT接头NXT链接器脚本因为,GNU汇编程序gnat1 cc1GCC前端GNAT粘合剂GCC后端Simulink控制器图二. NXT的可执行文件生成过程4.2 控制器设计如前所述,Simulink用于设计NXT的反馈控制器。除了Simulink环境,还使用了它的一些工具箱。为了将控制器转换为NXT的ARM主处理器的C代码,需要嵌入式编码器。4.3 交叉编译器工具链交叉编译器工具链是一组工具(本质上编译器、汇编器和链接器),它们为平台(在本例中为NXT)生成可执行代码,而不是运行工具的平台(在本例中为GNU/Linuxx86)。交叉编译器工具链用于为在其上不可行进行此类编译的平台编译代码。AdaCore通过采用基于LEON的开放Ravenscar实时内核ORK+的一部分,将GNAT编译器工具链移植到ARM架构中(de la Puente et al.,2000年)。其结果是GNATGPL for MIND-STORMS交叉编译器工具链,在撰写本文时,仅适用于Windows平台。用于该项目的2011年版本已由Uni versidadPoli t'ecnicadeMadrid的STRAST研究小组移植到GNU/Linux x86主机上。24.4 运行时系统和驱动程序LEGO MINDSTORMS NXT 2011交叉编译器工具链依赖于Ravenscar小足迹运行时系统(Ravenscar SFP)。这意味着2可查阅dit.upm.es/rts/projects/mindstorms。NXT的Ada应用程序应该符合Ravenscar配置文件的任务分配目的。AdaCore开发的NXT驱动程序完全用Ada编写。这些驱动程序允许Ada应用程序管理NXT外围设备。4.5 编译程序要从Ada应用程序生成可执行的NXT文件,GNAT跨工具链首先需要编译生成的目标代码,然后使用链接器脚本。需要编译的代码是Simulink控制器C代码、实时软件体系结构Ada代码、Ada NXT所需的驱动程序、运行时系统(包括Ada、C和汇编代码)以及GNAT绑定器生成的详细代码,见图1。二、为了完成所有这些,GNUmake脚本负责调用GNAT GPLfor MIND- STORMS 2011工具链的不同工具。4.6 调试程序对于嵌入式系统开发人员来说,远程调试器是一个非常有用的 工具。它 可以大 大缩短开 发时间 。Bradley 等人(2011)描述了一种使用GNU调试器(GDB)和ARMEm- beddedICE(在线仿真器)技术远程调试NXT的Ada/C程序的方法。ARM EmbeddedICE是基于JTAG的调试通道,可在NXT上使用。2012年6月19日至21日,俄罗斯下诺夫哥罗德,国际会计师联合会第九届研讨会1155. 车辆原型阻力,b转子转子作为概念验证,设计了基于Bradley等人(2010)的有线控制车辆,并增加了速度控制。5.1 车辆概览KtK=bR+KtKeRJτ=bR+KtKe(二更)(三)第一个任务是建立模型的功能这辆车原型有一个前脚轮,以减轻转弯和提供稳定性。它还有两个后轮,每个后轮由一个独立的电机驱动。这两个电机的速度控制保证了车辆的适当运动。为了控制车辆,使用了一个硬连线的操纵杆,该操纵杆由触摸传感器来启动/停止运动,并由电机使用其编码器来控制转弯根据操纵杆编码器的角度,不同的速度命令被发送到后面的电机,从而控制车辆的运动,见图。3.本 工 作 中 使 用 的 值 ( 见 表 1 ) 取 自 Ryo WatanabePhilippeE.Hurbain(http://www.philohome.com/nxtmotor/nxtmotor.htm),除了S a ′ n c hez等人(2009)讨论过的转子惯性。表1. NXT电机值K t = 0。31739 N·m/AK e = 0。46839 V·s/radR= 6。8562 Ωb = 1. 1278×10−3N·m·s/radJ = 0。842×10−3Kg·m2请 注 意 , 虽 然 乐 高 电 机 表 现 出 轻 微 的 过 冲 ( Kim ,2011),但出于这项工作的目的,它将不被考虑。Simulink模型PID,实际上是PI,控制反馈机制用于控制电机速度。该闭环在Simulink中实现,以调整PI,然后为每个后电机生成功能C代码图4显示了所使用的Simulink模型。PI接收所需电压(由阶跃函数表示)与实际电压之间的差值,该差值该值116已被证明是从NXT上的度/秒获得伏特的最佳近似值。NXT确定电机速度的方法是将电机编码器两个连续读数之间的差值除以这些连续读数之间的时间。只要基本上满足最后期限,经过的时间将接近负责执行PI的任务的时间段图三.有线控制车辆原型。5.2 控制器设计增加速度反馈控制系统的目的是使NXT能够沿直线运动,为此,为两个后电机设计并实现了PID。NXT电机首先需要进行特性分析,以便在Simulink上研究PID传递函数根据Franklin等人(2002),直流电动机见图4。NXT电机速度控制回路。5.3 实时软件体系结构Ω(s)V(s)K=τs+1(一)车辆应用程序需要解决以下问题:-控制两个背面电机的速度,使用其中K等于(2),τ等于(3)。因为Kt是转矩常数,Ke是电常数,R是电常数,设计控制器注意,需要两个控制器,每个电机一个。电压阶跃PI(s)PI控制器2.0290.037s+1NXT电机转移Fcn电压1/11657.2958度/秒2012年6月19日至21日,俄罗斯下诺夫哥罗德,国际会计师联合会第九届研讨会116定期读取每个背电机的编码器值,以计算要进给的电机速度 回到控制器。定期读取电池状态以确定最大速度,以便向控制器提供正确的输入电压。定期检查操纵手柄电机编码器和触摸传感器的状态,以确定电机的指令定期在LCD屏幕上显示车辆状态的更新信息管理处理器和协处理器之间的通信定期检查电源按钮的状态,以关闭系统电源。这些活动可以分布在以下任务中:控制任务:该任务负责速度控制器和操纵杆给出的车辆命令。它将基本上启动/停止运动,改变电机速度,以实现转弯和控制速度。必须定期执行此任务。为了确定任务的期限,需要考虑一些问题。例如,这个时间段必须足够短,以检测到人类激活的操纵杆。如果它太长,则不会捕获所有启动/停止驱动器命令与此同时,这一时期必须足够长,以便基本上满足任务的最后期限此外,由于PI控制器需要离散化才能在嵌入式环境中工作,因此对电机速度进行足够快的采样以获得正确的响应非常使用了传递函数时间常数的十分之一。因为τ = 0。037,最初使用4ms。这项任务将具有高度优先地位。协处理器任务:协处理器任务处理ARM和AVR之间的通信方案。该任务最多必须具有控制任务的周期,以便 速 度 控 制 器 及 时 接 收 反 馈 数 据 ( 最 初 使 用 2ms)。这项任务将具有最高优先级。状态任务:此任务收集数据以监视控制器,并每隔500 ms在屏幕上显示一次。此任务具有低优先级。5.4 PI码生成一旦控制器已经离散化,调整和稳定与所需的建立时间(约。使用400 ms,几乎没有过冲),创建了仅具有离散调谐PI、PI的电压输入和电压输出的新模型反馈过程在此算法之外处理,因为需要使用Ada驱动程序API来读取电机编码器和电池电压。C代码就是使用这个模型生成两个输入端口(输入电压和实际电压)和输出端口(校正电压)都被声明为C外部变量。将C函数代码与Ada应用程序集成的方法就是通过这些变量。因此,它们在Ada中定义并导出到C。在指导Simulink环境进行代码生成时,有几个问题超出了本文的范围然而,必须注意的是,1输入电压PI(z1修正电压PI控制器2实际电压图五.用于代码生成的Simulink模型。需要控制器的功能代码。此代码的周期性执行由Ada任务执行。在生成的代码中不应该发生任务或采样。还要注意,NXT硬件不包括浮点单元(FPU)。因此,浮点运算是软件模拟的,比整数运算慢得多。在为NXT设计Simulink模型时,应尽量减少使用浮动点数5.5 软件实现Simulink代码生成过程输出三个文件:rtwtypes. h,其中包括特定的ARM 7类型定义和通用类型定义; functional.c,其中包括模型步骤函数functional step();以及关联的头文件functional. h。为了实现5.3中提出的实时体系结构,使用了三个Ada编译 单 元 : 主 进 程 ( vehicle.adb ) , 包 声 明(tasks.ads),及其主体(tasks.adb)。Tasks包包括两个任务(控制任务,它调用功能步骤,显示任务),以及一些辅助功能。负责协处理器通信的周期性任务是Ada NXT驱动程序的一部分,并在NXT中声明。AVR软件包。必须始终导入此软件包,即使不需要其功能。为此,在主程序中增加了一个Adawith子句来导入NXT.AVR,以保证该任务的执行清单1显示了包含任务声明的tasks.ads在声明任务时,除了使用pragmaPriority来建立静态优先级之外,还使用了pragmaStorage SizeNXT只有64 KB的RAM内存,此杂注允许程序员分配任务堆栈所需的内存清单1.任务的具体化任务控制任务为杂注优先级(系统。优先级pragma存储大小(4096);结束控制任务;任务显示任务为杂注优先级(系统。优先级pragma存储大小(4096);结束显示任务;−−−−−−−−−2012年6月19日至21日,俄罗斯下诺夫哥罗德,国际会计师联合会第九届研讨会117如5.4所述,输入电压、实际电压和校正电压被声明为外部C变量。它们必须被定义为Ada变量,并在C代码中可见。这是使用编译器指令pragma Export实现的。此外,C函数步骤函数必须可见,以便控制任务能够定期调用它。这是使用编译器指令pragma Import实现的。清单2显示了如何完成上述操作。清单2. Ada和C代码之间的接口。−−从Simulink生成的代码程序PID;pragmaImport(C,PID,“functional step”);−−将输入导出到Simulink生成的代码类型ExternalInputs功能是记录输入电压:浮点;实际电压:浮点;结束记录;功能U:外部输入功能;pragmaExport(C,Functional U,“functional U”);−−输出到Simulink生成的代码类型ExternalOutputs功能是记录correctedvoltage:Float;结束记录;功能Y:外部输出功能;pragmaExport(C,Functional Y,“functional Y”);6. 结论今后的工作本文所述的实时控制平台已被证明是非常有用的实时控制的学生。分离控制设计使用Simulink和并发性和系统的实时方面,这是最好的使用Ada描述的可能性 该平台由相对低成本的组件组成,这使得它成为学术环境的一个可扩展的平台。计划的未来发展包括集成schedulability分析工具,并通过蓝牙向Simulink提供反馈使用MAT- LAB/Simulink环境是因为我们的大学拥有企业许可证,但我们也计划研究具有代码生成功能的其他解决方案。整个环境旨在用于符合欧洲高等教育区的新计算机科学硕士的实时系统学生对控制理论的认识不深,我们认为,利用这种环境,有助于这两个领域的整合,以正确构建嵌入式系统。确认作者希望感谢来自西班牙马德里UniversidadNacionaldeEducaci'ona Distancia ( UNED )建模、模拟和过程控制组的Gon- zalo Farias的合作引用ALRM05(2007年)。Ada参考手册ISO/IEC 8652:1995(E)/TC 1(2000)/AMD 1(2007)。上可用http://www.adaic.com/standards/ada05.html。布拉德利,P.J.,de la Puente,J.A.,Zamorano,J.(2010年)。使用LEGO MINDSTORMS NXT在Ada中进行实时系统开发。 Ada Letters,XXX(3),37doi:http://doi.acm.org/10.1145/1879063.1879077。URLhttp://doi.acm.org/10.1145/1879063.1879077。布拉德利,P.J.,de la Puente,J.A.,Zamorano,J.(2011年)。乐高MINDSTORMS NXT的Ada用户指南。Ada UserJournal,32(3).Burns ,A.,Dobbing ,B. ,和Vardanega,T. (2004年)。高完整性系统中Ada Ravenscar轮廓的使用指南Ada Letters , XXIV , 1-74. doi : http://doi.acm 。org/10.1145/997119.997120。网址http://doi.acm。org/10.1145/997119.997120。伯恩斯,A.和Wellings,A.(2009年)。实时系统和编程语言。Addison-Wesley,第四版。Crespo,A.,Albertos,P.,Balbastre ,P.,Valles,M.,Lluesma,M.,Simo,J.(2006).在复杂的嵌入式控制系统中,可扩展性是一个关键问题。计算机辅助控制系统设计,2006年IEEE国际控制应用会议,2006年IEEE 智 能 控 制 国 际 研 讨 会 , 2006 年 IEEE , 1200-1205。doi:10.1109/CACSD-CCA-ISIC。2006.4776813.de la Puente , J.A. , Ruiz , J.F. , Zamorano , J.( 2000 ) . 一 个 开 放 的 Ravenscar 实 时 内 核 , 用 于GNAT。在H.B. Keller和E. Pléodereder(eds.),可靠的软件技术- Ada-Europe 2000,LNCS第1845史普林格出版社富兰克林,G.F.,鲍威尔,J.D.,和Emani-Naeini,A.(2002年)的报告。动态系统的反馈控制。PrenticeHall,Upper Saddle River,NJ,第四版。Grega , W. 和 Pilat , A. ( 2008 年 ) 。 使 用 LEGOMINDSTORMS NXT机器人进行实时控制计算机科学与信息技术,2008年。2008年犯罪问题综合管理委员会 。 国 际 多 方 会 议 , 625-628 。 doi :10.1109/IMCSIT.2008.4747308。金 , Y 。 ( 2011 年 ) 。 控 制 系 统 实 验 室 使 用 LEGOMindstorms NXT电机系统。IEEE Tr. Education,54(3),452 - 461. doi:10.1109/TE.2010.2076284。沙湖,Rajkumar河,和Leibenzky,J.P.(1990)。优先级继承协议:实时同步的一种方法。IEEE Tr.计算机,39(9)。S'anchez,S., Rodr'ıguez,O., 和Arribas,T. (2009年)。使用LEGONXT的Uti-lizaci'ond ocenciauni versitaria. 技术报2012年6月19日至21日,俄罗斯下诺夫哥罗德,国际会计师联合会第九届研讨会118告,UniversidaddeAlcal'a。[西班牙语]WG 23-N 0304 ( 2011 年 ) 。 C 语 言 的 漏 洞 描 述 。ISO/IEC JTC 1/SC 22/WG 23编程语言漏洞。
下载后可阅读完整内容,剩余1页未读,立即下载
cpongm
- 粉丝: 4
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- RTL8188FU-Linux-v5.7.4.2-36687.20200602.tar(20765).gz
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
- SPC统计方法基础知识.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功