最佳實踐
在決定使用can作為傳輸信號的方法後,首先需要了解幾種can的拓樸模式:
- 菊花鏈拓樸(Daisy chain)
- 總線拓樸(Linear Bus)
- 星型拓樸(Star Topology)
菊花鏈拓樸
如上圖所示,由主控制器透過兩條線連接到其他設備,除了主控制器外,每個設備都應該有兩組can線,因此最後一個設備將會有一組can線不用連接。
總線拓樸
如上圖所示,兩條總線,兩端以120ohm的電阻並聯連接,所有設備從總線拉出分支連接。
星型拓樸
如上圖所示,由一個主控制器分別連接到各個設備。
在FRC中
在FRC中,星型拓樸通常是不被推薦的,CTRE的文檔中指出,這些馬達控制器主要被設計成適合菊花鏈拓樸,但是團隊可以根據規則與當時流行的接線方式選擇更好的方式。
菊花鏈拓樸最大的好處就是接線簡單,只需要將每個設備連接在一塊(如何接得牢固又是一門學問),但是顯而易見的是,在比賽中,如果有一個設備的失去連接(可能因為撞擊或是不當的拉扯),那麼失去的將不會只是一個設備,而是那個設備以後的所有設備。
總線拓樸可以很好的解決菊花鏈拓樸帶來的問題,但也同樣引入了更複雜的接線。總線拓樸中每個設備各自連接到總線上,如果一個設備失去連接,那麼將只會失去一個設備。但是在製作過程中,將需要更多的線(這意味著將有更多可能的故障點)。
如果菊花鏈拓樸因為接線簡單,可以更好的確保在比賽中不會有任何設備失去聯繫,那麼它將會比總線拓樸更加可靠。
選擇一個對於團隊能力而言更為可靠的方案需要在休賽季期間多做些努力,但那又是另外一個故事了。
通用規範
在每一個can網路中,都應該要有終端電阻以阻止信號在末端的反射,在FRC中,Roborio必須為網路起點,因此它內建了120ohm的終端電阻,而配電盤(Power Distribution Panel)則有可選的電阻,利用跳線帽決定是否啟用,當它放置在can網路中的末端時,應該被啟用。否則禁用,並且在末端額外添加一個120ohm的電阻。使其在未通電時使用電表測量電阻值為60ohm
應該使用雙絞線,can線在傳遞信號時,兩條線的電流方向通常是相反的,使用雙絞線可以抵銷彼此的電磁干擾。
避免電磁干擾,can線應該遠離馬達的驅動線,每秒2A的電流變化將使信號受到極大的電磁干擾。在無法遠離的情況下,避免平行佈線,或是使用具有雙屏蔽層的雙絞線。
在高速can中,總長不應該超過40公尺,並且總線模式下分支長度不應該超過30公分,節點間距離相隔10公分到40公尺之間。
關於can的錯誤
- 在DriverStation中收到關於Rx, Tx的錯誤
- DriverStation中can利用率過高
- 在正常使用期間can間歇性閃紅
CTRE的文檔中指出,上述三種情況可能是can受到信號反射造成的,此時確認未通電時兩線電阻值為60ohm。
- 在DriverStation中收到關於timeout的錯誤
上述情況通常是在程式中寫到了實際上沒有的設備編號,因此設定失敗。
- 不該同時動的馬達同時動了
通常是兩個馬達控制器具有相同的編號,CTRE具有良好的編號衝突機制,並不會使機器人毀滅,但是將會發生一些超出預期的錯誤,因此即使是不同型號的馬達控制器,都應該具有唯一的can ID
一個成功的機器人,必須建立在良好的機構與配線之上,能夠正常運作以後,才能追求更高的境界。