浅析基于物联网的远程抄表系统的设计及应用
安科瑞 华楠
摘 要:本文基于物联网的概念,使用 ZigBee、通用分组无线服务技术两种无线通信技术相结合的方式实现远程抄表并对数据进行存储和管理。此系统设计主要分为硬件方面的设计和软件方面的设计,硬件方面的设计需要完成三个部分的硬件制作,包含了采集器、协调器、和 GPRS 模块,需要完成数据的传输等功能;软件设计主要包括 ZigBee模块的硬件接口编写、上位机的数据监测管理软件的编写等。
关键词:物联网;ZigBee;GPRS;数据库
0.引言
为了有效率且较准确的采集居民电力的使用情况,需要对以往的电能抄表技术进行提高和革新。采用远程抄表这种方式不需要专业人员以及物力成本去布置专门的线路,具有抄表准确高、高工作效率等优点 [1] 。在远程抄表系统的理论研究上,国外的研究时间比国内早,技术也更成熟,美国、等欧洲国家都已经得到了广泛的运用。远程抄表系统建设的关键是要使数据在通信时保持稳定且准确 [2] 。
1.远程抄表系统硬件总体设计
远程抄表系统的硬件总体设计如图 1 所示,包含电表、RS485 接口、采集器模块、协调器模块、GPRS 模块五大部分。
图 1 远程抄表系统硬件总体设计框图
电表也叫电度表,采用 RS485 通信,为了实现电度表与采集器 D 相互通信 [3] ,需要在两个模块之间添加一个电平转换模块,本系统采用 MAX485 芯片,5V 电源供电,数据
双向传输,传输速率 10Mbps。
ZigBee 模块采用 CC2530 芯片,采用 3.3V 对其供电,芯片具有与 RF 收发器功能,可实现短距离内数据更可靠安全地无线传输、支持 IEEE 802.15.4 标准。GPRS 模块主芯片采用 Goouuu-GA6,其工作电压为5V,可支持 AT 命令口,支持标准 AT 和 TCP/IP 命令接口,GA6 具有“永远在线”、按量计费、高速传输等特性。
1.1局域网内数据无线收发天线设计
本系统中,主要采用 CC2530 芯片内置的数据收发器进行数据在采集器与集中器之间的数据通信,即局域网内的数据无线通信。CC2530 芯片内部集成了数据无线发送时TX/RX 的开关,25、26PIN 引脚为 RF 接收发器输入输出引脚。芯片到天线之间需要一个电路,即平衡-不平衡阻抗变换电路,目的是将前端的射频信号(差模信号输出)转为天线的单端输出,单极子的天线传输数据时较不稳定,需要一个阻抗为 50 欧姆的巴伦匹配电路来使数据传输更稳定。
CC2530 芯片可以通过 RF_N 和 RF_P 端口与天线进行相连接。天线部分可以使用 PCB 类型天线,本系统采用的是具有 SMA 接口的杆状天线。天线及巴伦匹配电路设计如图 2
所示。
图 2 天线及巴伦匹配电路设计
1.2采集器模块总体电路设计
电表中的数据经RS485串口传送到CC2530芯片CPU中,ZigBee 模块中的 RF 收发器将数据无线发送,采集器模块总体电路原理图如图 3
图 3 采集器模块总体电路原理图
1.3协调器模块总体电路设计
协调器端ZigBee模块的RF收发器将采集器端发送的无线数据进行接收,通过发送、接收引脚与 Goouuu-GA6 芯片进行通信,利用 GPRS 模块将数据远程发送到上位机监控中心,协调器模块总体电路原理图如图 4 所示。
图 4 协调器模块总体电路原理图
1.4 GPRS模块电路设计
GPRS模块采用Goouuu-GA6芯片,其主要由电源、天线接口、SIM卡连接电路组成,天线采用弹簧天线,采用3V SIM卡,Goouuu-GA6模块电路原理图如图5所示。
图 5 Goouuu-GA6 模块电路原理图
2.远程抄表系统的软件部分设计
远程抄表系统的软件程序编写主要包括各模块的初始化、建立、连接网络、RF天线收发数据、GPRS模块发送数据、上位机接收数据等部分,系统主程序设计流程图如图6
所示。
2.1数据传输程序设计
采集器/协调器程序设计主要采用IAR开发平台,使用Z-stack协议,其包括MAC层、MWK层、HAL驱动层、APP应用层等。
采集器程序主要包括设备节点的初始化、协调器建立网络连接、RF接收器实现数据无线传输等;协调器程序主要包括设备节点的初始化、建立局域网网络、启动GPRS模块、
接收数据并远程发送数据等。
局域网中采用的无线收发数据程序设计要保证两个设备有着相同的通信频率、通道号、网络ID、才可以实现局域网内的无线通信。
GPRS模块程序主要包括硬件初始化、附着激活网络、连接服务器、远程发送数据等。通过编写AT命令的相关程序来控制GPRS模块进行远程数据的传输。
上位机管理软件程序设计是采用.Net平台的Winform开发,以及ADO.Net平台进行数据库的访问、数据库数据存储、查询等与数据库相关的应用程序编程。
Net拥有C/S模式、B/S两种交互模式,此系统设计采用的是C/S模式,实现服务器端对客户端的连接监测和数据接收[4]。TCP/IP网络的应用程序使用Socket网络编程[5];ADO.Net包含用于连接到数据库、执行命令和检索数据结果的一组类库,可以通过程序的方式访问主机中的数据库。
2.2数据管理程序设计
数据管理程序即上位机管理软件程序主要包括用户登录界面程序设计、服务器端的IP端口连接监测程序设计以及SQL语句数据库的建立程序设计。
用户登录界面程序主要包括将输入到文本框中的数据与数据库中的信息进行比较,若相同则可以进入数据库查询系统,否则无法进入数据库。
服务器端的IP端口连接监测程序主要包括读取本机IP和端口号、设定监听队列、等待客户端的连接并读取客户端所发的数据并存入到数据库中。
SQL语句数据库的建立程序设计包括用户登录信息数据库的建立程序设计以及对客户端向服务器发送的数据进行存储的数据库的建立程序设计。
3.系统实现
采集器端采集的数据通过RF天线无线传输到协调器,协调器通过GPRS自带的Internet技术将字符串远程的传输到上位机服务器端,系统硬件实现部分如图7。
图7 系统硬件实现部分
用户登录界面设计实现如图8,数据库数据查询设计实现如图9。
图 8 用户登录界面设计实现
图 9 数据库数据查询设计实现
4.安科瑞远程预付费抄表系统的介绍及其应用
4.1系统简介
系统为B/S架构,主要包括前端管理网站和后台集抄服务,配合公司的预付费电表DDSY1352和DTSY1352系列以及多用户计量箱ADF300L系列,实现电能计量和电费管理等功能。
另外可以选配远传阀控水表组成水电一体预付费系统,达到先交费后用水的目的,剩余水量用完自动关阀。
4.2系统功能
AcrelCloud-3200预付费水电云平台由云平台-网关-预付费电能表组成,通过通信网络完成系统到表的充值、查询、监控、控制及短信报警等功能。
本系统适用于一些大集团和大物业,往往需要将多个物业环境、分散于各地的物业集中式收费和管理,面临着数据公网传输,财务操作分散,在线支付,总部财务扎口等复杂的需求。
远程集中抄表:抄表信息通过网关实时上传到云平台,快速便捷,免去人工抄表。
水表预付费:可是查看某区域水表的实时状态信息,并可以进行单表或批量设置水价控阀等操作。
远程售电:财务集中管理,电量实时下发,并比对充值次数防止作弊,方便快捷。
能耗分析:用户和管理员都可查询预付费表或管控表每天的用能状况;可提供能耗分析+财务轨迹一体式综合管理报表,包含用户表的能耗、财务数据、能耗和财务的期初期末值等数据。
在线支付:商户可以通过小程序或者微信公众号实现在线自助充值水电费,也可以实时关注商铺用水用况。
短信提醒:金额不足或金额欠费提醒、电表充值到账提醒,都可及时短信通知商户。
远程控制:可对任意一块电表执行远程拉闸或保电等一系列远程控制操作,方便管理。
4.3设备选型
5.结束语
基于物联网的概念,采用ZigBee、通用分组无线服务技术两种无线通信技术相结合的方式实现远程抄表并对其数据进行存储和管理。充分发挥通信技术和计算机技术的作用,降低了现场布线的复杂难度,获得更加准确的数据。使用ZigBee技术,会使得设备节点更加地不费电,同时功耗很低,这样就增加了使用的时间;采用的GPRS技术,选择的是TCP/IP通信模式,用户可以不必详细了解其数据交换的全过程;上位机控制中心,采用.Net与ADO.Net相结合的方式实现直接对远程接收到的数据进行查询和存储。
参考文献
[1] 霍弘宇.基于物联网的远程抄表应用研究[D].吉林:吉林大学,2014.
[2] 何颖秋,郭俞君.基于物联网的远程抄表系统的设计[J].
[3] 安科瑞企业微电网设计与应用手册.2020.06版.
相关文章:

浅析基于物联网的远程抄表系统的设计及应用
安科瑞 华楠 摘 要:本文基于物联网的概念,使用 ZigBee、通用分组无线服务技术两种无线通信技术相结合的方式实现远程抄表并对数据进行存储和管理。此系统设计主要分为硬件方面的设计和软件方面的设计,硬件方面的设计需要完成三个部分的硬件制…...
springboot(ssm付费自习室管理系统 自习室预约平台Java(codeLW)
springboot(ssm付费自习室管理系统 自习室预约平台Java(code&LW) 开发语言:Java 框架:ssm/springboot vue JDK版本:JDK1.8(或11) 服务器:tomcat 数据库:mysql 5.7(或8.0&am…...

【Spring】Spring事务详解
📫作者简介:小明java问道之路,2022年度博客之星全国TOP3,专注于后端、中间件、计算机底层、架构设计演进与稳定性建设优化,文章内容兼具广度、深度、大厂技术方案,对待技术喜欢推理加验证,就职于…...
跟我学c++高级篇——静态反射实现之一
一、非侵入式的静态反射(自省) 在前面分析过,反射有静态和动态两类形式,前者在编译期实现,后者在运行期实现。而针对c这类天然不支持(或者说极弱支持)反射的语言,在实现上又可以分为…...

人工智能|机器学习——循环神经网络的简洁实现
循环神经网络的简洁实现 如何使用深度学习框架的高级API提供的函数更有效地实现相同的语言模型。 我们仍然从读取时光机器数据集开始。 import torch from torch import nn from torch.nn import functional as F from d2l import torch as d2lbatch_size, num_steps 32, 35 t…...

02_MySQL体系结构及数据文件介绍
#课程目标 了解MySQL的体系结构了解MySQL常见的日志文件及作用了解事务的控制语句,提交和回滚能够查看当前数据库的版本和用户了解MySQL数据库如何存放数据能在使用SQL语句创建、删除数据库 #一、MySQL的体系结构 ##1、客户端(连接者) MySQL的客户端可以是某个客户…...
【Web安全】xsstrike工具使用方法表格
xsstrike工具使用方法表格 版本:XSStrike v3.1.5 项目地址: https://github.com/s0md3v/XSStrike使用文档: usage: xsstrike.py [-h] [-u TARGET] [--data PARAMDATA] [-e ENCODE] [--fuzzer] [--update] [--timeout TIMEOUT] [--proxy][…...

python实现鼠标实时坐标监测
python实现鼠标实时坐标监测 一、说明 使用了以下技术和库: tkinter:用于创建GUI界面。pyperclip:用于复制文本到剪贴板。pynput.mouse:用于监听鼠标事件,包括移动和点击。threading:用于创建多线程&…...
【华为OD】C卷真题 100%通过:攀登者1 C/C++源码实现
【华为OD】C卷真题 100%通过:攀登者1 C/C源码实现 目录 题目描述: 示例1 代码实现: 题目描述: 攀登者喜欢寻找各种地图,并且尝试攀登到最高的山峰。 地图表示为一维数组,数组的索引代表水平位置&…...
Flask,uWSGI,nginx的理解
文章目录 前言与背景理解 - FlaskuWSGInginx理解 - nginx理解 - FlaskuWSGI理解 - vuedjangonginx 前言与背景 此篇文章是针对小白的一篇理解Flask,uWSGI,nginx的文章,只介绍了理解,并没有介绍如何部署。 由于工作需要使用flask…...

【JAVA杂货铺】一文带你走进面向对象编程|继承|重载|重写|期末复习系列 | (中4)
🌈个人主页: Aileen_0v0🔥系列专栏:Java学习系列专栏💫个人格言:"没有罗马,那就自己创造罗马~" 目录 继承 私有成员变量在继承中的使用编辑 当子类和父类变量不重名时: 当子类和父类重名时: 📝总结: 继承的含义: …...

单细胞seurat入门—— 从原始数据到表达矩阵
根据所使用的建库方法,单细胞的RNA序列(也称为读取(reads)或标签(tags))将从转录本的3端(或5端)(10X Genomics,CEL-seq2,Drop-seq&…...
Docker部署Nacos
此篇文章使用的nacos为2.2.1版本 拉取Nacos镜像 docker pull nacos/nacos-server:v2.2.1先将容器启动起来 docker run -d \ --name nacos \ -p 8848:8848 \ -p 9848:9848 \ -p 9849:9849 \ --privilegedtrue \ -e JVM_XMS256m \ -e JVM_XMX256m \ -e MODEstandalone \ -e NA…...
1005. K 次取反后最大化的数组和
原题链接:1005. K 次取反后最大化的数组和 思路: 先把数组排序好,然后直接从下标0(最小的负数)开始反转,那么接下来有两种情况: 1.负数反转完了,k还有剩余。此时因为nums内全部都是正数,所以我…...

【云原生】什么是 Kubernetes ?
什么是 Kubernetes ? Kubernetes 是一个开源容器编排平台,管理着一系列的 主机 或者 服务器,它们被称作是 节点(Node)。 每一个节点运行了若干个相互独立的 Pod。 Pod 是 Kubernetes 中可以部署的 最小执行单元&#x…...

自建CA实战之 《0x01 Nginx 配置 https单向认证》
自建私有化证书颁发机构(Certificate Authority,CA)实战之 《0x01 Nginx 配置 https单向认证》 上一篇文章我们介绍了如何自建私有化证书颁发机构(Certificate Authority,CA),本篇文章我们将介…...

《QT从基础到进阶·三十八》QWidget实现炫酷log日志打印界面
QWidget实现了log日志的打印功能,不仅可以在界面显示,还可以生成打印日志。先来看下效果,源码放在文章末尾: LogPlugin插件类管理log所有功能,它可以获取Log界面并能打印正常信息,警告信息和错误信息&…...

JVM的小知识总结
加载时jvm做了这三件事: 1)通过一个类的全限定名来获取该类的二进制字节流 什么是全限定类名? 就是类名全称,带包路径的用点隔开,例如: java.lang.String。 即全限定名 包名类型 非限定类名也叫短名,就…...

深入理解JVM虚拟机第二十六篇:详解JVM当中的虚方法和非虚方法,并从字节码指令的角度去分析虚方法和非虚方法
😉😉 学习交流群: ✅✅1:这是孙哥suns和树哥给大家的福利! ✨✨2:我们免费分享Netty、Dubbo、k8s、Spring...应用和源码级别的视频资料 🥭🥭3:QQ群:583783824 📚📚 微信:DashuDeveloper拉你进微信群,免费领取! 一:非虚方法和虚方法 方法…...
ElasticSearch的日志配置
ElasticSearch默认情况下使用Log4j2来记录日志,日志配置文件的路径为$ES_HOME/config/log4j2.properties,配置方法见Log4j2的官方文档。 参考path-settings,通过指定path.logs,可以指定日志文件的保存路径。 在日志配置文件$ES_…...

C++初阶-list的底层
目录 1.std::list实现的所有代码 2.list的简单介绍 2.1实现list的类 2.2_list_iterator的实现 2.2.1_list_iterator实现的原因和好处 2.2.2_list_iterator实现 2.3_list_node的实现 2.3.1. 避免递归的模板依赖 2.3.2. 内存布局一致性 2.3.3. 类型安全的替代方案 2.3.…...

K8S认证|CKS题库+答案| 11. AppArmor
目录 11. AppArmor 免费获取并激活 CKA_v1.31_模拟系统 题目 开始操作: 1)、切换集群 2)、切换节点 3)、切换到 apparmor 的目录 4)、执行 apparmor 策略模块 5)、修改 pod 文件 6)、…...
uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖
在前面的练习中,每个页面需要使用ref,onShow等生命周期钩子函数时都需要像下面这样导入 import {onMounted, ref} from "vue" 如果不想每个页面都导入,需要使用node.js命令npm安装unplugin-auto-import npm install unplugin-au…...

DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI
前一阵子在百度 AI 开发者大会上,看到基于小智 AI DIY 玩具的演示,感觉有点意思,想着自己也来试试。 如果只是想烧录现成的固件,乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外,还提供了基于网页版的 ESP LA…...

SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现
摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序,以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务,提供稳定高效的数据处理与业务逻辑支持;利用 uniapp 实现跨平台前…...

Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)
引言:为什么 Eureka 依然是存量系统的核心? 尽管 Nacos 等新注册中心崛起,但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制,是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...

HBuilderX安装(uni-app和小程序开发)
下载HBuilderX 访问官方网站:https://www.dcloud.io/hbuilderx.html 根据您的操作系统选择合适版本: Windows版(推荐下载标准版) Windows系统安装步骤 运行安装程序: 双击下载的.exe安装文件 如果出现安全提示&…...
linux 下常用变更-8
1、删除普通用户 查询用户初始UID和GIDls -l /home/ ###家目录中查看UID cat /etc/group ###此文件查看GID删除用户1.编辑文件 /etc/passwd 找到对应的行,YW343:x:0:0::/home/YW343:/bin/bash 2.将标红的位置修改为用户对应初始UID和GID: YW3…...

微服务商城-商品微服务
数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...
【python异步多线程】异步多线程爬虫代码示例
claude生成的python多线程、异步代码示例,模拟20个网页的爬取,每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程:允许程序同时执行多个任务,提高IO密集型任务(如网络请求)的效率…...