本发明涉及工业互联网数字化车间物联感知,具体为一种基于mqtt和s7协议的远程plc的批量读写传输方法。
背景技术:
1、随着制造业向智能化、数字化不断发展,智能制造成为了制造业的热门话题之一,其中由于plc的具有运行稳定且具备可编程逻辑控制等方面的优点,在智能制造领域发挥着重要的作用。在智能制造的生产场景中,plc数据的读取与写入关系着生产场景是否能智能化集中管控,一般工业生产场景中,plc直接控制着下层生产设备的运行,而上层系统可以通过获得和写入plc中的数据来掌控和调节整个生产流程,由于西门子的plc在工业场景用的应用十分广泛且市场占有率较高,目前针对西门子plc数据的读写传输方法方式复杂,不具有通用性,主要分为以下两种方式,第一种是基于opc技术的plc数据读写方式,这种方式需要在上位机上安装opc server,操作复杂,且opcserver需要占用上位机资源,移植不灵活。第二种在plc上安装专用的通讯编程,这种方式有一定技术门槛,不能够做到普及。
技术实现思路
1、有鉴于此,本发明提出了采用开源s7协议实现上位机读写plc数据的方法,直接利用现有的s7相关函数实现上位机对plc的数据批量读写。
2、本发明为实现上述目的所采用的技术方案是:
3、一种基于mqtt和s7协议的plc批量读取传输方法,包括以下步骤:
4、1)构建读取plc数据时的xml文件结构,并将plc的参数信息写入xml文件中;
5、2)对xml文件进行解析,并对解析结果的完整性进行判断,如果完整,进行步骤3),否则返回步骤1);
6、3)为xml文件的解析结果分配新的线程,在新的线程中,利用xml文件的解析结果,将plc数据按照字节序列全部读取到内存中;
7、4)对内存中的字节序列进行反序列化,得到plc原始数据;
8、5)利用mqtt传输plc原始数据。
9、所述xml文件的结构具体为:
10、一个xml文件有且仅有一个根节点,以根节点的所有一级子节点作为数据块的划分依据,将xml文件划分为多个数据块,每个数据块对应一个plc中一段连续的数据点,将每个数据块划分成三层嵌套结构,第一层嵌套结构为设备标签,设备标签的属性包含plc连接时所需要的必要信息,所述必要信息包括:plc的ip地址、plc的cpu类型、plc的名称、plc连接时的固定参数;第二层嵌套结构为数据块标签,数据块标签的属性包含该plc的待监测目标地址的地址块,需要在该地址块中读取字节的开始地址以及字节数量;第三层的嵌套结构为数据点标签,数据点标签的属性包括所操作的所有数据点的详细信息,所述详细信息包括该数据点的具体地址、该数据点的具体类型、该数据点的序数以及该数据点的具体含义。
11、所述步骤3),具体为:
12、通过xml文件的解析结果,开辟一个新的线程,该线程调用s7协议提供的读取字节的方法,在开始地址处读取plc中的数据,当需要读取的字节数量大于n个字节时,需要多次调用s7协议,直到将所有的字节数读取完成。
13、所述步骤4),具体为:
14、4.1)将具体地址转换成字节列表的偏移量,根据各数据类型所占字节数,将该数据的字节全部取出来;
15、4.2)将字节重新排列,然后将重新排序字节序列反序列化成plc中的原始数据。
16、所述步骤5),具体为:
17、将原始数据通过函数封装成为key-value格式,其中,key值表示plc的ip地址,value值是plc中的数据,并且触发mqtt相应的主题,将数据传输至远程客户端。
18、一种基于mqtt和s7协议的plc批量写入方法,包括以下步骤:
19、1)构建写入plc数据时的xml文件的结构,并将plc的参数信息以及待写数据写入xml文件中;
20、2)对xml文件进行解析,并对解析结果的完整性进行判断,如果完整,进行步骤3),否则返回步骤1);
21、3)为xml文件的解析结果分配新的线程,在新的线程中,利用xml文件的解析结果,将数据逐位写入plc中。
22、所述xml文件的嵌套结构具体为:
23、一个xml文件有且仅有一个根节点,以根节点的所有一级子节点作为数据块的划分依据,将xml文件划分为多个数据块,每个数据块对应一个plc,将每个数据块划分成三层嵌套结构,第一层嵌套结构为设备标签,设备标签的属性包含plc连接时所需要的必要信息,所述必要信息包括:plc的ip地址、plc的cpu类型、plc的名称、plc连接时的固定参数;第二层嵌套结构为数据块标签,数据块标签的属性包含该plc的待监测目标地址的地址块;第三层的嵌套结构为数据点标签,数据点标签的属性包括所操作的所有数据点的详细信息,所述详细信息包括该数据点的具体地址、该数据点的具体类型、该数据点的序数、该数据点的待写数据以及该数据点的具体含义
24、所述步骤3),具体为:
25、通过xml文件的解析结果,开辟一个新的线程,该线程调用s7协议提供的逐位写入的方法,根据数据点的具体地址,将数据逐位写入。
26、本发明具有以下有益效果及优点:
27、1.耦合度低,本发明采用xml文件存储数据,降低了程序的耦合度,在更改源码的情况下,可以更改xml文件的数据;
28、2.扩展性强,本发明采用xml文件配置访问列表,可以灵活方便的进行增加删除,扩展性高;
29、3.资源占有率低,本发明直接使用西门子提供的s7协议包,在上位机开发中不需要安装任何服务,并且在读取数据时用最少的读取次数读出所需的数据,大大减少了资源的利用。
1.一种基于mqtt和s7协议的plc批量读取传输方法,其特征在于,包括以下步骤:
2.根据权利要求1所述的一种基于mqtt和s7协议的plc批量读取传输方法,其特征在于,所述xml文件结构具体为:
3.根据权利要求1所述的一种基于mqtt和s7协议的plc批量读取传输方法,其特征在于,所述步骤3),具体为:
4.根据权利要求1所述的一种基于mqtt和s7协议的plc批量读取传输方法,其特征在于,所述步骤4),具体为:
5.根据权利要求1所述的一种基于mqtt和s7协议的plc批量读取传输方法,其特征在于,所述步骤5),具体为:
6.一种基于mqtt和s7协议的plc批量写入方法,其特征在于,包括以下步骤:
7.根据权利要求6所述的一种基于mqtt和s7协议的plc批量写入方法,其特征在于,所述xml文件的嵌套结构具体为:
8.根据权利要求6所述的一种基于mqtt和s7协议的plc批量写入方法,其特征在于,所述步骤3),具体为: