一种基于段表的PLC可运行文件存储解析方法及存储系统转让专利

申请号 : CN201510927560.6

文献号 : CN105511815B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 郭佳贡春燕闵曉霜王强

申请人 : 中国电子信息产业集团有限公司第六研究所

摘要 :

本发明公开了一种基于段表的PLC可运行文件存储解析方法及存储系统,所述存储系统包括:基于SPARC架构的CPU、GPIO、PROM、SDRAM、SRAM、DSU、UART、AD、TIMER;所述存储解析方法包括以下步骤:(1)分别用四个段来分别记录代码信息、外部IO配置信息、外部库信息和任务信息;(2)用四个段表来记录所述代码信息、外部IO配置信息、外部库信息和任务信息的对应段的位置、长度和段个数的信息;(3)用一个文件头来描述整个文件和实现CRC校验;(4)文件的解析;本发明的优点是在不改变PLC结构和不影响使用的前提下,提高了数据传输和存储的安全性,同时不影响文件的解析速度,因此,本发明具有较强的实用价值和现实意义。

权利要求 :

1.一种基于段表的PLC可运行文件存储解析方法,其特征在于,包括以下步骤:

(1)基于段表的PLC可运行文件需要包含程序运行所需的代码信息、外部IO配置信息、外部库信息和任务信息,分别用四个段来分别记录代码信息、外部IO配置信息、外部库信息和任务信息;

(2)为了方便PLC解析文件,用四个段表来记录所述代码信息、外部IO配置信息、外部库信息和任务信息的对应段的位置、长度和段个数的信息;

(3)为了实现上下位机通信,用一个文件头来描述整个文件和实现CRC;

(4)文件的解析;在基于段表的PLC可运行文件NBP文件解析时,首先进行CRC校验以确定文件的完整性;如果确认文件没问题,则记录文件版本号和工程ID,并解析出所述代码信息、外部IO配置信息、外部库信息和任务信息的对应段的个数,在确认所述代码信息、外部IO配置信息、外部库信息和任务信息的对应段的个数之后,开始解析对应个数的Section Table,通过解析Section Table来确定对应Section起始位置和大小并解析。

2.根据权利要求1所述的一种基于段表的PLC可运行文件存储解析方法,其特征在于,所述步骤(3)中,为了便于解析时确定段信息,用一个字符串表用来描述所述代码信息、外部IO配置信息、外部库信息和任务信息的对应段的信息;字符串表放在NBP文件的最后位置,其偏移地址记录在NBP文件头中,所述NBP文件即PLC可执行文件。

3.根据权利要求1所述的一种基于段表的PLC可运行文件存储解析方法,其特征在于,所述步骤(4)中,对于Program Section,首先通过解析Program Section Table来确定段ID、名称、段在文件起始位置和段大小的信息,找到Program Section的位置后开始进行解析,将machine code复制到Code区,之后注册初始化函数;至此完成Program Section的解析。

说明书 :

一种基于段表的PLC可运行文件存储解析方法及存储系统

技术领域

[0001] 本发明涉及一种基于段表的PLC可运行文件存储解析方法及存储系统,属于工业控制PLC技术领域。

背景技术

[0002] 目前,现代工业企业越来越多的应用PLC实现生产过程控制。控制程序需要在上位机中进行编程,并将程序下装到PLC中运行。因此需要一种存储系统及相应的存储方法来存放PLC的可运行文件。
[0003] 目前的传统的PLC可运行文件基本可以分为两类:解释型PLC可运行文件和编译型PLC可运行文件。解释型PLC可运行文件的原理是采用解析语句来存储用户的程序,在运行时由解释器解析语句表。这种方式运行速度相对较慢,而且文件内容易被人破解。编译型PLC可运行文件内存储的是下位机能识别的二进制机器码,由于不需要解释器,而且由于不同平台机器码差别很大。因此,目前,上述的传统的技术存在着保密性差、系统不安全的缺点。
[0004] 例如,申请号为CN201210249897.2的专利公开了一种基于固态存储介质的存储系统及方法,所述存储系统中包括一种冷热数据的识别方法,该识别方法用以识别逻辑页面所处的状态,所处的状态至少包括冷数据和热数据两种状态;所述识别方法包括:如果逻辑页面被主机host在设定的时间内进行一次或连续若干次的更新,则判断该逻辑页面处于热数据状态;反之,如果该逻辑页面由于长时间未被主机host更新,而是垃圾回收和磨损均衡单元的作用、使得该逻辑页面存储物理地址产生一次或连续若干次更新,则判断该逻辑页面处于冷数据状态。
[0005] 例如,申请号为CN201410812572.X的专利公开了一种4U高密度存储系统供电设备及方法,包括3+1冗余电源模块、4U机箱空间以及计算节点;其中,所述计算节点的个数为8个,所述计算节点放置在4U机箱空间中,所述3+1冗余电源模块与计算节点电连接;所述3+1冗余电源模块包括PSU电源模块、计算中板本发明4U高密度存储系统供电设备及方法可提高系统整体供电效率。
[0006] 例如,申请号为CN201410247820.0的专利公开了一种网络存储系统性能监测方法,该方法模拟实际文件读写并监测此过程中存储系统的CPU、内存、网络使用情况及实际的io读写速度,最终以曲线图的形式呈献给用户。方法中有创建大文件、模拟写文件、模拟读文件及曲线图下载功能,有存储系统CPU使用率、内存使用量、网络使用率、磁盘读写速度曲线图显示。
[0007] 综上所述,目前,上述的传统的技术存在着保密性差、系统不安全的缺点。

发明内容

[0008] 本发明的目的在于提供一种能够克服上述技术问题的基于段表的PLC可运行文件存储解析方法及存储系统。本发明中所用的PLC文件存储类型为编译型PLC可运行文件,本发明在提高运行速度的同时也增加了文件的保密性,使系统更安全。
[0009] 本发明的基于段表的PLC可运行文件存储系统包括:基于SPARC(可扩充处理器架构,Scalable Processor ARChitecture)架构的CPU、GPIO、PROM、SDRAM、SRAM、DSU、UART、AD、TIMER;所述基于SPARC架构的CPU分别与PROM、SDRAM、SRAM、DSU、UART、AD、TIMER、I2C总线、1553B总线连接。
[0010] 所述1553B总线是MIL-STD-1553总线的简称,MIL-STD-1553总线是飞机内部时分制命令/响应式多路复用数据总线。所述1553B总线标准是20世纪70年代由美国公布的一种串行多路数据总线标准。中国于1987年颁布了相应的军标。所述1553B总线是一种集中式的时分串行总线,其主要特点是分布处理、集中控制和实时响应。其可靠性机制包括防错功能、容错功能、错误的检测和定位、错误的隔离、错误的校正、系统监控及系统恢复功能。采用双冗余系统,有两个传输通道,保证了良好的容错性和故障隔离。目前世界上作为军用标准和专门的舰用战术数据总线有许多种,但使用的最多的还是当推美国的MIL-STD-1553B。1553B总线的传输介质有同轴电缆、屏蔽双绞线、光缆,通过变压器藕合或直接藕合方式把终端藕合到总线上去。这种数据总线的传输速率、传输距离、远程终端数,能较好的满足各类中小型舰艇以及潜艇系统通信的要求,故应用十分普及。
[0011] 所述PLC为可编程控制器;
[0012] 所述GPIO为通用I/O端(General-Purpose Input/Output Ports);
[0013] 所述PROM为可编程只读存储器(Programmable Red-Only Memory),所述PROM用于存储操作系统和NBP文件;
[0014] 所述SDRAM为同步动态随机存储器(Synchronous Dynamic Random Access Memory);
[0015] 所述SRAM为静态随机存取存储器(Static Random Access Memory);所述SRAM作为程序运行的内存;
[0016] 所述TIMER为定时器;
[0017] 所述UART为异步串行通信口(Universal Asynchronous  Receiver and Transmitter);所述UART用于上下位机通信;
[0018] 所述DSU(Debug Support Unit)为调试支持单元;
[0019] 所述AD为AD转换器。
[0020] 本发明的基于段表的PLC可运行文件存储系统在基于段表的PLC可运行文件在上位机生成之后,通过串口或者网口下载到PLC进行解析,解析之后的文件需要保存到FLASH以供下次断电重启之后加载运行。在安全PLC嵌入式实时运行系统SCRS(Safety&Security Control Running System)启动之后,SCRS程序会到FLASH相应位置读取基于段表的PLC可运行文件NBP文件到RAM指定位置并进行解析。文件解析之前会在RAM中申请两块区域分别作为数据区和代码区。其中,数据区又分为四部分:I区、Q区、G区和DATA扩展区。I区用于存储传感器扫描的输入信息,Q区用于存储需要输出到执行器的信息,G区用于内部计算,DATA扩展区用于存储外部库信息;代码区用于存储上位机编译好的二进制机器码。
[0021] 本发明的基于段表的PLC可运行文件存储解析方法包括以下步骤:
[0022] (1)基于段表的PLC可运行文件需要包含程序运行所需的代码信息、外部IO配置信息、外部库信息和任务信息,分别用四个段来分别记录代码信息、外部IO配置信息、外部库信息和任务信息;
[0023] (2)为了方便PLC解析文件,用四个段表来记录所述代码信息、外部IO配置信息、外部库信息和任务信息的对应段的位置、长度和段个数的信息;
[0024] (3)为了实现上下位机通信,用一个文件头来描述整个文件和实现CRC(CyclicRedundancyCheck)即循环冗余校验码校验;
[0025] 为了便于解析时确定段信息,用一个字符串表用来描述所述代码信息、外部IO配置信息、外部库信息和任务信息的对应段的信息;字符串表放在NBP文件的最后位置,其偏移地址记录在NBP文件头中,所述NBP文件即PLC可执行文件(NCSE binary project file);
[0026] (4)文件的解析;在NBP文件解析时,首先进行CRC校验以确定文件的完整性;如果确认文件没问题,则记录文件版本号和工程ID,并解析出所述代码信息、外部IO配置信息、外部库信息和任务信息的对应段的个数,在确认所述代码信息、外部IO配置信息、外部库信息和任务信息的对应段的个数之后,开始解析对应个数的Section Table,通过解析Section Table来确定对应Section起始位置和大小并解析。
[0027] 对于Program Section,首先通过解析Program Section Table来确定段ID、名称、段在文件起始位置和段大小的信息,找到Program Section的位置后开始进行解析,将machine code复制到Code区,之后注册初始化函数;至此完成Program Section的解析。所述Task Section、Config Section和External Function Section这三个段的解析过程与Program Section段相似。
[0028] 本发明的优点是在不改变PLC结构和不影响使用的前提下,提高了数据传输和存储的安全性,同时不影响文件的解析速度,因此,本发明具有较强的实用价值和现实意义。

附图说明

[0029] 图1是本发明所述一种基于段表的PLC可运行文件存储系统的结构示意图;
[0030] 图2是本发明所述一种基于段表的PLC可运行文件存储系统的PLC地址分配方式示意图;
[0031] 图3是本发明所述一种基于段表的PLC可运行文件存储系统的数据区和代码区结构示意图;
[0032] 图4是本发明所述一种基于段表的PLC可运行文件存储系统的NBP文件结构示意图;
[0033] 图5是本发明所述一种基于段表的PLC可运行文件存储系统的NBP文件解析流程图;
[0034] 图6是本发明所述一种基于段表的PLC可运行文件存储系统的Program段解析流程示意图;
[0035] 图7是本发明所述一种基于段表的PLC可运行文件存储系统的Task段解析流程示意图;
[0036] 图8是本发明所述一种基于段表的PLC可运行文件存储系统的Config段解析流程示意图;
[0037] 图9是本发明所述一种基于段表的PLC可运行文件存储系统的External Function段解析流程示意图。

具体实施方式

[0038] 下面结合附图对本发明的实施方式进行详细描述。如图1所示,本发明的基于段表的PLC可运行文件存储系统包括:基于SPARC(可扩充处理器架构,Scalable Processor ARChitecture)架构的CPU、GPIO、PROM、SDRAM、SRAM、DSU、UART、AD、TIMER、;所述基于SPARC架构的CPU分别与PROM、SDRAM、SRAM、DSU、UART、AD、TIMER、I2C总线、1553B总线连接。所述1553B总线是MIL-STD-1553总线的简称,MIL-STD-1553总线是飞机内部时分制命令/响应式多路复用数据总线。所述PLC为可编程控制器;所述GPIO为通用I/O端(General-Purpose Input/Output Ports);所述PROM为可编程只读存储器(Programmable Red-Only Memory),所述PROM用于存储操作系统和NBP文件;所述SDRAM为同步动态随机存储器(Synchronous Dynamic Random Access Memory);所述SRAM为静态随机存取存储器(Static Random Access Memory);所述SRAM作为程序运行的内存;所述TIMER为定时器;所述UART为异步串行通信口(Universal Asynchronous Receiver and Transmitter);所述UART用于上下位机通信;所述DSU为调试支持单元;所述AD为AD转换器。
[0039] 本发明的基于段表的PLC可运行文件存储解析方法包括以下步骤:
[0040] (1)基于段表的PLC可运行文件需要包含程序运行所需的代码信息、外部IO配置信息、外部库信息和任务信息,分别用四个段来分别记录代码信息、外部IO配置信息、外部库信息和任务信息;
[0041] (2)为了方便PLC解析文件,用四个段表来记录所述代码信息、外部IO配置信息、外部库信息和任务信息的对应段的位置、长度和段个数的信息;
[0042] (3)为了实现上下位机通信,用一个文件头来描述整个文件和实现CRC(CyclicRedundancyCheck)即循环冗余校验码校验;
[0043] 为了便于解析时确定段信息,用一个字符串表用来描述所述代码信息、外部IO配置信息、外部库信息和任务信息的对应段的信息;字符串表放在NBP文件的最后位置,其偏移地址记录在NBP文件头中,所述NBP文件即PLC可执行文件(NCSE binary project file);
[0044] (4)文件的解析;在NBP文件解析时,首先进行CRC校验以确定文件的完整性;如果确认文件没问题,则记录文件版本号和工程ID,并解析出所述代码信息、外部IO配置信息、外部库信息和任务信息的对应段的个数,在确认所述代码信息、外部IO配置信息、外部库信息和任务信息的对应段的个数之后,开始解析对应个数的Section Table,通过解析Section Table来确定对应Section起始位置和大小并解析。
[0045] 对于Program Section,首先通过解析Program Section Table来确定段ID、名称、段在文件起始位置和段大小的信息,找到Program Section的位置后开始进行解析,将machine code复制到Code区,之后注册初始化函数;至此完成Program Section的解析。所述Task Section、Config Section和External Function Section这三个段的解析过程与Program Section段相似。
[0046] 本发明的基于段表的PLC可运行文件存储系统采用统一编址的方式来对外部设备分配地址范围。如图2所示,由于本发明的基于段表的PLC可运行文件存储系统具有32条地址线,所以能寻址的最大范围是4GB,其中,前512MB空间被分配给PROM,之后的512MB空间被分配给IO设备,之后的1G空间被分配给SRAM和SDRAM,最后的空间被映射到CPU寄存器地址。
[0047] 当PLC接收到NBP文件后,会保存到PROM的某一位置来存储,以便下次断电启动时能够再次加载。加载NBP文件之前首先会在SRAM中申请两块区域分别作为数据区和代码区,如图3所示。其中数据区又可以分为四部分:I区、Q区、G区和DATA扩展区。I区用于存储传感器扫描的输入信息,Q区用于存储需要输出到执行器的信息,G区用于内部计算,DATA扩展区用于存储外部库信息;代码区用于存储上位机编译好的二进制机器码。
[0048] 本发明的基于段表的PLC可运行文件存储方法如图4所示,NBP文件分为四大部分:NbpHeader、Section Table、Sections和String Table,其中NbpHeader记录了文件的版本信息、工程ID段个数、时间戳、String Table偏移地址和CRC校验的信息。Section Table主要用于记录对应段的起始地址、大小以及段名称,总共分为四类Section Table:Program Section Table、Task Section Table、Config Section Table和External Function Section Table。
[0049] Sections用于存储各段的详细信息。Program Section记录了上位机编译好的二进制代码、machine code的起始地址以及最大POU个数和初始化函数的入口信息。Task Section记录了组态软件中设置的任务个数、任务名称、优先级、任务周期、看门狗时间和精度、POU个数和入口地址信息。Config Section记录了组态软件中设置的IO外设信息,包括模块类型、节点序号、输入输出区的大小和偏移。External Function Section保存了用户编写的PLC程序中用到的外部库函数名称和FP索引。String Table用于存储各段的名称的字符,以便解析时查找。String Table的起始地址记录在NbpHeader中。
[0050] 本发明的基于段表的PLC可运行文件存储解析方法的解析流程如图5所示。在下位机收到NBP文件后首先进行CRC校验以确认文件的完整性。如果确认文件没问题,则记录文件版本号和工程ID,并解析出段个数。然后按照顺序分别解析各个段。首先解析的是Program Section。由于Program Section的起始地址和大小都记录在Program Section Table中,所以要先找到Program Section Table确定Program Section相对NBP文件的偏移地址和大小,然后找到Program Section并解析;NBP文件中需要解析的段共有四个,分别是Program Section、Task Section、Config Section和External Function Section。所述Task Section、Config Section和External Function Section这三个段的解析过程与Program Section段相似。
[0051] 对Program Section的解析如图6所示,通过解析Program Section Table来确定Program Section相对NBP文件的偏移地址和大小,之后开始对Program Header进行解析,Program Header存储了Machine Code的长度和初始化函数的入口地址,需要将Machine Code复制到RAM中申请好的Code区,将初始化函数入口地址复制到Data扩展区相应地方。
[0052] 对Task Section的解析如图7所示,其过程与解析Program Section类似。首先解析Task Section Table获取Task Section的起始地址和大小,然后找到Task Section。Task Section记录了组态软件中设置的任务名称、优先级、看门狗时间和精度、本任务用的POU个数和入口地址。解析之后将POU入口地址复制到Data扩展区指定位置。
[0053] 对Config Section的解析如图8所示。首先解析Config Section Table获取Config Header的起始地址和大小并确定Device Info个数。在解析出Device Info中的模块类型、节点序号、输入输出区大小和偏移之后,将这些信息传递给IO配置函数进行外设配置。
[0054] 对External Function Section的解析如图9所示。首先解析External Function Section Table获取External Function的起始地址和大小并定位。然后解析出外部库函数名和FP索引,并将外部库函数入口地址复制到Data扩展区指定位置。
[0055] 以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明公开的范围内,能够轻易想到的变化或替换,都应涵盖在本发明权利要求的保护范围内。