#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 */