【问题标题】:Variable Name read from DB instead address(offset)从 DB 读取的变量名称而不是地址(偏移量)
【发布时间】:2021-02-25 16:55:26
【问题描述】:

有没有办法仅在 C# 中从其变量(名称)中读取数据库数据?考虑 SIMATIC S7 PLC 1200,例如我想从我不知道地址(偏移量)的数据库中读取数据,我只知道数据库编号、符号名称和数据类型。参考请看下图。

我已经通过 Sharp7(非优化数据库方法)建立了工作连接,但我总是需要一个地址。我还寻找了其他一些解决方案,例如,

  1. Rothenbacher GmbH 的“S7 连接器”
  2. s7.Net | S7netplus

但它似乎对我不起作用。我也不知道这是否可能,因为我在某处听说 PLC 只取地址而不取变量名。

所有的cmets都非常满意。

【问题讨论】:

  • 您正在从通信接口读取数据。我从未使用过 S7,但人们在我工作的地方使用过。 Snap7 论坛更好地回答了这个问题。您不是从数据库读取,而是从硬件接口读取。所以我不确定你为什么使用数据库方法。
  • 根据Manual,我必须首先从 PLC.DB public int DBGet(int DBNumber, byte[] usrData, ref int Size) 读取所有字节(数据),然后调用将那个字节转换为我的数据类型的本机 sharp7 方法,即(int,float等等)S7.GetRealAt(Buffer, offsetPosition); 。我已经彻底检查了手册,似乎不可能。有一个新的更新,SIMATIC S7 1200 和 1500 将变量名存储在 CPU 中,而低版本只接受地址和数据。您有什么建议使用?
  • 查看 WriteArea/ReadArea。
  • 已经提到了 ReadArea/WriteArea 但到目前为止还没有运气。因为所有数据包都严格依赖于 PDU,它们只引用数据(S7Consts.S7AreaPE| 过程输入。)通过 sharp7 或其他似乎不可能。我可能会转向 OPC UA。
  • 区域名称在“S7BlockInfo struct”中。所以你首先要搜索“S7BlockInfo struct”

标签: c# plc snap7


【解决方案1】:

改用 OPCUA。如果您使用的是 s71200 或 s71500,那么您的可能性有限。此外,它使用禁用的优化 DB,因此无法通过符号名称读取 DB 变量。

【讨论】:

    猜你喜欢
    • 2020-02-24
    • 2013-08-28
    • 2017-03-04
    • 1970-01-01
    • 2015-07-09
    • 2016-12-30
    • 1970-01-01
    • 2016-05-07
    • 1970-01-01
    相关资源
    最近更新 更多