C# 读取台达PLC

2 篇文章 0 订阅
2 篇文章 0 订阅

年纪大了,有些东西做过了就忘了,记点笔记

一、 准备工作

  • Visual Studio 2019
  • 台达DVP PLC
  • 232下载线
  • ISP编辑软件

需要使用要的类库

Modbus.dll

二、编程

1、实例化一个读取对象对象

public static IModbusSerialMaster master

2.创建连接方法

/// <summary>
        /// 传入串口,建立连接
        /// </summary>
        /// <param name="serialPort"></param>
        public bool  ConnDeltaPLC(SerialPort serialPort)
        {
            try
            {
                //modbusFactory = new ModbusFactory();
                master = ModbusSerialMaster.CreateAscii(serialPort);
                master.Transport.ReadTimeout = 1000;
                master.Transport.WriteTimeout = 1000;
                master.Transport.Retries = 3;
                master.Transport.WaitToRetryMilliseconds = 200;
                master.Transport.Retries = 0;
                return true;
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
                return false;
            }

        }

3、写操作PLC地址的方法

读取输入点X

      /// <summary>
        /// 读取X
        /// </summary>
        /// <param name="x"></param>
        /// <param name="len"></param>
        /// <returns></returns>
        public bool[] ReadX(ushort x, ushort len)
        {
            ushort i = (ushort)(1025 + x);
            //bool[] coilStatus = master.ReadCoils(1, 1026, 1);
            bool[] coilStatus = master.ReadInputs(1, i, len);
            return coilStatus;
        }

读取输出点Y

 		/// <summary>
        /// 读取Y
        /// </summary>
        /// <param name="y"></param>
        /// <param name="len"></param>
        /// <returns></returns>
        public bool[] ReadY(ushort y, ushort len)
        {
            ushort i = (ushort)(1280 + y);
            bool[] coilStatus = master.ReadCoils(1, i, len);
            return coilStatus;
        }

读取继电器M点


/// <summary>
/// 读取M
/// </summary>
/// <param name="m"></param>
/// <param name="len"></param>
/// <returns></returns>
public  bool[] ReadM(ushort m, ushort len)
{
    ushort i = (ushort)(2048 + m);
    bool[] coilStatus = master.ReadCoils(1, i, len);
    return coilStatus;
}

读取寄存器 D

 		/// <summary>
        /// 读取D
        /// </summary>
        /// <param name="d"></param>
        /// <param name="len"></param>
        /// <returns></returns>
        public ushort[] ReadD(ushort d, ushort len)
        {
            ushort i = (ushort)(4097 + d);
            ushort[] hold = master.ReadHoldingRegisters(1, i, len);
            return hold;
        }

操作PLC的数据

 		public void SetY(ushort y)
        {
            ushort i = (ushort)(1280 + y);
            master.WriteSingleCoil(1, i, true);
        }

        public void ResetY(ushort y)
        {
            ushort i = (ushort)(1280 + y);
            master.WriteSingleCoil(1, i, false);
        }

        public void SetM(ushort m)
        {
            ushort i = (ushort)(2048 + m);
            master.WriteSingleCoil(1, i, true);
        }

        public void ResetM(ushort m)
        {
            ushort i = (ushort)(2048 + m);
            master.WriteSingleCoil(1, i, false);
        }

        public void WriteD(ushort d,ushort data)
        {
            ushort i = (ushort)(4097 + d);
            master.WriteSingleRegister(1, i, data);
        }

这个是用 232 口读取的台达PLC,后续会更新用485口读取

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值