




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
第3章通用串行通信
接口技術IBM-PC及其兼容機是目前應用較廣泛的一種計算機,通常用它作為分布式測控系統(tǒng)的上位機,而單片微處理器和單片微控制器軟硬件資源豐富,價格低,適合于作下位機。上位機與下位機一般采用串行通信技術,常用的有RS-232C接口及RS-422和RS-485接口,并采用Modbus-RTU通信協(xié)議進行通信。本章首先講述了串行通信基礎,然后講述了RS-232C串行通信接口、RS-485串行通信接口和USB接口,最后講述了Modbus通信協(xié)議以及在PMM2000電力網(wǎng)絡儀表中的應用。3.1串行通信基礎3.1.1串行異步通信數(shù)據(jù)格式無論是RS-232還是RS-485,均可采用串行異步收發(fā)數(shù)據(jù)格式。在串行端口的異步傳輸中,接收方一般事先并不知道數(shù)據(jù)會在什么時候到達。在它檢測到數(shù)據(jù)并做出響應之前,第一個數(shù)據(jù)位就已經(jīng)過去了。因此每次異步傳輸都應該在發(fā)送的數(shù)據(jù)之前設置至少一個起始位,以通知接收方有數(shù)據(jù)到達,給接收方一個準備接收數(shù)據(jù)、緩存數(shù)據(jù)和做出其他響應所需要的時間。而在傳輸過程結(jié)束時,則應由一個停止位通知接收方本次傳輸過程已終止,以便接收方正常終止本次通信而轉(zhuǎn)入其他工作程序。串行異步收發(fā)(UART)通信的數(shù)據(jù)格式如圖3-1所示。圖3-1串行異步收發(fā)(UART)通信的數(shù)據(jù)格式3.1.2連接握手通信幀的起始位可以引起接收方的注意,但發(fā)送方并不知道,也不能確認接收方是否已經(jīng)做好了接收數(shù)據(jù)的準備。利用連接握手可以使收發(fā)雙方確認已經(jīng)建立了連接關系,接收方已經(jīng)做好準備,可以進入數(shù)據(jù)收發(fā)狀態(tài)。連接握手過程是指發(fā)送者在發(fā)送一個數(shù)據(jù)塊之前使用一個特定的握手信號來引起接收者的注意,表明要發(fā)送數(shù)據(jù),接收者則通過握手信號回應發(fā)送者,說明它已經(jīng)做好了接收數(shù)據(jù)的準備。連接握手可以通過軟件,也可以通過硬件來實現(xiàn)。3.1.3確認接收者為表明數(shù)據(jù)已經(jīng)收到而向發(fā)送者回復信息的過程稱為確認。有的傳輸過程可能會收到報文而不需要向相關節(jié)點回復確認信息。但是在許多情況下,需要通過確認告知發(fā)送者數(shù)據(jù)已經(jīng)收到。有的發(fā)送者需要根據(jù)是否收到確認信息來采取相應的措施,因而確認對某些通信過程是必需的和有用的。即便接收者沒有其他信息要告訴發(fā)送者,也要為此單獨發(fā)一個確認數(shù)據(jù)已經(jīng)收到的信息。確認報文可以是一個特別定義過的字節(jié),例如一個標識接收者的數(shù)值。發(fā)送者收到確認報文就可以認為數(shù)據(jù)傳輸過程正常結(jié)束。如果發(fā)送者沒有收到所希望回復的確認報文,它就認為通信出現(xiàn)了問題,然后將采取重發(fā)或者其他行動。3.1.4中斷中斷是一個信號,它通知CPU有需要立即響應的任務。每個中斷請求對應一個連接到中斷源和中斷控制器的信號。通過自動檢測端口事件發(fā)現(xiàn)中斷并轉(zhuǎn)入中斷處理。許多串行端口采用硬件中斷。在串口發(fā)生硬件中斷,或者一個軟件緩存的計數(shù)器到達一個觸發(fā)值時,表明某個事件已經(jīng)發(fā)生,需要執(zhí)行相應的中斷響應程序,并對該事件做出及時的反應。這種過程也稱為事件驅(qū)動。3.1.5輪詢通過周期性地獲取特征或信號來讀取數(shù)據(jù)或發(fā)現(xiàn)是否有事件發(fā)生的工作過程稱為輪詢。它需要足夠頻繁地輪詢端口,以便不遺失任何數(shù)據(jù)或者事件。輪詢的頻率取決于對事件快速反應的需求以及緩存區(qū)的大小。輪詢通常用于計算機與I/O端口之間較短數(shù)據(jù)或字符組的傳輸。由于輪詢端口不需要硬件中斷,因此可以在一個沒有分配中斷的端口運行此類程序。很多輪詢使用系統(tǒng)計時器來確定周期性讀取端口的操作時間。3.1.6差錯檢驗數(shù)據(jù)通信中的接收者可以通過差錯檢驗來判斷所接收的數(shù)據(jù)是否正確。冗余數(shù)據(jù)校驗、奇偶校驗、校驗和、循環(huán)冗余校驗等都是串行通信中常用的差錯檢驗方法。1.冗余數(shù)據(jù)校驗發(fā)送冗余數(shù)據(jù)是實行差錯檢驗的一種簡單辦法。發(fā)送者對每條報文都發(fā)送兩次,由接收者根據(jù)這兩次收到的數(shù)據(jù)是否一致來判斷本次通信的有效性。當然,采用這種方法意味著每條報文都要花兩倍的時間進行傳輸。在傳送短報文時經(jīng)常會用到它。許多紅外線控制器就使用這種方法進行差錯檢驗。2.奇偶校驗串行通信中經(jīng)常采用奇偶校驗來進行錯誤檢查。校驗位可以按奇數(shù)位校驗,也可以按偶數(shù)位校驗。許多串口支持5~8個數(shù)據(jù)位再加上奇偶校驗位的工作方式。按數(shù)據(jù)位加上校驗位共有偶數(shù)個0的規(guī)則填寫校驗位的方式稱為偶校驗;而按數(shù)據(jù)位加上校驗位共有奇數(shù)個0的規(guī)則填寫校驗位的方式稱為奇校驗。接收方檢驗接收到的數(shù)據(jù),如果接收到的數(shù)據(jù)違背了事先約定的奇偶校驗的規(guī)則,不是所期望的數(shù)值,說明出現(xiàn)了傳輸錯誤,則向發(fā)送方發(fā)送出錯通知。3.1.6差錯檢驗3.校驗和另一種差錯檢驗的方法是在通信數(shù)據(jù)中加入一個差錯檢驗字節(jié)。對一條報文中的所有字節(jié)進行數(shù)學或者邏輯運算,計算出校驗和。將校驗和形成的差錯檢驗字節(jié)作為該報文的組成部分。接收端對收到的數(shù)據(jù)重復這樣的計算,如果得到了一個不同的結(jié)果,就判定通信過程發(fā)生了差錯,說明它接收到的數(shù)據(jù)與發(fā)送數(shù)據(jù)不一致。CRC循環(huán)冗余校驗也是串行通信中常用的檢錯方法,它采用比校驗和更為復雜的數(shù)學計算,其校驗結(jié)果也更加可靠。4.出錯的簡單處理當一個節(jié)點檢測到通信中出現(xiàn)的差錯或者接收到一條無法理解的報文時,應該盡量通知發(fā)送報文的節(jié)點,要求它重新發(fā)送或者采取別的措施來糾正。經(jīng)過多次重發(fā),如果發(fā)送者仍不能糾正這個差錯,發(fā)送者應該跳過對這個節(jié)點的發(fā)送,發(fā)布一條出錯消息,通過報警或者其他操作來通知操作人員發(fā)生了通信差錯,并盡可能繼續(xù)執(zhí)行其他任務。接收者如果發(fā)現(xiàn)一條報文比期望的報文要短,應該能最終停止連接,并讓主計算機知道出現(xiàn)了問題,而不能無休止地等待一個報文結(jié)束。主計算機可以決定讓該報文繼續(xù)發(fā)送、重發(fā)或者停發(fā)。不應因發(fā)現(xiàn)問題而讓網(wǎng)絡處于無休止的等待狀態(tài)。3.2RS-232C串行通信接口3.2.1RS-232C端子RS-232C的連接插頭用25針或9針的EIA連接插頭座,其主要端子分配如表3-1所示。端
腳方
向符
號功
能25針9針23輸出TXD發(fā)送數(shù)據(jù)32輸入RXD接收數(shù)據(jù)47輸出RTS請求發(fā)送58輸入CTS為發(fā)送清零66輸入DSR數(shù)據(jù)設備準備好75
GND信號地81輸入DCD數(shù)據(jù)信號檢測204輸出DTR229輸入RI表3-1RS-232C主要端子3.2.1RS-232C端子1.信號含義(1)從計算機到MODEM的信號DTR——數(shù)據(jù)終端(DTE)準備好:告訴MODEM計算機已接通電源,并準備好。RTS——請求發(fā)送:告訴MODEM現(xiàn)在要發(fā)送數(shù)據(jù)。(2)從MODEM到計算機的信號DSR——數(shù)據(jù)設備(DCE)準備好:告訴計算機MODEM已接通電源,并準備好了。CTS——為發(fā)送清零:告訴計算機MODEM已作好了接收數(shù)據(jù)的準備。DCD——數(shù)據(jù)信號檢測:告訴計算機MODEM已與對端的MODEM建立連接了。RI——振鈴指示器:告訴計算機對端電話已在振鈴了。(3)數(shù)據(jù)信號TXD——發(fā)送數(shù)據(jù)。RXD——接收數(shù)據(jù)。3.2.1RS-232C端子2.電氣特性RS-232C的電氣線路連接如圖3-2所示。圖3-2RS-232C的電氣連接接口為非平衡型,每個信號用一根導線,所有信號回路共用一根地線。信號速率限于20kbit/s內(nèi),電纜長度限于15m之內(nèi)。由于是單線,線間干擾較大。其電性能用±12V標準脈沖。值得注意的是RS-232C采用負邏輯。在數(shù)據(jù)線上:傳號Mark=-5~-15V,邏輯“1”電平空號Space=+5~+15V,邏輯“0”電平在控制線上:通On=+5~+15V,邏輯“0”電平斷Off=-5~-15V,邏輯“1”電平RS-232C的邏輯電平與TTL電平不兼容,為了與TTL器件相連必須進行電平轉(zhuǎn)換。由于RS-232C采用電平傳輸,在通信速率為19.2kbit/s時,其通信距離只有15m。若要延長通信距離,必須以降低通信速率為代價。3.2.2通信接口的連接當兩臺計算機經(jīng)RS-232C口直接通信時,兩臺計算機之間的聯(lián)絡線可用圖3-3和圖3-4表示。雖然不接MODEM,圖中仍連接著有關的MODEM信號線,這是由于INT14H中斷使用這些信號,假如程序中沒有調(diào)用INT14H,在自編程序中也沒有用到MODEM的有關信號,兩臺計算機直接通信時,只連接2、3、7(25針EIA)或3、2、5(9針EIA)就可以了。圖3-3使用MODEM信號的RS-232C接口圖3-4不使用MODEM信號的RS-232C接口3.2.3RS-232C電平轉(zhuǎn)換器為了實現(xiàn)采用+5V供電的TTL和CMOS通信接口電路能與RS-232C標準接口連接,必須進行串行口的輸入/輸出信號的電平轉(zhuǎn)換。目前常用的電平轉(zhuǎn)換器有MOTOROLA公司生產(chǎn)的MC1488驅(qū)動器、MC1489接收器,TI公司的SN75188驅(qū)動器、SN75189接收器及美國MAXIM公司生產(chǎn)的單一+5V電源供電、多路RS-232驅(qū)動器/接收器,如MAX232A等。MAX232A內(nèi)部具有雙充電泵電壓變換器,把+5V變換成±10V,作為驅(qū)動器的電源,具有兩路發(fā)送器及兩路接收器,使用相當方便。MAX232A引腳如圖3-5所示,典型應用如圖3-6所示。單一+5V電源供電的RS-232C電平轉(zhuǎn)換器還有TL232、ICL232等。圖3-5MAX232A引腳圖圖3-6MAX232A典型應用3.3RS-485串行通信接口3.3.1RS-485接口標準RS-485接口采用二線差分平衡傳輸,其信號定義如下。當采用+5V電源供電時:若差分電壓信號為-2500~-200mV時,為邏輯“0”;若差分電壓信號為+2500~+200mV時,為邏輯“1”;若差分電壓信號為-200~+200mV時,為高阻狀態(tài)。RS-485的差分平衡電路如圖3-7所示。其一根導線上的電壓是另一根導線上的電壓值取反。接收器的輸入電壓為這兩根導線電壓的差值。圖3-7差分平衡電路3.3.1RS-485接口標準RS-485價格比較便宜,能夠很方便地添加到一個系統(tǒng)中,還支持比RS-232更長的距離、更快的速度以及更多的節(jié)點。RS-485、RS-422、RS-232C之間的主要性能指標的比較如表3-2所示。規(guī)
范RS-232CRS-422RS-485最大傳輸距離15m1200m(速率100kbit/s)1200m(速率100kbit/s)最大傳輸速度20kbit/s10Mbit/s(距離12m)10Mbit/s(距離12m)驅(qū)動器最小輸出/V±5±2±1.5驅(qū)動器最大輸出/V±15±10±6接收器敏感度/V±3±0.2±0.2最大驅(qū)動器數(shù)量1132單位負載最大接收器數(shù)量11032單位負載傳輸方式單端差分差分表3-2RS-485、RS-422、RS-232C的主要技術參數(shù)3.3.2RS-485收發(fā)器RS-485收發(fā)器種類較多,如MAXIM公司的MAX485,TI公司的SN75LBC184、SN65LBC184,高速型SN65ALS1176等。它們的引腳是完全兼容的,其中SN65ALS1176主要用于高速應用場合,如PROFIBUS-DP現(xiàn)場總線等。下面僅介紹SN75LBC184。SN75LBC184為具有瞬變電壓抑制的差分收發(fā)器,SN75LBC184為商業(yè)級,其工業(yè)級產(chǎn)品為SN65LBC184。引腳如圖3-8所示。引腳介紹如下:R:接收端。:接收使能,低電平有效。DE:發(fā)送使能,高電平有效。D:發(fā)送端A:差分正輸入端。B:差分負輸入端。VCC:+5V電源。GND:地。SN75LBC184和SN65LBC184具有如下特點。具有瞬變電壓抑制能力,能防雷電和抗靜電放電沖擊;限斜率驅(qū)動器,使電磁干擾減到最小,并能減少傳輸線終端不匹配引起的反射;總線上可掛接64個收發(fā)器;接收器輸入端開路故障保護;具有熱關斷保護;低禁止電源電流,最大300μA;引腳與SN75176兼容。3.3.3應用電路在圖3-9中,RS-485收發(fā)器可為SN75LBC184、SN65LBC184、MAX485等。當P10為低電平時,接收數(shù)據(jù);當P10為高電平時,發(fā)送數(shù)據(jù)。如果采用RS-485組成總線拓撲結(jié)構(gòu)的分布式測控系統(tǒng),在雙絞線終端應接120Ω的終端電阻。圖3-9RS-485應用電路3.3.4RS-485網(wǎng)絡互聯(lián)利用RS-485接口可以使一個或者多個信號發(fā)送器與接收器互聯(lián),在多臺計算機或帶微控制器的設備之間實現(xiàn)遠距離數(shù)據(jù)通信,形成分布式測控網(wǎng)絡系統(tǒng)。1.RS-485的半雙工通信方式在大多數(shù)應用條件下,RS-485的端口連接都采用半雙工通信方式。有多個驅(qū)動器和接收器共享一條信號通路。圖3-10為RS-485端口半雙工連接的電路圖。其中RS-485差動總線收發(fā)器采用SN75LBC184。圖3-10中的兩個120Ω電阻是作為總線的終端電阻存在的。當終端電阻等于電纜的特征阻抗時,可以削弱甚至消除信號的反射。特征阻抗是導線的特征參數(shù),它的數(shù)值隨著導線的直徑、在電纜中與其他導線的相對距離以及導線的絕緣類型而變化。特征阻抗值與導線的長度無關,一般雙絞線的特征阻抗為100~150Ω。RS-485的驅(qū)動器必須能驅(qū)動32個單位負載加上一個60Ω的并聯(lián)終端電阻,總的負載,包括驅(qū)動器、接收器和終端電阻,不低于54Ω。圖中兩個120Ω電阻的并聯(lián)值為60Ω,32個單位負載中接收器的輸入阻抗會使得總負載略微降低;而驅(qū)動器的輸出與導線的串聯(lián)阻抗又會使總負載增大。最終需要滿足不低于54Ω的要求。還應該注意的是,在一個半雙工連接中,在同一時間內(nèi)只能有一個驅(qū)動器工作。如果發(fā)生兩個或多個驅(qū)動器同時啟用,一個企圖使總線上呈現(xiàn)邏輯1,另一個企圖使總線上呈現(xiàn)邏輯0,則會發(fā)生總線競爭,在某些元件上就會產(chǎn)生大電流。因此所有RS-485的接口芯片上都必須包括限流和過熱關閉功能,以便在發(fā)生總線競爭時保護芯片。3.3.4RS-485網(wǎng)絡互聯(lián)1.RS-485的半雙工通信方式圖3-10RS-485端口的半雙工連接3.3.4RS-485網(wǎng)絡互聯(lián)2.RS-485的全雙工連接盡管大多數(shù)RS-485的連接是半雙工的,但是也可以形成全雙工RS-485連接。圖3-11和圖3-12分別表示兩點和多點之間的全雙工RS-485連接。在全雙工連接中信號的發(fā)送和接收方向都有它自己的通路。在全雙工、多節(jié)點連接中,一個節(jié)點可以在一條通路上向所有其他節(jié)點發(fā)送信息,而在另一條通路上接收來自其他節(jié)點的信息。圖3-11兩個RS-485端口的全雙工連接圖3-12多個RS-485端口的全雙工連接兩點之間全雙工連接的通信在發(fā)送和接收上都不會存在問題。但當多個節(jié)點共享信號通路時,需要以某種方式對網(wǎng)絡控制權進行管理。這是在全雙工、半雙工連接中都需要解決的問題。RS-232C和RS-485之間的轉(zhuǎn)換可采用相應的轉(zhuǎn)換模塊。3.4USB接口3.4.1USB接口的定義USB(UniversalSerialBus)即通用串行總線,是連接計算機系統(tǒng)與外部設備的一種串口總線標準,也是一種輸入輸出接口的技術規(guī)范。USB總線接口從USB1.0、USB1.1、USB2.0發(fā)展到現(xiàn)在的最新版本USB3.0,在發(fā)展過程中新舊版本都保持著良好的兼容性,這也是USB迅速發(fā)展成為計算機標準擴展接口的重要原因。目前,Windows系統(tǒng)自帶USB驅(qū)動程序以識別USB外部設備,使用起來非常方便。USB不同版本的主要區(qū)別在最大傳輸速率上,目前最常用的是USB2.0和超高速USB3.0。下面以USB2.0A型插頭為例,介紹其引腳功能。USB2.0A型插座和插頭的示意圖如圖3-13所示。圖3-13USB2.0A型插座和插頭示意圖各引腳功能介紹如下:VBUS:引腳1,為USB接口的+5V電源。D-:引腳2,為USB差分負信號數(shù)據(jù)線。D+:引腳3,為USB差分正信號數(shù)據(jù)線。GND:引腳4,為USB接口的地線。3.4.2USB接口的特點USB接口具有以下特點:①可熱插拔。用戶可以在計算機正常工作的情況下任意連接或斷開USB設備。②高速串行數(shù)據(jù)通信。USB總線接口通信采用的是串行通信的方式,具有高速傳輸能力。其中USB2.0采用的是半雙工通信方式,而USB3.0采用的是全雙工通信方式,大大加快了傳輸速度。③數(shù)據(jù)傳輸模式多樣。USB接口支持4種傳輸模式:控制傳輸、中斷傳輸、同步傳輸和塊傳輸。不同的USB設備可根據(jù)自身特點選擇不同的傳輸模式。④連接靈活。一個USB控制器理論上可以連接多達127個外設。3.4.3USB接口的應用隨著計算機技術的不斷發(fā)展,新的計算機外設大量涌現(xiàn),USB接口以其顯著的優(yōu)勢迅速在計算機接口領域占據(jù)了主導地位。目前USB接口已成為臺式機、筆記本電腦、平板電腦的標準接口,并且越來越多的外部設備采用了USB接口,例如鼠標、鍵盤、打印機、數(shù)字電視、U盤、移動硬盤、手機、數(shù)據(jù)采集卡等。3.5Modbus通信協(xié)議3.5.1概述Modbus協(xié)議是應用于PLC或其他控制器上的一種通用語言。通過此協(xié)議,控制器之間、控制器通過網(wǎng)絡(如以太網(wǎng))和其他設備之間可以實現(xiàn)串行通信。該協(xié)議已經(jīng)成為通用工業(yè)標準。采用Modbus協(xié)議,不同廠商生產(chǎn)的控制設備可以互連成工業(yè)網(wǎng)絡,實現(xiàn)集中監(jiān)控。此協(xié)議定義了一個控制器能識別使用的消息結(jié)構(gòu),而不管它們是經(jīng)過何種網(wǎng)絡進行通信的。它描述了控制器請求訪問其他設備的過程,如何響應來自其他設備的請求,以及怎樣偵測錯誤并記錄。它制定了消息域格式和內(nèi)容的公共格式。3.5.1概述標準的Modbus接口使用RS-232C兼容串行接口,它定義了連接器的引腳、電纜、信號位、傳輸波特率、奇偶校驗??刂破髂苤苯踊蛲ㄟ^調(diào)制解調(diào)器組網(wǎng)??刂破魍ㄐ攀褂弥?從技術,即僅某一設備(主設備)能主動傳輸(查詢),其他設備(從設備)根據(jù)主設備查詢提供的數(shù)據(jù)作出響應。典型的主設備有:主機和可編程儀表。典型的從設備:可編程控制器。主設備可單獨和從設備通信,也能以廣播方式和所有從設備通信。如果單獨通信,從設備返回一消息作為響應,如果是以廣播方式查詢的,則不作任何響應。Modbus協(xié)議建立了主設備查詢的格式:設備(或廣播)地址、功能代碼、所有要發(fā)送的數(shù)據(jù)、一個錯誤檢測域。從設備響應消息也由Modbus協(xié)議構(gòu)成,包括確認要動作的域、任何要返回的數(shù)據(jù)和一個錯誤檢測域。如果在消息接收過程中發(fā)生一錯誤,或從設備不能執(zhí)行其命令,從設備將建立一錯誤消息并把它作為響應發(fā)送出去。1.Modbus網(wǎng)絡上傳輸3.5.1概述在其他網(wǎng)絡上,控制器使用“對等”技術通信,任何控制器都能初始化和其他控制器的通信。這樣在單獨的通信過程中,控制器既可作為主設備也可作為從設備。提供的多個內(nèi)部通道可允許同時發(fā)生的傳輸進程。在消息級,Modbus協(xié)議仍提供了主-從原則,盡管網(wǎng)絡通信方法是“對等”的。如果一個控制器發(fā)送一消息,它只是作為主設備,并期望從從設備得到響應。同樣,當控制器接收到一消息,它將建立一從設備響應格式并返回給發(fā)送的控制器。2.其他類型網(wǎng)絡上傳輸3.查詢-響應周期(1)查詢查詢消息中的功能代碼告知被選中的從設備要執(zhí)行何種功能。數(shù)據(jù)段包含了從設備要執(zhí)行功能的任何附加信息。例如功能代碼03是要求從設備讀保持寄存器并返回它們的內(nèi)容。數(shù)據(jù)段必須包含要告知從設備的信息:從何種寄存器開始讀及要讀的寄存器數(shù)量。錯誤檢測域為從設備提供了一種驗證消息內(nèi)容是否正確的方法。(2)響應如果從設備產(chǎn)生一正常的響應,在響應消息中的功能代碼是在查詢消息中的功能代碼的響應。數(shù)據(jù)段包括了從設備收集的數(shù)據(jù),像寄存器值或狀態(tài)。如果有錯誤發(fā)生,功能代碼將被修改以用于指出響應消息是錯誤的,同時數(shù)據(jù)段包含了描述此錯誤信息的代碼。錯誤檢測域允許主設備確認消息內(nèi)容是否可用。3.5.2兩種傳輸方式控制器能設置為兩種傳輸模式(ASCII或RTU)中的任何一種在標準的Modbus網(wǎng)絡通信。用戶選擇想要的模式,包括串口通信參數(shù)(波特率、校驗方式等),在配置每個控制器的時候,在一個Modbus網(wǎng)絡上的所有設備都必須選擇相同的傳輸模式和串口參數(shù)。ASCII模式如圖3-14所示,RTU模式如圖3-15所示。圖3-14ASCII模式圖3-15RTU模式所選的ASCII或RTU方式僅適用于標準的Modbus網(wǎng)絡,它定義了在這些網(wǎng)絡上連續(xù)傳輸?shù)南⒍蔚拿恳晃?,以及決定怎樣將信息打包成消息域和如何解碼。在其他網(wǎng)絡上(如MAP和ModbusPlus),Modbus消息被轉(zhuǎn)成與串行傳輸無關的幀。3.5.3Modbus消息幀兩種傳輸模式中(ASCII或RTU),傳輸設備可以將Modbus消息轉(zhuǎn)為有起點和終點的幀,這就允許接收的設備在消息起始處開始工作,讀地址分配信息,判斷哪一個設備被選中(廣播方式則傳給所有設備),判知何時信息已完成。部分的消息也能偵測到并且能將錯誤設置為返回結(jié)果。使用ASCII模式,消息以冒號“:”字符(ASCII碼3AH)開始,以回車換行符(ASCII碼0DH,0AH)結(jié)束。其他域可以使用的傳輸字符是十六進制的0~9,A~F。網(wǎng)絡上的設備不斷偵測“:”字符,當有一個冒號接收到時,每個設備都解碼下個域(地址域)來判斷是否是發(fā)給自己的。消息中字符間發(fā)送的時間間隔最長不能超過1s,否則接收的設備將認為傳輸錯誤。一個典型消息幀如圖3-16所示。1.ASCII幀圖3-16ASCII消息幀3.5.3Modbus消息幀使用RTU模式,消息發(fā)送至少要以3.5個字符時間的停頓間隔開始。在網(wǎng)絡波特率下設置多個字符時間(比如圖3-15中的T1-T2-T3-T4),這是最容易實現(xiàn)的。傳輸?shù)牡谝粋€域是設備地址,可以使用的傳輸字符是十六進制的0~9,A~F。網(wǎng)絡設備不斷偵測網(wǎng)絡總線,包括停頓間隔時間。當?shù)谝粋€域(地址域)接收到,每個設備都進行解碼以判斷是否是發(fā)給自己的。在最后一個傳輸字符之后,一個至少3.5個字符時間的停頓標注了消息的結(jié)束,一個新的消息可在此停頓后開始。整個消息幀必須作為一連續(xù)的流傳輸。如果在幀完成之前有超過1.5個字符的停頓時間,接收設備將刷新不完整的消息并假定下一字節(jié)是一個新消息的地址域。同樣地,如果一個新消息在小于3.5個字符時間內(nèi)接著前一個消息開始,接收的設備將認為它是前一消息的延續(xù)。這將導致一個錯誤,因為在最后的CRC域的值不可能是正確的。一個典型的消息幀如圖3-17所示。2.RTU幀圖3-17RTU消息幀3.5.3Modbus消息幀消息幀的地址域包含兩個字符(ASCII)或8bit(RTU)。允許的從設備地址是0~247(十進制)。單個從設備的地址范圍是1~247。主設備通過將從設備的地址放入消息中的地址域來選通從設備。當從設備發(fā)送響應消息時,它把自己的地址放入響應的地址域中,以便主設備知道是哪一個設備作出的響應。地址0是用作廣播地址,以使所有的從設備都能識別。當Modubs協(xié)議用于更高級的網(wǎng)絡時,廣播可能不允許或以其他方式代替。3.地址域4.功能域消息幀中的功能代碼域包含了兩個字符(ASCII)或8bit(RTU)。允許的代碼范圍是十進制的1~255。當然,有些代碼是適用于所有控制器的,有些只適用于某種控制器,還有些保留以備后用。當消息從主設備發(fā)往從設備時,功能代碼域?qū)⒏嬷獜脑O備需要執(zhí)行哪些動作。例如去讀取輸入的開關狀態(tài),讀一組寄存器的數(shù)據(jù)內(nèi)容,讀從設備的診斷狀態(tài),允許調(diào)入、記錄、校驗在從設備中的程序等。當從設備響應時,它使用功能代碼域來指示是正常響應(無誤)還是有某種錯誤發(fā)生(稱作異常響應)。對正常響應,從設備僅響應相應的功能代碼。對異常響應,從設備返回一個在正常功能代碼的最高位置1的代碼。3.5.3Modbus消息幀數(shù)據(jù)域是由兩位十六進制數(shù)構(gòu)成的,范圍為00H~FFH。根據(jù)網(wǎng)絡傳輸模式,這可以是由一對ASCII字符組成或由一RTU字符組成。主設備發(fā)給從設備消息的數(shù)據(jù)域包含附加的信息:從設備必須采用該信息執(zhí)行由功能代碼所定義的動作。這包括了像不連續(xù)的寄存器地址,要處理項目的數(shù)量,域中實際數(shù)據(jù)字節(jié)數(shù)。5.數(shù)據(jù)域6.錯誤檢測域標準的Modbus網(wǎng)絡有兩種錯誤檢測方法,錯誤檢測域的內(nèi)容與所選的傳輸模式有關。(1)ASCII當選用ASCII模式作字符幀,錯誤檢測域包含兩個ASCII字符。這是使用LRC(縱向冗余檢測)方法對消息內(nèi)容計算得出的,不包括開始的冒號符及回車換行符。LRC字符附加在回車換行符前面。(2)RTU當選用RTU模式作字符幀,錯誤檢測域包含一16bit值(用兩個8位的字符來實現(xiàn))。錯誤檢測域的內(nèi)容是通過對消息內(nèi)容進行循環(huán)冗余檢測方法得出的。CRC域附加在消息的最后,添加時先是低字節(jié)然后是高字節(jié)。故CRC的高位字節(jié)是發(fā)送消息的最后一個字節(jié)。3.5.3Modbus消息幀當消息在標準的Modbus系列網(wǎng)絡上傳輸時,每個字符或字節(jié)以如下方式發(fā)送(從左到右):最低有效位…最高有效位使用ASCII字符幀時,位順序如圖3-18所示。7.字符的連續(xù)傳輸有奇偶校驗無奇偶校驗使用RTU字符幀時,位順序如圖3-19所示。有奇偶校驗無奇偶校驗3.5.4錯誤檢測方法標準的Modbus串行網(wǎng)絡采用兩種錯誤檢測方法。奇偶校驗對每個字符都可用,幀檢測(LRC或CRC)應用于整個消息。它們都是在消息發(fā)送前由主設備產(chǎn)生的,從設備在接收過程中檢測每個字符和整個消息幀。退出傳輸前用戶要給主設備配置一預先定義的超時時間間隔,這個時間間隔要足夠長,以使任何從設備都能作為正常響應。如果從設備檢測到一傳輸錯誤,消息將不會接收,也不會向主設備作出響應。這樣超時事件將觸發(fā)主設備來處理錯誤。發(fā)往不存在的從設備的消息也會產(chǎn)生超時。1.奇偶校驗用戶可以配置控制器是奇校驗還是偶校驗,或無校驗。這將決定每個字符中的奇偶校驗位是如何設置的。2.LRC檢測使用ASCII模式,消息包括了一基于LRC方法的錯誤檢測域。LRC域檢測消息域中除開始的冒號及結(jié)束的回車換行符以外的內(nèi)容。LRC域包含一個8位二進制數(shù)的字節(jié)。LRC值由傳輸設備來計算并放到消息幀中,接收設備在接收消息的過程中計算LRC,并將它和接收到消息中LRC域中的值比較,如果兩值不相等,說明有錯誤。LRC方法是將消息中的8bit的字節(jié)連續(xù)累加,不考慮進位。3.5.4錯誤檢測方法3.CRC檢測使用RTU模式,消息包括了一基于CRC方法的錯誤檢測域。CRC域檢測整個消息的內(nèi)容。CRC域是兩個字節(jié),包含一個16位的二進制數(shù)。它由傳輸設備計算后加入到消息中。接收設備重新計算收到消息的CRC,并與接收到的CRC域中的值比較,如果兩值不同,則有錯誤。CRC是先調(diào)入一數(shù)值是全“1”的16位寄存器,然后調(diào)用一過程將消息中連續(xù)的8bit字節(jié)和當前寄存器中的值進行處理。僅每個字符中的8bit數(shù)據(jù)對CRC有效,起始位和停止位以及奇偶校驗位均無效。CRC產(chǎn)生過程中,每個8bit字符都單獨和寄存器內(nèi)容相或(OR),結(jié)果向最低有效位方向移動,最高有效位以0填充。LSB被提取出來檢測,如果LSB為1,寄存器單獨和預置的值相或,如果LSB為0,則不進行。整個過程要重復8次。在最后一位(第8位)完成后,下一個8bit字節(jié)又單獨和寄存器的當前值相或。最終寄存器中的值,是消息中所有的字節(jié)都執(zhí)行之后的CRC值。CRC添加到消息中時,低字節(jié)先加入,然后加入高字節(jié)。3.5.5Modbus的編程方法由RTU模式消息幀格式可以看出,在完整的一幀消息開始傳輸時,必須和上一幀消息之間至少有3.5個字符時間的間隔,這樣接收方在接收時才能將該幀作為一個新的數(shù)據(jù)幀接收。另外,在本數(shù)據(jù)幀進行傳輸時,幀中傳輸?shù)拿總€字符之間必須不能超過1.5個字符時間的間隔,否則,本幀將被視為無效幀,但接收方將繼續(xù)等待和判斷下一次3.5個字符的時間間隔之后出現(xiàn)的新一幀并進行相應的處理。因此,在編程時首先要考慮1.5個字符時間和3.5個字符時間的設定和判斷。3.5.5Modbus的編程方法在RTU模式中,1個字符時間是指按照用戶設定的波特率傳輸一個字節(jié)所需要的時間。例如,當傳輸波特率為2400bit/s時,1個字符時間為:11×1/2400=4583μs同樣,可得出1.5個字符時間和3.5個字符時間分別為:11×1.5/2400=6875μs11×3.5/2400=16041μs為了節(jié)省定時器,在設定這兩個時間段時可以使用同一個定時器,定時時間取為1.5個字符時間和3.5個字符時間的最大公約數(shù)即0.5個字符時間,同時設定兩個計數(shù)器變量為m和n,用戶可以在需要開始啟動時間判斷時將m和n清零。而在定時器的中斷服務程序中,只需要對m和n分別做加一運算,并判斷是否累加到3和7。當m=3時,說明1.5個字符時間已到,此時可以將1.5個字符時間已到標志T15FLG置成01H,并將m重新清零;當n=7時,說明3.5個字符時間已到,此時將3.5個字符時間已到標志T35FLG置成01H,并將n重新清零。波特率從1200bit/s至19200bit/s,定時器定時時間均采用此方法計算而得。當波特率為38400bit/s時,Modbus通信協(xié)議推薦此時1個字符時間為500μs,即定時器定時時間為250μs。1.字符時間的設定3.5.5Modbus的編程方法在實現(xiàn)Modbus通信時,設每個字節(jié)的一幀信息需要11位,其中1位起始位、8位數(shù)據(jù)位、2位停止位、無校驗位。通過串行口的中斷接收數(shù)據(jù),中斷服務程序每次只接收并處理一字節(jié)數(shù)據(jù),并啟動定時器實現(xiàn)時序判斷。在接收新一幀數(shù)據(jù)時,接收完第一個字節(jié)之后,置一幀標志FLAG為0AAH,表明當前存在一有效幀正在接收,在接收該幀的過程中,一旦出現(xiàn)時序不對,則將幀標志FLAG置成55H,表明當前存在的幀為無效幀。其后,接收到本幀的剩余字節(jié)仍然放入接收緩沖區(qū),但標志FLAG不再改變,直至接收到3.5字符時間間隔后的新一幀數(shù)據(jù)的第一個字節(jié),主程序即可根據(jù)FLAG標志判斷當前是否有有效幀需要處理。Modbus數(shù)據(jù)串行口接收中斷服務程序如圖3-20所示。2.數(shù)據(jù)幀接收的編程方法3.5.5Modbus的編程方法2.數(shù)據(jù)幀接收的編程方法圖3-20Modbus數(shù)據(jù)串行口接收中斷服務程序結(jié)構(gòu)框圖3.6PMM2000電力網(wǎng)絡儀表及其應用3.6.1PMM2000電力網(wǎng)絡儀表Modbus-RTU通信協(xié)議PMM2000電力網(wǎng)絡儀表Modbus-RTU通信協(xié)議詳細介紹如下。1.串口初始化參數(shù)串行通信方式:2位停止位、8位數(shù)據(jù)位、無校驗位,RS-485ModbusRTU。波特率支持:1200bit/s,2400bit/s,4800bit/s,9600bit/s,19200bit/s, 38400bit/s。默認地址:0x06。波特率:9600bit/s。3.6.1
PMM2000電力網(wǎng)絡儀表Modbus-RTU通信協(xié)議2.開關量輸入功能號:0x02(1)發(fā)送數(shù)據(jù)開關量輸入0X02命令發(fā)送數(shù)據(jù)格式如表3-3所示。表3-3開關量輸入0X02命令發(fā)送數(shù)據(jù)格式(2)正常響應數(shù)據(jù)開關量輸入0X02命令正常響應數(shù)據(jù)格式如表3-4所示。表3-4開關量輸入0X02命令正常響應數(shù)據(jù)格式注:如果N/8余數(shù)為0,則N*=N/8,否則N*=N/8+1。3.6.1
PMM2000電力網(wǎng)絡儀表Modbus-RTU通信協(xié)議2.開關量輸入例子:○1讀取當前開關量輸入狀態(tài)(DI1~DI4)共四路,其中DI1=“1”,DI4=“1”(閉合);DI2,DI3=“0”(斷開)。(讀到的數(shù)據(jù)應為09H,即“00001001”)主機發(fā)送數(shù)據(jù):060200000004CRCCRC從機正常響應數(shù)據(jù):06020109CRCCRC上傳數(shù)據(jù)中:09H為DI1~DI4狀態(tài);Bit0~Bite3對應DI1~DI4。○2讀取當前開關量輸入狀態(tài)(DI1~DI16)共十六路,其中DI1=“1”,DI4=“1”(閉合);DI8=“1”(閉合);DI9=“1”,DI11=“1”(閉合),其余斷開。(讀到的數(shù)據(jù)應為05H89H,即“0000010110001001”)主機發(fā)送數(shù)據(jù):06020000000CCRCCRC從機正常響應數(shù)據(jù):0602020589CRCCRC上傳數(shù)據(jù)中:89H為DI1~DI8狀態(tài);Bit0~Bite7對應DI1~DI8;
05H為DI9~DI12狀態(tài);Bit0~Bite3對應DI9~DI12。3.6.1
PMM2000電力網(wǎng)絡儀表Modbus-RTU通信協(xié)議3.繼電器控制繼電器地址從0x0000開始。功能號:0x05輸出值:“FF00”為控制繼電器“合”;
“0000”為控制繼電器“分”。(1)發(fā)送數(shù)據(jù)繼電器輸出0X05命令發(fā)送數(shù)據(jù)格式如表3-5所示。表3-5繼電器輸出0X05命令發(fā)送數(shù)據(jù)格式3.6.1PMM2000電力網(wǎng)絡儀表Modbus-RTU通信協(xié)議3.繼電器控制(2)正常響應數(shù)據(jù)繼電器輸出0X05命令正常響應數(shù)據(jù)格式如表3-6所示。表3-6繼電器輸出0X05命令正常響應數(shù)據(jù)格式例子:繼電器2當前狀態(tài)為“開”狀態(tài),控制繼電器2輸出“合”狀態(tài)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- “腎藏精主水”探討補腎活血復方調(diào)節(jié)p38MAPK-NF-κB-AQP4心衰水液代謝障礙機制研究
- 改性生物炭對含酚廢水的吸附性能研究
- 結(jié)構(gòu)拉縫粘彈性阻尼器的減震性能研究
- 《宋代教育》翻譯實踐報告(第六章節(jié)選一)
- 頜面部影像技術課件
- 企業(yè)培訓溝通課件
- 《智能網(wǎng)聯(lián)整車綜合測試》課件-車道保持控制場景測試評價
- 2025年湖北省中考招生考試數(shù)學真題試卷(真題+答案)
- 《電子產(chǎn)品制造技術》課件-第6章 電子產(chǎn)品的調(diào)試與檢驗
- 預檢分診知識課件
- 酒店入住登記表
- 中藥泡洗技術-2
- 大學體育:輪滑教案
- 馬太效應課件完整版
- 馬克思主義原著選讀課程
- 保障性租賃住房申請表
- 2023年中智總部及直屬單位個高管職位公開招聘筆試參考題庫附帶答案詳解
- iqc培訓教材基礎課件
- 中等職業(yè)學校藝術課程標準(2020年版)(word精排版)
- GB/T 15435-1995環(huán)境空氣二氧化氮的測定Saltzman法
- GB/T 1355-2021小麥粉
評論
0/150
提交評論