详讲MQTT通讯【1】-实现上位机与PLC的通讯

        要想利用MQTT实现上位机和PLC的通讯,我觉得这一块要考虑以下几点:

        1、MQTT通讯是什么?

        2、在MQTT通讯中上位机和PLC分别充当什么角色?

        3、如何编程实现?

        接下来我将对上面问题一一做成解释。

一、什么是MQTT通讯

        我们问问度娘,度娘的解释:

        MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的"轻量级"通讯协议,该协议构建于TCP/IP协议上,由IBM在1999年发布。MQTT最大优点在于,可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。作为一种低开销、低带宽占用的即时通讯协议,使其在物联网、小型设备、移动应用等方面有较广泛的应用。

        MQTT是一个基于客户端-服务器的消息发布/订阅传输协议。MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛。在很多情况下,包括受限的环境中,如:机器与机器(M2M)通信和物联网(IoT)。其在,通过卫星链路通信传感器、偶尔拨号的医疗设备、智能家居、及一些小型化设备中已广泛使用。

        度娘的解释还是比较详细的,概括就是客户端-服务器-客户端,通过发布/订阅,举个详细的例子吧,比如我喜欢看小说,那看小说就需要在书籍APP,有一天我看到一篇非常对我胃口的文章,我就顺手关注了这文章的作者,等到这作者又有文章发布了,系统就会提示我,让我去关注,又过了一阵,我对这作者的文章兴趣减少了,我就取消了关注,那这之后系统就不会把他的文章推给我了,在这例子中呢,APP就相当于MQTT服务器,我和文章的作者相当于MQTT客户端,我订阅了作者,作者发布文章,我就可以接收到文章,也就是说当一客户端订阅了另一客户端,那客户端发布的消息就能被订阅的客户端接收,当客户端取消订阅时,另一客户端发布的消息就无法接收。通过这个例子大家可以对MQTT通讯有进一步的认识了吗?

        至于MQTT服务器,客户端的功能,MQTT的报文形式,大家可以问问度娘,这块我们不进行详细的说明,我们在这上位机和PLC通讯还是更多的应用了官方提供的DLL。

二、在MQTT通讯中上位机和PLC分别充当什么角色

        根据上述对MQTT的简单介绍,相信大家已经知道,上位机和PLC分别在MQTT通讯中充当什么角色了吧,没错,PLC和上位机都充当客户端,发布并订阅消息,服务器可以由上位机制作也可以利用专门的MQTT服务器软件。

        当然这是一种最容易想到的方法,但在PLC那块的程序需要对MQTT的报文还有流程相当熟悉才能实现,这方法我将它放在了第三节,对专业知识的要求的有点高,对于刚接触MQTT的人来说还是难度有点大的。本节将采用第二种方法

        如上图所示,我们上位机做成两台客户端,其中一台客户端和PLC进行专门的通讯,如和西门子PLC使用S7通讯,和欧姆龙PLC使用Fins通讯,和三菱选择mc通讯。这样我们将重点放在如何实现上位机的客户端和服务器的编程上,和西门子的S7,和欧姆龙的Fins我们第二节重点讲解。

三、如何编程

        本次重点讲解上位机的客户端、服务器的制作。我们选择官方的DLL,选择2.8.2版本,如下图:

        接下来第一步UI界面设计:

        UI界面我们要把MQTT的要素写好:服务器重点为IP地址,端口号,用户名和密码,客户端为IP地址,端口号,主题,订阅,发布,发布内容,QOS,大致做成如下图就行。

服务器:

客户端:

      

        接下来第二步:服务器程序编写

        重点步骤:定义MQTT服务器----->创建OptionBulider,Option(服务器开启需要Option参数)----->绑定事件(客户端连接、客户端断开、接收数据、服务器开启、关闭、客户端订阅主题,客户端取消订阅事件)----->开启MQTT服务器----->每个事件用来添加日志。

        

        本文只讲解重点步骤,细节还需大家自己去完成。

        最后第三步:客户端的制作

        重点步骤:定义MQTT客户端变量,利用IP地址、端口号、用户名和密码(用户名和密码取决于服务器有没有设置)连接服务器----->编写发布指令----->编写订阅和取消订阅指令。

连接服务器:

发布指令:

订阅和取消订阅指令:

最终效果:

        这次分享就到这吧,我们分享如何实现上位机和西门子PLC的S7通讯和欧姆龙PLC的Fins通讯。

        注:一直都在CSDN上白嫖知识,饮水思源,我也想成为分享知识的人,由于本人能力有限,难免会有问题,希望大家多多包涵,如果能够帮助到你,那就是我最大的荣幸。

  • 18
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值