Skip to content

Multiple errors in log when connecting multiple machines #28

Description

@damasogh

Hello,
I am testing the MachineJob sample project to connect several machines to a local Modbus server that I have for testing, all the slave channels work correctly, but when starting the program, some machines seem not to respond, or they respond but not all the parameters.
I am testing this example because before this I made a code where I asked again to the same machines but the memory consumption was rising until consuming the total available RAM memory.

This is the configuration I use for the test project, the map is the same for each machine.

{
  "Serilog": {
    "MinimumLevel": {
      "Default": "Information",
      "Override": {
        "Microsoft": "Information",
        "Microsoft.Hosting.Lifetime": "Information"
      }
    }
  },
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Information",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  },
  "Quartz": {
    "LogLevel": "Info"
  },
  "ConnectionStrings": {
    "DatabaseWriteConnectionString": "Server=172.16.3.1; User ID=root; Password=123456; Database=modbusnettest;"
  },

  "Modbus.Net": {
    "Machine": [
      {
        "a:id": "CH_SEL_PPAL",
        "b:protocol": "Modbus",
        "c:type": "Tcp",
        "d:connectionString": "172.16.3.1:50010",
        "e:addressMap": "AddressMapModbus",
        "f:keepConnect": true,
        "g:slaveAddress": 1,
        "h:masterAddress": 0,
        "i:endian": "BigEndianLsb"
      },
      {
        "a:id": "CH_U2000_PPAL",
        "b:protocol": "Modbus",
        "c:type": "Tcp",
        "d:connectionString": "172.16.3.1:50011",
        "e:addressMap": "AddressMapModbus",
        "f:keepConnect": true,
        "g:slaveAddress": 1,
        "h:masterAddress": 0,
        "i:endian": "BigEndianLsb"
      },
      {
        "a:id": "CH_NAVE1",
        "b:protocol": "Modbus",
        "c:type": "Tcp",
        "d:connectionString": "172.16.3.1:50012",
        "e:addressMap": "AddressMapModbus",
        "f:keepConnect": true,
        "g:slaveAddress": 1,
        "h:masterAddress": 0,
        "i:endian": "BigEndianLsb"
      },
      {
        "a:id": "CH_NAVE2",
        "b:protocol": "Modbus",
        "c:type": "Tcp",
        "d:connectionString": "172.16.3.1:50013",
        "e:addressMap": "AddressMapModbus",
        "f:keepConnect": true,
        "g:slaveAddress": 1,
        "h:masterAddress": 0,
        "i:endian": "BigEndianLsb"
      },
      {
        "a:id": "CH_NAVE3",
        "b:protocol": "Modbus",
        "c:type": "Tcp",
        "d:connectionString": "172.16.3.1:50014",
        "e:addressMap": "AddressMapModbus",
        "f:keepConnect": true,
        "g:slaveAddress": 1,
        "h:masterAddress": 0,
        "i:endian": "BigEndianLsb"
      },
      {
        "a:id": "CH_PV_TECHO",
        "b:protocol": "Modbus",
        "c:type": "Tcp",
        "d:connectionString": "172.16.3.1:50015",
        "e:addressMap": "AddressMapModbus",
        "f:keepConnect": true,
        "g:slaveAddress": 1,
        "h:masterAddress": 0,
        "i:endian": "BigEndianLsb"
      },
      {
        "a:id": "CH_PV_GERENCIA",
        "b:protocol": "Modbus",
        "c:type": "Tcp",
        "d:connectionString": "172.16.3.1:50016",
        "e:addressMap": "AddressMapModbus",
        "f:keepConnect": true,
        "g:slaveAddress": 1,
        "h:masterAddress": 0,
        "i:endian": "BigEndianLsb"
      },
      {
        "a:id": "CH_TRANSF_480",
        "b:protocol": "Modbus",
        "c:type": "Tcp",
        "d:connectionString": "172.16.3.1:50017",
        "e:addressMap": "AddressMapModbus",
        "f:keepConnect": true,
        "g:slaveAddress": 1,
        "h:masterAddress": 0,
        "i:endian": "BigEndianLsb"
      },
      {
        "a:id": "CH_AL_PA",
        "b:protocol": "Modbus",
        "c:type": "Tcp",
        "d:connectionString": "172.16.3.1:50018",
        "e:addressMap": "AddressMapModbus",
        "f:keepConnect": true,
        "g:slaveAddress": 1,
        "h:masterAddress": 0,
        "i:endian": "BigEndianLsb"
      },
      {
        "a:id": "CH_AL_PB",
        "b:protocol": "Modbus",
        "c:type": "Tcp",
        "d:connectionString": "172.16.3.1:50019",
        "e:addressMap": "AddressMapModbus",
        "f:keepConnect": true,
        "g:slaveAddress": 1,
        "h:masterAddress": 0,
        "i:endian": "BigEndianLsb"
      },
      {
        "a:id": "CH_AL_MANUF",
        "b:protocol": "Modbus",
        "c:type": "Tcp",
        "d:connectionString": "172.16.3.1:50020",
        "e:addressMap": "AddressMapModbus",
        "f:keepConnect": true,
        "g:slaveAddress": 1,
        "h:masterAddress": 0,
        "i:endian": "BigEndianLsb"
      },
      {
        "a:id": "CH_AA_MANUF",
        "b:protocol": "Modbus",
        "c:type": "Tcp",
        "d:connectionString": "172.16.3.1:50021",
        "e:addressMap": "AddressMapModbus",
        "f:keepConnect": true,
        "g:slaveAddress": 1,
        "h:masterAddress": 0,
        "i:endian": "BigEndianLsb"
      },
      {
        "a:id": "CH_AA_PB",
        "b:protocol": "Modbus",
        "c:type": "Tcp",
        "d:connectionString": "172.16.3.1:50022",
        "e:addressMap": "AddressMapModbus",
        "f:keepConnect": true,
        "g:slaveAddress": 1,
        "h:masterAddress": 0,
        "i:endian": "BigEndianLsb"
      },
      {
        "a:id": "CH_AA_MINISPLITS",
        "b:protocol": "Modbus",
        "c:type": "Tcp",
        "d:connectionString": "172.16.3.1:50023",
        "e:addressMap": "AddressMapModbus",
        "f:keepConnect": true,
        "g:slaveAddress": 1,
        "h:masterAddress": 0,
        "i:endian": "BigEndianLsb"
      }
    ],
    "addressMap": {
      "AddressMapModbus": [
        {
          "Area": "4X",
          "Address": 1,
          "DataType": "Int16",
          "Id": "1",
          "Name": "PhV.phsA"
        },
        {
          "Area": "4X",
          "Address": 2,
          "DataType": "Int16",
          "Id": "2",
          "Name": "PhV.phsB"
        },
        {
          "Area": "4X",
          "Address": 3,
          "DataType": "Int16",
          "Id": "3",
          "Name": "PhV.phsC"
        },
        {
          "Area": "4X",
          "Address": 4,
          "DataType": "Int16",
          "Id": "4",
          "Name": "PhV.phsAvg"
        },
        {
          "Area": "4X",
          "Address": 5,
          "DataType": "Int16",
          "Id": "5",
          "Name": "PPV.phsAB"
        },
        {
          "Area": "4X",
          "Address": 6,
          "DataType": "Int16",
          "Id": "6",
          "Name": "PPV.phsBC"
        },
        {
          "Area": "4X",
          "Address": 7,
          "DataType": "Int16",
          "Id": "7",
          "Name": "PPV.phsCA"
        },
        {
          "Area": "4X",
          "Address": 8,
          "DataType": "Int16",
          "Id": "8",
          "Name": "PPV.phsAvg"
        },
        {
          "Area": "4X",
          "Address": 9,
          "DataType": "Int16",
          "Id": "9",
          "Name": "A.phsA"
        },
        {
          "Area": "4X",
          "Address": 10,
          "DataType": "Int16",
          "Id": "10",
          "Name": "A.phsB"
        },
        {
          "Area": "4X",
          "Address": 11,
          "DataType": "Int16",
          "Id": "11",
          "Name": "A.phsC"
        },
        {
          "Area": "4X",
          "Address": 12,
          "DataType": "Int16",
          "Id": "12",
          "Name": "A.phsAvg"
        },
        {
          "Area": "4X",
          "Address": 13,
          "DataType": "Int16",
          "Id": "13",
          "Name": "W.phsA"
        },
        {
          "Area": "4X",
          "Address": 14,
          "DataType": "Int16",
          "Id": "14",
          "Name": "W.phsB"
        },
        {
          "Area": "4X",
          "Address": 15,
          "DataType": "Int16",
          "Id": "15",
          "Name": "W.phsC"
        },
        {
          "Area": "4X",
          "Address": 16,
          "DataType": "Int16",
          "Id": "16",
          "Name": "TotW"
        },
        {
          "Area": "4X",
          "Address": 17,
          "DataType": "Int16",
          "Id": "17",
          "Name": "VAr.phsA"
        },
        {
          "Area": "4X",
          "Address": 18,
          "DataType": "Int16",
          "Id": "18",
          "Name": "VAr.phsB"
        },
        {
          "Area": "4X",
          "Address": 19,
          "DataType": "Int16",
          "Id": "19",
          "Name": "VAr.phsC"
        },
        {
          "Area": "4X",
          "Address": 20,
          "DataType": "Int16",
          "Id": "20",
          "Name": "TotVAr"
        },
        {
          "Area": "4X",
          "Address": 21,
          "DataType": "Int16",
          "Id": "21",
          "Name": "VA.phsA"
        },
        {
          "Area": "4X",
          "Address": 22,
          "DataType": "Int16",
          "Id": "22",
          "Name": "VA.phsB"
        },
        {
          "Area": "4X",
          "Address": 23,
          "DataType": "Int16",
          "Id": "23",
          "Name": "VA.phsC"
        },
        {
          "Area": "4X",
          "Address": 24,
          "DataType": "Int16",
          "Id": "24",
          "Name": "TotVA"
        },
        {
          "Area": "4X",
          "Address": 25,
          "DataType": "Int16",
          "Id": "25",
          "Name": "PF.phsA"
        },
        {
          "Area": "4X",
          "Address": 26,
          "DataType": "Int16",
          "Id": "26",
          "Name": "PF.phsB"
        },
        {
          "Area": "4X",
          "Address": 27,
          "DataType": "Int16",
          "Id": "27",
          "Name": "PF.phsC"
        },
        {
          "Area": "4X",
          "Address": 28,
          "DataType": "Int16",
          "Id": "28",
          "Name": "TotPF"
        },
        {
          "Area": "4X",
          "Address": 29,
          "DataType": "Int16",
          "Id": "29",
          "Name": "V_IMB"
        },
        {
          "Area": "4X",
          "Address": 30,
          "DataType": "Int16",
          "Id": "30",
          "Name": "I_IMB"
        },
        {
          "Area": "4X",
          "Address": 31,
          "DataType": "Int16",
          "Id": "31",
          "Name": "Hz"
        }
      ]
    }
  }
}

High consumption

private async Task _ModbusPollingStart(ModbusMachine machine, List<AddressUnit> addressUnits)
      {
          var localMachineName = machine.MachineName;
          List<PollingRegister> values = new List<PollingRegister>();
          var addressUnitDictionary = addressUnits.ToDictionary(p => p.CommunicationTag);

          var scheduler = await MachineJobSchedulerCreator.CreateScheduler("Trigger_" + machine.MachineName, -1, 1);
          var fromResult = scheduler.From(machine.Id, machine, MachineDataType.CommunicationTag);
          await (await fromResult)
              .Query(
                  "Query_" + localMachineName,
                  returnValues =>
                  {
                      if (returnValues.ReturnValues.Datas != null)
                      {
                          values.Clear();
                          values.AddRange(returnValues.ReturnValues.Datas
                              .Select(val => new PollingRegister
                              {
                                  Value = val.Value.DeviceValue ?? 0,
                                  Type = addressUnitDictionary.TryGetValue(val.Key, out var unit) ? unit.DataType.Name : null,
                                  Tag = val.Key
                              }).ToList());
                      }

                      return null;
                  }).Result.Run();
      }

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions