国产精品久久久久久麻豆一区/夜鲁鲁鲁夜夜综合视频欧美/欧美性专区/pornuxxx

  • Modbus協議在澀寧蘭SCADA系統中的應用
    趙國輝

    摘要:
      工業控制已進入網絡時代,在如今工控技術和工控產品百家爭鳴的時代,各種不同設備之間的通訊已成為一個系統的關鍵所在。Modbus工業網絡協議就是解決這一問題的一種利器。本文簡單闡述了Modbus協議的基本原理,并結合澀寧蘭輸氣管線SCADA系統中Modbus協議的實際應用,介紹了Modbus應用的一般方法和注意事項。

    主題詞:
    Modbus 幀 ASCII模式 RTU模式 SCADA RS-485

      Modbus 協議是Modicon 公司開發的一種數據通訊協議,通過這個協議,各種不同的設備和網絡可相互進行通訊,由于其具有高度的可操作性和開放性,Modbus 協議已經成為一種通用性很強的工業控制網絡通訊協議。許多不同品牌、不同廠家的設備之間都可通過該協議交換數據。澀寧蘭輸氣管線SCADA系統應用了多種通訊和網絡協議,使各種設備有機的結合在一起,成為一個完整的三級集散控制系統,Modbus 協議是其中一種重要的協議。

    Modbus 協議簡介
    一、 Modbus的通訊過程
      Modbus協議定義了一種信息結構,這種信息結構可以被所有支持該協議的各種設備在通訊時認可和使用。它描述了控制器向其他設備發出查詢的過程以及其他設備如何進行應答,以及錯誤的檢測和報告。
      Modbus協議采用master-slave(主-從)的技術。在一個Modbus總線上,只能有一個master,而slave最多可有247個,地址為1——247。進行通訊時,只有master才可以發起一個“查詢”,充當slave的設備不斷的檢測,當檢測到有自己地址的“查詢”時,就會向master發出一個“回應”,或者根據master的命令采取相應的動作。當master發出的“查詢”是一個“廣播”(地址碼為0)時,所有的slave都執行master的命令,但不向master發出回應信息。

    二、 Modbus的幀
      在網絡通信中,數據都是以“包”(Packet)或 “幀”(Frame)的形式進行傳輸,“包”和“幀”含義基本相同,均指通信中的一個數據塊。對于某種具體通信網絡,一般使用術語“幀”。在Modbus協議中,引用了“幀”(Frame)作為通訊過程中的數據單位,Modbus中的“幀”由以下幾部分組成:
    1、標志位:表示一個“幀”的開始。
    2、地址位:表示該“幀”的信息是發給哪一個slave的,或是由哪個slave發出的信息。
    3、功能代碼:表示指令,在Modbus協議中,有一系列代碼表示不同的指令,例如:代碼“3”表示讀數據。
    4、數據位:是對功能代碼的進一步補充與說明,說明指令的具體內容。
    5、校驗位:CRC或LRC校驗。
    6、停止位:表示該“幀”的結束。
    每部分的位數和表示方法依采取的模式不同而略有區別,下文將詳細論述。

    三、 Modbus的兩種通訊模式
      在Modbus協議中,依數據在傳輸的過程中的具體形式不同,分為兩種模式:ASCII 和 RTU,采用哪種模式由用戶自己根據需要進行選擇。在選擇時,同一Modbus網絡中的所有設備的模式選擇必須一致。

    1、 ASCII模式
      ASCII(American Standard Code for Information Interchange),即美國信息交換標準代碼。在這種模式中,每個8比特的字節被轉換兩個ASCII字符進行傳送。這種模式的主要優點是傳送的每相鄰的兩字節之間允許最大的時間間隔是1秒。


    表一:ASCII模式的幀格式


    在此幀中:
     幀是以一個冒號(:)來做為開始的標志;以CRLF(carriage return-line feed即“回車-換行”)為結束標志;
     代碼系統采用十六進制,ASCII字符0...9,A...F
     每個ASCII字符由一個16進制的字符組成;
     每個字節中包括:1個開始位;7個數據位(低位先傳送);1個奇偶校驗位(無奇偶校驗時為0位);1個(有奇偶校驗時)或2位(無奇偶校驗時)停止位;
     ASCII模式采用LRC(縱向冗余校驗)檢錯方法。

    2、 RTU模式
      RTU(Remote Terminal Unit),即遠程終端單元,這種模式的特點是信息中每個8比特的字節被轉換為兩個4比特的十六進制字符來傳輸。它的優點是更大的數據密度使它在相同的波特率下比ASCII模式有更強的數據吞吐能力。

    表二:RTU模式的幀格式


    在此幀中:
      該幀是以一個相當于至少3.5個字節傳輸時間的空閑做為開始和結束的標志;整個幀的所有數據必須連續傳送,如果中間間隔超過1.5個字符傳輸時間,接收設備會認為下一個字符為一個新幀的開始,即為一個地址碼;
     代碼系統采用8位二進制,十六進制數0...9,A...F;
     信息的每個8比特字符由兩個16進制的字符組成;
     每個字節中包括:一個開始位;8個數據位(低位先傳送);1個奇偶校驗位(無奇偶校驗時為0);1個(有奇偶校驗時)或2位(無奇偶校驗時)停止位;
     ASCII模式采用CRC(循環冗余校驗)檢錯方法。

    四、 Modbus與其他網絡的通訊
      Modbus網絡可以通過設備內置的部件或網絡適配器與其他兼容Modbus的網絡進行通訊。在其他網絡上,Modbus協議的有關信息將被植入該網絡的幀或數據包結構中,以完成信息的轉換,這種轉換還可以解譯節點的地址、路徑和檢錯方法等。
      在其它網絡上,控制器使用對等(peer-to-peer)技術通信,故任何控制器都能發起一個和其它控制器的通信。這樣在單獨的通信過程中,控制器既可作為主設備(master)也可作為從設備(slave)。多個內部通道可允許多個傳輸進程同時進行。
      在傳送消息時,盡管網絡通信方法是“對等”的方式,但Modbus協議仍然遵循“主—從”原則。當一個控制器發送一個消息,并期望從其他設備得到回應時,它是做為“主”設備,。同樣,當該控制器接收到一消息,它將建立一個“回應”格式的信息返回給發送的控制器。這時,他充當的是“從”設備

    Modbus 協議在澀寧蘭SCADA系統中的應用

    應用原理
      在澀寧蘭SCADA系統中,Modbus充當的是連接流量計算機和PLC的數據橋梁。流量計算機從現場儀表采集相應的數據,計算出瞬時流量、累計流量等流量參數,再通過Modbus將必要的數據傳至PLC中,經PLC進行必要的處理后,顯示在上位機上供生產運行之用。流程如下圖:

    圖1:流量參數的數據流向示意圖

    調試過程

    一、 接線
      澀寧蘭SCADA系統的PLC采用的是A-B公司的contrologix,其遠程I/O機架上有一塊通訊模板,叫做MCM(Modbus Conmminication Model),即Modbus通訊模板。MCM模板在Modbus和PLC的背板之間充當一個網橋,同時也是Modbus總線的Master。若干臺流量計算機與MCM模板按照RS-485接口標準,通過DB9串口連接器連接成一個Modbus網絡,接線圖如下(以兩臺流量計算機為例,多臺可順次并聯):

    圖2:MCM模板與流量計算機通訊接線圖


    注意事項:
    1、 MCM模板提供的是RJ45的接口,可利用廠家提供的RJ45-- DB9轉接線,也可以直接用RJ45接線,方法為:RJ45玻璃體從前直視,自左向右依次為1-8,與DB9接頭1-8端一一對應。本工程采用后者,好處是減少接線次數,提高通訊的穩定性。
    2、 通訊介質采用超五類屏蔽雙絞線,主要是考慮RJ45接頭的連接。我們在實驗時曾用過一般導線,對通訊效果并無影響。可見Modbus對通訊介質并無特殊要求。
    3、 連線應盡量短,夠用即可,不僅看起來整齊,而且對于不同設備間的通訊,盡量短的線總是穩定性要好的多。
    4、 導線一定要保證完好無損,接頭一定連接緊固,要反復測試確認。因為在調試過程中,任何一點的虛接都可能造成通訊的失敗,而且極難查找原因。一個可靠的硬件連接可省去調試過程中很多不必要的故障和故障查找的步驟。
    5、 RS-485總線通訊在連線時只需遵循一個原則,那就是收對發,發對收。確認此連接無誤,若其他沒有問題,一定會成功。

    二、 設備組態
      在此網絡中,MCM模板充當Master,流量計算機為slave。對所用的MCM模板的端口設置如表三,流量計算機相應端口設置如表四:

    表三:MCM模板的端口設置


    表四:流量計算機的端口設置

      其他相關設置項根據實際需要進行設置。
      設備設置時一定要注意根據不同設備的不同要求,兩端的設置相對應的項一定要相同。

    三、 調試中出現的問題及解決方法:
    1、 在利用Modbus通訊的過程中,遇到這樣一個問題,即浮點數的傳輸問題。因為一般浮點數都是32位,而Modbus總線中只能傳輸最多16位的數據。
      解決方法:可以利用兩個整形數傳送一個浮點數(即將一個32位的二進制數分割成兩個16位的二進制數),傳送完以后,再將兩個整形數整合為一個浮點數。

    2、 在調試過程中,當數據傳輸至PLC中后,最初發現數據并不是原來的數值,而是一些莫名其妙的數據,要么大的離譜,要么是負的多位數。

      經過反復的嘗試,終于發現問題所在,原來,在Modbus總線中,數據傳輸時是低位字節先傳送,傳送過來后如果不進行交換,二進制的數值排列是反向的,即原來的低字節在高位,高字節在低位,所以得到的數據和原數據相差甚遠。只要將數據的高低位字節進行交換(swap位置1<

     
     
    網站首頁  |  關于我們  |  聯系我們  |  廣告服務  |  版權隱私  |  友情鏈接  |  站點導航