C# 从DB读取的变量名而不是地址(偏移量)

C# 从DB读取的变量名而不是地址(偏移量),c#,plc,snap7,C#,Plc,Snap7,是否有任何方法仅在C#中从其变量(名称)读取DB数据?考虑西门子S7 PLC 1200,例如,我想从DB读取数据,我不知道地址(偏移量),我只知道DB号、符号名和数据类型。参考请参见下图 我已经通过Sharp7(非优化DB方法)建立了工作连接,但我始终需要一个地址。我还寻找了一些其他的解决方案,比如 Rothenbacher GmbH生产的“S7connector” s7.Net | S7netplus 但这似乎对我不起作用。我也不知道这是否可行,因为我听说PLC只接受地址,而不接受变量名 所

是否有任何方法仅在C#中从其变量(名称)读取DB数据?考虑西门子S7 PLC 1200,例如,我想从DB读取数据,我不知道地址(偏移量),我只知道DB号、符号名和数据类型。参考请参见下图

我已经通过Sharp7(非优化DB方法)建立了工作连接,但我始终需要一个地址。我还寻找了一些其他的解决方案,比如

  • Rothenbacher GmbH生产的“S7connector”
  • s7.Net | S7netplus
  • 但这似乎对我不起作用。我也不知道这是否可行,因为我听说PLC只接受地址,而不接受变量名


    所有的评论都得到了高度评价。

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


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