TwinCAT数据读写

本文详细介绍了在TwinCAT系统中如何进行数据的读取和批量操作。内容包括根据变量名创建句柄读取数据,批量读写的操作流程,以及具体的读取INT、LREAL、字符串、数组和结构体的实例。通过AdsSyncReadWriteReq函数实现了批量读取变量地址并进行数据访问,从而高效地执行批量操作。
摘要由CSDN通过智能技术生成

IP地址的写法:
在这里插入图片描述


  long          nErr, nPort;
  AmsAddr       Addr;                        //ip地址
  PAmsAddr      pAddr = &Addr;
  unsigned long lHdlVar;
  int           nIndex;
  short         Data[10];
  char          szVar []={
   "MAIN.PLCVar"};        //变量名称


  // Open communication port on the ADS router
  nPort = AdsPortOpen();
  nErr = AdsGetLocalAddress(pAddr);
  if (nErr) cerr << "Error: AdsGetLocalAddress: " << nErr << '\n';
  pAddr->port = AMSPORT_R0_PLC_RTS1;


  // Fetch handle for the PLC variable 获取句柄,知道是要读写哪个变量
  nErr = AdsSyncReadWriteReq(pAddr, ADSIGRP_SYM_HNDBYNAME, 0x0, sizeof(lHdlVar), &lHdlVar, sizeof(szVar), szVar);
  if (nErr) cerr << "Error: AdsSyncReadWriteReq: " << nErr << '\n';
 
  // Write value of a PLC variable (by handle) 写入数据
  nData = 12;
  nErr = AdsSyncWriteReq(pAddr, ADSIGRP_SYM_VALBYHND, lHdlVar,  sizeof(nData), &nData);
  if (nErr) cerr << "Error1: AdsSyncWriteReq: " << nErr << '\n';


   // Read values of the PLC variables (by handle)//读取数据的dpi
  nErr = AdsSyncReadReq(pAddr, ADSIGRP_SYM_VALBYHND, lHdlVar, sizeof(Data), &Data[0]);       
  if (nErr)
    cerr << "Error: AdsSyncReadReq: " << nErr << '\n';
  else
  {
           //读取数组数据
    for (nIndex = 0; nIndex < 10; nI
  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值