
CAN:自帶協議,硬件和軟件都支持搶占。****的用他的原因也是協議完善,支持搶占。 RS485:協議比較靈活,可以使用MODBUS也可以自擬協議,硬件不支持搶占。****的用他的原因是應用簡單,成本低。 
CAN:應用成本較高。很多非常簡單的功能,也需要使用STM32才能實現CAN的協議棧,還要外加驅動。布線不方便。額外需要電源線。 RS485:布線不方便。需要MCU內置協議。額外需要電源線。 
CAN與RS485以1Mbit/S的高速率傳輸的距離都不超過100M,可謂高速上的距離差不多。但是在低速時CAN以5Kbit/S時,距離可達10KM,而485再低的速率也只能到1219米左右(都無中繼)。可見CAN在長距離的傳輸上擁有優勢。 在總線利用率上RS485是單主從結構,就是一個總線上只能有一臺主機,通訊都由它發起的,它沒有下命令,下面的節點不能發送,而且要發完即答,受到答復后,主機才向下一個節點詢問,這樣是為了防止多個節點向總線發送數據,而造成數據錯亂。而CAN-bus是多主從結構,每個節點都有CAN控制器,多個節點發送時,以發送的ID號自動進行仲裁,這樣就可以實現總線數據不錯亂,而且一個節點發完,另一個節點可以探測到總線空閑,而馬上發送,這樣省去了主機的詢問,提高了總線利用率,增強了快速性。所以在汽車等實性要求高的系統,都是用CAN總線,或者其他類似的總線。 錯誤檢測機制,RS485只規定了物理層,而沒有數據鏈路層,所以它對錯誤是無法識別的,除非一些短路等物理錯誤。這樣容易造成一個節點破壞了,拼命向總線發數據(一直發1),這樣造成整個總線癱瘓。 所以RS485一旦壞一個節點,這個總線網絡都掛。而CAN總線有CAN控制器,可以對總線任何錯誤進行檢測,如果自身錯誤超過128個,就自動閉鎖。保護總線。如果檢測到其他節點錯誤或者自身錯誤,都會向總線發送錯誤幀,來提示其他節點,這個數據是錯誤的。大家小心。這樣CAN總線一旦有一個節點CPU程序跑飛了,它的控制器自動閉鎖。保護總線。所以在安全性要求高的網路,CAN是很強的。 如需要請聯系18732837179(VX同號) 
|