技术论坛

1200和1500 MQTT CLIENT轻松实现连接MQTT 消息服务器

作者 主题
总坛主
西门子官方工程师

经验值: 15532
发帖数: 1562
精华帖: 115
主题:【分享】1200和1500 MQTT CLIENT轻松实现连接MQTT 消息服务器
精华帖精华帖星级3级 推荐帖


只看楼主 只看精华 楼主 2019-12-10 10:00:38

 一、MQTT协议简介

MQTT 全称为 Message Queuing Telemetry Transport(消息队列遥测传输)是一种基于发布/订阅范式的“轻量级”消息协议,由 IBM 发布。

MQTT 可以被解释为一种低开销,低带宽占用的即时通讯协议,可以用极少的代码和带宽的为连接远程设备提供实时可靠的消息服务,它适用于硬件性能低下的远程设备以及网络状况糟糕的环境下,因此 MQTT 协议在 IoT(Internet of things,物联网),小型设备应用,移动应用等方面有较广泛的应用。

IoT 设备要运作,就必须连接到互联网,设备才能相互协作,以及与后端服务协同工作。而互联网的基础网络协议是 TCP/IP,MQTT 协议是基于 TCP/IP 协议栈而构建的,因此它已经慢慢的已经成为了 IoT 通讯的标准。

MQTT基本特点

1、MQTT是一种发布/订阅传输协议,基本原理和实现如下:

 

MQTT 协议提供一对多的消息发布,可以解除应用程序耦合,信息冗余小。该协议需要客户端和服务端,而协议中主要有三种身份:发布者(Publisher)、代理(Broker,服务器)、订阅者(Subscriber)。其中,消息的发布者和订阅者都是客户端,消息代理是服务器,而消息发布者可以同时是订阅者,实现了生产者与消费者的脱耦。

 

2、使用 TCP/IP 提供网络连接,提供有序、无损、双向连接;

MQTT 是一种连接协议,它指定了如何组织数据字节并通过 TCP/IP 网络传输它们。设备联网,也需要连接到互联网中,在大万维的世界中,TCP 如同汽车,有轮子就能用来运输数据,MQTT 就像是交通规则。在网络模型中,TCP是传输层协议,而 MQTT是在应用层,在 TCP 的上层,因此MQTT 也是基于这个而构建的,提高了可靠性。

3、对负载内容屏蔽的消息传输;可以对消息订阅者所接受到的内容有所屏蔽。

4、具体有三种消息发布的服务质量:

至多一次,消息发布完全依赖底层 TCP/IP 网络。会发生消息丢失或重复。这一级别可用于如下情况,环境传感器数据,丢失一次读记录无所谓,因为不久后还会有第二次发送。

至少一次,确保消息到达,但消息重复可能会发生。

只有一次,确保消息到达一次。这一级别可用于如下情况,在计费系统中,消息重复或丢失会导致不正确的结果。

5、小型传输,开销小,固定长度的头部是 2 字节,协议交换最小化,以降低网络流量;整体上协议可拆分为:固定头部+可变头部+消息体。

6、使用Last Will和Testament特性通知有关各方客户端异常中断的机制;

二、西门子的MQTT CLIENT库介绍

 

西门子的LMQTT_CLIENT使用的时MQTT3.1.1协议,“LMQTT_Client”库是实现SIMATIC S7控制器的MQTT协议通信的功能块,可以用在SIMATIC S7-1500和SIMATIC S7-1200中。函数块“LMQTT_Client”集成了MQTT客户机所有功能,允许您将MQTT消息传输到代理(发布者角色)和创建订阅(订阅者角色)。同时可以通过TLS来保证安全通信。

 

实现步骤:

1、确定MQTT代理的CA证书。

2、将第三方证书导入STEP 7 (TIA Portal),该证书现在位于STEP 7的全局证书管理器中。

3、您必须将导入的证书分配给S7 CPU。要确认证书有效,S7-CPU的时间必须是当前的。

4 .函数块“LMQTT_Client”承担以下角色:

  • 发布者向MQTT代理发送MQTT消息

  • 订阅方可以订阅MQTT消息或最终订阅

  • MQTT消息通过安全连接(通过TLS的MQTT)加密。

三、“LMQTT_Client”测试

测试需求软硬件需求:

1、emqx-centos7-v3.2.2   Linux版本

2、1500PLC

3、TIA Portal V15.1

测试步骤:

1、安装MQTT的服务器。MQTT服务器的搭建有很多种方法,本次测试选择的emqx-centos7-v3.2.2的服务器。搭建步骤请参照以下的网站链接,这里不做过多的介绍。https://www.jianshu.com/p/6a9d15e8d0bc

安装完成后使用命名行启动emqx的MQTT服务器,如下图所示。

 

2、搭建完成后可以使用客户端软件测试连接是否正常。本次测试使用的客户端为MQTTBox,MQTTBox下载和使用请参考官网链接,这里不做过多的描述。http://workswithweb.com/mqttbox.html

 

3、下载“LMQTT_Client”库文件,库文件的网址如下:

https://support.industry.siemens.com/cs/ww/en/view/109748872

4、创建新的SETP 7项目,导入“LMQTT_Client”库文件。

 

5、将库里的功能块和数据类型拷贝到项目中。

6、创建用户数据块,添加“LMQTT_Client”功能块的接口数据。同时将“LMQTT_Client”添加到OB1中。如下图所示:

 

7、建立安全通信,具体步骤如下:

a)   激活"Use global security settings for certificate manager"

 

b)   启用项目保护,操作如下图所示。保护项目后每次进入项目都要输入密码,所以密码一定要记住。

 

c)   添加服务器证书。选择"Certificate manager",并在"Trusted certificates and root certification authorities"中添加emqx CA证书。

d)   Emqx的CA证书在/emqx/etc/certs/目录下,文件名为cacert.pem。

e)   添加完成后可以看到证书的ID号为3,证书有效期为2019年11月2号。这里证书测试用的所以有效期时间比较短,证书到期后可以重新申请CA证书。

 

f)   选择PLC,在PLC的属性下选择"Certificate manager",并在"Certificates of the partner devices"选项下选择上一步安装的CA证书。

g)   设置PLC的IP地址和路由器的地址。

h) &n

 
以下网友喜欢您的帖子:

  
重要声明:

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

帖子链接:https://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1597886&b_id=50&s_id=0&num=23

至圣

经验值: 18890
发帖数: 2107
精华帖: 0
回复:1200和1500 MQTT CLIENT轻松实现连接MQTT 消息服务器
推荐帖


只看楼主 只看精华 1楼 2019-12-10 10:04:35

哪类工程项目用这种库呢/


 
以下网友喜欢您的帖子:

  
至圣

经验值: 18405
发帖数: 2409
精华帖: 1
回复:1200和1500 MQTT CLIENT轻松实现连接MQTT 消息服务器
推荐帖


只看楼主 只看精华 2楼 2019-12-10 10:37:26

越来越广,看的一头雾水


 
以下网友喜欢您的帖子:

  
至圣

经验值: 12543
发帖数: 1843
精华帖: 0
回复:1200和1500 MQTT CLIENT轻松实现连接MQTT 消息服务器
推荐帖


只看楼主 只看精华 3楼 2019-12-10 13:12:01

物联网的基本要求。


邮箱 yongquancun@126.com
以下网友喜欢您的帖子:

  
至圣

经验值: 16723
发帖数: 1309
精华帖: 2
回复:1200和1500 MQTT CLIENT轻松实现连接MQTT 消息服务器
推荐帖


只看楼主 只看精华 4楼 2019-12-10 13:45:27

会一门编程语言是多么的重要啊 


同一个问题ID下,已经先回答此问题的人,如再参考我答案而修改自己答案的,就是王八蛋!
以下网友喜欢您的帖子:

  
至圣

经验值: 12236
发帖数: 2431
精华帖: 86
回复:1200和1500 MQTT CLIENT轻松实现连接MQTT 消息服务器
推荐帖


只看楼主 只看精华 5楼 2019-12-10 14:38:39
以前plc要连接MES/ERP服务器的要通过上位机电脑来完成,1200/1500的消息发布功能感觉越来越像电脑了。
 
以下网友喜欢您的帖子:

  
至圣

经验值: 18067
发帖数: 1524
精华帖: 2
回复:1200和1500 MQTT CLIENT轻松实现连接MQTT 消息服务器
推荐帖


只看楼主 只看精华 6楼 2019-12-12 08:56:11

功能越来越强大了,需要懂更多的东西。


我回来了!继续努力!
以下网友喜欢您的帖子:

  
游侠

经验值: 467
发帖数: 33
精华帖: 0
回复:1200和1500 MQTT CLIENT轻松实现连接MQTT 消息服务器
推荐帖


只看楼主 只看精华 7楼 2019-12-13 09:15:18

 

学习了学习了


任重而道远
以下网友喜欢您的帖子:

  
侠圣

经验值: 3018
发帖数: 348
精华帖: 2
回复:1200和1500 MQTT CLIENT轻松实现连接MQTT 消息服务器
推荐帖


只看楼主 只看精华 8楼 2019-12-17 17:11:23

PLC都能完成了上云的工作了,那IOT2000地位不保啊!


做喜欢做的事
以下网友喜欢您的帖子:

  
Mr_
侠客

经验值: 627
发帖数: 95
精华帖: 0
回复:1200和1500 MQTT CLIENT轻松实现连接MQTT 消息服务器
推荐帖


只看楼主 只看精华 9楼 2019-12-18 08:45:06

 

学习学习了


学习是一种信仰
以下网友喜欢您的帖子:

  
至圣

经验值: 13075
发帖数: 1081
精华帖: 8
回复:1200和1500 MQTT CLIENT轻松实现连接MQTT 消息服务器


只看楼主 只看精华 10楼 2019-12-20 08:37:19

看来PLC越来越“软”了,竞争更加激烈了,以后需要学习更多的互联网方面的知识了,不然必掉队啊


做最好的自己!活出自我!
以下网友喜欢您的帖子:

  
xdr
侠圣

经验值: 2361
发帖数: 194
精华帖: 0
回复:1200和1500 MQTT CLIENT轻松实现连接MQTT 消息服务器


只看楼主 只看精华 11楼 2019-12-26 11:47:08


收藏学习了,谢谢


海纳百川,有容乃大
以下网友喜欢您的帖子:

  
至圣

经验值: 18294
发帖数: 2654
精华帖: 14
回复:1200和1500 MQTT CLIENT轻松实现连接MQTT 消息服务器


只看楼主 只看精华 12楼 2020-01-09 11:29:33


,看来需要回炉重新学习IT知识了,不然没得搞了


sometimes you have to be your own hero!
以下网友喜欢您的帖子:

  
游士

经验值: 267
发帖数: 65
精华帖: 0
回复:1200和1500 MQTT CLIENT轻松实现连接MQTT 消息服务器


只看楼主 只看精华 13楼 2020-01-10 17:46:06


学习学习。


 
以下网友喜欢您的帖子:

  
至圣

经验值: 12543
发帖数: 1843
精华帖: 0
回复:1200和1500 MQTT CLIENT轻松实现连接MQTT 消息服务器


只看楼主 只看精华 14楼 2020-01-11 08:18:49


  学习再学习。


邮箱 yongquancun@126.com
以下网友喜欢您的帖子:

  
侠客

经验值: 760
发帖数: 86
精华帖: 1
回复:1200和1500 MQTT CLIENT轻松实现连接MQTT 消息服务器


只看楼主 只看精华 16楼 2020-02-26 16:40:58

长见识了,收藏备用


 
以下网友喜欢您的帖子:

  
游民

经验值: 103
发帖数: 11
精华帖: 0
回复:1200和1500 MQTT CLIENT轻松实现连接MQTT 消息服务器


只看楼主 只看精华 17楼 2020-02-28 16:56:39

请教一下,MQTT服务器在云端已经布置好。笔记本运行PLCSIMADVANCED3。

PLC地址,虚拟网卡地址,笔记本网卡地址该怎么设置。

connectionID是要自己设定吗?

现在是TCON和云端TCP建立不了通讯。


 
以下网友喜欢您的帖子:

  
至圣

经验值: 19840
发帖数: 8834
精华帖: 39
回复:1200和1500 MQTT CLIENT轻松实现连接MQTT 消息服务器


只看楼主 只看精华 19楼 2020-05-21 13:31:41
以下是引用手机用户20200203004H4R在2020-02-28 16:56:39的发言 >17楼

请教一下,MQTT服务器在云端已经布置好。笔记本运行PLCSIMADVANCED3。

PLC地址,虚拟网卡地址,笔记本网卡地址该怎么设置。

connectionID是要自己设定吗?

现在是TCON和云端TCP建立不了通讯。

PLC的IP和你的PLCSIM的虚拟网卡的IP要在同一个网段,一般PLCSIM的虚拟网卡的IP会和你的笔记本的有线网卡在同一个网段,至少在我的电脑上是这样的。

然后看你的MQTT服务器是在本地还是外网,是域名访问还是固定IP,如果是通过域名访问,需要设置DNS。

CONNECTION ID只要在你的项目中唯一就好了


 
以下网友喜欢您的帖子:

  
奇侠

经验值: 7133
发帖数: 1022
精华帖: 2
回复:1200和1500 MQTT CLIENT轻松实现连接MQTT 消息服务器


只看楼主 只看精华 21楼 2020-06-20 08:25:47


谢谢楼主,收藏备用


心有多远路就有多远
以下网友喜欢您的帖子:

  
至圣

经验值: 19840
发帖数: 8834
精华帖: 39
回复:1200和1500 MQTT CLIENT轻松实现连接MQTT 消息服务器


只看楼主 只看精华 22楼 2020-06-21 21:31:36
以下是引用pingcruise在2020-06-19 15:33:19的发言 >20楼

请教下,用的1510Sp 实物CPU与局域网搭建MQTT服务器测试没问题,现在想发布消息至腾讯云物联网平台,先用MQTT.FX测试发布消息至云平台也没问题,但用西门子1510发布消息至云平台失败,也没任何提示信息,请问可能是什么问题?






你连接都没建立,检查两个param的参数设置
 
以下网友喜欢您的帖子:

  
收起
1200和1500 MQTT CLIENT轻松实现连接MQTT 消息服务器
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。