例程將給大家介紹西門子S7-200SMART如何使用 Modbus 主站指令對 Modbus 從站的四個(gè)保持寄存器執(zhí)行讀寫操作。
程序控制要求
當(dāng)I0.0接通的時(shí)候,程序?qū)?VW100 開始的四個(gè)字寫入 Modbus 從站從地址 40001 開始的保持寄存器。
PLC讀取 Modbus 從站從 40010 到 40013 的四個(gè)保持寄存器,并將數(shù)據(jù)存入PLC中從 VW200 開始的 V 存儲(chǔ)器中。數(shù)據(jù)交互地址如下:
西門子PLC進(jìn)行MODBUS通信主要使用單個(gè)主站及 MBUS_CTRL 和 MBUS_MSG 指令。
MBUS_CTRL:程序調(diào)用 MBUS_CTRL指令來初始化、監(jiān)視或禁用 Modbus 通信。
MBUS_MSG:程序調(diào)用 MBUS_MSG指令,啟動(dòng)對 Modbus 從站的請求并處理響應(yīng)。
程序編程及說明
程序段1
通過在每次掃描時(shí)調(diào)用 MBUS_CTRL 來初始化和監(jiān)視 Modbus 主站。Modbus 主站設(shè)為 9600 波特,無奇偶校驗(yàn)。從站設(shè)備允許在 1000 毫秒(1 秒)內(nèi)進(jìn)行響應(yīng)。
程序段2
第一次掃描時(shí),復(fù)位用于兩條 MBUS_MSG 指令的啟用標(biāo)記(M2.0 和 M2.1)。
程序段3
當(dāng) I0.0 從關(guān)閉變?yōu)榻油〞r(shí),設(shè)置第一條 MBUS_MSG 指令的啟用標(biāo)志 (M2.0)。
程序段4
當(dāng)?shù)谝粋(gè)啟用標(biāo)志 (M2.0) 接通時(shí),調(diào)用 MBUS_MSG 指令。只需為啟用該指令的第一次掃描設(shè)置 First 參數(shù)。
該指令會(huì)對從站 2 的 4 個(gè)保持寄存器執(zhí)行寫入 (RW = 1) 操作。從PLC中的 VB100-VB107(4 個(gè)字)獲取寫數(shù)據(jù),然后寫入到 Modbus 從站中的地址 40001 - 40004。
程序段5
第一條 MBUS_MSG 指令完成后(“完成”(Done) 位從 0 變?yōu)?1),會(huì)清除第一條 MBUS_MSG 指令的啟用標(biāo)志,然后設(shè)置第二條 MBUS_MSG 指令的啟用標(biāo)志。
如果錯(cuò)誤 (MB1) 不為零,則置位 Q0.1 顯示錯(cuò)誤。
程序段6
第二個(gè)啟用標(biāo)志 (M2.1) 接通時(shí),調(diào)用第二條 MBUS_MSG 指令。只需為啟用該指令的第一次掃描設(shè)置 First 參數(shù)。
該指令會(huì)對從站 2 的 4 個(gè)保持寄存器執(zhí)行讀取 (RW = 0) 操作。數(shù)據(jù)從 Modbus 從站中的地址 40010 - 40013 讀取,并復(fù)制到PLC中的 VB200 - VB207(4 個(gè)字)。
程序段7
第二條 MBUS_MSG 指令完成(“完成”(Done) 位從 0 變?yōu)?1)后,清除第二條 MBUS_MSG 指令的啟用標(biāo)志。
如果錯(cuò)誤 (MB1) 不為零,則置位 Q0.2 顯示錯(cuò)誤。
以上,即為西門子PLC進(jìn)行modbus通信的使用示例。