Probleme beim Starten des Programms

dietere

Level-1
Beiträge
32
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

betreibe ein WAGO 758-870 mit Codesys, und habe das Problem, dass nach einem Programmstart das Programm losläuft aber noch nicht alle Eingänge eingelesen sind. Ich bekomme dann natürlich erstmal unzählige Störmeldungen und Fehlfunktionen.
Sollte das Programm nicht eigentlich erst automatisch loslaufen nachdem alle Eingänge eingelesen wurden ?
Also so: Eingänge einlesen -> Programmzyklus -> Ausgänge schreiben, u.s.w. ...
Nach einem Power off/on ist es immer ganz schlimm. Was mache ich falsch ?

Grüsse,
Dieter
 
Also ich finde das jetzt nicht gerade ungewöhnlich.
Wir programmieren immer einen "Verzögerungsmerker", der vom 1. Zyklus nach z.B. 15 Sekunden (unsere Anlagen haben viel Zeit) auf high gesetzt wird und anzeigt, dass jetzt alles da sein müsste.

Wie du den ersten Zyklus erkennst, ist hardwareabhängig.

Bedenke, dass ja nicht nur die SPS und ihre Peripherie Zeit zum Booten braucht, auch externe prozessorgesteuerte Auswertegeräte brauchen mitunter mehrere Sekunden zum Hochfahren.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Da hast du schon recht.
Aber bei mir ist nichts was hochlaufen muss. Alle Ein- und Ausgabegeräte hängen an 11 verschiedenen Profibuscontrollern, und diese werden nicht ausgeschaltet. Also bleiben alle Eingänge doch statisch unverändert, oder ?
Oder werden die Profibuscontroller bei einem Programmstart auch automatisch mit zurückgesetzt ?

Wie machst du das mit dem Verzögerungsmerker ?
Ich kann beim Event 'Programmstart' eine Flag setzen. Mit dieser Flag dann eine Task starten, die einen Timer ablaufen lässt, und dann den Verzögerungsmerker auf high setzt, und dann die eigentlichen Programmtasks erst starten mit dem Event 'Verzögerungsmerker=high'.
Ist das so in etwa richtig gedacht ?

Grüsse,
Dieter
 
Ich vermute mal, das der Profibus-Zyklus ebenfalls wie bei anderen Herstellern AZyklisch zum normalen Zyklus ist,
was heißt, das der Zyklus mit Sicherheit schon starten wird, bevor alle Profibus-EA's eingelesen sind.

Mit dem Event "Start" setzt du einen Merker, dieser Merker unterbindet dann in deinem "normalen" Programm,
einfach so Sachen wie div. Störmeldungen, ebenfalls ist er in Startbedingungen von irgendwelchen Automatik-Abläufen enthalten...
Und wird halt im normalen SPS-Zyklus nach X Sekunden wieder zurückgesetzt.

Außerdem: Der Tasktyp "Ereignis" ist nur eine einmalige Geschichte, also im Grunde die Auswertung einer Flanke,
von irgend einer Variable.

Mfg
Manuel
 
Mit dem Event "Start" setzt du einen Merker, dieser Merker unterbindet dann in deinem "normalen" Programm,
einfach so Sachen wie div. Störmeldungen, ebenfalls ist er in Startbedingungen von irgendwelchen Automatik-Abläufen enthalten...
Und wird halt im normalen SPS-Zyklus nach X Sekunden wieder zurückgesetzt.

D.h. ja ich kann nicht die ganze Task erst später starten, sondern muss den Merker an allen kritischen Stellen im Programm abfragen, richtig ?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Dann bist du halt am flexibelsten mit der Verzögerungszeit.

Du kannst auch den Task unterbinden, bzw. erstellst ein PRG von dem aus du alle sonstigen Programme,
in entsprechender Reihenfolge startest, und gewisse Programmteile halt einfach im Aufruf unterbindest.

Den kompletten Task zu unterbinden, würde ich persönlich eher vermeiden.

Mfg
Manuel
 
Zurück
Oben