遥测类型状态量转多个遥信点
设备说明:
通讯管理机创建遥测类型状态量点:
通讯管理机创建遥信类型虚量点:
方法一:
代码量大,适用于遥信点名无规律情况
方法一示例代码:
// 遥测类型状态分解遥信点
var srcValue = qso.GetValue('Serial1.设备_1@故障代号');
switch (srcValue) {
case 0:
{// 值为0,将所有点值都置0
qso.SetValue('Serial1.设备_1@F2_YX0', 0);
qso.SetValue('Serial1.设备_1@F2_YX1', 0);
qso.SetValue('Serial1.设备_1@F2_YX2', 0);
qso.SetValue('Serial1.设备_1@F2_YX3', 0);
qso.SetValue('Serial1.设备_1@F2_YX4', 0);
qso.SetValue('Serial1.设备_1@F2_YX5', 0);
qso.SetValue('Serial1.设备_1@F2_YX6', 0);
qso.SetValue('Serial1.设备_1@F2_YX7', 0);
qso.SetValue('Serial1.设备_1@F2_YX8', 0);
qso.SetValue('Serial1.设备_1@F2_YX9', 0);
qso.SetValue('Serial1.设备_1@F2_YX10', 0);
qso.SetValue('Serial1.设备_1@F2_YX11', 0);
qso.SetValue('Serial1.设备_1@F2_YX12', 0);
qso.SetValue('Serial1.设备_1@F2_YX13', 0);
qso.SetValue('Serial1.设备_1@F2_YX14', 0);
qso.SetValue('Serial1.设备_1@F2_YX15', 0);
qso.SetValue('Serial1.设备_1@F2_YX16', 0);
qso.SetValue('Serial1.设备_1@F2_YX17', 0);
qso.SetValue('Serial1.设备_1@F2_YX18', 0);
qso.SetValue('Serial1.设备_1@F2_YX19', 0);
qso.SetValue('Serial1.设备_1@F2_YX20', 0);
qso.SetValue('Serial1.设备_1@F2_YX21', 0);
qso.SetValue('Serial1.设备_1@F2_YX22', 0);
qso.SetValue('Serial1.设备_1@F2_YX23', 0);
qso.SetValue('Serial1.设备_1@F2_YX24', 0);
qso.SetValue('Serial1.设备_1@F2_YX25', 0);
qso.SetValue('Serial1.设备_1@F2_YX26', 0);
qso.SetValue('Serial1.设备_1@F2_YX27', 0);
qso.SetValue('Serial1.设备_1@F2_YX28', 0);
}
break;
case 1:
{// 值为1,将F2_YX1点值置1,其它点值置0
qso.SetValue('Serial1.设备_1@F2_YX0', 0);
qso.SetValue('Serial1.设备_1@F2_YX1', 1);// 状态值为1就置其它点为0,该点值为1
qso.SetValue('Serial1.设备_1@F2_YX2', 0);
qso.SetValue('Serial1.设备_1@F2_YX3', 0);
qso.SetValue('Serial1.设备_1@F2_YX4', 0);
qso.SetValue('Serial1.设备_1@F2_YX5', 0);
qso.SetValue('Serial1.设备_1@F2_YX6', 0);
qso.SetValue('Serial1.设备_1@F2_YX7', 0);
qso.SetValue('Serial1.设备_1@F2_YX8', 0);
qso.SetValue('Serial1.设备_1@F2_YX9', 0);
qso.SetValue('Serial1.设备_1@F2_YX10', 0);
qso.SetValue('Serial1.设备_1@F2_YX11', 0);
qso.SetValue('Serial1.设备_1@F2_YX12', 0);
qso.SetValue('Serial1.设备_1@F2_YX13', 0);
qso.SetValue('Serial1.设备_1@F2_YX14', 0);
qso.SetValue('Serial1.设备_1@F2_YX15', 0);
qso.SetValue('Serial1.设备_1@F2_YX16', 0);
qso.SetValue('Serial1.设备_1@F2_YX17', 0);
qso.SetValue('Serial1.设备_1@F2_YX18', 0);
qso.SetValue('Serial1.设备_1@F2_YX19', 0);
qso.SetValue('Serial1.设备_1@F2_YX20', 0);
qso.SetValue('Serial1.设备_1@F2_YX21', 0);
qso.SetValue('Serial1.设备_1@F2_YX22', 0);
qso.SetValue('Serial1.设备_1@F2_YX23', 0);
qso.SetValue('Serial1.设备_1@F2_YX24', 0);
qso.SetValue('Serial1.设备_1@F2_YX25', 0);
qso.SetValue('Serial1.设备_1@F2_YX26', 0);
qso.SetValue('Serial1.设备_1@F2_YX27', 0);
qso.SetValue('Serial1.设备_1@F2_YX28', 0);
}
break;
case 2:
{// 值为2,将F2_YX2点值置1,其它点值置0
qso.SetValue('Serial1.设备_1@F2_YX0', 0);
qso.SetValue('Serial1.设备_1@F2_YX1', 0);
qso.SetValue('Serial1.设备_1@F2_YX2', 1);// 状态值为2就置其它点为0,该点值为1
qso.SetValue('Serial1.设备_1@F2_YX3', 0);
qso.SetValue('Serial1.设备_1@F2_YX4', 0);
qso.SetValue('Serial1.设备_1@F2_YX5', 0);
qso.SetValue('Serial1.设备_1@F2_YX6', 0);
qso.SetValue('Serial1.设备_1@F2_YX7', 0);
qso.SetValue('Serial1.设备_1@F2_YX8', 0);
qso.SetValue('Serial1.设备_1@F2_YX9', 0);
qso.SetValue('Serial1.设备_1@F2_YX10', 0);
qso.SetValue('Serial1.设备_1@F2_YX11', 0);
qso.SetValue('Serial1.设备_1@F2_YX12', 0);
qso.SetValue('Serial1.设备_1@F2_YX13', 0);
qso.SetValue('Serial1.设备_1@F2_YX14', 0);
qso.SetValue('Serial1.设备_1@F2_YX15', 0);
qso.SetValue('Serial1.设备_1@F2_YX16', 0);
qso.SetValue('Serial1.设备_1@F2_YX17', 0);
qso.SetValue('Serial1.设备_1@F2_YX18', 0);
qso.SetValue('Serial1.设备_1@F2_YX19', 0);
qso.SetValue('Serial1.设备_1@F2_YX20', 0);
qso.SetValue('Serial1.设备_1@F2_YX21', 0);
qso.SetValue('Serial1.设备_1@F2_YX22', 0);
qso.SetValue('Serial1.设备_1@F2_YX23', 0);
qso.SetValue('Serial1.设备_1@F2_YX24', 0);
qso.SetValue('Serial1.设备_1@F2_YX25', 0);
qso.SetValue('Serial1.设备_1@F2_YX26', 0);
qso.SetValue('Serial1.设备_1@F2_YX27', 0);
qso.SetValue('Serial1.设备_1@F2_YX28', 0);
}
break;
// 以此类推
default:
break;
}
方法二:
代码量少,适用于遥信点名有规律情况
方法二示例代码:
// 遥测类型状态分解遥信点
// 该方法仅针对遥信点名命名有规律的情况,例如有29个遥信点,遥信点名为“Serial1.设备_1@F2_YX0”至“Serial1.设备_1@F2_YX28”
var srcValue = qso.GetValue('Serial1.设备_1@故障代号');// 获取遥测点的值
var name = 'Serial1.设备_1@F2_YX';// 遥信点名的固定部分名称,不包含序号部分
var pointCount = 29;// 遥信点数量
var start = 0;// 遥信点名从0开始,即F2_YX0~F2_YX28
for (start = 0; start < pointCount; ++start)
{
var pointName = name+start;// 合成遥信点的完整点名称
if(srcValue == 0)
{// 遥测点值为0,则置所有状态点的值为0
qso.SetValue(pointName, 0);
}else
{
if (srcValue == start)
{// 遥测点值与遥信点名中的序号部分相同
qso.SetValue(pointName, 1);// 当前遥测点值与遥信点名相关,则为该遥信点置1
}else
{
qso.SetValue(pointName, 0);// 当前遥测点值与遥信点名不相关,则为该遥信点置0
}
}
}