|
|
@@ -1,7 +1,8 @@
|
|
|
#include "secc_port.h"
|
|
|
#include "GBT27930.h"
|
|
|
+int can_GBT27930_wait_n(GBT27930_t* dev,int pgn);
|
|
|
|
|
|
-
|
|
|
+static _27930_recvFlag_t _27930_recvFlag;
|
|
|
static int can_GBT27930_send_stop(GBT27930_t* dev, int REASON)
|
|
|
{
|
|
|
ccu_port_t *ccu = (ccu_port_t*)dev->ccu;
|
|
|
@@ -36,13 +37,14 @@ static int can_GBT27930_send_timeout(GBT27930_t* dev, int STATE)
|
|
|
{
|
|
|
case GBT_27930_TIMEOUT_BRM:{dev->cem.brm_timeout=1;}break;
|
|
|
case GBT_27930_TIMEOUT_BCP:{dev->cem.bcp_timeout=1;}break;
|
|
|
- case GBT_27930_TIMEOUT_BRO:{dev->cem.bro_timeout=1;}break;
|
|
|
- case GBT_27930_TIMEOUT_BCS:{dev->cem.bcs_timeout=1;}break;
|
|
|
- case GBT_27930_TIMEOUT_BCL:{dev->cem.bcl_timeout=1;}break;
|
|
|
+ case GBT_27930_2015_BRO:{dev->cem.bro_timeout=1;}break;
|
|
|
+ case GBT_27930_2015_BCS:{dev->cem.bcs_timeout=1;}break;
|
|
|
+ case GBT_27930_2015_BCL:{dev->cem.bcl_timeout=1;}break;
|
|
|
case GBT_27930_TIMEOUT_BST:{dev->cem.bst_timeout=1;}break;
|
|
|
case GBT_27930_TIMEOUT_BSD:{dev->cem.bsd_timeout=1;}break;
|
|
|
default: {dev->cem.others=1;} break;
|
|
|
}
|
|
|
+ can_APP_clear(0);
|
|
|
return can_GBT27930_send_CEM(dev, &dev->cem);
|
|
|
}
|
|
|
|
|
|
@@ -207,6 +209,17 @@ static int can_GBT27930_Insulation(GBT27930_t* dev)
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
+#define SPILTE(X) X //单纯用于分割
|
|
|
+#define WAIT_CONDI(XFlag,Xtime,Y1,Y2) do{\
|
|
|
+ XFlag = systime_ms()+Xtime;\
|
|
|
+ while(1){\
|
|
|
+ if(XFlag < systime_ms()){Y1 \
|
|
|
+ break;}\
|
|
|
+ Y2\
|
|
|
+ usleep(5000);}\
|
|
|
+ XFlag = XFlag+1-systime_ms();\
|
|
|
+ }while(0)
|
|
|
+
|
|
|
static int can_GBT27930_PreCharge(GBT27930_t* dev)
|
|
|
{
|
|
|
int ret;
|
|
|
@@ -222,6 +235,7 @@ static int can_GBT27930_PreCharge(GBT27930_t* dev)
|
|
|
printccui("BRM_TIMEOUT\n");
|
|
|
can_GBT27930_send_timeout(dev, GBT_27930_TIMEOUT_BRM);
|
|
|
secc_set_error(secc, GUN_PRECHARGE_FAULT);
|
|
|
+ secc_set_state(secc, GUN_COMFALUT);
|
|
|
return GBT_27930_2015_ERROR;
|
|
|
}
|
|
|
|
|
|
@@ -233,6 +247,7 @@ static int can_GBT27930_PreCharge(GBT27930_t* dev)
|
|
|
printccui("BCP_TIMEOUT\n");
|
|
|
can_GBT27930_send_timeout(dev, GBT_27930_TIMEOUT_BCP);
|
|
|
secc_set_error(secc, GUN_PRECHARGE_FAULT);
|
|
|
+ secc_set_state(secc, GUN_COMFALUT);
|
|
|
return GBT_27930_2015_ERROR;
|
|
|
}
|
|
|
|
|
|
@@ -245,41 +260,61 @@ static int can_GBT27930_PreCharge(GBT27930_t* dev)
|
|
|
printd("SECC(%d) BMS Battery Voltage exceed the range of SECC\n", secc->config->connectorId);
|
|
|
return GBT_27930_2015_ERROR;
|
|
|
}
|
|
|
- else
|
|
|
- {
|
|
|
- can_GBT27930_send_CTS(dev, NULL);
|
|
|
- }
|
|
|
-
|
|
|
//----------通知车端启动绝缘检测---------
|
|
|
dev->cml.chgMaxOutputVoltage = (uint16_t)(secc->SECC_maxV*10 + 0.5);
|
|
|
dev->cml.chgMinOutputVoltage = (uint16_t)(secc->SECC_minV*10 + 0.5);
|
|
|
dev->cml.chgMaxOutputCurrent = (uint16_t)(secc->SECC_maxI*10 + 0.5);
|
|
|
dev->cml.chgMinOutputCurrent = (uint16_t)(secc->SECC_minI*10 + 0.5);
|
|
|
can_GBT27930_send_CML(dev, &dev->cml);
|
|
|
- ret = can_GBT27930_wait(dev, GBT_27930_2015_BRO, BRO_0x00_TIMEOUT);
|
|
|
- if (ret != GBT_27930_2015_BRO)
|
|
|
- {
|
|
|
- can_GBT27930_send_timeout(dev, GBT_27930_TIMEOUT_BRO);
|
|
|
- secc_set_error(secc, GUN_PRECHARGE_FAULT);
|
|
|
- printd("SECC(%d) BMS Insulation timeout or fault.\n", secc->config->connectorId);
|
|
|
- return GBT_27930_2015_ERROR;
|
|
|
- }
|
|
|
-
|
|
|
+ long int wait_time ;
|
|
|
+ WAIT_CONDI(
|
|
|
+ wait_time,60000,
|
|
|
+ SPILTE(
|
|
|
+ can_GBT27930_send_timeout(dev, GBT_27930_2015_BRO);
|
|
|
+ secc_set_state(secc, GUN_COMFALUT);
|
|
|
+ secc_set_error(secc, GUN_PRECHARGE_FAULT);
|
|
|
+ //printd("SECC(%d) BMS Insulation timeout or fault.\n", secc->config->connectorId);
|
|
|
+ printccui("SECC(%d) BMS Insulation timeout or fault.\n", secc->config->connectorId);
|
|
|
+ return GBT_27930_2015_ERROR;
|
|
|
+ ),
|
|
|
+ can_GBT27930_send_CTS(dev, NULL);
|
|
|
+ ret = can_GBT27930_wait_n(dev, GBT_27930_2015_BRO);
|
|
|
+ if(ret == GBT_27930_2015_BRO)break;
|
|
|
+ );
|
|
|
//----------等待车端绝缘检测完成----------
|
|
|
can_GBT27930_send_CML(dev, &dev->cml);
|
|
|
- ret = can_GBT27930_wait(dev, GBT_27930_2015_BRO, BRO_0xAA_TIMEOUT);
|
|
|
- if (ret != GBT_27930_2015_BRO)
|
|
|
- {
|
|
|
- can_GBT27930_send_timeout(dev, GBT_27930_TIMEOUT_BRO);
|
|
|
- secc_set_error(secc, GUN_PRECHARGE_FAULT);
|
|
|
- printd("SECC(%d) BMS Insulation timeout or fault.\n", secc->config->connectorId);
|
|
|
- return GBT_27930_2015_ERROR;
|
|
|
- }
|
|
|
-
|
|
|
+ dev->bro.status = 0x00;//清零
|
|
|
+ WAIT_CONDI(
|
|
|
+ wait_time,60000,
|
|
|
+ SPILTE(
|
|
|
+ can_GBT27930_send_timeout(dev, GBT_27930_2015_BRO);
|
|
|
+ secc_set_state(secc, GUN_COMFALUT);
|
|
|
+ secc_set_error(secc, GUN_PRECHARGE_FAULT);
|
|
|
+ //printd("SECC(%d) BMS Insulation timeout or fault.\n", secc->config->connectorId);
|
|
|
+ printccui("SECC(%d) BMS Insulation timeout or fault.\n", secc->config->connectorId);
|
|
|
+ return GBT_27930_2015_ERROR;
|
|
|
+ ),
|
|
|
+ can_GBT27930_send_CTS(dev, NULL);
|
|
|
+ if( dev->bro.status == 0xaa)
|
|
|
+ {
|
|
|
+ printf(",ambdnabdn");
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ );
|
|
|
+ can_APP_clear(GBT_27930_2015_CML); ////GB2015-27930-tab.d1
|
|
|
+ can_APP_clear(GBT_27930_2015_CTS);
|
|
|
//----------开始调整桩端电压----------
|
|
|
can_GBT27930_send_CRO(dev, 0x00);
|
|
|
- for(int i=0; i<60000; i+=200)
|
|
|
- {
|
|
|
+
|
|
|
+ long int bro_time = systime_ms();
|
|
|
+
|
|
|
+ WAIT_CONDI(
|
|
|
+ wait_time,60000,
|
|
|
+ SPILTE(
|
|
|
+ secc_set_error(secc, GUN_PRECHARGE_FAULT);
|
|
|
+ ),
|
|
|
+ // RECV_BMS(dev,GBT_27930_2015_BRO,bro_time);
|
|
|
+ RECV_BMS(dev,GBT_27930_2015_BRO,bro_time);
|
|
|
float VBattery = ((float)dev->bcp.bmsVoltage) / 10;
|
|
|
float VDelta = fabs(secc->VGround - secc->VMeters);
|
|
|
//printd("SECC(%d) SECC_minV:%f, VMeters:%f, SECC_maxV:%f, VGround:%f, VDelta:%f\n", secc->config->connectorId, secc->SECC_minV, secc->VMeters, secc->SECC_maxV, secc->VGround, VDelta);
|
|
|
@@ -294,7 +329,7 @@ static int can_GBT27930_PreCharge(GBT27930_t* dev)
|
|
|
secc_request_power(secc, POWER_REQUEST_CONST_VOLTAGE, VBattery, 0.0f);
|
|
|
}
|
|
|
msleep(200);
|
|
|
- }
|
|
|
+ );
|
|
|
secc_set_error(secc, GUN_PRECHARGE_FAULT);
|
|
|
return GBT_27930_2015_ERROR;
|
|
|
}
|
|
|
@@ -338,102 +373,116 @@ static int can_GBT27930_Charging(GBT27930_t* dev)
|
|
|
printccui("step\n");
|
|
|
ret = can_GBT27930_wait(dev, GBT_27930_2015_BCL, BCL_TIMEOUT);
|
|
|
printccui("step\n");
|
|
|
+ long int bcs_time = systime_ms();
|
|
|
+ long int bcl_time = systime_ms();
|
|
|
+ int start_sendCCS = 0;
|
|
|
while(secc_should_stop(secc) != 1)
|
|
|
{
|
|
|
- int ret = can_GBT27930_wait(dev, 3<<24, 1000,GBT_27930_2015_BCS,GBT_27930_2015_BCL,GBT_27930_2015_BSM);
|
|
|
- switch(ret)
|
|
|
- {
|
|
|
- case GBT_27930_2015_BCL:
|
|
|
- {
|
|
|
- bcl_ms = systime_ms();
|
|
|
- // if (dev->bcl.bmsChargeMode != dev->bcl_last.bmsChargeMode || dev->bcl.bmsVoltage_request != dev->bcl_last.bmsVoltage_request || dev->bcl.bmsCurrent_request != dev->bcl_last.bmsCurrent_request)
|
|
|
- {
|
|
|
- float voltage = (((float)dev->bcl.bmsVoltage_request) / 10);
|
|
|
- float current = (((float)dev->bcl.bmsCurrent_request) / 10);
|
|
|
- //printi("SECC(%d) BCL voltage:%f, current:%f, mode:%d\n", secc->config->connectorId, voltage, current, dev->bcl.bmsChargeMode);
|
|
|
- printccui("SBCL secc->VMeters:%f, secc->VGround:%f,secc->I=IMeters:%f\n",secc->VMeters, secc->VGround,secc->IMeters);
|
|
|
- //printccui("SECC(%d) BCL voltage:%f, current:%f, mode:%d\n", secc->config->connectorId, voltage, current, dev->bcl.bmsChargeMode);
|
|
|
- if (dev->bcl.bmsChargeMode == 1) { secc_request_power(secc, POWER_REQUEST_CONST_VOLTAGE, voltage, current); }
|
|
|
- if (dev->bcl.bmsChargeMode == 2) { secc_request_power(secc, POWER_REQUEST_CONST_CURRENT, voltage, current); }
|
|
|
- }
|
|
|
- }break;
|
|
|
- case GBT_27930_2015_BCS:
|
|
|
- {
|
|
|
- bcs_ms = systime_ms();
|
|
|
- secc->EV_Charging_current = ((float)dev->bcs.chargingCurrent) / 10;
|
|
|
- secc->EV_Charging_voltage = ((float)dev->bcs.chargingVoltage) / 10;
|
|
|
- secc->EV_Estimate_Minutes = dev->bcs.bmsChargingNeedMinutes;
|
|
|
- secc->SOC = dev->bcs.bmsSOC;
|
|
|
- //printi("SECC(%d) BCS(%fV, %fA, %dM, %dP)\n", secc->config->connectorId, secc->EV_Charging_voltage, secc->EV_Charging_current, secc->EV_Estimate_Minutes, secc->SOC);
|
|
|
- printccui("SECC(%d) BCS(%fV, %fA, %dM, %dP)\n", secc->config->connectorId, secc->EV_Charging_voltage, secc->EV_Charging_current, secc->EV_Estimate_Minutes, secc->SOC);
|
|
|
- secc_report_MeterValues(secc);
|
|
|
- }break;
|
|
|
- case GBT_27930_2015_BSM:
|
|
|
+ //int ret = can_GBT27930_wait(dev, 3<<24, 1000,GBT_27930_2015_BCS,GBT_27930_2015_BCL,GBT_27930_2015_BSM);
|
|
|
+ RECV_BMS(dev,GBT_27930_2015_BCL,bcl_time);
|
|
|
+ RECV_BMS(dev,GBT_27930_2015_BCS,bcs_time);
|
|
|
+ if(can_GBT27930_wait_n(dev,GBT_27930_2015_BSM)==GBT_27930_2015_BSM){
|
|
|
+ _27930_recvFlag.GBT_27930_2015_BSM_recv = 1;
|
|
|
+ }
|
|
|
+
|
|
|
+ if(_27930_recvFlag.GBT_27930_2015_BCL_recv==1){
|
|
|
+ _27930_recvFlag.GBT_27930_2015_BCL_recv = 0 ;
|
|
|
+ start_sendCCS |= 1;
|
|
|
+ bcl_ms = systime_ms();
|
|
|
+ // if (dev->bcl.bmsChargeMode != dev->bcl_last.bmsChargeMode || dev->bcl.bmsVoltage_request != dev->bcl_last.bmsVoltage_request || dev->bcl.bmsCurrent_request != dev->bcl_last.bmsCurrent_request)
|
|
|
{
|
|
|
- bsm_ms = systime_ms();
|
|
|
float voltage = (((float)dev->bcl.bmsVoltage_request) / 10);
|
|
|
float current = (((float)dev->bcl.bmsCurrent_request) / 10);
|
|
|
- if(dev->bsm.bmsBatteryOverTemp != 0){
|
|
|
- secc_set_error(secc, CCU_BATTERY_FAULT);
|
|
|
- goto endhandl;
|
|
|
- }else if(dev->bsm.bmsBatteryOverSOC ){
|
|
|
- secc_set_error(secc, CCU_BATTERY_FAULT);
|
|
|
- goto endhandl;
|
|
|
- }else if(dev->bsm.bmsBatteryOverCurrent){
|
|
|
- secc_set_error(secc, CCU_BATTERY_FAULT);
|
|
|
- goto endhandl;
|
|
|
- }else if(dev->bsm.bmsPowerBatteryOverTemp){
|
|
|
- secc_set_error(secc, CCU_BATTERY_FAULT);
|
|
|
- goto endhandl;
|
|
|
- }else if(dev->bsm.bmsPowerBatteryOverRsizder){
|
|
|
- secc_set_error(secc, CCU_BATTERY_FAULT);
|
|
|
- goto endhandl;
|
|
|
- }else if(dev->bsm.bmsPowerBatteryConnector){
|
|
|
- secc_set_error(secc, CCU_BATTERY_FAULT);
|
|
|
- goto endhandl;
|
|
|
- }
|
|
|
- if (dev->bsm.bmsPowerPermitted == 0x0 && dev->bsm_last.bmsPowerPermitted == 1)
|
|
|
- { //暂停
|
|
|
- printi("SECC(%d) BSM(%d).%s\n", secc->config->connectorId, dev->bsm.bmsPowerPermitted, "suspend");
|
|
|
- secc_request_power(secc, POWER_REQUEST_SHUTDOWN, voltage, current);
|
|
|
- }
|
|
|
- if (dev->bsm.bmsPowerPermitted == 0x1 && dev->bsm_last.bmsPowerPermitted == 0)
|
|
|
- { //继续
|
|
|
- printi("SECC(%d) BSM(%d).%s\n", secc->config->connectorId, dev->bsm.bmsPowerPermitted, "continue");
|
|
|
- if (dev->bcl.bmsChargeMode = 0x01) { secc_request_power(secc, POWER_REQUEST_CONST_VOLTAGE, voltage, current); }
|
|
|
- if (dev->bcl.bmsChargeMode = 0x02) { secc_request_power(secc, POWER_REQUEST_CONST_CURRENT, voltage, current); }
|
|
|
- }
|
|
|
- }break;
|
|
|
- case GBT_27930_2015_BRO: break;
|
|
|
- default:{
|
|
|
- printe("step, ret:%d\n", ret);
|
|
|
- can_GBT27930_send_timeout(dev, GBT_27930_TIMEOUT_BCS);
|
|
|
- secc_set_error(secc, GUN_CHARGING_FAULT);
|
|
|
- return GBT_27930_2015_ERROR;
|
|
|
- }break;
|
|
|
+ //printi("SECC(%d) BCL voltage:%f, current:%f, mode:%d\n", secc->config->connectorId, voltage, current, dev->bcl.bmsChargeMode);
|
|
|
+ printccui("SBCL secc->VMeters:%f, secc->VGround:%f,secc->I=IMeters:%f\n",secc->VMeters, secc->VGround,secc->IMeters);
|
|
|
+ //printccui("SECC(%d) BCL voltage:%f, current:%f, mode:%d\n", secc->config->connectorId, voltage, current, dev->bcl.bmsChargeMode);
|
|
|
+ if (dev->bcl.bmsChargeMode == 1) { secc_request_power(secc, POWER_REQUEST_CONST_VOLTAGE, voltage, current); }
|
|
|
+ if (dev->bcl.bmsChargeMode == 2) { secc_request_power(secc, POWER_REQUEST_CONST_CURRENT, voltage, current); }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if(_27930_recvFlag.GBT_27930_2015_BCS_recv == 1){
|
|
|
+ _27930_recvFlag.GBT_27930_2015_BCS_recv = 0;
|
|
|
+ start_sendCCS |= 3;
|
|
|
+ bcs_ms = systime_ms();
|
|
|
+ secc->EV_Charging_current = ((float)dev->bcs.chargingCurrent) / 10;
|
|
|
+ secc->EV_Charging_voltage = ((float)dev->bcs.chargingVoltage) / 10;
|
|
|
+ secc->EV_Estimate_Minutes = dev->bcs.bmsChargingNeedMinutes;
|
|
|
+ secc->SOC = dev->bcs.bmsSOC;
|
|
|
+ //printi("SECC(%d) BCS(%fV, %fA, %dM, %dP)\n", secc->config->connectorId, secc->EV_Charging_voltage, secc->EV_Charging_current, secc->EV_Estimate_Minutes, secc->SOC);
|
|
|
+ printccui("SECC(%d) BCS(%fV, %fA, %dM, %dP)\n", secc->config->connectorId, secc->EV_Charging_voltage, secc->EV_Charging_current, secc->EV_Estimate_Minutes, secc->SOC);
|
|
|
+ secc_report_MeterValues(secc);
|
|
|
+ }
|
|
|
+
|
|
|
+ if(_27930_recvFlag.GBT_27930_2015_BSM_recv == 1){
|
|
|
+ _27930_recvFlag.GBT_27930_2015_BSM_recv = 0;
|
|
|
+ bsm_ms = systime_ms();
|
|
|
+ float voltage = (((float)dev->bcl.bmsVoltage_request) / 10);
|
|
|
+ float current = (((float)dev->bcl.bmsCurrent_request) / 10);
|
|
|
+ if(dev->bsm.bmsBatteryOverTemp != 0){
|
|
|
+ secc_set_error(secc, CCU_BATTERY_FAULT);
|
|
|
+ goto endhandl;
|
|
|
+ }else if(dev->bsm.bmsBatteryOverSOC ){
|
|
|
+ secc_set_error(secc, CCU_BATTERY_FAULT);
|
|
|
+ goto endhandl;
|
|
|
+ }else if(dev->bsm.bmsBatteryOverCurrent){
|
|
|
+ secc_set_error(secc, CCU_BATTERY_FAULT);
|
|
|
+ goto endhandl;
|
|
|
+ }else if(dev->bsm.bmsPowerBatteryOverTemp){
|
|
|
+ secc_set_error(secc, CCU_BATTERY_FAULT);
|
|
|
+ goto endhandl;
|
|
|
+ }else if(dev->bsm.bmsPowerBatteryOverRsizder){
|
|
|
+ secc_set_error(secc, CCU_BATTERY_FAULT);
|
|
|
+ goto endhandl;
|
|
|
+ }else if(dev->bsm.bmsPowerBatteryConnector){
|
|
|
+ secc_set_error(secc, CCU_BATTERY_FAULT);
|
|
|
+ goto endhandl;
|
|
|
+ }
|
|
|
+ if (dev->bsm.bmsPowerPermitted == 0x0 && dev->bsm_last.bmsPowerPermitted == 1)
|
|
|
+ { //暂停
|
|
|
+ printi("SECC(%d) BSM(%d).%s\n", secc->config->connectorId, dev->bsm.bmsPowerPermitted, "suspend");
|
|
|
+ secc_request_power(secc, POWER_REQUEST_SHUTDOWN, voltage, current);
|
|
|
+ }
|
|
|
+ if (dev->bsm.bmsPowerPermitted == 0x1 && dev->bsm_last.bmsPowerPermitted == 0)
|
|
|
+ { //继续
|
|
|
+ printi("SECC(%d) BSM(%d).%s\n", secc->config->connectorId, dev->bsm.bmsPowerPermitted, "continue");
|
|
|
+ if (dev->bcl.bmsChargeMode = 0x01) { secc_request_power(secc, POWER_REQUEST_CONST_VOLTAGE, voltage, current); }
|
|
|
+ if (dev->bcl.bmsChargeMode = 0x02) { secc_request_power(secc, POWER_REQUEST_CONST_CURRENT, voltage, current); }
|
|
|
+ }
|
|
|
}
|
|
|
now_ms = systime_ms();
|
|
|
- if ((now_ms - bcl_ms) > BCL_TIMEOUT) { printi("SECC(%d) timeout(bcl:%lld, bcs:%lld, bsm:%lld)\n", secc->config->connectorId, (now_ms - bcl_ms), (now_ms - bcs_ms), (now_ms - bsm_ms)); break;}
|
|
|
- if ((now_ms - bcs_ms) > BCS_TIMEOUT) { printi("SECC(%d) timeout(bcl:%lld, bcs:%lld, bsm:%lld)\n", secc->config->connectorId, (now_ms - bcl_ms), (now_ms - bcs_ms), (now_ms - bsm_ms)); break;}
|
|
|
- if ((now_ms - bsm_ms) > BSM_TIMEOUT) { printi("SECC(%d) timeout(bcl:%lld, bcs:%lld, bsm:%lld)\n", secc->config->connectorId, (now_ms - bcl_ms), (now_ms - bcs_ms), (now_ms - bsm_ms)); goto endhandl;}
|
|
|
- if ((now_ms - ccs_ms) > BCL_TIMEOUT)
|
|
|
- {
|
|
|
- // printi("SECC(%d) CCS VMeters:%f, IMeters:%f, EMeters:%f\n", secc->config->connectorId,secc->VMeters,secc->IMeters,secc->EMeters);
|
|
|
- printccui("SECC(%d) CCS VMeters:%f, IMeters:%f, EMeters:%f\n", secc->config->connectorId,secc->VMeters,secc->IMeters,secc->EMeters);
|
|
|
+ // if ((now_ms - bcl_ms) > BCL_TIMEOUT) { printi("SECC(%d) timeout(bcl:%lld, bcs:%lld, bsm:%lld)\n", secc->config->connectorId, (now_ms - bcl_ms), (now_ms - bcs_ms), (now_ms - bsm_ms)); break;}
|
|
|
+ // if ((now_ms - bcs_ms) > BCS_TIMEOUT) { printi("SECC(%d) timeout(bcl:%lld, bcs:%lld, bsm:%lld)\n", secc->config->connectorId, (now_ms - bcl_ms), (now_ms - bcs_ms), (now_ms - bsm_ms)); break;}
|
|
|
+ // if ((now_ms - bsm_ms) > BSM_TIMEOUT) { printi("SECC(%d) timeout(bcl:%lld, bcs:%lld, bsm:%lld)\n", secc->config->connectorId, (now_ms - bcl_ms), (now_ms - bcs_ms), (now_ms - bsm_ms)); goto endhandl;}
|
|
|
+ // if ((now_ms - ccs_ms) > BCL_TIMEOUT)
|
|
|
+ // {
|
|
|
+ // // printi("SECC(%d) CCS VMeters:%f, IMeters:%f, EMeters:%f\n", secc->config->connectorId,secc->VMeters,secc->IMeters,secc->EMeters);
|
|
|
+ // printccui("SECC(%d) CCS VMeters:%f, IMeters:%f, EMeters:%f\n", secc->config->connectorId,secc->VMeters,secc->IMeters,secc->EMeters);
|
|
|
memset(&dev->ccs, 0, sizeof(dev->ccs));
|
|
|
dev->ccs.chgOutputting = 0x1;
|
|
|
dev->ccs.chgChargedMinutes = (time(NULL) - secc->started_UTC + 30)/60;
|
|
|
dev->ccs.chgOutputVoltage = (uint16_t)(secc->VMeters*10 + 0.5);
|
|
|
dev->ccs.chgOutputCurrent = (uint16_t)(secc->IMeters*10 + 0.5);
|
|
|
- can_GBT27930_send_CCS(dev, &dev->ccs);
|
|
|
+ if(start_sendCCS == 3)can_GBT27930_send_CCS(dev, &dev->ccs);
|
|
|
ccs_ms = systime_ms();
|
|
|
- }
|
|
|
+ // }
|
|
|
+ usleep(2000);
|
|
|
}
|
|
|
endhandl:
|
|
|
- printi("step\n");
|
|
|
+ printccui("step\n");
|
|
|
secc_set_state(secc, GUN_STOPPING);
|
|
|
return GBT_27930_2015_NORMAL;
|
|
|
}
|
|
|
+/**
|
|
|
+ * @brief 通讯超时处理流程
|
|
|
+ * @related GB2015-27930 A11
|
|
|
+ */
|
|
|
+static int can_GBT27930_ReComm(GBT27930_t* dev)
|
|
|
+{
|
|
|
+ secc_port_t* secc = (secc_port_t*)dev->secc;
|
|
|
+ secc_set_state(secc, GUN_STOPPING);
|
|
|
+ printccui("step\n");
|
|
|
+}
|
|
|
|
|
|
static int can_GBT27930_Finishing(GBT27930_t* dev)
|
|
|
{
|
|
|
@@ -443,7 +492,16 @@ static int can_GBT27930_Finishing(GBT27930_t* dev)
|
|
|
|
|
|
//printi("SECC(%d) Finishing...\n", secc->config->connectorId);
|
|
|
printccui("SECC(%d) Finishing...\n", secc->config->connectorId);
|
|
|
-
|
|
|
+ can_GBT27930_send_stop(dev,GBT_27930_STOP_CMD);//还没区分命令
|
|
|
+
|
|
|
+ /************GB2015-27930-tab.A6**************/
|
|
|
+ long int wait_time;
|
|
|
+ WAIT_CONDI(
|
|
|
+ wait_time,5000,
|
|
|
+ ,
|
|
|
+ if(can_GBT27930_wait_n(dev,GBT_27930_2015_BST)==GBT_27930_2015_BST)
|
|
|
+ break;
|
|
|
+ );
|
|
|
secc_request_power(secc, POWER_REQUEST_PLACE_FREE, 0, 0);
|
|
|
secc_stop_Transaction(secc);
|
|
|
{
|
|
|
@@ -454,7 +512,7 @@ static int can_GBT27930_Finishing(GBT27930_t* dev)
|
|
|
can_GBT27930_wait(dev, GBT_27930_2015_BSD, 1000);
|
|
|
}
|
|
|
|
|
|
- printd("step\n");
|
|
|
+ printccui("step\n");
|
|
|
|
|
|
if (secc->GUN_Error == 0)
|
|
|
{
|
|
|
@@ -478,7 +536,10 @@ static int can_GBT27930_Finishing(GBT27930_t* dev)
|
|
|
}
|
|
|
|
|
|
printd("step\n");
|
|
|
+
|
|
|
+ msleep(100); //临时措施,保证CEM发送
|
|
|
|
|
|
+ can_APP_clear(0);
|
|
|
secc->set_Aux12V_state(secc, 0);
|
|
|
|
|
|
printd("step\n");
|
|
|
@@ -515,6 +576,8 @@ static int can_GBT27930_Finishing(GBT27930_t* dev)
|
|
|
return GBT_27930_2015_NORMAL;
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+
|
|
|
/******************************************************************************/
|
|
|
|
|
|
void* can_GBT27930_loop(void* argv)
|
|
|
@@ -539,6 +602,7 @@ void* can_GBT27930_loop(void* argv)
|
|
|
case GUN_CHARGING: { can_GBT27930_Charging(dev); } break;
|
|
|
case GUN_SUSPEND: break;
|
|
|
case GUN_STOPPING: { can_GBT27930_Finishing(dev); } break;
|
|
|
+ case GUN_COMFALUT: { }break;
|
|
|
default: { }break;
|
|
|
}
|
|
|
if (secc->GUN_Error) { printi("secc->GUN_Error:%08x, %ld\n", secc->GUN_Error, secc->GUN_Error);break;}
|