用定义标签从PLC读取数据

时间:2017-10-07 07:26:00

标签: c# .net plc

我需要使用预定义标签从PLC(Siemens S7300)读取数据。我得到了这些数据的地址,但由于客户的要求,我无法使用他们的地址。我无法处理这个问题。我尝试了一些类似(S7.NET)的库,但我不能这样做。

这是我的样本表 This is sample table that I have

我尝试了一些编码,但没有一个能给我正确的结果。

如果我尝试

  

plc.Read( “MD40”)

用于读取第一行的值,它给出了我的值。 但正如我所说,我不能使用像(MD40,DB100.DBX0 etc)这样的价值地址。我需要读取像

这样的值
  

plc.Read( “SP_Bası_1”)

或者如果我想读取第二行值,我必须使用bool data = plc.Read("HMI_Start");而不是bool data = plc.Read("MD20.0");

有人有任何建议吗?

2 个答案:

答案 0 :(得分:0)

解决问题的一种简洁方法,对我来说最好的方法是使用OPC UA服务器......

我相信最近的一些S7型号可能有内置的OPC UA服务器

理论上也可以使用另一个支持以太网/ IP协议的PLC品牌,例如Omron或AB,使用Ethernet / IP可以按名称而不是通过内存地址引用变量,但我认为这个功能只是出现在高级PLC中。

无论如何,使用原始S7协议无法实现您的目的

答案 1 :(得分:-1)

构建内存映射。将数据读入字节数组。然后,您可以使用地址(偏移到数组)使用BitConverter转换数据。所以你需要使用下面的类创建一个字典。然后,您可以在字典中查找地址。要构建字典,请读取表格的一行,将一个条目添加到字典中。

    class Map
    {
        public static Dictionary<string, Map> dict = new Dictionary<string, Map>();

        string name { get; set; }
        long address { get; set; }
        Type _type { get; set; }
    }