公司要求 修改设备软件,符合《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通信协议的研究与模拟服务器开发相关推荐

  1. 关于App开发:模拟服务器数据接口 - MockApi

    为了方便app开发过程中,不受服务器接口的限制,便于客户端功能的快速测试,可以在客户端实现一个模拟服务器数据接口的MockApi模块.本篇文章就尝试为使用gradle的android项目设计实现Moc ...

  2. aws lambda_如何通过在本地模拟AWS Lambda来加速无服务器开发

    aws lambda by John McKim 约翰·麦金(John McKim) 如何通过在本地模拟AWS Lambda来加速无服务器开发 (How you can speed up server ...

  3. 模拟linux文件系统的设计及实现_Linux后台服务器开发中,内存池设计与实现(c/c++)...

    一.前言 作为C++程序员,想必对于内存操作这一块是比较熟悉和操作比较频繁的: 比如申请一个对象,使用new,申请一块内存使用malloc等等: 但是,往往会有一些困扰烦恼着大家,主要体现在两部分: ...

  4. 深度解析Java游戏服务器开发

    ---恢复内容开始--- 1.认识游戏 1.1什么是游戏 1.1.1游戏的定义 任何人类正常生理需求之外的活动均可称为游戏 1.1.2游戏的分类 RPG角色扮演游戏.ACT动作游戏.AVG冒险游戏.F ...

  5. 赠送 12 本 《C++ 服务器开发精髓》

    在大多数同学眼里,C/C++ 是一门非常"难学"的编程语言,然而一旦学生,其功无穷.那要如何学习呢? C/C++ 这门语言与其他高级语言不同,它是离操作系统较近的语言.所以学好 C ...

  6. 一步步教你如何在Ubuntu虚拟机中安装QEMU并模拟模拟arm 开发环境(一)uImage u-boot

    初次接触qemu是因为工作的需要,有时候下了班,可能需要在家研究一些东西,因为博主用到arm环境,这时候博主比较小气,不愿花钱买开发板,当然博主在这里给大家的建议是,如果要真正学懂arm构架的相关知识 ...

  7. 游戏服务器开发技术小结

    转载请自觉标明原创出处 原文链接:http://gameislife.info/archives/category/游戏开发    游戏服务器开发技术小结 1 概述 本文从开发者的视角,浅析游戏服务器 ...

  8. Linux 高并发服务器开发

    该文章是通过观看牛客网的视频整理所得,以及在实践过程中遇到的问题及解决方案的整理总结. Linux 高并发服务器开发 linux 系统编程 linux 环境的搭建 环境搭建需要的软件 虚拟机中安装 u ...

  9. websocket客户端和服务器开发总结

    文章目录 前言 一.websocket资料 1.什么是websocket 2.websocket优缺点 3.WebSocket 原理 4.WebSocket 源码下载 二.客户端 1.开发 2.测试 ...

最新文章

  1. 【AI-1000问】Face detection、alignment、verification、identification(recognization) 你能分的清楚吗?
  2. mupdf不支持x64_x86平台转x64平台关于内联汇编不再支持的解决
  3. deeplab运行指南
  4. Combox使用的一些技巧
  5. 一个经典的WIN32窗口应用
  6. 关于PHP你可能不知道的10件事
  7. docker-compose 学习:通过 Dockerfile 和 build 指令搭建 LNMP
  8. java第二天学习笔记
  9. java正则匹配性能,Java正则表达式的性能问题
  10. 第十四章 C语言头文件的编写_C语言模块化编程中的头文件
  11. 机器学习备忘录 | 二分类模型常用评价指标汇总
  12. ad中按钮开关的符号_收藏:电路图符号大全
  13. oracle select into from 用法,sql select into用法
  14. 长时间看电脑,眼睛疼的原因和治疗方法
  15. ICTCLAS2008汉语词性标注集
  16. 计算机管理用户拒绝访问,win10系统管理员账户拒绝访问怎么办
  17. 英国告急!无油可售!加油站大排长龙 | 经济学人早报精选
  18. 自动创建 api 模拟数据
  19. java 属性签名_java – 使用BouncyCastle将签名/身份验证的属性添加到CMS签名
  20. Y7000开机出现Checking media无法开机

热门文章

  1. Python网络爬虫与信息提取(15)—— 新浪网新闻爬虫并分类整理
  2. 040 OpenVAS的下载与安装
  3. IDEA在Git中提交忽略文件的设置
  4. excel小写转大写公式_会计工作再忙,也要学会这19个Excel公式!
  5. mysql8分区表_MySQL 分区表
  6. matlab.mat文件读取,matlab中mat文件的生成和读取
  7. 物联网临界段实现原理
  8. 补偿电容器串联电抗对无源LC滤波器性能的影响
  9. 关联规则Apriori算法 python简单实现
  10. Flutter 递归查询Map(字典)