c# - 在 C# 中使用 S7NetPlus 库的 PLC 通信错误
问题描述
我正在开发一个 Windows 窗体应用程序,它将与 Siemens S7-1200 PLC 通信,以实时访问来自 PLC 的实时数据并将数据发送到 PLC。连接和实时通信一切正常。但是当我遇到问题时
- 关闭与 PLC 的连接。
- 以太网电缆已断开
- PLC 断电
1. 我在 form.close 事件中使用了 Plc.close() 方法。但是连接没有关闭,而是抛出 PLC 断开错误。
2 & 3. 我期望相同的行为,但它会引发不同的错误。当以太网电缆在应用程序端或 PLC 端断开时,将引发以太网套接字异常。当 PLC 电源关闭时,程序仍在尝试向 PLC 写入数据一段时间,然后显示发生以太网套接字错误。
谁能帮我处理这些错误?
解决方案
正如您在 Github 上的s7netplus存储库中看到的那样,PLC 类实现了 IDisposeable。在您的问题中没有代码,但如果您使用 using 语句调用 PLC 类:
using(Plc plc = new PLC(...) {
// Do some actions
}
在 using 块 (Dispose) 结束后调用 Close() 方法。因此,如果您尝试再次调用 Close() 方法,则会发生异常。
如果可能,请提供代码示例。
推荐阅读
- sdk - 指纹 U Are U 4500 PowerBuilder
- php - Wordpress Memberships - 获取计划中对特定元键具有非空值的所有活动成员。还检索其他元数据
- c - 为什么递归函数出现在交换函数之前?
- apache-spark - Py4JJavaError:调用 o288.fit 时出错
- javascript - 如何使用 javascript 访问 XML 子节点
- html - 仅更改 ap 中一个字母的样式
- c# - 如何使用富文本框的等待和异步?
- javascript - 在组件中设置状态但仅更改列表中的第二个元素
- firebase - Firebase 到 Bigquery 未知数据集生成问题
- php - 从 2 个数组创建一个数组