LTE-669P 4G边缘网关系列 阿里云平台连接教程

今天介绍物联设备 LTE-669P 4G边缘网关如何接入阿里云平台系列。

LTE-669P是一款工业级4G JSON无线边缘解析网关,支持RS485/232采集上报,支持TCP/UDP/HTTP/MQTT协议,支持Modbus RTU转JSON轮询上报功能,支持本地、远程参数配置,支持移动、联通、电信4G网络,支持连接自建服务器和阿里云IOT物联云平台,JSON网关内部自动解析Modbus报文转为JSON格式,支持JSON网关切换为DTU工作模式,双向底层报文透传。

硬件准备

1) LTE-669P 4G边缘网关一套,包含4G主机、4G天线、12V电源。
2) 4G 数据卡一张,移动,联通,电信均可。
3) USB转232/485串口线配件,用于连接电 脑和设备。

电源和串口接线说明:
电源红线接VIN,白线接GND,232接口和USB转232转接头交叉接,RX-TX,TX-RX,GND-GND。

软件准备

1) CONFIG参数配置软件,用于配置设备串口参数,及MQTT参数等

2) MODBUS转换寄存器参数配置软件,用于配置现场传感器MODBUS寄存器表

接下来分别描述以下几个方面:

  • 网关工作流程
  • MODBUS参数说明
  • 阿里云IoT平台接入
  • NTP时间和GPS数据获取
  • 自定义json模板
  • 其他特殊关键字(服务器下发json指令)
  • SHELL指令
  • Reg1-Reg10本地化参数

Modbus转json功能主要用于采集Modbus RTU传感器数据,将采集的数据按配置的数据类型解析,并且打包成key-value的json格式上报到服务器,支持服务器下发json格式命令,省去了用户自己解析数据和转换格式的麻烦。支持连接自建服务器和阿里云IoT平台。

1.2 网关工作流程

json网关DTU通过配置Modbus相关参数往串口发送相应的Modbus指令,485设备收到指令以后会返回采集的数据,网关DTU通过数据类型进行解析,并将解析以后的数值以key-value的格式打包成json发送到服务器。流程如下:

1)配置服务器IP地址/域名和端口号,如果是MQTT协议还需要配置ClinetID、username、password、发布主题和订阅主题等参数,配置轮询周期和上报周期、json数据格式。
2)配置Modbus相关参数,Modbus子站地址、寄存器地址、数据类型、计算公式。
3)如果是阿里云IoT平台,需要在服务器上创建设备;如果是自建服务器,需要在服务器端打开相应的上位机软件。
4)服务器接收到打包的json数据。

二、MODBUS参数说明

参数项

说明

功能标识符

用户自定义,只能是数字或者英文字符

描述

对标签的描述

数据区

Modbus RTU功能码:0X-01, 1X-02, 3X-04, 4X-03

Modbus 子站地址

Modbus RTU子站地址

Modbus 寄存器地址

Modbus RTU寄存器地址

采集数据类型

共7种数据类型,上传的报文根据数据类型进行解析

int16: 两字节,有符号
uint16: 两字节,无符号
int32: 四字节,有符号
uint32: 四字节,无符号

float: 单精度浮点数,四字节

bool: bool类型值,只有0,1两种类型,一般用于开关量

BCD-2: 两字节BCD码

BCD-4: 四字节BCD码

BCD-8: 八字节BCD码

字节序

int32/uint32/float类型数据才有字节序,其他类型此参数无效

公式

采集数据的计算公式,格式为valuey=valuex*a+b,valuex为原始值,valuey为经过公式计算后的值,上报的数据为valuey,如果此项为空则取原始值上报。注:bool类型不支持公式运算

保存文件

保存json配置文件

调入文件

调入保存的json配置文件

添加

添加功能标识符(采集指令)

删除

删除功能标识符(采集指令)

清空

清空所有配置的参数

读取Modbus参数

读取配置的Modbus参数

配置Modbus参数

配置Modbus参数

三、使用说明

3.1 阿里云IoT平台接入

3.1.1 进入阿里云IoT平台官网https://www.aliyun.com,登录账号,然后点击右上角的控制台。

3.1.2 进入控制台后选择产品与服务-物联网平台。

注:第一次使用阿里云IoT平台物联网服务器需要先开通服务才能使用。

3.1.3 选择产品-创建产品。

3.1.4 创建产品,产品名称可以自己定义,其他参数按图片上的配置即可。

3.1.5 创建产品成功以后添加设备。

3.1.6 添加好设备后会弹出设备鉴权证书,新建一个文本文档,点击一键复制,将信息复制到一个TXT文档里。

3.1.7配置连接阿里云IoT平台的相关参数。

打开参数配置软件左下角的MQTT客户端,选择阿里云登录信息合成器,将信息复制到粘贴区,点击生成登录信息,将相关信息填入参数配置软件对应的位置。

打开“DTUCFG-V1.1.5”,将生成的阿里云IoT平台MQTT相关参数配置进对应的参数项。发布号配置“属性上报”内容
/sys/a1XSBRUBMXW/866262044304197/thing/event/property/post
订阅号配置“设置设备属性”内容:
/sys/a1XSBRUBMXW/866262044304197/thing/service/property/set

阿里云IoT平台相关参数配置完以后需要配置“变化周期”和“固定上传周期”,变化周期表示发送Modbus指令的时间间隔,固定上传周期表示将json包发送到服务器的周期,单位都为毫秒。
注:除了连接阿里云IoT平台的必要参数,还需要将Modbus转json开关打开,json格式设置为阿里云IoT平台。

3.1.8切换到Modbus RTU参数,根据实际需要采集的Modbus RTU设备配置相应的参数,本手册用一个温湿度-光照度传感器示例,Modbus RTU地址及寄存器定义如下:

可以看出温度和湿度为两个字节,温度有符号,数据类型是int16;湿度无符号,数据类型是uint16,转换为十进制以后都需要除以10,公式配置为valuey=valuex/10。光照度为四个字节,无符号,数据类型为uint32,字节序为1234,无公式,取原始值。参数配置如下:

点击工具-Modbus参数配置可以进入Modbus配置界面

注:点击添加按钮添加功能标识符,删除按钮删除功能标识符。

参数配置成功以后需要点复位设备,参数才会生效

3.1.9阿里云IoT平台物理模型配置

在阿里云IoT平台的产品-功能定义里面设置每个功能标识符的定义(根据每个寄存器的实际类型定义,不然阿里云IoT平台平台会提示参数类型错误),定义好以后点发布。当DTU采集数据上报后可以在设备-物理模型里面看数据,数据是Modbus RTU协议解析后的数据。

注:虽然实际温度是int16类型,湿度是uint16类型,但经过公式计算以后有小数,所以阿里云IoT平台平台上定义温度和湿度的数据类型为float浮点数类型才能正确解析;光照度不需要通过公式计算,上报的值为原始值,类型为uint32。

  1. 点击产品-功能定义,选择编辑草稿。

  1. 点击添加自定义功能

  1. 按照采集数据的类型添加功能。

注:标识符需要和Modbus RTU参数中的功能标识符保持一致,这样阿里云IoT平台平台才能正确解析物理模型

(4)功能定义完以后点左下角发布

3.1.10当设备采集数据并上报到阿里云IoT平台,可以在设备-物理模型数据查看。现在就实现了Modbus RTU转json并上报到阿里云IoT平台的功能。

3.1.11 阿里云下发设置
如果配置了可读可写的开关量类型,比如继电器,可以使用阿里云设置功能。先在阿里云IoT平台物理模型添加一个继电器。

3.1.12 在Modbus参数配置软件配置IO口的Modbus RTU相关参数(以众山RTU为例,默认Modbus RTU地址为100,DI1、DI2的寄存器地址分别为17、18;DO1、DO2的寄存器地址分别为20、21,数据类型为bool)

3.1.13 从阿里云IoT平台的在线调试功能下发控制继电器的指令

阿里云IoT平台下发的原始指令为json格式,网关DTU会转换为相应的Modbus指令控制继电器,RTU返回的Modbus指令也会打包成json然后立即上报,这样可以实时控制和获取继电器状态。

3.2.3 json指令下发

4G网关支持中心服务器端下发json格式的数据读写指令,然后自动转换为本地Modbus RTU串口读写寄存器的指令,读取指令格式为{"key1":"?","key2":"?",...};也支持下发寄存器设置指令,设置指令格式为{"key1":0,"key2":100,...}。可以读取/设置一个key或多个key,也可以同时读取和设置key,比如{"key1":"?","key2":1,...},key必须为已经在Modbus参数里配置好的功能标识符名称,或者是系统关键字(第六章有详细说明),对顺序没要求。响应的Modbus RTU指令或者系统关键字参数也会立即打包成key-value的json格式并上报,value值为获取的实时数据或者配置的数据。

四、Lua本地控制代码说明
用户可以配置Lua代码来判断获取数据的大小,并根据上下限阈值执行不同的操作,实现本地控制。

示例:采集一个温湿度、光照度传感器数据,并根据传感器阈值控制继电器动作进行本地报警或控制。
按照2.2节说明配置好相应的参数

配置的Lua代码:

local temp=data.illumination if temp>1000 then ModbusTojson.count=ModbusTojson.count+1 count_str=tostring(ModbusTojson.count) SHELL="@CS=count:"..count_str if ModbusTojson.count==5 then ModbusTojson.count=0 SHELL="@CS=High illumination warning!@D=1@DO1=1" end else SHELL="@CS=illumination normal@D=1@DO1=0@PUB=1" end

注:如果Lua代码太长,配置的对话框也很长,可以直接点Enter回车配置

正常模式Lua代码为(方便阅读):

Lua代码实现效果:

当光照度小于或等于1000时,串口打印illumination normal,关闭DO1,并且不往服务器上报数据;当光照度大于1000时,先判断次数,串口打印count数量,如果Lua脚本连续执行5次光照度都大于1000,串口打印High illumination warning!,DO1打开,并且将采集的数据立即上报到服务器。

赋值语句为local  y=data.x,  其中x为功能标识符(必须为英文),y为获取的标识符值,后面就是判断变量的大小和执行相应的操作。所有操作可以通过SHELL脚本执行,具体请参考脚本编程手册。ModbusTojson.count表示计数,如果采集很频繁告警以后就会一直上报数据,通过ModbusTojson.count计数可以设置上传周期。

说明:

①data.x为获取功能标识符的值,标识符只能配置为英文

②count为计数的个数,初始为0,可以通过判断count数量设置告警周期

③@PUB指令表示是否立即发布数据到服务器,@PUB=1表示发送,@PUB=0或者不配置表示不发送,只有等到了上报周期才发送。

④“SHELL=”后面可以是所有支持的脚本指令,具体请参考《LTE-xxx脚本编程手册》

⑤当最后一条功能标识符的指令发送完成执行一次Lua代码,执行周期=变化周期*标识符数量

一般流程为:先定义一个变量获取标识符值,设定变量阈值,判断大小,(bool值则判断真假,0为假,1为真),然后根据判断执行具体的操作,所有操作可以通过SHELL脚本执行,比如打印信息,上报数据,开/关继电器等。

五、NTP时间和GPS数据获取

5.1 NTP时间获取

当把功能标识符设置为TS时,表示获取NTP时间,其他Modbus RTU相关参数可以不用设置(无效),上报的json包里面会获取NTP时间,格式为年/月/日,星期,时:分:秒,比如获取的TS时间为2020/12/02,03,14:17:10,表示2020年12月02日,星期三,14:17:10。

注:如果想使用NTP时间功能,需要先把NTP时间开关打开

  1. 参数配置

2)TS时间上报

5.2 GPS数据采集

注:GPS版本才支持此指令,否则指令无效

5.2.1采集指令

如果是带GPS版本,可以将功能标识符配置为GPS_xx来获取GPS数据,xx可以是以下内容,不同的指令获取的GPS格式也不同。具体见下表:

指令

名称

格式

含义

GPS_xx

GPS定位信息采集

GPS_GGA

采集标准的GGA信息

GPS_RMC

采集标准的RMC信息

GPS_GSA

采集标准的GSA信息

GPS_JW

只采集经纬度,格式为 经度,纬度

GPS_WJ

只采集经纬度,格式为 纬度,经度

GPS_Aliyun 阿里IOT平台空间可视化数据格式

参数配置:

只需要将功能标识符配置为GPS_GGA,其他参数不用配置。

服务器接收的数据如下:

注:设备支持阿里IOT平台空间可视化GPS位置数据接口,设置GPS格式参数选项为。为"GPS_Aliyun"即可。

5.2.2 报文解析

示例:

1)配置标识符为GPS_GGA,采集的GPS数据为标准的GGA数据,格式解析如下:

$GPGGA,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,M,<10>,M,<11>,<12>*xx

<1> UTC 时间,格式为hhmmss.sss;

<2> 纬度,格式为ddmm.mmmm(第一位是零也将传送);

<3> 纬度半球,N 或S(北纬或南纬)

<4> 经度,格式为dddmm.mmmm(第一位零也将传送);

<5> 经度半球,E 或W(东经或西经)

<6> 定位质量指示,0=定位无效,1=定位有效;

<7>使用卫星数量,从00到12(第一个零也将传送)

<8>水平精确度,0.5到99.9

<9天线离海平面的高度,-9999.9到9999.9米M指单位米

<10>大地水准面高度,-9999.9到9999.9米M指单位米

<11>差分GPS数据期限(RTCMSC-104),最后设立RTCM传送的秒数量

<12>差分参考基站标号,从0000到1023(首位0也将传送)。

2)配置标识符为GPS_JW,则只返回经纬度信息,比如104.10194,30.65984。104.10194为经度,30.65984为纬度,可以用此经纬度在地图上定位。

六、用户自定义json模板
用户可以自定义json格式,通过用户json模板参数可以在json包里添加一些自定义标识符,比如DTU ID,Device name,Location,ts时间戳等信息。自定义json内容可以直接添加到原始json包内,也可以添加到原始的json包外,或者添加多重json。

注:"ts":"?1"返回UNIX格式的时间戳;"ts":"?2"返回年/月/日,星期,时:分:秒格式的时间戳

采集温湿度、光照度数据,原始json包为:

{

"illuminance" : 300,

"humidity" : 65.7,

"temperature" : 19.7
}

例1:添加到原始的json包内

配置json模板为:

{"DTU ID":"0001","Device name":"test01","Location":"chengdu","ts":"?2"}

上报到服务器的json包为:

例2:添加到原始的json包外

配置json模板为:

{"DTU ID":"0001","Device name":"test01","Location":"chengdu","ts":"?1","params":{}}

上报到服务器的json包为:

例3:添加到原始的json包内部和外部

配置json模板为:

{"Device name":"test01","Location":"chengdu","params":{"DTU ID":"0001","ts":"?1"}}

上报到服务器的json包为:

例4:添加多重json包

{"Devicename":"test01","DTU ID":"0001","Location":"chengdu",

"params":[{"property":"?1","value":"?2"}]}
注:红色的"?1"和"?2"是固定的格式,不能修改。"?1"表示获取标识符名称,"?2"表示获取标识符对应的值。
上报到服务器的json包为:

七、其他特殊关键字(服务器下发json指令)

7.1 SHELL
可以从服务器下发json格式的SHELL脚本,DTU会临时执行一次脚本。
7.1.1 阿里云IoT平台下发SHELL脚本
(1)在阿里云IoT平台定义物理模型功能标识符为SHELL,数据类型为text,长度为1024。

(2)切换到在线调试,从标识符“SHELL”下发脚本,就可以实现阿里云IoT平台下发SHELL脚本,执行完毕后会返回脚本内容。脚本的内容为所有支持的脚本指令,具体请参考《LTE-XXX 4G DTU脚本编程手册》。

7.1.2 自建服务器下发SHELL脚本
连接上服务器以后,直接从服务器下发{"SHELL":"@C=010300000001V1@D=1"}

7.2 luaCode
可以从服务器下发json报文配置用户Lua代码。
7.2.1 阿里云IoT平台配置用户Lua代码
(1)在阿里云IoT平台定义物理模型功能标识符为luaCode,数据类型为text,长度为2048。

(2)切换到在线调试,从标识符“luaCode”下发用户Lua代码。例如采集温湿度传感器数据,可以在lua代码里面获取温度值,然后在做相应的操作,Lua代码设置成功以后会返回到服务器。

7.2.2 自建服务器配置用户Lua代码
连接上服务器以后,直接从服务器下发{"luaCode":"local temp=data.temperature ...(some thing you do)"}

7.3 Reg1-Reg10
LTE-xxx网关版本有10个可读可写的寄存器供用户调用,可以用做阈值判断。用户可以自己配置Reg参数的值,只能是数字(可以是小数)。

7.3.1 阿里云IoT平台配置Reg

(1)在阿里云IoT平台定义物理模型功能标识符为Reg1~Reg10,数据类型为int32,取值范围为0~int32最大范围,这里定义的1000。

切换到在线调试,从标识符“Reg1”下发设置的值。

7.3.2 自建服务器配置Reg
连接上服务器以后,直接从服务器下发{"Reg1":100}

设置成功后,DTU会立即上报配置的Reg值。

4G Modbus Json边缘网关接入阿里云IoT平台相关推荐

  1. Modbus设备通过边缘网关接入阿里云IoT平台

    无需编程,通过边缘计算网关把工业领域常见的Modbus协议的硬件设备接入IoT云平台. 前提条件 根据本产品的环境要求,选择运行边缘计算产品的硬件载体,例如准备一个硬件网关或者PC机,然后安装本产品. ...

  2. 10分钟虚拟设备接入阿里云IoT平台实战

    10分钟虚拟设备接入阿里云IoT平台实战 1. 准备工作 1.1 注册阿里云账号 使用个人淘宝账号或手机号,开通阿里云账号,并通过实名认证(可以用支付宝认证) 1.2 免费开通IoT物联网套件 产品官 ...

  3. 阿里IOT云平台(二)---10分钟物联网设备接入阿里云IoT平台

    本文转载自:https://www.geek-workshop.com/thread-37883-1-1.html.基于VS Code和Node.js 我替换了原文中的温度.湿度属性图(主要是修正了标 ...

  4. 踏入物联网第一篇——STM32F103开发板接入阿里云IOT平台

    刚开始学习物联网,在研究STM32的路上记录下心得!!! 最近入手了一块STM32F103的板子,顺手就研究了下 如何通过MQTT协议连接阿里云物联网平台. 开发板是STM32F103C8T6  芯片 ...

  5. C# 基于开源MQTT自主接入阿里云IoT平台

    1. 准备工作 1.1 注册阿里云账号 使用淘宝账号或手机号,开通阿里云账号,并通过实名认证(可以用支付宝认证) 1.2 免费开通IoT物联网套件 产品官网 https://www.aliyun.co ...

  6. Linux设备如何接入阿里云IoT平台

    本文以在Ubuntu x86_64系统上编译设备端C语言SDK为例,介绍设备上云的配置和开发过程. 前提条件 在进行本示例配置前,您需要完成以下准备工作: 注册阿里云账号,并完成实名认证. 开通物联网 ...

  7. 10分钟物联网设备接入阿里云IoT平台

    前言 最近尝试了一下阿里云IoT物联网平台,还是蛮强大的.在此记录一下学习过程. 本教程不需要任何外围硬件,一台电脑和一根能上网的网线即可.算是一篇Hello World了.先上效果图 第一章 准备工 ...

  8. 电信NB-IoT设备对接阿里云IoT平台实战——实践类

    众所周知,中国电信的NB-IoT设备必须直连电信CTWing平台,无法直接在阿里云IoT,AWS IoT,腾讯云IoT 管理中国电信的NB-IoT设备. 今天我们就给大家介绍如何通过阿里云IoT企业物 ...

  9. 【ODYSSEY-STM32MP157C】上报数据到阿里云 IoT 平台

    我们在上一节<[ODYSSEY-STM32MP157C]驱动 UART 读取传感器数据> 已经成功读取到 PMS5003ST 传感器的数据,本节我们将学习如何将设备接入阿里云 IoT 平台 ...

最新文章

  1. wordpress php 7 速度优化,WordPress优化提速必做的6种操作代码篇
  2. 在centos7上安装Jenkins
  3. 读书笔记011:《伤寒论》- 手厥阴心包经
  4. Photoshop CS6将多张图片合成GIF动态图或视频,并将其保存导出
  5. 几个ASP.NET小技巧
  6. mac地址随机变化的解决方法(安卓手机通用)不用ROOT
  7. pro*c添加SQLCHECK后编译报错PLS-S-00201
  8. UVA11173 Grey Codes【位操作】
  9. python+selenium自动创建随笔
  10. lua luarocks_通过Luarocks使Lua开发变得容易
  11. 态势感知平台分析流程
  12. java 单例 内存释放_java 单例模式 防止内存泄漏
  13. 如何批量删除 Word 中的页眉页脚、图片、超链接等内容?
  14. 北京将广纳贤才 建设国际人才社区
  15. Spring Boot项目介绍(值得学习,超详细)
  16. tensorflow6-7
  17. 白鹭(egret)引擎安装及使用
  18. 常见的web中间件java框架漏洞总结
  19. 基站网口损坏检查方法
  20. 机器学习(一)-导论

热门文章

  1. 40岁失业了,没有一技之长,手里有20万闲钱,该怎么弄?
  2. 吕鑫MFC学习系列十
  3. PHP解决网页乱码问题
  4. python一元二次方程表达式_Python实现求解一元二次方程的方法示例
  5. Linux分区挂载卡住,Linux分区挂载
  6. 惠普服务器之开启虚拟化功能吗,VT虚拟化是什么?惠普主板怎么开启VT虚拟化?...
  7. orangepi pc lubuntu 设置分辨率
  8. linux用kde启动桌面,KDE Plasma 5.15桌面环境启动速度更快,Konsole完全支持Emojis
  9. jqweui.com
  10. 拓嘉启远电商:拼多多长尾词位于哪里会比较好