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

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

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于多线程人机交互式控制系统软件设计

基于多线程人机交互式控制系统软件设计   摘要:基于多线程和模块化的设计思想,以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循环+条件结构处理。生产者和消费者之间

文档评论(0)

189****7685 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档