顯示具有 IIoT 標籤的文章。 顯示所有文章
顯示具有 IIoT 標籤的文章。 顯示所有文章

2018年12月26日 星期三

什麼是 Modbus?


什麼是 Modbus?
  • Modbus是由Modicon公司(現為Schneider的 一個品牌)在1978年提出的
  • Modbus由於易學易用,耗費系統資源極低, 是工業控制領域的一個通訊標準  
  • Modbus 被廣泛應用在 PLC 與 多功能電表等 設備中  
  • 1998年Schneider又推出了TCP/IP乙太網路的 ModbusTCP,使 MODBUS 應用更推向網際 網路。
  • Modbus 是一種需求-回應協定,採用主從架構實作而成。 
  • Modbus允許多個 (大約240個) 裝置連接在同一個網路上進行通訊
    • 舉個例子,一個由測量溫度和濕度的裝置,並且將結果傳送給電腦。在資料採集與監視控制系統(SCADA)中,Modbus通常用來連接監控電腦和遠端終端控制系統(RTU)

網路特性
  • 按電氣特性可分為RS-232、RS-422與RS485。  
  • 按照資料流程的方向可分成兩種基本的傳送方 式:全雙工、半雙工。  
  • RS-485 半雙工通訊由於只需要兩條通訊線, 且通訊距離長,被廣泛用在分散式的控制網路 架構。

MODBUS 協定
  • Modbus協定是主(Master)/僕(Slave)通訊協定; 網路上的每個 Slave 設備必須有唯一的位址(範圍從1到247)
  • 主從架構的通訊作業會成雙成對的出現,必須有個裝置啟動需求並等候回應,也就是說,這個啟動需求的裝置 (主要裝置) 會負責啟動每一次互動。
  • Slave 位址用於定址 Slave 設備,由Master發 起; 位址0用於廣播模式,不需要回應;  
  • 傳輸模式 依照編碼方式可以分為 RTU 與 ASCII模式


MODBUS RTU 模式




  • 使用 16 進制編碼  
  • 使用兩個 Byte 的 CRC 校驗碼  
  • 相較於 ASCII 節省一半的通訊量  
  • CRC校驗遠較LRC運算嚴謹
    • CRC為校驗和的一種,是兩個位元組資料流採用二進制除法(沒有進位,使用XOR來代替減法)相除所得到的餘數。

MODBUS ASCII 模式


  • 封包必須以“ : ”開始,以“CR -LF”結束;  
  • 資料用十六進位 ASCII 碼值表示;  
  • 使用LRC進行錯誤校驗;
    • 將所有位元組相加,捨去進位,然後取2的補數,即為 LRC 的演算法
  • 相較於 RTU 模式可以直接由文字通訊程式進行傳輸

MODBUS TCP
  • IANA (Internet Assigned Numbers Authority:網際網路編號分配管理機構)已為 Modbus協議指配TCP / UDP埠502  
  • Modbus TCP 資料封包包含了MBAP標頭,功能碼和資料三部分
  • MBAP Modbus Application Protocol

Modbus 模擬情境:
  • 像是一個部隊,有一位連長(Master),跟一群大頭兵(slave)
    (Master只有一個.其他都是slave)  
  • 操練中,只有連長(Master)可以說話,大頭兵(slave)不能主動說話,但可以回應。
    (資料的傳送必須由Master開始,slave只是回應。)  
  • 連長可傳送資訊給大頭兵,也可以問大頭兵的狀況
     (Master可以送給slave資料,或是詢問slave的資料) 
  • 大頭兵人多,每個人都有兵籍編號
    (slave 是以站號來區別)  
  • 連長在連集合場講話,或是大頭兵回話,不管連長或大頭兵都聽得到。
    (Master 或Slave 通訊時,每一站都收得到。)

reference:

2018年12月23日 星期日

什麼是 RS485?

什麼是 RS-422?

RS-422 (EIA RS-422-A 標準) 為過去用於 Apple Macintosh 電腦的序列連結。 與 RS-232 參照至接地的非平衡式訊號相反,RS-422 為使用差動電子訊號, 差動傳輸使用 2 個通道,分別用於傳輸與接收訊號,因此相較於 RS-232,其抗擾性更佳,通訊距離也更長。 這些優勢讓 RS-422 更適合用於工業級應用。


什麼是 RS485?

RS-485 (EIA-485 標準) 為 RS-422 的改良版本,從原本的 10 組裝置提高至 32 組裝置,並定義必要的電子特性,以在最大負載下保持適當的訊號電壓。

RS232 連線長度只能50~100 呎(17~33m),一個 Comm Port只能接一台,為因應工廠控制需要,於1993年訂定 RS485

  • 抗雜訊能力提高
  • 距離可達4000 呎 (1333 米) 
  • 同時可控制32個設備
  • 優點 
    1. 比RS232便宜,只使用一個+5V電源, 比RS232用的 ±5V方便 
    2. 網路功能:可長距離、多儀器連結,使用高阻抗的接收器,可接達256 台
    3. 長距離: 1333m
    4. 快速:可達10Mbits/s
      (RS232只能達 ~20Kbits/s)
  • RS485接線法,基本上只有三條線 TRA, TRB, SG 可只使用2線, 須加終端電阻, 每台機器須設不同的位址
  • 終端電阻加在電腦端及最遠一台機器的一端,需搭配導線的阻抗值 (必須大於75ohm),一般而言AWG24線使用(100~150ohm即可)
  • 由於RS232還是PC現有的介面,所以常使用RS232到RS485的轉接器,以便利用RS232控制RS485儀器

什麼是 RS232C?


什麼是 RS232C

RS-232 (ANSI/EIA-232 標準) 為過去 IBM 相容電腦的序列連結功能, 可用以連接滑鼠、印表機或數據機,或用於工業級儀器控制等許多功能。
  • 電腦中最常用的介面之一。 
  • RS-232 : Recommend Standard number 232. 
  • C 表示最新的版本. 
  • 大多電腦都是符合RS-232C一部份標準. 
  • 連線長度只能50~100 呎(17~33m)
  • 一個 Comm Port只能接一台
  • 全功能的 RS-232C 規定使用25-pin D 接頭,使用其中的 22 pins. 
  • 對電腦通訊,大多是不必要的,因此大多數PC只使用一個9pin的公接頭。 
  • 其實,只要使用其中3根pin便可達到全雙工 (full duplex)通訊的目的,一根Send,一根 receive,一根ground
    (Full duplex:送資料與接收資料同時進行,亦即是 雙向的溝通bi-directional)

RS232定義兩種接頭形式,接腳訊號定義不同
  • DCE (data communication Equipment) 
    • 母接頭
    • 資料通訊設備→遠端儀器
  • DTE (data terminal equipment) 
    • 公接頭
    • 資料終端設備→電腦
  • DTE 與DCE可直接一對一連接,
  • 同類間連接需要用Null modem Cable,交換 send 與 receive腳位 

資料如何傳輸 - start bit
  • RS232是屬於序列式的(serial)傳輸資料,資料是一個bit一個bit傳
  • 一般狀態,TD 與RD是在高電位,一端的TD 是接到另端的RD,當有資料要傳時,一 端的TD會先被拉低電位,而另一端的 RD接收到低電位開始接收資料,這個動作叫做送起始位元( Start bit)

接收資料-data bits
  • Start bit後,兩邊的設備開始準備接收資料 
  • 為了溝通,兩邊必須有相同的傳輸速度(baud rate),及有多少 data bits要送
    (Baud rate: 每秒多少bit的傳輸動作)
  • 確定好傳輸速度,接著規定要傳多少bit, 一般是傳8或7 bit,以8 bit最常用。LSB最小位元先送。

資料檢查 Parity bit 
  • 檢查序列資料是否傳得正確?
  • 奇偶檢查 
  • Data bit送完,會再送一個parity bit,讓接收端檢查資料是否正確
  • 有以下幾種: 
    • none:不送parity bit (最常用) 
    • Odd:當data bit有偶數個1時 → 送1補成奇數個 
    • Even :當data bit有奇數個1時 → 送1補成偶數個 
    • Mark:永遠送1做parity bit 
    • Space :永遠送0做parity bit

Stop Bit
  • 停止位元: 將電位拉高,宣告資料已經傳 輸完畢。 
  • 最常用的傳輸格式常記為 8-N-1 8: 
    • 8 data bit 
    • N: No parity bit 
    • 1: 1 start/stop bit
      (設備較慢時用 2bits)

防止資料遺失
  • 使用Handshaking(握手 ) 
    • 可不用 
    • 很多方式
      • 利用某一根線的高低電位 ( 如DTR),當一端準備收資料時先拉高某一線電位,另一端接收到訊息後,才開始送資料
      • 利用TD, RD線,傳送特殊的byte 當成準備接收資料的代號
  • 使用中斷(interrupt)或詢問(polling) 
    • Interrupt:有事件發生時執行 
    • Polling:以軟體不斷檢查資料
  • 使用Acknowledgement(確認 ) 
    • 收到資料時,送回一個特殊byte確認資料收到
  • 錯誤檢查(error checking) 送checksum byte給接收端檢查資料正確性,有問題,通知重送資料