CN107203380B - 一种sfc程序解释运行方法及装置 - Google Patents
一种sfc程序解释运行方法及装置 Download PDFInfo
- Publication number
- CN107203380B CN107203380B CN201710373651.9A CN201710373651A CN107203380B CN 107203380 B CN107203380 B CN 107203380B CN 201710373651 A CN201710373651 A CN 201710373651A CN 107203380 B CN107203380 B CN 107203380B
- Authority
- CN
- China
- Prior art keywords
- program
- elements
- branch
- parallel
- target
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/34—Graphical or visual programming
-
- 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
- G05B19/056—Programming the PLC
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Automation & Control Theory (AREA)
- Programmable Controllers (AREA)
- Stored Programmes (AREA)
Abstract
本申请公开了一种SFC程序解释运行方法,包括:确定目标SFC程序;遍历所述目标SFC程序,以得到所述目标SFC程序中的所有元素及元素之间的逻辑关系;按照元素之间的逻辑关系依次运行每个元素对应的程序。本申请中无需再将SFC程序编译并下载到控制器执行,因此,本申请中即使工程规模再大,也不需要更多的控制器来支撑,降低工程复杂度的同时,不仅降低了系统维护的复杂度,还降低了工程成本。
Description
技术领域
本申请涉及自动控制领域,尤其涉及一种SFC程序解释运行方法及装置。
背景技术
在工业控制领域中,尤其是精细化工行业,工程师在控制物品批量生产时,常采用顺序功能图(Sequeential Function Chart,SFC)程序进行层次化结构设计,这样不但可以满足高度柔性的要求,提高设备的利用率和生产效率,而且能减少新品的面市时间,保证产品质量的一致性,降低维护成本。
目前的SFC程序通常运行于下位机控制器中,现有的控制方法大体上是将编写好的SFC程序先编译成C代码,并再次编译生成二进制bin文件,下载到控制器中执行,例如,将bin文件下载到ECS-700控制系统中,该过程属于编译执行。
但是,随着生产规模的不断扩大,由于单个控制器容量有限,其能够存储的bin文件数量有限,因此能够控制的设备或者程序数量有限,当工程规模较大时,需要多个控制器来共同工作,整个系统的实施工作量大,成本较高,并且,控制器的数量增加也在一定程度上增加了成本,提高了系统维护的复杂度。
发明内容
有鉴于此,本申请提供了一种SFC程序解释运行方法及装置,用以解决现有技术中运行SFC程序需要编译成bin文件,占用控制器容量的技术问题。
本申请提供了一种SFC程序解释运行方法,包括:
确定目标SFC程序;
遍历所述目标SFC程序,以得到所述目标SFC程序中的所有元素及所述元素之间的逻辑关系;
按照所述元素之间的逻辑关系依次运行每个所述元素对应的程序。
上述方法,优选的,遍历所述目标SFC程序,以得到所述目标SFC程序中的所有元素及所述元素之间的逻辑关系,包括:
对所述目标SFC程序进行元素遍历,以确定所述目标SFC程序中的所有元素,所述元素包括步、转换条件、选择分支、选择结点、并行分支以及并行结点
对每个所述元素设置唯一标识,并记录每个所述元素的前置元素的标识和后续元素的标识,以所述标识表示所述元素之间的逻辑关系。
上述方法,优选的,所述元素中的步具有激活位和完成位;
当前步的激活位为第一标记值时表示当前步被激活,当前步的激活位为第二标记值时表示当前步没有被激活;
当前步的完成位第一激活位时表示当前步的程序已运行完成,当前步的完成位为第二标记值时表示当前步的程序还未运行完成。
上述方法,优选的,所述元素包括步、转换条件、选择分支、选择结点、并行分支以及并行结点;
其中,按照所述元素之间的逻辑关系依次运行每个所述元素对应的程序,包括:
确定所述元素中的起始步;
调用所述起始步的程序,并基于所述元素之间的逻辑关系确定所述起始步的后续元素;
如果所述后续元素为转换条件,则在所述转换条件被满足时,确定所述后续元素的后续元素;
如果所述后续元素为选择分支,则基于所述选择分支上元素的逻辑关系,从左到右依次判断,运行第一个满足条件的目标子分支上的每个元素对应的程序,直到所述目标子分支对应的结点的前置元素对应的程序均被运行;
如果所述后续元素为并行分支,则基于所述并行分支上元素的逻辑关系同时运行所述并行分支上每个子分支的每个元素对应的程序,直到每个所述子分支对应的结点的前置元素对应的程序均被运行;
如果所述后续元素为结束步,则程序运行完成。
上述方法,优选的,所述确定所述元素中的起始步骤,包括:
确定所述激活位为第一标记值且所述完成位为第二标记值的元素为起始步。
本申请还提供了一种SFC程序解释运行装置,包括:
目标确定单元,用于确定目标SFC程序;
程序遍历单元,用于遍历所述目标SFC程序,以得到所述目标SFC程序中的所有元素及所述元素之间的逻辑关系;
程序调用单元,用于按照所述元素之间的逻辑关系依次运行每个所述元素对应的程序。
上述装置,优选的,所述程序遍历单元包括:
元素遍历子单元,用于对所述目标SFC程序进行元素遍历,以确定所述目标SFC程序中的所有元素,所述元素包括步、转换条件、选择分支、选择节点、并行分支以及并行节点;
元素编码子单元,用于对每个所述元素设置唯一标识,并记录每个元素的前置元素的标识和后续元素的标识,以所述标识表示所述元素之间的逻辑关系。
上述装置,优选的,所述元素中的步具有激活位和完成位;
当前步的激活位为第一标记值时表示当前步被激活,当前步的激活位为第二标记值时表示当前步没有被激活;
当前步的完成位第一激活位时表示当前步的程序已运行完成,当前步的完成位为第二标记值时表示当前步的程序还未运行完成。
上述装置,优选的,所述元素包括步、转换条件、选择分支、选择节点、并行分支以及并行节点;
其中,所述程序调用单元包括:
起始确定子单元,用于确定所述元素中的起始步;
代码调用子单元,用于调用所述起始步的程序;
后续确定子单元,用于基于所述元素之间的逻辑关系确定所述起始步的后续元素;
转换判断子单元,用于如果所述后续元素为转换条件,则在所述转换条件被满足时,确定所述后续元素的后续元素;
选择分支调用子单元,用于如果所述后续元素为选择分支,则基于所述选择分支上元素的逻辑关系,从左到右依次判断,运行第一个满足条件的上目标子分支上的每个元素对应的程序,直到所述目标子分支对应的结点的前置元素对应的程序均被运行;
并行分支调用子单元,用于如果所述后续元素为并行分支,则基于所述并行分支上元素的逻辑关系同时运行所述并行分支上每个子分支的每个元素对应的程序,直到每个所述子分支对应的结点的前置元素对应的程序均被运行;
结束调用子单元,用于如果所述后续元素为结束步,则程序运行完成。
上述装置,优选的,所述起始确定子单元具体用于:确定所述激活位为第一标记值且所述完成位为第二标记值的元素为起始步。
经由上述的技术方案可知,本申请提供的一种SFC程序解释运行方法及装置,通过对需要运行的目标SFC程序进行遍历,得到目标SFC程序中的元素及元素之间的逻辑关系,进而能够按照元素之间的逻辑关系依次调用所述目标SFC程序中每个元素对应的程序,实现对SFC程序的解释运行,而这一过程中,由上位机基于SFC程序的特点对SFC程序进行解释运行,而无需再将SFC程序编译并下载到下位机控制器执行,因此,本申请中即使工程规模再大,也不需要更多的控制器来支撑,降低工程复杂度的同时,不仅降低了系统维护的复杂度,还降低了工程成本。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请实施例一提供的一种SFC程序解释运行方法的流程图;
图2为本申请实施例二提供的一种SFC程序解释运行方法的部分流程图;
图3为本申请实施例的应用示例图;
图4为本申请实施例三提供的一种SFC程序解释运行方法的部分流程图;
图5为本申请实施例的另一应用示例图;
图6为本申请实施例四提供的一种SFC程序解释运行装置的结构示意图;
图7为本申请实施例五提供的一种SFC程序解释运行装置的部分结构示意图;
图8为本申请实施例六提供的一种SFC程序解释运行装置的部分结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
参考图1,为本申请实施例一提供的一种SFC程序解释运行方法的实现流程图,适用于对SFC程序进行解释,以便于计算机能够直接运行。本实施例中的方法可以应用在计算机等上位机设备中。
具体的,本实施例中,该方法可以包括以下步骤:
步骤101:确定目标SFC程序。
其中,目标SFC程序是指系统控制器需要运行的程序。
需要说明的是,目标SFC程序可以为一个,也可以为多个,由此,本实施例中可以同时对多个目标SFC程序进行解释运行,以实现并行处理。
步骤102:遍历目标SFC程序,以得到目标SFC程序中的所有元素及元素之间的逻辑关系。
这里的元素可以为SFC程序中的步、转换条件、选择分支、选择结点、并行分支及并行结点等,而选择分支和并行分支中的每个子分支中均可以包含有一个或多个元素,如步、转换条件等。
其中,一个选择分支对应一个选择结点,一个并行分支对应一个并行结点。
本实施例中通过对目标SFC程序中代码的特点,如SFC程序的语法结构,来遍历程序代码,进而得到目标SFC程序中的所有元素及元素之间的逻辑关系。
步骤103:按照元素之间的逻辑关系依次运行目标SFC程序中每个元素对应的程序。
也就是说,本实施例中,计算机等电子设备可以基于SFC程序的语法结构能够识别出SFC程序中逻辑,进而实现对SFC程序的运行。
由上述方案可知,本申请实施例一提供的一种SFC程序解释运行方法,通过对需要运行的目标SFC程序进行遍历,得到目标SFC程序中的元素及元素之间的逻辑关系,进而按照元素之间的逻辑关系依次调用所述目标SFC程序中每个元素对应的程序,实现SFC程序的运行,这一过程中,由上位机基于SFC程序的特点对SFC程序进行解释运行,而无需再将SFC程序编译并下载到下位机控制器执行,因此,本实施例中即使工程规模再大,也不需要更多的控制器来支撑,降低工程复杂度的同时,不仅降低了系统维护的复杂度,还降低了工程成本。
参考图2,为本申请实施例二提供的一种SFC程序解释运行方法中步骤102遍历目标SFC程序的实现流程图,其中,步骤102可以通过以下步骤实现:
步骤201:对目标SFC程序进行元素遍历,以确定目标SFC程序中的所有元素。
也就是说,本实施例对目标SFC程序中的步、转换条件、选择分支、选择结点、并行分支以及并行结点等元素一一进行识别遍历,并识别出这些元素之间的逻辑关系,如前后逻辑、选择逻辑或并行逻辑等。
步骤202:对每个元素设置唯一标识,并记录每个元素的前置元素的标识及后续元素的标识,以这些标识来表示元素之间的逻辑关系。
其中,每个元素的唯一标识能够唯一标识该元素,例如,对每个元素设置唯一标识该元素的身份证(identification,ID),作为每个元素的唯一识别码,来标识元素之间的逻辑关系。
其中,元素中的步具有激活位和完成位,且激活位和完成位分别有两种标记值。其中,步的激活位为第一标记值如1时表示当前步被激活,当前步的激活位为第二标记值如0时表示当前步没有被激活;当前步的完成位为第一标记值如1时表示当前步的程序已运行完成,当前步的完成位为第二标记值如0时表示当前步的程序还未运行完成。
需要说明的是,在SFC程序的运行过程中,当前步的激活位为第一标记值如1且完成位为第二标记值如0时表示当前步被激活且准备运行或正在运行当前步的程序,但程序还未运行完成;而激活位为第二标记值如0且完成位为第一标记值如1时表示当前步的程序已运行完成。
如图3中,本实施例中对步骤001~步骤009、转换条件T1~T9、并行分支、选择分支、选择结点及并行结点分别设置相应的ID,形成这些元素之间的逻辑关系。
参考图4,为本申请实施例三提供的一种SFC程序解释运行方法中步骤103的实现流程图,其中,本实施例在按照元素之间的逻辑关系依次运行每个元素对应的程序时,可以通过以下步骤实现:
步骤401:确定元素中的起始步。
其中,本实施例中可以通过识别元素中步的激活位和完成位的标记值来确定步中的起始步,具体的:本实施例中确定激活位为第一标记值且完成位为第二标记值的步为起始步。
例如,将激活位为1且完成位为0的步确定为起始步。
步骤402:调用起始步的程序,并基于元素之间的逻辑关系确定起始步的后续元素;
步骤403:如果后续元素为转换条件,则在转换条件被满足时,确定后续元素的后续元素;
步骤404:如果后续元素为选择分支,则基于选择分支上元素的逻辑关系,从左到右依次判断,运行第一个满足条件的目标子分支上的每个元素对应的程序,直到目标子分支对应的结点的前置元素对应的程序均被运行。
其中,选择分支中可以包含多个子分支,如果后续元素为选择分支,选择分支中只有一个字分支需要被运行,那么确定选择分支中需要被运行的一个目标子分支,并运行该目标子分支的每个元素对应的程序。
步骤405:如果后续元素为并行分支,则基于并行分支上元素的逻辑关系同时运行并行分支上每个子分支的每个元素对应的程序,直到每个子分支对应的结点的前置元素对应的程序被运行。
其中,并行分支中可以包含多个子分支,如果后续元素为并行分支,则并行分支中的每个子分支均需要被运行。且并行分支上的每个子分支可以同时被调用,进而并行运行每个子分支上的各元素对应的程序。
步骤406:如果后续元素为结束步,则程序运行完成。
具体的,以计算机运行SFC程序为例,对本实施例的具体实现示例进行说明:
遍历得到目标SFC程序的元素,并对每个步元素设置激活位和完成位两个标识位;
在初始状态下,目标SFC程序的起始步的元素的激活位为1,其他步骤的激活位和完成位均为0;
在调度周期内,第一环节是遍历所有步,识别当前激活位为1,且完成为0的步,执行步的程序,在步的程序调用完成时,将完成位设置为1;第二环节是遍历所有步,对激活位为1且完成为1的步骤,尝试激活其后续步骤元素。
首先,计算机根据SFC语法结构或逻辑结构遍历所有元素:
1.对每个元素记录其前置元素ID和后续元素ID;
2.对于分支元素,包含选择分支和并行分支,还记录对应的结点元素ID;
3.对于结点元素,包含选择结点和并行结点,还记录对应的分支元素ID;
4.从起始步开始,获取当前元素的后续元素ID,并从该元素继续向后遍历;
5.对于选择分支,逐一遍历分支,运行第一个满足条件的分支,遇到对应的选择结点则意味着目标分支遍历完成,取得该对应选择结点的后续元素ID,并从该元素继续向后遍历;
6.对于并行分支,逐一遍历分支,遇到对应的并行结点则意味着一个分支遍历完成,至所有分支遍历完成后,取得对应并行结点的后续元素ID,并从该元素继续向后遍历;
7.遇到结束步则返回,标志着整个目标SFC程序的元素遍历完成。
其次,在适当的条件下将已完成的步的激活位复位,如设置为0,将后续步的激活位置1,也可以称为“尝试激活”,如下:
1.对于步元素,若其激活位和完成位均为1,则“尝试激活”其后续步元素。其中,根据SFC语法结构,可以分析出步的后续元素可能是转换条件、选择分支或者并行结点;
2.对于并行分支,若其对应并行结点各个分支的前置步元素的激活位和完成位均为1,则“尝试激活”并行结点后续步元素。其中,根据SFC语法结构,可以分析出并行结点的后续元素必定是转换条件;
3.只需在以上两种情况下进行“尝试激活”。根据上述两种情况,尝试激活环节需要处理转换条件、选择分支以及并行结点三种情况,如下:
a)对于并行结点,直接返回,不做任何尝试激活的处理;
b)对于转换条件,则对其表达式估值,如果成立,则将其前置元素步的激活位置0,称为冻结,并将其后续元素步骤的激活位置1,称为激活;
其中,在冻结过程中,根据SFC语法结构,可以分析出转换条件的前置元素可能是步、并行结点或选择分支。如果是步,则直接将步的激活位置0,如果是并行结点,将并行结点的所有前置步的激活位置0,如果是选择分支,则将选择分支的前置步的激活位置0;
而在激活过程中,根据SFC语法结构,可以分析出转换条件的后续元素可能是步、跳转(转换条件)、并行分支、选择结点、结束步。如果是步(普通步骤),直接将步的激活位置1,如果是跳转,则取得跳转对应的步,并将该步的激活位置1,如果是并行分支,则逐一遍历分支,并将每个分支的起始元素(步)的激活位置1,如果是选择结点,则将选择结点后续的步的激活位置1,如果是结束步,则将程序状态置为运行完成;
c)对于选择分支,各个分支的起始元素必定是转换条件,因此,从左至右逐一遍历转换条件直至第一个成立的转换条件,进入上述b)处理环节。
以图3中SFC程序的逻辑结构为例,以下对本实施例进行说明:
该SFC程序中共含有23个元素(ID为0~22),其中9个步骤,如起始步、普通步,不含结束步,因此具有9位的激活码和9位的完成码,初始状态是激活码的第0位(即对应的起始步骤)为1,其他位均为0,完成码所有位为0。
计算机运行过程如下(为了便于描述和理解,假设每次判断转换条件均能成立),如图5中所示:
1.遍历所有步,判断其激活位为1且完成位为0的步,此时只有起始步满足条件,因此起始步的内部逻辑将被调用,当步内逻辑完成时,将完成位置为1。
2.从起始步001开始遍历整幅SFC程序的元素。
a)首先遇到起始步001,步001的后续元素为T1。
i.当步骤001的激活位和完成位均为1,将尝试激活后续元素。尝试激活环节中,发现步001的后续元素是T1,因此判断转换条件,成立则将步001激活位置0,同时将步002的激活位置1。
b)从T1开始继续遍历,T1的后续元素是步002。
c)遇到步002,步002的后续元素为T2。
i.当步002的激活位和完成位均为1,将尝试激活后续元素。尝试激活环节中,发布步002的后续元素是T2,因此判断转换条件,成立则将步002激活位置0,同时将步003和步005的激活位置1。
d)从T2开始继续遍历,T2的后续元素是并行分支。
e)遇到并行分支,逐一遍历分支,每个分支遇到并行结点返回。
i.并行分支1:
1.遇到步003,步003的后续元素为T3。
a)当步003的激活位和完成位均为1,将尝试激活后续元素。尝试激活环节中,发布步003的后续元素是T3,因此判断转换条件,成立则将步003激活位置0,同时将步004的激活位置1。
2.从T3开始继续遍历,T3的后续元素为步004。
3.遇到步004,步004的后续元素为并行结点,则直接返回。
ii.并行分支2:
1.遇到步005,步005的后续元素为选择分支。
a)当步005的激活位和完成位均为1,将尝试激活后续元素。尝试激活环节中,发布步005的后续元素是选择分支,从左至右逐一遍历转换条件直至第一个成立的转换条件。
i.如果T4满足,则将步005的激活位置0,同时将步006的激活位置1。
ii.如果T4不满足,尝试T5是否满足,如果T5满足,则将步005的激活位置0,同时将步007的激活位置1。
2.遇到选择分支,逐一遍历分支,直到每个分支遇到选择结点返回。
a)选择分支1:
i.从T4开始继续遍历,T4的后续元素是步006。
ii.遇到步006,步006的后续元素是T5。
1.当步006的激活位和完成位均为1,将尝试激活后续元素。尝试激活环节中,发现步006的后续元素是T5,因此判断转换条件,成立则将步006激活位置0,同时将步008的激活位置1。
iii.从T5开始继续遍历,T5的后续元素是选择结点,则返回。
b)选择分支2:
i.从T6开始继续遍历,T6的后续元素是步007。
ii.遇到步007,步007的后续元素是T7。
1.当步007的激活位和完成位均为1,将尝试激活后续元素。尝试激活环节中,发现步007的后续元素是T7,因此判断转换条件,成立则将步007激活位置0,同时将步008的激活位置1。
iii.从T7开始继续遍历,T7的后续元素是选择结点,则返回。
3.通过选择分支,获取选择结点,选择结点的后续元素为步008。
4.遇到步008,步008的后续元素为并行结点,则直接返回。
f)通过并行分支,获取并行结点,并行结点的后续元素为T8。
i.当并行结点的所有前置元素步,都激活且已完成,即步004和步008的激活位和完成位都置1,则尝试激活后续元素。尝试激活环节中,发现并行结点的后续元素是T8,因此判断转换条件,成立则将将步004和步008的激活位置0,同时将步009的激活位置1。
g)从T8开始继续遍历,T8的后续元素是步009。
h)遇到步009,步009的后续元素为T9。
i.当步009的激活位和完成位均为1,将尝试激活后续元素。尝试激活环节中,发现步009的后续元素是T9,因此判断转换条件,成立则将步009激活位置0,同时T9的后续元素为结束步,则当前SFC程序运行完成。
i)从T9开始继续遍历,T9的后续元素是结束步骤,则整个遍历过程结束。
3.遍历所有步,判断其激活位为1且完成位为0的步,并执行步内逻辑,当步内逻辑完成时,将完成位置1。
4.跳转到第2步重复执行,直到当前SFC程序运行完成。
其中,上述执行步内逻辑,是指调用或运行步骤对应的程序。
参考图6,为本申请实施例四提供的一种SFC程序解释运行装置的结构示意图,其中,适用于对SFC程序进行解释,以便于计算机能够直接运行。本实施例中的方法可以应用在计算机等上位机设备中。
具体的,本实施例中,该装置可以包括以下结构:
目标确定单元601,用于确定目标SFC程序。
其中,目标SFC程序是指系统控制器需要运行的程序。
需要说明的是,目标SFC程序可以为一个,也可以为多个,由此,本实施例中可以同时对多个目标SFC程序进行解释运行,以实现并行处理。
程序遍历单元602,用于遍历所述目标SFC程序,以得到所述目标SFC程序中的所有元素及所述元素之间的逻辑关系。
这里的元素可以为SFC程序中的步、转换条件、选择分支、选择结点、并行分支及并行结点等,而选择分支和并行分支中的每个子分支中均可以包含有一个或多个元素,如步、转换条件等。
其中,一个选择分支对应一个选择结点,一个并行分支对应一个并行结点。
本实施例中通过对目标SFC程序中代码的特点,如SFC程序的语法结构,来遍历程序代码,进而得到目标SFC程序中的所有元素及所述元素之间的逻辑关系。
程序调用单元603,用于按照元素之间的逻辑关系依次运行每个元素对应的程序。
也就是说,本实施例中,计算机等电子设备可以基于SFC程序的语法结构能够识别出SFC程序中逻辑,进而实现对SFC程序的运行。
由上述方案可知,本申请实施例四提供的一种SFC程序解释运行装置,通过对需要运行的目标SFC程序进行遍历,得到目标SFC程序中的元素及元素之间的逻辑关系,进而按照元素之间的逻辑关系依次调用所述目标SFC程序中每个元素对应的程序,实现SFC程的运行,这一过程中,由上位机基于SFC程序的特点对SFC程序进行解释运行,而无需再将SFC程序编译并下载到下位机控制器执行,因此,本实施例中即使工程规模再大,也不需要更多的控制器来支撑,降低工程复杂度的同时,不仅降低了系统维护的复杂度,还降低了工程成本。
参考图7,为本申请实施例五提供的一种SFC程序解释运行装置中程序遍历单元602的结构示意图,其中,程序遍历单元602可以通过以下结构实现:
元素遍历子单元701,用于对所述目标SFC程序进行元素遍历,以确定所述目标SFC程序中的所有元素。
所述元素包括步、转换条件、选择分支、选择结点、并行分支以及并行结点等元素。
也就是说,本实施例对目标SFC程序中的步、转换条件、选择分支、选择结点、并行分支以及并行结点等元素一一进行识别遍历,并识别出这些元素之间的逻辑关系,如前后逻辑、选择逻辑或并行逻辑等。
元素编码子单元702,用于每个元素设置唯一标识,并记录每个元素的前置元素的标识及后续元素的标识,以这些标识来表示元素之间的逻辑关系。
其中,每个元素的唯一标识能够唯一标识该元素,例如,对每个元素设置唯一标识该元素的身份证(identification,ID),作为每个元素的唯一识别码,来标识元素之间的逻辑关系。
元素中的步具有激活位和完成位,且激活位和完成位分别有两种标记值。其中,步的激活位为第一标记值如1时表示当前步被激活,当前步的激活位为第二标记值如0时表示当前步没有被激活;当前步的完成位为第一标记值如1时表示当前步的程序已运行完成,当前步的完成位为第二标记值如0时表示当前步的程序还未运行完成。
需要说明的是,在SFC程序的运行过程中,当前步的激活位为第一标记值如1且完成位为第二标记值如0时表示当前步被激活且准备运行或正在运行当前步的程序,但程序还未运行完成;而激活位为第二标记值如0且完成位为第一标记值如1时表示当前步的程序已运行完成。
参考图8,为本申请实施例六提供的一种SFC程序解释运行装置中程序调用单元603的结构示意图,其中,程序调用单元603可以通过以下结构实现:
起始确定子单元801,用于确定所述元素中的起始步。
其中,本实施例中,起始确定子单元801可以通过识别元素中步的激活位和完成位的标记值来确定步中的起始步,具体的:起始确定子单元801确定激活位为第一标记值且完成位为第二标记值的步为起始步。
例如,将激活位为1且完成位为0的步确定为起始步。
代码调用子单元802,用于调用所述起始步的程序;
后续确定子单元803,用于基于所述元素之间的逻辑关系确定所述起始步的后续元素;
转换判断子单元804,用于如果所述后续元素为转换条件,则在所述转换条件被满足时,确定所述后续元素的后续元素;
选择分支调用子单元805,用于如果所述后续元素为选择分支,则基于选择分支上元素的逻辑关系,从左到右依次判断,运行第一个满足条件的目标子分支上的每个元素对应的程序,直到目标子分支对应的结点的前置元素对应的程序均被运行。
其中,选择分支中可以包含多个子分支,如果后续元素为选择分支,选择分支中只有一个字分支需要被运行,那么确定选择分支中需要被运行的一个目标子分支,并运行该目标子分支的每个元素对应的程序。
并行分支调用子单元806,用于如果后续元素为并行分支,则基于并行分支上元素的逻辑关系同时运行并行分支上每个子分支的每个元素对应的程序,直到每个子分支对应的结点的前置元素对应的程序被运行。
其中,并行分支中可以包含多个子分支,如果后续元素为并行分支,则并行分支中的每个子分支均需要被运行。且并行分支上的每个子分支可以同时被调用,进而并行运行每个子分支上的各元素对应的程序。
结束调用子单元807,用于如果所述后续元素为结束步,则程序运行完成。
本实施例的具体实现可以参考前文中相应实施例的描述,此处不再详述。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、物品或者设备中还存在另外的相同要素。
对所公开的实施例的上述说明,使本领域技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
以上仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (8)
1.一种SFC程序解释运行方法,其特征在于,包括:
确定至少一个目标SFC程序,所述目标SFC程序为系统控制器需要运行的程序;
通过对所述目标SFC程序中代码的特点,遍历所述目标SFC程序,以得到所述目标SFC程序中的所有元素及所述元素之间的逻辑关系,所述元素为SFC程序中的步、转换条件、选择分支、选择结点、并行分支及并行结点,且所述选择分支和所述并行分支中的每个子分支中均包含有一个或多个元素,其中,一个选择分支对应一个选择结点,一个并行分支对应一个并行结点;
按照所述元素之间的逻辑关系依次运行所述目标SFC程序中每个所述元素对应的程序;
其中,遍历所述目标SFC程序,以得到所述目标SFC程序中的所有元素及所述元素之间的逻辑关系,包括:
对所述目标SFC程序进行元素遍历,以确定所述目标SFC程序中的所有元素,所述元素包括步、转换条件、选择分支、选择结点、并行分支以及并行结点;
对每个所述元素设置唯一标识,并记录每个所述元素的前置元素的标识和后续元素的标识,以所述标识表示所述元素之间的逻辑关系。
2.根据权利要求1所述的方法,其特征在于,所述元素中的步具有激活位和完成位;
当前步的激活位为第一标记值时表示当前步被激活,当前步的激活位为第二标记值时表示当前步没有被激活;
当前步的完成位第一激活位时表示当前步的程序已运行完成,当前步的完成位为第二标记值时表示当前步的程序还未运行完成。
3.根据权利要求2所述的方法,其特征在于,所述元素包括步、转换条件、选择分支、选择结点、并行分支以及并行结点;
其中,按照所述元素之间的逻辑关系依次运行每个所述元素对应的程序,包括:
确定所述元素中的起始步;
调用所述起始步的程序,并基于所述元素之间的逻辑关系确定所述起始步的后续元素;
如果所述后续元素为转换条件,则在所述转换条件被满足时,确定所述后续元素的后续元素;
如果所述后续元素为选择分支,则基于所述选择分支上元素的逻辑关系,从左到右依次判断,运行第一个满足条件的目标子分支上的每个元素对应的程序,直到所述目标子分支对应的结点的前置元素对应的程序均被运行;
如果所述后续元素为并行分支,则基于所述并行分支上元素的逻辑关系同时运行所述并行分支上每个子分支的每个元素对应的程序,直到每个所述子分支对应的结点的前置元素对应的程序均被运行;
如果所述后续元素为结束步,则程序运行完成。
4.根据权利要求3所述的方法,其特征在于,所述确定所述元素中的起始步,包括:
确定所述激活位为第一标记值且所述完成位为第二标记值的元素为起始步。
5.一种SFC程序解释运行装置,其特征在于,包括:
目标确定单元,用于确定至少一个目标SFC程序,所述目标SFC程序为系统控制器需要运行的程序;
程序遍历单元,用于通过对所述目标SFC程序中代码的特点,遍历所述目标SFC程序,以得到所述目标SFC程序中的所有元素及所述元素之间的逻辑关系,所述元素为SFC程序中的步、转换条件、选择分支、选择结点、并行分支及并行结点,且所述选择分支和所述并行分支中的每个子分支中均包含有一个或多个元素,其中,一个选择分支对应一个选择结点,一个并行分支对应一个并行结点;
程序调用单元,用于按照所述元素之间的逻辑关系依次运行所述目标SFC程序中每个所述元素对应的程序;
其中,所述程序遍历单元包括:
元素遍历子单元,用于对所述目标SFC程序进行元素遍历,以确定所述目标SFC程序中的所有元素,所述元素包括步、转换条件、选择分支、选择节点、并行分支以及并行节点;
元素编码子单元,用于对每个所述元素设置唯一标识,并记录每个元素的前置元素的标识和后续元素的标识,以所述标识表示所述元素之间的逻辑关系。
6.根据权利要求5所述的装置,其特征在于,所述元素中的步具有激活位和完成位;
当前步的激活位为第一标记值时表示当前步被激活,当前步的激活位为第二标记值时表示当前步没有被激活;
当前步的完成位第一激活位时表示当前步的程序已运行完成,当前步的完成位为第二标记值时表示当前步的程序还未运行完成。
7.根据权利要求6所述的装置,其特征在于,所述元素包括步、转换条件、选择分支、选择节点、并行分支以及并行节点;
其中,所述程序调用单元包括:
起始确定子单元,用于确定所述元素中的起始步;
代码调用子单元,用于调用所述起始步的程序;
后续确定子单元,用于基于所述元素之间的逻辑关系确定所述起始步的后续元素;
转换判断子单元,用于如果所述后续元素为转换条件,则在所述转换条件被满足时,确定所述后续元素的后续元素;
选择分支调用子单元,用于如果所述后续元素为选择分支,则基于所述选择分支上元素的逻辑关系,从左到右依次判断,运行第一个满足条件的目标子分支上的每个元素对应的程序,直到所述目标子分支对应的结点的前置元素对应的程序均被运行;
并行分支调用子单元,用于如果所述后续元素为并行分支,则基于所述并行分支上元素的逻辑关系同时运行所述并行分支上每个子分支的每个元素对应的程序,直到每个所述子分支对应的结点的前置元素对应的程序均被运行;
结束调用子单元,用于如果所述后续元素为结束步,则程序运行完成。
8.根据权利要求7所述的装置,其特征在于,所述起始确定子单元具体用于:确定所述激活位为第一标记值且所述完成位为第二标记值的元素为起始步。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710373651.9A CN107203380B (zh) | 2017-05-24 | 2017-05-24 | 一种sfc程序解释运行方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710373651.9A CN107203380B (zh) | 2017-05-24 | 2017-05-24 | 一种sfc程序解释运行方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107203380A CN107203380A (zh) | 2017-09-26 |
CN107203380B true CN107203380B (zh) | 2021-02-19 |
Family
ID=59905760
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710373651.9A Active CN107203380B (zh) | 2017-05-24 | 2017-05-24 | 一种sfc程序解释运行方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107203380B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109857393B (zh) * | 2019-01-31 | 2022-03-29 | 南京南瑞继保电气有限公司 | 顺序控制图的可视化实现方法、装置及存储介质 |
CN112526921A (zh) * | 2020-12-15 | 2021-03-19 | 湖南戈人自动化科技有限公司 | 一种功能顺序图表达式编译方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102508691A (zh) * | 2011-12-02 | 2012-06-20 | 北京和利时系统工程有限公司 | 一种图形语言程序的有序分解方法及有序分解器 |
CN102609269A (zh) * | 2012-02-17 | 2012-07-25 | 南京南瑞继保电气有限公司 | 一种顺序功能图的可视化实现方法 |
CN103595691A (zh) * | 2012-08-14 | 2014-02-19 | 阳光凯讯(北京)科技有限公司 | Ims网络中一种基于规则的动态业务触发方法 |
CN103941627A (zh) * | 2014-01-08 | 2014-07-23 | 东南大学 | 一种基于plc编程中sfc到梯形图的转换方法 |
CN105867294A (zh) * | 2016-06-01 | 2016-08-17 | 华自科技股份有限公司 | Plc中顺序控制方法与系统 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8612886B2 (en) * | 2007-09-28 | 2013-12-17 | Rockwell Automation Technologies, Inc. | Sequential function chart (SFC) online editing without reset |
US8903520B2 (en) * | 2009-04-14 | 2014-12-02 | General Electric Company | Method for executing sequential function charts as function blocks in a control system |
-
2017
- 2017-05-24 CN CN201710373651.9A patent/CN107203380B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102508691A (zh) * | 2011-12-02 | 2012-06-20 | 北京和利时系统工程有限公司 | 一种图形语言程序的有序分解方法及有序分解器 |
CN102609269A (zh) * | 2012-02-17 | 2012-07-25 | 南京南瑞继保电气有限公司 | 一种顺序功能图的可视化实现方法 |
CN103595691A (zh) * | 2012-08-14 | 2014-02-19 | 阳光凯讯(北京)科技有限公司 | Ims网络中一种基于规则的动态业务触发方法 |
CN103941627A (zh) * | 2014-01-08 | 2014-07-23 | 东南大学 | 一种基于plc编程中sfc到梯形图的转换方法 |
CN105867294A (zh) * | 2016-06-01 | 2016-08-17 | 华自科技股份有限公司 | Plc中顺序控制方法与系统 |
Non-Patent Citations (1)
Title |
---|
"嵌入式PLC中顺序功能图向AOV的映射";李强等;《控制工程》;20130331;第20卷(第2期);第272-275页 * |
Also Published As
Publication number | Publication date |
---|---|
CN107203380A (zh) | 2017-09-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107203380B (zh) | 一种sfc程序解释运行方法及装置 | |
CN104007958A (zh) | 用于创建和处理用于工业自动化装置的程序的程序编辑器和方法 | |
CN100362479C (zh) | 基于自动化测试脚本对被测对象进行测试的方法和系统 | |
CN108415740B (zh) | 一种应用于数据分析任务的工作流调度方法 | |
CN104899093A (zh) | 数据处理方法、装置和系统 | |
CN111930476B (zh) | 一种任务调度方法、装置及电子设备 | |
CN104391754A (zh) | 一种任务异常的处理方法及装置 | |
US20230176905A1 (en) | Automatic driving simulation task scheduling method and apparatus, device, and readable medium | |
CN106021296B (zh) | 核心银行系统批量作业路径的检测方法及装置 | |
CN116862206B (zh) | 一种自适应优化生产计划的分布式制造执行的方法和系统 | |
CN110737439A (zh) | 基于规则文件的设备控制系统及方法 | |
CN110347570A (zh) | 一种ide环境下代码自动生成工具分析方法 | |
KR101981421B1 (ko) | 프로그램 생성 장치 및 그 방법 | |
WO2001079949A3 (en) | Automated process control and data management system and methods | |
KR101566355B1 (ko) | 자동화 공정의 정상 운영 판단을 위한 마스터 패턴 생성방법 및 장치 | |
US20130232471A1 (en) | Method and Apparatus for Assessing Software Parallelization | |
CN113064674B (zh) | 一种扩展状态机逻辑的方法、装置、存储介质和电子装置 | |
CN109144486B (zh) | 一种无状态化的工作流程实现方法 | |
CN110046809B (zh) | 作业调度方法及装置 | |
CN111739132B (zh) | 一种基于局部控制器的全身骨骼运动效果修改方法 | |
CN112035169B (zh) | 跳转处理方法及装置、计算机设备及计算机可读存储介质 | |
CN111382983B (zh) | 工作流控制方法、工作流节点和系统 | |
CN109240743B (zh) | 一种利用特定标签来进行代码切换的方法 | |
CN106909503B (zh) | 一种Android应用自动化测试用例精简方法 | |
CN111124500B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |