2013年10月23日 星期三

PLC-你應該要知道Modbus ASCII & RTU的不同

先從ASCII & RTU的格式說起:
傳輸方式,資料位數,同位元檢查,END BIT
MODBUS-ASCII,7,N,2
MODBUS-ASCII,7,E,1
MODBUS-ASCII,7,O,1
MODBUS-ASCII,8,N,2
MODBUS-ASCII,8,E,1
MODBUS-ASCII,8,O,1

MODBUS-RTU,8,N,2
MODBUS-RTU,8,E,1
MODBUS-RTU,8,O,1

你一定注意到ASCII資料位元有7 & 8位元,
RTU 只有8位元。

那該怎麼選,有何差別?

ASCII碼0-127,只代表一個字元,如0,1,A,F 都各是一個字元。
如果要送出3A,就要先送3的ASCII碼(33H=011 0011),
再送A的ASCII碼(41H=100 0001),總共兩個封包。

RTU直接傳送16進制的碼出去,所以8位元,可以發送兩個16進制的字。
如果要送出3A,就要3A(0011 1010),總共一個封包。
  • 所以為什麼RTU只有8位元,因為要同時送兩個16進制碼出去,7位元無法發送兩個16進制的字。
  • 傳送相同的字3A,用ASCII 需要兩個封包,RUT只需要一個封包。
  • ASCII 可以傳送ASCII的字元,RTU只能傳送16進制的字。
一個封包,跟兩個封包的時間差多少?
以115200bps(bits per seconed),每個bit傳送時間約0.0086ms,
每個封包約10bit,所以每個封包約0.08ms。
Modbus-ASCII 每次來回約需要36封包=2.8ms
Modbus-RTU 每次來回約需要18封包=1.4ms+(靜止段約20ms用來判斷資料傳送回畢)

其實用在監控外部裝置,都很快了!

====以下為每個Modbus都找的到說明========================
MODBUS networks 通訊有兩種模式:ASCII(American Standard Code for information
interchange)模式與RTU(Remote Terminal Unit)模式,使用者可於參數P3-02 設定所需
之通訊協定。除了此兩種通訊模式外,此驅動器支援功能(Function) 03H 讀取多筆資料、06H
寫入單筆字元、10H 寫入多筆字元,請參考以下說明。

編碼意義
ASCII 模式:
所謂的ASCII 模式,是資料在傳輸時,使用美國標準通訊交換碼(ASCII),即在兩個站(主站
與從站)之間,若要傳輸數值64H, 則會送出ASCII 碼的36H 信號代表’ 6’,送出ASCII 碼的
34H 信號代表’4’。

RTU模式:
每個8-bits 資料由兩個4-bits 之十六進位字元所組成。若兩站之間要交換數值64H,則直接
傳資料64H。此方式會比ASCII 模式有較好的傳輸效率。

4 則留言:

  1. Modbus-RTU 每次來回約需要18封包=1.4ms+(靜止段約20ms用來判斷資料傳送回畢)
    這樣看來 rtu 慢 ascii 很多。

    回覆刪除
    回覆
    1. 靜止段的關系,除非資料多到超過靜止段

      但一般採用RTU是因為方便,不需要轉成ASCII

      刪除
  2. 老師你好,想請問老師,三菱Q03UDE_PLC用網路線跟三菱人機介面通訊,然後三菱人機介面的RS-485 PORT 連接三台富士變頻器與舞台電流表(ADTEK_CM2-VA),這樣的連接方式可以用甚麼設定方式讓PLC可以撈到RS-485連接的設備的電流資訊嗎?

    回覆刪除
    回覆
    1. 你可以用指令檔來搬移,其他人機叫巨集指令。

      刪除