[西门子] 一个连接西门子plc设备的.net库,搞自动化的有福了

[复制链接]
查看249 | 回复0 | 2024-1-29 07:42:38 | 显示全部楼层 |阅读模式
本文简介



亲爱的工程师们,是否正在为如何方便地连接西门子PLC而烦恼?今天给大家推荐一款强大且实用的.NET库——s7netplus。这是一款专门用于连接西门子PLC的库,让你在.NET环境下轻松实现PLC的通讯和控制。S7Net Plus 是 Juergen1969 在 S7.Net 项目上所做的工作的延续。由于S7.net停止了更新,S7Net Plus作者在做一些自动化工作,看到了一些可以改进代码库的地方。因为 S7.Net 作者没有回应 对于S7Net Plus作者提交代码的请求,所以S7Net Plus作者决定在 GitHub 上从 S7.Net的基础上继续开发更新。
为什么要选择s7netplus?

  • 1. 易用性:s7netplus提供了简单易用的API,使得在.NET环境中与西门子PLC的通讯变得轻而易举。

  • 2. 高效稳定:经过众多实际项目的验证,s7netplus表现出了高效且稳定的性能,确保了通讯的可靠性。

  • 3. 丰富的功能:除了基础的通讯功能,s7netplus还提供了诸如读写DB区、控制PLC硬件等高级功能。

  • 4. 支持多种通讯协议:不止于标准通讯协议,s7netplus还支持多种西门子专有的通讯协议,满足各种复杂需求。
支持型号
S7.Net is compatible with S7-200, S7-300, S7-400, S7-1200, S7-1500
如何使用s7netplus?
使用s7netplus非常简单,只需按照以下步骤操作即可:

  • 1. 安装s7netplus库:通过NuGet包管理器安装s7netplus库,方便快捷。

  • 2. 创建连接:使用s7netplus提供的API创建与PLC的连接。

  • 3. 读写数据:通过s7netplus提供的函数,实现对PLC数据的读写操作。

  • 4. 控制PLC:利用s7netplus的高级功能,实现对PLC的控制。
代码演示创建一个plc实例To create an instance of the driver you need to use this constructor:
public Plc(CpuType cpu, string ip, Int16 rack, Int16 slot)
 Cpu: this specify what CPU you are connecting to. The supported CPU are:
public enum CpuType {
S7200 = 0,
S7300 = 10,
S7400 = 20,
S71200 = 30,
S71500 = 40,
}
 Ip: this contains the IP address of the CPU of external Ethernet card
 Rack: this contains the rack of the plc, that you can find in hardware configuration in Step7
 Slot: this is the slot of the CPU, that you can find in hardware configuration in Step7
Example:
This code creates a Plc object for a S7-300 plc at the IP address 127.0.0.1, that it’s localhost, for a plc that
it’s in rack 0 and a cpu that it’s in slot 2 of the hardware configuration:
Plc plc = new Plc(CpuType.S7300, "127.0.0.1", 0, 2);
建立连接与释放连接Connecting to the PLC
public ErrorCode Open()
For example this line of code open the connection:
plc.Open();
Disconnecting from the PLC
public void Close()
For example this closes the connection:
plc.Close();读写数据
public byte[] ReadBytes(DataType dataType, int db, int startByteAdr, int count)
public ErrorCode WriteBytes(DataType dataType, int db, int startByteAdr, byte[] value)

public enum DataType
{
Input = 129,
Output = 130,
Memory = 131,
DataBlock = 132,
Timer = 29,
Counter = 28
}

Example:
This method reads the first 200 bytes of DB1:
var bytes = plc.ReadBytes(DataType.DataBlock, 1,0,200);
Example with recursion:
private List<byte> ReadMultipleBytes(int numBytes, int db, int startByteAdr = 0)
{
List<byte> resultBytes = new List<byte>();
int index = startByteAdr;
while (numBytes > 0)
{
var maxToRead = (int)Math.Min(numBytes, 200);
byte[] bytes = ReadBytes (DataType.DataBlock, db, index, (int)maxToRead);
if (bytes == null)
return new List<byte>();
resultBytes.AddRange(bytes);
numBytes -= maxToRead;
index += maxToRead;
}
return resultBytes;
}

通过使用s7netplus库,自动化工程师们可以更加便捷地与西门子PLC进行通讯和控制。无论是初学者还是资深工程师,都能从中受益匪浅。
代码结构


源码地址

https://github.com/S7NetPlus/s7netplus





本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册哦

x
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则