西門(mén)子6ES7522-1BL01-0AB0
西門(mén)子6ES7522-1BL01-0AB0
注意
- 1. Modbus RTU 主站指令庫(kù)的功能是通過(guò)在用戶(hù)程序中調(diào)用預(yù)先編好的程序功能塊實(shí)現(xiàn)的,該庫(kù)對(duì) Port 0 和 Port 1 有效。該指令庫(kù)將設(shè)置通信口工作在口下。
- 2. Modbus RTU 主站指令庫(kù)使用了一些用戶(hù)中斷功能,編其他程序時(shí)不能在用戶(hù)程序中禁止中斷。
- 3. Modbus RTU 主站庫(kù)對(duì)CPU的版本有要求。CPU 的版本必須為 2.00 或者 2.01(即訂貨號(hào)為 6ES721*-***23-0BA*),1.22版本之前(包括1.22版本)的 S7-200 CPU 不支持。
使用 Modbus RTU 主站指令庫(kù),可以讀寫(xiě) Modbus RTU 從站的數(shù)字量、模擬量 I/O 以及保持寄存器。
要使用 Modbus RTU 主站指令庫(kù),須遵循下列步驟:
- 1.安裝西門(mén)子指令庫(kù)
- 2.按照要求編寫(xiě)用戶(hù)程序調(diào)用 Modubs RTU 主站指令庫(kù)
- 安裝西門(mén)子指令庫(kù)
1.2 Modbus RTU 主站功能編程
1. 調(diào)用 Modbus RTU 主站初始化和控制子程序
使用 0.0 調(diào)用 MBUS_CTRL 完成主站的初始化,并啟動(dòng)其功能控制:
圖 2. 用 0.0 調(diào)用 Modbus RTU 主站初始化與控制子程序
各參數(shù)意義如下:
a. | EN | 使能: | 必須保證每一掃描周期都被使能(使用 0.0) |
---|---|---|---|
b. | Mode | : | 為 1 時(shí),使能 Modbus 協(xié)議功能;為 0 時(shí)恢復(fù)為 PPI 協(xié)議 |
c. | Baud | 波特率: | 支持的通訊波特率為。 |
d. | Parity | 校驗(yàn): | 校驗(yàn)選擇 |
0=無(wú)校驗(yàn) | |||
1=奇較驗(yàn) | |||
2=偶較驗(yàn) | |||
e. | Timeout | 超時(shí): | 主站等待從站響應(yīng)的時(shí)間,以毫秒為單位,典型的設(shè)置值為 1000 毫秒(1 秒),允許設(shè)置的范圍為 1 - 32767。 |
![]() | |||
f. | Done | 完成位: | 初始化完成,此位會(huì)自動(dòng)置1??梢杂迷撐粏?dòng) MBUS_MSG 讀寫(xiě)操作(見(jiàn)例程) |
g. | Error | 初始化錯(cuò)誤代碼(只有在 Done 位為1時(shí)有效): | |
0= 無(wú)錯(cuò)誤 | |||
1= 校驗(yàn)選擇 | |||
2= 波特率選擇 | |||
3= 選擇 |
2. 調(diào)用 Modbus RTU 主站讀寫(xiě)子程序MBUS_MSG,發(fā)送一個(gè)Modbus 請(qǐng)求;
圖 3. 調(diào)用Modbus RTU 主站讀寫(xiě)子程序
各參數(shù)意義如下:
a. | EN | 使能: | 同一時(shí)刻只能有一個(gè)讀寫(xiě)功能(即 MBUS_MSG)使能 |
---|---|---|---|
![]() | |||
b. | First | 讀寫(xiě)請(qǐng)求位: | 每一個(gè)新的讀寫(xiě)請(qǐng)求必須使用脈沖觸發(fā) |
c. | Sle | 從站地址: | 可選擇的范圍 1 - 247 |
d. | RW | 從站地址: | 0 = 讀, 1 = 寫(xiě) |
![]() | |||
1. 開(kāi)關(guān)量輸出和保持寄存器支持讀和寫(xiě)功能 | |||
2. 開(kāi)關(guān)量輸入和模擬量輸入只支持讀功能 | |||
e. | Addr | 讀寫(xiě)從站的數(shù)據(jù)地址: | |
選擇讀寫(xiě)的數(shù)據(jù)類(lèi)型 | |||
00001 至 0xxxx - 開(kāi)關(guān)量輸出 | |||
10001 至 1xxxx - 開(kāi)關(guān)量輸入 | |||
30001 至 3xxxx - 模擬量輸入 | |||
40001 至 4xxxx - 保持寄存器 | |||
f. | Count | 數(shù)據(jù)個(gè)數(shù) | 通訊的數(shù)據(jù)個(gè)數(shù)(位或字的個(gè)數(shù)) |
![]() | |||
g. | DataPtr | 數(shù)據(jù)指針: | 1. 如果是讀指令,讀回的數(shù)據(jù)放到這個(gè)數(shù)據(jù)區(qū)中 |
2. 如果是寫(xiě)指令,要寫(xiě)出的數(shù)據(jù)放到這個(gè)數(shù)據(jù)區(qū)中 | |||
h. | Done | 完成位 | 讀寫(xiě)功能完成位 |
i. | Error | 錯(cuò)誤代碼: | 只有在 Done 位為1時(shí),錯(cuò)誤代碼才有效 |
0 = 無(wú)錯(cuò)誤 | |||
1 = 響應(yīng)校驗(yàn)錯(cuò)誤 | |||
2 = 未用 | |||
3 = 接收超時(shí)(從站無(wú)響應(yīng)) | |||
4 = 請(qǐng)求參數(shù)錯(cuò)誤(sle address, Modbus address, count, RW) | |||
5 = Modbus/口未使能 | |||
6 = Modbus正在忙于其它請(qǐng)求 | |||
7 = 響應(yīng)錯(cuò)誤(響應(yīng)不是請(qǐng)求的操作) | |||
8 = 響應(yīng)CRC校驗(yàn)和錯(cuò)誤 | |||
- | |||
101 = 從站不支持請(qǐng)求的功能 | |||
102 = 從站不支持?jǐn)?shù)據(jù)地址 | |||
103 = 從站不支持此種數(shù)據(jù)類(lèi)型 | |||
104 = 從站設(shè)備故障 | |||
105 = 從站接受了信息,但是響應(yīng)被 | |||
106 = 從站忙,拒絕了該信息 | |||
107 = 從站拒絕了信息 | |||
108 = 從站存儲(chǔ)器奇偶錯(cuò)誤 |
常見(jiàn)的錯(cuò)誤:
- 如果多個(gè) MBUS_MSG 指令同時(shí)使能會(huì)造成 6 號(hào)錯(cuò)誤
- 庫(kù)存儲(chǔ)區(qū)被程序其它地方復(fù)用,有時(shí)也會(huì)造成6 號(hào)錯(cuò)誤
- 從站 delay 參數(shù)設(shè)的時(shí)間過(guò)長(zhǎng)會(huì)造成主站 3 號(hào)錯(cuò)誤
- 從站掉電或不運(yùn)行,網(wǎng)絡(luò)故障都會(huì)造成主站 3 號(hào)錯(cuò)誤
3. 在 CPU 的 V 數(shù)據(jù)區(qū)中為庫(kù)指令分配存儲(chǔ)區(qū)(Library Memory)
Modbus Master 指令庫(kù)需要一個(gè)284個(gè)字節(jié)的全局 V 存儲(chǔ)區(qū)。
1.3 關(guān)于 Modbus RTU 主站協(xié)議及地址
此為西門(mén)子正式推出的庫(kù)指令說(shuō)明資料。
在 Modbus RTU Master 協(xié)議和 PPI 協(xié)議之間切換:
Modbus RTU Master 協(xié)議指令庫(kù)使通信口工作在口下,此時(shí)不能與 Micro/WIN 通信。要在切換回 PPI 協(xié)議,可以:
- 將 MBUS_CTRL 指令的 Mode 輸入端設(shè)置為邏輯"0"
- 將 CPU 的允許選擇開(kāi)關(guān)置為 STOP 位置