本发明专利技术属于程序开发技术领域,具体涉及一种根据功能块图自动生成程序的系统、方法及装置。所述系统包括:功能块类单元,存储有至少一个功能块类,所述功能块类为功能块抽象封装成的一个类;有向图生成单元,将操作人员进行连线和/或赋值操作关联的两个功能块,转换为对应的有向图;指令集生成单元,对有向图进行遍历,并进行变量替换,生成指令集代码。转换过程简单高效,降低了程序开发的门槛,且标准化程度高,适用较广。
A System, Method and Device for Automatically Generating Programs Based on Functional Block Diagrams
【技术实现步骤摘要】
一种根据功能块图自动生成程序的系统、方法及装置
本专利技术属于程序开发
,具体涉及一种根据功能块图自动生成程序的系统、方法及装置。
技术介绍
可编程控制器(PLC)在世界自动化领域广泛应用。随着越来越多的PLC厂商出现,各个厂商的PLC之间需要相互协作、相互移植的需求显著增多,一个明确规范的PLC编程语言标准就显得非常重要。IEC61131-3标准是由国际电工委员会(IEC)制定IEC61131标准的第3部分,用于规范PLC的编程语言规范。使得各个厂商之间的PLC程序更容易互相移植,互相兼容。FBD功能块图语言是IEC61131-3标准规定的5种PLC编程语言之一。功能块图是一种图编程语言,它的编程方式类似于逻辑电路中的逻辑表达式,能够方便地描述复杂的功能,程序逻辑清晰、易于理解,但将功能块图程序编译为能在PLC设备上运行的可执行文件是PLC集成开发平台软件的难点之一。指令集也是IEC61131-3标准规定的5中PLC编程语言之一,是一种类汇编语言,非常容易编译为对应的汇编语言,因此将功能块图转换为较容易编译的指令集语言,是功能块图编译的可行方案之一。但是PLC领域内传统的功能块图程序转换到指令集程序的方法有着建模复杂、流程繁琐、实现困难等缺点。
技术实现思路
有鉴于此,本专利技术的主要目的在于提供一种根据功能块图自动生成程序的系统、方法及装置,转换过程简单高效,且降低了程序开发的门槛,且标准化程度高,适用较广。为达到上述目的,本专利技术的技术方案是这样实现的:一种根据功能块图自动生成程序的系统,所述系统包括:功能块类单元,存储有至少一个功能块类,所述功能块类为功能块抽象封装成的一个类;有向图生成单元,将操作人员进行连线和/或赋值操作关联的两个功能块,转换为对应的有向图;指令集生成单元,对有向图进行遍历,并进行变量替换,生成指令集代码。进一步的,所述功能块类单元中存储的每个功能块类的成员属性均包括:功能块的位置、功能块的大小、功能块的外表图片、功能块的输入引脚、功能块的输出引脚和内嵌指令集代码。进一步的,所述指令集生成单元包括:单个有向图遍历模块,用于对单个有向图进行遍历,并进行变量替换,生成指令集代码;多个有向图遍历模块,用于对多个有向图进行遍历,,并进行变量替换,生成指令集代码。一种根据功能块图自动生成程序的方法,所述方法执行以下步骤:将每个功能块抽象封装为一个类,并进行存储,一个功能块即一个功能块类的实例对象;将操作人员进行连线和/或赋值操作关联的两个功能块,转换为对应的有向图;对有向图进行遍历,并进行变量替换,生成指令集代码。进一步的,所述将操作人员进行连线和/或赋值操作关联的两个功能块,转换为对应的有向图的方法执行以下步骤:以各个功能块作为有向图的顶点,各个功能块之间的连线作为边;当功能块的引脚进行赋值和连线操作时,该操作会改变功能块中引脚成员的赋值,将该赋值作为关联功能块实例的引用,这种对其他功能块的引用所表示的连接关系即有向图的边,边的方向为从一个功能块的输出引脚指向另一个功能块的输入引脚。进一步的,所述对有向图进行遍历,生成指令集代码的方法执行以下步骤:判断该有向图是单个有向图还是多个有向图;对单个有向图进行遍历,并进行变量替换,生成指令集代码;对多个有向图进行遍历,并进行变量替换,生成指令集代码。进一步的,所述对单个有向图进行遍历,生成指令集代码的方法执行以下步骤:将单个有向图中的功能块集合看做一棵树形的数据结构,将终点作为树的根节点,然后计算每个节点的深度,按节点的深度由大到小遍历,然后进行变量替换,生成指令集代码。进一步的,所述对多个有向图进行遍历,生成指令集代码的方法执行以下步骤:将多个有向图中的每个独立的有向图视为单个有向图,根据单个有向图的纵坐标由高到低依次对每个单个有向图进行遍历,然后进行变量替换,生成指令集代码。。进一步的,所述进行变量替换的方法,执行以下步骤:当功能块的引脚关联的是变量地址时,直接使用变量地址替换指令集代码中的变量;当功能块的引脚关联的是其他功能块时,分配一个临时变量来保存这个连线关系。一种根据功能块自动生成程序的装置,所述装置包括:一种非暂时性的计算机可读存储介质,该存储介质存储了计算指令,其包括:将每个功能块抽象封装为一个类,并进行存储的代码段;将操作人员进行连线和/或赋值操作关联的两个功能块,转换为对应的有向图的代码段;对有向图进行遍历,并进行变量替换,生成指令集代码的代码段。本专利技术的一种根据功能块图自动生成程序的系统、方法及装置,具有如下有益效果:功能块图程序将转换为对应指令集程序,指令集作为一种类汇编语言非常容易编译为可以在PLC设备上运行的机器语言,从而为功能块图程序的编译提供一条简单有效的途径。附图说明图1为本专利技术的根据功能块图自动生成程序的方法的方法流程示意图;图2为本专利技术实施例提供的功能块的抽象示例;图3为本专利技术实施例提供的与图2中功能块对应的有向图;图4为本专利技术实施例提供的图2的有向图中各个节点的深度表;图5为本专利技术实施例提供的功能块中的引脚和指令集对应的示意图;图6为本专利技术实施例提供的功能块图程序实例。具体实施方式下面结合附图及本专利技术的实施例对本专利技术的方法作进一步详细的说明。一种根据功能块图自动生成程序的系统,所述系统包括:功能块类单元,存储有至少一个功能块类,所述功能块类为功能块抽象封装成的一个类;有向图生成单元,将操作人员进行连线和/或赋值操作关联的两个功能块,转换为对应的有向图;指令集生成单元,对有向图进行遍历,并进行变量替换,生成指令集代码。上述技术方案的工作原理为:使用面向对象的方法,在用户编写功能块图程序的过程中,基于用户对功能块之间的连线操作,以功能块为顶点,以功能块之间的连线为边,直接接建立有向图,最终通过遍历有向图并结合功能块内嵌的指令集代码生成指令集程序。上述技术方案的有益效果为:指令集作为一种类汇编语言非常容易编译为可以在PLC设备上运行的机器语言,从而为功能块图程序的编译提供一条简单有效的途径。进一步的,所述功能块类单元中存储的每个功能块类的成员属性均包括:功能块的位置、功能块的大小、功能块的外表图片、功能块的输入引脚、功能块的输出引脚和内嵌指令集代码。上述技术方案的工作原理为:位置代表功能块实例的左上角在编程面板上的坐标值;大小和外表图片代表了功能块实例在编程面板上的显示形象;输入引脚表示功能块连接的输入,可以是变量、地址、或其他功能块的输出引脚,输入引脚的个数不固定;内嵌指令集代码代表该功能块实例对应的指令集代码。上述技术方案的有益效果为:将功能块抽象封装为一个类,每个功能块即一个功能块类的实例对象,成员属性包括功能块的位置、大小、外表图片、输入引脚、输出引脚、内嵌指令集代码。便于理解,逻辑清晰。进一步的,所述指令集生成单元包括:单个有向图遍历模块,用于对单个有向图进行遍历,并进行变量替换,生成指令集代码;多个有向图遍历模块,用于对多个有向图进行遍历,,并进行变量替换,生成指令集代码。具体地,功能块图程序可以转换为相对应的有向图,该有向图以各个功能块对象作为有向图的顶点,各个功能块之间的连线作为边。用户在使用功能块图语言进行编程中对功能块的引脚进行赋值和连线操作,该操作会改变功能块对象中引脚成员的赋本文档来自技高网...
【技术保护点】
1.一种根据功能块图自动生成程序的系统,其特征在于,所述系统包括:功能块类单元,存储有至少一个功能块类,所述功能块类为功能块抽象封装成的一个类;有向图生成单元,将操作人员进行连线和/或赋值操作关联的两个功能块,转换为对应的有向图;指令集生成单元,对有向图进行遍历,并进行变量替换,生成指令集代码。
【技术特征摘要】
1.一种根据功能块图自动生成程序的系统,其特征在于,所述系统包括:功能块类单元,存储有至少一个功能块类,所述功能块类为功能块抽象封装成的一个类;有向图生成单元,将操作人员进行连线和/或赋值操作关联的两个功能块,转换为对应的有向图;指令集生成单元,对有向图进行遍历,并进行变量替换,生成指令集代码。2.如权利要求1所述的根据功能块图自动生成程序的系统,其特征在于,所述功能块类单元中存储的每个功能块类的成员属性均包括:功能块的位置、功能块的大小、功能块的外表图片、功能块的输入引脚、功能块的输出引脚和内嵌指令集代码。3.如权利要求2所述的根据功能块图自动生成程序的系统,其特征在于,所述指令集生成单元包括:单个有向图遍历模块,用于对单个有向图进行遍历,并进行变量替换,生成指令集代码;多个有向图遍历模块,用于对多个有向图进行遍历,并进行变量替换,生成指令集代码。4.一种根据功能块图自动生成程序的方法,其特征在于,所述方法执行以下步骤:将每个功能块抽象封装为一个类,并进行存储,一个功能块即一个功能块类的实例对象;将操作人员进行连线和/或赋值操作关联的两个功能块,转换为对应的有向图;对有向图进行遍历,并进行变量替换,生成指令集代码。5.如权利要求4所述的根据功能块图自动生成程序的方法,其特征在于,所述将操作人员进行连线和/或赋值操作关联的两个功能块,转换为对应的有向图的方法执行以下步骤:以各个功能块作为有向图的顶点,各个功能块之间的连线作为边;当功能块的引脚进行赋值和连线操作时,该操作会改变功能块中引脚成员的赋值,将该赋值作为关联功能块实例的引用,这种对其他功能块的引用所表示的连接关系即有向图的边,边的方向为从一个功能块...
【专利技术属性】
技术研发人员:邬惠峰,严义,陈佰平,赵建勇,
申请(专利权)人:杭州电子科技大学,
类型:发明
国别省市:浙江,33
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。