TwinCAT3以太网TCP/IP自由协议通讯

这篇具有很好参考价值的文章主要介绍了TwinCAT3以太网TCP/IP自由协议通讯。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、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自由协议通讯,TwinCAT3,tcp/ip,PLC,TwinCAT3,倍福

一、TwinCAT3以太网TCP/IP客户端创建

1、系统连接示意图

PLC作为客户端去连接TCP服务端。

TwinCAT3以太网TCP/IP自由协议通讯,TwinCAT3,tcp/ip,PLC,TwinCAT3,倍福

1、程序创建

(1)工程创建和授权添加

创建TwinCAT3工程,创建PLC程序,在配置模式下进行IO扫描。License中勾选TCP/IP授权,7天免费试用。

TwinCAT3以太网TCP/IP自由协议通讯,TwinCAT3,tcp/ip,PLC,TwinCAT3,倍福

 (2)库文件添加

实验需要用到4个功能块,分别是FB_SocketConnect(用于建立连接),FB_SocketSend(用于发送),FB_SocketReceive(用于接收),FB_SocketClose(用于关闭连接)

TwinCAT3以太网TCP/IP自由协议通讯,TwinCAT3,tcp/ip,PLC,TwinCAT3,倍福

 (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)网络调试助手创建服务端监听

TwinCAT3以太网TCP/IP自由协议通讯,TwinCAT3,tcp/ip,PLC,TwinCAT3,倍福

(2)PLC端的Client连接服务端

PLC程序中输入IP地址和端口号进行连接,连接正常没有报错、服务端监测到PLC的连接。

TwinCAT3以太网TCP/IP自由协议通讯,TwinCAT3,tcp/ip,PLC,TwinCAT3,倍福

 (3)PLC端给服务端发送数据

PLC程序中设置发送的字节数为9,只发送9个byte的数据。bSend上升沿信号触发有效。

TwinCAT3以太网TCP/IP自由协议通讯,TwinCAT3,tcp/ip,PLC,TwinCAT3,倍福

 (4)服务端给PLC发送数据

设置最大接收的数据量100byte(根据实际需要可设置不同大小),服务端发送的时候数据量不要超过100byte。接收扫描实时间500ms(接收时间也可以调)

TwinCAT3以太网TCP/IP自由协议通讯,TwinCAT3,tcp/ip,PLC,TwinCAT3,倍福

二、TwinCAT3以太网TCP/IP服务端创建

1、系统连接示意图

PLC作为服务端,创建Listen等待客户端连接,客户端连接后服务端再进行Accept接收请求。

TwinCAT3以太网TCP/IP自由协议通讯,TwinCAT3,tcp/ip,PLC,TwinCAT3,倍福

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、客户端连接

TwinCAT3以太网TCP/IP自由协议通讯,TwinCAT3,tcp/ip,PLC,TwinCAT3,倍福

 (2)服务端中Accept接收请求

TwinCAT3以太网TCP/IP自由协议通讯,TwinCAT3,tcp/ip,PLC,TwinCAT3,倍福

(3)服务端和客户端之间相互发送数据

TwinCAT3以太网TCP/IP自由协议通讯,TwinCAT3,tcp/ip,PLC,TwinCAT3,倍福

三、工程下载连接

1、 TwinCAT3以太网TCP/IP客户端测试程序

TwinCAT3以太网通讯测试-Client.rar-嵌入式文档类资源-CSDN下载

2、 TwinCAT3以太网TCP/IP服务端测试程序

https://download.csdn.net/download/panjinliang066333/87421905文章来源地址https://www.toymoban.com/news/detail-550154.html

到了这里,关于TwinCAT3以太网TCP/IP自由协议通讯的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 车载以太网 - 传输层 - TCP/IP

    一、传输层基础介绍 传输层主要包括两种协议 传输层端口号 二、UDP通信  UDP协议介绍 UDP 通信特点: UDP Segment结构 UDP通信过程 三、TCP通信 TCP通信特点: TCP Segment结构 传输层的寻址方式: 端口号         包括传输层的寻址方式,TCP/UDP 传输层协议工作流程,及TCP/UDP Packe

    2024年02月09日
    浏览(66)
  • TCP IP ICMP 以太网帧格式

    目录 TCP报文格式: IP报文格式   以太帧的结构: ICMP报文格式: URG:表示本报文段中发送的数据是否包含紧急数据:URG=1 时表示有紧急数据。当 URG=1 时,后面的紧急指针字段才有效 ACK:表示前面的确认号字段是否有效:ACK=1 时表示有效;只有当 ACK=1 时,前面的确认号字段

    2024年02月03日
    浏览(56)
  • 计算机网络【IP协议与以太网】

    ● 4位版本号(version):指定IP协议的版本,对于IPv4来说,就是4 ●4位头部长度(header length):IP头部的长度是多少个32bit,也就是 length * 4 的字节数。4bit表示最大的数字是15,因此IP头部最大长度是60字节 ●8位服务类型(Type Of Service):3位优先权字段(已经弃用),4位TO

    2024年02月02日
    浏览(58)
  • 【JavaEE】计网之IP协议+以太网+DNS

    博主简介:想进大厂的打工人 博主主页: @xyk: 所属专栏: JavaEE初阶 网络层重点协议——IP协议 ,在复杂的网络环境中确定一个合适的路径~ 本篇文章我们来讲解什么是 IP协议及以太网,在IP协议中,有 地址管理 和 路由选择 两个方式,IP协议是位于 OSI模型 中第三层(网络层

    2024年02月04日
    浏览(55)
  • 以太网协议介绍(ARP、UDP、ICMP、IP)

    请求: 应答: ARP协议: 以太网ARP数据包格式: FCS:校验 在以太网帧头部分也包含了目的地址的mac和ip地址。 以太网通信是通过包的形式进行传输的,不像串口协议一样单位是byte。 帧间隙: TCP和UDP的区别 ​ osi 7层模型:实现通信的任务 对于fpga开发,只需要关注传输层,

    2024年02月03日
    浏览(53)
  • 【计算机网络】 IP协议格式以及以太网帧结构

    IP工作在网络层 IP头分为两部分,固定部分和可变部分,固定部分就是一定要带这些数据,正常存储应该是连续的,并不是像图中这样会换行,图中只是为了方便观察。 首先是一个版本号,也就是看是ipv4还是ipv6,然后是首部长度,就是我们ip头的首部长度,是为了能将首部和

    2024年02月09日
    浏览(60)
  • PLX31-EIP-MBTCP 以太网/IP到Modbus TCP/IP

    ProSoft Technology的EtherNet/IP to Modbus TCP/IP通信网关允许在支持EtherNet/IP的控制器或设备与Modbus TCP/IP控制器或设备之间进行高速双向数据传输。 我们的Modbus TCP/IP驱动程序具有多种客户端和服务器功能,可实现更快的数据传输。此外,该网关还包括几个功能,包括数据优先级,可以

    2024年02月06日
    浏览(49)
  • 万兆以太网MAC设计(6)IP协议报文格式详解以及IP层模块设计

    参考:https://sunyunqiang.com/blog/ipv4_protocol_rfc791/这篇文章内容很丰富,建议看看 Version : 长度为 4 比特, 表征 IP 协议的版本号, 对 IPv4 来说该字段的值为 4 IHL : 长度为 4 比特, IHL 是 Internet Header Length 的缩写, 以 4 字节为单位指示 IP Header 的长度, 对于 IPv4 来说, Header 的最小长度为

    2024年04月28日
    浏览(43)
  • FANUC机器人嵌入式TCP/IP以太网通讯的具体方法

    在工业自动化领域中,FANUC机器人是广泛应用的一种先进设备。为了实现机器人与其他设备之间的通信,TCP/IP以太网是一种常用的通信协议。本文将介绍如何在FANUC机器人中实现嵌入式TCP/IP以太网通讯,并提供相应的源代码。 配置网络参数 首先,我们需要在FANUC机器人上配置

    2024年02月04日
    浏览(74)
  • 以太网的帧长,MTU, IP报文长度,TCP报文长度,TCP MSS之间的关系

    本文不考虑巨型帧(jumbo frames)的情况下,我们来理几个概念。在日常讨论中,这几个长度经常会容易被混淆起来。64字节,1518字节,1500字节,1460字节,我们接下来会来介绍一下这几个常见,易混淆的长度值的来源。 数据帧的长度,代表二层以太帧长。如下图所示,IEEE80

    2024年02月09日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包