网络通信知识简介
第一部分:TCP/IP 基礎知識
第二部分:TCP/IP 協議系統
第三部分:TCP/IP連網
第四部分:工具
第五部分:Internet
第六部分:運行中的TCP
?
?
?
?
OSI 模型
OSI模型,即開放式通信系統互聯參考模型(Open System Interconnection),這是一種事實上被TCP/IP 4層模型淘汰的協議。在當今世界上沒有大規模使用,但對于理解網絡協議有幫助。OSI是一種理論下的模型,而TCP/IP已被廣泛使用,成為網絡互聯事實上的標準。
?
OSI將計算機網絡體系結構(architecture)劃分為以下七層:
物理層: 將數據轉換為可通過物理介質傳送的電子信號相當于
郵局中的搬運工人
數據鏈路層: 決定訪問網絡介質的方式
在此層將數據分幀,并處理流控制。本層 指定拓撲結構并提供硬件尋 址。相當于郵局中的裝拆箱工人
網絡層: 使用權數據路由經過大型網絡 相當于郵局中的排序工人
傳輸層: 提供終端到終端的可靠連接 相當于公司中跑郵局的送信職員
會話層: 允許用戶使用簡單易記的名稱建立連接 相當于公司中收寄信、寫信封與拆信封的秘書
表示層: 協商數據交換格式 相當公司中簡報老板、替老板寫信的助理
應用層: 用戶的應用程序和網絡之間的接口老板
網絡分層對比
?
?
工業協議的再總結
狹義上,可類似看成 profinet=profibus+ethernet,profinet 是一種新的以太網通訊系統,是由西門子公司和 profibus 用戶協會開發。 profinet 具有多制造商產品之間的通訊能力,自動化和工程模式,并針對分布式智能自動化系統進行了優化。其應用結果能夠大大節省配置和調試費用。 profinet 系統集成了基于 profibus 的系統,提供了對現有系統投資的保護。它也可以集成其它系統。參考文章
Ethernet/IP:
是一個面向工業自動化應用的工業應用層協議。它建立在標準UDP/IP與TCP/IP協議之上,利用固定的以太網硬件和軟件,為配置、訪問和控制工業自動化設備定義了一個應用層協議西蒙公司開發。
PROFINET:
由PROFIBUS國際組織(PROFIBUS International,PI)推出,是新一代基于工業以太網技術的自動化總線標準。作為一項戰略性的技術創新,PROFINET為自動化通信領域提供了一個完整的網絡解決方案,囊括了諸如實時以太網、運動控制、分布式自動化、故障安全以及網絡安全等當前自動化領域的熱點話題,并且,作為跨供應商的技術,可以完全兼容工業以太網和現有的現場總線(如PROFIBUS)技術,保護現有投資。
PROFINET是適用于不同需求的完整解決方案,其功能包括8個主要的模塊,依次為實時通信、分布式現場設備、運動控制、分布式自動化、網絡安裝、IT標準和信息安全、故障安全和過程自動化。
MODBUS/TCP:
是簡單的、中立廠商的用于管理和控制自動化設備的MODBUS系列通訊協議的派生產品。顯而易見,它覆蓋了使用TCP/IP協議的 “Intranet”和“Internet”環境中MODBUS 報文的用途。協議的最通用用途是為諸如PLC’s,I/O模塊,以及連接其它簡單域總線或I/O模塊的網關服務的。
MODBUS/TCP協議是作為一種(實際的)自動化標準發行的。既然MODBUS已經廣為人知,該規范只將別處沒有收錄的少量信息列入其中。然而,本規范力圖闡明MODBUS中哪種功能對于普通自動化設備的互用性有價值,哪些部分是MODBUS作為可編程的協議交替用于PLC’s的“多余部分”。
它通過將配套報文類型“一致性等級”,區別那些普遍適用的和可選的,特別是那些適用于特殊設備如PLC’s的報文。
雖然這些工業以太網都是國際標準,但是指的是IEC 61784里的標準,但是這些工業以太網不都是標準的以太網。即這些工業以太網并不都是符合IEEE802.3U的標準,這當中只有Modbus-TCP和EtherNet/IP是符合IEEE802.3U的,只有符合IEEE802.3U標準的,才能與IT和以太網將來的發展相兼容。而不符合IEEE802.3U標準的,基本上可以講不是以太網,它們都對以太網進行了修改,或者是硬件或者是軟件,已經不是以太網了。
各種工業以太網的區別:
其實主要就是協議的區別,其中最主要的還是應用層協議的區別,我們知道,按照OSI的參考模型,網絡被劃分為7層。
a. Modbus TCP和EtherNet/IP的區別主要是應用層不相同,ModbusTCP的應用層采用Modbus協議,而EtherNet/IP采用CIP協議,這兩種工業以太網的數據鏈路層采用的是CSMA/CD,因此是標準的以太網,另外,這兩種工業以太網的網絡層和傳輸層采用TCP/IP協議族。還有一個區別是,Modbus協議中迄今沒有協議來完成功能安全、高精度同步和運功控制等,而EtherNet/IP有CIPSafety、CIP Sync和CIP Motion來完成上述功能,所以才有Schneider加入ODVA,成為ODVA的核心成員來推廣EtherNet/IP。由于這兩種網絡都是標準的TCP/IP以太網,所以所有標準以太網節點都可以接入這兩種網絡。
b. PROFINET分為原來劃分為v1,v2,v3,現在一般稱為ProfiNetCBA、ProfiNet IO和ProfiNet IRT.也就是通過以太網來實現對等通訊、實時控制和運動控制。v1采用TCP/IP協議,采用標準的以太網,而V2和V3不采用tcp/ip協議,這兩種都繞過tcp/ip協議,采用另外的網絡層和傳輸層協議,開發ProfiNet采用開發人員人員認為tcp/ip協議增加了數據在網絡中的傳輸延遲,其實這是一種誤解,據美國密歇根大學的教授研究后認為數據在TCP/IP中的傳輸延遲很小,他們研究得出數據在經過TCP,IP棧時延遲只有不到100微秒,如果采用UDP/IP時就更小,同時他們研究也得出數據在不同應用層延時比較大,不同的協議延遲不一樣,但是相差不是很大,從200us-800us不等,他們經過實驗后認為以太網的基礎設施(指交換機、網卡等)和TCP/IP協議并不是影響工業以太網實時性的主要原因,而認為應用層協議才是主要原因。所以密歇根大學的教授認為繞開TCP/IP協議沒有絲毫的意義,反而由于缺少了TCP/IP協議,使得設備也就缺少了IT功能,與其它現場總線沒有區別。 ProfiNet V3就更特別了,它不完全采用標準以太網的數據鏈路層,有一不時間采用以太網的數據鏈路層(CSMA/CD),而另外一部分時間采用自己的數據鏈路層,通過一個高精度的時間來完成。所以ProfiNet V3也就不是標準的以太網了,也就給Profinet v3帶來如下的問題:不能采用標準的交換機、不能采用標準的以太網芯片、與企業網相連可能會出現問題,與標準以太網相連還要特殊的網關、添加和刪除一個節點都需要重新組態網絡和重新啟動網絡、至今沒有千兆網絡,還有最重要的是,當標準以太網以后發展了后,它不能與標準以太網相兼容,不具有將來以太網所應具有的功能。
作者對工業協議的看法:
我認為Ethernet/IP和ProfiNet這兩種工業以太網都適合各個行業,并不象heidai講的應用的行業不一樣。首先這兩種工業以太網都用于傳輸非實時數據,還可傳輸實時數據,即可以用于離散控制,也可用于過程控制(當然現在還不能用于本安應用)。其次,這兩種工業以太網都可用于網絡功能安全傳輸,Ethernet/IP有CIP Safety協議,而ProfiNet有Profisafe協議,還有在運動控制方面ProfiNet有 ProfiNet IRT,而EtherNet/IP則有CIP Safety,二者都可以用于中高端的運動控制。最后兩者都有基于IEEE1588的高精度時鐘同步。而Modbus TCP,EtherCat和PowerLink,都只能完成部分控制任務,如Modbus TCP一般只作常規IO實時和非實時數據。而EtherCat和PowerLink則更象是為運動控制而開發的,這二者好像沒有功能安全、在PLC和DCS控制方面也沒有得到大自動化公司的支持,況且這兩者又對以太網進行修改,一個在軟件,另一個在軟件和硬件方面都進行了修改,都不能兼容標準的以太網設備,個人認為這樣做得不償失,為滿足運動控制而不能兼容已有的標準的以太網設備而開發的工業以太網并不是以太網,與其說是工業以太網還不如說是另一種現場總線。
我認為工業以太網的競爭將會在Ethernet/IP和ProfiNet間進行,而其它工業以太網都是這兩者的陪襯,將會逐漸退出市場。
EtherNet/IP以后將由羅克韋爾自動化、Omron、施耐德和思科公司來推動,而ProfiNet將由業界老大西門子公司帶領一些小公司去奮斗,由國內PLC廠商中的老二、老三和老五對老大,不知誰將引導未來。
中國用戶和制造商應選擇Ethernet/IP還是ProfiNet,各人的看法有所不同,不過我認為firstrazor所說的沒錯,由于ProfiNet采用了專門的芯片、網卡、交換機等以太網基礎設施,雖然ProfiNet應用層協議是公開的,但這些芯片卻是專用,國內的制造商要想開發符合ProfiNet標準的設備,確要依賴于這些芯片,受制于提供芯片的公司,也就是西門子公司,因此可以將ProfiNet并不是完全開放的。而相反,Ethernet/IP不論是在軟件還是硬件上都是標準和開放的,國內的工業以太網制造商還是選擇EtherNet/IP為好,至于最終用戶的選擇,當然是從可靠性、價格、兼容性和可替換性方面考慮,可靠性方面,二者沒有明顯區別,在其它方面Ethernet/IP具有明顯的優勢。
參考文章
以太網
上述 profinet Ethernet/Ip 是工業以太網,屬于以太網。以太網是局域網的一種。
以太網(Ethernet)指的是由 Xerox(施樂)公司創建并由Xerox、Intel和 DEC公司聯合開發的基帶局域網規范,通用的以太網標準于1980年9月30日出臺,是當今現有局域網采用的最通用的通信協議標準。
通常 數據鏈路層遵從CSMA/CD協議通信,那么 它就可以被稱為以太網。
ethernet采用無源的介質,按廣播方式傳播信息。它規定了 物理層和 數據鏈路層協議,規定了物理層和數據鏈路層的接口以及數據鏈路層與更高層的接口。
?
?
知乎大神關于232、485、Modbus等的總結
RS232,RS485是物理層的協議,定義了各線的針腳功能,連接的物理結構。就好像各國對馬路上行車要求左行或右行一樣,規定大家都照著一個規則走。RJ45是物理接口,俗稱的水晶頭,網口。但并不是要求一定是網絡協議,比如有些設備只用了兩個針腳來連接RS485的兩線。這時候雖然是用RJ45,但走的物理協議是485。MODBUS協議是數據層的協議,打個比方來解釋下和物理層的差別:都是用聲音這種方式來交流,兩人也需要都用同一種語言,聲音是物理層而語言就是數據層。同樣,一種語言可以是聲音也可以是文字,MODBUS也根據在不同物理協議上通訊,可以分成MODBUS-RTU(MODBUS-ASCII)和MODBUS-TCP/IP。串行口本義是包括所有串行通信在內的所有接口,但國內經常用來特指電腦上的9針RS232接口,也就是DB-9。
?
我們先來看接口:
設想直流電源,它的輸出端插座接口有三個管腳,分別是正極、負極和接地極。相應地,負載的插頭也應當有三個管腳與電源側一一對應,這樣才能正確地獲得電能供應。
注意到這里有三個必須滿足的條件:
第一是插頭和插座管腳的形狀、大小和插針直徑及長度必須一一對應,否則無法完成接插操作。這一點規定了插頭組合的物理結構和管腳定義。
第二是電源的輸出電壓值必須滿足載側的需求值,否則無法完成電參量的要求。這一點決定了插頭組合的電平規范。
第三是電源的輸出阻抗與負載的輸入阻抗必須匹配,否則不能實現完善的供電。這一點決定了電源的工作性質。
這三點其實就是電源插頭組合在物理層面上的規范性協議。
再看通信接口。在有關計算機信息交換的ISO(國際標準化組織)OSI模型里,物理層是最底層(第一層),它規定了接口的機械外形、接口管腳定義、接口電平和字節格式。
這里的字節格式,指的是一個字節中有幾個數據位,有幾個起始位/停止位,有幾個奇偶校驗位。一般地,一個字節有8個數據位,1個起始位(停止位),和1個奇偶校驗位。注意:起始位和停止位可以合并。
再看通信接口和通信網絡的工作制問題。
當我們拿手機掛電話時,我們發現通信雙方在通話的同時也可以接聽,這叫做全雙工(雙向工作制);如果說話的時候不能聽,而接聽的時候不能說,但任何一方都具有說和聽的能力,也即對講機的通話型式,這叫做半雙工。
?
RS422接口和RS232接口是全雙工接口,而RS485則是半雙工接口。
對于半雙工接口,顯然需要有通信的發起者,所以RS485接口和網絡一定具有主站和若干從站,并且從站的數量也有規定。一般地,從站的數量是32個。
RS485主站與從站的關系問題,看似只是通信工作制的不同,其本質是通信各方對通信總線控制權的合理分配。
我們再看總線連接問題。
我們還是以電源為例。我們可以從電源引出一條主干線,然后再并聯若干個支路并分別送到若干個負載。只要滿足電源的功率要求,顯然這是可行的。
如果我們用同樣的方法來引出RS485的通信線,是否可行呢?答案是否定的。我們必須從通信主站先引一條線到第一個通信子站,再從第一子站引第二條線到第二子站,如此循環直到最后一個子站。在通信線的終端,還要配一個終端電阻。在這條通信線路上,任何一點如果發生斷路,則后續的通信鏈路上的通信也就斷了。這種接線方法形象地被稱為菊花瓣連接方法,或者鏈形連接方法,而電源的接線方法則被稱為星形連接方法。
?
?
我們發現,從電氣接線來看,鏈路是并聯的。但從通信來看,鏈路是菊花瓣的,屬于一個接一個的有秩序的連接。
現在我們可以總結一下了:RS485的總線網絡接線方式必須是鏈形菊花瓣的接線方式,并且屬于半雙工的通信方式;RS232是點到點的接線方式,屬于全雙工通信。不管是RS232接口,還是RS485接口,它們必須符合物理層的通信規約。
再看MODBUS-RTU通信協議:
有了物理層通信接口,是不是就能通信呢?答案是否定的。物理層通信接口只是使得通信雙方具備通信條件而已。但若雙方說的話誰都聽不懂,或者通信雙方的說話方式及語法結構不相符,顯然這也無法通信。
在OSI模型中,物理層之上是數據鏈路層。MODBUS-RTU協議就是數據鏈路層協議,只要通信雙方都采用了MODBUS-RTU協議,則能確保通信語言是雙方都能聽得懂的語句格式。
注意這里的詞匯“語句”。物理層定義的是字節,相當于語言中的字,數據鏈路層則把字節組織成語句,也即幀。幀規定了通信雙方所用語句的語法結構。
MODBUS也是主從式的。和物理層的總線控制是一樣的,這里的主從關系,就是對通信總線的控制權做了規定。主站先下達命令,占用總線;接著把總線空置,交給從站去寫回應碼;從站完成后,再把總線還給主站。
現在我們來看看ISO的HDLC規定的幀結構,也即通信語句的語法結構,如下:
?
在MODBUS通信協議下,不同的命令功能碼它的幀結構不盡相同。對于讀寄存器命令,MODBUS的主站幀結構是:2個字節的地址碼,1個字節的功能碼,2個字節的數據地址碼,2個字節的CRC校驗碼;MODBUS的從站回應幀結構是:2個字節的功能碼,1個字節的回應區字節總數,N個字節的回應數據,2個字節的CRC校驗碼。
雖然物理層協議與數據鏈路層協議不同,但數據鏈路層協議的執行必須建立在通信雙方物理層連接已經符合要求,并且已經可以無障礙地實現信息交互的基礎上。
這個規則在ISO/OSI模型的七層協議中必須完全徹底地得到執行。在ISO/OSI模型中,通信雙方的低層次協議必須為上層協議建立透明的無故障的連接和信息交換關系。也就是說,各層次的上下級關系必須是絕對的。
從數據鏈路層再往上,就是網絡層了。它的任務是構成現場總線的信息交換網。
網絡層的功能包括:把通信幀打包成數據分組,然后把數據分組發送給對方。
由于通信雙方的網絡結構可能不同,于是對于同種網就需要用網橋來連接,而異種網則需要用網關來連接。
網絡之間的信道可能有多條。數據分組在發送時有多種路徑可以選擇。負責選擇路徑的元件稱為路由器。路由器不但決定了真實的數據交換網絡路徑,還可以構建虛擬的網絡路徑,還要決定數據分組的發送秩序。因此,路由器是網絡層中最復雜最關鍵的裝備。
OSI模型中,把物理層+數據鏈路層+網絡層合并稱為現場總線,其通信接口就是8針的RJ45水晶頭。顯見,RJ45與RS232/RS485/RA422完全不是一回事。
網絡層的數據分組是數據幀的組合。通俗地說,數據分組是一篇短文,或者是一頁待傳遞的數據組合單元。
網絡層在發送數據分組時,其路由問題和接收組合問題見下圖:
?
?
我們看到網絡層在通信時先由路由器確定路由路徑,然后把分組發送到對方。對方接收到分組后,把分組按前后秩序組合起來,再解包為實際文檔。
指的注意的是:由于網絡層有了路由器,因此網絡層支持星形網絡結構。
現在我們來關注一下ISO/OSI的7層模型,如下:
?
值得注意的是:RS232/RS485/RS422通信接口以及它們的定義,是非常明確的。包括管腳的電平,管腳的功能定義,以及接口在信息發送和接收信息時的數據流時序關系,這些都必須準確和嚴格,否則就無法執行信息交換。
當PLC與某電力儀表交換信息,并且這些電力儀表符合RS485/MODBUS-RTU通信規范。我們要做什么事呢?
第一,我們按菊花瓣結構的通信鏈路要求去接線,將PLC的通信接口與N個電力儀表接口連接起來。最后一個電力儀表的末端要配100歐的終端電阻。
第二,我們把這N個電力儀表按地址遞增的原則確定各自的地址,例如01H、02H、1FH等等。這里的H表示是16進制,1F表示16+15=31。
第三,我們在PLC編程軟件中設定好電力儀表規定的通信速率
第四,我們在PLC編程軟件中按電力儀表的數據區地址碼設定好MODBUS通信碼,以及各個子站的循環關系。
注意,這里的MODBUS通信碼滿足PLC的IEC61131-3編程模塊要求,一般的PLC梯形圖沒有此功能。梯形圖滿足IEC 61131-1要求,但不滿足IEC 61131-3要求。
第五,在PLC的內存中開辟專用數據區,存放從電力儀表讀取到并處理后的信息,以便讓更高層的總站來讀取信息。此數據區有一個名稱,叫做數據點表,有時也簡稱通信協議。
最后,當然就是開機測試了。其中的內容很多,限于篇幅不再介紹。
我們來看一個在RS485網絡上用MODBUS-RTU讀取數據的例子,如下:
某電力儀表,地址是01H。在電力儀表內存第2000的位置上,放置了三相電流和三相電壓等6個數據,每個數據占用兩個字節,共12個字節。
此電力儀表的通信速率是9600bps。什么意思呢?bps表示一個0/1,也就是比特,這說明每秒鐘這條總線上可以發送9600個比特。我們已經知道一個字節有8個數據位,1個起始位,1個奇偶校驗位,剛好10位或者10個比特,所以,如果電力儀表的通信速率是9600bps,那么1秒鐘就可以發送:
9600/10=960個字節。
我們還知道,主站的讀數據的幀結構(下行幀)中,有1個字節的地址,1個字節的功能碼,2個字節的內存地址,2個字節的數據數量,2個字節的CRC校驗碼,總共有8個字節,所以主站發送讀數據MODBUS通信幀占用的時間是:8X10/9600=8.33毫秒。
對于本例,我們知道MODBUS-RUT讀數據的命令是0X03H,也即03命令。注意這里的寫法:0X是字頭,中間的03是命令,最后的H表示是16進制。
具體通信幀的是:01 03 07 D0 00 06 C5 45,其中0X01H是地址,0X03H是命令,0X07D0H是內存地址2000,0X0006H表示讀取連續6個字,也即內存中的電流和電壓參數,0XC545H是01 03 07 D0 00 06的CRC校驗碼。
那么電力儀表的回應幀(上行幀)的幀結構是:1個字節的地址,1個字節的功能碼,1個字節的數據區字節數,12個字節的數據,2個字節的CRC校驗碼,總共17個字節,占用時間是:17X10/9600=17.7毫秒。
具體的儀表回應通信幀是:01 03 0C 00 64 0064 0064 00 DC 00 DC 00 DC D6 F5,其中0X01H和0X03H的意義同前,0X0CH表示上傳數據區有12個字節,0X0064H表示A相電流為100A,后面的兩組為B相和C相電流,均為100A,0X00DCH表示A相電壓為220V,其后兩組為B相和C相電壓,均為220V,最后0XD6F5H為CRC校驗碼。
從主站發起下行通信幀,再等待10毫秒讓從站回應,再接收到從站發還的上行通信幀,總歷時為:
如果有31個相同的儀表等待主站一一訪問,則主站從訪問第一個儀表開始,到最后回應完畢,總歷時:
這里的1.12秒就是在通信速率為9600bps下這31臺儀表的讀數據循環周期,且忽略了主站再次發送下行通信幀的等待時間,實際時間會略微再長一些。
相信,看到這里,大家對MODBUS-RTU下的通信幀應當有了較為深刻的認識。
提醒大家:一個字有兩個字節。一般地,字節只能用來表達8個開關量。但對于模擬量,則要用字來表達。例如電流1250A,16進制下是04E2H,要用2個字節才能表達完整。也因此,各種電力儀表中,模擬量都是用字來表達的。
以下是MODBUS的部分常用功能碼,也即命令碼:
?
?
幾個相關的問題解釋一下:
1)有些現場總線,用令牌解決了總線的控制權問題。
大家很容易想到,如果從站有緊急事項需要主站來服務,可是MODBUS規定了輪詢規則,等到自己的時候,可能會太遲了。于是許多現場總線就發明了一個特殊的東西,叫做令牌。令牌很短,只有一個字節,它可以很快地在總線上傳遞。令牌在各站點中傳遞,誰拿到令牌,誰就是主站,就可以發布信息。如果本站沒有事情需要發布,就把令牌交給下一個站點,由此解決了總線占用問題。
2)當鏈路發生斷路時,為了避免出現通信中斷,可采用雙主站措施。雙主站(PLC的兩個主站RS485接口)之間用握手線連接,平時主用RS485開通,而輔助RS485浮空。浮空的RS485雖然接在總線上,但它處于高阻態等效于完全脫離。當發生斷路時,從站確認后立即開通通信,從鏈路兩頭進行連接通信。
有時,還采取環狀通信措施。限于篇幅,不做介紹。
3)MODBUS可工作在網絡層,此時協議變為MODBUS-TCP,但還是符合主從結構。
4)MODBUS協議是美國莫迪康公司發明的,該公司的宗旨是:MODBUS協議為不收費的公開協議。后來莫迪康公司被施耐德公司收購了,施耐德公司繼承了莫迪康公司的做法,MODBUS是不收費的公開協議。既然MODBUS已經成為施耐德的協議,施耐德把它延伸到網絡層,構建了網絡層的MODBUS-TCP協議,以及內部專用的MODBUS-PLUS協議。限于篇幅,對于這兩個協議的描述此處從略。
5)關于RS232和RS485的區別
學過模電和數電的人都知道差分電路。差分電路具有共模抑制比,能夠消除共模誤差。RS485接口就具有此特征。因此RS232接口的傳輸距離僅為十幾米,而RS485/RS422接口的傳輸距離為1200米。
?
?
?
我們從圖中看到,雖然RS232和RS485接口的外形是一致的,但它們的性能和信息交換模式不同,因此抗干擾能力也不同。
6)當距離很長的時候,RS485接口還可以接入光纖,但需要配備1對光纖轉換器。之所以要1對,是因為其中一只用于電轉光,而第二只則用于光轉電。光纖收發器中間的通信介質就是光纜或者光纖。(注意哦,光纖是光纜的芯線,不要以為是兩種東西)
光纖分為單模和多模。單模的光纖較細,光在傳輸過程中反射較少,因而失真小,其傳輸距離可達15km以上;多模的光纖較粗,光在傳輸過程中反射較多,因而失真大,其傳輸距離為1.5km。
?
?
?
注意這里的f(x)就是除去CRC校驗碼的MODBUS通信幀,除數是CRC16。幀中的CRC是運算后的余數。
主站在發送幀之前,把幀先做CRC計算,再把CRC運算的余數附在幀尾發送給從站。從站接收到幀后,先對幀除去CRC的部分做CRC運算來檢驗是否正確,若不正確,從站要求主站重發。
同理,當從站發送信息給主站時,主站也根據CRC來檢查數據的正確性。若發現錯誤,則要求從站重發。
8)關于MODBUS-RTU、MODBUS-ASC和MODBUS-TCP
如果MODBUS中字節表達數據的方式采取BCD碼,則被稱為MODBUS-RTU;如果MODBUS中字節表達數據的方式采取ASCII碼,則被稱為MODBUS-ASC;如果MODBUS運行在網絡層上,則被稱為MODBUS-TCP。
ASCII碼的內容如下:
?
MODBUS在實際使用中,大多數都采用BCD碼,因此MODBUS-RTU得到廣泛應用。
BCD碼如下:
?
?
總結
- 上一篇: ubuntu-linux 软件安装参考指
- 下一篇: java ajax刷新,javaweb