CommPowerModule.h 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. #ifndef _COMMPOWERMODULE_H
  2. #define _COMMPOWERMODULE_H
  3. #define RX_BUF_SIZE_MAX 200 // 接收buf最大长度
  4. #define TX_BUF_SIZE_MAX 30 // 发送buf最大长度
  5. #define CFG_PARAM_FUNC 0x1A // 配置参数功能码
  6. #define READ_CFG_PARAM_FUNC 0x1B // 读配置参数功能码
  7. #define RX_READ_FUNC 0x81 // 接收的读功能码
  8. #define RX_WRITE_FUNC 0x82 // 接收的写功能码
  9. #define TX_READ_FUNC 0x01 // 发送的读功能码
  10. #define TX_WRITE_FUNC 0x02 // 发送的写功能码
  11. typedef union{
  12. struct
  13. {
  14. WORD lostVolt : 1; // 电池输入失电告警
  15. WORD actStatus : 1; // 电池活化状态
  16. WORD lowVolt : 1; // 电池欠压告警
  17. WORD overVolt : 1; // 电池过压告警
  18. WORD offline : 1; // 电池离线告警
  19. WORD rConnect : 1; // 电池反接告警
  20. WORD backup : 1; // 备用点
  21. WORD capAlarm : 1; // 电池容量故障
  22. #ifdef BATTERY_BP_L500
  23. WORD R_Alarm : 1; // 内阻异常告警
  24. WORD OverHeat : 1; // 温度过热告警
  25. #endif
  26. }BIT;
  27. WORD yxStatus;
  28. }BAT_YX;
  29. typedef struct{
  30. WORD batVolt; // 电池电压 单位:0.01v
  31. WORD capacityVolt; // 电容电压 单位:0.01v
  32. }BAT_YC;
  33. typedef struct{
  34. WORD dischargeTimeMax; // 电池最大放电时间 单位:分钟
  35. WORD dischargeTimeNow; // 当前放电时长 单位:分钟
  36. #ifdef BATTERY_BP_L500
  37. WORD BatteryInResist; // 电池内阻
  38. WORD BatteryTemp; // 电池温度
  39. WORD BatteryRtPower; // 电池实时电量
  40. WORD BatDischageCurrent; //放电电流
  41. WORD BatRechageCurrent; //充电电流
  42. #endif
  43. }BAT_RUN_PARAM;
  44. typedef union{
  45. struct{
  46. WORD rVolt : 1; // 读电池电压标志
  47. WORD rStatus : 1; // 读电池状态标志
  48. WORD rRunInfo : 1; // 读系统运行参数标志
  49. WORD wActStart : 1; // 写活化启动标志
  50. WORD wActStartRet : 1; // 写活化启动结果标志
  51. WORD wActStop : 1; // 写活化停止标志
  52. WORD wActStopRet : 1; // 写活化停止结果标志
  53. WORD wDischargeStop : 1; // 写放电停止标志
  54. WORD wDischargeStopRet : 1; // 写放电停止结果标志
  55. WORD cActData : 1; // 清除活化数据标志
  56. #ifdef BATTERY_BP_L500
  57. WORD rBattR : 1; // 读电池内阻标志
  58. WORD rBattTemp : 1; // 读电池温度标志
  59. WORD rBattRtPower : 1; // 读电池实时电量标志
  60. WORD wBattR : 1; // 电池内阻检测标志
  61. WORD wBattRRet : 1; // 电池内阻检测结果标志
  62. WORD rBatCurrent : 1; // 读电池充放电电流标志
  63. #endif
  64. }BIT;
  65. WORD m_flg;
  66. }SIGNAL_FLG;
  67. typedef struct{
  68. bool bData; // 接收到完整一帧报文标志
  69. bool commFault; // 通讯故障
  70. DWORD sendMesgCount; // 发送报文计数
  71. BYTE recvFlg; // 接收标志
  72. BYTE dataLen; // 数据长度
  73. BYTE recvCount;
  74. BYTE portChannel;
  75. BYTE equAddr; // 装置地址
  76. int recvPos;
  77. int parsePos;
  78. BYTE recvBuf[RX_BUF_SIZE_MAX];
  79. DWORD readYxCount;
  80. DWORD readRunInfoCount;
  81. #ifdef BATTERY_BP_L500
  82. DWORD DetectBattRCount; //电池内阻检测计时
  83. DWORD ReadBattRCount; //读电池内阻计时
  84. DWORD ReadBattTempCount; //读电池温度计时
  85. DWORD ReadBattRtPowerCount; //读电池实时电量计时
  86. DWORD BatCurrentCount; //查询电池充放电电流计时
  87. #endif
  88. BAT_YX tYx;
  89. BAT_YC tYc;
  90. BAT_RUN_PARAM tRunParam;
  91. }COMM_POW_MOD;
  92. // 函数对外声明
  93. extern void StartBattAct(void); // 启动电池活化
  94. extern void StopBattAct(void); // 停止电池活化
  95. extern void ClearBattActInfo(void); // 清除电池活化信息
  96. extern void PowerModuleCommInit(COMM_POW_MOD *p_instance,int ch); // 初始化电源模块通讯
  97. extern void PowerModuleCommRecv(COMM_POW_MOD *p_instance,BYTE rec_data); // 电源模块通讯接收数据
  98. extern void PowerModuleCommRun(COMM_POW_MOD *p_instance); // 电源模块通讯接口
  99. #endif