一、功能概述
1.1 概述
? ? ? ? Modbus串行通信協議是Modicon公司在1970年開發(fā)的。
????????Modbus串行通信協議有Modbus ASCII和Modbus RTU兩種模式,Modbus RTU協議通信效率較高,應用更加廣泛。
????????Modbus RTU協議是基于RS232和RS485串行通信的一種協議,數據通信采用主從方式進行傳送,主站發(fā)出具有從站地址的數據報文,從站接收到報文后發(fā)送相應報文到主站進行應答。
????????Modbus RTU協議網絡上只能存在一個主站,主站在Modbus RTU網絡上沒有地址。每次從站必須有唯一的地址,從站地址為0-247,其中0為廣播地址。
1.2 報文結構
????????Modbus RTU協議報文結構:
????????一個報文就是一幀數據,一個數據幀就一個報文: 指的是一串完整的指令數據,就像上面的一串數據。(CRC校驗L和CRC校驗H屬于錯誤校驗碼,占2個字節(jié))
? ? ? ? 報文舉例:
從站地址碼 | 功能碼 | 數據地址 | 數據區(qū) | 錯誤校驗碼 | |||
01 | 06 | 00 | 01 | 00 | 17 | 98 | 04 |
? ? ? ? 這一串數據的作用是把數據H0017(十進制數為23)寫入01號從站的地址H0001中。
1.3 功能碼及數據地址?
????????Modbus 設備之間的數據交換是通過功能碼實現的,功能碼有按位操作的,也有按字操作的。
? ? ? ? 在S7-1200 PLC的Modbus RTU協議通信中,不同的Modbus RTU協議數據地址區(qū)對應不同的S7-1200 PLC數據區(qū)。
功能碼 | 描述 | 位/字操作 | Modbus數據地址 | S7-1200PLC數據地址區(qū) |
01 | 讀取輸出位 | 位 | 00 001-09 999 | Q0.0-Q1023.7 |
02 | 讀取輸入位 | 位 | 10 001-19 999 | I0.0-I1023.7 |
03 | 讀取保持寄存器 | 字 | 40 001-49 999 | DB數據塊、M位存儲區(qū) |
04 | 讀取輸入字 | 字 | 30 001-39 999 | IW0-IW1022 |
05 | 寫一個輸出位 | 位 | 00 001-09 999 | Q0.0-Q1023.7 |
06 | 寫一個保持寄存器 | 字 | 40 001-49 999 | DB數據塊、M位存儲區(qū) |
15 | 寫多個輸出位 | 位 | 00 001-09 999 | Q0.0-Q1023.7 |
16 | 寫多個保持寄存器 | 字 | 40 001-49 999 | DB數據塊、M位存儲區(qū) |
二、指令說明?
? ? ? ? 在“指令”窗格中依次選擇“通信”→“通信處理器”→“MODBUS(RTU)”選項,出現MODBUS RTU指令列表。
?????????Modbus RTU指令主要包括3個指令:“Modbus_Comm_Load”(通信參數裝載)指令、“Modbus_Master”(主站通信)指令和“Modbus_Slave”(從站通信)指令。
????????早期版本的Modbus RTU指令( MODBUS (V2.2))僅可通過CM1241通信模塊或CB1241通信板進行Modbus RTU通信。
????????新版本的 Modbus RTU指令(MODBUS(RTU) V3.0)擴展了Modbus RTU的功能,該指令除了支持CM1241通信模塊、CB1241通信板,還支持 PROFINET 或 PROFIBUS 分布式 I/O 機架上的PTP通信模塊實現Modbus RTU通信。
2.1 Modbus_Comm_Load 指令
? ? ? ? 該指令用于組態(tài)RS232和RS485通信模塊端口的通信參數,以便進行Modbus RTU協議通信。每個Modbus RTU通信的端口,都必須執(zhí)行一次“Modbus_Comm_Load”指令來組態(tài)。各引腳含義如下:
? ? ? ? ?①在進行Modbus RTU通信前,必須執(zhí)行該指令組態(tài)模塊端口通信,然后才能使用通信指令進行Modbus RTU通信。在啟動OB中調用該指令或者在OB1中使用“FirstScan”調用執(zhí)行一次。
? ? ? ? ②當“Modbus_Master”(主站通信)和“Modbus_Slave”(從站通信)指令被拖拽到用戶程序時,將為其分配背景數據塊,“Modbus_Comm_Load”指令的MB_DB參數將引用該背景數據塊。
2.2 Modbus_Master 指令
????????“Modbus_Master”指令可通過由“Modbus_Comm_Load”指令組態(tài)的端口作為Modbus RTU主站進行通信。
? ? ? ? ?①同一串行通信接口只能作為Modbus RTU主站或從站。文章來源:http://www.zghlxwxcb.cn/news/detail-606375.html
? ? ? ? ②當同一串行通信接口使用多個“Modbus_Master”指令時,“Modbus_Master”指令必須使用同一個背景數據塊,用戶程序必須使用輪詢方式執(zhí)行指令。文章來源地址http://www.zghlxwxcb.cn/news/detail-606375.html
到了這里,關于Modbus RTU通信應用的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!