正泰电表_645协议_TCP边缘网关接入
1、准备工作
本次测试所需硬件为正泰电表以及各类线材:
正泰电表,型号:DDSU666
购买地址:
准备好设备后按照厂家相关说明书接线,正泰电表需要接入一组220VAC电源供电以及用双绞线连接边缘网关调试。
💡 补充
📎ZTY0.464.1036_DDSU666.004使用说明书-V5_20220715(中文).doc
2、边缘网关配置
2-1、配置串口
💡 提示
本次测试的设备串口配置为波特率2400、停止码2、数据位8、无校验位且连接边缘网关RS485口2,所以串口参数需要按照动图中填写,测试时需要按照实际情况调整。
2-2、请求数据
💡 提示
因为DLT645协议与Modbus协议近似,电表设备需要边缘网关主动发送请求帧才能返回数据。
var temp = msg.payload.replace(/ /g, "");
msg.payload = Buffer.from(temp, 'hex')
return msg;
💡 提示
动图中的注入节点写入的内容是“fefefefe68457403030623681104333434359D16”,这条命令是取电表设备A相电压。
💡 注意
动图中最后再右侧打印的值即电表设备返回的应答帧。
2-3、指向服务器
💡 提示
测试中使用服务器地址以及端口需要根据实际情况填写。
体验账号
服务器地址:demo.thingskit.com或101.133.234.90
端口号:8088
💡 提示
动图中注入节点的作用是注册包发送,注册包内容可以自定义,但需要与平台Access Token一致。
3、ThingsKit配置
3-1、创建脚本
var temp = params.substr(10, 12);
var arr = [];
var num = 10;
//倒序输出表号数组
for (i = 0;
i < 6;
i++) {
arr[i] = temp.substr(num, 2);
num -= 2;
}
//合并倒序输出的表号数组
var result = arr.join('');
var teleData = {};
teleData.source = params;
slaveDevice = result;
teleData[slaveDevice] = params;
out.datas = teleData;
out.telemetry = true;
//hex值减法函数
function hexSubtraction(hex1, hex2) {
var dec1 = parseInt(hex1, 16);
var dec2 = parseInt(hex2, 16);
var result = dec1 - dec2;
var hexResult = result.toString(16);
return hexResult;
}
var tempVal = params;
var data1 = tempVal.substr(36, 2);
var data2 = tempVal.substr(38, 2);
var teleData = {};
teleData.source = params;
//提取数据标识
var mark = tempVal.substr(28, 8);
//A相电压
if (mark == "33343435") {
data1 = hexSubtraction(data1, 33);
data2 = hexSubtraction(data2, 33);
teleData.aU = parseInt(data2 + data1)/10;
}
out.datas = teleData;
/*必填:true表示设备上报的遥测数据,false表示命令下发的响应数据*/
out.telemetry = true;
💡 提示
“TCP上行-正泰电表解析”应用于网关设备的数据上行脚本处,该脚本会将DLT645设备的表号作为设备标识。“智能网关-645协议接入”应用于网关子设备的数据上行脚本处,并取A相电压。
💡 注意
创建脚本后必须启用该脚本才可以使用。
3-2、创建产品
💡 补充
网关子设备物模型导入文件:
3-3、创建设备
💡 提示
选择组织是没有组织选项可以自行新建。
💡 注意
网关设备的Access Token修改为了2-3处注入节点的内容test。
💡 注意
网关子设备的设备标识为本次测试电表的表号230603037445。
3-4、创建轮询
💡 提示
新建任务后,必须启用该任务才可以使用。