時間:2023-12-18 17:05:37來源:深圳市雷賽智能控制股份有限公司
● Modbus RTU主站 ●
功能介紹:
Modbus RTU是Modbus通訊方式的一種,基于RS485/232串行接口的通訊協(xié)議,在PLC控制系統(tǒng)中廣泛應(yīng)用。在此類控制系統(tǒng)中,通常用一個PLC充當(dāng)主站,而變頻器、伺服電機驅(qū)動器以及其他PLC設(shè)備則作為從站。該通訊方式用于PLC控制系統(tǒng)的優(yōu)勢在于實現(xiàn)簡單、運行可靠、搭建成本低,且一個主站能夠支持最多31個從站的通訊。
使用場景:
Modbus RTU是工業(yè)自動化系統(tǒng)中被廣泛采用的通信協(xié)議,其通過串行接口提供快速可靠的通訊。企業(yè)能夠?qū)崿F(xiàn)對多個從站設(shè)備的實時監(jiān)控和高效控制。
雷賽PLC中Modbus RTU有兩種實現(xiàn)方式:軟件參數(shù)設(shè)置和程序指令方式。
1)軟件參數(shù)設(shè)置:軟件配置Modbus RTU參數(shù)即可完成通訊,這種方式可以直觀的看到設(shè)置的參數(shù)信息以及通訊的數(shù)據(jù)交換情況。2)指令方式:在需要很多從站的情況下,可以使用指令方式,使用LS_ModbusMaster功能塊,這種方式一次可添加控制31個從站進行通訊,可以在程序中靈活變化通訊參數(shù)等信息,比如可以在程序里面更改所需功能碼;再比如當(dāng)我們需要用485另一個通道進行通訊時,可以直接更新通道號,無須在設(shè)備組態(tài)再添加通訊通道重新配置。接下來我們對指令方式做一個詳細(xì)的介紹(參數(shù)設(shè)置方式可參考使用手冊及視頻課程內(nèi)容):
01 / 使用步驟
1、新建工程并命名:MC532_ModbusMaster,然后雙擊左側(cè)設(shè)備欄“庫管理器”添加庫→選擇高級→在彈出的“添加庫”界面選擇“庫”→點擊安裝→在文件夾中選擇“ModbusMaster_Eng.compiled-library”庫文件→安裝完成如圖所示。
2、完成各模塊程序功能的編寫,如下圖所示,在主程序PLC_PRG中LS_ModbusMaster功能塊使能變量狀態(tài)來實現(xiàn)ModbusMaster具體操作;其中定義的幾個比較重要的變量如圖所示。
3、參數(shù)配置如下圖。
配置完成如圖所示:
使用工具Modbus Slave工具配置從站(從站參數(shù)配置,要求與主站參數(shù)一致),
詳細(xì)代碼如下:(左右滑動查看完整代碼??)
·
PROGRAM PLC_PRGVAR LS_ModbusMaster_00:LS_ModbusMaster; arstModbusConfig: ARRAY [0..127] OF LS_ModbusMasterlib.ModbusConfig := [(usiFunctionCode := MODBUSFUNTIONCODE.Write_Muluiple_Register, xCycle := FALSE, arwWriteData := [10, 20, 98(0)]), 99(())]; stSerialCommunicationPara00: LS_ModbusMasterlib.SerialCommunicationPara := (udiBaudrate := 9600, udiPARITY := NONE); byModbusConfigNumber: BYTE := 1;END_VARLS_ModbusMaster_00( arstModbusConfig:= arstModbusConfig , stSerialCommunicationPara:=stSerialCommunicationPara00, byModbusConfigNumber:= byModbusConfigNumber, xError=> , ErrorID=> );
配置完后后,登錄并下載程序。登錄后,寫入值,觸發(fā)xTrigger,在從站查看結(jié)果。如下圖所示。
02 / 注意事項
1、Modbus通訊配置需要在第一次執(zhí)行功能塊之前配置完成,建議直接在初始值中配置及修改,不要在程序中賦值。
2、寫入數(shù)據(jù)放在arwWriteData中,讀取數(shù)據(jù)數(shù)據(jù)放在arwReadData中。
如操作寄存器,直接操作對應(yīng)的word索引即可;如操作線圈,在word中按照Bit處理。
例1:使用01功能碼,讀取10個線圈,則讀取返回的數(shù)據(jù)占用arwReadData[0]的bit0-bit9。
例2:使用03功能碼,讀取10個寄存器,則讀取返回的數(shù)據(jù)占用arwReadData[0]- arwReadData[9]。
3、長度限制
1)01功能碼支持最大長度2000;
2)02功能碼支持最大長度2000;
3)03功能碼支持最大長度125;
4)04功能碼支持最大長度125
5)15功能碼支持最大長度1968;
6)16功能碼支持最大長度123。
03 / 相關(guān)變量介紹
◆ ModbusConfig(Modbus通訊配置結(jié)構(gòu)體)
usiAddress:USINT:=1;//站號
usiFunctionCode:ModbusFuntionCode:=Read_Coils;//功能碼
wOffset:WORD:=0;//地址偏移
wLength:WORD:=1;//數(shù)據(jù)長度,01/02/03/04/15/16功能碼使用
xCycle:BOOL:=TRUE;//True:周期循環(huán)模式,F(xiàn)alse:觸發(fā)模式
uiCycleTime:UINT:=100;//循環(huán)時間,單位ms
xTrigger:BOOL;//觸發(fā)信號,觸發(fā)模式下使用s
byRetransmissionNumber:BYTE:=3;//重發(fā)次數(shù)
xError:BOOL:=FALSE;
ErrorCode:ModbusMasterErrorCode;
xDone:BOOL:=FALSE;//處理完成信號
arwReadData:ARRAY[0..126] OF WORD;//讀取數(shù)據(jù)緩存區(qū),01/02/03/04功能碼使用
arwWriteData:ARRAY[0..126] OF WORD;//寫入數(shù)據(jù)緩存區(qū),05/06/15/16功能碼使用
◆ SerialCommunicationPara (串口通訊參數(shù)結(jié)構(gòu)體)
udiPort:UDINT:=3;//串口端口號
udiBaudrate:UDINT:=115200;//波特率,設(shè)置為9600
udiPARITY:COM.PARITY:=COM.PARITY.EVEN;//校驗,設(shè)置為偶校驗
udiStopBits:COM.STOPBIT:=COM.STOPBIT.ONESTOPBIT;//停止位,1位
udiTimeout:UDINT:=1000;//超時時間,單位ms
udiByteSize:UDINT:=8;//數(shù)據(jù)位
◆ ModbusFuntionCode(支持的Modbus功能碼)
Read_Coils:=16#01,//讀線圈
Read_DisCrete_Inputs:=16#02,//讀離散輸入寄存器
Read_Holding_Registers:=16#03,//讀保持寄存器
Read_Input_Registers:=16#04,//讀輸入寄存器
Write_Single_Coil:=16#05,//寫單個線圈寄存器
Write_Single_Register:=16#06,//寫單個保持寄存器
Write_Muluiple_Coil:=15,//寫多個線圈
Write_Muluiple_Register:=16,//寫多個寄存器
◆ ModbusMasterErrorCode(Modbus主站錯誤碼)
NO_ERROR:=0,
OPEN_SERIAL_ERROR:=100,
NOT_SUPPORT_FUNCTIONCODE:=200,
INVAILD_DATA_ADDRESS:=300,
INVAILD_DATA_VALUE:=400,
SLAVE_ERROR:=500,
CRC_ERROR:=600,
INVAILD_DATA_LENGTH:=700,
TIME_OUT:=800,
INVAILD_DEVICE:=16#FFFF,
END
中國傳動網(wǎng)版權(quán)與免責(zé)聲明:凡本網(wǎng)注明[來源:中國傳動網(wǎng)]的所有文字、圖片、音視和視頻文件,版權(quán)均為中國傳動網(wǎng)(m.u63ivq3.com)獨家所有。如需轉(zhuǎn)載請與0755-82949061聯(lián)系。任何媒體、網(wǎng)站或個人轉(zhuǎn)載使用時須注明來源“中國傳動網(wǎng)”,違反者本網(wǎng)將追究其法律責(zé)任。
本網(wǎng)轉(zhuǎn)載并注明其他來源的稿件,均來自互聯(lián)網(wǎng)或業(yè)內(nèi)投稿人士,版權(quán)屬于原版權(quán)人。轉(zhuǎn)載請保留稿件來源及作者,禁止擅自篡改,違者自負(fù)版權(quán)法律責(zé)任。