一种可编程序控制器运行中程序无扰动重构的方法

文档序号:6304704阅读:187来源:国知局
一种可编程序控制器运行中程序无扰动重构的方法
【专利摘要】本发明公开了一种可编程序控制器运行中程序无扰动重构的方法,其中可编程序控制器的控制程序包含数据符号表、初始化数据表、程序代码和数据搬移表;该程序无扰动重构方法通过对比可编程序控制器控制程序重构前后的数据符号表,生成重构的数据搬移表,根据重构的数据搬移表从当前控制程序的运行内存区域中将源地址处的数据复制至重构的控制程序的运行内存区域中目的地址处,完成数据覆盖,从而实现控制程序重构。由具备本发明运行中程序无扰动重构功能的可编程控制器构成的控制系统具备更高的可用性,可以在被控设备在不停机的情况下无扰动实现控制程序的更新,减少停机风险和停机带来的经济损失。
【专利说明】一种可编程序控制器运行中程序无扰动重构的方法【技术领域】
[0001]本发明属于自动化控制系统控制器编程【技术领域】,具体涉及一种可编程序控制器运行中程序无扰动重构的方法。
【背景技术】
[0002]可编程控制系统中核心控制设备如可编程控制器(PLC)以及分散控制系统(DCS)中的分散处理单元均通过编程软件编制控制程序并将控制程序装载进控制的内存执行新的控制程序来实现可编程控制器的重新编程。传统的可编程控制器通常不具备在线编程的能力(需要控制系统停机进行更新然后重新启动)或者在重构新的控制程序时不能实现控制过程的无扰动(新程序生效对控制过程有扰动造成设备误动等)。

【发明内容】

[0003]本发明的目的是为了解决现有技术中存在的缺陷,提供一种可以使得可编程序控制器在运行过程中无扰动的完成控制程序的重构。
[0004]为了达到上述目的,本发明提供了一种可编程序控制器运行中程序无扰动重构的方法,其中可编程序控制器的控制程序包含数据符号表、初始化数据表、程序代码和数据搬移表;该程序无扰动重构方法通过对比可编程序控制器控制程序重构前后的数据符号表,生成重构的数据搬移表,根据重构的数据搬移表从当前控制程序的运行内存区域中将源地址处的数据复制至重构的控制程序的运行内存区域中目的地址处,完成数据覆盖,从而实现控制程序重构。
[0005]具体无扰动重构步序包括:
STl:根据新的用户程序,生成重构的数据符号表、初始化数据表、程序代码;
ST2:将重构的数据符号表与当前运行的控制程序中的数据符号表比较后生成数据搬移表,该数据搬移表与STl步骤生成的重构的数据符号表、初始化数据表、程序代码形成重构的控制程序;
ST3:将重构的控制程序加载到可编程序控制器内存;
ST4:可编程序控制器下一运算周期开始时,重构的控制程序的运行内存区域加载重构的控制程序中的初始化数据表,根据数据搬移表从当前控制程序的运行内存区域中将源地址处的数据复制至重构的控制程序的运行内存区域中目的地址处,完成数据覆盖,更新程序代码,从而完成可编程序控制器控制程序更新,并依照更新后的控制程序运行。
[0006]其中,当前运行的控制程序中的数据符号表和重构的控制程序中的数据符号表均包含若干数据组,每个数据组由标识符、类型、地址和以字节为单位的长度组成;且当前运行的控制程序中的数据符号表中任意两个数据组的标识符不相同,重构的数据符号表中任意两个数据组的标识符不相同;当前运行的控制程序中的数据符号表和重构的数据符号表中的地址全部为可编程序控制器内存的物理地址或逻辑地址,不能既有物理地址又有逻辑地址。[0007]上述数据搬移表包含若干个数据组,每一个数据组由源地址、目的地址和长度组成,其中,源地址和目的地址分别与上述当前运行的控制程序中的数据符号表中的地址和重构的控制程序中的数据符号表中的地址相对应,即全部为可编程序控制器内存物理地址或逻辑地址,不能既有物理地址又有逻辑地址。
[0008]新的用户程序包括若干数据,每一数据分别与重构的数据符号表中的一个数据组相对应,具体指由编程工具为某一用户程序的数据生成的一组标识符、数据类型、地址及以字节为单位的数据长度与前述的数据符号表中一个数据组对应。上述的新的用户程序采用由编程工具生成,编程工具为设置在可编程序控制器中的编程模块或外接的编程器。
[0009]上述的程序代码包括控制算法和数据地址,其中数据地址与控制程序的数据符号表中的地址相对应。具体地讲,程序代码只包括控制算法和数据地址,不包括直接数据信息,需要使用数据时采用数据引用的方式,根据数据地址获取数据。
[0010]前述的ST2步骤所述的将重构的数据符号表与当前运行的控制程序中的数据符号表比较后生成数据搬移表,由以下步序实现:
stl:获取重构的数据符号表和当前运行的控制程序中的数据符号表;st2:将重构的数据符号表的第一项数据组,与当前运行的控制程序中的数据符号表中所有数据组依次比较,当找到标识符、类型和长度三者完全一致的数据组时,重构的数据符号表的第一项的数据组的地址作为数据搬移表第一项数据组的目的地址,查找到的当前运行的控制程序中的数据符号表数据组中的地址为数据搬移表第一项数据组的源地址,重构的数据符号表的第一项数据组的长度为数据搬移表第一项数据组的长度;
st3:依次遍历重构的数据符号表所有数据组,生成全部的数据搬移表数据组,最后,生成新的数据搬移表。
[0011]前述的ST4步骤所述的根据重构的控制程序中的数据搬移表完成数据覆盖,是指根据重构的控制程序中的数据搬移表项中各数据组中的源地址、目标地址和长度,在可编程序控制器内存中,从当前控制程序的运行内存区域中将源地址处的数据按长度复制至重构的控制程序运行内存区域中目的地址处,依次处理数据搬移表中所有数据组,直至完成数据搬移操作。
[0012]本发明与传统可编程控制器控制程序重构的方法相比,优点是:(1)控制程序重构的过程不依赖特别的硬件,仅仅是软件算法实现,具有广泛可编程序控制器产品的适应性;(2)无扰动重构数据搬移表直接指示数据地址,重构过程处理速度快,能在一个控制周期内完成新控制程序的装载和生效,不对运行中的控制逻辑及被控设备造成扰动;(3)无扰动重构数据搬移表可以和控制程序结合在一起也可以和控制程序分离,有较强的灵活性,具备运行中程序无扰动重构能力的可编程控制器可以兼容传统的不具备该项能力的控制器,具体应用过程中可以保护用户投资;(4)由具备运行中程序无扰动重构功能的可编程控制器构成的控制系统具备更高的可用性,可以在被控设备在不停机的情况下无扰动实现控制程序的更新,减少停机风险和停机带来的经济损失。
【专利附图】

【附图说明】
[0013]图1为本发明实现无扰动重构的示意图;
图2为可编程序控制器的控制程序基本格式。【具体实施方式】
[0014]如图1所示,介绍了本发明涉及的一种可编程序控制器程序无扰动重构的方法,包括可编程控制器控制程序格式和实现无扰动重构步序,其中控制程序格式包含数据符号表、初始化数据表、程序代码、数据搬移表。如图2所示具体介绍控制程序格式详细内容,其中,数据符号表中的地址均为物理地址或均为逻辑地址,其他表和代码中的地址均与该表中的地址为对应关系。
[0015]本发明具体实现方式包括如下步骤:
1)如图1中①所示,由编程工具获取当前控制器正在执行程序的控制程序格式,从中得到当前控制程序的数据符号表,记为数据符号表1,为数据组格式,格式结构如图2所示;
2)编程工具根据新的用户程序,生成重构的控制程序中数据符号表、初始化数据表,分别记为数据符号表2、初始化数据表2、程序代码2。其中数据符号表2、初始化数据表2为数据组格式,格式结构如图2所示;
3)编程工具通过比对数据符号表1和数据符号表2,提取其中标识符、类型和长度均相同的变量,生成数据搬移表2 ;
4)如图1中②所示,编程工具将含有数据符号表2、初始化数据表2、程序代码2、数据搬移表2的重构的控制程序下载到控制器中;
5)控制器接收到编程工具下载的控制程序后,在下一次周期运算的开始,加载重构的控制程序的初始化数据表2、程序代码2到相应内存区域,即重构的控制程序的运行内存区域,根据数据搬移表从当前控制程序的运行内存区域中将源地址处的数据复制至重构的控制程序的运行内存区域中目的地址处,完成数据覆盖,从而完成可编程序控制器控制程序更新;
6)控制器进入下一个周期的运行,执行更新后的控制程序。
[0016]关于上述步骤3),编程工具生成数据搬移表具体实现步骤如下:首先我们将上述步骤I)中获取的当前控制程序的数据符号表1和上述步骤2)中生成的重构的控制程序的数据符号表2,分别记为ο I dSymbo IArray、newSymbo IArray ,编程工具通过获取newSymbo IArray 数组的第一项,记为 newSymbol Iteml,并依次与 ο I dSymbo IArray 中的每一项进行比对,如果 ο I dSymbo IArray 中的某一项(记为 ο I dSymbo I ItemX)与 newSymbol Iteml的标识符、数据类型、数据长度完全一致,则将newSymbolIteml中的地址(记为addrl)、ο I dSymbo I ItemX 中的地址(记为 addr2)以及 newSymbo I Iteml 或 oldSymbolItemX 中的长度(记为length)三者组成数据搬移表的第一项,记为CopyIteml,其中CopyIteml的目的地址为addl,源地址为add2,长度为length。重复以上步骤,依次处理newSymbol Array数组的第二项、直至最后一项,形成数据搬移表的其它项CopyItem2、CopyltemN。最后,由CopyIteml、CopyIten^..CopyItemN,生成数据搬移表 DataCopyTblArray,该数据为数组格式。
[0017] 关于上述步骤5),具体实现如下:控制器在一个完整的控制周期执行完毕后,检查是否有新下载的重构的控制程序,如果有,控制器首先将重构的控制程序中的程序代码复制到新程序代码区,其次根据初始化数据表,将初始化数据复制到重构的控制程序运行内存区域(记为newRam),最后,根据重构的控制程序中的数据搬移表DataCopyTblArry进行数据拷贝,该拷贝步骤为:获取DataCopyTblArry数组的第一项,记为DataCopyTblIteml,获取DataCopyTblIteml中的目的地址(记为addrl)、源地址(记为addr2)、数据长度(记为length),从当前正在运行的控制程序运行内存区域(记为oldRam)中的地址addr2处,取出长度为length的数据,将此数据复制到newRam中地址为addrl的区域。重复以上步骤,依次处理DataCopyTblArry的其它项,完成数据搬移。
【权利要求】
1.一种可编程序控制器运行中程序无扰动重构的方法,其特征在于:所述可编程序控制器采用的控制程序包含数据符号表、初始化数据表、程序代码和数据搬移表;所述程序无扰动重构方法通过对比可编程序控制器控制程序重构前后的数据符号表,生成重构的数据搬移表,根据重构的数据搬移表从当前控制程序的运行内存区域中将源地址处的数据复制至重构的控制程序的运行内存区域中目的地址处,完成数据覆盖,从而实现控制程序重构。
2.根据权利要求1所述的程序无扰动重构的方法,其特征在于,包括以下步骤: STl:根据新的用户程序,生成重构的数据符号表、初始化数据表、程序代码; ST2:将重构的数据符号表与当前运行的控制程序中的数据符号表比较后生成数据搬移表,该数据搬移表与STl步骤生成的重构的数据符号表、初始化数据表、程序代码形成重构的控制程序; ST3:将重构的控制程序加载到可编程序控制器内存; ST4:可编程序控制器下一运算周期开始时,重构的控制程序的运行内存区域加载重构的控制程序中的初始化数据表,根据数据搬移表从当前控制程序的运行内存区域中将源地址处的数据复制至重构的控制程序的运行内存区域中目的地址处,完成数据覆盖,更新程序代码,从而完成可编程序控制器控制程序更新,并依照更新后的控制程序运行。
3.根据权利要求1或2所述的程序无扰动重构的方法,其特征在于:所述数据符号表均包含若干数据组,每个数据组由标识符、类型、地址和以字节为单位的长度组成,且任意两个数据组的标识符不相同;所述数据符号表中的地址均为可编程序控制器内存的物理地址或均为可编程序控制器内存的逻辑地址。
4.根据权利要求3所述的程序无扰动重构的方法,其特征在于:所述新的用户程序包括若干数据,每一数据分别与所述重构的数据符号表中一个数据组相对应。
5.根据权利要求3所述的程序无扰动重构的方法,其特征在于:所述数据搬移表包含若干数据组,每个数据组由源地址、目的地址和长度组成;所述源地址和目的地址分别与当前运行的控制程序中的数据符号表中的地址和重构的数据符号表的地址相对应。
6.根据权利要求5所述的程序无扰动重构的方法,其特征在于,所述步骤ST2中数据搬移表的生成步骤如下: stl:获取重构的数据符号表和当前运行的控制程序中的数据符号表; st2:将重构的数据符号表的第一项数据组,与当前运行的控制程序中的数据符号表中所有数据组依次比较,当找到标识符、类型和长度三者完全一致的数据组时,重构的数据符号表的第一项的数据组的地址作为数据搬移表第一项数据组的目的地址,查找到的当前运行的控制程序中的数据符号表数据组中的地址为数据搬移表第一项数据组的源地址,重构的数据符号表的第一项数据组的长度为数据搬移表第一项数据组的长度; st3:依次遍历重构的数据符号表所有数据组,生成全部的数据搬移表数据组,最后,生成数据搬移表。
7.根据权利要求6 所述的程序无扰动重构的方法,其特征在于,所述步骤ST4中根据数据搬移表完成数据覆盖的步骤如下:根据数据搬移表中各数据组的源地址、目标地址和长度,在可编程序控制器内存中,从当前控制程序的运行内存区域中将源地址处的数据按长度复制至重构的控制程序的运行内存区域中目的地址处,依次处理数据搬移表中所有数据组,直至完成数据搬移操作。
8.根据权利要求3所述的程序无扰动重构的方法,其特征在于:所述控制程序中程序代码由控制算法和数据地址组成,其中数据地址与所述控制程序中数据符号表中的地址相对 应。
【文档编号】G05B19/05GK103941631SQ201410159456
【公开日】2014年7月23日 申请日期:2014年4月21日 优先权日:2014年4月21日
【发明者】祖利辉, 黄伟 申请人:南京科远自动化集团股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1