加入收藏 | 设为首页 | 会员中心 | 我要投稿 | RSSRSS-巴斯仪表网
您当前的位置:首页 > 电子发烧 > 单片机学习

VxWorks系统上基于M总线控制系统的设计与实现

时间:2013-09-08  来源:123485.com  作者:9stone

摘要:研究基于VxWorks嵌入式实时系统下M 总线控制系统的软件设计思想和实现方法.该系统需要设置两个各自独立运行的实时任务. 达到对外部设备进行控制的功能.第1个任务负责收集命令和通过传感器采集到的数据,并设定命令优先级;第2个任务负责解释执行,并发送命令执行后的啊应,两个任务之间通过命令缓存链表进行通信.此设计思想简单、高效,可以被广泛应用在与M 总线相关的其他控制系统中.

   随着控制、计算机、通信、网络等技术及智能传感技术的发展,信息交换沟通的领域正在迅速覆盖从工厂的现场设备到控制、管理的各个层次.信息技术的飞速发展,引起了自动化系统结构的变革,逐步形成以网络集成自动化系统为基础的企业信息系统.现场总线(field bus)就是顺应这一形势发展起来的新技术.现场总线是应用在生产现场,在微机化测量控制设备之间实现双向串行多节点数字通信的系统,也被称为开放式、数字化、多点通信的底层控制网络.这在制造业、流程工业、交通、楼字等方面的自动化系统中具有广泛的应用前景.
   自20世纪80年代末以来,有几种现场总线技术已逐渐形成并在一些特定的应用领域显示了自己的优势. 这些现场总线包括:基金会现场总线(foundation field bus)、LonWorks现场总线、PROFIBUS现场总线、CAN(control area network)总线以及HART(highway addressable remote transducer)总线.作者介绍一种应用于车辆设备控制的现场总线技术- M 总线,重点研究M 总线系统控制部分的软件实现.

1 M 总线简介
    M 总线是一种具有高度集成化、容错性的现场总线技术,能够为多个使用普通单通道传输媒质的远程模块提供两种串行数据接口.这两路数据接口可以同时进行传输和监控,可以实现命令/响应串行通信、直接输入/输出控制等功能.内置的自我检测、关键逻辑冗余和协议鲁棒等特性使M 总线非常适用于那些需要可靠载入的应用.每一个处于中心位置的M 总线控制器可以控制64个远程模块.而每一个远程模块叉可以控制32个外部设备.数据传输率最大可以达到2.0 Mbit/s. 另外,M 总线还具有对于恶劣环境的抵御能力,芯片可以在一40~85 ℃之间正常工作.M 总线共有4种工作模式:

  1. PIM (processor intertace mode)模式
  2. RSM(remote switch mode)模式
  3. DIM (data input mode)模式
  4. DOM(data output mode)模式

   PIM 模式是M 总线作为总线控制器(bus controller)的工作模式.在这种模式下.M 总线可以通过数据、地址和控制线直接连接到16/32位微处理器、微控制器或状态机.它能够向处理器写入或从处理器读出16位或32位字长的数据.在PIM 模式下,M 总线控制着所有远程模块的初始化以及它们之间的通信.
   被设置为RSM 模式的M 总线通常被用于控制数字输出设备,每个RSM 模块最多可 控制32个外部设备,这些输出设备包括电源切换装置、数字控制装置、电机等. 芯片内的5位输出地址可寻址32个外部2位数据字,这些数据可以作为对总线控制器命令的响应从远程模块传回总线控制器.
   DIM 模式与RSM 模式有些类似.但它的5位地址总线可寻址的32个数据字是16位的. 这种模式可以直接从远程模拟/数字传感器、远程存储器或处理器中获取数据.另外.当远程模块被设为DOM模式时.DIM 模式的功能会被自动加入.
   DOM 模式用作从总线控制器向远程模块发布命令.可以接收命令的外部设备包括各种数模转换器、电源控制器、远程存储器或处理器.
   图1表示了M 总线控制器与远程模块的接口示例.
 

2 VxWorks系统及其开发环境
   Vxworks是美国WindRiver公司于1983年设计开发的一种嵌入式实时操作系统(RTOS),是目前世界上用户数量最大的实时操作系统.它以其良好的持续发展能力、高性能的内核以及友好的用户开发环境,在嵌入式实时操作系统领域占据了一席之地.VxWorks为程序员提供了高效的实时任务调度、中断管理,实时的系统资源 及实时的任务间通信. 应用程序员可以将尽可能多的精力放在应用程序本身,而不必再去关心系统资源的管理.它已被广泛应用在航空、航天、医疗等关键领域.
    作为一种功能强犬而且比较复杂的操作系统,仅仅依靠人工编程调试很难发挥它的功能.必须要有与之相适应的开发工具.Tornado就是为开发VxWorks应用系统提供的集成开发环境.在开发过程中,可以通过Tornado中包含的工程管理软件.将自己的代码与VxWorks的核心有效地组台起来. 图2表明了Tornado开发环境的基本模型.
 
图2 Tornado集成开发环境

    主机与目标机之间的通信是通过运行各自处理器上的代理进程来完成的.使主机上的开发工具和目标机的操作系统可以完全脱离相互连接的方式.另外,Tornado还提供了友好的可视化开发界面、交叉编译环境、源码级调试工具、目标机命令解释器和目标机状态监视器等多种应用工具,为应用软件开发提供了一个高效而可靠的平台.

3 M 总线控制系统的软件设计与实现
    在控制系统中,传感器的作用相当于人的五官,自动化的程度愈高,系统对传感器的依赖性越大.传感器对系统的功能起决定性作用.作为一种现场总线,M 总线的一个重要任务就是使各种传感器定期采集某些外部设备的数据.并将这些采集到的数据经过模/数转换输入到系统内部,供系统使用和处理.本系统中所要涉及的传感器包括:油量传感器、发动机水温传感器、火警传感器、发动机油温传感器、发动机油压力传感器、空气滤负压报警传感器
   作者以发动机油温传感器为例,阐述M 总线控制软件的设计思想.
   与通常软件设计方法相同,M 总线控制系统也需要一个主程序,它的主程序如下所示:
M_BusMain()
{
 ModuleInit();
 taskSpawn ("RecCommand", 200,0,
2000,(FUNCPTR)RecCommand,0,0,0,0,0,0,0,
0,0,0);
 taskSpawn ("ExeCommand",100,0,
2000,(FUNCPTR)ExeCommand,0,0,0,0,0,0,0,0,0,0);
}
   可以看到,主程序所要做的工作简单明了,除了对M 总线各个模块进行初始化之外,就是要利用系统所提供的taskSpawn函数产生两个任务.一个是接收命令,另一个是执行命令.在VxWorks系统中,任务(task)处于十分重要的地位.VxWorks系统中的任务,类似于其他系统中的进程(process).这些任务拥有自己的文本段,并且可以共享系统中的许多资源.vxworb 的实时内核为开发者提供了最基本的多任务环境,为应用程序控制和响应离散的实时事件创造了条件.这两个任务各自所要从事的工作如图3所示.
 
   
   第1个任务首先要从一个消息队列中取出外部传入的命令或传感器采集到的外部设备的数据.这个消息队列是M 总线内部与外部的接口,所有的外部命令都要通过这个消息队列才能传入M 总线的处理器内部.对当前油温信息数据的采集命令是由系统定期自动执行的,被采集到的数据会被M 总线封装成固定的命令字格式.任务1取出命令后,先要根据一定的数据格式对这条命令的优先级进行分析,并将命令按照分析后得到的优先级存放到一个内部的命令缓存链表中,等待被第2个任务提取、执行.任务1完成 上任务后将返回任务的开始部分.提取下一条待执行的命令.只要消息队列不为空,或者系统分配给它的时间片没有用完,这个任务就会不停地工作.
   第2个任务首先要从内部的命令缓存链表中取出当前优先级最高的一条命令,然后根据命令格式调用一个分析函数,以提取命令类型,随后调用相应的处理函数对命令进行处理,并将处理后得到的指令响应打包发往输出队列.对于传感器采集型的数据信息,输出队列中的结果会被发送到显控装置.如果油温传感器采集到的油温过高,显控装置上的油温报管灯就会不停的闪烁,提醒操作员采取相应措施;对于其他类型的指令,输出队列中的结果会被发送到相应的接收设备,并被使用. 同第1个任务一样,只要缓存链表不为空,或者分配给它的时间片没有用完,它就会不停地工作.
   命令缓存链表在整个系统中的地位非常重要.从操作系统的观点看,命令缓存列表属于临界资源,因此在对其进行插入或提取操作时,需要使用信号量这样的互斥同步机制, 保证对链表的正确操作.另外,由于通过消息队列传入的命令优先级各不相同,有些命令需要立即执行,而有些则可 在经过一段时间后再被执行.例如,与传感器数据字命令的优先级相比,系统会为继电器掉电、报警器失灵等故障处理提供更高的优先级.如果没有这个命令缓存链表,执行命令只要从输入的消息队列获得一条命令,就会立即将它投入运行,在等待命令响应的过程中,具有更高优先级的命令只能在消息队列中等待. 而通过这个命令缓存链表,接收任务可以先将接受到的命令按照优先级放入链表,执行任务时,每次从链表中取出的都是当前优先级最高的任务.
    另外需要指出的是,这里将执行任务的优先级设置得此接收任务的要高,taskSpawn()函数的第2个参数负责为所构造的任务分配优先级,这个数字越小,任务的优先级越大.这样设置是考虑到让执行任务尽可能多地执行所传入的命令,否则,有可能出现接收任务不停地接收命令,但是执行任务由于优先级不够高,每次只能执行少数命令后就被接收任务所强占的现象,使命令缓冲链表中所堆积的命令越来越多.系统效率低下.

4 结论
    通过M 总线实现对外部设备的控制,是车辆综合电子化的一个重要组成部分,采用以上设汁思想,经过在VxWorks系统上的编码、调试,成功地实现了对于车辆外部模拟/数字设备的控制功能,这一技术的实现对于全面实现车辆综合电子化具有重要意义.


分享到:
来顶一下
返回首页
返回首页
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表
栏目导航->单片机学习
  • 电子应用基础
  • 电源技术
  • 无线传输技术
  • 信号处理
  • PCB设计
  • EDA技术
  • 单片机学习
  • 电子工具设备
  • 技术文章
  • 精彩拆解欣赏
  • 推荐资讯
    使用普通运放的仪表放大器
    使用普通运放的仪表放
    3V与5V混合系统中逻辑器接口问题
    3V与5V混合系统中逻辑
    数字PID控制及其改进算法的应用
    数字PID控制及其改进
    恶劣环境下的高性价比AD信号处理数据采集系统
    恶劣环境下的高性价比
    栏目更新
    栏目热门