CN110825433A - 一种边缘控制设备设计方法 - Google Patents
一种边缘控制设备设计方法 Download PDFInfo
- Publication number
- CN110825433A CN110825433A CN201911041508.5A CN201911041508A CN110825433A CN 110825433 A CN110825433 A CN 110825433A CN 201911041508 A CN201911041508 A CN 201911041508A CN 110825433 A CN110825433 A CN 110825433A
- Authority
- CN
- China
- Prior art keywords
- block
- task
- execution
- statement
- current
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- 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/05—Programmable logic controllers, e.g. simulating logic interconnections of signals according to ladder diagrams or function charts
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02P—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
- Y02P90/00—Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
- Y02P90/02—Total factory control, e.g. smart factories, flexible manufacturing systems [FMS] or integrated manufacturing systems [IMS]
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Automation & Control Theory (AREA)
- Stored Programmes (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明公开了一种边缘控制设备设计方法,属于工业控制领域。本发明基于边缘控制设备的通信层实现服务器端控制指令的下发,基于其上固件在开机时对指令进行分析、执行;从而使得边缘控制设备具有更加灵活的配置方式,避免了重新编译固件,满足了复杂场景下的应用需求;且通信层使用命令数组对设备进行数据采集,避免了复杂的固件开发,避免了服务器下发采集命令的方式,减轻了服务器的压力;服务器端下发的控制指令被打包成执行块,并连接到任务树中,可以灵活执行;以及使用任务树形式对各种任务块进行连接,并按照控制指令执行;且控制器与网络的融合方式,使得远程数据采集与现场控制有机结合,既能减轻服务器的压力,又保证了实时控制需求。
Description
技术领域
本发明属于工业控制领域,具体属于一种边缘控制设备设计方法。
背景技术
可编程逻辑控制器(以下简称PLC)是工业控制领域常用的设备,具备有灵活配置,快速适应不同工况,根据不同工序调整控制流程的功能。
然而随着智能制造概念的普及,传统的PLC面临着挑战,生产线上普遍存在远程控制,异地操作的需求,同时一些复杂的数据分析需要积累大量的数据,对设备提出了具备网络通信的需求。
传统PLC的另外一个弊端是必须对PLC的指令进行编译,作为固件下载到芯片里,这对远程操作,灵活配置的要求比较高,生产线管理复杂,不可能对每个PLC都重新编译固件。
而市面上的物联网网关虽然有数据采集,传输功能,但普遍的控制功能较弱,或者开发复杂,不能适应现场工控的要求。
如果将PLC控制和物联网传输这两方面都能很好的兼顾,最好的方式是用C语言写固件,但这种方式开发难度大,工作量高,实施也不灵活。
发明内容
本发明的发明目的在于:针对上述存在的问题,提供一种基于边缘计算的物联网型的控制器(BYCON)设计方法,从而提高工控现场的灵活性和数据收集,远程控制能力。
本发明的边缘控制设备设计方法,包括下列步骤:
设置边缘控制设备的架构包括:设备接口层、控制层和通信层;
其中,设备接口层用于连接外部设备;
控制层,基于设备接口层获取外部设备的状态,基于预置的控制逻辑进行运算和处理,包括采集指令管理模块,BYCON控制模块和运算单元;
其中,采集指令管理模块用于接收和存储来自服务器的控制指令;BYCON控制模块用于实现预置的控制逻辑;运算单元用于控制指令的运算处理;
通信层,用于与服务器的通信交互,交互的数据信息包括外部设备的状态、控制逻辑进行运算和处理的结果,以及控制指令;
所述边缘控制设备的BYCON控制模块还包括BYCON解析器,用于解析来自服务器的BYCON语句,获取控制指令并执行;即BYCON解析器将BYCON语句解释成二进制代码,以任务块的形式存在任务树中,BYCON控制模块以遍历任务树的形式来执行控制指令;
将边缘控制设备的基于控制指令完成的每个控制过程具体设置为:
用任务表示每个完整的控制过程,并用BYCON语句描述每个任务,任务的描述信息包括:任务名、任务属性信息;
其中任务属性信息包括:触发条件、触发条件参数、运行状态、根任务块和阻塞参数;即在关键词TASK与ENDTASK之间声明任务的描述信息,从而得到每个任务的BYCON语句描述;即关键词TASK用于表示任务开始,关键词ENDTASK表示任务结束。
将每个任务的任务属性信息以数组形式保存,并将每个任务包括的多个任务块以任务树的形式进行任务的执行描述,基于任务属性信息中的跟任务块执行每个任务对应的任务树;
其中,任务树的生成过程为:
将任务包括的多个任务块划分为三类:执行块,判断块,循环块;
其中,执行块用于描述当前任务的一段顺序指令执行过程(即执行块用于描述当前任务的一段执行语句);判断块用于描述当前任务中条件执行的指令,控制模块根据判断结果来决定进入左子树还是右子树的指令(即判定块用于描述当前任务的一段判断语句);循环块用于描述当前任务的一个满足循环条件的执行块,控制模块根据循环条件来决定进入左子树还是右子树执行(即判定块用于描述当前任务的一段循环语句);
其中,执行语句包括:继电器操作,AD/DA操作,数值运算等所有非判断及非循环的语句;判断语句为关键词IF开头的语句,包含了判断条件;循环语句为关键词FOR开头的语句,包含循环条件;
每个任务块之间通过指针联系,各均包括三个指针:父指针,左指针,右指针;且执行块还包括一个指令组指针,用于指向当前执行块的指令组,当执行块运行时,所述指令会顺序执行各个指令;
将每个任务块作为任务树的一个节点,且每个节点的右子树为平行分支(平行任务块),左子树为嵌套分支(嵌套任务块);其中,平行分支是指跟父任务块处于同等地位的分支;嵌入分支是指由判断块或循环块引发的内部执行的分支;
若当前任务块为执行块,则该执行块对应的节点没有左子树;当前节点执行完成后就移到其右子树;
若当前任务块对应的节点的右子树是判断块,计算判断条件是否满足,如果满足,则转向当前节点的左子树执行,否则转向其右子树;
若当前任务块对应的节点的右子树是循环块,则计算其循环次数,当前节点的左子树是该循环块的执行块,其执行次数由循环块的循环次数决定。
进一步的,BYCON解析器中维护两个变量:当前任务状态和当前任务块指针;
其中,BYCON解析器在解析过程中,将任务状态划分为S0~S5六种状态,对任务状态的处理划分为6种变迁T0-T5,具体为:
S0:读到关键词TASK,开始分配新任务;
S1:解析任务执行语句并将解析得到的任务执行语句存入现有的执行块中,或者生成新的执行块;
S2:解析IF语句(条件语句)并将解析得到的条件语句存入最近的判断块中;
S3:解析FOR语句(循环语句),并将解析得到的循环语句存入最近的循环块中;
S4:结束当前分支,回溯到上一个分叉点;
S5:读到关键词ENDTASK,结束当前任务;
其中,分叉点表示同时存在左、右子树的节点;因为每个判断块和循环块的还可以继续嵌套判断块和循环块,原则上这些任务块的所对应的节点的右侧(右子树)是平行分支,左侧(左子树)是嵌套分支,为了便于描述,将其统称为分叉块,即分叉点。
同时;由于在关键词TASK与ENDTASK之间的BYCON语句需要逐条分析,不同的语句,产生不同的变迁,这些变迁根据当前的状态,来决定下一个状态,并执行相关操作。本发明中,BYCON语句涉及的变迁包括:
T0:读入任务开始的语句,即读入关键词TASK;
T1:读入执行语句;
T2:读入判断语句的开始关键词,即读入IF语句;
T3:读入判断语句的结束关键词,即读入ENDIF语句;
T4:读入循环语句的开始关键词,即FOR语句;
T5:读入循环语句的结束关键词,即ENDFOR语句;
T6:读入关键词ENDTASK;
且变迁T0~T5对应的运行状态的改变具体为:
T0:S0;
T1:S0->S1,S1->S1,S2->S1,S3->S1,S4->S1;
T2:S0->S2,S1->S2,S3->S2,S4->S2;
T4:S0->S3,S1->S3,S2->S3,S4->S3;
T3或T5:S1->S4,S4->S4。
T6:结束,进入状态S5;
对以上变迁的详细解释:
T0:当收到TASK语句时,进入S0状态;
T1:收到执行语句时,根据但前状态来决定进入S1状态的操作:
T2变迁为收到IF判断语句,根据当前状态,采取不同操作进入S2状态:
T4变迁为收到FOR循环语句,其处理过程与T2类似,即:
T3和T5变迁为收到ENDIF及ENDFOR语句,它们意味着判断块或循环块的结束,BYCON解析器将追溯到最近的分叉点,结束该分叉点的左子树,新来的语句(即BYCON解析器最近解析的BYCON语句)将会添加到该分叉点的右子树。
T6为ENDTASK,意味着结束解析过程,即将指令(可行性指令)以树形结构存入内存中。
综上所述,由于采用了上述技术方案,本发明的有益效果是:
本发明基于通信层实现服务器端控制指令的下发,当边缘控制设备在线下载具体的操作指令到本地后,通过边缘控制设备上固件在开机时对指令进行分析、执行;从而使得本发明的边缘控制设备具有更加灵活的配置方式,避免了重新编译固件,满足了复杂场景下的应用需求;同时,本发明的通信层使用命令数组对设备进行数据采集,避免了复杂的固件开发,避免了服务器下发采集命令的方式,减轻了服务器的压力;本发明中服务器端下发的控制指令被打包成执行块,并连接到任务树中,可以灵活执行;以及使用任务树形式对各种任务块进行连接,并按照控制指令执行;且控制器与网络的融合方式,使得远程数据采集与现场控制有机结合,既能减轻服务器的压力,又保证了实时控制需求,从而使得本发明的边缘控制设备实现了控制,采集,网络,信号处理的有机结合,并能够方便编程。
附图说明
图1为本发明的边缘控制设备的架构示意图;
图2为本发明的边缘控制设备工作时的网络结构示意图;
图3为边缘控制设备的任务执行示意图;
图4为本发明的任务树结构示意图;
图5为任务的运行状态的示意图;
图6为产生T1变迁时,根据当前不同的运行状态,产生不同的操作方式过程示意图;
图7为产生T2或T4变迁,根据当前不同的运行状态,产生不同的操作方式过程示意图;
图8为实施例中,本发明的边缘控制设备的硬件板卡结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面结合实施方式和附图,对本发明作进一步地详细描述。
本发明的边缘控制设备设计方法,通过限定边缘控制设备的整体结构和指令集,将控制过程、信号处理和远程数据传输有机结合,从而提高工控现场的灵活性和数据收集,远程控制能力。
参见图1,本发明的边缘控制设备(即物联网终端)的架构包括三层:
设备接口层:该层完成对各种设备的操作,它的特征是通过个各种总线,继电器等采集数据,操作设备。这层有两种模块:间接模块和直接模块。直接模块为继电器,数模/模数转换转换器(ADC、DAC),IO输入输出端(如图1中所示的GPIO端口)等,特点是直接对外部的电压,开关进行操作,BYCON会对它们直接控制;间接模块为各种总线,如常见的uart,spi,iic等,在数据传输中经常用到,有时BYCON也会使用这些模块进行控制。
(本地)控制层:该层包含采集指令管理,BYCON控制,运算单元,它根据输入的数据得到外部设备的状态,根据事先定好的控制逻辑进行运算和操作,PLC通常对继电器等设备操作较多,有时也需要将这些状态发送给远程服务器,在本发明中,这些连接到继电器,模拟量等的设备通过BYCON模块处理,并将结果发送给通信层,由通信层处理。
通信层:该层完成对远程服务器的数据收发。工艺逻辑指令下发后,控制层会在本地完成各种计算和控制动作,并及时向通信层汇报。通信链路可选择有线,无线,4G等网络。
与传统的PLC不同,本发明更强调网络功能,但通信层把数据发给服务器后,服务器需要根据情况判断各个部件的运行状况,并且可以根据实际情况调整工艺流程从而通过通信层下发到对应的边缘控制设备,以便达到系统协调,完整地工作。
参见图2,本发明的边缘控制设备工作时的网络结构。各个控制设备能够在服务器的指挥下,通过网络结构进行数据分发和任务的调配。BYCON的语句在用户设计好以后,直接以文本形式下载到终端的控制器的微控制单元(MCU)中,当控制器上电时,由固件中的BYCON解析器对这些语句进行解析,能够执行的指令放置在片上内存中,供实时执行时使用。图2中,INX和OUTY分别表示输入和输出数据。
边缘控制设备的任务控制模型。
任务代表控制流程中一个完整的控制过程,本发明中,任务根据触发条件分为初始化任务,定时任务,继电器触发任务和网络触发任务;其中在BYCON语句中,任务的表示格式为:
TASK<taskname>:<condition>
ENDTASK
其中,<taskname>表示任务名,<condition>为触发条件,关键词TASK与ENDTASK之间是任务的具体内容。
触发条件<condition>的选值内容一般如表1示:
表1
内容 | 举例 | 含义 | 其它 |
初始化任务 | INIT | 开机时执行 | |
继电器触发 | INX0 | 第0个继电器触发任务 | |
定时器触发 | 500ms | 每500毫秒执行一次 | 单位可以是ms或s |
网络触发 | NET_ON/NET_OFF | 网络启动或终止 |
任务的触发可以是单独,也可以是并行,即同一个任务可以有多个触发条件,每个触发条件由符号“:”隔开,如:TASK MOTOR:INIT:INX1,即任务MOTOR可以被初始化,也可以被INX1继电器触发。
每个任务具有如表2所示的属性:
表2
其中,任务的触发条件:invoke_cond的字节数如表3所示:
表3
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
保留 | 保留 | 内部命令触发 | 网络触发 | 保留 | 继电器触发 | 定时触发 | 初始执行 |
其中,“保留”表示暂不赋予具体的触发条件,作为后续扩展用。内部命令触发是指由内部指令导致的触发,与表1中所列的四类触发条件不同。
该字节中,对应的bit位置为1(即将一个字节的各bit位置由低位向高位依次编号为0~7),则标明该任务是何种触发条件。
在本发明中,各个任务的属性数据是放在一个数组里,然后由属性中的根任务块(Tree_root)执行具体的任务树,如图3所示。
其中,任务树及其生成方式具体为:
任务树形数据结构是本发明的边缘控制设备的设计的关键,BYCON语句以任务为基本单元,每个任务完成相应的边缘控制过程,以TASK关键词开始,以ENDTASK关键词结束。
每个任务内部,分别由各种任务块(Task Block)组成,简称TB;任务块可分为执行块,判断块,循环块,每个任务块的内部包括3个指针:父指针,左指针,右指针,通过指针与其它TB联系;且执行块还包括1个指令组指针,用于指向该块(当前执行块)的指令组,当执行块运行时,该组指令会顺序执行各个指令。
如果一个任务仅包含一个执行块,则该任务为简单任务,不需要复杂的数据结构。但逻辑运行往往都需要对各种条件进行判断,执行线索又需要各种循环,嵌套执行等,判断和循环语句里面又有可能有执行块,对这个任务的管理需要用树形结构来管理。
一个典型的任务树,其结构如图4所示,该任务树具有如下特点:
1.每个TB为一个节点,每个节点的右子树是平行分支,左子树是嵌套分支;
2.平行分支是指跟父块处于同等地位的分支,嵌入分支是指由判断块或循环块引发的内部执行的分支;
3.执行块没有左子树,执行完就移到右子树;
4.如果当前任务块是判断块,计算判断条件是否满足,如果满足,则转向其左子树执行,否则转向其右子树;
5.如果当前任务块是循环块,则计算其循环次数,左子树是本循环体内的执行块,它的执行次数由循环块决定,循环执行完毕时,返回到该节点,然后转移到该节点的右子树执行;
每个判断块和循环块可继续嵌套判断块和循环块,原则上这些任务块的右侧是平行分支,左侧是嵌套分支,并将其统称分叉块;在运行时,BYCON解析器需要根据每行的情况进行判断,如果遇到判断或循环语句,则当前任务块的左子树指向嵌套块。
典型的,一个任务中,一开始都是执行语句,则BYCON解析器生成的执行TB就一直增加,直到遇到IF或FOR语句等分叉语句,该执行TB才结束,并生成一个分叉块,执行TB的右指针指向本分叉块,分叉块内部的执行语句对应另外一个执行TB,并连到分叉块的左指针,当分叉结束时(遇到ENDIF或ENDFOR分叉结束),后续的语句会形成新的TB,并连到分叉块的右指针。
本发明中,任务树的生成方式具体为:
生成任务树是通过对BYCON语句的读取和解析来生成的,在解析过程中,BYCON解析器会逐行读入文本语句,判断该语句性质,来决定语句的执行方式。
进一步的,BYCON解析器中维持着两个变量:当前状态:Current_st,当前TB指针:CurrentTB;
参见图5,本具体实施方式中,将任务的运行状态分为6个,分别为:
S0:读到TASK关键词,开始分配新任务;
S1:分析执行语句,将其放入现有执行块中,或者生成新的执行块;
S2:分析IF语句,放入判断块中;
S3:分析FOR语句,放入循环块中;
S4:结束当前分支,回溯到上一个分叉点;
S5:读到ENDTASK语句,结束当前任务;
TASK与ENDTASK之间的语句需要逐条分析,不同的语句,产生不同的变迁,这些变迁根据当前的状态,来决定下一个状态,并执行相关操作。本发明中,涉及下述6种变迁:
T0:读到TASK语句;
T1:读入执行语句;
T2:读入IF语句;
T3:读入ENDIF语句;
T4:读入FOR语句;
T5:读入ENDFOR语句;
T6:读入ENDTASK;
根据图5所示的状态图,每种变迁对应的状态的改变具体为:
T0:S0;
T1:S0->S1,S1->S1,S2->S1,S3->S1,S4->S1;
T2:S0->S2,S1->S2,S3->S2,S4->S2;
T4:S0->S3,S1->S3,S2->S3,S4->S3;
T3或T5:S1->S4,S4->S4;
当BYCON编译器读到执行语句时,产生T1变迁,该变迁根据当前不同的运行状态,产生不同的操作方式,如图6所示;
读到T1变迁,首先判断当前状态是否为S0,若是,则生成新的执行块(也可称为执行TB),并将指令(当前解析得到的BYCON语句)添加到所生成的执行块中,以及将所生成的新执行块连入跟块(根节点)的右指针,且当前状态更新为S1;
否则,再判断当前状态是否为S1,若是,则在执行块中添加新指令,即将当前解析得到的BYCON语句为执行语句(执行指令),将其直接添加到当前执行块中;
否则,再判断当前状态是否为S2,若是,则生成新的执行块,并将指令添加到该执行块中;以及将新生成的执行块连入当前判断块的左指针,且当前状态更新为S1;
否则,再判断当前状态是否为S3,若是,则生成新的执行块,并将指令添加到该执行块中;以及将新生成的执行块连入当前循环块的左指针,且当前状态更新为S1;
否则,再判断当前状态是否为S4,若是,则生成新的执行块,并将指令添加到该执行块中;以及将新生成的执行块连入当前任务块的右指针,且当前状态更新为S1;否则,结束。即当前状态为不支持的状态,结束处理。
当读到IF或FOR语句时,产生T2或T4变迁,根据不同的状态,进行不同操作,两者操作类似,这里以T2变迁为例,具体处理过程如图7所示:
当读到IF语句时,产生T2变迁;
首先生成判断块,然后判断当前状态是否为S0,若是,则将当前生成的判断块接入根块(根节点)的右指针,且当前状态更新为S2,结束;
否则,再判断当前状态是否为S1,若是,则结束当前执行块,并将当前生成的判断块连入当前执行块的右指针,且当前状态更新为S2,结束;
否则,再判断当前状态是否为S3,若是,则将当前生成的判断块连入当前循环块的左指针,且当前状态更新为S2,结束;
否则,再判断当前状态是否为S4,若是,则将当前生成的判断块连入当前任务块的右指针;否则,结束。即当前状态为不支持的状态,结束处理。
实施例
本实施例采用以stm32f407芯片为主MCU的板子来实现边缘控制设备(接入服务器的物联网终端),参见图8,其硬件板卡的结构包括核心板和扩展板,其中,核心板包括MCU、片外flash存储和片外SRAM内存;扩展板,即图中所示的继电器和网络模块,由各种总线接口组成。
在实现时,定期执行的逻辑由通信层决定,具体对设备的操作在PLC控制层完成,从而灵活地完成对外部设备的控制,并能够完成对设备的数据采集。
在固件上,任务语句采用任务链形式实现,每条任务链对应一个任务,任务数由任务头(TASK TREE HEADER)和实体(ENTITY)组成,任务头数组记录了终端(接入服务器的物联网终端)上的任务列表,任务头包含任务名,触发条件,以及指向第一个实体的指针。
实体(即任务块)分为执行体,判断体,循环体三种类型,其中,IF...THEN...ENDIF包含的语句是判断体;FOR...ENDFOR包含的语句是循环体,被这两种语句隔开的是执行体,一个任务里可以有多个执行体,判断体和循环体。
本实施例中,在固件中设置了程序翻译器(即BYCON解析器),将读到的执行语句翻译成指令,由这些指令组成各种类型的执行体,保存在片上内存中,根据不同的触发条件执行。
以下是实现本实施例必要的数据结构,结构体INSTRU用于存放指令和操作数,算术运算和对继电器的操作最终会转化为操作命令,这个操作命令以INSRU结构存在内存中。
执行实体由不同的指令组成,具体为:
结构体Execute_Entity用于存储BYCON解析后的执行语句,具体语句表示为:
其中,“typedef struct Execute_Entity”表示定义一个名称为“Execute_Entity”的结构体;EXE_ENT表示执行实体,包含了这个实体有多少指令,长度,指令数组的起始地址等参数;
结构体JUDGE_ENT是翻译IF...THEN...ENDIF的判断体结构,这个语句包里的指令翻译后被放入这个结构里面,该结构将判断条件分成操作符,左右表达式三部分,如果判断成立,则执行左边指针所指的分支,否则执行右边的分支,结构体JUDGE_ENT具体的语句表示为:
其中,JUDGE_ENT表示判断的条件,在执行到这个节点时,控制模块会分别计算出左右表达式的值,然后根据op_code内容进行比较运算,由比较结果决定是进入左子树还是右子树执行。
循环体是对FOR...ENDFOR语句的翻译,与判断体类似,循环条件分成三段,分别是起始条件,终止条件,步进长度,循环体内的语句存放在该循环体的执行体中。与IF判断块类似,如果循环条件满足,则执行左侧分支,否则执行右侧分支。循环体的具体的语句表示为:
其中,FOR_ENT表示存放的循环节点的数据,包括起始条件,终止条件及步长。
在对代码进行翻译时,每个任务都是以关键词TASK开始,以关键词ENDTASK结束,顺序执行的代码在碰到IF或FOR后,该执行体结束,并将翻译后的指令码结构体链接入该任务的TASK_TREE,对与判断体和循环体,处理方式与此类似,并存入到该树中。
树节点的数据结构的语句表示为:
其中,TREENODE表示树的节点结构,即任务块的结构,包含了父指针,左右子树的指针,Entity_type标明了该任务块的类型,如果是执行块,Entity_address指向EXE_ENT的地址,如果是判断块,Entity_address指向JUDGE_ENT的地址,如果是循环块,Entity_address指向FOR_ENT的地址。
定时任务的触发方法:
在固件上,定时器用来执行实施中的定时任务,每当定时时刻到来,固件会检查任务表中的定时任务,如果某个任务达到触发条件,则按照该任务的执行链,逐个取出各个执行实体,并执行里面的指令。
输入继电器的触发方法:
在本实施例中,输入继电器采用光耦开关实现,光耦开关平时处于常开状态,高电平脚连接MCU的GPIO(General-purpose input/outpu)管脚,当外接有输入时,光耦开关闭合,GPIO产生低电平触发中断,该中断的ISR(中断服务例程)会遍历任务列表,如果发现跟此管脚相关的触发任务,则执行该任务。
网络命令的触发方法:
与前述被触发的方式不同,这种方式是由网络发来的指令执行,在固件中有网络接收远程任务的功能,这些功能能够在线被翻译成本方案描述的执行体,并存入终端的任务列表,远程服务器可以通过网络指令启动该任务执行。
综上,基于本发明的边缘控制设备的设计方法所实现的对接入服务器的终端的控制处理,能带来下述有益效果:
(1)在操作指令的解释执行处理过程中,当边缘控制设备的硬件板卡在线接收到操作指令到本地后,由板上固件在开机时对指令进行分析、执行;从而使得本发明的边缘控制设备具有更加灵活的配置方式,避免了重新编译固件,满足了复杂场景下的应用需求;
(2)通信层使用命令数组对设备进行数据采集,避免了复杂的固件开发,避免了服务器下发采集命令的方式,减轻了服务器的压力;
(3)指令被打包成执行块,并连接到任务树中,可以灵活执行;
(4)使用任务树形式对各种任务块进行连接,并按照指令执行;
(5)控制器与网络的融合方式,使得远程数据采集与现场控制有机结合,既能减轻服务器的压力,又保证了实时控制需求;
(6)板上可以集成快速傅立叶变换(FFT),有限冲击滤波(FIR),无限冲击滤波(IIR)等数字信号处理DSP算法,可通过指令的方式调用这个操作,具备实时信号处理的功能;
(7)实现了控制,采集,网络,信号处理的有机结合,并能够方便编程。
以上所述,仅为本发明的具体实施方式,本说明书中所公开的任一特征,除非特别叙述,均可被其他等效或具有类似目的的替代特征加以替换;所公开的所有特征、或所有方法或过程中的步骤,除了互相排斥的特征和/或步骤以外,均可以任何方式组合。
Claims (2)
1.一种边缘控制设备设计方法,其特征在于,包括下列步骤:
设置边缘控制设备的架构包括:设备接口层、控制层和通信层;
其中,设备接口层用于连接外部设备;
控制层,基于设备接口层获取外部设备的状态,基于预置的控制逻辑进行运算和处理,包括采集指令管理模块,BYCON控制模块和运算单元;
通信层,用于与服务器的通信交互,交互的数据信息包括外部设备的状态、控制逻辑进行运算和处理的结果,以及控制指令;
所述边缘控制设备的BYCON控制模块还包括BYCON解析器,用于解析来自服务器的BYCON语句;
将边缘控制设备的基于控制指令完成的每个控制过程具体设置为:
用任务表示每个完整的控制过程,并用BYCON语句描述每个任务,任务的描述信息包括:任务名、任务属性信息;
其中任务属性信息包括:触发条件、触发条件参数、运行状态、根任务块和阻塞参数;
将每个任务的任务属性信息以数组形式保存,并将每个任务包括的多个任务块以任务树的形式进行任务的执行描述,基于任务属性信息中的跟任务块执行每个任务对应的任务树;
其中,任务树的生成过程为:
将任务包括的多个任务块划分为三类:执行块,判断块,循环块;
其中,执行块用于描述当前任务的一段顺序指令执行过程;判断块用于描述当前任务中条件执行的指令,BYCON控制模块根据判断结果来决定进入左子树还是右子树的指令;循环块用于描述当前任务的一个满足循环条件的执行块,控制模块根据循环条件来决定进入左子树还是右子树执行;
每个任务块之间通过指针联系,各均包括三个指针:父指针,左指针,右指针;且执行块还包括一个指令组指针,用于指向当前执行块的指令组,当执行块运行时,所述指令会顺序执行各个指令;
将每个任务块作为任务树的一个节点,且每个节点的右子树为平行分支,左子树为嵌套分支;其中,平行分支是指跟父任务块处于同等地位的分支;嵌入分支是指由判断块或循环块引发的内部执行的分支;
若当前任务块为执行块,则该执行块对应的节点没有左子树;当前节点执行完成后就移到其右子树;
若当前任务块对应的节点的右子树是判断块,计算判断条件是否满足,如果满足,则转向当前节点的左子树执行,否则转向其右子树;
若当前任务块对应的节点的右子树是循环块,则计算其循环次数,当前节点的左子树是该循环块的执行块,其执行次数由循环块的循环次数决定。
2.如权利要求1所述的方法,其特征在于BYCON解析器中维护两个变量:当前任务状态和当前任务块指针;
BYCON解析器在解析处理过程中,将任务状态划分为S0~S5六种,以及将任务状态的处理划分为六种变迁T0-T5;
其中,六种任务状态具体为:
S0:读到表示任务开始的关键词TASK,开始分配新任务并生成该新任务的任务树根部;
S1:解析任务执行语句并将解析得到的任务执行语句存入已有的执行块中,或者新生成的执行块;
S2:解析条件语句,并将解析得到的条件语句存入最近的判断块中;
S3:解析循环语句,并将解析得到的循环语句存入最近的循环块中;
S4:结束当前分支,回溯到上一个分叉点;
S5:读到表示任务结束的关键词ENDTASK,结束当前任务;
其中,分叉点表示同时存在左、右子树的节点;
六种变迁T0-T5具体为:
T0:读入任务语句的开始关键词;
T1:读入执行语句;
T2:读入判断语句的开始关键词;
T3:读入判断语句的结束关键词;
T4:读入循环语句的开始关键词;
T5:读入循环语句的结束关键词;
T6:读入任务语句的结束关键词;
其中,变迁T0-T5的具体操作为:
T0:当收到TASK语句时,进入S0状态;
T1:收到执行语句时,根据当前任务状态来决定进入下一任务状态S1的具体操作:
若当前任务状态为S0,则进入执行块操作;
若当前任务状态为S1,即当前任务块为执行块,则将解析得到的任务执行语句存入当前执行块;
若当前任务状态为S2,即当前任务块为判断块,则生成新的执行块,用于存放解析得到的任务执行语句,并将该新的执行块加到当前任务块的左子树,执行语句为该新的执行块的第一条语句,并将当前任务块的指针指向该新的执行块;
若当前任务状态为S3,即当前任务块为循环块,则生成新的执行块,用于存放解析得到的任务执行语句,并将该新的执行块加到当前任务子块的左子树,执行语句为该新的执行块的第一条语句,并将当前任务块的指针指向该新的执行块;
若当前任务状态为S4,即上个BYCON语句为条件或循环的结束关键词,当前任务块指针已经回溯到最近的分叉点,重新生成新的执行块,并将该新的执行块加到分叉点的右子树,将当前任务块指针指向该新的执行块;
T2:当收到判断语句的开始关键词时,根据当前任务状态,采取不同操作进入下一任务状态S2:
若当前任务状态为S0,则进入判断块操作,提取判断条件;
若当前任务状态为S1,即当前任务块为执行块,结束该执行块,生成新的判断块并加到该执行块的右子树,且置该执行块的左子树为空;
若当前任务状态为S3,即当前任务块为循环块,生成新的判断块,并将该判断块加到该循环块的左子树,以及将当前任务块的指针指向该判断块;
若当前任务状态为S4,即上个BYCON语句为条件或循环的结束关键词,当前任务块指针已经回溯到最近的分叉点,生成新的判断块,并将该判断块加到分叉点的右子树,将当前任务块指的针指向该判断块;
T4:当收到循环语句的开始关键词时,根据当前任务状态,采取不同操作进入下一任务状态S3:
若当前任务状态为S0,则进入循环块操作,提取循环条件;
若当前任务状态为S1,即当前任务块为执行块,结束该执行块,生成新的循环块并加到该执行块的右子树,且置该执行块的左子树为空;
若当前任务状态为S2,即当前任务块为判断块,生成新的循环块,并将该循环块加到该判断块的左子树,以及将当前任务块的指针指向该循环块;
若当前任务状态为S4,即上个BYCON语句为条件或循环的结束关键词,当前任务块指针已经回溯到最近的分叉点,生成新的循环块,并将该循环块加到分叉点的右子树,将当前任务块指的针指向该循环块;
T3或T5:当收到条件或循环的结束关键词的语句时,BYCON解析器将追溯到最近的分叉点,结束该分叉点的左子树,且BYCON解析器将最近解析的BYCON语句存入该分叉点的右子树。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911041508.5A CN110825433B (zh) | 2019-10-30 | 2019-10-30 | 一种边缘控制设备设计方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911041508.5A CN110825433B (zh) | 2019-10-30 | 2019-10-30 | 一种边缘控制设备设计方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110825433A true CN110825433A (zh) | 2020-02-21 |
CN110825433B CN110825433B (zh) | 2023-04-07 |
Family
ID=69551156
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911041508.5A Active CN110825433B (zh) | 2019-10-30 | 2019-10-30 | 一种边缘控制设备设计方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110825433B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111584011A (zh) * | 2020-04-10 | 2020-08-25 | 中国科学院计算技术研究所 | 面向基因比对的细粒度并行负载特征抽取分析方法及系统 |
CN112995348A (zh) * | 2021-05-12 | 2021-06-18 | 北京金山云网络技术有限公司 | 物联网设备的控制方法、装置、系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070140262A1 (en) * | 2005-12-20 | 2007-06-21 | Jin-Gen Wang | System and method for routing signaling messages in a communication network |
CN109164780A (zh) * | 2018-11-22 | 2019-01-08 | 北京八分量信息科技有限公司 | 一种基于边缘计算的工业现场设备控制方法、装置及系统 |
US20190163533A1 (en) * | 2017-11-27 | 2019-05-30 | Promontory Financial Group Llc | Computing task management using tree structures |
CN109962843A (zh) * | 2017-12-22 | 2019-07-02 | 上海威派格智慧水务股份有限公司 | 物联网网关实现边缘信息处理的方法 |
-
2019
- 2019-10-30 CN CN201911041508.5A patent/CN110825433B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070140262A1 (en) * | 2005-12-20 | 2007-06-21 | Jin-Gen Wang | System and method for routing signaling messages in a communication network |
US20190163533A1 (en) * | 2017-11-27 | 2019-05-30 | Promontory Financial Group Llc | Computing task management using tree structures |
CN109962843A (zh) * | 2017-12-22 | 2019-07-02 | 上海威派格智慧水务股份有限公司 | 物联网网关实现边缘信息处理的方法 |
CN109164780A (zh) * | 2018-11-22 | 2019-01-08 | 北京八分量信息科技有限公司 | 一种基于边缘计算的工业现场设备控制方法、装置及系统 |
Non-Patent Citations (2)
Title |
---|
WEISONG SHI: "Edge Computing:Vision and Challenges" * |
高家骐: "基于边缘计算的鲁棒控制方法研究与实现" * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111584011A (zh) * | 2020-04-10 | 2020-08-25 | 中国科学院计算技术研究所 | 面向基因比对的细粒度并行负载特征抽取分析方法及系统 |
CN111584011B (zh) * | 2020-04-10 | 2023-08-29 | 中国科学院计算技术研究所 | 面向基因比对的细粒度并行负载特征抽取分析方法及系统 |
CN112995348A (zh) * | 2021-05-12 | 2021-06-18 | 北京金山云网络技术有限公司 | 物联网设备的控制方法、装置、系统 |
CN112995348B (zh) * | 2021-05-12 | 2021-09-07 | 北京金山云网络技术有限公司 | 物联网设备的控制方法、装置、系统 |
Also Published As
Publication number | Publication date |
---|---|
CN110825433B (zh) | 2023-04-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109254776B (zh) | 多语言代码编译方法及编译器 | |
CN109143952B (zh) | 可编程逻辑控制器编程语言转换系统 | |
CN111459889B (zh) | 一种用于物联网平台的设备数据模型生成方法和装置 | |
CN107704382B (zh) | 面向Python的函数调用路径生成方法和系统 | |
JP2002099312A (ja) | プログラマブルコントローラおよび制御プログラム開発支援装置 | |
CN108197027B (zh) | 软件性能优化方法、可存储介质、计算机、计算机程序 | |
CN104898546B (zh) | 一种基于soc的plc在线调试系统和方法 | |
CN109976760A (zh) | 一种图形语言的交叉编译方法及交叉编译器 | |
CN110825433B (zh) | 一种边缘控制设备设计方法 | |
JP2001209547A (ja) | ソースコード変換方法、ソースコード変換プログラムを記録した記録媒体及びソースコード変換装置 | |
CN110673854A (zh) | Sas语言编译方法、装置、设备及可读存储介质 | |
CN109032056B (zh) | 可编程逻辑控制器编程语言转换方法 | |
CN116540986A (zh) | 一种基于Web端的文本类编程语言代码编辑器构建方法 | |
CN110347588B (zh) | 软件验证方法、装置、计算机设备和存储介质 | |
CN113050951A (zh) | 基于计算图的协议描述和解码方法 | |
Leonard et al. | Program synthesis from formal requirements specifications using APTS | |
CN116501330A (zh) | 一种基于解耦架构的文本类编程语言编译方法 | |
CN116126304A (zh) | 基于XML的扩展Lustre代码生成方法 | |
EP3996009A1 (en) | Method and apparatus of converting schema in deep learning freamwork, and computer storage medium | |
CN109460225B (zh) | 一种多cpu架构的可视化编译调试系统及方法 | |
CN114115023A (zh) | 一种实现avc组态文件的识别和运行的方法 | |
CN105335153A (zh) | 一种自动生成动态脚本的方法 | |
Asensio et al. | Industrial automation programming environment with a new translation algorithm among IEC 61131–3 languages based on the TC6-XML scheme | |
Sancho-Pradel et al. | System on programmable chip for real-time control implementations | |
CN114840723A (zh) | 一种yaml和下推自动机的正则表达式扩展方法和系统 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |