CN111443898A - 基于优先级队列与有限状态机的流程式控制软件设计方法 - Google Patents
基于优先级队列与有限状态机的流程式控制软件设计方法 Download PDFInfo
- Publication number
- CN111443898A CN111443898A CN201911114859.4A CN201911114859A CN111443898A CN 111443898 A CN111443898 A CN 111443898A CN 201911114859 A CN201911114859 A CN 201911114859A CN 111443898 A CN111443898 A CN 111443898A
- Authority
- CN
- China
- Prior art keywords
- state machine
- task
- external
- real
- state
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/20—Software design
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B19/00—Programme-control systems
- G05B19/02—Programme-control systems electric
- G05B19/04—Programme control other than numerical control, i.e. in sequence controllers or logic controllers
- G05B19/042—Programme control other than numerical control, i.e. in sequence controllers or logic controllers using digital processors
- G05B19/0426—Programming the control sequence
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Automation & Control Theory (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开了一种基于优先级队列与有限状态机的流程式实时控制软件的设计方法,将***划分为实时时钟、外部IO、流程状态机和计算四部分,以临界内存区作为各个部分间的通讯方法;外部IO部分提供通用接口描述方法,使得不同的IO设备的访问方法统一;基于实时时钟在外部IO和流程状态机中的不同使用方法,来实现IO接口的超时控制与流程状态机的实时控制;流程状态机采用有限状态机的模型,将状态转移以IO结果、计算结果与时钟状态挂钩,通过脚本配置的方式描述有限状态机的状态转移关系。本发明描述面对多个不同速度的IO接口的流程式实时控制软件,实现通过脚本配置的方式来完成工作流程的描述,能够极大的提高此类软件的开发效率。
Description
技术领域
本发明属于控制软件开发技术领域,涉及一种基于优先级队列与有限状态机的流程式控制软件设计方法。
背景技术
在控制软件的开发中,经常要面对的场景是:有多个不同速度的IO接口,软件所描述的是流程式的工作,控制软件要满足实时性要求。基于应用场景的通用性,在面对不同的问题时,如果每次软件都是重复开发,就是人力物力的浪费,而且实时性也很难以保障。
因此,提出一种设计方法来描述面对多个不同速度的IO接口的流程式实时控制软件,实现通过脚本配置的方式来完成工作流程的描述,能够极大的提高此类软件的开发效率。
发明内容
(一)发明目的
本发明的目的是:提供一种基于优先级队列与有限状态机的流程式实时控制软件的设计方法,以实现通过脚本配置的方法完成工作流程的描述,并有更方便的实时性控制。
(二)技术方案
为了解决上述技术问题,本发明提供一种基于优先级队列与有限状态机的流程式控制软件设计方法,其特征在于,包括总体设计与各个模块的设计方法;
第一部分,流程式实时控制软件的总体设计
将***划分为实时时钟、外部IO、流程状态机和计算四部分,以临界内存区作为各个部分间的通讯方法;其中每个不同的外部IO设备,实现为一个外部IO收发任务;流程状态机采用单任务下根据每个状态机的优先级,以从高优先级到低优先级的顺序依次循环遍历各个流程状态机,来驱动状态机的运行;外部IO收发任务与计算任务通过查询临界内存区,接收状态机任务下达的交互指令,并将访问或者计算结果回填到临界内存区,反馈给状态机任务;
第二部分,外部IO部分提供通用接口描述方法,使得不同的IO设备的访问方法统一;
第三部分,基于实时时钟在外部IO和流程状态机中的不同使用方法,来实现IO接口的超时控制与流程状态机的实时控制;
第四部分,流程状态机采用有限状态机的模型,将状态转移以IO结果、计算结果与时钟状态挂钩,通过脚本配置的方式描述有限状态机的状态转移关系。
第二部分中,向外部IO收发的每个任务提供一套通用接口描述方法,包括5个方法:
open:启动该外部IO任务,保证状态机在IO异常情况下能够重启IO任务;
close:关闭该外部IO任务,保证状态机在IO异常情况下能够强行关闭IO任务;
send:发送一条信息,抽象为两个参数——发送地址和发送内容,根据具体IO设备实现为不同的数据结构;
recv:接收一条信息,抽象为两个参数——接收地址和接收内容,根据具体IO设备实现为不同的数据结构;
ioctl:实现一些IO设备特殊的操作,抽象为两个参数——操作ID和操作值。
第三部分中,每个外部IO收发任务直接访问实时时钟获取当前的***时间;状态机任务采用若干时间触发运行一次的方式,在状态机内部禁止任何任务等待或者睡眠的操作,所有状态机遍历一次的时间,小于状态机任务的触发间隔时间。
第四部分中,将外部IO的结果、计算结果和时钟是否超时,作为状态转移的条件,在满足状态转移条件后,进行数据处理与任务的派发,切换到下一个状态,如此循环往复。
(三)有益效果
上述技术方案所提供的基于优先级队列与有限状态机的流程式实时控制软件的设计方法,通过脚本配置的方式来完成工作流程的描述,能够极大的提高此类软件的开发效率。
附图说明
图1为本发明实施例提供的流程式实时控制软件的***结构示意图。
具体实施方式
为使本发明的目的、内容、和优点更加清楚,下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。
本发明实施例提供一种基于优先级队列与有限状态机的流程式实时控制软件的设计方法,包括总体设计与各个模块的设计方法。
第一部分,流程式实时控制软件的总体设计。
首先本发明实施例的流程式实时控制软件是运行在如Linux、VxWorks等常见的操作***之上的,以线程或者任务作为CPU调度的基本单位(后文所说的任务即是指CPU调度的基本单位)。
如图1所示,本发明实施例将***划分为实时时钟、外部IO、流程状态机和计算四个部分,以临界内存区作为各个部分间的通讯方法。
其中每个不同的外部IO设备,实现为一个外部IO收发任务。由于现代CPU的常见设计是SMP(Symmetrical Multi-Processing)结构,具有多个计算核心,并且在部分硬件平台可能存在协处理器、显卡等辅助计算硬件,因此计算任务根据CPU核心数量和辅助计算硬件,也会被划分为多个计算任务。为了保证状态控制的尽可能可靠和简单,流程状态机部分的设计采用单任务下根据每个状态机的优先级,以从高优先级到低优先级的顺序依次循环遍历各个流程状态机,来驱动状态机的运行。
外部IO收发任务与计算任务通过查询临界内存区,接收状态机任务下达的交互指令,并将访问或者计算结果回填到临界内存区,反馈给状态机任务。
在整个***的任务中,状态机任务具有最高的优先级,以保证整个***的响应外部变化的实时性。其他外部IO收发任务与计算任务,根据具体工作的优先级绝对任务运行的优先级。
第二部分,外部IO部分提供通用接口描述方法,使得不同的IO设备的访问方法统一。
本发明向外部IO收发的每个任务提供一套通用接口描述方法,共实现以下5个方法:
open:启动该外部IO任务,保证状态机在IO异常情况下能够重启IO任务;
close:关闭该外部IO任务,保证状态机在IO异常情况下能够强行关闭IO任务;
send:发送一条信息,抽象为两个参数——发送地址和发送内容,根据具体IO设备实现为不同的数据结构;
recv:接收一条信息,抽象为两个参数——接收地址和接收内容,根据具体IO设备实现为不同的数据结构;
ioctl:实现一些IO设备特殊的操作,抽象为两个参数——操作ID和操作值
第三部分,基于实时时钟在外部IO和流程状态机中的不同使用方法,来实现IO接口的超时控制与流程状态机的实时控制。
由于一般外部IO设备相对于CPU都是比较慢的设备,都需要超时时间的判定,因此每个外部IO收发任务都能够直接访问实时时钟获取当前的***时间。
状态机任务采用若干时间触发运行一次的方式,在状态机内部禁止任何任务等待或者睡眠的操作,在状态机内部进行的数据操作都必须足够的简单,较为复杂的计算应该实现在计算任务中。并且要保证所有状态机遍历一次的时间,小于状态机任务的触发间隔时间。
第四部分,流程状态机采用有限状态机的模型,将状态转移以IO结果、计算结果与时钟状态挂钩,通过脚本配置的方式描述有限状态机的状态转移关系。
本发明采用有限状态机的模型去抽象工作流程。每个状态的运行,就是检查该状态是否满足状态转移条件。本发明将外部IO的结果、计算结果和时钟是否超时,作为状态转移的条件。在满足状态转移条件后,会进行简单的数据处理与任务的派发(外部IO或者计算任务),切换到下一个状态,如此循环往复。
在外部IO任务和计算任务实现的较为充分的时候,可以实现通过如XML、JSON等静态描述性语言或者LUA、PYTHON等动态脚本语言来描述状态机的状态转移关系。只要对这个描述方法不开放任何包含任务等待或者休眠的内容,就可以保证第三部分所要求的在状态机内部禁止任何任务等待或者睡眠的操作。
由上述技术方案可以看出,本发明仅允许在外部IO中存在任务等待或者睡眠,禁止在状态机任务中任务等待或者睡眠,状态机任务采用定时触发的方式允许,状态机任务优先级最高,保证了实时性;多个采用标准化接口的外部IO收发任务,提高了***在面对不同硬件平台的可移植性,采用有限状态机模型描述工作流程,提高了***在面对不同实际工作流程的描述能力。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。
Claims (4)
1.一种基于优先级队列与有限状态机的流程式控制软件设计方法,其特征在于,包括总体设计与各个模块的设计方法;
第一部分,流程式实时控制软件的总体设计
将***划分为实时时钟、外部IO、流程状态机和计算四部分,以临界内存区作为各个部分间的通讯方法;其中每个不同的外部IO设备,实现为一个外部IO收发任务;流程状态机采用单任务下根据每个状态机的优先级,以从高优先级到低优先级的顺序依次循环遍历各个流程状态机,来驱动状态机的运行;外部IO收发任务与计算任务通过查询临界内存区,接收状态机任务下达的交互指令,并将访问或者计算结果回填到临界内存区,反馈给状态机任务;
第二部分,外部IO部分提供通用接口描述方法,使得不同的IO设备的访问方法统一;
第三部分,基于实时时钟在外部IO和流程状态机中的不同使用方法,来实现IO接口的超时控制与流程状态机的实时控制;
第四部分,流程状态机采用有限状态机的模型,将状态转移以IO结果、计算结果与时钟状态挂钩,通过脚本配置的方式描述有限状态机的状态转移关系。
2.如权利要求1所述的基于优先级队列与有限状态机的流程式控制软件设计方法,其特征在于,第二部分中,向外部IO收发的每个任务提供一套通用接口描述方法,包括5个方法:
open:启动该外部IO任务,保证状态机在IO异常情况下能够重启IO任务;
close:关闭该外部IO任务,保证状态机在IO异常情况下能够强行关闭IO任务;
send:发送一条信息,抽象为两个参数——发送地址和发送内容,根据具体IO设备实现为不同的数据结构;
recv:接收一条信息,抽象为两个参数——接收地址和接收内容,根据具体IO设备实现为不同的数据结构;
ioctl:实现一些IO设备特殊的操作,抽象为两个参数——操作ID和操作值。
3.如权利要求2所述的基于优先级队列与有限状态机的流程式控制软件设计方法,其特征在于,第三部分中,每个外部IO收发任务直接访问实时时钟获取当前的***时间;状态机任务采用若干时间触发运行一次的方式,在状态机内部禁止任何任务等待或者睡眠的操作,所有状态机遍历一次的时间,小于状态机任务的触发间隔时间。
4.如权利要求3所述的基于优先级队列与有限状态机的流程式控制软件设计方法,其特征在于,第四部分中,将外部IO的结果、计算结果和时钟是否超时,作为状态转移的条件,在满足状态转移条件后,进行数据处理与任务的派发,切换到下一个状态,如此循环往复。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911114859.4A CN111443898A (zh) | 2019-11-14 | 2019-11-14 | 基于优先级队列与有限状态机的流程式控制软件设计方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911114859.4A CN111443898A (zh) | 2019-11-14 | 2019-11-14 | 基于优先级队列与有限状态机的流程式控制软件设计方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111443898A true CN111443898A (zh) | 2020-07-24 |
Family
ID=71626871
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911114859.4A Pending CN111443898A (zh) | 2019-11-14 | 2019-11-14 | 基于优先级队列与有限状态机的流程式控制软件设计方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111443898A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112540918A (zh) * | 2020-12-04 | 2021-03-23 | 中国航空工业集团公司成都飞机设计研究所 | 一种基于arinc659总线的多余度飞管计算机同步调试方法 |
CN113076107A (zh) * | 2021-04-13 | 2021-07-06 | 杭州又拍云科技有限公司 | 一种通过有限状态机对日志进行自动采集融合的方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101332816A (zh) * | 2008-06-11 | 2008-12-31 | 山东大学 | 开放式汽车机械式自动变速器电控*** |
CN102685128A (zh) * | 2012-05-09 | 2012-09-19 | 东南大学 | 一种基于状态机的协议构造方法 |
CN103095607A (zh) * | 2013-02-21 | 2013-05-08 | 南京磐能电力科技股份有限公司 | 一种实时优先级以太网控制器实现方法 |
CN103984596A (zh) * | 2014-05-19 | 2014-08-13 | 上海微小卫星工程中心 | 一种星载软件的调度方法及装置 |
CN104516718A (zh) * | 2013-10-07 | 2015-04-15 | 德克萨斯仪器德国股份有限公司 | 流水线式有限状态机 |
CN109254763A (zh) * | 2018-09-13 | 2019-01-22 | 中国核动力研究设计院 | 一种基于有限状态机的核电厂控制软件设计方法 |
-
2019
- 2019-11-14 CN CN201911114859.4A patent/CN111443898A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101332816A (zh) * | 2008-06-11 | 2008-12-31 | 山东大学 | 开放式汽车机械式自动变速器电控*** |
CN102685128A (zh) * | 2012-05-09 | 2012-09-19 | 东南大学 | 一种基于状态机的协议构造方法 |
CN103095607A (zh) * | 2013-02-21 | 2013-05-08 | 南京磐能电力科技股份有限公司 | 一种实时优先级以太网控制器实现方法 |
CN104516718A (zh) * | 2013-10-07 | 2015-04-15 | 德克萨斯仪器德国股份有限公司 | 流水线式有限状态机 |
CN103984596A (zh) * | 2014-05-19 | 2014-08-13 | 上海微小卫星工程中心 | 一种星载软件的调度方法及装置 |
CN109254763A (zh) * | 2018-09-13 | 2019-01-22 | 中国核动力研究设计院 | 一种基于有限状态机的核电厂控制软件设计方法 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112540918A (zh) * | 2020-12-04 | 2021-03-23 | 中国航空工业集团公司成都飞机设计研究所 | 一种基于arinc659总线的多余度飞管计算机同步调试方法 |
CN113076107A (zh) * | 2021-04-13 | 2021-07-06 | 杭州又拍云科技有限公司 | 一种通过有限状态机对日志进行自动采集融合的方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107729139B (zh) | 一种并发获取资源的方法和装置 | |
US10877766B2 (en) | Embedded scheduling of hardware resources for hardware acceleration | |
CN106358003A (zh) | 一种基于线程级流水线的视频分析加速方法 | |
CN109358956B (zh) | 服务调用方法 | |
CN102567090B (zh) | 在计算机处理器中创建执行线程的方法和*** | |
US11941514B2 (en) | Method for execution of computational graph in neural network model and apparatus thereof | |
US20240143392A1 (en) | Task scheduling method, chip, and electronic device | |
CN102902589A (zh) | 一种集群mic作业的管理及调度方法 | |
JP2003263331A (ja) | マルチプロセッサシステム | |
US10942771B2 (en) | Method, apparatus and system for multi-module scheduling | |
CN111443898A (zh) | 基于优先级队列与有限状态机的流程式控制软件设计方法 | |
CN111679911A (zh) | 云环境中gpu卡的管理方法、装置、设备及介质 | |
CN115878301A (zh) | 一种数据库网络负载性能的加速框架、加速方法及设备 | |
CN111158876B (zh) | 一种日志处理方法、装置、设备及计算机可读存储介质 | |
CN114153783B (zh) | 多核通信机制的实现方法、***、计算机设备及存储介质 | |
CN111917814B (zh) | 数据发布、订阅方法、装置、设备、***及可读存储介质 | |
CN112949847B (zh) | 神经网络算法加速***、调度***及调度方法 | |
CN111310638B (zh) | 一种数据处理方法、装置及计算机可读存储介质 | |
CN112559403B (zh) | 一种处理器及其中的中断控制器 | |
CN110955461A (zh) | 计算任务的处理方法、装置、***、服务器和存储介质 | |
CN101349975B (zh) | 一种在嵌入式操作***上实现中断底半部机制的方法及装置 | |
WO2018022303A1 (en) | Capturing commands in a multi-engine graphics processing unit | |
US20120173928A1 (en) | Analyzing Simulated Operation Of A Computer | |
CN115981893A (zh) | 消息队列任务处理方法、装置、服务器及存储介质 | |
CN113806250B (zh) | 通用处理器核心与向量部件的协同方法、接口及处理器 |
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 | ||
CB03 | Change of inventor or designer information |
Inventor after: Zhao Jiwei Inventor after: Niu Junhui Inventor after: Li Jiayan Inventor after: Shi Hua Inventor before: Zhao Jiwei |
|
CB03 | Change of inventor or designer information |