【问题标题】:libnodave error while reading from Siemens s7-1200 (0x8104)从 Siemens s7-1200 (0x8104) 读取时出现 libnodave 错误
【发布时间】:2014-07-07 20:46:24
【问题描述】:

在检查 s7nodave 对 S7-1200 的 EPICS 设备支持时,我遇到了一个涉及 libnodave 的问题。当我尝试读取 PLC 中的任何内存地址时,IOC 控制台报错:

epics> 2014/05/19 14:20:41.964 Siemens-PLC error while reading 1 bytes from PLC address FB35. Status = context not supported. Step7 says:Function not implemented or error in telgram.

即 libnodave 状态码 0x8104。当我尝试在网上搜索此错误代码时,所有结果都引用了 S7-1500,而不是 S7-1200。

我可以通过 Siemens SDK 访问这些内存块:它们存在并包含有效数据。

为什么 S7-1200 拒绝向 libnodave 发送数据?是否有任何选项可以使数据块从网络中可用?

我使用的是 EPICS 版本。 3.14.12.4, s7nodave 1.03 build with asyn ver. 4.11,增强版。 1.55.0。 在 PC 和 Virtualbox 上尝试了各种版本。

【问题讨论】:

  • 我在使用 libnodave 方面取得了巨大成功,但我从未亲自将它与 S7 1200 一起使用过。如果您无法解决问题,请查看替代库 snap7.sourceforge.net

标签: plc libnodave s7-1200 siemens


【解决方案1】:

我在使用 libnodave 时遇到了完全相同的问题,也尝试了 Snap7 并在 S71200 上遇到了类似的错误

事实证明,这是一个添加到 TIA 12 及更高版本的新安全选项,默认情况下不允许远程访问读取/更新块。如果没有此选项,则只有 Siemens 工具可以访问数据。

在 TIA 中,在 CPU 项目的属性下,选择“保护”,有一个选项“允许使用来自远程伙伴的 PUT/GET 通信进行访问......”

Snap7 的作者在他的文档中也有对此的解释(附有 TIA 截图)

http://snap7.sourceforge.net/snap7_client.html

【讨论】:

  • 啊,这解释了很多。只有具有 S7 许可证的工具才能访问。很高兴阅读它是一项必须禁用的安全功能。但也提醒一下,禁用安全性可能会有风险,人们应该真正考虑使用 ODK 许可证,在项目基础上不那么昂贵,或者使用开放式通信。
  • 谢谢!请注意,您可能需要向下滚动才能看到“允许访问..”选项。
  • 这是正确答案!我有一段时间没看到“保护”选项卡有一个很长的向下滚动条,在您进入“PUT/GET”选项之前有很多空白空间!
【解决方案2】:

从功能块中读出数据?你不是说数据块吗? S7-1200 默认开启间接访问。检查优化块访问是否被禁用。

【讨论】:

  • 请注意,stackoverflow 不是一个论坛,您应该只发布您认为的问题解决方案。应将诸如此类的注释添加为现有解决方案的 cmets。谢谢:-)
  • 这不是讨论。将 FB 与 DB 混淆是一个基本错误。
  • @Studeerkamertechnicus Lennart 是对的,不过。你的回答很难说是合格的。为了澄清所问的问题,应该使用 cmets 并且 OP 应该相应地编辑他的问题。明确了问什么,具体是什么问题后,就应该彻底回答问题了。
猜你喜欢
  • 2014-07-25
  • 2017-03-13
  • 1970-01-01
  • 2017-04-04
  • 2014-10-06
  • 1970-01-01
  • 1970-01-01
  • 2013-05-14
  • 1970-01-01
相关资源
最近更新 更多