您当前的位置: 首页 >  c#

光怪陆离的节日

暂无认证

  • 1浏览

    0关注

    1003博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

C#和倍福PLC之间的通信

光怪陆离的节日 发布时间:2022-06-04 11:10:10 ,浏览量:1

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
}}
关注
打赏
1665731445
查看更多评论
立即登录/注册

微信扫码登录

0.0715s