一种基于机床物联网的邮箱调度方法

文档序号:6619833阅读:693来源:国知局
一种基于机床物联网的邮箱调度方法
【专利摘要】本发明涉及物联网领域中任务间的通信方法,具体地说是一种基于机床物联网的邮箱调度方法。针对传统邮箱通信机制在邮箱被阻塞时不能实时更新邮件以及无法优先处理紧急故障信息的问题,本发明设计了一种基于物联网的邮箱数据结构,并对普通邮件和紧急邮件到来时做不同的数据处理。本发明实现了机床物联网汇聚节点对邮箱中不同优先级邮件的实时调度,解决了传统邮箱通信机制在邮箱被阻塞时无法更新邮件的问题,同时实现了紧急故障信息的优先处理。
【专利说明】一种基于机床物联网的邮箱调度方法

【技术领域】
[0001] 本发明涉及物联网领域中任务间的通信方法,具体地说是一种基于机床物联网的 邮箱调度方法。

【背景技术】
[0002] 传统机床传感器网络由于使用线缆连接传感器与控制器,常常会带来线缆折断, 传感器布置困难等问题。通过使用基于无线传感器网络的机床物联网系统可以解决上述问 题(如图1所示):机床物联网中的传感器节点可以通过无线的方式将采集到的传感信息 发送给汇聚节点;汇聚节点将原始数据经过处理之后发送到本地局域网或GPRS网络上。在 这一过程中,汇聚节点主要通过邮箱完成任务之间的通信和同步:射频中断处理程序通过 邮箱将数据包的地址发送给数据处理任务;数据处理任务处理完原始数据之后,将新数据 包的地址通过两个不同的邮箱分别发给网口发送任务以及GPRS发送任务。邮箱通过循环 队列存储4字节邮件,具有开销低、效率高等优点。
[0003] 但是传统的邮箱机制也存在某些缺点:当邮箱里存满邮件时,无法将新数据覆盖 到旧数据上;邮件在优先级上没有差异,邮箱只能通过先入先出方式处理邮件。先入先出方 式根据邮件到达邮箱的时间顺序发送邮件,实现起来比较简单:邮箱从队列首部的邮件开 始发送邮件,同时将后接收的邮件依次放在循环队列的尾部。虽然先入先出方式在时序上 保证了普通邮件的公平性,但无法兼顾带有突发故障信息的紧急邮件。如果按照先入先出 的方式处理这些紧急邮件,可能由于它们正处于队列的尾部而使状态监测系统不能实时响 应突发故障。所以,需要改进传统的邮箱机制使得这些需要优先处理的邮件能够"插队"到 邮箱队列的队首。当负责邮件接收的任务由于某种原因阻塞时,邮箱会被邮件填满而不能 继续接收新消息,这时,传统的邮箱机制会丢弃这些新消息,但是对于状态监测系统来说, 新数据要比老数据实时性更强,更有价值。以机床物联网中的GPRS网络为例,由于GPRS传 输的不稳定性,负责同步数据的邮箱可能由于邮件已满而无法继续接收射频中断服务程序 发送的新数据。这时如果不能及时将汇聚节点接收到的新数据覆盖到邮箱中的旧数据上, 那么当GPRS网络恢复时,网络另一端的上位机收到的监测数据将会是时效性较低的旧数 据。为了解决上述两类问题,发明一种基于机床物联网的邮箱调度方法变得尤为重要。


【发明内容】

[0004] 针对现有技术中的不足之处,本发明要解决的技术问题是提供一种基于机床物联 网的邮箱调度方法,实现邮箱已满时新数据对旧数据的覆盖更新,同时能够优先处理采集 到的紧急故障信息。
[0005] 本发明为实现上述目的所采用的技术方案是:一种基于机床物联网的邮箱调度方 法,包括以下步骤:
[0006] 当普通邮件到来时,判断邮箱数组是否填满;如果邮箱数组未填满,则以先进先出 的方式处理新邮件;如果邮箱数组已填满,则更新邮箱中到达时间最早的普通邮件为新邮 件,在邮箱中没有紧急邮件的情况下入队指针和出队指针指向新邮件的后一个位置,在邮 箱中有紧急邮件的情况下入队指针和出队指针指向需要优先处理的紧急邮件;
[0007] 当紧急邮件到来时,出队指针先向前移动一个位置,随后紧急邮件被放入出队指 针对应的邮箱数组元素中,出队指针的紧急邮件标志位置建立紧急标志,判断邮箱数组是 否填满;如果邮箱数组未填满,则邮件总数自加一次;如果邮箱数组已填满,则入队指针指 向出队指针所在的位置,以使入队指针指向紧急邮件出队之后邮箱留出的空位;
[0008] 数据包处理任务读取邮箱中的邮件。
[0009] 所述以先进先出的方式接收新邮件,包括以下步骤:
[0010] 把新邮件放入入队指针对应的数组元素中,相应位置的邮件到达时间被更新为系 统的当前时间,入队指针对应的紧急邮件标志位消除紧急标志,同时将入队指针向后移动 一位,邮件总数自加一次。
[0011] 所述数据包处理任务读取邮箱中的邮件,包括以下步骤:
[0012] 当数据包处理任务从邮箱中读取邮件时出队指针指向即将出队的邮件,处理任务 直接读取出队指针对应的数组元素的邮件,同时出队指针指向的紧急邮件标志位置清除, 邮件总数自减一次。出队指针向前移动一个位置以指向下一个需要出栈的邮件。
[0013] 本发明具有以下优点及有益效果:
[0014] 1.实现了机床物联网对于突发性故障的优先响应。当机床出现某种突发性故障 时,包含突发性故障信息的紧急邮件将会被插入到当前邮件队列队首之前。如果此时邮箱 已满,紧急邮件仍将替换位于邮箱队首前一个位置的邮件。
[0015] 2.实现了机床物联网中普通邮件在阻塞状况下的LRU邮箱调度算法,使邮箱满时 新到来的普通邮件可以替换到达时间最早的普通邮件,保证了邮箱中传感数据的时效性, 从而使系统能够实时监测机床的运行状态。
[0016] 3.实现了利用循环数组队列存储邮件内容,邮件到达时间,以及紧急邮件的标志 位,并通过移动in_point指针和out_point指针进行邮件的入队和出队操作。基于上述数 据结构设计的物联网邮箱具有查找快,效率高,系统开销小等优点,适合应用于实时嵌入式 系统中。

【专利附图】

【附图说明】
[0017] 图1为机床物联网组织结构图;
[0018] 图2为普通邮件在阻塞状况下的LUR邮箱调度算法流程图;
[0019] 图3为紧急邮件到达时的邮箱调度算法流程图;
[0020] 图4为邮件接收算法流程图。

【具体实施方式】
[0021] 下面结合附图及实施例对本发明做进一步的详细说明。
[0022] 本发明以物联网任务通信中的邮箱为研究对象,设计相应的结构体;设计普通邮 件在阻塞状况下的LRU邮箱调度算法以实时更新旧的普通邮件数据;设计紧急邮件到达时 的邮箱调度算法以保证监测系统能够优先处理这些信息;设计邮件接收算法以读取邮箱中 的普通邮件和紧急邮件。
[0023] 基于机床物联网的邮箱结构体mailbox主要包含以下成员变量:邮件入队指针 in_point(指向队尾邮件的后一个位置);邮件出队指针out_point(指向队首邮件);邮 箱现存邮件总数total ;邮箱最多能够容纳的邮件数max ;存放4字节数据包地址的数组 msg [max];存放邮件到达时间的数组tick [max];存放邮件紧急标志位的数组flag [max]。
[0024] 如图2所示,普通邮件在阻塞状况下的LRU邮箱调度算法是在邮箱数组填满邮件 (包括紧急邮件)的情况下利用最近最少使用算法(LRU)实现新普通邮件对于旧普通邮件 的覆盖。当邮箱每接收到一个新的普通邮件时,它会把这个邮件放入入队指针对应的数组 元素 msg[in_point]中,相应位置的邮件到达时间tick[in_point]被更新为系统的当前时 间。紧急邮件标志位flag[in_point]也随之清零,同时将入队指针in_point会向后移动一 位,邮件总数total自加一次。当total等于max时,证明此时邮箱已被填满,如果有新进 入的普通邮件,则需要更新邮箱中最近最少使用的普通邮件为新邮件。由于邮箱内的邮件 只会被取出邮箱时被"使用"一次,所以在邮箱里的所有邮件都可以认为使用次数为0。由 此可见,邮箱中到达时间最早的普通邮件即为"最近最少使用"的普通邮件。按照数据发送 任务对于普通邮件接收的时序要求,普通邮件在邮箱里依照"先入先出"(FIF0)的原则排列 顺序,那么出队指针应指向最早到达邮箱的邮件(队首邮件),入队指针应指向最晚到达邮 箱的邮件(队尾邮件)的后一个位置。由于邮箱的数据结构实质上是一个循环数组队列, 所以在邮箱阻塞时入队指针与出队指针重合。因为新邮件的到达时间一定是所有邮件里最 晚的,故入队指针应该指向新邮件的后一个位置;同时按照FIFO原则,这个位置存储的邮 件也为此时邮箱中到达时间最早的邮件。所以在旧邮件被替换为新邮件之后,如果邮箱中 没有紧急邮件,则算法需要更新出队指针〇ut_point和入队指针in_point为新邮件的后一 个位置。如果存在紧急邮件,根据紧急邮件的调度算法,此时出队指针和入队指针已经同时 指向了需要优先处理的紧急邮件,故无需改变这两个指针的位置。
[0025] 当数控机床发生某种突发性故障时,机床某些重要部件的物理信息如温度、振动 等会发生大幅度的波动,从而使物联网汇聚节点收到的传感数据大于预先设置的安全阈 值。为了能使监测系统优先处理突发性故障信息,射频中断服务程序会将这个数据包作为 紧急邮件发送给邮箱。如图3所示,当邮箱接收到紧急邮件时,它需要将这个邮件"插队" 到邮箱的队首使其能够优先出队。在算法的具体实现上,邮箱出队指针〇ut_point先向前 移动一个位置,随后紧急邮件被放入出队指针对应的数组元素 msg[out_point]中,同时存 放紧急标志位的数组元素 flag[0ut_p0int]置1以表明邮件的性质。最后算法需要判断 邮箱是否已满:当邮箱未满时(t〇tal〈max),邮件总数total自加一次;当邮箱装满邮件时 (total = max), in_point需要指向out_point所在的位置,以使入队指针指向紧急邮件出 队之后邮箱留出的空位。
[0026] 如图4所示,当数据包处理任务从邮箱中读取邮件时,由于此时出队指针out_ point指向即将出队的邮件,所以处理任务直接读取msg[out_point]中存储的邮件即可, 同时flag[out_point]置0以清除对应邮件的紧急标志位,邮件总数total也应自减一次。 出队指针〇ut_point随后向前移动一个位置以指向下一个需要出栈的邮件。
【权利要求】
1. 一种基于机床物联网的邮箱调度方法,其特征在于,包括以下步骤: 当普通邮件到来时,判断邮箱数组是否填满;如果邮箱数组未填满,则以先进先出的方 式处理新邮件;如果邮箱数组已填满,则更新邮箱中到达时间最早的普通邮件为新邮件,在 邮箱中没有紧急邮件的情况下入队指针和出队指针指向新邮件的后一个位置,在邮箱中有 紧急邮件的情况下入队指针和出队指针指向需要优先处理的紧急邮件; 当紧急邮件到来时,出队指针先向前移动一个位置,随后紧急邮件被放入出队指针对 应的邮箱数组元素中,出队指针的紧急邮件标志位置建立紧急标志,判断邮箱数组是否填 满;如果邮箱数组未填满,则邮件总数自加一次;如果邮箱数组已填满,则入队指针指向出 队指针所在的位置,以使入队指针指向紧急邮件出队之后邮箱留出的空位; 数据包处理任务读取邮箱中的邮件。
2. 根据权利要求1所述的一种基于机床物联网的邮箱调度方法,其特征在于,所述以 先进先出的方式处理新邮件,包括以下步骤: 把新邮件放入入队指针对应的数组元素中,相应位置的邮件到达时间被更新为系统的 当前时间,入队指针对应的紧急邮件标志位消除紧急标志,同时将入队指针向后移动一位, 邮件总数自加一次。
3. 根据权利要求1所述的一种基于机床物联网的邮箱调度方法,其特征在于,所述数 据包处理任务读取邮箱中的邮件,包括以下步骤: 当数据包处理任务从邮箱中读取邮件时出队指针指向即将出队的邮件,处理任务直接 读取出队指针对应的数组元素的邮件,同时出队指针指向的紧急邮件标志位置清除,邮件 总数自减一次。出队指针向前移动一个位置以指向下一个需要出栈的邮件。
【文档编号】G06F17/30GK104112000SQ201410329330
【公开日】2014年10月22日 申请日期:2014年7月11日 优先权日:2014年7月11日
【发明者】邓庆绪, 郑一麟, 管宇, 易夏羽 申请人:东北大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1