提交 0f1b7631 作者: wysheng

定值设置与查询

上级 79e35701
...@@ -642,7 +642,7 @@ void StartMeg(StructTCUSend * pPgnRecv) ...@@ -642,7 +642,7 @@ void StartMeg(StructTCUSend * pPgnRecv)
if(StartMeg_A.StarChgType == 1) if(StartMeg_A.StarChgType == 1)
{ {
TCUCurChgRecd.VehicleVerification = 0; TCUCurChgRecd.VehicleVerification = 1;
} }
} }
else else
...@@ -694,7 +694,7 @@ void StartMeg(StructTCUSend * pPgnRecv) ...@@ -694,7 +694,7 @@ void StartMeg(StructTCUSend * pPgnRecv)
if(StartMeg_B.StarChgType == 1) if(StartMeg_B.StarChgType == 1)
{ {
TCUCurChgRecd_B.VehicleVerification = 0; TCUCurChgRecd_B.VehicleVerification = 1;
} }
} }
else else
...@@ -3144,33 +3144,134 @@ void VehicleVerificationHandle(void) ...@@ -3144,33 +3144,134 @@ void VehicleVerificationHandle(void)
} }
/* void VehicleVerificationHandle_B(void)
1 设备名称 ASCII码 32Byte {
2 充电桩设备型号 BIN 2Byte static u32 VehicleVerificationTick = 0;
3 设备类型 BIN 1Byte static u8 VehicleVerificationCount = 0;
4 设备序列号 ASCII码 32Byte if(1 == TCUCurChgRecd_B.VehicleVerification)
5 设备厂商编码 BIN 4Byte {
6 设备控制器硬件版本 BIN 2Byte if(GetSystemTick() - VehicleVerificationTick >= 1000)
7 设备控制器软件版本 BIN 3Byte {
8 设备控制器软件日期 BIN 4Byte VehicleVerificationTick = GetSystemTick();
9 设备控制器软件校验码 BIN 16Byte VehicleVerificationCount++;
10 设备运行模式 BIN 1Byte if(VehicleVerificationCount <= 30)
11 设备通信地址(充电主控模块与计费控制单元) BIN 1Byte {
12 设备通信超时时间(充电主控模块与计费控制单元) BIN 1Byte verification_B();
13 设备通信协议版本号(充电主控模块与计费控制单元) BIN 2Byte }
14 设备通信地址(充电主控模块与功率控制模块) BIN 1Byte else
15 设备通信超时时间(充电主控模块与功率控制模块) BIN 1Byte {
16 设备通信协议版本号(充电主控模块与功率控制模块) BIN 2Byte TCUCurChgRecd_B.VehicleVerification = 0;
17 充电桩额定输出电压 BIN 2Byte TCUCurChgRecd_B.TCUChargeEnable = 0;
18 充电桩额定输出电流 BIN 2Byte TCUCommuStatus_B.ErrData.Value.verificationAck = 1;
19 充电桩最高输出电压 BIN 2Byte TCUCommuStatus_B.ConEMSendFlag = 1; //错误帧发送
20 充电桩最低输出电压 BIN 2Byte }
21 充电桩最大输出电流 BIN 2Byte
22 充电桩最小输出电流 BIN 2Byte }
23 BMS协议版本 BIN 1 Byte
24 遥信报文上送周期 BIN 1Byte }
25 遥测报文上送周期 BIN 1Byte else if(2 == TCUCurChgRecd_B.VehicleVerification)
*/ {
if(VerificaInfo_B.result)
{
TCUCurChgRecd_B.TCUChargeEnable = 0;
}
else
{
TCUCurChgRecd_B.TCUChargeEnable = 1;
}
TCUCurChgRecd_B.VehicleVerification = 0;
}
else
{
VehicleVerificationTick = GetSystemTick();
VehicleVerificationCount = 0;
}
}
#define MAX_TCUVALUE_INDEX 24
typedef struct
{
u16 value_index;//定值序号 2byte
u8 rw; //0:只读 1:可写
u8 len; //长度
u8 * data; //定值信息
} StructTCUValue;
//1 设备名称 ASCII码 32Byte
u8 drive_name[32];
//2 充电桩设备型号 BIN 2Byte
//3 设备类型 BIN 1Byte
u8 drive_type = 0x02;
//4 设备序列号 ASCII码 32Byte
u8 drive_sno[32];
//5 设备厂商编码 BIN 4Byte
//6 设备控制器硬件版本 BIN 2Byte
//7 设备控制器软件版本 BIN 3Byte
//8 设备控制器软件日期 BIN 4Byte
//9 设备控制器软件校验码 BIN 16Byte
u8 SoftwareCRC[16];
//10 设备运行模式 BIN 1Byte
u8 runModel = 0x00;
//11 设备通信地址(充电主控模块与计费控制单元) BIN 1Byte
u8 drive_addr = 0xe0;
//12 设备通信超时时间(充电主控模块与计费控制单元) BIN 1Byte
u8 drive_timeout = 0x03;
//13 设备通信协议版本号(充电主控模块与计费控制单元) BIN 2Byte
//14 设备通信地址(充电主控模块与功率控制模块) BIN 1Byte
u8 drive_addr1 = 0xe1;
//15 设备通信超时时间(充电主控模块与功率控制模块) BIN 1Byte
//16 设备通信协议版本号(充电主控模块与功率控制模块) BIN 2Byte
//17 充电桩额定输出电压 BIN 2Byte
//18 充电桩额定输出电流 BIN 2Byte
//19 充电桩最高输出电压 BIN 2Byte
//20 充电桩最低输出电压 BIN 2Byte
//21 充电桩最大输出电流 BIN 2Byte
//22 充电桩最小输出电流 BIN 2Byte
//23 BMS协议版本 BIN 1 Byte
u8 bmsVersion = 0x03;
//24 遥信报文上送周期 BIN 1Byte
u8 remoteSendPeriod = 1;
//25 遥测报文上送周期 BIN 1Byte
u8 telemeteringSendPeriod = 1;
StructTCUValue TcuValue[] =
{
//定值序号 rw len data
{1, 0, 32, drive_name },
{2, 0, 2, TCUControlInfo.DeviceModel },
{3, 0, 1, &drive_type },
{4, 0, 32, drive_sno },
{5, 0, 4, TCUControlInfo.ManufacturerCode },
{6, 0, 2, TCUControlInfo.HardwareVersion },
{7, 0, 3, TCUControlInfo.SoftwareVersion },
{8, 0, 4, TCUControlInfo.SoftwareData },
{9, 0, 16, SoftwareCRC },
{10, 1, 1, &runModel },
{11, 0, 1, &drive_addr },
{12, 1, 1, &drive_timeout },
{13, 0, 2, (u8 *)(&TCUControlInfo.version) },
{14, 0, 1, &drive_addr1 },
{15, 1, 1, &drive_timeout },
{16, 0, 2, (u8 *)(&TCUControlInfo.version) },
{17, 0, 2, (u8 *)(&TCUControlInfo.DcMaxVolt)},
{18, 0, 2, (u8 *)(&TCUControlInfo.DcMaxCurrt)},
{19, 0, 2, (u8 *)(&TCUControlInfo.DcMaxVolt)},
{20, 0, 2, (u8 *)(&TCUControlInfo.DcMinVolt)},
{21, 0, 2, (u8 *)(&TCUControlInfo.DcMaxCurrt)},
{22, 0, 2, (u8 *)(&TCUControlInfo.DcMinVolt)},
{23, 0, 1, &bmsVersion },
{24, 1, 1, &remoteSendPeriod },
{25, 1, 1, &telemeteringSendPeriod },
};
void TCUValueInit(void)
{
memset(drive_name,0,32);
}
u8 TCUValueSetAddr = 0; u8 TCUValueSetAddr = 0;
void TCUValueSetHandle(StructTCUSend * pPgnRecv) void TCUValueSetHandle(StructTCUSend * pPgnRecv)
{ {
...@@ -3232,8 +3333,14 @@ u8 setValue(u16 index, u8 *pdate) ...@@ -3232,8 +3333,14 @@ u8 setValue(u16 index, u8 *pdate)
0x03 --- 写入失败 0x03 --- 写入失败
0x04 --- 给定越限 0x04 --- 给定越限
*/ */
u8 reason = 0; //u8 reason = 0;
return reason;
if(index>MAX_TCUVALUE_INDEX)
return 0x01;
if(TcuValue[index-1].rw == 0)
return 0x02;
memcpy(TcuValue[index-1].data,pdate,TcuValue[index-1].len);
return 0;
} }
u8 getValue(u16 index, u8 *pdate) u8 getValue(u16 index, u8 *pdate)
...@@ -3244,13 +3351,19 @@ u8 getValue(u16 index, u8 *pdate) ...@@ -3244,13 +3351,19 @@ u8 getValue(u16 index, u8 *pdate)
0x02 --- 禁止读出 0x02 --- 禁止读出
0x03 --- 读出失败 0x03 --- 读出失败
*/ */
u8 reason = 0; //u8 reason = 0;
return reason; if(index>MAX_TCUVALUE_INDEX)
return 0x01;
memcpy(pdate,TcuValue[index-1].data,TcuValue[index-1].len);
return 0;
} }
u8 getValueLen(u16 index) u8 getValueLen(u16 index)
{ {
u8 len = 0; u8 len = 0;
if(index>MAX_TCUVALUE_INDEX)
return 0x00;
len = TcuValue[index-1].len;
return len; return len;
} }
...@@ -3329,6 +3442,8 @@ void TCUValueSetMsg(u8 * date, u8 len) ...@@ -3329,6 +3442,8 @@ void TCUValueSetMsg(u8 * date, u8 len)
{ {
TCUValueSetDate.result.resultInfo.reason = ret; TCUValueSetDate.result.resultInfo.reason = ret;
} }
TCUValueSetAck();
} }
void TCUValueSetAck(void) void TCUValueSetAck(void)
...@@ -3407,6 +3522,8 @@ void TCUValueQueryHandle(StructTCUSend * pPgnRecv) ...@@ -3407,6 +3522,8 @@ void TCUValueQueryHandle(StructTCUSend * pPgnRecv)
//4 定值序号 2byte //4 定值序号 2byte
TCUValueQueryMsg.value_index = pPgnRecv->Data[4]; TCUValueQueryMsg.value_index = pPgnRecv->Data[4];
TCUValueQueryMsg.value_index = (TCUValueQueryMsg.value_index<<8) + pPgnRecv->Data[3]; TCUValueQueryMsg.value_index = (TCUValueQueryMsg.value_index<<8) + pPgnRecv->Data[3];
TCUValueQueryAck();
} }
void TCUValueQueryAck(void) void TCUValueQueryAck(void)
......
...@@ -461,8 +461,10 @@ extern StructTCUEM TCUChgContralTCUEM_B; ...@@ -461,8 +461,10 @@ extern StructTCUEM TCUChgContralTCUEM_B;
void TCUStartDownloadHandle(StructTCUSend * pPgnRecv); void TCUStartDownloadHandle(StructTCUSend * pPgnRecv);
void StartDownloadAck(u8 ChgNum); void StartDownloadAck(u8 ChgNum);
void TCUValueSetHandle(StructTCUSend * pPgnRecv); void TCUValueSetHandle(StructTCUSend * pPgnRecv);
void TCUValueSetAck(void);
void TCUValueSetMsg(u8 * date, u8 len); void TCUValueSetMsg(u8 * date, u8 len);
void TCUValueQueryHandle(StructTCUSend * pPgnRecv); void TCUValueQueryHandle(StructTCUSend * pPgnRecv);
void TCUValueQueryAck(void);
void TCUDebugInfoHandle(StructTCUSend * pPgnRecv); void TCUDebugInfoHandle(StructTCUSend * pPgnRecv);
#endif #endif
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论