Files
CCU621M/app/flowctrl/flow_interface.h
T

178 lines
9.6 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#ifndef FLOW_INTERFACE_H
#define FLOW_INTERFACE_H
#ifdef __cplusplus /*C++编译环境下兼容C语言*/
extern "C" {
#endif
/*------ Exported includes(头文件) ----------------------*/
#include "main.h"
#include "fault_cheak/fault_interface.h"
#include "meter_calculate/meter_calculate_impl.h"
/*------ Exported macro(宏定义) -------------------------*/
/*------ Exported struct(结构体定义) --------------------*/
typedef enum //充电流程控制对外状态
{
E_FLOW_REAL_FREE=0 , //空闲
E_FLOW_REAL_CHARGE_START , //充电启动
E_FLOW_REAL_INSUL_START , //绝缘启动
E_FLOW_REAL_INSUL_OK , //绝缘计算完成
E_FLOW_REAL_INSUL_MDU_STOP , //绝缘检测模块停止
E_FLOW_REAL_PRE_START , //开始预充
E_FLOW_REAL_PRE_OK , //预充完成
E_FLOW_REAL_CHARGEING , //充电中
E_FLOW_REAL_BMS_OUTTIME , //BMS通讯超时
E_FLOW_REAL_STOP , //充电停止
E_FLOW_REAL_STOP_OK , //充电停止完成
}E_FLOW_REAL_STATE;
typedef enum
{
E_FLOW_GET_DATA_GUN_CNT = 0, //枪数量
E_FLOW_GET_DATA_GB_EN, //国标使能标志 0不使能 1使用
E_FLOW_GET_DATA_GUN_FAN_EN, //枪风扇使能 0不使能 1使能
E_FLOW_GET_DATA_GUNLOCK_EN, //枪锁使能 0不使能 1使能
E_FLOW_GET_DATA_AUXPOWER_EN, //辅源状态监测使能 0不使能 1使能
E_FLOW_GET_DATA_FAULT_FLAG, //获取故障内容存在标志 0不存在 1存在;需要传入 故障代码参数
E_FLOW_GET_DATA_GUN_TOW_CHR, //双枪同充标志 0单枪充电 1双枪充电且为主枪 2双枪充电且为辅枪
E_FLOW_GET_DATA_GUN_LINK, //枪连接状态 0未连接 1已连接
E_FLOW_GET_DATA_GUN_LOCK, //枪锁状态 0未锁 1已锁
E_FLOW_GET_DATA_GUN_AUXPOWER, //辅源闭合状态 0未 1已
E_FLOW_GET_DATA_KM_POS, //正母线直流输出接触器状态 0:断开; 1:闭合
E_FLOW_GET_DATA_KM_NEG, //负母线直流输出接触器状态 0:断开; 1:闭合
E_FLOW_GET_DATA_XF_KM, //泄放接触器状态 0:断开; 1:闭合
E_FLOW_GET_DATA_BUS_KM, //母联接触器状态 0:断开; 1:闭合
E_FLOW_GET_DATA_DC_BUS_EN, //直流母联接触器使能 0 不使能 1使能
E_FLOW_GET_DATA_GUN_BATT_ADC_VOL, //电池外侧采集电压 精度 0.1V
E_FLOW_GET_DATA_GUN_MAX_VOL, //充电枪最大数据电压值 精度 0.1V
E_FLOW_GET_DATA_GUN_MIN_VOL, //充电枪最小数据电压值 精度 0.1V
E_FLOW_GET_DATA_GUN_MAX_CUR, //充电枪最大数据电流值 精度 0.1A
E_FLOW_GET_DATA_GUN_MIN_CUR, //充电枪最小数据电流值 精度 0.1A
E_FLOW_GET_DATA_GUN_SOC_LIMIT, //充电枪SOC阈值
E_FLOW_GET_DATA_GUN_TRICKLE_LIMIT, //充电枪涓流充电停机阈值
E_FLOW_GET_DATA_GUN_BUS_VOL, //充电枪接触器内侧电压值 精度 0.1V
E_FLOW_GET_DATA_GUN_FAULT_INFO, //获取整桩和该枪首个故障内容 0无故障 详见E_FAULT_INFO枚举内容 -整桩故障也代表本枪无法使用
E_FLOW_GET_DATA_GUN_POWER_LIMIT, //充电枪的限制功率值 单位kW 0表示不限制
E_FLOW_GET_DATA_METER_VOL, //电表采集电压 精度0.1V
E_FLOW_GET_DATA_METER_CUR, //电表采集电流 精度0.1V
E_FLOW_GET_DATA_BS_VIN_RES, //VIN 鉴权结果 0wu 1成功 2平台鉴权超时 3非法VIN 4车辆识别鉴权帧超时 5即插即充鉴权失败 6鉴权VIN与车辆VIN不一致
E_FLOW_GET_DATA_MDU_RATED_POW, //单模块额定功率 单位kw
E_FLOW_GET_DATA_MDU_POWER, //模块额定功率 单位kw(与 MDU_RATED_POW 同源)
E_FLOW_GET_DATA_MDU_ZERO_POW_CTRL, //零功控制方式 0普通控制 1脉冲控制
E_FLOW_GET_DATA_PILE_TYPE, //获取桩类型 0一体一枪 1一体双枪 2分体一枪 3分体双枪
E_FLOW_GET_DATA_MDU_WORK, //获取模块运行状态 0空闲 1工作
E_FLOW_GET_DATA_MDU_PUT_VOL, //获取模块输出电压值 精度0.1V
E_FLOW_GET_DATA_MDU_PUT_CUR, //获取模块输出电流值 精度0.1A
E_FLOW_GET_DATA_MDU_IN_NUM, //获取模块分配数量
E_FLOW_GET_DATA_MDU_RUN_NUM, //获取模块运行数量
E_FLOW_GET_DATA_BMS_GB_VER, //BMS 国标协议版本 0 2011版 1 2015版
E_FLOW_GET_DATA_BMS_STATE, //BMS 获取BMS状态 0无 1握手完成 2握手失败 3开始预充 4开始充电 5禁止充电 6停止充电 7报文接收超时
E_FLOW_GET_DATA_BMS_SOC, //BMS 获取车辆SOC
E_FLOW_GET_DATA_BMS_MAX_VOL, //BMS 最大充电电压值 精度 0.1V
E_FLOW_GET_DATA_BMS_MAX_CUR, //BMS 最大充电电流值 精度 0.1A
E_FLOW_GET_DATA_BMS_REAL_BATT_VOL, //BMS 当前电池电压值 精度 0.1V
E_FLOW_GET_DATA_BMS_NEED_VOL, //BMS 需求电压值 精度 0.1V
E_FLOW_GET_DATA_BMS_NEED_CUR, //BMS 需求电流值 精度 0.1A
E_FLOW_GET_DATA_BMS_CAN_SEND_CNT, //BMS 报文发送次数 参数值 0代表cem 1代表csd
E_FLOW_GET_DATA_BMS_STOP_RES, //BMS 停止原因 详看E_FAULT_INFO枚举内容 BMS部分
E_FLOW_GET_DATA_BMS_RECONN_FLAG, //BMS 重连标志 0不重连 1重连
/** 充电金额(计量订单),u16_dataPara:0已充(电费+服务费)低16位 1同左高16位 2下周期预估低16位 3同左高16位;单位0.0001元;内部 u32_meterlog_put_data / u32_meterlog_next_cycle_money */
E_FLOW_GET_DATA_METER_CHARGE,
E_FLOW_GET_DATA_FLOW_STATE, //本枪流程状态 E_FLOW_STATE(与 s_real_data.e_flow_state 一致)
E_FLOW_GET_DATA_GUN_STOP_REASON_0, //枪停止原因 e_stop_reason[0]
E_FLOW_GET_DATA_CHAR_TIME, //本枪充电持续时间 秒(s_log_data.u16_char_time
}E_FLOW_GET_DATA_TYPE;
typedef enum
{
E_FLOW_PUT_DATA_GUN_REAL_STATE =0, //对外状态 0空闲 1充电启动 2绝缘启动 3绝缘计算完成 4绝缘检测模块停止 5开始预充 6预充完成 7充电中 8BMS通讯超时 9充电停止 10充电停止完成
E_FLOW_PUT_DATA_GUN_RECONN_FLAG, //输出bms重连开始标志 参数:0获取 1清空
E_FLOW_PUT_DATA_GUN_NEED_VOL, //BMS 需求电压值 精度 0.1V
E_FLOW_PUT_DATA_GUN_NEED_CUR, //BMS 需求电流值 精度 0.1A
E_FLOW_PUT_DATA_GUN_START_TIME, //充电开始时间 时间戳
E_FLOW_PUT_DATA_GUN_STOP_TIME, //充电停止时间 时间戳
E_FLOW_PUT_DATA_GUN_STOP_RES, //充电停止原因 详看枚举
E_FLOW_PUT_DATA_USED_ENERGY, //以充电量,精度0.0001kWh
E_FLOW_PUT_DATA_USED_MONEY, //以充金额,精度0.0001元
E_FLOW_PUT_DATA_USED_SERV_MONEY, //以充服务金额,精度0.0001元
E_FLOW_PUT_DATA_MDU_STAR_FLAG, //模块运行开始标志 0未开始 1开始
E_FLOW_PUT_DATA_MDU_YK_CMD, //模块遥控命令 0无 1快速启机 2快速启机停(不清空分组) 3软启开机 4充电停止(清空分组)
E_FLOW_PUT_DATA_MDU_NEED_VOL, //模块需求电压值 精度0.1
E_FLOW_PUT_DATA_MDU_ONE_NEED_CUR, //单模块需求电流值 精度0.1
}E_FLOW_PUT_DATA_TYPE;
typedef enum
{
E_FLOW_CTRL_DATA_GUN_LOCK =0, //枪锁控制 0解锁 1锁枪
E_FLOW_CTRL_DATA_AUXPOWER , //辅源控制 0断开 1闭合
E_FLOW_CTRL_DATA_K1K2 , //K1K2控制 0断开 1闭合
E_FLOW_CTRL_DATA_AC_YK , //交流接触器控制 0断开 1闭合
E_FLOW_CTRL_DATA_BUS_YK , //母联接触器控制 0断开 1闭合
E_FLOW_CTRL_DATA_FAN_YK, //风扇
E_FLOW_CTRL_DATA_GUN_FAN_YK, //枪风扇
}E_FLOW_CTRL_DATA_TYPE;
typedef enum //充电模式
{
E_SDK_CHGMOD_NONE = 0, //不做限制的充电(默认)
E_SDK_CHGMOD_MONEY, //限制金额
E_SDK_CHGMOD_ELE, //限制电量 electricity
E_SDK_CHGMOD_SOC, //限制SOC
E_SDK_CHGMOD_TIME, //限制充电时长
E_SDK_CHGMOD_PWOER, //限制功率
}E_CHRG_LIMIT_MOD;
typedef struct
{
E_CMD e_cmd; //充电启停标志 CMD_ON 启动 CMD_OFF停止
START_REASON e_start_res; //启动原因
E_FAULT_INFO e_stop_res; //停止原因
E_CHRG_LIMIT_MOD e_sdk_chargMode; //充电限制方式
U32_T u32_limit_data; //限制参数:金额模式为0.01元;电量0.1kWh等见流程使用处
}S_FLOW_CHARGE_CTRL_INFO;
/*------ Exported variables(变量定义) -------------------*/
/*------ Exported function prototypes (函数声明) -------*/
U16_T u16_flow_get_sys_data(U8_T u8_gunNo,E_FLOW_GET_DATA_TYPE e_dateType,U16_T u16_dataPara);
U16_T u16_flow_put_data(U8_T u8_gunNo,E_FLOW_PUT_DATA_TYPE e_dateType,U16_T u16_dataPara);
U16_T u16_flow_put_ctrl(U8_T u8_gunNo,E_FLOW_CTRL_DATA_TYPE e_dateType,U16_T u16_dataPara1,U16_T u16_dataPara2);
U32_T u32_flow_put_data(U8_T u8_gunNo,E_FLOW_PUT_DATA_TYPE e_dateType);
void v_flow_set_fault_data(E_FAULT_SITE f_site ,E_FAULT_TYPE e_type , E_FAULT_INFO e_info, U8_T u8_action_type, S16_T s16_data1 , S16_T s16_data2);
U8_T u8_flow_cheak_fault_flag(E_FAULT_INFO e_info , E_FAULT_SITE f_site);
void v_flow_get_fault_mag(E_FAULT_INFO e_info , char *mag,U16_T u16_len);
S8_T s8_flow_gun_insulation(U8_T u8_gunNo,U32_T *u32_insul_Rx,U32_T *u32_insul_Ry);
void v_flow_gun_insulation_data_ctrl(U8_T u8_gunNo,U8_T u8_ctrlType);
S8_T s8_flow_volt_relief_do(U8_T u8_gunNo);
void v_flow_gun_volt_relief_free(U8_T u8_gunNo ,U8_T u8_ctrlType);
void v_flow_set_stop_log_info(U8_T u8_gunNo , U16_T u16_res);
void v_flow_start_stop_ctrl(U8_T u8_gunNo , S_FLOW_CHARGE_CTRL_INFO *s_charge_ctrl_info );
void v_flow_set_plat_vin_up(U8_T u8_gunNo);
void v_flow_log_info_updata(U8_T u8_gunNo);
void v_flow_set_gun_flow_real_state_init(U8_T u8_gunNo);
/** 空闲态在线鉴权失败/超时等:请求界面回到待机(封装 UI 接口,供流程任务调用) */
void v_flow_request_ui_idle_recover(void);
#ifdef __cplusplus
}
#endif
#endif /* FLOW_INTERFACE_H */