CN109933345B - 一种控制器的无扰下装方法及相关装置 - Google Patents
一种控制器的无扰下装方法及相关装置 Download PDFInfo
- Publication number
- CN109933345B CN109933345B CN201910243338.2A CN201910243338A CN109933345B CN 109933345 B CN109933345 B CN 109933345B CN 201910243338 A CN201910243338 A CN 201910243338A CN 109933345 B CN109933345 B CN 109933345B
- Authority
- CN
- China
- Prior art keywords
- pou
- variable
- undisturbed
- downloading
- file
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02P—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
- Y02P90/00—Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
- Y02P90/02—Total factory control, e.g. smart factories, flexible manufacturing systems [FMS] or integrated manufacturing systems [IMS]
Abstract
本申请所提供的一种控制器的无扰下装方法,包括:在系统编译时,对DP设备进行第一偏移分配,生成下装数据包;为变量分配内存中对应的相对偏移地址,并生成变量表;根据所述变量表和空闲块信息对变量进行第二偏移分配;遍历POU以确认POU变化标志,并将变化的POU逻辑信息与重定位信息整合,将所述下装数据包发送至控制器加载,以启动下装流程。整个下装过程中保证了硬件无扰、变量无扰和控制算法无扰,真正实现了无扰下装。本申请还提供一种计算机可读存储介质和一种DP设备,具有上述有益效果。
Description
技术领域
本申请涉及工业控制领域,特别涉及一种控制器的无扰下装方法及相关装置。
背景技术
在工业现场,用户通过IEC组态软件将系统组态信息下装到控制器。系统组态信息包含用户程序组态、硬件配置信息等。控制器根据系统组态信息,配置硬件参数、加载用户程序,通过输入采样、用户程序执行和输出刷新三个阶段达到控制现场设备的目的。在系统调试或者运行过程中需要在设备不停车的情况下快速更改部分系统组态,且修改不能对现场设备造成扰动。
然而,目前市场上宣称的无扰下装均存在下装限制,例如有的需要备份控制器才能实现无扰下装,有的对于无扰下装的工程版本存在限制,在实际工业操作中,这些下装限制严重影响了无扰下装效率,甚至导致下装对设备造成影响,给用户带来损失。
发明内容
本申请的目的是提供一种控制器的无扰下装方法、一种计算机可读存储介质和一种DP设备,解决了当下无扰下装存在诸多限制条件的问题。
为解决上述技术问题,本申请提供一种控制器的无扰下装方法,具体技术方案如下:
在系统编译时,对DP设备进行第一偏移分配,生成下装数据包;
为变量分配内存中对应的相对偏移地址,并生成变量表;根据所述变量表和空闲块信息对变量进行第二偏移分配;
遍历POU以确认POU变化标志,并将变化的POU逻辑信息与重定位信息整合,将所述下装数据包发送至控制器加载,以启动下装流程。
其中,将所述下装数据包发送至控制器加载之前,还包括:
建立DP主卡和所述控制器之间的握手连接,以确定需要重新下装的DP从站变化数据。
其中,生成所述下装数据包时,还包括:
从主控的第一条链路开始为每个逻辑数据对象进行错误项的检查分析;其中,所述错误项由错误表确定。
其中,遍历POU以确认POU变化标志包括:
对比历史POU文件和当前POU文件,确定POU变化标志;其中所述POU包括所述历史POU文件和所述当前POU文件;所述历史POU文件为上次下装时的工程文件。
其中,对比历史POU文件和当前POU文件,确定POU变化标志包括:
加载所述历史POU文件中的iec文件;
对当前POU文件以预设单位进行编译,并生成第一目标代码;
将第一目标代码中与所述iec文件中同名预设单元的第二目标代码进行比较,确定各预设单元的变化内容;
根据所有所述预设单元的变化内容确定所述POU变化标志。
其中,确定POU变化标志之后,还包括:
将所有所述第一目标代码保存至所述iec文件,生成辅助POU。
其中,为变量分配内存中对应的相对偏移地址,并生成变量表包括:
根据变量所属区域分配相对偏移地址;具体的,当所述变量属于直接寻址区时,所述变量对应的相对偏移地址为实际设定值;
当所述变量属于非直接寻址区时,所述变量对应的相对偏移地址采用全编译或增量编译进行分配。
其中,对DP设备进行第一偏移分配包括:
若存在下装记录且所述控制器的型号未替换,对所述控制器下各模块逐一判断是否需要保持偏移不变;
若是,更新空闲表;
根据所述空闲表对各所述模块进行第一偏移分配。
本申请还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的无扰下装方法的步骤。
本申请还提供一种DP设备,其特征在于,包括存储器和处理器,所述存储器中存有计算机程序,所述处理器调用所述存储器中的计算机程序时实现如上所述的无扰下装方法的步骤。
本申请所提供的一种控制器的无扰下装方法,包括:在系统编译时,对DP设备进行第一偏移分配,生成下装数据包;为变量分配内存中对应的相对偏移地址,并生成变量表;根据所述变量表和空闲块信息对变量进行第二偏移分配;遍历POU以确认POU变化标志,并将变化的POU逻辑信息与重定位信息整合,将所述下装数据包发送至控制器加载,以启动下装流程。
本申请通过对DP设备进行第一偏移分配,保证硬件配置模块在编译前后没有变化,即硬件配置模块在I、Q去所占的位置不变化,实现了硬件配置无扰;对变量采用类似的手段,为变量分配内存区域的相对偏移地址,使得变量的地址保持不变,实现了变量无扰;对于控制算法,由于POU承载了控制算法,可以遍历POU以确认POU变化标志,并将变化的POU逻辑信息与重定位信息整合,以便启动下装流程,使得下装过程中控制算法保持不变。整个下装过程中保证了硬件无扰、变量无扰和控制算法无扰,真正实现了无扰下装。本申请还提供一种计算机可读存储介质和一种DP设备,具有上述有益效果,此处不再赘述。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请提供的DP硬件配置的数据流图;
图2为本申请提供的下装到RTS的数据包层次结构图;
图3为本申请实施例所提供的一种控制器的无扰下装方法的流程图;
图4为本申请提供的下装数据包格式示意图;
图5为本申请提供的iec文件格式示意图;
图6为本申请提供的.tmp文件格式示意图;
图7为本申请提供的.at文件格式示意图;
图8为本申请实施例所提供的判断过程版本的流程图;
图9为本申请实施例提供的读取控制器ID流程图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
在此现对于硬件配置无扰的实现过程进行说明,请参考图1,图1为本申请提供的DP硬件配置的数据流图。需要说明的是,PROFIBUS-DP简称DP,PROFIBUS全称Process FileBus,即过程现场总线,DP全称Distributed Peripherals,即分布式外围设备,本申请中的DP泛指遵从DP协议的主站和从站等设备。
数据源模块负责解析.cfg及.gsd等配置文件,并读取框架的选项中硬件配置相关的信息;显示数据模块负责从工程磁盘文件.hpf中读取显示数据组态信息;逻辑数据模块负责从工程磁盘文件.hpf中读取逻辑数据组态信息,生成通道变量,编译后生成DP下装数据包。数据源模块为组态操作、逻辑数据更新及编译操作提供配置信息,用户组态操作会引起显示数据的变化及逻辑数据的更新。硬件设备组态是按照树型结构保存组态数据的,下装给控制器的数据是根据下面的层次结构组织的。
请参见图2,图2为下装到RTS的数据包层次结构图,
硬件配置组态主要操作是增加模块、删除模块。增加模块主要完成的功能为为模块在I/Q区分配的内存、对模块中各通道生成对应的通道变量。删除模块主要完成的功能为回收模块在I/Q区分配的内存、将模块中各通道对应的通道变量从map中删除并析构通道变量对象、设置模块对象的删除标志、将模块对象从设备map中删除并析构模块对象。对于DP设备而言,主站和从站有Input区和Output区,即输入区和输出区,简称I/Q区,一个站可以给另一个站的输入区写数据,并从其输出区读数据。
请参考图3,图3为本申请实施例所提供的一种控制器的无扰下装方法的流程图,该下装方法包括:
S101:在系统编译时,对DP设备进行第一偏移分配,生成下装数据包;
为实现无扰下装,必须保证未修改的硬件配置、变量、控制算法不受扰动。具体而言,无扰下装指的是这三项的变化对原来不变的部分不影响,一般第一次下装后,再次下装时的修改并非对这三项内容的全部修改,一般只是增量或部分修改,硬件配置、变量以及控制算法未修改的部分,应该保证原来的逻辑或值,且不被新的变化所干扰。
本步骤旨在实现硬件配置无扰,首先需保证硬件配置模块在编译前后如果没有变化,那么它在I区、Q区所占的位置不应该变化。
具体的,在系统编译时,会对DP设备进行第一偏移分配。,这里的第一偏移分配实际上指的是对DP设备分配偏移量并进行偏移。系统编译指的是在接收到下装信号前系统内部针对下装的准备阶段,本申请实施例中,直至发送下装数据包前均可以视为编译阶段。
第一步、初始化空闲内存块列表:把I区、Q区两区的内存进行初始化,且保持不需要改变偏移的模块的内存分配情况。此时分为(1)、(2)两种情况:
(1)、在没有硬件配置下装记录的,或者类似控制器型号替换的前提下,进入逻辑数据编译阶段后,对I区、Q区内存进行初始化。
(2)、若有下装记录且控制器型号没有替换的前提下,进入逻辑数据编译阶段并对I区、Q区内存进行初始化后,对控制器下各模块进行遍历,判断本模块是否需要保持偏移不变,如果不变,则更新空闲表。
第二步、分配模块空间:在添加新模块时,需要为该模块分配内存空间。在离线组态时,若新增从站或其所占内存大小发生变化,会为从站分配内存空间。根据该模块所属链路对应的空闲表,给模块分配偏移,同时更新空闲块链表。如果出现内存不足,则作内存不足的相关提示。在此对于如何提示内存不作限定。
具体的,在为各模块设置偏移时,可以先将该模块标记为需要重新分配偏移的模块,例如可以设置标记、标志等。在分配完内存并设置偏移后,需要将模块进行偏移,并在偏移后取消或移除该标记。这样可以保证对DP设备的所有模块均进行了第一偏移分配。
值得一提的是,在离线组态时,模块内存发生变化时,无论是增加还是减少,均需回收内存,因为模块内存是连续的,当模块内存增加时,连续的内存可能不足,因此同样需要回收内存,并更新I/Q区的空闲表。
此外,在本步骤的执行过程中,还需要生成下装数据包。在此对于下装数据包的格式和内容不作限定,具体应由本领域技术人员根据实际内容和格式需求进行设定。本申请在此提供一种优选的下装数据包格式,参见图4,图4为本申请提供的下装数据包格式示意图,该下装数据包包括基本信息、参数信息、特殊数据、通道数据和子模块数据。当然,在此基础上,下装数据包还可以包括其他类型的数据,在此不一一限定。
需要注意的是,在生成下装数据包时,通常还可以进行错误项的检查分析,具体的:从主控的第一条链路开始为每个逻辑数据对象进行错误项的检查分析。错误项由错误表确定,错误表即checklist,用于编译时检查错误,包含需要检查的错误项。
S102:为变量分配内存中对应的相对偏移地址,并生成变量表;根据所述变量表和空闲块信息对变量进行第二偏移分配;
本步骤旨在实现对变量的无扰下装。为变量分配相对偏移地址实际上也就是对变量进行偏移分配,变量偏移分配由组态软件在编译时进行,就是为变量分配一个内存区域的相对偏移地址。为保证控制器下装时变量无扰,编译时如果变量没有发生改变,则变量的地址同样保持不变。
具体的,分配时根据变量所属区域分配相对偏移地址;具体的,当变量属于直接寻址区时,变量对应的相对偏移地址为实际设定值;当变量属于非直接寻址区时,变量对应的相对偏移地址采用全编译或增量编译进行分配。
实际设定值指的是由用户设定的值,在此不作具体限定。当变量属于非直接寻址区时,分为全编译和增量编译:
全编译:初始化某数据区的空闲块,分别设置空闲块大小为数据区的大小;然后根据变量所占的空间大小从空闲块中划分空间,同时调整空闲块的大小。
增量编译:在下装的时候,会更新上次下装的信息,上次下装的信息包括:上次下装变量列表以及空闲块的信息。这些信息存储在站的对象中。
首先根据上次下装时的空闲块信息对数据区的空闲块进行初始化,然后,该数据区的空闲块信息就保持上次下装时的状态。
然后,比较当前的变量表和上次下装的变量表,得到新的需要重新分配偏移的变量表;同时将已经删除的变量所占用的数据区进行回收,重新添加到空闲块中。在此过程中,还会生成变化的变量表,包括新的变量,类型改变的变量等。
接着,根据新的空闲块,对需要重新偏移分配的变量进行第二偏移分配。在分配的过程中,若发现空闲块不足以分配,则输出错误信息或者发送报警信息等。
S103:遍历POU以确认POU变化标志,并将变化的POU逻辑信息与重定位信息整合,将所述下装数据包发送至控制器加载,以启动下装流程。
本步骤旨在实现控制算法的无扰下装,这是因为POU承载了控制算法,POU,Program organization unit,程序组织单元,可以是功能、功能块或程序。本步骤需要将用户组态的POU翻译生成目标代码,并生成一些辅助POU供控制器调用,以完成数据区的初始化。
具体的,需要先遍历POU以确认POU变化标志,通过对比历史POU文件和当前POU文件,而POU文件包括历史POU文件和当前POU文件,历史POU文件就是上次下装时的工程文件。需要指出的是,本步骤中的POU变化标志意即表明存在变化的POU。
更具体的,可以包括如下四个步骤:
S1031:先加载历史POU文件中的iec文件;
S1032:对当前POU文件以预设单位进行编译,并生成第一目标代码;
S1033:将第一目标代码中与iec文件中同名预设单元的第二目标代码进行比较,确定各预设单元的变化内容;
S1034:最后根据所有预设单元的变化内容确定POU变化标志。
iec文件是保存本次编译生成的组态逻辑信息的文件。需要注意的是,本文中的iec文件与.iec文件是同一含义。Iec文件的文件格式如图5所示,图5为本申请提供的iec文件格式示意图。如图5所示,Iec文件通常可以包括文件头、任务描述信息和组态逻辑信息三部分。其中,组态逻辑信息包括组态逻辑信息头、函数目录表、函数代码及重定位信息、外部库函数名及索引四部分。
函数目录表用来保存每次编译生成的函数在本文件中的位置信息。函数目录表的每个表项的数据结构包括四个部分,分别是函数名称、函数相对于组态逻辑信息区首地址的偏移、函数二进制代码长度、该函数重定位信息长度。
由于每次生成函数目录表时表项的个数是确定的,每个表项的大小也是确定的,所以变化表在内存或文件中都是一段连续的空间进行存储,相当于是一个数组,数组中每个元素可以以标准字节大小存在,例如76字节。函数代码及重定位信息保存每次编译生成的函数二进制代码和该函数二进制代码的重定位信息。
值得一提的是,步骤S1032中的预设单位,在本申请通常以POU为单位。这样在步骤S1033中也方便比较第一目标代码和第二目标代码。
需要说明的是,本申请实施例中的步骤S103通常需要在S101、S102之后执行,而S101和S102并无既定的执行顺序。图3所示执行顺序仅为本申请所提供的一种优选的执行顺序,而实际上,执行完上述三个步骤即可保证硬件无扰、变量无扰和控制算法无扰,进而编译并由用户控制实现控制器的无扰下装。
进一步的,在步骤S103确定POU变化标志之后,还需要包括:
将所有第一目标代码保存至iec文件,生成辅助POU。
在此以两个较重要的辅助POU进行说明:
(1)Codeinit:初始化各数据区信息和功能函数的索引,并初始化各函数的指针、长度和名字。Codeinit实质上函数定义为Codeinit(PLC_CONF_TAB*p),用于初始化函数表及函数指针表,并对POU描述表进行初始化,以便控制器得到关注的函数索引。下装时,所有POU在CODE区中的入口地址都被填到DATA区代码段。
(2)Globalinit:完成变量初始化。针对IEC61131-3标准中的基本数据类型,为每一种类型构造了其初始化函数。之后,遍历所有变量,根据变量的类型,调用相应的类型初始化函数初始化变量,直至所有的变量都处理完。
基于上述实施例,通常在步骤S1034后,还需要包括:
S1035:将本次变化的POU按照预设格式生成.tmp文件。
需要说明的是,.tmp文件可以用于保存本次编译变化信息和无扰下装信息。此时需要循环遍历所有POU,如果POU(具有二进制代码的POU)被修改,则将增量编译的POU二进制代码写入.tmp文件,之后写入CodeInitChange的二进制代码到.tmp文件末端。在逐一将变化的POU写入.tmp文件的时候,将这些变化的POU中含有重定位信息的写入另一块内存,以便之后重定位信息的写入。在此对于.tmp文件的文件格式即内容不作限定,优选的,可参见图6,图6为本申请提供的.tmp文件格式示意图。
这里所有的POU都有可能变化,而CodeInitChange是由其他POU变化导致codeinit变化所得。
进一步,还可以根据上文所述的iec文件生成.at文件,其中逻辑组态区包含所有POU及辅助POU的目标代码,.at文件是工程数据与逻辑信息文件。在此对于.tmp文件的文件格式即内容不作限定,优选的,可参见图7,图7为本申请提供的.at文件格式示意图。其中,图7中代码头包括Codeinit函数地址信息。
基于上述实施例所述的无扰下装方法,此时进行无扰下装时,其具体过程如下:
当IEC软件进行过组态修改,且为同一工程,将执行无扰下装。IEC组态软件获取.tmp文件中的增量信息区信息,通过无扰下装服务下装给控制器。
第一步、控制器将逻辑代码区的函数代码拷贝到代码区Code1,然后进行重定位。
第二步、获取代码头中Codeinit函数地址,然后执行Codeinitchange,将变化的函数指针表和函数地址表、新增变量进行初始化。
第三步、由于Code0、Code1起始地址不同,控制器逐个判断函数表中地址不在Code1地址范围,则根据从Code0中拷贝对应函数地址+函数长度的内容到Code1的末尾,并同步修改函数地址和函数长度。
第四步、将Code1标记为Code0、Code0标记为Code1。
第五步、根据任务描述信息中任务在函数表中索引得到函数地址,调用任务,完成无扰下装。
基于上述实施例,作为优选的实施例,将所述下装数据包发送至控制器加载之前,还包括:
建立DP主卡和所述控制器之间的握手连接,以确定需要重新下装的DP从站变化数据。
握手连接主要用于通知DP主卡需要重新下装的从站变化数据,进行无扰下装初始化准备。
此外,控制器下装之前需要建立双口RAM缓冲区与IEC数据区地址偏移对照表,SOE模块信息表,填写IO信息表。清空下装时,即第一次下装硬件配置信息时,控制器将解析得到协议参数、总线参数、从站参数等,通过双口RAM下装给DP主卡;如果配置信息发生变化,则执行增量下装,控制器将得到的从站状态信息、总线参数和从站参数下装给DP主卡。
下面对上述实施例中步骤S102中针对变量属于非直接寻址区时,采用的全编译和增量编译作具体说明:
对于全编译:
(1)在变量收集阶段按照变量组为单位收集所有除备份变量外的变量,存入allVarsMap和allVarsLList容器中;备份变量同样按照变量组为单位存入CurRVarMap中;
(2)偏移分配阶段:将前面收集的变量统一收集到一个List中,并按照变量对齐方式从小到大排序重新将变量进行排序,排序后遍历当前空闲块信息,找到可以分配的空间,对变量进行分配,同时更新空闲块的信息。全编译思路较为清晰。
对于增量编译:
(1)同样在变量收集阶段按照变量组为单位收集所有变量,与全编译完全相同:
(2)偏移分配阶段:
首先将空闲块信息更新到上次下装时的状态(未下装后即为初始状态),将上次下装的所有变量都设置为需要回收状态,随后进行偏移分配:
a)对于allVarsLList中的变量,其中包括除备份变量外的所有变量,按照对齐方式排序后,遍历每一个变量:
当变量偏移不为-1,上次编译中有该变量且本次未变化:
S201:判断变量是否下装过;若否,进入S202;若是,进入S203;
S202:根据该变量的偏移更新内存信息,并该变量需要进入changeVarList;
S203:判断找到的下装变量与已下装过的下装变量是否相同;若是,进入S204;若否,进入S204;
S204:分三种情况:
①当根据变量名在下装过变量列表中查找变量,发现与已下装过的下装变量相同(比较内容包括但不限定于区域、类型等)时,设置下装变量不被回收标志。
②变量初值不同时,设置下装变量不回收标志;该变量需要进入InitchangeList,更新初值。
③变量为新增变量时,加入AddMap中需要重新分配,并设置下装信息回收标志。
当上次编译中没有该变量或该变量发生变化,offset为-1;
S301:判断变量是否下装过;若否,进入S302;若是,进入S303;
S302:为新增变量,加入AddMap中需要重新分配,并置下装信息回收标志;
S303:分三种情况:
①该变量与上次下装的变量相同,根据下装变量回填该变量的偏移信息;设置下装变量不被回收标志。
②该变量与上次下装变量的初值不同,根据下装变量回填该变量的偏移信息;设置下装变量不被回收标志;初值发生变化,该变量偏移仍为变量表d中的信息,该变量需要进入InitchangeList。
③该变量为新增变量,加入AddMap中需要重新分配,并置下装信息回收标志。
b)对于CurRVarMap中的备份变量,首先也按照对齐方式进行排序后,遍历每一个变量:
当变量偏移不为-1,上次编译中有该变量且其关联的功能块变量未变化时,流程如下:
S401:判断变量是否下装过;若否,进入S402;若是,进入S403;
S402:根据该变量的偏移更新内存信息(该类变量不进入changVarList);
S403:判断该备份变量关联的功能块变量是否在AddMap中;若否,进入S404;若是,进入S407;
S404:判断与下装变量进行比较偏移是否相同;若是,进入S405;若否,进入S406;
S405:设置下装变量不被回收标志;
S406:更新该备份变量的内存使用情况,并设置下装变量回收标志。
S407:该变量为新增变量,加入AddMap中需要重新分配,并置下装信息回收标志。
当上次编译中没有该变量或该备份变量关联变量发生变化,offset为-1时,流程如下:
S501:判断变量是否下装过;若否,进入S502;若是,进入S503;
S502:该变量为新增变量,加入AddMap中需要重新分配,并置下装信息回收标志;
S503:判断该备份变量关联的功能块变量是否在AddMap中;若否,进入S504;若是,进入S505;
S504:根据上次下装变量信息回填变量偏移,并设置下装变量不回收标志
S505:该变量为新增变量,加入AddMap中需要重新分配,并置下装信息回收标志。
需要注意的是,a)、b)中未进入AddMap中的复杂变量还需要更新成员的偏移;
进入AddMap的变量,按照全编译的思路进行分配,并正确的更新内存使用信息。
下面对于过程版本的无扰下装进行说明。对于同一个工程,工程在经过多次编译下装后,会形成多个过程版本,每个过程版本对应一个过程版本号。当重新将过程版本下装到已有此工程的控制器中时,称之为过程版本下装。过程版本下装出现在同一个工程的不同版本之间,用户可以将打开的工程下装到比打开版本早或者晚的任何一个已下装此工程的控制器中。
过程版本的无扰下装能够有效减少对控制器中程序运行的扰动,同时会降低对现场控制器中运行工程的依赖性,即上位机工程可以在过程版本的情况下启动无扰下装,可以有效降低以往需要全下装导致的风险。
为实现过程版本无扰下装,组态软件在编译时.iec文件、tmp文件合并生成.ORG文件,并将类型及变量偏移分配信息生成.SDB文件。组态工程下装时,将.ORG、.SDB文件下装到控制器。如果是过程版本下装,则首先从控制器回读.ORG、.SDB文件,再根据.ORG文件回填.iec、.tmp文件,根据.SDB文件回填变量偏移,接着触发增量编译。编译通过后,触发无扰下装。
启动下装服务前需要在响应读取控制器ID服务中判断是否是过程版本以确定编译类型,具体判断过程如图8所示,图8为本申请实施例所提供的判断是否为过程版本的流程图。
若工程需要进行过程版本下装,那么在编译成功后,将本地工程的下装ID设置为控制器中当前运行的工程下装ID,如果编译失败则不进行设置。在线模块对于下装类型的判断不需要修改,仍然采用本地下装版本号与控制器中版本号进行比对的方式。
对于过程版本会进行无扰下装流程,还需要修改无扰下装中的响应读取控制器ID服务,具体流程如图9所示,图9为本申请实施例提供的读取控制器ID流程图,具体的,需要根据编译ID、下装ID和工程ID确定需要的下装过程。
本过程的目的是实现无论针对历史版本抑或是过程版本均可以实现无扰下装,保证不影响无扰下装的进行。
本申请还提供了一种计算机可读存储介质,其上存有计算机程序,该计算机程序被执行时可以实现上述实施例所提供的一种控制器的无扰下装方法的步骤。该存储介质可以包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
本申请还提供了一种终端,可以包括存储器和处理器,所述存储器中存有计算机程序,所述处理器调用所述存储器中的计算机程序时,可以实现上述实施例所提供的一种控制器的无扰下装方法的步骤。当然所述终端还可以包括各种网络接口,电源等组件。
说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例提供的系统而言,由于其与实施例提供的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。
还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
Claims (9)
1.一种控制器的无扰下装方法,其特征在于,包括:
在系统编译时,对DP设备进行第一偏移分配,生成下装数据包,所述下装数据包包括基本信息、参数信息、特殊数据、通道数据以及子模块数据;
为变量分配内存中对应的相对偏移地址,并生成变量表;
根据所述变量表和空闲块信息对变量进行第二偏移分配;
遍历POU以确认POU变化标志,并将变化的POU逻辑信息与重定位信息整合,将所述下装数据包发送至控制器加载,以启动下装流程;
所述为变量分配内存中对应的相对偏移地址,并生成变量表包括:
根据变量所属区域分配相对偏移地址;具体的,当所述变量属于直接寻址区时,所述变量对应的相对偏移地址为实际设定值;
当所述变量属于非直接寻址区时,所述变量对应的相对偏移地址采用全编译或增量编译进行分配。
2.根据权利要求1所述的无扰下装方法,其特征在于,将所述下装数据包发送至控制器加载之前,还包括:
建立DP主卡和所述控制器之间的握手连接,以确定需要重新下装的DP从站变化数据。
3.根据权利要求1所述的无扰下装方法,其特征在于,生成所述下装数据包时,还包括:
从主控的第一条链路开始为每个逻辑数据对象进行错误项的检查分析;其中,所述错误项由错误表确定。
4.根据权利要求1所述的无扰下装方法,其特征在于,遍历POU以确认POU变化标志包括:
对比历史POU文件和当前POU文件,确定POU变化标志;其中所述POU包括所述历史POU文件和所述当前POU文件;所述历史POU文件为上次下装时的工程文件。
5.根据权利要求4所述的无扰下装方法,其特征在于,对比历史POU文件和当前POU文件,确定POU变化标志包括:
加载所述历史POU文件中的iec文件;
对当前POU文件以预设单位进行编译,并生成第一目标代码;
将第一目标代码中与所述iec文件中同名预设单元的第二目标代码进行比较,确定各预设单元的变化内容;
根据所有所述预设单元的变化内容确定所述POU变化标志。
6.根据权利要求5所述的无扰下装方法,其特征在于,确定POU变化标志之后,还包括:
将所有所述第一目标代码保存至所述iec文件,生成辅助POU。
7.根据权利要求1所述的无扰下装方法,其特征在于,对DP设备进行第一偏移分配包括:
若存在下装记录且所述控制器的型号未替换,对所述控制器下各模块逐一判断是否需要保持偏移不变;
若是,更新空闲表;
根据所述空闲表对各所述模块进行第一偏移分配。
8.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-7任一项所述的无扰下装方法的步骤。
9.一种DP设备,其特征在于,包括存储器和处理器,所述存储器中存有计算机程序,所述处理器调用所述存储器中的计算机程序时实现如权利要求1-7任一项所述的无扰下装方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910243338.2A CN109933345B (zh) | 2019-03-28 | 2019-03-28 | 一种控制器的无扰下装方法及相关装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910243338.2A CN109933345B (zh) | 2019-03-28 | 2019-03-28 | 一种控制器的无扰下装方法及相关装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109933345A CN109933345A (zh) | 2019-06-25 |
CN109933345B true CN109933345B (zh) | 2022-05-31 |
Family
ID=66988481
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910243338.2A Active CN109933345B (zh) | 2019-03-28 | 2019-03-28 | 一种控制器的无扰下装方法及相关装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109933345B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110941179B (zh) * | 2019-12-09 | 2023-03-31 | 杭州和利时自动化有限公司 | 一种无扰下装方法、装置、设备及可读存储介质 |
CN112506547A (zh) * | 2020-12-16 | 2021-03-16 | 杭州和利时自动化有限公司 | 组态数据下装方法、装置、设备及可读存储介质 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4159534A (en) * | 1977-08-04 | 1979-06-26 | Honeywell Information Systems Inc. | Firmware/hardware system for testing interface logic of a data processing system |
US20140072441A1 (en) * | 2012-09-12 | 2014-03-13 | Michael J. Asheim | Load and noise mitigation system for wind turbine blades |
CN104865904B (zh) * | 2014-02-20 | 2017-08-04 | 南京南瑞继保电气有限公司 | 一种面向多周期运算任务的无扰组态方法 |
CN107861729B (zh) * | 2017-11-08 | 2021-08-24 | 中国信息安全测评中心 | 一种固件装载基址的定位方法、装置及电子设备 |
CN109448880B (zh) * | 2018-09-25 | 2021-02-23 | 北京广利核系统工程有限公司 | 核安全级热备冗余控制站无扰下装方法和系统 |
-
2019
- 2019-03-28 CN CN201910243338.2A patent/CN109933345B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN109933345A (zh) | 2019-06-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106095620B (zh) | 一种嵌入式Linux存储分区的开发方法 | |
CN109240730B (zh) | 一种单片机在线升级方法和系统 | |
CN107506219A (zh) | 一种基于Android系统的通用版本升级方法 | |
CN102713774A (zh) | 可编程控制器系统及开发系统 | |
CN109933345B (zh) | 一种控制器的无扰下装方法及相关装置 | |
EP4009162A1 (en) | Code change method and device | |
CN101211265A (zh) | 一种终端嵌入式系统的软件更新方法和装置 | |
CN103019787A (zh) | 函数调用关系确定方法、热补丁升级方法及装置 | |
CN113110853B (zh) | 一种组态数据在线下载方法、装置及电子设备 | |
CN104133699A (zh) | 设备系统软件升级方法与系统 | |
CN112732318A (zh) | 一种单片机固件升级方法 | |
CN113553089A (zh) | 一种代码增量发布更新方法及系统 | |
JP4329937B2 (ja) | パーシスタントメモリに書き込む際のエラーを検出する方法および装置 | |
US10929121B2 (en) | Method, device and related system for dynamically repairing application | |
WO2023169164A1 (zh) | 应用程序的修复方法、装置、计算机设备以及存储介质 | |
CN112069189A (zh) | 多层级映射表格的更新方法、系统、终端设备及存储介质 | |
US7353323B2 (en) | Method, system, and computer-readable medium for updating memory devices in a computer system | |
CN109144620B (zh) | 一种悬浮窗权限设置界面的跳转方法及装置 | |
CN102043853A (zh) | 一种存储数据的更新方法和装置 | |
US20170235619A1 (en) | Systems and methods for enabling dynamic calls via filtering, grouping, and substitution mechanisms | |
CN114489752A (zh) | 差异化升级方法、系统、存储器以及计算机设备 | |
CN110990018B (zh) | 一种嵌入式系统的编译方法及编译系统 | |
CN114416057A (zh) | 项目代码打包方法、装置、终端设备及存储介质 | |
KR102434126B1 (ko) | Plc 프로그램 처리 장치 | |
CN108008981B (zh) | 一种片上系统SoC中进行程序初始化的方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |