CN104503817B - 一种连续功能图编程方法 - Google Patents

一种连续功能图编程方法 Download PDF

Info

Publication number
CN104503817B
CN104503817B CN201410841334.1A CN201410841334A CN104503817B CN 104503817 B CN104503817 B CN 104503817B CN 201410841334 A CN201410841334 A CN 201410841334A CN 104503817 B CN104503817 B CN 104503817B
Authority
CN
China
Prior art keywords
functional block
continuous function
task
difference
variable
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
Application number
CN201410841334.1A
Other languages
English (en)
Other versions
CN104503817A (zh
Inventor
谢冰若
郑雪洋
夏菲
高吉磊
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Locomotive and Car Research Institute of CARS
Beijing Zongheng Electromechanical Technology Development Co Ltd
Original Assignee
Locomotive and Car Research Institute of CARS
Beijing Zongheng Electromechanical Technology Development Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Locomotive and Car Research Institute of CARS, Beijing Zongheng Electromechanical Technology Development Co Ltd filed Critical Locomotive and Car Research Institute of CARS
Priority to CN201810136465.8A priority Critical patent/CN108345451B/zh
Priority to CN201410841334.1A priority patent/CN104503817B/zh
Publication of CN104503817A publication Critical patent/CN104503817A/zh
Application granted granted Critical
Publication of CN104503817B publication Critical patent/CN104503817B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

一种连续功能图编程方法。本发明涉及定义一个全局变量M,所述全局变量M具有数据类型W;根据第一功能块的输出变量修改全局变量M的值;以及根据第二功能块的输出变量再次修改全局变量M的值;其中第一功能块和第二功能块的输出变量具有数据类型W。

Description

一种连续功能图编程方法
技术领域
本发明涉及一种工业控制编程方法,特别地涉及连续功能图编程方法。
背景技术
连续功能图(CFC-Continuous Function Chart)是一种图形化编程语言。连续功能图编程具有以下特点:(1)通过绘制功能图表来自动生成程序;(2)拥有强大的预制程序库;(3)通过简单的连线来降低开发成本并减少错误。连续功能图不仅仅具有可编程逻辑控制器PLC(Programmable Logic Controller)典型的元素,例如:输入/输出、定时器、计数器、符号表等,而且具有图形化编程语言语言的特性,其非常适合于过程控制和系统工程。CFC源于IEC 61131-3标准规定,是五种编程语言之一的功能块图(Function BlockDiagram)。连续功能图与功能块图的主要特点在于其展示出了其隶属的资源与任务。虽然连续功能图并没有相关国际标准,但在工业控制领域被广泛使用。
然而,连续功能图CFC编程不够灵活,无法满足用户在工业控制方面的实际需要,因此,非常有必要提供一种更为灵活的连续功能图CFC编程方法。
发明内容
针对以上技术问题,本申请提出了一种连续功能图编程方法,包括:定义一个全局变量M,所述全局变量M具有数据类型W;根据第一功能块的输出变量修改全局变量M的值;以及根据第二功能块的输出变量再次修改全局变量M的值;其中第一功能块和第二功能块的输出变量具有数据类型W。
如上所述的方法,其中第一功能块和第二功能块属于连续功能图中的同一个任务。
如上所述的方法,其中第一功能块和第二功能块属于连续功能图中的不同任务。
如上所述的方法,进一步包括:根据所述全局变量M的值修改第三功能块的输入变量。
如上所述的方法,进一步包括:根据所述全局变量M的值修改第四功能块的输入变量。
如上所述的方法,其中第三功能块和第四功能块属于连续功能图中的同一个任务。
如上所述的方法,其中第三功能块和第四功能块属于连续功能图中的不同任务。
如上所述的方法,其中第一功能块和第二功能块属于周期性任务。
如上所述的方法,其中第一功能块和第二功能块属于条件任务。
如上所述的方法,其中第一功能块和第二功能块属于预置任务。
附图说明
下面,将结合附图对本发明的优选实施方式进行进一步详细的说明,其中:
图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开始执行周期性任务。
本发明以上的实例提出了一种带两级预置类任务的连续功能图编程方法。在周期任务开始执行之前,执行两级预置类任务,可以大大节省目标控制器的硬件资源,并且极大地提高连续功能图编程的灵活性。
根据本发明的另一个实施例,在周期性任务之前也可以加入预置任务以进一步提高编程的灵活性。具体而言,包括确定周期性任务的数量;确定周期性任务,其中至少一个周期性任务具有在执行所述周期性任务之前执行的预置任务;以及为各个周期性任务指定调度周期。这样在每次执行周期性任务之前都可以先执行预置任务在开始周期性任务。
根据本发明的一个实施例,周期性任务的预置任务和连续功能图的预置任务可以共同采用以进一步增加CFC编程的灵活性。
根据本发明的一个实施例,对于周期任务而言,本发明的连续功能图编程可变数量的周期任务。现有的支持连续功能图编程的产品都将周期任务数量都是固定的,一般在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所示,当用户双击差异文本,则此条差异文本被高亮显示。同时自动提取差异编号,并且根据此项差异编号可查表索引出表一和表二中的相应差异对象。根据表一和表二中存储的差异对象页码与坐标来确定两个连续功能图窗格内的显示内容,同时把相应差异对象高亮。
在以上的实施例中介绍了本发明为了提高连续功能图(CFC)编程的灵活性。必须说明的是,虽然上述实施例分别介绍了其各自对连续功能图(CFC)编程做出的改进;但是,这些改进之间并不是无法结合的。所有以上的改进中的一个或多个之间可以相互组合以进一步增加CFC编程的灵活性。这些组合或相互结合也同样在本发明的范围内。
上述实施例仅供说明本发明之用,而并非是对本发明的限制,有关技术领域的普通技术人员,在不脱离本发明范围的情况下,还可以做出各种变化和变型,因此,所有等同的技术方案也应属于本发明公开的范畴。

Claims (10)

1.一种连续功能图编程方法,包括:
定义一个全局变量M,所述全局变量M具有数据类型W;
根据第一功能块的输出变量修改全局变量M的值;以及
根据第二功能块的输出变量再次修改全局变量M的值;
其中第一功能块和第二功能块的输出变量具有数据类型W。
2.根据权利要求1所述的方法,其中第一功能块和第二功能块属于连续功能图中的同一个任务。
3.根据权利要求1所述的方法,其中第一功能块和第二功能块属于连续功能图中的不同任务。
4.根据权利要求1所述的方法,进一步包括:根据所述全局变量M的值修改第三功能块的输入变量。
5.根据权利要求4所述的方法,进一步包括:根据所述全局变量M的值修改第四功能块的输入变量。
6.根据权利要求5所述的方法,其中第三功能块和第四功能块属于连续功能图中的同一个任务。
7.根据权利要求5所述的方法,其中第三功能块和第四功能块属于连续功能图中的不同任务。
8.根据权利要求1所述的方法,其中第一功能块和第二功能块属于周期性任务。
9.根据权利要求1所述的方法,其中第一功能块和第二功能块属于条件任务。
10.根据权利要求1所述的方法,其中第一功能块和第二功能块属于预置任务。
CN201410841334.1A 2014-12-30 2014-12-30 一种连续功能图编程方法 Active CN104503817B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201810136465.8A CN108345451B (zh) 2014-12-30 2014-12-30 一种连续功能图编程方法
CN201410841334.1A CN104503817B (zh) 2014-12-30 2014-12-30 一种连续功能图编程方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410841334.1A CN104503817B (zh) 2014-12-30 2014-12-30 一种连续功能图编程方法

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN201810136465.8A Division CN108345451B (zh) 2014-12-30 2014-12-30 一种连续功能图编程方法

Publications (2)

Publication Number Publication Date
CN104503817A CN104503817A (zh) 2015-04-08
CN104503817B true CN104503817B (zh) 2018-03-20

Family

ID=52945218

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201810136465.8A Active CN108345451B (zh) 2014-12-30 2014-12-30 一种连续功能图编程方法
CN201410841334.1A Active CN104503817B (zh) 2014-12-30 2014-12-30 一种连续功能图编程方法

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN201810136465.8A Active CN108345451B (zh) 2014-12-30 2014-12-30 一种连续功能图编程方法

Country Status (1)

Country Link
CN (2) CN108345451B (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104503818A (zh) * 2014-12-31 2015-04-08 北京纵横机电技术开发公司 一种连续功能图编程方法
CN104503765A (zh) * 2014-12-31 2015-04-08 北京纵横机电技术开发公司 一种连续功能图编程方法
CN104503766A (zh) * 2014-12-31 2015-04-08 北京纵横机电技术开发公司 一种连续功能图编程方法
CN106569785B (zh) * 2015-10-09 2021-03-09 阿里巴巴集团控股有限公司 一种作业表单生成方法及设备
JP6938250B2 (ja) * 2017-07-05 2021-09-22 キーサイト テクノロジーズ, インク. 測定システムのプログラム作成方法、測定システム、及び、コンピュータ可読記憶媒体
CN111352381B (zh) * 2019-12-16 2024-03-26 常州汇邦电子有限公司 可编程逻辑控制器编程方法、可编程逻辑控制器及系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101515167A (zh) * 2009-04-07 2009-08-26 大连理工大学 用iec61131-3功能块实现iec61499柔性功能块的方法
CN103814333A (zh) * 2011-07-06 2014-05-21 Abb股份公司 用于对可编程控制装置编程和配置的方法和设备
CN104063213A (zh) * 2013-03-20 2014-09-24 西门子公司 管理自动化系统中的分布式计算的方法和系统

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7024665B2 (en) * 2002-07-24 2006-04-04 Smar Research Corporation Control systems and methods for translating code from one format into another format
JP5796311B2 (ja) * 2011-03-15 2015-10-21 オムロン株式会社 制御装置およびシステムプログラム
JP5099251B1 (ja) * 2011-07-15 2012-12-19 オムロン株式会社 Plcのcpuユニット、plc用のシステムプログラム、plc用のシステムプログラムを格納した記録媒体、plcシステム、plcサポート装置、plcサポートプログラム、および、plcサポートプログラムを格納した記録媒体

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101515167A (zh) * 2009-04-07 2009-08-26 大连理工大学 用iec61131-3功能块实现iec61499柔性功能块的方法
CN103814333A (zh) * 2011-07-06 2014-05-21 Abb股份公司 用于对可编程控制装置编程和配置的方法和设备
CN104063213A (zh) * 2013-03-20 2014-09-24 西门子公司 管理自动化系统中的分布式计算的方法和系统

Also Published As

Publication number Publication date
CN104503817A (zh) 2015-04-08
CN108345451B (zh) 2020-07-14
CN108345451A (zh) 2018-07-31

Similar Documents

Publication Publication Date Title
CN104503817B (zh) 一种连续功能图编程方法
CN104778124B (zh) 一种软件应用自动化测试方法
CN104714468B (zh) 一种连续功能图文件的比较方法
US10061809B2 (en) Control device
CN102541521B (zh) 基于结构化查询语言的操作指令自动生成装置及方法
CN110399128A (zh) 代码文件生成方法及装置
EP3072275A1 (en) A method and a system for replacing and commissioning of a field device
US11429090B2 (en) Apparatus, method, and program
CN102880462A (zh) 基于图模一体化生成组态监控对象的方法及装置
CN106874244A (zh) 一种基于工作序列的文档自动生成模型的构建方法
CN104572233B (zh) 一种连续功能图编程方法
JP5379261B2 (ja) スケジューリング装置、スケジューリング方法およびコンピュータプログラム
EP3309638B1 (en) Exportation of field data in multiple worksheets
JP2019109580A (ja) 産業用制御システムとその支援装置、制御支援方法およびプログラム
EP2827240A1 (en) Method for generating control-code by a control-code-diagram
US10191725B2 (en) Rearrangeable code optimization modules
CN104503765A (zh) 一种连续功能图编程方法
JP5508078B2 (ja) プログラム作成支援装置および方法ならびにプログラム
CN105204837B (zh) 一种逻辑编程的实现方法和装置
CN111061743A (zh) 数据加工方法、装置和电子设备
CN109478051A (zh) 程序创建装置
KR101763551B1 (ko) 작화 소프트웨어를 기록한 컴퓨터로 읽을 수 있는 매체
CN104021147B (zh) 一种码流解析方法及装置
CN105241011B (zh) 空调群控系统开发装置和方法
CN104503818A (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