通用的PLC数据处理方法及装置与流程

文档序号:33558975发布日期:2023-03-22 13:19阅读:232来源:国知局
通用的PLC数据处理方法及装置与流程
通用的plc数据处理方法及装置
技术领域
1.本发明涉及数据信息的传输技术领域,尤其涉及一种通用的plc数据处理方法及装置。


背景技术:

2.plc(programmablelogiccontroller,可编程逻辑控制器),因其扩展简单、性能可靠而成为工业生产中广泛使用的控制装备。plc采集的大量传感器数据、同时运行中还会产生很多过程数据极具存储和分析价值。因此,通过上位机获取plc中的数据,是构建实时监控、人机交互、数据存储与分析等系统以进一步提升生产或管理质量的前提。
3.通常,从plc采集传输数据有三种途径:
4.第一种是采用plc厂商提供的上位机软件,这类软件使用plc的私有协议获取数据,并采用私有数据格式存储。然而,plc厂家提供的上位机软件一般是商业版权,费用较高,通常只能与自家plc进行通讯,且难以与其它软件进行集成从而达成数据交换的目的。
5.第二种是搭建opc(oleforprocesscontrol,对象链接与嵌入的过程控制)服务器并开发上位机软件,采用opc协议和相关接口函数获取数据。同样的,opc的服务器端一般也是商业版权、且编程接口复杂、只能部署于运行windows系统的装置中,限制较多。
6.第三种是采用自定义通讯传输协议的方法,上位机和plc二者同时遵循协议约定进行数据传输。其不足之处在于需要人为参与协议的商议,规定数据分组、传输顺序、指定数据名称和说明每个数据长度等,主观因素较多、数据定义与通讯传输协议耦合、理解较难导致沟通成本较高且维护较复杂。
7.而且,通过自定义协议实现上位机与plc进行数据交换,并无固定的标准与格式。现有的方法通常是编写一个文本型的通讯传输协议文件,该文本规定通讯传输使用的数据帧的具体字段与格式,通讯双方依照传输格式进行通讯。其中数据帧的“数据域”字段一般代表该帧中传输的plc数据,由plc进行填充,上位机接收到以后按照协议约定进行解码和存储。因此,在该通讯传输协议的文本中,很大一部分内容是针对“数据域”中plc的数据进行命名、分组、规定顺序、指定长度等的文字描述,其中分组、规定顺序主观随意性很大。这种在协议内描述数据的方法导致通讯传输协议臃肿,维护困难,上位机无法自动对该通讯传输协议文本进行处理,开发与调试效率很低。


技术实现要素:

8.本发明目的在于公开一种通用的plc数据处理方法及装置,以将单一的通讯传输协议拆分为通讯传输协议和能供上位机自动且通用化处理的结构化的数据描述文件两部分,实现开发与调试效率提升。
9.为达上述目的,本发明公开的通用的plc数据处理方法包括:
10.步骤s100、上位机根据用户所创建的采集传输规则表配置数据结构缓冲区;
11.步骤s200、上位机导出plc符号表,从导出的plc符号表中筛选出与所述采集传输
规则表的变量类型相对应的记录,并转化为结构变量后分组存储于相对应的数据结构缓冲区中,并创建通用的数据描述文件;所述数据描述文件用于描述与数据域相关联的结构变量的数量、各个结构变量的名称、长度和偏移量信息及在数据域中的排序信息并独立于通讯传输协议之外;
12.步骤s300、plc按照数据描述文件中每个结构变量的顺序,将对应变量的内容依次放入一个地址连续的缓冲区中并在每个扫描周期内更新缓冲区内容,并在收到上位机的读取命令后,plc按照通讯传输协议的格式将缓冲区的内容通过数据帧上传;其中,所述通讯传输协议中省略已由所述数据描述文件所决定的对plc数据的说明;
13.步骤s400、上位机通过协议解析和处理,将数据帧中的数据域提取出来,当成二进制字节流暂存;然后根据所述数据描述文件自动完成暂存字节流的数据提取和解析以获得plc所上传数据中与各所述结构变量名称所对应的二进制值。
14.优选地,生成所述数据描述文件的具体过程包括:
15.s4:上位机采用标准通用标记语言格式新生成一个结构化数据描述文件,首先生成“数据域”根节点元素,并在“数据域”根节点元素中新建一个“总数据个数”子节点元素;
16.s5:上位机按行读取plc符号表,逐一判断各行“地址”字段内容的plc变量类型,若类型不在所述采集传输规则表内则丢弃相应行,否则提取相应行的信息保存于结构变量的对应成员中,并将结构变量附加存储于与之对应的数据结构缓冲区中;并在最后一行读取完成后,将数据描述文件中“总数据个数”元素的属性的值更新为有效行数;
17.s6:上位机对每个数据结构缓冲区的结构变量按照成员保存的plc变量的地址升序进行排序,形成排序后的数据结构缓冲区;
18.s7:上位机按照所述采集传输规则表的顺序,将第一个缓冲区中排序后的结构变量依次取出,为每个结构变量在描述文件中新建一个“传输变量”子节点元素,该子节点元素的子元素至少包含有“名称”、“长度”和“偏移量”,然后将该子节点元素写入数据描述文件“数据域”根节点下;
19.s8:上位机按照s7所述操作依次完成剩余所有缓冲区结构变量的取出和“传输变量”子节点元素的生成与写入,形成最后的数据描述文件。
20.为达上述目的,本发明还公开一种通用的plc数据处理装置,该装置具体为上位机,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述的方法中上位机所对应的系列步骤。
21.优选地,所述计算机程序内的功能模块包括:
22.控制处理模块:是上位机软件的主控模块,用于发起相对应的操作并完成软件的逻辑控制、通讯传输控制及数据处理;
23.规则数据库模块:由传输规则数据库和对应的操作接口函数构成,传输规则数据库包含采集传输规则表,每张采集传输规则表与某个具体型号的plc进行对应;
24.符号表处理模块:用于完成对plc符号表的处理,依次提取符号表的一行,从该行的“符号”列提取plc变量名称,从“地址”列提取plc变量的类型和起始地址,并将提取到的信息由结构变量的成员保存,并将结构变量分组存储于对应缓冲区中;
25.描述文件管理模块:用于写入和读取所述数据描述文件。
26.本发明具有以下有益效果:
27.1、将单一的通讯传输协议拆分为通讯传输协议和结构化的数据描述文件两部分,其中数据描述文件用来描述通讯传输协议中的“数据域”的具体内容,该数据描述文件可由软件自动生成,且上位机可自动处理数据描述文件来获得“数据域”中二进制字节流的细节描述,与传统方式相比,通讯传输协议中不再需要任何plc数据的说明。
28.2、主流的plc都支持符号表,该表中包含plc中的变量名称、变量类型和起始地址等信息。因此本发明通过上位机软件对plc的符号表进行处理,抽取符号表中变量的信息,按照类型进行变量分组,按照变量起始地址进行排序,进一步自动生成一种跨平台通用的数据描述文件,该文件使用数据名称、长度、传输顺序、偏移量等信息描述通讯传输协议中“数据域”的构成。在进行通讯传输过程中,plc只需按照描述文件组织数据上传,上位机只需按照描述文件对二进制数据流进行切分即可获得全部数据。彻底丢弃了现有技术中在通讯传输协议中对“数据域”的大量文字定义工作,极大简化了协议制定和协商过程。由于数据描述文件采用了固定的生成规则,具有通用性,使得上位机与plc之间的数据采集与传输实现了自动化。
29.3、本发明无需借助plc厂商上位机软件或第三方组件、协议等即可实现plc数据的高效读取与传输,对任何型号plc均适用。
30.4、本发明对上位机的操作系统无要求,适用于任何形式的pc机、平板电脑、嵌入式板卡等。
31.5、将数据描述从通讯传输协议中剥离出来,使得通讯传输协议的制定大为简化,对沟通和维护提供极大便利。
32.6、数据描述文件的信息从plc符号表中提取,通过软件使用固定规则自动生成,无需人为参与,极大降低工作量、杜绝遗漏和出错。
33.7、plc端的数据发生新增或删除情况时,上位机端只需按新符号表更新数据描述文件即可,无需其它沟通。
34.8、上位机软件发生重写或更换时,只需重新读入数据描述文件即可。
35.9、非常适合实现plc数据的批量读取和传输。
36.下面将参照附图,对本发明作进一步详细的说明。
附图说明
37.构成本技术的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
38.图1是本发明实施例公开的数据描述文件的生成流程示意图。
39.图2是本发明实施例公开的plc数据处理系统的框架图。
40.图3是本发明实施例公开的s7-200plc采集传输规则表的示意图。
41.图4是本发明实施例公开的根据plc符号表生成的数据描述文件的局部内容截图。
具体实施方式
42.以下结合附图对本发明的实施例进行详细说明,但是本发明可以由权利要求限定和覆盖的多种不同方式实施。
43.实施例1
44.本实施例公开一种通用的plc数据处理方法。主要包括生成数据描述文件、制定通讯传输协议、数据传输三部分。三部分过程详述如下:
45.一、参照图1,生成数据描述文件的过程为:
46.s1:制定采集传输规则表,用来定义plc数据的传输规则,其中每一行代表一种plc变量,该表包含“上位机变量类型”、“plc变量类型”、“数据长度”、“分类号”几个字段,其中“上位机变量类型”是“plc变量类型”在上位机中的对应形式,数据长度是“plc变量类型”在传输中占用的字节数,“分类号”是一个数值,用于在通讯中充当“命令码”的角色。
47.s2:上位机按s1所述采集传输规则表的行顺序为每种plc变量准备一个数据结构缓冲区(每个缓冲区能容纳若干个结构变量,结构变量的成员用于存储读取到的plc符号表时解析出的变量名称、类型和地址),每种plc变量(即每个所述缓冲区)可视为一个组。
48.s3:导出plc的符号表,另存为.csv格式或其它文本格式的文件,要求至少导出“符号”、“地址”两列的内容,或其它可以等同表征plc变量名称、类型和地址的字段的列的对应内容,其中“符号”列的内容包含plc变量的命名,“地址”列的内容包含plc变量的类型和起始地址。
49.s4:上位机新生成一个结构化数据描述文件,可采用标准通用标记语言(xml)格式,首先生成一个根节点元素,例如“数据域”元素,随后的元素都嵌套在“数据域”元素中,在“数据域”元素中新建一个“总数据个数”子节点元素。
50.s5:上位机按行读取plc的符号表文件,判断该行“地址”字段内容的plc变量类型,若类型不在s1所述采集传输规则表内则丢弃该行,否则提取该行的信息保存于s2结构变量的对应成员中,并将结构变量附加存储于与之对应的数据结构缓冲区(即上述提到的组)中。最后一行读取完成后,将数据描述文件中“总数据个数”元素的属性的值更新为有效行数。
51.s6:对s2所述每个数据结构缓冲区的存储内容(即结构变量)按照成员保存的plc变量的地址升序进行排序,形成排序后的数据结构缓冲区。
52.s7:按照s1所述采集传输规则表的顺序,将第一个缓冲区中排序后的内容(结构变量)依次取出,为每个结构变量在描述文件中新建一个“传输变量”子节点元素,该元素包含有“名称”、“长度”、“偏移量”等子元素,“长度”元素的值即为该类型plc变量数据的长度,单位为字节,“名称”即为plc变量的名称,这两个值均从结构变量的成员中获取,“偏移量”是该变量在该组中的起始位置,单位为字节,可依次计算得出,将该子节点元素写入数据描述文件“数据域”根节点下。
53.s8:按照s7所述操作依次完成剩余所有缓冲区结构变量的取出和“传输变量”子节点元素的生成与写入,形成最后的数据描述文件。
54.二、制定通讯传输协议有两种途径,分别为:
55.一是制定一种通讯传输协议,制定的协议最少具备“数据域长度”、“数据域”、“命令码”几个字段,“命令码”字段表明需要plc上传的哪一个组的数据,也可是所有组的数据一起上传。
56.更简单的方式是借用一种已知通讯传输协议,最简单的途径使用modbus协议,用“命令码”03h将所有分组的数据一次性集中传输。
57.三、数据通讯传输过程为:
58.plc按照数据描述文件中每个“传输变量”的顺序,将对应变量的内容依次放入一个地址连续的缓冲区中并在每个扫描周期内更新缓冲区内容。
59.上位机发起读取命令,plc按照通讯传输协议的格式将上述缓冲区的内容通过数据帧上传。
60.上位机通过协议解析和处理,将数据帧中的“数据域”提取出来,当成二进制字节流进行暂存。
61.上位机读取数据描述文件,每获取一个“传输变量”子节点元素的内容,便按照该元素提供的“名称”、“长度”、“偏移量”信息对二进制字节流进行操作,获得对应的plc中数据的变量名称和二进制值,以便后续处理。
62.实施例2
63.与上述实施例相对应的,本实施例公开一种通用的plc数据处理装置,该装置具体为上位机,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,其中,所述处理器执行所述计算机程序时实现上述实施例方法中上位机所对应的系列步骤。
64.其中,本实施例上位机与plc的交互及相关数据处理至少包括:
65.步骤s100、上位机根据用户所创建的采集传输规则表配置数据结构缓冲区;
66.步骤s200、上位机导出plc符号表,从导出的plc符号表中筛选出与所述采集传输规则表的变量类型相对应的记录,并转化为结构变量后分组存储于相对应的数据结构缓冲区中,并创建通用的数据描述文件;所述数据描述文件用于描述与数据域相关联的结构变量的数量、各个结构变量的名称、长度和偏移量信息及在数据域中的排序信息并独立于通讯传输协议之外;
67.步骤s300、plc按照数据描述文件中每个结构变量的顺序,将对应变量的内容依次放入一个地址连续的缓冲区中并在每个扫描周期内更新缓冲区内容,并在收到上位机的读取命令后,plc按照通讯传输协议的格式将缓冲区的内容通过数据帧上传;其中,所述通讯传输协议中省略已由所述数据描述文件所决定的对plc数据的说明;
68.步骤s400、上位机通过协议解析和处理,将数据帧中的数据域提取出来,当成二进制字节流暂存;然后根据所述数据描述文件自动完成暂存字节流的数据提取和解析以获得plc所上传数据中与各所述结构变量名称所对应的二进制值。
69.如图2所示,本实施例所应用的系统由plc、物理通道、上位机和软件三部分组成:其中plc可以是任意品牌和型号的plc,物理通道是由plc和上位机均支持的通讯通道(rs232、rs485、以太网或现场总线接口等),上位机可以是运行任意操作系统的pc、平板、嵌入式主板等。
70.上位机软件分为控制处理模块、规则数据库模块、符号表处理模块、描述文件管理模块、通道管理模块。
71.控制处理模块:是上位机软件的主控模块,所有操作均由该模块发起,完成软件的逻辑控制、通讯传输控制、数据处理。
72.规则数据库模块:由传输规则数据库和对应的操作接口函数构成。其中数据库包含若干采集传输规则表,每张采集传输规则表与某个具体型号的plc进行对应。采集传输规则表一般包含“id”、“上位机变量类型”、“plc变量类型”、“数据长度”、“分类号”等字段。采集传输规则表的一行代表一条规则(例如plc的模拟量输入类型aiw就是一条规则),“id”字
段代表规则的排序,该排序也是plc数据组之间的顺序。“上位机变量类型”与“plc变量类型”是一一对应的关系,如plc中模拟量输入aiw对应的上位机变量类型为16位短整型,“数据长度”是当前变量类型在传输中占用的字节数,“分类号”用于区分数据分组,也用于通讯传输协议中的“命令码”。
73.符号表处理模块:该模块完成对文本格式保存的plc符号表的处理,依次提取符号表的一行,从该行的“符号”列提取plc变量名称,从“地址”列提取plc变量的类型和起始地址,这些提取到的信息由s2结构变量的成员保存,并将结构变量存储于分组的对应缓冲区中。
74.描述文件管理模块:该模块提供描述文件的写入和读取,写入是指将处理好的符号表中的一行信息写入到描述文件的一个“传输变量”节点,读取指的是将描述文件中每个“传输变量”节点和子节点的值读入内存中,用于处理通讯传输中收到的“数据域”二进制字节流。
75.通道管理模块:提供一组高层级的通道读写操作函数,使得控制处理模块可以使用统一的接口来读写不同的物理通道,而无需关心每个物理通道读写的细节,方便程序的维护。
76.实施例3
77.本实施例是对上述两实施例具体应用的举例。
78.为描述方便,以下定义了一个名为var的结构变量和用于存储这种结构变量的缓冲区vector《structvar》,var含有name、type、address三个成员,在实施例中提到的结构变量都和var具有相同结构,提到的数据结构缓冲区都和vector《structvar》具有相同结构,该定义使用了c++语言的描述,但其它高级编程语言也有等同的功能:
79.结构变量定义:
80.structvar{
81.stringname;//名称
82.stringtype;//类型
83.stringaddress;//起始地址
84.}
85.缓冲区定义:
86.vector《structvar》
87.本实施例中,上位机软件与plc之间的数据传输工作流程具体为:
88.s20:判断数据描述表是否存在,是则跳转s25执行。否则以s21-s24生成数据描述表。
89.s21:控制处理模块按照实际的plc类型读取规则数据库中对应的规则表,为每条规则(每种plc变量类型)建立一个数据缓冲区vector《structvar》,用于存储上述var结构变量。
90.s22:控制处理模块通过符号表处理模块对plc导出的符号表进行处理,每次读取一行,判断该行变量是否被规则允许(例如plc的计时器、计数器等中间变量没有通讯传输价值,因此不会匹配规则因而被过滤掉),若规则允许再提取这一行携带的plc变量名、变量类型、起始地址并存储于结构变量var的成员中,并根据变量类型将结构变量存储于对应数
据缓冲区中。
91.s23:完成plc符号表所有行的读入处理后,控制处理模块按照数据缓冲区vector《struct var》之间先后顺序依次完成缓冲区内结构变量的排序,排序规则为结构变量var存储的plc变量起始地址的升序。
92.s24:控制处理模块按照数据缓冲区的先后顺序和缓冲区内结构变量的先后顺序将所有结构变量依次取出,并操纵描述文件管理模块为每个结构变量生成一个“传输变量”节点,为该节点“名称”、“类型”、“长度”、“偏移量”子元素赋值,依次将所有“传输变量”节点写入数据描述文件“数据域”根节点下。
93.s25:控制处理模块按照通讯传输协议要求plc上传数据,plc按照数据描述文件的“传输变量”节点顺序将对应的数据依次放入一个地址连续的区域并将该区域放置到数据帧的“数据域”进行整体上传,控制处理模块提取“数据域”字段对应的二进制字节流暂存到内存中。
94.s26:控制处理模块通过描述文件管理模块将“传输变量”节点的值读入内存,根据“传输变量”节点的信息对二进制字节流进行提取,获得对应数据的二进制内容。
95.实施例4
96.本实施例是对实施例3具体应用场景的进一步举例。
97.针对s7-200plc的数据采集与传输,制定相应的规则表、生成数据描述文件的具体过程如图3、图4所示:
98.s301:数据库中生成s7-200规则表,为该表添加“id”,“plc变量类型”、“上位机变量类型”、“变量长度”和“分类号”几个数据列,如图3所示,“id”字段数据用来分类不同的plc变量类型,“plc变量类型”字段数据用来枚举需要通讯传输的plc变量类型,在本例中为开关量输入、输出、模拟量输入、输出、中间v寄存器几种类型,考虑到plc数据不是很多,该分类号直接采用modbus协议中的命令码03h,表示一次性全部读取。
99.s302:将s7-200plc符号表导出到上位机中。软件扫描规则表,读取到图3中的11条规则,则建立11个结构变量缓冲区,如第7个缓冲区专门存储对应于符号表中的模拟量输入变量。软件每次读取符号表的一行,判断变量类型是否在规则表内,例如读取到符号表一行中变量类型为aiw,则提取该行中的plc变量名存储于var的name成员,var的type成员存储规则表中对应的变量类型,address存储plc变量的地址,并将该var变量存储于第7个缓冲区中。完成符号表所有行的提取后,就完成了11个缓冲区的更新;
100.s303:按照缓冲区的顺序,对每个缓冲区以var变量address成员的升序进行排序,形成排序后的缓冲区。依次遍历缓冲区,取出一个var结构变量,对应生成一个transmission_variable节点,将var的成员变量的值赋给transmission_variable(即传输变量)元素的子元素。所有的var结构变量遍历完成后,生成数据描述文件,如图4中,plc符号表中的模拟量输入变量“7#高压泵压力”对应的transmission_variable元素中,name节点的值为变量名称“7#高压泵压力”,type节点的值为上位机变量类型s16,length节点的值为2字节,offset节点的值为偏移量第28字节。plc按照描述文件的顺序准备数据,上位机软件读取描述文件后自动完成字节流的数据提取和解析。
101.综上,本发明上述各实施例所分别公开的通用的plc数据处理方法及装置,至少具有以下有益效果:
102.1、将单一的通讯传输协议拆分为通讯传输协议和结构化的数据描述文件两部分,其中数据描述文件用来描述通讯传输协议中的“数据域”的具体内容,该数据描述文件可由软件自动生成,且上位机可自动处理数据描述文件来获得“数据域”中二进制字节流的细节描述,与传统方式相比,通讯传输协议中不再需要任何plc数据的说明。
103.2、主流的plc都支持符号表,该表中包含plc中的变量名称、变量类型和起始地址等信息。因此本发明通过上位机软件对plc的符号表进行处理,抽取符号表中变量的信息,按照类型进行变量分组,按照变量起始地址进行排序,进一步自动生成一种跨平台通用的数据描述文件,该文件使用数据名称、长度、传输顺序、偏移量等信息描述通讯传输协议中“数据域”的构成。在进行通讯传输过程中,plc只需按照描述文件组织数据上传,上位机只需按照描述文件对二进制数据流进行切分即可获得全部数据。彻底丢弃了现有技术中在通讯传输协议中对“数据域”的大量文字定义工作,极大简化了协议制定和协商过程。由于数据描述文件采用了固定的生成规则,具有通用性,使得上位机与plc之间的数据采集与传输实现了自动化。
104.3、本发明无需借助plc厂商上位机软件或第三方组件、协议等即可实现plc数据的高效读取与传输,对任何型号plc均适用。
105.4、本发明对上位机的操作系统无要求,适用于任何形式的pc机、平板电脑、嵌入式板卡等。
106.5、将数据描述从通讯传输协议中剥离出来,使得通讯传输协议的制定大为简化,对沟通和维护提供极大便利。
107.6、数据描述文件的信息从plc符号表中提取,通过软件使用固定规则自动生成,无需人为参与,极大降低工作量、杜绝遗漏和出错。
108.7、plc端的数据发生新增或删除情况时,上位机端只需按新符号表更新数据描述文件即可,无需其它沟通。
109.8、上位机软件发生重写或更换时,只需重新读入数据描述文件即可。
110.9、非常适合实现plc数据的批量读取和传输。
111.以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1