针对PLC的数据自动采集中间件及其使用方法转让专利

申请号 : CN201510559212.8

文献号 : CN106483860B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 李慧卫万勇邢庆良

申请人 : 上海宝信软件股份有限公司

摘要 :

本发明提供了一种针对PLC的数据自动采集中间件及其使用方法,包括:设计时组件,用于在配置表中配置变量地址,形成一个PLC地址组态,其中,该组态存储在关系数据库中;开源驱动库,用于与PLC建立连接,并根据配置表中的变量地址按字节读取PLC数据;运行时组件,用于根据设计时组件形成的组态,通过开源驱动库从PLC中获取PLC数据,并存储到数据库中。发明采用西门子PLC的默认端口,通过TCP/IP协议与PLC建立SCOKET连接,用户只需对读取的数据进行配置,系统会自动在数据库中定义相关表或标签,并把数据存储到数据库中,不需要安装第三方软件。

权利要求 :

1.一种针对PLC的数据自动采集中间件,其特征在于,包括:开源驱动库、设计时组件、运行时组件;

设计时组件,用于在配置表中配置变量地址,形成一个PLC地址组态,其中,该组态存储在关系数据库中;

开源驱动库,用于与PLC建立连接,并根据配置表中的变量地址按字节读取PLC数据;

运行时组件,用于根据设计时组件形成的组态,通过开源驱动库从PLC中获取PLC数据,并存储到数据库中;

所述运行时组件,包括如下装置:

读取组态数据装置,用于连接关系数据库,查询组态中的变量地址,并且把变量地址存储在内存中;

调用开源驱动库装置,用于根据组态中变量地址,使用开源驱动库读取PLC数据;

数据写入数据库装置,用于将从PLC读取的数据写入实时数据库和关系数据库;

所述数据写入数据库装置包括如下装置:

写入实时数据库装置,用于根据组态配置,自动创建变量标签,实时读取PLC数据到实时数据库;

写入关系数据库装置,用于根据组态配置,自动创建表,周期更新从PLC读取的数据。

2.根据权利要求1所述的针对PLC的数据自动采集中间件,其特征在于,开源驱动库,用于与西门子S7系列PLC建立连接;开源驱动库采用Libnodave数据库。

3.根据权利要求1所述的针对PLC的数据自动采集中间件,其特征在于,组态的存储结构为:。

4.一种权利要求1至3中任一项所述的针对PLC的数据自动采集中间件的使用方法,其特征在于,包括如下步骤:步骤1:打开所述针对PLC的数据自动采集中间件,通过参数配置菜单,输入PLC地址、数据库登录用户名、数据库登录密码,选择PLC数据要存储的位置;

步骤2:通过控制界面,令所述针对PLC的数据自动采集中间件进行初始化,测试所述针对PLC的数据自动采集中间件与PLC及数据库的连接是否正常;

步骤3:通过控制界面,输入要获取数据的PLC地址信息,包括DB块名、起始地址、结束地址;

步骤4:通过控制界面,把配置的信息存入数据库;

步骤5:在配置完成后,通过控制界面,令数据自动存入参数配置时选择的数据库中。

说明书 :

针对PLC的数据自动采集中间件及其使用方法

技术领域

[0001] 本发明涉及自动化领域,具体地,涉及针对PLC的数据自动采集中间件及其使用方法,尤其是针对西门子S7系列PLC的数据自动采集中间件。

背景技术

[0002] 在自动化系统领域,获取PLC中的数据或诊断信息进行分析研究和统计是自动化系统中经常使用的技术,不同的项目根据现场情况会采用不同的连接方式,经常使用的连接方法包括通过OPC协议建立连接、通过TCP/IP协议建立Scoket连接等。
[0003] (1)通过OPC协议获取西门子PLC数据
[0004] 通过OPC协议获取PLC数据需要安装Wincc或Simatic Net软件,还需要使用西门子提供的类库来获取数据,配置和编程都比较复杂。
[0005] 国外像INAT公司通过OPC协议专门开发了一套产品,通过他们开发的OPC服务器,用户只需要对读取的数据进行简单配置,就可以获取所需的PLC数据。
[0006] (2)通过TCP/IP协议,建立Scoket连接获取PLC数据
[0007] 通过建立Scoket连接获取PLC数据,一般需要在PLC和上位机都开发一部分程序,双方约定好要传送的数据进行数据传输,开发过程也比较复杂。

发明内容

[0008] 针对现有技术中的缺陷,本发明的目的是提供一种针对西门子S7系列PLC的数据自动采集中间件。
[0009] 根据本发明提供的一种针对PLC的数据自动采集中间件,包括:开源驱动库、设计时组件、运行时组件;
[0010] 设计时组件,用于在配置表中配置变量地址,形成一个PLC地址组态,其中,该组态存储在关系数据库中;
[0011] 开源驱动库,用于与PLC建立连接,并根据配置表中的变量地址按字节读取PLC数据;
[0012] 运行时组件,用于根据设计时组件形成的组态,通过开源驱动库从PLC中获取PLC数据,并存储到数据库中。
[0013] 优选地,开源驱动库,用于与西门子S7系列PLC建立连接;开源驱动库采用Libnodave数据库。
[0014] 优选地,组态的存储结构为:
[0015]字段名称 字段描述 字段类型
Id 序号 int
db_name PLC数据所在DB块名 int
start_address PLC数据开始地址 int
end_address PLC数据结束地址 int
Datatype PLC数据数据类型 char
Typenumber 数据类型对应字节数 int
Tagname 变量命名 char
Tagdesc 变量描述 char
[0016] 优选地,所述运行时组件,包括如下装置:
[0017] 读取组态数据装置,用于连接关系数据库,查询组态中的变量地址,并且把变量地址存储在内存中;
[0018] 调用开源驱动库装置,用于根据组态中变量地址,使用开源驱动库读取PLC数据;
[0019] 数据写入数据库装置,用于将从PLC读取的数据写入实时数据库和关系数据库。
[0020] 优选地,所述数据写入数据库装置包括如下装置:
[0021] 写入实时数据库装置,用于根据组态配置,自动创建变量标签,实时读取PLC数据到实时数据库;
[0022] 写入关系数据库装置,用于根据组态配置,自动创建表,周期更新从PLC读取的数据。
[0023] 根据本发明提供的一种上述的针对PLC的数据自动采集中间件的使用方法,包括如下步骤:
[0024] 步骤1:打开所述针对PLC的数据自动采集中间件,通过参数配置菜单,输入PLC地址、数据库登录用户名、数据库登录密码,选择PLC数据要存储的位置;
[0025] 步骤2:通过控制界面,令所述针对PLC的数据自动采集中间件进行初始化,测试所述针对PLC的数据自动采集中间件与PLC及数据库的连接是否正常;
[0026] 步骤3:通过控制界面,输入要获取数据的PLC地址信息,包括DB块名、起始地址、结束地址;
[0027] 步骤4:通过控制界面,把配置的信息存入数据库;
[0028] 步骤5:在配置完成后,通过控制界面,令数据自动存入参数配置时选择的数据库中。
[0029] 与现有技术相比,本发明具有如下的有益效果:
[0030] 1、本发明针对西门子S7-200/300/400设备,提供一种可配置的中间件,在配置完成需采集的数据地址后,自动把西门子PLC中对应的数据存入实时数据库或关系数据库,供开发人员读取。本发明采用西门子PLC开放的端口进行数据传输,不需要安装第三方软件。
[0031] 2、本发明采用西门子PLC的默认端口,通过TCP/IP协议与PLC建立SCOKET连接,用户只需对读取的数据进行配置,系统会自动在数据库中定义相关表或标签,并把数据存储到数据库中。
[0032] 3、在现有技术中,如果要获取PLC中的数据,要根据不同现场情况,编制PLC与服务器的连接程序,花费大量的人力成本,而通过本发明,开发人员不需要对通讯连接的协议有任何了解,只需要对PLC中的变量信息进行配置就可以实时获取PLC的数据信息,并自动存储到数据库中。
[0033] 4、本发明配置简单、无需安装西门子专业软件就可以获取西门子PLC中的数据;开发人员在需要读取西门子PLC数据时,只需要连接相关的数据库即可。

附图说明

[0034] 通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
[0035] 图1为应用场景架构图。
[0036] 图2为中间件功能架构图。
[0037] 图3为运行时组件流程图。
[0038] 图4为应用实例架构图。

具体实施方式

[0039] 下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进。这些都属于本发明的保护范围。
[0040] 本发明的方案主要是为获取西门子PLC数据提供一个简单有效的中间件。
[0041] 1、场景架构
[0042] 本发明主要通过数据自动采集中间件使西门子PLC设备与数据库建立连接,并自动存储数据,数据配置信息存储在MYSQL数据库,数据内容存储可以根据需要选择关系数据库MYSQL或实时数据库iHyperDB等。
[0043] 在使用此中间件存储数据到数据库时,系统架构如图1所示:
[0044] 2、中间件系统功能架构设计
[0045] 本发明提供的中间件的功能组件包括开源驱动库、设计时组件、组态、运行时组件等。中间件的功能架构如图2所示:
[0046] 3、功能组件设计
[0047] 3.1、SIEMENS PLC组件
[0048] 本发明是针对西门子PLC的S7-200/300/400设备进行数据采集的中间件。采集的西门子PLC设备必须具有以太网口,本发明是通过以太网连接PLC进行数据传输的。
[0049] 参数配置内容包括PLC地址、数据库用户名、密码信息和采集数据的存储位置,存储位置可以选择实时数据库iHyperDB或关系数据库MYSQL或选择同时在两个数据库存储数据。
[0050] 在控制界面上的按钮包括:
[0051] -初始化按钮,用来测试中间件与PLC和数据库的连接情况;
[0052] -变量配置按钮,用来打开变量配置界面;
[0053] -开始采集按钮,用来启动采集数据服务;
[0054] -结束采集按钮,用来停止采集数据服务。
[0055] 3.2、开源驱动库libnodave.dll
[0056] Libnodave是德国人Thomas Hergenhahn开发的一款可与西门子S7-200/300/400系列PLC进行通讯的开源、免费的函数库。本发明是通过此函数库与PLC建立连接,并根据配置表中的变量地址按字节读取PLC数据。本发明使用到的函数介绍如下:
[0057] a)libnodave.openSocket(port,net_address):用来打开SOCKET连接;
[0058] b)libnodave.daveInterface(libnodave.daveOSserialType,"IF1",0,libnodave.daveProtoISOTCP,libnodave.daveSpeed187k):用来创建连接PLC的接口通道;
[0059] c)libnodave.daveConnection(di,0,rack,slot):用来连接PLC;
[0060] d)libnodave.closeSocket(fds.rfd):用来关闭Socket连接;
[0061] e)libnodave.closePort(plc_port):用来关闭连接PLC的端口;
[0062] f)libnodave.daveConnection.readBytes(libnodave.daveDB,DB_Number,pos,to_read,buff):用来读取PLC数据;
[0063] 3.3、设计时组件
[0064] 设计时组件是用来配置需要的PLC数据地址,形成一个PLC地址组态,此组态存储在MYSQL数据库中,存储结构为:
[0065]序号 字段名称 字段描述 字段类型 长度 允许空
1 Id 序号 int 2  
2 db_name PLC数据所在DB块名 int 2 √
3 start_address PLC数据开始地址 int 2 √
4 end_address PLC数据结束地址 int 2 √
5 Datatype PLC数据数据类型 char 6 √
6 Typenumber 数据类型对应字节数 int 2 √
7 Tagname 变量命名 char 12 √
8 Tagdesc 变量描述 char 12 √
[0066] 在控制台中通过变量配置按钮可以打开配置组态界面进行配置。通过配置界面,可以配置要获取PLC数据的地址,如果一次配置一个地址数据,则起始地址和结束地址配置相同即可;如果一次配置多个地址,多个地址必须是连续的,而且数据类型必须相同,这样可以通过修改结束地址实现,此时由于是自动生成变量信息,变量命名和变量描述用户不能自定义,系统自动显示为数据地址。
[0067] 3.4、组态
[0068] 组态即为通过设计时组件配置出的PLC地址等相关信息,信息存储在MYSQL数据库中。
[0069] 3.5、运行时组件
[0070] 运行时组件是根据设计时组件形成的组态表通过开源驱动库从PLC中获取数据,并存储到数据库中。运行时组件的程序流程如图3所示:
[0071] 从流程图3可以看出,运行时组态的主要功能为读取组态数据、调用开源驱动、数据写入数据库等。
[0072] 3.5.1读取组态数据
[0073] 连接MYSQL数据库,查询配置组态中的数据,并且把数据存储在内存中。组态数据的内容请参考章节3.4。
[0074] 3.5.2调用开源驱动库libnodave.dll
[0075] 根据组态中PLC数据的地址,使用开源驱动库libnodave.dll读取PLC数据,libnodave.dll的使用方法请参考章节3.2。
[0076] 3.5.3数据写入数据库
[0077] 从PLC读取的数据可以写入实时数据库iHyperDB和关系数据库MYSQL。
[0078] a)写入实时数据库iHyperDB
[0079] 根据组态配置,自动创建变量标签,实时读取PLC数据到实时数据库。
[0080] b)写入关系数据库MYSQL
[0081] 根据组态配置,自动创建表,每5S更新一次从PLC读取的数据。
[0082] 下面对一个优选的具体实施方式进行说明。
[0083] 本发明应用在需要获取西门子PLC(S7-200/300/400)数据的场景中,PLC数据可以根据需要存储在关系数据库MYSQL或实时数据库iHyperDB中。开发人员可以从数据库中获取PLC数据进行应用程序的开发,提高工作效率。
[0084] 1、应用实例架构
[0085] 在使用此中间件存储PLC数据到数据库时,应用实例的架构如图4所示:
[0086] 2、实例描述
[0087] 在此实例中,通过交换机连接PLC、服务器和客户端。客户端连接服务器中的数据库获取PLC数据,开发需要的应用程序。
[0088] 2.1西门子PLC S7-400
[0089] PLC为西门子S7-400,并且带有以太网模块CP443-1,PLC通过以太网模块连接到交换机,与服务器进行通讯。
[0090] 2.2服务器
[0091] 此实例中使用的服务器为HP GL580 G5,服务器中安装了MYSQL数据库、iHyperDB数据库,同时运行了本中间件。
[0092] 2.3客户端
[0093] 客户端是一个显示应用程序的终端,开发人员根据需要选择开发工具连接服务器中的数据库,开发应用程序供用户使用。
[0094] 3、中间件使用步骤
[0095] 使用此中间件的步骤为:
[0096] a)打开中间件,进行参数配置菜单,输入PLC地址,数据库登录用户名、密码等信息,选择数据要存储的位置。
[0097] b)在中间件中点击初始化按钮,测试中间件与PLC及数据库的连接是否正常[0098] c)点击变量配置按钮,输入要获取数据的PLC地址信息,包括DB块名、起始地址、结束地址。变量命名和变量描述用于实时数据库,如果不填,默认为数据的PLC地址。
[0099] d)点击添加按钮,把配置的信息存入数据库。也可以通过删除按钮删除当前选择的配置信息。
[0100] e)在配置完成后,点击开始采集按钮,此时数据自动存入参数配置时选择的数据库中。
[0101] f)如果需要修改配置信息,点击结束采集按钮,修改配置组态后,点击开始采集按钮继续采集PLC数据。
[0102] 本领域技术人员知道,除了以纯计算机可读程序代码方式实现本发明提供的中间件以外,完全可以通过将方法步骤进行逻辑编程来使得本发明提供的中间件以逻辑门、开关、专用集成电路、可编程逻辑控制器以及嵌入式微控制器等的形式来实现相同功能。所以,本发明提供的中间件可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构;也可以将用于实现各种功能的装置、模块视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
[0103] 以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本申请的实施例和实施例中的特征可以任意相互组合。