Modbus協(xié)議和串口通訊協(xié)議有什么不同
2018-05-03 13:46:59
諾塔斯智能科技
971
最近有人問Modbus協(xié)議的讀卡器。在這里主要想說一下Modbus協(xié)議和串口通訊協(xié)議都有232 485通訊 。但Modbus協(xié)議和串口通訊協(xié)議這兩者不是一個(gè)類別的概念,串口通訊指的是兩個(gè)設(shè)備之間通過485或232串口連接,在串口信道上實(shí)現(xiàn)數(shù)據(jù)通訊。modbus指的是一種工業(yè)標(biāo)準(zhǔn)的數(shù)據(jù)對(duì)話協(xié)議,對(duì)于保持寄存器,輸入寄存器,輸出寄存器,線圈寄存器等不同的寄存器數(shù)值的讀寫,均定義了專門的指令和數(shù)據(jù)交換規(guī)范。modbus協(xié)議需要在與modbus標(biāo)準(zhǔn)的工業(yè)設(shè)備進(jìn)行數(shù)據(jù)通訊時(shí)使用,既可以通過串口實(shí)現(xiàn)連接,也可以通過TCP以太網(wǎng)鏈接。
Modbus 協(xié)議
Modbus協(xié)議是應(yīng)用于電子控制器上的一種通用語言。通過此協(xié)議,控制器相互之間、控制器經(jīng)由網(wǎng)絡(luò)(例如以太網(wǎng))和其它設(shè)備之間可以通信。它已經(jīng)成為一通用工業(yè)標(biāo)準(zhǔn)。有了它,不同廠商生產(chǎn)的控制設(shè)備可以連成工業(yè)網(wǎng)絡(luò),進(jìn)行集中監(jiān)控。此協(xié)議定義了一個(gè)控制器能認(rèn)識(shí)使用的消息結(jié)構(gòu),而不管它們是經(jīng)過何種網(wǎng)絡(luò)進(jìn)行通信的。它描述了一控制器請(qǐng)求訪問其它設(shè)備的過程,如何回應(yīng)來自其它設(shè)備的請(qǐng)求,以及怎樣偵測(cè)錯(cuò)誤并記錄。它制定了消息域格局和內(nèi)容的公共格式。
當(dāng)在一Modbus網(wǎng)絡(luò)上通信時(shí),此協(xié)議決定了每個(gè)控制器須要知道它們的設(shè)備地址,識(shí)別按地址發(fā)來的消息,決定要產(chǎn)生何種行動(dòng)。如果需要回應(yīng),控制器將生成反饋信息并用Modbus協(xié)議發(fā)出。在其它網(wǎng)絡(luò)上,包含了Modbus協(xié)議的消息轉(zhuǎn)換為在此網(wǎng)絡(luò)上使用的幀或包結(jié)構(gòu)。這種轉(zhuǎn)換也擴(kuò)展了根據(jù)具體的網(wǎng)絡(luò)解決節(jié)地址、路由路徑及錯(cuò)誤檢測(cè)的方法。
此協(xié)議支持傳統(tǒng)的RS-232、RS-422、RS-485和以太網(wǎng)設(shè)備。許多工業(yè)設(shè)備,包括PLC,DCS,智能儀表等都在使用Modbus協(xié)議作為他們之間的通訊標(biāo)準(zhǔn)。
特點(diǎn)
Modbus具有以下幾個(gè)特點(diǎn):
?。?)標(biāo)準(zhǔn)、開放,用戶可以免費(fèi)、放心地使用Modbus協(xié)議,不需要交納許可證費(fèi),也不會(huì)侵犯知識(shí)產(chǎn)權(quán)。目前,支持Modbus的廠家超過400家,支持Modbus的產(chǎn)品超過600種。
(2)Modbus可以支持多種電氣接口,如RS-232、RS-485等,還可以在各種介質(zhì)上傳送,如雙絞線、光纖、無線等。
?。?)Modbus的幀格式簡(jiǎn)單、緊湊,通俗易懂。用戶使用容易,廠商開發(fā)簡(jiǎn)單。
Modbus網(wǎng)絡(luò)傳輸
標(biāo)準(zhǔn)的Modbus口是使用RS-232-C兼容串行接口,它定義了連接口的針腳、電纜、信號(hào)位、傳輸波特率、奇偶校驗(yàn)??刂破髂苤苯踊蚪?jīng)由Modem組網(wǎng)。
控制器通信使用主—從技術(shù),即僅一設(shè)備(主設(shè)備)能初始化傳輸(查詢)。其它設(shè)備(從設(shè)備)根據(jù)主設(shè)備查詢提供的數(shù)據(jù)作出相應(yīng)反應(yīng)。典型的主設(shè)備:主機(jī)和可編程儀表。典型的從設(shè)備:可編程控制器。
主設(shè)備可單獨(dú)和從設(shè)備通信,也能以廣播方式和所有從設(shè)備通信。如果單獨(dú)通信,從設(shè)備返回一消息作為回應(yīng),如果是以廣播方式查詢的,則不作任何回應(yīng)。Modbus協(xié)議建立了主設(shè)備查詢的格式:設(shè)備(或廣播)地址、功能代碼、所有要發(fā)送的數(shù)據(jù)、一錯(cuò)誤檢測(cè)域。
從設(shè)備回應(yīng)消息也由Modbus協(xié)議構(gòu)成,包括確認(rèn)要行動(dòng)的域、任何要返回的數(shù)據(jù)、和一錯(cuò)誤檢測(cè)域。如果在消息接收過程中發(fā)生一錯(cuò)誤,或從設(shè)備不能執(zhí)行其命令,從設(shè)備將建立一錯(cuò)誤消息并把它作為回應(yīng)發(fā)送出去。
其它類型傳輸
在其它網(wǎng)絡(luò)上,控制器使用對(duì)等技術(shù)通信,故任何控制器都能初始化和其它控制器的通信。這樣在單獨(dú)的通信過程中,控制器既可作為主設(shè)備也可作為從設(shè)備。提供的多個(gè)內(nèi)部通道可允許同時(shí)發(fā)生的傳輸進(jìn)程。
在消息位,Modbus協(xié)議仍提供了主—從原則,盡管網(wǎng)絡(luò)通信方法是“對(duì)等”。如果一控制器發(fā)送一消息,它只是作為主設(shè)備,并期望從從設(shè)備得到回應(yīng)。同樣,當(dāng)控制器接收到一消息,它將建立一從設(shè)備回應(yīng)格式并返回給發(fā)送的控制器。
查詢回應(yīng)周期
?。?)查詢
查詢消息中的功能代碼告之被選中的從設(shè)備要執(zhí)行何種功能。數(shù)據(jù)段包含了從設(shè)備要執(zhí)行功能的任何附加信息。例如功能代碼03是要求從設(shè)備讀保持寄存器并返回它們的內(nèi)容。數(shù)據(jù)段必須包含要告之從設(shè)備的信息:從何寄存器開始讀及要讀的寄存器數(shù)量。錯(cuò)誤檢測(cè)域?yàn)閺脑O(shè)備提供了一種驗(yàn)證消息內(nèi)容是否正確的方法。
?。?)回應(yīng)
如果從設(shè)備產(chǎn)生一正常的回應(yīng),在回應(yīng)消息中的功能代碼是在查詢消息中的功能代碼的回應(yīng)。數(shù)據(jù)段包括了從設(shè)備收集的數(shù)據(jù):像寄存器值或狀態(tài)。如果有錯(cuò)誤發(fā)生,功能代碼將被修改以用于指出回應(yīng)消息是錯(cuò)誤的,同時(shí)數(shù)據(jù)段包含了描述此錯(cuò)誤信息的代碼。錯(cuò)誤檢測(cè)域允許主設(shè)備確認(rèn)消息內(nèi)容是否可用。
傳輸方式編輯
在ModBus系統(tǒng)中有2種傳輸模式可選擇。這2種傳輸模式與從機(jī)PC通信的能力是同等的。選擇時(shí)應(yīng)視所用ModBus主機(jī)而定,每個(gè)ModBus系統(tǒng)只能使用一種模式,不允許2種模式混用。一種模式是ASCII(美國信息交換碼),另一種模式是RTU(遠(yuǎn)程終端設(shè)備)。
用戶選擇想要的模式,包括串口通信參數(shù)(波特率、校驗(yàn)方式等),在配置每個(gè)控制器的時(shí)候,在一個(gè)Modbus網(wǎng)絡(luò)上的所有設(shè)備都必須選擇相同的傳輸模式和串口參數(shù)。所選的ASCII或RTU方式僅適用于標(biāo)準(zhǔn)的Modbus網(wǎng)絡(luò),它定義了在這些網(wǎng)絡(luò)上連續(xù)傳輸?shù)南⒍蔚拿恳晃?,以及決定怎樣將信息打包成消息域和如何解碼。在其它網(wǎng)絡(luò)上(像MAP和Modbus Plus)Modbus消息被轉(zhuǎn)成與串行傳輸無關(guān)的幀。
★RS232接口
RS-232接口符合美國電子工業(yè)聯(lián)盟(EIA)制定的串行數(shù)據(jù)通信的接口標(biāo)準(zhǔn),原始編號(hào)全稱是EIA-RS-232(簡(jiǎn)稱232,RS232)。它被廣泛用于計(jì)算機(jī)串行接口外設(shè)連接。連接電纜和機(jī)械、電氣特性、信號(hào)功能及傳送過程。
特點(diǎn)
RS-232是現(xiàn)在主流的串行通信接口之一。由于RS232接口標(biāo)準(zhǔn)出現(xiàn)較早,難免有不足之處,主要有以下四點(diǎn):
?。?)接口的信號(hào)電平值較高,易損壞接口電路的芯片。RS232接口任何一條信號(hào)線的電壓均為負(fù)邏輯關(guān)系。即:邏輯“1”為-3— -15V;邏輯“0”:+3— +15V ,噪聲容限為2V。即要求接收器能識(shí)別高于+3V的信號(hào)作為邏輯“0”,低于-3V的信號(hào)作為邏輯“1”,TTL電平為5V為邏輯正,0為邏輯負(fù)。與TTL電平不兼容故需使用電平轉(zhuǎn)換電路方能與TTL電路連接。
(2)傳輸速率較低,在異步傳輸時(shí),波特率為20Kbps;因此在51CPLD開發(fā)板中,綜合程序波特率只能采用19200,也是這個(gè)原因。
?。?)接口使用一根信號(hào)線和一根信號(hào)返回線而構(gòu)成共地的傳輸形式,這種共地傳輸容易產(chǎn)生共模干擾,所以抗噪聲干擾性弱。
?。?)傳輸距離有限,最大傳輸距離標(biāo)準(zhǔn)值為50英尺,實(shí)際上也只能用在15米左右
。
分類:DB9、DB25、DB25轉(zhuǎn)DB9
在RS-232標(biāo)準(zhǔn)中,字符是以一串行的比特串來一個(gè)接一個(gè)的串行(serial)方式傳輸,優(yōu)點(diǎn)是傳輸線少,配線簡(jiǎn)單,傳送距離可以較遠(yuǎn)。最常用的編碼格式是異步起停(asynchronousstart-stop)格式,它使用一個(gè)起始比特后面緊跟7或8 個(gè)數(shù)據(jù)比特(bit),然后是可選的奇偶校驗(yàn)比特,最后是一或兩個(gè)停止比特。所以發(fā)送一個(gè)字符至少需要10比特,帶來的一個(gè)好的效果是使全部的傳輸速率,發(fā)送信號(hào)的速率以10劃分。一個(gè)最平常的代替異步起停方式的是使用高級(jí)數(shù)據(jù)鏈路控制協(xié)議(HDLC)。
在RS-232標(biāo)準(zhǔn)中定義了邏輯1和邏輯0電壓級(jí)數(shù),以及標(biāo)準(zhǔn)的傳輸速率和連接器類型。信號(hào)大小在正的和負(fù)的3-15v之間。RS-232規(guī)定接近0的電平是無效的,邏輯1規(guī)定為負(fù)電平,有效負(fù)電平的信號(hào)狀態(tài)稱為傳號(hào)marking,它的功能意義為OFF,邏輯0規(guī)定為正電平,有效正電平的信號(hào)狀態(tài)稱為空號(hào)spacing,它的功能意義為ON。根據(jù)設(shè)備供電電源的不同,±5、±10、±12和±15這樣的電平都是可能的。
mark和space是從電傳打字機(jī)中來的術(shù)語。電傳打字機(jī)原始的通信是一個(gè)簡(jiǎn)單的中斷直流電路模式,類似與圓轉(zhuǎn)盤電話撥號(hào)的中的信號(hào)。Marking狀態(tài)是指電路是斷開的,spacing狀態(tài)就是指電路是接通的。一個(gè)space就表明有一個(gè)字符要開始發(fā)送了,相應(yīng)的停止的時(shí)候,停止位就是marking。當(dāng)線路中斷的時(shí)候,電傳打字機(jī)不打印任何有效字符,周期性的連續(xù)收到全0信號(hào)
RS-232設(shè)計(jì)之初是用來連接調(diào)制解調(diào)器做傳輸之用,也因此它的腳位意義通常也和調(diào)制解調(diào)器傳輸有關(guān)。RS-232的設(shè)備可以分為數(shù)據(jù)終端設(shè)備(DTE,Data Terminal Equipment, Forexample, PC)和數(shù)據(jù)通信設(shè)備(DCE,Data Communication Equipment)兩類,這種分類定義了不同的線路用來發(fā)送和接受信號(hào)。一般來說,計(jì)算機(jī)和終端設(shè)備有DTE連接器,調(diào)制解調(diào)器和打印機(jī)有DCE連接器。但是這么說并不是總是嚴(yán)格正確的,用配線分接器測(cè)試連接,或者用試誤法來判斷電纜是否工作,常常需要參考相關(guān)的文件說明。
RS-232指定了20個(gè)不同的信號(hào)連接,由25個(gè)D-sub(微型D類)管腳構(gòu)成的DB-25連接器。很多設(shè)備只是用了其中的一小部分管腳,出于節(jié)省資金和空間的考慮不少機(jī)器采用較小的連接器,特別是9管腳的D-sub或者是DB-9型連接器被廣泛使用絕大多數(shù)自IBM的AT機(jī)之后的PC機(jī)和其他許多設(shè)備上。DB-25和DB-9型的連接器在大部分設(shè)備上是雌型,但不是所有的都是這樣。最近,8管腳的RJ-45型連接器變得越來越普遍,盡管它的管腳分配相差很大。EIA/TIA561標(biāo)準(zhǔn)規(guī)定了一種管腳分配的方法,但是由DaveYost發(fā)明的被廣泛使用在Unix計(jì)算機(jī)上的Yost串連設(shè)備配線標(biāo)準(zhǔn)("Yost Serial Device WiringStandard")以及其他很多設(shè)備都沒有采用上述任一種連線標(biāo)準(zhǔn)。
★RS485
智能儀表是隨著80年代初單片機(jī)技術(shù)的成熟而發(fā)展起來的,現(xiàn)在世界儀表市場(chǎng)基本被智能儀表所壟斷。究其原因就是企業(yè)信息化的需要,企業(yè)在儀表選型時(shí)其中的一個(gè)必要條件就是要具有聯(lián)網(wǎng)通信接口。最初是數(shù)據(jù)模擬信號(hào)輸出簡(jiǎn)單過程量,后來儀表接口是RS232接口,這種接口可以實(shí)現(xiàn)點(diǎn)對(duì)點(diǎn)的通信方式,但這種方式不能實(shí)現(xiàn)聯(lián)網(wǎng)功能。隨后出現(xiàn)的RS485解決了這個(gè)問題。
特點(diǎn)
1.RS-485的電氣特性:采用差分信號(hào)負(fù)邏輯,邏輯"1”以兩線間的電壓差為+(2~6)V表示;邏輯"0"以兩線間的電壓差為-(2~6)V表示。接口信號(hào)電平比RS-232-C降低了,就不易損壞接口電路的芯片,且該電平與TTL電平兼容,可方便與TTL電路連接。
2.RS-485的數(shù)據(jù)最高傳輸速率為10Mbps。
3.RS-485接口是采用平衡驅(qū)動(dòng)器和差分接收器的組合,抗共模干擾能力增強(qiáng),即抗噪聲干擾性好。
4.RS-485最大的通信距離約為1219m,最大傳輸速率為10Mbps,傳輸速率與傳輸距離成反比,在100KbpS的傳輸速率下,才可以達(dá)到最大的通信距離,如果需傳輸更長的距離,需要加485中繼器。RS-485總線一般最大支持32個(gè)節(jié)點(diǎn),如果使用特制的485芯片,可以達(dá)到128個(gè)或者256個(gè)節(jié)點(diǎn),最大的可以支持到400個(gè)節(jié)點(diǎn)。
接口
RS485接口組成的半雙工網(wǎng)絡(luò),一般是兩線制(以前有四線制接法,只能實(shí)現(xiàn)點(diǎn)對(duì)點(diǎn)的通信方式,現(xiàn)很少采用),多采用屏蔽雙絞線傳輸。這種接線方式為總線式拓?fù)浣Y(jié)構(gòu)在同一總線上最多可以掛接32個(gè)結(jié)點(diǎn)。在RS485通信網(wǎng)絡(luò)中一般采用的是主從通信方式,即一個(gè)主機(jī)帶多個(gè)從機(jī)。很多情況下,連接RS-485通信鏈路時(shí)只是簡(jiǎn)單地用一對(duì)雙絞線將各個(gè)接口的“A”、“B”端連接起來。RS485接口連接器采用DB-9的9芯插頭座,與智能終端RS485接口采用DB-9(孔),與鍵盤連接的鍵盤接口RS485采用DB-9(針)。
另有一個(gè)問題是信號(hào)地,上述連接方法在許多場(chǎng)合是能正常工作的,但卻埋下了很大的隱患,這有二個(gè)原因:(1)共模干擾問題: RS-485接口采用差分方式傳輸信號(hào),并不需要相對(duì)于某個(gè)參照點(diǎn)來檢測(cè)信號(hào),系統(tǒng)只需檢測(cè)兩線之間的電位差就可以了。但人們往往忽視了收發(fā)器有一定的共模電壓范圍,RS-485收發(fā)器共模電壓范圍為-7~+12V,只有滿足上述條件,整個(gè)網(wǎng)絡(luò)才能正常工作。當(dāng)網(wǎng)絡(luò)線路中共模電壓超出此范圍時(shí)就會(huì)影響通信的穩(wěn)定可靠,甚至損壞接口。(2)EMI(電磁兼容性)問題:發(fā)送驅(qū)動(dòng)器輸出信號(hào)中的共模部分需要一個(gè)返回通路,如沒有一個(gè)低阻的返回通道(信號(hào)地),信號(hào)中的共模部分就會(huì)以輻射的形式返回源端,整個(gè)總線就會(huì)像一個(gè)巨大的天線向外輻射電磁波。
由于PC機(jī)默認(rèn)的只有RS232接口,有兩種方法可以得到PC上位機(jī)的RS485電路:
1)通過RS232/RS485轉(zhuǎn)換電路將PC機(jī)串口RS232信號(hào)轉(zhuǎn)換成RS485信號(hào),對(duì)于情況比較復(fù)雜的工業(yè)環(huán)境最好是選用防浪涌帶隔離柵的產(chǎn)品。
2)通過PCI多串口卡,可以直接選用輸出信號(hào)為RS485類型的擴(kuò)展卡。