基于多线程的人机交互式控制系统软件的设计

来源 :文化产业 | 被引量 : 0次 | 上传用户:fuzhi2009
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:基于多线程和模块化的设计思想,以abview为开发平台,实现了人机交互式控制系统软件的设计开发。本方案的设计难点是基于Labview开发平台的人机交互式控制软件的架构设计以及高实时性和可靠性的多线程协同工作模式的实现。本方案具有人机交互界面友好、开发周期短、稳定可靠、控制准确度高等特点,极大地提高了控制系统的开发效率和自动化程度。
  关键词:多线程;人机交互式控制;Labview;
  中图分类号:A06-029文献标识码:A文章编号:1674-3520(2014)-06-00259-021、前言
  人机交互式控制模式是指操作人员通过终端设备输入信息和操作命令,系统接到后立即处理,并通过终端设备显示处理结果,操作人员根据处理结果进一步输入信息和操作命令。系统与操作人员以人机对话的方式一问一答,直至最终获得理想的结果,这种方式与传统的非交互式处理相比,具有灵活、直观、便于控制的优点,在工业控制领域越来越广泛地采用。
  而传统的基于Keil平台状态机的开发模式和基于Vxworks平台多任务的开发模式都不能很好地满足人交互式控制系统软件的开发要求。Labview是一种基于图形化数据流的编程语言,为人机交互式控制软件的设计开发提供了崭新的平台。它使用图形语言(如各种图标、图形符号、连线等)以框图的形式编写程序,在提供强大功能的同时保证了系统的灵活性。
  2、软件结构设计
  2.1Labview多线程运行机制介绍
  Labview的运行机制是一种协作式的多线程并行运行机制,当同等优先级线程被执行时,时间片循环排序为每个线程分配了同等的处理器时间。在一个线程用完了可用的时间片,操作系统自动地停止处理该线程,开始执行队列中下一个线程。这种混合了抢占式和时间片轮转式的任务排序能够保证多任务的并行实时处理。
  基于Labview多线程并行执行,分割时间片占用CPU资源的运行机制,根据软件需求,将该软件分为主程序MAIN.VI和它所调用的各子程序组成。主程序采用面向数据流的结构化设计思路,分为若干个线程并行执行,每个线程由一个while循环构成。不同线程的优先级不同,通过在循环空闲时段调用“等待到下一个整数倍毫秒”函数和队列的使用来调节CPU资源占有线程时间和数据的读写速度,从而达到不同优先级线程并行执行的效果。
  2.2线程间通讯方式
  其他线程之间的数据交互通过队列、局部变量及VI服务器引用进行。通过局部变量进行数据交互多用于数据更新频率低,数据结构简单的控件的值属性改变,主要包括CAN总线初始化标志位、流程参数(标量)等;为了避免内存的消耗和数据竞争,保证数据不丢失,指令响应的及时准确,采用队列来进行不同线程之间的数据传递;而人机交互界面上控件的动画实时显示则采用VI服务器引用来与运动控制子VI进行信息交互。
  3、CAN协议层的实现
  CAN总线协议层基于已在各型号中广泛使用的双通道切换通信原理,基于Labview语言,总线接收采用查询方式实现,开启独立2个线程,由当前工作通道来决定哪个线程处于工作状态,而备用通道工作线程处于空闲状态。当数据接收高峰时段,相邻两次接收时间间隔小于1ms,当数据接收空闲时段,相邻两次查询延时设置为10ms,让出CPU资源,保证了其他线程执行的实时性。
  CAN总线发送采用FIFO队列模式,当不同的线程在相临时间间隔内均需发送数据时,仅需将所要发送的数据放入发送队列。而在数据发送线程中,以查询方式读取队列缓冲区内的数据,当发送函数返回值为1时,代表本次发送成功,此时才从队列中取出下一个待发送数据;若发送失败,则通过备用通道向总线各节点发送切换帧,告之各节点切换CAN工作通道,并将未发送成功数据重新发送。当总线切换3次均为发送成功,则在人机交互界面弹出报警对话框,告之操作者总线通讯失败。
  如应用局部变量实现线程间数据交互,如果查询速度大于局部变量的速度,则会多次重复读取同一数据;如果查询速度小于局部变量的改变速度,则会导致数据遗漏。
  4、过程控制的实现
  控制功能的实现是本设计的重点和难点。怎样实现控制流程执行时在各个状态中灵活切换并能及时有效响应“停止”按键,不出现死循环或响应不及时现象?通过大量实验,最终确定使用“生产者——消费者”+“状态机”的设计模式来实现人机指令触发响应和控制状态的灵活切换。
  4.1生产者——消费者设计
  “生产者——消费者”设计模式是事件处理器和队列消息处理器相结合构成的复合设计模式。生产者是指令的提供方,产生指令,并将指令放入队列,由事件结构+while循环组成;消费者是指令的消费方,依次从队列中取出指令,由while循环+条件结构处理。生产者和消费者之间存在一个指令缓冲区,通过队列来实现。例如当“推进”指令按下,“推进”指令入队列,在消费者循环中指令出队列并执行相应流程,当推进过程中“停止”按下,则清空队列,并执行“停止”入队列最前端,这样在消费者循环中就能及时切换并执行停止流程。
  具体程序结构框图如图1所示。
  5.1状态机设计
  在消费者循环中,采用“状态机”的设计模式来实现某个事件中各个状态的切换,主要采用“while循环+条件分支”结构,并利用移位寄存器来传递状态。在程序执行完任一状态时,对状态变量赋值并存储于移位寄存器中,实现将下一个状态传递到下一次循环判断中。下一次执行while循环进行状态判断时,通过条件结构对移位寄存器中存储的状态进行判断,来执行相应的状态。这样,就实现了动态实时地改变程序执行顺序,以适应多种控制情况的目的。具体结构图如图2所示。
  当控制过程复杂时,在消费者循环中需要运行多层状态机,即每一个状态中又包含若干个子状态。这样,在程序实现时就需要调用多层条件结构,每一层条件结构都需要有对应的移位寄存器用来判断本次循环条件执行的分支。如图3所示。这样,就造成了程序层次过多,可读性维护性差的弊端。因此,我们可分析将每一层状态机都封装为一个函数功能模块,而此VI的输入输出参数设为本次执行的状态和下一次要执行的状态。
  以对中控制为例,对中的控制过程复杂,存在多个控制状态,状态切换图如图4所示。如对中控制过程分为“左右粗对中”、“上下粗对中”、“左右平行”、“左右对中”、“上下平行”、“上下对中”6个顺序执行阶段,每个控制阶段中多次对油缸进行控制,油缸有上下左右四个运动方向。油缸控制存在11种状态切换,所以将油缸控制编写为controlMotor.vi模块,此VI的输入输出参数为本次油缸执行状态、和下次油缸执行状态。每次调用controlMotor.vi时只执行一种状态,通过外层循环的移位寄存器改变状态值来实现状态切换,这样简化了程序结构,也避免了与主VI无法实时进行数据交互的问题。程序框图如图5所示。
  
  10、仿真及桌面联调
  各项控制功能调试:水平装填车电控系统在实际大型试验应用中,能够正确执行自动对中、抓弹、放弹、装填、退弹等控制功能,能够实时响应停止操作,并能够正确恢复继续执行,各故障状态能够及时准确报警。
  CAN总线通信功能及性能:总线上各节点给控制单元发送数据,当总线负载率为100%时,CAN数据接收线程仍能够正常接收数据,未出现丢数现象;水平装填车电控系统信息传输的正确性、协调性,即水平装填车电控系统内部各设备间软件接口正确,所有指令、数据收发正确。在运行期间CPU为43%内存使用为256M,远远低于系统总内存。在执行控制流程或用户对人机交互界面进行操作时,数据处理能够正常收发,未出现丢数死机等异常现象。
  11、程序设计时应注意的问题
  11.1多线程的同步执行
  多线程的同步执行,应合理分配CPU资源,优先级高的线程。如总线数据接收线程,应避免使用延时函数,以保证数据接收的及时性。总线数据存储线程应根据数据接收的最小周期来设定循环的周期,做到不占用过多的CPU资源,保证其他线程的执行,又不会出现数据存储遗漏。
  11.2内存泄漏的避免
  程序中打开了某些资源(文件、引用等),在程序退出之前,不论是否有异常出现,都一定要把资源关闭。若打开的资源不关闭,则一直驻留在内存中。但程序关闭后再无法访问这些资源,这就造成了内存泄漏。不论在过程中是否有错,打开的文件都应当在程序结束前被关闭。
  11.3状态机的使用
  状态机的应用重点是移位寄存器的灵活使用,移位寄存器会动态地将状态变量存在一个内置的缓冲区中,不能通过局部变量或全局变量在其他线程中赋值来更改状态执行步骤。
  11.4文件存储过大问题
  用TDMS文件将总线数据存储在硬盘中,存储数据线程的执行周期如果过小,会造成存储数据文件过大,存储数据索引文件过大的问题,会大大影响硬盘存储数据效率。所以,存储数据线程的周期要根据数据产生周期而定,当数据以1帧/ms的速率进行入队列操作时,数据存储的周期要大于等于1s。
  12结束语
  本文的创新点在于多线程协同工作的设计思想,以及处理人机交互式控制的编程框架。以Labview2011为集成开发环境,以水平装填车控制系统软件为例,对多功能控制系统进行了设计。实验表明,各功能模块运行良好,对外界触发响应及时,线程间数据交互准确无误。程序中使用动态设计,程序方便修改,具有较大的灵活性。很好地保证了系统的可视化操作和应用实施的通用性。
  
  参考文献:
  [1]Labview宝典/陈树学,刘萱编著.—北京:电子工业出版社,2011.3
  [2]我和Labview:一个NI工程师的十年编程经验/阮奇桢编著.—北京:北京航空航天大学出版社,2009.9
其他文献
摘要:工程造价是建设单位和施工企业管理的重要组成部分,也是企业全方位管理的最重要最基本的环节,其最终目标是要减少浪费、降低成本、提高投资效益水平,即通过研究企业内外部环境、社会经济技术发展水平、竞争对手现状,从而通过改善企业内部管理,用较低的投入,获得更多的产出效益。本文从建筑工程的决策、设计、招投标、施工、竣工验收等各个阶段的工程造价控制存在的问题入手,研究解决措施,以期将工程造价控制在合理水平
期刊
摘要:本文对酒店经营中的用工紧张问题从个人、企业、社会三方面进行分析,从人力资源管理的角度对酒店招人难,留人难的情况提出相关对策。  关键词:酒店;人力资源;管理;  中图分类号:F241.4文献标识码:A文章编号:1674-3520(2014)-06-00233-01酒店是旅游业的重要支柱。改革开放以来,随着酒店行业的发展壮大,酒店对经济发展的贡献有目共睹。然而,酒店在经历鼎盛时期后,如今面临着
期刊
摘要:京都议定书规定:有关工业化国家均要限制6种温室气体排放量,在2008年至2012年期间总排放量要在1990年水平基础上降低5.2%,同时也确定了实现发达国家与发展中国家在全球气候保护方面“共同但有区别的责任”的原则和基本方法。  关键词:清洁发展;农村水电;战略选择;  中图分类号:BH8文献标识码:A文章编号:1674-3520(2014)-06-00249-01一、实施清洁发展机制的意义
期刊
摘要:近年来,随着我国经济的快速发展,社会对交通的需求越来越大,公路作为我国交通的重要组成部分,它在推动经济发展、缓解交通压力方面起着重要的作用,所以公路建设蓬勃发展起来。在公路建设过程中,必须要做好财务管理方面的工作,进一步提高公路建设的经济效应。本文从公路建设财务管理角度出发,分析了其目标及实现目标的具体策略。  关键词:财务管理;目标;公路建设;策略;  中图分类号:F230文献标识码:A文
期刊
摘要:水电建设项目投资的有效控制是项目建设的重要内容,也是项目建设的关键,在项目决策阶段要运用蒙特卡罗模拟等科学方法确定投资控制目标,全过程建设以设计阶段为重点。  关键词:水电工程;投资控制;项目建设;  中图分类号:F426.91文献标识码:A文章编号:1674-3520(2014)-06-00250-02一、决策阶段合理预测项目投资风险,确定投资控制目标  投资控制是监视项目建设过程中投资各
期刊
摘要:离退休人员管理是维护改革、发展、稳定大局的重要因素,其稳定性和和谐性直接影响着和谐企业、和谐社会的建设成败。实现中华民族伟大复兴的中国梦和全面建成小康社会的宏伟目标,离不开和谐企业、和谐社会的顺利建设。做好离退休人员管理工作是建设和谐企业的重要抓手,对于维护社会稳定、构建社会主义和谐社会具有重要意义。   关键词:企业;退休管理;群众;和谐;  中图分类号:F279.23文献标识码:A文章编
期刊
摘要:企业的终极目标是利润,利润是企业生存的本钱。在微利时代和竞争空间激烈的今天,降低成本、争取低成本盈利,已成为施工企业不争的事实。如何加强项目成本管理、提高经济效益水平,已成为项目面临的一个十分重要的课题。  关键词:工程项目;成本管理;成本控制;  中图分类号:TU723.3文献标识码:A文章编号:1674-3520(2014)-06-00243-02一、绪论  (一)工程项目成本管理  工
期刊
摘要:目前,消防工程咨询业面临的竞争越来越激烈,如何结合消防工程项目管理的基本知识,对国内消防工程项目管理模式的优化作出初步探讨,是每个消防工程项目管理者都必须思考的问题。本文提出管理优化模式的主要目的是加大设计单位对项目的介入深度,充分发挥设计单位作为智力密集型企业的优势;加宽建设监理单位的项目服务范围,与国际工程咨询的运行惯例接轨,以增强国内消防工程咨询在国际市场的竞争能力。  关键词:消防工
期刊
摘要:我国的小(一)、(二)型水库为数众多,据有关统计资料表明大约有87649座。它们分布的区域广,坝型多样。这些水库主要是为农业生产提供灌溉水源,也为人民生活用水和工业用水提供水源,同时为防御洪水灾害也发挥了一定重要作用,近年来越来越受到养殖业的青睐,利用水库养殖业已成了一种热门行业。然而,由于各种原因,许多水库都不同程度存在一些病险问题,特别是上世纪六七十年代文革期间建成的水库基础设施不完善,
期刊
摘要:在高层建筑结构中,有一种较为常见的简体结构,主要是指由竖向筒体为主组成对竖向及水平作用进行承受的一种建筑结构。而在简体建筑结构中,主要包含两种结构内容:筒结构以及框架一核心筒结构。文章主要是以一高层建筑工程为例,对其框架—核心筒结构设计进行了阐述分析,对其中的重点进行了着重说明,为今后的工程设计提供参考帮助。  关键词:高层建筑;框架—核心筒结构;分析;  中图分类号:TU355文献标识码:
期刊