国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

TwinCAT3 Modbus-TCP Client/Server使用

這篇具有很好參考價值的文章主要介紹了TwinCAT3 Modbus-TCP Client/Server使用。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

目錄

一、環(huán)境配置和準備

1、PLC中安裝TF6250-Modbus-TCP庫

2、勾選TF6250的license

3、PLC工程中添加Tc2_ModbusSrv庫文件

4、分別創(chuàng)建測試ModbusTCP測試的Server和Client程序

二、PLC作為Client端

1、設置測試電腦IP地址

2、運行MobusTCP測試工具

3、PLC端程序編寫

(1)讀取離散量輸入

(2)讀取線圈

(3)單個線圈寫操作

(4)多個線圈寫操作

(5)讀取輸入寄存器值

(6)讀取保持寄存器值

(7)單個保持寄存器寫操作

(8)多個保持寄存器寫操作

三、PLC作為Server端

1、PLC程序

(1)寄存器變量定義

2、Client客戶端工具

3、通訊測試

(1)客戶端寫操作

四、PLC中使用服務端和客戶端程序進行寄存器操作

1、PLC程序

(1)服務端程序

(2)客戶端程序

2、通訊測試

(1)寄存器說明

(2)PLC的Client程序讀操作

(3)PLC的Client程序?qū)懖僮?/p>

五、測試工程下載


一、環(huán)境配置和準備

1、PLC中安裝TF6250-Modbus-TCP庫

PLC地址

twincat3 mb_client mb_server,tcp/ip,網(wǎng)絡,服務器

安裝庫文件

twincat3 mb_client mb_server,tcp/ip,網(wǎng)絡,服務器

PLC硬件環(huán)境設置、庫文件安裝、防火墻設置等,參見博客文章:TwinCAT3中ModbusTCP Server和C# Client連接-CSDN博客

2、勾選TF6250的license

twincat3 mb_client mb_server,tcp/ip,網(wǎng)絡,服務器

3、PLC工程中添加Tc2_ModbusSrv庫文件

twincat3 mb_client mb_server,tcp/ip,網(wǎng)絡,服務器

4、分別創(chuàng)建測試ModbusTCP測試的Server和Client程序

將創(chuàng)建的程序添加到Task中。

twincat3 mb_client mb_server,tcp/ip,網(wǎng)絡,服務器

二、PLC作為Client端

1、設置測試電腦IP地址

測試電腦IP地址和PLC的IP地址在一個網(wǎng)段內(nèi)。

twincat3 mb_client mb_server,tcp/ip,網(wǎng)絡,服務器

2、運行MobusTCP測試工具

使用測試工具ModSim32,創(chuàng)建ModbusTCP Server服務端。端口號默認502,測試軟件默認IP地址是計算機本地地址。

twincat3 mb_client mb_server,tcp/ip,網(wǎng)絡,服務器

twincat3 mb_client mb_server,tcp/ip,網(wǎng)絡,服務器

3、PLC端程序編寫

定義變量:ModbusTCP Server服務端ip地址

Server_IpAddress	:STRING:='192.168.1.33';        //ModbusTCP Server服務端ip地址

(1)讀取離散量輸入

定義變量

	02: Input Status 讀取//
	fbReadInputs      : FB_MBReadInputs;						(*讀取離散量輸入功能塊*)
	bReadInputs       : BOOL;									(*讀取離散量輸入執(zhí)行條件*)
 	nQuantityinput    : WORD:=1 ;								(*讀取離散量輸入個數(shù)*)
 	nMBAddrinput      : WORD:=1 ;								(*讀取離散量輸入起始地址*)
 	arrDatainput      : BYTE;									(*存放離散量輸入的值*)

程序

nUnitID:Modbus-Tcp從站號。如果實際中不知道從站號多少,默認寫1就行。

twincat3 mb_client mb_server,tcp/ip,網(wǎng)絡,服務器

fbReadInputs(
	//sIPAddr:='169.254.0.1' , 				//modsim32的IP地址
	sIPAddr:=Server_IpAddress , 				//modsim32的IP地址
	nTCPPort:=502, 							//Modbus-Tcp端口號
	nUnitID:=1 , 							//Modbus-Tcp從站號
	nQuantity:=nQuantityinput , 			//讀取離散量輸入個數(shù)
	nMBAddr:= nMBAddrinput, 				//讀取離散量輸入 Modbus起始地址
	cbLength:= SIZEOF(arrDatainput), 		//存放離散量輸入變量的個數(shù)
	pDestAddr:=ADR(arrDatainput), 			//存放離散量輸入變量指針起始地址
	bExecute:=bReadInputs , 				//讀取離散量輸入執(zhí)行條件
	tTimeout:=T#1S ,    
	bBusy=> , 
	bError=> , 
	nErrId=> , 
	cbRead=> );

運行測試1,單個離散量讀操作:

對10002寫1

twincat3 mb_client mb_server,tcp/ip,網(wǎng)絡,服務器

PLC讀取

讀取個數(shù)是1,nQuantityinput值為1

起始地址nMBAddrinput寫1對應的寄存器是10002。離散變量實際地址=10001+nMBAddrinput

twincat3 mb_client mb_server,tcp/ip,網(wǎng)絡,服務器

讀取

twincat3 mb_client mb_server,tcp/ip,網(wǎng)絡,服務器

運行測試2,多個離散量讀操作:

對10002寫1、10003寫1、10004寫1

twincat3 mb_client mb_server,tcp/ip,網(wǎng)絡,服務器

PLC讀取

設置讀取個數(shù)是3。讀取出來的值是7。(三個位都為1,就是7)

twincat3 mb_client mb_server,tcp/ip,網(wǎng)絡,服務器

(2)讀取線圈

定義變量

    fbReadCoils       			: FB_MBReadCoils;				(*讀取線圈功能塊*) 
 	bReadCoils        			: BOOL; 						(*讀取線圈執(zhí)行條件*)      
 	nQuantitycoils    			: WORD :=3;  					(*讀取線圈個數(shù)*) 
 	nMBAddrcoils      			: WORD :=1;  					(*讀取線圈起始地址*) 
 	arrDatacoils      			: BYTE;							(*存放線圈的值*)

PLC程序

fbReadCoils(
	//sIPAddr:='169.254.0.1' , 				//modsim32的IP地址
	sIPAddr:=Server_IpAddress , 				//modsim32的IP地址
	nTCPPort:=502 ,							//Modbus-Tcp端口號 
	nUnitID:=1 , 							//Modbus-Tcp從站號
	nQuantity:=nQuantitycoils , 			//讀取線圈個數(shù)
	nMBAddr:=nMBAddrcoils , 				//讀取線圈 Modbus起始地址
	cbLength:=SIZEOF(arrDatacoils) , 		//存放線圈變量的個數(shù)
	pDestAddr:=ADR(arrDatacoils) , 			//存放線圈變量指針起始地址
	bExecute:=bReadCoils , 					//讀取線圈執(zhí)行條件
	tTimeout:= T#1S, 
	bBusy=> , 
	bError=>, 
	nErrId=> , 
	cbRead=> );

運行測試,多個線圈讀操作:

對線圈00005/00006/0007/0008/00009寫1操作

twincat3 mb_client mb_server,tcp/ip,網(wǎng)絡,服務器

PLC

nMBAddrcoils:讀取線圈的地址

nQuantitycoils:讀取的線圈個數(shù)

線圈的實際地址=00001+nMBAddrcoils。

00005對應的nMBAddrcoils地址設置就是4。

twincat3 mb_client mb_server,tcp/ip,網(wǎng)絡,服務器

5個線圈的值都是ON,即31

twincat3 mb_client mb_server,tcp/ip,網(wǎng)絡,服務器

PLC中數(shù)據(jù)顯示,2進制、10進制、16進制顯示設置

twincat3 mb_client mb_server,tcp/ip,網(wǎng)絡,服務器

(3)單個線圈寫操作

定義變量

    fbWriteSingleCoil       	: FB_MBWriteSingleCoil;			(*寫入單個線圈功能塊*)
 	bWriteSingleCoil            : BOOL;							(*寫入單個線圈執(zhí)行條件*)
 	nMBAddrWriteSingleCoil      : WORD := 3;					(*寫入單個線圈Modbus 地址*)
 	nValueWriteSingleCoil       : WORD := 16#FF00;				(*16#FF00:True;16#0000:False*)

PLC程序

fbWriteSingleCoil(
	//sIPAddr:='169.254.0.1' , 				//modsim32的IP地址
	sIPAddr:=Server_IpAddress , 				//modsim32的IP地址
	nTCPPort:= 502, 						//Modbus-Tcp端口號
	nUnitID:= 1, 							//Modbus-Tcp從站號
	nMBAddr:=nMBAddrWriteSingleCoil , 		//寫入單個線圈Modbus起始地址
	nValue:=nValueWriteSingleCoil , 		//寫入單個線圈的值:16#FF00:True;16#0000:False
	bExecute:=bWriteSingleCoil , 			//寫入單個線圈執(zhí)行條件
	tTimeout:=T#1S , 
	bBusy=> , 
	bError=> , 
	nErrId=> );

運行測試,單個線圈寫操作:

對線圈00004寫操作

twincat3 mb_client mb_server,tcp/ip,網(wǎng)絡,服務器

線圈地址nMBAddrWriteSingleCoil值設置:3。(線圈地址=00001+nMBAddrWriteSingleCoil)

nValueWriteSingleCoil值設置:

TRUE:16#FF00,即10進制65280。

FALSE:16#0000,即10進制0。

twincat3 mb_client mb_server,tcp/ip,網(wǎng)絡,服務器

(4)多個線圈寫操作

變量定義

  	fbWriteCoils       			: FB_MBWriteCoils;				(*寫入線圈功能塊*)
  	bWriteCoils      			: BOOL;							(*寫入線圈執(zhí)行條件*)
  	nQuantityWriteCoils 		: WORD := 10;					(*寫入離散量輸入個數(shù)*)
  	nMBAddrWriteCoils   		: WORD := 14;					(*寫入離散量輸入起始地址*)
  	arrDataWriteCoils   		: ARRAY[1..2] OF  BYTE  := [16#11, 16#33];(*寫入離散量輸入的值*)

PLC程序

fbWriteCoils(
	//sIPAddr:='169.254.0.1' , 				//modsim32的IP地址
	sIPAddr:=Server_IpAddress , 				//modsim32的IP地址
	nTCPPort:=502, 							//Modbus-Tcp端口號
	nUnitID:=1 , 							//Modbus-Tcp從站號
	nQuantity:= nQuantityWriteCoils , 		//寫入線圈個數(shù)
	nMBAddr:=nMBAddrWriteCoils , 			//寫入線圈Modbus起始地址
	cbLength:=SIZEOF(arrDataWriteCoils), 	//寫入線圈的變量個數(shù)
	pSrcAddr:=ADR(arrDataWriteCoils), 		//寫入線圈的變量指針起始地址
	bExecute:=bWriteCoils , 				//寫入線圈的執(zhí)行條件
	tTimeout:=T#1S , 
	bBusy=> , 
	bError=> , 
	nErrId=> );

運行測試,多個線圈寫操作:

寫16個線圈,線圈地址從00006開始。(00001+nMBAddrWriteCoils,nMBAddrWriteCoils設置值為5)。

1個BYTE是8位,8位都是1即BYTE值是255。

BYTE數(shù)組arrDataWriteCoils長度為2、即16位。最多可以寫16個線圈操作。

注意:的線圈BYTE個數(shù)要和數(shù)組長度相同,16個線圈2個BYTE。對應否則會報錯。)

twincat3 mb_client mb_server,tcp/ip,網(wǎng)絡,服務器

twincat3 mb_client mb_server,tcp/ip,網(wǎng)絡,服務器

(5)讀取輸入寄存器值

變量定義

    fbReadInputRegs    : FB_MBReadInputRegs;		(*讀取輸入寄存器功能塊*)
 	bReadInputRegs     : BOOL;						(*讀取輸入寄存器執(zhí)行條件*)
 	nQuantityInputRegs : WORD := 3;					(*讀取輸入寄存器個數(shù)*)
 	nMBAddrInputRegs   : WORD:= 2;					(*讀取輸入寄存器起始地址*)
 	arrDataInputRegs   : ARRAY [1..3] OF WORD;		(*存放輸入寄存器的值*)

PLC程序

fbReadInputRegs(
	//sIPAddr:='169.254.0.1' , 				//modsim32的IP地址
	sIPAddr:=Server_IpAddress , 				//modsim32的IP地址
	nTCPPort:=502, 							//Modbus-Tcp端口號
	nUnitID:=1, 							//Modbus-Tcp從站號
	nQuantity:=nQuantityInputRegs, 			//讀取輸入寄存器個數(shù)
	nMBAddr:=nMBAddrInputRegs  , 			//讀取輸入寄存器Modbus起始地址
	cbLength:= SIZEOF(arrDataInputRegs),	//存放輸入寄存器變量的個數(shù)和指針起始地址
	pDestAddr:=ADR(arrDataInputRegs), 		//存放輸入寄存器變量指針起始地址
	bExecute:= bReadInputRegs  , 			//讀取輸入寄存器執(zhí)行條件
	tTimeout:=T#1S , 
	bBusy=> , 
	bError=> , 
	nErrId=> , 
	cbRead=> );

運行測試,多個輸入寄存器讀操作:

給30003、30004、30005賦值

twincat3 mb_client mb_server,tcp/ip,網(wǎng)絡,服務器

PLC讀

寄存器地址30003=30001+nMBAddrInputRegs,nMBAddrInputRegs設置值2

多三個寄存器

注意:讀的寄存器個數(shù)要和數(shù)組長度相同,否則會報錯。)

twincat3 mb_client mb_server,tcp/ip,網(wǎng)絡,服務器

(6)讀取保持寄存器值

變量定義:

    fbReadRegs        			: FB_MBReadRegs;				(*讀取保持寄存器功能塊*)
 	bReadRegs         			: BOOL;     					(*讀取保持寄存器執(zhí)行條件*) 
 	nQuantityregs     			: WORD:=2;   					(*讀取保持寄存器個數(shù)*)
 	nMBAddrregs       			: WORD:=24;   					(*讀取保持寄存器起始地址*)
 	arrDataregs       			: ARRAY [1..2] OF WORD;			(*存放保持寄存器的值*)

PLC程序:

fbReadRegs(
	//sIPAddr:='169.254.0.1' , 				//modsim32的IP地址
	sIPAddr:=Server_IpAddress , 				//modsim32的IP地址
	nTCPPort:=502,							//Modbus-Tcp端口號
	nUnitID:= 1, 							//Modbus-Tcp從站號
	nQuantity:=nQuantityregs, 				//讀取保持寄存器個數(shù)
	nMBAddr:=nMBAddrregs , 					//讀取保持寄存器Modbus起始地址
	cbLength:=SIZEOF(arrDataregs) , 		//存放保持寄存器變量的個數(shù)
	pDestAddr:=ADR(arrDataregs) , 			//存放保持寄存器變量指針起始地址
	bExecute:=bReadRegs, 					//讀取保持寄存器執(zhí)行條件
	tTimeout:= T#1S , 
	bBusy=> , 
	bError=> , 
	nErrId=> , 
	cbRead=> );

運行測試,多個保持寄存器讀操作:

讀保持寄存器40005、40006

twincat3 mb_client mb_server,tcp/ip,網(wǎng)絡,服務器

寄存器首地址40005=40001+nMBAddrregs,設置nMBAddrregs值為4。讀兩個寄存器。

注意:讀的寄存器個數(shù)要和數(shù)組長度相同,否則會報錯。)

twincat3 mb_client mb_server,tcp/ip,網(wǎng)絡,服務器

(7)單個保持寄存器寫操作

變量定義:

 	fbWriteSingleReg            : FB_MBWriteSingleReg;			(*寫入單個寄存器功能塊*)
 	bWriteSingleReg             : BOOL;							(*寫入單個寄存器執(zhí)行條件*)
 	nMBAddrSingleReg            : WORD := 4;					(*寫入單個寄存器Modbus 地址*)
 	nValueSingleReg             : WORD := 16#1234;				(*寫入單個寄存器數(shù)值*)

PLC程序:

fbWriteSingleReg(
	//sIPAddr:='169.254.0.1' , 				//modsim32的IP地址
	sIPAddr:=Server_IpAddress , 				//modsim32的IP地址
	nTCPPort:=502, 							//Modbus-Tcp端口號
	nUnitID:=1 , 							//Modbus-Tcp從站號
	nMBAddr:=nMBAddrSingleReg, 				//寫入單個保持寄存器起始地址
	nValue:=nValueSingleReg, 				//寫入單個寄存器數(shù)值
	bExecute:=bWriteSingleReg , 			//寫入單個寄存器的執(zhí)行條件
	tTimeout:=T#1S , 
	bBusy=> , 
	bError=> , 
	nErrId=> );	

運行測試,單個保持寄存器寫操作:

寫保持寄存器40005。40005=40001+nMBAddrSingleReg,設置nMBAddrSingleReg值為4

twincat3 mb_client mb_server,tcp/ip,網(wǎng)絡,服務器

twincat3 mb_client mb_server,tcp/ip,網(wǎng)絡,服務器

(8)多個保持寄存器寫操作

變量定義:

  	fbWriteRegs         		: FB_MBWriteRegs;				(*寫入保持寄存器功能塊*)
  	bWriteRegs          		: BOOL;							(*寫入保持寄存器個數(shù)*)
  	nQuantityWriteRegs  		: WORD := 4;					(*寫入保持寄存器個數(shù)*)
  	nMBAddrWriteRegs    		: WORD := 4;					(*寫入保持寄存器起始地址*)
  	arrDataWriteRegs			: ARRAY[1..4] OF WORD := [1122, 3344, 5566, 7788];(*寫入保持寄存器的值*)

PLC程序:

fbWriteRegs(
	//sIPAddr:='169.254.0.1' , 				//modsim32的IP地址
	sIPAddr:=Server_IpAddress , 				//modsim32的IP地址
	nTCPPort:=502, 							//Modbus-Tcp端口號
	nUnitID:=1 ,							//Modbus-Tcp從站號
	nQuantity:=nQuantityWriteRegs , 		//寫入保持寄存器個數(shù)
	nMBAddr:= nMBAddrWriteRegs , 			//寫入保持寄存器起始地址
	cbLength:= SIZEOF(arrDataWriteRegs), 	//寫入變量的個數(shù)和指針起始地址
	pSrcAddr:=ADR(arrDataWriteRegs) , 		//寫入變量指針起始地址
	bExecute:= bWriteRegs , 				//寫入保持寄存器的執(zhí)行條件
	tTimeout:=T#1S  , 
	bBusy=> , 
	bError=> , 
	nErrId=> );

運行測試,多個保持寄存器寫操作:

寫保持寄存器40003、40004、40005,寄存器首地址40003=40001+nMBAddrWriteRegs,設置nMBAddrWriteRegs值2

注意:寄存器個數(shù)要和數(shù)組長度相同,否則會報錯。)

twincat3 mb_client mb_server,tcp/ip,網(wǎng)絡,服務器

twincat3 mb_client mb_server,tcp/ip,網(wǎng)絡,服務器

三、PLC作為Server端

1、PLC程序

(1)寄存器變量定義

    arr1							AT%MB0			:ARRAY[1..5]		OF		WORD;		//起始地址是12289
	arr2							AT%MB10			:ARRAY[1..10]		OF		WORD;		//起始地址是12294

2、Client客戶端工具

使用測試工具ModScan32模擬ModbusTCP Client客戶端。

打開ModScan32

twincat3 mb_client mb_server,tcp/ip,網(wǎng)絡,服務器

根據(jù)Server服務端PLC 中定義的寄存器,做如下設置

MB0對應的起始地址是12289。

寄存器說明:一個MW寄存器對應兩個MB寄存器,比如MW0是MB0、MB1組成。一個12289對應一個MW0寄存器,即對應MB0、MB1。

twincat3 mb_client mb_server,tcp/ip,網(wǎng)絡,服務器

3、通訊測試

(1)客戶端寫操作

客戶端ModScan32對服務端PLC的寄存器寫操作

twincat3 mb_client mb_server,tcp/ip,網(wǎng)絡,服務器

PLC服務端接收的

twincat3 mb_client mb_server,tcp/ip,網(wǎng)絡,服務器

(2)PLC服務端寫操作

PLC寄存器寫

twincat3 mb_client mb_server,tcp/ip,網(wǎng)絡,服務器

客戶端ModScan32接收的

twincat3 mb_client mb_server,tcp/ip,網(wǎng)絡,服務器

四、PLC中使用服務端和客戶端程序進行寄存器操作

1、PLC程序

(1)服務端程序

PLC服務端程序不變,就定義讀寫的寄存器變量

變量定義

    arr1							AT%MB0			:ARRAY[1..5]		OF		WORD;		//起始地址是12289
	arr2							AT%MB10			:ARRAY[1..10]		OF		WORD;		//起始地址是12294

(2)客戶端程序

變量定義

Server_IpAddress	:STRING:='192.168.1.21';
	03: Holding Register 讀取&寫入
 	fbReadRegs        			: FB_MBReadRegs;				(*讀取保持寄存器功能塊*)
 	bReadRegs         			: BOOL;     					(*讀取保持寄存器執(zhí)行條件*) 
 	nQuantityregs     			: WORD:=5;   					(*讀取保持寄存器個數(shù)*)
 	nMBAddrregs       			: WORD:=12288;   				(*讀取保持寄存器起始地址*)			//	寄存器地址=40001+nMBAddrregs
 	arrDataregs       			: ARRAY [1..5] OF WORD;			(*存放保持寄存器的值*)
  
  	fbWriteRegs         		: FB_MBWriteRegs;				(*寫入保持寄存器功能塊*)
  	bWriteRegs          		: BOOL;							(*寫入保持寄存器個數(shù)*)
  	nQuantityWriteRegs  		: WORD := 10;					(*寫入保持寄存器個數(shù)*)
  	nMBAddrWriteRegs    		: WORD := 12294;				(*寫入保持寄存器起始地址*)			//	寄存器地址=40001+nMBAddrWriteRegs
  	arrDataWriteRegs			: ARRAY[1..10] OF WORD := [11, 22, 33, 44,55,66,77,88,99,100];		(*寫入保持寄存器的值*)
  
 	fbWriteSingleReg            : FB_MBWriteSingleReg;			(*寫入單個寄存器功能塊*)
 	bWriteSingleReg             : BOOL;							(*寫入單個寄存器執(zhí)行條件*)
 	nMBAddrSingleReg            : WORD := 4;					(*寫入單個寄存器Modbus 地址*)
 	nValueSingleReg             : WORD := 16#1234;				(*寫入單個寄存器數(shù)值*)
//

PLC程序

fbReadRegs(
	//sIPAddr:='169.254.0.1' , 				//modsim32的IP地址
	sIPAddr:=Server_IpAddress , 				//modsim32的IP地址
	nTCPPort:=502,							//Modbus-Tcp端口號
	nUnitID:= 1, 							//Modbus-Tcp從站號
	nQuantity:=nQuantityregs, 				//讀取保持寄存器個數(shù)
	nMBAddr:=nMBAddrregs , 					//讀取保持寄存器Modbus起始地址
	cbLength:=SIZEOF(arrDataregs) , 		//存放保持寄存器變量的個數(shù)
	pDestAddr:=ADR(arrDataregs) , 			//存放保持寄存器變量指針起始地址
	bExecute:=bReadRegs, 					//讀取保持寄存器執(zhí)行條件
	tTimeout:= T#1S , 
	bBusy=> , 
	bError=> , 
	nErrId=> , 
	cbRead=> );
	
fbWriteRegs(
	//sIPAddr:='169.254.0.1' , 				//modsim32的IP地址
	sIPAddr:=Server_IpAddress , 				//modsim32的IP地址
	nTCPPort:=502, 							//Modbus-Tcp端口號
	nUnitID:=1 ,							//Modbus-Tcp從站號
	nQuantity:=nQuantityWriteRegs , 		//寫入保持寄存器個數(shù)
	nMBAddr:= nMBAddrWriteRegs , 			//寫入保持寄存器起始地址
	cbLength:= SIZEOF(arrDataWriteRegs), 	//寫入變量的個數(shù)和指針起始地址
	pSrcAddr:=ADR(arrDataWriteRegs) , 		//寫入變量指針起始地址
	bExecute:= bWriteRegs , 				//寫入保持寄存器的執(zhí)行條件
	tTimeout:=T#1S  , 
	bBusy=> , 
	bError=> , 
	nErrId=> );
		
fbWriteSingleReg(
	//sIPAddr:='169.254.0.1' , 				//modsim32的IP地址
	sIPAddr:=Server_IpAddress , 				//modsim32的IP地址
	nTCPPort:=502, 							//Modbus-Tcp端口號
	nUnitID:=1 , 							//Modbus-Tcp從站號
	nMBAddr:=nMBAddrSingleReg, 				//寫入單個保持寄存器起始地址
	nValue:=nValueSingleReg, 				//寫入單個寄存器數(shù)值
	bExecute:=bWriteSingleReg , 			//寫入單個寄存器的執(zhí)行條件
	tTimeout:=T#1S , 
	bBusy=> , 
	bError=> , 
	nErrId=> );	

2、通訊測試

(1)寄存器說明

一個MW寄存器對應兩個MB寄存器,比如MW0對應12289、12289對應MB0、MB1

PLC 客戶端程序中變量

讀寄存器地址=40001+nMBAddrregs? ? ? ? 則MB0對應設置nMBAddrregs12288

寫寄存器地址=40001+nMBAddrWriteRegs? ? ? ??

(2)PLC的Client程序讀操作

先給服務端的寄存器賦值

twincat3 mb_client mb_server,tcp/ip,網(wǎng)絡,服務器

PLCServer程序讀

twincat3 mb_client mb_server,tcp/ip,網(wǎng)絡,服務器

(3)PLC的Client程序?qū)懖僮?/h4>

PLC客戶端寫寄存器

twincat3 mb_client mb_server,tcp/ip,網(wǎng)絡,服務器

PLC服務端接收到客戶端寫的寄存器

twincat3 mb_client mb_server,tcp/ip,網(wǎng)絡,服務器

五、測試工程下載

https://download.csdn.net/download/panjinliang066333/88609166

工程包括:

twincat3 mb_client mb_server,tcp/ip,網(wǎng)絡,服務器

(1)客戶端、服務端PLC程序

(2)TF6250-Modbus-TCP庫文件安裝軟件

(3)ModbusTCP測試工具

模擬客戶端:modscan32

模擬服務端:modsim32

(4)倍福官方簡單測試參考文章來源地址http://www.zghlxwxcb.cn/news/detail-792973.html

到了這里,關于TwinCAT3 Modbus-TCP Client/Server使用的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • MODBUS-TCP協(xié)議簡介與編程流程圖

    MODBUS-TCP協(xié)議簡介與編程流程圖

    ??本文主要目的是為了寫一個簡單的MODBUS-TCP服務器-客戶端程序而記錄的知識點,里面包含了編程所需要的必要背景知識和協(xié)議解析流程圖。 ??MODBUS有四種基本數(shù)據(jù)類型: ?? 離散量輸入 :客戶端只能讀取它,由服務器提供,占1個比特位,可以傳輸現(xiàn)實中的開關量輸入

    2023年04月08日
    瀏覽(67)
  • Java與Modbus-TCP/IP網(wǎng)絡通訊

    通過Java與Modbus-TCP/IP網(wǎng)絡通訊實現(xiàn)舉例5中的功能

    2024年02月10日
    瀏覽(31)
  • Python 解析HJ212-2017并輸出Modbus-TCP

    Python 解析HJ212-2017并輸出Modbus-TCP

    功能: ? 利用python開啟服務端口,接受來著環(huán)保數(shù)采儀上傳的HJ212-2017報文數(shù)據(jù),解析后并輸出Modbus-TCP給上位機或PLC讀取,可同時連10個主站。 應用場景: 污水廠進出水在線監(jiān)測環(huán)保數(shù)采儀的數(shù)據(jù)協(xié)議轉(zhuǎn)換成通用標準協(xié)議。 本次實驗由于沒有數(shù)采儀只能通過TCP客戶端模擬報

    2024年02月02日
    瀏覽(71)
  • 用Python采用Modbus-Tcp的方式讀取485電子水尺數(shù)據(jù)

    用Python采用Modbus-Tcp的方式讀取485電子水尺數(shù)據(jù)

    使用Python開發(fā)服務器程序,實現(xiàn)以下功能: 采用問詢的方式讀取各類傳感器數(shù)據(jù) 正確高速解析各類傳感器的數(shù)據(jù) 存儲解析后的各類傳感器數(shù)據(jù) 存儲程序運行過程中的log 管理log,超過一定量、一定時間自動刪除log 打包發(fā)布 或者 在后臺運行py服務器程序 該傳感器支持485通信

    2024年02月16日
    瀏覽(25)
  • 用Python采用Modbus-Tcp的方式讀取PLC模塊數(shù)據(jù)

    用Python采用Modbus-Tcp的方式讀取PLC模塊數(shù)據(jù)

    使用計算器得到需要的寄存器地址 這里PLC地址是83,對應的程序16進制讀取地址是53 實際上由于PLC地址從1開始,所以這里實際地址應該是52,因為計算機從0開始 使用網(wǎng)絡調(diào)試助手生成報文 使用Python中的內(nèi)置函數(shù)int()。以下是將人員卡號’b’3b44’\\\'轉(zhuǎn)換為十進制的示例代碼: 使

    2024年02月16日
    瀏覽(30)
  • CCLINK轉(zhuǎn)MODBUS-TCP網(wǎng)關cclink通訊接線圖 終端電阻

    CCLINK轉(zhuǎn)MODBUS-TCP網(wǎng)關cclink通訊接線圖 終端電阻

    大家好,今天我們要聊的是生產(chǎn)管理系統(tǒng)中的CCLINK和MODBUS-TCP協(xié)議,它們的不同使得數(shù)據(jù)互通比較困難,但捷米JM-CCLK-TCP網(wǎng)關的出現(xiàn)改變了這一切。 1捷米JM-CCLK-TCP是一款自主研發(fā)的CCLINK從站功能的通訊網(wǎng)關,它的主要功能是將各種MODBUS-TCP設備接入到CCLINK總線中。網(wǎng)關連接到C

    2024年02月13日
    瀏覽(27)
  • MFC+Modbus-Tcp協(xié)議實現(xiàn)溫濕度傳感器采集
二、libmodbus驅(qū)動庫

    MFC+Modbus-Tcp協(xié)議實現(xiàn)溫濕度傳感器采集 二、libmodbus驅(qū)動庫

    本文簡單介紹 MFC 使用 Modbus -Tcp通信實現(xiàn) RS-WS-ETH-6 系列 MODBUSTCP 型溫濕度傳感器采集數(shù)據(jù)。 ?一文看懂Modbus協(xié)議:一文看懂Modbus協(xié)議 ?libmodbus驅(qū)動庫的使用:Modbus驅(qū)動庫—libmodbus驅(qū)動庫的使用_whik1194的博客-CSDN博客_libmodbus ?modbus 中文手冊: libmodbus官方手冊中文翻譯_躍動的風

    2024年02月02日
    瀏覽(75)
  • ADS Return-Codes | 倍福TwinCAT3 Ads錯誤碼列表

    Hex Dec Description 0x000 0 no error 0x001 1 Internal error 0x002 2 No Rtime 0x003 3 Allocation locked memory error 0x004 4 Insert mailbox error 0x005 5 Wrong receive HMSG 0x006 6 target port not found 0x007 7 target machine not found 0x008 8 Unknown command ID 0x009 9 Bad task ID 0x00A 10 No IO 0x00B 11 Unknown AMS command 0x00C 12 Win 32 error 0x00D 13 Por

    2024年02月10日
    瀏覽(28)
  • python tcp server client示例代碼

    功能:?實現(xiàn)基本的tcp server端、client端,并引入threading,?保證兩端任意鏈接、斷鏈接,保證兩端的穩(wěn)定運行 IP說明: server不輸入IP,默認為本機的IP,client需要輸入要鏈接的server端的IP 端口說明:server, client端保持一致 ADB調(diào)試說明:在連接數(shù)據(jù)線的情況下,PC安裝ADB調(diào)試工具,

    2024年02月09日
    瀏覽(20)
  • unreal engine c++ 創(chuàng)建tcp server, tcp client

    TCP客戶端 TcpConnect.h TcpConnect.cpp tcp server cpp FTcpServerReceive h cpp 在 GameInstance 使用

    2024年02月14日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包