CAN总线和Modbus总线,该如何选择
關(guān)鍵詞:CAN總線 現(xiàn)場(chǎng)總線 Modbus 實(shí)時(shí)性
摘要:CAN總線和Modbus總線是工控領(lǐng)域常用的兩種現(xiàn)場(chǎng)總線,簡單的說哪個(gè)好哪個(gè)不好是沒有意義的,要根據(jù)不同的應(yīng)用場(chǎng)景來做選擇。CAN總線是無主結(jié)構(gòu),在通信方式上更加靈活,且是短幀發(fā)送,單幀數(shù)據(jù)消耗的總線帶寬更少,但傳輸大量數(shù)據(jù)時(shí)效率會(huì)降低。Modbus總線是主從結(jié)構(gòu),只有主站能發(fā)起通信,但每幀數(shù)據(jù)的數(shù)據(jù)量比較大,在傳輸大量數(shù)據(jù)時(shí)有優(yōu)勢(shì)。實(shí)時(shí)性方面也不能單純地說哪個(gè)高哪個(gè)低,還是要看用戶的需求。系統(tǒng)集成怎么選、實(shí)時(shí)語音傳輸怎么選、傳輸故障停機(jī)信號(hào)怎么選,以3個(gè)小案例為基礎(chǔ),描述了該如何在CAN總線和Modbus總線之間進(jìn)行抉擇。
1.總述
CAN總線和Modbus總線是工控領(lǐng)域常用的兩種現(xiàn)場(chǎng)總線。經(jīng)常會(huì)聽到有的同事說,CAN總線的實(shí)時(shí)性好,更加先進(jìn),Modbus總線太簡單,太low,孔丙火認(rèn)為,這種說法不準(zhǔn)確。不同的現(xiàn)場(chǎng)總線有不同的特性,適應(yīng)的應(yīng)用場(chǎng)景也不一樣,僅就使用面來講,Modbus總線用的更加多,很多PLC上都會(huì)自帶Modbus接口,但自帶CAN總線接口卻不是很多。因此,對(duì)兩種總線做一個(gè)比較,尤其是針對(duì)不同的應(yīng)用場(chǎng)景(不同需求)做比較,能更清晰地看清本質(zhì),便于選擇。
2.系統(tǒng)集成怎么選
在工控領(lǐng)域,尤其是過程控制系統(tǒng)領(lǐng)域,經(jīng)常會(huì)碰到系統(tǒng)集成的案例。有一些控制系統(tǒng)由多個(gè)子系統(tǒng)組成,每個(gè)子系統(tǒng)可能是不同時(shí)期實(shí)施的,或者是不同廠家設(shè)計(jì)的,但系統(tǒng)作為一個(gè)整體需要集中的信息展示與控制。舉個(gè)例子,系統(tǒng)1和系統(tǒng)2各自控制一些生產(chǎn)設(shè)備,各有自己的控制邏輯,有自己的控制器和傳感器,但它們之間也有順序控制關(guān)系,這時(shí),可以把兩個(gè)系統(tǒng)的信息集成到一個(gè)平臺(tái),并可以在平臺(tái)上實(shí)現(xiàn)兩個(gè)系統(tǒng)的順序控制關(guān)系。
這種系統(tǒng)集成的案例,信息傳輸若采用現(xiàn)場(chǎng)總線時(shí),應(yīng)該優(yōu)先選擇Modbus,一個(gè)子系統(tǒng)的信息量是比較大的,若采用CAN總線傳輸,需要分成很多幀才能完成,傳輸效率太低,且每個(gè)幀都有ID部分,這種情況下也是一種總線帶寬的浪費(fèi)。
3.實(shí)時(shí)語音傳輸怎么選
某些控制系統(tǒng)需要傳輸語音信號(hào),有些是系統(tǒng)報(bào)警信號(hào),有的是操作員時(shí)間的對(duì)講語音。傳統(tǒng)的語音信號(hào)是模擬傳輸?shù)?#xff0c;這種方案容易實(shí)現(xiàn),信號(hào)幾乎無延時(shí),但缺點(diǎn)也很明顯,長距離傳輸信號(hào)幅值衰減會(huì)導(dǎo)致遠(yuǎn)端語音音量小,缺少遠(yuǎn)端設(shè)備的信息管理(若要增加管理,需要增加通信線路),因此,很多對(duì)于語音傳輸數(shù)字化改造的案例。數(shù)字語音采用何種現(xiàn)場(chǎng)總線進(jìn)行傳輸,但就CAN總線和Modbus來選的話,應(yīng)該選CAN總線。
這個(gè)要從語音信號(hào)的采樣編碼、壓縮講起,模擬語音信號(hào)經(jīng)過采樣編碼變?yōu)閿?shù)字信號(hào),數(shù)字信號(hào)經(jīng)過壓縮芯片壓縮后,發(fā)送到總線上。一般語音信號(hào)都要經(jīng)過壓縮傳輸?shù)?#xff0c;不然數(shù)據(jù)量太大,總線帶寬有限無法傳輸。例如,AMBE1000就是常用的一種壓縮芯片。采樣壓縮后的語音數(shù)據(jù)需要周期性地向總線發(fā)送,根據(jù)不同的壓縮比,周期不同,可以是20ms發(fā)送一次,也可以10ms甚至更短的時(shí)間。每個(gè)語音設(shè)備作為一個(gè)總線節(jié)點(diǎn)存在,都有可能隨時(shí)發(fā)送語音數(shù)據(jù),因此,Modbus這種主從式的總線,是無法滿足要求的。在對(duì)音質(zhì)要求不是太高的情況下(工業(yè)現(xiàn)場(chǎng)噪聲比較大,更注重音量,一般對(duì)音質(zhì)要求不高),CAN總線一幀或兩幀數(shù)據(jù)就可以完成一次采樣數(shù)據(jù)的發(fā)送。對(duì)于語音信號(hào)的實(shí)時(shí)傳輸,采用CAN總線是合適的。
4.傳輸故障停機(jī)信號(hào)怎么選
所謂故障停機(jī)信號(hào),就是當(dāng)信號(hào)發(fā)生時(shí),系統(tǒng)必須在最短的時(shí)間內(nèi)停機(jī),不然會(huì)引發(fā)安全事故。例如,當(dāng)檢測(cè)到超越危險(xiǎn)區(qū)域時(shí),必須立即停機(jī)。如果這種信號(hào)采用現(xiàn)場(chǎng)總線的方式傳輸?shù)?#xff0c;很顯然是不能采用Modbus的。Modbus的主從結(jié)構(gòu),決定了作為從站的傳感器不能在第一時(shí)間把需要傳輸?shù)男畔鬏敵鋈?#xff0c;它要等待主站的詢問。
這種信號(hào)若采用CAN總線傳輸,可以把這種信號(hào)的幀ID設(shè)為最高優(yōu)先級(jí),這樣,故障停機(jī)信號(hào)發(fā)生后,發(fā)生在總線傳輸階段的延時(shí)最多只有一個(gè)數(shù)據(jù)幀加幀間隔的時(shí)間。如圖1所示。
圖1
在工業(yè)過程控制常用的10kbps的通信速率下,47bit的時(shí)間是:4.7ms,這僅僅是傳輸方面的延時(shí),當(dāng)然還會(huì)有兩側(cè)節(jié)點(diǎn)信號(hào)轉(zhuǎn)換和處理的延時(shí),但總的延時(shí)也遠(yuǎn)小于一個(gè)繼電器的工作延時(shí)(20ms),因此這種情況應(yīng)該是可以滿足實(shí)時(shí)性要求的。
這里說一個(gè)題外話,很多工程師在設(shè)計(jì)工控項(xiàng)目的時(shí)候,喜歡用硬接線的方式來處理急停信號(hào),理由是硬接線反應(yīng)快,其實(shí),按照孔丙火上面的分析,CAN總線通信在處理穩(wěn)定的情況下,要比一個(gè)繼電器的反應(yīng)要快的多。
5.總結(jié)
Modbus總線是一個(gè)統(tǒng)稱,傳輸介質(zhì)可以是雙絞線(串口)或網(wǎng)線(以太網(wǎng)),孔丙火在本文中比較的是以串口通信為基礎(chǔ)的Modbus,即Modbus-RTU或ASCII,以RTU最多。CAN總線和Modbus-RTU都以雙絞線為介質(zhì)進(jìn)行傳輸,這種比較才有意義。
系統(tǒng)集成怎么選、實(shí)時(shí)語音傳輸怎么選、傳輸故障停機(jī)信號(hào)怎么選,以3個(gè)小案例為基礎(chǔ),描述了該如何在CAN總線和Modbus總線之間進(jìn)行抉擇。對(duì)應(yīng)用場(chǎng)景進(jìn)行了一些延伸性的描述,有些啰嗦,只是為了更清晰地說明問題。
文章在公眾號(hào)(孔丙火)同步推出,歡迎查看更多系列文章。
單片機(jī)、ARM、現(xiàn)場(chǎng)總線、PLC、嵌入式軟硬件的設(shè)計(jì)經(jīng)驗(yàn)分享,秉承“點(diǎn)點(diǎn)滴滴皆智慧”的理念,以實(shí)際項(xiàng)目為單元闡述知識(shí)點(diǎn),一起分享,共同交流。
總結(jié)
以上是生活随笔為你收集整理的CAN总线和Modbus总线,该如何选择的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 系统缺少steam_api.dll解决方
- 下一篇: 小白在MAC上装mixly,出现“未能启