Bonjour, j'ai mon programme qui me fait le tour sur 6 equipements modbus pour récupérer des registres
Quand les 6 ip sont connecté, là y a aucun soucis , je peux accéder au registres de l'ip 5 par exemple en mettant Odata[4].InputRegisters
mon probléme c'est quand y a 1 ou plusieurs ip non connecté (dans mon cas actuellement j'ai un seule ip qui est connecté) , là il crée plus une liste Odata pour les ip non connecté et du coup si l'ip connecté est le 5 éme, j'aurais plus mes registres dans Odata[4] comme prévus et je perds alors mes informations dans la suite du code
vous avez une idée sur comment peux-je régler ce probléme ? y a moyen de lui imposer de créer une liste meme pour les ip non connecté ?

Nom : Capture.JPG
Affichages : 154
Taille : 46,9 Ko

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
 
 class RegistresWagos
    {
        public List<Modbus> Odatas { get; set; } = new List<Modbus>();
        public void imputregistre()
        {
 
            List<string> ipadresses = new List<string>();
            ipadresses.Add("194.176.3.14");
            ipadresses.Add("194.176.3.10");
            ipadresses.Add("194.176.3.15");
            ipadresses.Add("194.176.3.19");
            ipadresses.Add("194.176.3.20");
            ipadresses.Add("194.176.3.24");
            Modbus Registres = new Modbus();
            ModbusClient modbusClient = new ModbusClient();
 
            for (int index = 0; index < ipadresses.Count; index++)
            {
                Modbus Odata = new Modbus();
                Registres.Ip = ipadresses[index];
                try
                {
                    modbusClient.Connect(ipadresses[index], 502);
                    Registres.InputRegisters = modbusClient.ReadInputRegisters(0, 9);
                    Registres.Coils = modbusClient.ReadCoils(2, 10);
                }
                catch
 
                {
                    continue;
 
                }
                Odatas.Add(Registres);
                modbusClient.Disconnect();
            }
        }
 
    }