一种基于MQTT和S7协议的PLC批量读写传输方法与流程

文档序号:37430973发布日期:2024-03-25 19:23阅读:14来源:国知局
一种基于MQTT和S7协议的PLC批量读写传输方法与流程

本发明涉及工业互联网数字化车间物联感知,具体为一种基于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),具体为:


技术总结
本发明涉及一种基于MQTT和S7协议的PLC批量读写传输方法,具体为:确定XML文件的结构;将参数信息写入到XML文件中;解析XML文件的数据块;获得XML文件的参数信息,将数据以字节的形式全部读取到内存中;将获得的字节序列进行反序列化获得所需要的数据;所获得的PLC数据发送到MQTT服务器相应的主题下,订阅该主题的客户端就能接收到的PLC数据。本系统采用了XML文件,松散了程序的耦合度,增加了读取PLC系统的扩展性,采用先读后解析的原则,能够用最少的读写次数完成读写工作,提高了系统的稳定性以及效率,并且利用了MQTT轻量级通信协议,可以用极少的代码和有限的带宽,为远程其他设备提供实时可靠的PLC数据传输服务。

技术研发人员:胡毅,赵彦庆,钟军,高怡臣,杜春国,郭占一,张曦阳,吴迪
受保护的技术使用者:沈阳中科数控技术股份有限公司
技术研发日:
技术公布日:2024/3/24
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1