南樺 電子報 307 出刊日期 | 2017.05.08

使用人機讀取MODBUS RTU資料以 AMENS人機為例

隨著工控領域的發展,通訊是不可或缺的一環,而 Modbus 通訊又是其中的佼佼者,很多控制器、錶頭、設備都是走 Modbus 通訊,那要如何用人機與 Modbus 設備溝通?在此間單做個介紹:


簡介:
在此以 Modbus RTU 為例;通常要讀取資料或寫入資料都要以用送碼方式來達成
詳細收送碼方式,請參照 177 期電子報

以讀取碼為例:
送碼 01,03,00,00,00,01,84,0A
01 表示 MODBUS 站號
03 表示讀取 MODBUS 資料
00,00 表示 MODBUS 位址
00,01 表示 MODBUS 長度(WORD數)
84,0A 表示 MODBUS CRC檢查碼
以上都是 16 進制呈現

Modbus 觀念(依不同fun code會有不同Modbus位址)
位置 0000 為起始位址
依不同 fun code 的起始位置也會跟著不同



以表格呈現 WORD 與 BIT 的讀取與寫入

其中,紅色部分是字串呈現與人機MODBUS位址呈現
以下呈現都是16進制
1. 當不同的 FUNTION CODE 會使人機MODBUS地址不同
2. WORD的FUNCTION CODE 有 03(讀取)/06 (單筆寫入)/10(多筆寫入);人機起始位址40001
3. WORD的FUNCTION CODE 有 04(唯讀);人機起始位址30001
4. BIT 的 FUNCTION CODE 有 01(線圈讀取)/05(線圈單筆寫入)/0F(線圈多筆寫入);人機起始位址 1
5. BIT 的 FUNCTION CODE 有 02(讀取BIT輸入狀態);人機起始位址 10001

舉例:
若 MODBUS RTU 的位址是 1000(16進制),當 FUN CODE 不同時,人機對應的位址也會不同
當 FUN CODE 為 03/06時,MODBUS RTU的人機位址為1000(16進制)先轉成 10 進制,即 4096;
再加上起始位址 40001,所以 FUN CODE(03/06/10)的人機 MODBUS RTU 位值為 44097;
其中 40001 為該 fun code(03/06/10)的起始位址


知道人機位址後,就可以簡單地設值到人機內

先開啟人機軟體

專案名稱: MODBUS RTU 專案_MASTER
位置:存檔完整路徑(可依個人需求設定)
應用名稱: MODBUS RTU 專案_MASTER

人機型號:在此以 7"人譏為例
(可依個人需求設定)

連線種類:直接連線(串口)

裝置/伺服器:
Modicon Corp. / Modicon 984 Device/Slave (RTU)

因為要當Master所以Driver選(對方是Slave)
故選Modicon 984 Device/Slave (RTU)

設定傳輸參數(須與要抓取的設備相同)

速率 / 數據位數 / 校驗 / 結束位數
需與你的 Modbus RTU 設備一致

規劃後後畫面
規劃
數值輸入:
44097(人機位址)=0000H(MODBUS位址)
數值顯示:
34097(人機位址)=0000H(MODBUS位址)
位接點:
4097(人機位址)=0000H(MODBUS位址)
指示燈:
14097(人機位址)=0000H(MODBUS位址)

雖然 MODBUS 位址相同,但是所抓取的資料類型不同,所對應的人機位址就不同

其中,資料類型由FUN CODE決定

FUNCTION CODE:01(線圈讀取)
FUNCTION CODE:05(線圈單筆寫入)
FUNCTION CODE:0F(線圈多筆寫入)
當 modbus 位址 為(0000H)
人機起始位址1
範圍:0001~9999
人機抓取modbus RTU地址範圍(BIT)

FUNCTION CODE:02(讀取取BIT輸入狀態)
當 modbus 位址為(0000H)
人機起始位址10001
範圍:10001~19999



  • 欲訂閱或取消南樺電子報 http://cht.nahua.com.tw/epaper/
  • 關於電子報發送有任何疑問,請連絡 epaper@nahua.com.tw
  • 電子報版權所有,轉載必究,欲轉載請聯絡 mail@nahua.com.tw