latest version
This commit is contained in:
@@ -6,115 +6,51 @@
|
||||
*/
|
||||
|
||||
|
||||
// GB/T Time Synchronization Packet
|
||||
// GB/T Time Synchronization Packet (CTS EVSE->EV)
|
||||
#include "main.h"
|
||||
#include "soft_rtc.h"
|
||||
#include "charger_gbt.h"
|
||||
|
||||
void GBT_SendCTS(){
|
||||
// --- EV side GB/T packets (EV->EVSE) ---
|
||||
|
||||
uint8_t data[7];
|
||||
unix_to_bcd(get_Current_Time(), data);
|
||||
// data[0] = 0x00; //seconds
|
||||
// data[1] = 0x30; //minutes
|
||||
// data[2] = 0x23; //hours
|
||||
// data[3] = 0x05; //days
|
||||
// data[4] = 0x05; //month
|
||||
// data[5] = 0x24; //years
|
||||
// data[6] = 0x20; //centuries
|
||||
|
||||
J_SendPacket(0x000700, 6, 7, data);
|
||||
// BHM: максимальное напряжение батареи/запрос зарядного напряжения
|
||||
void GBT_SendBHM(void){
|
||||
J_SendPacket(0x2700, 6, sizeof(GBT_MaxVoltage), (uint8_t*)&GBT_MaxVoltage);
|
||||
}
|
||||
|
||||
//GB/T Max Load Packet
|
||||
void GBT_SendCML(){
|
||||
// uint8_t data[8];
|
||||
// data[0] = 0x94; //450V max output voltage
|
||||
// data[1] = 0x11; //
|
||||
// data[2] = 0xB0; //120V min output voltage
|
||||
// data[3] = 0x04; //
|
||||
// data[4] = 0xC4; //-150A maximum output current
|
||||
// data[5] = 0x09; //
|
||||
// data[6] = 0x8C; //-2A minimum output current
|
||||
// data[7] = 0x0F; //
|
||||
|
||||
J_SendPacket(0x000800, 6, 8, (uint8_t*)&GBT_MaxLoad);
|
||||
|
||||
// BRM: базовая информация о батарее/EV
|
||||
void GBT_SendBRM(void){
|
||||
J_SendPacket(0x0200, 6, sizeof(GBT_EVInfo), (uint8_t*)&GBT_EVInfo);
|
||||
}
|
||||
|
||||
//GB/T Version packet
|
||||
void GBT_SendCHM(){
|
||||
uint8_t data[3];
|
||||
data[0] = 0x01;
|
||||
data[1] = 0x01;
|
||||
data[2] = 0x00;
|
||||
J_SendPacket(0x2600, 6, 3, data);
|
||||
// BCP: ограничения и статусы батареи
|
||||
void GBT_SendBCP(void){
|
||||
J_SendPacket(0x0600, 6, sizeof(GBT_BATStat), (uint8_t*)&GBT_BATStat);
|
||||
}
|
||||
|
||||
//GB/T CRM Packet (state=BMS identified)
|
||||
void GBT_SendCRM(uint8_t state){
|
||||
// uint8_t data[8];
|
||||
// data[0] = state; // 0x00 / 0xAA
|
||||
// data[1] = 0x40; //TODO: Charger Number 123456
|
||||
// data[2] = 0xE2;
|
||||
// data[3] = 0x01;
|
||||
// data[4] = 0x00;
|
||||
// data[5] = 0x42; //TODO: location BFG
|
||||
// data[6] = 0x46;
|
||||
// data[7] = 0x47;
|
||||
GBT_ChargerInfo.bmsIdentified = state;
|
||||
J_SendPacket(0x100, 6, 8, (uint8_t *)&GBT_ChargerInfo);
|
||||
// BRO: ответ готовности EV (0x00 / 0xAA)
|
||||
void GBT_SendBRO(uint8_t state){
|
||||
uint8_t data[1];
|
||||
data[0] = state;
|
||||
J_SendPacket(0x0900, 6, 1, data);
|
||||
}
|
||||
|
||||
//GB/T CRO packet (Charger ready)
|
||||
void GBT_SendCRO(uint8_t state){
|
||||
uint8_t data[1];
|
||||
data[0] = state;
|
||||
J_SendPacket(0xA00, 4, 1, data);
|
||||
// BCL: запрос по напряжению/току от EV
|
||||
void GBT_SendBCL(void){
|
||||
J_SendPacket(0x1000, 6, sizeof(GBT_ReqPower), (uint8_t*)&GBT_ReqPower);
|
||||
}
|
||||
|
||||
//GB/T CCS packet (Charger current status)
|
||||
void GBT_SendCCS(){
|
||||
// uint8_t data[8];
|
||||
// data[0] = GBT_CurrPower.requestedVoltage; //
|
||||
// data[1] = GBT_CurrPower.requestedVoltage>>8; //output voltage
|
||||
// data[2] = GBT_CurrPower.requestedCurrent; //смещение 400а, границы
|
||||
// //-400A = 0
|
||||
// // 0A = 4000
|
||||
// // -100A = 3000
|
||||
// data[3] = GBT_CurrPower.requestedCurrent>>8; //TODO: current
|
||||
// data[4] = GBT_StateTick()/60000; //charging time (min)
|
||||
// data[5] = 0; //TODO: 255 min+
|
||||
// data[6] = 0b11111101; //charging not permitted
|
||||
// data[7] = 0xFF;
|
||||
J_SendPacket(0x1200, 6, 8, (uint8_t *)&GBT_ChargerCurrentStatus);
|
||||
// BCS: текущий статус заряда с точки зрения EV
|
||||
void GBT_SendBCS(void){
|
||||
J_SendPacket(0x1100, 6, sizeof(GBT_ChargingStatus), (uint8_t*)&GBT_ChargingStatus);
|
||||
}
|
||||
|
||||
// GB/T Charging Stop packet
|
||||
void GBT_SendCST(uint32_t Cause){
|
||||
uint8_t data[8];
|
||||
data[0] = (Cause>>24) & 0xFF; // Error
|
||||
data[1] = (Cause>>16) & 0xFF; //
|
||||
data[2] = (Cause>>8) & 0xFF; //
|
||||
data[3] = Cause & 0xFF; //
|
||||
|
||||
J_SendPacket(0x1A00, 4, 4, data);
|
||||
// BSM: дополнительные статусы батареи
|
||||
void GBT_SendBSM(void){
|
||||
J_SendPacket(0x1300, 6, sizeof(GBT_BatteryStatus), (uint8_t*)&GBT_BatteryStatus);
|
||||
}
|
||||
|
||||
void GBT_SendCSD(){
|
||||
GBT_ChargerStop.chargerNumber = GBT_ChargerInfo.chargerNumber;
|
||||
GBT_ChargerStop.outputEnergy = 0; //TODO Energy meters
|
||||
GBT_ChargerStop.chargingTime = GBT_ChargerCurrentStatus.chargingTime;
|
||||
J_SendPacket(0x1D00, 6, 7, (uint8_t *)&GBT_ChargerStop);
|
||||
|
||||
}
|
||||
|
||||
void GBT_SendCEM(uint32_t ErrorCode){
|
||||
uint8_t data[8];
|
||||
data[0] = (ErrorCode>>24) & 0xFF; // Error
|
||||
data[1] = (ErrorCode>>16) & 0xFF; //
|
||||
data[2] = (ErrorCode>>8) & 0xFF; //
|
||||
data[3] = ErrorCode & 0xFF; //
|
||||
|
||||
J_SendPacket(0x1F00, 4, 4, data);
|
||||
// BSD: статус батареи при завершении
|
||||
void GBT_SendBSD(void){
|
||||
J_SendPacket(0x1C00, 6, sizeof(GBT_BATStat), (uint8_t*)&GBT_BATStat);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user