关于设备连接有人云的使用及modbus rtu协议,服务器端TCP调试设置

有人云调试

  • 调试过程
  • 问题
    • 1. 关于modbus rtu协议,实质上有三种
      • modbus基本原理
      • modbus 格式
    • 2. 关于modbus crc16通信校验
    • 3. 关于在ubuntu阿里云服务器端,监听网络数据之调试mNetAssist

之前的一个项目,再拿出来回顾下。

调试过程

  1. 先 要在有人云,用手机号注册一个服务账号,官网显示目前只支持手机号注册。

  2. 再添加一个网关,一般的设备而言,选择不添加SN方式。设置好后,会自动生成一个账号和密码在这里插入图片描述
    这个是要配置到设备的GM5端的。

  3. 添加设备
    点击【设备管理】—【设备列表】—【添加设备】,其他的设置都是比较简单的,详细可以参考官方文档。这里重点说下,关联设备模板,这个也是自己不是很理解的点。 --> 此步官方文档说是为设备配置变量,添加点表。其表述如下:设备模板,它具备批量管理设备的通讯协议、采集方式、变量(点表)采集规则的能力。这里主要指的是modbusRTU标准的协议。所以得对这个协议了解下,详见问题部分。
    这里要注意,设置 寄存器时的问题,和组态软件是一样的,都要将要设置的值+1。也就是实际协议用到值是减1,如读寄存器功能码为03,但要设置成04 ,起始地址为00,就要设置成01。

  4. 设置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"

问题

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. 地址:1个字节 ,取值范围是0-247,如果是0,就是主站广播报文;如果是1-247,则有可能是主站请求或者从站应答。
  2. 功能码:1个字节,也就是报文命令,代表主站对从站的操作,读或者写
  3. 数据:0~ 252个字节,数据字段,主请求报文,从应答报文会有所差异。也就是说假设抓取总线报文,如何区分是主站请求还是从站应答,则需要通过数据字段进行区分了。
  4. 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通信校验

 /***********************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, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 
0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 
0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 
0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 
0x81, 0x40, 0

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/697033.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

家的情感记忆:如何用壁纸讲述你的墙故事?

1、方小童在线工具集 网址: 方小童 该网站是一款在线工具集合的网站,目前包含PDF文件在线转换、随机生成美女图片、精美壁纸、电子书搜索等功能,喜欢的可以赶紧去试试!

HarmonyOS—使用预览器查看应用/服务效果

DevEco Studio为开发者提供了UI界面预览功能,可以查看应用/服务的UI界面效果,方便开发者随时调整界面UI布局。预览器支持布局代码的实时预览,只需要将开发的源代码进行保存,就可以通过预览器实时查看应用/服务运行效果&#xff0c…

探索分布式强一致性奥秘:Paxos共识算法的精妙之旅

提到分布式算法,就不得不提 Paxos 算法,在过去几十年里,它基本上是分布式共识的代名词,因为当前一批常用的共识算法都是基于它改进的。比如,Fast Paxos 算法、Cheap Paxos、Raft 算法等。 由莱斯利兰伯特(L…

Spring6学习技术|AOP

学习材料 尚硅谷Spring零基础入门到进阶,一套搞定spring6全套视频教程(源码级讲解) AOP AOP(Aspect Oriented Programming)是一种设计思想,是软件设计领域中的面向切面编程,它是面向对象编程的…

AIDL的工作原理与使用示例 跨进程通信 远程方法调用RPC

AIDL的介绍与使用 AIDL(Android Interface Definition Language)是Android中用于定义客户端和服务端之间通信接口的一种接口定义语言。它允许你定义客户端和服务的通信协议,用于在不同的进程间或同一进程的不同组件间进行数据传递。AIDL通过…

算法项目(3)—— 从零实现KNN、朴素贝叶斯垃圾邮件分类

本文包含什么? 项目运行的方式项目代码,自己实现KNN算法以及朴素贝叶斯算法.代码介绍运行有问题? csdn上后台随时售后.项目说明 本文主要是自己从0实现KNN算法以及朴素贝叶斯算法.然后使用英文垃圾邮件数据集进行垃圾邮件分类.常见的代码均调用sklearn库来实现,本文自行实现…

从零学习Linux操作系统第二十八部分 shell脚本中的执行流控制

一、什么是执行流、循环执行流 执行流:改变执行顺序,使之更方便操作者 循环执行流:根据脚本是执行流再某一个状态下进行循环执行,进行多次执行后再往下走(for语句) for语句 作用 为循环执行动作 for语句…

opencv判断灰化情况

目的 先说说理论: 在图像处理中,用RGB三个分量(R:Red,G:Green,B:Blue),即红、绿、蓝三原色来表示真彩色,R分量,G分量,B分…

LeetCode LCR 055.二叉搜索树迭代器

实现一个二叉搜索树迭代器类BSTIterator ,表示一个按中序遍历二叉搜索树(BST)的迭代器: BSTIterator(TreeNode root) 初始化 BSTIterator 类的一个对象。BST 的根节点 root 会作为构造函数的一部分给出。指针应初始化为一个不存在…

vue实现拖拽(vuedraggable)

实现效果: 左侧往右侧拖动,右侧列表可以进行拖拽排序。 安装引用: npm install vuedraggable import draggable from vuedraggable 使用: data数据: componentList: [{groupName: 考试题型,children: [{componentType: danxua…

SQLite 的使用

SQLite 是一个轻量级、自包含和无服务器的关系型数据库管理系统(RDBMS),广泛应用于嵌入式系统、移动应用程序和小中型网站。它易于创建、需要的配置较少,并且提供了用于管理和操作数据的强大功能集。本文,我们将带领你…

电路设计(26)——交通信号灯的multism仿真

1.功能要求 使用数字芯片设计一款交通信号灯,使得: 主干道的绿灯时间为60S,红灯时间为45S 次干道的红灯时间为60S,绿灯时间为45S 主、次干道,绿灯的最后5S内,黄灯闪烁 使用数码管显示各自的倒计时时间。 按…

openssl3.2 - 编译 - zlib.dll不要使用绝对路径

文章目录 openssl3.2 - 编译 - 编译时的动态库zlib.dll不要使用绝对路径概述测试zlib特性在安装好的目录中是否正常笔记70-test_tls13certcomp.t80-test_cms.t对测试环境的猜测从头再编译测试安装一次测试一下随便改变位置的openssl用到zlib时是否好使测试一下随便改变位置的op…

Docker Nginx 负载均衡搭建(服务宕机-配置高可用) - 附(Python案例,其它语言同理)

目录 一 . 概要 1. 什么是负载均衡 2. 负载均衡有哪些优势? (1)应用程序可用性 (2)应用程序可扩展性 (3)应用程序安全 (4)应用程序性能 3 . Nginx负载均衡调度策…

核密度分析

一.算法介绍 核密度估计(Kernel Density Estimation)是一种用于估计数据分布的非参数统计方法。它可以用于多种目的和应用,包括: 数据可视化:核密度估计可以用来绘制平滑的密度曲线或热力图,从而直观地表…

win系统下安装php8.3版本并配置环境变量的详细教程

本篇文章主要讲解在win系统下安装和配置php8.3版本,并配置环境变量的详细教程。 日期:2024年2月22日 作者:任聪聪 一、下载php8.3版本包 php8.3版本官方下载地址:https://windows.php.net/download#php-8.3 步骤一、打开下载地址…

【Unity】Unity与安卓交互

问题描述 Unity和安卓手机进行交互,是我们开发游戏中最常见的场景。本教程将从一个简单的例子来演示一下。 本教程需要用到Android Studio2021.1.1 1.Android Studio新建一个工程 2.选择Empty Activity 然后点击Next 3.点击Finish完成创建 4.选择File-New-New Mo…

【python 3.9.18】windowns安装版

因为这个版本官方未提供,所以需要自己编译出来,其他没有的版本可以依据下面的进行生成一个exe也可行。 成品: https://gitee.com/greatLong/python-3.9.18/tree/master/python-3.9.18/PCbuild/amd64 1、环境准备 需要使用到 这里面还需要选…

【MATLAB GUI】 5. 图像处理菜单(菜单编辑器)

看B站up主freexyn的freexyn编程实例视频教程系列36Matlab GUI的学习笔记 任务要求设计一个图像处理菜单,实现图像的打开导入、灰度处理、存储等功能 修改过文件名,所以运行的时候会有一点点报错,但是不影响运行 打开工具栏下边的菜单编辑器…

创建一个基于Node.js的实时聊天应用

在当今数字化社会,实时通讯已成为人们生活中不可或缺的一部分。无论是在社交媒体平台上与朋友交流,还是在工作场合中与同事协作,实时聊天应用都扮演着重要角色。与此同时,Node.js作为一种流行的后端技术,为开发者提供了…