soft_engine.h 9.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275
  1. #ifndef _SOFT_ENGINE
  2. #define _SOFT_ENGINE
  3. #include "stm32f1xx_hal.h"
  4. #include "soft_can.h"
  5. #include "stdio.h"
  6. #include "common.h"
  7. //===============奥安老发动机===============
  8. #pragma pack(1)
  9. typedef struct
  10. {
  11. uint8_t engin_ver; //版本号
  12. uint16_t engin_rev; //转速
  13. uint16_t engin_thr; //油门
  14. uint16_t engin_vol; //电压 0.1v
  15. uint16_t engin_elect; //电流 0.1A
  16. uint32_t engin_rtime; //运行时间 min
  17. uint16_t engin_tcd; //剩余保养时间 min
  18. uint16_t engin_lcd; //锁机剩余时间 min(租赁方式)
  19. uint8_t engin_rsta; //运行状态 0-停止,1-等待,2-运行,3-锁机
  20. uint16_t engin_warn; //报警信息
  21. uint8_t engin_roil; //剩余油量 %
  22. uint16_t engin_cyl1temp; //气缸1温度
  23. uint16_t engin_cyl2temp; //气缸2温度
  24. uint8_t engin_pcbtemp; //控制盒PCB温度
  25. } AOAN_TYPE;
  26. #pragma pack()
  27. extern AOAN_TYPE aoan_data;
  28. short decode_aoan_engine(uint8_t *pdata, uint16_t length);
  29. //===============VK-V03协议发动机===============
  30. #pragma pack(1)
  31. typedef struct
  32. {
  33. uint8_t engin_ver; //版本号
  34. uint8_t engin_brand[8]; //品牌
  35. uint32_t engin_sn; //序列号
  36. uint16_t engin_rev; //转速
  37. uint16_t engin_thr; //油门
  38. uint16_t engin_vol; //电压 0.1v
  39. uint16_t engin_elect; //电流 0.1A
  40. uint32_t engin_rtime; //运行时间 min
  41. uint16_t engin_tcd; //剩余保养时间 min
  42. uint16_t engin_lcd; //锁机剩余时间 min(租赁方式)
  43. uint8_t engin_rsta; //运行状态 0-停止,1-等待,2-运行,3-锁机
  44. uint16_t engin_warn; //报警信息
  45. uint8_t engin_roil; //剩余油量 %
  46. uint16_t engin_cyl1temp; //气缸1温度
  47. uint16_t engin_cyl2temp; //气缸2温度
  48. uint16_t engin_pcbtemp; //控制盒PCB温度
  49. } VKV3_TYPE;
  50. #pragma pack()
  51. extern VKV3_TYPE vkv3_data;
  52. extern Connect_check vkv3_engine_link;
  53. extern Connect_check aoan_engine_Link;
  54. //extern Connect_check vkv3_engine2_link;
  55. short decode_vkv3_engine(uint8_t *pdata, uint16_t length);
  56. //===============GEELY发动机============================
  57. #pragma pack(1)
  58. typedef struct
  59. {
  60. uint8_t engine_ver; //版本号
  61. uint8_t engine_brand[3]; //品牌名
  62. uint8_t engine_sn[4]; //序列号 年月日
  63. uint16_t engine_rev; //发动机转速
  64. uint16_t engine_thrposition; //节气门位置 0.1%
  65. uint8_t engine_fuelposition; //油位 0.5%
  66. uint8_t engine_cyltemp; //缸体温度 偏移-40
  67. uint8_t engine_cooltemp; //冷却液温度 C 偏移-40
  68. char engine_status; //发动机状态
  69. uint16_t engine_vol; //输出电压 0.2v
  70. uint16_t engine_elect; //输出电流 0.2A
  71. uint16_t engine_warn; //报警信息
  72. uint8_t engine_standby; //备用
  73. uint8_t engine_fault; //错误信息
  74. uint8_t engine_control; //控制响应
  75. uint8_t engine_set; //设置命令
  76. uint16_t engine_setpar; //设置响应
  77. uint16_t engine_ctrbak;
  78. uint8_t engine_dronestutas:4; //飞行器状态 4位
  79. uint8_t engine_counts:4; //活动计数 4位
  80. uint8_t engine_checksum; //校验和
  81. uint32_t engine_runtime; //总运行时间 min
  82. uint16_t engine_tcd; //剩余保养时间 min
  83. uint16_t engine_tlock; //剩余锁机时间
  84. } GEELY;
  85. #pragma pack()
  86. extern GEELY geely_data;
  87. //===============GEELY发动机第二版============================
  88. #pragma pack(1)
  89. typedef struct
  90. {
  91. //0X1E4
  92. uint8_t engine_restime:6; //响应时间
  93. uint8_t engine_datanormal:1; //数据是否有效
  94. uint8_t engine_reserve0:1;
  95. uint32_t engine_reserve1:20;
  96. uint8_t engine_conuts:4; //活动技术
  97. uint16_t check_crc;
  98. }geely_bit1E4;
  99. extern uint8_t geely_count;
  100. extern uint8_t start_engine;
  101. typedef struct
  102. {
  103. //0X1EA
  104. uint16_t engine_TTP1:12; //目标节气门1位置
  105. uint16_t engine_ATP1:12; //实际节气门1位置
  106. uint16_t engine_reserve4:12;
  107. uint16_t engine_reserve5:12;
  108. uint16_t engine_baro; //大气压力
  109. uint16_t engine_IAT; //进气温度
  110. }geely_bit1EA;
  111. typedef struct
  112. {
  113. bool version2_flag;
  114. //0X1E2
  115. uint8_t engine_ver; //版本号
  116. uint8_t engine_brand[3]; //品牌名
  117. uint8_t engine_sn[4]; //序列号 年月日
  118. //0X1E3
  119. uint32_t engine_runtime; //总运行时间 min
  120. uint16_t engine_tcd; //剩余保养时间 min
  121. uint16_t engine_tlock; //剩余锁机时间
  122. //0X1E4
  123. geely_bit1E4 Bit1E4;
  124. //0X1E8
  125. uint32_t engine_time; //时间戳
  126. uint8_t engine_Mcontrol:1; //电机控制
  127. uint8_t engine_Mresponse:1; //电机响应
  128. uint8_t engine_reserve2:2;
  129. uint8_t engine_controlcmd:2; //来自系统的外部控制命令
  130. uint8_t engine_state:2; //发动机工作状态
  131. uint8_t engine_cooltemp; //冷却液1温度 C 偏移-40
  132. uint8_t engine_cooltemp1; //冷却液2温度 C 偏移-40
  133. uint8_t engine_GWT; //线圈温度 C 偏移-40
  134. //0X1E9
  135. uint16_t engine_rev; //发动机转速
  136. uint16_t engine_vol; //输出电压 0.01v
  137. short engine_elect; //输出电流 0.05A -400
  138. uint16_t engine_bmselect; //电池电流 0.05A -400
  139. //0X1EA
  140. geely_bit1EA Bit1EA;
  141. //0x1EB
  142. uint16_t FuelConsumption; //瞬时油耗
  143. uint8_t GPS; //汽油液位
  144. uint8_t B12V; //板上 12V 电压
  145. uint8_t B5V1; //板上 5.1V 电压
  146. uint8_t B7V4; //板上舵机驱动电压
  147. uint8_t BBAT; //MCU VBAT 电压
  148. uint8_t VREF; //MCU VREF 电压
  149. //0X1EC
  150. uint16_t EmgST0; //报警信息 新协议
  151. uint8_t ErrST0; //一般故障状态0
  152. uint8_t ErrST1; //一般故障状态1
  153. uint8_t ErrST2; //一般故障状态2
  154. uint8_t ErrST3; //一般故障状态3
  155. uint8_t engine_reserve6;
  156. uint8_t engine_reserve7;
  157. //0X1ED
  158. uint8_t AlmST0; //异常报警0
  159. uint8_t AlmST1; //异常报警1
  160. uint8_t AlmST2; //异常报警2
  161. uint8_t AlmST3; //异常报警3
  162. uint8_t SysST0; //系统状态0
  163. uint8_t SysST1; //系统状态1
  164. uint8_t engine_reserve8;
  165. uint8_t engine_reserve9;
  166. //0X1EE
  167. uint16_t Gear1Position; //舵机1输出位置
  168. uint8_t engine_reserve10;
  169. uint8_t engine_reserve11;
  170. uint8_t OCT; //MCU 芯片温度
  171. uint8_t engine_reserve12;
  172. uint8_t engine_reserve13;
  173. } GEELY2;
  174. #pragma pack()
  175. extern GEELY2 geely_data2;
  176. typedef struct
  177. {
  178. uint8_t msg1c3_last:4;
  179. uint32_t send_1a0;
  180. uint32_t recv_1c3;
  181. uint32_t msg1c3_sumerr;
  182. uint32_t msg1c3_indexerr;
  183. }GEELY_MONI;
  184. extern GEELY_MONI geely_moni;
  185. extern Connect_check geely_engin_link;
  186. #pragma pack(1)
  187. typedef struct
  188. {
  189. uint8_t ExtenderControl; //增程器启停控制
  190. uint8_t ExtenderSetting; //增程器设置命令
  191. uint16_t SettingParameter; //设置命令参数
  192. uint16_t ExtenderBak; //备用
  193. uint8_t DroneStatus:4; //飞行器状态
  194. uint8_t MessageCount:4; //活动计数
  195. uint8_t CheckSum; //校验和
  196. }STO_GEELY;
  197. #pragma pack()
  198. extern STO_GEELY sendto_geely;
  199. void EngGeelyCanRecvHookFunction(uint32_t cellCanID, uint8_t data[], uint8_t len);
  200. //================飞控收集后的发动机信息结构体=============
  201. extern comp_status engine_link_status;
  202. #pragma pack(1)
  203. struct ENGINE_DATA
  204. {
  205. uint8_t engine_type; //类型
  206. uint16_t engine_rev; //转速
  207. uint16_t engine_thr; //油门
  208. uint16_t engine_vol; //电压 0.1v
  209. short engine_elect; //电流 0.1A
  210. uint32_t engine_rtime; //运行时间 min
  211. uint16_t engine_tcd; //剩余保养时间 min
  212. uint16_t engine_lcd; //锁机剩余时间 min(租赁方式)
  213. uint8_t engine_rsta; //运行状态 0-停止,1-等待,2-运行,3-锁机
  214. uint16_t engine_warn; //报警信息
  215. uint8_t engine_roil; //剩余油量 %
  216. uint16_t engine_cyl1temp; //气缸1温度
  217. uint16_t engine_cyl2temp; //气缸2温度
  218. uint16_t engine_pcbtemp; //控制盒PCB温度
  219. uint8_t engine_brand[8]; //品牌
  220. uint32_t engine_sn; //序列号
  221. uint8_t engine_lockstatus; //发送机解锁状态
  222. uint8_t engine_fault; //发动机错误状态
  223. };
  224. #pragma pack()
  225. extern struct ENGINE_DATA engine_data;
  226. extern short geely_set_counts;
  227. extern bool geely_set_tcd,geely_set_tcd_re,
  228. geely_set_tlock, geely_set_tlock_re,geely_set_protect;
  229. void send_msg_to_geely(void);
  230. void update_engine_data(void);
  231. void engine_function(void);
  232. void pmu_to_con_engine_data(void);
  233. void send_msg_to_vk3(void);
  234. #endif