時間:2023-12-18 17:05:37來源:深圳市雷賽智能控制股份有限公司
● Modbus RTU主站 ●
功能介紹:
Modbus RTU是Modbus通訊方式的一種,基于RS485/232串行接口的通訊協議,在PLC控制系統中廣泛應用。在此類控制系統中,通常用一個PLC充當主站,而變頻器、伺服電機驅動器以及其他PLC設備則作為從站。該通訊方式用于PLC控制系統的優勢在于實現簡單、運行可靠、搭建成本低,且一個主站能夠支持最多31個從站的通訊。
使用場景:
Modbus RTU是工業自動化系統中被廣泛采用的通信協議,其通過串行接口提供快速可靠的通訊。企業能夠實現對多個從站設備的實時監控和高效控制。
雷賽PLC中Modbus RTU有兩種實現方式:軟件參數設置和程序指令方式。
1)軟件參數設置:軟件配置Modbus RTU參數即可完成通訊,這種方式可以直觀的看到設置的參數信息以及通訊的數據交換情況。2)指令方式:在需要很多從站的情況下,可以使用指令方式,使用LS_ModbusMaster功能塊,這種方式一次可添加控制31個從站進行通訊,可以在程序中靈活變化通訊參數等信息,比如可以在程序里面更改所需功能碼;再比如當我們需要用485另一個通道進行通訊時,可以直接更新通道號,無須在設備組態再添加通訊通道重新配置。接下來我們對指令方式做一個詳細的介紹(參數設置方式可參考使用手冊及視頻課程內容):
01 / 使用步驟
1、新建工程并命名:MC532_ModbusMaster,然后雙擊左側設備欄“庫管理器”添加庫→選擇高級→在彈出的“添加庫”界面選擇“庫”→點擊安裝→在文件夾中選擇“ModbusMaster_Eng.compiled-library”庫文件→安裝完成如圖所示。
2、完成各模塊程序功能的編寫,如下圖所示,在主程序PLC_PRG中LS_ModbusMaster功能塊使能變量狀態來實現ModbusMaster具體操作;其中定義的幾個比較重要的變量如圖所示。
3、參數配置如下圖。
配置完成如圖所示:
使用工具Modbus Slave工具配置從站(從站參數配置,要求與主站參數一致),
詳細代碼如下:(左右滑動查看完整代碼??)
·
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=> );
配置完后后,登錄并下載程序。登錄后,寫入值,觸發xTrigger,在從站查看結果。如下圖所示。
02 / 注意事項
1、Modbus通訊配置需要在第一次執行功能塊之前配置完成,建議直接在初始值中配置及修改,不要在程序中賦值。
2、寫入數據放在arwWriteData中,讀取數據數據放在arwReadData中。
如操作寄存器,直接操作對應的word索引即可;如操作線圈,在word中按照Bit處理。
例1:使用01功能碼,讀取10個線圈,則讀取返回的數據占用arwReadData[0]的bit0-bit9。
例2:使用03功能碼,讀取10個寄存器,則讀取返回的數據占用arwReadData[0]- arwReadData[9]。
3、長度限制
1)01功能碼支持最大長度2000;
2)02功能碼支持最大長度2000;
3)03功能碼支持最大長度125;
4)04功能碼支持最大長度125
5)15功能碼支持最大長度1968;
6)16功能碼支持最大長度123。
03 / 相關變量介紹
◆ ModbusConfig(Modbus通訊配置結構體)
usiAddress:USINT:=1;//站號
usiFunctionCode:ModbusFuntionCode:=Read_Coils;//功能碼
wOffset:WORD:=0;//地址偏移
wLength:WORD:=1;//數據長度,01/02/03/04/15/16功能碼使用
xCycle:BOOL:=TRUE;//True:周期循環模式,False:觸發模式
uiCycleTime:UINT:=100;//循環時間,單位ms
xTrigger:BOOL;//觸發信號,觸發模式下使用s
byRetransmissionNumber:BYTE:=3;//重發次數
xError:BOOL:=FALSE;
ErrorCode:ModbusMasterErrorCode;
xDone:BOOL:=FALSE;//處理完成信號
arwReadData:ARRAY[0..126] OF WORD;//讀取數據緩存區,01/02/03/04功能碼使用
arwWriteData:ARRAY[0..126] OF WORD;//寫入數據緩存區,05/06/15/16功能碼使用
◆ SerialCommunicationPara (串口通訊參數結構體)
udiPort:UDINT:=3;//串口端口號
udiBaudrate:UDINT:=115200;//波特率,設置為9600
udiPARITY:COM.PARITY:=COM.PARITY.EVEN;//校驗,設置為偶校驗
udiStopBits:COM.STOPBIT:=COM.STOPBIT.ONESTOPBIT;//停止位,1位
udiTimeout:UDINT:=1000;//超時時間,單位ms
udiByteSize:UDINT:=8;//數據位
◆ 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
上一篇:什么是電解液?電解液有什么作用?
中國傳動網版權與免責聲明:凡本網注明[來源:中國傳動網]的所有文字、圖片、音視和視頻文件,版權均為中國傳動網(www.yzzhiyu.com)獨家所有。如需轉載請與0755-82949061聯系。任何媒體、網站或個人轉載使用時須注明來源“中國傳動網”,違反者本網將追究其法律責任。
本網轉載并注明其他來源的稿件,均來自互聯網或業內投稿人士,版權屬于原版權人。轉載請保留稿件來源及作者,禁止擅自篡改,違者自負版權法律責任。
產品新聞
更多>2023-12-19
KAF107-11-YVI7.5KW減速機,傘齒輪減速電...
2023-12-15
KAD89-LEN100LN4E-L32NH減速機廠家瓦瑪特
2023-12-15
2023-12-13
2023-12-07
2023-12-05