当前位置: 首页 > news >正文

单片机连接有人云上传数据

首先采用有人物联网的模块 ,连接有人云平台服务器 看云平台相关配置

配置连接设备在线后 添加设备

添加设备完成后 添加变量模板

变量模板的添加方式如下 :

本次采用的是标准的MODbus 协议

添加一个温度变量

温度变量如下显示

云平台 下发数据 采集

01 03 00 00 00 01 84 0A

丛机返回数据

01 03 02 00 07 f9 86

云平台 下发数据 采集

01 03 00 01 00 01 D5 CA

丛机返回数据

01 03 04 00 11 98 49

01 03 00 00 00 03 05 CB

丛机返回数据

01 03 02 00 11 78 48

01 03 04 00 22 00 33 1A 2C

01 03 06 00 55 00 66 00 77 8D 40

以下想采用 主动上报的方式 其拓展码 如下

标准Modbus RTU指令

 

寄存器单元(十进制)

功能码

作用

请求及响应格式

 

线圈寄存器

CoilStatus

(00001 - 09999)

1位 读写

0x01

读线圈

指示状态1 = ON,0 = OFF 示例:读取0x0001到0x000A单元的开关状态,现场状态为全开(即全1)

 

 

 

请求:

设备号

功能码

寄存器起始地址

寄存器单元长度

CRC校验

 

 

 

 

 

 

 

 

 

id

01

00

00

00

0A

crcl

crch

 

 

 

 

 

 

 

 

响应:

设备号

功能码

字节数

数据

CRC校验

 

 

 

 

 

 

 

 

 

 

id

01

02

FF

03

crcl

crch

 

 

 

 

 

 

 

0x05

写单个线圈

十六进制FF 00置状态为ON,十六进制00 00 置状态为OFF 示例:将0x00AD单元状态置为ON/OFF

 

 

 

请求:

设备号

功能码

寄存器起始地址

置为ON/OFF

CRC校验

 

 

 

 

 

 

 

 

 

id

05

00

AC

FF

00

crcl

crch

 

 

 

 

 

 

 

 

 

id

05

00

AC

00

00

crcl

crch

 

 

 

 

 

 

 

 

响应:

设备号

功能码

寄存器起始地址

置为ON/OFF

CRC校验

 

 

 

 

 

 

 

 

 

id

05

00

AC

FF

00

crcl

crch

 

 

 

 

 

 

 

 

 

id

05

00

AC

00

00

crcl

crch

 

 

 

 

 

 

0x0F

写多个线圈

示例:从0x0014开始写入10个状态值,数据内容为2个字节:十六进制CD 01(二进制 1100 1101 0000 0001)

 

 

 

请求:

设备号

功能码

寄存器起始地址

寄存器单元长度

字节数

数据

CRC校验

 

 

 

 

 

 

id

0F

00

13

00

0A

02

CD

01

crcl

crch

 

 

 

 

 

响应:

设备号

功能码

寄存器起始地址

寄存器单元长度

CRC校验

 

 

 

 

 

 

 

 

 

id

0F

00

13

00

0A

crcl

crch

 

 

 

 

 

 

离散寄存器

InputStatus

(10001 - 19999)

1位 只读

0x02

读离散输入

示例:读取197—218的开关状态,204-197内容为0xAC(即二进制1010 1100),212-205内容为0xDB(即二进制1101 1011),218-213内容为0x35(即二进制0011 0101)

 

 

 

请求:

设备号

功能码

寄存器起始地址

寄存器单元长度

CRC校验

 

 

 

 

 

 

 

 

 

id

02

00

C4

00

16

crcl

crch

 

 

 

 

 

 

 

 

响应:

设备号

功能码

字节数

数据

CRC校验

 

 

 

 

 

 

 

 

 

id

02

03

AC

DB

35

crcl

crch

 

 

 

 

 

 

保持寄存器

Holding Register(40001 - 49999) 16位 读写

0x03

读保持寄存器

示例:读取寄存器108—110的值,108的内容为0x022B(即555),109的内容为0x0000(即0),110的内容为0x0064(即100)

 

 

 

请求:

设备号

功能码

寄存器起始地址

寄存器单元长度

CRC校验

 

 

 

 

 

 

 

 

 

id

03

00

6B

00

03

crcl

crch

 

 

 

 

 

 

 

 

响应:

设备号

功能码

字节数

数据

CRC校验

 

 

 

 

 

 

id

03

06

02

2B

00

00

00

64

crcl

crch

 

 

 

0x06

写单个寄存器

示例:将数据0x0003写入寄存器单元0x0002

 

 

 

请求:

设备号

功能码

寄存器起始地址

数据

CRC校验

 

 

 

 

 

 

 

 

 

id

06

00

01

00

03

crcl

crch

 

 

 

 

 

 

 

 

响应:

设备号

功能码

寄存器起始地址

数据

CRC校验

 

 

 

 

 

 

 

 

 

id

06

00

01

00

03

crcl

crch

 

 

 

 

 

 

0x10

写多个寄存器

示例:将数据0x000A和0x0102写入从0x0002开始的两个寄存器单元

 

 

 

请求:

设备号

功能码

寄存器起始地址

寄存器单元长度

字节数

数据

CRC校验

 

 

 

 

id

10

00

01

00

02

04

00

0A

01

02

crcl

crch

 

 

 

响应:

设备号

功能码

寄存器起始地址

寄存器单元长度

CRC校验

 

 

 

 

 

 

 

 

 

id

10

00

01

00

02

crcl

crch

 

 

 

 

 

 

输入寄存器

Input Register(30001 - 39999) 16位 只读

0x04

读输入寄存器

示例:读取输入寄存器0x0009单元的值,现场数据为0x000A

 

 

 

请求:

设备号

功能码

寄存器起始地址

寄存器单元长度

CRC校验

 

 

 

 

 

 

 

 

 

id

04

00

08

00

01

crcl

crch

 

 

 

 

 

 

 

 

响应:

设备号

功能码

字节数

数据

CRC校验

 

 

 

 

 

 

 

 

 

 

id

04

02

00

0A

crcl

crch

 

 

 

 

 

 

 

有人扩展指令(本扩展指令非Modbus RTU标准,仅适用于设备与透传云网络通讯的规则)

 

为什么要做扩展指令

由于Modbus RTU协议适用于半双工的总线协议,只能一问一答,服务器做主机,接入设备做从机,可以实现主机主动采集和控制。

但由于网络通讯考虑流量、服务器并发量、网络延迟等原因,无法实现类似在总线中毫秒级的轮询读取,而网络通讯属于全双工,能够同时双向对话,故扩展指令提出支持从机状态主动上报的规则。

 

应用场景1

从机主动上报状态

如Modbus协议的环境控制器,服务器做主机10分钟轮询采集,但若前端人工主动控制,服务器必须等到下个轮询才能得知状态变化。

利用扩展指令可实现人工主动控制,从机主动上报当前的状态。

注:本协议仅适用于使用有人网络模块自主开发的产品,若在RS-485总线中使用,会造成总线混乱。

 

应用场景2

低功耗通讯上报格式

NB-IoT、Lora这类低功耗通讯方式,低功耗模式仅支持主动向服务器上报,上报后断电断网休眠,此时服务器无法做主机主动采集数据。

利用扩展指令格式主动上报数据解决上述问题,服务器按照Modbus协议解析,完成后面的数据存储、报警、推送等功能。

补充:NB-IoT在高功耗模式下也可支持云端主动下发查询指令。

 

寄存器单元(十进制)

功能码

作用

请求及响应格式

 

线圈寄存器

CoilStatus (00001 - 09999) 1位 读写

0x45

上报多个线圈

示例:从0x0014开始写入10个状态值,数据内容为2个字节:十六进制CD 01(二进制 1100 1101 0000 0001)

 

(格式与写多个线圈相同)

请求:

设备号

功能码

寄存器起始地址

寄存器单元长度

字节数

数据

CRC校验

 

 

 

 

id

45

00

13

00

0A

02

CD

01

crcl

crch

 

 

 

响应:

设备号

功能码

寄存器起始地址

寄存器单元长度

CRC校验

 

 

 

 

 

 

 

id

45

00

13

00

0A

crcl

crch

 

 

 

 

 

 

离散寄存器

InputStatus(10001 - 19999) 1位 只读

0x42

上报多个离散寄存器

(格式与写多个线圈相同)

 

 

 

保持寄存器

Holding Register(40001 - 49999) 16位 读写

0x46

上报多个保持寄存器

示例:将数据0x000A和0x0102写入从0x0002开始的两个寄存器单元

 

(格式与写多个保持寄存器相同)

请求:

设备号

功能码

寄存器起始地址

寄存器单元长度

字节数

数据

CRC校验

 

 

id

46

00

01

00

02

04

00

0A

01

02

crcl

crch

 

响应:

设备号

功能码

寄存器起始地址

寄存器单元长度

CRC校验

 

 

 

 

 

 

 

id

46

00

01

00

02

crcl

crch

 

 

 

 

 

 

输入寄存器

Input Register(30001 - 39999) 16位 只读

0x44

上报多个输入寄存器

(格式与写多个保持寄存器相同)

 

 

 

注意和补充

 

协议解释:

1、数据、地址、长度等默认大端在前,但CRC校验是小端在前(低字节在前)crcl crch;

2、有人扩展协议仅适用于设备与透传云的网络通讯层;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

测试结果如下图所示:

相关文章:

单片机连接有人云上传数据

首先采用有人物联网的模块 ,连接有人云平台服务器 看云平台相关配置配置连接设备在线后 添加设备添加设备完成后 添加变量模板 变量模板的添加方式如下 :本次采用的是标准的MODbus 协议添加一个温度变量温度变量如下显示云平台 下发数据 采集01 03 00 00…...

系统集成项目管理工程师:第18章项目风险管理学习笔记

第18章项目风险管理 一、目录 18.1 风险概述 18.1.1 风险的定义 18.1.2 风险的分类 18.1.3 风险的性质 18.2 项目风险管理 18.3 规划风险管理 18.3.1 规划风险管理的输入 18.3.2 规划风险管理的工具与技术 18.3.3 规划风险管理的输出 18.4 识别风险...

【笔试强训选择题】Day3.习题(错题)解析

文章目录 前言一、Day3习题(错题)解析二、Day3习题(原题)练习总结前言 今天我们将进入到第三天的练习,希望能一直坚持下去,不断反思总结错误,得到进步; 一、Day3习题(错…...

基于GPT-4的免费代码生成工具

大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的学生进入到算法…...

Android开发的这一年里,Jetpack的Room源码是怎么狠狠奖励我的?

简述 Android Jetpack的出现统一了Android开发生态,各种三方库逐渐被官方组件所取代。Room也同样如此,逐渐取代竞品成为最主流的数据库ORM框架。这当然不仅仅因为其官方身份,更是因为其良好的开发体验,大大降低了SQLite的使用门槛…...

推荐一款卸载软件的小工具-《UninstallToo》

目录 UninstallToo介绍 UninstallToo下载 UninstallToo使用 总结 UninstallToo介绍 Uninstall Tool 是一款可以用来替代“添加/删除程序”的工具。它允许您显示隐藏的安装程序,按名称过滤已安装程序的列表,强行写在程序,浏览注册表项目&a…...

线程池——JUC随记8

线程池使用方式 1、一池N线程(Executors.newFixedThreadPool(n)) import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors;public class ExecutorDemo {public static void main(String[] args) {ExecutorService execu…...

SpringCloudAlibaba微服务调用组件-Feign

SpringCloudAlibaba微服务调用组件-Feign 本项目代码与笔记已存放在Gitee仓库 地址: 代码,笔记 文章目录SpringCloudAlibaba微服务调用组件-Feign1. 什么是Feign1.1 优势2. Spring Cloud Alibaba快速整合OpenFeign1)引入依赖2)编写…...

高效学习方法论

2023.03.17 《程序员的三门课:技术精进、架构修炼、管理探秘 / 于君泽等著》学习笔记 学会学习一、高效学习的方法1、管理好自己的目标1)评估能力2)制定目标3)评估目标2、利用好碎片时间3、在同一时间只做一件事二、高效学习的途径…...

C语言结构体(一篇学会)

C语言结构体 在C语言中,结构体是一种自定义的数据类型,它允许用户将不同类型的数据组合在一起。结构体由多个变量组成,这些变量称为结构体的成员。结构体成员可以是不同的数据类型,如整数、浮点数、字符或其他结构体等。 结构体…...

嵌入式软件开发之Linux下C编程

目录 前沿 Hello World! 编写代码 编译代码 GCC编译器 gcc 命令 编译错误警告 编译流程 Makefile 基础 何为 Makefile Makefile 的引入 前沿 在 Windows 下我们可以使用各种各样的 IDE 进行编程,比如强大的 Visual Studio。但是在Ubuntu 下如何进…...

普通Java工程师 VS 优秀架构师

1 核心能力 1.1 要成为一名优秀的Java架构师 只懂技术还远远不够,懂技术/懂业务/懂管理的综合型人才,才是技术团队中的绝对核心。 不仅仅是架构师,所有的技术高端岗位,对人才的综合能力都有较高的标准。 架构路线的总设计师 规…...

Java:SpringBoot实现ApplicationEvent事件的监听和发布

通过发布订阅模式实现数据的异步处理,比如异步处理邮件发送 新建SpringBoot项目 项目结构 . ├── pom.xml └── src└── main├── java│ └── com│ └── example│ └── demo│ ├── Application.java│ …...

星戈瑞-Sulfo-Cyanine3 azide?磺酸基-Cy3-N3叠氮基水溶性染料

Sulfo-Cyanine3 azide? 品牌:星戈瑞 CAS号:2055138-89-9 外观: 暗红色晶体 分子量:720.83 分子式:C34H45N6NaO8S2 纯度:95% 储藏条件:-20C 下避光保存 Sulfo-Cyanine3 azide 是一种…...

十大经典排序算法(下)

🍓个人主页:bit.. 🍒系列专栏:Linux(Ubuntu)入门必看 C语言刷题 数据结构与算法 HTML和CSS3 目录 1.6 快速排序 1. 算法步骤 2. 动图演示 3.代码实现 1.7 堆排序 1. 算法步骤 2. 动图演示 3. 代码实现 1.8 计数排…...

网络协议分析期末复习(四)

目录 0.前言 1.IP层对改善TCP性能支持的机制 2.TCP防止半开放连接的机制 3.TCP协议中强推位(P)和紧急位(U)的用法 4.TCP的流量控制和拥塞控制的异同点 异: (1)两者的特点不同:…...

Matlab对图像和视频的简单处理(图像视频文件读取和输出,转灰度图,取指定帧的图像)

文章目录1.图像文件的读取2.图像效果展示3.将彩色图转换为灰度图4.视频文件的读取5.读取视频中指定帧的图像6.图片文件的报错1.图像文件的读取 语法介绍: A imread(filename) A imread(filename, fmt)参数介绍: filename:要读取的图像文…...

ArrayList源码分析

ArrayList源码分析目标:一、 ArrayList的简介二、ArrayList原理分析2.1 ArrayList的数据结构源码分析2.2 ArrayList默认容量&最大容量2.3 为什么ArrayList查询快,增删慢?2.4 ArrayList初始化容量1、创建ArrayList对象分析:无参数2、创建A…...

SpringBoot IOC、DI、@Autowired、@Resource、作用域

一、初识Spring1.1 Spring是什么Spring是一个轻量级Java开发框架,目的是为了解决企业级应用开发的业务逻辑层和其他各层的耦合问题。它是一个分层的开源框架,为开发Java应用程序提供全面的基础架构支持。Spring负责基础架构,Java开发者可以专…...

链表相关oj题

1.Leetcode203 移除链表元素 解题思路:从头节点开始进行元素删除,每删除一个元素,需要重新链接节点 struct ListNode* removeElements(struct ListNode* head, int val){struct ListNode*dummyheadmalloc(sizeof(struct ListNode));dummyhea…...

【Linux】操作系统(Operator System)

操作系统(Operator System )一、操作系统的概念二、操作系统的作用三、系统调用和库函数一、操作系统的概念 操作系统是一组控制和管理计算机软硬件资源,为用户提供便捷使用的计算机程序的集合,是配置在计算机硬件系统上的第一层…...

机器学习自学笔记——感知机

感知机预备知识 神经元 ​ 感知机算法最初是由科学家从脑细胞的神经凸起联想而来。如下图,我们拥有三个初始xxx值,x1,x2,x0x_1,x_2,x_0x1​,x2​,x0​。其中x01x_01x0​1为一个初始的常量,专业上称作“偏置”。每个xxx的值都会乘上一个权重…...

C++ Primer第五版_第三章习题答案(21~30)

文章目录练习3.21练习3.22练习3.23练习3.24练习3.25练习3.26练习3.27练习3.28练习3.29练习3.30练习3.21 请使用迭代器重做3.3.3节的第一个练习。 #include <vector> #include <iterator> #include <string> #include <iostream>using std::vector; usi…...

colmap+openmvs进行三维重建流程全记录

window下的colmapopenmvs进行三维重建流程全记录 1.colmap安装与配置 可参考&#xff1a;https://blog.csdn.net/weixin_44153180/article/details/129334018?spm1001.2014.3001.5501 2.openmvs安装与配置 可参考&#xff1a;https://blog.csdn.net/rdw1246010462/article…...

yolov8命令行运行参数详解

序言 整理来自yolov8官方文档常用的一些命令行参数&#xff0c;官方文档YOLOv8 Docs yolov8命令行的统一运行格式为&#xff1a; yolo TASK MODE ARGS其中主要是三部分传参&#xff1a; TASK(可选) 是[detect、segment、classification]中的一个。如果没有显式传递&#xf…...

分布式锁简介

Redis因为单进程、性能高常被用于分布式锁&#xff1b;锁在程序中作用是同步工具&#xff0c;保证共享资源在同一时刻只能被一个线程访问。 Java中经常用的锁synchronized、Lock&#xff0c;但是Java的锁智能保证单机的时候有效&#xff0c;分布式集群环境就无能为力了&#xf…...

【嵌入式Linux学习笔记】Linux驱动开发

Linux系统构建完成后&#xff0c;就可以基于该环境方便地进行开发了&#xff0c;相关的开发流程与MCU类似&#xff0c;但是引入了设备树的概念&#xff0c;编写应用代码要相对复杂一点。但是省去了很多配置工作。 学习视频地址&#xff1a;【正点原子】STM32MP157开发板 字符…...

2023年中国高校计算机大赛-团队程序设计天梯赛(GPLT)上海理工大学校内选拔赛(同步赛)(H题)(线段树)

又到了万物复苏的季节&#xff0c;家乡的苹果树结果了。像往常一样小龙同学被叫回家摘苹果。 假设需要采摘的一棵树上当前有a颗苹果&#xff0c;那么小龙会采摘⌈a/3⌉颗苹果&#xff0c;其中⌈x⌉表示不小于x的最小整数。 但是&#xff0c;为了可持续发展&#xff0c;若a小于1…...

Linux内核Thermal框架详解十三、Thermal Governor(3)

接前一篇文章Linux内核Thermal框架详解十二、Thermal Governor&#xff08;2&#xff09; 二、具体温控策略 上一篇文章介绍并详细分析了bang_bang governor的源码。本文介绍第2种温控策略&#xff1a;fair_share。 2. fair_share fair_share governor总的策略是频率档位⽐较…...

TikTok品牌出海创世纪(二)

目录 1.推荐算法打造王者品牌 2.品牌聚焦海外Z群体 3.持续扩展应用场景 加速品牌全球化传播 品牌聚焦海外Z群体 “这个地球上&#xff0c;三分之二的人都在用Facebook“&#xff0c;这是对Facebook曾经统治地位最直观的描述。 但如今&#xff0c;这家全球社交媒体巨头的光环正…...

wordpress的文章如何备份/好用的搜索引擎

2019独角兽企业重金招聘Python工程师标准>>> 1 进入php源代码目录中的mbstring所在目录cd /usr/local/src/php-5.2.4/ext/mbstring/2 执行php安装后目录中的bin/phpize文件/usr/local/php/bin/phpize3 进入php源代码目录cd /usr/local/src/php-5.2.4/4 执行上述目录…...

学校网站的建设费用/百度开户代理

许多外贸公司在选择邮箱时&#xff0c;单次群发量和邮箱容量都是客户选择邮箱品牌的必要条件。小编了解到一些做外贸的公司是需要跟海外的客户发邮件业务往来的&#xff0c;所以&#xff0c;他们需要单次群发量非常高&#xff0c;目前小编了解到&#xff0c;还有一些外贸公司的…...

商务型网站模板/个人优秀网页设计

有时我们需要判断是不是ajax请求来决定模块输出还是json格式输出.PHP判断ajax请求的原理:在发送ajax请求的时候&#xff0c;我们可以通过XMLHttpRequest这个对象&#xff0c;创建自定义的header头信息&#xff0c; 在jquery框架中&#xff0c;对于通过它的$.ajax, $.get, or $.…...

廊坊网站制作潍坊公司电话/推广软文范例大全500

1.final修饰&#xff1a;数据、方法和类1) 修饰属性&#xff0c;表示属性【只能赋值一次】(1)基本类型&#xff1a;值不能被修改&#xff1b;(2)引用类型&#xff1a;引用不可以被修改2) 修饰方法&#xff0c;表示方法不可以重写&#xff0c;但是可以被子类访问(如果方法不是 p…...

网站建设 58同城/如何优化网站推广

1数据库的代码自动生成 2ArcGIS版本的实现原理 A表和D表存储 3断点续传&#xff0c;多线程下载。 4类似Evernote的同步机制。 5点弧拓扑数据编辑 6事务的机制 1.服务器编程——服务器队列和客户端 2.异步编程 3.池化 4.透视和正视 5.Boost库的使用 6.资源的统一管理 7.SharpDev…...

珠海哪家做企业网站公司好/咖啡seo是什么意思

航空订票系统系统(SSHMYSQLHTML5)(毕业论文近10000字, 包含程序代码,MySql数据库,数据库脚本) 【项目包含】【项目功能】【源码下载】本系统登录的角色有二种&#xff1a;会员、管理员、普通用户。管理员是能够管理会员信息、航班信息的管理、订单信息的管理、留言板的管理。会…...