|
|
@@ -1065,18 +1065,21 @@ int g_switch_set_all_single_threshold(void* manger,int ntype,int saddr,char chn,
|
|
|
{
|
|
|
log_e("Threshold Set Error=%s", modbus_strerror(errno));
|
|
|
}
|
|
|
-
|
|
|
- if (_globalPowerMangerTemp->global_over_manager->product_vol_upper_enable == 1)
|
|
|
- sts |= ENABLE_TAC_V_UP;
|
|
|
- if (_globalPowerMangerTemp->global_over_manager->product_vol_lower_enable == 1)
|
|
|
- sts |= ENABLE_TAC_V_DOWN;
|
|
|
- if (_globalPowerMangerTemp->global_over_manager->product_cur_upper_enable == 1)
|
|
|
- sts |= ENABLE_TAC_A_UP;
|
|
|
- if (_globalPowerMangerTemp->global_over_manager->product_pwr_upper_enable == 1)
|
|
|
- sts |= ENABLE_TAC_W_UP;
|
|
|
- if (_globalPowerMangerTemp->global_over_manager->product_pwrcon_upper_enable == 1)
|
|
|
- sts |= ENABLE_TAC_P_UP;
|
|
|
-
|
|
|
+ ret = g_switch_set_t_ac_alarm_ctrl(manger, saddr, (chn - 1), _global_over_manager);
|
|
|
+ if (ret < 0)
|
|
|
+ {
|
|
|
+ log_e("Threshold AlarmCtrl Set Error=%s", modbus_strerror(errno));
|
|
|
+ }
|
|
|
+ if (_globalPowerMangerTemp->global_over_manager->product_vol_upper_enable == 1)
|
|
|
+ sts |= ENABLE_TAC_V_UP;
|
|
|
+ if (_globalPowerMangerTemp->global_over_manager->product_vol_lower_enable == 1)
|
|
|
+ sts |= ENABLE_TAC_V_DOWN;
|
|
|
+ if (_globalPowerMangerTemp->global_over_manager->product_cur_upper_enable == 1)
|
|
|
+ sts |= ENABLE_TAC_A_UP;
|
|
|
+ if (_globalPowerMangerTemp->global_over_manager->product_pwr_upper_enable == 1)
|
|
|
+ sts |= ENABLE_TAC_W_UP;
|
|
|
+ if (_globalPowerMangerTemp->global_over_manager->product_pwrcon_upper_enable == 1)
|
|
|
+ sts |= ENABLE_TAC_P_UP;
|
|
|
if (__globalDeviceManage._globalDevInfo.product_pwr_type == SmartPDU_Tree_AC_One)
|
|
|
{
|
|
|
return g_switch_set_t_ac_phchn_ctrl(manger, saddr, (chn - 1), sts);
|
|
|
@@ -1832,7 +1835,56 @@ int g_switch_set_t_ac_max_pwrcon_threshold(void* manger,int saddr,char chn,Globa
|
|
|
data_temp[1] = (value >> 16) & 0xFFFF;
|
|
|
return g_modbus_write_x_reg(manger,saddr,offset,2, data_temp);
|
|
|
}
|
|
|
-
|
|
|
+//报警控制方式
|
|
|
+int g_switch_set_t_ac_alarm_ctrl(void* manger,int saddr,char chn,GlobalOverManager* _global_over_manager)
|
|
|
+{
|
|
|
+ unsigned int offset = 0;
|
|
|
+ offset = _SWITCH_T_AC_ALARM_CTRL+chn;
|
|
|
+ int nStatus = 0;
|
|
|
+ if(_global_over_manager->product_vol_over_upper_threshold_ctrl==1)nStatus|=BIT_00;
|
|
|
+ if(_global_over_manager->product_vol_over_lower_threshold_ctrl==1)nStatus|=BIT_01;
|
|
|
+ if(_global_over_manager->product_cur_over_upper_threshold_ctrl==1)nStatus|=BIT_02;
|
|
|
+ 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 告警丢失相位
|
|
|
+ *
|
|
|
+ * 通过给定的管理器对象,设置 AC 告警丢失相位的状态。
|
|
|
+ *
|
|
|
+ * @param manger 管理器对象指针
|
|
|
+ * @param saddr 地址
|
|
|
+ * @param MissStatus 丢失相位状态指针
|
|
|
+ *
|
|
|
+ * @return 返回操作结果,成功返回 0,失败返回非零值
|
|
|
+ */
|
|
|
+int g_switch_set_t_ac_alarm_missing_ph(void* manger,int saddr,int* MissStatus)
|
|
|
+{
|
|
|
+ unsigned int offset = 0;
|
|
|
+ unsigned int value = 0;
|
|
|
+ unsigned short data_temp[6] = {0};
|
|
|
+ unsigned int status_temp = 0;
|
|
|
+ int ret = 0;
|
|
|
+ offset = _SWITCH_T_AC_ALARM_MISSING_PH;
|
|
|
+ // 读取4个寄存器
|
|
|
+ // 读取寄存器
|
|
|
+ memset(data_temp, 0, sizeof(data_temp));
|
|
|
+ //一次读4个
|
|
|
+ ret = g_modbus_read_x_reg(manger, saddr, offset, 6, data_temp);
|
|
|
+ if (ret < 0)
|
|
|
+ {
|
|
|
+ log_w("g_switch_get_t_dcpdu_info:addrs:%d OffSet:%d Ret=%d:%s", saddr, offset, ret, modbus_strerror(errno));
|
|
|
+ // log_d("threshold_Addr:%d OffSet:%d Ret=%d",saddr,offset,ret);
|
|
|
+ return ret;
|
|
|
+ }
|
|
|
+ for(int i = 0; i < 3; i++)
|
|
|
+ {
|
|
|
+ value = (data_temp[i * 2 + 1] << 16) + data_temp[i * 2];
|
|
|
+ MissStatus[i] = value;
|
|
|
+ }
|
|
|
+ return 0;
|
|
|
+}
|
|
|
int g_switch_set_t_ac_start_time_delay(void* manger,int saddr,int ch, unsigned int time)
|
|
|
{
|
|
|
unsigned int offset = 0;
|
|
|
@@ -1983,7 +2035,7 @@ int g_switch_get_t_ac_in_info(void* manger,int saddr,PowerInfo* _power,PowerWarn
|
|
|
_warning[i].w_current = data_temp[0] & (BIT_06<<i);
|
|
|
_warning[i].w_power = data_temp[1] & (BIT_00<<i);
|
|
|
_warning[i].w_consumption = data_temp[1] & (BIT_03<<i);
|
|
|
- _warning[i].w_phase_loss = data_temp[1] & (BIT_06<<i);
|
|
|
+ //_warning[i].w_phase_loss = data_temp[1] & (BIT_06<<i);
|
|
|
}
|
|
|
return 0;
|
|
|
}
|
|
|
@@ -2186,7 +2238,16 @@ int power_clear(GlobalPowerManger *globalPowerManager)
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
-int ResetChmData()
|
|
|
+/**
|
|
|
+ * @brief 重新加载电源管理对象
|
|
|
+ *
|
|
|
+ * 清除指定的全局电源管理器对象,并重新加载相关资源。
|
|
|
+ *
|
|
|
+ * @param nCtrlType 0:全新设备,1:刷新设备
|
|
|
+ *
|
|
|
+ * @return 返回值表示操作是否成功,成功返回0,失败返回非0值
|
|
|
+ */
|
|
|
+int ResetChmData(int nCtrlType)
|
|
|
{
|
|
|
// 搜索子地址
|
|
|
int ret = 0;
|
|
|
@@ -2297,7 +2358,7 @@ int ResetChmData()
|
|
|
ret = dev_get_t_ac_power_manage_info(_globalDeviceManager->db,
|
|
|
_globalDeviceManager->_globalDevInfo.product_id, i,
|
|
|
j + 1, // 1*8+j
|
|
|
- nTac_chn,
|
|
|
+ indexT,
|
|
|
_globalTACManager);
|
|
|
_globalTACManager->product_ch_addr = j + 1;
|
|
|
// 未查询到信息 则插入
|
|
|
@@ -2310,7 +2371,7 @@ int ResetChmData()
|
|
|
_globalTACManager->product_ph_id = nTac_chn;
|
|
|
_globalTACManager->product_ph_type = indexT;
|
|
|
_globalTACManager->product_ph_outputType = 2; // 1三相2单相
|
|
|
- if (indexT == ((nTac_chn-3)/(8*3)+3)%3)
|
|
|
+ if (indexT == ((nTac_chn-3)/(PHASE_GROUP_CNT*3)+3)%3)
|
|
|
{
|
|
|
_globalTACManager->product_ph_outputStatus = 1; // 1输出2不输出
|
|
|
}
|
|
|
@@ -2331,6 +2392,24 @@ int ResetChmData()
|
|
|
// 绑定到三项通道
|
|
|
_globalTACManager->product_saddr = i;
|
|
|
_globalTACManager->product_ph_type = indexT;
|
|
|
+ if (nCtrlType)
|
|
|
+ {
|
|
|
+ _globalTACManager->product_ph_id = nTac_chn;
|
|
|
+ _globalTACManager->product_saddr = i;
|
|
|
+ _globalTACManager->product_ph_type = indexT;
|
|
|
+ if (indexT == ((nTac_chn - 3) / (PHASE_GROUP_CNT * 3) + 3) % 3)
|
|
|
+ {
|
|
|
+ _globalTACManager->product_ph_outputStatus = 1; // 1输出2不输出
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ _globalTACManager->product_ph_outputStatus = 2; // 1输出2不输出
|
|
|
+ }
|
|
|
+ if (dev_update_t_ac_power_manage_info(__globalDeviceManage.db, _globalTACManager) != 0)
|
|
|
+ {
|
|
|
+ log_e("update pwr general data err.");
|
|
|
+ }
|
|
|
+ }
|
|
|
if (_globalPowerMangerTemp)
|
|
|
{
|
|
|
list_add_tail(&_globalTACManager->list_Tree_AC, &_globalPowerMangerTemp->list_Tree_AC);
|
|
|
@@ -2338,11 +2417,14 @@ int ResetChmData()
|
|
|
nTac_chn += 1;
|
|
|
}
|
|
|
}
|
|
|
- _globalPowerMangerTemp->product_ch_id = chn;
|
|
|
- sprintf(_globalPowerMangerTemp->product_ch_name, "CH%d", _globalPowerMangerTemp->product_ch_id);
|
|
|
- if (dev_update_power_manage_genera_info_addr(__globalDeviceManage.db, _globalDeviceManager->_globalDevInfo.product_id, _globalPowerMangerTemp->product_saddr, _globalPowerMangerTemp->product_ch_addr, _globalPowerMangerTemp) != 0)
|
|
|
+ if (nCtrlType)
|
|
|
{
|
|
|
- log_e("update pwr general data err.");
|
|
|
+ _globalPowerMangerTemp->product_ch_id = chn;
|
|
|
+ sprintf(_globalPowerMangerTemp->product_ch_name, "CH%d", _globalPowerMangerTemp->product_ch_id);
|
|
|
+ if (dev_update_power_manage_genera_info_addr(__globalDeviceManage.db, _globalDeviceManager->_globalDevInfo.product_id, _globalPowerMangerTemp->product_saddr, _globalPowerMangerTemp->product_ch_addr, _globalPowerMangerTemp) != 0)
|
|
|
+ {
|
|
|
+ log_e("update pwr general data err.");
|
|
|
+ }
|
|
|
}
|
|
|
// 添加到队尾
|
|
|
list_add_tail(&_globalPowerMangerTemp->list, &_globalDeviceManager->_globalPowerManger.list);
|
|
|
@@ -2473,11 +2555,14 @@ int ResetChmData()
|
|
|
}
|
|
|
_globalPowerMangerTemp->product_saddr = i;
|
|
|
_globalPowerMangerTemp->product_ch_type = type;
|
|
|
- _globalPowerMangerTemp->product_ch_id = chn;
|
|
|
- sprintf(_globalPowerMangerTemp->product_ch_name, "CH%d", _globalPowerMangerTemp->product_ch_id);
|
|
|
- if (dev_update_power_manage_genera_info_addr(__globalDeviceManage.db, _globalDeviceManager->_globalDevInfo.product_id, _globalPowerMangerTemp->product_saddr, _globalPowerMangerTemp->product_ch_addr, _globalPowerMangerTemp) != 0)
|
|
|
+ if (nCtrlType)
|
|
|
{
|
|
|
- log_e("update pwr general data err.");
|
|
|
+ _globalPowerMangerTemp->product_ch_id = chn;
|
|
|
+ sprintf(_globalPowerMangerTemp->product_ch_name, "CH%d", _globalPowerMangerTemp->product_ch_id);
|
|
|
+ if (dev_update_power_manage_genera_info_addr(__globalDeviceManage.db, _globalDeviceManager->_globalDevInfo.product_id, _globalPowerMangerTemp->product_saddr, _globalPowerMangerTemp->product_ch_addr, _globalPowerMangerTemp) != 0)
|
|
|
+ {
|
|
|
+ log_e("update pwr general data err.");
|
|
|
+ }
|
|
|
}
|
|
|
// 添加到队尾
|
|
|
list_add_tail(&_globalPowerMangerTemp->list, &_globalDeviceManager->_globalPowerManger.list);
|
|
|
@@ -2541,11 +2626,14 @@ int ResetChmData()
|
|
|
}
|
|
|
_globalPowerMangerTemp->product_saddr = i;
|
|
|
_globalPowerMangerTemp->product_ch_type = type;
|
|
|
- _globalPowerMangerTemp->product_ch_id = chn;
|
|
|
- sprintf(_globalPowerMangerTemp->product_ch_name, "CH%d", _globalPowerMangerTemp->product_ch_id);
|
|
|
- if (dev_update_power_manage_genera_info_addr(__globalDeviceManage.db, _globalDeviceManager->_globalDevInfo.product_id, _globalPowerMangerTemp->product_saddr, _globalPowerMangerTemp->product_ch_addr, _globalPowerMangerTemp) != 0)
|
|
|
+ if (nCtrlType)
|
|
|
{
|
|
|
- log_e("update pwr general data err.");
|
|
|
+ _globalPowerMangerTemp->product_ch_id = chn;
|
|
|
+ sprintf(_globalPowerMangerTemp->product_ch_name, "CH%d", _globalPowerMangerTemp->product_ch_id);
|
|
|
+ if (dev_update_power_manage_genera_info_addr(__globalDeviceManage.db, _globalDeviceManager->_globalDevInfo.product_id, _globalPowerMangerTemp->product_saddr, _globalPowerMangerTemp->product_ch_addr, _globalPowerMangerTemp) != 0)
|
|
|
+ {
|
|
|
+ log_e("update pwr general data err.");
|
|
|
+ }
|
|
|
}
|
|
|
// 添加到队尾
|
|
|
list_add_tail(&_globalPowerMangerTemp->list, &_globalDeviceManager->_globalPowerManger.list);
|
|
|
@@ -2571,7 +2659,7 @@ int ResetChmData()
|
|
|
ret = dev_get_t_ac_power_manage_info(_globalDeviceManager->db,
|
|
|
_globalDeviceManager->_globalDevInfo.product_id, i,
|
|
|
j + 1, // 1*8+j
|
|
|
- nTac_chn,
|
|
|
+ indexT,
|
|
|
_globalTACManager);
|
|
|
_globalTACManager->product_ch_addr = j + 1;
|
|
|
// 未查询到信息 则插入
|
|
|
@@ -2605,6 +2693,16 @@ int ResetChmData()
|
|
|
// 绑定到三项通道
|
|
|
_globalTACManager->product_saddr = i;
|
|
|
_globalTACManager->product_ph_type = indexT;
|
|
|
+ if (nCtrlType)
|
|
|
+ {
|
|
|
+ _globalTACManager->product_ph_id = nTac_chn;
|
|
|
+ _globalTACManager->product_saddr = i;
|
|
|
+ _globalTACManager->product_ph_type = indexT;
|
|
|
+ if (dev_update_t_ac_power_manage_info(__globalDeviceManage.db, _globalTACManager) != 0)
|
|
|
+ {
|
|
|
+ log_e("update pwr general data err.");
|
|
|
+ }
|
|
|
+ }
|
|
|
if (_globalPowerMangerTemp)
|
|
|
{
|
|
|
list_add_tail(&_globalTACManager->list_Tree_AC, &_globalPowerMangerTemp->list_Tree_AC);
|
|
|
@@ -2664,11 +2762,14 @@ int ResetChmData()
|
|
|
}
|
|
|
_globalPowerMangerTemp->product_saddr = i;
|
|
|
_globalPowerMangerTemp->product_ch_type = type;
|
|
|
- _globalPowerMangerTemp->product_ch_id = chn;
|
|
|
- sprintf(_globalPowerMangerTemp->product_ch_name, "CH%d", _globalPowerMangerTemp->product_ch_id);
|
|
|
- if (dev_update_power_manage_genera_info_addr(__globalDeviceManage.db, _globalDeviceManager->_globalDevInfo.product_id, _globalPowerMangerTemp->product_saddr, _globalPowerMangerTemp->product_ch_addr, _globalPowerMangerTemp) != 0)
|
|
|
+ if (nCtrlType)
|
|
|
{
|
|
|
- log_e("update pwr general data err.");
|
|
|
+ _globalPowerMangerTemp->product_ch_id = chn;
|
|
|
+ sprintf(_globalPowerMangerTemp->product_ch_name, "CH%d", _globalPowerMangerTemp->product_ch_id);
|
|
|
+ if (dev_update_power_manage_genera_info_addr(__globalDeviceManage.db, _globalDeviceManager->_globalDevInfo.product_id, _globalPowerMangerTemp->product_saddr, _globalPowerMangerTemp->product_ch_addr, _globalPowerMangerTemp) != 0)
|
|
|
+ {
|
|
|
+ log_e("update pwr general data err.");
|
|
|
+ }
|
|
|
}
|
|
|
// 添加到队尾
|
|
|
list_add_tail(&_globalPowerMangerTemp->list, &_globalDeviceManager->_globalPowerManger.list);
|
|
|
@@ -2693,7 +2794,7 @@ int ResetChmData()
|
|
|
ret = dev_get_t_ac_power_manage_info(_globalDeviceManager->db,
|
|
|
_globalDeviceManager->_globalDevInfo.product_id, i,
|
|
|
j + 1, // 1*8+j
|
|
|
- nTac_chn,
|
|
|
+ (j + 3) % 3,
|
|
|
_globalTACManager);
|
|
|
_globalTACManager->product_ch_addr = j + 1;
|
|
|
// 未查询到信息 则插入
|
|
|
@@ -2719,6 +2820,15 @@ int ResetChmData()
|
|
|
// 绑定到三项通道
|
|
|
_globalTACManager->product_saddr = i;
|
|
|
_globalTACManager->product_ph_type = (j + 3) % 3;
|
|
|
+ if (nCtrlType)
|
|
|
+ {
|
|
|
+ _globalTACManager->product_ph_id = nTac_chn;
|
|
|
+ _globalTACManager->product_saddr = i;
|
|
|
+ if (dev_update_t_ac_power_manage_info(__globalDeviceManage.db, _globalTACManager) != 0)
|
|
|
+ {
|
|
|
+ log_e("update pwr general data err.");
|
|
|
+ }
|
|
|
+ }
|
|
|
if (_globalPowerMangerTemp)
|
|
|
{
|
|
|
list_add_tail(&_globalTACManager->list_Tree_AC, &_globalPowerMangerTemp->list_Tree_AC);
|
|
|
@@ -2735,6 +2845,11 @@ int ResetChmData()
|
|
|
_globalDeviceManager->_all_ctrl_board[i].product_type = 0;
|
|
|
}
|
|
|
}
|
|
|
+ char strLog[200]={"MODBUS"};
|
|
|
+ sprintf(strLog,"%s$|$通道",language_alarm_Init_Success[0]);
|
|
|
+ char number[10];
|
|
|
+ sprintf(number,"%d",chn-1);
|
|
|
+ dev_Alarm_Run_message(_globalDeviceManager,strLog,number);
|
|
|
dev_get_power_ds(_globalDeviceManager->db,&_globalDeviceManager->_globalPowerManger,NULL);
|
|
|
return ret;
|
|
|
}
|