第 3 章 Modbus Slave: 開放 Win-GRAF PAC 與 圖控 /HMI 軟體來相互溝通 在第 2 章的 Demo01 專案中, 說明了如何讀 / 寫 PAC 中的系統時間 ( 即 PAC_Time 程式 ) 與一個閃爍功能 ( 即 LD1 程式 ), 此章節將提供 Demo01 專案中的變數, 讓圖控軟體 ( 例如 : 泓格科技的 InduSoft ) 或 HMI 軟體來進行存取 Win-GRAF 軟體提供了兩種方式, 可開放 PAC 中的資料, 一種是啟用 Win-GRAF PAC 為 Modbus TCP Slave, 另一種是啟用 Win-GRAF PAC 為 Modbus RTU Slave ( 見 3.2 節, 需先完成 3.1 節內的 Modbus Slave 設定 ), 請依照以下內容來進行設定 3.1 啟用 Win-GRAF PAC 為 Modbus TCP Slave 1. 滑鼠點選工具列上的 Open Fieldbus Configuration 按鈕來開啟 I/O Drivers 視窗 2. 點選 I/O Drivers 視窗左側的 Insert Configuration 按鈕, 再點選 MODBUS Slave 並點選 OK 來啟用一個 Modbus TCP Slave Win-GRAF 使用手冊, 1. 07 版, 2019 年 1 月 ICP DAS 3-1
3. 點選左側的 Insert Master/Port 按鈕, 並設定 Slave number ( 此例為 1 ), 再點選 OK 4. 點選左側的 Insert Slave/Data Block 按鈕, 來開啟 MODBUS Slave Request 設定視窗 使用小技巧 : 1. 按 F1 鍵, 可查看詳細的設定說明 2. 若新增兩個以上的 Server - 設定, 可填寫 Server ID ( 字串, 例如 : `SVR1 ) 以方便識別 5. 在 Description 填入識別的資訊並 點選 "Input Registers" 選項 可供 Modbus Master 讀取資料 : 選項 Input Bits Input Registers 資料型態 BOOL BYTE, INT, DINT, REAL, 等 可供 Modbus Master 寫入資料 : 選項 Coil Bits Holding Registers 資料型態 ( 資料型態, 可參考附錄 A) BOOL BYTE, INT, DINT, REAL, 等 填入識別資訊建議設定 Base address 為 1 並設定 Nb items 為大於 200 的數值 Win-GRAF 使用手冊, 1. 07 版, 2019 年 1 月 ICP DAS 3-2
6. 如上圖, 建議將 Base address 設定為 1, 而 Nb items 表示一個 Data block 最多可提供多少個變數資料, 若 Modbus Master ( 例如, 圖控軟體 ) 要求的資料位址大於此數值 ( 此例設定為 2000 ), 則 Modbus Slave ( 即,Win-GRAF PAC) 將不回應 7. 將變數區的變數 ( 此例為 PAC_xxx, 資料型態 : DINT) 以滑鼠拖曳的方式, 拉到 Symbol 區塊 8. 滑鼠雙擊 Offset 欄位並填入數值後, 按 Enter 完成設定 注意 : (1) Offset 的值是由 0 開始, 而 Offset 的值加 1 (Base address) 才是該變數的 Modbus 位址 (2) 若選用的是 32-bit 或以上的資料型態 ( 此例為 DINT), 則需佔用 2 個 Modbus 位址如下表, 0, 2, 4, 6,. ( 更多關於資料型態, 可參考附錄 A ) 使用小技巧 : Enter 滑鼠點選任一欄位再按 Ctrl+A 全選, 點選左側的 Iterate Property 按鈕, 開啟設定視窗 Ctrl+A Win-GRAF 使用手冊, 1. 07 版, 2019 年 1 月 ICP DAS 3-3
Name 維持設定 % 將 From 填入 0 By 填入 2, 再點選 OK ( 若 Name 修改為 %%, 此例會顯示為 00, 22, 44, 66, 88, 1010, 1212, 您可依實際需求來修改, 並查看 Results 的顯示結果 ) 9. 滑鼠點選 Storage 來選取整欄, 再按 Enter 鍵顯示下拉選單, 接著選擇 DWORD (Low High) 再按 Enter 鍵完成設定 ( 若資料為 16-bit 或以下, 不需設定 Storage 項目 ) 您可展開這個 Data Block, 如圖, Offset 的值加 1 (Base address) 為該變數的 Modbus 位址 Win-GRAF 使用手冊, 1. 07 版, 2019 年 1 月 ICP DAS 3-4
10. 接著, 需再新增一個 Data Block 用來供 Modbus Master 讀取 Boolean 資料 設定方式與步驟 4 ~ 8 類似 : (1) 滑鼠點選 Server - 再點選左側的 Insert Slave/Data Block 按鈕, 來開啟設定視窗 (2) 設定視窗中, 填入識別資料後, 選擇供讀取的選項 Input Bits 設定 Base address 為 1 設定 Nb items 為 2000 填入識別資訊可供 Modbus Master 讀取資料 : 選項資料型態 Input Bits BOOL BYTE, INT, DINT, Input Registers REAL, 等 ( 資料型態, 可參考附錄 A) (3) 將變數區的 BOOL 變數 LED1 LED2 拖曳到 Symbol 區域並設定其 Offset 為 0 1 您已完成 Modbus Slave 設定, 接下來請重新編譯並下載程式到 Win-GRAF PAC 中 Win-GRAF 使用手冊, 1. 07 版, 2019 年 1 月 ICP DAS 3-5
11. 點選功能表 Project > Build All Projects 重新編譯程式 ( 參考 2.3.4 節 ) 出現 No error detected 表示編譯成功 此編譯訊息為版本資訊, 可忽略 12. 滑鼠右鍵點選專案名稱 ( 即,Demo01), 再選擇 Communication Parameters 設定 PAC IP ( 例如 : 192.168.71.19:502), 點選功能表 Project > On Line ( 或 ) 來建立連線, 並將專案下載到 Win-GRAF PAC 中 ( 參考 2.3.5 節 ) InduSoft SCADA / HMI IP: 192.168.71.xxx Mask: 255.255.255.0 Modbus TCP Master IP: 192.168.71.19 Port: 502 Slave number = 1 WP-5xx8-CE7 Win-GRAF PAC WP-8xx8 Modbus TCP Slave ( 您可參考 P1-1, 來查看所有支援的 PAC 型號 ) 如此之後 HMI 或 SCADA 軟體便可使用 Modbus TCP protocol 來存取以上所列的 有設定 Modbus 位址的 Win-GRAF 變數 Win-GRAF 使用手冊, 1. 07 版, 2019 年 1 月 ICP DAS 3-6
3.2 啟用 Win-GRAF PAC 為 Modbus RTU Slave 開始前 您必須先完成 3.1 節 中的內容 設定好需開放的 Modbus Slave 資料 啟用 Win-GRAF PAC 為 Modbus RTU Slave 的方式為 在程式中加入 MBSLAVERTU 或 MBSLAVERTUEX 功能方塊 請 依照下列說明來完成設定 加入 MBSLAVERTU 功能方塊 1. 在 LD1 視窗中 滑鼠點選需加入功能方塊的位置 再點選左側的 Insert FB.. 按鈕 3 2 1 2. 滑鼠雙擊此功能方塊 並選取 MBSLAVERTU 再按 OK 使用小技巧: 按鍵盤 MBSL 可快速 跳到接近的名稱 Win-GRAF 使用手冊, 1. 07 版, 2019 年 1 月 ICP DAS 3-7
3. 於 MBSLAVERTU 功能方塊, 滑鼠雙擊 PORT 左側的區域並輸入字串 'COM2:9600,N,8,1' ( 表示 使用 Win-GRAF PAC 的 COM2 與 Modbus Master 進行溝通 ), 再點選 完成設定 使用小技巧 : 在功能方塊上按 F1 可查詢詳細說明 4. 滑鼠雙擊 SLV 左側的區域並輸入 1 ( 即 3.1 節 - 步驟 3 設定的值 ), 再點選完成設定 您已完成 MBSLAVERTU 功能方塊的設定, 接下來請重新編譯並下載程式到 Win-GRAF PAC 中 ( 參考 2.3.4 節,2.3.5 節 ) 注意 : 同一台 PAC 內可啟用多個 Modbus RTU Slave ( 建議不超過 16 Port), 方法為新增多個 MBSLAVERTU 功能方塊, 並輸入不同的 Port 編號 Win-GRAF 使用手冊, 1. 07 版, 2019 年 1 月 ICP DAS 3-8
SCADA / HMI Win-GRAF PAC COM2: RS-232 9600,N,8,1 InduSoft Slave number = 1 WP-5xx8-CE7 Modbus RTU Master WP-8xx8 Modbus RTU Slave (您可參考 P1-1 來查看所有支援的 PAC 型號) 加入 MBSLAVERTUEX 功能方塊 若您在 I/O Drivers 中建立多個 Server - 設定 (建議只使用一個) 則需使用 MBSLAVERTUEX 功能方塊 1. 您可依照上述步驟 1 ~ 4 來建立一個 MBSLAVERTUEX 功能方塊 若您想變更先前已建立的功能 方塊 可用滑鼠雙擊 MBSLAVERTU 並重新選取為 MBSLAVERTUEX 再點選 OK 函式 (Function) 功能方塊 (Function Block) Win-GRAF 使用手冊, 1. 07 版, 2019 年 1 月 ICP DAS 3-9
2. MBSLAVERTUEX 多了一個 SrvID 設定項目, 滑鼠雙擊 SrvID 左側再填入所需的 Server ID ( 字串格式, 例如 Svr1 ) 注意 : 若使用 MBSLAVERTU 功能方塊, 只會參考第一個 Server Slave number.. 設定 若使用 MBSLAVERTUEX 功能方塊, 則會參考具有相同 Server ID 的 Server Slave 設定 使用小技巧 : 在功能方塊上按 F1 可查詢詳細說明 您已完成 MBSLAVERTUEX 功能方塊的設定, 接下來請重新編譯程式並下載到 Win-GRAF PAC 中 ( 參考 2.3.4 節,2.3.5 節 ) Win-GRAF 使用手冊, 1. 07 版, 2019 年 1 月 ICP DAS 3-10