汇川使用笔记6:TCP服务端和客户端通讯

编程入门 行业动态 更新时间:2024-10-14 00:28:06

汇川使用笔记6:TCP<a href=https://www.elefans.com/category/jswz/34/1769467.html style=服务端和客户端通讯"/>

汇川使用笔记6:TCP服务端和客户端通讯

目录

一、前言

1、设备组态

2、创建任务程序文件

二、创建服务端程序

1、定义变量

2、创建服务端程序

三、创建客户端程序

1、定义变量

2、创建客户端程序

四、程序测试

1、服务端启动

2、客户端连接

 3、服务端给客户端发送数据

4、客户端给服务端发送数据

五、下载连接


一、前言

1、设备组态

2、创建任务程序文件

在Application中分别添加程序server、client,并添加到MainTask周期任务中

 

二、创建服务端程序

1、定义变量


VARServerPORT					: UINT:=2220;								//创建服务器端的端口号IP_ADR2						: NBS.IP_ADDR;				//服务器的ip地址ip							:STRING(20):='192.168.1.88';TCP_Connection				: NBS.TCP_Connection;TCP_Server_open				: NBS.TCP_Server;server_read					: NBS.TCP_Read;WRITEBUF					: NBS.TCP_Write;		readbuff					: ARRAY[0..1000]OF BYTE := [ 1000(0)];		//存储-客户端的数据		writebuff					: ARRAY[0..1000] OF BYTE:=[1000(0)];		//给客户端写数据server_en					: BOOL;										//打开服务器WRITE_EN					: BOOL;										//向客户端写数据//read功能块状态read_done					: BOOL;read_error					: BOOL;read_xerror					: BOOL;
END_VAR;

2、创建服务端程序


//PLC作为服务器
//IP_ADR2.sAddr:='192.168.1.88';				//PLC ip地址
IP_ADR2.sAddr:=ip;//服务器打开
TCP_Server_open(xEnable:=server_EN , 					//on:开启服务器xDone=> , xBusy=> , xError=> , ipAddr:=IP_ADR2 , uiPort:= ServerPORT, //端口号eError=> , hServer=> );//检测有无客户端连接
TCP_Connection(xEnable:= TCP_Server_open.xBusy, xDone=> , xBusy=> , xError=> , hServer:= TCP_Server_open.hServer, eError=> , xActive=> , hConnection=> );//read
server_read(xEnable:=TCP_Connection.xActive , xDone=>read_done , xBusy=> , xError=>read_xerror , hConnection:=TCP_Connection.hConnection , szSize:=SIZEOF(readbuff) , pData:=ADR(readbuff) , eError=> , xReady=> , szCount=> );//WRITE
WRITEBUF(xExecute:= write_en , udiTimeOut:= 3000,xDone=> , xBusy=> , xError=> , hConnection:= TCP_Connection.hConnection , szSize:= SIZEOF(writebuff), pData:=ADR(writebuff) , eError=> );IF WRITEBUF.xDone THENWRITE_EN:=FALSE;END_IF

三、创建客户端程序

1、定义变量

VARClientPORT:							UINT:=2220;IP_ADR1								:NBS.IP_ADDR;ip									:STRING(20):='192.168.1.88';TCP_connect							:NBS.TCP_Client;	client_tcp_READ						:NBS.TCP_Read;client_TCP_write					:NBS.TCP_Write;client_READ_BUF						:ARRAY[0..1000] OF BYTE;     	//读取数据缓存区client_Write_BUF					:ARRAY[0..1000] OF BYTE;   		//要写的数据缓存区START								:BOOL;    						//连接服务器client_Write_en						:BOOL;//Client相关状态connectxdone						:BOOL;connectxerror						:BOOL;write_xdone							:BOOL;write_xerror						:BOOL;read_xdone							:BOOL;read_xerror							:BOOL;
END_VAR

2、创建客户端程序


//IP_ADR1.sAddr:='192.168.1.88';//   要连接的服务器ip 地址
IP_ADR1.sAddr:=ip;//PLC作为客户端连接服务器
TCP_connect
(xEnable:=START, //start on连接服务器xDone=>connectxdone , xBusy=> , xError=>connectxerror , udiTimeOut:=30000, ipAddr:=IP_ADR1,uiPort:=ClientPORT , eError=> , xActive=>, hConnection=>  );//客户端往服务器写数据	client_TCP_write(xExecute:= client_Write_en, //write_en  上升沿 将pl 数组里数据发送到服务器udiTimeOut:=1000 , xDone=>write_xdone , xBusy=> , xError=> , hConnection:=TCP_connect.hConnection , szSize:=100 , //发送数据大小pData:=ADR(client_Write_BUF) , eError=> );
IF(client_TCP_write.xDone) THEN
client_Write_en:=FALSE	;
END_IFclient_TCP_READ(xEnable:=TCP_connect.xActive , xDone=>read_xdone , xBusy=> , //接收过程为0n 接收结束offxError=>read_xerror , hConnection:=TCP_connect.hConnection , szSize:= 2000, pData:=ADR(client_READ_BUF) , eError=> , xReady=> , szCount=> ,);//接收的数据个数);

四、程序测试

1、服务端启动

server_EN设置为TRUE,

2、客户端连接

START设置为TRUE,connectxerror为FALSE,表示连接服务器成功

 3、服务端给客户端发送数据

writebuff数组前五个变量赋值

 然后WRITE_EN设置TRUE写操作(程序中检测WRITE_EN为TRUE立即修改为FALSE)

 在客户端中可以看到成功接收到服务端发送的数据(客户端读功能块默认在连接成功的情况下就读取操作)

4、客户端给服务端发送数据

client_Write_BUF前五个变量赋值

 给client_Write_en设置TRUE

 在服务端看到成功读取到的客户端所发送的数据

五、下载连接

更多推荐

汇川使用笔记6:TCP服务端和客户端通讯

本文发布于:2024-03-23 22:20:39,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1743507.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:服务端   客户端   通讯   笔记   TCP

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!