C# 西门子PLC连接和数据传输代码

以下是C#连接西门子PLC并进行数据传输的示例代码:

  1. 引用西门子PLC通讯库

在Visual Studio中,右键单击项目,选择“管理NuGet程序包”,搜索“S7.Net”并安装。

  1. 创建PLC连接对象
复制代码using S7.Net;

// 创建PLC连接对象
var plc = new Plc(CpuType.S71200, "192.168.0.1", 0, 1); // PLC的IP地址为192.168.0.1,Rack为0,Slot为1
plc.Open();
  1. 连接PLC
复制代码// 连接PLC
if (plc.IsConnected)
{
    Console.WriteLine("PLC连接成功!");
}
else
{
    Console.WriteLine("PLC连接失败!");
}
  1. 读取PLC数据
复制代码// 读取PLC数据
var data = plc.Read("DB1.DBB0", 10); // 从DB1.DBB0开始读取10个字节
if (data != null)
{
    Console.WriteLine("读取数据成功:{0}", string.Join(",", data));
}
else
{
    Console.WriteLine("读取数据失败!");
}
  1. 写入PLC数据
复制代码// 写入PLC数据
var values = new byte[] { 1, 2, 3, 4, 5 };
var result = plc.Write("DB1.DBB0", values); // 将values写入DB1.DBB0-DB1.DBB4
if (result)
{
    Console.WriteLine("写入数据成功!");
}
else
{
    Console.WriteLine("写入数据失败!");
}
  1. 断开PLC连接
复制代码// 断开PLC连接
plc.Close();

完整代码示例:

复制代码using System;
using S7.Net;

namespace PLCConnectionDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            // 创建PLC连接对象
            var plc = new Plc(CpuType.S71200, "192.168.0.1", 0, 1); // PLC的IP地址为192.168.0.1,Rack为0,Slot为1
            plc.Open();

            // 连接PLC
            if (plc.IsConnected)
            {
                Console.WriteLine("PLC连接成功!");

                // 读取PLC数据
                var data = plc.Read("DB1.DBB0", 10); // 从DB1.DBB0开始读取10个字节
                if (data != null)
                {
                    Console.WriteLine("读取数据成功:{0}", string.Join(",", data));
                }
                else
                {
                    Console.WriteLine("读取数据失败!");
                }

                // 写入PLC数据
                var values = new byte[] { 1, 2, 3, 4, 5 };
                var result = plc.Write("DB1.DBB0", values); // 将values写入DB1.DBB0-DB1.DBB4
                if (result)
                {
                    Console.WriteLine("写入数据成功!");
                }
                else
                {
                    Console.WriteLine("写入数据失败!");
                }

                // 断开PLC连接
                plc.Close();
            }
            else
            {
                Console.WriteLine("PLC连接失败!");
            }

            Console.ReadKey();
        }
    }
}