C#和PLC(S7-1200)数据块读取错误33028

时间:2014-08-13 13:23:07

标签: c# plc libnodave s7-1200 siemens

我正在研究C#和西门子PLC(S7-1200)之间的连接。我已经创建了一个数据块(a.k.a。数据库),我需要阅读并最终编写。与PLC的连接有效,但我无法从其数据块中读取任何内容。它总是给我以下错误:

  

不支持错误33028上下文。 Step7说:功能未实现或电报错误。

数据块的编号是311.我从第一个字节开始,我只放弃了1作为长度。

我也禁用了优化块访问,启用无法解决此问题。

if (0 == lndConnection.connectPLC())
{
  Byte[]   bytes = new Byte[1];
  res = lndConnection.readBytes(libnodave.daveDB ,311,0, 1, bytes);
  if (res == 0)
     MessageBox.Show(lndConnection.getS32().ToString());
  else
  {
      mInt = 0;
      MessageBox.Show("error " + res + " " + libnodave.daveStrerror(res));
  }
} 

我希望有人可以帮我解决这个问题。

2 个答案:

答案 0 :(得分:2)

Roatin Mart的答案: “S7-1200默认启用间接访问。检查是否禁用了优化块访问。”

答案 1 :(得分:2)

S7-1500实现了libnodave不支持的扩展通信协议。 虽然可以使用“旧”协议连接和读/写全局数据块块。

我已成功与1200和1500通信,但需要一些额外的设置plc-side。

S7-1200

  1. 只能访问全局数据库。
  2. 必须关闭优化的块访问。
  3. S7-1500

    1. 只能访问全局数据库。
    2. 必须关闭优化的块访问。
    3. plc的访问级别必须为“full”。
    4. “连接机制”必须允许外部合作伙伴使用GET / PUT
    5. 屏幕截图的详细信息可在以下网址找到: http://snap7.sourceforge.net/snap7_client.html

      希望它有所帮助! 干杯, 彼得

相关问题