前言
RS-485和CAN都是串行通信協(xié)議。它們?cè)试S在單個(gè)系統(tǒng)中布置多點(diǎn)設(shè)備,大大縮短了電纜長(zhǎng)度,差分設(shè)計(jì)適用于強(qiáng)干擾的環(huán)境,兩者都使用120 Ω電阻端接,并配有內(nèi)部過壓電路以進(jìn)行故障保護(hù)。
RS-485和CAN有太多的共同點(diǎn),但無(wú)疑是不一樣的。
RS-485更多的是應(yīng)用在工業(yè)領(lǐng)域,CAN被廣泛設(shè)計(jì)用于汽車行業(yè)。但現(xiàn)在,不僅汽車行業(yè)廣泛使用CAN,而且航空航天等其他行業(yè)也開始轉(zhuǎn)向CAN。
但是要了解使這些協(xié)議與眾不同的差異,我們必須知道它們到底是什么。
先簡(jiǎn)要介紹一下RS-485。
RS-485:自20世紀(jì)80年代中期以來一直存在的串行通信協(xié)議。最初是為工業(yè)市場(chǎng)的應(yīng)用而定義的,或者更好的說,它是為工業(yè)應(yīng)用而開發(fā)的。
RS-485由電信行業(yè)協(xié)會(huì)和電子工業(yè)聯(lián)盟聯(lián)合發(fā)布,因此它也被稱為TIA / EIA-485。但更能被業(yè)界接受的名字是RS-485,它的應(yīng)用在:
運(yùn)動(dòng)控制設(shè)備
計(jì)算機(jī)自動(dòng)化系統(tǒng)(鍵盤、鼠標(biāo)、打印機(jī)等)
工業(yè)控制系統(tǒng)
劇院應(yīng)用
雖然RS-485被應(yīng)用到多種場(chǎng)合,但越來越多的行業(yè)似乎轉(zhuǎn)向CAN用于其工業(yè)機(jī)械。
為什么要“切換”到CAN總線?
RS-485未能成為通信協(xié)議。它只是被證明是一個(gè)電氣接口。它確實(shí)提供了多點(diǎn)通信功能,但僅適用于至少具有UART的設(shè)備。 01
一主多從系統(tǒng)
從技術(shù)上講,它是一個(gè)半雙工系統(tǒng),一次只能有一個(gè)設(shè)備可以傳輸,其他設(shè)備必須監(jiān)聽。因此,它只能為多個(gè)節(jié)點(diǎn)串行地進(jìn)行數(shù)據(jù)交換提供基本的物理鏈路。即:一主多從。
與CAN不同,CAN總線的設(shè)備,每個(gè)節(jié)點(diǎn)都可以充當(dāng)主節(jié)點(diǎn),并確切地知道如何以及何時(shí)發(fā)送信號(hào)。
RS-485遵循典型的主從拓?fù)浣Y(jié)構(gòu)。當(dāng)通信處于活動(dòng)狀態(tài)時(shí),所有從站/節(jié)點(diǎn)都接收主站單元發(fā)送的數(shù)據(jù)。如果一個(gè)“從機(jī)”必須回答“主機(jī)”的信息,它就必須切換為“主機(jī)”,這樣才能發(fā)送它的信息。
這種連接的一個(gè)特殊功能是,連接到線路的所有設(shè)備都會(huì)接收傳遞的所有內(nèi)容。當(dāng)設(shè)備必須發(fā)送時(shí),它通過RTS信號(hào)(傳輸請(qǐng)求)激活其傳輸線。傳輸數(shù)據(jù)的元素也接收傳輸?shù)臄?shù)據(jù)。
當(dāng)RS-485總線出現(xiàn)多個(gè)設(shè)備同時(shí)發(fā)送消息時(shí),會(huì)導(dǎo)致過載或可能信號(hào)碰撞,進(jìn)而使整個(gè)消息無(wú)效或?qū)е聰?shù)據(jù)錯(cuò)誤。 02
容錯(cuò)機(jī)制
對(duì)于RS-485,這還不是它唯一的缺點(diǎn)。在定義方面,沒有明確規(guī)定以下的內(nèi)容:
尋址節(jié)點(diǎn)的過程
避免數(shù)據(jù)沖突的方法
框架結(jié)構(gòu)
溝通程序
錯(cuò)誤檢測(cè)等,
3個(gè)理由了解為什么CAN總線更好
CAN總線的顯著優(yōu)勢(shì)在于它高度靈活并提供許多獨(dú)特的功能,從而導(dǎo)致其他行業(yè)的采用率大幅增加。
CAN總線是一種雙線、多點(diǎn)的串行通信標(biāo)準(zhǔn)協(xié)議。就像RS-485一樣,通過CAN的信號(hào)以CAN-H和CAN-L作為差分電壓流動(dòng)。
差分信號(hào)的傳輸類似于RS-485,但事實(shí)差異很大。
CAN總線的優(yōu)勢(shì)主要體現(xiàn)在以下三個(gè)方面:
01
消息傳輸
CAN指定了總線上的完整數(shù)據(jù)包,而不僅僅是物理層。 CAN硬件自動(dòng)處理數(shù)據(jù)包的開始/結(jié)束檢測(cè)、沖突檢測(cè)、回退、重試、校驗(yàn)和生成、驗(yàn)證,以及與處理硬件故障相關(guān)的更多功能。用戶只需要傳輸消息標(biāo)識(shí)符和有效負(fù)載,CAN硬件負(fù)責(zé)添加數(shù)據(jù)包的其他部分。
使用RS-485時(shí),其實(shí)RS-485底層未進(jìn)行任何定義:如數(shù)據(jù)來自何處、誰(shuí)可以發(fā)送它、正在發(fā)送哪些數(shù)據(jù)、接收的數(shù)據(jù)是否損壞等。(除非在軟件中指定,否則什么都不知道)。
02
仲裁
RS-485的主要問題是信號(hào)擁塞。這通常是由于多個(gè)節(jié)點(diǎn)試圖在總線上同時(shí)發(fā)送數(shù)據(jù),從而導(dǎo)致過載。
CAN遵循仲裁,其中消息按狀態(tài)順序排列和接收。失去仲裁的節(jié)點(diǎn)將重新發(fā)送其消息。 對(duì)于所有節(jié)點(diǎn),這種情況將繼續(xù)進(jìn)行,直到只剩下一個(gè)節(jié)點(diǎn)正在傳輸。
由于消息式仲裁,CAN無(wú)需采取額外的預(yù)防措施即可實(shí)現(xiàn)多主機(jī)操作。對(duì)于RS-485,這只能通過特定協(xié)議來實(shí)現(xiàn)。
03
協(xié)同和錯(cuò)誤檢測(cè)及糾正
當(dāng)CAN總線的一個(gè)節(jié)點(diǎn)將隱性狀態(tài)“寫入”總線并看到它實(shí)際上處于主導(dǎo)狀態(tài)時(shí),它知道另一個(gè)節(jié)點(diǎn)正在驅(qū)動(dòng)它。嘗試寫入隱性狀態(tài)的節(jié)點(diǎn)將后退并等待消息的結(jié)束。
寫入主導(dǎo)狀態(tài)的節(jié)點(diǎn)永遠(yuǎn)不會(huì)知道發(fā)生了這種情況。它的消息通常由所有其他節(jié)點(diǎn)發(fā)送和接收。這種沖突檢測(cè)功能允許在沒有任何中央仲裁的情況下實(shí)現(xiàn)對(duì)等網(wǎng)絡(luò)架構(gòu)。
節(jié)點(diǎn)發(fā)送消息,但在檢測(cè)到?jīng)_突時(shí)后退,然后在當(dāng)前數(shù)據(jù)包完成后重試。 最終,總線可用時(shí)發(fā)送這些其他消息,并且發(fā)送先前碰撞的消息時(shí)不會(huì)發(fā)生沖突,包括 16 位 CRC 校驗(yàn)和。
RS-485不能觸發(fā)任何消息沖突,系統(tǒng)的應(yīng)用軟件必須保證避免碰撞。
綜述
雖然RS-485端口仍然被應(yīng)用到到許多新開發(fā)的設(shè)備中中,但CAN功能的如仲裁、錯(cuò)誤消息檢查、改進(jìn)的帶寬和更大的數(shù)據(jù)場(chǎng),加速了對(duì)CAN總線的需求。
審核編輯:劉清
-
編碼器
+關(guān)注
關(guān)注
45文章
3573瀏覽量
133980 -
通信協(xié)議
+關(guān)注
關(guān)注
28文章
840瀏覽量
40215 -
plc
+關(guān)注
關(guān)注
5006文章
13107瀏覽量
461453 -
CAN
+關(guān)注
關(guān)注
57文章
2694瀏覽量
463149 -
RS-485
+關(guān)注
關(guān)注
11文章
672瀏覽量
84112
原文標(biāo)題:3個(gè)原因告訴你,CAN為什么比RS-485更好?
文章出處:【微信號(hào):mcu168,微信公眾號(hào):硬件攻城獅】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論