TwinCAT3 控制器PLC之间EAP通讯2-从机发送方式1

TwinCAT3 控制器PLC之间EAP通讯2-从机发送方式1,第1张

TwinCAT3 控制器PLC之间EAP通讯2-从机发送方式1

目录

1、前序

 2、配置从机1给主机发送数据

2.1 创建从机1的结构

2.2创建从机1结构体的全局变量

 2.3 添加从机1的Publisher

 2.4 从机1变量关联

2.5 主机中配置接收从机1的Subscriber

3 配置从机2给主机发送数据

3.1创建从机2结构体

3.2 添加Slave2State全局变量

3.3 配置从机2发送给主机的的Publisher

 3.4 关联从机2的Publisher变量

3.5 主机中配置接收从机1的Subscriber

4 测试

4.1 主机发送给从机

 4.2 从机分别给主机发送

5、工程 下载


1、前序

        从机给主机发送数据分为两种情况。第一种是从机设备硬件不同需要单独开发从机PLC程序,那么需要单独配置不同的变量发送给主机。第二种方式是所有的从机设备硬件相同、程序工程也相同,此时只需要将第一套开发好的从机程序复制给多个从机即可(程序工程的IO中Device1、Device2、Device3、Device4等设需要选择各自PLC的网卡)。不论哪种方式,在主机中都需要对每个从机设备发送过来的数据进行Subscriber配置。

       本节介绍第一种方式,两个从机中不同程序工程配置,给主机发送数据。

 2、配置从机1给主机发送数据

从机给主机发送方法和主机给从机发送方法差不多,需要注意的是从机只能给主机发送,因此需要设置主机AMS NetID地址。

还是以从机1工程举例。

2.1 创建从机1的结构体

将从机设备需要发送给主机的变量创建在结构体SlaveState中(结构体中BOO型变量最好是8的整数倍,其它数据类型变量数量为偶数个)

TYPE SlaveState :
	STRUCT
		bState1:					BOOL;
		bState2:					BOOL;
		bState3:					BOOL;
		bState4:					BOOL;
		bState5:					BOOL;
		bState6:					BOOL;
		bState7:					BOOL;
		bState8:					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创建从机1结构体的全局变量
_SlaveState			AT%Q*:			SlaveState;						//从机输出结构体变量

PLC程序工程重新编译生成。

 2.3 添加从机1的Publisher

在Device1中添加新项,选择Publish生成Box2。然后在Box2中添加Pub-Var1

设置Publish发送的指定控制器AMS NetID地址

 2.4 从机1变量关联

关联从机Pub-Var1和结构体全局变量_SlaveState。

激活从机工程。 

2.5 主机中配置接收从机1的Subscriber

在Device2 中添加新项,选择Subscriber

在Subscribe中添加新项,选择从机1控制器的Pub-Var1

 在全局变量中定义从机1的 结构体全局变量_SlaveState1

_SlaveState1		AT%I*:			SlaveState;						//从机1输出结构体变量

重新编译生成主机PLC程序工程,然后IO变量关联

 激活主机PLC工程程序

监视主机和从机1

 同理,配置从机2给主机发送

3 配置从机2给主机发送数据

方法同从机1配置方式相同,为了方便区分从机设备,从机2结构体名定义为SlaveState2,结构体中变量直接从从机1中复制(为了方便直接复制从机1结构体变量,实际中可以定义不一样的变量)。

3.1创建从机2结构体

将从机设备需要发送给主机的变量创建在结构体SlaveState2中

TYPE Slave2State :
	STRUCT
		bState1 : BOOL;
		bState2 : BOOL;
		bState3 : BOOL;
		bState4 : BOOL;
		bState5 : BOOL;
		bState6 : BOOL;
		bState7 : BOOL;
		bState8 : 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”

3.2 添加Slave2State全局变量

添加Slave2State全局变量,并且重新编译生成从机2得PLC程序工程

_Slave2State		AT%Q*:			Slave2State;					//从机2输出结构体变量
3.3 配置从机2发送给主机的的Publisher

Device1中添加新项选择Publish,然后添加变量

设置publish 主机的AMS NetID,仅针对主机发送

 3.4 关联从机2的Publisher变量

 激活从机2工程。

3.5 主机中配置接收从机1的Subscriber

在Device2 中添加新项,选择Subscriber

在Subscribe中添加新项,选择从机2控制器的Pub-Var1

 在全局变量中定义从机2的 结构体全局变量_SlaveState2,并且重新编译和生成主机PLC程序工程

_SlaveState2		AT%I*:			Slave2State;					//从机2输出结构体变量

IO变量关联

激活主机PLC工程程序

4 测试 4.1 主机发送给从机

 主机写入后

 4.2 从机分别给主机发送

 从机1给主机发送

  从机2给主机发送

5、工程 下载

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

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5651105.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存