QCSG1205031通信协议的研究与模拟服务器开发
公司要求 修改设备软件,符合《QCSG1205031-2020 输电线路在线监测通信规约及信息交互规范》,于是仔细研究了一下这个规范,记录一下:
首先是基本构架,我觉得这个和设备端的开发关系不大,大致知道就可以。
然后是业务数据:
序号 |
监测量 |
字节长度 (单位:字节) |
单位 |
说明 |
1 |
环境温度 |
2 |
摄氏度 |
微气象监测 |
2 |
相对湿度 |
1 |
百分比 |
|
3 |
风速 |
2 |
米/秒 |
|
4 |
风向 |
2 |
度 |
|
5 |
雨量 |
2 |
毫米/小时 |
|
6 |
气压 |
2 |
百帕 |
|
7 |
日照 |
2 |
瓦/平方米 |
|
8 |
角度 |
2 |
度 |
|
9 |
拉力 |
2 |
千克 |
导线(地线)重量+绝缘子串重量+金具重量+冰荷载+风荷载 |
10 |
A/B/C 三相泄漏电流平均值、最大值 |
2 |
毫安 |
绝缘子泄漏电流在线监测 |
11 |
导线温度 |
2 |
摄氏度 |
导线温度在线监测 |
12 |
图像数据 |
2 |
图像监测,采用 JPEG 格式 |
|
13 |
视频 |
2 |
视频压缩标准 H.265 |
|
14 |
蓄电池电压 |
1 |
伏 |
监测装置设备运行状况 |
15 |
无线信号强度 |
1 |
百分比 |
|
16 |
频率 |
2 |
赫兹 |
|
17 |
振幅 |
2 |
毫米 |
|
18 |
盐密 |
2 |
毫克/平方厘米 |
污秽监测 |
19 |
灰密 |
2 |
毫克/平方厘米 |
|
20 |
导线弧垂 |
2 |
米 |
导线弧垂 |
21 |
导线对地距离 |
2 |
米 |
|
22 |
线路行波电流 |
2 |
安培 |
架空线路故障定位 |
23 |
故障点和监测点的距离 |
2 |
米 |
|
24 |
线路工频电流 |
2 |
安培 |
|
25 |
电缆温度 |
2 |
摄氏度 |
电缆温度 |
26 |
接地电流 |
2 |
安培 |
电缆护层接地电流 |
27 |
运行电流 |
2 |
安培 |
|
28 |
故障点和监测点的距离 |
2 |
米 |
电缆故障定位 |
29 |
视在放电量 |
2 |
pC |
电缆局放 |
30 |
局放背景噪声水平 |
2 |
dBm |
|
31 |
放电信号均值、峰值 |
2 |
dBm |
|
32 |
放电频次 |
2 |
次/秒 |
我理解这个是总的功能集合,任何厂家的设备,实际上都只有其中一部分传感器。
接下来是真正的开发要关注的:帧结构
起始码 |
装置号码 |
控制字 |
数据域长度 |
数据域 |
校验码 |
结束码 |
1 字节 |
6 字节 |
1 字节 |
2 字节 |
变长 |
1 字节 |
1 字节 |
二进制的,我理解是为了减少包的大小,从而提高传输效率,同时也方便厂家,毕竟很多设备还是用单片机,一来处理json之类的格式比较麻烦,而来存储空间也有限。
根据这个帧结构,不同的功能,其实是通过控制字区分的。
控制字 |
含义 |
说明 |
00H |
开机联络信息 |
装置开机上送联络信息 |
01H |
校时 |
该命令分请求和下发两部分 |
02H |
设置装置密码 |
装置出厂密码:字符:‘1234’(31H32H33H34H) |
03H |
主站下发参数配置 |
该指令要求数据采集装置接收到该命令后原命令返回 |
05H |
装置心跳信息 |
用于主站监测装置上线时间、IP 地址和端口号、传输信号强度及蓄电池电压 |
06H |
更改主站 IP 地址、端口号和卡号 |
|
07H |
查询主站 IP 地址、端口号和卡号 |
|
08H |
装置复位 |
主站对装置进行复位 |
09H |
短信唤醒 |
主站以短信方式唤醒休眠状态的装置 |
0AH |
查询装置配置参数 |
|
0BH |
装置功能配置 |
|
0CH |
装置休眠 |
|
0DH |
查询装置设备时间 |
|
21H |
主站请求装置数据 |
主站请求采集装置采集数据并立即上送 |
22H |
上传导地线拉力及倾角数据 |
|
25H |
上传气象数据 |
|
26H |
上传导线温度、导线电流数据 |
|
27H |
上传杆塔振动数据 |
|
29H |
上传舞动振幅频率数据 |
|
2AH |
上传杆塔倾斜数据 |
|
2BH |
上传导线微风振动数据 |
|
2CH |
上传综合防盗数据 |
|
2DH |
上送山火报警数据 |
|
2EH |
上送大风舞动报警数据 |
|
30H |
上传设备故障信息 |
|
31H |
主站请求微风振动动态数据 |
32H |
微风振动动态数据上送 |
|
33H |
微风振动动态数据上送结束标记 |
|
34H |
微风振动动态数据补报下发 |
|
35H |
主站请求舞动动态数据 |
|
36H |
舞动动态数据上送 |
|
37H |
舞动动态数据上送结束标记 |
|
38H |
舞动动态数据补包下发 |
|
39H |
主站请求拉力及偏角动态数据 |
|
3AH |
拉力及偏角动态数据上送 |
|
3BH |
拉力及偏角动态数据上送结束标记 |
|
3CH |
拉力及偏角动态数据补包下发 |
|
41H |
上传污秽数据 |
|
42H |
上传导线弧垂数据 |
|
43H |
上传电缆温度数据 |
|
44H |
上传电缆护层接地电流数据 |
|
45H |
上传故障定位数据 |
|
46H |
上传电缆局放数据 |
|
47H |
上传电缆局放谱图数据 |
|
60H |
主站设置故障测距终端参数 |
|
6AH |
主站查询故障测距终端参数 |
|
61H |
上传故障测距终端工况数据 |
|
62H |
终端装置向主站请求上传工频故障波形数据 |
|
63H |
上传工频故障波形数据 |
|
68H |
工频故障波形数据上传结束标志 |
|
69H |
主站向终端发送工频故障波形数据补包 |
|
64H |
终端装置向主站请求上传故障行波波形数据 |
|
65H |
上传故障行波波形数据 |
|
66H |
故障行波波形数据上传结束标志 |
|
67H |
主站向终端发送行波波形数据补包 |
|
以下为文件传输部分 |
||
71H |
主站查询装置文件列表 |
|
72H |
主站请求装置上送文件 |
|
73H |
装置请求上送文件 |
|
74H |
文件上送 |
75H |
文件上送结束标记 |
||
76H |
文件补包数据下发 |
||
以下为图像视频监测部分 |
|||
81H |
图像采集参数配置 |
主站下发采集装置的色彩选择、图像宽高+亮度+对比度+饱和度等信息 |
|
82H |
拍照时间表设置 |
设置采集装置自动拍摄照片的时间、位置 |
|
83H |
主站请求拍摄照片 |
在需手动请求拍摄照片时使用 |
|
84H |
采集装置请求上送照片 |
采集装置采集完图像数据后向主站发送上送图像数据请求,主站原命令返回 |
|
85H |
图像数据上送 |
上送图像拆分后的 N 个数据包 |
|
86H |
图像数据上送结束标记 |
用于主站判断图像数据是否上送完毕 |
|
87H |
补包数据下发 |
主站接到 86H 指令后,进行数据整理,将未收到的包号下发给采集装置 |
|
88H |
摄像机远程调节 |
上、下、左、右、远、近调节,预置位远程设置、更改 |
|
89H |
启动摄像视频传输 |
||
8AH |
终止摄像视频传输 |
||
8BH |
查询拍照时间表 |
||
8CH |
视频采集参数配置 |
||
8DH |
视频采集参数查询 |
||
8EH |
OSD 参数配置 |
||
8FH |
OSD 参数查询 |
||
90H |
录像策略参数配置 |
||
91H |
录像策略参数查询 |
||
92H |
通道录像状态查询 |
||
93H |
主站请求拍摄短视频 |
||
94H |
采集终端请求上送短视频 |
||
95H |
短视频数据上送 |
||
96H |
短视频数据上送结束标记 |
||
97H |
短视频补包数据下发 |
||
98H |
主站查询终端录像文件数目 |
||
99H |
主站查询终端录像文件列表 |
||
9AH |
主站请求进行录像文件回放 |
||
9BH |
主站请求进行录像文件回放控制 |
||
9CH |
主站请求进行录像文件回放断开 |
||
9DH |
主站请求进行录像下载 |
||
9EH |
主站请求进行录像文件下载断开 |
||
A0H |
启动摄像视频传输 |
||
A1H |
终止摄像视频传输 |
||
A2H |
主站请求与终端进行语音广播 |
||
A3H |
主站请求与终端断开语音广播 |
||
A4H |
塔基防范参数配置 |
||
A5H |
塔基防范参数查询 |
||
A6H |
线路检测参数配置 |
||
A7H |
线路检测参数查询 |
||
A8H |
线路巡检参数配置 |
||
A9H |
线路巡检参数查询 |
||
AAH |
智能分析告警上报 |
||
ABH |
联动参数配置 |
||
ACH |
联动参数查询 |
||
ADH |
传感器数据视频叠加参数配置 |
||
AEH |
传感器数据视频叠加参数查询 |
||
B1H |
摄像机 3D 控球调节 |
仔细读了好几遍控制字的解释,发现存在一些比较难理解的地方:
首先是 “校时” 控制字(01H),同一个控制字,既是请求也是应答,既可以是设备主动发送,也可以是平台主动发送。搞不好会引起循环?我的理解是:
如果是设备主动发送,表示设备请求平台校时,平台要应答,设备收到后不能再发应答。
如果是平台主动发送,表示平台要求设备校时,设备要发送一次校时,平台再应答一次,设备收到后不再应答。
另外就是,我们的设备要支持哪些控制字?似乎没有明确。
一些功能清晰的控制字,像图像相关的控制字,还比较容易判断,没有摄像头就不实现。
但是有一些比较中性的,如文件上传下载,短信唤醒,硬件重启等,可做可不做,还是都要做?
最后一个大问题就是:怎么测试?南网并没有提供一个研发测试用的服务。总不能写完代码直接送检吧。
为了方便开发,我决定按照协议,自己写一个测试服务器。
QCSG1205031通信协议的研究与模拟服务器开发相关推荐
- 关于App开发:模拟服务器数据接口 - MockApi
为了方便app开发过程中,不受服务器接口的限制,便于客户端功能的快速测试,可以在客户端实现一个模拟服务器数据接口的MockApi模块.本篇文章就尝试为使用gradle的android项目设计实现Moc ...
- aws lambda_如何通过在本地模拟AWS Lambda来加速无服务器开发
aws lambda by John McKim 约翰·麦金(John McKim) 如何通过在本地模拟AWS Lambda来加速无服务器开发 (How you can speed up server ...
- 模拟linux文件系统的设计及实现_Linux后台服务器开发中,内存池设计与实现(c/c++)...
一.前言 作为C++程序员,想必对于内存操作这一块是比较熟悉和操作比较频繁的: 比如申请一个对象,使用new,申请一块内存使用malloc等等: 但是,往往会有一些困扰烦恼着大家,主要体现在两部分: ...
- 深度解析Java游戏服务器开发
---恢复内容开始--- 1.认识游戏 1.1什么是游戏 1.1.1游戏的定义 任何人类正常生理需求之外的活动均可称为游戏 1.1.2游戏的分类 RPG角色扮演游戏.ACT动作游戏.AVG冒险游戏.F ...
- 赠送 12 本 《C++ 服务器开发精髓》
在大多数同学眼里,C/C++ 是一门非常"难学"的编程语言,然而一旦学生,其功无穷.那要如何学习呢? C/C++ 这门语言与其他高级语言不同,它是离操作系统较近的语言.所以学好 C ...
- 一步步教你如何在Ubuntu虚拟机中安装QEMU并模拟模拟arm 开发环境(一)uImage u-boot
初次接触qemu是因为工作的需要,有时候下了班,可能需要在家研究一些东西,因为博主用到arm环境,这时候博主比较小气,不愿花钱买开发板,当然博主在这里给大家的建议是,如果要真正学懂arm构架的相关知识 ...
- 游戏服务器开发技术小结
转载请自觉标明原创出处 原文链接:http://gameislife.info/archives/category/游戏开发 游戏服务器开发技术小结 1 概述 本文从开发者的视角,浅析游戏服务器 ...
- Linux 高并发服务器开发
该文章是通过观看牛客网的视频整理所得,以及在实践过程中遇到的问题及解决方案的整理总结. Linux 高并发服务器开发 linux 系统编程 linux 环境的搭建 环境搭建需要的软件 虚拟机中安装 u ...
- websocket客户端和服务器开发总结
文章目录 前言 一.websocket资料 1.什么是websocket 2.websocket优缺点 3.WebSocket 原理 4.WebSocket 源码下载 二.客户端 1.开发 2.测试 ...
最新文章
- 【AI-1000问】Face detection、alignment、verification、identification(recognization) 你能分的清楚吗?
- mupdf不支持x64_x86平台转x64平台关于内联汇编不再支持的解决
- deeplab运行指南
- Combox使用的一些技巧
- 一个经典的WIN32窗口应用
- 关于PHP你可能不知道的10件事
- docker-compose 学习:通过 Dockerfile 和 build 指令搭建 LNMP
- java第二天学习笔记
- java正则匹配性能,Java正则表达式的性能问题
- 第十四章 C语言头文件的编写_C语言模块化编程中的头文件
- 机器学习备忘录 | 二分类模型常用评价指标汇总
- ad中按钮开关的符号_收藏:电路图符号大全
- oracle select into from 用法,sql select into用法
- 长时间看电脑,眼睛疼的原因和治疗方法
- ICTCLAS2008汉语词性标注集
- 计算机管理用户拒绝访问,win10系统管理员账户拒绝访问怎么办
- 英国告急!无油可售!加油站大排长龙 | 经济学人早报精选
- 自动创建 api 模拟数据
- java 属性签名_java – 使用BouncyCastle将签名/身份验证的属性添加到CMS签名
- Y7000开机出现Checking media无法开机