首页> 中国专利> 一种用于在线修改控制系统逻辑算法程序的方法

一种用于在线修改控制系统逻辑算法程序的方法

摘要

本发明公开了一种用于在线修改控制系统逻辑算法程序的方法。控制系统包含组态软件和控制器两大部分,组态软件负责生成算法程序,控制器负责执行程序完成工业控制。本发明包括四个阶段:(1)数据生成阶段:组态软件离线生成在线修改必要的数据信息;(2)数据下载阶段:组态软件下载生成的数据,控制器保存到对应存储区;(3)程序配置阶段:控制器在执行算法程序的空闲时间完成程序配置;(4)程序切换阶段:停止旧的算法程序,切换执行新的算法程序。以上任何阶段出现异常,控制系统仍然正确执行修改前的算法程序。通过本发明可以实现在线修改算法程序,而不对正在运行的程序造成影响,并且在修改失败的情况下仍可以正确的执行原控制程序。

著录项

  • 公开/公告号CN103529743A

    专利类型发明专利

  • 公开/公告日2014-01-22

    原文格式PDF

  • 申请/专利权人 北京四方继保自动化股份有限公司;

    申请/专利号CN201310481575.5

  • 发明设计人 师嘉;王鼎;刘刚;黄磊;焦邵华;

    申请日2013-10-15

  • 分类号G05B19/048(20060101);

  • 代理机构北京金阙华进专利事务所(普通合伙);

  • 代理人吴鸿维

  • 地址 100085 北京市海淀区上地信息产业基地四街9号

  • 入库时间 2024-02-19 22:44:42

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-04-09

    专利权的转移 IPC(主分类):G06F12/00 登记生效日:20190321 变更前: 变更后:

    专利申请权、专利权的转移

  • 2017-01-04

    授权

    授权

  • 2014-02-26

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

    实质审查的生效

  • 2014-01-22

    公开

    公开

说明书

技术领域

本发明属于工业自动化控制系统技术领域,更具体地说,涉及一种用于在线修改控制系统逻辑算法 程序的方法。

背景技术

在工业自动化控制中,由组态软件与控制器(也称为上位机与下位机)组成的控制系统广泛的应用 于各控制领域:如分布式控制系统(DCS)、可编程控制器(PLC)、安全仪表控制系统(SIS)等。通 常,组态软件(上位机)完成控制算法的组态、算法程序的生成、算法程序下载至控制器、以及算法执 行情况的在线监视等工作;控制器(下位机)完成算法任务调度、控制算法执行、现场数据采集等工作, 是工业控制的核心部分。目前工业控制系统对于控制的实时性、连续性、稳定性、安全性都提出了越来 越高的要求。在控制系统对工业现场进行控制的过程中,可能会需要修改已有的控制算法,已达到更理 想的控制效果,那么如何在控制系统已运行算法程序的情况下,可以不对控制器运行状态进行扰动,完 成控制器中算法程序的更新,实现新旧控制算法的无缝切换,是工业自动化控制领域必须要解决的问题。

目前在线修改控制系统逻辑算法程序通常采用以下两种方式:

第一种方式是,控制器的存储区中采用一块代码区与一块数据区的方式,其算法程序中每个子算法 程序保存在指定的区域,新增的子程序保存在新的区域,变化的子程序可以在停止任务执行后进行替换, 也可以执行过程中替换,但替换后的子程序不可以被执行,该方法对于控制的实时性具有较大影响;

第二种方式是,控制器中存储区中采用两块代码区,两块代码区同用一块数据区,该方法可以在不 影响运行程序的前提下,对另一块代码区进行配置,满足控制实时性的要求,但其缺点在于修改程序后 可能要求对原有变量的内存空间进行初始化,若该阶段执行后发生异常,系统无法退回到原算法程序运 行的状态,存在算法扰动的风险,第一种方式也存在同样的问题。

发明内容

为克服现有技术存在的上述问题,本发明提供一种用于在线修改控制系统逻辑算法程序的方法,实 现对控制过程无扰动的情况下更新算法程序的目的,并且更新过程的任何阶段出现异常,都可以继续执 行原算法程序,不会对控制系统造成不必要的扰动。

本发明所述控制系统包含组态软件和控制器两大部分,组态软件负责生成修改后的算法程序及生成 需要在线修改的数据;控制器使用组态软件生成的数据,进行算法程序的在线修改;

所述控制器包括一套微处理器和存储器,存储器进一步包括:

两份代码区,保存算法程序数据,其中只有一份代码区中的算法程序被执行;

两份数据区,保存分别对应两份代码区中算法程序使用的变量信息,每个变量对应惟一的一片内存 空间;

两份辅助区,保存对应两份代码区中算法程序的数据区排布信息、数据区配置命令;

当前运行的算法程序对应的代码区、数据区、辅助区为活动区,另一份为备用区;

采用两份代码区和数据区,在线修改过程中出现任何异常,都可以继续使用活动区的数据来完成工 程控制,不会对修改前算法的执行造成任何影响。

所述控制系统以任务调度的方式对算法程序进行执行,控制系统支持多任务调度方式;

所述算法程序由若干子程序组成,不同子程序完成不同的控制功能,不同的子程序可以被不同的任 务调度;

所述数据区中每一个变量对应惟一的一片内存空间,根据算法中数据的类型分配不同大小的内存空 间,不同变量的内存空间不会重叠;

所述数据区排布信息进一步指,算法程序中使用的所有变量数据,其数据内容包括变量名称、变量 在数据区的相对偏移地址、变量的大小信息。

本发明具体采用以下技术方案:

一种用于在线修改控制系统逻辑算法程序的方法,包括以下步骤:

(1)数据生成阶段:组态软件从控制器读取当前运行算法程序的信息,生成待修改的算法程序在 修改后的算法程序数据、新的数据区排布信息、备用数据区的配置命令;

(2)数据下载阶段:组态软件将生成的所述修改后的算法程序数据下载到控制系统中,控制器验 证下载数据正确后,将修改后的算法程序数据保存到备用代码区,将新的数据区排布信息、备用数据区 配置命令保存到备用辅助区;

(3)程序配置阶段:控制器在周期执行算法程序的空闲时间内,根据备用数据区配置命令完成备 用数据区的状态配置,使备用数据区保持在运行的算法程序中数据的运算状态;

(4)程序切换阶段:控制器配置完成后,在所有任务周期执行结束后,停止旧的算法程序,切换 至备用代码区,继续执行备用代码区中新的算法程序。

本发明还可以进一步优选以下技术方案:

进一步的,数据生成阶段具体操作包括:

(11)组态软件根据本地修改的工程生成修改后的算法程序数据、新的数据区排布信息;

(12)组态软件从控制器中读取当前运行算法程序的数据区排布信息;

(13)比较两份数据区排布信息生成备用数据区配置命令:1)根据旧的数据区排布信息得到活动 数据区的使用大小,生成将活动数据区使用区域的内存值拷贝到备用数据区的命令;2)以变量名称进 行判断:若变量为新数据区排布文件中新增的变量,表示该变量为修改后算法程序中新增加的变量,则 生成对其内存进行初始化的命令;若变量为新旧数据区排布文件中都存在的变量,继续判断该变量是否 发生类型变化:若类型发生变化,表示该变量在新的算法程序中进行了修改,则生成对其内存初始化的 命令;若类型未发生变化,则不需要生成命令;若变量仅在旧数据区排布文件中,表示该变量在修改后 的算法中不再使用,不需要生成命令;

若任何子阶段发生异常,则在线修改操作失败,控制系统继续执行原算法程序。

进一步的,数据下载阶段具体操作包括:

(21)组态软件将所述修改后的算法程序数据下载到控制系统中,下载的算法程序数据包括三部分: 新的算法程序,新的数据区排布信息,备用数据区配置命令;

(22)控制器接受所述修改后的算法程序数据后,首先验证下载数据的正确性,并将算法程序保存 到备用代码区,将新的数据区排布信息和备用数据区配置命令保存到备用辅助区。该阶段的处理可以在 控制系统执行算法程序后的空闲时间内进行处理,可以与算法程序并发执行。

若任何子阶段发生异常,则在线修改操作失败,控制系统继续执行原算法程序。

进一步的,程序配置阶段具体操作包括:

(31)控制器在算法程序任务某一周期执行结束后,判断是否存在空闲时间:若存在,进行(32’) 的操作,若不存在,进行(33’)的操作;

(32)控制器根据备用数据区配置命令,开始执行备用数据区的配置工作:若在执行过程中算法程 序需要执行,则中断配置操作,进行(33’)的操作;若配置工作完成,则进行步骤(4)的处理;

(33)控制器进行算法任务调度,执行算法程序,结束后进行(31)的操作;

若任何子阶段发生异常,则在线修改操作失败,控制系统继续执行原算法程序。

该方式很好的满足了算法执行实时性的要求,但可能出现在配置过程中,算法程序的执行修改了已 经完成拷贝的某些数据,存在切换后某些变量状态回到若干周期前的情况;但考虑到在配置过程中,若 算法程序执行结果均处于正常状态,那么切换程序后,某些变量退回若干周期前的安全状态,不会对控 制的稳定性造成特别大的影响;但是若算法程序执行发现异常,则可以立即控制现场停机,避免不必要 的风险。例如:控制现场的锅炉温度过高,需要算法控制停止加煤,如果该操作被延迟,则很可能会导 致锅炉的爆炸,实时控制停机可以大大降低该风险。

进一步的,程序切换阶段具体操作包括:

(41)控制器在备用数据区配置完成后,备用数据区保持在运行算法程序中数据的运算状态,待在 运行的算法程序任务当前周期执行结束后,停止旧的算法程序;

(42)控制器并将指向算法程序入口的指针指向到备用代码区,开始执行新的算法程序,同时将原 来的活动区变为备用区;

若任何子阶段发生异常,则在线修改操作失败,控制系统继续执行原算法程序。

本发明的有益效果是,提供了一种用于在线修改控制系统逻辑算法程序的方法,普遍适用于各工业 领域的控制系统。本发明克服了已有方式中在线修改算法程序时,对算法执行实时性的影响,同时保证 了在修改过程中出现异常时,已运行程序的状态不会受到任何影响,最大程度上保证了在线修改算法过 程中,控制实时性、连续性、稳定性、安全性的要求。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍。

图1为本发明提供的一种用于在线修改算法程序总体流程图;

图2为本发明实施例提供的控制器的存储器结构示意图;

图3为本发明实施例提供的控制器各存储区的内容及存储方式示意图;

图4为本发明实施例提供的程序配置阶段流程图;

图5为本发明实施例提供的多任务系统调度时序图,其中(1)描述了基本调度方式,(2)描述了 已有在线修改算法程序处理方法的调度方式,(3)描述了本实施例的调度方式。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然, 所描述的实施例仅仅是本发明一种实施例,而不是全部的实施例。

请参阅图1,其为在线修改控制系统逻辑算法程序的基本流程图。

下面以多算法任务的控制系统为例,说明如何实现在线修改控制系统逻辑算法程序。

本发明中控制器的存储器结构示意图参阅图2所示。

控制系统的算法程序保存在代码区中,每个算法程序由若干子控制算法组成,每个子控制程序可以 被不同的算法任务调度;

算法程序中使用的变量信息保存在代码区对应的数据区中,算法中使用的每个变量根据其类型对应 不同大小的内存空间,且每个变量拥有惟一的地址空间,彼此不能出现重叠的情况。控制系统可以将数 据区进行更详细的划分,比如划分为:输入区、输出区、中间量区等等,不同的区域可以具有特定的属 性,例如算法程序中不允许对输入区的变量赋值,其为只读属性等,这样的划分可以使数据区结构更加 清晰明了,也更有利于数据管理。

算法程序的数据区排布信息、数据区配置命令信息保存在辅助区中,,数据区排布信息包含了算法 程序中使用了哪些内存空间及其对应关系,用于新旧算法程序的数据比较,比较后可以生成数据区配置 命令。

请参照图3,是本发明的一种实施例的存储区的内容及存储方式示意图。图3(1)为代码区的数据 存储示意图,算法程序由若干子程序组成。例如,子程序m负责完成一个加法运算,保存在代码区的 0x500开始的一段内存中。

图3(2)为数据区的存储示意图,算法中使用的变量对应数据区的惟一一块内存空间,用来保存 算法的运算结果,不同的变量类型对应不同的内存大小,不同变量的空间不能重叠。例如,子程序m 中使用的IN0为BOOL类型的变量,其对应数据区0x1000起始的1字节大小的内存空间;IN1为WORD 类型的变量,其对应数据区0x1002起始的2字节大小的内存空间。

图3(3)为辅助区的存储示意图,第一部分保存了算法程序中变量与数据区内存对应的数据区排 布文件,第二部分保存了数据区的配置方式。

如附图1所示为本发明提供的一种用于在线修改算法程序的方法,包括以下步骤:

步骤1:组态软件从控制器读取当前运行算法程序的信息,生成待修改的算法程序在修改后的算法 程序数据、新的数据区排布信息、备用数据区的配置命令。针对步骤(1),所属领域技术人员可以选择 多种实现方式。本发明为了对技术方案进一步详细介绍,结合以下两个具体实施例进行介绍:

实施例1:

数据生成阶段具体操作包括:

(11)组态软件根据本地修改的工程生成修改后的算法程序数据、新的数据区排布信息;

(12)组态软件从控制器中读取当前运行算法程序的数据区排布信息;

(13)比较两份数据区排布信息生成备用数据区配置命令:1)根据旧的数据区排布信息得到活动 数据区的使用大小,生成将活动数据区使用区域的内存值拷贝到备用数据区的命令;2)以变量名称进 行判断:若变量为新数据区排布文件中新增的变量,表示该变量为修改后算法程序中新增加的变量,则 生成对其内存进行初始化的命令;若变量为新旧数据区排布文件中都存在的变量,继续判断该变量是否 发生类型变化:若类型发生变化,表示该变量在新的算法程序中进行了修改,则生成对其内存初始化的 命令;若类型未发生变化,则不需要生成命令;若变量仅在旧数据区排布文件中,表示该变量在修改后 的算法中不再使用,不需要生成命令;

若任何子阶段发生异常,则在线修改操作失败,控制系统继续执行原算法程序。

实施例2:

数据生成阶段,该阶段的具体步骤如下所述:

(101)组态软件根据本地修改的工程生成修改后的算法程序数据、数据区排布信息;

(102)判断生成数据过程是否成功,若是,进行(103);若否,进行(107);

(103)组态软件读取当前运行算法程序的数据区排布信息;

(104)判断读取是否成功,若是,进行(105);若否,进行(107);

(105)比较两份数据区排布信息生成数据区配置命令,生成运算数据区配置命令的具体规则描述 如下,1)根据旧的数据区排布信息得到活动数据区的使用大小,生成将活动数据区使用区域的内存值 拷贝到备用数据区的命令;2)以变量名称进行判断:若变量为新数据区排布文件中新增的变量,表示 该变量为修改后算法新增加的变量,则生成对其内存进行初始化的命令;若变量为新旧数据区排布文件 中都存在的变量,继续判断该变量是否发生类型变化:若类型发生变化,表示该变量在新的算法程序中 进行了修改,则生成对其内存初始化的命令;若类型未发生变化,则不需要生成命令;若变量仅在旧数 据区排布文件中,表示该变量在修改后的算法中不再使用,不需要生成命令。

(106)判断生成是否成功,若是,进入第二阶段;若否,进行(107);

(107)控制器执行修改前的算法程序,清空各备用区,结束本次在线修改操作。

该阶段的主要工作是生成在线修改算法程序的必要数据。

步骤2:数据下载阶段:组态软件将生成的所述修改后的算法程序数据下载到控制系统中,控制器 验证下载数据正确后,将修改后的算法程序数据保存到备用代码区,将新的数据区排布信息、备用数据 区配置命令保存到备用辅助区;

针对步骤(2),所属领域技术人员同样可以选择多种实现方式。本发明为了对技术方案进一步详细 介绍,也结合以下两个实施例进行介绍:

实施例1:

数据下载阶段具体操作包括:

(21)组态软件将所述修改后的算法程序数据下载到控制系统中,下载的算法程序数据包括三部分: 新的算法程序,新的数据区排布信息,备用数据区配置命令;

(22)控制器接受所述修改后的算法程序数据后,首先验证下载数据的正确性,并将算法程序保存 到备用代码区,将新的数据区排布信息和备用数据区配置命令保存到备用辅助区。该阶段的处理可以在 控制系统执行算法程序后的空闲时间内进行处理,可以与算法程序并发执行。

若任何子阶段发生异常,则在线修改操作失败,控制系统继续执行原算法程序。

实施例2:

数据下载阶段,该阶段的具体步骤如下所述:

(201)组态软件下载修改后的算法程序数据到控制器,控制器可以开辟缓存区域来保存下载过程 中的数据;

(202)控制器判断下载数据是否正确,可以通过在数据中加入CRC32算法校验和等方式,来验证 数据传输的正确性,若是,进行(203);若否,进行(209);

(203)组态软件下载新的数据区排布信息数据到控制器;

(204)控制器判断下载数据是否正确,若是,进行(205);若否,进行(209);

(205)组态软件下载数据区配置命令数据到控制器;

(206)控制器判断下载数据是否正确,若是,进行(207);若否,进行(209);

(207)将缓存中的数据,保存到对应的存储区中,修改后的算法程序数据保存到备用代码区,数 据区排布信息和数据区配置命令数据保存到备用辅助区;

(208)控制器判断保存过程中是否存在异常,若无异常,进入第三阶段;若有异常,进行(209);

(209)控制器执行修改前的算法程序,清空各备用区,结束本次在线修改操作。

该阶段的主要工作是将在线修改算法程序的必要数据下载到控制器的相应存储区中。

步骤3:程序配置阶段,该阶段的具体处理流程请参照图4。控制器在周期执行算法程序的空闲时 间内,根据备用数据区配置命令完成备用数据区的状态配置,使备用数据区保持在运行的算法程序中数 据的运算状态。

该阶段是在线修改算法程序中的关键步骤,完成算法程序对应数据区的配置工作。

具体步骤如下所述:

(301)控制器正常执行算法程序,等待所有算法任务某一周期执行结束;

(302)控制器判断是否存在空闲时间:若是,进行(303)的操作;若否,返回继续执行(401) 的操作;

(303)控制器根据数据配置命令,开始对备用数据区执行数据配置;该方式下配置命令执行的优 先级低于算法程序执行任务的优先级,配置会被算法任务的执行中断;

(304)控制器在配置过程中判断是否需要执行算法程序,若是,则返回继续执行(301)的操作; 若否:则进行(305);

(305)控制器判断配置过程是否完成,若是,则进行(306);若否,则返回继续执行(303);

(306)控制器判断配置过程是否正确,若是,则进入第四阶段;若否,则进行(307);

(307)控制器执行修改前的算法程序,清空各备用区,结束本次在线修改操作。

图5(1)描述了包含两个任务的算法程序的调度时序图,假设控制系统中运行的算法程序包含两 个任务fast task与slow task,任务周期分别为50ms和200ms,不同的任务调度不同的子算法程序,在 0时刻,两个任务分别需要被执行,根据任务优先级的关系首先执行周期小的,即fast task任务,执行 时间为30ms;执行之后需要执行周期为200ms的slow task任务,执行时间同样是30ms,但是在执行 到20ms的时候,优先级高的fast task需要再次执行,则打断slow task,待fast task执行结束之后继续 执行slow task;slow task执行结束后系统有10ms的空闲时间,可以用来进行其他的操作。其他时刻的 执行情况参见图中所示。

针对目前已有的在线修改算法程序的方法,其调度方式如图5(2)所示,控制器在90ms的时刻, 算法任务执行结束,此时将算法任务的调度暂停,开始执行程序配置,假设执行数据区配置命令的时间 为30ms,则如图所示fast task的执行会被滞后20ms,可能对控制的实时性造成一定的扰动。针对图4 的实施例,其调度方式如图5(3)所示,控制器在90ms的时刻,算法任务执行结束,此时存在空闲时 间,开始执行数据区配置命令,执行数据区配置命令的时间为30ms,但执行到100ms时,此时fast任 务需要执行,则优先执行该任务调用的算法程序,执行结束后存在空闲时间,则继续执行数据区的配置 命令,执行20ms后配置结束,该方式不会对算法程序的执行造成影响,但可能造成某些变量的状态退 回fast任务执行前的运算状态,但对控制的稳定性不会造成很大的影响。

实施例中的步骤(303)具体执行数据区配置命令的顺序如下:

首先,执行第一阶段生成数据配置命令时,生成的活动数据区使用区域的内存值拷贝到备用数据区 的命令;然后,逐个执行新增变量和类型变化变量的初始化命令。

随着目前硬件的提升,控制器处理数据的速度也越来越快,目前DCS控制系统的CPU处理频率通 常可以达到300MHz以上,执行小于等于512K的算法程序的时间通常不会超过15ms,一般来说可以 保证控制系统默认周期内仍有50%左右的空闲时间,本发明中描述的数据区配置操作,针对一般规模 的工程,其数据配置可以在一周期的空闲时间内完成,则与已有方法结果相同,但是针对较大规模的工 程,则与已有方法相比,大大的降低了对控制实时性的影响。

步骤4:程序切换阶段:控制器配置完成后,在所有任务周期执行结束后,停止旧的算法程序,切 换至备用代码区,继续执行备用代码区中新的算法程序。

该阶段的具体步骤如下所述:

实施例1:

(41)控制器在备用数据区配置完成后,备用数据区保持在运行算法程序中数据的运算状态,待在 运行的算法程序任务当前周期执行结束后,停止旧的算法程序;

(42)控制器并将指向算法程序入口的指针指向到备用代码区,开始执行新的算法程序,同时将原 来的活动区变为备用区;

若任何子阶段发生异常,则在线修改操作失败,控制系统继续执行原算法程序。

实施例2:

(401)控制器停止所有算法任务的执行;

(402)控制器将算法程序入口指针切换到备用程序区;

(403)判断是否成功,若是,则进行(404),否则进行(405);

(404)控制器开始执行修改后的算法程序,并将原活动存储区作为备用存储区,清空其中的数据, 在线修改算法程序正确完成;

(405)控制器执行修改前的算法程序,清空各备用区,结束本次在线修改操作。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多 种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明实 施例的精神或范围的情况下,在其它实施例中实现。因此,本发明实施例将不会被限制于本文所示的这 些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号