首页 > 解决方案 > 在 C# 中使用 S7NetPlus 库的 PLC 通信错误

问题描述

我正在开发一个 Windows 窗体应用程序,它将与 Siemens S7-1200 PLC 通信,以实时访问来自 PLC 的实时数据并将数据发送到 PLC。连接和实时通信一切正常。但是当我遇到问题时

  1. 关闭与 PLC 的连接。
  2. 以太网电缆已断开
  3. PLC 断电

1. 我在 form.close 事件中使用了 Plc.close() 方法。但是连接没有关闭,而是抛出 PLC 断开错误。

2 & 3. 我期望相同的行为,但它会引发不同的错误。当以太网电缆在应用程序端或 PLC 端断开时,将引发以太网套接字异常。当 PLC 电源关闭时,程序仍在尝试向 PLC 写入数据一段时间,然后显示发生以太网套接字错误。

谁能帮我处理这些错误?

标签: c#winformsethernetplcmodbus-tcp

解决方案


正如您在 Github 上的s7netplus存储库中看到的那样,PLC 类实现了 IDisposeable。在您的问题中没有代码,但如果您使用 using 语句调用 PLC 类:

using(Plc plc = new PLC(...) {
  // Do some actions
}

在 using 块 (Dispose) 结束后调用 Close() 方法。因此,如果您尝试再次调用 Close() 方法,则会发生异常。

如果可能,请提供代码示例。


推荐阅读