基于LabView的水电厂检测水下机器人上位机控制软件设计

2018-09-13 07:40曾广移巩宇王文辉张先奎覃丹
无线互联科技 2018年11期
关键词:实时控制

曾广移 巩宇 王文辉 张先奎 覃丹

摘要:文章介绍了一种用LabVIEW编写的基于NI RT控制器的水下机器人上位机控制软件。这套软件用于实现控制系统的人机交互、数据记录与显示、上下位机之间的数据通信以及对水下机器人进行实时控制。软件采用LabVIEW经典的生产者一消费者模式,通过设置循环的优先级和执行时间,保证软件在读取状态数据的同时,可以实时完成对机器人主体的控制。

关键词:水下机器人;LabVIEW;上位机软件;实时控制

水电厂检测水下机器人主要用于静水条件下检测水电站大坝坝面(水下部分)、输水管道、进出水口闸门等水工建筑物和水工设备运行状况。由于水下环境较为复杂,其上位机控制软件除了需要完成对水下机器人水下运动的精确控制外,还需要其能在极短的时间内反馈系统状态信息,这就要求上位机控制软件能实时快速地向下位机发送控制命令,同时快速获取下位机的精确测量和反馈数据,同时实现控制信号的精确微调,各种应急状态的及时处理等[1]。

1 系统架构

本文所述水下机器人上位机控制软件,通过LabVIEW编写,在NI RT控制器上实时运行。软件完成手操盒控制命令读取,状态显示,运动控制,自主返航,故障监测,电源管理,设备控制,报警处理以及安全关机等功能。

水下机器人控制系统的硬件分为水面控制单元(上位机)和水下控制系统(下位机),二者都采用美国国家仪器(National Instruments,NI)的实时控制器,通过光纤以太网相连。上位机控制软件主要负责人机交互,数据存储显示,与外接设备(手操盒)通信,还有发送相关控制命令给下位机。

水面控制单元的控制器采用CompactDAQ系列的控制器。这一系列的控制器可以外接显示器、鼠标键盘,自身带有RS485串口,可以方便地与手持控制器(手操盒)等设备连接,体积小巧轻便,是一款理想的上位机。上位机接有鼠标键盘和显示器,并通过自身的RS485串口与手操盒连接。手操盒用于控制水下机器人的运动[2]。

2 上位机程序

一个LabVIEW程序(VI)包括前面板和程序框图。前面板是界面,没有实际逻辑功能;程序框图是程序逻辑和函数的组合,但是没有显示读取功能。利用VI的这个特点,将上位机程序分成两部分:界面程序和主程序。界面程序只是在前面板显示相关状态,进行设备的控制,但程序框图不执行任何逻辑,只是将界面控件的引用传递给主程序;主程序的程序框图执行上位机程序的具体逻辑,但是前面板不具有实际意义的显示功能,只是接收界面程序的控件引用。主程序实际上是界面程序的子程序。这样做可以将界面的设计和逻辑程序的设计分开,适合复杂的人机交互程序应用[3]。

2.1 界面程序流程

界面程序的程序框图由一个顺序结构实现(见图1)。这个顺序结构有3个帧:初始化、主程序和关闭。界面程序运行时,首先执行第一帧中的初始化子VI,将系统的各个状态变量、输出设为初始状态。第一帧执行完毕后,进入第二帧。在自检通过后,将各个控件的引用通过簇传递到主程序中,并调用执行主程序。当主程序执行完毕退出后,执行第三帧。第三帧中的关闭程序负责将输出设为安全状态,结束程序。

2.2 主程序架构

在主程序中采用程序架构(见图2)是基于命令的生产者一消费者模式,这种模式利用命令队列在两个并行循环之间传递命令。其中一个循环发送命令,另外一个循环读取并执行命令。

在命令发送循环中,有一个事件结构,同外层的while循环结构构成了一个循环事件结构。在这个循环事件结构中,0—4号事件是界面程序传递的控件引用引起的事件。5号事件是一个50 ms的超时事件。这个超时事件用于定时读取串口。这个串口读取事件循环用于读取与串口连接的设备的数据,如手操盒等。

在循环事件结构当中,每一个事件的发生,都会向命令队列中写入一个命令,然后命令执行循环读取并执行命令。命令的结构是一个簇,这个簇包括两个元素:上位机内部命令内容和上位机内部命令数据。上位机内部命令内容是一个枚举型变量,上位机内部命令数据是一个变体,可以存放任意类型的数据。

命令执行循环中有一个类似于C语言中switch语句的条件结构。读取命令时,首先通过簇的“按名称解除捆绑”VI将簇分解,根据上位机内部命令内容确定要执行的分支。在不同的分支中,有不同的上位機内部命令数据的数据类型,通过“变体至数据转换”VI将变体数据转换为相应类型的数据,并对数据进行操作。其中,在“control”分支中,将命令发送循环发送的串口数据通过基于网络的共享变量送到下位机(见图3)。

在上位机中,除了有两个主要的工作循环外,还有一个后台程序,用于读取、显示和存储下位机上传的各个状态数据。后台程序可以不需要人为干预,独自运行,优先级最低[4]。

3 控制系统通信

水下机器人的控制系统需要上下位机之间进行命令和数据通信,这种通信类型是一种消息型通信。消息型通信发生的概率比较小,通常用于触发事件(命令通信);同时,消息型通信也适用于发送容量固定的数据,比如状态数据(数据通信)。所以在本系统中系统通信采用这种类型的通信方式。系统通信是通过基于网络发布的共享变量(以下简称网络共享变量)完成的。网络共享变量常用于程序、系统或者硬件之间的数据命令通信。

系统的数据通信比较简单,优先级也比较低,只是上位机和下位机中各有一个循环用于接收和发送数据。数据采用固定格式,定时发送。命令通信不是定时通信,所以采用基于网络的命令触发的方式。可以通过生产者一消费者模式在并行循环中进行命令触发。基于网络的命令触发也是采用一种类似的方法,只不过其中的命令是通过网络共享变量完成,而不是通过队列完成。这就是基于网络的生产者一消费者模式。

基于网络的生产者一消费者模式与普通的生产者一消费者模式的区别是命令载体是可以在网中传输的网络共享变量。命令的发送者与接收者也不是一个程序中的两个并行循环,而是来自两个不同硬件设备的程序。在本系统中,命令的发送者是上位机,命令的执行者是下位机[5]。

4 结语

本文所述水下机器人上位机控制软件采用中等规模LabVIEW程序当中常用的生产者一消费者模式。这种软件模式经过实践检验,是一种简洁、高效的软件架构模式。在7K下机器人控制系统中,这种方式可以充分利用控制器实时性好的特点,将读取命令与执行命令分开,并且可以通过设置低优先级的循环来读取状态传感器的数据。经过实际应用的检验,证明这种软件模式可以应用在水下机器人实时控制系统软件中,在提高传感器数据读取速率的同时,可以实时有效地完成对机器人主体的功能控制。

[参考文献]

[1]郑发顺.遥控水下机器人系统在水库大坝水下检查中的应用[J].水利信息化,2014(4):45-49.

[2]李福年,陈慕雄,田维坤.ROV原理及在阿海水电站工程中的应用[J].云南水力发电,2013(3):119-121.

[3]曾广移,覃丹,巩宇,等.一种具备ROV/AUV双工模式的水电站检测水下机器人研究[J].科技广场,2017(9):74-78.

[4]软奇桢.我和LabVIEW:—个NI工程师的十年编程经验[M].北京:北京航空航天大学出版社,2012.

[5]蒋新松.水下机器人[M].沈阳:辽宁科学技术出版社,2000.

猜你喜欢
实时控制
青岛市公交循环工况下的增程式汽车Δ—SOC能量策略研究
智能仿真实时控制在露天矿运输网络中应用
探讨ERP系统环境下企业会计的实时控制
基于全集成自动化的能耗监控管理系统设计
空间机器人的计算力矩实时控制方法