soft_engine.h 9.0 KB

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