目录
1 简介
ADS通讯是倍福公司定义的一种专门协议,用于TwinCATsheb 之间非周期性通讯。既可以用控制器内部通讯、控制器跟控制器之间通讯也可以用于控制器和PC高级语言通讯。Ads通讯是基于TCP/IP之上的应用协议,所以控制器之间在进行使用Ads通讯时需要确保TCP/IP网络连接正常。需要注意的是,有线连接和无线连接都可以使用,在使用无线连接时通讯时间更长。
2 硬件连接
CX2020一台、 CX5130两台、 PC电脑一台、路由器一台。 主控制器使用CX2020,两个从机使用CX5130,使用普通家用路由器/交换机组网。个人PC电脑作为TwinCAT3程序开发使用。
3、工程和配置
3.1 Ads Mast主工程
创建Twincat3工程、程序PLC程序工程,搜索和选择Mast控制器。
在SYSTEM——Routes中建立Ads通讯路由,分别将两个从机添加进去
添加变量
intput1 :BYTE; //存储读取到的Slave1的值
output1 :BYTE; //发送给Slave1的值
adsread1 :adsread;
adswrite1 :adswrite;
adsread2 :adsread;
adswrite2 :adswrite;
intput2 :BYTE; //存储读取到的Slave2的值
output2 :BYTE; //发送给Slave2的值
bread :BOOL; //读指令——上升沿有效
bwrite :BOOL; //写指令——上升沿有效
对从机1读写和操作程序
//从机1——Ads读
adsread1(
NETID:='5.99.194.158.1.1' , //要访问设备的 NetID
PORT:=851 , //对方设备端口号
IDXGRP:=16#00004020 , //要访问读的数据组 16#4020:%MB
IDXOFFS:=2 , //要访问的数据地址 : 0开始,第2个
LEN:= SIZEOF(intput1), //读或者写的字节数
DESTADDR:= ADR(intput1), //目的地址(读)或者源地址(写)
READ:=bread , //触发信号,上升沿有效
TMOUT:=T#2S ,
BUSY=> ,
ERR=> ,
ERRID=> );
//从机1——Ads写
adswrite1(
NETID:='5.99.194.158.1.1' ,
PORT:=851,
IDXGRP:=16#00004020, //要访问写的数据组 16#4020:%MB
//IDXOFFS:=16#00000005, //地址:从0开始,第五个
IDXOFFS:=8, //地址:从0开始,第8个
LEN:=SIZEOF(output1) ,
SRCADDR:=ADR(output1) ,
WRITE:=bwrite ,
TMOUT:=T#2S ,
BUSY=> ,
ERR=> ,
ERRID=> );
对从机2读和写操作
//从机2——Ads读
adsread2(
NETID:='5.98.231.144.1.1' , //要访问设备的 NetID
PORT:=851 , //对方设备端口号
IDXGRP:=16#00004020 , //要访问读的数据组 16#4020:%MB
IDXOFFS:=2 , //要访问的数据地址 : 0开始,第2个
LEN:= SIZEOF(intput2), //读或者写的字节数
DESTADDR:= ADR(intput2), //目的地址(读)或者源地址(写)
READ:=bread , //触发信号,上升沿有效
TMOUT:=T#2S ,
BUSY=> ,
ERR=> ,
ERRID=> );
//从机2——Ads写
adswrite2(
NETID:='5.98.231.144.1.1' ,
PORT:=851,
IDXGRP:=16#00004020, //要访问写的数据组 16#4020:%MB
//IDXOFFS:=16#00000005, //地址:从0开始,第五个
IDXOFFS:=8, //地址:从0开始,第8个
LEN:=SIZEOF(output2) ,
SRCADDR:=ADR(output2) ,
WRITE:=bwrite ,
TMOUT:=T#2S ,
BUSY=> ,
ERR=> ,
ERRID=> );
激活和运行Mast程序工程
3.2 创建从机工程
分别创建两个从机程序工程,选择对应的PLC。在Routes中点开发现已经自动关联了主机地址。
从机Main程序中创建变量:DATA AT%MB0: ARRAY[1..10] OF BYTE; //MB0-MB9
然后激活和运行从机工程
4 Ads主机中读写操作测试
4.1 Mast读操作
4.2 Mast写操作
工程下载连接: