CN109143952B - 可编程逻辑控制器编程语言转换*** - Google Patents
可编程逻辑控制器编程语言转换*** Download PDFInfo
- Publication number
- CN109143952B CN109143952B CN201810609281.9A CN201810609281A CN109143952B CN 109143952 B CN109143952 B CN 109143952B CN 201810609281 A CN201810609281 A CN 201810609281A CN 109143952 B CN109143952 B CN 109143952B
- Authority
- CN
- China
- Prior art keywords
- module
- conversion
- icil
- conversion module
- programming language
- 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
- 238000006243 chemical reaction Methods 0.000 title claims abstract description 202
- 238000010586 diagram Methods 0.000 claims abstract description 117
- 230000006870 function Effects 0.000 claims abstract description 93
- 238000000034 method Methods 0.000 claims abstract description 43
- 230000008569 process Effects 0.000 claims abstract description 26
- 238000004458 analytical method Methods 0.000 claims abstract description 23
- 238000004364 calculation method Methods 0.000 claims description 44
- 238000000354 decomposition reaction Methods 0.000 claims description 14
- 230000009471 action Effects 0.000 claims description 11
- 230000000737 periodic effect Effects 0.000 claims description 11
- 230000005012 migration Effects 0.000 claims description 10
- 238000013508 migration Methods 0.000 claims description 9
- 230000008520 organization Effects 0.000 claims description 5
- 238000011161 development Methods 0.000 abstract description 11
- 238000012795 verification Methods 0.000 abstract description 8
- 230000002349 favourable effect Effects 0.000 abstract 1
- 230000018109 developmental process Effects 0.000 description 10
- 230000009286 beneficial effect Effects 0.000 description 7
- 230000009191 jumping Effects 0.000 description 6
- 239000003607 modifier Substances 0.000 description 6
- 238000013138 pruning Methods 0.000 description 6
- 238000004422 calculation algorithm Methods 0.000 description 5
- 230000000694 effects Effects 0.000 description 5
- 238000004891 communication Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 239000008186 active pharmaceutical agent Substances 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000007373 indentation Methods 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 238000002054 transplantation Methods 0.000 description 2
- 238000004590 computer program Methods 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000008140 language development Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000001131 transforming effect Effects 0.000 description 1
Images
Classifications
-
- 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/054—Input/output
-
- 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
- G05B2219/00—Program-control systems
- G05B2219/10—Plc systems
- G05B2219/11—Plc I-O input output
- G05B2219/1103—Special, intelligent I-O processor, also plc can only access via processor
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Automation & Control Theory (AREA)
- Programmable Controllers (AREA)
Abstract
本发明提供一种可编程逻辑控制器编程语言转换***,包括:抽象语法树转换模块、梯形图转换模块、功能块图转换模块、顺序功能表图转换模块、结构化文本转换模块、指令表转换模块、ICIL中间结构转换模块。本发明提出的可编程逻辑控制器编程语言转换***能够实现IEC 61131‑3语言的统一转换,在不同厂商的PLC产品上进行开发和移植过程中,不必分别针对每种PLC语言编写相应的移植代码,且有利于后续深入开展基于该中间语言的形式化建模、分析及验证工作。
Description
技术领域
本发明涉及计算机技术领域,具体涉及一种可编程逻辑控制器编程语言转换***。
背景技术
早期的PLC(Programmable Logic Controller,可编程逻辑控制器)编程中,不同的电气设备提供商,包括西门子、三菱、倍福等厂商都有各自的PLC编程语言规范。这对不同厂商设备之间的PLC程序移植工作造成了巨大困难。1993年,国际电工委员会(International Electrotechnical Commission,IEC)颁布了PLC编程的国际标准IEC61131-3。该标准统一了五种PLC编程语言(梯形图、功能块图、顺序功能表图、结构化文本以及指令表语言)的规范,从而为解决不同设备间的PLC程序移植问题提出了解决方案。
为了满足不同PLC编程人群的使用,以及适应不同的PLC应用场景,IEC61131-3的五类语言具有不同的特征。其中,梯形图语言源于电气***逻辑控制图,功能块图源于信号处理领域,顺序功能表图用于描述顺序功能***的过程、功能及特性,指令表语言与汇编语言类似,是一种较为底层的语言,而结构化文本语言是一种较高级的文本语言。由于各个语言的特征不同,开发人员在对PLC程序进行开发或迁移工作时,需要掌握多项PLC语言开发技能。目前已有一些不同PLC语言之间的转换工作,例如由顺序功能表图到梯形图的转换、由梯形图到结构化文本的转换、由梯形图到指令表语言的转换等,但其均为单类语言之间的转换,使用起来有很大的局限性。
除了关于不同PLC语言之间的转换之外,为了对PLC应用程序进行形式化验证,目前也存在一些由单类PLC语言转换为时间状态自动机、Petri网(一种用于描述离散的、分布式***的数学建模工具)、NuSMV输入模型(一种模型检测工具)等形式化模型的转换技术。形式化方法利用严格的数学语义检查软件开发的各个阶段,可用于保证得到正确实现了的可运行程序,被大量用于验证各种安全相关和生命攸关的***。由于上述转化技术也是单类语言向形式化模型进行转换,同样具有较大的局限性。
鉴于上述问题,需要提供一种便于PLC程序进行移植、开发以及验证的PLC编程语言转换***。
发明内容
鉴于上述问题,本发明的目的是通过提供一种可编程逻辑控制器编程语言转换***,以解决现有技术中不便于PLC程序进行移植、开发以及验证的问题。
本发明提供一种可编程逻辑控制器编程语言转换***,包括:
抽象语法树转换模块、梯形图转换模块、功能块图转换模块、顺序功能表图转换模块、结构化文本转换模块、指令表转换模块、ICIL中间结构转换模块;其中,
所述抽象语法树转换模块,用于将文本类PLC编程语言转换为抽象语法树;
所述梯形图转换模块,用于将梯形图转换为ICIL中间结构;
所述功能块图转换模块,用于将功能块图转换为ICIL中间结构;
所述顺序功能表图转换模块,用于将顺序功能表图转换为ICIL中间结构;
所述结构化文本转换模块,用于将根据结构化文本转换得到的抽象语法树转换为ICIL中间结构;
所述指令表转换模块,用于将根据指令表转换得到的抽象语法树转换为ICIL中间结构;
所述ICIL中间结构转换模块,用于将所述ICIL中间结构转换为ICIL程序。
可选的,所述抽象语法树转换模块,具体用于以文本类PLC编程语言作为输入,通过词法分析和语法分析将输入的所述文本类PLC编程语言转换为抽象语法树;
其中,所述文本类PLC编程语言包括:结构化文本语言或指令表语言。
可选的,所述梯形图转换模块包括:多线圈分解模块、扫描顺序计算模块、节点逻辑关系计算模块和表达式优先级计算模块;其中,
所述多线圈分解模块、扫描顺序计算模块、节点逻辑关系计算模块和表达式优先级计算模块分别用于多线圈梯级的分解、节点扫描顺序计算、节点逻辑关系计算以及梯形图表达式优先级计算。
可选的,所述功能块图转换模块包括:功能块图解析模块和功能块图转换规则模块;
所述功能块图解析模块,用于将功能块图程序对应的PLCOpen XML文件解析为第一数据结构,所述第一数据结构包括:功能块程序、功能块网络、功能块和网络输入输出连接数据;
所述功能块图转换规则模块中配置有功能块转换规则和网络表达式输入输出规则,用于根据所述功能块转换规则和网络表达式输入输出规则,将所述功能块图解析模块输出的第一数据结构转换为ICIL中间结构。
可选的,所述顺序功能表图转换模块包括:顺序功能表图解析模块和顺序功能表图转换规则模块;
所述顺序功能表图解析模块,用于将顺序功能表图程序对应的PLCOpenXML文件解析为第二数据结构,所述第二数据结构包括:步、动作块、迁移、并发分支结构、并发合并结构、选择分支结构以及选择合并结构;
所述顺序功能表图转换规则模块中配置有步转换规则和动作块转换规则,用于根据所述步转换规则和动作块转换规则将所述第二数据结构转换为ICIL中间结构。
可选的,所述结构化文本转换模块中配置有结构化文本转换规则;
所述结构化文本转换模块具体用于根据所述结构化文本转换规则,将所述抽象语法树转换模块根据结构化文本语言生成的抽象语法树转换为ICIL中间结构。
可选的,所述指令表转换模块中配置有指令表转换规则;
所述指令表转换模块具体用于根据所述指令表转换规则,将所述抽象语法树转换模块根据指令表语言生成的抽象语法树转换为ICIL中间结构。
可选的,所述ICIL中间结构转换模块,用于对ICIL中间结构进行解析,以及根据解析结果生成ICIL程序中的代码。
可选的,所述ICIL为基于CSP语言进行扩展得到的工业控制器中间语言,其扩展内容包括模块元素、语句元素和周期式通道元素;其中,
所述模块元素,用于统一IEC 61131-3中对程序组织单元的定义,以通过模块的调用和运行来表示原PLC编程语言中的函数、功能块、程序的调用及运行;
所述语句元素,用于表示赋值操作以及模块的调用操作;
所述周期式通道元素,用于周期式传输通道上的消息。
可选的,所述模块元素包括:变量声明和进程定义两个部分;其中,
所述变量声明用于声明在模块中使用到的变量;
所述进程定义用于通过进程表示模块的执行行为。
本发明的有益效果包括:
本发明提出的可编程逻辑控制器编程语言转换***能够实现IEC 61131-3语言的统一转换,在不同厂商的PLC产品上进行开发和移植过程中,不必分别针对每种PLC语言编写相应的移植代码;此外,本发明提出的形式化建模语言ICIL及其转换***,有利于后续深入开展基于该中间语言的形式化建模、分析及验证工作,由于IEC 61131-3标准本身没有提出过相应的形式化验证方法,因此本发明对提高关键领域工控程序的安全性和可靠性具有重要意义,在PLC编程环境中具有广阔应用前景;另外,本发明提出的形式化建模语言ICIL有利于未来统一PLC编程开发语言。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了本发明实施方式所提供的一种可编程逻辑控制器编程语言转换***的示意图;
图2示出了本发明实施方式所提供的一种可编程逻辑控制器编程语言转换方法的流程图;
图3示出了本发明实施方式所提供的符合IEC 61131-3编程语言规范的一个梯形图的示意图;
图4示出了本发明实施方式所提供的根据图3提供的梯形图转换得到的AOV图的示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施方式。虽然附图中显示了本公开的示例性实施方式,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
需要注意的是,除非另有说明,本发明使用的技术术语或者科学术语应当为本发明所属领域技术人员所理解的通常意义。
本发明实施方式提供了一种可编程逻辑控制器编程语言转换***。下面结合附图对本发明的实施例进行说明。
本发明实施例,首先在扩展CSP(Communicating Sequential Language,通信顺序进程)语言的基础上,提出了一种基于IEC 61131-3编程语言的中间语言ICIL(IndustrialController Intermediate Language,工业控制器中间语言),该语言的扩展元素包括模块元素、语句元素以及周期式通道元素。
其中,模块元素统一了IEC 61131-3中对程序组织单元的定义,即原PLC编程语言中的函数、功能块、程序的调用和运行均能通过模块的调用和运行来表示。并且,一个模块包含了变量声明和进程定义两个部分,变量声明部分用于声明在该模块中使用到的变量,一方面,变量声明可以确定这些变量的作用域,另一方面,可以方便在该模块中对这些变量的使用。进程定义用于通过进程表示该模块的执行行为。
语句元素作为源语言中的事件,可用于表示赋值操作以及模块的调用操作,从而扩展了原CSP语言中计算功能上的不足。
周期式通道元素可用于周期式传输通道上的消息,相对于原有CSP语言中的通道,可以更准确地描述PLC程序周期扫描执行的行为。
请参考图1,其示出了本发明实施方式所提供的一种可编程逻辑控制器编程语言转换***的示意图,所述可编程逻辑控制器编程语言转换***10用于将IEC 61131-3编程语言转换为ICIL中间语言,所述可编程逻辑控制器编程语言转换***10包括:
抽象语法树转换模块101、梯形图转换模块102、功能块图转换模块103、顺序功能表图转换模块104、结构化文本转换模块105、指令表转换模块106、ICIL中间结构转换模块107;其中,
所述抽象语法树转换模块101,用于将文本类PLC编程语言转换为抽象语法树;
所述梯形图转换模块102,用于将梯形图转换为ICIL中间结构;
所述功能块图转换模块103,用于将功能块图转换为ICIL中间结构;
所述顺序功能表图转换模块104,用于将顺序功能表图转换为ICIL中间结构;
所述结构化文本转换模块105,用于将根据结构化文本转换得到的抽象语法树转换为ICIL中间结构;
所述指令表转换模块106,用于将根据指令表转换得到的抽象语法树转换为ICIL中间结构;
所述ICIL中间结构转换模块107,用于将所述ICIL中间结构转换为ICIL程序。
在一些实施方式中,所述抽象语法树转换模块101,具体用于以文本类PLC编程语言作为输入,通过词法分析和语法分析将输入的所述文本类PLC编程语言转换为抽象语法树;
其中,所述文本类PLC编程语言包括:结构化文本语言或指令表语言。
具体的,所述抽象语法树转换模块101,可以以结构化文本语言以及指令表语言的语法文件作为输入,通过ANTLR等语法解析框架将这两类语言编写的PLC程序转换为抽象语法树。
在一些实施方式中,所述梯形图转换模块102,可以包括:多线圈分解模块、扫描顺序计算模块、节点逻辑关系计算模块和表达式优先级计算模块;其中,
所述多线圈分解模块、扫描顺序计算模块、节点逻辑关系计算模块和表达式优先级计算模块分别用于多线圈梯级的分解、节点扫描顺序计算、节点逻辑关系计算以及梯形图表达式优先级计算。
具体的,在本发明实施例提供的一种实施方式中,所述多线圈分解模块,可以用于对线圈数量大于1的梯级进行分解;
所述扫描顺序计算模块,可以用于将梯形图节点关系转换为AOV(Activity OnVertex,一种顶点表示活动的有向图)图,并基于AOV图对节点进行拓扑排序,从而获得梯形图中节点的扫描顺序;
所述节点逻辑关系计算模块,可以用于基于节点之间的连接关系,制定相应的逻辑操作符计算规则,从而计算梯形图节点之间的逻辑关系;
所述表达式优先级计算模块,可以用于通过剪枝算法对AOV图中子节点数量大于2的节点进行剪枝操作,即通过***虚拟节点连接子节点的方式使原AOV图中的每个节点的子节点个数不超过2,在剪枝后的图中计算不同节点之间的操作优先级关系,在梯形图表达式中加入优先级计算符(“(”,“)”)。
在一些实施方式中,所述功能块图转换模块103包括:功能块图解析模块和功能块图转换规则模块;
所述功能块图解析模块,用于将功能块图程序对应的PLCOpen XML文件解析为第一数据结构,所述第一数据结构包括:功能块程序、功能块网络、功能块和网络输入输出连接数据;
所述功能块图转换规则模块中配置有功能块转换规则和网络表达式输入输出规则,用于根据所述功能块转换规则和网络表达式输入输出规则,将所述功能块图解析模块输出的第一数据结构转换为ICIL中间结构。
在一些实施方式中,所述顺序功能表图转换模块104包括:顺序功能表图解析模块和顺序功能表图转换规则模块;
所述顺序功能表图解析模块,用于将顺序功能表图程序对应的PLCOpenXML文件解析为第二数据结构,所述第二数据结构包括:步、动作块、迁移、并发分支结构、并发合并结构、选择分支结构以及选择合并结构;
所述顺序功能表图转换规则模块中配置有步转换规则和动作块转换规则(可以根据顺序功能块图中常用的12类限定符(N、R、S、L、D、P、SD、DS、SL、P1及P0)分别制定不同的转换操作),用于根据所述步转换规则和动作块转换规则将所述第二数据结构转换为ICIL中间结构。
在一些实施方式中,所述结构化文本转换模块105中配置有结构化文本转换规则;
所述结构化文本转换模块105,具体用于根据所述结构化文本转换规则,将所述抽象语法树转换模块101根据结构化文本语言生成的抽象语法树转换为ICIL中间结构。
具体的,由于结构化文本中的语句与ICIL语句比较类似,该模块中的规则主要用于将结构化文本中的case语句以及三类循环语句转换为进程之间的条件选择关系。
在一些实施方式中,所述指令表转换模块106中配置有指令表转换规则;
所述指令表转换模块106,具体用于根据所述指令表转换规则,将所述抽象语法树转换模块101根据指令表语言生成的抽象语法树转换为ICIL中间结构。
具体的,所述指令表转换模块106中,主要针对指令表语言的每种操作符、修饰符以及两者之间的组合关系定义相应的指令表转换规则,其中延迟计算修饰符需要单独进行计算,本发明中的圆括号延迟计算操作中,采用相应的优先级计算算法,通过优先级计算符(“(”,“)”)将指令中的延迟计算转换为表达式中的优先运算关系。
在一些实施方式中,所述ICIL中间结构转换模块107,用于对ICIL中间结构进行解析,以及根据解析结果生成ICIL程序中的代码。具体的,所述ICIL中间结构转换模块107通过对ICIL中间结构的解析,完成ICIL程序中的自动代码生成工作,其中包括了ICIL语言的生成以及缩进与段落管理的生成。
在一些实施方式中,所述ICIL为基于CSP语言进行扩展得到的工业控制器中间语言,其扩展内容包括模块元素、语句元素和周期式通道元素;其中,
所述模块元素,用于统一IEC 61131-3中对程序组织单元的定义,以通过模块的调用和运行来表示原PLC编程语言中的函数、功能块、程序的调用及运行;
所述语句元素,用于表示赋值操作以及模块的调用操作;
所述周期式通道元素,用于周期式传输通道上的消息。
在一些实施方式中,所述模块元素包括:变量声明和进程定义两个部分;其中,
所述变量声明用于声明在模块中使用到的变量;
所述进程定义用于通过进程表示模块的执行行为。
以上,为本发明实施例所提供的可编程逻辑控制器编程语言转换***10的示例性说明,本发明提出的可编程逻辑控制器编程语言转换***10能够实现IEC 61131-3语言的统一转换,在不同厂商的PLC产品上进行开发和移植过程中,不必分别针对每种PLC语言编写相应的移植代码;此外,本发明提出的形式化建模语言ICIL及其转换***10,有利于后续深入开展基于该中间语言的形式化建模、分析及验证工作,由于IEC 61131-3标准本身没有提出过相应的形式化验证方法,因此本发明对提高关键领域工控程序的安全性和可靠性具有重要意义,在PLC编程环境中具有广阔应用前景;另外,本发明提出的形式化建模语言ICIL有利于未来统一PLC编程开发语言。
与上述可编程逻辑控制器编程语言转换***对应的,本发明还提供一种可编程逻辑控制器编程语言转换方法,请参考图2,其示出了本发明实施方式所提供的一种可编程逻辑控制器编程语言转换方法的流程示意图,所述可编程逻辑控制器编程语言转换方法用于将IEC 61131-3编程语言转换为ICIL中间语言,所述可编程逻辑控制器编程语言转换方法包括:
抽象语法树转换步骤S101,将文本类PLC编程语言转换为抽象语法树;
梯形图转换步骤S102,将梯形图转换为ICIL中间结构;
功能块图转换步骤S103,将功能块图转换为ICIL中间结构;
顺序功能表图转换步骤S104,将顺序功能表图转换为ICIL中间结构;
结构化文本转换步骤S105,将根据结构化文本转换得到的抽象语法树转换为ICIL中间结构;
指令表转换步骤S106,将根据指令表转换得到的抽象语法树转换为ICIL中间结构;
ICIL中间结构转换步骤S107,将所述ICIL中间结构转换为ICIL程序。
在一些实施方式中,在步骤S101之前,还可以包括步骤S100:获取待转换的PLC编程语言,根据所述PLC编程语言的类别跳转到相应的步骤,例如,若所述PLC编程语言为梯形图,则由步骤S101跳转到步骤S102;若所述PLC编程语言为结构化文本图,则由步骤S101跳转到步骤S101,再由S101跳转到步骤S105;若所述PLC编程语言为指令表,则跳转到步骤S101,再由S101跳转到步骤S106。
在一些实施方式中,所述抽象语法树转换步骤S101,具体以文本类PLC编程语言作为输入,通过词法分析和语法分析将输入的所述文本类PLC编程语言转换为抽象语法树;
其中,所述文本类PLC编程语言包括:结构化文本语言或指令表语言。
具体的,所述抽象语法树转换步骤S101可以以结构化文本语言以及指令表语言的语法文件作为输入,通过ANTLR等语法解析框架将这两类语言编写的PLC程序转换为抽象语法树。
在一些实施方式中,所述梯形图转换步骤S102可以包括:多线圈分解步骤、扫描顺序计算步骤、节点逻辑关系计算步骤和表达式优先级计算步骤;其中,
所述多线圈分解步骤、扫描顺序计算步骤、节点逻辑关系计算步骤和表达式优先级计算步骤分别进行多线圈梯级的分解、节点扫描顺序计算、节点逻辑关系计算以及梯形图表达式优先级计算。
具体的,在本发明实施例提供的一种实施方式中,所述多线圈分解步骤,可以包括:对线圈数量大于1的梯级进行分解;
所述扫描顺序计算步骤,可以包括:将梯形图节点关系转换为AOV(Activity OnVertex,一种顶点表示活动的有向图)图,并基于AOV图对节点进行拓扑排序,从而获得梯形图中节点的扫描顺序;
所述节点逻辑关系计算步骤,可以包括:基于节点之间的连接关系,制定相应的逻辑操作符计算规则,从而计算梯形图节点之间的逻辑关系;
所述表达式优先级计算步骤,可以包括:通过剪枝算法对AOV图中子节点数量大于2的节点进行剪枝操作,即通过***虚拟节点连接子节点的方式使原AOV图中的每个节点的子节点个数不超过2,在剪枝后的图中计算不同节点之间的操作优先级关系,在梯形图表达式中加入优先级计算符(“(”,“)”)。
在一些实施方式中,所述功能块图转换步骤S103可以包括:功能块图解析步骤和功能块图转换规则步骤;
所述功能块图解析步骤,可以包括:将功能块图程序对应的PLCOpen XML文件解析为第一数据结构,所述第一数据结构包括:功能块程序、功能块网络、功能块和网络输入输出连接数据;
所述功能块图转换规则步骤,可以包括:根据功能块转换规则和网络表达式输入输出规则,将所述功能块图解析步骤输出的第一数据结构转换为ICIL中间结构。
在一些实施方式中,所述顺序功能表图转换步骤S104包括:顺序功能表图解析步骤和顺序功能表图转换规则步骤;
所述顺序功能表图解析步骤,可以包括:将顺序功能表图程序对应的PLCOpenXML文件解析为第二数据结构,所述第二数据结构包括:步、动作块、迁移、并发分支结构、并发合并结构、选择分支结构以及选择合并结构;
所述顺序功能表图转换规则步骤,可以包括:根据步转换规则和动作块转换规则(可以根据顺序功能块图中常用的12类限定符(N、R、S、L、D、P、SD、DS、SL、P1及P0)分别制定不同的转换操作)将所述第二数据结构转换为ICIL中间结构。
在一些实施方式中,所述结构化文本转换步骤S105,可以包括:根据所述结构化文本转换规则,将所述抽象语法树转换步骤S101根据结构化文本语言生成的抽象语法树转换为ICIL中间结构。
具体的,由于结构化文本中的语句与ICIL语句比较类似,该步骤中的规则主要用于将结构化文本中的case语句以及三类循环语句转换为进程之间的条件选择关系。
在一些实施方式中,所述指令表转换步骤S106,可以包括:根据所述指令表转换规则,将所述抽象语法树转换步骤S101根据指令表语言生成的抽象语法树转换为ICIL中间结构。
具体的,所述指令表转换步骤S106中,主要针对指令表语言的每种操作符、修饰符以及两者之间的组合关系定义相应的指令表转换规则,其中延迟计算修饰符需要单独进行计算,本发明中的圆括号延迟计算操作中,采用相应的优先级计算算法,通过优先级计算符(“(”,“)”)将指令中的延迟计算转换为表达式中的优先运算关系。
在一些实施方式中,所述ICIL中间结构转换步骤S107,可以包括:对ICIL中间结构进行解析,以及根据解析结果生成ICIL程序中的代码。具体的,所述ICIL中间结构转换步骤S107通过对ICIL中间结构的解析,完成ICIL程序中的自动代码生成工作,其中包括了ICIL语言的生成以及缩进与段落管理的生成。
在一些实施方式中,所述ICIL为基于CSP语言进行扩展得到的工业控制器中间语言,其扩展内容包括模块元素、语句元素和周期式通道元素;其中,
所述模块元素,用于统一IEC 61131-3中对程序组织单元的定义,以通过模块的调用和运行来表示原PLC编程语言中的函数、功能块、程序的调用及运行;
所述语句元素,用于表示赋值操作以及模块的调用操作;
所述周期式通道元素,用于周期式传输通道上的消息。
在一些实施方式中,所述模块元素包括:变量声明和进程定义两个部分;其中,
所述变量声明用于声明在模块中使用到的变量;
所述进程定义用于通过进程表示模块的执行行为。
下面结合附图3、4对本发明实施例提供的一个具体实施例进行说明,图3示出了本发明实施方式所提供的符合IEC 61131-3编程语言规范的一个梯形图的示意图,图4示出了本发明实施方式所提供的根据图3提供的梯形图转换得到的AOV图的示意图,结合前述具体实施方式中对梯形图转换模块102及梯形图转换步骤S102的描述,利用本发明实施例提供的可编程逻辑控制器编程语言转换***10对梯形图进行转换的过程如下:
步骤S1:通过对梯形图导出的PLCOpen XML进行解析,从而得到相应的梯形图数据结构。
步骤S2:根据梯形图数据结构之间的关系,得到如图4所示的AOV图,AOV图可表示为一个有向图G(V,E),其中V节点集合表示任务或者行为活动,E边集合表示这些任务之间的优先级关系,任意一个节点vi到vj的关系,可以使用节点对(vi,vj)表示,任意节点v的前驱节点比节点v的优先级高。
步骤S3:在AOV图(图4)的基础上根据拓扑排序算法进行排序,可得到的序列为(n1,n2,n5,n6,n7,n10,n11,n8,n12,n13,n15,n14,n3,n9,n4)。
为了说明梯形图的转换效果,拟列出如下梯形图转换规则,通过顺序遍历上述拓扑排序、并应用如下规则产生最终的ICIL语言表达式:
1)若当前节点为拓扑排序中的第一个节点,则当前产生的操作符为空,即操作符为“”;
2)若当前节点与上一个节点位于同一行,则当前产生的操作符为“&&”;
3)若当前节点与上一个节点不位于同一行,且在AOV图中,存在上一个节点到当前节点的连接线,则当前操作符为“&&”;
4)若当前节点与上一个节点不位于同一行,且在AOV图中,不存在上一个节点到当前节点的连接线,则当前操作符为“||”。
步骤S4:通过应用上述规则遍历上述拓扑序列,得到最终的ICIL语句为n4=n1&&n2||n5&&n6&&n7||n10&&n11||n12&&n13||n15&&n14&&n3||n9;
步骤S5:通过剪枝算法对AOV图进行剪枝操作,并在此基础上利用优先级计算算法计算上一步中表达式的计算优先级,从而得到如下ICIL语句:
n4=(n1&&n2||n5&&((n6&&n7||n10&&n11)&&n8||n12&&(n13||n15)&&n14))&&(n3||n9)。
以上,为本发明实施例所提供的可编程逻辑控制器编程语言转换方法的示例性说明,本发明提出的可编程逻辑控制器编程语言转换方法能够实现IEC61131-3语言的统一转换,在不同厂商的PLC产品上进行开发和移植过程中,不必分别针对每种PLC语言编写相应的移植代码;此外,本发明提出的形式化建模语言ICIL及其转换方法,有利于后续深入开展基于该中间语言的形式化建模、分析及验证工作,由于IEC 61131-3标准本身没有提出过相应的形式化验证方法,因此本发明对提高关键领域工控程序的安全性和可靠性具有重要意义,在PLC编程环境中具有广阔应用前景;另外,本发明提出的形式化建模语言ICIL有利于未来统一PLC编程开发语言。
需要说明的是,附图中的流程图和框图显示了根据本发明的多个实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的***、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围,其均应涵盖在本发明的权利要求和说明书的范围当中。
Claims (8)
1.一种可编程逻辑控制器编程语言转换***,其特征在于,包括:抽象语法树转换模块、梯形图转换模块、功能块图转换模块、顺序功能表图转换模块、结构化文本转换模块、指令表转换模块、ICIL中间结构转换模块;其中,
所述抽象语法树转换模块,用于将文本类PLC编程语言转换为抽象语法树;
所述梯形图转换模块,用于将梯形图转换为ICIL中间结构;
所述功能块图转换模块,用于将功能块图转换为ICIL中间结构;
所述顺序功能表图转换模块,用于将顺序功能表图转换为ICIL中间结构;
所述结构化文本转换模块,用于将根据结构化文本转换得到的抽象语法树转换为ICIL中间结构;
所述指令表转换模块,用于将根据指令表转换得到的抽象语法树转换为ICIL中间结构;
所述ICIL中间结构转换模块,用于将所述ICIL中间结构转换为ICIL程序;
其中,
所述抽象语法树转换模块,具体用于以文本类PLC编程语言作为输入,通过词法分析和语法分析将输入的所述文本类PLC编程语言转换为抽象语法树;
所述文本类PLC编程语言包括:结构化文本语言或指令表语言;
相应的,所述抽象语法树包括:根据结构化文本转换得到的抽象语法树或根据指令表转换得到的抽象语法树;
所述梯形图转换模块包括:多线圈分解模块、扫描顺序计算模块、节点逻辑关系计算模块和表达式优先级计算模块;
所述多线圈分解模块、扫描顺序计算模块、节点逻辑关系计算模块和表达式优先级计算模块分别用于多线圈梯级的分解、节点扫描顺序计算、节点逻辑关系计算以及梯形图表达式优先级计算。
2.根据权利要求1所述的可编程逻辑控制器编程语言转换***,其特征在于,所述功能块图转换模块包括:功能块图解析模块和功能块图转换规则模块;
所述功能块图解析模块,用于将功能块图程序对应的PLCOpen XML文件解析为第一数据结构,所述第一数据结构包括:功能块程序、功能块网络、功能块和网络输入输出连接数据;
所述功能块图转换规则模块中配置有功能块转换规则和网络表达式输入输出规则,用于根据所述功能块转换规则和网络表达式输入输出规则,将所述功能块图解析模块输出的第一数据结构转换为ICIL中间结构。
3.根据权利要求1所述的可编程逻辑控制器编程语言转换***,其特征在于,所述顺序功能表图转换模块包括:顺序功能表图解析模块和顺序功能表图转换规则模块;
所述顺序功能表图解析模块,用于将顺序功能表图程序对应的PLCOpenXML文件解析为第二数据结构,所述第二数据结构包括:步、动作块、迁移、并发分支结构、并发合并结构、选择分支结构以及选择合并结构;
所述顺序功能表图转换规则模块中配置有步转换规则和动作块转换规则,用于根据所述步转换规则和动作块转换规则将所述第二数据结构转换为ICIL中间结构。
4.根据权利要求1所述的可编程逻辑控制器编程语言转换***,其特征在于,所述结构化文本转换模块中配置有结构化文本转换规则;
所述结构化文本转换模块具体用于根据所述结构化文本转换规则,将所述抽象语法树转换模块根据结构化文本语言生成的抽象语法树转换为ICIL中间结构。
5.根据权利要求1所述的可编程逻辑控制器编程语言转换***,其特征在于,所述指令表转换模块中配置有指令表转换规则;
所述指令表转换模块具体用于根据所述指令表转换规则,将所述抽象语法树转换模块根据指令表语言生成的抽象语法树转换为ICIL中间结构。
6.根据权利要求1所述的可编程逻辑控制器编程语言转换***,其特征在于,所述ICIL中间结构转换模块,用于对ICIL中间结构进行解析,以及根据解析结果生成ICIL程序中的代码。
7.根据权利要求1至6任一项所述的可编程逻辑控制器编程语言转换***,其特征在于,所述ICIL为基于CSP语言进行扩展得到的工业控制器中间语言,其扩展内容包括模块元素、语句元素和周期式通道元素;其中,
所述模块元素,用于统一IEC 61131-3中对程序组织单元的定义,以通过模块的调用和运行来表示原PLC编程语言中的函数、功能块、程序的调用及运行;
所述语句元素,用于表示赋值操作以及模块的调用操作;
所述周期式通道元素,用于周期式传输通道上的消息。
8.根据权利要求7所述的可编程逻辑控制器编程语言转换***,其特征在于,所述模块元素包括:变量声明和进程定义两个部分;其中,
所述变量声明用于声明在模块中使用到的变量;
所述进程定义用于通过进程表示模块的执行行为。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810609281.9A CN109143952B (zh) | 2018-06-13 | 2018-06-13 | 可编程逻辑控制器编程语言转换*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810609281.9A CN109143952B (zh) | 2018-06-13 | 2018-06-13 | 可编程逻辑控制器编程语言转换*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109143952A CN109143952A (zh) | 2019-01-04 |
CN109143952B true CN109143952B (zh) | 2020-05-12 |
Family
ID=64801988
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810609281.9A Active CN109143952B (zh) | 2018-06-13 | 2018-06-13 | 可编程逻辑控制器编程语言转换*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109143952B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023003453A1 (es) * | 2021-07-21 | 2023-01-26 | Leyva Castaneda Denisse | Dispositivo inteligente de control y optimizacion industrial |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110147226B (zh) * | 2019-04-02 | 2023-10-03 | 杭州电子科技大学 | 一种根据功能块图自动生成程序的***、方法及装置 |
CN111522291A (zh) * | 2020-04-28 | 2020-08-11 | 同方泰德国际科技(北京)有限公司 | 一种可编程控制方法及可编程控制器 |
CN112526921A (zh) * | 2020-12-15 | 2021-03-19 | 湖南戈人自动化科技有限公司 | 一种功能顺序图表达式编译方法 |
CN113158613B (zh) * | 2021-04-02 | 2022-08-12 | 上海国微思尔芯技术股份有限公司 | 一种将超图结构转rtl级hdl文件的方法及装置 |
CN113031934B (zh) * | 2021-04-06 | 2022-07-26 | 卡斯柯信号有限公司 | 一种用于形式化验证的联锁数据安全转换方法及翻译器 |
CN113255264B (zh) * | 2021-06-07 | 2021-10-01 | 上海国微思尔芯技术股份有限公司 | 增量分割处理方法、装置、计算机设备和存储介质 |
CN113703428B (zh) * | 2021-09-02 | 2022-12-27 | 成都运达科技股份有限公司 | 一种基于逻辑梯形图的列车功能故障诊断方法及装置 |
US20240085861A1 (en) * | 2022-09-14 | 2024-03-14 | Rockwell Automation Technologies, Inc. | Programmable automation controller based optimization |
CN115658079B (zh) * | 2022-10-24 | 2023-10-13 | 上海繁易信息科技股份有限公司 | 一种功能块图转换为结构化文本的方法及相关设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008117311A (ja) * | 2006-11-07 | 2008-05-22 | Omron Corp | 温度制御方法、温度制御装置およびループコントローラ |
CN101957745A (zh) * | 2009-07-16 | 2011-01-26 | 沈阳高精数控技术有限公司 | 梯形图语言转换为结构文本语言的方法 |
CN103942081A (zh) * | 2014-03-07 | 2014-07-23 | 东莞市升力智能科技有限公司 | Plc梯形图il指令表生成方法 |
CN104503816A (zh) * | 2014-12-30 | 2015-04-08 | 西安电子科技大学 | 一种硬件语言vhdl到msvl的自动转换*** |
CN105607569A (zh) * | 2015-12-25 | 2016-05-25 | 山东超越数控电子有限公司 | 一种将il语言转换为梯形图的方法及装置 |
-
2018
- 2018-06-13 CN CN201810609281.9A patent/CN109143952B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008117311A (ja) * | 2006-11-07 | 2008-05-22 | Omron Corp | 温度制御方法、温度制御装置およびループコントローラ |
CN101957745A (zh) * | 2009-07-16 | 2011-01-26 | 沈阳高精数控技术有限公司 | 梯形图语言转换为结构文本语言的方法 |
CN103942081A (zh) * | 2014-03-07 | 2014-07-23 | 东莞市升力智能科技有限公司 | Plc梯形图il指令表生成方法 |
CN104503816A (zh) * | 2014-12-30 | 2015-04-08 | 西安电子科技大学 | 一种硬件语言vhdl到msvl的自动转换*** |
CN105607569A (zh) * | 2015-12-25 | 2016-05-25 | 山东超越数控电子有限公司 | 一种将il语言转换为梯形图的方法及装置 |
Non-Patent Citations (1)
Title |
---|
软 PLC 的转换中间语言模型的建立与研究;张涛;《微计算机信息》;20071215;正文第2页 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023003453A1 (es) * | 2021-07-21 | 2023-01-26 | Leyva Castaneda Denisse | Dispositivo inteligente de control y optimizacion industrial |
Also Published As
Publication number | Publication date |
---|---|
CN109143952A (zh) | 2019-01-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109143952B (zh) | 可编程逻辑控制器编程语言转换*** | |
CN109032056B (zh) | 可编程逻辑控制器编程语言转换方法 | |
Estévez et al. | Automatic generation of PLC automation projects from component-based models | |
Julius et al. | Transformation of GRAFCET to PLC code including hierarchical structures | |
Soliman et al. | Verification and validation of safety applications based on PLCopen safety function blocks | |
Cengic et al. | On formal analysis of IEC 61499 applications, Part A: Modeling | |
CN111880784B (zh) | 一种面向simscript语言的离散事件仿真图形化建模方法 | |
CN110109658B (zh) | 一种基于形式化模型的ros代码生成器及代码生成方法 | |
CN108037913B (zh) | xUML4MC模型到MSVL语言程序的转换方法、计算机可读存储介质 | |
Yan et al. | Compiling ladder diagram into instruction list to comply with IEC 61131-3 | |
Chivilikhin et al. | Automatic state machine reconstruction from legacy programmable logic controller using data collection and sat solver | |
CN111767217A (zh) | Js单元测试案例生成方法及装置 | |
US20210026609A1 (en) | Support device and non-transitory computer-readable recording medium | |
Schönberger et al. | Algorithmic support for model transformation in object‐oriented software development | |
Oppelt et al. | Capability-analysis of co-simulation approaches for process industries | |
CN110825433B (zh) | 一种边缘控制设备设计方法 | |
Serna et al. | Dash: A new language for declarative behavioural requirements with control state hierarchy | |
Asensio et al. | Industrial automation programming environment with a new translation algorithm among IEC 61131–3 languages based on the TC6-XML scheme | |
Bergstra et al. | Decision problems for pushdown threads | |
Koo et al. | Software design specification and analysis technique (SDSAT) for the development of safety-critical systems based on a programmable logic controller (PLC) | |
Lin et al. | A Platform-Independent Code Model for Operation and Information Technologies Convergences in Industrial Edge Applications | |
CN110516280A (zh) | 一种matlab的实时仿真方法 | |
CN117422047B (zh) | 一种cpu与gpu异构平台的电路仿真方法与自动化仿真方法 | |
CN117648081B (zh) | 一种可视化软件集成开发方法、***及存储介质 | |
Van Mierlo et al. | The fundamentals of domain-specific simulation language engineering |
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 | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20210805 Address after: Room 801, no.6, Lane 600, Yunling West Road, Putuo District, Shanghai 200062 Patentee after: SHANGHAI FORMAL TECH INFORMATION TECHNOLOGY Co.,Ltd. Address before: 200062 No. 3663, Putuo District, Shanghai, Zhongshan North Road Patentee before: EAST CHINA NORMAL University Patentee before: SHANGHAI FORMAL TECH INFORMATION TECHNOLOGY Co.,Ltd. |