目录
一、TwinCAT3以太网TCP/IP客户端创建
1、系统连接示意图
1、程序创建
(1)工程创建和授权添加
(2)库文件添加
(3)变量创建
(4)程序
2、测试
(1)网络调试助手创建服务端监听
(2)PLC端的Client连接服务端
(3)PLC端给服务端发送数据
(4)服务端给PLC发送数据
二、TwinCAT3以太网TCP/IP服务端创建
1、系统连接示意图
2、程序创建
(1)变量创建
(2)程序
3、测试
(1)Listen、客户端连接
(2)服务端中Accept接收请求
(3)服务端和客户端之间相互发送数据
三、工程下载连接
1、 TwinCAT3以太网TCP/IP客户端测试程序
2、 TwinCAT3以太网TCP/IP服务端测试程序
测试之前需要在PLC的window系统里安装TCP/IP软件吧包,安装完成关电重启。安装包在提供的工程下载连接中。
一、TwinCAT3以太网TCP/IP客户端创建
1、系统连接示意图
PLC作为客户端去连接TCP服务端。
1、程序创建
(1)工程创建和授权添加
创建TwinCAT3工程,创建PLC程序,在配置模式下进行IO扫描。License中勾选TCP/IP授权,7天免费试用。
(2)库文件添加
实验需要用到4个功能块,分别是FB_SocketConnect(用于建立连接),FB_SocketSend(用于发送),FB_SocketReceive(用于接收),FB_SocketClose(用于关闭连接)
(3)变量创建
PROGRAM SocketClient
VAR
_FB_SocketConnect: FB_SocketConnect; //用于建立连接
_FB_SocketSend: FB_SocketSend; //用于发送
_FB_SocketReceive: FB_SocketReceive; //用于接收
_FB_SocketClose: FB_SocketClose; //用于关闭连接
_hSocket: T_HSOCKET; //Socket连接句柄
_ServerIpAddress: T_IPv4Addr:='192.168.1.33'; //要连接Socket Server的ip地址
_ServerPort: UDINT:=6666;
bConnect: BOOL;
bSend: BOOL;
//bRecevie: BOOL;
bClose: BOOL;
boConnectErr: BOOL;
nSendByteLength: UDINT:=9; //需要发送的字节数
//nReceiveByteLength: UDINT:=20;
arrSendData: ARRAY[1..10] OF BYTE;
arrrReceiveData: ARRAY[1..100] OF BYTE;
Timer1: TON;
Send_R_TRIG: R_TRIG;
END_VAR
(4)程序
arrSendData[1] := 16#11;
arrSendData[2] := 16#22;
arrSendData[3] := 16#33;
arrSendData[4] := 16#44;
arrSendData[5] := 16#55;
arrSendData[6] := 16#66;
arrSendData[7] := 16#77;
arrSendData[8] := 16#88;
arrSendData[9] := 16#99;
arrSendData[10] := 16#A0;
//
_FB_SocketConnect(
sSrvNetId:= ,
sRemoteHost:= _ServerIpAddress, //要连接Socket Server的ip地址
nRemotePort:= _ServerPort, //要连接Socket Server的端口号
bExecute:= bConnect,
tTimeout:= T#1S,
bBusy=> ,
bError=> boConnectErr,
nErrId=> ,
hSocket=> _hSocket);
//
Send_R_TRIG(CLK:= bSend, Q=> );
_FB_SocketSend(
sSrvNetId:= ,
hSocket:= _hSocket,
//cbLen:= SIZEOF(arrSendData), //1、将整个数组发送过去
cbLen:= nSendByteLength, //2、将指定的字节数发送过去
pSrc:= ADR(arrSendData),
bExecute:= Send_R_TRIG.Q,
tTimeout:= T#1S,
bBusy=> ,
bError=> ,
nErrId=> );
//500ms接收一次
Timer1(IN:= NOT timer1.q, PT:=T#500MS , Q=> , ET=> );
_FB_SocketReceive(
sSrvNetId:= ,
hSocket:= _hSocket,
cbLen:= SIZEOF(arrrReceiveData),
pDest:= ADR(arrrReceiveData),
//bExecute:= bRecevie,
bExecute:= bConnect AND NOT boConnectErr AND Timer1.Q,
tTimeout:= T#1S,
bBusy=> ,
bError=> ,
nErrId=> ,
nRecBytes=> );
//
_FB_SocketClose(
sSrvNetId:= ,
hSocket:= _hSocket,
bExecute:= bClose,
tTimeout:= T#1S,
bBusy=> ,
bError=> ,
nErrId=> );
2、测试
(1)网络调试助手创建服务端监听
(2)PLC端的Client连接服务端
PLC程序中输入IP地址和端口号进行连接,连接正常没有报错、服务端监测到PLC的连接。
(3)PLC端给服务端发送数据
PLC程序中设置发送的字节数为9,只发送9个byte的数据。bSend上升沿信号触发有效。
(4)服务端给PLC发送数据
设置最大接收的数据量100byte(根据实际需要可设置不同大小),服务端发送的时候数据量不要超过100byte。接收扫描实时间500ms(接收时间也可以调)
二、TwinCAT3以太网TCP/IP服务端创建
1、系统连接示意图
PLC作为服务端,创建Listen等待客户端连接,客户端连接后服务端再进行Accept接收请求。
2、程序创建
实验需要用到5个功能块,分别是FB_SocketListen,FB_ SocketAccept, FB_SocketSend,FB_SocketReceive,FB_SocketClose
(1)变量创建
PROGRAM SocketServer
VAR
_FB_SocketListen: FB_SocketListen;
_FB_SocketAccept: FB_SocketAccept;
_FB_SocketSend: FB_SocketSend;
_FB_SocketReceive: FB_SocketReceive;
_FB_SocketClose: FB_SocketClose;
_hListen: T_HSOCKET; //Socket监听句柄
_hSocket: T_HSOCKET; //Socket连接句柄
_LocalIpAddress: T_IPv4Addr:='192.168.1.31'; //要连接Socket Server的ip地址
_LocalPort: UDINT:=9977;
bListen: BOOL;
bAccept: BOOL;
bSend: BOOL;
//bRecevie: BOOL;
bClose: BOOL;
nSendByteLength: UDINT:=9; //需要发送的字节数
//nReceiveByteLength: UDINT:=20;
arrSendData: ARRAY[1..10] OF BYTE;
arrrReceiveData: ARRAY[1..100] OF BYTE;
Timer1: TON;
Send_R_TRIG: R_TRIG;
END_VAR
(2)程序
arrSendData[1] := 16#11;
arrSendData[2] := 16#22;
arrSendData[3] := 16#33;
arrSendData[4] := 16#44;
arrSendData[5] := 16#55;
arrSendData[6] := 16#66;
arrSendData[7] := 16#77;
arrSendData[8] := 16#88;
arrSendData[9] := 16#99;
arrSendData[10] := 16#A0;
//Server端-监听
_FB_SocketListen(
sSrvNetId:= ,
sLocalHost:= _LocalIpAddress,
nLocalPort:= _LocalPort,
bExecute:= bListen,
tTimeout:=T#1S ,
bBusy=> ,
bError=> ,
nErrId=> ,
hListener=> _hListen);
//Server端-接受请求
_FB_SocketAccept(
sSrvNetId:= ,
hListener:= _hListen,
bExecute:= bAccept,
tTimeout:= T#1S,
bAccepted=> ,
bBusy=> ,
bError=> ,
nErrId=> ,
hSocket=> _hSocket);
//Server端-发送
Send_R_TRIG(CLK:= bSend, Q=> );
_FB_SocketSend(
sSrvNetId:= ,
hSocket:= _hSocket,
cbLen:= nSendByteLength,
pSrc:= ADR(arrSendData),
bExecute:= Send_R_TRIG.Q,
tTimeout:= T#1S,
bBusy=> ,
bError=> ,
nErrId=> );
//Server端-接收
//500ms接收一次
Timer1(IN:= NOT timer1.q, PT:=T#500MS , Q=> , ET=> );
_FB_SocketReceive(
sSrvNetId:= ,
hSocket:= _hSocket,
cbLen:= SIZEOF(arrrReceiveData),
pDest:= ADR(arrrReceiveData),
//bExecute:= bRecevie,
bExecute:= bListen AND bAccept AND Timer1.Q,
tTimeout:= T#1S,
bBusy=> ,
bError=> ,
nErrId=> ,
nRecBytes=> );
//Server端-Socket关闭
_FB_SocketClose(
sSrvNetId:= ,
hSocket:= _hSocket,
bExecute:= bClose,
tTimeout:= T#1S,
bBusy=> ,
bError=> ,
nErrId=> );
3、测试
(1)Listen、客户端连接
(2)服务端中Accept接收请求
(3)服务端和客户端之间相互发送数据
三、工程下载连接
1、 TwinCAT3以太网TCP/IP客户端测试程序
TwinCAT3以太网通讯测试-Client.rar-嵌入式文档类资源-CSDN下载文章来源:https://www.toymoban.com/news/detail-550154.html
2、 TwinCAT3以太网TCP/IP服务端测试程序
https://download.csdn.net/download/panjinliang066333/87421905文章来源地址https://www.toymoban.com/news/detail-550154.html
到了这里,关于TwinCAT3以太网TCP/IP自由协议通讯的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!