Im einfachsten Fall hat man in einer SPS einen (in Worten 1) "Task" oder "Thread", das das komplette Programm beinhaltet.
Dieses Programm wird vom BetriebsSystem gestartet und muss innerhalb von x Millisekunden komplett bis zum Ende durchlaufen/abgearbeitet sein. Dann kopiert das BetriebsSystem das "ProzessAbbildAusgänge" auf die ("physikalisch vorhandenen") digitalen und analogen Ausgänge und das BetriebsSystem kopiert den Zustand der ("physikalisch vorhandenen") digitalen und analogen Eingänge in das "ProzessAbbildEingänge" und wartet dann, bis die vorgegebenen n Millisekunden seit dem letzten Start verstrichen sind und startet den nächsten Durchlauf u.s.w., wie gerade beschrieben.
Die ZyklusZeit ist der Abstand zwischen zwei aufeinander folgenden Starts des Programms. Übliche ZyklusZeiten liegen im Bereich von 1 ms .. 100 ms. Die SPS sind im Laufe der Jahre schneller geworden und schaffen heutzutage (je nach Umfang des Programms) "PiQuadratMalDaumen" i.A. locker in 10 ms das komplette Programm abzuarbeiten und noch etwas "Luft" für die Aufgaben des BetriebsSystems freizuhalten.
Die ZyklusZeit wählst Du aus und Du musst beim Programmieren darauf achten, dass das Programm tatsächlich innerhalb dieser Zeit komplett durchlaufen werden kann. Keine ProgrammSchleifen programmieren, die endlos laufen oder einfach zu viele Durchläufe in einem Zyklus absolvieren sollen.
Insbesondere nicht in Schleifen darauf warten, dass ein Eingang endlich meldet, dass eine Aktion fertig geworden ist und Du daraufhin den nächsten Schritt von irgendetwas starten kannst!
Natürlich muss die SPS auf bestimmte (aber i.A. viele verschiedene) Aktionen oder Reaktionen "warten", aber dies muss so programmiert sein, dass es im ProgrammAblauf gnadenlos weitergeht. Andere Stellen im Programm "warten" schliesslich auch und wollen abgearbeitet werden, um möglichst schnell reagieren zu können.
Im nächsten Zyklus schaut das Programm dann wieder, ob ein Zustand, auf den es warten soll, nun endlich gegeben ist oder weiter gewartet werden muss.
Läuft die ZyklusZeit ab, während das Programm noch am "schuften" ist, tritt eine ZyklusZeitÜberschreitung auf und führt zu einem Stopp des Programms.
Das klingt sehr schlimm und lästig und ist es auch. Die SPS soll ja diverse Aufgaben zuverlässig abarbeiten und immer zügig auf irgendwelche ZustandsÄnderungen reagieren. Darum ist es nicht zulässig/zweckmässig, wenn das Programm an einer (oder mehreren) Stelle ( n ) "hakt".
Man muss sich also Gedanken machen, so zu programmieren, dass es nicht zu ZyklusZeitÜberschreitungen und entsprechenden "Ausfällen" der SPS kommen kann.