TwinCAT3之Ads通讯——1、控制器和控制器间通讯_panjinliang066333的博客-CSDN博客接上一篇继续。
1、Ads功能块封装
首先复制上一节程序工程,然后打开Mast工程。将Main程序中变量和程序都删掉。
然后在PLC中添加文件夹My_Fb,在文件夹My_Fb中添加功能块MyAds_Fb。
添加功能块变量
添加adsread程序
//Ads读
adsread(
NETID:= netID, //要访问设备的 NetID
PORT:= 851, //对方设备端口号
IDXGRP:= 16#00004020, //要访问读的数据组 16#4020:%MB
IDXOFFS:= nReadStartIndex, //要访问的数据地址 : 0开始,第nReadStartIndex个
LEN:= SIZEOF(nReadData) , //目的地址(读)或者源地址(写)
DESTADDR:=ADR(nReadData) , //触发信号,上升沿有效
READ:= bRead, //触发信号,上升沿有效
TMOUT:= T#2S,
BUSY=> ,
ERR=> ,
ERRID=> );
添加adswrite程序
//Ads写
adswrite(
NETID:=netID ,
PORT:=851,
IDXGRP:=16#00004020, //要访问写的数据组 16#4020:%MB
//IDXOFFS:=16#00000005, //地址:从0开始,第五个
IDXOFFS:=nWriteStartIndex, //地址:从0开始,第nWriteStartIndex个
LEN:=SIZEOF(nWirteData) ,
SRCADDR:=ADR(nWirteData) ,
WRITE:=bwrite ,
TMOUT:=T#2S ,
BUSY=> ,
ERR=> ,
ERRID=> );
2、主程序中调用功能块
创建功能块变量
_MyAds_Fb1 :MyAds_Fb; //从机1
_MyAds_Fb2 :MyAds_Fb; //从机2
其它变量定义
调用功能块程序
//对从机1,读写操作
_MyAds_Fb1(
netID:= netID1,
bRead:= bRead,
bWrite:= bWrite,
nReadStartIndex:= 0,
nWriteStartIndex:= 200,
nWirteData:= nWirteData,
nReadData=> nReadData1);
//对从机2,读写操作
_MyAds_Fb2(
netID:= netID2,
bRead:= bRead,
bWrite:= bWrite,
nReadStartIndex:= 0,
nWriteStartIndex:= 200,
nWirteData:= nWirteData,
nReadData=> nReadData2);
然后下载程序运行。
3、从机中程序
删除上节定义的变量,定义新的两个变量
ReadData AT%MB0 : ARRAY[0..199] OF BYTE; //MB0-MB199
WriteData AT%MB200 : ARRAY[0..199] OF BYTE; //MB200-MB399
两个从机中分别修改,然后下载运行程序。
4、测试
读从机1
读从机2
写操作
测试工程下载
控制器和控制器Ads通讯-三台CX(一主两从)-制造文档类资源-CSDN下载