Procházet zdrojové kódy

Merge branch 'master' of http://jiecheng2024.tpddns.cn:3000/liyuezong/SmartPDCode

chenyuanjie před 1 rokem
rodič
revize
5ab3248c26
45 změnil soubory, kde provedl 4828 přidání a 4248 odebrání
  1. binární
      cust_data/db/pdu_dat_ip.db
  2. 1 0
      cust_data/web/unique/css/chunk-0432422c.8314a36c.css
  3. 1 0
      cust_data/web/unique/css/chunk-1378ae9a.c45ccf07.css
  4. 1 0
      cust_data/web/unique/css/chunk-1d2f2a6e.6542ae50.css
  5. 1 0
      cust_data/web/unique/css/chunk-345e6926.c45ccf07.css
  6. 1 0
      cust_data/web/unique/css/chunk-41dd41f6.b6b37513.css
  7. 1 0
      cust_data/web/unique/css/chunk-7d2c5f6a.ff4e1c03.css
  8. 1 1
      cust_data/web/unique/index.html
  9. 1 0
      cust_data/web/unique/js/app.af1c0a83.js
  10. 1 0
      cust_data/web/unique/js/chunk-0432422c.df4a41ae.js
  11. 1 0
      cust_data/web/unique/js/chunk-1378ae9a.9677c6cf.js
  12. 1 0
      cust_data/web/unique/js/chunk-1d2f2a6e.8b1e610c.js
  13. 1 0
      cust_data/web/unique/js/chunk-345e6926.74333fc2.js
  14. 1 0
      cust_data/web/unique/js/chunk-41dd41f6.0b3a6d2d.js
  15. 1 0
      cust_data/web/unique/js/chunk-7d2c5f6a.d794b80b.js
  16. 12 1
      pro/config/cfg.h
  17. 156 118
      pro/src/app.c
  18. 7 3
      pro/src/sqlite_handle.c
  19. 2 0
      pro/src/sys.c
  20. 4 0
      pub
  21. 3 1
      truing_control/PDU-AC/common/common.c
  22. 8 2
      truing_control/PDU-AC/common/common.h
  23. 287 0
      truing_control/PDU-AC/hardware/adc/ADC.c
  24. 56 0
      truing_control/PDU-AC/hardware/adc/ADC.h
  25. 58 26
      truing_control/PDU-AC/hardware/detection/detection.c
  26. 29 1
      truing_control/PDU-AC/hardware/electricity/electricity.c
  27. 4 1
      truing_control/PDU-AC/hardware/relay/relay.c
  28. 4 0
      truing_control/PDU-AC/hardware/timer/timer.c
  29. 126 3
      truing_control/PDU-AC/hardware/uart/uart.c
  30. 3 2
      truing_control/PDU-AC/hardware/uart/uart.h
  31. 4 2
      truing_control/PDU-AC/modbus/BARE/port/port.c
  32. 3598 3860
      truing_control/PDU-AC/prj/JLinkLog.txt
  33. 157 103
      truing_control/PDU-AC/prj/ctrl_board.uvguix.Gowon
  34. 95 34
      truing_control/PDU-AC/prj/ctrl_board.uvoptx
  35. 16 1
      truing_control/PDU-AC/prj/ctrl_board.uvprojx
  36. 13 1
      truing_control/PDU-AC/user/board_cfg.h
  37. 51 13
      truing_control/PDU-AC/user/main.c
  38. 1 1
      truing_control/PDU-Magnetic-Retention-AC/hardware/74hc595d/74hc595d.c
  39. 11 11
      truing_control/PDU-Magnetic-Retention-AC/hardware/Key/Key.c
  40. 2 2
      truing_control/PDU-Magnetic-Retention-AC/usr/board_cfg.h
  41. 3 3
      truing_control/PDU-Magnetic-Retention-AC/usr/main.c
  42. 43 19
      truing_control/PDU-Triphasic_IO/USER/main.c
  43. 26 3
      truing_control/STS/HARDWARE/R_Led/R_Led.c
  44. 1 2
      truing_control/STS/HARDWARE/Temprature/Temprature.c
  45. 34 34
      truing_control/STS/PRJ/test.py

binární
cust_data/db/pdu_dat_ip.db


+ 1 - 0
cust_data/web/unique/css/chunk-0432422c.8314a36c.css

@@ -0,0 +1 @@
+.domainSpanCss{cursor:pointer;margin-right:10px;text-align:center;text-decoration:underline;float:right}.span1,.span2,.span3{border-radius:5px;background:#0e35ff;height:20px!important;text-align:center;color:#fff}.span4,.span5,.span6{border-radius:5px;background:#0e35ff;height:29px;text-align:center;color:#fff}.el-tabs__item{font-size:16px;font-weight:700;border-radius:20px;border-color:#fff}.el-tabs__item.is-active{font-weight:700;background-color:#0e35ff;color:#fff;border-radius:20px}

+ 1 - 0
cust_data/web/unique/css/chunk-1378ae9a.c45ccf07.css

@@ -0,0 +1 @@
+.el-form-item__content .el-button--mini{width:unset}

+ 1 - 0
cust_data/web/unique/css/chunk-1d2f2a6e.6542ae50.css

@@ -0,0 +1 @@
+.el-form-item__content .el-button--mini{border-radius:10px;margin-left:10px;width:unset}

+ 1 - 0
cust_data/web/unique/css/chunk-345e6926.c45ccf07.css

@@ -0,0 +1 @@
+.el-form-item__content .el-button--mini{width:unset}

Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 1 - 0
cust_data/web/unique/css/chunk-41dd41f6.b6b37513.css


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 1 - 0
cust_data/web/unique/css/chunk-7d2c5f6a.ff4e1c03.css


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 1 - 1
cust_data/web/unique/index.html


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 1 - 0
cust_data/web/unique/js/app.af1c0a83.js


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 1 - 0
cust_data/web/unique/js/chunk-0432422c.df4a41ae.js


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 1 - 0
cust_data/web/unique/js/chunk-1378ae9a.9677c6cf.js


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 1 - 0
cust_data/web/unique/js/chunk-1d2f2a6e.8b1e610c.js


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 1 - 0
cust_data/web/unique/js/chunk-345e6926.74333fc2.js


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 1 - 0
cust_data/web/unique/js/chunk-41dd41f6.0b3a6d2d.js


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 1 - 0
cust_data/web/unique/js/chunk-7d2c5f6a.d794b80b.js


+ 12 - 1
pro/config/cfg.h

@@ -39,6 +39,7 @@
 //#define PRJ_IP_AC_I3_O1
 //#define PRJ_IP_AC_I1_O1
 //#define PRJ_IP_YUNNAN_AC_I1_O1
+//#define PRJ_IP_CHONGQING_AC_I1_O1
 
 #define USE_MAIL
 #define MAIL_SEND_BUILTIN
@@ -368,7 +369,6 @@
     #define PROD_POWER_TYPE                     6
 
     #define BRD_MAX                             12
-    #define MONWAY                              1
 
 #elif (defined PRJ_IP_AC_I3_O1)
     #define LANGUAGE                            0
@@ -405,6 +405,17 @@
     #define USE_BEEP                            1
     #define USE_LED                             1
     #define USE_Cellular
+#elif (defined PRJ_IP_CHONGQING_AC_I1_O1)
+    #define LANGUAGE                            0
+    #define SMPLE_TIME                          30          //ms
+    #define SAVE_TIME                           60000       //ms
+    #define CASCADE_CNT                         0
+
+    #define PHASE_GROUP                         8
+    #define CHANNEL_DELAY                       8
+    #define PROD_POWER_TYPE                     0
+    #define USE_BEEP                            1
+    #define USE_LED                             1
 #else
     #error define a PRJ_XXXX please!
 #endif

+ 156 - 118
pro/src/app.c

@@ -156,34 +156,52 @@ static void* power_thread(void* arg)
                                                     _globalDeviceManager->pCtrlBoard[i]._globalPowerInManger._PowerWarninginfo);
                 }
                 //计算控制板每相输入总功率因数
-                for (size_t p= 0;p < 3; p++)
+
+                for (size_t p = 0; p < 3; p++)
                 {
-                    float nYGPower=0;
-                    float nSZPower=0;
-                    for (size_t s = 0; s< AC_SINGLE_S_MAX_CHN_NUM; s++)
+                    float nYGPower = 0;
+                    float nSZPower = 0;
+                    for (size_t s = 0; s < AC_SINGLE_S_MAX_CHN_NUM; s++)
                     {
-                        if (s%3==p)
+                        if (_globalDeviceManager->pCtrlBoard[i].product_type == TREE_AC_TYPE)
+                        {
+                            if (s % 3 == p)
+                            {
+                                nSZPower += _globalDeviceManager->pCtrlBoard[i]._PowerInfo[s].power;
+                                nYGPower += _globalDeviceManager->pCtrlBoard[i]._PowerInfo[s].power * _globalDeviceManager->pCtrlBoard[i]._PowerInfo[s].factor;
+                            }
+                        }
+                        else if (_globalDeviceManager->pCtrlBoard[i].product_type == DOUBLE_AC_TYPE)
                         {
-                            nSZPower += _globalDeviceManager->pCtrlBoard[i]._PowerInfo[s].power;
-                            nYGPower += _globalDeviceManager->pCtrlBoard[i]._PowerInfo[s].power* _globalDeviceManager->pCtrlBoard[i]._PowerInfo[s].factor;
+                            if (_globalDeviceManager->pCtrlBoard[i].nLeft_phType == p && s < 4)
+                            {
+                                nSZPower += _globalDeviceManager->pCtrlBoard[i]._PowerInfo[s].power;
+                                nYGPower += _globalDeviceManager->pCtrlBoard[i]._PowerInfo[s].power * _globalDeviceManager->pCtrlBoard[i]._PowerInfo[s].factor;
+                            }
+                            if (_globalDeviceManager->pCtrlBoard[i].nRight_phType == p && (s >= 4 && s < 8))
+                            {
+                                nSZPower += _globalDeviceManager->pCtrlBoard[i]._PowerInfo[s].power;
+                                nYGPower += _globalDeviceManager->pCtrlBoard[i]._PowerInfo[s].power * _globalDeviceManager->pCtrlBoard[i]._PowerInfo[s].factor;
+                            }
                         }
                     }
-                    if (nSZPower>0)
+                    if (nSZPower > 0)
                     {
-                        _globalDeviceManager->pCtrlBoard[i]._globalPowerInManger._PowerInfo[p].factor = nYGPower/nSZPower;
+                        _globalDeviceManager->pCtrlBoard[i]._globalPowerInManger._PowerInfo[p].factor = nYGPower / nSZPower;
                     }
-                   else  _globalDeviceManager->pCtrlBoard[i]._globalPowerInManger._PowerInfo[p].factor = 0;
-                    
-                    if (_globalDeviceManager->pCtrlBoard[i]._globalPowerInManger._PowerInfo[p].factor>1)
+                    else
+                        _globalDeviceManager->pCtrlBoard[i]._globalPowerInManger._PowerInfo[p].factor = 0;
+
+                    if (_globalDeviceManager->pCtrlBoard[i]._globalPowerInManger._PowerInfo[p].factor > 1)
                     {
-                        _globalDeviceManager->pCtrlBoard[i]._globalPowerInManger._PowerInfo[p].factor=1;
+                        _globalDeviceManager->pCtrlBoard[i]._globalPowerInManger._PowerInfo[p].factor = 1;
                     }
-                    else if (_globalDeviceManager->pCtrlBoard[i]._globalPowerInManger._PowerInfo[p].factor<0)
+                    else if (_globalDeviceManager->pCtrlBoard[i]._globalPowerInManger._PowerInfo[p].factor < 0)
                     {
-                       _globalDeviceManager->pCtrlBoard[i]._globalPowerInManger._PowerInfo[p].factor=0;
+                        _globalDeviceManager->pCtrlBoard[i]._globalPowerInManger._PowerInfo[p].factor = 0;
                     }
                 }
-                
+
                 ret = g_switch_set_t_ac_alarm_missing_ph(&_globalDeviceManager->_globalRelaySampManger,
                                                          _globalDeviceManager->pCtrlBoard[i].product_saddr,
                                                          _globalDeviceManager->pCtrlBoard[i]._globalPowerInManger.product_MissingPH);
@@ -584,11 +602,10 @@ static void* power_thread(void* arg)
                     GlobalTreeACManager* _pTreeACPowerPhData = NULL ;  
                     
                     memset(&_globalPowerInfo._power_info, 0, sizeof(_globalPowerInfo._power_info));
-                    int k = 0;
                     float nchYGpower = 0;
                     list_for_each_entry(_pTreeACPowerMangerTemp, &_globalPowerMangerTemp->list_Tree_AC, list_Tree_AC)
                     {
-                        if ((__globalDeviceManage._globalDevInfo.product.pwr_type==SmartPDU_Tree_AC_One||__globalDeviceManage._globalDevInfo.product.pwr_type==SmartPDU_Tree_AC_Two)&&_pTreeACPowerMangerTemp->product_ph_outputStatus==2)
+                        if ((__globalDeviceManage._globalDevInfo.product.pwr_type==SmartPDU_Tree_AC_One||__globalDeviceManage._globalDevInfo.product.pwr_type==SmartPDU_Tree_AC_Two||__globalDeviceManage._globalDevInfo.product.pwr_type==SmartPDU_Tree_AC_Tree)&&_pTreeACPowerMangerTemp->product_ph_outputStatus==2)
                         {
                             continue;
                         }                        
@@ -596,7 +613,7 @@ static void* power_thread(void* arg)
                         memcpy(&_globalTACWarningInfo,&_globalDeviceManager->pCtrlBoard[_pTreeACPowerMangerTemp->product_saddr]._PowerWarninginfo[_pTreeACPowerMangerTemp->product_ch_addr - 1],sizeof(PowerWarningInfo));
                         gettimeofday(&tv, NULL);
                         // t = localtime(&tv.tv_sec);
-                         _globalDeviceManager->pCtrlBoard[_pTreeACPowerMangerTemp->product_saddr]._globalPowerInManger._PowerInfo[k].freq=_globalDeviceManager->pCtrlBoard[_pTreeACPowerMangerTemp->product_saddr]._globalPowerInManger._PowerInfo[k].freq> _pTreeACPowerMangerTemp->_PowerInfo.freq?_globalDeviceManager->pCtrlBoard[_pTreeACPowerMangerTemp->product_saddr]._globalPowerInManger._PowerInfo[k].freq:_pTreeACPowerMangerTemp->_PowerInfo.freq;
+                      
                         //计算总三项总数据
                         _globalPowerInfo._power_info.voltage = _pTreeACPowerMangerTemp->_PowerInfo.voltage;
                         _globalPowerInfo._power_info.current += _pTreeACPowerMangerTemp->_PowerInfo.current;
@@ -606,106 +623,7 @@ static void* power_thread(void* arg)
                        // _globalPowerInfo._power_info.factor = _pTreeACPowerMangerTemp->_PowerInfo.factor > _globalPowerInfo._power_info.factor ? _pTreeACPowerMangerTemp->_PowerInfo.factor : _globalPowerInfo._power_info.factor;
                        nchYGpower+=_pTreeACPowerMangerTemp->_PowerInfo.factor*_pTreeACPowerMangerTemp->_PowerInfo.power;
                        
-                        if (__globalDeviceManage.triphasic_mmap)
-                        {
-                            __globalDeviceManage.triphasic_mmap->pw_o_chn[_chn].chn[k].o_consumption = _pTreeACPowerMangerTemp->_PowerInfo.consumption * 1000;
-                            __globalDeviceManage.triphasic_mmap->pw_o_chn[_chn].chn[k].o_current = _pTreeACPowerMangerTemp->_PowerInfo.current * 1000;
-                            __globalDeviceManage.triphasic_mmap->pw_o_chn[_chn].chn[k].o_power = _pTreeACPowerMangerTemp->_PowerInfo.power * 1000;
-                            __globalDeviceManage.triphasic_mmap->pw_o_chn[_chn].chn[k].o_voltage = _pTreeACPowerMangerTemp->_PowerInfo.voltage * 1000;
-                            __globalDeviceManage.triphasic_mmap->chn_info[_chn].chn_type = _pTreeACPowerMangerTemp->product_ph_type;
-#ifdef NORTH_USER_SPECILS
-                            uint8_t wanning = 0;
-                            if(_globalTACWarningInfo.w_voltage_up == true)
-                            {
-                                wanning++;
-                            }
-                            if(_globalTACWarningInfo.w_voltage_down == true)
-                            {
-                                wanning++;
-                            }
-                            if(_globalTACWarningInfo.w_current == true)
-                            {
-                                wanning++;
-                            }
-                            if(_globalTACWarningInfo.w_consumption == true)
-                            {
-                                wanning++;
-                            }
-                            if(_globalTACWarningInfo.w_power == true)
-                            {
-                                wanning++;
-                            }
-                            //uint16_t mask = 0xFFFF & (0 << (_chn % 16));
-                            uint16_t data_temp = 0;
-   
-                            switch(_chn)
-                            {
-                                case 0 ... 15:
-                                {   
-                                    data_temp = __globalDeviceManage.north_user.fault_1_16;
-                                    data_temp &= ~(1 << (_chn % 16));
-                                    if(wanning > 0)
-                                    {
-                                        data_temp |= (1 << (_chn % 16));
-                                    } 
-                                    __globalDeviceManage.north_user.fault_1_16 = data_temp;       
-                                }
-                                break;
-                                case 16 ... 31:
-                                {
-                                    data_temp = __globalDeviceManage.north_user.fault_17_32;
-                                    data_temp &= ~(1 << (_chn % 16));
-                                    if(wanning > 0)
-                                    {
-                                        data_temp |= (1 << (_chn % 16));
-                                    } 
-                                    __globalDeviceManage.north_user.fault_17_32 = data_temp; 
-                                }
-                                break;
-                                case 32 ... 47:
-                                {
-                                    data_temp = __globalDeviceManage.north_user.fault_33_48;
-                                    data_temp &= ~(1 << (_chn % 16));
-                                    if(wanning > 0)
-                                    {
-                                        data_temp |= (1 << (_chn % 16));
-                                    } 
-                                    __globalDeviceManage.north_user.fault_33_48 = data_temp; 
-                                }
-                                break;
-                                case 48 ... 63:
-                                {
-                                    data_temp = __globalDeviceManage.north_user.fault_49_64;
-                                    data_temp &= ~(1 << (_chn % 16));
-                                    if(wanning > 0)
-                                    {
-                                        data_temp |= (1 << (_chn % 16));
-                                    } 
-                                    __globalDeviceManage.north_user.fault_49_64 = data_temp; 
-                                }
-                                break;
-                                default:
-                                break;
-                            }                               
-#endif
-                        }
-
-                        if(_globalPowerInfo._power_info.status==0)
-                        {
-                            _globalPowerInfo._power_info.status=_pTreeACPowerMangerTemp->_PowerInfo.status;
-                        }
-                        else
-                        {
-                            _globalPowerInfo._power_info.status=0;
-                        }
-                        if (__globalDeviceManage.triphasic_mmap)
-                        {
-                            __globalDeviceManage.triphasic_mmap->pw_o_chn[_chn].chn[k].o_status = _globalPowerInfo._power_info.status;
-                        }
-
-                        _globalPowerInfo._power_info.NF_status=_pTreeACPowerMangerTemp->_PowerInfo.NF_status;
 
-                        k=k+1;
                         time_t now;
                         time(&now);
                         t = localtime(&now);
@@ -761,6 +679,126 @@ static void* power_thread(void* arg)
                         }
 
                     }
+
+                    // 处理通道开关状态
+                    int k = 0;
+                    int allphOutNum=0;
+                    int allphOpenNum=0;
+                    list_for_each_entry(_pTreeACPowerMangerTemp, &_globalPowerMangerTemp->list_Tree_AC, list_Tree_AC)
+                    {
+                      //计算输出通道数和开启的输出通道数,两者相同,则认为该通道为开启状态
+                        if (_pTreeACPowerMangerTemp->product_ph_outputStatus == 1)
+                        {
+                            allphOutNum++;
+
+                            if (_pTreeACPowerMangerTemp->_PowerInfo.status==1)
+                            {
+                                allphOpenNum++;
+                            }
+                            _globalPowerInfo._power_info.NF_status = _pTreeACPowerMangerTemp->_PowerInfo.NF_status;
+                        }
+                        _globalDeviceManager->pCtrlBoard[_pTreeACPowerMangerTemp->product_saddr]._globalPowerInManger._PowerInfo[k].freq=_globalDeviceManager->pCtrlBoard[_pTreeACPowerMangerTemp->product_saddr]._globalPowerInManger._PowerInfo[k].freq> _pTreeACPowerMangerTemp->_PowerInfo.freq?_globalDeviceManager->pCtrlBoard[_pTreeACPowerMangerTemp->product_saddr]._globalPowerInManger._PowerInfo[k].freq:_pTreeACPowerMangerTemp->_PowerInfo.freq;
+                        if (__globalDeviceManage.triphasic_mmap)
+                        {
+                            __globalDeviceManage.triphasic_mmap->pw_o_chn[_chn].chn[k].o_consumption = _pTreeACPowerMangerTemp->_PowerInfo.consumption * 1000;
+                            __globalDeviceManage.triphasic_mmap->pw_o_chn[_chn].chn[k].o_current = _pTreeACPowerMangerTemp->_PowerInfo.current * 1000;
+                            __globalDeviceManage.triphasic_mmap->pw_o_chn[_chn].chn[k].o_power = _pTreeACPowerMangerTemp->_PowerInfo.power * 1000;
+                            __globalDeviceManage.triphasic_mmap->pw_o_chn[_chn].chn[k].o_voltage = _pTreeACPowerMangerTemp->_PowerInfo.voltage * 1000;
+                            __globalDeviceManage.triphasic_mmap->chn_info[_chn].chn_type = _pTreeACPowerMangerTemp->product_ph_type;
+#ifdef NORTH_USER_SPECILS
+                            uint8_t wanning = 0;
+                            if (_globalTACWarningInfo.w_voltage_up == true)
+                            {
+                                wanning++;
+                            }
+                            if (_globalTACWarningInfo.w_voltage_down == true)
+                            {
+                                wanning++;
+                            }
+                            if (_globalTACWarningInfo.w_current == true)
+                            {
+                                wanning++;
+                            }
+                            if (_globalTACWarningInfo.w_consumption == true)
+                            {
+                                wanning++;
+                            }
+                            if (_globalTACWarningInfo.w_power == true)
+                            {
+                                wanning++;
+                            }
+                            // uint16_t mask = 0xFFFF & (0 << (_chn % 16));
+                            uint16_t data_temp = 0;
+
+                            switch (_chn)
+                            {
+                            case 0 ... 15:
+                            {
+                                data_temp = __globalDeviceManage.north_user.fault_1_16;
+                                data_temp &= ~(1 << (_chn % 16));
+                                if (wanning > 0)
+                                {
+                                    data_temp |= (1 << (_chn % 16));
+                                }
+                                __globalDeviceManage.north_user.fault_1_16 = data_temp;
+                            }
+                            break;
+                            case 16 ... 31:
+                            {
+                                data_temp = __globalDeviceManage.north_user.fault_17_32;
+                                data_temp &= ~(1 << (_chn % 16));
+                                if (wanning > 0)
+                                {
+                                    data_temp |= (1 << (_chn % 16));
+                                }
+                                __globalDeviceManage.north_user.fault_17_32 = data_temp;
+                            }
+                            break;
+                            case 32 ... 47:
+                            {
+                                data_temp = __globalDeviceManage.north_user.fault_33_48;
+                                data_temp &= ~(1 << (_chn % 16));
+                                if (wanning > 0)
+                                {
+                                    data_temp |= (1 << (_chn % 16));
+                                }
+                                __globalDeviceManage.north_user.fault_33_48 = data_temp;
+                            }
+                            break;
+                            case 48 ... 63:
+                            {
+                                data_temp = __globalDeviceManage.north_user.fault_49_64;
+                                data_temp &= ~(1 << (_chn % 16));
+                                if (wanning > 0)
+                                {
+                                    data_temp |= (1 << (_chn % 16));
+                                }
+                                __globalDeviceManage.north_user.fault_49_64 = data_temp;
+                            }
+                            break;
+                            default:
+                                break;
+                            }
+#endif
+                        }
+  
+                        if (__globalDeviceManage.triphasic_mmap)
+                        {
+                            __globalDeviceManage.triphasic_mmap->pw_o_chn[_chn].chn[k].o_status = _pTreeACPowerMangerTemp->_PowerInfo.status;
+                        }
+
+                        k = k + 1;
+                    }
+
+                    if (allphOpenNum == allphOutNum)
+                    {
+                        _globalPowerInfo._power_info.status = 1;
+                    }
+                    else
+                    {
+                        _globalPowerInfo._power_info.status = 0;
+                    }
+
                     // 计算通道总功率因数
                     if (_globalPowerInfo._power_info.power > 0)
                     {

+ 7 - 3
pro/src/sqlite_handle.c

@@ -536,7 +536,7 @@ int dev_search_latest_power_All_info(GlobalDeviceManager* globalDeviceManger,_Ov
             {
                 list_for_each_entry(_TreeACTemp, &_globalPowerMangerTemp->list_Tree_AC, list_Tree_AC)
                 {
-                    if ((2 == _TreeACTemp->product_ph_outputType||3 == _TreeACTemp->product_ph_outputType ) &&1==_TreeACTemp->product_ph_outputStatus)
+                    if (2 == _TreeACTemp->product_ph_outputType &&1==_TreeACTemp->product_ph_outputStatus)
                     {//单项并且状态为输出
                         nStatus=_TreeACTemp->_PowerInfo.status;
                     }
@@ -2468,8 +2468,12 @@ int dev_get_sensor_manage_info(sqlite3 *db,int product_id,GlobalSensorManger* _g
         _globalSensorMangerTemp->sensor_status = 1;//atoi(pResult[i*ncolumn+8]);
         _globalSensorMangerTemp->sensor_val_count = atoi(pResult[i*ncolumn+9]);
 
-        _globalSensorMangerTemp->Cur_sensor_info.val1=-1;
-        _globalSensorMangerTemp->Cur_sensor_info.val2=-1;
+        if (_globalSensorMangerTemp->sensor_interface_type == 2) // 干节点传感器
+        {
+            _globalSensorMangerTemp->Cur_sensor_info.val1 = -1;
+            _globalSensorMangerTemp->Cur_sensor_info.val2 = -1;
+        }
+
         // 记录超限信息
         memset(_globalSensorMangerTemp->over_manager.sensor_val1_upper_threshold_ctrl_para, 0 ,sizeof(char)*512);
         memset(_globalSensorMangerTemp->over_manager.sensor_val1_lower_threshold_ctrl_para, 0 ,sizeof(char)*512);

+ 2 - 0
pro/src/sys.c

@@ -1544,7 +1544,9 @@ static void* polling_thread(void *arg)
     while(h->quit==0) {
         net_check();
         mem_check();
+#if(CHIP_TYPE != CHIP_T113S)
         send_check();
+#endif
         sleep(1);
     }
     pthread_exit(NULL);

+ 4 - 0
pub

@@ -39,6 +39,7 @@ PRJS="PRJ_TEST_AC_I1_O1"
 #PRJS="PRJ_IP_AC_I3_O1"
 #PRJS="PRJ_IP_AC_I1_O1"
 #PRJS="PRJ_IP_YUNNAN_AC_I1_O1"
+#PRJS="PRJ_IP_CHONGQING_AC_I1_O1"
 
 fulldir=$(realpath $0)
 curdir=$(dirname $fulldir)
@@ -179,6 +180,9 @@ function do_copy()
         name=ac_in3_out1_gowone_125A
     elif [ "$1" = "PRJ_DUALWIRES_AC_I3_O2" ];then
         name=ac_DualWires_in3_out2_release
+    elif [ "$1" = "PRJ_IP_CHONGQING_AC_I1_O1" ];then
+        cp -f $custdir/logo/logo_gowone.png $appdir/image/logo.png
+        name=ip_ac_chongqing_in1_out1_release
     else
         echo error! $RPJ not define!!!
         exit 1

+ 3 - 1
truing_control/PDU-AC/common/common.c

@@ -216,8 +216,10 @@ void read_config_from_eeprom(void)
 			}	
 			board->read_eeprom_page(EEPROM_CONSUMER_ADDR +(CONSUM_PAGE*(board->con_da.row)),&chache,sizeof(iic_data));
 			for(int i = 0 ; i < RelaySlaveChaNum;i++)
+			{
 					board->ele_restore[i] = chache.iic_con.iic_consumer[i];
-			//board->md_data.r_data.r_d.ele_out[i].consumer = chache.iic_con.iic_consumer[i];
+			}
+
 			board->con_da.row++;      //point next write row
 			if(board->con_da.row >= MAX_ROW)
 			{

+ 8 - 2
truing_control/PDU-AC/common/common.h

@@ -273,7 +273,10 @@ enum{
 	DELAY_CTRL = 0,
 	PROMPT_CTRL,
 };
-
+enum{
+	STM32_ADC_V_1 = 0,
+	STM32_ADC_V_2,
+};
 
 
 #pragma pack (2)
@@ -383,7 +386,10 @@ typedef union{
 	iic_consumer_chache_t iic_con;
 }iic_data;
 
-
+typedef union{
+	uint8_t 	data[4];
+	uint32_t     value;
+}Rx_Data;
 
 
 

+ 287 - 0
truing_control/PDU-AC/hardware/adc/ADC.c

@@ -0,0 +1,287 @@
+
+#include <stdbool.h>
+#include "ADC.h"
+#include "gd32e23x.h"
+#include "SysTick.h"
+#include "Timer.h"
+#include "math.h"
+#include "common.h"
+
+
+
+bool adc_data_ok_flag = false;
+uint8_t adc_sample_n;//采样次数
+
+
+uint16_t adc_original_value[ADC_CH_N]={0};//存放各通道原始值
+uint16_t adc_calc_value[ADC_Avg_N][ADC_CH_N];//各通道中间过程计算值
+uint32_t adc_Avg_value[ADC_CH_N];//存放各通道平均值
+uint16_t adc_data_zero[ADC_CH_N];
+
+
+
+#define     CH442E_GPIO           GPIOA
+#define     CH442E_RCU            RCU_GPIOA
+#define     CH442E_IN_GPIO				GPIO_PIN_15
+#define 		CH442E_EN_GPIO				GPIO_PIN_12
+
+
+
+
+
+#define      CHOISE_STM32_1			gpio_bit_set(CH442E_GPIO, CH442E_IN_GPIO)
+
+#define      CHOISE_STM32_2			gpio_bit_reset(CH442E_GPIO, CH442E_IN_GPIO) 
+
+
+
+void Init_ADC(void)
+{
+	adc_sample_n = 0;
+	ConfigADCGPIO();
+	while(!dma_flag_get(DMA_CH0,DMA_FLAG_FTF));
+	dma_flag_clear(DMA_CH0,DMA_FLAG_FTF);
+	for(int i = 0;i < 8;i++)
+	{
+		adc_data_zero[i] = 0x149;
+	}
+}
+
+void ConfigADCGPIO(void)
+{
+    //使能RCU相关时钟
+    rcu_periph_clock_enable(ADC_0_5_RCU);//使能GPIOA的时钟
+	rcu_periph_clock_enable(ADC_67_RCU);//使能GPIOB的时钟
+    //使能ADC时钟
+    rcu_periph_clock_enable(RCU_ADC);
+    //使能DMA的时钟
+    rcu_periph_clock_enable(RCU_DMA);
+    //配置ADC时钟
+    rcu_adc_clock_config(RCU_ADCCK_APB2_DIV6);
+  //设置GPIO为ADC接口 
+	gpio_mode_set(ADC_0_5_IO, GPIO_MODE_ANALOG, GPIO_PUPD_NONE, ADC_ch0|ADC_ch1|ADC_ch2|ADC_ch3|ADC_ch4|ADC_ch5);//ADC通道3和4用于串口通信,所以扩展用了ADC通道9和10
+	gpio_mode_set(ADC_67_IO, GPIO_MODE_ANALOG, GPIO_PUPD_NONE, ADC_ch6|ADC_ch7);
+	//复位ADC外设
+	adc_deinit();
+	//配置DMA
+	ADC_dma_config();
+	//内部ADC配置
+	adc_special_function_config(ADC_SCAN_MODE,ENABLE);//配置ADC扫描转换模式
+	adc_special_function_config(ADC_CONTINUOUS_MODE,ENABLE);//配置ADC连续转换模式
+	adc_external_trigger_source_config(ADC_REGULAR_CHANNEL,ADC_EXTTRIG_REGULAR_NONE);//配置ADC外部触发是软件触发
+	adc_data_alignment_config(ADC_DATAALIGN_RIGHT);//配置ADC数据对齐方式是右对齐
+	adc_resolution_config(ADC_RESOLUTION_12B);//配置ADC为12位
+	adc_channel_length_config(ADC_REGULAR_CHANNEL, ADC_CH_N);//配置ADC规则通道组成或注入通道组的长度,因为用到8个通道,所以是8
+
+	adc_regular_channel_config(0U, ADC_CHANNEL_0, ADC_SAMPLETIME_55POINT5);//配置ADC通道组
+    adc_regular_channel_config(1U, ADC_CHANNEL_1, ADC_SAMPLETIME_55POINT5);
+    adc_regular_channel_config(2U, ADC_CHANNEL_4, ADC_SAMPLETIME_55POINT5);
+    adc_regular_channel_config(3U, ADC_CHANNEL_5, ADC_SAMPLETIME_55POINT5);
+    adc_regular_channel_config(4U, ADC_CHANNEL_6, ADC_SAMPLETIME_55POINT5);
+    adc_regular_channel_config(5U, ADC_CHANNEL_7, ADC_SAMPLETIME_55POINT5);
+    adc_regular_channel_config(6U, ADC_CHANNEL_8, ADC_SAMPLETIME_55POINT5);
+    adc_regular_channel_config(7U, ADC_CHANNEL_9, ADC_SAMPLETIME_55POINT5);
+		
+	adc_enable();//使能
+	adc_enable();//使能
+	//delay_ms(2);
+	adc_calibration_enable();//校准复位
+	adc_dma_mode_enable();//使能DMA
+	adc_software_trigger_enable(ADC_REGULAR_CHANNEL);//软件触发
+	adc_software_trigger_enable(ADC_REGULAR_CHANNEL);
+	//dma_interrupt_enable(DMA_CH0,DMA_INT_FTF);
+}
+
+
+
+void ADC_dma_config(void)
+{
+    //通道参数配置
+    dma_parameter_struct dma_data_parameter;
+	//使能ADC时钟
+    rcu_periph_clock_enable(RCU_ADC);
+    //使能DMA的时钟
+    rcu_periph_clock_enable(RCU_DMA);
+    //复位DMA通道
+    dma_deinit(DMA_CH0);
+    
+    //初始化DMA为单数据模式
+    dma_data_parameter.periph_addr  = (uint32_t)(&ADC_RDATA);//设置DMA外设地址,也是DMA数据传输的源地址,ADC单次采样转换结束后,会将数据存入ADC_RDATA地址中
+    dma_data_parameter.periph_inc   = DMA_PERIPH_INCREASE_DISABLE;//设置DMA数据传输的源地址自增算法取消,ADC每次转换后数据存入地址不变
+    dma_data_parameter.memory_addr  = (uint32_t)(adc_original_value);//设置DMA存储器地址,也是DMA数据传输的目标地址
+    dma_data_parameter.memory_inc   = DMA_MEMORY_INCREASE_ENABLE;//设置DMA数据传输目标地址自增算法使能,因为DMA每个周期需要传送八个数据,所以在一个周期内,目标地址要自增
+    dma_data_parameter.periph_width = DMA_PERIPHERAL_WIDTH_16BIT;//设置DMA从外设中读出数据的位数,因为ADC转换后的数值是12位,用16位数值表示,所以这里设置为1字
+    dma_data_parameter.memory_width = DMA_MEMORY_WIDTH_16BIT;  //设置DMA存入存储器的数据位数
+    dma_data_parameter.direction    = DMA_PERIPHERAL_TO_MEMORY;//设置DMA的数据传输方向
+
+    dma_data_parameter.number       = ADC_CH_N;//设置DMA一个周期要传输的数据个数,用了8个通道的ADC,所以在一个周期内要传输8个数据
+
+    dma_data_parameter.priority     = DMA_PRIORITY_HIGH;//设置DMA数据传输高优先级
+    dma_circulation_enable(DMA_CH0);//DMA循环模式使能,这样DMA在传输8个数据后,存储地址复位,自动开启下一轮传输
+    dma_init(DMA_CH0, &dma_data_parameter);//初始化DMA
+	dma_memory_to_memory_disable(DMA_CH0);//这里用不上,所以存储器到存储器DMA传输取消
+    dma_channel_enable(DMA_CH0);//使能DMA通道
+}
+/*********************************************************************************************************
+* 函数名称:DC_I_calfunction
+* 函数功能:直流电流计算公式函数
+* 输入参数:uint16_t 电流的ADC值
+* 输出参数:uint32_t 浮点电流值(mA)
+* 返 回 值:uint32_t 浮点电流值(mA)
+* 创建日期:2024年04月06日
+* 注    意:12位ADC转换公式:实际电压值V = (ADC参考电压Vref * 采样数值N) / 2^12
+*           电流传感器转换公式:实际电流值I(A) = 实际电压值V / 灵敏度参数(V/A)
+*           实际计算时,让小数变成整数,最终结果扩大1000倍
+*********************************************************************************************************/
+uint32_t DC_I_calfunction(uint16_t da,uint8_t channel)
+{
+	uint32_t temp_i = 0;
+	uint32_t temp_v = 0;
+	if(da > 0)
+	{
+		switch(channel)
+		{
+	#if SPPPORT_BIG_HAL
+			case 0:
+			case 1:
+			case 4:
+			case 5:
+			{
+				temp_v = da;
+				if(da < 0xA)
+				{
+					temp_v = 0;
+				}
+				temp_v *= ADC_Vref;
+				temp_v *= 1000;
+				temp_v = temp_v >> 12;
+				temp_v *= 2.5;
+				temp_i = temp_v;
+				temp_i /= 10;//去掉第3位小数
+				temp_i *= 10;
+				//temp_i += 200;
+				if(temp_i <= 80)
+							temp_i = 0;
+			}
+				break;
+		#endif
+			default:
+			{
+				temp_v = da;
+				temp_v *= ADC_Vref;
+				temp_v *= 1000;
+				temp_v = temp_v >> 12;//temp_v /= ADC_Fulscale;
+				temp_v /= A_gain;
+				temp_i = temp_v / I_sens;
+				temp_i /= 10;//去掉第3位小数
+				temp_i *= 10;
+				//temp_i += 70;
+				if(temp_i <= 200)
+							temp_i = 0;
+			}
+		}
+		
+		return temp_i;
+	}
+	else
+	{
+		return 0;
+	}
+}
+
+
+
+static uint16_t sort_buff[ADC_CH_N][ADC_Avg_N] = {0};
+
+
+static void buff_sort(uint16_t *arr,int num)
+{
+	int i,j;
+	uint16_t tmp;
+	for(j=0; j < num;j++)
+	{
+		for(i =0; i < (num -j-1);i++)
+		{
+			if(arr[i+1] > arr[i])
+			{
+				tmp = arr[i+1];
+				arr[i+1] = arr[i];
+				arr[i] = tmp;
+			}
+		}
+	}
+}
+
+static uint32_t calculate_all(uint16_t *arr,int num)
+{
+	uint32_t temp;
+	for(int i= 0; i < num;i++)
+	{
+		temp+=arr[i];
+	}
+	temp = (temp /num);
+	return temp;
+}
+
+
+
+void read_adc_val(void)
+{
+	int8_t i = 0;
+
+	if(adc_sample_n < ADC_Avg_N)
+	{
+		for(i = 0;i < ADC_CH_N ;i++)
+		{
+			 sort_buff[i][adc_sample_n] = adc_original_value[i];
+		}
+		adc_sample_n++;
+	}
+	else
+	{
+		adc_sample_n = 0;
+		
+		for(i = 0;i < ADC_CH_N ;i++)
+		{
+			uint16_t *arr = &sort_buff[i][0];
+			buff_sort(arr,ADC_Avg_N);
+			adc_Avg_value[i] = sort_buff[i][6];
+
+			if(adc_Avg_value[i] > adc_data_zero[i])
+			{
+				adc_Avg_value[i] -= adc_data_zero[i];
+			}
+			else
+			{
+				adc_Avg_value[i] = 0;
+			}
+		}	
+		adc_data_ok_flag = true;
+	}
+}
+
+void che442e_Init(void)
+{
+	rcu_periph_clock_enable(CH442E_RCU); 
+	gpio_mode_set(CH442E_GPIO, GPIO_MODE_OUTPUT, GPIO_PUPD_PULLDOWN, CH442E_IN_GPIO | CH442E_EN_GPIO);
+	gpio_bit_set(CH442E_GPIO, CH442E_IN_GPIO);
+	gpio_bit_reset(CH442E_GPIO, CH442E_EN_GPIO);
+}
+
+
+void che442_change_ch(uint8_t channel)
+{
+	switch(channel)
+	{
+		case STM32_ADC_V_1:
+			CHOISE_STM32_1;
+		break;
+		case STM32_ADC_V_2:
+			CHOISE_STM32_2;
+		break;
+		default:
+			break;
+	}
+}
+
+

+ 56 - 0
truing_control/PDU-AC/hardware/adc/ADC.h

@@ -0,0 +1,56 @@
+
+#ifndef _ADC_H_
+#define _ADC_H_
+/*********************************************************************************************************
+*                                              包含头文件
+*********************************************************************************************************/
+#include "Main.h"
+#include "gd32e23x.h"
+#include "SysTick.h"
+#include "ADC.h"
+#include "board_cfg.h"
+/*********************************************************************************************************
+*                                              宏定义
+*********************************************************************************************************/
+#define ADC_Vref     33  //实际ADC参考电压3.3V,扩大成33
+#define ADC_V_Gain   4020    //实际 200.9   扩大2009
+#define ADC_Fulscale 4096 //ADC满量程值,12位,即4096
+#define I_sens       0.66  //实际电流传感器的灵敏度,单位是V/A,扩大成1
+
+#define A_gain       2  //电压放大倍数
+
+#define ADC_CH_N    8   //通道数
+#define ADC_Avg_N   12   //平均次数
+#define ADC_0_5_RCU RCU_GPIOA
+#define ADC_67_RCU RCU_GPIOB
+
+#define ADC_0_5_IO GPIOA
+#define ADC_67_IO GPIOB
+
+#define ADC_ch0 GPIO_PIN_0
+#define ADC_ch1 GPIO_PIN_1
+#define ADC_ch2 GPIO_PIN_4
+#define ADC_ch3 GPIO_PIN_5
+#define ADC_ch4 GPIO_PIN_6
+#define ADC_ch5 GPIO_PIN_7
+#define ADC_ch6 GPIO_PIN_0
+#define ADC_ch7 GPIO_PIN_1
+
+
+
+/*********************************************************************************************************
+*                                              内部函数声明
+*********************************************************************************************************/
+
+void Init_ADC(void);
+void ConfigADCGPIO(void);
+void ADC_dma_config(void);
+void che442e_Init(void);
+void che442_change_ch(uint8_t channel);
+
+uint32_t DC_I_calfunction(uint16_t da,uint8_t channel);
+void read_adc_val(void);
+
+uint32_t read_voltage(uint8_t channel);
+#endif
+

+ 58 - 26
truing_control/PDU-AC/hardware/detection/detection.c

@@ -69,7 +69,10 @@ void detection_init(void)
 	board = get_board();
 	
 #if(POWER_TYPE == POWER_DC)
-	
+	rcu_periph_clock_enable(DETECTION_1_RCU);
+	gpio_mode_set(DETECTION_1_IO, GPIO_MODE_INPUT, GPIO_PUPD_PULLUP, DETECTION_1);
+	rcu_periph_clock_enable(DETECTION_2_RCU);
+	gpio_mode_set(DETECTION_2_IO, GPIO_MODE_INPUT, GPIO_PUPD_PULLUP, DETECTION_2);
 #else
 	rcu_periph_clock_enable(RCU_CFGCMP);
 	rcu_periph_clock_enable(DETECTION_1_RCU);
@@ -130,17 +133,17 @@ void EXTI4_15_IRQHandler(void){
 		{
 			if(gpio_input_bit_get(KEY_TEST_IO,KEY_TEST) != 0)
 			{
-					for(uint8_t k = 0; k < RelaySlaveChaNum;k++)
-					{
-						async_data da = {0};
-						da.channel =k;
-						da.fire_or_zero = _FIRE;
-						da.method = DELAY_CTRL;
-						da.reg = &board->relay_staging_staus[k];
-						da.status = RELAY_CLOSE;
-						da.w_eep_flag = FLAG_W_EEP;
-						set_relay_sta_async(&da);
-					}				
+//					for(uint8_t k = 0; k < RelaySlaveChaNum;k++)
+//					{
+//						async_data da = {0};
+//						da.channel =k;
+//						da.fire_or_zero = _FIRE;
+//						da.method = DELAY_CTRL;
+//						da.reg = &board->relay_staging_staus[k];
+//						da.status = RELAY_CLOSE;
+//						da.w_eep_flag = FLAG_W_EEP;
+//						set_relay_sta_async(&da);
+//					}				
 				
 			}
 			
@@ -169,17 +172,17 @@ void EXTI2_3_IRQHandler(void)
 		{
 			if(gpio_input_bit_get(KEY_RST_IO,KEY_RST) != 0)
 			{
-					for(uint8_t k = 0; k < RelaySlaveChaNum;k++)
-					{
-						async_data da = {0};
-						da.channel =k;
-						da.fire_or_zero = _FIRE;
-						da.method = DELAY_CTRL;
-						da.reg = &board->relay_staging_staus[k];
-						da.status = RELAY_OPEN;
-						da.w_eep_flag = FLAG_W_EEP;
-						set_relay_sta_async(&da);
-					}						
+//					for(uint8_t k = 0; k < RelaySlaveChaNum;k++)
+//					{
+//						async_data da = {0};
+//						da.channel =k;
+//						da.fire_or_zero = _FIRE;
+//						da.method = DELAY_CTRL;
+//						da.reg = &board->relay_staging_staus[k];
+//						da.status = RELAY_OPEN;
+//						da.w_eep_flag = FLAG_W_EEP;
+//						set_relay_sta_async(&da);
+//					}						
 			}
 		}
 	}
@@ -202,7 +205,13 @@ static void get_detection()
 	if(board)
 	{
 #if (POWER_TYPE == POWER_DC)
-		
+	uint8_t value = 0;
+	if(gpio_input_bit_get(GPIOB,GPIO_PIN_3)==0)
+		value |= 1;
+	if(gpio_input_bit_get(GPIOA,GPIO_PIN_11)==0)
+		value |= 2;
+	board->md_data.r_data.r_d.detection = value;
+	//return value;		
 #else
 		uint16_t data = 0;
 		if(board->detection_1_value > 0)
@@ -214,9 +223,10 @@ static void get_detection()
 		{
 			data  |= (1 << 1);
 		}		
-#endif
 #endif
 		board->md_data.r_data.r_d.detection = data;
+#endif
+		
 	}
 }
 
@@ -517,6 +527,17 @@ static void detection_opt(void)
 					board->handle_input_pt[0] = 1;
 					for(uint8_t k = 0; k < RelaySlaveChaNum;k++)
 					{
+						if(board->md_data.rw_data.rw_d.chn_ctrl[k] == 0)
+						{
+							
+						}else if(board->md_data.rw_data.rw_d.chn_ctrl[k] == 1)
+						{
+							if(board->md_data.rw_data.rw_d.relay_status[k] == RELAY_OPEN)
+								continue;
+						}else if(board->md_data.rw_data.rw_d.chn_ctrl[k] == 2)
+						{
+							continue;
+						}
 							async_data da = {0};
 							da.channel =k;
 							da.fire_or_zero = _FIRE;
@@ -525,7 +546,6 @@ static void detection_opt(void)
 							da.status = board->handle_status[k];
 							da.w_eep_flag = FLAG_N_W_EEP;
 							set_relay_sta_async(&da);
-						//	set_relay_status_async(&board->relay_staging_staus[k],DELAY_CTRL,board->handle_status[k]);
 					}
 #if (ZERO_CONTRL  == ZERO_LINE_CTRL_YES)		
 					for(uint8_t k = 0; k < ZERO_CTRL_NUM;k++)
@@ -546,8 +566,20 @@ static void detection_opt(void)
 				if(board->handle_input_pt[0] == 1)
 				{
 					board->handle_input_pt[0] = 0;
+
 					for(uint8_t k = 0; k < RelaySlaveChaNum;k++)
 					{
+						if(board->md_data.rw_data.rw_d.chn_ctrl[k] == 0)
+						{
+							
+						}else if(board->md_data.rw_data.rw_d.chn_ctrl[k] == 1)
+						{
+								continue;
+						}else if(board->md_data.rw_data.rw_d.chn_ctrl[k] == 2)
+						{
+							if(board->md_data.rw_data.rw_d.relay_status[k] == RELAY_CLOSE)
+								continue;
+						}
 							board->handle_status[k] = board->md_data.rw_data.rw_d.relay_status[k];
 							async_data da = {0};
 							da.channel =k;

+ 29 - 1
truing_control/PDU-AC/hardware/electricity/electricity.c

@@ -4,6 +4,7 @@
 #include "board_cfg.h"
 #include "Hlw8110.h"
 #include "relay.h"
+#include "ADC.h"
 
 static board_t *board = 0;
 static void read_ele(uint8_t channel);
@@ -15,13 +16,21 @@ extern float   F_AC_I;
 extern float   F_AC_P;													
 extern float   F_AC_LINE_Freq;     							
 extern float   F_AC_E;													
-extern float   F_AC_PF;					
+extern float   F_AC_PF;		
+
+extern uint32_t adc_Avg_value[ADC_CH_N];
 
 float elec[RelaySlaveChaNum] = {0.0};
 
 void electricity_init(void)
 {
 	board = get_board();
+#if (POWER_TYPE == POWER_DC)
+	che442e_Init();
+	Init_ADC();
+	uart1_config(115200);
+
+#else
 	uart1_config(9600);
 	ch448f_config();
 	
@@ -30,6 +39,7 @@ void electricity_init(void)
 		select_channel(i);
 		Init_HLW8110();
 	}
+#endif
 	board->read_ele = read_ele;
 	board->check_wanning = check_wanning;
 	board->opt_overfunc = opt_over_func;
@@ -41,8 +51,25 @@ void electricity_init(void)
 
 static void read_ele(uint8_t channel)
 {
+
 	if(channel < RelaySlaveChaNum)
 	{
+#if (POWER_TYPE == POWER_DC)
+		if(channel >=4)
+		{
+			board->md_data.r_data.r_d.ele_out[channel].voltage = read_voltage(STM32_ADC_V_2);
+		}else
+		{
+			board->md_data.r_data.r_d.ele_out[channel].voltage = read_voltage(STM32_ADC_V_1);
+		}
+		read_adc_val();
+		board->md_data.r_data.r_d.ele_out[channel].current = DC_I_calfunction(adc_Avg_value[channel],channel);
+		uint32_t temp_v;
+		uint32_t temp_i;
+		temp_v = board->md_data.r_data.r_d.ele_out[channel].voltage / 10;
+		temp_i = board->md_data.r_data.r_d.ele_out[channel].current / 10;
+		board->md_data.r_data.r_d.ele_out[channel].power = (temp_v * temp_i) / 10;	
+#else
 		select_channel(channel);
 		Calculate_HLW8110_MeterData();
 		board->md_data.r_data.r_d.ele_out[channel].voltage = F_AC_V * 1000;
@@ -66,6 +93,7 @@ static void read_ele(uint8_t channel)
 			board->md_data.r_data.r_d.ele_out[channel].power = 0;
 			board->md_data.r_data.r_d.ele_out[channel].factor = 0;
 		}
+#endif
 	}
 }
 

+ 4 - 1
truing_control/PDU-AC/hardware/relay/relay.c

@@ -140,7 +140,10 @@ void relay_init(void)
 		gpio_bit_reset(RELAY_GPIO, RELAY_8);
 	#endif	
 
-	
+#if (POWER_TYPE == POWER_DC)
+		board->unlock();
+		board->lock;
+#endif
 	board->open = relay_open;
 	board->close = relay_close;
 	board->zero_close = relay_zero_close;

+ 4 - 0
truing_control/PDU-AC/hardware/timer/timer.c

@@ -61,14 +61,18 @@ void TIMER14_IRQHandler(void)
 		board->detection_1_count ++;
 		if(board->detection_1_count >= 100)
 		{
+#if (POWER_TYPE != POWER_DC)
 			board->detection_1_value  = 0;
+#endif
 			board->detection_1_count = 0;
 		}
 #if SURPPORT_2_PT
 		board->detection_2_count ++;
 		if(board->detection_2_count >= 100)
 		{
+#if (POWER_TYPE != POWER_DC)
 			board->detection_2_value  = 0;
+#endif
 			 board->detection_2_count = 0;		
 		}			
 #endif

+ 126 - 3
truing_control/PDU-AC/hardware/uart/uart.c

@@ -3,6 +3,7 @@
 #include "common.h"
 #include "gd32e23x.h"
 #include "Hlw8110.h"
+#include "stdbool.h"
 
 
 #define UART1_BUF_SIZE 10 
@@ -15,6 +16,7 @@ extern unsigned char	u8_RX_Index;
 extern unsigned char	B_Rx_Data_ING;
 extern unsigned char	B_Rx_Finish;
 
+Rx_Data data={0};
 
 
 
@@ -33,8 +35,37 @@ extern unsigned char	B_Rx_Finish;
 #define SEL_2_L  gpio_bit_reset(GPIOB,GPIO_PIN_0)
 
 
-void uart1_config(uint16_t bound)
+void uart1_config(uint32_t bound)
 {
+#if(POWER_TYPE == POWER_DC)  
+  nvic_irq_enable(USART1_IRQn, 1);     //ê1?ü′??ú?D??£?éè??ó??è??
+  rcu_periph_clock_enable(RCU_GPIOA);  //ê1?üGPIOAê±?ó
+
+  //????TXμ?GPIO 
+  gpio_af_set(GPIOA, GPIO_AF_1, GPIO_PIN_2);  //?′ó?PA2
+  gpio_mode_set(GPIOA, GPIO_MODE_AF, GPIO_PUPD_PULLUP, GPIO_PIN_2);
+  gpio_output_options_set(GPIOA, GPIO_OTYPE_PP, GPIO_OSPEED_10MHZ, GPIO_PIN_2);
+  
+  //????RXμ?GPIO
+  gpio_af_set(GPIOA, GPIO_AF_1, GPIO_PIN_3);  //?′ó?PA3
+  gpio_mode_set(GPIOA, GPIO_MODE_AF, GPIO_PUPD_PULLUP, GPIO_PIN_3);
+  gpio_output_options_set(GPIOA, GPIO_OTYPE_PP, GPIO_OSPEED_10MHZ, GPIO_PIN_3);
+
+  //????USARTμ?2?êy
+  rcu_periph_clock_enable(RCU_USART1);                  //ê1?ü′??úê±?ó
+  usart_deinit(USART1);                                 //RCU???????′??è??μ
+  usart_baudrate_set(USART1, bound);                    //éè??2¨ì??ê
+  usart_stop_bit_set(USART1,USART_STB_1BIT);            //éè??í£?1??
+  usart_word_length_set(USART1,USART_WL_8BIT);          //éè??êy?Y×?3¤?è
+  usart_parity_config(USART1,USART_PM_NONE);            //éè??????D£?é??,??D£?é
+  usart_receive_config(USART1, USART_RECEIVE_ENABLE);   //ê1?ü?óê?
+  usart_transmit_config(USART1, USART_TRANSMIT_ENABLE); //ê1?ü·¢?í
+  usart_enable(USART1);                                 //ê1?ü′??ú
+
+  usart_interrupt_enable(USART1, USART_INT_RBNE);  			//ê1?ü?óê??o3???·????D??  
+	 nvic_irq_enable(USART1_IRQn, 2);
+#else
+	
 	nvic_irq_enable(USART1_IRQn, 2);
 	rcu_periph_clock_enable(RCU_GPIOA);
 	gpio_af_set(GPIOA, GPIO_AF_1, GPIO_PIN_2); 
@@ -49,18 +80,70 @@ void uart1_config(uint16_t bound)
 	usart_deinit(USART1);
 	usart_baudrate_set(USART1, bound);
 	usart_stop_bit_set(USART1,USART_STB_1BIT);
+
 	usart_word_length_set(USART1,USART_WL_9BIT);
 	usart_parity_config(USART1,USART_PM_EVEN); 
 	usart_receive_config(USART1, USART_RECEIVE_ENABLE);
 	usart_transmit_config(USART1, USART_TRANSMIT_ENABLE);
 	usart_enable(USART1);
 	usart_interrupt_enable(USART1, USART_INT_RBNE);
-	
+#endif	
 }
 
 
+
+
+#if (POWER_TYPE == POWER_DC)
+
+uint8_t	TX_Length;
+uint8_t	RX_Length;
+uint8_t	RX_Index;
+uint8_t	Rx_Data_len;
+bool    Rx_Finish_flag;   
+
+void USART1_IRQHandler(void)            
+{
+	 if(usart_flag_get(USART1, USART_FLAG_ORERR) == SET) //ò?3?′í?ó±ê???a1
+  {                                                         
+    usart_flag_clear(USART1, USART_FLAG_ORERR);       //??3yò?3?′í?ó±ê??
+
+  }                                                                                                           
+	if(usart_interrupt_flag_get(USART1, USART_INT_FLAG_TBE)!= RESET)  //·¢?í?o3??????D??
+  {     
+	
+    usart_interrupt_flag_clear(USART1, USART_INT_FLAG_TBE);        //??3y·¢?í?D??±ê??
+  }
+	if(usart_interrupt_flag_get(USART1, USART_INT_FLAG_TC)!= RESET)  //·¢?ííê3é?D??
+  {     	
+		usart_interrupt_flag_clear(USART1, USART_INT_FLAG_TC);         //??3y·¢?ííê3é?D??   		
+  }
+	if(usart_interrupt_flag_get(USART1, USART_INT_FLAG_RBNE) != RESET)  //?óê??o3???·????D??
+	{
+		usart_interrupt_flag_clear(USART1, USART_INT_FLAG_RBNE);  //??3yUSART1?D??1ò?e
+		
+
+		extern Rx_Data data;
+		data.data[RX_Index] = usart_data_receive(USART1);
+
+		RX_Index++;
+		if(RX_Index >= RX_Length)//?óê?íê3é
+		{
+			RX_Index = 0;
+			Rx_Finish_flag = true;
+		}
+	}
+} 
+#else
 void USART1_IRQHandler(void)
 {
+	if(usart_flag_get(USART1, USART_FLAG_ORERR) == SET)
+  {                                                         
+    usart_flag_clear(USART1, USART_FLAG_ORERR);       
+  } 
+	if(usart_interrupt_flag_get(USART1, USART_INT_FLAG_TBE)!= RESET) 
+  {     
+    usart_interrupt_flag_clear(USART1, USART_INT_FLAG_TBE);       
+  }
 	if(usart_interrupt_flag_get(USART1, USART_INT_FLAG_RBNE) != RESET) 
 	{
 		usart_interrupt_flag_clear(USART1, USART_INT_FLAG_RBNE);
@@ -77,7 +160,7 @@ void USART1_IRQHandler(void)
 		}
 	}
 }
-
+#endif
 
 void Start_Send_UartData(unsigned char len)
 {
@@ -89,6 +172,16 @@ void Start_Send_UartData(unsigned char len)
 	}
 }
 
+void DC_Start_Send_UartData(uint8_t *pt,uint8_t len)
+{
+	uint8_t i;
+	for(i = 0;i < len;i++)
+	{
+		usart_data_transmit(USART1, *(pt+i));  	//·¢?í×?·?oˉêy
+		while(usart_flag_get(USART1, USART_FLAG_TC) == RESET);//μè′y·¢?í?áê?
+	}
+}
+
 
 void ch448f_config(void)
 {
@@ -169,3 +262,33 @@ void select_channel(uint8_t chx)
 	}
 }
 
+uint32_t read_voltage(uint8_t channel)
+{
+	uint16_t _read_volatge = 0xA5A5;
+	uint32_t value;
+	RX_Length = 4;
+	che442_change_ch(channel);
+	DelayNus(5);
+	//memcpy(u8_TxBuf,&_read_volatge,2);
+	//Start_Send_UartData(2);
+	DC_Start_Send_UartData((uint8_t*)&_read_volatge,sizeof(_read_volatge));
+	int count = 0;
+	while(Rx_Finish_flag != true)
+	{
+		DelayNms(1);
+		if(count >= 20)
+		{
+			RX_Index = 0;
+			Rx_Finish_flag =false;
+			break;
+		}
+		count++;
+	}
+	if(Rx_Finish_flag)
+	{
+		value = data.value;
+		Rx_Finish_flag = false;
+	}else
+		value = 0;
+	return value;
+}

+ 3 - 2
truing_control/PDU-AC/hardware/uart/uart.h

@@ -1,7 +1,7 @@
 #ifndef __UART_H_
 #define __UART_H_
 
-
+#include "stdint.h"
 
 
 
@@ -11,9 +11,10 @@
 
 void ch448f_config(void);
 void select_channel(unsigned char chx);
-void uart1_config(unsigned short bound);
+void uart1_config(unsigned int bound);
 void Start_Send_UartData(unsigned char len);
 
+uint32_t read_voltage(uint8_t channel);
 
 
 #endif

+ 4 - 2
truing_control/PDU-AC/modbus/BARE/port/port.c

@@ -304,7 +304,6 @@ eMBRegHoldingCB( UCHAR * pucRegBuffer, USHORT usAddress, USHORT usNRegs, eMBRegi
 											set_relay_sta_async(&da);											
 										}
 										board->relay_combin_staging_status[j+T_cnt] = usRegHoldBuf[WiRegIndex+j];
-									//	board->md_data.rw_data.rw_d.combin_relay_status[j+T_cnt] = board->relay_combin_staging_status[j+T_cnt];
 									}
 								}
 #elif ((POWER_TYPE == POWER_AC_3_2))
@@ -313,6 +312,8 @@ eMBRegHoldingCB( UCHAR * pucRegBuffer, USHORT usAddress, USHORT usNRegs, eMBRegi
 								if(board->md_data.rw_data.rw_d.chn_ctrl[j  ] == 0 && 
 											board->md_data.rw_data.rw_d.chn_ctrl[j + PT_SUB_COUNT] == 0)
 								{
+									if(board->md_data.r_data.r_d.detection == 0x3)
+									{
 											async_data da = {0};
 											da.channel = j;
 											da.fire_or_zero = _FIRE;
@@ -328,7 +329,8 @@ eMBRegHoldingCB( UCHAR * pucRegBuffer, USHORT usAddress, USHORT usNRegs, eMBRegi
 											da.reg = &board->relay_staging_staus[j+PT_SUB_COUNT];
 											da.status = usRegHoldBuf[WiRegIndex+j];
 											da.w_eep_flag = FLAG_W_EEP;
-											set_relay_sta_async(&da);												
+											set_relay_sta_async(&da);	
+										}
 								}
 							}
 #endif								

Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 3598 - 3860
truing_control/PDU-AC/prj/JLinkLog.txt


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 157 - 103
truing_control/PDU-AC/prj/ctrl_board.uvguix.Gowon


+ 95 - 34
truing_control/PDU-AC/prj/ctrl_board.uvoptx

@@ -117,6 +117,11 @@
         <pMon>Segger\JL2CM3.dll</pMon>
       </DebugOpt>
       <TargetDriverDllRegistry>
+        <SetRegEntry>
+          <Number>0</Number>
+          <Key>DLGUARM</Key>
+          <Name>???</Name>
+        </SetRegEntry>
         <SetRegEntry>
           <Number>0</Number>
           <Key>DLGTARM</Key>
@@ -155,6 +160,26 @@
           <WinNumber>1</WinNumber>
           <ItemText>usRegHoldBuf</ItemText>
         </Ww>
+        <Ww>
+          <count>3</count>
+          <WinNumber>1</WinNumber>
+          <ItemText>u8_TxBuf</ItemText>
+        </Ww>
+        <Ww>
+          <count>4</count>
+          <WinNumber>1</WinNumber>
+          <ItemText>adc_Avg_value</ItemText>
+        </Ww>
+        <Ww>
+          <count>5</count>
+          <WinNumber>1</WinNumber>
+          <ItemText>adc_original_value</ItemText>
+        </Ww>
+        <Ww>
+          <count>6</count>
+          <WinNumber>1</WinNumber>
+          <ItemText>TotalWh</ItemText>
+        </Ww>
       </WatchWindow1>
       <Tracepoint>
         <THDelay>0</THDelay>
@@ -180,7 +205,7 @@
         <aPa1>0</aPa1>
         <AscS4>0</AscS4>
         <aSer4>0</aSer4>
-        <StkLoc>0</StkLoc>
+        <StkLoc>1</StkLoc>
         <TrcWin>0</TrcWin>
         <newCpu>0</newCpu>
         <uProt>0</uProt>
@@ -367,6 +392,30 @@
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
     </File>
+    <File>
+      <GroupNumber>3</GroupNumber>
+      <FileNumber>13</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\fw_lib\Source\gd32e23x_adc.c</PathWithFileName>
+      <FilenameWithoutPath>gd32e23x_adc.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>3</GroupNumber>
+      <FileNumber>14</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\fw_lib\Source\gd32e23x_dma.c</PathWithFileName>
+      <FilenameWithoutPath>gd32e23x_dma.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
   </Group>
 
   <Group>
@@ -377,7 +426,7 @@
     <RteFlg>0</RteFlg>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>13</FileNumber>
+      <FileNumber>15</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -389,7 +438,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>14</FileNumber>
+      <FileNumber>16</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -401,7 +450,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>15</FileNumber>
+      <FileNumber>17</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -413,7 +462,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>16</FileNumber>
+      <FileNumber>18</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -425,7 +474,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>17</FileNumber>
+      <FileNumber>19</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -437,7 +486,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>18</FileNumber>
+      <FileNumber>20</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -449,7 +498,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>19</FileNumber>
+      <FileNumber>21</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -461,7 +510,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>20</FileNumber>
+      <FileNumber>22</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -473,7 +522,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>21</FileNumber>
+      <FileNumber>23</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -485,7 +534,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>22</FileNumber>
+      <FileNumber>24</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -497,7 +546,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>23</FileNumber>
+      <FileNumber>25</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -509,7 +558,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>24</FileNumber>
+      <FileNumber>26</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -521,7 +570,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>25</FileNumber>
+      <FileNumber>27</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -533,7 +582,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>26</FileNumber>
+      <FileNumber>28</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -545,7 +594,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>27</FileNumber>
+      <FileNumber>29</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -555,6 +604,18 @@
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
     </File>
+    <File>
+      <GroupNumber>4</GroupNumber>
+      <FileNumber>30</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\hardware\adc\ADC.c</PathWithFileName>
+      <FilenameWithoutPath>ADC.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
   </Group>
 
   <Group>
@@ -565,7 +626,7 @@
     <RteFlg>0</RteFlg>
     <File>
       <GroupNumber>5</GroupNumber>
-      <FileNumber>28</FileNumber>
+      <FileNumber>31</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -577,7 +638,7 @@
     </File>
     <File>
       <GroupNumber>5</GroupNumber>
-      <FileNumber>29</FileNumber>
+      <FileNumber>32</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -589,7 +650,7 @@
     </File>
     <File>
       <GroupNumber>5</GroupNumber>
-      <FileNumber>30</FileNumber>
+      <FileNumber>33</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -601,7 +662,7 @@
     </File>
     <File>
       <GroupNumber>5</GroupNumber>
-      <FileNumber>31</FileNumber>
+      <FileNumber>34</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -613,7 +674,7 @@
     </File>
     <File>
       <GroupNumber>5</GroupNumber>
-      <FileNumber>32</FileNumber>
+      <FileNumber>35</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -625,7 +686,7 @@
     </File>
     <File>
       <GroupNumber>5</GroupNumber>
-      <FileNumber>33</FileNumber>
+      <FileNumber>36</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -637,7 +698,7 @@
     </File>
     <File>
       <GroupNumber>5</GroupNumber>
-      <FileNumber>34</FileNumber>
+      <FileNumber>37</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -649,7 +710,7 @@
     </File>
     <File>
       <GroupNumber>5</GroupNumber>
-      <FileNumber>35</FileNumber>
+      <FileNumber>38</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -661,7 +722,7 @@
     </File>
     <File>
       <GroupNumber>5</GroupNumber>
-      <FileNumber>36</FileNumber>
+      <FileNumber>39</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -673,7 +734,7 @@
     </File>
     <File>
       <GroupNumber>5</GroupNumber>
-      <FileNumber>37</FileNumber>
+      <FileNumber>40</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -685,7 +746,7 @@
     </File>
     <File>
       <GroupNumber>5</GroupNumber>
-      <FileNumber>38</FileNumber>
+      <FileNumber>41</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -697,7 +758,7 @@
     </File>
     <File>
       <GroupNumber>5</GroupNumber>
-      <FileNumber>39</FileNumber>
+      <FileNumber>42</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -709,7 +770,7 @@
     </File>
     <File>
       <GroupNumber>5</GroupNumber>
-      <FileNumber>40</FileNumber>
+      <FileNumber>43</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -721,7 +782,7 @@
     </File>
     <File>
       <GroupNumber>5</GroupNumber>
-      <FileNumber>41</FileNumber>
+      <FileNumber>44</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -733,7 +794,7 @@
     </File>
     <File>
       <GroupNumber>5</GroupNumber>
-      <FileNumber>42</FileNumber>
+      <FileNumber>45</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -753,7 +814,7 @@
     <RteFlg>0</RteFlg>
     <File>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>43</FileNumber>
+      <FileNumber>46</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -765,7 +826,7 @@
     </File>
     <File>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>44</FileNumber>
+      <FileNumber>47</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -777,7 +838,7 @@
     </File>
     <File>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>45</FileNumber>
+      <FileNumber>48</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>

+ 16 - 1
truing_control/PDU-AC/prj/ctrl_board.uvprojx

@@ -339,7 +339,7 @@
               <MiscControls></MiscControls>
               <Define>GD32E230</Define>
               <Undefine></Undefine>
-              <IncludePath>..\common;..\core\Include;..\fw_lib\Include;..\hardware\detection;..\hardware\eeprom;..\hardware\flash;..\hardware\fwdgt;..\hardware\haddr;..\hardware\hlw8110;..\hardware\jlink;..\hardware\key;..\hardware\led;..\hardware\lock;..\hardware\relay;..\hardware\timer;..\hardware\uart;..\hardware\switch;..\modbus\ascii;..\modbus\BARE\port;..\modbus\functions;..\modbus\include;..\modbus\rtu;..\user;..\hardware\electricity;..\hardware\quere</IncludePath>
+              <IncludePath>..\common;..\core\Include;..\fw_lib\Include;..\hardware\detection;..\hardware\eeprom;..\hardware\flash;..\hardware\fwdgt;..\hardware\haddr;..\hardware\hlw8110;..\hardware\jlink;..\hardware\key;..\hardware\led;..\hardware\lock;..\hardware\relay;..\hardware\timer;..\hardware\uart;..\hardware\switch;..\modbus\ascii;..\modbus\BARE\port;..\modbus\functions;..\modbus\include;..\modbus\rtu;..\user;..\hardware\electricity;..\hardware\quere;..\hardware\adc</IncludePath>
             </VariousControls>
           </Cads>
           <Aads>
@@ -453,6 +453,16 @@
               <FileType>1</FileType>
               <FilePath>..\fw_lib\Source\gd32e23x_exti.c</FilePath>
             </File>
+            <File>
+              <FileName>gd32e23x_adc.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\fw_lib\Source\gd32e23x_adc.c</FilePath>
+            </File>
+            <File>
+              <FileName>gd32e23x_dma.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\fw_lib\Source\gd32e23x_dma.c</FilePath>
+            </File>
           </Files>
         </Group>
         <Group>
@@ -533,6 +543,11 @@
               <FileType>1</FileType>
               <FilePath>..\hardware\quere\query.c</FilePath>
             </File>
+            <File>
+              <FileName>ADC.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\hardware\adc\ADC.c</FilePath>
+            </File>
           </Files>
         </Group>
         <Group>

+ 13 - 1
truing_control/PDU-AC/user/board_cfg.h

@@ -52,7 +52,8 @@
 
 #define   PRJ_8_NEW									0
 #define   PRJ_3_4                   0
-#define   PRJ_3_2                   1
+#define   PRJ_3_2                   0
+#define 	PRJ_DC_8									1
 
 
 
@@ -87,6 +88,17 @@
 	#define 	RELAY_REMENBER						1
 	#define   SURPPORT_2_PT             1
 	#define   PT_SUB_COUNT              (PT_SUB_COUNT_4)
+#elif PRJ_DC_8
+	#define   POWER_TYPE                (POWER_DC)
+	#define   INPUT_PT_NUM              (INPUT_PT_2)
+	#define   ZERO_CONTRL               (ZERO_LINE_CTRL_NO)
+	#define   ZERO_CTRL_NUM             (ZERO_LINE_NONE)
+	#define   OUTPUT_CONTRL             (OUTPUT_CTRL_YES)
+	#define 	RelaySlaveChaNum 					8
+	#define 	SUPPORT_ALL_ON_OFF        1
+	#define 	RELAY_REMENBER						1
+	#define   SURPPORT_2_PT             1	
+	#define   PT_SUB_COUNT              (PT_SUB_COUNT_4)
 #endif
 
 

+ 51 - 13
truing_control/PDU-AC/user/main.c

@@ -21,6 +21,8 @@
 board_t  ac_board = 		{0};
 META_DATA_S meta_data = {0};
 
+float TotalWh[RelaySlaveChaNum] ={0.0};
+
 board_t *get_board()
 {
 	return &ac_board;
@@ -46,7 +48,6 @@ int main(){
 	detection_init();
 	relay_init();
 	haddr_init();
-	relay_init();
 	eeprom_init();
 	time_init();
 	electricity_init();
@@ -134,26 +135,53 @@ int main(){
 	}
 
 #else
-	
-	if(ac_board.md_data.r_data.r_d.detection & 0x1)
-	{
-		for(uint8_t i = 0; i < RelaySlaveChaNum;i++)
+	#if SURPPORT_2_PT
+		if(ac_board.md_data.r_data.r_d.detection & 0x1)
 		{
-			ac_board.handle_status[i] = ac_board.relay_staging_staus[i];
+			for(uint8_t i = 0; i < PT_SUB_COUNT;i++)
+			{
+				ac_board.handle_status[i] = ac_board.relay_staging_staus[i];
+			}
 		}
-#if (ZERO_CONTRL  == ZERO_LINE_CTRL_YES)
-		for(uint8_t i = 0; i < ZERO_CTRL_NUM;i++)
+		
+		if(ac_board.md_data.r_data.r_d.detection & 0x2)
 		{
-			ac_board.handle_status_N[i] = ac_board.relay_zero_staging_status[i];
+			for(uint8_t i = PT_SUB_COUNT; i < RelaySlaveChaNum;i++)
+			{
+				ac_board.handle_status[i] = ac_board.relay_staging_staus[i];
+			}
 		}
+	#else
+
+		if(ac_board.md_data.r_data.r_d.detection & 0x1)
+		{
+			for(uint8_t i = 0; i < RelaySlaveChaNum;i++)
+			{
+				ac_board.handle_status[i] = ac_board.relay_staging_staus[i];
+			}
+	#if (ZERO_CONTRL  == ZERO_LINE_CTRL_YES)
+			for(uint8_t i = 0; i < ZERO_CTRL_NUM;i++)
+			{
+				ac_board.handle_status_N[i] = ac_board.relay_zero_staging_status[i];
+			}
+	#endif
+		}	
+	
+
 #endif
-	}	
 	
 #endif
 	
 	
 	while(1)
 	{
+		
+#if (POWER_TYPE == POWER_DC)
+		for(int i = 0;i < RelaySlaveChaNum;i++)
+		{
+			ac_board.read_ele(i);
+		}
+#endif
 		task_query();
 		task_1s();
 		task_10s();
@@ -189,11 +217,21 @@ static void task_1s(void)
 			ac_board.flag_1s = 0;
 			ac_board.led_flash();
 			ac_board.detection();
+	
+#if (POWER_TYPE == POWER_DC)
+		for(int i = 0;i < RelaySlaveChaNum;i++)
+		{
+			float temp_w = (float)ac_board.md_data.r_data.r_d.ele_out[i].power;
+			temp_w /= 3600.0;
+			temp_w /= 1000.0;
+			TotalWh[i] += temp_w;
+			ac_board.md_data.r_data.r_d.ele_out[i].consumer = ac_board.ele_restore[i] + TotalWh[i];
+		}
+#else
 			ac_board.read_ele(channel);
 			ac_board.check_wanning(ELE_OUTPUT,channel);
-			ac_board.opt_overfunc(channel);
-
-		
+			ac_board.opt_overfunc(channel);		
+#endif
 			channel++;
 			if(channel == RelaySlaveChaNum)
 			{

+ 1 - 1
truing_control/PDU-Magnetic-Retention-AC/hardware/74hc595d/74hc595d.c

@@ -37,7 +37,7 @@ void show_channel_staus(uint8_t status)
 {
 	for(int i = 0; i < 8;i++)
 	{
-		if((status >> i) & 0x01)
+		if((status >> (7-i)) & 0x01)
 		{
 			gpio_bit_set(GPIOD,CHANNEL_DATA);
 		}else

+ 11 - 11
truing_control/PDU-Magnetic-Retention-AC/hardware/Key/Key.c

@@ -125,24 +125,24 @@ unsigned char ReadKeyValue(void)
 
 void EXTI0_IRQHandler(void)
 {
-#if SUPPORT_2_DETECTION
-	if(RESET != exti_interrupt_flag_get(DERECTION_IO_2_EXIT))
-	{
-		key_detection_2 = 1;
-		detection_count_2 = 0;
-		exti_interrupt_flag_clear(DERECTION_IO_2_EXIT);
-	}	
-#endif
-}
 
-void EXTI1_IRQHandler(void){
-	
 	if(RESET != exti_interrupt_flag_get(DERECTION_IO_1_EXIT))
 	{
 		key_detection_1 = 1;
 		detection_count_1 = 0;
 		exti_interrupt_flag_clear(DERECTION_IO_1_EXIT);
+	}	
+}
+
+void EXTI1_IRQHandler(void){
+#if SUPPORT_2_DETECTION	
+	if(RESET != exti_interrupt_flag_get(DERECTION_IO_2_EXIT))
+	{
+		key_detection_2 = 1;
+		detection_count_2 = 0;
+		exti_interrupt_flag_clear(DERECTION_IO_2_EXIT);
 	}
+#endif
 	if(RESET != exti_interrupt_flag_get(EXTI_8))
 	{
 		

+ 2 - 2
truing_control/PDU-Magnetic-Retention-AC/usr/board_cfg.h

@@ -3,7 +3,7 @@
 
 
 
-#define  	PRJ_4_BASE                0
+#define  	PRJ_4_BASE                1
 #define 	PRJ_4_ALL_O_ALL_C					0
 #define   PRJ_4_SELF_LOCK_SWITCH    0
 #define 	PRJ_6_BASE								0
@@ -13,7 +13,7 @@
 #define   PRJ_TWIN_FIRE             0
 #define 	PRJ_ITK_8_CHANNEL					0
 #define   PRJ_2_2_BASE              0
-#define   PRJ_8_NEW									1
+#define   PRJ_8_NEW									0
 #define 	PRJ_OLD_4                 0
 #define   PRJ_1_All_OLD             0
 #define   PRJ_7                     0

+ 3 - 3
truing_control/PDU-Magnetic-Retention-AC/usr/main.c

@@ -476,8 +476,8 @@ void switch_recode()
 					{
 						handle_status[i] = EE_ACDC_State_ReadReg[i].ACDC_Cha_On_Off_State;
 						EE_ACDC_State_ReadReg[i].ACDC_Cha_On_Off_State = false;
-						AT24CxxWrite(Eepr_AC_Sing_State_SmaWAddr+k*2,(uint8_t *)&EE_ACDC_State_ReadReg[k],2);
-						RelayState_ch(k);
+						AT24CxxWrite(Eepr_AC_Sing_State_SmaWAddr+i*2,(uint8_t *)&EE_ACDC_State_ReadReg[i],2);
+						RelayState_ch(i);
 					}
 			    handle_detection[0] = 0;
 				}
@@ -489,7 +489,7 @@ void switch_recode()
 				EE_ACDC_State_ReadReg[0].ACDC_ALLCha_On_State=true;
 				for(int i = 0;i < RelaySlaveChaNum;i++){
 					EE_ACDC_State_ReadReg[i].ACDC_Cha_On_Off_State=handle_status[i];
-					AT24CxxWrite(Eepr_AC_Sing_State_SmaWAddr+k*2,(uint8_t *)&EE_ACDC_State_ReadReg[k],2);
+					AT24CxxWrite(Eepr_AC_Sing_State_SmaWAddr+i*2,(uint8_t *)&EE_ACDC_State_ReadReg[i],2);
 				}
 				
 				All_On_Flag = 1;																										

+ 43 - 19
truing_control/PDU-Triphasic_IO/USER/main.c

@@ -348,7 +348,7 @@ static void  check_jlink()
 								RL_delay_Limit[k] = AC3PPDU_RL_time[k + CH1_out].RL_ontime * 100;//秒转成毫秒
 								RL_begin_delay_flag[k] = 1;
 								RL_end_delay_flag[k] = 0;
-								RL_delay_Limit[k] = AC3PPDU_RL_time[k + CH1_out].RL_ontime * 100;//秒转成毫秒
+								//RL_delay_Limit[k] = AC3PPDU_RL_time[k + CH1_out].RL_ontime * 100;//秒转成毫秒
 							}else//无延时
 							{
 								RL_begin_delay_flag[k] = 0;
@@ -1081,15 +1081,19 @@ static void MODbus_CMD_New(void)
 					Eeprom_Rbuf[temp_addr + 2] = data >> 8;
 					Eeprom_Rbuf[temp_addr + 3] = data >> 0;	
 					AC3PPDU_Modbus_Reg[base_addr] = data;
+					//uint16_t th_flag = 0;
 					if(AC3PPDU_Modbus_Reg[base_addr] <= THRESHOULD_JUDGMENT)
 					{
-						AC3PPDU_RL_time[value + CH1_out].LT_state &= (Shield_Vmax_Threshould_Disable);
-						
+						//AC3PPDU_RL_time[value + CH1_out].LT_state &= (Shield_Vmax_Threshould_Disable);
+						//th_flag &=(Shield_Vmax_Threshould_Disable);
+						AC3PPDU_Vmax_LTen_flag[value+CH1_out] = 0;
 					}else 
 					{
-						AC3PPDU_RL_time[value + CH1_out].LT_state |= Shield_Vmax_Threshould_enable;
+						//AC3PPDU_RL_time[value + CH1_out].LT_state |= Shield_Vmax_Threshould_enable;
+						//th_flag |=(Shield_Vmax_Threshould_enable);
+						AC3PPDU_Vmax_LTen_flag[value+CH1_out] = 1;
 					}
-					LimiT_enable_check((value + CH1_out),AC3PPDU_RL_time[value + CH1_out].LT_state);
+					//LimiT_enable_check((value + CH1_out),th_flag);
 					AT24CxxWrite(temp_addr,(Eeprom_Rbuf + temp_addr),4);
 				}
 				break;
@@ -1104,14 +1108,20 @@ static void MODbus_CMD_New(void)
 					Eeprom_Rbuf[temp_addr + 2] = data >> 8;
 					Eeprom_Rbuf[temp_addr + 3] = data >> 0;	
 					AC3PPDU_Modbus_Reg[base_addr] = data;
+					//uint16_t th_flag = 0;
 					if(AC3PPDU_Modbus_Reg[base_addr] <= THRESHOULD_JUDGMENT)
 					{
-						AC3PPDU_RL_time[value + CH1_out].LT_state &= (Shield_Vmin_Threshould_Disable);	
+						//AC3PPDU_RL_time[value + CH1_out].LT_state &= (Shield_Vmin_Threshould_Disable);	
+						
+						//th_flag &=(Shield_Vmin_Threshould_Disable);
+						AC3PPDU_Vmin_LTen_flag[value+CH1_out] = 0;
 					}else
 					{
-						AC3PPDU_RL_time[value + CH1_out].LT_state |= (Shield_Vmin_Threshould_enable);
+						//AC3PPDU_RL_time[value + CH1_out].LT_state |= (Shield_Vmin_Threshould_enable);
+						//th_flag |=(Shield_Vmin_Threshould_enable);
+						AC3PPDU_Vmin_LTen_flag[value+CH1_out] = 1;
 					}
-					LimiT_enable_check((value + CH1_out),AC3PPDU_RL_time[value + CH1_out].LT_state);
+					//LimiT_enable_check((value + CH1_out),th_flag);
 					AT24CxxWrite(temp_addr,(Eeprom_Rbuf + temp_addr),4);
 			}
 				break;
@@ -1126,15 +1136,19 @@ static void MODbus_CMD_New(void)
 					Eeprom_Rbuf[temp_addr + 2] = data >> 8;
 					Eeprom_Rbuf[temp_addr + 3] = data >> 0;	
 					AC3PPDU_Modbus_Reg[base_addr] = data;
+					uint16_t th_flag = 0;
 					if(AC3PPDU_Modbus_Reg[base_addr] <= THRESHOULD_JUDGMENT)
 					{
-						AC3PPDU_RL_time[value + CH1_out].LT_state &= (Shield_Imax_Threshould_Disable);
-						
+						//AC3PPDU_RL_time[value + CH1_out].LT_state &= (Shield_Imax_Threshould_Disable);
+						//th_flag &=(Shield_Imax_Threshould_Disable);
+						AC3PPDU_Imax_LTen_flag[value+CH1_out] = 0;
 					}else
 					{
-						AC3PPDU_RL_time[value + CH1_out].LT_state |= (Shield_Imax_Threshould_enable);
+						//AC3PPDU_RL_time[value + CH1_out].LT_state |= (Shield_Imax_Threshould_enable);
+						//th_flag |=(Shield_Imax_Threshould_enable << 1);
+						AC3PPDU_Vmax_LTen_flag[CH1_out+value] = 1;
 					}
-					LimiT_enable_check((value + CH1_out),AC3PPDU_RL_time[value + CH1_out].LT_state);
+					//LimiT_enable_check((value + CH1_out),th_flag);
 					AT24CxxWrite(temp_addr,(Eeprom_Rbuf + temp_addr),4);
 			}
 				break;
@@ -1149,14 +1163,19 @@ static void MODbus_CMD_New(void)
 					Eeprom_Rbuf[temp_addr + 2] = data >> 8;
 					Eeprom_Rbuf[temp_addr + 3] = data >> 0;	
 					AC3PPDU_Modbus_Reg[base_addr] = data;
+					uint16_t th_flag = 0;
 					if(AC3PPDU_Modbus_Reg[base_addr] <= THRESHOULD_JUDGMENT)
 					{
-						AC3PPDU_RL_time[value + CH1_out].LT_state &= (Shield_Wmax_Threshould_Disable);
+						//AC3PPDU_RL_time[value + CH1_out].LT_state &= (Shield_Wmax_Threshould_Disable);
+						th_flag &=(Shield_Wmax_Threshould_Disable << 1);
+						AC3PPDU_Wmax_LTen_flag[value+CH1_out] = 0;
 					}else
 					{
-						AC3PPDU_RL_time[value + CH1_out].LT_state |= (Shield_Wmax_Threshould_enable);
+						//AC3PPDU_RL_time[value + CH1_out].LT_state |= (Shield_Wmax_Threshould_enable);
+						//th_flag &=(Shield_Wmax_Threshould_enable << 1);
+						AC3PPDU_Wmax_LTen_flag[value+CH1_out] = 1;
 					}
-					LimiT_enable_check((value + CH1_out),AC3PPDU_RL_time[value + CH1_out].LT_state);
+					//LimiT_enable_check((value + CH1_out),th_flag);
 					AT24CxxWrite(temp_addr,(Eeprom_Rbuf + temp_addr),4);
 			}
 				break;
@@ -1171,14 +1190,19 @@ static void MODbus_CMD_New(void)
 						Eeprom_Rbuf[temp_addr + 2] = data >> 8;
 						Eeprom_Rbuf[temp_addr + 3] = data >> 0;	
 						AC3PPDU_Modbus_Reg[base_addr] = data;
+						//uint16_t th_flag = 0;
 						if(AC3PPDU_Modbus_Reg[base_addr] <= THRESHOULD_JUDGMENT)
 						{
-							AC3PPDU_RL_time[value + CH1_out].LT_state &= (Shield_Kwhmax_Threshould_Disable);
+							//AC3PPDU_RL_time[value + CH1_out].LT_state &= (Shield_Kwhmax_Threshould_Disable);
+							//th_flag &=(Shield_Kwhmax_Threshould_Disable << 1);
+							AC3PPDU_kWhmax_LTen_flag[value+CH1_out] = 0;
 						}else
 						{
-							AC3PPDU_RL_time[value + CH1_out].LT_state |= (Shield_kWhmax_Threshould_enable);
+							//AC3PPDU_RL_time[value + CH1_out].LT_state |= (Shield_kWhmax_Threshould_enable);
+							//th_flag &=(Shield_kWhmax_Threshould_enable << 1);
+							AC3PPDU_kWhmax_LTen_flag[value+CH1_out] = 1;
 						}
-						LimiT_enable_check((value + CH1_out),AC3PPDU_RL_time[value + CH1_out].LT_state);
+						//LimiT_enable_check((value + CH1_out),th_flag);
 						AT24CxxWrite(temp_addr,(Eeprom_Rbuf + temp_addr),4);
 			}
 				break;
@@ -1701,12 +1725,12 @@ static void MODbus_CMD_New(void)
 			{
 				if(data)
 				{
-					
 					temp_addr = base_addr - Mb_Dbuff_Clear_Chn1_Consumer;
 					hlw8110_base[temp_addr+CH1_out] = 0;
 					hlw8110_store[temp_addr+CH1_out] = 0.0;
 				}
 			}
+			break;
 			case Mb_Dbuff_Clear_Chnall_Consumer:
 			{
 				if(data){

+ 26 - 3
truing_control/STS/HARDWARE/R_Led/R_Led.c

@@ -92,13 +92,19 @@ void show_wanning_led(void)
 				if(data->m_data.input_wanning.waning[0] != 0)
 				{
 					value |= POWER_R1_Y;
-					value |= POWER_R2_G;
+					//value |= POWER_R2_G;
+				}else
+				{
+					value |= POWER_R1_G;
 				}
 				if(data->m_data.input_wanning.waning[1] != 0)
 				{
 					value |= POWER_R2_Y;
-					value |= POWER_R1_G;
-				}				
+					//value |= POWER_R1_G;
+				}else
+				{
+					value |= POWER_R2_G;
+				}
 			}
 
 		}else
@@ -106,6 +112,15 @@ void show_wanning_led(void)
 			if(data->m_data.input_status.input_status[0] == 0)
 			{
 				value |=POWER_R1_R;
+				if(data->m_data.input_status.input_status[1] == 1)
+				{
+					if(data->m_data.input_wanning.waning[1] != 0)
+					{
+						value |= POWER_R2_Y;
+					}else
+						value |=POWER_R2_G;
+				
+				}
 				if(data->m_data.input_wanning.waning[0] != 0)
 				{
 					value |= POWER_R1_Y;
@@ -114,6 +129,14 @@ void show_wanning_led(void)
 			if(data->m_data.input_status.input_status[1] == 0)
 			{
 				value |=POWER_R2_R;
+				if(data->m_data.input_status.input_status[0] == 1)
+				{
+					if(data->m_data.input_wanning.waning[0] != 0)
+					{
+						value |= POWER_R1_Y;
+					}else
+						value |=POWER_R1_G;
+				}
 				if(data->m_data.input_wanning.waning[1] != 0)
 				{
 					value |= POWER_R2_Y;

+ 1 - 2
truing_control/STS/HARDWARE/Temprature/Temprature.c

@@ -28,7 +28,7 @@ static float get_temp(void);
 
 #define R_HOT(ad) ((V_HOT(ad)*10000.0) / ((VREF/10.0)-(2.0*V_HOT(ad))))
 
-#define T_TEMP(res) ((662.666 - (45.389 * log(res)) + (0.069 * log(res)*log(res)*log(res))) - 273.15)
+#define T_TEMP(res) ((662.7481 - (45.40407 * log(res)) + (0.06895 * log(res)*log(res)*log(res))) - 273.15)
 
 //static uint32_t gather_count = 0;
 
@@ -55,7 +55,6 @@ static float get_temp(void)
 		if(((uint32_t)res)>=598 && ((uint32_t)res) <= 197000)
 		{
 					data->m_data.temprature_flag  = TEMP_ONLINE;
-					temprature -= 5;
 					data->m_data.temprature = temprature * 100;
 		}else
 		{

+ 34 - 34
truing_control/STS/PRJ/test.py

@@ -1,41 +1,41 @@
 import numpy as np
 from scipy.optimize import curve_fit
-# NXFT15XH103
+# NXFT18XH103F05RL
 data = np.array([
-[-40,197338],
-[-35,149395],
-[-30,114345],
-[-25,88381],
-[-20,68915],
-[-15,54166],
-[-10,42889],
-[-5,34196],
-[0,27445],
-[5,22165],
-[10,18010],
-[15,14720],
-[20,12099],
+[-40,195652],
+[-35,148171],
+[-30,113347],
+[-25,87559],
+[-20,68237],
+[-15,53650],
+[-10,42506],
+[-5,33892],
+[0,27219],
+[5,22021],
+[10,17926],
+[15,14674],
+[20,12081],
 [25,10000],
-[30,8309],
-[35,6939],
-[40,5824],
-[45,4911],
-[50,4160],
-[55,3539],
-[60,3024],
-[65,2593],
-[70,2233],
-[75,1929],
-[80,1673],
-[85,1455],
-[90,1270],
-[95,1112],
-[100,976],
-[105,860],
-[110,759],
-[115,673],
-[120,598],
-[125,532],
+[30,8315],
+[35,6948],
+[40,5834],
+[45,4917],
+[50,4161],
+[55,3535],
+[60,3014],
+[65,2586],
+[70,2228],
+[75,1925],
+[80,1669],
+[85,1452],
+[90,1268],
+[95,1110],
+[100,974],
+[105,858],
+[110,758],
+[115,672],
+[120,596],
+[125,531],
 ])
 
 T_K = data[:, 0] + 273.15