煤矿巡检机器人控制系统设计

2022-06-22 02:14蔡治华周东旭赵明辉
工矿自动化 2022年5期
关键词:缓冲区线程队列

蔡治华, 周东旭, 赵明辉

(1.煤炭科学研究总院,北京 100013;2.天津城建大学 控制与机械工程学院,天津 300384;3.中煤科工集团上海有限公司,上海 200030;4.同济大学 电子与信息工程学院,上海 201804)

0 引言

带式输送机是煤炭开采中重要的运输设备,其可靠性对煤炭高效开采具有重要意义[1-2]。传统的带式输送机状态监测一般采用人工巡检或传感器等方法,人工巡检增加了人员危险,传感器维护成本高,均难以实现可靠的状态监测[3]。随着机器人技术发展,将巡检机器人应用于带式输送机状态监测,成为煤矿自动化监测的研究趋势[4]。

巡检机器人属于复杂的机电一体化产品[5],其功能越强大,所携带的各类电子设备越多,控制系统越复杂。煤矿巡检机器人控制系统需要实现环境监测数据采集、无线网络数据通信、传感器数据处理、巡检机器人运动控制等关键功能[6],其可靠性决定了巡检机器人运行状态,是保证巡检机器人稳定运行的关键[7]。文献[8]采用S7−200 PLC作为煤矿巡检机器人控制系统核心控制器,通过其内部裸机程序,可将巡检机器人采集的数据编码压缩后以无线通信方式传输至PLC控制箱,在恶劣环境中能保持较好的控制稳定性;但裸机程序采用在主函数中轮询的方式对各个线程任务进行逐个处理[9],通过设置相应的中断响应实现线程任务的并行处理,这种方式缺乏可移植性,并行性较差,且数据压缩解压影响了控制的实时性,增加了数据丢失的可能。文献[10]采用DSP微控制器作为煤矿巡检机器人控制器,其内部裸机程序实现了机器人通过WiFi与地面监控服务器进行指令和数据的实时通信,控制程序运算速度快,但数据传输易受井下环境磁场影响,造成数据丢失和传输不稳定。

近年来,具有高实时性、高可移植性、高可拓展性、高稳定性等优点的实时操作系统受到越来越多的关注,通过在微控制器内部运行一个微型的实时操作系统来实现硬件资源合理化调用[11-12]。综合考虑煤矿巡检机器人对系统整体稳定性、数据采集实时性、数据传输准确性等因素的要求,本文将实时操作系统引入煤矿巡检机器人控制中,设计了基于QT和RT−Thread的煤矿巡检机器人控制系统,可解决传统巡检机器人控制系统可靠性低、实时性差等问题。

1 系统总体结构

煤矿巡检机器人控制系统按照功能可划分为上位机−人机交互控制台和下位机−微控制器2个部分,如图1所示。上位机是巡检机器人的指令与数据处理中枢:可为用户提供人机交互界面,显示下位机发送的传感器数据;接收用户发出的指令,完成对巡检机器人的远程控制;对下位机发送的数据进行处理,并及时反馈处理后的数据,针对异常数据进行报警。下位机是巡检机器人控制系统的核心,用于收集传感器数据,搭载电池模块与报警指示灯,通过WiFi网络与上位机进行无线通信。

图1 煤矿巡检机器人控制系统总体结构Fig.1 General structure of mine inspection robot control system

2 系统硬件

煤矿巡检机器人控制系统下位机采用STM32F103VET6单片机开发,硬件结构如图2所示。矿用传感器和电池模块通过RS485总线连接到单片机;超声波雷达采用串口通信方式与单片机进行数据传输;报警指示灯通过IIC接口与单片机相连接;以太网通信模块通过SPI接口与单片机进行全双工通信。

图2 煤矿巡检机器人控制系统下位机硬件结构Fig.2 Hardware structure of lower computer of coal mine inspection robot control system

3 系统软件

3.1 上位机

QT是一个基于C++语言的图形化界面类库,可通过调用内置的C++类实现所需功能。QT具有良好的可移植性,方便跨平台操作。

调用Tab Widget控件开发巡检机器人控制系统设置界面,用于供用户设置巡检机器人各类参数与环境监测数据正常范围值;调用串口控制类QserialPort开发人机交互界面,用于实现用户对巡检机器人启动、停止及运行速度的控制;调用Table Widget表格控件开发环境监测数据与报警记录显示界面,当出现异常情况时,记录出现异常情况的时间与传感器类型;调用摄像头与热成像仪的软件开发工具包,引用工具包中的SPI函数控制摄像头的旋转、拍摄、录像等功能。煤矿巡检机器人控制系统上位机界面如图3所示。

图3 煤矿巡检机器人控制系统上位机界面Fig.3 Interface of upper computer of coal mine inspection robot control system

3.2 下位机

RT−Thread是国产开源实时操作系统,其支持多任务同时运行,通过时间片轮转的方式实现各个任务并行操作[13-15],以保证系统实时性。RT−Thread内部包括信号量、互斥量、进程事件、邮箱等内核对象,可方便地进行不同线程之间的协同与通信,且具有高度的可裁剪性,能够运行于硬件资源相对较小的微控制器中。本文所采用的经过裁剪与开发后的RT−Thread 仅需要 85 kB 的单片机 Flash 空间及 12 kB的RAM内存空间,而STM32F103VET6单片机具有512 kB 的Flash及64 kB 的RAM,完全满足RT−Thread运行需求。

基于RT−Thread设计了煤矿巡检机器人自动巡检流程,如图4所示。巡检机器人在开机之后对传感器数据采集、以太网通信、雷达信号处理、指示灯报警等线程任务进行初始化操作;在未接收到上位机下达的指令时,巡检机器人处于休眠状态;当接收到巡检指令时,巡检机器人启动各线程任务与运动子程序并开始巡检作业;巡检机器人朝着巡检指令的设定位置行进,在行进过程中若感知到周围出现异常参数,上传异常参数与实时位置,随后根据指令选择继续巡检或停止巡检,若继续巡检,则巡检至设定位置,上传环境参数后结束巡检。

图4 煤矿巡检机器人自动巡检流程Fig.4 Automatic inspection process of coal mine inspection robot

在巡检机器人自动巡检过程中,需要实现传感器数据采集、以太网通信、雷达信号处理、指示灯报警4个重要线程任务的并行。每个线程都须通过RT−Thread的线程调度器执行严格的时间片,一旦执行时间超过时间片大小,则由线程调度器在单片机底层寄存器强行切换线程,以保证4个线程的并行性。线程任务启动流程如图5所示。首先调用实时操作系统启动函数;其次调用STM32F103VET6底层基本硬件初始化函数,完成系统定时器设置、串口等底层外设接口初始化;然后对系统的内核对象(包括定时器、线程调度器等)进行初始化;最后创建多线程任务并启动线程调度器,线程调度器按照时间片轮转的方式与线程优先级来调度4个线程任务,实现线程任务之间宏观上的并行。

图5 线程任务启动流程Fig.5 Thread task start process

3.3 上位机与下位机之间通信

由于无线通信传输会受井下磁场环境影响,上位机与下位机出现运行时钟不同步及运行速度差异,导致两者之间存在一定的数据延迟,并且在长时间数据传输过程中,易产生数据包丢失情况,影响控制系统可靠性。

为解决上述问题,在RT−Thread实时操作系统中设计环形队列数据缓冲区,如图6所示,以保证大量按照时间顺序采集的传感器数据无丢失地发送至上位机。环形队列是一种首尾相接的圆环形数据结构,遵循先进先出的原则。传感器数据采集线程所采集的各个传感器数据按照时间顺序放入环形队列中,下一个数据将要放入的位置称为环形队列头部,最先放入数据的位置称为环形队列尾部。传感器数据采集线程负责不断地将采集的数据打包成一个结构体数据块,从队列头部开始放入环形队列中,而以太网通信线程负责从队列尾部取出结构体数据块,并通过网络发送至上位机。

图6 环形队列数据缓冲区结构Fig.6 Circular queue data buffer structure

在实际工程应用中,仅在上下位机数据传输过程中应用环形队列数据缓冲区,会导致传感器数据采集线程与以太网通信线程之间缺少协同配合。环形队列数据缓冲区模型如图7所示,在RT−Thread实时操作系统中创建一个初始值为1的信号量,传感器数据采集线程与以太网通信线程会同时抢占该信号量,一旦信号量被一方线程获取,其值会变为0,此时共享区域将被锁定,另一方线程无法再获取信号量,产生资源互斥。传感器数据采集线程与以太网通信线程之间共享了1个环形队列数据缓冲区,该区域实际上属于实时操作系统中的临界区域,在同一时刻只能被一方线程访问,否则结构体数据块中的数据可能发生混乱,影响控制系统的可靠性。

图7 环形队列数据缓冲区模型Fig.7 Circular queue data buffer model

本文通过在RT−Thread实时操作系统中使用内核对象信号量来解决线程间的同步问题。在实时操作系统中创建一个初始值为环形队列数据缓冲区可放入数据大小的信号量(称为缓冲区空信号量),同时创建另一个初始值为0的信号量(称为缓冲区满信号量),从而建立环形队列数据缓冲区优化模型,如图8所示。传感器数据采集线程不停获取缓冲区空信号量,放入打包好的结构体数据块后释放缓冲区满信号量;以太网通信线程不停获取缓冲区满信号量,将结构体数据块发送至上位机后释放缓冲区空信号量。该机制保证了共享资源不会互斥,传感器数据采集线程与以太网通信线程相辅相成,形成一个动态的过程,传感器采集数据与发送数据之间的时间差通过环形队列数据缓冲区来消除,保证数据无丢失、稳定地传输至上位机。

图8 环形队列数据缓冲区优化模型Fig.8 Circular queue buffer optimization model

4 系统测试

为测试煤矿巡检机器人控制系统的实时性、可靠性,搭建巡检机器人实验平台,包括长20 m的轨道、轨道支架、钢丝绳牵引装置、机器人本体等,如图9所示。将本文基于QT和RT−Thread设计的巡检机器人控制系统作为实验组,传统的PLC内部编写裸机程序的巡检机器人控制系统作为对照组。

图9 巡检机器人实验平台Fig.9 Inspection robot experimental platform

4.1 控制系统线程切换延迟时间测试

利用互斥锁和信号量实现控制系统中传感器数据采集线程与以太网通信线程的不停切换(为减小计时误差,选用4个线程中优先级最高的2个线程),在一个线程结束后与另一个线程唤醒前分别计时,利用2次计时的差值来计算线程切换延迟时间。经过1 000次重复测试,结果如图10所示。可看出传统控制系统的线程切换延迟时间最大值为198 µs,最小值为 119 µs,平均值为 158 µs,方差为550;本文控制系统的线程切换延迟时间最大值为1.48 µs,最小值为 0.7 µs,平均值为 1.08 µs,方差为0.05;本文控制系统的线程切换延迟时间平均值与方差远小于传统控制系统,表明本文控制系统具有更高的实时性,且线程切换过程稳定性更好。

图10 线程切换延迟时间测试结果Fig.10 Thread switching delay time test results

4.2 控制系统传感器数据传输测试

通过控制系统下位机串口发送字节数与上位机网口接收字节数来测试数据传输可靠性。设置数据传输周期分别为 100,500 ms,经过 5 min 运行,测试结果见表1。可看出本文控制系统在数据传输周期为500 ms时的数据丢失率为0.5%,在数据传输周期为100 ms时的数据丢失率为0.06%;传统控制系统在数据传输周期为500,100 ms时的数据丢失率均为2.4%;本文控制系统的数据丢失率远小于传统控制系统,在大量数据快速传输时,数据传输更可靠。

表1 数据传输测试结果Table 1 Data transmission test results

5 结论

(1) 采用QT软件设计了煤矿巡检机器人控制系统上位机,可处理下位机发送的数据,实现参数设置、巡检机器人启停运动控制、传感器监测数据显示、云台摄像头与热成像仪显示记录等功能,增强了人机交互性能,提高了控制系统操作性。

(2) 利用 RT−Thread 实时操作系统设计了煤矿巡检机器人控制系统下位机,通过线程调度器以时间片轮转方式调度多线程任务,实现了巡检机器人自动巡检过程中多线程任务的宏观并行,提高了控制系统实时性。

(3) 设计了环形队列数据缓冲区并进行优化,解决了巡检机器人下位机至上位机数据传输过程中数据大量丢失的问题。

(4) 基于 QT 和 RT−Thread 设计的煤矿巡检机器人控制系统与传统的PLC内部编写裸机程序的巡检机器人控制系统相比,具有更高的实时性和可靠性。

猜你喜欢
缓冲区线程队列
实时操作系统mbedOS 互斥量调度机制剖析
队列队形体育教案
队列里的小秘密
基于多队列切换的SDN拥塞控制*
基于国产化环境的线程池模型研究与实现
串行连续生产线的可用度与缓冲库存控制研究*
在队列里
基于ARC的闪存数据库缓冲区算法①
初涉缓冲区
计算机中的多线程问题