首页 > 解决方案 > 使用 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(有时是另一个数字,但主要是这个)。在这种情况下,函数会运行(没有给出异常或错误),但值不会改变。

我的问题:

为什么我会得到这么高的价值,这是什么意思?

提前致谢, 西奥

标签: c#plcsnap7sharp7

解决方案


推荐阅读