关于设备连接有人云的使用及modbus rtu协议,服务器端TCP调试设置
有人云调试
- 调试过程
- 问题
- 1. 关于modbus rtu协议,实质上有三种
- modbus基本原理
- modbus 格式
- 2. 关于modbus crc16通信校验
- 3. 关于在ubuntu阿里云服务器端,监听网络数据之调试mNetAssist
- 4. 使用有人FAE传给的设置软件问题???
之前的一个项目,再拿出来回顾下。
调试过程
-
先 要在有人云,用手机号注册一个服务账号,官网显示目前只支持手机号注册。
-
再添加一个网关,一般的设备而言,选择不添加SN方式。设置好后,会自动生成一个账号和密码

这个是要配置到设备的GM5端的。 -
添加设备
点击【设备管理】—【设备列表】—【添加设备】,其他的设置都是比较简单的,详细可以参考官方文档。这里重点说下,关联设备模板,这个也是自己不是很理解的点。 --> 此步官方文档说是为设备配置变量,添加点表。其表述如下:设备模板,它具备批量管理设备的通讯协议、采集方式、变量(点表)采集规则的能力。这里主要指的是modbusRTU标准的协议。所以得对这个协议了解下,详见问题部分。
这里要注意,设置 寄存器时的问题,和组态软件是一样的,都要将要设置的值+1。也就是实际协议用到值是减1,如读寄存器功能码为03,但要设置成04 ,起始地址为00,就要设置成01。 -
设置GM5模块,通过程序来实现的话,主要就是设置这些选项
#define AT_HEART "AT+HEARTEN=ON"
#define AT_HEARTP "AT+HEARTTP=COM"
#define AT_HEARTDT "AT+HEARTDT=773467"//w4g
#define AT_HEARTTM "AT+HEARTTM=30" //heart set#define AT_REG "AT+REGEN=ON"
#define AT_REGTP "AT+REGTP=CLOUD"
#define AT_CLOUD "AT+CLOUD=00052025000000000001,ZLEc9aUg"完整的设置流程参考如下:
>[Tx->][15:06:07][asc]
+++
>[Rx<-][15:06:07][asc]
a
>[Tx->][15:06:07][asc]
a
>[Rx<-][15:06:07][asc]
+ok执行完毕
>[Tx->][15:06:10][asc]
AT+SAFEATEN?>[Rx<-][15:06:10][asc]+SAFEATEN:OFFOK>[Tx->][15:06:10][asc]
AT+WKMOD=NET>[Rx<-][15:06:10][asc]OK>[Tx->][15:06:10][asc]
AT+SOCKAEN=ON>[Rx<-][15:06:10][asc]OK>[Tx->][15:06:10][asc]
AT+SOCKA=TCP,52025.cnsh.iot-tcp.com,15000>[Rx<-][15:06:10][asc]OK>[Tx->][15:06:10][asc]
AT+SOCKASL=LONG>[Rx<-][15:06:10][asc]OK>[Tx->][15:06:10][asc]
AT+SHORTATM=10>[Rx<-][15:06:10][asc]OK>[Tx->][15:06:11][asc]
AT+SOCKABKEN=OFF>[Rx<-][15:06:11][asc]OK>[Tx->][15:06:11][asc]
AT+SOCKBEN=OFF>[Rx<-][15:06:11][asc]OK>[Tx->][15:06:11][asc]
AT+SOCKBBKEN=OFF>[Rx<-][15:06:11][asc]OK>[Tx->][15:06:11][asc]
AT+SOCKCEN=OFF>[Rx<-][15:06:11][asc]OK>[Tx->][15:06:11][asc]
AT+SOCKCBKEN=OFF>[Rx<-][15:06:11][asc]OK>[Tx->][15:06:11][asc]
AT+SOCKDEN=OFF>[Rx<-][15:06:11][asc]OK>[Tx->][15:06:11][asc]
AT+SOCKDBKEN=OFF>[Rx<-][15:06:11][asc]OK>[Tx->][15:06:11][asc]
AT+SOCKRSTIM=5>[Warn][15:06:11]+CME ERROR:53>[Tx->][15:06:11][asc]
AT+SOCKRSNUM=60>[Rx<-][15:06:11][asc]OK>[Tx->][15:06:11][asc]
AT+HEARTEN=ON>[Rx<-][15:06:11][asc]OK>[Tx->][15:06:11][asc]
AT+HEARTTM=30>[Rx<-][15:06:12][asc]OK>[Tx->][15:06:12][asc]
AT+HEARTTP=COM>[Rx<-][15:06:12][asc]OK>[Tx->][15:06:12][asc]
AT+HEARTSORT=USER>[Rx<-][15:06:12][asc]OK>[Tx->][15:06:12][asc]
AT+HEARTDT=773467>[Rx<-][15:06:12][asc]OK>[Tx->][15:06:12][asc]
AT+REGEN=ON>[Rx<-][15:06:12][asc]OK>[Tx->][15:06:12][asc]
AT+REGSND=LINK>[Rx<-][15:06:12][asc]OK>[Tx->][15:06:12][asc]
AT+REGTP=CLOUD>[Rx<-][15:06:12][asc]OK>[Tx->][15:06:12][asc]
AT+CLOUD=00052025000000000001,12345678>[Rx<-][15:06:12][asc]OK>[Tx->][15:06:12][asc]
AT+UART=115200,8,1,NONE,NONE>[Rx<-][15:06:12][asc]OK>[Tx->][15:06:12][asc]
AT+UARTFT=50>[Rx<-][15:06:12][asc]OK>[Tx->][15:06:12][asc]
AT+UARTFL=1024>[Rx<-][15:06:13][asc]OK>[Tx->][15:06:13][asc]
AT+E=OFF>[Rx<-][15:06:13][asc]OK>[Tx->][15:06:13][asc]
AT+CMDPW=usr.cn#>[Rx<-][15:06:13][asc]OK>[Tx->][15:06:13][asc]
AT+STMSG=[USR-G771]>[Rx<-][15:06:13][asc]OK>[Tx->][15:06:13][asc]
AT+APN=CMNET,,>[Rx<-][15:06:13][asc]OK>[Tx->][15:06:13][asc]
AT+RSTIM=1800>[Rx<-][15:06:13][asc]OK>[Tx->][15:06:13][asc]
AT+NATEN=OFF>[Rx<-][15:06:13][asc]OK>[Tx->][15:06:13][asc]
AT+UATEN=OFF>[Rx<-][15:06:13][asc]OK>[Tx->][15:06:13][asc]
AT+CACHEN=OFF>[Rx<-][15:06:13][asc]OK>[Tx->][15:06:13][asc]
AT+SAFEATEN=OFF>[Rx<-][15:06:13][asc]OK>[Tx->][15:06:13][asc]
AT+NTPEN=OFF>[Rx<-][15:06:13][asc]OK>[Tx->][15:06:13][asc]
AT+NTPTM=1>[Rx<-][15:06:13][asc]OK>[Tx->][15:06:13][asc]
AT+NTPSVR=>[Warn][15:06:14]+CME ERROR:53>[Tx->][15:06:14][asc]
AT+S>[Rx<-][15:06:14][asc]OK云端发送的数据为:01 03 00 00 00 01 84 0Acrc16 在线计算网址为https://www.23bei.com/tool/59.html
问题
1. 关于modbus rtu协议,实质上有三种
Modbus RTU(Remote Terminal Unit 远程终端单元):这种方式常采用RS-485做为物理层,一般利用芯片的串口实现数据报文的收发,报文数据采用二进制数据进行通信。
Modbus ASCII :报文使用 ASCII 字符。ASCII 格式使用纵向冗余校验和。Modbus ASCII 报文由冒号 (“:”)开始 和换行符 (CR/LF) 结尾构成。
Modbus TCP,上面两种支持串口,而Modbus TCP是最近开发的协议扩展,允许Modbus协议通过TCP / IP网络传输。 通过网络进行通信的固有延迟和其他方面,需要对如何保持请求和响应彼此同步进行一些修改,并确保不从从设备接收错误数据。
与Modbus RTU相比,Modbus TCP在PDU的包装方式上有所不同。 包含PDU的TCP帧以2字节的MODBUS应用协议(MBAP)事务标识符开始,而不是从ID。 当TCP层处理该功能时,也不需要CRC执行错误检查。
参照人家的写的,多熟悉下。
modbus基本原理
由于要进行通信,所以要有传输数据的存储区,线圈,表示的是位,而寄存器,表示的占16个位,数据,也就是说表示的是最小单位,至于为什么叫这些名字,主要是modbus最初就是为了解决电线多了之后乱的问题。
存储区的范围:5位标准地址(也有扩展到6位的),Y XXXX//第一位表示哪个存储区,后面4位表示地址,表示类型的位,没有2,这个是规定好的。也没有0000这个地址,而是从0001开始
线圈寄存器(Coil Register)(输出线圈)bool、00001 - 09999、可读可写
离散输入寄存器(Discrete Input Register)(输入线圈)bool、10001 - 19999、只读
输入寄存器(Input Register)16位值、30001 - 39999、只读
保持寄存器(Holding Register)(输出寄存器)16位值、40001 - 49999、可读可写
存储区的概念仅是为了人与人之间交流,理解之用,实际协议使用的是后面的地址,因为前面根据功能码可以判断出读、写的类型。
关于功能码编码问题:有两种类型数据 寄存器和线圈 + 两种操作 可读可写 + 写两种方式 一次是单个还是多个,也就是说总共有6种组合。读输出线圈 01 读输入线圈 02 读输出寄存器 03 读输入寄存器 04 写单个线圈 05 写单个寄存器06
写多个输出线圈 15 写多个输出寄存器 16(十进制表示)
modbus 格式
modbus主要采用主请求,从应答的方式,也就是主机要数据,其数据结构都是:
- 地址:1个字节 ,取值范围是0-247,如果是0,就是主站广播报文;如果是1-247,则有可能是主站请求或者从站应答。
- 功能码:1个字节,也就是报文命令,代表主站对从站的操作,读或者写
- 数据:0~ 252个字节,数据字段,主请求报文,从应答报文会有所差异。也就是说假设抓取总线报文,如何区分是主站请求还是从站应答,则需要通过数据字段进行区分了。
- CRC校验:2 个字节 采样CRC16,16位循环冗余校验。
基本的读取通信流程: 主机发送,写其是一样的
第1 字节ARD : 从机地址码(=001~254)
第 2 字节03H : 读寄存器值功能码
第3、4 字节 : 要读的寄存器开始地址
第5、6 字节 : 要读的寄存器数量
第7、8 字节 : 从字节1 到6 的CRC16 校验和
从机应答:
第1 字节ARD : 从机地址码(=001~254)
第2 字节03H : 返回读功能码
第3 字节 : 字节总数,字节计数
第4~7 字节 : 寄存器数据
第8、9 字节 : 从字节1 到7 的CRC16 校验和
2. 关于modbus crc16通信校验
在线计算crc16网址为:crc16校验
/***********************CRC查表法校验*************************/// CRC 高位字节值表
unsigned char code auchCRCHi[260] = {
0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,
0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,
0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0,
0x80, 0x41, 相关文章:
关于设备连接有人云的使用及modbus rtu协议,服务器端TCP调试设置
有人云调试 调试过程问题1. 关于modbus rtu协议,实质上有三种modbus基本原理modbus 格式2. 关于modbus crc16通信校验3. 关于在ubuntu阿里云服务器端,监听网络数据之调试mNetAssist4. 使用有人FAE传给的设置软件问题???之前的一个项目,再拿出来回顾下。 调试过程 先 要在有…...
开源图表库Echarts 简介与基本使用
ECharts 是一个使用 JavaScript 实现的开源可视化图表库,由百度团队开发。它提供了丰富的图表类型,如折线图、柱状图、饼图、地图、雷达图等,并且可以轻松地与其他前端框架和库集成。ECharts 的设计目的是为了满足复杂数据的可视化需求&#…...
变更ip后怎么查现在的代理ip地址?代理IP在网络请求中有哪些优势?
要查看当前的代理IP地址,可以尝试以下方法 浏览器设置:在大部分浏览器中,可以通过菜单选项中的“设置”或“帮助”来查找关于代理服务器的设置。在这里,可以看到当前使用的代理服务器地址、端口号以及是否启用了代理服务。在线工具…...
C#浮点运算出错问题
在计算单价等活动的时候,我们经常会用到double 浮点进行运算,但是在乘除的时候经常出现精度丢失问题 decimal 关键字表示 128 位数据类型。 同浮点型相比,decimal 类型具有更高的精度和更小的范围,这使它适合于财务和货币计算 dou…...
WPF 控件禁用时,显示悬浮提示
WPF 控件禁用时,显示悬浮提示 控件在禁用状态下,按钮是没有悬浮提示信息的,是事件触发的机制; 如果要禁用下也有悬浮提示,可以在控件外面加一层,例如: <Border Grid.Column"1" To…...
在 Windows 上使用 VC++ 编译 OpenSSL 源码的步骤
在 Windows 上使用 VC 编译 OpenSSL 源码的步骤如下: 准备工作 安装 Visual Studio 2017 或更高版本。安装 Perl 脚本解释器。安装 NASM 汇编器。 编译步骤 下载 OpenSSL 源码。解压 OpenSSL 源码。打开命令行工具,并进入 OpenSSL 源码目录。运行以下…...
【MySQL】解决在join表时一对多的情况下重复数据的问题
在MySQL中进行JOIN操作,特别是在处理一对多关系的表时,可能会出现重复的记录,这是因为左表(或右表)中的每一项在与右表(或左表)连接时,如果对应有多条匹配记录,则会生成多…...
高并发Server的基石:reactor反应堆模式
业务开发同学只关心业务处理流程。但是我们开发的程序都是运行服务端server上,服务端server接收到IO请求后,是如何处理请求并最终进入业务流程的呢?这里不得不提到reactor反应堆模型。nginx tomcat redis nodejs dubbo等软件的网络处理模型都…...
Linux安全基线与加固
基于CIS 基线 GitHub - daniel-armbrust/linux-security-baseline: Linux Security Baseline based on CIS Benchmarks. |----------------[ GNU/Linux安全基线与加固-0.3 ]----------------|0. About this doc1. Routine security baseline1.1 Security fix update1.2 Pass…...
应对电脑重新分区文件消失:预防措施、常见成因与恢复关键要点
电脑重新分区文件不见了是一个常见的问题,通常发生在用户对硬盘进行重新分区、格式化或操作系统重装过程中,可能导致已存在的文件和数据暂时不可见或永久丢失。 **预防文件丢失的方法:** 1. **提前备份**: 在进行任何重大磁盘操作前ÿ…...
本地配置多个git账户及ll设置
本地配置多个git账户 清除全局配置将命令行,切换到ssh目录生成GitLab和Gitee的公钥、私钥去对应的代码仓库添加 SSH Keys添加私钥ll设置 管理密钥验证仓库配置关于gitgitee.com: Permission denied (publickey) 清除全局配置 此步骤可以不做,经测试不影…...
week04day04(爬虫)
一. 嵌套构造URL 下载所有英雄的皮肤图片:因为每个英雄图片的网址不同,但是有共同点,通过构建这个网址,再经过循环建立 所有链接 import requests import os# 1. 获取所有英雄的ID def get_all_hero_id():url https://game.gti…...
【数据结构初阶 6】二叉树:堆的基本操作 + 堆排序的实现
文章目录 🌈 Ⅰ 二叉树的顺序结构🌈 Ⅱ 堆的概念与性质🌈 Ⅲ 堆的基本操作01. 堆的定义02. 初始化堆03. 堆的销毁04. 堆的插入05. 向上调整堆06. 堆的创建07. 获取堆顶数据08. 堆的删除09. 向下调整堆10. 判断堆空 🌈 Ⅳ 堆的基本…...
IDEA Debug框的 show execution point按钮没了
在这里右键: Add Action: 搜索添加: 本文由博客一文多发平台 OpenWrite 发布!...
突破编程_C++_面试(类(1))
面试题 1 :解释一下 C 中的类是什么,它有哪些基本特性? C 中的类(class)是面向对象程序设计的基本构成单位,它是一种自定义的数据类型,用于封装数据以及操作这些数据的方法。类是创建对象的模板…...
vue项目使用vue2-org-tree
实现方式 安装依赖 npm i vue2-org-tree使用的vue页面引入 <template><div class"container"><div class"oTree" ><vue2-org-tree name"test":data"data":horizontal"horizontal":collapsable"…...
Vue30 自定义指令 函数式 对象式
实例 <!DOCTYPE html> <html><head><meta charset"UTF-8" /><title>自定义指令</title><script type"text/javascript" src"../js/vue.js"></script></head><body><!-- 需求1&…...
JAVA高并发——单例模式和不变模式
文章目录 1、探讨单例模式2、不变模式 由于并行程序设计比串行程序设计复杂得多,因此我强烈建议大家了解一些常见的设计方法。就好像练习武术,一招一式都是要经过学习的。如果自己胡乱打,效果不见得好。前人会总结一些武术套路,对…...
RabbitMQ(一):消息队列MQ
目录 1 消息队列MQ1.1 MQ简介1、什么是MQ2、MQ的优势流量削峰应用解耦异常处理数据分发分布式事务 3、消息中间件的弊端4、常用的MQ 1.2 MQ中几个基本概念1.3 MQ的通信模式1.4 消息的发布策略1.5 常用消息中间件协议1、AMQP协议2、MQTT协议3、OpenMessage协议4、kafaka协议 1 消…...
HarmonyOS—使用预览器查看应用/服务效果
DevEco Studio为开发者提供了UI界面预览功能,可以查看应用/服务的UI界面效果,方便开发者随时调整界面UI布局。预览器支持布局代码的实时预览,只需要将开发的源代码进行保存,就可以通过预览器实时查看应用/服务运行效果,…...
STM32 PVD中断防数据丢失实战:手把手教你配置2.9V阈值与紧急保存逻辑
STM32 PVD中断防数据丢失实战:手把手教你配置2.9V阈值与紧急保存逻辑 当嵌入式设备在野外采集数据或进行关键操作时,突然断电可能导致数月积累的传感器数据毁于一旦。我曾在一个农业物联网项目中亲历这种灾难——某次田间设备因电池接触不良断电…...
应对2026知网维普算法更新:论文降AI全攻略,实测3款主流工具与手动微调方法
自从央视公开探讨初稿写作的AI味儿现象:据相关数据显示,近六成师生习惯使用生成式辅助,其中近三成学生将其用于核心初稿的撰写,各高校针对AIGC的审查便日益严格。 正是因为这种大背景,四月一到,定稿通知刚…...
如何快速掌握哔哩下载姬:B站视频下载的终极免费解决方案
如何快速掌握哔哩下载姬:B站视频下载的终极免费解决方案 【免费下载链接】downkyi 哔哩下载姬downkyi,哔哩哔哩网站视频下载工具,支持批量下载,支持8K、HDR、杜比视界,提供工具箱(音视频提取、去水印等&…...
告别背包爆满!TQVaultAE:泰坦之旅装备管理的终极解决方案
告别背包爆满!TQVaultAE:泰坦之旅装备管理的终极解决方案 【免费下载链接】TQVaultAE Extra bank space for Titan Quest Anniversary Edition 项目地址: https://gitcode.com/gh_mirrors/tq/TQVaultAE 你是否曾在《泰坦之旅》的冒险中࿰…...
Consul-K8s实战:Kubernetes与Consul服务网格的无缝集成指南
1. 项目概述:当Consul遇见Kubernetes如果你正在Kubernetes集群里管理微服务,并且已经听说过或者正在使用HashiCorp Consul来做服务发现和配置管理,那么hashicorp/consul-k8s这个项目绝对是你绕不开的工具。简单来说,它不是一个独立…...
react项目优化方案
下面给你一套实战级、可直接落地的 React 项目优化策略,覆盖 渲染性能、打包体积、代码层面、体验层面、工程层面。 适合 中大型 React / React TS 项目。一、渲染性能优化(最核心 ⭐) 1️⃣ 减少不必要的重渲染 ✅ React.memo const Child …...
惠普OMEN游戏本终极性能优化:OmenSuperHub开源工具完全指南
惠普OMEN游戏本终极性能优化:OmenSuperHub开源工具完全指南 【免费下载链接】OmenSuperHub 使用 WMI BIOS控制性能和风扇速度,自动解除DB功耗限制。 项目地址: https://gitcode.com/gh_mirrors/om/OmenSuperHub 还在为惠普OMEN游戏本官方软件的臃…...
5种高效集成方案:Bilibili视频解析API的终极实用指南
5种高效集成方案:Bilibili视频解析API的终极实用指南 【免费下载链接】bilibili-parse bilibili Video API 项目地址: https://gitcode.com/gh_mirrors/bi/bilibili-parse bilibili-parse是一款基于PHP实现的B站视频解析API工具,通过简洁优雅的技…...
3分钟掌握TegraRcmGUI:Switch破解必备的RCM注入神器
3分钟掌握TegraRcmGUI:Switch破解必备的RCM注入神器 【免费下载链接】TegraRcmGUI C GUI for TegraRcmSmash (Fuse Gele exploit for Nintendo Switch) 项目地址: https://gitcode.com/gh_mirrors/te/TegraRcmGUI 想要解锁你的Nintendo Switch的无限潜力吗&a…...
从零开始将个人小项目的大模型API切换至Taotoken的过程与感受
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 从零开始将个人小项目的大模型API切换至Taotoken的过程与感受 1. 迁移前的项目状态与动机 我维护着一个用于内容摘要和分类的个人…...
