首页> 中国专利> 一种控制系统的控制程序组织结构和下载方法

一种控制系统的控制程序组织结构和下载方法

摘要

本发明涉及工业控制系统技术领域,特别涉及一种控制系统的控制程序组织结构和下载方法,控制系统包含控制器和组态软件,控制器内固化有运行管理内核,在组态软件的后台系统中存放有程序模块库,程序模块库以加密的可链接文件方式存放于组态软件中,组态软件的前台由用户进行用户组态程序的编程及下载;运行管理内核、程序模块库、用户组态程序及数据组成控制程序;控制器和组态软件之间通过下载接口进行控制程序的通讯及交互。由于本发明中控制程序模块库存放于组态软件后台,仅在下载后将组态程序实际使用的控制程序模块下载存储到控制器中,不但简化了控制器内的程序结构,使程序的调度管理更加快速可靠,还减小了控制器的存储资源压力。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2020-08-11

    专利权的转移 IPC(主分类):G05B19/042 登记生效日:20200722 变更前: 变更后: 申请日:20161201

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

  • 2019-02-15

    授权

    授权

  • 2018-03-06

    专利申请权的转移 IPC(主分类):G05B19/042 登记生效日:20180212 变更前: 变更后: 申请日:20161201

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

  • 2017-06-16

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

    实质审查的生效

  • 2017-05-24

    公开

    公开

说明书

技术领域

本发明涉及工业控制系统技术领域,特别涉及一种控制系统的控制程序组织结构和下载方法。

背景技术

随着自动控制技术的发展,控制系统已经越来越多的应用在各个行业领域中,技术需求也由于细分市场的不同而大相径庭。在过程控制等领域控制系统(如DCS)的规模越来越大的同时,如微型PLC等小型或者微型的控制器也在加工制造、车载控制、机器人等方面有着越来越多的应用,且有着进一步微型化、集成化的趋势。如业内已有了集控制功能、控制算法、工业通讯在单芯片上实现的片上控制模块芯片(CMC芯片)。

虽然控制系统的规模和功能越来越差异化,但是结构上仍是以控制设备+控制组态监控软件为主。控制设备包括控制器、输入输出模块以及联接控制器和I/O的通信总线。用户通过控制组态软件进行编程组态,将用户组态程序下载到控制器中,以实现所要执行的控制功能,并通过监控软件进行数据监控和诊断。

传统的控制系统将各种基本控制程序模块(如功能块、功能函数、控制算法以及工业通讯协议栈)固化存放在控制器中,用户根据其开放的功能块列表选择所需要的功能块进行控制程序的编程。控制器在执行过程中遇到功能块即直接从存储器中调用该功能块固化程序执行。即在这种控制系统的控制程序组织结构中,程序模块库完全固化在控制器中,用户只可以通过组态编程选择调用其中的各个程序模块。

为了满足控制系统对所有目标用户的各种功能需求,程序模块库是设计的庞大而丰富的,包含了从基本功能块、功能函数到高级控制算法和工业通信协议栈等诸多内容。但是实际使用过程中,针对单独的用户,会使用到的程序模块并不会多。这就导致了控制器中储存和管理了大量没有实际使用的程序模块。对于存储资源丰富的控制器而言,这不会带来什么问题。但对于为求成本优势而使存储资源非常有限的微型控制器或者CMC控制芯片而言,过多地空闲程序模块可能会造成控制器其它功能缺失或性能受限。

另一方面,传统控制系统将程序模块库全部固化在控制器中的方式,使得更新程序模块库必然要求到达工业现场对控制器的固化程序进行整体更新,这对于控制器的版本维护和用户组态工程的保护都是不利的。根据各种工业现场环境、安全等级以及设备嵌入设计的不同,这种程序模块库的升级是难以操作实施的。

发明内容

本发明的目的在于针对传统控制系统的控制程序组织结构及下载方式的不足,设计一种新的控制程序组织结构及下载方法,以减小微型控制器的程序存储资源压力,并提升控制器的程序模块库升级功能。

为了解决上述技术问题,本发明采用了如下的技术方案:

一种控制系统的控制程序组织结构,控制系统包含控制器和组态软件,其中,

控制器内固化有运行管理内核,

在所述的组态软件的后台系统中存放有程序模块库,程序模块库以加密的可链接文件方式存放于组态软件中,组态软件的前台由用户进行用户组态程序的编程及下载;

所述的运行管理内核、程序模块库、用户组态程序及数据组成控制程序;

控制器和组态软件之间通过下载接口进行控制程序的通讯及交互。

进一步地,所述的用户组态程序经下载后,控制器中包含用户组态程序经过编译而形成的用户组态数据,以及用户组态程序中所使用的程序模块经过编译而形成的程序模块目标文件,而不包含用户组态程序中未使用的程序模块目标文件。

进一步地,所述的程序模块库包含符合可编程逻辑控制器标准的基本功能块、功能函数、高级控制算法、工业通讯协议栈的功能程序模块库。

一种控制系统的控制程序组织结构的下载方法,所述的下载方法包括以下步骤:

A.组态软件下载被用户组态程序所调用的所有控制程序模块,以可重定位文件的链接形式向控制器发送模块链接请求,从而链接至控制器的运行管理内核;

B.组态软件下载用户组态程序至控制器,并在下载完成后,启动运行用户组态程序。

进一步地,用户在组态软件中配置目标控制器型号及目标控制器通道连接参数,并在组态软件的前台中编写用户组态程序,从而形成用户组态程序所调用的所有控制程序模块。

进一步地,上述的一种控制系统的控制程序组织结构的下载方法中步骤A具体为:

A1.组态软件预编译用户编写的用户组态程序,自动查找并汇总用户组态程序中所调用和关联的所有控制程序模块,生成控制程序模块依赖列表,判断控制程序模块依赖列表是否全部支持,如果是,则分配模块号,建立索引;如果否,预编译不通过,报错;

A2.组态软件将所调用和关联的控制程序模块进行编译和链接,形成一个可被再次链接的可重定位文件;

A3.组态软件通过下载通道将可重定位文件下载到控制器中的固定存储地址,并向控制器发送模块链接请求;

A4.控制器收到模块链接请求,完成运行管理内核对目标文件的动态加载和链接。

进一步地,所述的控制程序模块依赖列表中每一个被调用的控制程序模块都包含模块名、模块号及模块标识符,组态软件根据所选控制器型号判断模块依赖列表中的控制程序模块是否全部被支持;

如果发现存在不被目标控制器支持的控制程序模块,则组态软件停止编译并输出错误信息,等待用户更正;

如果所有的控制程序模块都能被支持,则组态软件会给组态程序中每个模块调用的地址分配控制器所支持的模块号,然后继续编译用户组态程序;

如果模块依赖列表中的控制程序模块和用户组态程序指令都正确,编译完成后组态软件将会对模块依赖列表中各个关联模块进行链接,生成一个可被再次链接的可重定位文件;否则组态软件停止编译并输出错误信息,等待用户更正。

进一步,所述的组态软件对可重定位文件进行链接测试,确保其执行功能、链接后内存占用大小符合要求,然后向可重定位文件的固定位置写入生成的CRC32校验值,链接测试通过后组态软件利用新建组态工程时已经配置好的下载通道将该可重定位文件下载到控制器中,下载完成后再向控制器发送控制程序模块链接请求。

进一步,所述的控制器接收到组态软件的模块链接请求后完成对已下载的可重定位文件进行动态加载,所述的动态加载过程包括以下步骤:

a)可重定位文件校验:比对当前可重定位文件的文件类型、CPU平台、编译器版本,确保控制器能够支持所需的控制程序模块的加载,然后计算整个可重定位文件的CRC32校验值,并与可重定位文件头部对应字段校验值进行对比,结果一致则表示该模块完整可信,能够加载到当前控制器中运行空间中;

b)分配运行空间:根据可重定位文件的代码段、只读数据段、数据段、未初始化变量段等段的大小之和分配相应的RAM空间,为所需的控制程序模块提供最终的加载地址和运行地址;

c)符号解析和重定位:遍历需要重定位的符号,并按照控制器CPU的指令修正表对可重定位文件的符号地址进行修正;

d)导出各控制程序模块符号地址:导出每个被组态程序调用到的控制程序模块入口地址,形成一个控制程序模块符号索引列表,以供用户组态程序调用的控制程序模块能够时快速定位并执行。

进一步,所述的步骤B具体为:

B1.组态软件编译用户组态程序,形成运行管理内核所能识别的用户组态数据文件;

B2.组态软件通过下载通道将用户组态数据文件下载到控制器中的固定存储地址,并向控制器发送下载完成消息;

B3.控制器收到下载完成消息,进行组态数据的整理,就绪后等待用户的操作命令。

本发明由于采用以上技术方案,使之与传统的控制系统将各种基本控制程序模块固化存放在控制器中相比,具有以下的优点和积极效果:

1.将所有控制程序模块库存放于组态软件后台,仅在下载后将组态程序实际使用的控制程序模块下载存储到控制器中,使控制器中没有多余无用的程序,不但简化了控制器内的程序结构,使程序的调度管理更加快速可靠,还减小了控制器的存储资源压力,非常适用于微型PLC、片上控制系统等对成本、资源有苛刻要求的控制器设计;

2.对于在控制器的支持的功能块、控制算法、通信协议等方面,由于本发明将所有这些控制程序模块库存放于组态软件后台,需要对控制器进行控制功能升级时,仅在控制室(甚至是网络远程)对组态软件后台数据进行升级即可,而不需要到控制器安装现场拆盖再用程序烧写工具对控制器固化软件进行升级,显著简化了控制器的功能升级难度和工作量,提升控制系统的智能性;

3.控制器内只固化了设备自身运行所需的管理程序,而不固化存储任何程序模块库,程序模块只在被需要使用时才下载到控制器设备中,同时,程序模块又与用户组态程序独立下载和存放,避免过度耦合而影响内核程序的稳定性;

4.控制方法中的下载过程总体分为两个子过程,根据用户编写的用户组态程序先下载被用户组态程序所调用的所有控制程序模块,动态链接到控制器的运行管理内核;而后再为下载用户组态程序,并在下载完成后,启动运行用户组态程序,从而实现控制程序的运行,下载过程稳定高效;

5.在预编译的中生成控制程序模块依赖列表,程序模块依赖列表根据控制程序模块一一对应的模块名、模块号及模块标识符生成索引,能自动查找所关联或依赖的其他程序模块,通过编译、链接、测试通过后,形成一个可被再次链接的可重定位文件,以保证控制系统的下载过程安全可靠;

6.能根据用户的操作命令实现清除、更新、停止、启动及调试,清除和更新组态程序的同时控制器能自动清除已加载和链接的程序模块,显著提高了控制系统的智能性。

附图说明

图1是本发明组织结构示意图;

图2是本发明中用户组态程序下载前的组织结构示意图;

图3是本发明中用户组态程序下载后的组织结构示意图;

图4是本发明控制方法中步骤A的流程示意图;

图5是本发明控制方法中步骤B的流程示意图。

具体实施方式

为了使本领域技术人员能进一步了解本发明的特征及技术内容,请参阅以下有关本发明的详细说明与附图。下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

请见图1,本发明公开了一种控制系统中控制程序的组织结构,其控制系统主要包含(但不限于)控制器和组态软件。控制程序包含控制器的运行管理内核、程序模块库和用户组态程序。控制器和组态软件之间通过下载接口进行控制程序的通讯及交互。其中,程序模块库指包含了如IEC61131规范的基本功能块、功能函数、各类高级控制算法、各类工业通讯协议栈等的功能程序模块库。

该控制程序组织结构中,用户组态程序下载前,控制器仅固化了其运行管理内核,而不固化任何程序模块库;程序模块库以加密的可链接文件方式存放于组态软件的后台系统中;用户通过组态软件前台的组态界面进行用户组态程序的编程和下载。用户组态程序下载前的程序组织结构如图2所示。

该控制程序组织结构中,用户组态程序下载后,控制器中包含用户组态程序经过编译而形成的用户组态数据,以及用户组态程序中所使用的程序模块经过编译而形成的程序模块目标文件,而不包含用户组态程序中未使用的程序模块目标文件。用户组态程序下载后的程序组织结构如图3所示。

本发明进一步公开了一种控制程序的下载方法,该下方法主要包括两个下载过程,下载过程一为下载被用户组态程序所调用的所有控制程序模块,动态链接到控制器的运行管理内核;下载过程二为下载用户组态程序,并在下载完成后,启动即可运行用户组态程序。以下根据具体实施例对该下载过程进行具体说明。

实施例1

为实现用户组态程序的编译、下载、运行,用户首先需要在组态软件中新建组态工程,配置好目标控制器型号,目标控制器通道连接参数等信息,然后在组态软件中完成组态程序的编写,编译完成后组态软件通过下载通道将生成的文件下载到控制器设备并运行,该过程具体包括以下步骤,

A:下载被用户组态程序所调用的所有控制程序模块(本实施例中为ELF格式文件),以可重定位文件的链接形式向控制器发送模块链接请求,从而链接至控制器的运行管理内核;

B:下载用户组态程序(本实施例中为可执行二进制格式文件)至控制器,并在下载完成后,启动运行用户组态程序。

步骤A的具体步骤如下,其流程示意图请参见图4:

用户在组态软件中编写的组态程序中可包含控制器控制程序模块(包括各种功能块、功能函数、控制算法以及工业通讯协议栈等)。在编译用户组态程序时,组态软件预编译用户编写的用户组态程序,自动查找并汇总用户组态程序中所调用和关联的所有控制程序模块,生成控制程序模块依赖列表,模块依赖列表中每一个被调用的控制程序模块都包含模块名,模块号,模块标识符3项元素;组态软件根据所选控制器型号判断模块依赖列表中的控制程序模块是否全部被支持。

如果发现存在不被目标控制器支持的控制程序模块,则组态软件停止编译并输出错误信息,等待用户更正;

如果所有的控制程序模块都能被支持,则组态软件会给用户组态程序中每个模块调用的地址分配控制器所支持的模块号,建立索引,然后继续编译用户组态程序;

如果模块依赖列表中的控制程序模块和用户组态程序指令都正确,编译完成后组态软件将会对控制程序模块依赖列表中各个关联模块进行链接,生成一个可被再次链接的可重定位文件;否则组态软件停止编译并输出错误信息,等待用户更正;

为保证上述的可重定位文件可以被正确链接,组态软件对该可重定位文件进行链接测试,确保其执行功能、链接后内存占用大小等符合要求,然后向该文件固定位置写入生成的CRC32校验值;

链接测试通过后组态软件利用新建组态工程时已经配置好的下载通道将该可重定位文件下载到控制器指定Flash空间中,下载完成后再向控制器发送控制程序模块链接请求。在本实施例中,Flash空间总大小为2MB,其中地址范围为0x100000-0x17FFFF共512KB的Flash空间用于存储可重定位文件。

控制器接收到组态软件的模块链接请求后完成对已下载的可重定位文件的动态加载。

动态加载过程包括可重定位文件校验、分配运行空间、符号解析和重定位、导出各控制程序模块符号地址。

a)可重定位文件校验:可重定位文件校验过程中,控制器的动态加载模块首先需要比对当前可重定位文件的文件类型、CPU平台、编译器版本等信息,确保控制器能够支持所需的控制程序模块的加载,然后计算整个可重定位文件的CRC32校验值,并与该文件头部对应字段校验值进行对比,如结果一致则表示该模块完整可信,能够加载到当前控制器中运行空间中;

b)分配运行空间:分配运行空间过程根据可重定位文件的代码段、只读数据段(通常包括常量、字符串等信息)、数据段、未初始化变量段等段的大小之和,分配相应的RAM空间,为各个模块提供最终的加载地址和运行地址;

c)符号解析和重定位:这一子过程主要工作为遍历需要重定位的符号,并按照控制器CPU的指令修正表对可重定位文件的符号地址进行修正;由于不同控制器采用的CPU型号多样,每种CPU采用的编译器所对应的指令修正方式也都各不相同,因此控制器的动态加载模块严格依赖于可重定位文件校验过程,以确保重定位结果的正确;

d)导出各控制程序模块符号地址:导出各控制程序模块符号地址是整个动态加载过程的最后一步,其目的是导出每个被组态程序调用到的控制程序模块入口地址,形成一个控制程序模块符号索引列表,以供用户组态程序调用上述控制程序模块能够时快速定位并执行。

以上过程完成下载被用户组态程序所调用的所有控制程序模块,并动态链接到控制器的运行管理内核。

步骤B的具体步骤如下,其流程示意图请参见图5:

组态软件编译完用户组态程序之后,除了根据用户组态程序的模块依赖列表生成的控制程序模块重定位文件之外,还会生成一个控制器运行管理内核能够识别的可执行、二进制的用户组态数据文件;该组态程序文件所调用的控制程序模块号与步骤A过程中所生成的控制程序模块依赖列表中生成的模块号一致。

同控制程序模块中的可重定位文件下载一样,组态软件也会通过下载通道将上述组态程序文件下载到控制器中的指定的存储地址。下载完成后向控制器发送下载完成消息。在本实施例中,地址范围为0x180000-0x1BFFFF共256KB的Flash空间用于存储可执行、二进制的用户组态数据文件。

控制器接收到下载完成消息后对用户组态数据文件进行校验,校验通过之后进行组态数据的整理,包括组态程序数据段、映射区的空间申请,组态任务分配等操作。以上操作完成后通知组态软件控制器已经就绪,等待用户操作命令,控制器就绪之后,用户即可可以通过用户组态软件运行清除命令、更新命令、停止命令、启动命令、调试命令。

当控制器收到组态软件下发的清除命令后,首先判断当前是否处于运行状态,如果是,则终止当前组态程序的运行,清除已分配的组态任务、回收已经申请的内存空间,然后清除已经加载到控制器中的控制程序模块。

当控制器收到组态软件下发的更新组态程序命令后,在完成上面清除组态程序命令所执行的操作之后,按照步骤A和步骤B分别下载控制程序模块重定位文件和用户组态数据文件,并动态加载到控制器中。

当控制器收到组态软件下发的停止命令后,终止当前正在运行的组态程序,关闭对应的输入输出功能,清除组态任务运行状态。

当控制器收到组态软件下发的启动命令后,控制器先判断当前组态程序是否已经更新,如果组态程序已经更新,则初始化所有组态程序变量值,设置已分配的组态任务运行参数,然后从组态程序的第一条指令开始执行。否则控制器不执行操作,输出相关信息并等待用户更新组态程序。

组态软件生成的组态程序文件在执行过程中,如果遇到控制程序模块调用,会向运行管理内核发送包含控制程序模块号的请求,用于执行对应的控制程序模块。运行管理内核在已加载的控制程序模块符号索引列表中查找对应模块的入口地址并执行,执行完毕后继续运行下一条组态程序。

另外,可以把步骤A和步骤B合并,进行文件的统一编译和单次下载,如将用户组态程序先编译为可链接的ELF格式文件,与控制程序模块库先链接后进行下载,再与运行管理内核进行链接,理论上也可以实现控制程序的运行,但这种方案中用户组态程序和内核程序的耦合度过高,可能会影响到内核程序的稳定。而本发明方案中,用户组态程序编译后为独立的可执行文件格式,与内核程序采用标准的接口进行调用。

显然,本领域的技术人员可以对发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号