1.新建项目并引用TwinCAT动态链接库
2.引用类,并编写倍福控制的相关对象 using System; using System.Collections; using System.Collections.Generic; using System.Linq; using System.Text; using TwinCAT.Ads;
namespace Project_V1._001_Data { public class Beckhoff_PLC {
#region 基本对象定义
///
/// 创建Ads对象
///
public static TwinCAT.Ads.TcAdsClient _adsClient = new TcAdsClient();
///
/// 定义连接PLC的AMSNetID
///
public static string string_AmsNetID = "192.168.0.122.1.1";
///
/// 定义连接PLC的端口号
/// TwinCAT2,端口号801;TwinCAT3,端口号为851
///
//public static int iPort = 801;
public static int iPort = 851;
///
/// PLC连接成功的标志
///
public static bool bConnectToBeckhoffOK = false;
public static ArrayList notificationHandles = new ArrayList();
#endregion
#region 函数定义
///
/// 连接到PLC
///
public static void ConnectPLC()
{
try
{
//_adsClient.Connect(string_AmsNetID, iPort);
_adsClient.Connect(iPort);
bConnectToBeckhoffOK = true;
}
catch
{
bConnectToBeckhoffOK = false;
}
}
///
/// 读取double类型的变量,非实时刷新
///
///
///
public static double ReadDouble(string PlcVariableName)
{
double dResult = 0;
try
{
int iHandleTemp = _adsClient.CreateVariableHandle(PlcVariableName);
dResult = (double)(_adsClient.ReadAny(iHandleTemp, typeof(double)));
_adsClient.DeleteVariableHandle(iHandleTemp);
}
catch { return 0; }
return dResult;
}
///
/// 根据PLC变量名,写PLC变量
///
///
///
public static void WriteVariable(string PlcVariableName, double dResult)
{
try
{
int iHandleTemp = _adsClient.CreateVariableHandle(PlcVariableName);
_adsClient.WriteAny(iHandleTemp, dResult);
_adsClient.DeleteVariableHandle(iHandleTemp);
}
catch { }
}
///
/// 根据PLC变量名,写PLC变量
///
///
///
public static void WriteVariable(string PlcVariableName, bool bResult)
{
try
{
int iHandleTemp = _adsClient.CreateVariableHandle(PlcVariableName);
_adsClient.WriteAny(iHandleTemp, bResult);
_adsClient.DeleteVariableHandle(iHandleTemp);
}
catch { }
}
#endregion
}
} 3.主程序中直接调用倍福控制类 using System;using System.Collections;using System.Collections.Generic;using System.Linq;using System.Text;using TwinCAT.Ads;
namespace Project_V1._001_Data{ public class Beckhoff_PLC { #region 基本对象定义 /// /// 创建Ads对象 /// public static TwinCAT.Ads.TcAdsClient _adsClient = new TcAdsClient(); /// /// 定义连接PLC的AMSNetID /// public static string string_AmsNetID = “192.168.0.122.1.1”; /// /// 定义连接PLC的端口号 /// TwinCAT2,端口号801;TwinCAT3,端口号为851 /// //public static int iPort = 801; public static int iPort = 851;
/// /// PLC连接成功的标志 /// public static bool bConnectToBeckhoffOK = false;
public static ArrayList notificationHandles = new ArrayList(); #endregion
#region 函数定义 /// /// 连接到PLC /// public static void ConnectPLC() { try { //_adsClient.Connect(string_AmsNetID, iPort); _adsClient.Connect(iPort); bConnectToBeckhoffOK = true; } catch { bConnectToBeckhoffOK = false; } }
/// /// 读取double类型的变量,非实时刷新 /// /// /// public static double ReadDouble(string PlcVariableName) { double dResult = 0; try { int iHandleTemp = _adsClient.CreateVariableHandle(PlcVariableName); dResult = (double)(_adsClient.ReadAny(iHandleTemp, typeof(double))); _adsClient.DeleteVariableHandle(iHandleTemp); } catch { return 0; } return dResult; }
/// /// 根据PLC变量名,写PLC变量 /// /// /// public static void WriteVariable(string PlcVariableName, double dResult) { try { int iHandleTemp = _adsClient.CreateVariableHandle(PlcVariableName); _adsClient.WriteAny(iHandleTemp, dResult); _adsClient.DeleteVariableHandle(iHandleTemp); } catch { } }
/// /// 根据PLC变量名,写PLC变量 /// /// /// public static void WriteVariable(string PlcVariableName, bool bResult) { try { int iHandleTemp = _adsClient.CreateVariableHandle(PlcVariableName); _adsClient.WriteAny(iHandleTemp, bResult); _adsClient.DeleteVariableHandle(iHandleTemp); } catch { } }
#endregion
}}