SPS-Programmierung in der Ausbildung – Funktionsbausteine sinnvoll strukturieren
SPS-Programmierung in der Ausbildung – Funktionsbausteine sinnvoll strukturieren
Einleitung
In diesem aiMOOC lernst Du, SPS-Programme mit Funktionsbausteinen (FB) so zu strukturieren, dass Schnittstellen klar, Logik wiederverwendbar und Diagnosewege kurz bleiben. Zielgruppe ist die Ausbildung in Automatisierungs-, Elektro- und Mechatronikberufen.
Ausbildungsfall: Eine virtuelle Sortierstation transportiert Werkstücke über zwei identische Förderabschnitte. Jeder Abschnitt erhält dieselbe Bausteinlogik, aber eine eigene Instanz. Du beobachtest Signale, simulierst Fehler und begründest Deine Diagnose.
Sicherheitsrahmen: Alle Maschinenabläufe werden zuerst und in diesem Kurs ausschließlich virtuell simuliert. Es gibt keine automatische Live-Ansteuerung realer Ausgänge. Schutzeinrichtungen werden niemals überbrückt oder durch Übungslogik außer Kraft gesetzt. Arbeiten an realen Anlagen erfolgen nur unter geeigneter Fachaufsicht, nach betrieblicher Freigabe und unter Beachtung der betrieblichen Gefährdungsbeurteilung und Sicherheitsvorgaben.

Lerneinheit 1: Vom SPS-Programm zum Baustein
Eine SPS verarbeitet Eingangssignale, führt das Anwenderprogramm aus und bildet daraus Ausgangssignale. Für größere Programme ist entscheidend, die Aufgabe in kleine, klar abgegrenzte Funktionen zu zerlegen.

Merksatz: Ein guter Baustein erledigt eine überschaubare Teilaufgabe und tauscht Daten über eine klar definierte Schnittstelle aus.
| Ungeeignet | Besser |
|---|---|
| Direkter Zugriff auf viele globale Variablen im FB | Ein- und Ausgänge über die Bausteinschnittstelle |
| Mehrere unabhängige Maschinenfunktionen in einem FB | Ein FB pro klarer Teilaufgabe |
| Versteckte Querzugriffe auf Instanzdaten | Datenfluss über IN, OUT und bei Bedarf IN_OUT |
| Kopierter Code für jedes Aggregat | Ein wiederverwendbarer FB mit mehreren Instanzen |
Lerneinheit 2: FB, FC und Instanz
Im TIA-Portal-Beispiel gilt: Ein FC besitzt keinen eigenen zyklischen Datenspeicher. Ein FB kann statische Zustände speichern; die zugehörigen Daten liegen in einer Instanz. Dadurch kann dieselbe Logik mehrfach mit getrennten Zuständen verwendet werden.
Medienhinweis: Das Video „TIA Portal V13 - Funktion (FC) & Funktionsbaustein (FB)“ von SPS&Technik behandelt FC, FB und Schnittstellen. Laut Videobeschreibung ist beim Aufruf eines Bausteins ein Dialogfenster im Video nicht sichtbar; nutze das Video daher als Ergänzung, nicht als alleinige Bedienanleitung.
| Element | Aufgabe im Ausbildungsfall |
|---|---|
| IN | Anforderungen und Sensorsignale in den FB hineinführen |
| OUT | Zustände, Freigaben, Diagnose und simulierte Befehle ausgeben |
| IN_OUT | Nur verwenden, wenn ein gemeinsamer strukturierter Datensatz bewusst gelesen und geschrieben werden soll |
| STAT | Interne Zustände speichern, zum Beispiel Schrittzustand oder Zeitüberwachung |
| TEMP | Kurzlebige Zwischenwerte nur für den aktuellen Aufruf verwenden |
Lerneinheit 3: Schnittstellen zuerst entwerfen
Bevor Du Logik programmierst, formulierst Du die Schnittstelle. Für den wiederverwendbaren Baustein FB_Foerderabschnitt genügt eine kleine, sprechende Schnittstelle.
| Name | Richtung | Datentyp | Bedeutung |
|---|---|---|---|
| xEnable | IN | BOOL | Abschnitt freigegeben |
| xStart | IN | BOOL | Transport anfordern |
| xPartIn | IN | BOOL | Werkstück am Eingang erkannt |
| xPartOut | IN | BOOL | Werkstück am Ausgang erkannt |
| xReset | IN | BOOL | Quittierung einer simulierten Störung |
| tMaxTravel | IN | TIME | Maximale simulierte Transportzeit |
| xMotorCmd | OUT | BOOL | Simulierter Motorbefehl |
| xBusy | OUT | BOOL | Transport läuft |
| xDone | OUT | BOOL | Transport abgeschlossen |
| xFault | OUT | BOOL | Diagnose meldet Fehler |
Strukturregel: Hardwareadressen wie %I oder %Q gehören nicht in den wiederverwendbaren Kern des FB. Die Zuordnung von realen Ein-/Ausgängen erfolgt außerhalb des Bausteins in einer dafür vorgesehenen E/A-Schicht. Im Kurs bleibt diese Zuordnung rein virtuell.

Lerneinheit 4: Eine Logik – mehrere Instanzen
Die virtuelle Sortierstation besitzt zwei Förderabschnitte. Beide rufen denselben FB auf, aber mit getrennten Instanzdaten.
| Instanz | Eingänge | Ausgänge | Eigenständiger Zustand |
|---|---|---|---|
| Inst_Foerderer_A | B1, B2, Start_A | Motor_A, Done_A, Fault_A | Ja |
| Inst_Foerderer_B | B2, B3, Start_B | Motor_B, Done_B, Fault_B | Ja |
Prüffrage an Dich: Wenn Förderer A gerade eine Zeitüberwachung laufen hat, darf das den Zustand von Förderer B verändern? Nein. Genau dafür sind getrennte Instanzen wichtig.
Lerneinheit 5: Virtuelle Anlage und Signalverlauf
Die Anlage wird als Simulation gedacht: B1 erkennt das Werkstück am Anfang, B2 am Übergabepunkt, B3 am Ende. Motor_A und Motor_B sind ausschließlich simulierte Ausgabesignale.
| Zeitpunkt | Start_A | B1 | B2 | Motor_A | xBusy_A | xDone_A |
|---|---|---|---|---|---|---|
| t0 | 0 | 0 | 0 | 0 | 0 | 0 |
| t1 | 1 | 1 | 0 | 1 | 1 | 0 |
| t2 | 0 | 1 | 0 | 1 | 1 | 0 |
| t3 | 0 | 0 | 1 | 0 | 0 | 1 |
| t4 | 0 | 0 | 1 | 0 | 0 | 0 |
Interpretation: Der Startimpuls löst den Transport aus. Der FB merkt sich den laufenden Zustand über die Instanz. Sobald B2 das Werkstück erkennt, endet der simulierte Transport und xDone_A wird als Abschlussmeldung gesetzt.
Lerneinheit 6: Diagnose statt Sucharbeit
Ein gut strukturierter FB macht Fehler beobachtbar. Diagnose beginnt am Eingang, führt über Zustand und Zeitüberwachung und endet am Ausgang.
| Fehlerbild in der Simulation | Beobachtung | Wahrscheinlicher Diagnosepfad |
|---|---|---|
| Start wird betätigt, Motor bleibt aus | xStart ist 1, xEnable ist 0 | Freigabekette prüfen |
| Motor läuft, Werkstück kommt nicht an B2 an | xBusy bleibt 1, xPartOut bleibt 0 | Signalfolge und Transportzeit prüfen |
| Nur Instanz B reagiert falsch | Instanz A arbeitet korrekt | Parameter und Signale von Instanz B prüfen |
| Beide Instanzen zeigen denselben unerwarteten Zustand | Gleicher Fehler an zwei Aufrufen | Gemeinsame Logik oder gemeinsame Eingangsdaten prüfen |

Lerneinheit 7: Simulation vor Inbetriebnahme
Mit Simulation kannst Du Grenzfälle reproduzieren, ohne eine reale Maschine automatisch anzusteuern. Prüfe Normalablauf, fehlende Sensorantwort, Reset-Verhalten und zwei parallele Instanzen.
Stoppregel: Sobald ein Lernschritt eine reale Maschine, reale Aktoren oder das Ändern von Schutzeinrichtungen betreffen würde, endet die Selbstlernaufgabe. Die weitere Arbeit erfolgt nur im betrieblich freigegebenen Rahmen unter geeigneter Fachaufsicht.
Ausbildungsfall: Virtuelle Sortierstation
Auftrag: Strukturiere die zwei Förderabschnitte mit einem wiederverwendbaren FB. Beide Instanzen sollen dieselbe Schnittstelle haben. Ein Zeitfehler wird simuliert, wenn der Ausgangssensor innerhalb der vorgegebenen Transportzeit nicht kommt.
Virtuelles Werkstück: B1 -> Förderer A -> B2 -> Förderer B -> B3 Nur Simulation: Sensorbits -> FB-Instanz -> simulierte Befehle -> Signalbeobachtung
Gestufte Hilfen
| Stufe | Hilfe |
|---|---|
| Hilfe 1 | Zeichne nur den Signalweg: Sensor -> Eingang -> Zustand -> Ausgang. |
| Hilfe 2 | Prüfe zuerst, welche Werte von Zyklus zu Zyklus erhalten bleiben müssen. Diese gehören beim FB in einen geeigneten Instanzspeicher. |
| Hilfe 3 | Beobachte in dieser Reihenfolge: xEnable, xStart, xPartIn, interner Zustand, Zeitüberwachung, xPartOut, xMotorCmd, xFault. |
| Hilfe 4 | Wenn zwei Instanzen sich gegenseitig beeinflussen, suche nach globalen Querzugriffen oder gemeinsam genutzten Zustandsvariablen. |
Basis-, Anwendungs- und Transferaufgaben mit Feedback
| Niveau | Aufgabe | Begründetes Feedback |
|---|---|---|
| Basis | Ordne xEnable, xStart, xPartOut und xFault einer sinnvollen Schnittstellenrichtung zu. | Gut gelöst ist die Aufgabe, wenn Anforderungen und Sensorsignale in den Baustein hineingehen und Status-/Diagnosesignale aus ihm herauskommen. So bleibt der Datenfluss lesbar. |
| Anwendung | Plane zwei Aufrufe desselben FB für Förderer A und B mit getrennten Instanzen. | Die Lösung ist fachlich tragfähig, wenn beide Aufrufe dieselbe Logik nutzen, aber Zustände und Zeitüberwachungen getrennt bleiben. So entsteht Wiederverwendung ohne gegenseitige Beeinflussung. |
| Transfer | Ergänze einen dritten virtuellen Förderabschnitt, ohne den FB-Code zu kopieren oder zu verändern. | Eine gute Lösung benötigt nur eine weitere Instanz und passende Parameter. Wenn Kernlogik kopiert werden muss, ist die Schnittstelle oder Parametrierung noch nicht allgemein genug. |
Steuerungsaufgabe: Was passiert als Nächstes?
Im virtuellen Ablauf ist xEnable_A = 1, xStart_A erhält einen kurzen Impuls, B1 = 1 und B2 = 0. Begründe, warum xMotorCmd_A und xBusy_A aktiv werden sollen. Danach setzt die Simulation B2 = 1. Begründe, warum der Transport beendet und xDone_A gemeldet werden kann.
Feedback: Entscheidend ist nicht das Auswendiglernen einzelner Kontakte, sondern die nachvollziehbare Kette Anforderung -> gespeicherter Zustand -> Rückmeldung -> Abschluss.
Diagnoseaufgabe: Fehler im Signalverlauf
| Zeitpunkt | xEnable_A | xStart_A | B1 | B2 | xMotorCmd_A | xFault_A |
|---|---|---|---|---|---|---|
| d0 | 1 | 0 | 0 | 0 | 0 | 0 |
| d1 | 1 | 1 | 1 | 0 | 1 | 0 |
| d2 | 1 | 0 | 1 | 0 | 1 | 0 |
| d3 | 1 | 0 | 0 | 0 | 0 | 1 |
Auftrag: Formuliere eine Diagnosehypothese. Nutze zuerst die Signalfolge, dann die Zeitüberwachung. Ändere keine Schutzeinrichtung und erzwinge keine realen Ausgänge.
Begründetes Feedback: Die plausibelste Hypothese ist ein fehlendes Ausgangssignal B2 innerhalb der erlaubten virtuellen Transportzeit. Die Diagnose folgt beobachtbaren Signalen und benötigt keinen direkten Eingriff in Hardware.
Fachliche Leitlinien
Die aktuelle IEC 61131-3 beschreibt unter anderem Strukturierter Text, Kontaktplan und Funktionsbausteindiagramm als SPS-Programmiersprachen. Für SIMATIC S7-1200/1500 empfiehlt Siemens eine modulare Programmstruktur, gekapselte Teilaufgaben, Datenübergabe über Bausteinschnittstellen und getrennte Instanzen für mehrfach genutzte FBs. Für sicherheitsbezogene Steuerungsfunktionen gelten zusätzliche Anforderungen; Standardlogik darf Sicherheitsfunktionen nicht unkontrolliert überstimmen.
Quellen und Medienrechte
| Quelle oder Medium | Prüfung und Nutzung |
|---|---|
| IEC 61131-3:2025 | Offizielle IEC-Seite; fachliche Grundlage zu SPS-Programmiersprachen. |
| Siemens Programming Guideline for S7-1200/1500 | Offizielle Siemens-Publikation; Grundlage für Wiederverwendung, Schnittstellen und Instanzen. |
| IFA Report 1/2025 | DGUV/IFA; Grundlage für den Hinweis zur Trennung, Spezifikation und Validierung sicherheitsbezogener Steuerungsfunktionen. |
| Speicherprogrammierbare Steuerung | Wikipedia als Überblick zu Aufbau, Arbeitsweise, Sensoren und Aktoren. |
| Programmable logic controller.jpg | Wikimedia Commons; freie Datei, CC BY-SA 3.0/GFDL gemäß Dateiseite. |
| PLC Block Diagram.jpg | Wikimedia Commons; CC BY-SA 4.0. |
| Simatic S7-1200.JPG | Wikimedia Commons; CC BY-SA 3.0 gemäß Dateiseite. |
| S71500.JPG | Wikimedia Commons; CC BY 3.0. |
| BeispielFUP.svg | Wikimedia Commons; CC BY-SA 4.0. |
| Ladder VirPLC.jpg | Wikimedia Commons; CC BY-SA 4.0. |
| TIA Portal V13 - Funktion FC & Funktionsbaustein FB | Öffentliches YouTube-Video von SPS&Technik; eingebettet, nicht kopiert. |
| Simulation S7 300 mit PLCSIM im TIA Portal | Öffentliches YouTube-Video von sps4you; eingebettet, nicht kopiert. |
| Simulation S7 1500 mit PLCSIM Advanced und TIA Portal | Öffentliches YouTube-Video von sps4you; eingebettet, nicht kopiert. |
Interaktive Aufgaben
Quiz: Teste Dein Wissen
Warum eignet sich ein Funktionsbaustein für wiederkehrende Maschinenmodule? (Weil dieselbe Logik mit getrennten Instanzen mehrfach genutzt werden kann) (!Weil jeder Funktionsbaustein nur einmal aufgerufen werden darf) (!Weil er alle Hardwareadressen global speichern muss) (!Weil er ohne Schnittstelle arbeitet)
Welche Information gehört typischerweise an einen Eingang des Förderbausteins? (Eine Freigabe oder ein Sensorsignal) (!Eine interne Instanzverwaltung des Programmiersystems) (!Eine versteckte globale Fehlernummer) (!Eine fest verdrahtete reale Ausgangsadresse)
Wozu dient eine getrennte Instanz eines Funktionsbausteins? (Sie hält den Zustand eines konkreten Aufrufs getrennt) (!Sie ersetzt jede Bausteinschnittstelle) (!Sie verbindet automatisch alle Förderer miteinander) (!Sie schaltet Schutzeinrichtungen ab)
Welche Struktur verbessert die Wiederverwendbarkeit eines Bausteins? (Datenaustausch über klar definierte Schnittstellen) (!Direkte Querzugriffe auf fremde Instanzdaten) (!Viele projektfeste Hardwareadressen im Baustein) (!Kopieren des Bausteincodes für jede Maschine)
Was ist bei einer Diagnose zuerst sinnvoll? (Beobachtbare Eingänge und Freigaben prüfen) (!Sofort den gesamten Baustein neu schreiben) (!Schutzeinrichtungen überbrücken) (!Reale Ausgänge ohne Freigabe erzwingen)
Was zeigt xBusy im Ausbildungsfall an? (Der virtuelle Transport läuft) (!Die reale Maschine ist freigegeben) (!Die Sicherheitsfunktion ist validiert) (!Der Baustein ist urheberrechtlich geschützt)
Wann soll im Ausbildungsfall xFault gesetzt werden? (Wenn die erwartete Rückmeldung innerhalb der simulierten Zeit ausbleibt) (!Bei jedem Startimpuls) (!Sobald der Baustein eine Instanz besitzt) (!Immer wenn B2 ein Signal liefert)
Warum werden Hardwareadressen aus dem wiederverwendbaren Kernbaustein herausgehalten? (Damit der Baustein leichter in anderen Modulen verwendet werden kann) (!Damit keine Eingangssignale mehr nötig sind) (!Damit jede Instanz dieselben Ausgänge zwingend teilt) (!Damit die Simulation reale Aktoren automatisch ansteuert)
Was ist im Kurs der richtige erste Schritt vor einer realen Inbetriebnahme? (Die Abläufe und Fehlerfälle virtuell testen) (!Schutzeinrichtungen deaktivieren) (!Ausgänge direkt erzwingen) (!Ohne Freigabe an der Maschine testen)
Welche Aussage beschreibt gutes Transferdenken? (Ein dritter Förderer wird durch eine weitere Instanz und passende Parameter ergänzt) (!Ein dritter Förderer erfordert immer eine vollständige Kopie des Programms) (!Ein dritter Förderer muss die Instanzdaten von Förderer A mitbenutzen) (!Ein dritter Förderer benötigt keine Schnittstelle)
Memory
| Funktionsbaustein | Wiederverwendbare zustandsbehaftete Logik |
| Instanz | Eigener Speicher eines Bausteinaufrufs |
| Schnittstelle | Definierter Datenaustausch |
| Eingang | Information in den Baustein |
| Ausgang | Information aus dem Baustein |
| Simulation | Virtueller Test ohne Live-Ansteuerung |
| Diagnose | Systematische Fehlersuche anhand von Signalen |
Drag and Drop
| Ordne die richtigen Begriffe zu. | Thema |
|---|---|
| Freigabe | Eingangsschnittstelle |
| Motorbefehl | Ausgangsschnittstelle |
| Schrittzustand | Instanzspeicher |
| Zeitüberschreitung | Diagnose |
| Förderer B | Zweite Bausteininstanz |
...
Kreuzworträtsel
| Funktionsbaustein | Welcher Bausteintyp kann zustandsbehaftete wiederverwendbare Logik kapseln? |
| Instanzdatenbaustein | Wie heißt der Speicherbereich einer konkreten FB-Instanz im Siemens-Kontext? |
| Schnittstelle | Wie heißt die definierte Grenze für den Datenaustausch eines Bausteins? |
| Simulation | Wie heißt das virtuelle Erproben eines Maschinenablaufs? |
| Diagnose | Wie heißt die systematische Suche nach der Ursache eines Fehlers? |
| Wiederverwendung | Wie heißt das erneute Nutzen derselben Logik in mehreren Aufrufen? |
LearningApps
Lückentext
Offene Aufgaben
Leicht
- Schnittstelle: Zeichne für FB_Foerderabschnitt nur die Ein- und Ausgänge und begründe jede Richtung.
- Signalverlauf: Übertrage den Normalablauf t0 bis t4 in ein eigenes Zeitdiagramm.
- Simulation: Variiere in einer Papier- oder Softwaresimulation das Signal B2 und beschreibe die Auswirkungen auf xBusy und xDone.
- Diagnose: Formuliere drei Beobachtungen, die Du vor einer Änderung am Programm prüfen würdest.
Standard
- Funktionsbaustein: Entwirf eine Zustandsfolge für Bereit, Transport und Störung, ohne reale Hardwareadressen zu verwenden.
- Instanz: Plane drei Förderabschnitte mit demselben FB und dokumentiere, welche Parameter pro Instanz unterschiedlich sind.
- Testfall: Erstelle eine Testtabelle mit Normalfall, fehlendem Sensorsignal und Reset-Fall samt erwartetem Ergebnis.
- Fehlersuche: Analysiere den Diagnoseverlauf d0 bis d3 und begründe eine Reihenfolge für Deine Prüfschritte.
Schwer
- Wiederverwendbarkeit: Überarbeite einen fiktiven Baustein mit globalen Querzugriffen zu einer klaren Schnittstellenarchitektur.
- Modularisierung: Entwickle ein Konzept, wie Förderer, Zylinder und Meldeleuchte in getrennten Modulen zusammenarbeiten, ohne ihre internen Daten gegenseitig zu verändern.
- Transfer: Übertrage das Strukturprinzip auf eine virtuelle Pumpenstation und definiere eine allgemeine Schnittstelle für zwei Pumpeninstanzen.
- Code-Review: Entwickle eine Prüfliste für Lesbarkeit, Schnittstellen, Instanztrennung, Diagnose und sicheren Simulationsbetrieb und wende sie auf Deinen Entwurf an.


Lernkontrolle
- Architekturvergleich: Vergleiche eine Lösung mit kopiertem Code und eine Lösung mit einem mehrfach instanziierten FB. Bewerte Wartbarkeit, Fehlerrisiko und Diagnoseaufwand.
- Schnittstellenentwurf: Entscheide für einen virtuellen Zylinder, welche Signale IN, OUT oder interner Zustand sein sollen, und begründe Deine Auswahl.
- Diagnosestrategie: Entwickle aus einem gegebenen Fehlerbild eine Prüfreihenfolge vom Eingang über den internen Zustand bis zum Ausgang.
- Transferleistung: Übertrage den Förderbaustein auf ein anderes Aggregat und benenne, welche Teile allgemein bleiben und welche Parameter verändert werden.
- Teststrategie: Entwirf einen Simulationstest, der zeigt, dass zwei Instanzen voneinander unabhängig sind.
- Sicherheitsbewertung: Erkläre, warum eine funktionierende Standardsimulation keine Freigabe für eine reale Sicherheitsfunktion ersetzt.
Lernnachweis
Für einen Lernnachweis solltest Du zeigen, dass Du:
- einen Funktionsbaustein in eine klar abgegrenzte Teilaufgabe zerlegen kannst,
- eine nachvollziehbare Schnittstelle mit passenden Ein- und Ausgängen entwerfen kannst,
- denselben FB mit mehreren unabhängigen Instanzen einsetzen kannst,
- Signalverläufe lesen und daraus Diagnosehypothesen ableiten kannst,
- Normal-, Fehler- und Reset-Fälle in einer Simulation testen und dokumentieren kannst,
- zwischen Standardlogik, Diagnose und sicherheitsbezogenen Funktionen unterscheiden kannst,
- begründen kannst, warum reale Inbetriebnahme Fachaufsicht und betriebliche Freigabe benötigt.
OERs zum Thema
Verknüpfte Lernbereiche
aiMOOC-Projekte
MOOCwiki · Deutsch
Nach dem Lernen ist vor dem Lernen
Entdecke direkt den nächsten Lernkurs. Weitere Inhalte erscheinen, wenn Du weiter nach unten scrollst.
Zur MOOCwiki-HauptseiteMediathek
Mediathek wird aus dem Wiki geladen ...
Keine passenden Inhalte gefunden. Bitte ändere Suche oder Filter.
NEWSLernweltNOAH fragen