VxWorks嵌入式系统下视频监控系统通信的研究
扫描二维码
随时随地手机看文章
摘要:通过嵌入式实时操作系统(VxWorks) ,实现了视频监控系统的解决方案. 研究了VxWorks 系统下实现设备和数据通信的关键技术和相应机制,并采用有限状态机( FSM) 解决了串行数据通信的帧同步. 文中重点分析了采用计数器信号量解决多进程同步通信,即生产者—消费者问题. 本文的方案可以推广到串行设备以外的其它通信机制.
关键词:通信技术;计数器信号量;有限状态机(FSM) ;嵌入式实时操作系统(VxWorks)
现代的各种视频监控系统是高度复杂的集成系统,这些系统的内部外部所产生的数据远远超过了操作员的处理能力. 所以,对各种数据进行准确及时的传送和处理,是视频监控系统的一个突出的要求. 它不仅提供系统的实时监控和检测诊断,为数据的正确传输和处理提供了重要的保障,而且通过实时的监控平台,可以及时准确地显示、处理各种信息,回馈到监视器上. 它可以最大限度的满足系统对数据处理连通性的要求. 这种数据处理的连通性提供了有效的数据获得和传送结构.
本文所论述的视频监控系统应用于飞机发动机的各项参数显示与记录;同时对于各项异常情况,在显示报警的同时应能够在微秒级时间内作出自动响应. 它取代了原有的机械仪表而使整机的智能化有了很大的提高. 由于飞行系统的特殊性,它对整个系统的实时性和稳定性都有很大的提高.
1 监控系统通信模块的设计
1. 1 VxWorks 嵌入式操作系统简介
本文所涉及的系统对实时性要求较高,监控信息必须在微秒级时间内作出反应;而且要求支持抢占式任务调度,所以需采用性能良好的嵌入式操作系统VxWorks.VxWorks 操作系统是美国WindRiver 公司开发的一种嵌入式实时操作系统. VxWorks拥有高性能的内核及友好的用户开发环境,在高可靠性、高性能的嵌入式应用领域中占统治地位,广泛地应用在通信、军事、航空、航天等高端技术及实时性、扩展性要求极高的领域中.
1. 2 视频监控系统的功能
本系统的主要功能包括:飞行系统发动机寿命周期的分析,分析判断未决的故障和进行预防性的维护,实时监控及出错诊断.所有这些功能都和所获得数据的正确性息息相关的. 每时每刻,系统都在处理着大量数据,如果数据的传输发生错误,系统就会判断错误,从而导致操作的失误. 所以,视频监控系统的设备通信和数据通信就显得尤其重要. 视频监控系统组成图见图1.
图1 视频监控系统组成图
本设计中,数据源与接收设备之间使用ARINC429 (航空数据总线) 串行接口进行通信. 全双工数据接口为主通道,单工数据接口为备份通道,传输频率为12 次/s. 正常情况下,信号源通过主通道向接收设备发送一个数据帧(每帧80B) ,接收设备在接收到这个数据帧后,向信号源发送响应数据帧. 当信号源连续8 次接收不到接收设备发送的响应后,认为主通道发生故障,此后通过备份通道向接收设备发送数据.
1. 3 通信模块的硬件实现
系统的数据处理模块采用嵌入式微处理器和嵌入式操作系统VxWorks. 基于嵌入式设备和技术的视频监控系统的优点表现在:由于系统的硬件是一个嵌入式处理器和操作系统相结合的功能专一、设计专门的独立的设备,不易受其它软硬件变化的影响,因此,性能上更稳定,便于操作,易于实现系统的模块化.
系统的数据传输采用航空电子专用的串行通信设备ARINC429航空数据总线,它由两条互相扭绕的双绞线组成,数据的传送和接收端口是相互独立的. ARINC429航空数据总线的数据传送速度为12. 5kb/ s 或者100kb/ s ,同时它可以进行数据传送的校验和监控. ARINC429 标准是专用的航空电子设备和系统间通信的规范,它的优点是数据传送速度快、传送和接收独立、传送出错概率小,可以进行数据的传送校验和监控.
在系统中,利用RS-232 串口和以太网与计算机相连,组成可以交叉编译的开发环境,支持C 语言,而且可以对嵌入式系统进行各种剪裁、完善、在线调试,从而使系统功能不断升级,增加操作用户的需求. 网上还有与之相关的邮件组,开发人员通过它来沟通信息,彼此帮助. 这使得开发人员可以专心于应用部分的系统开发,缩短了系统开发周期.
1. 4 通信模块的软件实现
(1) 数据读写模块
VxWorks 的I/O系统为各种设备提供的统一的设备独立接口,使用时只需调用write ( ) 、read ( )等函数就可以进行数据操作,而不用了解设备或驱动程序的细节从而屏蔽了底层硬件的多样性,尽量做到应用程序与底层硬件无关,以便于程序的复用.图2 为I/ O 设备、驱动程序和设备操作之间的关系.
图2 I/ O设备、驱动程序和设备操作之间的关系
(2) 用有限状态机( FSM) 实现串行数据通信的帧同步利用FSM可实现串行数据通信的帧同步. 令系统初值为空闲状态,每次不断检测帧同步字. 当检测到帧同步字时状态才进行翻转,否则返回空闲状态. 直到所有同步字都被检测到,才进入数据接收处理状态. 最后还要对整帧数据进行校验和处理,判断整个数据帧的接收是否正确. 图3为系统状态转换图.
图3 用状态机实现帧同步的状态转换图
利用FSM处理异步通信同步的好处是:当通信协议发生变化时,可以很容易地对软件进行移植工作. 因为在数据链路层,所有帧格式都是由帧头+ 数据+ 校验字的方式所组成,只需要改变同步字和校验方式就可以完成数据链路层的数据接收和应答.
(3) 用生产者—消费者问题实现数据同步通信数据同步通信过程实际上等同于生产者—消费者问题( Producer-Consumer Problem) . 生产者—消费者问题是一个著名的进程同步问题,它描述的是: 用一群生产者进程生产消息,并用此消息提供给消费者进程消费. 为使生产者进程和消费者进程能并发执行,在它们之间设置一个具有N 个缓冲区的缓冲池,生产者进程可将它所生产的消息投入一个缓冲区中,消费者进程可从一个缓冲区中取得一个消息消费. 尽管所有的生产者进程和消费者进程都是以异步方式进行,但它们之间必须保持同步,即不允许消费者进程到一个空缓冲区中去取消息,也不允许生产者进程到一个已装有消息但该消息未被取走的缓冲区中投放新消息.
采用共享数据的方法简化了数据交换,但在多进程数据通信过程中却可能发生错误,使数据内容被破坏. 为解决问题,可利用信号量的互斥性加以同步保护,获得对缓冲区(数据) 的独占访问,见图4.
图4 使用信号量的缓冲区管理图
图4 中,假设缓冲池包含10 个缓冲区,一个任务通过调用BufReq ( ) 可以从缓冲区管理器中获得一个缓冲区,用BufRel ( ) 释放该缓冲区到缓冲区管理器中. 缓冲区管理器共有10 个信号量,当所有的信号量都被使用时,再申请缓冲区的任务将被挂起,直到有信号量可以使用为止. 当一个带有缓冲区的任务完成后,它将调用BufRel ( ) 把缓冲区还给缓冲区管理器.
本文采用计数器信号量来管理缓冲区,与其它信号量相比,计数器信号量的特点在于,它可以保持对信号量释放次数的追踪. 信号量每次释放,计数器加1 ,每次获取,计数器减1. 当计数器为0 时,试图获取该信号量的任务被阻塞. 在中断服务程序中,可以将数据写入缓冲区,然后再释放信号量. 由于它保持对信号量释放次数的追踪功能,如果任务暂时无法读取数据,数据也不会被丢弃.
2 结论
本文所研究的视频监控系统,是嵌入式技术的典型. 嵌入式系统因其体积小、指令精简、实时性处理能力强、处理速度快、稳定性好、可扩展性好的特点,在专业性、实时性较强的领域中,发挥着重要的作用. 本文采用硬件抽象层分层设计的思想,实现了应用程序与数据链路层设备的无关性,最大限度地实现了软件的复用性. 文中采用FSM 和计数器信号量实现了异步通信的帧同步,这种方法不仅适用于串行通信,而且对于其它通信协议的实现都具有借鉴作用.