SPS-Programmierung #12: Einzelsteuerfunktionen — Transcript

Dieses Video erklärt Einzelsteuerfunktionen in der SPS-Programmierung und deren Bedeutung für die strukturierte Ansteuerung von Aktoren.

Key Takeaways

  • Einzelsteuerfunktionen vereinfachen die Ansteuerung von Aktoren und verbergen komplexe Technik.
  • Sie ermöglichen eine klare Hierarchie und Struktur in der Steuerungssoftware.
  • Hardwareunabhängigkeit wird durch die Verwendung von Einzelsteuerfunktionen erreicht.
  • Hersteller bieten oft fertige Steuerungslogik für komplexe Antriebe an.
  • Objektorientierte Programmierung kann Einzelsteuerfunktionen zu flexiblen Schnittstellen weiterentwickeln.

Summary

  • Einzelsteuerfunktionen sind grundlegende Steuerungsfunktionen zur Ansteuerung einzelner Aktoren in Automatisierungsanlagen.
  • Das Video erläutert die Hierarchisierung von Steuerungen anhand eines Aufzugs als Beispiel.
  • Grundfunktionen steuern Basiselemente wie Fahrkorbpositionierung und Türöffnung, während Koordinationssteuerungen deren Zusammenspiel regeln.
  • Einzelsteuerfunktionen kapseln die komplexe Antriebstechnik und vereinfachen die Programmierung der Steuerungssoftware.
  • Ein Beispiel-Funktionsbaustein für einen Motor mit fester Geschwindigkeit wird vorgestellt, inklusive Ein- und Ausschaltlogik mit Freigabesignal.
  • Die Nutzung von Einzelsteuerfunktionen ermöglicht eine hardwareunabhängige Steuerungssoftware.
  • Komplexere Antriebe wie Servo- oder Schrittmotoren werden oft durch vom Hersteller bereitgestellte Klemmen mit integrierter Steuerungslogik unterstützt.
  • Das Video kündigt eine Fortsetzung an, in der objektorientierte Programmierung zur Erstellung anlageneutraler Grundfunktionen gezeigt wird.
  • Einzelsteuerfunktionen erleichtern die Wiederverwendbarkeit und Wartbarkeit von Steuerungsprogrammen.
  • Die strukturierte Zerlegung großer Automatisierungsaufgaben in Einzelsteuerfunktionen ist ein bewährtes Ingenieursprinzip.

Full Transcript — Download SRT & Markdown

00:00
Speaker A
Der Begriff Einzelsteuerfunktion ist in der Prozessautomatisierung viel gebräuchlicher als in der Maschinen- oder Fertigungsautomatisierung. Das Konzept, das aber dahinter steht und dass ich in diesem Video erkläre, wird bei der Entwicklung von Steuerungssoftware grundsätzlich immer angewendet. Unabhängig davon, ob ein Verfahrenstechnischer Prozess oder ein Fertigungsprozess automatisiert werden soll.
00:20
Speaker A
Es geht nämlich im Wesentlichen darum, eine größere Automatisierungsaufgabe so zu zerlegen, dass man die Lösung dazu in einer strukturierten Ingenieursmäßigen Form hierarchisch aufbauen kann.
00:31
Speaker A
Stellt euch mal vor, ihr solltet eine Steuerung für diesen Aufzug hier entwickeln. Die Steuerung soll eben dafür sorgen, dass sich der Aufzug verhält, wie ihr das von einem Aufzug kennt. Also, wenn eine Anforderung durch einen Tastendruck kommt, soll der Antrieb hier an der Winde so angesteuert werden, dass der Fahrkorb sich in die gewünschte Position bewegt und seine Zielposition genau einnimmt.
00:51
Speaker A
In der richtigen Etage soll dann der Motor an den Türen angesteuert werden, um die Türen erst auf und nach kurzer Zeit wieder zuzufahren.
00:59
Speaker A
Natürlich soll der Fahrkorb nur mit geschlossenen Türen verfahren werden und für den Fall, dass es zur gleichen Zeit mehrere Anforderungen gibt, müsste man dann noch eine übergeordnete Strategie festlegen, in welcher Reihenfolge diese Anforderungen abgearbeitet werden müssen.
01:54
Speaker A
So diese Anforderung kann man schon in eine gewisse Struktur bringen. Die Steuerungslogiken für das Positionieren des Fahrkorbs oder das Öffnen und Schließen der Türen sind Grundfunktionen, also Funktionalitäten, die grundlegend für eine Aufzugsteuerung in diesem Fall hier sind. Die Anforderung, dass die Fahrt nur mit geschlossenen Türen erfolgen soll, kann dann durch eine Koordinationssteuerung erfüllt werden.
02:33
Speaker A
Das ist also eine spezielle Steuerung, die eine Koordination der Grundfunktionen vornimmt und die Vorgabe der Reihenfolge für die Abarbeitung der Anforderung ist in anderen Steuerungen überlagert und ist sowas wie eine Disposition.
03:12
Speaker A
So, ein sehr wichtiger Teil fehlt hier aber noch in dieser Hierarchisierung der Steuerung und zwar sind das die grundlegenden Funktionalitäten, um aus den Grundfunktionen heraus die Aktoren, also hier im Wesentlichen die beiden Antriebe anzusteuern.
03:45
Speaker A
Und diese grundlegenden Funktionalitäten werden Einzelsteuerfunktionen genannt, in denen also die Ansteuerung hier der Antriebstechnik verborgen ist. Das sind also Funktionen, die eine einzelne Komponente in der zu automatisierenden Anlage ansteuern.
04:06
Speaker A
Im Sinne einer Programmorganisationseinheit ist eine Einzelsteuerfunktion eigentlich keine Funktion, sondern typischerweise ein Funktionsbaustein und für die unterschiedlichen Typen an Aktoren gibt es also passende Einzelsteuerfunktionen beziehungsweise, wenn es die nicht gibt, muss man die also für die jeweilige Anwendung entwickeln.
04:52
Speaker A
Damit ihr euch unter diesen Aktortypen etwas vorstellen könnt, gebe ich euch mal ein paar Beispiele. Es gibt also sehr einfache Motoren, die nur eine Drehrichtung und eine konstante Geschwindigkeit haben und die nur über ein boolsches Signal an- oder ausgeschaltet werden können.
05:14
Speaker A
Oder es gibt Motoren mit konstanter Geschwindigkeit, aber zwei Drehrichtungen. Das sind zum Beispiel Motoren, die als Antrieb für Rührwerke oder Transportbänder verwendet werden.
05:24
Speaker A
Wenn aber eine genaue Positionierung erforderlich ist, gibt es andere Antriebstechnologien, also z.B. Servo- oder Schrittmotoren, die auf unterschiedliche Weise angesteuert werden.
05:42
Speaker A
Ihr ahnt also, je nach Aktortyp kann die Ansteuerung einfach oder auch sehr komplex sein und bei der Lösung einer umfassenden Automatisierungsaufgabe, wie z.B. bei der Aufzugsteuerung hier, wollt ihr euch sicher nicht immer wieder, also in jedem Schritt der Steuerung, um die Details der Ansteuerung in der Antriebstechnik kümmern.
05:53
Speaker A
Also sollte die für den eingesetzten Aktor benötigte Ansteuerung in einem Funktionsbaustein als Einzelsteuerfunktion einmalig implementiert werden und wie das aussehen könnte, zeige ich euch jetzt mal an einem einfachen Beispiel, nämlich am Antrieb mit fester Geschwindigkeit.
06:43
Speaker A
Dafür lege ich zunächst einmal einen Funktionsbaustein an, den ich IDF One Direction Constant Speed nenne.
06:56
Speaker A
IDF steht hier für Individual Drive Function, also Englisch für Einzelsteuerfunktion.
06:57
Speaker A
Der FB bekommt drei boolsche Eingangssignale, bOn, bOff und bLock. bOff und bLock sollen beide den Antrieb stoppen.
07:06
Speaker A
Der Unterschied zwischen diesen Signalen ist, dass bOff nur für einen Antrieb gilt und bLock dazu genutzt werden kann, mehrere Antriebe eines Anlagenteils gleichzeitig zu sperren oder um den Antrieb situationsbedingt zu stoppen.
07:21
Speaker A
Das Ausgangssignal, dass der Motor ansteuert, ist bOut.
07:26
Speaker A
So, um den Motor anzuschalten, muss bOn auf True sein und bOff und bLock müssen beide False sein, anderenfalls ist der Motor aus.
07:34
Speaker A
Diese beschriebene Funktionalität könnte man in einem einfachen RS Flip-Flop realisieren.
08:19
Speaker A
Diese Ansteuerung hat aber einen großen Nachteil, wenn nämlich der Motor über bLock gesperrt wäre und gleichzeitig auch noch das Signal bOn True wäre, dann würde der Motor sofort wieder anlaufen, nachdem er eben entsperrt würde.
08:34
Speaker A
Um das zu vermeiden, ändere ich die Ansteuerung noch so, dass der Motor mit einer steigenden Flanke von bOn gestartet wird.
08:42
Speaker A
So, das ist also ein sehr einfaches Beispiel, bei dem die Antriebstechnik gar nicht das Problem ist, weil die Ansteuerung ja eben nur über eine Bool Variable passiert.
08:51
Speaker A
Diese Einzelsteuerfunktion hat aber doch ihre Berechtigung, weil eben hier auch ein Freigabesignal berücksichtigt ist und zusätzlich implementiert wurde, dass der Motor nur mit einer steigenden Flanke gestartet wird.
09:17
Speaker A
Den Nutzen wäre eben, dass ihr in der zu entwickelnden Steuerung diese Bedingungen, also steigende Flanke und das Freigabesignal, nicht einmal abfragen müsstet, sondern das ist jetzt in der Einzelsteuerfunktion schon umgesetzt. Bezogen auf das Beispiel mit dem Aufzug kann man das dafür nutzen, dass der Motor für die Türen nur dann die Freigabe bekommt, wenn der Fahrkorb steht und andersherum der Antrieb an der Winde nur die Freigabe erhält, wenn die Türen geschlossen sind.
10:11
Speaker A
Okay, Einzelsteuerfunktionen sollen also den Zugriff auf die Aktoren erleichtern und die Komplexität der Antriebstechnik verbergen. Das ist ein Grund, warum man den Zugriff auf die Aktoren über Einzelsteuerfunktionen realisieren sollte.
10:25
Speaker A
Der zweite Grund ist, dass man über diese Funktionsbausteine eine Unabhängigkeit zwischen der Hardware, also den in der Anlage verbauten Aktoren und der Steuerungssoftware erreicht. In einem weiteren Video zeige ich, wie man diese Einzelsteuerfunktionen unter Verwendung der Objektorientierten Programmierung zu einer Schnittstelle macht, mit denen man sogenannte Anlagenneutrale Grundfunktionen entwickeln kann.
10:58
Speaker A
Damit erreicht man dann nämlich, dass die implementierte Steuerung überhaupt nicht mehr verändert werden muss, obwohl dann z.B. in der Anlage ein Motor durch einen anderen Typen ersetzt wird.
11:39
Speaker A
Also gut, jetzt habt ihr verstanden, was Einzelsteuerfunktionen sind und wozu die eingesetzt werden. Jetzt stellt sich allerdings noch die Frage, ob man wirklich für jeden Aktor selber eine Einzelsteuerfunktion implementieren muss.
11:56
Speaker A
Bei diesem sehr einfachen Antrieb, den ich hier als Beispiel gewählt habe, wäre das ja kein Problem.
12:02
Speaker A
Aber was ist, wenn man in der Anlage Servo- oder Schrittmotoren hat, die ja deutlich komplexer anzusteuern sind?
12:08
Speaker A
So und hier kommt eine gute Nachricht, bei der Ansteuerung dieser Antriebe wird man typischerweise unterstützt von den Herstellern von Automatisierungssystemen. Bei denen findet man nämlich Klemmen, in denen schon Ansteuerungslogik implementiert ist, wie z.B. bei dieser EL7037 von Beckhoff.
12:35
Speaker A
Das ist eine sogenannte Schrittmotorklemme.
12:39
Speaker A
An die kann man einfach ein Freigabesignal geben und eine Geschwindigkeit als Integerwert und die Klemme übersetzt dann diese Daten in eine Ansteuerung eines Schrittmotors durch eine Pulsweitenmodulation.
13:15
Speaker A
Um euch zu zeigen, wie einfach die Ansteuerungslogik für den Schrittmotor unter Verwendung dieser Klemme sein kann, werde ich die auch noch einmal beispielhaft implementieren.
13:24
Speaker A
Den Funktionsbaustein für diese neue Einzelsteuerfunktion nenne ich jetzt IDF_2DirVarSpeed.
13:32
Speaker A
Und genau wie beim vorherigen Beispiel gibt es hier nun Signale zum Ein- und Ausschalten des Antriebs und zum Sperren.
13:40
Speaker A
Das dazugehörige Ausgangssignal nenne ich jetzt aber nicht bOut, sondern bEnable, also passend zur Bezeichnung des Eingangs in der Klemme.
13:48
Speaker A
So, um dann noch die Drehrichtung und die Geschwindigkeit einzustellen, habe ich dann noch die Signale bForward, bBackward bzw. nSpeed und nVel ist das Ausgangssignal dann dazu.
14:04
Speaker A
So, das ist also die Logik für die Ansteuerung des Freigabesignals.
14:11
Speaker A
nVel ist eine Vorzeichenbehaftete Ganzzahl.
14:15
Speaker A
Wenn nVel also negativ ist, dreht sich der Motor rückwärts, ist es positiv, dreht sich der Motor vorwärts und in diesen drei If Statements hier findet dann also die Übersetzung statt von der Vorgabe von Richtung und absoluter Geschwindigkeit in das Signal nVel.
15:12
Speaker A
Damit ihr jetzt seht, dass diese Ansteuerung auch tatsächlich funktioniert, zeige ich euch jetzt noch mal die Verwendung dieser Einzelsteuerfunktion an einem praktischen Beispiel.
15:20
Speaker A
So, hier habe ich jetzt ein Programm erstellt im Main, indem ich über die Einzelsteuerfunktion, die ich gerade eben erstellt habe, den Schrittmotor eben ansteuere und zwar über Verwendung dieser lokalen Variablen hier. bDriveEnable und nDriveVelocity sind hier Variablen, die ich mit den Signalen der Klemme verbunden habe und um den Motor dann in Bewegung zu setzen, muss ich dann später bOn auf True setzen und eine Richtung und eine Geschwindigkeit vorgeben.
15:50
Speaker A
Zunächst schalte ich den Motor ein, wähle die Fahrtrichtung vorwärts und lege eine Geschwindigkeit fest.
16:40
Speaker A
Dann seht ihr also, dass der Motor vorwärts läuft.
16:42
Speaker A
Und jetzt drehe ich die Fahrtrichtung um.
16:47
Speaker A
Dann setze ich das Signal Lock, was den Motor sofort zum Stillstand bringt.
16:51
Speaker A
Und um den Motor jetzt wieder zu starten, muss ich erstmal das Lock Signal wieder wegnehmen und eine neue steigende Flanke an bOn anlegen und dafür drehe ich vorher noch mal wieder die Fahrtrichtung um.
17:06
Speaker A
Jetzt stoppe ich den Motor ganz normal über das Signal bOff.
17:14
Speaker A
Und jetzt starte ich den Motor noch ein letztes Mal und lasse ihn mit höherer Geschwindigkeit rückwärts laufen.
17:24
Speaker A
Ihr seht also, dass z.B. diese Schrittmotorklemme total hilfreich für die Entwicklung einer Ansteuerungslogik sein kann.
17:30
Speaker A
Allerdings beschränkt sich dieses Beispiel ja auch auf eine reine Ansteuerung zur Vorgabe von Richtung und Geschwindigkeit. Eine genaue Positionierung wäre auf diese Weise ja eben nicht möglich, aber auch für diese sogenannten Motion Control Funktionalitäten, wie z.B. eben das Positionieren, gibt es umfangreiche Bibliotheken, so dass man diese Logik auch nicht selber schreiben muss.
18:32
Speaker A
Die PLCopen, das ist eine Vereinigung von mehreren Herstellern von Automatisierungstechnik, hat Motion Control Bausteine spezifiziert und standardisiert und diese Bausteine findet ihr dann in den Bibliotheken verschiedener Hersteller und die könnt ihr dann direkt in eurer Steuerungssoftware nutzen.
18:50
Speaker A
Aber wie diese Motion Control Bausteine genau funktionieren, das ist ziemlich umfangreich und eben nicht mehr Teil von diesem Video zu Einzelsteuerfunktionen.
Topics:EinzelsteuerfunktionSPS-ProgrammierungAutomatisierungAktorensteuerungFunktionsbausteinAufzugsteuerungAntriebstechnikServo- und SchrittmotorObjektorientierte ProgrammierungBeckhoff EL7037

Frequently Asked Questions

Was versteht man unter einer Einzelsteuerfunktion in der SPS-Programmierung?

Eine Einzelsteuerfunktion ist eine Programmorganisationseinheit, meist ein Funktionsbaustein, der die Ansteuerung eines einzelnen Aktors kapselt und die Komplexität der Antriebstechnik verbirgt.

Warum sind Einzelsteuerfunktionen wichtig für die Steuerungssoftware?

Sie erleichtern den Zugriff auf Aktoren, sorgen für eine strukturierte Hierarchie in der Steuerung und ermöglichen Hardwareunabhängigkeit, sodass Steuerungen bei Austausch von Aktoren nicht geändert werden müssen.

Wie wird die Ansteuerung komplexer Motoren wie Schrittmotoren in der Praxis umgesetzt?

Hersteller von Automatisierungssystemen bieten oft spezielle Klemmen mit integrierter Steuerungslogik an, die z.B. Freigabesignale und Geschwindigkeitswerte entgegennehmen und die Motoransteuerung übernehmen.

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 →