MQTT
MQTT是机器对机器(M2M)/物联网(IoT)连接协议。它是一个极其轻量级的发布/订阅消息传输协议。对于需要较小代码占用空间或网络带宽非常宝贵的远程连接非常合适,是专为受限设备和低带宽、高延迟或不可靠的网络而设计。MQTT广泛应用于物联网、移动互联网、智能硬件、车联网、电力能源等领域。
WinCC与MQTT
WinCC从V7.5版本开始增加了对MQTT协议的支持。MQTT协议的引入,对远程数据采集提供了一个不错的接口。不过目前的支持比较有限,仅支持读取,而不支持写入。通过MQTT协议,WinCC只需要简单的几步配置就可以将数据送到SIEMENS MindSphere、Amazon、Microsoft的Azure等公有云。除此之外,我们也可以自己搭建MQTT Broker来接收及转发数据。
MQTT Broker
MQTT Broker的主要职责是接受发布者发布的所有消息,并将其过滤后分发给不同的消息订阅者。MQTT Broker有不少开源产品,我们在之前的文章中已经介绍过了(S7PLC通过MQTT推送消息到手机)。
开源的MQTT Broker虽多,但它们都有这样或者那样的限制,比如有的不支持持久化,有的慢慢的转向了收费模式等。所以这里我们使用了自己编写的一个MQTT Broker,只是目前功能还比较简单,后续也可以根据需求逐步完善。为了方便测试,我们把这个MQTT Broker部署到了腾讯云服务器上。
这里有一点需要补充说明下,腾讯云服务器上看到的网卡地址不是分配的公网地址。所以我们在绑定IP的时候不要写公网IP,直接写内网IP就可以了,如上图所示。
WinCC配置
首先在WinCC左侧资源管理器里面的Cloud Connector上右击,选择“Cloud Connector设置”。
勾选上图中的“通过MQTT将变量值发送到云端”。因为是自己开发的MQTT Broker,所以云服务商选择“Generic(MQTT)”。代理地址就是我们MQTT Broker所在的服务器地址。启动MQTT Broker,点击上图的“测试连接”按钮,可以在MQTT Broker中看到WinCC已经接入。
然后要对变量进行配置,只有勾选了“WinCC云”的变量才支持通过REST或者MQTT传送到云服务商。
配置完成后激活WINCC,改变变量值,然后我们就可以在MQTT Broker上看到传送过来的变量信息了。
自己搭建MQTT Broker的好处是不会受其他厂商限制,另外在数据处理上也比较灵活,比如可以对接到微信小程序、通过短信发送到手机等等。