AndreaDO

导航

倍福和C#通信

C#通过代码获取倍福plc中变量的值

首先你的电脑上要安装TwinCAT的软件,然后项目中包含他们的库文件

using TwinCAT.Ads;

通信

在完成通信后,才能访问plc中变量

var ads = new TcAdsClient();
ads.Connect(plc.Ip, plc.Port);

读取

首先我们创建一个ads流AdsStream,然后用二进制读取数据的类型来读取他,同时创建一个句柄

 AdsStream doubles = new AdsStream(4 * 8);
doubles.Position = 0;
BinaryReader binaryReader = new BinaryReader(doubles);
int handle = ads.CreateVariableHandle("GVL.H_AXIS_X_MoveAbs");

创建好后,根据变量句柄来读取数据,比如我这个读取是一个float类型的数组,个数为4个

 float[] values = new float[4];
 ads.Read(handle, doubles);
 for (int i = 0; i < 4; i++)
  values[i] = binaryReader.ReadDouble();
 doubles.Close(); 

这样我们就读取好了

修改

修改同上操作,不同的是改成write流,这里我们写一个修改bool类型数组的方法

  //plc设置完值后需要再次确认,设置一次bool
            var ads = new TcAdsClient();
            ads.Connect(Plc.Ip, Plc.Port);
            int sure = ads.CreateVariableHandle(plcName);
            AdsStream writeStream2 = new AdsStream(4 * 1);//bool
            AdsBinaryWriter adswrite2 = new AdsBinaryWriter(writeStream2);
            bool[] sureAxisPos = { false, false, false, false };
            sureAxisPos[index] = value;
            for (int i = 0; i < 4; i++)
                adswrite2.Write(sureAxisPos[i]);
            writeStream2.Position = 0;
            ads.Write(sure, writeStream2);
            writeStream2.Close();

posted on 2024-10-11 09:02  AndreaDO  阅读(47)  评论(0编辑  收藏  举报