0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于Giotto编程技术实现嵌入式控制系统的应用方案

电子设计 来源:单片机与嵌入式系统应用 作者:雷万军,张云生 2021-03-24 13:39 次阅读

作者:雷万军,张云生,陈颖,陈辉

1 引 言

随着计算机技术、控制技术、信息技术的快速发展,工业的生产和管理方式进入了生产自动化、控制智能化时代,特别是分布嵌入式系统的应用,更加需要标准化、实时的控制模块和I/O功能模块,以便系统集成,构建适应于恶劣环境的复杂分布式系统。实时嵌入式软件模块适合于没计复杂的分布式系统,它支持分布的、异构设备的系统建摸和构造。嵌入式模块的作用是提供使复杂性容易处理的结构和技术,基于Giorio的嵌入式控制设汁更适合具有硬实时控制约束的应用。本文中,平台指硬件结构、操作系统通信协议,由CPU传感器、执行器和网络组成。与平台无关的事件包括应用功能和时限,与平台相关的事件包括时序安排、通信和物理特性。

2 Giotto编程特点

传统的实时嵌入式软件设计是在抽象的数学模型基础上,控制工程师根据对象行为和环境影响,利用求解模型的软件工具,得到模型的功能和性能,然后交给软件工程师针对给定的平台写出代码,并在给定的平台上检验和优化代码,直到得出满意的时间行为。在这个过程中,常常丢失了模型和代码之间紧密的对应关系,放弃了软件的复硝性,增加了软件设计的复杂度,因而产生的软件是弱化的,难于在不同的平台上应用。

基于Giotto的嵌入式控制软件设计将功能程序从特定平台分离,将时限从功能中分离,其与平台无关性使得它具有更好的实时性、可靠性及可复用性,更适合嵌入式实时分布系统。图l为基于Giotto的嵌入式控制系统的设计流程图。首先,控制工程师和软件工程师就控制设计的功能和时限达成一致,设计一个Giotto程序;然后,软件工程师使用Giotto编译器产生一个可执行代码,该代码能连接Giotto运行时间库,将程序映射到给定的平台。Giotto运行时间库提供一个时序安排和通信的中间层,这一层定义了Giotto可执行程序与平台之间的接口。目前已经建立了一个Giotto运行时间库,用于Intel x86机上Wind River的VxWorks实时操作系统。

基于Giotto编程技术实现嵌入式控制系统的应用方案

3 Giotto编程技术

Giotto是一种与平台无关,且在特定控制领域应用中具有高水平的编程语言。Giotto的设计用于高要求的控制应用,这些应用要求周期性地渎取传感器,调用任务,更新执行和模式转换。Giotto基于时间触发编程,从传感器到CPU以及CPU到执行器之问的通信由全局时钟触发,使其具有可预报性。Giotto程序不指定与平台相关的部分,如优先权、通信等。其优点是与具体的执行平台无关,能与任何实时操作系统、调度运算法则以及实时通信协议兼容。

Giotto的两个核心组成部分是:周期性的任务调用和模式转换。一个Giotto程序指定一系列的模式,每一种模式又包含一系列的任务和模式转换。每一时刻,程序都执行在特定的模式P下,每个P模式转换包含1个评估函数和1个目标模式Q,只有评估函数为真时系统才转换为新模式Q。

Giotto任务是一项剧期性的工作,其输入和输出端几分别在任务周期的启动和结束时更新,但Giotto任务不一定要在周期开始时启动,只需在周期内启动和完成。图2(a)显示了运行在同一个CPU上的1个40ms任务M和1个10ms任务N的时序,虚线为目前任务占用CPU的可能情况。在第Oms,M和N都读取它们输入端口的值;在第10 ms,任务N的计算结果写入它的输出端口,但是N早已结束执行(如图中虚线所示);在第40 ms,任务M的计算结果写入它的输出端口,但任务M在第40ms之前已经完成执行。无论任务M在0~40 ms的任何时间完成计算,任务N都只会在第40 ms读其结果。

在Giotto中一个任务可以看作是一个工作单元,一旦开始,就必须要完成。任务周期没结束时,模式转换不能终止任何任务。给定一个Giotto模式P(包括分别由40 ms和10 ms调用的Giotto任务M和N)和一个Giotto模式Q(包括分别由40ms和5ms调用的Giotto任务M和R)。图2(b)显示了在P模式中的第10ms模式转换被激活的时序,此时模式P转换为模式Q。由于P和Q都包含任务M,所以任务M不会终止,但任务N被周期为5ms的任务R代替。

4 物流系统自主小车设计

2一自主小车系统包括2个自主小车,每个自主小车包含一个微处理器、马达和触摸式传感器。设定在任何时候只有一个自主小车是领导者,而其他自主小车是跟随者。其中,处于领导或避开状态的自主小车称为“领导者”,处于跟随或停止状态的自主小车称为“跟随者”。当领导者被阻碍时,领导者进入避开状态,跟随者进入停止状态。进入避开状态的自主小车执行一段避开程序,以避开障碍物,此时处于停止状态的自主小车仍停止;当领导者完成避开程序返回到领导状态时,跟随者返回跟随状态。当跟随者之一被阻碍时,该自主小车进入避开状态,其他所有的自主小车进入停止状态,被阻碍的这个自主小车成为新的领导者。图3显示了2一自主小车系统的状态行为。

由于自主小车处于领导或避开状态时其他自主小车处于跟随或停止状态,因此对每一个领导者X使用1个LeildXFollow模式和1个EvadeXStop模式。其中,处于LeadlFollow模式时,自主小车l是领导者;处于Evadelstop模式时,自主小车l执行避开程序。另外,为每个自主小车X引入一个stopX模式,它允许自主小车快速停止。runCom1任务每40 ms运行一次存储于输出端口 command中的命令。两个Giotto任务rrailerCtrl和trailerCtr2具有lOms的周期,它们根据command中的命令控制两个自主小车的马达;command中的数据由任务驱动trailerDrv传送到任务trailerCtrl和trailerCtr2的输入端口。

系统分别对自主小车l和2的传感器不断地进行检测。当自主小车1被阻碍时,系统转换到stopl模式。两个自主小车都停止移动;完成stopl模式之后系统转换为EvadelStop模式.此时自主小车l执行 避开程序而自主小车2停止不动。类似地,当自主小车2被阻碍时,自主小车2经过stop2模式后转换到Evade2Stop模式。在EvadelStop模式下,Evadel任务每一周期计算一次避开动作是否完成以及避开的下一步动作;具有10ms周期的任务trailerCtrl根据command中避开的步骤去控制自主小车1的马达,一旦完成避开动作,就转换为LeadlFollow模式。

图4为系统从LeadlFollow模式到stopl模式,EvadelStop模式和LeadlFollow模式的模式转换时序图。到stopl模式的转换发生在LeadlFollow模式下的第60 ms,自主小车l的传感器检测到障碍,系统由LeadlFollow模式转换为stopl模式.两个自主小车执行停止程序;完成stopl模式后,在第80 ms系统转换为另外一个模式EvadelStop,自主小车1的控任务立刻被调用,自主小车l执行避开程序,此时自主小车2仍停止;当自主小车1完成避开动作后,在第110ms,两个自主小车的控制任务立刻被调用,系统转换为LeadlFollow模式。当自主小车2是领导者时,其模式转换类似。

5 结论

在基于Giotto的嵌入式控制设计中,时序程序与功能程序的分离,使Giotto程序与具体的运行平台无关,从而提高了程序的健壮性、稳定性及代码的复用性。Giotto系统中任务的调用和环境变量的检测由全局时钟触发,其时间行为具有高度可预报性,使得Giotto非常适合具有硬实时约束的嵌入式控制系统。

责任编辑:gt

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式
    +关注

    关注

    5076

    文章

    19045

    浏览量

    303853
  • 控制系统
    +关注

    关注

    41

    文章

    6555

    浏览量

    110519
  • 计算机
    +关注

    关注

    19

    文章

    7440

    浏览量

    87785
收藏 人收藏

    评论

    相关推荐

    Giotto编程技术、特点及实现嵌入式应用设计

    随着计算机技术控制技术、信息技术的快速发展,工业的生产和管理方式进入了生产自动化、控制智能化时代,特别是分布
    的头像 发表于 11-16 10:36 2807次阅读
    <b class='flag-5'>Giotto</b><b class='flag-5'>编程技术</b>、特点及<b class='flag-5'>实现</b><b class='flag-5'>嵌入式</b>应用设计

    经典UML状态图实用C++设计嵌入式系统事件驱动型编程技术资料分享

    UML状态图的实用C/C++设计嵌入式系统的事件驱动编程技术第二版内含国外版本和国内翻译版本
    发表于 04-24 14:34

    如何去实现嵌入式网络智能控制系统的设计?

    嵌入式网络智能控制系统的结构是怎样构成的?如何去实现嵌入式网络智能控制系统的设计?
    发表于 06-01 06:45

    嵌入式系统设计

    电路与用于提供项目解决方案的软件编程技术集成的电子系统称为嵌入式系统。通过使用这种嵌入式
    发表于 10-27 06:50

    嵌入式系统是什么意思

    电路与用于提供项目解决方案的软件编程技术集成的电子系统称为嵌入式系统。通过使用这种嵌入式
    发表于 10-28 08:58

    什么是嵌入式系统

    电路与用于提供项目解决方案的软件编程技术集成的电子系统称为嵌入式系统。通过使用这种嵌入式
    发表于 12-22 06:11

    基于嵌入式实时操作系统编程技术之资源同步介绍

    《基于嵌入式实时操作系统编程技术》笔记清单:第三章任务划分.《基于嵌入式实时操作系统编程技术
    发表于 12-22 06:30

    PLC控制系统编程技术

    介绍了可编程序控制控制系统开发过程中,PLC梯形图编程要注意的问题及相应的编程技术。关键词:可编程序控制器;
    发表于 05-31 14:28 15次下载

    基于ARM9的嵌入式控制系统设计与实现

    提出了以工业级ARM9 芯片为核心的嵌入式控制系统设计实现方案。分析一般工业控制器需求,给出了控制系统
    发表于 08-13 14:12 19次下载

    嵌入式Linux智能家居控制系统设计

    随着嵌入式技术、网络及信息技术的发展,针对人们对智能家居的追求,提出了一种基于ARM9的嵌入式智能家居控制系统的解决
    发表于 03-07 15:25 1103次下载
    <b class='flag-5'>嵌入式</b>Linux智能家居<b class='flag-5'>控制系统</b>设计

    嵌入式车载终端控制系统的通信方案

    嵌入式车载终端控制系统的通信方案
    发表于 11-10 17:58 58次下载
    <b class='flag-5'>嵌入式</b>车载终端<b class='flag-5'>控制系统</b>的通信<b class='flag-5'>方案</b>

    嵌入式DSP系统C语言硬件编程技术简介

    嵌入式DSP系统C语言硬件编程技术简介(嵌入式开发环境配置)-该文档为嵌入式DSP系统C语言硬件
    发表于 07-30 09:14 7次下载
    <b class='flag-5'>嵌入式</b>DSP<b class='flag-5'>系统</b>C语言硬件<b class='flag-5'>编程技术</b>简介

    嵌入式DSP系统C语言硬件编程技术总结

    嵌入式DSP系统C语言硬件编程技术总结(北京嵌入式开发招聘)-该文档为嵌入式DSP系统C语言硬件
    发表于 07-30 12:55 11次下载
    <b class='flag-5'>嵌入式</b>DSP<b class='flag-5'>系统</b>C语言硬件<b class='flag-5'>编程技术</b>总结

    嵌入式DSP系统C语言硬件编程技术

    嵌入式DSP系统C语言硬件编程技术(计算机三级嵌入式开发技术)-该文档为嵌入式DSP
    发表于 07-30 14:04 27次下载
    <b class='flag-5'>嵌入式</b>DSP<b class='flag-5'>系统</b>C语言硬件<b class='flag-5'>编程技术</b>

    基于ARM嵌入式牙椅控制系统的设计与实现

    电子发烧友网站提供《基于ARM嵌入式牙椅控制系统的设计与实现.pdf》资料免费下载
    发表于 10-27 10:31 0次下载
    基于ARM<b class='flag-5'>嵌入式</b>牙椅<b class='flag-5'>控制系统</b>的设计与<b class='flag-5'>实现</b>