GB/T 26875.3-2011 是一个关于城市消防远程监控系统的国家标准,具体是该系统第3部分:报警传输网络通信协议。这个标准规定了用户信息传输装置与监控中心之间通过报警传输网络进行数据传输的协议结构、数据类型及数据定义。它适用于城市消防远程监控系统中的通信协议,以确保数据传输的准确性和效率。
01.协议关键信息
以下是关于GB/T 26875.3-2011的一些关键信息
中文标准名称:城市消防远程监控系统 第3部分:报警传输网络通信协议
英文标准名称:Remote-monitoring system of urban fire protection – Part 3: Communication protocol for alarm transmission network
标准状态:现行
中国标准分类号(CCS):C81
国际标准分类号(ICS):13.220.20
发布日期:2011-07-29
实施日期:2011-11-01
发布单位:中华人民共和国国家质量监督检验检疫总局、中国国家标准化管理委员会
这个标准对于城市消防系统的远程监控和报警传输具有重要意义,它确保了消防监控系统的高效运行和信息的准确传递,对于提升城市消防安全管理水平起到了关键作用。
02.模拟接入TK平台教程
一、准备工作
本次采用TCP模拟设备接入,需要先准备好TCP设备模拟工具 “NetAssist”。NetAssist网络调试助手,是Windows平台下开发的TCP/IP网络调试工具,集TCP/UDP服务端及客户端于一体,是网络应用开发及调试工作必备的专业工具之一,可以帮助网络应用设计、开发、测试人员检查所开发的网络应用软/硬件的数据收发状况,提高开发速度,简化开发复杂度,成为TCP/UDP应用开发调试的得力助手。该工具的下载地址,请见文末的帮助文档原文。
二、在ThingsKit物联网平台上配置转换脚本
💡 提示:创建转换脚本时要根据脚本的功能选定脚本类型。鉴权脚本:TCP/UDP协议设备接入平台后确认鉴权信息并使设备正常上线的处理脚本。上传数据解析脚本:TCP/UDP协议设备接入平台保证能够正常上线后,对设备接入数据点解析转换为物模型的处理脚本。
2.1 创建鉴权脚本
鉴权脚本代码如下:
//输出源地址(十六进制源码)
var password = params.substr(24, 12);
/*必填:设备的访问令牌*/
out.password = password;
/*选填:设备鉴权成功后响应给设备的信息*/
out.success = "";
2.2 创建GB/T 26875.3-2011协议上行数据解析脚本
协议解析脚本代码如下:
function Checksum(data) {
var checksum = 0;
for (var i = 0;
i < data.length;
i += 2) {
var hex = data.substr(i, 2);
checksum += parseInt(hex, 16);
}
x = checksum.toString(16);
checksum = x.substring(x.length - 2);
return checksum;
} //modbus校验和
function currentTimeToHex() {
// 获取当前时间
var now = new Date();
// 提取秒、分、时、日、月、年
var seconds = now.getSeconds();
var minutes = now.getMinutes();
var hours = now.getHours();
var day = now.getDate();
var month = now.getMonth() + 1;
// 注意:getMonth() 返回的月份是从0开始的,所以需要加1
var year = now.getFullYear() - 2000;
// 假设我们只需要从2000年开始的年份
// 将这些值转换为十六进制格式,并确保每个都是两位数
var hexSeconds = (seconds < 16 ? '0': '') + seconds.toString(16);
var hexMinutes = (minutes < 16 ? '0': '') + minutes.toString(16);
var hexHours = (hours < 16 ? '0': '') + hours.toString(16);
var hexDay = (day < 16 ? '0': '') + day.toString(16);
var hexMonth = (month < 16 ? '0': '') + month.toString(16);
var hexYear = (year < 16 ? '0': '') + year.toString(16);
// 组合成一个完整的十六进制字符串
var hexValue = hexSeconds + hexMinutes + hexHours + hexDay + hexMonth + hexYear;
return hexValue.toUpperCase();
}
function hexToBit(data, length, start, end) {
var tempD = parseInt('0x'+data.substr(start, end));
var statusD = tempD.toString(2);
for (var len = statusD.length;
len < length;
len = statusD.length) {
statusD = "0"+ statusD;
}
return statusD;
}//将应用单元数据中的信息体提取出来
//获取业务流水号
var teleData = {};
var serialNum = params.substr(4, 4);
//获取除业务流水号外的控制单元
var codeTxt = params.substr(8, 48);
//获取服务端当前时间
var time = currentTimeToHex();
//组成控制单元
var req = serialNum + codeTxt.substr(0, 4) + time + codeTxt.substr(16, 24) +
"0000" + "03";
//输出源地址(十六进制源码)
var password = params.substr(24, 12);
//生成校验和
var code = Checksum(req);
//组合确认报文
var confirm = "4040" + req + code + "2323";
//获取应用数据单元长度
var lengthD = parseInt(codeTxt.substr(20, 4), 16);
//截取应用数据单元
var data = params.substr(54, lengthD);
//获取类型标志
var type = parseInt(data.substr(0, 2), 16);
//假设类型标志作为if条件 分开取数据点
//当类型标志为用户信息传输装置操作信息
if (type == "24") {
var statusD = hexToBit(data, 8, 4, 2)
//取用户信息传输装置操作信息所有数据点
teleData.resetU = statusD[7];
teleData.silencerU = statusD[6];
teleData.warnOnU = statusD[5];
teleData.warnOffU = statusD[4];
teleData.selfInspectionU = statusD[3];
teleData.inspectU = statusD[2];
teleData.testU = statusD[1];
teleData.source = params;
// teleData.reservedU = statusD[0];
//预留
}
//返回物模型
out.datas = teleData;
out.telemetry = true;
/*必填:true表示设备上报的遥测数据,false表示命令下发的响应数据*/
//接受数据并解析后服务端返回确认指令
out.ackMsg = confirm;
三、创建物模型
四、创建设备
五、模拟GB/T 26875.3—2011设备接入
5.1 使用模拟工具连接平台
5.2 使用工具下发数据
💡 提示本次测试下发测试数据为:40400100010123250B1304182873A1FF2A3E0000000000000A00021801100023250B130418DF2323,在下发时必须选择HEX格式。