CN106200541A - 一种将功能块图转换为aov结构的方法 - Google Patents
一种将功能块图转换为aov结构的方法 Download PDFInfo
- Publication number
- CN106200541A CN106200541A CN201510239281.0A CN201510239281A CN106200541A CN 106200541 A CN106200541 A CN 106200541A CN 201510239281 A CN201510239281 A CN 201510239281A CN 106200541 A CN106200541 A CN 106200541A
- Authority
- CN
- China
- Prior art keywords
- node
- fbd
- aov
- list
- port
- 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
Abstract
本发明提出的一种将功能块图转换为与梯形图对应的AOV结构的方法,该方法为FBD转换为LD奠定了基础。FBD图符映射为顶点,将FBD程序映射为一种类多重链表结构,通过处理,最终生成与梯形图对应的AOV结构。关键技术:1、由于FBD与梯形图的逻辑结构有差异性,对这些差异性进行研究并处理。2、对由FBD直接映射的AOV图转化为具有LD特点的AOV图,即对FBD进行二次AOV图的抽象技术。这种思想保持了图结构的完整性,在使用本算法的可控制逻辑控制器FBD编程平台上得到了验证。为FBD转换为LD语言、IL语言奠定了基础。
Description
技术领域
本发明涉及一种将功能块图转换为AOV结构的方法。
背景技术
在国际标准PLCopen Part5中提到用XML描述工具来描述FBD,从而解决交换、标准等一系列的问题,但至今为止,FBD从传统的C语言构架模式转到基于XML的描述方式的研究一直鲜为人知,能够开发一套基于XML描述、符合国际标准IEC61131-3、使用方便的FBD平台不仅顺应了工业的发展,也为PLC编程语言平台的开发提供了新思想。
经过多年的研究与发展,国外的PLC产品系列以及遵循IEC61131-3标准的编程设计平台已相当成熟,有一些公司实现了FBD到LD图的转换,比如德国3S公司的CoDeSys等,但迄今没有公开发表互换算法的文献。目前多为从梯形图转换为指令表的公开文献。
已有的一种将梯形图程序转换为指令表方法的主要步骤如下:1)根据梯形图程序各网络内控件及控件之间的逻辑关系,形成LD结点集合和关系集合;2)根据1)所描述的数据结构生成与之对应的二叉树;3)分别遍历各个二叉树的所有结点,生成IL指令。该方法没有涉及多输出梯形图程序转换为指令表的情况,即不适用于逻辑关系比较复杂的梯形图程序。
另一种将梯形图程序转换为指令表方法的主要步骤如下:1)将梯形图映射为AOV图;2)根据生成的AOV图建立与之相应的二叉树结构;3)通过后序遍历二叉树生成IL指令。该方法可将复杂控制逻辑的梯形图转换为指令表,但是此算法要求在梯形图的每一个分支和汇合处分别加入一个虚节点,对于既是分支,又是汇合的地方需要加入3个虚结点,所以是以空间复杂度为代价。
发明内容
根据FBD现状的分析,本发明提出了一种将功能块图语言转换为AOV结构的方法,以实现在现有可编程控制器编程平台中加入功能块图语言平台的设计后尽快地实现其编译等一系列功能。
实现本发明的技术方案如下:
一种将功能块图语言转换为AOV结构的方法,包括如下步骤:
a)将FBD程序存储为XML描述文件;
b)解析XML文件,生成类多重链表,使用位置关系表示元件之间的逻辑关系,在多输入、多输出交叉点处增加一个虚节点;
c)对类多重链表进行二次处理,并更改AOV图的存储结构(使用十字链表结构储)。
所述步骤b)中类多重链表结构为:每一链表结点增加一个记录所有前驱结点图符名称的泛型列表数据结构,和一个记录所有后继结点图符名称的泛型列表数据结构;根据结点之间的逻辑关系,将每一结点的直接前驱图符名和对应端口号(前驱图符名称+“.”+端口号)添加到此结点的前驱结点列表中,每一结点的直接后继图符名和对应端口号(后继图符名称+“.”+端口号)添加到此结点的后继结点列表中。
所述的步骤b)进一步包括以下步骤:
b1)顺序遍历多重链表中的剩余结点,转向b2);
b2)当前结点的后继中包含AND或OR类型的结点,且后继多于一个则报错,否则转向b3);
b3)当前结点为AND类型控件,修改该控件的输入,输出结点的逻辑关系,否则转向b3);
b4)当前结点为OR类型控件,修改该控件的输入,输出结点的逻辑关系,否则转向b1)。
所述的步骤b3)进一步包括以下步骤:
S1)找到当前结点输入端口1的所有结点,找到当前结点输入端口2的所有结点,若端口1和端口2的结点数目均大于1,则转向s2),否则转向S3);
S2)增加一虚结点,更改端口1的所有结点的后继指向虚结点,端口2的所有结点的前驱指向虚结点,转向S4);
S3)更改端口1的所有结点的后继指向端口2中的结点,端口2的所有结点的前驱指向端口1中的结点,转向S4);
S4)找到当前结点的所有输出结点,若端口2结点数目与输出结点数目均大于1,转向S5),否则转向S6);
S5)增加一虚结点,更改端口2的所有结点的后继指向虚结点,所有输出结点的前驱指向虚结点;
S6)更改端口2的所有结点的后继指向输出结点,所有输出结点的前驱指向端口2的结点。
所述的步骤b4)进一步包括以下步骤:
a1)找到当前结点所有输入结点,找到当前结点的所有输出结点,若输出结点的数目大于1,转向a2),否则转向a3);
a2)增加一虚结点,更改所有输入结点的后继指向虚结点,所有输出结点的前驱指向虚结点;
a3)更改所有输入结点的后继指向输出结点,所有输出结点的前驱指向输入结点。
所述步骤3)进一步包括以下步骤:
c1)初始化母线结点;
c2)查找所有前驱为空的结点,更改其后继指向母线结点,母线结点的后继指向所找到的结点。
所述步骤3)进一步包括以下步骤:
d1)若为母线结点,行列坐标定义为(0,0);
d2)若当前结点为单输入结点,其前驱结点的行列坐标为(x,y),则当前结点坐标为(x,y+1),若(x,y+1)位置已有结点,则行坐标加1,直至当前结点的位置没有结点;
d3)若当前结点为多输入结点,遍历当前结点的所有输入结点,得到每一输入结点下一后继结点的行列坐标,寻找行坐标最小,列坐标最大的坐标为当前结点的坐标,若当前坐标已有结点,则行坐标加1,直至当前结点的位置没有结点。
本发明具有以下有益效果及优点:
本发明具有通用性,可正确、有效的转换任何复杂功能块图为AOV结构,为后序转换成IL和LD程序奠定了基础,确保了功能块图编译的正确性。
附图说明
图1是本发明转换方法的流程图;
图2是一个含复杂逻辑的功能块图程序;
图3是用类似电路串并联方法的表现形式;
图4生成的AOV结构图;
图5是利用CASS平台梯形图编译器所生成的IL语言。
具体实施方式
本发明一种将功能块图语言转换为AOV结构的方法,包括以下步骤:
1)将FBD程序存储为XML描述文件;
2)解析XML文件,生成类多重链表,使用位置关系表示元件之间的逻辑关系,在多输入、多输出交叉点处增加一个虚节点;
3)对类多重链表进行二次处理,并更改AOV图的存储结构(使用十字链表结构存储)。
本实施例以图2所示所示的功能块图程序为例,在编辑该功能块图程序的过程中,将功能块图图符抽象为结点,根据图符间的逻辑关系记录其前驱结点图符名称及后继结点图符名称。
结点的相关数据结构介绍如下,用以保存功能块图中各图符之间的逻辑关系及各个图符的基本信息。
其中InputInfo用于存储功能块图程序中每个图符结点的直接前驱结点,该列表中对象的个数即为图符的入度;OutputInfo用于存储每个图符结点的直接后继结点,该指针列表中对象的个数即为图符的出度。
保存该类多重链表各顶点成员值如下:
变量值 | M100 | M101 | M102 | M103 | M104 | M105 | M106 |
SortName | Constant | Constant | Constant | Constant | Constant | Constant | Constant |
ControlName | Constant1 | Constant1 | Constant3 | Constant4 | Constant5 | Constant6 | Constant7 |
Inputport | null | null | null | null | null | null | null |
Outputport | fbD_AND6 | fbD_AND2 | fbD_AND1 | fbD_AND1 | fbD_AND3 | fbD_AND3 | fbD_AND4 |
Location | (0,0) | (0,0) | (0,0) | (0,0) | (0,0) | (0,0) | (0,0) |
变量值 | Y1 | Y2 |
SortName | ST | ST |
ControlName | st1 | st2 |
Inputport | fbD_AND6,0 | fbD_AND6,0 |
Outputport | null | null |
Location | (0,0) | (0,0) |
使用位置关系表示元件之间的逻辑关系,在多输入、多输出交叉点处增加一个虚节点,即去除AND或OR图符,并根据规则加入虚结点,具体步骤如下:
S1:利用逆拓扑排序对类多重链表节点进行排序,排序结果为:
M102,M103,>=1,M101,&,M104,M105,>=1,M106,&,>=1,M100,&,Y1,Y2.
S2:顺序扫描排序后的类多重链表各结点,当前结点的后继中包含AND或OR类型的结点,且后继多于一个则报错,否则转S3;
S3:当前结点为“AND”类型,根据当前结点Inputport列表信息找到端口号为0的输入结点并存入Inputport1列表中,转向S4,否则转向S8;
S4:根据当前结点Inputport列表信息找到端口号为1的输入结点并存入Inputport2列表中,若Inputport2中结点的前驱结点不为空,向前查找直到结点的前驱结点为空,把它们插入到Inputport3列表中;若Inputport2中的结点前驱为空,则直接插入到Inputport3列表中;
S5:根据当前结点Outputport列表信息找到所有后继结点,并存入Outputport列表中;
S6:若Inputport1、Inputport3中的结点个数均大于1,则加入虚结点,更改Inputport1中的结点后继为增加的虚结点,Inputport3中的结点的前驱为增加的虚结点,否则修改Inputport1中的结点直接后继为Inputport3中的结点,Inputport3中的结点直接前驱为Inputport1中的结点;
S7:若Inputport3、Outputport中的结点个数均大于1,则加入虚结点,更改Inputport3中的结点后继为增加的虚结点,Outputport中的结点的前驱为增加的虚结点,否则修改Inputport3中的结点直接后继为Outputport中的结点,Outputport中的结点直接前驱为Inputport3中的结点;
S8:去除当前AND类型结点,转向S2;
S9:当前结点为“OR”类型,根据当前结点Inputport列表信息找到其所有的直接前驱结点并插入到Inputport列表,根据Outputport列表信息找到其所有的直接后继结点并插入到Outputport列表中,否则转向S2;
S10:若Inputport、Outputport中的结点个数均大于1,则加入虚结点,更改Inputport中的结点后继为增加的虚结点,Outputport中的结点的前驱为增加的虚结点,否则修改Inputport中的结点直接后继为Outputport中的结点,Outputport中的结点直接前驱为Inputport中的结点;
S11:去除当前OR类型结点,转向S2;
各结点按前文得出的处理顺序进行处理,如下所示:
经过上述处理顺序,得到结构如图3所示。
转换的第三步由类多重链表生成AOV结构相同的AOV结构,完成这一步骤需要为每个网络添加母线虚结点,添加行列号信息以及根据处理后的数据结构转换为AOV存储结构的详细过程如下:
A1:初始化一母线虚结点,遍历由图3生成的类多重链表结点找到无前驱的结点,设置母线虚结点的后继为无前驱的结点,即完成添加母线结点操作;
A2:设母线结点的行列位置信息为(0,0),并遍历所有非母线结点,遍历结束转向A5,否则转向A3;
A3:若当前结点为单输入结点,其位置为前驱结点的行号不变,列号加1,若此行列号已有控件,则列号不变,行号加1,直至当前行列号无控件,转向A2,否则转向A3;
A4:若当前结点为多输入结点,其行号为前驱结点中行号最小值,列号为前驱结点中列号最大值,若此行列号已有控件,则列号不变,行号加1,直至当前行列号无控件,转向A2:
A5:将结点对应于AOV结构中的顶点,结点之间的后继逻辑关系对应于AOV中的有向边,本实例使用十字链表结构存储AOV图。
A6:将上述生成的AOV图利用CASS平台中梯形图AOV结构的生成IL指令的功能,即可完成从功能块图到IL指令的转换。
实例中添加母线,行列号信息的结构如图4所示,其中s为母线结点,b为地址结点,v为虚结点,t为输出结点;转换为IL指令结果如图5所示。
本发明方法的思想保持了图结构的完整性,在CASS平台中进行了全面测试并得到可靠验证。
Claims (5)
1.一种将功能块图转换为AOV结构的方法,其特征包括以下步骤:
a)将FBD程序存储为XML描述文件;
b)解析XML文件,生成类多重链表,使用位置关系表示元件之间的逻辑关系,在多输入、多输出交叉点处增加一个虚节点;
c)对类多重链表进行二次处理,并更改AOV图的存储结构(使用十字链表结构存储)。
2.按权利要求1所述的将功能块图语言转换为AOV结构的方法,其特征在于:所述步骤b)中类多重链表结构为:每一链表结点增加一个记录所有前驱结点图符名称的泛型列表数据结构,和一个记录所有后继结点图符名称的泛型列表数据结构;根据结点之间的逻辑关系,将每一结点的直接前驱图符名和对应端口号(前驱图符名称+“.”+端口号)添加到此结点的前驱结点列表中,每一结点的直接后继图符名和对应端口号(后继图符名称+“.”+端口号)添加到此结点的后继结点列表中。
3.按权利要求1所述的将功能块图语言转换为AOV结构的方法,其特征在于:所述的步骤b)进一步包括以下步骤:
b1)顺序遍历类多重链表中的剩余结点,转向b2);
b2)当前结点为AND类型控件时,更改输入图符逻辑关系为类似电路中的串联连接方式,否则转向b3);
b3)当前结点为OR类型控件时,更改输入图符逻辑关系为类似电路中的并联连接方式,否则转向b1)。
4.按权利要求3所述的将功能块图语言转换为AOV结构的方法,其特征在于:所述的步骤b2)进一步包括以下步骤:
S1)找到端口1、端口2的所有直接前驱结点,若其前驱节点均大于1,则转向s2),否则转向S3);
S2)增加虚结点,更改端口1的直接前驱结点指向虚结点,虚节结的后继指向端口2的直接前驱结点,转向S4);
S3)更改端口1的前驱结点指向端口2中的结点,转向S4);
S4)找到当前结点的直接后继结点,若其直接后继节点数和端口2的前驱结点数均大于1,转向S5),否则转向S6);
S5)增加虚结点,更改端口2的直接前驱结点指向虚结点,虚节点的后驱指向直接后继节点;
S6)更改端口2的直接前驱结点指向直接后继结点。
5.按权利要求3所述的将功能块图语言转换为AOV结构的方法,其特征在于:所述的步骤b3)进一步包括以下步骤:
a1)找到当前结点所有直接前驱和后继结点,若后继节点数大于1转向a2),否则转向a3);
a2)增加虚结点,更改前驱结点指向虚结点,虚结点的后继指向输出节点;
a3)更改所有前驱结点的指向后继结点。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510239281.0A CN106200541B (zh) | 2015-05-08 | 2015-05-08 | 一种将功能块图转换为aov结构的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510239281.0A CN106200541B (zh) | 2015-05-08 | 2015-05-08 | 一种将功能块图转换为aov结构的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106200541A true CN106200541A (zh) | 2016-12-07 |
CN106200541B CN106200541B (zh) | 2020-04-14 |
Family
ID=57460145
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510239281.0A Active CN106200541B (zh) | 2015-05-08 | 2015-05-08 | 一种将功能块图转换为aov结构的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106200541B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107273097A (zh) * | 2017-07-20 | 2017-10-20 | 浙江奇赛其自动化科技有限公司 | 一种用于plc系统的梯形图转换成指令表的方法 |
CN110928602A (zh) * | 2019-12-06 | 2020-03-27 | 浙江中控技术股份有限公司 | Fbd程序的运行方法及装置 |
CN112180817A (zh) * | 2019-07-02 | 2021-01-05 | 北京东土科技股份有限公司 | 一种梯形图转换二叉树的方法、装置、设备及存储介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101364098A (zh) * | 2008-09-12 | 2009-02-11 | 南京航空航天大学 | 一种将梯形图转换为指令表程序及解释执行的方法与系统 |
JP2010020635A (ja) * | 2008-07-11 | 2010-01-28 | Nippon Reliance Kk | プログラミング言語変換装置、変換方法及び変換プログラム |
CN101692585A (zh) * | 2009-10-16 | 2010-04-07 | 国电南京自动化股份有限公司 | 变电站自动化系统的防误闭锁系统 |
CN101957745A (zh) * | 2009-07-16 | 2011-01-26 | 沈阳高精数控技术有限公司 | 梯形图语言转换为结构文本语言的方法 |
CN102622259A (zh) * | 2012-02-17 | 2012-08-01 | 南京南瑞继保电气有限公司 | 一种用于可视化编程的功能块函数建模方法 |
US20130218299A1 (en) * | 2010-09-03 | 2013-08-22 | Siemens Aktiengesellschaft | MCP Scheduling For Parallelization Of LAD/FBD Control Program In Multi-Core PLC |
CN103559727A (zh) * | 2013-11-20 | 2014-02-05 | 北京四方继保自动化股份有限公司 | 一种梯形图数据结构描述及扫描解析方法 |
CN103823666A (zh) * | 2013-11-05 | 2014-05-28 | 国电南瑞科技股份有限公司 | 一种智能变电站设备可视化编程方法 |
-
2015
- 2015-05-08 CN CN201510239281.0A patent/CN106200541B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010020635A (ja) * | 2008-07-11 | 2010-01-28 | Nippon Reliance Kk | プログラミング言語変換装置、変換方法及び変換プログラム |
CN101364098A (zh) * | 2008-09-12 | 2009-02-11 | 南京航空航天大学 | 一种将梯形图转换为指令表程序及解释执行的方法与系统 |
CN101957745A (zh) * | 2009-07-16 | 2011-01-26 | 沈阳高精数控技术有限公司 | 梯形图语言转换为结构文本语言的方法 |
CN101692585A (zh) * | 2009-10-16 | 2010-04-07 | 国电南京自动化股份有限公司 | 变电站自动化系统的防误闭锁系统 |
US20130218299A1 (en) * | 2010-09-03 | 2013-08-22 | Siemens Aktiengesellschaft | MCP Scheduling For Parallelization Of LAD/FBD Control Program In Multi-Core PLC |
CN102622259A (zh) * | 2012-02-17 | 2012-08-01 | 南京南瑞继保电气有限公司 | 一种用于可视化编程的功能块函数建模方法 |
CN103823666A (zh) * | 2013-11-05 | 2014-05-28 | 国电南瑞科技股份有限公司 | 一种智能变电站设备可视化编程方法 |
CN103559727A (zh) * | 2013-11-20 | 2014-02-05 | 北京四方继保自动化股份有限公司 | 一种梯形图数据结构描述及扫描解析方法 |
Non-Patent Citations (1)
Title |
---|
谭锦洁 等: "嵌入式PLC中梯形图到AOV图的映射", 《计算机测量与控制》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107273097A (zh) * | 2017-07-20 | 2017-10-20 | 浙江奇赛其自动化科技有限公司 | 一种用于plc系统的梯形图转换成指令表的方法 |
CN112180817A (zh) * | 2019-07-02 | 2021-01-05 | 北京东土科技股份有限公司 | 一种梯形图转换二叉树的方法、装置、设备及存储介质 |
CN110928602A (zh) * | 2019-12-06 | 2020-03-27 | 浙江中控技术股份有限公司 | Fbd程序的运行方法及装置 |
CN110928602B (zh) * | 2019-12-06 | 2022-09-20 | 浙江中控技术股份有限公司 | Fbd程序的运行方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN106200541B (zh) | 2020-04-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Park et al. | Plant model generation for PLC simulation | |
CN102508654B (zh) | 嵌入式可编程控制器的梯形图编辑器设计方法 | |
US20160124731A1 (en) | Automated code-generation for cross-language development, testing, and integration | |
CN102354144B (zh) | 一种将梯形图转化成plc程序指令的方法 | |
CN104679949A (zh) | 基于XML路网数据的Paramics路网构建方法 | |
Yang | An example of local reasoning in BI pointer logic: the Schorr-Waite graph marking algorithm | |
EP3387525B1 (en) | Learning from input patterns in programing-by-example | |
CN104750945A (zh) | 一种量子电路仿真平台 | |
Yang et al. | The perimeter loop-based method for the automatic isomorphism detection in planetary gear trains | |
CN106200541A (zh) | 一种将功能块图转换为aov结构的方法 | |
CN110457029A (zh) | 一种基于scade基础算法块的逻辑组态图符配置方法 | |
CN104516813A (zh) | 网络页面的测试节点的选取方法和装置 | |
Klauske et al. | Improved layout for data flow diagrams with port constraints | |
Perez et al. | Soft and cost MDD propagators | |
Ding et al. | Fully expanded tree for property analysis of one-place-unbounded Petri nets | |
Tiwari et al. | Minimal realization for fuzzy behaviour: A bicategory-theoretic approach | |
Sotin et al. | Hierarchical shape abstraction of dynamic structures in static blocks | |
CN104572457B (zh) | 一种对含有特殊转换过程的非通用有限状态机进行改造的方法 | |
Silva et al. | Test case generation from natural language requirements using cpn simulation | |
CN113139022A (zh) | 一种基于混合规则的企业物流数据按需融合方法 | |
CN113051651A (zh) | 一种钢筋断料节点信息的实体化表达方法 | |
Pradhan | Enhancement of Turing machine to universal Turing machine to halt for recursive enumerable language and its JFLAP simulation | |
CN105893660A (zh) | 一种面向符号bdd操作的cpu设计方法及计算系统 | |
Zhang et al. | Automatic extraction rules generation based on xpath pattern learning | |
CN110019365A (zh) | 一种利用栈生成数据处理顺序的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | 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 |