const common = require('../../common.js'); function bmsParameterTypeSetValue(device) { var cmd = ''; switch (device.name) { case '0xAF': //电池类型 case '0x9D': //主动均衡控制开关 case '0xB8': //是否启动电流校准 var value = device.name.slice(2) + common.dec2hex(device.value, 2); cmd = setBMSParams(value); break; case '0xBC': //恢复出厂设置 var value = device.name.slice(2) + common.dec2hex(1, 2); cmd = setBMSParams(value); break; case '0xAA': //电池标称容量 case '0xB9': //电池实际容量 var value = device.name.slice(2) + common.dec2hex(device.value, 8); cmd = setBMSParams(value); break; case '0xB0': //休眠等待时间 case '0x92': //单体过压保护延时 case '0x95': //单体欠压保护延时 case '0x99': //充电过流保护 case '0x97': //放电过流保护 case '0xA3': //充电高温保护 case '0xA6': //充电低温保护恢复值 case '0xA4': //放电高温保护 case '0xA2': //温差保护 case '0x9E': //功率管温度保护 case '0x9F': //功率管温度保护恢复值 case '0xA0': //电池箱内温度保护 case '0xA1': //电池箱内温度保护恢复值 case '0xAD': //电流校准 var value = device.name.slice(2) + common.dec2hex(device.value, 4); cmd = setBMSParams(value); break; case '0x90': //单体过压保护 case '0x91': //单体过压恢复电压 case '0x93': //单体欠压保护 case '0x94': //单体欠压恢复电压 case '0x96': //压差保护 case '0x9B': //均衡开启电压 case '0x9C': //均衡开启压差 var value = device.name.slice(2) + common.dec2hex((device.value - 0) * 1000, 4); cmd = setBMSParams(value); break; case '0x8E': //总压过压保护 case '0x8F': //总压欠压保护 var value = device.name.slice(2) + common.dec2hex((device.value - 0) * 100, 4); cmd = setBMSParams(value); break; case '0xA5': //充电低温保护 case '0xA7': //放电低温保护 case '0xA8': //放电低温保护恢复值 var value = device.name.slice(2) + common.neInt2hex(device.value, 4); cmd = setBMSParams(value); break; case '0xCE': //应急启动 var value = device.name.slice(2) + common.dec2hex(1, 2); cmd = setBMSParams(value); break; default: cmd = ''; } // console.log(cmd); return cmd; } function setBMSParams(value) { var header = '4E57'; // var midType = "00000000020100" var midType = '00000000020300'; var end = '0000000068'; //内容部分 const cmdLength = (midType + value + end).length / 2 + 6; var cmdLenHex = common.dec2hex(cmdLength, 4); //长度 var cmdList = common.hexToList(header + cmdLenHex + midType + value + end); //校检 var CRCHex = common.arrayToIntHex(cmdList); //CRC校检位 //下发整体内容 var cmdHex = header + cmdLenHex + midType + value + end + CRCHex; return cmdHex; } module.exports = { setBMSParams: setBMSParams, bmsParameterTypeSetValue: bmsParameterTypeSetValue };