|
|
@@ -1044,6 +1044,7 @@ int g_switch_set_all_single_threshold(void* manger,int ntype,int saddr,char chn,
|
|
|
sts |= ENABLE_W_UP;
|
|
|
if (_globalPowerMangerTemp->global_over_manager->product_pwrcon_upper_enable == 1)
|
|
|
sts |= ENABLE_P_UP;
|
|
|
+ ret = g_switch_set_ac_alarm_ctrl(manger, saddr, (chn - 1), _global_over_manager);
|
|
|
return g_switch_set_ac_single_s_chn_ctrl(manger, saddr, (chn - 1), sts);
|
|
|
}
|
|
|
break;
|
|
|
@@ -1057,6 +1058,10 @@ int g_switch_set_all_single_threshold(void* manger,int ntype,int saddr,char chn,
|
|
|
ret = g_switch_set_dcpdu_max_vol_threshold(manger, saddr, (chn - 1), _global_over_manager);
|
|
|
ret = g_switch_set_dcpdu_min_vol_threshold(manger, saddr, (chn - 1), _global_over_manager);
|
|
|
ret = g_switch_set_dcpdu_max_cur_threshold(manger, saddr, (chn - 1), _global_over_manager);
|
|
|
+ ret =g_switch_set_dcpdu_max_power_threshold(manger, saddr, (chn - 1), _global_over_manager);
|
|
|
+ ret =g_switch_set_dcpdu_max_pwrcon_threshold(manger, saddr, (chn - 1), _global_over_manager);
|
|
|
+
|
|
|
+ ret = g_switch_set_dcpdu_alarm_ctrl(manger, saddr, (chn - 1), _global_over_manager);
|
|
|
return ret;
|
|
|
}
|
|
|
break;
|
|
|
@@ -1320,18 +1325,22 @@ int g_switch_get_dcpdu_all_out_info(void* manger,int saddr,int nNumb,PowerInfo*
|
|
|
status_temp = (data_temp[1] << 16) + data_temp[0];
|
|
|
_power[i].status = (status_temp >> i) & 0x1;
|
|
|
}
|
|
|
- // 获取故障状态
|
|
|
- offset = _SWITCH_DCPDU_STS_ERROR;
|
|
|
+ // 获取报警状态
|
|
|
+ offset = _SWITCH_DCPDU_WARNING;
|
|
|
memset(data_temp, 0, sizeof(data_temp));
|
|
|
- ret = g_modbus_read_x_reg(manger, saddr, offset, 2, data_temp);
|
|
|
+ ret = g_modbus_read_x_reg(manger, saddr, offset, 16, data_temp);
|
|
|
if (ret < 0)
|
|
|
{
|
|
|
return ret;
|
|
|
}
|
|
|
for (size_t i = 0; i < nNumb; i++)
|
|
|
{
|
|
|
- status_temp = (data_temp[1] << 16) + data_temp[0];
|
|
|
- _warning[i].w_voltage_up = (status_temp >> i) & 0x1;
|
|
|
+ int Index = i * 2;
|
|
|
+ _warning[i].w_voltage_up = data_temp[0 + Index] & BIT_00;
|
|
|
+ _warning[i].w_voltage_down = data_temp[0 + Index] & BIT_01;
|
|
|
+ _warning[i].w_current = data_temp[0 + Index] & BIT_02;
|
|
|
+ _warning[i].w_power = data_temp[0 + Index] & BIT_03;
|
|
|
+ _warning[i].w_consumption = data_temp[0 + Index] & BIT_04;
|
|
|
}
|
|
|
return 0;
|
|
|
}
|
|
|
@@ -1598,6 +1607,37 @@ int g_switch_set_dcpdu_min_cur_threshold(void* manger,int saddr,char chn,GlobalO
|
|
|
|
|
|
return g_modbus_write_x_reg(manger,saddr,offset,2, data_temp);
|
|
|
}
|
|
|
+int g_switch_set_dcpdu_max_power_threshold(void* manger,int saddr,char chn,GlobalOverManager* _global_over_manager)
|
|
|
+{
|
|
|
+ unsigned int offset = 0;
|
|
|
+ unsigned short data_temp[4];
|
|
|
+ memset(data_temp,0,sizeof(data_temp));
|
|
|
+ unsigned int value = 0;
|
|
|
+
|
|
|
+ offset = _SWITCH_DCPDU_MAX_POWER_THRESHOLD + chn;
|
|
|
+ value = _global_over_manager->product_pwr_upper_threshold * 1000;
|
|
|
+ data_temp[0] = value & 0XFFFF;
|
|
|
+ data_temp[1] = (value >> 16) & 0xFFFF;
|
|
|
+
|
|
|
+
|
|
|
+ return g_modbus_write_x_reg(manger,saddr,offset,2, data_temp);
|
|
|
+}
|
|
|
+int g_switch_set_dcpdu_max_pwrcon_threshold(void* manger,int saddr,char chn,GlobalOverManager* _global_over_manager)
|
|
|
+{
|
|
|
+ unsigned int offset = 0;
|
|
|
+ unsigned short data_temp[4];
|
|
|
+ memset(data_temp,0,sizeof(data_temp));
|
|
|
+ unsigned int value = 0;
|
|
|
+
|
|
|
+ offset = _SWITCH_DCPDU_MAX_POWERCON_THRESHOLD + chn;
|
|
|
+ value = _global_over_manager->product_pwrcon_upper_threshold * 1000;
|
|
|
+ data_temp[0] = value & 0XFFFF;
|
|
|
+ data_temp[1] = (value >> 16) & 0xFFFF;
|
|
|
+
|
|
|
+
|
|
|
+ return g_modbus_write_x_reg(manger,saddr,offset,2, data_temp);
|
|
|
+}
|
|
|
+
|
|
|
|
|
|
|
|
|
int g_switch_set_dcpdu_reset(void* manger,int saddr)
|
|
|
@@ -1905,6 +1945,32 @@ int g_switch_set_t_ac_alarm_ctrl(void* manger,int saddr,char chn,GlobalOverManag
|
|
|
if(_global_over_manager->product_pwrcon_over_upper_threshold_ctrl==1)nStatus|=BIT_04;
|
|
|
return g_modbus_write_reg(manger,saddr,offset,nStatus);
|
|
|
}
|
|
|
+
|
|
|
+int g_switch_set_ac_alarm_ctrl(void* manger,int saddr,char chn,GlobalOverManager* _global_over_manager)
|
|
|
+{
|
|
|
+ unsigned int offset = 0;
|
|
|
+ offset = _SWITCH_AC_ALARM_CTRL+chn;
|
|
|
+ int nStatus = 0;
|
|
|
+ if(_global_over_manager->product_vol_over_upper_threshold_ctrl==1)nStatus|=BIT_01;
|
|
|
+ if(_global_over_manager->product_vol_over_lower_threshold_ctrl==1)nStatus|=BIT_02;
|
|
|
+ if(_global_over_manager->product_cur_over_upper_threshold_ctrl==1)nStatus|=BIT_00;
|
|
|
+ if(_global_over_manager->product_pwr_over_upper_threshold_ctrl==1)nStatus|=BIT_03;
|
|
|
+ if(_global_over_manager->product_pwrcon_over_upper_threshold_ctrl==1)nStatus|=BIT_04;
|
|
|
+ return g_modbus_write_reg(manger,saddr,offset,nStatus);
|
|
|
+}
|
|
|
+
|
|
|
+int g_switch_set_dcpdu_alarm_ctrl(void* manger,int saddr,char chn,GlobalOverManager* _global_over_manager)
|
|
|
+{
|
|
|
+ unsigned int offset = 0;
|
|
|
+ offset = _SWITCH_DCPDU_ALARM_CTRL+chn;
|
|
|
+ int nStatus = 0;
|
|
|
+ if(_global_over_manager->product_vol_over_upper_threshold_ctrl==1)nStatus|=BIT_01;
|
|
|
+ if(_global_over_manager->product_vol_over_lower_threshold_ctrl==1)nStatus|=BIT_02;
|
|
|
+ if(_global_over_manager->product_cur_over_upper_threshold_ctrl==1)nStatus|=BIT_00;
|
|
|
+ if(_global_over_manager->product_pwr_over_upper_threshold_ctrl==1)nStatus|=BIT_03;
|
|
|
+ if(_global_over_manager->product_pwrcon_over_upper_threshold_ctrl==1)nStatus|=BIT_04;
|
|
|
+ return g_modbus_write_reg(manger,saddr,offset,nStatus);
|
|
|
+}
|
|
|
/**
|
|
|
* @brief 设置 AC 告警丢失相位
|
|
|
*
|