Danke erstmals für deine Antwort Peewit,
ILC Firmware: V. 4.10.07.
2) Eine Steuerung (ILC 151) und mehrere Stromrichter (mit eigenem Steuerteil)
Die Aufgabe besteht darin mit bis zu 50 Geräten (Stromrichter) zu kommunizieren und vielleicht sogar mehr.
- In erster Stelle muss ich Sollwerte (Leistungssollwerte P) schicken, die von der Steuerung generiert werden. Am Anfang habe ich auf UDP Broadcast gesetzt, was auch funktioniert hat, aber zuverlässig ist das auch nicht weil, man nie weiss ob, die Nachricht angekommen ist oder ob, die richtig verstanden wurde.
- Deswegen auch jetzt doch die Idee verbindungsorientiert zu arbeiten...Nachteil bist du nicht mehr schnell und hast Totzeiten zwischen dem ersten und dem letzten Gerät.
Es gibt nur eine Instanz, die erste habe ich gelöscht.
Ich darf aber schon mal berichten, dass ich es hinbekommen habe...also es Funktioniert..
Ich habe einfach die Zeile
IP_CONTROL_2.IP := UDP_IP_Adress;
durch folgende ersetzt..
COM.C_IP := UDP_IP_Adress; (* COM eine Struktur von oscat_IP_C *).
Ich konnte 10 Geräte nacheinander abfragen. Mein Problem jetzt, ist die Zeiten zu optimieren und die Kommunikation zu beschleunigen.
Fahrweise:
Verbindungsaufbau--> Anfrage senden--> auf Antwort warten--> Antwort erhalten-->Verbindung abbauen--> Empfangene Bytes zur Auswertung weiter geben
--> IP-Adresse ändern und das ganze fängt von vorne wieder an.
Im Quellcode: CONNECT in der oscat_network_121 habe ich Delay_Value von 50 ms auf 20 ms reduziert.
Ich benutze einen SPS-Zyklus von 10 ms und komme jetzt laut Wireshark auf ca 120ms zwischen 2 Anfragen. Die Stromrichter antworten sehr schnell (wireshark) 0,5 ms.
WIe kann ich Zeiten noch optimieren ist das überhaupt noch möglich...
Vielen Dank