SPS-Programmierung #14: Objektorientierte SPS-Programmi… — Transcript

Dieses Video erklärt die Grundlagen der objektorientierten SPS-Programmierung mit Fokus auf Klassen, Methoden und Zugriffsmodifizierer.

Key Takeaways

  • Funktionsbausteine können als Klassen betrachtet und mehrfach instanziiert werden.
  • Methoden helfen, Komplexität zu reduzieren und den Code übersichtlicher zu gestalten.
  • Zugriffsmodifizierer steuern die Sichtbarkeit und Zugänglichkeit von Methoden.
  • Objektorientierte Konzepte sind auch in der SPS-Programmierung anwendbar und verbessern die Struktur.
  • Die praktische Umsetzung wird anhand eines Schrittmotor-Beispiels demonstriert.

Summary

  • Einführung in die objektorientierte SPS-Programmierung und deren Bedeutung.
  • Funktionsbausteine als Klassen und deren Instanziierung als Objekte.
  • Die vier Säulen der Objektorientierung: Abstraktion, Datenkapselung, Vererbung und Polymorphie.
  • Fokus auf Abstraktion und das Verstecken von Komplexität durch Methoden.
  • Erklärung, wie Methoden in SPS-Funktionsbausteinen angelegt und aufgerufen werden.
  • Verwendung von Methoden mit Übergabe- und Rückgabeparametern.
  • Bedeutung und Einsatz von Zugriffsmodifizierern Public und Private.
  • Praxisbeispiel: Steuerung eines Schrittmotors mit variabler Geschwindigkeit.
  • Implementierung von Methoden zur Aktivierung und Deaktivierung des Antriebs.
  • Testen der Methoden im Hauptprogramm mit Instanziierung und Methodenaufrufen.

Full Transcript — Download SRT & Markdown

00:00
Speaker A
In diesem und in einigen weiteren Videos in dieser Reihe geht's um Objektorientierte SPS-Programmierung.
00:05
Speaker A
Damit ihr den Erklärungen hier folgen könnt, wäre es schon hilfreich, wenn ihr das Paradigma der Objektorientierung in der Softwareentwicklung schon verstanden habt.
00:13
Speaker A
Wenn ihr euch dazu noch mal schlau machen wollt, findet ihr oben einen Link zu einem Video, indem ich die Grundidee der Objektorientierten Programmierung in kompakter Form vorstelle.
00:23
Speaker A
Okay, ohne dass es euch vielleicht bewusst war, habt ihr schon einen kleinen Teil der Objektorientierung in der SPS-Programmierung angewendet, nämlich indem ihr Funktionsbausteine instanziiert habt und diese Instanzen dann in eurem Programm verwendet habt.
00:37
Speaker A
Ein Funktionsbaustein ist also schon so etwas wie eine Klasse, in der ein Verhalten in allgemeiner Form beschrieben ist.
00:47
Speaker A
Beispiele dafür sind ein RS Flipflop oder der Blinker aus dem Video zu Programmorganisationseinheiten oder eine Ansteuerung eines Aktors aus dem Video zu Einzelsteuerfunktionen.
00:56
Speaker A
Und das Anlegen von Variablen vom Typ eines Funktionsbausteins ist dann also die Instanziierung.
01:06
Speaker A
Das heißt, ihr erzeugt ein Objekt von einer Klasse und natürlich könnt ihr nicht nur ein Objekt einer Klasse erzeugen, sondern auch gleich mehrere und all diese Objekte sind unabhängig voneinander, haben also alle ihre eigenen lokalen Variablen.
01:56
Speaker A
Aber die Tatsache, dass ich dem Thema Objektorientierte SPS-Programmierung gleich mehrere Videos widme, zeigt euch ja, dass es mehr geben muss, als nur die Möglichkeit, ein Funktionsbaustein als Klasse zu betrachten und den beliebig oft instanziieren zu können.
02:10
Speaker A
Wenngleich das auch schon ein Teil eines wichtigen Konzepts der Objektorientierung ist, das Abstraktion genannt wird.
02:27
Speaker A
Abstraktion ist aber nur ein Konzept von vieren, die zusammengenommen die DNA der Objektorientierten Programmierung ausmachen.
02:39
Speaker A
Diese Konzepte werden auch häufig als die vier Säulen der Objektorientierten Programmierung beschrieben, neben Abstraktion sind die anderen drei Säulen Datenkapselung, Vererbung und Polymorphie.
03:19
Speaker A
In diesem Video gehe ich auf die Details der Abstraktion ein, denn dazu gehört nämlich auch das Verstecken von Komplexität, für die SPS-Programmierung bedeutet das konkret, dass euer Code des Funktionsbausteins nicht nur im Anweisungsteil steht, sondern dass ihr den teilweise auch in Methoden auslagern könnt und hier zeige ich euch erstmal, was Methoden sind, wie ihr die anlegt und aufruft, sowohl mit Übergabe als auch mit Rückgabeparametern und was in dem Zusammenhang die Zugriffsmodifizierer Public und Private bedeuten.
03:49
Speaker A
Das Beispiel, an dem ich euch diese Dinge hier erkläre, ist eine Einzelsteuerfunktion zur Ansteuerung eines Antriebs mit variabler Geschwindigkeit, die ich in dem vorherigen Video aufgebaut habe.
04:07
Speaker A
Keine Sorge, ihr müsst das Video ja nicht gesehen haben, um hier mitkommen zu können.
04:10
Speaker A
Wichtig ist nur, wie der FB funktioniert und nicht, wie er implementiert ist.
04:13
Speaker A
Und die Erklärung der Funktionsweise kommt jetzt.
04:16
Speaker A
Der Antrieb ist hier ein Schrittmotor, der an eine Schrittmotorklemme angeschlossen ist und diese Klemme macht die Ansteuerung des Motors über eine Pulsweitenmodulation.
04:59
Speaker A
Wie das passiert, ist hier egal, denn wir übergeben der Klemme nur ein Enable Signal zum Aktivieren oder Deaktivieren des Antriebs und eine Geschwindigkeit als Vorzeichen behafteter Integerwert.
05:13
Speaker A
Und den Rest erledigt dann die Klemme für uns.
05:14
Speaker A
Ist die Geschwindigkeit negativ, läuft der Motor rückwärts, ist der Wert positiv, läuft der Motor entsprechend vorwärts.
05:19
Speaker A
Diese Werte will ich aber nicht direkt vorgeben, sondern die Ansteuerung soll über diese Signale passieren, die die Eingangssignale in den FB sind.
05:29
Speaker A
Zum Aktivieren muss an B on eine steigende Flanke anliegen und B off muss false sein.
05:35
Speaker A
Zum Stoppen wird B off auf True gesetzt und B lock ist ein zusätzliches Signal, über das man den Motor sperren kann, wenn nämlich B lock True ist.
05:45
Speaker A
Die Richtung und Geschwindigkeit werden dann über die Signale B FWD und B BWD bzw. über N Speed angegeben.
05:54
Speaker A
Der Motor dreht vorwärts, wenn B FWD True und B BWD False sind.
06:02
Speaker A
Andersherum fährt der Motor rückwärts und bei allen anderen Kombinationen steht der Motor.
06:09
Speaker A
Also, die Ansteuerung des Motors über diesen FB ist in gewisser Weise etwas umständlich, weil man nämlich die richtige Kombination der Eingangssignale vorgeben muss, um den gewünschten Effekt zu erzielen.
06:55
Speaker A
Einfacher und auch intuitiver lässt sich das Ganze unter Verwendung von Methoden lösen und wie das geht, zeige ich euch jetzt.
07:02
Speaker A
Zunächst einmal lege ich einen ganz normalen Funktionsbaustein an, den ich IDF 2 Dir Var Speed nenne.
07:10
Speaker A
Als Eingangssignal soll dieser FB das Signal B lock zum Sperren des Antriebs behalten und die Ausgangssignale sind natürlich weiterhin die Freigabe B enable und die Geschwindigkeit N vel.
07:19
Speaker A
Das einzige, was ich jetzt im Anweisungsteil programmiere, ist die Logik für das Sperren des Antriebs.
07:30
Speaker A
Das ist so eine Art Sicherheitslogik, die immer überprüft werden soll, wenn der FB aufgerufen wird.
07:38
Speaker A
Die restlichen Funktionalitäten, das heißt, das Aktivieren und Deaktivieren des Antriebs und die Wahl der Richtung der Geschwindigkeit, realisiere ich jetzt aber über Methoden.
08:19
Speaker A
Als erstes lege ich jetzt eine Methode zum Aktivieren des Antriebs an, dazu klicke ich mit Rechtsklick auf den FB und wähle dann Hinzufügen Methode.
08:28
Speaker A
Eine Methode verhält sich genauso wie eine Funktion, die braucht also einen Namen, über den sie aufgerufen werden kann und diese Methode hier nenne ich M on.
08:36
Speaker A
Dann kann eine Methode einen Rückgabewert liefern und den Typ des Rückgabewerts muss ich hier angeben, in meinem Fall soll das jetzt Bool sein.
08:45
Speaker A
Und dann kann man hier noch einen Zugriffsmodifizierer wählen und wenn ich hier nichts angebe, bedeutet das dasselbe wie Public und damit kann die Methode dann von außen aufgerufen werden.
09:02
Speaker A
Was das bedeutet und welche Auswirkung der Zugriffsmodifizierer Private hat, zeige ich gleich, wenn ich den FB anwende.
09:06
Speaker A
So, dann seht ihr hier im Projektmappen Explorer, dass die Methode angelegt wurde.
09:10
Speaker A
Und im Editor seht ihr dann den Deklarationsteil und den noch leeren Anweisungsteil.
09:20
Speaker A
Gerade habe ich schon erwähnt, dass sich eine Methode wie eine Funktion verhält, die allerdings einem Funktionsbaustein zugeordnet ist.
09:30
Speaker A
Eine Methode kann also Übergabeparameter entgegennehmen, die hier in diesem Block deklariert werden müssen.
09:40
Speaker A
Und der Typ des Rückgabewerts steht hier hinter dem Doppelpunkt.
09:46
Speaker A
Wenn eine Methode keinen Wert zurückliefern soll, werden Doppelpunkt und natürlich der Rückgabetyp einfach weggelassen.
09:53
Speaker A
So, diese Methode soll also den Antrieb aktivieren und dazu das Ausgangssignal B enable auf True setzen, allerdings nur, wenn B lock nicht gesetzt ist.
10:03
Speaker A
Die Wertzuweisung an B enable ist hier also vom Signal B lock abhängig, dass man vielleicht beim Aufruf der Methode B on nicht kennt.
10:13
Speaker A
Also könnte es hier Sinn machen, den tatsächlich gesetzten Wert zurückzugeben, der Name der Methode ist hier also wie eine Variable, der man den Rückgabewert zuweisen muss.
10:38
Speaker A
So, hier habe ich jetzt noch eine zweite Methode M off zum Deaktivieren des Antriebs angelegt.
10:48
Speaker A
Und die liefert keinen Rückgabewert, weil das Ausschalten eben immer funktionieren soll.
10:57
Speaker A
Soweit habe ich jetzt also schon mal die Möglichkeiten, einen Antrieb über das Signal B lock zu sperren und über die Methoden M on und M off zu aktivieren bzw. zu deaktivieren.
11:06
Speaker A
Und wie das funktioniert, zeige ich euch jetzt in einem ersten kleinen Test im Main Programm.
11:12
Speaker A
Im Deklarationsteil instanziere ich hier zunächst den FB und zum Testen der Methoden brauche ich dann noch diese Bool Variablen hier.
11:23
Speaker A
Und B check nimmt den Rückgabewert der Methode M on auf.
11:31
Speaker A
Im Programm rufe ich dann zunächst den Anweisungsteil des FBs auf und übergebe hier das Signal B manual lock.
11:40
Speaker A
So, und wenn B on True ist, dann soll die Methode M on aufgerufen werden.
11:46
Speaker A
Der Aufruf von Methoden eines Funktionsbausteins funktioniert also so, dass ihr zunächst den Bezeichner des FBs angebt.
12:00
Speaker A
Und über diesen Punkt Operator bekommt ihr dann Zugriff auf all die Methoden, für die ihr beim Anlegen keinen Zugriffsspezifizierer oder eben explizit Public gewählt habt.
12:16
Speaker A
Und deswegen sagt man auch, dass also Public Methoden nach außen sichtbar sind und hier bei M on seht ihr jetzt auch noch mal, wie der Rückgabewert einer Methode aufgenommen und in der Variablen B check gespeichert wird.
12:37
Speaker A
Das funktioniert also auch genauso wie bei Funktion.
12:40
Speaker A
So, wenn B off True ist, soll entsprechend die Methode M off ausgeführt werden.
12:48
Speaker A
Im Online Modus seht ihr jetzt, dass ich über den Aufruf von M on den Motor aktivieren kann.
12:52
Speaker A
Und mit M off wird der Motor deaktiviert.
13:00
Speaker A
Und wenn das Lock Signal gesetzt ist, dann hat der Aufruf der Methode M on eben keine Auswirkung mehr.
13:10
Speaker A
Das seht ihr auch daran, dass der zurückgegebene Wert in B check False ist.
13:15
Speaker A
Und wenn der Motor zuvor aktiviert war, wird er durch das Lock Signal eben wieder deaktiviert.
13:20
Speaker A
Bis hierhin habe ich euch gezeigt, wie ihr Methoden mit und ohne Rückgabewert erstellt und diese dann im Programm aufruft.
13:25
Speaker A
Jetzt erweitere ich das Beispiel noch um Methoden für die Richtungs- und Geschwindigkeitsteuerung, die einen Übergabewert aufnehmen.
13:34
Speaker A
Und dafür habe ich hier schon mal die Methode M forward angelegt, in der soll also der eingeschaltete Antrieb rechts herum gedreht werden.
13:46
Speaker A
Und zwar mit einer Geschwindigkeit, die hier als Übergabeparameter vom Typ Integer angegeben wird.
13:53
Speaker A
Weil ja der übergebene Wert theoretisch negativ sein könnte, bilde ich hier im Anweisungsteil den Betrag und weise diesen Wert dann der Ausgangsvariablen für die Geschwindigkeit zu.
14:02
Speaker A
Entsprechend habe ich auch die Methode M backward implementiert, darüber soll der Antrieb also in die entgegengesetzte Richtung bewegt werden.
14:11
Speaker A
Die Geschwindigkeit muss also negativ sein.
14:13
Speaker A
So, um euch die Verwendung dieser neuen Methoden zu zeigen, habe ich das Main Programm etwas erweitert.
14:20
Speaker A
In gleicher Weise wie beim ersten Testen habe ich wieder zwei Variablen B forward und B backward, die ich nutze, um die Methoden M forward bzw. M backward aufzurufen.
14:33
Speaker A
Beim Aufruf von M forward übergebe ich die Geschwindigkeit von 2000.
14:40
Speaker A
Und bei M backward soll der Antrieb mit doppelter Geschwindigkeit in die entgegengesetzte Richtung drehen.
14:49
Speaker A
Damit das Ganze noch etwas anschaulicher wird, verwende ich jetzt wieder richtige Hardware, also habe ich hier noch die Variablen B stepper N und N stepper vel angelegt.
15:00
Speaker A
An die ich hier unten die Ausgangssignale des FBs übergebe und die Variablen sind wiederum mit den entsprechenden Signalen an der Schrittmotorklemme verbunden.
15:09
Speaker A
Und zusätzlich mache ich das Sperren des Antriebs noch über diesen Schalter hier und mit diesen beiden LEDs zeige ich noch an, ob der Antrieb aktiviert bzw. gesperrt ist.
15:19
Speaker A
Also, dann gehe ich in den Online Modus.
15:23
Speaker A
Und zuerst aktiviere ich hier den Antrieb wieder über die Methode M on.
15:30
Speaker A
Dann lasse ich den Antrieb vorwärts laufen, indem ich M forward aufrufe.
15:37
Speaker A
Und dann rufe ich die Methode M backward auf, wodurch sich die Drehrichtung umkehrt und der Antrieb eben entsprechend schneller läuft.
15:48
Speaker A
Wenn ich jetzt die Methode M off ausführe, bleibt der Antrieb stehen, aber die Geschwindigkeit ist hier immer noch auf -4000 gesetzt.
15:57
Speaker A
Wenn ich also jetzt wieder M on aufrufe, läuft der Motor weiterhin rückwärts.
16:06
Speaker A
Anders ist das, wenn ich jetzt den Antrieb sperre über diesen Schalter.
16:14
Speaker A
Dann bleibt der Antrieb stehen und die Geschwindigkeit wird auf Null gesetzt.
16:20
Speaker A
Wenn ich also dann den Motor über die Methode M on erneut aktiviere, läuft der erstmal noch nicht.
16:30
Speaker A
Dazu muss ich dann also erst wieder eine der Methoden M forward oder M backward ausführen.
16:35
Speaker A
So, bis hierhin habt ihr also verstanden, wie ihr einem Funktionsbaustein Methoden hinzufügen könnt, sowohl mit Rückgabe als auch mit Übergabeparametern.
16:45
Speaker A
Und wie ihr diese Methoden anwendet, um das Verhalten des Funktionsbausteins zu beeinflussen.
16:53
Speaker A
In meinem einfachen Beispiel beschränkt sich diese Einflussnahme nur auf das Schreiben der Ausgangsvariablen.
17:00
Speaker A
Aber prinzipiell könnt ihr die Werte sämtlicher Variablen des FBs verändern, worauf ich gleich auch noch mal eingehen werde.
17:10
Speaker A
Die Methoden, die ich erstellt habe, waren ja alle ohne explizite Angabe eines Zugriffsmodifizierers, was eben Public entspricht.
17:20
Speaker A
Aber wie ihr ja gerade schon gesehen habt, gibt es auch die Möglichkeit, Methoden als Private zu deklarieren und solche Methoden können eben nicht mehr über den Punkt Operator von außen aufgerufen werden.
17:34
Speaker A
Sondern sind sozusagen lediglich für interne Zwecke des FBs bestimmt.
17:43
Speaker A
Die können also nur aus dem Anweisungsteil oder aus anderen Methoden des FBs aufgerufen werden.
17:50
Speaker A
Und so eine private Methode werde ich jetzt in meinem Beispiel hier noch einbauen.
17:57
Speaker A
Und zwar soll diese Methode dafür sorgen, dass die Geschwindigkeit beim Anfahren, vorwärts oder rückwärts, rampenförmig ansteigt.
18:07
Speaker A
So dass die Bewegung des Antriebs ohne Ruck ist.
18:13
Speaker A
Also lege ich erstmal diese Methode an.
18:17
Speaker A
Ich nenne die M ramp, der Rückgabewert ist vom Typ Integer.
18:24
Speaker A
Das soll nämlich die Geschwindigkeit sein, die an den Antrieb nachher ausgegeben wird.
18:30
Speaker A
Und dann deklariere ich die Methode noch als Private.
18:35
Speaker A
So, die Methode ist jetzt also angelegt, aber noch leer.
18:40
Speaker A
Und jetzt zeige ich euch erstmal, was es heißt, dass private Methoden nicht von außen aufgerufen werden können.
18:50
Speaker A
Und dazu gehe ich in das Main Programm.
18:52
Speaker A
Und hier versuche ich jetzt die Methode M ramp aufzurufen.
18:58
Speaker A
Wenn ich hier den Punkt Operator anwende, seht ihr schon, dass mir M ramp in diesem Kontextmenü gar nicht angezeigt wird.
19:08
Speaker A
Ist also nach außen schon nicht sichtbar.
19:11
Speaker A
Jetzt kann ich mich aber darüber hinwegsetzen und einfach die Methode angeben.
19:17
Speaker A
Dann wird mir erstmal kein Fehler angezeigt, aber wenn ich dann versuche, das Programm zu kompilieren, seht ihr hier unten in der Fehlerliste, dass auf die private Methode M ramp nicht zugegriffen werden kann.
19:27
Speaker A
So, bevor ich jetzt aber in die Programmierung der Methode M ramp springe, will ich einmal kurz erklären.
19:35
Speaker A
Wie diese Vorgabe eines rampenförmigen Geschwindigkeitsverlaufs realisiert werden kann.
19:43
Speaker A
Ich werde dazu gleich eine Einschaltverzögerung einsetzen, also einen Tonbaustein.
19:47
Speaker A
Wenn an dem In Eingang eine steigende Flanke anliegt, dann läuft der Timer hoch, bis ja die Zeit erreicht ist.
19:56
Speaker A
Die an PT Eingang angegeben ist.
20:00
Speaker A
Dieser Ausgang ET hier hat dann ja schon die Charakteristik des Verlaufs, den die Geschwindigkeit haben soll.
20:09
Speaker A
Allerdings muss ich jetzt noch die Amplitude anpassen.
20:13
Speaker A
Und dazu teile ich den Ausgang ET durch die Dauer der Einschaltverzögerung.
20:22
Speaker A
Und multipliziere das Ergebnis dann wieder mit dem Zielwert der Geschwindigkeit.
20:29
Speaker A
Und in der Implementierung der Methode sieht das dann so aus.
20:32
Speaker A
Die Dauer für den Anstieg der Geschwindigkeit bis zum Zielwert ist hier T ramp und der Zielwert steht in der Variablen N vel inp.
20:42
Speaker A
Bei der Berechnung muss ich nur darauf achten, die Zeiten des Timerbausteins in den Datentyp Real zu konvertieren und das Ergebnis nachher wieder in ein Int zu wandeln.
20:53
Speaker A
Und das Ergebnis dieser Berechnung wird dann zurückgegeben.
20:56
Speaker A
Hier seht ihr, dass ich den Timer und die neuen Variablen in dem Funktionsbaustein deklariert habe.
21:04
Speaker A
Und dann Timer und M ramp im Anweisungsteil des FBs aufrufe.
21:09
Speaker A
Das ist ein bisschen Erklärungsbedürftig, weil ihr euch vielleicht auch fragt.
21:15
Speaker A
Warum ich den Timer nicht direkt in der Methode M ramp deklariere und aufrufe.
21:22
Speaker A
Der Grund ist einfach, dass eine Methode genau wie eine Funktion keinen persistenten Speicher hat, also vereinfacht gesagt, eben kein Gedächtnis.
21:32
Speaker A
Und würde ich einen Timer in der Methode deklarieren, dann würde bei jedem Aufruf dieser Methode ein neuer Timer angelegt werden und nach Abarbeitung wird der Timer wieder gelöscht.
21:44
Speaker A
Daten, die also über mehr als ein SPS Zyklus gespeichert werden müssen.
21:50
Speaker A
Müssen also zwangsläufig in Variablen des FBs abgelegt werden, so wie z.B. dieser Timer.
21:57
Speaker A
So, jetzt muss ich noch erklären, wie die Rampe denn tatsächlich zustande kommt, wenn ja der In Eingang des Timers hier immer auf True gesetzt ist.
22:06
Speaker A
Und dazu muss ich die Methoden M forward, M backward und M on noch ein bisschen verändern.
22:14
Speaker A
Hier ist noch mal die Methode M forward vor der Einbindung der Rampe.
22:18
Speaker A
Und diese Methode soll jetzt nicht mehr direkt den Ausgang N vel schreiben, sondern nur den Zielwert N vel inp.
22:26
Speaker A
Und in der Methode soll der In Eingang des Timers zurückgesetzt werden.
22:31
Speaker A
So, im nächsten Zyklus, nachdem die Methode ausgeführt wurde, wird dann im Anweisungsteil der In Eingang hier wieder erneut auf True gesetzt.
22:40
Speaker A
Das heißt, hier kommt dann die steigende Flanke.
22:44
Speaker A
Und dadurch wird der Timer gestartet.
22:47
Speaker A
Streng genommen startet also die Rampe nicht im Zyklus, indem die Methode M forward aufgerufen wird.
22:54
Speaker A
Sondern in dem danach.
22:56
Speaker A
So, die gleichen Änderungen mache ich dann auch in M backward.
23:00
Speaker A
Und im M on setze ich auch noch einmal den Timer zurück.
23:04
Speaker A
Und das Ergebnis seht ihr jetzt wieder hier in der Demo.
23:08
Speaker A
Immer wenn ich also eine neue Richtung wähle oder die Methode M on erneut aufrufe, wird also die Zielgeschwindigkeit rampenförmig angefahren.
23:20
Speaker A
Okay, ihr habt in diesem Video also gesehen, was Methoden sind.
23:26
Speaker A
Nämlich Funktionen, die einem FB zugeordnet sind.
23:31
Speaker A
Wie ihr Methoden erstellen und aufrufen könnt.
23:36
Speaker A
Und was die Modifizierer Private und Public bewirken.
23:40
Speaker A
Mit Methoden könnt ihr also den Code eines FBs klarer strukturieren.
23:46
Speaker A
Und Komplexität hinter Methodenaufrufen verstecken.
Topics:SPS-ProgrammierungObjektorientierungFunktionsbausteineMethodenAbstraktionZugriffsmodifiziererPublicPrivateSchrittmotorProgrammorganisation

Frequently Asked Questions

Was versteht man unter einem Funktionsbaustein in der SPS-Programmierung?

Ein Funktionsbaustein ist vergleichbar mit einer Klasse in der objektorientierten Programmierung, die ein Verhalten in allgemeiner Form beschreibt und instanziiert werden kann.

Wie werden Methoden in einem SPS-Funktionsbaustein definiert und verwendet?

Methoden werden innerhalb eines Funktionsbausteins angelegt, können Parameter und Rückgabewerte haben und werden über den Namen des Funktionsbausteins mit Punktoperator aufgerufen.

Welche Rolle spielen Zugriffsmodifizierer wie Public und Private in der SPS-Programmierung?

Zugriffsmodifizierer steuern die Sichtbarkeit von Methoden; Public erlaubt den Zugriff von außen, während Private Methoden nur innerhalb des Funktionsbausteins zugänglich macht.

Get More with the Söz AI App

Transcribe recordings, audio files, and YouTube videos — with AI summaries, speaker detection, and unlimited transcriptions.

Or transcribe another YouTube video here →