---
# System prepended metadata

title: 20210909麗寶紀錄
tags: [電系組]

---

# 20210909麗寶紀錄
###### tags: `電系組`

### 出發前：

* CAN不通

  * 詳細情形：
    * RPi只收得到前軸箱的訊號，RPi以後節點全部收不到，Inverter也傳不到
    * RPi CANH CANL沒有短路，但後方CANH CANL短路
  * 原因：
    * IMU處CAN接頭可能有被扯到導致![](https://i.imgur.com/IqHUIG4.jpg)


  * 解決辦法

* 電池每箱每個cell電壓

  * 詳細情形：

    * 好像說某一箱有些cell電壓比較高，有些電壓比較低
    * 好幾個人提出了一些想法希望可以從BMS看到一些資訊，但程式好像一直沒有被生出來

  * 原因：

    * maybe人多嘴雜、要求開的不夠明確，搞的高仕懷也搞不清楚到底要收些什麼資料
    * BMS document沒有看熟導致也不太清楚BMS到底會傳哪些東西回來

  * 解決辦法：

    * 大家要求開的明確一點，除了最重要的傳達「要收的資料」外，如果可以明確表達輸出格式（如：要分成幾個檔案、csv的每個column代表什麼數據等等）的話也有助於軟體組把程式生出來
    * 在看document的時候要把大概會有哪些資訊記起來，不用把每個id或data記起來，但是至少要知道這份document裡面大致上會有哪些數據（如：分箱電壓、各箱溫度等），要用到的時候要有辦法立刻去找到正確的reference

  * 其他建議：

    * 在寫程式的時候如果有固定id的data，不要讓這些id散落在程式碼的各個角落

      ```python
      # good format
      ids = [0x10, 0x20, 0x30...] # 用一個list把id全部裝起來
      if msg.data[0] == ids[0]:
          # do something
      elif msg.data[0] == ids[1]:
          # do something
      
      # bad format
      if msg.data[0] == 0x10:
          # do something
      elif msg.data[0] == 0x20:
          # do something
          
      #---------------------------------------#
      
      # good format
      ids = [0x10, 0x20, 0x30...]
      if msg.data[0] in ids:
          # do something
          
      # bad format
      if msg.data[0] == 0x10 or mag.data[0] == 0x20 ...:
          # do something
      ```

      反正就是要能夠好維護，不然這些id寫完後三個月你一定不會記得是什麼東西

    * 如果你已經生出一個部份的程式碼了，其他部份要做的事情一模一樣時，請想辦法善用你已經寫好的東西，可以用迴圈就不要複製貼上一大堆一樣的東西，很冗

### 麗寶：

* 峻生爆衝事件
  * 詳細情形：
    * 峻生在第一圈進大直道後電門踩到底，到直線尾時發現開始有延遲，過彎時發現全電門輸出鎖死，嘗試救回未果，拍下shutdown button
    * 把車推回時小電一直開著，代表arduino沒有被reset，rpi端也有連上，程式看起來還是在正常運行，推回來後重開大電踩電門輸出正常，期間小電沒有被關掉過
    * arduino1的log不知道為什麼顯示從頭到尾電門行程都是0，但重跑程式後又收到正常的log
    * Inverter端的CAN訊號沒有被收集，因此無法得知Inverter是否出問題
  * 原因：
    * 尚未有明確的證據顯示是哪一方面出問題
    * 小電在沒有重開的情況下保持正常運作，間接說明小電可能沒有出問題
    * 目前的猜測是Inverter熱當，但熱當時照理來說Inverter應直接shutdown或至少降功率，若熱當還持續輸出高功率這東西也太危險
    * 如果是Inverter的CAN transceiver或controller突然當掉，但Inverter本身沒過熱，搞不好說得通(?
  * 解決辦法：
    * 把Inverter的CAN訊號收集
    * 若電門行程為0持續一段時間後重置Inverter

