做了一个物联网相关的项目,整理一下和物联网通信相关的经验。
NB-IOT
通信媒介选择了NB-IOT(窄带物联网),大致原因是它通信功耗低,覆盖广。
NB-IoT是IoT领域一个新兴的技术,支持低功耗设备在广域网的蜂窝数据连接,也被叫作低功耗广域网 NB-IoT支持待机时间长、对网络连接要求较高设备的高效连接。 特点:广覆盖,低功耗,低成本,具备支撑连接的能力,NB-IoT一个扇区能够支持10万个连接。
采用的YeeCOM的NB-IOT N560。一套装备包括DTU,电源,天线,300M年的卡,485-usb转换器一共143元。主要是它可以通过RS485串口通讯,而且给的说明比较详细,支持Modbus轮询,有个测试用的网页。 试着通讯,感觉执行指令还是有大概不到1秒的延迟吧,如果是发送消息,接到回应的话等待时间还有点长。
通信协议MQTT
这一块我没怎么接触,毕竟DTU只要选择通信协议为MQTT就是了。我只要通过Modbus RTU协议通过485串口将数据传给DTU,DTU能自动把信息转换成MQTT协议的。
MQTT是一个基于客户端-服务器的消息发布/订阅传输协议。MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛。
实现MQTT协议需要客户端和服务器端通讯完成,在通讯过程中,MQTT协议中有三种身份:发布者(Publish)、代理(Broker)(服务器)、订阅者(Subscribe)。其中,消息的发布者和订阅者都是客户端,消息代理是服务器,消息发布者可以同时是订阅者。 MQTT传输的消息分为:主题(Topic)和负载(payload)两部分: (1)Topic,可以理解为消息的类型,订阅者订阅(Subscribe)后,就会收到该主题的消息内容(payload); (2)payload,可以理解为消息的内容,是指订阅者具体要使用的内容。 ———————————————— 版权声明:本文为CSDN博主「liefyuan」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/qq_28877125/article/details/78325003
服务器接口
服务器的制作由另一个小组进行,PLC程序由我完成,所以需要设定好和云端服务器通信需要的信息。信息都用ASCII码写,尽可能写的短一些。 写程序的时候就顺便做了一个文档,专门用来写接口参数给其他成员看,事实证明非常方便。和服务器通信方面写了指令,动作,反馈信息。 服务器那边给连接的网址和端口就能通信了。不过具体有什么问题还是等项目做完再看吧。 因为服务器的开发打算他们自己做,而不是采用阿里云,所以对时间戳什么的信息解析都要编写,开发时间比较长,似乎是准备做一年。
程序编写注意事项
和服务器的通信是用ASCII码,所以PLC接收到之后就当字符串解析指令。但是面板采用的是西门子的面板,通信不需要用字符串沟通,直接就可以操作PLC的数据块,位之类的。 所以面板指令的解析和服务器传来的指令解析是两套不一样的代码,没办法共用,代码量大大增加,差点就写不下了。 两套通信指令是并列的,要注意一套通信指令的操作对数据的影响以及对另一套控制系统的简介影响。
|