倍福和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();