Folgendes Zenario:
Es gibt einen Master und 4 Slaves. Alles sind Wago 841 Controler. Auf dem Master wird auch die Webvisu realisiert. Der Master befehlt den 4 Slaves was sie zu erledigen haben über eine Netzvariablentabelle. Diese werden gepackt versendet mit der COB-ID 1. Über eine 2 Netzvariablentabelle wird dem Master der jeweilige Status der Clients mitgeteilt. Diese hat die COB-ID 2 und die Variablen hier sind nicht gepackt, da sie sich sonst gegenseitig überschreiben würden. Beide verweden hierfür Arrays mit einer Größe von 4. Also ein Arrayfeld für ein Slave. Beide sind so eingestellt, das jeweils bei Änderung die Übertragung stattfindet. Die Slaves haben alles die gleiche Software aufgespielt und über ihre WebVisu wird einmalig ihre Nummer zugeteilt.
Um zu überprüfen ob eine Verbindung zum Slave besteht gibt es ein Testbyte für jeden Slave das jede Sekunde um eins erhöht wird.
Wenn ich das nun mit einen Slave betreibe funktioniert alles Tadellos. Sobald aber mehr Slaves angeschlossen werden funktioniert die Übertragung des Testbytes nur noch teilweise. Von einen Slave bekomme ich durchgehend den neuen veränderten Wert mitgeteilt, jedoch bei den weiteren nur ca. alle 10 Sekunden.
Der Versuch die Netzvariablentabelle in 4 seperate aufzuteilen hat leider auch nicht wirklich Verbesserung gebracht.
Sind Netzvariablen überhaupt für sowas ausgelegt.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Ja hab jetzt festgestellt das es an der Task Priorität verteilung liegt. Wenn ich den PLC_PRG die Priorität 0 gebe (also niedrigste oder?) funktioniert es tadellos. Jedoch habe ich dann Probleme mit dem setzen der Ausgänge. Aber denke dass das eher Logik Sache ist. Versteh nur nicht wieso die Netzvariablen nicht funktionieren trotz höherer Priorität.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Evtl. mal mit Wireshark schauen, was in dem Netzwerk los ist. Was hast Du beim "Mindestabstand" drin? Ich habe hier drei Stück 841er am laufen, jeder sendet an jeden, allerdings nie die gleiche COB-ID.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hatte das selbe Problem!
Der eigentliche Übeltäter ist die BUS-Last!!!
Das wichtigste bei der ganzen Netzvariablen-Geschichte ist, die explizite Angabe der Empfänger-IP!
Das Datenaufkommen ist beim versenden und empfangen der Netzvariablen so hoch, weil bei jeder Abfrage der Netzvariablenliste, oben angefangen wird und bei einer erkannten Änderungen (beispielsweise mitten in der Liste) die komplette Liste ersteinmal gesendet wird, weil sich der Wert ja geändert hat. Da die Liste aber noch nicht komplett abgefragt wurde, wird dieselbe Liste nun nocheinmal von oben an abgefragt und bei einer entsprechenden Wertänderung wiederum komplett versendet!
Steht nun bei den UDP-Einstellungen Port 1202 / Gateway 255.255.255.0, dann wird die Liste an sämtliche IP-Adressen verschickt, die sich im selben Netzwerk befinden. Erst als ich hier explizit die IP angegeben habe, die die Liste erhalten soll, wurde der Datenverkehr besser. Die Option "Senden bei Änderung" habe ich auch deaktiviert. Hier sende ich lieber zyklisch alle 1-2 Sekunden (HLK-Branche nicht ganz so gravierend), als das er mir alle 50ms bei jeder Wertänderung die Liste an sämtliche Teilnehmer verschickt.
Das wären meine Lösungsansätze dazu...
Als erstes würd ich das wie gesagt mal mit der IP-Angabe ausprobieren, dann sollte es schon zügiger gehen.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hallo,
Folgendes Zenario:
Es gibt einen Master und 4 Slaves. Alles sind Wago 841 Controler. Auf dem Master wird auch die Webvisu realisiert. Der Master befehlt den 4 Slaves was sie zu erledigen haben über eine Netzvariablentabelle. Diese werden gepackt versendet mit der COB-ID 1. Über eine 2 Netzvariablentabelle wird dem Master der jeweilige Status der Clients mitgeteilt. Diese hat die COB-ID 2 und die Variablen hier sind nicht gepackt, da sie sich sonst gegenseitig überschreiben würden. Beide verweden hierfür Arrays mit einer Größe von 4. Also ein Arrayfeld für ein Slave. Beide sind so eingestellt, das jeweils bei Änderung die Übertragung stattfindet. Die Slaves haben alles die gleiche Software aufgespielt und über ihre WebVisu wird einmalig ihre Nummer zugeteilt.
Um zu überprüfen ob eine Verbindung zum Slave besteht gibt es ein Testbyte für jeden Slave das jede Sekunde um eins erhöht wird.
Wenn ich das nun mit einen Slave betreibe funktioniert alles Tadellos. Sobald aber mehr Slaves angeschlossen werden funktioniert die Übertragung des Testbytes nur noch teilweise. Von einen Slave bekomme ich durchgehend den neuen veränderten Wert mitgeteilt, jedoch bei den weiteren nur ca. alle 10 Sekunden.
Der Versuch die Netzvariablentabelle in 4 seperate aufzuteilen hat leider auch nicht wirklich Verbesserung gebracht.
Sind Netzvariablen überhaupt für sowas ausgelegt.
Hi
Ist überall die identische Firmware drauf ?
Das ist wichtig.
Gruß Karl
Ja hab jetzt festgestellt das es an der Task Priorität verteilung liegt. Wenn ich den PLC_PRG die Priorität 0 gebe (also niedrigste oder?) funktioniert es tadellos. Jedoch habe ich dann Probleme mit dem setzen der Ausgänge. Aber denke dass das eher Logik Sache ist. Versteh nur nicht wieso die Netzvariablen nicht funktionieren trotz höherer Priorität.
Servus
Nur zur Info: Priorität 0 ist die höchst priorisierte Task.
Gruß
Erik
Evtl. mal mit Wireshark schauen, was in dem Netzwerk los ist. Was hast Du beim "Mindestabstand" drin? Ich habe hier drei Stück 841er am laufen, jeder sendet an jeden, allerdings nie die gleiche COB-ID.
Ach ja, die redeten auch mit verschiedenen Firmwareversionen miteinander.
Hi!
Hatte das selbe Problem!
Der eigentliche Übeltäter ist die BUS-Last!!!
Das wichtigste bei der ganzen Netzvariablen-Geschichte ist, die explizite Angabe der Empfänger-IP!
Das Datenaufkommen ist beim versenden und empfangen der Netzvariablen so hoch, weil bei jeder Abfrage der Netzvariablenliste, oben angefangen wird und bei einer erkannten Änderungen (beispielsweise mitten in der Liste) die komplette Liste ersteinmal gesendet wird, weil sich der Wert ja geändert hat. Da die Liste aber noch nicht komplett abgefragt wurde, wird dieselbe Liste nun nocheinmal von oben an abgefragt und bei einer entsprechenden Wertänderung wiederum komplett versendet!
Steht nun bei den UDP-Einstellungen Port 1202 / Gateway 255.255.255.0, dann wird die Liste an sämtliche IP-Adressen verschickt, die sich im selben Netzwerk befinden. Erst als ich hier explizit die IP angegeben habe, die die Liste erhalten soll, wurde der Datenverkehr besser. Die Option "Senden bei Änderung" habe ich auch deaktiviert. Hier sende ich lieber zyklisch alle 1-2 Sekunden (HLK-Branche nicht ganz so gravierend), als das er mir alle 50ms bei jeder Wertänderung die Liste an sämtliche Teilnehmer verschickt.
Das wären meine Lösungsansätze dazu...
Als erstes würd ich das wie gesagt mal mit der IP-Angabe ausprobieren, dann sollte es schon zügiger gehen.