如何通过4G DTU实现现场仪表的分布式采集并发布到MQTT服务器

技术文章    |     2024

作者:艺捷自动化,其代表作有易为二维码小程序,艺捷自动化网站。
前言,本文以一个具体的工程案例来讲解,如何通过4G DTU实现现场仪表的分布式采集并发布到MQTT服务器。项目在一个机床公司,有40多个电力多功能表,8个水表,分布在厂区各个地方,其中有一些多功能电表在配电室比较集中,有一些多功能电表在厂房内的设备电柜里比较分散,水表则都是分散的,共用了19个有人采集模块,有人是一个公司的品牌,后面我会列出具体的型号。为什么要发布到MQTT服务器呢?是因为这些数据需要接入客户原有的系统,客户具体是什么系统我也没见过。数据接入客户系统的工作是由别的单位负责的,但我知道客户那边新增加了MQTT服务器,就放在厂区办公楼里。通过这个服务器来中转数据。那个的服务器是在内网的,但他们应该是使用了外网服务器的端口映射,来映射到这个内网的服务器上。搭建MQTT服务器我不太懂,但这个事是可以实现的。我主要讲现场采集和发布到MQTT服务器的问题。
这是厂区内安装的MQTT服务器:

article_6_1

第一步是项目的前期准备工作,这些非常复杂和繁琐,需要尽量多的掌握情况。现场勘察不是我去的,最终我拿到了一份项目检测点表。列明了哪些地方,哪些设备需要采集数据。
第二步是现场的施工,这个也是比较复杂的了。牵扯到与厂家协调,很多事情需要晚上停电后加班完成。第一次去的时候安装好了一部分多功能电表和DTU模块了,但还没有插入SIM卡。第二次去的时候要完成剩余多功能电表和水表,以及DTU模块,并调试好通讯。现场施工就不多说了。
第三步就是DTU模块的调试工作了。
首先呢,先在家里做好试验。来看一下什么是MQTT吧,我从网上搜的资料。
MQTT(消息队列遥测传输)是ISO 标准(ISO/IEC PRF 20922)下基于发布/订阅范式的消息协议。它工作在 TCP/IP协议族上,是为硬件性能低下的远程设备以及网络状况糟糕的情况下而设计的发布/订阅型消息协议,为此,它需要一个消息中间件 。这个消息中间件就是支持MQTT的服务器。
MQTT是一个基于客户端-服务器的消息发布/订阅传输协议。MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛。在很多情况下,包括受限的环境中,如:机器与机器(M2M)通信和物联网(IoT)。其在,通过卫星链路通信传感器、偶尔拨号的医疗设备、智能家居、及一些小型化设备中已广泛使用。
来看看都用到了哪些设备,设备型号表:


名称

型号

品牌

备注

1

吸盘天线

USR-QP-XP-TX

有人物联

19

 

2

边缘采集4G DTU

USR-G780 V2

有人物联

19

 

3

智能数字电表

AMR-720F

上海埃盟

43

 

4

电子远传水表

LXSY-DN15-65

山东省依泉仪表

8

 

5

开关电源

MDR-60-12

明纬

8

 

6

现场箱

未知

未知

8

 

7

两芯屏蔽线

未知

未知

-

若干

8

穿线管等附件

未知

未知

-

一宗

来看一下水表现场箱安装好的样子吧。

article_6_2

设备地址的分配,就是modbus rtu中从站地址的分配,多功能电表从41开始,依次编号,到83。水表是有固定的地址,就是水表地址的最后两个数字是默认的地址,注意这个数字是十六进制的,就按固定的地址来。后来的时候有两个水表都是地址20,其实应该是可以通过通讯设定水表的地址的,但我没时间仔细研究,就没改,也不影响,因为每个水表在单独的DTU底下。
USR-G780 V2, 有许多种工作模式: 透明传输模式,云组态模式,HTTPD模式,UDC模式等等。但是这些模式都不能对接人家的系统。人家要求的是MQTT通讯方式。怎么办呢,就是要更新DTU的固件,来支持MQTT和边缘计算模式,但这种模式就不能用有人云。就是说支持MQTT就不能用有人云,用有人云就不能支持MQTT模式。这个更新DTU固件的过程还是费了好大波折,后面会慢慢说。
第3.1步,测试配置DTU。串口线连接电脑和DTU,查看串口号COM5。运行USR-G780 V2配置软件,打开串口,进入配置状态,获取当前参数,设备重启,默认是连接有人的服务器,发送什么数据,就返回什么数据。我用的参数COM5,9600,NONE,8,1,网络透传模式。注意这一步只是测试DTU能用,这里的设置是没有的,后面会全改掉。
第3.2步,测试设备上云。注册/登录有人通行证。添加设备,期间需要关联设备模板,需要预先建立设备模板。关联网关,需要预先建立网关。添加设备模板,云端轮询,选择协议,开启多从机模式,添加变量,可用导出变量修改再导入变量的方法快速建立重复设备变量。编辑设备模板时,导出变量,要删除excel表中变量标识数据,才可以导入变量。
添加网关,填写SN,IMEI,不用开启有人云透传。
云网关参数配置,网页上的有人云控制台,从上部选DM,选IoT是不行的,网关列表,点开网关,参数配置,就可以配置参数了,就省了用一根USB转RS232线来设置参数了。但是升级固件支持MQTT和边缘计算后就不能用有人云了,但可以保留未绑定的网关。
需要注意的是这一步也是没有用的,只是让新手来熟悉有人云的操作。这里还有个坑,如果你插上SIM卡,并在有人云平台上,添加了这个设备,则这张卡会被地域限制。再拿到别的地区就不能用了,可以找有人公司解绑一下。有个技巧是在有人云平台上,只添加网关,是不会被地域限制的。具体就是网页上选DM,就是管理网关页面,这里面添加网关是可以的,不会被地域限制,而且添加了网关以后可以给DTU远程下命令。
第3.3步,硬件升级,设置参数,添加数据点。需要硬件升级才能提供MQTT功能,有人云平台上的固件升级是没有MQTT功能的,是不行的。查看现在的版本V3.0.05。只能通过USB数据线来更新固件。一开始是不能正确安装USB驱动,没法完成硬件升级。试了好几个电脑,也换过数据线,还是安装不了驱动。我死马当活马医,决定就用现有的那一个好的驱动来更新固件。插上DTU插上USB线连到电脑上,会出现USB串行设备(COM7),和2个DEMO Mobile Bordband未安装驱动的设备。我就用这个COM7来更新固件。打开Downloader软件,版本下载,添加文件,选USR-DR504_FLASH_V4.0.00.000000.0101_230627.bin这个文件,开始,出现未检测到有效设备,断电重新上电,刷写继续,固件刷写完成,重启,指示灯亮起,好了,固件版本改了。
今天有人的屈工过来了,用新的驱动,就可以正确的安装设备了。原来是有人给的以及网站上下载的驱动安装程序都是错误的。新的驱动是ZXIC_Develop_Driver新的.exe这个文件。正确安装驱动后,查看设备管理器中名为AT Interface串口的端口号,记下来。
主要的操作步骤是:
1.用USB线插到DTU的口上,打开调试软件USR-G780 V2.1.3,使用AT Interface这个串口号,不用进入调试模式,输入AT+ZFLAG=”BOOT”,0回车,点发送,回应OK就可以了。注意一定要打上回车,再点发送。
2.打开Downloader软件,添加固件文件USR-DR504_FLASH_V4.0.00.000000.0101_230627.bin,点开始,进行到找不到设备,断电重新上电,继续刷写到出现完成。不知要不要断电重启,好像不用。
3.用串口线连到DTU上,打开MQTT专用调试软件,串口用串口线的口,这时候是恢复出厂设置了,所以波特率用默认的115200,获取当前参数,选择边缘计算模式,Modbus协议,MQTT,MQTT连接参数,设置新的波特率9600。进入配置状态,设置所有参数,设备重启,再次获取当前参数应该是边缘计算模式。
下面是数据处理方提供的MQTT服务器的域名和端口,这个填写到MQTT连接的地址和端口处。至于客户端ID,自己定义一个名称就可以了,目的是让MQTT服务器那边有个区分。


域名:

nps.origitec.com

端口号:

 

 

 

详细内容见下面链接。
详细内容