电机故障日志数据结构.html 30 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <title>电机故障日志数据结构.md</title>
  5. <meta http-equiv="Content-type" content="text/html;charset=UTF-8">
  6. <style>
  7. /* https://github.com/microsoft/vscode/blob/master/extensions/markdown-language-features/media/markdown.css */
  8. /*---------------------------------------------------------------------------------------------
  9. * Copyright (c) Microsoft Corporation. All rights reserved.
  10. * Licensed under the MIT License. See License.txt in the project root for license information.
  11. *--------------------------------------------------------------------------------------------*/
  12. body {
  13. font-family: var(--vscode-markdown-font-family, -apple-system, BlinkMacSystemFont, "Segoe WPC", "Segoe UI", "Ubuntu", "Droid Sans", sans-serif);
  14. font-size: var(--vscode-markdown-font-size, 14px);
  15. padding: 0 26px;
  16. line-height: var(--vscode-markdown-line-height, 22px);
  17. word-wrap: break-word;
  18. }
  19. #code-csp-warning {
  20. position: fixed;
  21. top: 0;
  22. right: 0;
  23. color: white;
  24. margin: 16px;
  25. text-align: center;
  26. font-size: 12px;
  27. font-family: sans-serif;
  28. background-color:#444444;
  29. cursor: pointer;
  30. padding: 6px;
  31. box-shadow: 1px 1px 1px rgba(0,0,0,.25);
  32. }
  33. #code-csp-warning:hover {
  34. text-decoration: none;
  35. background-color:#007acc;
  36. box-shadow: 2px 2px 2px rgba(0,0,0,.25);
  37. }
  38. body.scrollBeyondLastLine {
  39. margin-bottom: calc(100vh - 22px);
  40. }
  41. body.showEditorSelection .code-line {
  42. position: relative;
  43. }
  44. body.showEditorSelection .code-active-line:before,
  45. body.showEditorSelection .code-line:hover:before {
  46. content: "";
  47. display: block;
  48. position: absolute;
  49. top: 0;
  50. left: -12px;
  51. height: 100%;
  52. }
  53. body.showEditorSelection li.code-active-line:before,
  54. body.showEditorSelection li.code-line:hover:before {
  55. left: -30px;
  56. }
  57. .vscode-light.showEditorSelection .code-active-line:before {
  58. border-left: 3px solid rgba(0, 0, 0, 0.15);
  59. }
  60. .vscode-light.showEditorSelection .code-line:hover:before {
  61. border-left: 3px solid rgba(0, 0, 0, 0.40);
  62. }
  63. .vscode-light.showEditorSelection .code-line .code-line:hover:before {
  64. border-left: none;
  65. }
  66. .vscode-dark.showEditorSelection .code-active-line:before {
  67. border-left: 3px solid rgba(255, 255, 255, 0.4);
  68. }
  69. .vscode-dark.showEditorSelection .code-line:hover:before {
  70. border-left: 3px solid rgba(255, 255, 255, 0.60);
  71. }
  72. .vscode-dark.showEditorSelection .code-line .code-line:hover:before {
  73. border-left: none;
  74. }
  75. .vscode-high-contrast.showEditorSelection .code-active-line:before {
  76. border-left: 3px solid rgba(255, 160, 0, 0.7);
  77. }
  78. .vscode-high-contrast.showEditorSelection .code-line:hover:before {
  79. border-left: 3px solid rgba(255, 160, 0, 1);
  80. }
  81. .vscode-high-contrast.showEditorSelection .code-line .code-line:hover:before {
  82. border-left: none;
  83. }
  84. img {
  85. max-width: 100%;
  86. max-height: 100%;
  87. }
  88. a {
  89. text-decoration: none;
  90. }
  91. a:hover {
  92. text-decoration: underline;
  93. }
  94. a:focus,
  95. input:focus,
  96. select:focus,
  97. textarea:focus {
  98. outline: 1px solid -webkit-focus-ring-color;
  99. outline-offset: -1px;
  100. }
  101. hr {
  102. border: 0;
  103. height: 2px;
  104. border-bottom: 2px solid;
  105. }
  106. h1 {
  107. padding-bottom: 0.3em;
  108. line-height: 1.2;
  109. border-bottom-width: 1px;
  110. border-bottom-style: solid;
  111. }
  112. h1, h2, h3 {
  113. font-weight: normal;
  114. }
  115. table {
  116. border-collapse: collapse;
  117. }
  118. table > thead > tr > th {
  119. text-align: left;
  120. border-bottom: 1px solid;
  121. }
  122. table > thead > tr > th,
  123. table > thead > tr > td,
  124. table > tbody > tr > th,
  125. table > tbody > tr > td {
  126. padding: 5px 10px;
  127. }
  128. table > tbody > tr + tr > td {
  129. border-top: 1px solid;
  130. }
  131. blockquote {
  132. margin: 0 7px 0 5px;
  133. padding: 0 16px 0 10px;
  134. border-left-width: 5px;
  135. border-left-style: solid;
  136. }
  137. code {
  138. font-family: Menlo, Monaco, Consolas, "Droid Sans Mono", "Courier New", monospace, "Droid Sans Fallback";
  139. font-size: 1em;
  140. line-height: 1.357em;
  141. }
  142. body.wordWrap pre {
  143. white-space: pre-wrap;
  144. }
  145. pre:not(.hljs),
  146. pre.hljs code > div {
  147. padding: 16px;
  148. border-radius: 3px;
  149. overflow: auto;
  150. }
  151. pre code {
  152. color: var(--vscode-editor-foreground);
  153. tab-size: 4;
  154. }
  155. /** Theming */
  156. .vscode-light pre {
  157. background-color: rgba(220, 220, 220, 0.4);
  158. }
  159. .vscode-dark pre {
  160. background-color: rgba(10, 10, 10, 0.4);
  161. }
  162. .vscode-high-contrast pre {
  163. background-color: rgb(0, 0, 0);
  164. }
  165. .vscode-high-contrast h1 {
  166. border-color: rgb(0, 0, 0);
  167. }
  168. .vscode-light table > thead > tr > th {
  169. border-color: rgba(0, 0, 0, 0.69);
  170. }
  171. .vscode-dark table > thead > tr > th {
  172. border-color: rgba(255, 255, 255, 0.69);
  173. }
  174. .vscode-light h1,
  175. .vscode-light hr,
  176. .vscode-light table > tbody > tr + tr > td {
  177. border-color: rgba(0, 0, 0, 0.18);
  178. }
  179. .vscode-dark h1,
  180. .vscode-dark hr,
  181. .vscode-dark table > tbody > tr + tr > td {
  182. border-color: rgba(255, 255, 255, 0.18);
  183. }
  184. </style>
  185. <style>
  186. /* Tomorrow Theme */
  187. /* http://jmblog.github.com/color-themes-for-google-code-highlightjs */
  188. /* Original theme - https://github.com/chriskempson/tomorrow-theme */
  189. /* Tomorrow Comment */
  190. .hljs-comment,
  191. .hljs-quote {
  192. color: #8e908c;
  193. }
  194. /* Tomorrow Red */
  195. .hljs-variable,
  196. .hljs-template-variable,
  197. .hljs-tag,
  198. .hljs-name,
  199. .hljs-selector-id,
  200. .hljs-selector-class,
  201. .hljs-regexp,
  202. .hljs-deletion {
  203. color: #c82829;
  204. }
  205. /* Tomorrow Orange */
  206. .hljs-number,
  207. .hljs-built_in,
  208. .hljs-builtin-name,
  209. .hljs-literal,
  210. .hljs-type,
  211. .hljs-params,
  212. .hljs-meta,
  213. .hljs-link {
  214. color: #f5871f;
  215. }
  216. /* Tomorrow Yellow */
  217. .hljs-attribute {
  218. color: #eab700;
  219. }
  220. /* Tomorrow Green */
  221. .hljs-string,
  222. .hljs-symbol,
  223. .hljs-bullet,
  224. .hljs-addition {
  225. color: #718c00;
  226. }
  227. /* Tomorrow Blue */
  228. .hljs-title,
  229. .hljs-section {
  230. color: #4271ae;
  231. }
  232. /* Tomorrow Purple */
  233. .hljs-keyword,
  234. .hljs-selector-tag {
  235. color: #8959a8;
  236. }
  237. .hljs {
  238. display: block;
  239. overflow-x: auto;
  240. color: #4d4d4c;
  241. padding: 0.5em;
  242. }
  243. .hljs-emphasis {
  244. font-style: italic;
  245. }
  246. .hljs-strong {
  247. font-weight: bold;
  248. }
  249. </style>
  250. <style>
  251. /*
  252. * Markdown PDF CSS
  253. */
  254. body {
  255. font-family: -apple-system, BlinkMacSystemFont, "Segoe WPC", "Segoe UI", "Ubuntu", "Droid Sans", sans-serif, "Meiryo";
  256. padding: 0 12px;
  257. }
  258. pre {
  259. background-color: #f8f8f8;
  260. border: 1px solid #cccccc;
  261. border-radius: 3px;
  262. overflow-x: auto;
  263. white-space: pre-wrap;
  264. overflow-wrap: break-word;
  265. }
  266. pre:not(.hljs) {
  267. padding: 23px;
  268. line-height: 19px;
  269. }
  270. blockquote {
  271. background: rgba(127, 127, 127, 0.1);
  272. border-color: rgba(0, 122, 204, 0.5);
  273. }
  274. .emoji {
  275. height: 1.4em;
  276. }
  277. code {
  278. font-size: 14px;
  279. line-height: 19px;
  280. }
  281. /* for inline code */
  282. :not(pre):not(.hljs) > code {
  283. color: #C9AE75; /* Change the old color so it seems less like an error */
  284. font-size: inherit;
  285. }
  286. /* Page Break : use <div class="page"/> to insert page break
  287. -------------------------------------------------------- */
  288. .page {
  289. page-break-after: always;
  290. }
  291. </style>
  292. <script src="https://unpkg.com/mermaid/dist/mermaid.min.js"></script>
  293. </head>
  294. <body>
  295. <script>
  296. mermaid.initialize({
  297. startOnLoad: true,
  298. theme: document.body.classList.contains('vscode-dark') || document.body.classList.contains('vscode-high-contrast')
  299. ? 'dark'
  300. : 'default'
  301. });
  302. </script>
  303. <h1 id="%E7%94%B5%E6%9C%BA%E6%95%85%E9%9A%9C%E6%97%A5%E5%BF%97%E7%BB%93%E6%9E%84%E5%AE%9A%E4%B9%89">电机故障日志结构定义</h1>
  304. <h2 id="1%E7%9B%AE%E7%9A%84">1.目的</h2>
  305. <ul>
  306. <li>电机出现故障时,及时记录故障发生时刻的故障码、电机运行信息等;</li>
  307. <li>通过上位机导出故障日志,便于对故障进行分析。</li>
  308. </ul>
  309. <h2 id="2%E6%96%B9%E6%B3%95">2.方法</h2>
  310. <ul>
  311. <li>控制器在单片机Flash中设计1024Bytes用于存储故障日志;</li>
  312. <li>每条故障日志大小为64bytes;</li>
  313. <li>16条日志循环存储,即始终存储最近的16条故障日志;</li>
  314. <li>上位机发送指令给控制器,控制器及时返回Flash中保存的故障日志。</li>
  315. </ul>
  316. <h2 id="3%E9%80%9A%E4%BF%A1%E5%8D%8F%E8%AE%AE">3.通信协议</h2>
  317. <ul>
  318. <li>上位机采用下列指令读取故障日志:</li>
  319. </ul>
  320. <table>
  321. <thead>
  322. <tr>
  323. <th style="text-align:center">CAN ID</th>
  324. <th style="text-align:center">帧模式</th>
  325. <th style="text-align:center">命令字</th>
  326. <th>数据段</th>
  327. </tr>
  328. </thead>
  329. <tbody>
  330. <tr>
  331. <td style="text-align:center">0x751</td>
  332. <td style="text-align:center">0x11</td>
  333. <td style="text-align:center">0x2D08</td>
  334. <td>读取存储器指定地址数据:起始地址:4bytes,结束地址:4bytes,读取数据大小≤128Bytes</td>
  335. </tr>
  336. </tbody>
  337. </table>
  338. <ul>
  339. <li>控制器接收到上位机读取指令时,按照下列协议返回Flash中保存的数据:</li>
  340. </ul>
  341. <table>
  342. <thead>
  343. <tr>
  344. <th style="text-align:center">CAN ID</th>
  345. <th style="text-align:center">帧模式</th>
  346. <th style="text-align:center">命令字</th>
  347. <th>数据段</th>
  348. </tr>
  349. </thead>
  350. <tbody>
  351. <tr>
  352. <td style="text-align:center">0x715</td>
  353. <td style="text-align:center">0x0C</td>
  354. <td style="text-align:center">0xAB88</td>
  355. <td>返回存储器指定起始和结束地址的数据:起始地址4bytes,结束地址:4bytes,数据:128bytes 结束地址-起始地址<128时,填充0xFF</td>
  356. </tr>
  357. </tbody>
  358. </table>
  359. <p>示例如下:</p>
  360. <pre class="hljs"><code><div><span class="hljs-keyword">case</span> <span class="hljs-number">0x2D08</span>:<span class="hljs-comment">//读取Flash存储器指定地址数据</span>
  361. {
  362. <span class="hljs-keyword">do</span>
  363. {
  364. <span class="hljs-keyword">uint32_t</span> DataLength;
  365. DataLength = (<span class="hljs-keyword">uint32_t</span>)((Data[<span class="hljs-number">4</span>] &lt;&lt; <span class="hljs-number">24</span>) + (Data[<span class="hljs-number">5</span>] &lt;&lt; <span class="hljs-number">16</span>) + (Data[<span class="hljs-number">6</span>] &lt;&lt; <span class="hljs-number">8</span>) + (Data[<span class="hljs-number">7</span>])) - (<span class="hljs-keyword">uint32_t</span>)((Data[<span class="hljs-number">0</span>] &lt;&lt; <span class="hljs-number">24</span>) + (Data[<span class="hljs-number">1</span>] &lt;&lt; <span class="hljs-number">16</span>) + (Data[<span class="hljs-number">2</span>] &lt;&lt; <span class="hljs-number">8</span>) + (Data[<span class="hljs-number">3</span>])) + <span class="hljs-number">1</span>;
  366. <span class="hljs-built_in">memcpy</span>((<span class="hljs-keyword">uint8_t</span>*)(Data + <span class="hljs-number">8</span>), (<span class="hljs-keyword">uint8_t</span>*)((Data[<span class="hljs-number">0</span>] &lt;&lt; <span class="hljs-number">24</span>) + (Data[<span class="hljs-number">1</span>] &lt;&lt; <span class="hljs-number">16</span>) + (Data[<span class="hljs-number">2</span>] &lt;&lt; <span class="hljs-number">8</span>) + (Data[<span class="hljs-number">3</span>])), DataLength);
  367. SendData(ID_MC_TO_CDL, MODE_REPORT, (<span class="hljs-number">0xAB08</span> + DataLength), (<span class="hljs-keyword">uint8_t</span>*)Data);
  368. }<span class="hljs-keyword">while</span>(<span class="hljs-number">0</span>);
  369. <span class="hljs-keyword">break</span>;
  370. }
  371. </div></code></pre>
  372. <h2 id="4%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84">4.数据结构</h2>
  373. <h3 id="41-%E5%B0%8F%E7%89%99%E7%9B%98%E4%B8%AD%E7%BD%AE%E7%94%B5%E6%9C%BA%E6%95%85%E9%9A%9C%E6%97%A5%E5%BF%97%E7%BB%93%E6%9E%84%E4%BD%93%E5%AE%9A%E4%B9%89">4.1 小牙盘中置电机故障日志结构体定义</h3>
  374. <pre class="hljs"><code><div><span class="hljs-comment">//故障日志记录信息 64 bytes,1K空间可以保存最近16条故障记录</span>
  375. <span class="hljs-keyword">typedef</span> <span class="hljs-class"><span class="hljs-keyword">struct</span>
  376. {</span>
  377. <span class="hljs-keyword">uint16_t</span> Error_Index; <span class="hljs-comment">//故障列表索引 2 bytes, 地址偏移 0</span>
  378. <span class="hljs-keyword">uint16_t</span> NotesInfo1; <span class="hljs-comment">//备注信息1,地址偏移 2</span>
  379. <span class="hljs-keyword">uint16_t</span> NotesInfo2; <span class="hljs-comment">//备注信息2,地址偏移 4</span>
  380. <span class="hljs-keyword">uint16_t</span> NotesInfo3; <span class="hljs-comment">//备注信息3,地址偏移 6</span>
  381. <span class="hljs-keyword">uint32_t</span> ErrorCode; <span class="hljs-comment">//故障码 4 bytes, 地址偏移 8</span>
  382. <span class="hljs-keyword">uint32_t</span> RunTime; <span class="hljs-comment">//运行时间 4bytes, 地址偏移 12</span>
  383. MC_RunInfo_Struct_t RunInfo; <span class="hljs-comment">//运行信息 32bytes, 地址偏移 16</span>
  384. MC_AttitudeAngle_Struct_t AttitudeAngle; <span class="hljs-comment">//车辆姿态角度 8bytes, 地址偏移 48</span>
  385. MC_CalParam_Struct_t MC_CalParam; <span class="hljs-comment">//马达控制参数 8bytes , 地址偏移 56</span>
  386. }MC_ErrorLogSaveInfo_Struct_t;
  387. <span class="hljs-comment">//电机运行信息,占用空间32bytes</span>
  388. <span class="hljs-keyword">typedef</span> <span class="hljs-class"><span class="hljs-keyword">struct</span>
  389. {</span>
  390. <span class="hljs-keyword">uint16_t</span> BikeSpeed; <span class="hljs-comment">//车速 0.1km/h,地址偏移0</span>
  391. <span class="hljs-keyword">int16_t</span> MotorSpeed; <span class="hljs-comment">//输出转速 1rpm,地址偏移2</span>
  392. <span class="hljs-keyword">uint16_t</span> Power; <span class="hljs-comment">//电功率 1W,地址偏移4</span>
  393. <span class="hljs-keyword">uint16_t</span> BusVoltage; <span class="hljs-comment">//母线电压 1mV,地址偏移6</span>
  394. <span class="hljs-keyword">uint16_t</span> BusCurrent; <span class="hljs-comment">//母线电流 1mA,地址偏移8</span>
  395. <span class="hljs-keyword">uint8_t</span> Cadence; <span class="hljs-comment">//踏频 1rpm,地址偏移10</span>
  396. <span class="hljs-keyword">uint8_t</span> Torque; <span class="hljs-comment">//踩踏力矩 1Nm,地址偏移11</span>
  397. MC_CadenceDir_Struct_t CadenceDir; <span class="hljs-comment">//踩踏方向 0-正,1-反,2-停止,地址偏移12</span>
  398. <span class="hljs-keyword">uint8_t</span> GearSt; <span class="hljs-comment">//助力档位,地址偏移13</span>
  399. MC_LightSwitch_Struct_t LightSwitch; <span class="hljs-comment">//灯开关 0xF0-关,0xF1-开,地址偏移14</span>
  400. <span class="hljs-keyword">uint8_t</span> SOC; <span class="hljs-comment">//剩余电量 1%,地址偏移15</span>
  401. <span class="hljs-keyword">uint16_t</span> RemainDistance; <span class="hljs-comment">//续航里程 1km,地址偏移16</span>
  402. <span class="hljs-keyword">uint16_t</span> ODO_Km; <span class="hljs-comment">//总里程 1km,地址偏移18</span>
  403. <span class="hljs-keyword">uint8_t</span> PowerPerKm; <span class="hljs-comment">//平均功耗 0.01Ah/km ,地址偏移20</span>
  404. <span class="hljs-keyword">uint8_t</span> T_PCB; <span class="hljs-comment">//PCB温度 +40℃,地址偏移21</span>
  405. <span class="hljs-keyword">uint8_t</span> T_Coil; <span class="hljs-comment">//绕组温度 +40℃,地址偏移22</span>
  406. <span class="hljs-keyword">uint8_t</span> T_MCU; <span class="hljs-comment">//MCU温度 +40℃,地址偏移23</span>
  407. <span class="hljs-keyword">uint16_t</span> Ride_Km; <span class="hljs-comment">//开机后骑行里程 0.1km, 地址偏移24</span>
  408. <span class="hljs-keyword">uint16_t</span> Ride_Time; <span class="hljs-comment">//开机后骑行时间 1s,地址偏移26</span>
  409. <span class="hljs-keyword">uint8_t</span> TorqueSensorData1; <span class="hljs-comment">//力矩传感器1原始值</span>
  410. <span class="hljs-keyword">uint8_t</span> TorqueSensorData2; <span class="hljs-comment">//力矩传感器2原始值</span>
  411. <span class="hljs-keyword">uint8_t</span> TorqueSensorData3; <span class="hljs-comment">//力矩传感器3原始值</span>
  412. <span class="hljs-keyword">uint8_t</span> RS ; <span class="hljs-comment">//预留 1byte</span>
  413. }MC_RunInfo_Struct_t;
  414. <span class="hljs-comment">//姿态传感器数值</span>
  415. <span class="hljs-keyword">typedef</span> <span class="hljs-class"><span class="hljs-keyword">struct</span>
  416. {</span>
  417. <span class="hljs-keyword">int16_t</span> Angle_Pitch_Absolute; <span class="hljs-comment">//俯仰角绝对角度</span>
  418. <span class="hljs-keyword">int16_t</span> Angle_Roll_Absolute; <span class="hljs-comment">//横滚角绝对角度</span>
  419. <span class="hljs-keyword">int16_t</span> Angle_Pitch_Relative; <span class="hljs-comment">//俯仰角相对角度</span>
  420. <span class="hljs-keyword">int16_t</span> Angle_Roll_Relative; <span class="hljs-comment">//横滚角相对角度</span>
  421. }MC_AttitudeAngle_Struct_t;
  422. <span class="hljs-comment">//电机控制参数</span>
  423. <span class="hljs-keyword">typedef</span> <span class="hljs-class"><span class="hljs-keyword">struct</span>
  424. {</span>
  425. MC_AssistRunMode_Struct_t AssistRunMode; <span class="hljs-comment">//助力模式</span>
  426. <span class="hljs-keyword">int16_t</span> Ref_Torque; <span class="hljs-comment">//力矩模式输入FOC值</span>
  427. <span class="hljs-keyword">int16_t</span> Ref_Speed; <span class="hljs-comment">//速度模式输入FOC值</span>
  428. FlagStatus Foc_Flag; <span class="hljs-comment">//FCO运算标志</span>
  429. }MC_CalParam_Struct_t;
  430. </div></code></pre>
  431. <h3 id="42-%E5%A4%A7%E7%89%99%E7%9B%98%E4%B8%AD%E7%BD%AE%E7%94%B5%E6%9C%BA%E6%95%85%E9%9A%9C%E6%97%A5%E5%BF%97%E7%BB%93%E6%9E%84%E4%BD%93%E5%AE%9A%E4%B9%89">4.2 大牙盘中置电机故障日志结构体定义</h3>
  432. <pre class="hljs"><code><div><span class="hljs-comment">//故障日志记录信息 64 bytes,1K空间可以保存最近16条故障记录</span>
  433. <span class="hljs-keyword">typedef</span> <span class="hljs-class"><span class="hljs-keyword">struct</span>
  434. {</span>
  435. UWORD ErrorIndex; <span class="hljs-comment">// 故障序列号,2bytes,地址偏移 0</span>
  436. UWORD NotesInfo1; <span class="hljs-comment">// 备注信息1,2bytes,地址偏移 2</span>
  437. UWORD NotesInfo2; <span class="hljs-comment">// 备注信息2,2bytes,地址偏移 4</span>
  438. UWORD NotesInfo3; <span class="hljs-comment">// 备注信息3,2bytes,地址偏移 6</span>
  439. ULONG ErrorCode; <span class="hljs-comment">// 故障码,4 bytes, 地址偏移 8</span>
  440. ULONG RunTime; <span class="hljs-comment">// 运行时间,4bytes, 地址偏移 12</span>
  441. MC_RunInfo_Struct_t RunInfo; <span class="hljs-comment">// 运行信息 32bytes, 地址偏移 16</span>
  442. SWORD IqCurrentPu; <span class="hljs-comment">// Iq电流,2bytes,地址偏移 48</span>
  443. SWORD IqVoltagePu; <span class="hljs-comment">// Iq电压,2bytes,地址偏移 50</span>
  444. SWORD IdCurrentPu; <span class="hljs-comment">// Id电流,2bytes,地址偏移 52</span>
  445. SWORD IdVoltagePu; <span class="hljs-comment">// Id电压,2bytes,地址偏移 54</span>
  446. UWORD RS1; <span class="hljs-comment">// 预留信息1,2bytes,地址偏移 56</span>
  447. UWORD RS2; <span class="hljs-comment">// 预留信息1,2bytes,地址偏移 58</span>
  448. UWORD RS3; <span class="hljs-comment">// 预留信息1,2bytes,地址偏移 60</span>
  449. UWORD RS4; <span class="hljs-comment">// 预留信息1,2bytes,地址偏移 62</span>
  450. } ERROR_LOG; <span class="hljs-comment">//共64字节</span>
  451. <span class="hljs-comment">//电机运行信息,占用空间32bytes</span>
  452. <span class="hljs-keyword">typedef</span> <span class="hljs-class"><span class="hljs-keyword">struct</span>
  453. {</span>
  454. <span class="hljs-keyword">uint16_t</span> BikeSpeed; <span class="hljs-comment">//车速 0.1km/h,地址偏移0</span>
  455. <span class="hljs-keyword">int16_t</span> MotorSpeed; <span class="hljs-comment">//输出转速 1rpm,地址偏移2</span>
  456. <span class="hljs-keyword">uint16_t</span> Power; <span class="hljs-comment">//电功率 1W,地址偏移4</span>
  457. <span class="hljs-keyword">uint16_t</span> BusVoltage; <span class="hljs-comment">//母线电压 1mV,地址偏移6</span>
  458. <span class="hljs-keyword">uint16_t</span> BusCurrent; <span class="hljs-comment">//母线电流 1mA,地址偏移8</span>
  459. <span class="hljs-keyword">uint8_t</span> Cadence; <span class="hljs-comment">//踏频 1rpm,地址偏移10</span>
  460. <span class="hljs-keyword">uint8_t</span> Torque; <span class="hljs-comment">//踩踏力矩 1Nm,地址偏移11</span>
  461. MC_CadenceDir_Struct_t CadenceDir; <span class="hljs-comment">//踩踏方向 0-正,1-反,2-停止,地址偏移12</span>
  462. <span class="hljs-keyword">uint8_t</span> GearSt; <span class="hljs-comment">//助力档位,地址偏移13</span>
  463. MC_LightSwitch_Struct_t LightSwitch; <span class="hljs-comment">//灯开关 0xF0-关,0xF1-开,地址偏移14</span>
  464. <span class="hljs-keyword">uint8_t</span> SOC; <span class="hljs-comment">//剩余电量 1%,地址偏移15</span>
  465. <span class="hljs-keyword">uint16_t</span> RemainDistance; <span class="hljs-comment">//续航里程 1km,地址偏移16</span>
  466. <span class="hljs-keyword">uint16_t</span> ODO_Km; <span class="hljs-comment">//总里程 1km,地址偏移18</span>
  467. <span class="hljs-keyword">uint8_t</span> PowerPerKm; <span class="hljs-comment">//平均功耗 0.01Ah/km ,地址偏移20</span>
  468. <span class="hljs-keyword">uint8_t</span> T_PCB; <span class="hljs-comment">//PCB温度 +40℃,地址偏移21</span>
  469. <span class="hljs-keyword">uint8_t</span> T_Coil; <span class="hljs-comment">//绕组温度 +40℃,地址偏移22</span>
  470. <span class="hljs-keyword">uint8_t</span> T_MCU; <span class="hljs-comment">//MCU温度 +40℃,地址偏移23</span>
  471. <span class="hljs-keyword">uint16_t</span> Ride_Km; <span class="hljs-comment">//开机后骑行里程 0.1km, 地址偏移24</span>
  472. <span class="hljs-keyword">uint16_t</span> Ride_Time; <span class="hljs-comment">//开机后骑行时间 1s,地址偏移26</span>
  473. <span class="hljs-keyword">uint8_t</span> TorqueSensorData1; <span class="hljs-comment">//力矩传感器1原始值</span>
  474. <span class="hljs-keyword">uint8_t</span> TorqueSensorData2; <span class="hljs-comment">//力矩传感器2原始值</span>
  475. <span class="hljs-keyword">uint8_t</span> TorqueSensorData3; <span class="hljs-comment">//力矩传感器3原始值</span>
  476. <span class="hljs-keyword">uint8_t</span> RS ; <span class="hljs-comment">//预留 1byte</span>
  477. }MC_RunInfo_Struct_t;
  478. </div></code></pre>
  479. <h2 id="5-%E6%95%88%E6%9E%9C">5. 效果</h2>
  480. <p>售后软件从小牙盘电机导出的故障日志示例如下:</p>
  481. <p><strong>电机错误信息:</strong></p>
  482. <p>1, 备注1:0, 备注2:0, 备注3:0, 历史信息代码:10 , 原始故障码:0x00000001, 故障详情:过流保护 , 运行时间:10089min, 车速:12.4km/h, 电机转速:1297rpm, 功率:40w, 电压:38614mV, 电流:6130mA, 踏频:34rpm, 力矩:87N.m, 方向:0, 档位:0x02, 灯开关:0xF0, 电量:62%, 续航:---km, 总里程:2339km, 功耗:160mAh/km, PCB温度:22DegreeC, 绕组温度:19DegreeC, MCU温度:18DegreeC, 单次里程:2.1km, 单次时间:353s, 俯仰绝对角度:0Degree, 横滚绝对角度:0Degree, 俯仰相对角度:0Degree, 横滚相对角度:0Degree, 运行模式:2, 力矩环给定:624, 速度环给定:0, FOC_Flag:1,</p>
  483. <p>2, 备注1:0, 备注2:0, 备注3:0, 历史信息代码:10 , 原始故障码:0x00000001, 故障详情:过流保护 , 运行时间:10091min, 车速:9.4km/h, 电机转速:1162rpm, 功率:0w, 电压:39146mV, 电流:13159mA, 踏频:46rpm, 力矩:53N.m, 方向:0, 档位:0x02, 灯开关:0xF0, 电量:61%, 续航:---km, 总里程:2339km, 功耗:160mAh/km, PCB温度:23DegreeC, 绕组温度:23DegreeC, MCU温度:19DegreeC, 单次里程:2.8km, 单次时间:470s, 俯仰绝对角度:0Degree, 横滚绝对角度:0Degree, 俯仰相对角度:0Degree, 横滚相对角度:0Degree, 运行模式:2, 力矩环给定:378, 速度环给定:0, FOC_Flag:1,</p>
  484. <p>3, 备注1:1, 备注2:1331, 备注3:0, 历史信息代码: , 原始故障码:0x00400000, 故障详情: , 运行时间:11041min, 车速:16.3km/h, 电机转速:1800rpm, 功率:0w, 电压:39905mV, 电流:1155mA, 踏频:73rpm, 力矩:16N.m, 方向:0, 档位:0x01, 灯开关:0xF0, 电量:79%, 续航:---km, 总里程:2521km, 功耗:110mAh/km, PCB温度:41DegreeC, 绕组温度:50DegreeC, MCU温度:43DegreeC, 单次里程:7.6km, 单次时间:1644s, 俯仰绝对角度:0Degree, 横滚绝对角度:0Degree, 俯仰相对角度:0Degree, 横滚相对角度:0Degree, 运行模式:2, 力矩环给定:298, 速度环给定:0, FOC_Flag:1,</p>
  485. <p>4, 备注1:1, 备注2:399, 备注3:0, 历史信息代码: , 原始故障码:0x00400000, 故障详情: , 运行时间:12181min, 车速:23.1km/h, 电机转速:1687rpm, 功率:0w, 电压:38780mV, 电流:1130mA, 踏频:53rpm, 力矩:20N.m, 方向:0, 档位:0x03, 灯开关:0xF0, 电量:68%, 续航:---km, 总里程:2753km, 功耗:190mAh/km, PCB温度:40DegreeC, 绕组温度:46DegreeC, MCU温度:42DegreeC, 单次里程:1km, 单次时间:168s, 俯仰绝对角度:0Degree, 横滚绝对角度:0Degree, 俯仰相对角度:0Degree, 横滚相对角度:0Degree, 运行模式:2, 力矩环给定:457, 速度环给定:0, FOC_Flag:1,</p>
  486. <p>5, 备注1:1, 备注2:489, 备注3:0, 历史信息代码: , 原始故障码:0x00400000, 故障详情: , 运行时间:12222min, 车速:12.1km/h, 电机转速:1650rpm, 功率:0w, 电压:38080mV, 电流:1127mA, 踏频:32rpm, 力矩:10N.m, 方向:0, 档位:0x02, 灯开关:0xF0, 电量:62%, 续航:---km, 总里程:2761km, 功耗:150mAh/km, PCB温度:43DegreeC, 绕组温度:47DegreeC, MCU温度:46DegreeC, 单次里程:2.9km, 单次时间:767s, 俯仰绝对角度:0Degree, 横滚绝对角度:0Degree, 俯仰相对角度:0Degree, 横滚相对角度:0Degree, 运行模式:2, 力矩环给定:460, 速度环给定:0, FOC_Flag:1,</p>
  487. <p>6, 备注1:1, 备注2:622, 备注3:0, 历史信息代码: , 原始故障码:0x00400000, 故障详情: , 运行时间:12279min, 车速:16.4km/h, 电机转速:1755rpm, 功率:0w, 电压:40803mV, 电流:1256mA, 踏频:52rpm, 力矩:39N.m, 方向:0, 档位:0x01, 灯开关:0xF0, 电量:95%, 续航:---km, 总里程:2769km, 功耗:90mAh/km, PCB温度:34DegreeC, 绕组温度:39DegreeC, MCU温度:36DegreeC, 单次里程:1.3km, 单次时间:225s, 俯仰绝对角度:0Degree, 横滚绝对角度:0Degree, 俯仰相对角度:0Degree, 横滚相对角度:0Degree, 运行模式:2, 力矩环给定:239, 速度环给定:0, FOC_Flag:1,</p>
  488. <p>7, 备注1:1, 备注2:975, 备注3:0, 历史信息代码: , 原始故障码:0x00400000, 故障详情: , 运行时间:13600min, 车速:12.9km/h, 电机转速:1777rpm, 功率:0w, 电压:40928mV, 电流:1228mA, 踏频:40rpm, 力矩:29N.m, 方向:0, 档位:0x01, 灯开关:0xF0, 电量:98%, 续航:---km, 总里程:3062km, 功耗:100mAh/km, PCB温度:31DegreeC, 绕组温度:37DegreeC, MCU温度:33DegreeC, 单次里程:0km, 单次时间:10s, 俯仰绝对角度:0Degree, 横滚绝对角度:0Degree, 俯仰相对角度:0Degree, 横滚相对角度:0Degree, 运行模式:2, 力矩环给定:224, 速度环给定:0, FOC_Flag:1,</p>
  489. <p>8, 备注1:1, 备注2:727, 备注3:0, 历史信息代码: , 原始故障码:0x00400000, 故障详情: , 运行时间:13600min, 车速:15.2km/h, 电机转速:1762rpm, 功率:0w, 电压:40893mV, 电流:1166mA, 踏频:48rpm, 力矩:27N.m, 方向:0, 档位:0x33, 灯开关:0xF0, 电量:97%, 续航:---km, 总里程:3062km, 功耗:180mAh/km, PCB温度:32DegreeC, 绕组温度:38DegreeC, MCU温度:34DegreeC, 单次里程:0km, 单次时间:9s, 俯仰绝对角度:0Degree, 横滚绝对角度:0Degree, 俯仰相对角度:0Degree, 横滚相对角度:0Degree, 运行模式:2, 力矩环给定:409, 速度环给定:0, FOC_Flag:1,</p>
  490. <p>9, 备注1:1, 备注2:1257, 备注3:0, 历史信息代码: , 原始故障码:0x00400000, 故障详情: , 运行时间:13861min, 车速:24km/h, 电机转速:1740rpm, 功率:0w, 电压:40163mV, 电流:1105mA, 踏频:76rpm, 力矩:44N.m, 方向:0, 档位:0x01, 灯开关:0xF0, 电量:83%, 续航:---km, 总里程:3126km, 功耗:100mAh/km, PCB温度:41DegreeC, 绕组温度:50DegreeC, MCU温度:41DegreeC, 单次里程:11.4km, 单次时间:1692s, 俯仰绝对角度:0Degree, 横滚绝对角度:0Degree, 俯仰相对角度:0Degree, 横滚相对角度:0Degree, 运行模式:2, 力矩环给定:212, 速度环给定:0, FOC_Flag:1,</p>
  491. <p>10, 备注1:1, 备注2:797, 备注3:0, 历史信息代码: , 原始故障码:0x00400000, 故障详情: , 运行时间:13861min, 车速:27.7km/h, 电机转速:1785rpm, 功率:0w, 电压:40234mV, 电流:1150mA, 踏频:76rpm, 力矩:18N.m, 方向:0, 档位:0x02, 灯开关:0xF0, 电量:85%, 续航:---km, 总里程:3126km, 功耗:160mAh/km, PCB温度:41DegreeC, 绕组温度:48DegreeC, MCU温度:43DegreeC, 单次里程:0.1km, 单次时间:27s, 俯仰绝对角度:0Degree, 横滚绝对角度:0Degree, 俯仰相对角度:0Degree, 横滚相对角度:0Degree, 运行模式:2, 力矩环给定:448, 速度环给定:0, FOC_Flag:1,</p>
  492. <p>11, 备注1:1, 备注2:458, 备注3:0, 历史信息代码: , 原始故障码:0x00400000, 故障详情: , 运行时间:14082min, 车速:20.5km/h, 电机转速:1612rpm, 功率:0w, 电压:35824mV, 电流:1006mA, 踏频:64rpm, 力矩:41N.m, 方向:0, 档位:0x01, 灯开关:0xF0, 电量:34%, 续航:---km, 总里程:3177km, 功耗:90mAh/km, PCB温度:43DegreeC, 绕组温度:48DegreeC, MCU温度:46DegreeC, 单次里程:4km, 单次时间:600s, 俯仰绝对角度:0Degree, 横滚绝对角度:0Degree, 俯仰相对角度:0Degree, 横滚相对角度:0Degree, 运行模式:2, 力矩环给定:226, 速度环给定:0, FOC_Flag:1,</p>
  493. </body>
  494. </html>