c# - 使用 DBWrite 向 PLC 写入位不会给出正确的结果(结果 = 3145782)
问题描述
我有一个 Siemens S7-1212 AC/DC/Rly PLC,我想使用 Snap7 与 C# 应用程序通信。我已在 UI 中成功连接到 PLC,我什至可以成功地将值写入 PLC。然而,有时(3 次中的 1 次)写入函数不会将值写入 PLC 并给出一个非常高的整数作为结果。
C# 代码: 与 PLC 的连接已通过以下代码建立:
private S7Client Client = new S7Client();
Client.ConnectTo("192.186.0.1", 0, 0);
写函数:
byte[] writeBuffer = new byte[1];
S7.SetBitAt(ref writeBuffer, 0, 0, true);
int result = Client.DbWrite(1,0,writeBuffer.Length, writeBuffer);
if (result == 0)
// connection successfull
else
// Connection unsuccessfull
现在有时当我执行上面的函数时结果为0,所以写操作已经成功执行。我可以看到 PLC 程序中的值变为 true。但有时(大约三分之一)结果是一个非常高的值,大多数时候是 3145728(有时是另一个数字,但主要是这个)。在这种情况下,函数会运行(没有给出异常或错误),但值不会改变。
我的问题:
为什么我会得到这么高的价值,这是什么意思?
提前致谢, 西奥
解决方案
推荐阅读
- php - 根据用户角色/功能 Wordpress 从菜单中隐藏 DIV
- python - 通过api创建用户keycloak并分配client-role realm-managment
- ruby-on-rails - SSL 证书请求失败。无法导出 CNAME 记录
- here-api - 在 Here Map 的中心叠加图像(如警告图像)?
- google-apps-script - 无法保存文档 - 文档太大。但它不是
- c++ - 通过模板和 SFINAE 支持多个类接口
- string - golang 将 os.ModePerm 转换为字符串
- scala - 有没有更惯用的方法来简化 leftJoin 的结果?
- sql - 这个postgres分页sql的性能可以提高吗?
- vue.js - 如何运行动态传递的函数?