CodeSys/ Erfahrung mit Online Changes?

_pi_

Level-1
Beiträge
20
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
hallo zusammen,
ich habe früher viel mit CodeSys gearbeitet, die letzten Jahre aber nur mit S7.
Mit CodeSys war es früher nicht oder nur sehr umständlich möglich, Programm-Änderungen im laufenden Betrieb zu machen. Wenn es möglich war, dann musste der zuletzt auf die Steuerung eingespielte Stand gesichert sein und man konnte eine Änderungs-Übertragung machen. Das hatte aber nicht funktioniert, wenn man z.b. im Büro auf einer Steuerung entwickelt und getestet hat und dann auf die Anlage gefahren ist und die Änderungen in der Anlagensteuerung einspielen wollte.
Außerdem gab es extreme Zykluszeitschwankungen, wenn man im RUN Online-Funktionen ausgeführt hat (Status, Programmänderungen übertragen).
Die letzten Jahre war ich in dieser Hinsicht von Simatic S7 recht verwöhnt, jetzt soll ich aber wieder ein Projekt mit CodeSys machen. Was ist da der aktuelle Stand. Wer hat Erfahrung damit?
 
Also in TwinCAT ist es ein Online-Change ohne Probleme möglich.

Meines wissens wird das neue Prozessabbild in den Speicher geschrieben, wenn das komlette Programm übertragen wurde, wird im nächsten Zyklus das neue Programm abgearbeitet und das alte Abbild gelöscht.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Also in TwinCAT ist es ein Online-Change ohne Probleme möglich.

Meines wissens wird das neue Prozessabbild in den Speicher geschrieben, wenn das komlette Programm übertragen wurde, wird im nächsten Zyklus das neue Programm abgearbeitet und das alte Abbild gelöscht.

Das klappt nur, wenn die SPS noch nicht zu weit ausgelastet ist. Wir haben hier einen PC, mit 5 Bussystemen. Da geht nichts mehr, wiel der Kommunikationstask die niedrigste Priorität hat. Das Hochladen eines Programmes dauert etwa 2min. Da die Anlage aber demnächst abgebaut wird, gibt auch keine Investition.
 
Also in TwinCAT ist es ein Online-Change ohne Probleme möglich.

Meines wissens wird das neue Prozessabbild in den Speicher geschrieben, wenn das komlette Programm übertragen wurde, wird im nächsten Zyklus das neue Programm abgearbeitet und das alte Abbild gelöscht.

nach dieser beschreibung würde dann das programm komplett übertragen werden und dann umgeschaltet werden (aber was passiert mit den dateninhalten der variablen usw. die müssen doch dann auch zu diesem zeitpunkt umkopiert werden???
außerdem bräuchte man immer den doppelten arbeitsspeicher?
 
nach dieser beschreibung würde dann das programm komplett übertragen werden und dann umgeschaltet werden (aber was passiert mit den dateninhalten der variablen usw. die müssen doch dann auch zu diesem zeitpunkt umkopiert werden???
außerdem bräuchte man immer den doppelten arbeitsspeicher?

Das klappt. Ich mache das hier regelmässig mit PCs und diversen CXen. Was nicht geht, sind geänderte Konstanten. Jedenfalls benötigen einen Reboot.
 
Online Change läuft gut wenn die Entwicklungsumgebung weis was auf dem Zielsystem gerade läuft.

...CoDeSys muss wissen, was auf der SPS läuft, dazu gibt es die .ci und .ri Dateien. (die liegen parallel zur Projektdatei).
Wenn Du diese passend zu dem Projekt auf der SPS hast, dann kann man einen Online Change durchführen, wenn nicht dann nicht.
...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
hast du da schon mal auf die zykluszeit geschaut? inwieweit schwankt die in diesem fall?
Bei TwinCAT "schwankt" die Zykluszeit nicht (jittert höchstens +/- 5µs im Extremfall). Dafür wird der Rechner stark belastet beim Online-Change bei großen Programmen (natürlich Abhängig von der Ausbaustufe des PCs), wobei es evtl. passieren kann, dass das Programm in der vorgegebenen Zykluszeit nicht fertig abgearbeitet wird. Dann wird es im nächsten Zyklus fortgesetztz, das Programm braucht also evtl. zwei Zyklen.
 
Was nicht geht, sind geänderte Konstanten. Jedenfalls benötigen einen Reboot.

Meinst Du VAR_CONSTANT? Ich glaube die kann man im Code ändern und zusätzlich ONLINE einfach ändern. Wenn ich mich täuschen sollte, Asche auf mein Haupt.

Generell fasziniert mich der ONLINE-CHANGE immer wieder. :TOOL:(was der im Hintergrund alles tun muss) Der Online-Change erfolgt offenbar immer im Zklus mit der TASK mit der niedrigsten Priorität. Habe selbst einmal bitter bereut, dass ich einen Task VERY_SLOW mit 2 Sekunden TASK Zeit hatte. Aber prinzipiell geht es auch so.

Schönes WE
 
Ich weiß, dass ich nichts weiß....

Da geht nichts mehr, wiel der Kommunikationstask die niedrigste Priorität hat. Das Hochladen eines Programmes dauert etwa 2min. Da die Anlage aber demnächst abgebaut wird, gibt auch keine Investition.

Mein Support sagte mir einmal, dass der Kommunikationstask immer die höchste Priorität haben sollte, da prinzipiell alles über ADS läuft :confused:
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Gefahr bei OPC etc.

Auf eines muss besonders geachtet werden, ich spreche hier aus leidvoller Erfahrung. Wenn Datenstrukturen geändert wurden, und ein Online-Change durchgeführt wird, muss unbedingt darauf geachtet werden, dass z.B. andere zugreifende Geräte (Visualisierungen, OPC, Bediengeräte etc.) auf Variablen per ADS-Name zugreifen (und nicht per Adresse), sonst kann es ziemlichen Ärger geben.
Außer Ihr arbeitet generell mit fixen Adressen bei den Variablen (was Ihr aber sicher wie auch ich nicht tut..)

Im Zweifelsfall Visu abstellen, Online-Change durchführen und Visu mit den neuen TPY Files starten. Ansonsten ist mit Datenverlust (verursacht durch außen) zu rechnen.
 
z.B. andere zugreifende Geräte (Visualisierungen, OPC, Bediengeräte etc.) auf Variablen per ADS-Name zugreifen (und nicht per Adresse), sonst kann es ziemlichen Ärger geben.

Ich habe da auch ein Problem, das Visualisierungen beim Online-Change die Variablen nicht mehr finden. Wenn du jedoch auf die Variable per ADS-Name zugreifst, hieße es, du benutzt Handles, welche wiederrum auch nur Zeiger auf den Speicherplatz sind. Also bei mir hat das mit den Handles nicht funktioniert.
 
Ich kenne das z.B. vom OPC-Server (Beckhoff) so. Der unterstützt diese Funktion, und wir greifen auf die Variablen ausschließlich über den Namen zu. Zu Deinem Problem: dass keine Variablen mehr gelesen werden können geht ja noch, aber wehe die Visu hat schreibenden Zugrif (und dann irgendwo)
Als Variablendatei verwenden wird die TPY, diese wird dann auch nach jedem Online-Change aktualisiert. Die Variablen müssten aber sowieso unabhängig per ADS die Variaben immer richtig bekommen. Der Zugriff per Name ist halt langsamer, dafür aber unproblematischer.

LG
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Mein Support sagte mir einmal, dass der Kommunikationstask immer die höchste Priorität haben sollte, da prinzipiell alles über ADS läuft :confused:

Das macht er nicht. Bei mir wurde der automatisch auf 15 gesetzt, während die anderen Task mind. 11 haben. ADS soll eben nicht die Anlage stören, weil es nur eine untergeordnete Kommunikation ist.
 
Auf eines muss besonders geachtet werden, ich spreche hier aus leidvoller Erfahrung. Wenn Datenstrukturen geändert wurden, und ein Online-Change durchgeführt wird,

Im Zweifelsfall Visu abstellen, Online-Change durchführen und Visu mit den neuen TPY Files starten. Ansonsten ist mit Datenverlust (verursacht durch außen) zu rechnen.

Die HMI sollte sich eigentlich, nach einem Kommunikationsproblem neu ankoppeln. So mach ich das jedenfalls. Dafür habe ich in VB immer einen eigenen Thread.
 
Bei TwinCAT "schwankt" die Zykluszeit nicht (jittert höchstens +/- 5µs im Extremfall). Dafür wird der Rechner stark belastet beim Online-Change bei großen Programmen (natürlich Abhängig von der Ausbaustufe des PCs), wobei es evtl. passieren kann, dass das Programm in der vorgegebenen Zykluszeit nicht fertig abgearbeitet wird. Dann wird es im nächsten Zyklus fortgesetztz, das Programm braucht also evtl. zwei Zyklen.

das verstehe ich dann nicht...wenn das programm (ist das anwenderprogramm gemeint?) in der vorgegebenen Zykluszeit nicht fertig wird und einen Zyklus mehr braucht, dann hab ich doch ne Zykluszeitschwankung von 100% ?? mein Prozess braucht ja eine Reaktion in einer vorgegeben Zeit; das ist für mich die relevante Zykluszeit!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
TwinCAT startet das Programm in festgelegten Abständen (Zyklen => Zykluszeit), beispielsweise jede 1ms.
Der Jitter bezieht sich auf diese Startzeit des (SPS-)Programms, also nur auf die interne Zeitbasis.

Wenn dein Programm natürlich nicht mit der gesetzten Zykluszeit auskommt, hat das nichts mit Jitter zu tun. Das Programm wird einfach im nächsten Zyklus fortgesetzt. Dann muss folglich die Zykluszeit hochgesetzt werden, um diese Schwankungen in der Programmausführung zu vermeiden.

Wenn dein PC also in beispielsweise 100µs Zykluszeit nicht klar kommt, muss man eben 150µs einstellen. Der Rechner ist dann schlichtweg nicht schnell genug :ROFLMAO:
 
TwinCAT startet das Programm in festgelegten Abständen (Zyklen => Zykluszeit), beispielsweise jede 1ms.
Der Jitter bezieht sich auf diese Startzeit des (SPS-)Programms, also nur auf die interne Zeitbasis.

Wenn dein Programm natürlich nicht mit der gesetzten Zykluszeit auskommt, hat das nichts mit Jitter zu tun. Das Programm wird einfach im nächsten Zyklus fortgesetzt. Dann muss folglich die Zykluszeit hochgesetzt werden, um diese Schwankungen in der Programmausführung zu vermeiden.

Wenn dein PC also in beispielsweise 100µs Zykluszeit nicht klar kommt, muss man eben 150µs einstellen. Der Rechner ist dann schlichtweg nicht schnell genug :ROFLMAO:

wenn ich das richtig verstanden habe, dann wird die Zykluszeit bei Step7 und Codesys unterschiedlich interpretiert.
Bei Codesys ist es also nur ein interner Basistakt. Wahrscheinlich dann für einen zeitgesteuerten Scheduler für die Tasks.
Dann muß ich meine Anfangsfrage umformulieren. Um wieviel verlängert sich die Programmausführung (evt. verteilt auf mehrere Zyklen), wenn Online-Funktionen und Online-Change ausgeführt wird?
 
wenn ich das richtig verstanden habe, dann wird die Zykluszeit bei Step7 und Codesys unterschiedlich interpretiert.
Bei Codesys ist es also nur ein interner Basistakt. Wahrscheinlich dann für einen zeitgesteuerten Scheduler für die Tasks.
So ist es. Normalerweise arbeitet ne S7 die Task "so schnell wie möglich" ab. Aber man kann meines Wissens nach auch feste Zykluszeiten verwenden. Das ist z.B. für Reglerbausteine unerlässlich.
Bei TwinCAT wird generell taktzyklisch abgearbeitet. Wird das Programm in einem Zyklus nicht gertig, wird's im nächsten Zyklus fortgesetzt. Du verlierst also mindestens einen kompletten Zyklus.
Dann muß ich meine Anfangsfrage umformulieren. Um wieviel verlängert sich die Programmausführung (evt. verteilt auf mehrere Zyklen), wenn Online-Funktionen und Online-Change ausgeführt wird?
Das kann man nicht pauschal sagen. Auf jeden Fall n*Zykluszeit [n = 1,2,3...]
 
Zurück
Oben