Neben der Syntax einer Programmiersprache und dem Verständnis der wichtigsten Bibliotheken und Frameworks, gehören weiterer Methodiken – wie zum Beispiel Design Pattern – zu den Grundlagen der Softwareentwicklung. Neben den Design Pattern sind Designprinzipien ebenfalls ein hilfreiches Werkzeug bei der Entwicklung von Software. SOLID ist ein Akronym für fünf solcher Designprinzipien, die dem Entwickler dabei unterstützen Software verständlicher, flexibler und wartbarer zu entwerfen.
Continue reading “IEC 61131-3: SOLID – Fünf Grundsätze für bessere Software”Tag: TwinCAT
IEC 61131-3: Different versions of the same library in a TwinCAT project
Library placeholders allow to reference multiple versions of the same library in a PLC project. This situation can be helpful if a library has to be updated in an existing project due to new functions, but the update turns out to give an older FB a changed behavior.
Continue reading “IEC 61131-3: Different versions of the same library in a TwinCAT project”IEC 61131-3: unterschiedliche Versionen der gleichen Bibliothek in einem TwinCAT Projekt
Bibliotheksplatzhalter ermöglichen es, mehrere Versionen der gleichen Bibliothek in einem SPS-Projekt zu referenzieren. Diese Situation kann hilfreich sein, wenn auf Grund neuer Funktionen eine Bibliothek in einem bestehenden Projekt aktualisiert werden soll, sich durch das Update aber herausstellt, dass ein älterer FB ein geändertes Verhalten erhält.
Continue reading “IEC 61131-3: unterschiedliche Versionen der gleichen Bibliothek in einem TwinCAT Projekt”IEC 61131-3: Abstract FB vs. Interface
Function blocks, methods and properties can be marked as abstract since TwinCAT V3.1 build 4024. Abstract FBs can only be used as basic FBs for inheritance. Direct instantiation of abstract FBs is not possible. Therefore, abstract FBs have a certain similarity to interfaces. Now, the question is in which case an interface and in which case an abstract FB should be used.
Continue reading “IEC 61131-3: Abstract FB vs. Interface”IEC 61131-3: Abstrakter FB vs. Schnittstelle
Seit TwinCAT V3.1 Build 4024 können Funktionsblöcke, Methoden und Eigenschaften als abstract gekennzeichnet werden. Abstrakte FBs können nur als Basis-FB für die Vererbung genutzt werden. Ein direktes Instanziieren von abstrakten FBs ist nicht möglich. Somit haben abstrakte FBs eine gewisse Ähnlichkeit zu Schnittstellen. Es stellt sich nun die Frage, wann eine Schnittstelle und wann ein abstrakter FB zum Einsatz kommen sollte.
Continue reading “IEC 61131-3: Abstrakter FB vs. Schnittstelle”IEC 61131-3: Exception Handling with __TRY/__CATCH
When executing a program, there is always the possibility of an unexpected runtime error occurring. These occur when a program tries to perform an illegal operation. This kind of scenario can be triggered by events such as division by 0 or a pointer which tries to reference an invalid memory address. We can significantly improve the way these exceptions are handled by using the keywords __TRY and __CATCH.
Continue reading “IEC 61131-3: Exception Handling with __TRY/__CATCH”
IEC 61131-3: Ausnahmebehandlung mit __TRY/__CATCH
Bei der Ausführung eines SPS-Programms kann es zu unerwarteten Laufzeitfehlern kommen. Diese treten auf, sobald das SPS-Programm versucht eine unzulässige Operation auszuführen. Auslöser solcher Szenarien kann z.B. eine Division durch 0 sein oder ein Pointer verweist auf einen ungültigen Speicherbereich. Mit den Schlüsselwörtern __TRY und __CATCH kann auf diese Ausnahmen deutlich besser reagiert werden als bisher.
Continue reading “IEC 61131-3: Ausnahmebehandlung mit __TRY/__CATCH”
IEC 61131-3: Parameter transfer via FB_init
Depending on the task, it may be necessary for function blocks to require parameters that are only used once for initialization tasks. One possible way to pass them elegantly is to use the FB_init() method.
Continue reading “IEC 61131-3: Parameter transfer via FB_init”
IEC 61131-3: Parameterübergabe per FB_init
Je nach Aufgabenstellung kann es erforderlich sein, dass Funktionsblöcke Parameter benötigen, die nur einmalig für Initialisierungsaufgaben verwendet werden. Ein möglicher Weg, diese elegant zu übergeben, bietet die Methode FB_init().
Continue reading “IEC 61131-3: Parameterübergabe per FB_init”
IEC 61131-3: The Decorator Pattern
With the help of the decorator pattern, new function blocks can be developed on the basis of existing function blocks without overstraining the principle of inheritance. In the following post, I will introduce the use of this pattern using a simple example.
Continue reading “IEC 61131-3: The Decorator Pattern”