TwinCAT3 控制器PLC之间EAP通讯1-主机给多个从机发送

目录

1、硬件组成

2、主机给多个从机发送数据

2.1 创建结构体MastCommand

2.2 创建MastCommand结构体全局变量

2.3 IO扫描和publisher box添加

2.4 激活主机工程并运行PLC程序 

 2.5 创建从机工程

2.6 从机添加配置Subscriber

 2.7 从机创建全局变量并关联Subscriber

2.7 主机发送测试

 2.8 调试问题

 3、工程 下载


          EAP全称为EtherCAT Autoumation Protocal实时通讯,具有通讯速度快、实时性高、不用编写逻辑程序的优点,使用EAP通讯不需要相应的授权即可使用。

1、硬件组成

CX2020一台、 CX5130两台、 PC电脑一台、路由器一台。

主控制器使用CX2020,两个从机使用CX5130,使用普通家用路由器/交换机组网。个人PC电脑作为TwinCAT3程序开发使用。

网络连接:主机和从机都PLC都使用第一个网口插到路由器上。

2、主机给多个从机发送数据

首先创建主机工程,在创建的工程中选择控制器,并设置为配置模式。

2.1 创建结构体MastCommand

将主机要发送给从机的多个变量放到一个结构体中(结构体中BOO型变量最好是8的整数倍,其它数据类型变量数量为偶数个)

TYPE MastCommand :
	STRUCT
		b1:							BOOL;
		b2:							BOOL;
		b3:							BOOL;
		b4:							BOOL;
		b5:							BOOL;
		b6:							BOOL;
		b7:							BOOL;
		b8:							BOOL;
		
		nData1:						INT;
		nData2:						INT;
		nData3:						INT;
		nData4:						INT;
		
		fData1:						LREAL;
		fData2:						LREAL;
		fData3:						LREAL;
		fData4:						LREAL;				
	END_STRUCT
END_TYPE

然后“convert to Global Data Type”

2.2 创建MastCommand结构体全局变量

_MastCommand		AT%Q*:			MastCommand;					//主机发送给从机的

然后PLC程序编译重新生成

2.3 IO扫描和publisher box添加

在Box9中鼠标右击添加新项Pub-Var1

Box9通讯方式为一对多模式。

 在Pub-Var1的Output-》VarData链接结构体变量_MastCommand

2.4 激活主机工程并运行PLC程序 

激活工程、并运行PLC程序

(主机工程配置好了是否激活运行程序,对从机配置不影响)

 2.5 创建从机工程

创建从机1和从机2 TwinCAT3程序工程,依次选择控制并设置为配置模式。

从机接收主机,用的是Subscriber。以从机1工程配置举例说明。

2.6 从机添加配置Subscriber

 2.7 从机创建全局变量并关联Subscriber

从机中创建MastCommand结构体全局变量,然后重新编译生成PLC程序。  

 关联Subscriber

 激活从机1工程。

同理从机2也这样配置。

2.7 主机发送测试

分别激活主机工程、从机1和从机2工程。 

在线监视模式下,设置变量值然后写入

从机1和从机2监控到接收的数据情况

 2.8 调试问题

(1)主机中变量值改变,从机中变量不变。

答:①检查主机和从机插交换机的网口是否都是第一个网口、②从机2的Subscriber是否在Device1中创建、③主机Publisher和从机Subscriber是否都关联了全局变量_MastCommand、④主机Publisher是否设置为一对多模式。

(2)从机中定义MastCommand全局变量报错,并且External Types中没有MastCommand。

答:先在IO-》Device1 中添加Subscriber找到主机中的Pub-Var1,然后再定义MastCommand全局变量。

 3、工程 下载

程序工程连接:TwinCAT3EAP通讯测试.rar-制造文档类资源-CSDN下载

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
在TwinCAT 3中,您可以通过使用PLC编写代码来实现一个server与多个client通讯的程序。以下是一个简单的示例程序,可以让您了解如何实现这个功能: 1. 首先,在PLC程序中定义需要共享的变量和数据结构。例如,您可以定义一个结构体来存储客户端发送的数据: ``` TYPE MyData : STRUCT x : INT; y : INT; END_STRUCT END_TYPE ``` 2. 接下来,您需要编写一个服务器程序,该程序将等待来自客户端的连接请求,并接收客户端发送的数据。以下是一个简单的示例程序: ``` PROGRAM Server VAR hServer: TCPIP.TCPServerHandle; hClient: TCPIP.TCPClientHandle; bConnected: BOOL := FALSE; MyDataFromClient: MyData; END_VAR hServer := TCPIP.TCPServerOpen(5000); //打开TCP服务器端口5000 WHILE TRUE DO IF NOT bConnected THEN //等待客户端连接 hClient := TCPIP.TCPServerAccept(hServer); IF hClient <> 0 THEN bConnected := TRUE; END_IF ELSE //接收客户端发送的数据 IF TCPIP.TCPRead(hClient, ADR(MyDataFromClient), SIZEOF(MyData)) > 0 THEN //处理客户端发送的数据 //... ELSE //客户端断开连接 TCPIP.TCPClientClose(hClient); bConnected := FALSE; END_IF END_IF END_WHILE ``` 3. 最后,您需要编写一些客户端代码,该代码将连接到服务器并发送数据。以下是一个简单的示例程序: ``` PROGRAM Client VAR hClient: TCPIP.TCPClientHandle; MyDataToServer: MyData; END_VAR hClient := TCPIP.TCPClientOpen("192.168.1.100", 5000); //连接到服务器 WHILE TRUE DO //向服务器发送数据 MyDataToServer.x := 123; MyDataToServer.y := 456; TCPIP.TCPWrite(hClient, ADR(MyDataToServer), SIZEOF(MyData)); //等待一段时间再发送数据 TIME_DELAY(1000); END_WHILE ``` 请注意,以上示例程序仅用于演示如何实现服务器和客户端之间的通信,并且可能需要根据您的具体应用程序进行修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Big_潘大师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值