基于RT-thread的机床物联网系统设计与实现*

2014-07-18 11:56苏宪利郑一麟
组合机床与自动化加工技术 2014年6期
关键词:指针线程中断

苏宪利,郑一麟

(1.渤海大学 信息科学与技术学院,辽宁 锦州 121013;2.中国科学院 沈阳计算技术研究所,沈阳110068)

基于RT-thread的机床物联网系统设计与实现*

苏宪利1,郑一麟2

(1.渤海大学 信息科学与技术学院,辽宁 锦州 121013;2.中国科学院 沈阳计算技术研究所,沈阳110068)

针对机床物联网系统中多紧急度数据调度的要求和数据通信稳定性的要求,在机床物联网系统中采用了RT-thread实时操作系统,通过对mailbox进程通信机制的改进,满足了数据优先级调度的需求,提高了系统对紧急数据优先处理的能力。通过采用socket通信技术,满足了网络重负载通信的要求,在硬件上采用了ARM Cortex-M3处理芯片和W5100网络通信芯片。通过实验仿真,证明了本系统大幅度提高了机床数据处理的实时性和可调度性。

数据调度;邮箱模型;socket

0 引言

机床物联网系统是近年来发展起来的物联网技术[1]在机床领域的综合应用,通过将物联网设备、技术应用于机床设备,实现对机床数据的采集和传输。机床物联网系统是对传统的机床信息采集技术的有益补充[2],对于不能直接通过机床控制系统自身获取的机床运行状态参数和环境参数,可以由机床物联网系统进行获取,通过网络传送给诊断系统或CNC系统,对诊断系统和CNC系统起到数据支持的作用。

根据机床数据获取的实际需求,在机床物联网系统中数据采集通常采用温度传感器[3]、振动传感器、压力传感器等传感设备获取数据,数据进行汇聚后通过汇聚节点传送给诊断系统或CNC系统。在实际的机床物联网系统运行中出现了以下问题。

(1)根据工业要求采集到的数据被分为报警数据和普通数据,所以数据在系统中传输和处理时就产生了不同传送和处理紧急度的要求,报警数据需要进行优先传送和处理,因而产生了数据调度的问题。

(2)由于传感器设备数量的增加和采集频率的提高,机床物联网系统数据通信量在大幅度的上升,因此产生了大数据量、快速通信的要求。

为了解决上述问题,本文提出建设一套基于RT-thread操作系统的机床物联网系统,实现数据传送、处理的科学调度和大数据快速网络通信的处理。

1 机床物联网系统整体结构设计

本系统的设计是为了采用物联网技术完成对机床数据的采集、处理和传输工作,所以在系统结构上设计了感知层、汇聚层和应用层,感知层使用的主要设备有温度传感器、振动传感器,感知层设备完成数据的采集和发送。汇聚层使用的主要设备为汇聚节点,汇聚节点完成数据的接收、处理和转发。应用层完成数据分析、处理和反馈控制。系统整体结构如图1所示。

图1 机床物联网系统整体结构图

本系统中温度(振动)传感节点完成温度(振动)数据的采集和发送,并接收来自汇聚节点传来的反馈控制数据。温度传感节点采用了cc2430无线通信模块通过zigbee协议与汇聚节点通信。汇聚节点完成传感节点上传数据的处理、调度,并转发给诊断系统,接收诊断系统发来的反馈控制命令并转根据控制需求转发给传感节点。汇聚节点采用cc2430芯片和zigbee协议完成与传感节点通信,采用w5100以太网网卡模块和TCP协议通过工业以太网完成与诊断系统通信。诊断系统从以太网接收数据进行分析处理,根据分析结果产生反馈控制,将控制命令通过TCP协议发送给汇聚节点。

根据机床物联网系统功能和性能的需求,本系统在汇聚节点上采用RT-thread操作系统实现数据封装(解封)处理、数据调度、网络通信和硬件设备管理功能。下面将进行RT-thread在汇聚节点上应用的讨论,其中对数据调度算法的改进是本文的重点。

2 汇聚节点功能设计与实现

根据本系统的总体设计,汇聚节点在硬件结构上设计为通过cc2430芯片采用zigbee协议与传感节点通信,通过W5100芯片采用tcp协议完成与与诊断系统的通信。

在功能上汇聚节点需要完成数据接收、处理和转发工作,汇聚节点处理数据来源有两种,一种是由多个传感节点通过cc2430发来的具有不同紧急度的数据,一种是由诊断系统通过w5100发来的反馈控制数据。因此数据接收功能需要完成zigbee通信和tcp通信管理。数据处理功能需要完成两部分工作内容,一部分是根据数据的紧急度完成发送顺序的调整和控制,也就是数据调度。另一部分是按约定的数据通信协议对数据进行tcp封装和解封。

根据对汇聚节点功能的分析,本系统设计为在RT-thread操作系统中采用多线程机制[4]、中断机制和mailbox机制完成数据处理和调度,采用LWIP协议栈[5]机制完成以太网通信管理,采用zigbee技术完成无线通信管理。因此在RT-thread中设计了两道线程,一道线程是转发控制线程,完成数据从邮箱读取和向以太网发送工作,该线程具有低优先级。另一道是管理线程,完成tcp通信初始化和socket通信管理,该线程具有高优先级。为了保证数据调度功能的优先进行,单独设计了数据调度处理函数,该函数在中断处理函数中被调用执行。汇聚节点工作原理如图2所示。

图2 汇聚节点工作原理

RT-thread系统开始工作时完成系统初始化工作[6],包括系统核心硬件设备驱动、系统参数的设定和线程的创建。之后由管理线程[7-8]进行网络通信设备w5100初始化和socket通信初始化,在初始化完成后该线程进入挂起状态,当socket监听有数据到来时唤醒该线程并进行数据处理,处理后转发控制命令给cc2430。当cc2430接收到传感节点发来的数据时,产生中断,进入中断处理程序,中断处理程序调用数据调度函数根据数据优先级进行邮箱写入,中断返回后唤醒转发控制线程读取邮箱进行数据封装和转发。

3 改进式mailbox线程通信机制设计与实现

RT-thread中的mailbox是一种轻量级进程通信机制[9],具有控制简单、开销低和运行效率高的特点,传统mailbox进程通信机制中采用了如图3所示的控制方法。

图3 mailbox机制原理图

其中邮箱是一个顺序循环操作队列,out_offset为出口偏移位置,in_offset为入口偏移位置,entry为邮箱中当前存放邮件的数量,size为邮箱长度即图中n+1,每个邮件大小固定为4字节,邮箱大小为size×4字节,其中邮箱长度可由设计者自行设定,邮箱的写入可以由线程或中断程序完成,邮箱的读取只能由线程完成。in_offset、out_offset初始时都指向邮箱0号位置,增长方向为0至n方向,entry初始值为0,邮箱写入后in_offset增加1,向右移动,entry加1,邮件读出后out_offset增加1,向右移动,entry减1,当in_offset、out_offset到达邮箱右端点时,再次发生写入和读取操作后in_offset、out_ffset重新指向邮箱0号位置。当邮箱空时即entry等于0,邮箱读取线程被挂起(当该线程timeout设置为0时则直接返回超时错误),邮箱读取线程由邮箱写入操作唤醒。当邮箱满时即entry等于size,邮箱写入线程被挂起(当该线程timeout设置为0时则直接返回邮箱满错误),由邮箱读出操作唤醒。由于本系统设计中为了保证数据调度操作的最高优先级采用了由中断处理程序调用数据调度函数完成邮箱的写入,由转发控制线程完成数据的封装和发送,因此本系统中没有邮箱写入线程。

在本系统中,传感器上传的数据由传感节点在上传前根据数据阈值设定了数据的优先级。上传数据共具有两种优先级,一种是低优先级数据即普通数据,是指传感节点上传的未达到报警阈值的数据。另一种是高优先级数据即报警数据,是指传感节点上传的到达或超过报警阈值的数据。系统运行的规则为,低优先级数据到达后根据FIFO策略进行邮箱写入和转发,当有高优先级数据到达后,需立即停止低优先级数据的传送,改为传送高优先级数据,而在传统的mailbox机制中是数据写入和读取是顺序循环工作进行的,无法完成不同优先级数据传送顺序调整和控制的要求,因此本文提出一种改进式mailbox进程通信机制,实现不同优先级数据按需求进行转发控制。改进式mailbox工作原理如图4所示。

图4 改进式mailbox工作原理

图4a图是当普通数据到达时改进式mailbox的处理过程:

①当有第k个普通数据到达时,中断程序分析该数据,由于数据为低优先级数据,则判断邮箱是否为满,如为满立刻执行中断返回,该数据丢失。否则找到in_offset指针位置,in_offset指针当前指向第m号邮箱。

②将第k个普通数据复制到该位置,对in_offset进行加1操作,in_offset指针指向第m+1号邮箱,entry加1。

③中断返回后由转发控制线程找到out_offset指针位置,当前指向第j号邮箱,将该邮箱的内容封装发送,out_offset指针加1,entry减1。

当out_offset或in_offset指针指向邮箱最后一个位置时,再次发生指针加1操作时将把该指针指向第0号邮箱位置。

图4b图是当有高优先级数据到达时改进式mailbox的处理过程,这是本文重点改进的内容。

①当有高优先级数据到达,中断程序分析该数据,由于数据为高优先级数据,直接找到out_offset指针位置,此处不进行邮箱满的判断,out_offset指针当前指向第t号邮箱,in_offset 指针指向第i个邮箱。

②对out_offset进行减1操作,out_offset指针指向第t-1号邮箱,将高优先级数据放进第t-1号邮箱,判断当entry小于size时,执行entry加1,否则执行in_offset等于out_offset。此操作用于保证后续的低优先级数据能写在空邮箱位置上。

③中断返回后由转发控制线程找到out_offset指针位置第t-1号邮箱,将该邮箱的内容封装发送,out_offset指针加1,entry减1。继续恢复正常发送。

当out_offset指针指向第0号邮箱时,再次发生减1操作则将该指针指向最大编号邮箱即第n号邮箱。

由于传统mailbox机制中每个邮箱的大小为4个字节,在本设计中采用邮箱存放变量地址的方法,实现大数据的存储和发送。数据结构体设计如下:

struct datamsg

{

uint8_t * data_prt;

unit8_t data_pro;

unit32_t data_size;

};

其中data_prt为指向该结构体变量的指针,data_pro为本条数据的优先级,data_size为本条数据的长度。

算法改进分析:

(1)当高优先级数据到达时,采用了对out_offset进行减1操作而不是操作in_offset是因为out_offset指向即将被读取邮件的位置,所以out_offset-1指向位置的数据应该是已经读取完成的,对out_offset-1指向位置进行写入不会产生数据丢失。同时在中断返回后将立刻由转发控制程序读取out_offset指向位置的数据(此时为高优先级数据)进行发送,从而完成高优先级数据的优先发送。

(2)当高优先级数据是不连续偶发性出现时,该操作只是将out_offset进行减1,随后邮箱读取线程将读取位置邮箱的内容发送,并进行out_offset加1,此时out_offset恢复成为高优先级数据到达前的值,恢复到正常数据的收发过程。

(3)当高优先级数据连续到达时,就会出现不断的执行out_offset减1操作,最坏的一种可能是经过n+1个连续中断后out_offset值比原始值小1,也就是全部邮箱都被高优先级数据写满,并产生了高优先级数据间覆盖,由于本算法中中断处理程序内容设计为不能被阻塞,所以只要中断有间歇,高优先级数据就能被转发控制线程读出并发给诊断系统。达到了高优先级数据优先传送的目的,根据本系统的实际工作情况,由于温度和振动传感器的采集频率为每秒1次,cc2430发送频率也为每秒1次,所以只要在1秒内完成最大中断数量的处理,本系统中设计负载为20个传感器,所以最多为每秒20个中断,就不会出现系统一直处于中断状态导致数据不能发送的情况,后续的实验证明该情况不会出现。

(4)邮箱大小的设置,由于每个邮件长度为4个字节,邮箱的大小为长度size×4,该参数将影响到嵌入式设备的内存占用情况,邮箱长度size的设置过少将出现只要出现高优先级数据就将把低优先级数据覆盖,邮箱数量设置过大内存占用过大,影响系统的整体性能,所以可以根据实际传感节点的并发数量进行设定和调整,本系统中设定邮箱长度size值为20。

算法实现核心伪代码如下:

转发控制线程进行邮件读取:

rt_mb_read (rt_mailbox_t mb, rt_uint32_t value, rt_int32_t timeout)

{.......;

*value = mb->msg_pool[mb->out_offset];

++ mb->out_offset;

if (mb->out_offset >= mb->size)

mb->out_offset = 0;

mb->entry --;

.......;}

中断处理程序调用数据调度函数进行邮件写入,数据调度函数内容为:

rt_mb_urgent(rt_mailbox_t mb, rt_uint32_t value, datamsg* msg)

{......;

if(msg->pro==0)//低优先级数据

{mb->msg_pool[mb->in_offset] = msg->value;

++ mb->in_offset;

if (mb->in_offset >= mb->size)

mb->in_offset = 0;

mb->entry++;

......;}

if(msg->pro==1)//高优先级数据

{if (mb->out_offset ==0)

mb->out_offset =mb->size-1;

else

-- mb->out_offset;

mb->msg_pool[mb->out_offset] = value;

if(mb->entrysize)

mb->entry ++;

else

mb->in_offset=mb->out_offset; }

......;}

4 实验结论

为了对改进式mailbox算法的性能进行分析,采用了以下条件进行系统仿真测试实验:

(1)采用了10个温度传感节点、10个振动传感节点进行预定数据的发送。为了测试算法在并行数据到达时的实际处理能力,这20个传感节点没有实际采集数据,而是由传感节点中的程序按预设的条件发送报警数据和普通数据。

(2)传感节点程序中设计CC2430发送频率为1次/秒。

(3)为了保证实验的可靠性,在数据出现报警时提高传感节点报警数据的发送次数,设计为一次报警发送3次报警数据。

(4)系统实验时间为24个小时,其中每个传感节点发生报警400次,其中连续报警200次即200秒完成600条报警数据的发送,且20个传感节点同时发生连续报警。每个传感节点间隔性报警200次,间隔时间为3秒。

实验结果:汇聚节点成功收到报警数据24000条,普通数据1704000条,成功转发报警数据24000条,普通数据1703992条。成功转发数据统计结论如图5所示。

图5 数据转发成功率对比

实验分析:在实验结论中转发普通数据条数比收到的普通数据条数少了8条,这种情况是由于并发到达的中断导致了高优先级数据对普通数据的覆盖,该现象可以通过增大邮箱的size来解决。通过实验结果证明了改进式mailbox算法不仅具有较好的数据优先级调度能力,同时该算法具有较小的处理开销。

5 结论

本系统采用了RT-thread操作系统在汇聚节点上完成数据接收、调度、转发等工作,完成了与传感节点的zigbee无线通信,完成了与监控系统以太网方式通信,重点对传统的mailbox算法进行了改进,通过严格的仿真测试实验证明了改进后的算法具有较好的实时处理能力和转发性能,保证了高优先级数据的完全优先转发,证明了该系统具有很好的实时性和适用性,因此本系统具有很广泛的应用价值和理论研究价值。

[1] 曹成.嵌入式实时操作系统RT-Thread原理分析与应用[D].青岛:山东科技大学,2011.

[2] 苏宪利,郑一麟.基于WEB的数控机床监控系统的设计与实现[J].组合机床与自动化加工技,2013(6):58-61.

[3] 郑一麟,林浒,陶耀东,等.基于SOPC的数控系统EnDat2.2接口的设计与实现[J].小型微型计算机系统,2012(6):1377-1380.

[4] 方琼琼.嵌入式串口联网服务器的设计与实现[D].合肥:安徽大学,2012.

[5] 尉志刚.基于RT-Thread的MODBUS从协议栈的设计与实现[D].合肥:安徽大学,2012.

[6] 杨志新.基于RT-Thread系统的网络时钟同步的实现与研究[D].南京:南京邮电大学,2013.

[7] 徐晨.物联网与数控机床远程智能监控系统[J].大连:组合机床与自动化加工技术,2013(8):86-90.

[8] 魏亚鹏,韩卫光.工业以太网EtherCAT的无线网关设计[J].组合机床与自动化加工技术,2013(8):26-29.

[9] 王晓寅.基于实时系统的STM32网络应用[D].上海:华东师范大学,2011.

(编辑 赵蓉)

Design and Implementation of Machine Things Network Based on RT-thread

SU Xian-li1,ZHENG Yi-lin2

(1. College of Information Science and Technology, Bohai University. Jinzhou Liaoning 121013,China;2.Shenyang Institute of Computing Technology, Chinese Academy of Sciences, Shenyang 110168,China)

The design and implementation of the machine tools internet of things system based on RT-Thread.To meet the demand of multi-urgency data scheduling and data communication stability, RT-Thread real-time operating system is used. The improvement of mailbox thread communication model satisfies the need of data scheduling priority, enhance the system’s ability to give a priority to urgent data. The use of Socket can meet the need of network heavy load communication. Employ ARM Cortex-M3 processing chip and w5100 network communication chip in hardware. The experiment result proved that the system can largely improve the real-time and Sheduling of machine tools data processing.

data scheduling; mailbox model; socket

1001-2265(2014)06-0069-04

10.13462/j.cnki.mmtamt.2014.06.019

2014-03-03;

2014-04-01

"高档数控机床与基础制造装备"国家科技重大专项-开放式数控系统支撑技术创新平台建设(2011ZX04016-071)

苏宪利(1980—),男,辽宁锦州人,渤海大学讲师,研究方向为实时控制,( E-mail)xianlis@sina.com.cn。

TH166;TG506

A

猜你喜欢
指针线程中断
基于C#线程实验探究
垂悬指针检测与防御方法*
基于国产化环境的线程池模型研究与实现
线程池调度对服务器性能影响的研究*
基于FPGA的中断控制器设计*
Linux中断线程化分析及中断延时测试
为什么表的指针都按照顺时针方向转动
跟踪导练(二)(5)
千里移防,卫勤保障不中断
浅析C语言指针