CN104714468B - 一种连续功能图文件的比较方法 - Google Patents
一种连续功能图文件的比较方法 Download PDFInfo
- Publication number
- CN104714468B CN104714468B CN201410851987.8A CN201410851987A CN104714468B CN 104714468 B CN104714468 B CN 104714468B CN 201410851987 A CN201410851987 A CN 201410851987A CN 104714468 B CN104714468 B CN 104714468B
- Authority
- CN
- China
- Prior art keywords
- continuous function
- difference
- functional block
- function map
- map file
- 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
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/056—Programming the PLC
-
- 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/13—Plc programming
- G05B2219/13041—Display ladder or logic diagram, mnemonics, switch between two display
-
- 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/13—Plc programming
- G05B2219/13047—Display data on chart with comment, message about type of data
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Automation & Control Theory (AREA)
- Stored Programmes (AREA)
Abstract
本发明涉及一种连续功能图文件的比较方法,包括:提取第一连续功能图文件中所有的程序页、功能块、信号、注释块、连接信息,组织成易于快速搜索的、已排序的内部数据表;提取第二连续功能图文件中所有的程序页、功能块、信号、注释块、连接信息,组织成易于快速搜索的、已排序的内部数据表;遍历第一和第二连续功能图文件的所述内部数据表,搜索第一和第二连续功能图文件的所述内部数据表的差异;以及输出差异信息表。
Description
技术领域
本发明涉及一种工业控制编程方法,特别地涉及连续功能图文件的比较方法。
背景技术
连续功能图(CFC-Continuous Function Chart)是一种图形化编程语言。连续功能图编程具有以下特点:(1)通过绘制功能图表来自动生成程序;(2)拥有强大的预制程序库;(3)通过简单的连线来降低开发成本并减少错误。连续功能图不仅仅具有可编程逻辑控制器PLC(Programmable Logic Controller)典型的元素,例如:输入/输出、定时器、计数器、符号表等,而且具有图形化编程语言语言的特性,其非常适合于过程控制和系统工程。CFC源于IEC 61131-3标准规定,是五种编程语言之一的功能块图(Function BlockDiagram)。连续功能图与功能块图的主要特点在于其展示出了其隶属的资源与任务。虽然连续功能图并没有相关国际标准,但在工业控制领域被广泛使用。
然而,连续功能图CFC编程不够灵活,无法满足用户在工业控制方面的实际需要,因此,非常有必要提供一种更为灵活的连续功能图CFC编程方法。
发明内容
针对以上技术问题,本申请提出了一种连续功能图文件的比较方法,包括:提取第一连续功能图文件中所有的程序页、功能块、信号、注释块、连接信息,组织成易于快速搜索的、已排序的内部数据表;提取第二连续功能图文件中所有的程序页、功能块、信号、注释块、连接信息,组织成易于快速搜索的、已排序的内部数据表;遍历第一和第二连续功能图文件的所述内部数据表,搜索第一和第二连续功能图文件的所述内部数据表的差异;以及输出差异信息表。
如上所述的方法,其中第一或第二连续功能图文件的所述内部数据表中包括多个对象,每个对象都带有特征字符串,其中功能块与注释块的特征字符串为块名,信号的特征字符串为信号名,连接的特征字符串为连接起点对象名加终点对象名。
如上所述的方法,其中所述搜索包括在第一或第二连续功能图文件的所述内部数据表中搜索特征字符串相同的对象,并进一步比较其对象信息。
如上所述的方法,其中如果特征字符串仅在第一或第二连续功能图文件的所述内部数据表中存在的对象,直接判定所述对象为差异对象。
如上所述的方法,所述第一或第二连续功能图文件满足以下条件:连续功能图文件中的功能块名具有唯一性,即无重名的功能块;连续功能图中的信号名具有唯一性,即无重名的信号;以及连续功能图中每个任务里的功能块执行顺序号具有唯一性,即在同一个任务中无序号相同的两个功能块。
如上所述的方法,其中对于第一或第二连续功能图文件的所述内部数据表中每个对象,记录该对象所在页码与坐标信息。
如上所述的方法,其中所述差异信息表包括差异索引,其用于定位差异的页码和坐标。
如上所述的方法,其中所述差异索引是所述差异的编号。
如上所述的方法,其中如果所述差异为不存在对应的对象,则差异索引定义为-1。
如上所述的方法,进一步包括:根据所述差异索引确定需要向用户显示的内容,并突出显示该差异对应的对象。
附图说明
下面,将结合附图对本发明的优选实施方式进行进一步详细的说明,其中:
图1是根据本发明的一个实施例的连续功能图CFC编程的方法示意图;
图2是根据本发明的一个实施例的CFC编程中周期任务的示意图;
图3是根据本发明的一个实施例的CFC编程中创建周期任务的示意图;
图4a是根据本发明的一个实施例的用于连续功能图编程的修改功能块输出连接器初始值方法;
图4b是根据本发明的一个实施例的多输出变量的实现方法的示意图;
图5a是根据本发明的一个实施例在CFC编程中设置物理量M的流程图;
图5b是根据本发明的一个实施例在CFC编程中对物理量M进行观测时的流程图;
图6是根据本发明的一个实施例的连续功能图文件比较的差异处理流程图;以及
图7是根据本发明的一个实施例的连续功能图文件差异的图形化展示示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
连续功能图CFC包括多个功能块。每个功能块能够实现一个简单的逻辑功能。通过将不同的功能块的输入连接器和输出连接器进行连接,连续功能图CFC编程可以实现复杂的逻辑功能控制。
具体而言,连续功能图CFC的编程界面为图形界面。在该图形界面中包含了若干个图表(Chart)。用户在图表Chart中以图形的方式插入已经编制好的块,指定这些块之间的连接关系,或者为这些块分配输入/输出地址。在这种通过鼠标点击托拽的方式完成项目编写后,用户即可进行编译。接下来,CFC程序将被整体编译,编译的结果以SCL代码的形式出现,最终将生成STL代码。用户将这些代码下载到PLC中即可执行。
在连续功能图CFC编程中,对于不同调度时间的功能块,将其分配在不同的周期调度任务中,每个周期调度任务设置为固定的调度周期,实现功能块的多周期调度任务控制。在同一张功能图中,相同调度周期的功能块被分配固定的执行顺序。在多张连续功能图中,相同调度周期的功能块按照连续功能图的顺序进行执行。
在现有的连续功能图CFC编程中,功能块都是按照周期任务进行调度的。这显然不够灵活,因为某些应用中部分功能块只需要在周期任务调度之前被执行一次,并不要进行周期调度。
为了实现单次调度,并保证不同连续功能图之间的相互配合,根据本发明的一个实施例,提出了一种带多级预置类任务的连续功能图。举例而言,对于两级预置任务的功能图,在开始执行周期任务之前,先执行两级预置类任务,从而使得连续功能图CFC编程更具有灵活性。
图1是根据本发明的一个实施例的连续功能图CFC编程的方法示意图。如图1所述,方法100包括:在程序开始101后,在步骤102,执行连续功能图1中的预置值类任务1功能块,然后在步骤103依次执行连续功能图2中的预置值类任务1的功能块、……、以此类推,直到步骤104,执行连续功能图(k-1)中的预置值类任务1的功能块以及在步骤105执行连续功能图k中的预置值类任务1的功能块,其中k是连续功能图的数量。在预置值类任务1全部执行完之后,在步骤106,执行连续功能图1中的预置值类任务2功能块、在步骤107执行连续功能图2中的预置值类任务2功能块、……、以此类推,直到步骤108执行连续功能图(k-1)中的预置值类任务2的功能块以及步骤109连续功能图k中的预置值类任务2的功能块,其中k为连续功能图工程中连续功能图的数量。预置值类任务2全部执行完之后,在步骤110开始执行周期类任务。
本发明以上的实例提出了一种带两级预置类任务的连续功能图编程方法。在周期任务开始执行之前,执行两级预置类任务,可以大大节省目标控制器的硬件资源,并且极大地提高连续功能图编程的灵活性。
根据本发明的另一个实施例,对于周期任务而言,本发明的连续功能图编程可变数量的周期任务。现有的支持连续功能图编程的产品都将周期任务数量都是固定的,一般在5个以内。然而,这种对于周期任务的限制极大地制约了软件开发的灵活性,而太多的周期任务数又会浪费系统资源。
在本发明的一个实例中,连续功能图编程中的周期性任务的数量是可变的,而且是有优先级的。高优先级任务可以占先执行,即可以打断低优先级任务而先执行。通常,调度周期越短的任务优先级越高。
图2是根据本发明的一个实施例的CFC编程中周期任务的示意图。如图2所示,对于每一个功能模块FB(Function Block)而言,其包括以下几个参数:实例名、类型FBTYPE、输入IN和输出OUT。多个FB的输入IN和输出OUT相互连接形成周期任务。例如,在图2中连续功能图中共有8个独立的FB串,每个FB串代表一个周期任务,因此,图2的实例中周期任务数为8个。
进一步地,每个周期任务可以包括不同数量的FB。例如,在第一个周期任务中包括n个FB,分别为FB1-FBn;第二个周期任务中包括3个FB,分别为FBA-FBC。其中,每个FB具有一个执行顺序编号,其为正整数,代表在该FB在该周期任务中的执行顺序。其中,每个FB还具有一个任务类型,其代表了其所在的周期任务的编号。在本发明的实例中,以上的各个参数和编号可以灵活设置,以根据实际需求,获得CFC编程的灵活性。在图2的实例中,在连续功能图编辑器中可为每个功能块指定任务类型(T1-T8)和执行顺序编号。例如图中1功能块FB1、FB2……FBn隶属于T1任务,它们的执行顺序编号依次为1、2……n。其他T2-T8任务与T1任务类似。
图3是根据本发明的一个实施例的CFC编程中创建周期任务的示意图。首先,在步骤301中,在建立连续功能图CFC工程时,确定周期任务的数量,并且确定任务类型。以图2所示的实施例为例,即创建T1-T8的8个任务类型。
接下来,在步骤302中,为T1-T8任务指定调度周期。在步骤303中,在使用连续功能图编程时,为每个功能块FB指定T1-T8中的一个任务类型和执行顺序编号。在步骤304中,在编译连续功能图程序时,按照任务类别生成T1-T8任务函数,每个任务函数中按执行顺序编号放置功能块代码。
以下是图2的实施例的程序实例,仅用以说明本发明的技术方案。
接下来,在步骤305中,通过连续功能图编译器将连续功能图编译成可被目标机调度核识别的可执行代码。在步骤306,在目标机上,基于实时调度内核(例如,参考POSIX.1b),按优先级从高到低建立T1-T8的8个线程。在步骤307,按工程指定调度周期激活相应线程,在线程中执行对应的T1-T8任务函数。为了方便理解,线程可理解为无限循环。目标机的实时调度内核可启动或终止任务线程执行。
具体而言,每个周期任务被编译器编译成一个周期任务函数,T1()、T2()……T8()。每个周期任务函数内按执行顺序编号,调用隶属于该任务的所有功能块对应函数。例如周期任务函数T1()内会依次调用FB1()、FB2()……FBn()。其他T2-T8任务函数与T1()任务函数类似。
如图3所示,在编译好的连续功能图程序下载到目标机后,目标机调度核会启动8个周期任务线程,如图3所示,这8个线程会在调度时间到时调用相应的周期任务函数。具体而言,T1-T8的8个线程在目标机上运行。各个线程在触发条件成立,即:条件1等于1时,启动。然后在相应的各个调度时间T1-T8到时后,会调用T1-T8的任务函数T1()-T8(),完成调用各个T1-T8的周期任务,实现相应的控制功能。以T1任务线程为例,在T1调度时间到后,会调用T1任务函数T1()。其他T2-T8任务线程与T1任务线程类似。
根据本发明的一个实施例,当前流行控制器硬件的存储器最小单位多为8或8的幂次位(bit)。采用8个周期任务的方案,在编写任务调度算法和任务上下文数据结构时可达到存储器资源与调度的最佳平衡。例如,如果周期任务数少于8个,会浪费存储器资源,而如果多于8个会增加系统任务调度负荷。而且,周期任务设定为8个具有更高的编程灵活性。
根据本发明的一个实施例,为了增加CFC编程的灵活性,本发明提出一种用于连续功能图CFC编程的可修改初始值的功能块输出的方法。
在现有的连续功能CFC编程框图中,功能块的包括默认输入连接器和默认输出连接器,其中初始值是0,且是不可以修改的。这种设置是针对连续功能图中的周期调度任务设置的。因为在周期调度任务下,功能块输出连接器的值是周期更新的,所以设置或修改输出连接器的初值没有意义。
然而,在本发明的框架下,连续功能编程中除了周期调度任务还有预置任务。根据本发明的一个实施例,CFC编程中还包括条件调用任务。当条件满足时,执行调用任务。当条件没有满足时,条件调用任务内的各功能块将不会被执行。这时,未被执行的功能块的输出连接器的值将会维持初值较长的时间,直至执行了该功能块才会被更新。针对这种情况,功能块的输出连接器的初值如果可以修改将是很有意义的。
图4a是根据本发明的一个实施例的用于连续功能图编程的修改功能块输出连接器初始值方法。如图4a所示,在所述方法400中,连续功能图中任意一个功能块的执行包括:
在步骤410,在初始化阶段加载输入连接器初值,其中所述初值是可以在编程时和运行时可修改的。在步骤420,在初始化阶段加载输出连接器的初值,其中所述初值是可以在编程时和运行时都可修改的。在步骤430,在任务调度阶段,读输入连接器的值,执行功能块FB的代码,在功能块FB代码中更新功能块输出连接器的值。但由于功能块FB可能隶属于条件任务,因此在条件未满足时,所述功能块FB代码可能从未被执行,则所述功能块FB输出连接器将一直保持步骤420所述初始值。最后,在步骤440,使用功能块FB输出连接器的值更新与该输出连接器相连接的输出变量的值。
本发明的实例中所提出的用于连续功能图编程的可修改功能块输出连接器初始值的方法,改变了此前连续功能图CFC不能修改输出连接器初值弊端,可以极大地提高编程的灵活性。
根据本发明的另一个实施例,为增加连续功能图编程的灵活性,本发明提出一种多输出变量。该多输出变量为在连续功能图中定义的全局变量,可以被不同的功能块的输出变量重复赋值。
如所周知的,连续功能图编程中,最基本的程序单元是功能块(Function Block,FB),其与外界的接口就是其输入变量和输出变量。连续功能图还定义了全局变量,只要保证数据类型一致,该全局变量可以由任何任务的任何功能块的输出变量赋值,同时该全局变量还可以给任何任务的任何功能块的输入变量赋值,以此实现不同任务、不同功能块之间的数据传递。
但是,目前的连续功能图中,全局变量只能被功能块的输出变量赋值一次,不可以被多个功能块的输出变量重复赋值,也就是说目前的连续功能图编程只支持单输出变量。
针对上述问题,为了进一步提供编程的灵活性,本发明提出了一种用于连续功能图编程方法的多输出变量。该多输出变量是一种全局变量,可以定义为任意的数据类型,只要连续功能图的任意功能块的输出变量与其数据类型一致,就可以给该多输出变量重复赋值。根据本发明的一个实施例,该多输出变量可以接受相同或不同任务的多个功能块输出变量的赋值,其当前的值由最新一次的赋值操作决定。另外,该多输出变量还可以给相同或不同任务的多个功能块的输入变量赋值。
图4b是根据本发明的一个实施例的多输出变量的实现方法的示意图。如图4b所示,连续功能图编程的工程中,含有T1,T2,T3…等任务。T1任务中功能块X1的输出变量2,T2任务中功能块Y1的输出变量1,T3任务中功能块Z1的输出变量2,都与多输出变量M一样是数据类型W。因此,它们都可以赋值给多输出变量M。
同时,在保证输出类型相同的前提下,多输出变量M还可以赋值给不同任务的不同功能块的输入变量,在图4b中,T1任务中功能块X2的输入变量1,T2任务中功能块Y2的输入变量2,T3任务中功能块Z2的输入变量1,都与多输出变量M一样是数据类型甲,它们都可以被多输出变量M赋值。
本领域技术人员应当了解,图4b仅仅给出的是一种具体实现方式,但不限于此。在连续功能图编程环境中,只要保证数据类型与多输出变量一致,不同任务的不同功能块都可以向多输出变量重复赋值,同时,多输出变量也可以向相同数据类型的不同任务不同功能块的输入变量赋值,这样可以更灵活地实现不同任务不同功能块的数据传递。
根据本发明的一个实施例,在本发明的框架下,本发明提出了一种新的可定标的连续功能图数据类型。该数据类型可以表示任何的物理量:在编程时可设置物理量的基值和单位及其初始物理值。在观测调试时可直接读取其物理值。这种新的数据类型,可以更加连续功能图CFC编程的灵活性,减少编程人员的工作量。
目前的连续功能图编程中,数据类型有布尔型、无符号单字节整型、有符号单字节整型、无符号双字节整型、有符号双字节整型、无符号四字节整型、有符号四字节整型、时间类型等数据类型。
然而,在连续功能图CFC编程和调试过程中,通常会存在许多的物理量。如果强行将这些物理量定标转化为上述数据类型才能进行使用,会带来非常大的不便,限制了编程的灵活性。在进行观测调试时,还必须将上述数据类型手动转化为物理量。这极大地增加了连续功能图编程和调试的繁琐程度。
根据本发明的一个实施例,提出一种可定标的连续功能图数据类型,物理量类型M。对于该新的连续功能图可定标数据类型,物理量类型M的基值Mj、单位MD和物理量初始值M0需要在连续功能图编程时设置。而在具体的功能块FB执行过程中,根据基值、物理量值和定标值,自动将物理量转化为二进制数据,其中定标值表示二进制数据的长度。定标值越大,所能表示的数的范围越大,精度也越高。
根据本发明的一个实施例,对物理量进行设置时,其公式为:
二进制数据=物理量值/基值×2定标值。
该二进制数据由目标机获取后进行运算。而在通过上位机进行观测时,目标机将二进制数据发送给上位机,上位机根据其基值和定标值进行运算得到物理值进行显示,其公式为:
物理值=二进制数据/2定标值×基值。
图5a是根据本发明的一个实施例在CFC编程中设置物理量M的流程图和图5b是根据本发明的一个实施例在CFC编程中对物理量M进行观测时的流程图。如图5a所示,设置方法510中,在步骤511,用户在上位机上输入物理量类型的一个实例N的基值Nj和单位ND。在步骤512,上位机计算该实例N的转换系数,即2定标值/基值。在步骤513,上位机根据物理量N的实际物理值Ni(i=0,1,…)与N的转换系数,计算N的二进制值,即Ni×2定标值/基值。在步骤514中,将上述步骤中得到的N的二进制值下载到目标机,在目标机中进行运算。同样地,如图5b所示,在观测方法520中,在步骤521,将物理量N的二进制数据从目标机上传到上位机。在步骤522中,上位机计算该实例N的转换系数,即2定标值/基值。在步骤523,上位机根据N的二进制值和转换系数计算N的物理值,即N的二进制值/转换系数。在步骤524中,用户就可以很方便地从上位机观测到N的物理值。
本发明的实例提出了一种可定标的连续功能图数据类型,物理量M。该数据类型可以表示任何的物理量。物理量类型的数据在使用时非常方便,仅需要在编程时可设置物理量的基值和单位。初始物理值即可以默认也可以在编程时设置。在观测调试时,本发明的实例中可直接读取其物理值。如上面实施例所说明的,新的数据类型,物理量M,的加入方便了连续功能图编程和调试中物理量的设置和观测,使其更加易于操作,大大提高了连续功能图的编程和调试效率。
在本发明的框架下,对现有的连续功能图CFC编程所作出的另一个调整是增加了比较功能。这一功能对于CFC编程人员非常重要。因为当前的连续功能图编程产品都不具备连续功能图文件图形化比较功能。然而,通过软件设计文档很难准确全面地反应软件设计上的差异。这对软件版本管理和软件维护造成很大不便,增加了软件开发人员在这方面的工作量。这也限制了CFC编程的灵活性。
根据本发明的一个实施例所提供的连续功能图比较的方法自动识别两个CFC文件的设计差异,并将差异以易于对比的文本和图形化方式输出。这在对比软件版本或软件分支差异性时尤为必要,可减轻软件设计、测试、维护人员的工作量,提高工作效率。
具体而言,连续功能图差异分两类:
(1)非功能性差异,包括:注释的内容、功能块的摆放位置、连接线的起点/终点/拐点坐标。此类差异不影响最终的软件功能,仅影响连续功能图可读性,简称N差异;以及
(2)功能性差异,包括:功能块实例的增减、同名功能块类型的变化、同名功能块所属任务类别和执行顺序编号的差异,功能块连接器或全局信号的连接关系,功能块连接器与全局信号初始值。此类差异会影响软件功能,简称F差异。
本发明的实例的连续功能图文件之间的比较对象包括:功能块、信号、注释块、连接。既包括了N差异,也包括了F差异。
本发明的实例的连续功能图比较原理如下:
采集两个连续功能图文件中所有编程对象的信息,包括功能块、信号、注释块与连接信息,分别将两个连续功能图的对象信息组织到两个排序表中。表中每个对象都带有特征字符串。功能块与注释块的特征字符串为块名,信号的特征字符串为信号名,连接的特征字符串为连接起点对象(功能块或信号)名加终点对象(连接器或信号)名。在两个表中搜索特征字符串相同的对象,并进一步比较其对象信息。特征字符串仅在一个表中存在的对象,直接判定该对象为差异对象。
根据以上比较原理,本发明的实例做出如下设定:
1.连续功能图文件中的功能块名具有唯一性,即无重名的功能块;
2.连续功能图中的信号名具有唯一性,即无重名的信号;
3.连续功能图中每个任务里的功能块执行顺序号具有唯一性,即在同一个任务中无序号相同的两个功能块。
根据本发明的一个实例,参与比较的功能块信息包括:
1.功能块所属任务类型;
2.功能块的执行顺序编号;
3.功能块版本号;
4.功能块所有连接器;
5.连接器初始值;
6.布尔类型输入连接器是否求反;
7.输出连接器是否带有非易失属性;
8.连接器注释;
9.功能块注释;以及
10.功能块的坐标
根据本发明的一个实例,参与比较的信号信息包括:
1.信号的类型;
2.信号的初始值;以及
3.信号的描述。
根据本发明的一个实例,参与比较的注释块信息包括:
1.注释内容文本;以及
2.注释块的位置坐标;
根据本发明的一个实例,参与比较的连接信息包括:
1.连接起点坐标;
2.连接终点坐标;以及
3.连接拐点数量与每个拐点坐标。
根据本发明的一个实例,对于对象数据表中的每个对象,记录该对象所在页码与坐标信息,以便实现图形化对比。
根据本发明的一个实例,所有差异信息都被记录到一个差异数据表中。在对比结束后,以文本方式按条目输出所有差异信息。在一个更具体的实例中,用户可以通过双击差异文本条目,在两个并列的窗格中图形化地、高亮显示差异对象。
根据本发明的一个实例,差异数据表中每个差异条目包含以下信息:
1.差异类别:非功能性差异(N)或功能性差异(F);
2.差异索引;以及
3.差异描述文本。
其中,所谓差异索引用于定位差异的页码和坐标。根据本发明的一个实例,差异索引可以为差异编号,根据该差异编号可以确定该差异所对应的对象。如果某个差异为不存在对应的对象,则差异索引定义为-1。
根据本发明的一个实例,当用户选择或双击差异文本条目时,可依据差异索引快速确定该差异所对应的对象;然后,根据对应对象的页码和坐标定位出该差异的页码和坐标,从而确定需要向用户显示的内容,并突出显示该差异对应的对象。
在连续功能图编写的应用软件升级、建立分支、除错时经常需要比较两个连续功能图文件的差异。在本发明之前,这部分工作主要依靠程序员编写的软件修改日志和版本说明,非常具有局限性。例如,在软件修改过程中因程序员失误而引入的设计错误是不可能记录到文档中的。本发明的连续功能图文件比较方法可以全面直观地反映出连续功能图软件的设计差异,并且这种自动差异分析比手工比较或二进制比较的效率更高,也更准确。
图6是根据本发明的一个实施例的连续功能图文件比较的差异处理流程图。如图6所示,该方法包括:
首先,提取第一个连续功能图文件CFC1中所有的程序页、功能块、信号、注释块、连接信息,组织成易于快速搜索的、已排序的内部数据表(简称表1);
其次,提取第二个连续功能图文件CFC2中所有的程序页、功能块、信号、注释块、连接信息,组织成易于快速搜索的、已排序的内部数据表(简称表2);并且,初始时表二中所有对象都标记为未比较对象;
接下来,遍历表1。依次提取表1中的对象(简称表1对象),根据表1对象的特征在表2中搜索特征相同的对象。若不存在,则标记该表一对象为有差异,对象写入差异表(对于相关表1对象在表1中的索引,若不存在则为-1)。若存在,则进一步比较这两个对象的数据信息,若相同则各自标记为无差异对象;若不相同则各自标记为有差异对象,并将差异信息写入差异信息表。
如图6所示,赋初值i=0,进入循环,i=i+1,i<表1索引范围。提取表1对象[i],根据表1对象[i]的特征搜索表2中是否有对象[i]的特征。如果没有找到,则在差异表中记录差异内容,并且该差异的索引为-1。如果找到,例如是表2中的对象[j],则将表2中的对象[j]标记为已经比较过。下一步确定,确定表1对象[i]和表2中对象[j]的信息是否一致。如果一致,则返回循环,i=i+1,否则,在差异表中记录差异内容,并且该差异的索引为正整数的顺序编号,例如差异1,差异2,以此类推。差异编号是唯一的,在本实施例中也可以作为差异索引。根据差异编号能够确定表1对象[i]和表2中对象[j]。返回循环,i=i+1。
接下来,遍历表2。依次提取表2中仍标记为未比较的对象,标记为差异对象,并写入差异信息表(对于相关表2对象在表2中的索引,若不存在则为-1)。
如图6所示,赋初值i=0,进入循环,i=i+1,i<表1索引范围。提取表2中的仍标记为未比较的对象[k],判断表2中的对象[k]是否已经比较过,如果仍为未比较过,则将其标记为已经比较过,并且在差异表中记录差异内容,并且该差异的索引为-1。返回循环,i=i+1。
最后,以文本格式输出差异信息表的内容。
图7是根据本发明的一个实施例的连续功能图文件差异的图形化展示示意图。如图7所示,所有差异信息都以文本方式输出到差异文本输出窗格中。每项差异文本都以差异类别和编号开头,该编号也是差异表项的索引值。
如图7所示,当用户双击差异文本,则此条差异文本被高亮显示。同时自动提取差异编号,并且根据此项差异编号可查表索引出表1和表2中的相应差异对象。根据表1和表2中存储的差异对象页码与坐标来确定两个连续功能图窗格内的显示内容,同时把相应差异对象高亮。
在以上的实施例中介绍了本发明为了提高连续功能图(CFC)编程的灵活性。必须说明的是,虽然上述实施例分别介绍了其各自对连续功能图(CFC)编程做出的改进;但是,这些改进之间并不是无法结合的。所有以上的改进中的一个或多个之间可以相互组合以进一步增加CFC编程的灵活性。这些组合或相互结合也同样在本发明的范围内。
上述实施例仅供说明本发明之用,而并非是对本发明的限制,有关技术领域的普通技术人员,在不脱离本发明范围的情况下,还可以做出各种变化和变型,因此,所有等同的技术方案也应属于本发明公开的范畴。
Claims (10)
1.一种连续功能图文件的比较方法,包括:
提取第一连续功能图文件中所有的程序页、功能块、信号、注释块、连接信息,组织成易于快速搜索的、已排序的内部数据表;
提取第二连续功能图文件中所有的程序页、功能块、信号、注释块、连接信息,组织成易于快速搜索的、已排序的内部数据表;
遍历第一和第二连续功能图文件的所述内部数据表,搜索第一和第二连续功能图文件的所述内部数据表的差异;以及
输出差异信息表;以及
根据所述差异信息表,将差异以图形化方式输出。
2.根据权利要求1所述的方法,其中第一或第二连续功能图文件的所述内部数据表中包括多个对象,每个对象都带有特征字符串,其中功能块与注释块的特征字符串为块名,信号的特征字符串为信号名,连接的特征字符串为连接起点对象名加终点对象名。
3.根据权利要求1所述的方法,其中所述搜索包括在第一或第二连续功能图文件的所述内部数据表中搜索特征字符串相同的对象,并进一步比较其对象信息。
4.根据权利要求3所述的方法,其中如果特征字符串仅在第一或第二连续功能图文件的所述内部数据表中存在的对象,直接判定所述对象为差异对象。
5.根据权利要求1所述的方法,所述第一或第二连续功能图文件满足以下条件:
连续功能图文件中的功能块名具有唯一性,即无重名的功能块;
连续功能图中的信号名具有唯一性,即无重名的信号;以及
连续功能图中每个任务里的功能块执行顺序号具有唯一性,即在同一个任务中无序号相同的两个功能块。
6.根据权利要求2所述的方法,其中对于第一或第二连续功能图文件的所述内部数据表中每个对象,记录该对象所在页码与坐标信息。
7.根据权利要求1所述的方法,其中所述差异信息表包括差异索引,其用于定位差异的页码和坐标。
8.根据权利要求7所述的方法,其中所述差异索引是所述差异的编号。
9.根据权利要求8所述的方法,其中如果所述差异为不存在对应的对象,则差异索引定义为-1。
10.根据权利要求7所述的方法,进一步包括:根据所述差异索引确定需要向用户显示的内容,并突出显示该差异对应的对象。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410851987.8A CN104714468B (zh) | 2014-12-31 | 2014-12-31 | 一种连续功能图文件的比较方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410851987.8A CN104714468B (zh) | 2014-12-31 | 2014-12-31 | 一种连续功能图文件的比较方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104714468A CN104714468A (zh) | 2015-06-17 |
CN104714468B true CN104714468B (zh) | 2017-10-03 |
Family
ID=53413900
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410851987.8A Active CN104714468B (zh) | 2014-12-31 | 2014-12-31 | 一种连续功能图文件的比较方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104714468B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108170831A (zh) * | 2018-01-11 | 2018-06-15 | 上海华虹宏力半导体制造有限公司 | 版图差异的量化分析方法 |
CN108375952A (zh) * | 2018-03-08 | 2018-08-07 | 山东超越数控电子股份有限公司 | 一种plc连续功能图编译和解释方法与装置 |
CN113156902B (zh) * | 2021-04-13 | 2023-01-31 | 西安热工研究院有限公司 | 一种dcs控制系统的组态一致性检查处理方法 |
CN114416077B (zh) * | 2021-12-09 | 2024-10-01 | 北京四方继保工程技术有限公司 | 一种基于动态规划算法的连续功能图图形比对方法 |
CN113934644B (zh) * | 2021-12-16 | 2022-04-15 | 深圳市明源云链互联网科技有限公司 | 版本差异对比方法、装置、智能终端及可读存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1315055A2 (en) * | 2001-11-27 | 2003-05-28 | Rockwell Automation Technologies, Inc. | System and method for function block execution order generation |
JP2006235999A (ja) * | 2005-02-24 | 2006-09-07 | Bridgestone Corp | 照合プログラム |
JP2006244178A (ja) * | 2005-03-03 | 2006-09-14 | Bridgestone Corp | 照合プログラム |
CN201716564U (zh) * | 2010-06-25 | 2011-01-19 | 中国科学院沈阳自动化研究所 | 高性能可编程控制器专用处理器体系结构 |
CN102609269A (zh) * | 2012-02-17 | 2012-07-25 | 南京南瑞继保电气有限公司 | 一种顺序功能图的可视化实现方法 |
-
2014
- 2014-12-31 CN CN201410851987.8A patent/CN104714468B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1315055A2 (en) * | 2001-11-27 | 2003-05-28 | Rockwell Automation Technologies, Inc. | System and method for function block execution order generation |
JP2006235999A (ja) * | 2005-02-24 | 2006-09-07 | Bridgestone Corp | 照合プログラム |
JP2006244178A (ja) * | 2005-03-03 | 2006-09-14 | Bridgestone Corp | 照合プログラム |
CN201716564U (zh) * | 2010-06-25 | 2011-01-19 | 中国科学院沈阳自动化研究所 | 高性能可编程控制器专用处理器体系结构 |
CN102609269A (zh) * | 2012-02-17 | 2012-07-25 | 南京南瑞继保电气有限公司 | 一种顺序功能图的可视化实现方法 |
Non-Patent Citations (1)
Title |
---|
如何判读STEP7离线程序与PLC在线程序是否完全相同?;西门子中国;《西门子中国网站》;20110329;提问、最佳答案及补充答案部分 * |
Also Published As
Publication number | Publication date |
---|---|
CN104714468A (zh) | 2015-06-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104503817B (zh) | 一种连续功能图编程方法 | |
CN104714468B (zh) | 一种连续功能图文件的比较方法 | |
CN104778124B (zh) | 一种软件应用自动化测试方法 | |
US11232257B2 (en) | Apparatuses, systems, and methods for providing a visual program for machine vision systems | |
US10209695B2 (en) | Method and a system for replacing and commissioning of a field device | |
CN102541521B (zh) | 基于结构化查询语言的操作指令自动生成装置及方法 | |
CN110399128A (zh) | 代码文件生成方法及装置 | |
US20200326694A1 (en) | Apparatus, method, and program | |
CN106874244A (zh) | 一种基于工作序列的文档自动生成模型的构建方法 | |
EP3309638B1 (en) | Exportation of field data in multiple worksheets | |
CN105737508B (zh) | 医用冷柜样本识别方法及装置 | |
EP2827240A1 (en) | Method for generating control-code by a control-code-diagram | |
CN103412868A (zh) | 文书生成方法及装置 | |
JP2019109580A (ja) | 産業用制御システムとその支援装置、制御支援方法およびプログラム | |
CN104572233B (zh) | 一种连续功能图编程方法 | |
CN107423270B (zh) | 一种在线流程图和代码实时互转的实现方法 | |
CN105204837B (zh) | 一种逻辑编程的实现方法和装置 | |
CN110221577A (zh) | 数值控制装置 | |
CN104021147B (zh) | 一种码流解析方法及装置 | |
CN104503765A (zh) | 一种连续功能图编程方法 | |
US20170346702A1 (en) | Computer implemented method for displaying a user interface | |
KR101763551B1 (ko) | 작화 소프트웨어를 기록한 컴퓨터로 읽을 수 있는 매체 | |
CN109478051A (zh) | 程序创建装置 | |
CN104503818A (zh) | 一种连续功能图编程方法 | |
CN104503766A (zh) | 一种连续功能图编程方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |