Modbus主機設置
Modbus從機站的Modbus主機通信設置和請求表可使用WindLDR“功能設置”進行設置。 進行從機站通信與用戶程序執行同步,并且按照請求表中指定的請求編號順序在END處理中處理通信數據。 當指定了請求執行內部繼電器時,只有當相應的請求執行內部繼電器打開時才執行請求。 當沒有指定請求執行內部繼電器時,連續執行所有請求。
使用WindLDR設置Modbus主機通信用于Modbus ASCII或Modbus RTU。 由于這些設置與用戶程序相關,所以必須在更改設置后將用戶程序下載到MicroSmart。
1. 在WindLDR菜單欄中選擇設置>功能設置>通信端口。此時出現通信端口的“功能設置”對話。
2. 在“端口2”的“通信模式”下拉列表中,選擇Modbus ASCII主機或Modbus RTU主機。
3. 單擊端口2的設置按鈕。顯示“Modbus ASCII/RTU主機請求表”對話框。
4. 單擊通信設置按鈕。出現“通信參數”對話框。若有必要,請更改設置。
注釋 1: 僅當端口 3 至端口7 上使用 Modbus 主機時才可使用115200 bps的速度。
注釋 2: 當端口 3 至端口 7 上使用 Modbus 主機時可指定傳輸等待時間。
5. 單擊確定按鈕返回Modbus ASCII或RTU主機請求表。 在“功能代碼”下指定請求。 一個請求表中最多可輸入255個或2040個(在系統程序版本110或更高的CPU模塊上時)請求。
“功能代碼”為進行Modbus通信時,主機對從機進行的讀取或寫入的操作代碼。FC5A支持如下功能代碼:
當使用“請求執行內部繼電器”和“錯誤狀態”數據寄存器時,輸入設備的第一個編號。
請求執行內部繼電器和錯誤狀態數據寄存器按照請求編號順序分配。 當刪除一個請求或更改請求的順序時,更改了請求與請求執行內部繼電器和錯誤狀態數據寄存器的關系。 如果在用戶程序中使用了內部繼電器或數據寄存器,必須相應地更改設備編號。在完成更改后,重新下載用戶程序。
6. 當完成編輯“主機請求表”時,單擊確認按鈕保存更改。
7. 在關閉“主機請求表”后,編輯一個用于特殊數據寄存器D8054 (傳輸等待時間)和錯誤檢測的用戶程序。
8. 將用戶程序下載到CPU模塊。
現在,設置Modbus主機完成。
Modbus從機設置
在 WindLDR 功能域設置中為端口 1 至端口 7 選擇Modbus ASCII 從機或 Modbus RTU(遠程終端設備)從機,則可使用 Modbus 從機通信。 當Modbus從機從Modbus主機接收請求時,Modbus從機根據請求讀取或寫入數據。 在用戶程序的END處理時處理請求。
使用WindLDR設置Modbus從機通信用于Modbus ASCII或Modbus RTU。 由于這些設置與用戶程序相關,所以必須在更改設置后將用戶程序下載到MicroSmart。
1. 在WindLDR菜單欄中選擇設置>功能設置>通信端口。此時出現通信端口的“功能設置”對話框。
2. 在“端口2”的“通信模式”下拉列表中,選擇Modbus ASCII從機或Modbus RTU從機
3. 單擊設置按鈕。出現“通信參數”對話框。若有必要,請更改設置。
4. 單擊確定按鈕保存更改。
5. 在關閉“功能設置”屏幕后,編輯一個用于特殊數據寄存器D8054(傳輸等待時間)和錯誤檢測的用戶程序。
6. 將用戶程序下載到CPU模塊。
現在,設置Modbus從機完成。
*a:地址通常用于Modbus通信。 MicroSmart設備的Modbus地址計算方法如下。
*b: 這些 4 位數地址用于通信幀。要計算通信幀中使用的地址,提取 Modbus 地址的低 5 位數,從該值中減去1,并將結果轉換為十六進制。一般MicroSmart從機支持十進制的地址通信。但若需要使用十六進制進行通信的話,勾選Modbus主機設置頁中的:
,即可采用對從機地址表示為十六進制。
*c: 這些設備編號表示超薄型 CPU 模塊。
錯誤檢測程序示例
圖中,D0200~D0202是上圖設置的錯誤狀態寄存器。當出現通信錯誤時,在其中保存從機號(高字節)和錯誤代碼(低字節)。
錯誤代碼表,如下所示:
00h:正常完成
01h:功能錯誤
02h:訪問目標錯誤(地址超出范圍,地址+設備量超出范圍)
03h:設備量錯誤,1位寫入數據錯誤
11h:ASCII代碼錯誤(僅ASCII模式)
12h:幀長度錯誤
13h:BCC錯誤
14h:從機編號錯誤
16h:超時錯誤
DTDV(W)將錯誤狀態S1分割為高低字節存放在D1,D1+1。例如,上圖程序中第一行表示為D0200的高字節被存放在D0210,低字節被存放在D0211中。
之后,分別讀取分割存放后的寄存器的值就可知。