一、適用型號
該筆記適用于標(biāo)準(zhǔn)Modbus協(xié)議產(chǎn)品(MA01系列、ME31系列、M31系列、ME15-AXAX8080)。
二、功能簡介
功能說明:Modbus指令快速生成教程旨在幫助用戶快速生成Modbus通信指令,實(shí)現(xiàn)設(shè)備之間的數(shù)據(jù)傳輸。通過確定通信方式、選擇功能碼、確定起始地址和數(shù)據(jù)長度等步驟,用戶可以輕松生成符合Modbus協(xié)議規(guī)范的指令。
常用的功能碼包括讀取保持寄存器、寫單個保持寄存器等,用于讀取或?qū)懭朐O(shè)備的數(shù)據(jù)。通過本教程,用戶可以快速了解如何生成Modbus指令,并在工業(yè)控制等領(lǐng)域中應(yīng)用,實(shí)現(xiàn)設(shè)備間的高效通信與數(shù)據(jù)交換。
相關(guān)知識:
Modbus是一種主/從通訊模式,主站在Modbus網(wǎng)絡(luò)上沒有地址,從站的地址范圍為0-247,其中0為廣播地址,從站的實(shí)際地址范圍為1-247。
Modbus寄存器種類說明:
線圈狀態(tài):輸出端口,可設(shè)定端口的輸出狀態(tài),也可以讀取該位的輸出狀態(tài);
離散輸入狀態(tài):輸入端口,通過外部設(shè)定改變輸入狀態(tài),可讀但不可寫;
保持寄存器:控制器運(yùn)行時被設(shè)定的某些參數(shù),可讀可寫;
輸入寄存器:控制器運(yùn)行時從外部設(shè)備獲得的某些參數(shù),可讀不可寫。
Modbus功能碼:
三、功能應(yīng)用
(1)軟件清單
軟件:UartAssist
(2)Modbus指令調(diào)試界面介紹
首先雙擊打開此軟件,如圖所示:
點(diǎn)擊左上角圖標(biāo),然后會出現(xiàn)新的菜單欄,選擇點(diǎn)擊工具,然后會繼續(xù)出現(xiàn)新的菜單欄,選擇點(diǎn)擊Modbus調(diào)試器,在右側(cè)就會出現(xiàn)一個Modbus指令生成框,如圖所示:
(3)從頁面中我們可以發(fā)現(xiàn):
第一欄為協(xié)議類型選擇,其中協(xié)議包含Modbus-RTU、Modbus-ASCII、Modbus-TCP,我們常用的協(xié)議為Modbus-RTU、Modbus-TCP,Modbus-RTU通常對應(yīng)串口通訊使用,Modbus-TCP通常對應(yīng)網(wǎng)口通訊使用;
第二欄為從設(shè)備ID,對應(yīng)設(shè)備的Modbus地址;
第三欄為功能號選擇,其中包含01功能碼讀線圈,02功能碼讀離散量輸入,03功能碼讀保持寄存器,04功能碼讀輸入寄存器,05功能碼寫單個線圈,06功能碼寫單個寄存器,15功能碼寫多個線圈,16功能碼寫多個寄存器;
第四欄是寄存器地址,相應(yīng)寄存器地址可在手冊寄存器章節(jié)查詢;
第五欄根據(jù)不同的功能號,會出現(xiàn)不同的描述,具體可見指令生成章節(jié)。
注:輸入地址和數(shù)值可以為十進(jìn)制數(shù)或0x打頭的十六進(jìn)制形式。
四、指令生成
示例將以M31系列分布式IO為例,Modbus地址設(shè)置為1,協(xié)議類型選擇Modbus RTU進(jìn)行講解。
(1)DI(1區(qū))相關(guān)指令生成示例
讀取DI狀態(tài)指令:查詢手冊可知,DI的寄存器起始地址為0x0000(10001),由此如圖所示:
從設(shè)備ID號(Modbus地址):1(具體以現(xiàn)場使用而定)
功能號選擇:02讀離散量輸入
寄存器地址:0x0000(為寄存器起始地址,0就代表從第一路開始讀?。?/p>
讀數(shù)據(jù)長度:1(如果需要同時讀取4路,將此值改為4即可)
填寫相關(guān)數(shù)據(jù)后,點(diǎn)擊更新。
(2)DO(0區(qū))相關(guān)指令生成示例
讀取DO狀態(tài)指令:查詢手冊可知,DO的寄存器起始地址為0x0000(00001),由此如圖所示:
從設(shè)備ID號(Modbus地址):1(具體以現(xiàn)場使用而定)
功能號選擇:01讀線圈
寄存器地址:0x0000(為寄存器起始地址)
讀數(shù)據(jù)長度:1(如果需要同時讀取4路,將此值改為4即可)
填寫相關(guān)數(shù)據(jù)后,點(diǎn)擊更新。
控制單個DO狀態(tài)指令:查詢手冊可知,DO的寄存器起始地址為0x0000(00001),由此如圖所示:
從設(shè)備ID號(Modbus地址):1(具體以現(xiàn)場使用而定)
功能號選擇:05寫單個線圈
寄存器地址:0x0000(為寄存器起始地址)
線圈狀態(tài)值:On為打開,off為關(guān)閉
填寫相關(guān)數(shù)據(jù)后,點(diǎn)擊更新。
控制多個DO狀態(tài)指令:查詢手冊可知,DO的寄存器起始地址為0x0000(00001),由此如圖所示:
從設(shè)備ID號(Modbus地址):1(具體以現(xiàn)場使用而定)
功能號選擇:15寫多個線圈
寄存器地址:0x0000(為寄存器起始地址)
線圈狀態(tài)值:1 0 1 0(1為打開,0為關(guān)閉,1 0 1 0表示控制1,3路打開,2,4路關(guān)閉;多個線圈的狀態(tài)值用空格符分隔)
填寫相關(guān)數(shù)據(jù)后,點(diǎn)擊更新。
(3)AI(3區(qū))相關(guān)指令生成示例
讀取AI數(shù)據(jù)指令:查詢手冊可知,AI的工程量的寄存器起始地址為0x0000(30001),由此如圖所示:
從設(shè)備ID號(Modbus地址):1(具體以現(xiàn)場使用而定)
功能號選擇:04讀輸入寄存器
寄存器地址:0x0000(為寄存器起始地址)
讀數(shù)據(jù)長度:1(如果需要同時讀取4路,將此值改為4;如果需要同時讀取4路浮點(diǎn)類型,將此值改為8)
填寫相關(guān)數(shù)據(jù)后,點(diǎn)擊更新。
(4)AO(4區(qū))相關(guān)指令生成示例
讀取AO數(shù)據(jù)指令:查詢手冊可知,AO的寄存器起始地址為0x0000(40001),由此如圖所示:
從設(shè)備ID號(Modbus地址):1(具體以現(xiàn)場使用而定)
功能號選擇:03讀保持寄存器
寄存器地址:0x0000(為寄存器起始地址)
讀數(shù)據(jù)長度:1(如果需要同時讀取4路,將此值改為4;如果需要同時讀取4路浮點(diǎn)類型,將此值改為8)
填寫相關(guān)數(shù)據(jù)后,點(diǎn)擊更新。
控制單個AO數(shù)據(jù)指令:查詢手冊可知,AO的寄存器起始地址為0x0000(40001),由此如圖所示:
從設(shè)備ID號(Modbus地址):1(具體以現(xiàn)場使用而定)
功能號選擇:06寫單個寄存器
寄存器地址:0x0000(為寄存器起始地址)
寄存器數(shù)據(jù):1(此值為修改AO的數(shù)據(jù))
填寫相關(guān)數(shù)據(jù)后,點(diǎn)擊更新。
控制多個AO數(shù)據(jù)指令:查詢手冊可知,DO的寄存器起始地址為0x0000(00001),由此如圖所示:
從設(shè)備ID號(Modbus地址):1(具體以現(xiàn)場使用而定)
功能號選擇:16寫多個寄存器
寄存器地址:0x0000(為寄存器起始地址)
寄存器數(shù)據(jù):100 200 300 400(100 200 300 400表示修改AO的數(shù)據(jù)第一路為100,第二路200,第三路300,第四路400;多個寄存器數(shù)據(jù)用空格符分隔)
填寫相關(guān)數(shù)據(jù)后,點(diǎn)擊更新。