CN116760784A - 一种基于优先级及运行时间的opc ua关键消息调度方法 - Google Patents
一种基于优先级及运行时间的opc ua关键消息调度方法 Download PDFInfo
- Publication number
- CN116760784A CN116760784A CN202310846254.4A CN202310846254A CN116760784A CN 116760784 A CN116760784 A CN 116760784A CN 202310846254 A CN202310846254 A CN 202310846254A CN 116760784 A CN116760784 A CN 116760784A
- Authority
- CN
- China
- Prior art keywords
- priority
- message
- opc
- service
- queue
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 52
- 238000004891 communication Methods 0.000 claims abstract description 47
- 238000004422 calculation algorithm Methods 0.000 claims abstract description 32
- 238000012545 processing Methods 0.000 claims description 27
- 238000004886 process control Methods 0.000 claims description 9
- 230000005540 biological transmission Effects 0.000 abstract description 20
- 238000010586 diagram Methods 0.000 description 17
- 230000008569 process Effects 0.000 description 15
- 230000006870 function Effects 0.000 description 8
- 230000002452 interceptive effect Effects 0.000 description 8
- 238000004590 computer program Methods 0.000 description 7
- 230000015654 memory Effects 0.000 description 7
- 230000007246 mechanism Effects 0.000 description 6
- 230000008859 change Effects 0.000 description 5
- 230000003993 interaction Effects 0.000 description 5
- 230000009471 action Effects 0.000 description 3
- 230000006399 behavior Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000006978 adaptation Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 2
- 230000007774 longterm Effects 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000000737 periodic effect Effects 0.000 description 2
- 241001522296 Erithacus rubecula Species 0.000 description 1
- 235000008694 Humulus lupulus Nutrition 0.000 description 1
- 238000012369 In process control Methods 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000007635 classification algorithm Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 235000003642 hunger Nutrition 0.000 description 1
- 238000010965 in-process control Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002265 prevention Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000037351 starvation Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
- H04L47/62—Queue scheduling characterised by scheduling criteria
- H04L47/625—Queue scheduling characterised by scheduling criteria for service slots or service orders
- H04L47/6275—Queue scheduling characterised by scheduling criteria for service slots or service orders based on priority
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/24—Traffic characterised by specific attributes, e.g. priority or QoS
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/24—Traffic characterised by specific attributes, e.g. priority or QoS
- H04L47/2425—Traffic characterised by specific attributes, e.g. priority or QoS for supporting services specification, e.g. SLA
- H04L47/2433—Allocation of priorities to traffic types
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/24—Traffic characterised by specific attributes, e.g. priority or QoS
- H04L47/2441—Traffic characterised by specific attributes, e.g. priority or QoS relying on flow classification, e.g. using integrated services [IntServ]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明公开了一种基于优先级及运行时间的OPC UA关键消息调度方法,包括:根据OPC UA规范定义的服务类型和应用场景,将OPC UA规范定义的消息分为信息消息和通信上下文消息;根据QoS等级,为OPC UA规范定义的消息设定不同的优先级;其中,通信上下文消息的优先级高于信息消息的优先级;进行消息调度时,首先保证通信上下文消息被优先调度;在通信上下文消息全部处理完成后,基于预设规则,采用基于优先级和运行时间的调度算法来调度不同的信息消息。本发明所提方法能够保障OPC UA关键消息的优先调度需求,同时,能够在一定程度上也保证低优先级的消息获得公平的传输资源。
Description
技术领域
本发明涉及OPC UA(Object Linking and Embedding for Process ControlUnified Architecture,过程控制统一体系结构的对象链接与嵌入)服务运行系统技术领域,特别涉及一种基于优先级及运行时间的OPC UA关键消息调度方法。
背景技术
OPC UA(Object Linking and Embedding for Process Control UnifiedArchitecture,过程控制统一体系结构的对象链接与嵌入)是由OPC(Object Linking andEmbedding for Process Control,过程控制中的对象链接与嵌入)基金会在OPC成功应用的基础上推出的一个新的OPC标准。OPC UA提供了一种工业数据交换的规范,通过OPC UA协议,工业现场设备不仅能够进行同层设备间的信息交互,同时也能够纵向通信,将设备信息集成至更高层的设备层中,位于工业系统不同层次的设备信息的交换和集成,使设备间的互操作性得到进一步的提升。
OPC UA使用了对象(Object)作为过程系统表示数据和活动的基础。对象包含了变量(Variable)、事件(Event)和方法(Method),它们通过引用(Reference)来互相连接。这个概念和面向对象程序设计方法非常相似。OPC UA信息模型是节点的网络(Network ofNode),或者称为结构化图(Graph),由节点和引用组成,这种结构图称之为OPC UA的地址空间,如图1所示。OPC UA实质上是一种抽象的框架,是在分布式系统中实现对象的描述,OPCUA在工业4.0中的重要性就是通过面向对象的技术,将物理设备(如传感器、电机等)描述成一个个对象,形成数字化模型,让不同的软件可以像调用对象那样来控制设备。
OPC UA是一种独立于平台的标准,各种系统和设备可以通过各个类型的网络在客户机和服务器之间发送消息进行通信。OPC UA可以映射到各种通信协议中,数据可以以各种方式编码,因此具有不同协议的终端设备可以将自身的数据格式转换成统一OPC UA的数据格式进行通信,通过OPC UA的Pub-Sub(Publish-Subscribe,发布与订阅)机制将自身产生的OPC UA数据发布出去,并订阅来自其他终端的数据,如图2所示。具体的功能说明如下:
数据采集与转换功能:通过OPC UA服务器1-x采集多种具有不同协议的终端设备数据,将采集到的来自不同终端的数据转换成OPC UA数据,将数据更新到给各设备建立的OPC UA对象的OPC UA变量中。
Pub-Sub功能:终端设备的数据经过被采集和转换后,其对应上层的OPC UA服务器1-x将获取到的数据通过UDP Multicast(User-Datagram-Protocol Multicast,用户数据报协议组播)向外发布,同时订阅所需的数据。OPC UA服务器A由于要被客户端访问,且服务器1-x可能存在于不同的网络中,所以服务器A要订阅所有终端设备的数据,任何下层的服务器1-x的订阅请求都要从服务器A处获取数据。
用户访问功能:OPC UA服务器A将订阅到的所有数据分别存入不同的OPC UA变量中,当由OPC UA客户端访问自己时,用户就可以通过服务器A观察底层所有终端设备的数据变化情况,也可以通过服务器A向终端传输控制命令。
当OPC UA服务器建立和运行时会调用大量的OPC UA服务,而工业数据在传输时需要考虑到差异化服务的问题,但目前现有的OPC UA通信模式无法满足上述要求。在体量较大、终端数量众多的工业场景中,对于具有不同优先级的消息的传输服务质量没有明确的保障方法。当前OPC UA并无机制保障关键信息传送的即时性,导致大量OPC UA服务运行时,用于承载系统运行指令的OPC UA关键消息传送不及时,影响工业控制系统的稳定性。
发明内容
本发明提供了一种基于优先级及运行时间的OPC UA关键消息调度方法,以解决当前OPC UA并无机制保障关键信息传送的即时性,导致大量OPC UA服务运行时,用于承载系统运行指令的OPC UA关键消息传送不及时,影响工业控制系统的稳定性的技术问题。
为解决上述技术问题,本发明提供了如下技术方案:
一方面,本发明提供了一种基于优先级及运行时间的OPC UA关键消息调度方法,所述基于优先级及运行时间的OPC UA关键消息调度方法包括:
根据OPC UA(Object Linking and Embedding for Process Control UnifiedArchitecture,过程控制统一体系结构的对象链接与嵌入)规范定义的服务类型和应用场景,将OPC UA规范定义的由服务生成的消息分为信息消息和通信上下文消息;其中,所述信息消息指的是用于传输设备信息的消息,所述通信上下文消息指的是用于创建、保持以及修改通信上下文的消息;
根据QoS(Quality of Service,服务质量)等级,为OPC UA规范定义的消息设定不同的优先级;其中,在进行调度时,优先级越高的消息越优先进行调度操作,且所述通信上下文消息的优先级高于所述信息消息的优先级;
基于设定的优先级及运行时间,进行OPC UA消息调度。
进一步地,基于设定的优先级及运行时间,进行OPC UA消息调度,包括:
通过预设算法保证所述通信上下文消息被优先调度;
在所述通信上下文消息全部处理完成后,基于预设规则,采用基于优先级和运行时间的调度算法来调度不同的信息消息。
进一步地,所述通过预设算法保证所述通信上下文消息被优先调度,包括:
步骤1,将所有服务按照服务对应的优先级加入到优先级队列中;其中,优先级队列根据服务的QoS等级对服务进行优先级排序,且生成通信上下文消息的服务所对应的优先级最高;
步骤2,接收客户端发送的消息,并将接收到的消息按照消息的优先级加入到消息队列中;
步骤3,在优先级队列中选取优先级最高的服务;
步骤4,对选取的服务的消息进行处理,并将处理结果发送给客户端;
步骤5,更新消息队列和优先级队列,如果当前服务还有未处理的消息,则将其放回优先级队列中,并更新优先级队列中的服务的优先级;
步骤6,重复执行步骤3至步骤5,直到消息队列为空或系统退出。
进一步地,所述信息消息按照优先级分为多种不同类型的消息。
进一步地,所述预设规则包括:
规则1:若第一服务的优先级>第二服务的优先级,则运行第一服务;
规则2:若第一服务的优先级=第二服务的优先级,则轮转运行第一服务和第二服务;
规则3:服务进入系统时,放在最高优先级;
规则4:一旦服务用完了其在某一层中的时间配额,无论中间主动放弃了多少次CPU(Central Processing Unit,中央处理器),就降低其优先级;
规则5:每经过一段时间,就将系统中所有服务重新加入最高优先级队列。
进一步地,所述基于预设规则,采用基于优先级和运行时间的调度算法来调度不同的信息消息,包括:
步骤1,初始化多个不同优先级的队列和运行时间片大小,将所有服务加入最高优先级队列中;
步骤2,接收客户端发送的消息,将接收到的消息按照消息的优先级加入到消息队列中;
步骤3,从最高优先级的队列中选取服务;
步骤4,处理选取的服务的消息,并将处理结果发送给客户端;
步骤5,若当前服务的处理时间超过了其对应的运行时间,则将其放入下一级队列中并更新全部队列,返回步骤3;若当前服务的消息在其对应的运行时间内被处理完毕,则直接返回步骤3,并更新全部队列;
步骤6,重复执行步骤3至步骤5,直到所有消息队列都为空或者系统退出。
再一方面,本发明还提供了一种电子设备,其包括处理器和存储器;其中,存储器中存储有至少一条指令,所述指令由处理器加载并执行以实现上述方法。
又一方面,本发明还提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令,所述指令由处理器加载并执行以实现上述方法。
本发明提供的技术方案带来的有益效果至少包括:
本发明面向大量OPC UA服务运行的系统,针对自动化系统大量数据交互的场景下,对OPC UA系统关键信息传输保障机制这一问题提出了一种基于优先级和运行时间的调度方案,该调度方案将OPC UA的不同服务按照优先级和QoS(Quality of Service,服务质量)进行分类,并提出了具有QoS保障的基于优先级的消息调度方案,该方案包含了一种保证高优先级消息优先调度的算法和一种基于优先级和运行时间的算法,优先为OPC UA关键信息建立OPC UA通信所必要的信令消息,建立通信后,采取优先级区分的消息调度策略,并考虑各消息的执行时间,从而保障了OPC UA系统在建立和运行过程中对关键信息的及时调度,同时,在保证关键消息及时调度的同时还保障了优先级低的其他长时间业务的持续推进。由此有效提高了OPC UA系统的可靠性和稳定性。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是OPC UA地址空间结构图;
图2是本发明实施例提供的基于OPC UA Pub-Sub机制的工业场景示意图;
图3是本发明实施例提供的基于优先级及运行时间的OPC UA关键消息调度方法的整体流程示意图;
图4是本发明实施例提供的OPC UA通信连接过程示意图;
图5是本发明实施例提供的OPC UA消息结构示意图;
图6是本发明实施例提供的保证高优先级消息优先调度算法流程图;
图7是本发明实施例提供的优先级队列与消息队列示意图;
图8是本发明实施例提供的长时间工作的优先级随时间的变化示意图;
图9是本发明实施例提供的交互型工作优先级随时间变化示意图;
图10是本发明实施例提供的混合I/O密集型和CPU密集型工作优先级随时间变化示意图;
图11是本发明实施例提供的防止愚弄调度程序前后对比图;
图12是本发明实施例提供的周期性提升优先级前后对比图;
图13是本发明实施例提供的基于优先级和运行时间的调度算法流程图;
图14是本发明实施例提供的基于优先级和运行时间的调度算法实施在信息消息中的优先级变化示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
第一实施例
针对当前OPC UA在体量较大、终端数量众多的工业场景中,对于具有不同优先级的消息的传输服务质量没有明确的保障方法的情况,本实施例提供了一种基于优先级及运行时间的OPC UA关键消息调度方法,为解决当前OPC UA并无机制保障关键信息传送的即时性,导致大量OPC UA服务运行时,用于承载系统运行指令的OPC UA关键消息传送不及时,影响工业控制系统的稳定性的问题,首先提出了一种OPC UA服务分类方法,基于OPC UA不同的服务特点和功能将服务消息分成不同优先级类别的四种消息。接着基于对不同服务进行的分类,提出了一种基于优先级的OPC UA消息队列调度方法,该方法同时考虑不同服务的优先级和运行时间,可以在保证工业场景中关键的突发信息及时获得调度和传输资源的同时,保证低优先级的信息也能获得公平的传输资源。
具体地,本实施例方法的整体流程如图3所示,可以分为以下功能模块:
1、OPC UA服务分类模块:OPC UA消息由服务器调用不同的服务生成,经过通信栈的编码和加密后通过网络连接发送。每个OPC UA消息的消息头中包含了消息的时间戳、超时时间以及消息的服务类型等。根据OPC UA的服务类型和应用场景,可将OPC UA规范定义的消息分为不同的优先级,不同优先级的消息进入不同的队列分别进行区别化的调度操作。
2、高低优先级分类调度模块:OPC UA服务器首先需要建立通信上下文,这使得OPCUA服务是有状态的,正是由于这个原因,在OPC UA消息中不仅有传递设备数据的服务,还有用于创建、保持以及修改通信上下文的服务。基于OPC UA通信上下文的数据通信才能确保可扩展性、可靠性和安全性,所有OPC UA的信息交互服务都建立于会话之上,因此在OPC UA系统运行的开端,建立通信上下文的消息是优先级最高的消息,要保证此类消息被优先调度,且只有在其全部处理完成后才可以处理其他的OPC UA消息。因此设计一种保证高优先级消息优先调度的算法以确保建立通信上下文的优先性,保证OPC UA通信的完整可靠性。
3、低优先级内部消息调度模块:在处理完通信上下文消息后,还需要对后续相对低优先级的OPC UA数据通信消息进行调度,OPC UA系统通常体量巨大,由于不同消息具有不同的优先级,存在长时间持续工作的长工作与突发且优先级高的短工作,为保证在系统运行的过程中各个工作进程都能稳步推进,设计了一种基于优先级的调度算法对OPC UA数据消息进行调度,在突发关键数据的优先调度时防止长工作被“饿死”,可以保证OPC UA的各个工作进程都能获得公平的资源,在突发的关键数据频出的情况下也能保证长时间运行的工作的稳定,有效的改善了OPC UA系统的稳定性和关键消息传输的确定性。
下面,对上述各功能模块的实现方式进行详细阐述。
1、OPC UA服务分类
OPC UA是建立在TCP(Transmission Control Protocol,传输控制协议)基础上的应用层协议,OPC UA栈用来处理OPC UA通信的3种必须任务,即数据编码、安全通信和数据传输。OPC UA二进制编码、UA-Secure Conversation安全协议和UATCP协议完成了客户端与服务器的通信。
通信时客户端与服务器分别建立TCP、安全信道以及应用层程序的连接,建立过程如图4所示,以上3层连接的建立构成了OPC UA的通信上下文,基于OPC UA通信上下文的数据通信才能确保可扩展性、可靠性和安全性。
OPC UA消息由服务器调用不同的服务生成,经过通信栈的编码和加密后通过网络连接发送,OPC UA消息结构如图5所示,每个OPC UA的消息头(Message Header)中包含了消息的时间戳、超时时间以及消息的服务类型等。根据OPC UA规范定义的服务类型和QoS(Quality of Service,服务质量)等级,可以将OPC UA规范定义的消息分为两大类:信息消息(Information Message,IM)和通信上下文消息(Communication Context Message,CCM),其中IM消息为工业系统中用于传输设备信息的消息,属于算法中的步骤③所调度的相对低优先级的信息(可分为三类,下文详述),CCM消息为步骤②中的高优先级信息,总体上根据不同的实时性可以将OPC UA的消息分为4类,每种类型的消息如下:
1)CCM(Connection Context Message,连接上下文消息):其他信息发送的基础,其中包括建立初始连接(HEL/ACK消息)和返回错误的消息(ERR消息)以及建立通信上下文的消息等,在所有OPC UA消息中优先级最高;
2)PHM(Priority High Message,优先级高消息):实时性较强,在IM类消息中优先级较高的消息,如事件发布(Event Publish)消息、控制命令等;
3)PLM(Priority Low Message,优先级低消息):实时性和优先级较低的消息;
4)TIM(Type Interval Message,键入间隔消息):具有最低的优先级,为周期性持续发送的本地状态信息,如数据变化发布(Data Change Publish)消息等。
其中,PHM、PLM、TIM属于IM消息,要注意的是,队列元素PHM、PLM是在整个发送时间[0,T]上随机产生的,其总体生产概率服从以λ为期望的泊松过程(泊松流)模型。上述每种队列元素具有相同的长度,队首以跳为单位进行发送,每跳仅能发送一个完整的队列元素。
2、高低优先级分类调度模块
OPC UA是有状态的服务,通信上下文的改变会影响IM消息的交互,所以在任何时刻都要保证CCM消息的优先级,只有当CCM消息全部处理完成后才能调度IM消息的优先级。因此设计一种保证高优先级消息优先调度的算法来保证CCM消息的调度。该算法的流程图如图6所示。详细步骤如下:
1)初始化队列:初始化消息队列和优先级队列,将所有服务按照优先级加入到优先级队列中。其中,优先级队列与消息队列如图7所示。
2)接收消息:接收OPC UA客户端发送的消息,并将消息加入到消息队列中。
3)选取服务:在优先级队列中选取优先级最高的服务消息(CCM消息)。
4)处理服务:处理选取的服务,并将处理结果发送给客户端。
5)更新队列:更新接收到的消息和优先级队列,如果当前服务还有未处理的消息,则将其放回消息队列中,并更新优先级队列中的优先级。
6)重复执行:重复执行步骤(3)至步骤(5),直到消息队列为空或系统退出。
此算法的核心是优先级队列,它根据服务的QoS等级对服务进行优先级排序,从而保证对关键信息的及时处理。在每次执行时,该算法会根据优先级队列中的顺序依次选取服务,并对选取的服务进行处理。处理完成后会更新消息队列和优先级队列,以确保下一次执行时可以选择到正确的服务,可以用于实现OPC UA通信中CCM信息的传输保障。
3、低优先级内部消息调度模块
IM消息按优先级从高到低可分为PHM、PLM、TIM消息,通常OPC UA系统中穿插着很多持续工作的长工作(如持续监测终端状态信息)和突发的短工作(如向终端发布控制命令),在较为庞大的系统中很难预知每个工作的持续时间,也很难配置每个工作的优先级。因此提出一种基于优先级和运行时间的调度算法来调度不同的IM消息。
首先按照优先级建立多个独立的消息队列,任何时刻,一个工作只能存在于一个队列中。算法总是优先调度高优先级的工作,当每个队列中存在多个工作时,会对这些工作采用轮转调度,由此规定算法的两条基本规则:
规则1:若A的优先级>B的优先级,运行A。A、B表示不同的工作。
规则2:若A的优先级=B的优先级,轮转运行A和B。
我们需要决定在一个工作进程的生命周期中如何改变其优先级。因此需要将不同工作负载的工作区分开:既有运行时间短、频繁放弃CPU的交互型工作,也有需要很多CPU时间、响应时间却不重要的长时间计算密集型工作。因此针对优先级调整算法规则:
规则3:工作进入系统时,放在最高优先级。(最上层队列)
规则4a:工作用完整个时间片后,降低其优先级。(移入下一个队列)
规则4b:如果工作在其时间片内主动释放CPU,则优先级不变。
单个长工作:若OPC UA系统中有一个需要长时间运行的工作,其随着时间的推移在队列中的运行情况如图8所示。该工作首先进入最高优先级(Q2),执行一个10ms的时间片后,调度程序将工作的优先级减1(Q1),在Q1再执行一个时间片后,最终降低优先级进入系统的最低优先级(Q0),并一直留在那里。
交互型工作:当前有两个工作:A(黑色)为长时间运行的CPU密集型工作,B(灰色)为运行时间很短的交互型工作(等待键盘或鼠标输入)。假设A执行一段时间后B到达,其运行情况如图9所示。B在时间T=100ms时到达,并被加入最高优先级队列。由于它的运行时间很短(20ms),经过两个时间片,在被移入最低优先级队列之前,B执行完毕,然后A继续执行。若不知道工作是短工作还是长工作,则在开始的时候就假设其是短工作,并赋予最高优先级。如果确实是短工作,则很快回执行完毕,否则将被慢慢移入低优先级队列,而这时该工作也被认为是长工作。
混合I/O密集型和CPU密集型工作:根据上述规则4b,若在进程时间片用完前主动放弃CPU,则保持该工作的优先级不变,如图10所示。交互型工作B(灰色)每执行1ms便需要进行I/O操作,它与长时间运行的工作A(黑色)竞争CPU。算法会始终保持B在最高优先级,因为B总是让出CPU。若B是交互型工作,就进一步实现了本算法的目标,让交互型工作快速运行。
但到目前为止,这种算法有一些非常严重的缺点:
1)首先,会有饥饿(Starvation)问题。若系统“太多”交互型工作,就会不断占用CPU,导致长工作永远无法得到CPU。即使在这种情况下,我们希望这些长工作也能有所进展。
2)其次,可能会出现愚弄调度程序(Game the Scheduler),使某些工作获得远超公平的资源,极端情况下工作可以几乎独占CPU资源。
为解决上述两个问题,我们对算法进行改进:重写规则4并添加新的规则5。
规则4:一旦工作用完了其在某一层中的时间配额(无论中间主动放弃了多少次CPU),就降低其优先级(移入第一级队列)。
规则5:每经过一段时间S,就将系统中所有工作重新加入最高优先级队列。
图11对比了在规则4a、4b的策略下(图11中的左侧),以及在新的规则4(图11中的右侧)的策略下,同样试图愚弄调度程序的进程的表现。没有规则4的保护时,进程可以在每个时间片结束前发起一起I/O操作,从而垄断CPU时间。有了这样的保护后,不论进程的I/O行为如何,都会慢慢地降低优先级,因而无法获得超过公平的CPU的时间比例。
图12展示了长工作与两个交互型短工作竞争CPU时的行为。左边没有优先级提升,长工作在两个短工作到达后被“饿死”。右边每50ms就有一次优先级提升,因此至少保证长工作会有一些进展,每过50ms就被提升到最高优先级,从而定期获得执行。
因此改进后的基于优先级和运行时间的调度算法规则如下:
规则1:若A的优先级>B的优先级,运行A。
规则2:若A的优先级=B的优先级,轮转运行A和B。
规则3:工作进入系统时,放在最高优先级。(最上层队列)
规则4:一旦工作用完了其在某一层中的时间配额(无论中间主动放弃了多少次CPU),就降低其优先级(移入第一级队列)。
规则5:每经过一段时间S,就将系统中所有工作重新加入最高优先级队列。
基于优先级和运行时间的调度算法流程如图13所示,详细步骤如下:
1)初始化队列:初始化多个不同优先级的队列和运行时间片大小,将所有服务加入最高优先级队列中。
2)接收消息:接收客户端发送的消息,将消息加入到消息队列中。
3)选取服务:从最高优先级的队列中选取服务。
4)处理服务:处理选取的服务,并将处理结果发送给客户端。
5)检查并更新队列:若当前服务的处理时间超过了运行时间,则将其放入下一级队列中并更新全部队列,返回步骤(3);若当前服务在运行时间内被处理完毕,则直接返回步骤(3)并更新全部队列。
6)重复执行:重复执行步骤(3)至步骤(5),直到所有队列都为空或者系统退出。
对于OPC UA系统来说,通过基于优先级和运行时间的调度算法来保证突发的PHM、PLM消息能在最初获得最高优先级,同时兼顾长时间周期性工作的TIM消息的持续进展。有利于保障关键突发信息的及时发送,提高系统整体的稳定性。总结该算法在IM消息中的作用示意图如图14所示。
综上,本实施例提出了一种基于优先级及运行时间的OPC UA关键消息调度方法,包括面向OPC UA服务的分类算法及一种基于优先级的OPC UA队列调度算法,可以提升OPCUA系统关键信息传输的及时性和整个系统的稳定性。
第二实施例
本实施例提供一种电子设备,其包括处理器和存储器;其中,存储器中存储有至少一条指令,所述指令由处理器加载并执行,以实现第一实施例的方法。
该电子设备可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(central processing units,CPU)和一个或一个以上的存储器,其中,存储器中存储有至少一条指令,所述指令由处理器加载并执行上述方法。
第三实施例
本实施例提供一种计算机可读存储介质,该存储介质中存储有至少一条指令,所述指令由处理器加载并执行,以实现上述第一实施例的方法。其中,该计算机可读存储介质可以是ROM、随机存取存储器、CD-ROM、磁带、软盘和光数据存储设备等。其内存储的指令可由终端中的处理器加载并执行上述方法。
此外,需要说明的是,本发明可提供为方法、装置或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质上实施的计算机程序产品的形式。
本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
最后需要说明的是,以上所述是本发明优选实施方式,应当指出,尽管已描述了本发明优选实施例,但对于本技术领域的技术人员来说,一旦得知了本发明的基本创造性概念,在不脱离本发明所述原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。
Claims (6)
1.一种基于优先级及运行时间的OPC UA关键消息调度方法,其特征在于,所述基于优先级及运行时间的OPC UA关键消息调度方法包括:
根据OPC UA(Object Linking and Embedding for Process Control UnifiedArchitecture,过程控制统一体系结构的对象链接与嵌入)规范定义的服务类型和应用场景,将OPC UA规范定义的由服务生成的消息分为信息消息和通信上下文消息;其中,所述信息消息指的是用于传输设备信息的消息,所述通信上下文消息指的是用于创建、保持以及修改通信上下文的消息;
根据QoS(Quality of Service,服务质量)等级,为OPC UA规范定义的消息设定不同的优先级;其中,在进行调度时,优先级越高的消息越优先进行调度操作,且所述通信上下文消息的优先级高于所述信息消息的优先级;
基于设定的优先级及运行时间,进行OPC UA消息调度。
2.如权利要求1所述的基于优先级及运行时间的OPC UA关键消息调度方法,其特征在于,基于设定的优先级及运行时间,进行OPC UA消息调度,包括:
通过预设算法保证所述通信上下文消息被优先调度;
在所述通信上下文消息全部处理完成后,基于预设规则,采用基于优先级和运行时间的调度算法来调度不同的信息消息。
3.如权利要求2所述的基于优先级及运行时间的OPC UA关键消息调度方法,其特征在于,所述通过预设算法保证所述通信上下文消息被优先调度,包括:
步骤1,将所有服务按照服务对应的优先级加入到优先级队列中;其中,优先级队列根据服务的QoS等级对服务进行优先级排序,且生成通信上下文消息的服务所对应的优先级最高;
步骤2,接收客户端发送的消息,并将接收到的消息按照消息的优先级加入到消息队列中;
步骤3,在优先级队列中选取优先级最高的服务;
步骤4,对选取的服务的消息进行处理,并将处理结果发送给客户端;
步骤5,更新消息队列和优先级队列,如果当前服务还有未处理的消息,则将其放回优先级队列中,并更新优先级队列中的服务的优先级;
步骤6,重复执行步骤3至步骤5,直到消息队列为空或系统退出。
4.如权利要求2所述的基于优先级及运行时间的OPC UA关键消息调度方法,其特征在于,所述信息消息按照优先级分为多种不同类型的消息。
5.如权利要求4所述的基于优先级及运行时间的OPC UA关键消息调度方法,其特征在于,所述预设规则包括:
规则1:若第一服务的优先级>第二服务的优先级,则运行第一服务;
规则2:若第一服务的优先级=第二服务的优先级,则轮转运行第一服务和第二服务;
规则3:服务进入系统时,放在最高优先级;
规则4:一旦服务用完了其在某一层中的时间配额,无论中间主动放弃了多少次CPU,就降低其优先级;
规则5:每经过一段时间,就将系统中所有服务重新加入最高优先级队列。
6.如权利要求5所述的基于优先级及运行时间的OPC UA关键消息调度方法,其特征在于,所述基于预设规则,采用基于优先级和运行时间的调度算法来调度不同的信息消息,包括:
步骤1,初始化多个不同优先级的队列和运行时间片大小,将所有服务加入最高优先级队列中;
步骤2,接收客户端发送的消息,将接收到的消息按照消息的优先级加入到消息队列中;
步骤3,从最高优先级的队列中选取服务;
步骤4,处理选取的服务的消息,并将处理结果发送给客户端;
步骤5,若当前服务的处理时间超过了其对应的运行时间,则将其放入下一级队列中并更新全部队列,返回步骤3;若当前服务的消息在其对应的运行时间内被处理完毕,则直接返回步骤3,并更新全部队列;
步骤6,重复执行步骤3至步骤5,直到所有消息队列都为空或者系统退出。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310846254.4A CN116760784A (zh) | 2023-07-11 | 2023-07-11 | 一种基于优先级及运行时间的opc ua关键消息调度方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310846254.4A CN116760784A (zh) | 2023-07-11 | 2023-07-11 | 一种基于优先级及运行时间的opc ua关键消息调度方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116760784A true CN116760784A (zh) | 2023-09-15 |
Family
ID=87958967
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310846254.4A Pending CN116760784A (zh) | 2023-07-11 | 2023-07-11 | 一种基于优先级及运行时间的opc ua关键消息调度方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116760784A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117076138A (zh) * | 2023-10-17 | 2023-11-17 | 西安羚控电子科技有限公司 | 面向体系仿真的资源跨平台集成和调度方法及装置 |
-
2023
- 2023-07-11 CN CN202310846254.4A patent/CN116760784A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117076138A (zh) * | 2023-10-17 | 2023-11-17 | 西安羚控电子科技有限公司 | 面向体系仿真的资源跨平台集成和调度方法及装置 |
CN117076138B (zh) * | 2023-10-17 | 2024-02-23 | 西安羚控电子科技有限公司 | 面向体系仿真的资源跨平台集成和调度方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106445675B (zh) | 一种b2b平台分布式应用调度与资源分配方法 | |
CN111782355B (zh) | 一种基于混合负载的云计算任务调度方法及系统 | |
CN116760784A (zh) | 一种基于优先级及运行时间的opc ua关键消息调度方法 | |
EP3074826B1 (en) | Offloading human-machine-interaction tasks | |
Li et al. | OPTAS: Decentralized flow monitoring and scheduling for tiny tasks | |
US10944683B1 (en) | Hybrid queue system for request throttling | |
CN105022668B (zh) | 一种作业调度方法及系统 | |
CN112579304A (zh) | 基于分布式平台的资源调度方法、装置、设备及介质 | |
CN107171892B (zh) | 一种基于qt的跨平台数据通信方法及系统 | |
CN110611707A (zh) | 一种任务调度的方法及装置 | |
CN112379992B (zh) | 基于角色的多智能体任务协同消息传递及异常处理方法 | |
CN113608852A (zh) | 任务调度方法、调度模块、推理节点和协同作业系统 | |
CN100477630C (zh) | 一种数据网络中的队列调度方法及装置 | |
Garces-Erice | Building an enterprise service bus for real-time SOA: A messaging middleware stack | |
CN109257303A (zh) | QoS队列调度方法、装置和卫星通信系统 | |
CN105893160B (zh) | 一种多接口数据的调度方法 | |
CN111913799A (zh) | 一种视频流在线分析任务调度方法和计算机设备 | |
CN116089033A (zh) | 一种基于多级异构动态队列的任务调度方法 | |
CN113419842B (zh) | 一种基于JavaScript构建边缘计算微服务的方法、装置 | |
CN109167713A (zh) | 一种can总线控制网络的混合调度方法 | |
CN115509716A (zh) | 任务调度方法、系统及存储介质 | |
CN115766612A (zh) | 一种基于权重转换概率的调度方法及相应的装置 | |
CN115174535A (zh) | 基于Kubernetes实现文件转码POD调度方法、系统、设备及存储介质 | |
CN112612604B (zh) | 基于Actor模型的任务调度方法、装置 | |
Chen et al. | Petri net modeling of the reconfigurable protocol stack for cloud computing control systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |