Modbus主機(jī)設(shè)置
Modbus從機(jī)站的Modbus主機(jī)通信設(shè)置和請(qǐng)求表可使用WindLDR“功能設(shè)置”進(jìn)行設(shè)置。 進(jìn)行從機(jī)站通信與用戶程序執(zhí)行同步,并且按照請(qǐng)求表中指定的請(qǐng)求編號(hào)順序在END處理中處理通信數(shù)據(jù)。 當(dāng)指定了請(qǐng)求執(zhí)行內(nèi)部繼電器時(shí),只有當(dāng)相應(yīng)的請(qǐng)求執(zhí)行內(nèi)部繼電器打開(kāi)時(shí)才執(zhí)行請(qǐng)求。 當(dāng)沒(méi)有指定請(qǐng)求執(zhí)行內(nèi)部繼電器時(shí),連續(xù)執(zhí)行所有請(qǐng)求。使用WindLDR設(shè)置Modbus主機(jī)通信用于Modbus ASCII或Modbus RTU。 由于這些設(shè)置與用戶程序相關(guān),所以必須在更改設(shè)置后將用戶程序下載到MicroSmart。
1. 在WindLDR菜單欄中選擇設(shè)置>功能設(shè)置>通信端口。此時(shí)出現(xiàn)通信端口的“功能設(shè)置”對(duì)話。
2. 在“端口2”的“通信模式”下拉列表中,選擇Modbus ASCII主機(jī)或Modbus RTU主機(jī)。

3. 單擊端口2的設(shè)置按鈕。顯示“Modbus ASCII/RTU主機(jī)請(qǐng)求表”對(duì)話框。

4. 單擊通信設(shè)置按鈕。出現(xiàn)“通信參數(shù)”對(duì)話框。若有必要,請(qǐng)更改設(shè)置。

注釋 1: 僅當(dāng)端口 3 至端口7 上使用 Modbus 主機(jī)時(shí)才可使用115200 bps的速度。
注釋 2: 當(dāng)端口 3 至端口 7 上使用 Modbus 主機(jī)時(shí)可指定傳輸?shù)却龝r(shí)間。
5. 單擊確定按鈕返回Modbus ASCII或RTU主機(jī)請(qǐng)求表。 在“功能代碼”下指定請(qǐng)求。 一個(gè)請(qǐng)求表中最多可輸入255個(gè)或2040個(gè)(在系統(tǒng)程序版本110或更高的CPU模塊上時(shí))請(qǐng)求。
“功能代碼”為進(jìn)行Modbus通信時(shí),主機(jī)對(duì)從機(jī)進(jìn)行的讀取或?qū)懭氲牟僮鞔a。FC5A支持如下功能代碼:
當(dāng)使用“請(qǐng)求執(zhí)行內(nèi)部繼電器”和“錯(cuò)誤狀態(tài)”數(shù)據(jù)寄存器時(shí),輸入設(shè)備的第一個(gè)編號(hào)。

請(qǐng)求執(zhí)行內(nèi)部繼電器和錯(cuò)誤狀態(tài)數(shù)據(jù)寄存器按照請(qǐng)求編號(hào)順序分配。 當(dāng)刪除一個(gè)請(qǐng)求或更改請(qǐng)求的順序時(shí),更改了請(qǐng)求與請(qǐng)求執(zhí)行內(nèi)部繼電器和錯(cuò)誤狀態(tài)數(shù)據(jù)寄存器的關(guān)系。 如果在用戶程序中使用了內(nèi)部繼電器或數(shù)據(jù)寄存器,必須相應(yīng)地更改設(shè)備編號(hào)。在完成更改后,重新下載用戶程序。
6. 當(dāng)完成編輯“主機(jī)請(qǐng)求表”時(shí),單擊確認(rèn)按鈕保存更改。
7. 在關(guān)閉“主機(jī)請(qǐng)求表”后,編輯一個(gè)用于特殊數(shù)據(jù)寄存器D8054 (傳輸?shù)却龝r(shí)間)和錯(cuò)誤檢測(cè)的用戶程序。
8. 將用戶程序下載到CPU模塊。
現(xiàn)在,設(shè)置Modbus主機(jī)完成。
Modbus從機(jī)設(shè)置
在 WindLDR 功能域設(shè)置中為端口 1 至端口 7 選擇Modbus ASCII 從機(jī)或 Modbus RTU(遠(yuǎn)程終端設(shè)備)從機(jī),則可使用 Modbus 從機(jī)通信。 當(dāng)Modbus從機(jī)從Modbus主機(jī)接收請(qǐng)求時(shí),Modbus從機(jī)根據(jù)請(qǐng)求讀取或?qū)懭霐?shù)據(jù)。 在用戶程序的END處理時(shí)處理請(qǐng)求。
使用WindLDR設(shè)置Modbus從機(jī)通信用于Modbus ASCII或Modbus RTU。 由于這些設(shè)置與用戶程序相關(guān),所以必須在更改設(shè)置后將用戶程序下載到MicroSmart。
1. 在WindLDR菜單欄中選擇設(shè)置>功能設(shè)置>通信端口。此時(shí)出現(xiàn)通信端口的“功能設(shè)置”對(duì)話框。
2. 在“端口2”的“通信模式”下拉列表中,選擇Modbus ASCII從機(jī)或Modbus RTU從機(jī)

3. 單擊設(shè)置按鈕。出現(xiàn)“通信參數(shù)”對(duì)話框。若有必要,請(qǐng)更改設(shè)置。
4. 單擊確定按鈕保存更改。
5. 在關(guān)閉“功能設(shè)置”屏幕后,編輯一個(gè)用于特殊數(shù)據(jù)寄存器D8054(傳輸?shù)却龝r(shí)間)和錯(cuò)誤檢測(cè)的用戶程序。
6. 將用戶程序下載到CPU模塊。
現(xiàn)在,設(shè)置Modbus從機(jī)完成。

*a:地址通常用于Modbus通信。 MicroSmart設(shè)備的Modbus地址計(jì)算方法如下。
*b: 這些 4 位數(shù)地址用于通信幀。要計(jì)算通信幀中使用的地址,提取 Modbus 地址的低 5 位數(shù),從該值中減去1,并將結(jié)果轉(zhuǎn)換為十六進(jìn)制。一般MicroSmart從機(jī)支持十進(jìn)制的地址通信。但若需要使用十六進(jìn)制進(jìn)行通信的話,勾選Modbus主機(jī)設(shè)置頁(yè)中的:
,即可采用對(duì)從機(jī)地址表示為十六進(jìn)制。
*c: 這些設(shè)備編號(hào)表示超薄型 CPU 模塊。

錯(cuò)誤檢測(cè)程序示例

圖中,D0200~D0202是上圖設(shè)置的錯(cuò)誤狀態(tài)寄存器。當(dāng)出現(xiàn)通信錯(cuò)誤時(shí),在其中保存從機(jī)號(hào)(高字節(jié))和錯(cuò)誤代碼(低字節(jié))。
錯(cuò)誤代碼表,如下所示:
00h:正常完成
01h:功能錯(cuò)誤
02h:訪問(wèn)目標(biāo)錯(cuò)誤(地址超出范圍,地址+設(shè)備量超出范圍)
03h:設(shè)備量錯(cuò)誤,1位寫(xiě)入數(shù)據(jù)錯(cuò)誤
11h:ASCII代碼錯(cuò)誤(僅ASCII模式)
12h:幀長(zhǎng)度錯(cuò)誤
13h:BCC錯(cuò)誤
14h:從機(jī)編號(hào)錯(cuò)誤
16h:超時(shí)錯(cuò)誤
DTDV(W)將錯(cuò)誤狀態(tài)S1分割為高低字節(jié)存放在D1,D1+1。例如,上圖程序中第一行表示為D0200的高字節(jié)被存放在D0210,低字節(jié)被存放在D0211中。
之后,分別讀取分割存放后的寄存器的值就可知。










