提交 92754fe5 作者: wysheng

交流接触器

上级 400ae9ff
......@@ -191,9 +191,9 @@ void DrainResistSet(EnumSwitchStatus Set)
void ACContactorSet(EnumSwitchStatus Set)
{
if(eSwSta_Off == Set)
DrainResist_Port->BSRRH = DrainResist_Pin;
ACContactor_Port->BSRRH = ACContactor_Pin;
else
DrainResist_Port->BSRRL = DrainResist_Pin;
ACContactor_Port->BSRRL = ACContactor_Pin;
}
void ImdWorkSet(EnumSwitchStatus Set)
......@@ -881,7 +881,7 @@ EnumSwitchStatus SPDGet(void)
static void FanDelayHandle(void const *Param)
{
Fan_Port->BSRRH = Fan_Pin;
// ACContactorSet(eSwSta_Off);
ACContactorSet(eSwSta_Off);
}
void FanInit(void)
{
......@@ -911,7 +911,7 @@ void FanSet_Side(EnumSwitchStatus Set)
{
osTimerStop(FanDelayTimer);
Fan_Port->BSRRL = Fan_Pin;
//ACContactorSet(eSwSta_On);
ACContactorSet(eSwSta_On);
}
FanStatus = Set;
}
......@@ -1056,3 +1056,20 @@ void SystemReboot(void)
NVIC_SystemReset();
}
void ACContactorInit(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
GPIO_InitStructure.GPIO_Pin = ACContactor_Pin;
RCC_AHB1PeriphClockCmd(ACContactor_RCC, ENABLE);
GPIO_Init(ACContactor_Port, &GPIO_InitStructure);
GPIO_ResetBits(ACContactor_Port, ACContactor_Pin);
}
......
......@@ -213,6 +213,9 @@
#define RELAY_K9K10_Port GPIOF
#define RELAY_K9K10_RCC RCC_AHB1Periph_GPIOF
#define ACContactor_Pin GPIO_Pin_9
#define ACContactor_Port GPIOE
#define ACContactor_RCC RCC_AHB1Periph_GPIOE
extern EnumSwitchStatus EleLockSta;
......@@ -336,6 +339,7 @@ extern EnumSwitchStatus ACContactorSta;
extern void SystemReboot(void);
extern void ACContactorInit(void);
#endif
......
......@@ -504,39 +504,38 @@ void TCUMultiPackSendMsg(u8 * pfram, u16 len, EnumTCUCommPgn cmd, u8 Prio)
}
checkSum = checkSum + ((len + 3 + 2) / 7 + 1);
checkSum = checkSum + (u8)
len + (u8) (len >> 8);
checkSum = checkSum + (u8)len + (u8) (len >> 8);
for (i = 1; i < ((len + 3 + 2) / 7 + 1); i++) //第一包
for (i = 1; i <= ((len + 3 + 2) / 7 + 1); i++) //第一包
{
if (i == 1)
{
FrameSend.Data[0] = i;
FrameSend.Data[1] = (len + 3 + 2) / 7 + 1;
FrameSend.Data[2] = (u8)
len;
FrameSend.Data[2] = (u8)len;
FrameSend.Data[3] = (u8) (len >> 8);
FrameSend.Data[4] = *pfram++;
memcpy(&FrameSend.Data[0], pfram, 3);
lenFlag += 3;
//FrameSend.Data[4] = *pfram++;
memcpy(&FrameSend.Data[4], pfram, 4);
lenFlag += 4;
}
else if (i == ((len + 3 + 2) / 7 + 1)) //最后一包
{
memcpy(&FrameSend.Data[0], &pfram[lenFlag], len - lenFlag);
FrameSend.Data[len - lenFlag] = (u8)
checkSum;
FrameSend.Data[0] = i;
memcpy(&FrameSend.Data[1], &pfram[lenFlag], len - lenFlag);
FrameSend.Data[len - lenFlag] = (u8)checkSum;
FrameSend.Data[len - lenFlag + 1] = (u8) (checkSum >> 8);
memset(&FrameSend.Data[len - lenFlag + 1 + 1], 0x00, 6 - len + lenFlag);
}
else
{
FrameSend.Data[0] = i;
memcpy(&FrameSend.Data[0], &pfram[lenFlag], 7);
memcpy(&FrameSend.Data[1], &pfram[lenFlag], 7);
lenFlag += 7;
}
FrameSend.Len = 8;
TCUSendMsg(&FrameSend);
osDelay(1);
}
}
......@@ -1446,16 +1445,12 @@ void TCUHeartBeat_B(void)
void AckTCUHeartBeat(StructTCUSend * pPgnRecv)
{
if (pPgnRecv->Data[0] == 1)
if (pPgnRecv->Data[0] == 0)
{
TCUCommuStatus.HeartBeatErrCnt = 0;
TCUCommuStatus.HeartBeatRecvTime = GetSystemTick();
}
else if (pPgnRecv->Data[0] == 2)
{
TCUCommuStatus.HeartBeatErrCnt_B = 0;
TCUCommuStatus.HeartBeatRecvTime_B = GetSystemTick();
}
TCUCommuStatus.ConnectFlag = CONNECT_NORMAL; //tcu检测控制器心跳状态
......@@ -2123,7 +2118,7 @@ void measuringReporting20_A(void)
Data[len++] = Adc_Get_a_NTemp() + 50;
Data[len++] = Adc_Get_B_PTemp() + 50;
Data[len++] = Adc_Get_B_NTemp() + 50;
TCUSinglePackSendMsg(Data, 8, eCmd_DCConMeasu, 6);
TCUMultiPackSendMsg(Data, len, eCmd_DCConMeasu, 6);
}
......@@ -2160,7 +2155,7 @@ void measuringReporting20_B(void)
Data[len++] = Adc_Get_a_NTemp() + 50;
Data[len++] = Adc_Get_B_PTemp() + 50;
Data[len++] = Adc_Get_B_NTemp() + 50;
TCUSinglePackSendMsg(Data, 8, eCmd_DCConMeasu, 6);
TCUMultiPackSendMsg(Data, len, eCmd_DCConMeasu, 6);
}
......@@ -2278,4 +2273,19 @@ void TCUErroCommAnalysis(StructTCUSend * pPgnRecv)
}
void TCUMeasuRecv(StructTCUSend * pPgnRecv)
{
if(pPgnRecv->Data[0] == 0)
{
TCUCommuStatus.DCMeasuRecvTime = GetSystemTick();
TCUCommuStatus.DCMeasuRecvTime_B = GetSystemTick();
}
else if(pPgnRecv->Data[0] == 1)
{
TCUCommuStatus.DCMeasuRecvTime = GetSystemTick();
}
else if(pPgnRecv->Data[0] == 2)
{
TCUCommuStatus.DCMeasuRecvTime_B = GetSystemTick();
}
}
......@@ -316,6 +316,7 @@ extern void verificationAck(StructTCUSend* pPgnRecv);
extern void TcuEMMsg( u8 data);
extern void TcuEMMsg_B(u8 data);
extern void TCUParam(StructTCUSend* pPgnRecv);
extern void TCUMeasuRecv(StructTCUSend * pPgnRecv);
extern StructStartMeg StartMeg_A ;
extern StructStartMeg StartMeg_B;
......
......@@ -12,16 +12,25 @@
s32 GetChgVoltChgRun_B(void)
{
if(ImdValue_B.Vaild)
return ImdValue_B.PnVolt;
if(eMeterSta_Unavail != MeterComm.Status_B)
return MeterValue_B.Voltage;
if(BcsMsg_B.Valid)
return BcsMsg_B.ChgVolt;
return -1;
}
s32 GetChgCurrtChgRun_B(void)
{
if(eMeterSta_Unavail != MeterComm.Status_B)
return MeterValue_B.Current/100;
if(BcsMsg_B.Valid)
return abs((s32)BcsMsg_B.ChgCurrt - 4000);
return -1;
}
void ChgProChgRun_B(StructChargeCtrl_B *pChargeCtrl)
{
StructPgnRecv PgnRecv;
......
......@@ -15,16 +15,25 @@
s32 GetChgVoltChgRun(void)
{
if(ImdValue.Vaild)
return ImdValue.PnVolt;
//if(eMeterSta_Unavail != MeterComm.Status)
// return MeterValue.Voltage;
if(BcsMsg.Valid)
return BcsMsg.ChgVolt;
return -1;
}
s32 GetChgCurrtChgRun(void)
{
//if(eMeterSta_Unavail != MeterComm.Status)
// return MeterValue.Current/100;
if(BcsMsg.Valid)
return abs((s32)BcsMsg.ChgCurrt - 4000);
return -1;
}
void ChgProChgRun(StructChargeCtrl *pChargeCtrl)
{
StructPgnRecv PgnRecv;
......
......@@ -157,7 +157,8 @@ void Thd_Charge(void const *parameter)
FanInit();
FanInit_Top();
DehumidifierInit();
DrainResistInit();//DrainResistInit_B();
//DrainResistInit();//DrainResistInit_B();
ACContactorInit(); //交流接触器
LockInit(); //LockInit_B();
EmergenceInit();
DoorChkInit();
......
......@@ -545,7 +545,7 @@ void PillarEnvironmentProcess(void const *Param)
RunLedProcess();
LedProcess();
LedProcess_B();
VoltDetect();
//VoltDetect();
}
u8 Acc_On_3s_flag;
......
......@@ -29,7 +29,7 @@ const StructTCUCommuParam TCUCommuParam =
{
.HeartPeriod = 1,
.HeartErrCntMax = 3,
.HeartTimeout = 1,
.HeartTimeout = 3,
.SignInPeriod = 60,
};
......@@ -98,6 +98,8 @@ void TCURecvProcess(void)
///////////数据帧/直流////////////
case eCmd_DCTCUMeasu: // 计费单元遥测帧
TCUMeasuRecv(&pPgnRecv);
break;
///////////心跳帧///////////
......@@ -150,7 +152,7 @@ void DCMeasuring_A(void)
{
if (0 == TCUCommuStatus.DCMeasuRecvTime) //遥测
{
if ((GetSystemTick() -TCUCommuStatus.DCMeasuSendTime) > 1000)
if ((GetSystemTick() -TCUCommuStatus.DCMeasuSendTime) > 2000)
{
TCUCommuStatus.DCMeasuErrCnt++;
......@@ -186,7 +188,7 @@ void DCMeasuring_B(void)
{
if (0 == TCUCommuStatus.DCMeasuRecvTime_B) //遥测
{
if ((GetSystemTick() -TCUCommuStatus.DCMeasuSendTime_B) > 1000)
if ((GetSystemTick() -TCUCommuStatus.DCMeasuSendTime_B) > 2000)
{
TCUCommuStatus.DCMeasuErrCnt_B++;
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论