一种iec61131-3标准功能块软件实现方法

文档序号:6481009阅读:322来源:国知局
专利名称:一种iec61131-3标准功能块软件实现方法
技术领域
本发明涉及一种基于IEC61131-3标准的功能块编程语言的软件实现方法, 尤其涉及一种可在嵌入式处理器上使用IEC61131-3标准功能块编程语言进行编 程的实现方法。
背景技术
IEC61131-3是第一个为工业自动化控制系统的软件设计提供标准化编程语 言的国际标准。该标准将现代软件的概念和现代软件工程的机制与传统的PLC 编程语言成功地结合,又对各种工业控制系统的编程语言、软件设计的概念和 软件模型等进行了标准化,适应了当今世界软件、工业控制系统的发展方向, 它定义一套严格的语法、语义以及PLC编程模型,是一种非常先进的设计技术。 由于IEC61131-3标准功能块具有使用起来非常方便,可视化强等特点,被广泛 的应用到PLC现场编程中。但是目前还没有以IEC61131-3为参考,PLC编程语 言在嵌入式处理器上实现被应用,所以一种以IEC61131-3为参考,PLC编程语 言在嵌入式处理器上的软件实现方法急需被研制,以便嵌入式处理器中也可使 用这种便捷的编程语言进行编程。

发明内容
本发明针对以上问题的提出,而研制一种以IEC61131-3为参考,PLC编程 语言在嵌入式处理器上的软件实现方法。本发明采用的技术手段如下
一种基于嵌入式系统IEC61131-3标准功能块的结构设计方法,其特征在于 设计一个通用的数据结构操作码、操作数及运行参数三个方面来表述所有类 型的功能块;
所述操作码,用于表示功能块具体的操作内容,每一个功能块都有一个唯 一的操作码与之对应,每一个功能块编写了各自的实现函数,并且将这些函数 的地址按照操作码的顺序保存在一个全局的函数指针数组中,通过这个函数指 针数组操作码与功能块实现函数建立一个一一对应关系,以査找到对应的功能 块实现函数,从而完成相应的功能;
所述操作数,为在功能块实现各项功能的过程中参与运算的输入输出参数,
4由数据源标识及数据存储单元两部分组成;数据源标识指示了参与运算的数据 是变量区中的数据还是常数,数据存储单元存储的是与数据源标识相对应的变 量区地址或常数;
所述运行参数,它由网络标号、网络位置及执行顺序三个参数组成,此三 个参数是供上位机使用的,上位机根据用户编写的程序为每一个功能块分配对
应的参数,最终将用户程序按照正确的执行顺序下载到嵌入式处理器的Flash中。
所述操作数为变量区数据时,数据存储单元存储的是数据在变量区中的位 置,即区地址、字偏移和位偏移。
所述操作数中的数据存储单元定义多个数据存储器单元,每个单元都有唯 一的访问路径,用户可在功能块的输入输出参数中明确指出需要存取的变量区 的地址,这样就允许用户程序直接存取这个地址对应的数据。
所述操作数的数据存储单元中定义了多个变量区,并且在每一个变量区中 的存储单元都可以通过位、字或双字进行寻址,另外,当操作数为常数时,在
操作数数据结构中定义了一个4字节的共用体,它分别支持字节型、字型、双
字型及浮点型的数据,以便对不同功能块不同数据类型的常数操作数进行存储。
一种基于嵌入式系统IEC61131-3标准功能块的执行方法,其特征在于用户 的功能块程序可以通过上位机下载到嵌入式处理器的存储区中,然后按照读输
入、功能块执行、写输出、处理通讯请求的运行周期进行循环执行程序
a、 读输入,每次周期开始时,先读开关量输入点的当前值,后把输入点的 当前值保存到相应的变量区;
b、 执行程序,用户功能块程序按顺序存储保存在嵌入式处理器的存储区中, 并且采用全局指针变量的方式对功能块进行寻,址执行程序是从第一条指令开 始,直到最后一条指令结束,在程序执行过程中,是对内存变量和映像区数据 操作,除非有直接I/O指令对输入和输出点直接存取,另外,每一个功能块通 过一个函数实现,为了方便功能块寻址,可以定义一个函数数组,将所有功能 块实现函数以操作码为下标进行存储,这样每次功能块执行时都可以通过操作 码查询到对应的实现函数,完成功能块的执行;
c、 处理通讯请求,主要完成与上位机的交互,嵌入式处理器可以处理一些 来自上位机的命令请求,这其中包括用户功能块程序的上载、下载以及变量区 的读写。d、写输出,在每个扫描周期的结尾,把存储在数字逻辑寄存器中的数据输 出到物理i/0中,包括数字量输出及模拟量输出。
在每个用户程序的头和尾都默认都添加了这两个功能块用于读外界输入
的输入刷新功能块和用于写外界输出的输出刷新功能块,其中输入块标识用户 功能块程序的开始,输出块标识着用户程序的结束。
在每个用户程序定义了功能块运行指针pc,初始时指向输入刷新功能块的 存储地址,而在以后每个功能块运行完成时都要改变pc的值,使其指向下一个 即将运行的功能块,当执行到输出刷新功能块时,将pc值初始化使其重新指向 第一个功能块。
在每一个功能块实现函数中,依次读取该功能块的各个输入参数,在读取 参数的同时要判断参数是常数还是变量区数据,如果是常数那么可以在功能块 数据结构中读取数据;如果不是常数那么数据结构中只保存了变量区的地址,
还要根据这个地址读取相应变量区的存储单元中的数据,当参数读取完毕以后 进行运算。
由于采用了上述技术方案,本发明提供的一种iec61131-3标准功能块软件 实现方法,涉及了功能块的定义、变量区的定义、功能块寻址以及功能块执行 方式等plc编程语言的关键技术,通过此方法,可以在嵌入式处理器上实现plc 的基本功能。plc在工业自动化领域应用广泛,但存在编程语言不统一的问题, 而本发明由于采用了 iec61131-3标准,从而使产品的开放性及易用性得到了很 大的改善。


图1为本发明功能块的结构示意图2为本发明实施例变量区定义的结构示意图3为本发明实施例功能块网络的结构示意图4为本发明实施例中功能块执行一个扫描周期的示意图5为本发明实施例用户变量区定义数据表;
图6为本发明实施例功能块执行流程图7为本发明实施例用户功能块程序的结构示意图。
具体实施例方式
本发明是一种以iec61131-3为参考,plc编程语言在嵌入式处理器上的软 件实现方法。发明中涉及了功能块的存储格式、变量区的定义、功能块寻址以及功能块执行方式等PLC编程语言的关键技术,通过此方法,可以在嵌入式处 理器上实现PLC的基本功能。
如图1所示为功能块的结构,对于一个完整的功能块要得到正确的执行必 须具备一些必要的参数,由于功能块上功能上的差异,使其输入输出参数也各 不相同,而本发明中设计了一个通用的数据结构通过操作码、操作数及操作码
扩展三个方面来描述所有类型的功能块 1、操作码
操作码表示本功能块具体的操作内容,比如说加法功能块的操作码为87, 延时接通定时器的操作码为166,每一个功能块都有一个唯一的操作码与之对 应,其定义为字型的变量,最多可支持65535种类型的功能块。另外嵌入式处 理器为每一个功能块编写了各自的实现函数,并且将这些函数的地址按照操作 码的顺序保存在一个全局的函数指针数组pExecuteFunBlock[]中。通过这个函 数指针数组操作码与功能块实现函数可以建立一个一一对应关系,这样就可以 根据操作码,査找到对应的功能块实现函数,从而完成相应的功能,所以在功 能块定义的数据结构中,只需保存功能块对应的操作码即可,这样使此数据结 构具有通用性,可以通过操作码来描述所有的功能块。 2、操作数
操作数即在功能块实现各项功能的过程中参与运算的输入输出参数,其结 构如图1所示,它由数据源标识及数据存储单元两部分组成。数据源标识指示 了参与运算的数据是变量区中的数据还是常数。而数据存储单元存储的是与数 据源标识相对应的变量区地址或常数。
当操作数为变量区数据时,操作数据中保存的是数据在变量区中的位置, 即区地址、字偏移、位偏移。为了方便用户操作,可以定义多个数据存储器单 元,每个单元都有唯一的地址,也就是访问路径。用户可在功能块的输入输出 参数中明确指出需要存取的变量区的地址,这样就允许用户程序直接存取这个 地址对应的数据。为了提高系统的灵活性可定义了多个变量区(如M、 V、 S区等), 并且在每一个变量区中的存储单元都可以通过位、字或双字进行寻址。如果要 读写存储区的某一位,则必须指定地址,包括存储区标识符,字地址以及位号, 如图2中的M2. 1则表示要读写的是M区第2个字的第1个位。当然这里尽以M 区为例,在实际运算中可以是任意变量区中任何数据类型的数据。
当操作数为常数时,在操作数数据结构中定义了一个4字节的共用体,它可以分别支持字节型、字型、双字型及浮点型的数据,这样对于不同功能块不 同数据类型的常数操作数都可以进行存储。
3、运行参数
运行参数如图l所示,它由网络标号、网络位置及执行顺序三个参数组成。
图3是一个用户功能块程序,为了能够正确的对用户编写的功能块程序进行解 析执行,这里将用户程序分为多个网络(用户可以把功能相近的功能块放在同一 网络)。网络标号表示的是功能块处于哪个网络中,比如AND块处在1网络中, INC—W块处于2网络中。而在同一网络中允许含有多个功能块,网络位置这个参 数即可以说明功能块在此网络中的坐标。功能块执行顺序指的是在同一网络中 哪个功能块先执行哪个功能块后执行,比如在网络1中,只有先执行前面的两 个AND功能块再执行后面的AND功能块其输出结果才是正确的。
这三个参数是供上位机使用的,上位机可以根据用户编写的程序为每一个功 能块分配对应的参数,最终将用户程序按照正确的执行顺序下载到嵌入式处理 器的存储区中,处理器顺序执行即可完成用户所需要的逻辑功能。当然在功能 块上载时,上位机同样可以根据这些参数将功能块显示在正确的位置上。
如图4所示功能块的执行,程序下载在程序存储区中,含有操作码和操作 数。连续执行用户程序和任务的循环序列称为扫描。处理器按照读输入、功能 块执行、写输出、通讯处理等扫描周期执行程序
读输入,每次扫描周期开始时,先读开关量输入点(包括开关量输入及模 拟量输入)的当前值,然后把输入点的当前值保存到相应的变量区。执行程序, 用户功能块程序保存在嵌入式处理器的存储区空间为中,顺序存储,采用全局 指针变量的方式对功能块进行寻址。当用户将功能块程序下载到嵌入式处理器 的存储区中后,全局指针会首先复位到存储的第1个功能块的数据区域地址, 将所有功能块的数据和参数读取到RAM中,经过数据处理完成此功能块的执行, 然后全局指针会跳过此功能块的大小的存储区域,指向下一个要执行的功能块。 在扫描周期的执行程序阶段里,执行程序是从第一条指令开始,直到最后一条 指令结束。在程序执行过程中,是对内存变量和映像区数据操作,除非有直接 1/0指令对输入和输出点直接存取。每一个功能块通过一个函数实现,为了方便 功能块寻址,可以定义一个函数数组,将所有功能块实现函数以操作码为下标 进行存储,这样每次功能块执行时都可以通过操作码査询到对应的实现函数, 完成功能块的执行。在所有功能块都执行完成以后才进行输出刷新。处理通讯请求,启动通信管理器程序,完成相应的串口及网络数据传输。写输出,在每 个扫描周期的结尾,把存储在数字逻辑寄存器中的数据输出到物理i/o中,包 括数字量输出及模拟量输出。
用户的功能块程序可以通过上位机下载到嵌入式处理器的存储区中,其存 储的顺序即功能块执行的顺序。为了与外部io进行很号的交互,在这里定义了 两个特殊的功能块,输入刷新功能块(读外界输入),其操作码为169;输出刷新
功能块(写外界输出),其操作码为170。这两个功能块对用户是不可见的,而在
每个用户程序的头和尾都默认都添加了这两个功能块。其中输入块标识用户功 能块程序的开始,输出块,标识着用户程序的结束。这样通过判断操作码就可 以知道用户程序的开始和结束位置。
为了更好的控制功能块的执行,这里还定义了功能块运行指针pc,初始时
指向输入刷新功能块的存储地址,而在以后每个功能块运行完成时都要改变pc 的值(使pc在原来的基础上增加本功能块的大小,由于每个功能块的存储空间
是固定的,所以这个值为一常数,可以预先定义),使其指向下一个即将运行的
功能块。当执行到输出刷新功能块时,将pc值归0使其重新指向第一个功能块,
这样用户编写的功能块程序就可以得到循环的执行了。另外在每个功能块存储
的起始两个字节保存的是功能块对应的操作码,这样根据pc值便可以读取即将 运行功能块的操作码,从而寻址到对应的功能块实现函数,根据嵌入式处理器 的存储区中保存的参数信息,完成这个功能块的功能。
不同类型的功能块虽然在功能上是各不相同的,但在执行方式上是一致的。 在每一个功能块实现函数中,依次读取该功能块的各个输入参数,在读取参数 的同时要判断参数是常数还是变量区数据,如果是常数那么可以在功能块数据 结构中读取数据;如果不是常数那么数据结构中只保存了变量区的地址,还要 根据这个地址读取相应变量区的存储单元中的数据,当参数读取完毕以后就可 以进行运算(不同的功能块完成不同的运算,如是加法功能块完成加法运算, 比较功能块完成比较运算)了。当然运算完成以后要将其结果进行保存,由于输 出操作数只能是用户指定的变量区并且只有一个,所以可以将运算结果直接写 入到输出操作数对应变量区的存储单元而不需对参数的个数及是否为常数进行 判断了。
所有的功能块除输入输出操作数的个数不一致外,其它部分都是一致的, 所以这里我们以单个功能块为例,对功能块的定义进行说明。其中网络坐标是上位机对功能块进行编译解析时使用,嵌入式处理器只关心操作码及输入、输 出操作数。其具体实现如下
为了简化功能块定义的复杂程度,在数据结构中只定义了两个字节的操作 码,而这个操作码与功能块是一一对应的。为了能够通过操作码査找到对应的 功能块实现函数,这里定义了一个函数指针数组,其定义如下 void (化onst pExecuteFunBlock[256]) 0 = {
ExeN(Dp, 〃0 ExeBitLogic一ANDFB, 〃1 ExeBitLogic—0RFB, 〃2
ExeTimers—T0NR, 〃167 ExeTimers—T0F, 〃168
ExelQ—I, 〃169
ExelQ—Q 〃170
函数指针数组保存了所有功能块函数的地址,并且以操作码为下标进行存 储,如操作码为2时,其对应的是0R功能块,那么通过OpExecuteFunBlock[2])() 语句其实际执行的是ExeBitLogic—0RFB()函数,从而完成OR功能块的逻辑功能。
对于操作数,无论是输入使能还是各个输入输出参数其数据结构的定义都
值一致的其定义如下
struct
union 0prandHeaderFlag oprandHeaderFlag; union OprandUnion oprandUnion; }0prand;
操作数头标志oprandHeaderFlag表示丫这个操作数是地址还是数据,如果是地
址那么还要说明输入是否取反,因为在输入取反的情况下默认的操作数一定是
个地址,所以使用公用体定义,只占用一个字节。操作数头标志结构如下 union OprandHeaderFlag
uint8 bAddressDataindicator; uint8 bl叩utlnverse;在使用OprandHeaderFlag指示了操作数是地址还是数据的情况下,使用 OprandUnlon来表示操作数的具体内容。其数据结构定义如下 union OprandUnion
uint8 DataAddress Address; union DataValue Data;
OprandUnion是一个公用体,其中DataAddress是保存的是操作数对应变量 区的地址,DataValue保存的是常数操作数。在DataAddress数据结构中 OpmndDomain表示操作数的区域,也就是这个操作数保存在哪个寄存器区域(如 V、 M、 SM等)。OprandAddress表示操作数地址,表示的是在这个数组中的第几 个数组的下标。在位变量寻址的时候,要使用OprandEx表示这个操作数是数组 中一个字元素的第几位。根据访问路径的研究与实现的相关介绍,可以得到相 应地址对应的数据。其数据结构定义如下 struct DataAddress
uint8 OprandDomain; uint8 OprandAddress; uint8 OprandEx;
如果操作数是常数,则实际的数据则根据数据类型在DataValue中取出。此结构 中定义了字节、有符号无符号字、有符号无符号双字及浮点等多种数据类型的 数据,可以根据具体功能块进行寻址。如果是INT型的则intValue[O]保存实际 数据,WORD型的由wordValue
保存,有符号四字节数据由dintValue保存,无 符号字节数据由dwordValue保存。其数据结构定义如下 union DataValue
uint8 byteValue[4]; intl6 intValue[2]; uintl6 wordValue[2]; int32 dintVa!ue;uint32 dwordValue; float reaiValue;
结合图5变量区定义数据表,对操作数的寻址进行说明。
位寻址II. 9,由于指令运行时已经确定了是位操作,所以直接进行地址寻址, OprandDomain = 0, OprandAddress = 1, 0prandEx = 9,读取10.9后再判断 bl叩utlnverse是否为1,如果为1则实际读取为对10. 9取反后的数值;
非位寻址MW300,此时bAddressDatalndicator = 0, OprandDomain =4, OprandAddress = 300, 0prandEx = 0;
非位寻址MD200中的指针数据地址,此时bAddressDatalndicator = 0, OprandDomain =4, OprandAddress = 200, OprandEx = 1;
非位寻址MD200中的指针数据,此时bAddressDatalndicator = 0, OprandDomain =4, OpraiidAddress = 200, OprandEx = 2; 直接读取数时,此时bAddressDatalndicator =1,按照指令运行时的数据类 型要求读取存储在DataValue中的数据。
如图6所示对功能块的执行下面结合一组用户功能块程序对其实现方法进 行说明。下面程序实现的功能是对外部输入10. 0输入脉冲进行计数,当其值大 于10的时候对外部输出QO. 0输出进行置位。
功能块程序首先要通过上位机下载到嵌入式处理器的存储区屮(如图7所 示),虽然图7中显示的是4个功能块,但实际保存的是6个,这里还包括输入 刷新、输出刷新功能块分别保存在用户功能块的起始和结束的位置。为了保证 功能块的正确执行,在上位机下载完功能块时要将功能块PC指针复位,使其指 向第一个功能块即输入刷新功能块。
在功能块执行时,由于PC值复位,由于读取的操作码是169,所以执行的 是输入刷新的函数,这时处理器将外部引脚的值读入保存在输入映像区I、 AI 区中,执行完此功能块后要改变PC的值,其值在原来值的基础上加上已执行功 能块的大小,对于每个功能块的大小处理器已做了预定义将其保存在一个全局
数组中,其定义如下。
const uintl6 g—FunctionBlockOffset;[256]二{ sizeof (Nop0prand), //0 sizeof (AndOpranci) , /Zl<formula>formula see original document page 13</formula>
这时根据PC指向的地址,读取其前两个字节做为操作码,其值为为5,那么通 过函数指针数组pExecuteFunBlock[5]查找到功能块实现函数 ExeBitLogic—EQUFB()。在函数中首先读去输入操作数,由于在数据结构中读取 歪!j bAddr es sDat alndi cator= 1这说明输入操作数为变量区数据,而OprandDomai n =0, OprandAddress = 0, OprandEx = 0根据图5的变量索引表其对应的是10. 0, 所有读取10.0对应存储单元的位变量。位赋值功能块的输入参数只有一个,所 以接下来要进行运算了,由于是赋值操作,此时可将其参数保存,当读取完输 出操作数后可以直接将其写入到输出操作数对应的存储单元,接下来要对输出 操作数进行读取,在功能块数据结构中读取OprandDomain = 4, OprandAddress 二 0, OprandEx = 0,其对应的为MO. 0,这时可以将读取到的数值写入到MO. 0 对应的存储单元中。以下的上升沿触发功能块、自加功能块及比较功能块的实 现过程与位赋值的相似,都是在输入操作数对应的变量区数据数据经过相应的 运算将结果写入到输出操作数对应的变量区中。
当执行完比较功能块以后,根据PC值读取当前功能块的操作码其值为170, 为输出刷新功能块,所以要调用输出刷新函数将Q、 AQ区的数值刷新到相应的 物理引脚上。另外输出刷新功能块还标志着用户功能块程序已经执行完成,所 以这时要将PC值复位,使其指向第一个功能块。这样处理器就可以对用户编写 的功能块循环执行,完成其所需要的各种功能。
以上所述,仅为本发明较佳的具体实施方式
,但本发明的保护范围并不局 限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,根据本 发明的技术方案及其发明构思加以等同替换或改变,都应涵盖在本发明的保护 范围之内。
权利要求
1、一种基于嵌入式系统IEC61131-3标准功能块的结构设计方法,其特征在于设计一个通用的数据结构操作码、操作数及运行参数三个方面来表述所有类型的功能块;所述操作码,用于表示功能块具体的操作内容,每一个功能块都有一个唯一的操作码与之对应,每一个功能块编写了各自的实现函数,并且将这些函数的地址按照操作码的顺序保存在一个全局的函数指针数组中,通过这个函数指针数组操作码与功能块实现函数建立一个一一对应关系,以查找到对应的功能块实现函数,从而完成相应的功能;所述操作数,为在功能块实现各项功能的过程中参与运算的输入输出参数,由数据源标识及数据存储单元两部分组成;数据源标识指示了参与运算的数据是变量区中的数据还是常数,数据存储单元存储的是与数据源标识相对应的变量区地址或常数;所述运行参数,它由网络标号、网络位置及执行顺序三个参数组成,此三个参数是供上位机使用的,上位机根据用户编写的程序为每一个功能块分配对应的参数,最终将用户程序按照正确的执行顺序下载到嵌入式处理器的Flash中。
2、 根据权利要求1所述的一种基于嵌入式系统IEC61131-3标准功能块的 结构设计方法,其特征在于所述操作数为变量区数据时,数据存储单元存储的 是数据在变量区中的位置,即区地址、字偏移和位偏移。
3、 根据权利要求1或2所述的一种基于嵌入式系统IEC61131-3标准功能 块的结构设计方法,其特征在于所述操作数中的数据存储单元定义多个数据存 储器单元,每个单元都有唯一的访问路径,用户可在功能块的输入输出参数中 明确指出需要存取的变量区的地址,这样就允许用户程序直接存取这个地址对 应的数据。
4、 根据权利要求3所述的一种基于嵌入式系统IEC61131-3标准功能块的 结构设计方法,其特征在于所述操作数的数据存储单元中定义了多个变量区, 并且在每一个变量区中的存储单元都可以通过位、字或双字进行寻址,另外, 当操作数为常数时,在操作数数据结构中定义了一个4字节的共用体,它分别 支持字节型、字型、双字型及浮点型的数据,以便对不同功能块不同数据类型 的常数操作数进行存储。
5、 一种基于嵌入式系统IEC61131-3标准功能块的执行方法,其特征在于 用户的功能块程序可以通过上位机下载到嵌入式处理器的存储区中,然后按照 读输入、功能块执行、写输出、处理通讯请求的运行周期进行循环执行程序a、 读输入,每次周期开始时,先读开关量输入点的当前值,后把输入点的 当前值保存到相应的变量区;b、 执行程序,用户功能块程序按顺序存储保存在嵌入式处理器的存储区中, 并且采用全局指针变量的方式对功能块进行寻,址执行程序是从第一条指令开 始,直到最后一条指令结束,在程序执行过程中,是对内存变量和映像区数据 操作,除非有直接I/O指令对输入和输出点直接存取,另外,每一个功能块通 过一个函数实现,为了方便功能块寻址,可以定义一个函数数组,将所有功能 块实现函数以操作码为下标进行存储,这样每次功能块执行时都可以通过操作 码査询到对应的实现函数,完成功能块的执行;c、 处理通讯请求,主要完成与上位机的交互,嵌入式处理器可以处理一些 来自上位机的命令请求,这其中包括用户功能块程序的上载、下载以及变量区 的读写;d、 写输出,在每个扫描周期的结尾,把存储在数字逻辑寄存器中的数据输 出到物理I/0中,包括数字量输出及模拟量输出。
6、 根据权利要求5所述一种基于嵌入式系统IEC61131-3标准功能块的执 行方法,其特征在于在每个用户程序的头和尾都默认都添加了这两个功能块 用于读外界输入的输入刷新功能块和用于写外界输出的输出刷新功能块,其中 输入块标识用户功能块程序的开始,输出块标识着用户程序的结束。
7、 根据权利要求5或6所述一种基于嵌入式系统IEC61131-3标准功能块 的执行方法,其特征在于在每个用户程序定义了功能块运行指针PC,初始时指 向输入刷新功能块的存储地址,而在以后每个功能块运行完成时都要改变PC的 值,使其指向下一个即将运行的功能块,当执行到输出刷新功能块时,将PC值 初始化使其重新指向第一个功能块。
8、 根据权利要求5所述一种基于嵌入式系统IEC61131-3标准功能块的执 行方法,其特征在于在每一个功能块实现函数中,依次读取该功能块的各个输 入参数,在读取参数的同时要判断参数是常数还是变量区数据,如果是常数那 么可以在功能块数据结构中读取数据;如果不是常数那么数据结构中只保存了 变量区的地址,还要根据这个地址读取相应变量区的存储单元中的数据,当参 数读取完毕以后进行运算。
全文摘要
本发明公开了一种IEC61131-3标准功能块软件实现方法,其特征在于设计一个通用的数据结构操作码、操作数及运行参数三个方面来表述所有类型的功能块;所述操作码,用于表示功能块具体的操作内容;所述操作数,为在功能块实现各项功能的过程中参与运算的输入输出参数;所述运行参数,它由网络标号、网络位置及执行顺序三个参数组成。该功能块的执行方法,其特征在于用户的功能块程序可以通过上位机下载到嵌入式处理器的存储区中,然后按照读输入、功能块执行、写输出、处理通讯请求的运行周期进行循环执行程序,已完成功能的实现。通过该方法可以在嵌入式处理器上实现PLC的基本功能,从而使产品的开放性及易用性得到了很大的改善。
文档编号G06F9/30GK101576820SQ20091001200
公开日2009年11月11日 申请日期2009年6月11日 优先权日2009年6月11日
发明者付树东, 仲崇权, 鑫 刘, 王俊山, 王占猛, 董智超 申请人:大连理工计算机控制工程有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1