soft_engine.h 9.2 KB

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