首页> 中国专利> 一种可编程序控制器运行中程序无扰动重构的方法

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

摘要

本发明公开了一种可编程序控制器运行中程序无扰动重构的方法,其中可编程序控制器的控制程序包含数据符号表、初始化数据表、程序代码和数据搬移表;该程序无扰动重构方法通过对比可编程序控制器控制程序重构前后的数据符号表,生成重构的数据搬移表,根据重构的数据搬移表从当前控制程序的运行内存区域中将源地址处的数据复制至重构的控制程序的运行内存区域中目的地址处,完成数据覆盖,从而实现控制程序重构。由具备本发明运行中程序无扰动重构功能的可编程控制器构成的控制系统具备更高的可用性,可以在被控设备在不停机的情况下无扰动实现控制程序的更新,减少停机风险和停机带来的经济损失。

著录项

  • 公开/公告号CN103941631A

    专利类型发明专利

  • 公开/公告日2014-07-23

    原文格式PDF

  • 申请/专利权人 南京科远自动化集团股份有限公司;

    申请/专利号CN201410159456.2

  • 发明设计人 祖利辉;黄伟;

    申请日2014-04-21

  • 分类号G05B19/05;

  • 代理机构南京汇盛专利商标事务所(普通合伙);

  • 代理人陈扬

  • 地址 211100 江苏省南京市江宁区秣陵街道清水亭东路1266号

  • 入库时间 2023-12-17 00:50:37

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2016-08-17

    授权

    授权

  • 2014-08-20

    实质审查的生效 IPC(主分类):G05B19/05 申请日:20140421

    实质审查的生效

  • 2014-07-23

    公开

    公开

说明书

技术领域

    本发明属于自动化控制系统控制器编程技术领域,具体涉及一种可编程序控制器运行中程序无扰动重构的方法。

背景技术

    可编程控制系统中核心控制设备如可编程控制器(PLC)以及分散控制系统(DCS)中的分散处理单元均通过编程软件编制控制程序并将控制程序装载进控制的内存执行新的控制程序来实现可编程控制器的重新编程。传统的可编程控制器通常不具备在线编程的能力(需要控制系统停机进行更新然后重新启动)或者在重构新的控制程序时不能实现控制过程的无扰动(新程序生效对控制过程有扰动造成设备误动等)。

发明内容

本发明的目的是为了解决现有技术中存在的缺陷,提供一种可以使得可编程序控制器在运行过程中无扰动的完成控制程序的重构。

为了达到上述目的,本发明提供了一种可编程序控制器运行中程序无扰动重构的方法,其中可编程序控制器的控制程序包含数据符号表、初始化数据表、程序代码和数据搬移表;该程序无扰动重构方法通过对比可编程序控制器控制程序重构前后的数据符号表,生成重构的数据搬移表,根据重构的数据搬移表从当前控制程序的运行内存区域中将源地址处的数据复制至重构的控制程序的运行内存区域中目的地址处,完成数据覆盖,从而实现控制程序重构。

具体无扰动重构步序包括:

ST1:根据新的用户程序,生成重构的数据符号表、初始化数据表、程序代码;

ST2:将重构的数据符号表与当前运行的控制程序中的数据符号表比较后生成数据搬移表,该数据搬移表与ST1步骤生成的重构的数据符号表、初始化数据表、程序代码形成重构的控制程序;

ST3:将重构的控制程序加载到可编程序控制器内存;

ST4:可编程序控制器下一运算周期开始时,重构的控制程序的运行内存区域加载重构的控制程序中的初始化数据表,根据数据搬移表从当前控制程序的运行内存区域中将源地址处的数据复制至重构的控制程序的运行内存区域中目的地址处,完成数据覆盖,更新程序代码,从而完成可编程序控制器控制程序更新,并依照更新后的控制程序运行。

其中,当前运行的控制程序中的数据符号表和重构的控制程序中的数据符号表均包含若干数据组,每个数据组由标识符、类型、地址和以字节为单位的长度组成;且当前运行的控制程序中的数据符号表中任意两个数据组的标识符不相同,重构的数据符号表中任意两个数据组的标识符不相同;当前运行的控制程序中的数据符号表和重构的数据符号表中的地址全部为可编程序控制器内存的物理地址或逻辑地址,不能既有物理地址又有逻辑地址。

上述数据搬移表包含若干个数据组,每一个数据组由源地址、目的地址和长度组成,其中,源地址和目的地址分别与上述当前运行的控制程序中的数据符号表中的地址和重构的控制程序中的数据符号表中的地址相对应,即全部为可编程序控制器内存物理地址或逻辑地址,不能既有物理地址又有逻辑地址。

新的用户程序包括若干数据,每一数据分别与重构的数据符号表中的一个数据组相对应,具体指由编程工具为某一用户程序的数据生成的一组标识符、数据类型、地址及以字节为单位的数据长度与前述的数据符号表中一个数据组对应。上述的新的用户程序采用由编程工具生成,编程工具为设置在可编程序控制器中的编程模块或外接的编程器。

上述的程序代码包括控制算法和数据地址,其中数据地址与控制程序的数据符号表中的地址相对应。具体地讲,程序代码只包括控制算法和数据地址,不包括直接数据信息,需要使用数据时采用数据引用的方式,根据数据地址获取数据。

前述的ST2步骤所述的将重构的数据符号表与当前运行的控制程序中的数据符号表比较后生成数据搬移表,由以下步序实现:

st1:获取重构的数据符号表和当前运行的控制程序中的数据符号表;

st2:将重构的数据符号表的第一项数据组,与当前运行的控制程序中的数据符号表中所有数据组依次比较,当找到标识符、类型和长度三者完全一致的数据组时,重构的数据符号表的第一项的数据组的地址作为数据搬移表第一项数据组的目的地址,查找到的当前运行的控制程序中的数据符号表数据组中的地址为数据搬移表第一项数据组的源地址,重构的数据符号表的第一项数据组的长度为数据搬移表第一项数据组的长度; 

st3:依次遍历重构的数据符号表所有数据组,生成全部的数据搬移表数据组,最后,生成新的数据搬移表。

前述的ST4步骤所述的根据重构的控制程序中的数据搬移表完成数据覆盖,是指根据重构的控制程序中的数据搬移表项中各数据组中的源地址、目标地址和长度,在可编程序控制器内存中,从当前控制程序的运行内存区域中将源地址处的数据按长度复制至重构的控制程序运行内存区域中目的地址处,依次处理数据搬移表中所有数据组,直至完成数据搬移操作。

本发明与传统可编程控制器控制程序重构的方法相比,优点是:(1)控制程序重构的过程不依赖特别的硬件,仅仅是软件算法实现,具有广泛可编程序控制器产品的适应性;(2)无扰动重构数据搬移表直接指示数据地址,重构过程处理速度快,能在一个控制周期内完成新控制程序的装载和生效,不对运行中的控制逻辑及被控设备造成扰动;(3)无扰动重构数据搬移表可以和控制程序结合在一起也可以和控制程序分离,有较强的灵活性,具备运行中程序无扰动重构能力的可编程控制器可以兼容传统的不具备该项能力的控制器,具体应用过程中可以保护用户投资;(4)由具备运行中程序无扰动重构功能的可编程控制器构成的控制系统具备更高的可用性,可以在被控设备在不停机的情况下无扰动实现控制程序的更新,减少停机风险和停机带来的经济损失。

附图说明

图1为本发明实现无扰动重构的示意图;

图2为可编程序控制器的控制程序基本格式。

具体实施方式

如图1所示,介绍了本发明涉及的一种可编程序控制器程序无扰动重构的方法,包括可编程控制器控制程序格式和实现无扰动重构步序,其中控制程序格式包含数据符号表、初始化数据表、程序代码、数据搬移表。如图2所示具体介绍控制程序格式详细内容,其中,数据符号表中的地址均为物理地址或均为逻辑地址,其他表和代码中的地址均与该表中的地址为对应关系。

本发明具体实现方式包括如下步骤:

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)控制器进入下一个周期的运行,执行更新后的控制程序。

关于上述步骤3),编程工具生成数据搬移表具体实现步骤如下:首先我们将上述步骤1)中获取的当前控制程序的数据符号表1和上述步骤2)中生成的重构的控制程序的数据符号表2,分别记为oldSymbolArray、newSymbolArray,编程工具通过获取newSymbolArray数组的第一项,记为newSymbolItem1,并依次与oldSymbolArray中的每一项进行比对,如果oldSymbolArray中的某一项(记为oldSymbolItemX)与newSymbolItem1的标识符、数据类型、数据长度完全一致,则将newSymbolItem1中的地址(记为addr1)、oldSymbolItemX中的地址(记为addr2)以及newSymbolItem1或oldSymbolItemX中的长度(记为length)三者组成数据搬移表的第一项,记为CopyItem1,其中CopyItem1的目的地址为add1,源地址为add2,长度为length。重复以上步骤,依次处理newSymbolArray数组的第二项、直至最后一项,形成数据搬移表的其它项CopyItem2、CopyItemN。最后,由CopyItem1、CopyItem2…CopyItemN,生成数据搬移表DataCopyTblArray,该数据为数组格式。

关于上述步骤5),具体实现如下:控制器在一个完整的控制周期执行完毕后,检查是否有新下载的重构的控制程序,如果有,控制器首先将重构的控制程序中的程序代码复制到新程序代码区,其次根据初始化数据表,将初始化数据复制到重构的控制程序运行内存区域(记为newRam),最后,根据重构的控制程序中的数据搬移表DataCopyTblArry进行数据拷贝,该拷贝步骤为:获取DataCopyTblArry数组的第一项,记为DataCopyTblItem1,获取DataCopyTblItem1中的目的地址(记为addr1)、源地址(记为addr2)、数据长度(记为length),从当前正在运行的控制程序运行内存区域(记为oldRam)中的地址addr2处,取出长度为length的数据,将此数据复制到newRam中地址为addr1的区域。重复以上步骤,依次处理DataCopyTblArry的其它项,完成数据搬移。 

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号