一、倍福PLC地址分区
| 地址分区 |
Index Group |
Offset |
标志 |
偏移量计算 |
| Input |
16#F020 |
0X 0001 F400 |
%IBn |
16#1F400 n |
| %IWn |
16#1F400 n*2 |
|||
| %IDn |
16#1F400 n*4 |
|||
| output |
16#F030 |
0X 0003 E800 |
%QBn |
16#3E800 n |
| %QWn |
16#3E800 n*2 |
|||
| %QDn |
16#3E800 n*4 |
|||
| Memory |
16#4020 |
0X 0000 0000 |
%MBn |
16#0000 n |
| %MWn |
16#0000 n*2 |
|||
| %MDn |
16#0000 n*4 |
二、步骤
(1)添加库文件
TcAdsDll.lib、TcAdsAPI.h、TcAdsDef.h
(2)定义变量
long nErr, nPort; //定义端口变量
AmsAddr Addr;&nbs; //定义AMS地址变量
PAmsAddr pAddr = &Addr; //定义端口地址变量
(3)、打开ADS通讯端口
nPort = AdsPortOpen();
pAddr->netId.b[0]=5;
pAddr->netId.b[1]=99;
pAddr->netId.b[2]=105;
pAddr->netId.b[3]=76;
pAddr->netId.b[4]=1;
pAddr->netId.b[5]=1;
pAddr->port =851;
注、控制器在本地使用以下函数代替地址指定,否则需要指定netId。
nErr=AdsGetLocalAddress(pAddr); //得到本地端口地址
if (nErr) {
MessagePopup("错误","Error: AdsGetLocalAddress:"); //检查获取地址的操作是否执行成功
}
(4)数据读写
常用函数:
AdsSyncReadReq( AmsAddr* pAddr, // Ams address of ADS server
unsigned long indexGroup, //index group in ADS server interface
unsigned long indexOffset, // index offset in ADS server interface
unsigned long length, // count of bytes to read
void* pData // pointer to the client buffer
);//从ADS服务器中同步读数据
AdsSyncWriteReq();//同步数据写到一个ADS设备
AdsSyncReadWriteReq();//同步写入数据到ADS服务器中并从ADS设备接收返回数据
(5)关闭通讯端口
AdsPortClose( );