一种分散控制系统输入输出点产物文件生成方法和系统与流程

文档序号:27833894发布日期:2021-12-07 23:01阅读:97来源:国知局
一种分散控制系统输入输出点产物文件生成方法和系统与流程

1.本发明涉及分散控制系统,具体为一种分散控制系统输入输出点产物文件生成方法和系统。


背景技术:

2.分散控制系统(dcs)的io编译,一方面能够检查工程人员在组态过程中未发现的io配置错误,消除组态中存在的安全隐患,另一方面可以通过编译形成控制器所需的产物文件,控制器解析获得编译的产物文件,才能执行相应的逻辑代码。
3.但是,现有io编译形成的产物文件存在以下缺陷:产物文件占用内存过大,导致下装过程网络负荷大,容易丢包,控制器解析较为繁琐。


技术实现要素:

4.针对现有技术中存在的问题,本发明提供一种分散控制系统输入输出点产物文件生成方法和系统,所生成的产物文件占用内存空间小,在进行下装时网络负荷小、传输效率较高、不易丢包,减小了产物文件下载对控制器产生的扰动,且便于控制器解析。
5.本发明是通过以下技术方案来实现:一种分散控制系统输入输出点产物文件生成方法,包括:读取控制器中板卡上的信息;对组态工具上用于存储输入输出点产物文件的预分配内存进行分区处理,得到文件头信息区、变量区、指令码区以及页面信息区;根据板卡上的信息,进行编译,分别得到文件头信息、变量区信息、指令码及页面信息;所述文件头信息包括io分支类型、程序组织单元的编号、所属任务等级、io分支名称和io分支编号;所述变量区信息包括板卡的地址、板卡的版本号、板卡的通道数量、板卡的参数数量、板卡的通道和板卡的参数;所述页面信息包括io节点、io分支以及板卡的配置信息;将文件头信息、变量区信息、指令码及页面信息对应填入文件头信息区、变量区、指令码区以及页面信息区,得到输入输出点产物文件。
6.优选的,读取控制器中板卡上的信息,具体为:步骤1.1,获取控制器下的io节点列表,io节点数量为k,令节点的编号i=0;步骤1.2,访问io节点node[i],若访问不成功,且i<k,则i=i+1,重复执行步骤1.2;若访问不成功,且i=k,则结束读取板卡上的信息;若访问成功,则执行步骤1.3;步骤1.3,获取io节点node[i]下的所有io分支,io分支的数量为m,令io分支的编号j=0;步骤1.4,访问io分支node[i].branch[j],若访问不成功,且j<m,则j=j+1,重复执行步骤1.4;若访问不成功,且j=m,则执行步骤1.9;若访问成功,则执行步骤1.5;步骤1.5,获取io分支node[i].branch[j]下的所有板卡,板卡的数量为n,令板卡
的编号k=0;步骤1.6,访问io分支下的板卡node[i].branch[j].module[k],若访问不成功,且k<n,则k=k+1,重复执行步骤1.6;若访问不成功,且k=n,则执行步骤1.8;若访问成功,则读取板卡node[i].branch[j].module[k]的配置文件以及数据文件,并执行步骤1.7;步骤1.7,若k<n,则k=k+1,重复执行步骤1.6;否则执行步骤1.8;步骤1.8,若j<m,则j=j+1;重复执行步骤1.4;否则执行步骤1.9;步骤1.9,若i<k,则i=i+1;重复执行步骤1.2;否则结束读取板卡上的信息。
[0007]
优选的,根据板卡上的信息,进行编译,得到文件头信息,具体是:从板卡上的信息中获取io分支类型、程序组织单元的编号、所属任务等级、io分支名称和io分支编号,得到头文件信息;根据板卡上的信息,进行编译,得到指令码,具体是:根据板卡上的信息得到板卡的所有通道信息,根据通道信息得到每个通道的类型,根据每个通道的类型生成与各通道对应的指令码。
[0008]
优选的,根据板卡上的信息,进行编译,得到板卡的地址,具体是:根据板卡上的信息,得到板卡的io节点类型、io节点编号、io分支编号以及板卡编号;将io节点类型、io节点编号、io分支编号以及板卡编号按照从高到低的顺序,存储为4字节的整型量,得到板卡的地址。
[0009]
优选的,根据板卡上的信息,进行编译,得到板卡的通道数量和板卡的参数数量,具体是:板卡的通道数量包括板卡的输入通道数量和输出通道数量,根据板卡上的信息,获取板卡的输入通道数量、输出通道数量和板卡的参数数量;将变量区信息中的通道数量和板卡的参数数量填入变量区时,先将板卡的输入通道数量、板卡的输出通道数量和板卡的参数数量按照预设的压缩方法压缩到一个四字节的变量中,将压缩完的四字节变量转化为iec变量;再将通道数量和板卡的参数数量以iec变量的形式填入变量区;其中,预设的压缩方式为:变量的bit1

bit12保存板卡的输入通道数量,变量的bit13

bit22保存板卡的输出通道数量,变量的bit23

bit32保存板卡的参数数量。
[0010]
优选的,将变量区信息中板卡的参数填入变量区时,先将板卡的参数转换为iec变量,再将板卡的参数以 iec变量的形式填入变量区;其中,将板卡的参数通过如下方式转换为iec变量:a.将板卡的参数的类型转换为第一iec变量;b.将板卡的参数的值转换为第二iec变量;c. 将第一iec变量和第二iec变量组合为iec变量,为iec变量添加偏移地址,偏移地址是根据板卡的参数在新建时候的位置获取的。
[0011]
优选的,将变量区信息中板卡的通道填入变量区时,先将板卡的通道转换为iec变量,再将板卡的通道以 iec变量的形式填入变量区;其中,将板卡的通道通过如下方式转换为iec变量:遍历板卡中的所有通道,根据通道的类型,将通道中的字段转换为iec变量;所述通道的类型分为带报警的开关输入量、不带报警的开关输入量、带报警的开关输出量、不带报警的开关输出量、带报警的模拟输入量、不带报警的模拟输入量、带报警的模拟输出量和不带报警的模拟输出量。
[0012]
优选的,根据板卡上的信息,进行编译,得到页面信息,具体是:从板卡上的信息中获取所有io节点、io分支以及板卡的配置信息,得到页面信息。
[0013]
优选的,页面信息以xml的格式填入页面信息区。
[0014]
一种分散控制系统输入输出点产物文件生成系统,包括:读取模块,用于读取控制器中板卡上的信息;分区模块,对组态工具上用于存储输入输出点产物文件的预分配内存进行分区处理,具体划分为文件头信息区、变量区、指令码区以及页面信息区;编译模块,用于对板卡上的信息进行编译,以得到文件头信息、变量区信息、指令码及页面信息;所述文件头信息包括io分支类型、程序组织单元的编号、所属任务等级、io分支名称和io分支编号;所述变量区信息包括板卡的地址、板卡的版本号、板卡的通道数量、板卡的参数数量、板卡的通道和板卡的参数;所述页面信息包括io节点、io分支以及板卡的配置信息;存储模块,用于将文件头信息、变量区信息、指令码及页面信息对应填入文件头信息区、变量区、指令码区以及页面信息区,得到输入输出点产物文件。
[0015]
与现有技术相比,本发明具有以下有益的技术效果:本发明对产物文件的结构进行分段式设计,产物文件存储结构简单明确,所占的内存空间小,节省存储空间,在进行组态工具与控制器文件传输的时候传输效率较高,提高了组态工具与控制器之间的通信效率,且控制器在接收产物文件的过程中所需要的软硬件资源更少,减小了产物文件下载对控制器产生的扰动,提高了控制器系统的稳定性。同时,产物文件通过分段存储,便于控制器解析,使得控制器解析产物文件的效率更高。
[0016]
进一步的,板卡的参数类型、参数值均以iec变量形式存储,便于对控制器解析读取,控制器能够根据具体参数类型,分配内存,避免控制器的内存浪费。
[0017]
进一步的,将页面信息以xml格式进行存储,便于控制器解析,恢复io配置。
附图说明
[0018]
图1为本发明所述的分散控制系统输入输出点产物文件生成方法流程图。
具体实施方式
[0019]
下面结合具体的实施例对本发明做进一步的详细说明,所述是对本发明的解释而不是限定。
[0020]
如图1所示,本发明所述的分散控制系统输入输出点产物文件生成方法,包括:读取控制器中板卡上的信息;对组态工具上用于存储输入输出点产物文件的预分配内存进行分区处理,得到文件头信息区、变量区、指令码区以及页面信息区;根据板卡上的信息,进行编译,分别得到文件头信息、变量区信息、指令码及页面信息;所述文件头信息包括io分支类型、程序组织单元的编号、所属任务等级、io分支名称和io分支编号;所述变量区信息包括板卡的地址、板卡的版本号、板卡的通道数量、板卡的参数数量、板卡的通道和板卡的参数;所述页面信息包括io节点、io分支以及板卡的配置信息;
将文件头信息、变量区信息、指令码及页面信息对应填入文件头信息区、变量区、指令码区以及页面信息区,得到输入输出点产物文件。
[0021]
本发明所述的分散控制系统输入输出点产物文件生成方法,具体实施操作过程为:步骤1,将控制器下板卡上的信息(io数据)读取至组态工具的内存中,进行存储;在组态工具中,板卡的组织形式为,n块板卡可组成一个分支,m个分支可组成一个节点,单个控制器中的节点数为k。
[0022]
步骤1.1,获取控制器下的io节点列表,假设io节点数量为k,令节点的编号i=0;步骤1.2,访问io节点node[i],若访问不成功,且i<k,则i=i+1,重复执行步骤1.2的操作;若访问不成功,且i=k,则跳转至步骤1.10;若访问成功,则执行步骤1.3的操作;步骤1.3,获取io节点node[i]下的所有io分支,假设io分支的数量为m,令io分支的编号j=0;步骤1.4,访问io分支node[i].branch[j],若访问不成功,且j<m,则j=j+1,重复执行步骤1.4的操作;若访问不成功,且j=m,则跳转至步骤1.9;若访问成功,则执行步骤1.5的操作;步骤1.5,获取io分支node[i].branch[j]下的所有板卡,假设板卡的数量为n,令板卡的编号k=0;步骤1.6,访问io分支下的板卡node[i].branch[j].module[k],若访问不成功,且k<n,则k=k+1,重复执行步骤1.6的操作;若访问不成功,且k=n,则跳转至步骤1.8;若访问成功,则读取板卡node[i].branch[j].module[k]的配置文件以及数据文件,并执行步骤1.7;步骤1.7,若k<n,则k=k+1,重复执行步骤1.6的操作;否则跳转至步骤1.8;步骤1.8,若j<m,则j=j+1;重复执行步骤1.4的操作;否则跳转至步骤1.9;步骤1.9,若i<k,则i=i+1;重复执行步骤1.2的操作;否则跳转至步骤1.10;步骤1.10,经过步骤1.1

1.9,已经完成了所有板卡的数据文件与配置文件的读取。
[0023]
步骤2,根据读取的板卡上的io数据,生成io编译的产物文件。将产物文件中的内容以分段的形式进行存储,具体分为文件头信息、变量区信息、指令码和页面信息;对组态工具上用于存储输入输出点产物文件的预分配内存进行分区处理,具体划分为文件头信息区、变量区、指令码区以及页面信息区,分别用于存储文件头信息、变量区信息、指令码和页面信息。具体过程为:步骤2.1,生成产物文件的文件头信息,文件头信息包含io分支类型、程序组织单元的编号、所属任务等级以及io分支名称和io分支编号。具体是从组态工具的内存当中获取相应的io分支类型、程序组织单元编号、所属任务等级以及io分支名称和io分支编号作为产物文件的头文件信息存储在文件头信息区。所述的程序组织单元(pou)的结构包括文件头信息区、变量区、指令码区和页面信息区,分别存储文件头信息、变量区信息、指令码和页面信息。即产物文件以pou格式存储,文件头信息中的程序组织单元编号即产物文件对应的程序组织单元的编号。
[0024]
步骤2.2,生成产物文件的变量区信息,变量区信息包括板卡的地址、板卡的版本号、板卡的通道数量、板卡的参数数量、板卡的通道和板卡的参数,板卡的版本号、板卡的通
道数量、板卡的参数数量及板卡的通道和板卡的参数均以iec变量的形式存储在变量区。
[0025]
步骤2.2.1,生成板卡的地址信息:根据板卡上的信息,得到板卡的io节点类型、io节点编号、io分支编号以及板卡编号;将io节点类型、io节点编号、io分支编号以及板卡编号按照从高到低的顺序,存储为4字节的整型量,得到板卡的地址。将板卡的地址信息写入用于存储产物文件的预分配内存的变量区。
[0026]
步骤2.2.2,从内存中获取板卡的版本号,将板卡的版本号转化为iec变量并添加至用于存储产物文件的预分配内存的变量区。
[0027]
步骤2.2.3,板卡的通道数量包括板卡的输入通道数量和输出通道数量,获取板卡的输入通道数量、输出通道数量以及板卡的参数数量,将板卡的输入通道数量、板卡的输出通道数量以及板卡的参数数量压缩到一个四字节的变量中,压缩方式为:变量的bit1

bit12保存板卡的输入通道数量,变量的bit13

bit22保存板卡的输出通道数量,变量的bit23

bit32保存板卡的参数数量。将压缩完的四字节变量转化为iec变量写入用于存储产物文件的预分配内存的变量区。
[0028]
步骤2.2.4,将板卡的参数、板卡的输入通道与板卡的输出通道分别处理为iec变量,并写入到用于存储产物文件的预分配内存的变量区。
[0029]
(1)将板卡的参数处理为iec变量(iec变量主要的作用适用于记录板卡通道与板卡参数的值以及参数类型),处理方法如下所示:a.将板卡的参数的类型转换为第一iec变量;b.将板卡的参数的值转换为第二iec变量;c.将第一iec变量和第二iec变量组合为iec变量,为iec变量添加偏移地址,偏移地址是根据板卡的参数在新建时候的位置获取的。
[0030]
将处理后的iec变量保存在板卡的iec变量列表中。
[0031]
(2)处理完板卡的参数后,继续处理板卡的输入通道与输出通道。遍历板卡中的所有通道,将通道分为带报警的开关输入量、不带报警的开关输入量、带报警的开关输出量、不带报警的开关输出量、带报警的模拟输入量、不带报警的模拟输入量、带报警的模拟输出量和不带报警的模拟输出量几种不同的类型进行保存。根据通道的类型,将相应的通道中的字段处理为iec变量。将板卡的iec变量保存在板卡iec变量列表中。
[0032]
(3)将板卡的iec变量写入到产物文件的变量区。
[0033]
步骤2.3,根据板卡的类型,创建指令码(用于控制器解析及运行相应的代码),存储在板卡的指令码列表中。遍历板卡的所有通道,根据每个通道的类型生成指令码,且存储在板卡的指令码列表中。将指令码列表中的所有指令码写入用于存储产物文件的预分配内存的指令码区。
[0034]
步骤2.4,将组态工具的内存中的所有io节点、io分支以及板卡的配置信息以xml的格式保存在用于存储产物文件的预分配内存的页面信息区。
[0035]
将文件头信息、变量区信息、指令码及页面信息对应填入文件头信息区、变量区、指令码区以及页面信息区,即得到产物文件。经过上述步骤可生成完整的io点编译产物文件。
[0036]
下述为本发明的装置实施例,可以用于执行本发明方法实施例。对于装置实施例中未纰漏的细节,请参照本发明方法实施例。
[0037]
本发明一个实施例中,提供一种分散控制系统输入输出点产物文件生成系统,能够用于实现上述的分散控制系统输入输出点产物文件生成方法。
[0038]
具体的,该分散控制系统输入输出点产物文件生成系统包括:读取模块,用于读取控制器中板卡上的信息;分区模块,对组态工具上用于存储输入输出点产物文件的预分配内存进行分区处理,具体划分为文件头信息区、变量区、指令码区以及页面信息区;编译模块,用于对存储在组态工具内存中的板卡上的信息进行编译,以得到文件头信息、变量区信息、指令码及页面信息;所述文件头信息包括io分支类型、程序组织单元的编号、所属任务等级、io分支名称和io分支编号;所述变量区信息包括板卡的地址、板卡的版本号、板卡的通道数量、板卡的参数数量、板卡的通道和板卡的参数;所述页面信息包括io节点、io分支以及板卡的配置信息;存储模块,用于将文件头信息、变量区信息、指令码及页面信息对应填入文件头信息区、变量区、指令码区以及页面信息区,得到输入输出点产物文件。
[0039]
本发明再一个实施例中,提供了一种计算机设备,该计算机设备包括处理器以及存储器,所述存储器用于存储计算机程序,所述计算机程序包括程序指令,所述处理器用于执行所述计算机存储介质存储的程序指令。处理器可能是中央处理单元(central processing unit,cpu),还可以是其他通用处理器、数字信号处理器(digital signal processor、dsp)、专用集成电路(application specific integrated circuit,asic)、现场可编程门阵列(field

programmable gatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,其是终端的计算核心以及控制核心,其适于实现一条或一条以上指令,具体适于加载并执行计算机存储介质内一条或一条以上指令从而实现相应方法流程或相应功能;本发明实施例所述的处理器可以用于分散控制系统输入输出点产物文件生成方法的操作。
[0040]
本发明再一个实施例中,本发明还提供了一种存储介质,具体为计算机可读存储介质(memory),所述计算机可读存储介质是计算机设备中的记忆设备,用于存放程序和数据。可以理解的是,此处的计算机可读存储介质既可以包括计算机设备中的内置存储介质,当然也可以包括计算机设备所支持的扩展存储介质。计算机可读存储介质提供存储空间,该存储空间存储了终端的操作系统。并且,在该存储空间中还存放了适于被处理器加载并执行的一条或一条以上的指令,这些指令可以是一个或一个以上的计算机程序(包括程序代码)。需要说明的是,此处的计算机可读存储介质可以是高速ram存储器,也可以是非不稳定的存储器(non

volatile memory),例如至少一个磁盘存储器。可由处理器加载并执行计算机可读存储介质中存放的一条或一条以上指令,以实现上述实施例中有关分散控制系统输入输出点产物文件生成方法的相应步骤。
[0041]
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd

rom、光学存储器等)上实施的计算机程序产品的形式。
[0042]
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程
图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0043]
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0044]
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0045]
最后应当说明的是:以上实施例仅用以说明本发明的技术方案而非对其限制,尽管参照上述实施例对本发明进行了详细的说明,所属领域的普通技术人员应当理解:依然可以对本发明的具体实施方式进行修改或者等同替换,而未脱离本发明精神和范围的任何修改或者等同替换,其均应涵盖在本发明的权利要求保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1