振南技术干货集:制冷设备大型IoT监测项目研发纪实(3)
注解目录
1.制冷设备的监测迫在眉睫
1.1 冷食的利润贡献
1.2 冷设监测系统的困难
(制冷设备对于便利店为何如何重要?了解一下你所不知道的便利店和新零售行业。关
于电力线载波通信的论战。)
2、电路设计
2.1 防护电路
2.1.1 强电防护
2.1.2 弱电防护
(浪涌、脉冲群、静电、过压、雷击,你的电路扛得住吗?加些防护吧。)
2.2 电路复用(电路设计,仔细思考一下,不要作重复劳动。)
3、协议设计
3.1 内外机通信协议
(电力线通信环境是复杂而恶劣的。振南设计的时分复用与冗余编码协议,了解一下。)
3.2 主机与 WIFI Agent 通信协议
(乐鑫 ESP8266 连接 WIFI,数据上私有云。Json 了解一下。)
4、自动化生产与测试
4.1 自动化烧录
4.2 自动化测试
(芯片预处理、自动化烧录和测试,半个月生产 9000 套硬件,看看我是如何作到的。)
5、工程测试与安装
5.1 工程测试(手机蓝牙远程调试)
5.2 工程安装
(看我们上天入地安装设备。蓝牙调试,几十米外无线烧录,一部手机全搞定。)
6、冷设监测数据分析
(开放一些内部数据,看看实际效果。)
7、冷设监测故障预判作用评估
7.1 故障预判时效
7.2 对维修保养的验收指导作用
7.3 故障报警受气温的影响
(努力没有白费,省下的是实实在在的真金白银。)
8、冷设预警的典型案例
1)申虹路某店
2)恒通商务园某店
(这里有 ABC IOT 系统的内部监测数据,一切的努力都归结于这些曲线上。)
3
协议设计
3.1 内外机通信协议
先说一下电力线载波通信机制背景:
电力线载波通信硬件层面没有主从与寻址过滤机制,某一个节点发送数据,同一电力线网络下(同相,无变压器隔离),所有其他节点均可接收到数据(排除电力线干扰的理想情况下)如图 8.16 所示。

图 8.16 一个内机 +N 个外机的电力载波通信模型
即电力线载波通信仅工作在广播通信方式。
电力线载波通信的特点:带宽较小,即每次传输数据量较小;干扰大,可能导致数据通信失败率较高。
制定协议的原则:
(1)防止外机与内机通信时对电力线的争抢,即实现有序的无冲突的通信;
(2)外机与内机自 身通信故障 诊断,以便从通信故障中恢复;
(3) 容忍恶劣的干扰因素,保障最大限度数据传输;
(4)在有限的数据带宽下,尽量多的传输更多信息。
内外机之间的通信采用电力线载波通信,经过多次的筛选测试,最终振南选定了 ZBKJ的模块,如图 8.17 所示。

图 8.17 ZBKJ 的电力载波通信模块
这是一家实力蛮强的公司,模块上所使用的芯片是他们自主研发的,如图 8.18 所示
主机(内机)请求帧如下:

图 8.18 ZBKJ 自主研发的电力载波通信芯片
![]()
电力载波模块每次发送接收固定 20 字节数据,不足部分补 0。
请求帧为了防止数据丢失,采用重复编码,即 10 个 AA55BB66,从机只要接收到至少1个AA55BB66 则认为接收到请求。
外机回传数据帧:
外机回传一次数据长度固定为 40 字节,即两次电力线通信。采用 4 字节反码配对编码共可传输 10 组信息。


4 字节前 2 字节与后 2 字节可反码配对,则说明此组数据有效,进而进行解析。
这种方式在传输过程中就算有个别字节丢失,它也能最大限度的解析到足够的信息。
我们不光关心外机回传的采样数据,同时我们也很关心外机自身工作是否正常,所以我们继续做出了如下定义:



4 字节反码配对编码数据还可以表达更丰富的信息:




一共是 40 个字节,就可以将从机(外机)的采集数据、电路诊断信息、固件版本以及人机监控属性描述清楚了,而且任何字节的丢失并不影响其他数据的解析。
有人可能会问一个问题。“我看这套系统是采用主机主动广播请求。从机来回复的方式工作,如何解决数据在电力线上碰撞的问题?”其实,这个问题就如同 RS485 总线的广播一样,从机接收到广播请求帧之后,并不能立即将数据进行回应。振南的做法是各自延时各自的ID值后再回应,如图 8.19 所示。

图 8.19 内机一次广播请求各从机延时发送回应
这样,主机(内机)在广播请求之后,等待约 10s,即可接收到来自各从机(外机)的数据了。
3.2主机与WiFi Agent 通信协议
主机获取到各个从机的数据并解析之后,最终需要将结果上传到云平台,以便进行进一步的展示或数据分析,在这套系统中主机通过 WiFi Agent 实现数据上传。WiFi Agent 是基于乐鑫ESP8266 进行单独开发的,这个由专门的嵌人式工程师来负责(它一方面对 8266 的开发方法比较了解,另一方面对 ABC IOT 云平台的数据接人也比较有经验),基本的示意如图 8.20 所示。

图 8.20 主机接收从机数据解析后通过 WiFi Agent 上传平台
所以这就涉及主机与 WiFi Agent 之间的协议设计,通过与开发人员商议,最终确定使用json 来进行传输。
json 来对数据进行编码,我们来举个例子:

json 实质上是一个字符串,其中包含了各分机的采集、诊断等信息,同时还有主机的相关信息,比如主机所在店的店号,这样将更加方便管理。主机将其通过串口发送给 WiFi Agent,然后它再将其处理为它与云平台之间的格式,进而上传。
相关文章:
振南技术干货集:制冷设备大型IoT监测项目研发纪实(3)
注解目录 1.制冷设备的监测迫在眉睫 1.1 冷食的利润贡献 1.2 冷设监测系统的困难 (制冷设备对于便利店为何如何重要?了解一下你所不知道的便利店和新零售行业。关 于电力线载波通信的论战。) 2、电路设计 2.1 防护电路 2.1.1 强电防护…...
1143. 最长公共子序列
给定两个字符串 text1 和 text2,返回这两个字符串的最长 公共子序列 的长度。如果不存在 公共子序列 ,返回 0 。 一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以…...
EASYEXCEL(一)
1.读取excel 读监听器 Slf4j public class StudentReadListener extends AnalysisEventListener<Student> {// 每读一样,会调用该invoke方法一次Overridepublic void invoke(Student data, AnalysisContext context) {System.out.println("data "…...
竞赛YOLOv7 目标检测网络解读
文章目录 0 前言1 yolov7的整体结构2 关键点 - backbone关键点 - head3 训练4 使用效果5 最后 0 前言 世界变化太快,YOLOv6还没用熟YOLOv7就来了,如果有同学的毕设项目想用上最新的技术,不妨看看学长的这篇文章,学长带大家简单的…...
第一类曲线积分@对弧长的曲线积分
文章目录 abstract对弧长的曲线积分曲线形构件的质量第一类曲线积分曲线积分存在性利用曲线积分的定义描述曲线形构件质量问题推广曲线积分可加性闭曲线积分 曲线积分性质曲线积分的计算方法证明(部分推导) 小结曲线弧显函数形式方程下的曲线积分公式推广例例例 abstract 在积…...
【TypeScript】常见数据结构与算法(二):链表
文章目录 链表结构(LinkedList)链表以及数组的缺点数组链表的优势 什么是链表?封装链表相关方法源码链表常见面试题237-删除链表中的节点206 - 反转链表 数组和链表的复杂度对比 链表结构(LinkedList) 链表以及数组的缺点 链表…...
原型模式 (Prototype Pattern)
定义: 原型模式(Prototype Pattern)是一种创建型设计模式,它用于创建重复的对象,同时保持性能。这种模式的核心思想是通过复制一个已存在的实例来创建新的实例,而不是新建实例并对其进行初始化。原型模式适…...
项目总结报告(案例模板)
软件项目总结报告模板套用: 项目概要项目工作分析经验与教训改进建议可纳入的项目过程资产 --------进主页获取更多资料-------...
C++ Qt QByteArray用法介绍
作者:令狐掌门 技术交流QQ群:675120140 csdn博客:https://mingshiqiang.blog.csdn.net/ 文章目录 一、QByteArray的基本用法1、初始化和赋值2、访问和修改元素3、 常用方法4、数据转换二、QByteArray与文件操作三、QByteArray与网络编程四、QByteArray数据编码1、Base64 编解…...
蓝桥杯物联网竞赛_STM32L071_3_Oled显示
地位: 对于任何一门编程语言的学习,print函数毫无疑问是一种最好的调试手段,调试者不仅能通过它获取程序变量的运行状态而且通过对其合理使用获取程序的运行流程,更能通过关键变量的输出帮你验证推理的正确与否,朴素的…...
python-opencv轮廓检测(外轮廓检测和全部轮廓检测,计算轮廓面积和周长)
python-opencv轮廓检测(外轮廓检测和全部轮廓检测,计算轮廓面积和周长) 通过cv2.findContours,我们可以进行轮廓检测,当然也有很多检测模式,我们可以通过选择检测模式,进行外轮廓检测ÿ…...
LeetCode [简单] 1. 两数之和
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。 你可以按任意顺序返回…...
C++设计模式之工厂模式(下)——抽象工厂模式
抽象工厂模式 介绍示例示例使用运行结果抽象工厂模式的优缺点优点缺点 总结 介绍 抽象工厂模式是一种创建型设计模式,它提供了一种封装一组相关或相互依赖对象的方式,而无需指定它们具体的类。它允许客户端使用抽象接口来创建一系列相关的对象ÿ…...
2023亚太杯数学建模A题思路分析 - 采果机器人的图像识别技术
1 赛题 问题A 采果机器人的图像识别技术 中国是世界上最大的苹果生产国,年产量约为3500万吨。与此同时,中国也是世 界上最大的苹果出口国,全球每两个苹果中就有一个,全球超过六分之一的苹果出口 自中国。中国提出了一带一路倡议…...
关于Flink的旁路缓存与异步操作
1. 旁路缓存 1. 什么是旁路缓存? 将数据库中的数据,比较经常访问的数据,保存起来,以减少和硬盘数据库的交互 比如: 我们使用mysql时 经常查询一个表 , 而这个表又一般不会变化,就可以放在内存中,查找时直接对内存进行查找,而不需要再和mysql交互 2. 旁路缓存例子使用 dim层…...
MyBatis-Plus的分页插件和乐观锁插件
MyBatis-Plus: 探索分页查询和乐观锁插件 在现代的Web应用开发中,高效的数据处理是不可或缺的一部分。MyBatis-Plus,作为MyBatis的增强版,提供了多种插件来简化和优化数据库操作。在这篇博客中,我们将重点介绍两个非常实用的插件…...
批量将本地N个英文Html文档进行中文翻译-操作篇
Unity3D特效百例案例项目实战源码Android-Unity实战问题汇总游戏脚本-辅助自动化Android控件全解手册再战Android系列Scratch编程案例软考全系列Unity3D学习专栏蓝桥系列ChatGPT和AIGC 👉关于作者 专注于Android/Unity和各种游戏开发技巧,以及各种资源分…...
解决cad找不到vcruntime140.dll的方法,实测有效的5个的方法
最近,我在使用CAD软件时遇到了一个困扰我已久的问题:由于找不到vcruntime140.dll文件而导致CAD无法正常运行。经过一番努力和尝试,我终于找到了解决这个问题的方法。那么,如何解决vcruntime140.dll丢失的问题呢?本文将…...
2023亚太杯数学建模C题:我国新能源电动汽车的发展趋势,思路模型代码
问题C 我国新能源电动汽车的发展趋势 赛题思路:获取思路见文末名片,第一时间更新 新能源汽车是指以先进技术原理、新技术、新结构的非常规汽车燃料为动力来源( 非常规汽车燃料指汽油、柴油以外的燃料),将先进技术进行汽车动力控制…...
英语学习-爆破音
英文爆破音有:[p],[b],[t],[d],[k],[g]。 同时爆破音的发音会根据前后音的不同,发音不同,具体如下: ⒈ [p],[b],[t],[d],[k],[g] 中的任何两个音素相邻时,前面的发不完全爆破音,后面的就要完全地爆破。如…...
深入浅出Asp.Net Core MVC应用开发系列-AspNetCore中的日志记录
ASP.NET Core 是一个跨平台的开源框架,用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET Core 中的日志记录 .NET 通过 ILogger API 支持高性能结构化日志记录,以帮助监视应用程序行为和诊断问题。 可以通过配置不同的记录提供程…...
1.3 VSCode安装与环境配置
进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件,然后打开终端,进入下载文件夹,键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...
cf2117E
原题链接:https://codeforces.com/contest/2117/problem/E 题目背景: 给定两个数组a,b,可以执行多次以下操作:选择 i (1 < i < n - 1),并设置 或,也可以在执行上述操作前执行一次删除任意 和 。求…...
【2025年】解决Burpsuite抓不到https包的问题
环境:windows11 burpsuite:2025.5 在抓取https网站时,burpsuite抓取不到https数据包,只显示: 解决该问题只需如下三个步骤: 1、浏览器中访问 http://burp 2、下载 CA certificate 证书 3、在设置--隐私与安全--…...
python如何将word的doc另存为docx
将 DOCX 文件另存为 DOCX 格式(Python 实现) 在 Python 中,你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是,.doc 是旧的 Word 格式,而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...
基于Docker Compose部署Java微服务项目
一. 创建根项目 根项目(父项目)主要用于依赖管理 一些需要注意的点: 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件,否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...
在Mathematica中实现Newton-Raphson迭代的收敛时间算法(一般三次多项式)
考察一般的三次多项式,以r为参数: p[z_, r_] : z^3 (r - 1) z - r; roots[r_] : z /. Solve[p[z, r] 0, z]; 此多项式的根为: 尽管看起来这个多项式是特殊的,其实一般的三次多项式都是可以通过线性变换化为这个形式…...
永磁同步电机无速度算法--基于卡尔曼滤波器的滑模观测器
一、原理介绍 传统滑模观测器采用如下结构: 传统SMO中LPF会带来相位延迟和幅值衰减,并且需要额外的相位补偿。 采用扩展卡尔曼滤波器代替常用低通滤波器(LPF),可以去除高次谐波,并且不用相位补偿就可以获得一个误差较小的转子位…...
Qt的学习(一)
1.什么是Qt Qt特指用来进行桌面应用开发(电脑上写的程序)涉及到的一套技术Qt无法开发网页前端,也不能开发移动应用。 客户端开发的重要任务:编写和用户交互的界面。一般来说和用户交互的界面,有两种典型风格&…...
李沐--动手学深度学习--GRU
1.GRU从零开始实现 #9.1.2GRU从零开始实现 import torch from torch import nn from d2l import torch as d2l#首先读取 8.5节中使用的时间机器数据集 batch_size,num_steps 32,35 train_iter,vocab d2l.load_data_time_machine(batch_size,num_steps) #初始化模型参数 def …...
