KinRig Pro im Detail
Was machen wir anders?
KinRig Pro unterscheidet sich von den meisten Automatisierungslösungen in zwei wesentlichen Punkten. Erstens, es erlaubt die Entwicklung in modernen und weit verbreiteten Programmiersprachen (Java, Python). Zweitens, setzt KinRig Pro auf eine offene und erweiterbare Microservice-Architektur.
Diese beiden Punkte sollen hier im Detail erklärt werden. Einen weniger spezifischen Feature-Praise finden sie hier
Architektur
Ein erster Blick auf die Architektur. Gibt uns einen Einblick in die Funktionsweise von KinRig Pro. Im Prinzip existieren drei Ebenen. Die Echtzeit, der Connector und die Micro-Services.
Der Echtzeit-Kritische-Code wird in Java entwickelt und mittels dem Uploader (nicht im Diagram) auf die SPS geladen.
Die Echtzeit verbindet sich mit dem Connector. Einen Server der die aktuellen Werte und Aufzeichnungen zur Verfügung stellt. Sowie Remote Procedure Calls (RPC) in die Echtzeit erlaubt.
Die Services verbinden sich mittels einem Client aus der KinRig Pro Bibliothek mit dem Connector und können so Werte aus der Echtzeit lesen und schreiben, sowie mittles der RPC-Calls Methoden in der Echtzeit aufrufen.
Die Micro-Service Architektur erlaubt, dabei jede einzelne Komponente zu ersetzen. Zum Beispiel kann eine SPS-Echtzeit durch eine Simulation ersetzt werden und die Anlage ohne echte Hardware an einem digitalen Zwilling getestet werden. Auch können einzelne Dienste wie das HMI durch Headless-Dienste ersetzt werden und so in einem CI/CD Kontext ausgeführt werden.
Vergleich von IEC 61131-3 mit Java in KinRig Pro
Java in der Echtzeit erlaubt Dinge von denen man in IEC 61131-3 nur träumen kann, wie Json und XML parsen oder Nebenläufigkeit via Green-Threads.
Letztendlich ist die beste Sprache diejenige, die Ihren Projektanforderungen, Zielen und Ihrem Lernstil entspricht. Um ehrlich zu sein, sind wir der festen Überzeugung, dass Java klassische strukturierte Texte in neuen, komplexen oder langlebigen Projekten übertrifft. Allerdings glauben wir auch, dass strukturierte Texte oder eine andere Sprache nach IEC 61131-3 die bessere Wahl für kleine Projekte sein können, bei denen die Programmierung hauptsächlich von Elektrikern durchgeführt wird.
| Aspekt | PLC | Java in KinRig Pro | Gewinner |
|---|---|---|---|
| Portabilität | Herstellerspezifische IDEs (z. B. TIA Portal, Studio 5000). Eingeschränkte Debugging- und Versionskontrollintegration. Aber mit starker und tiefer Integration in diese IDEs. | Umfangreiches Ökosystem: IntelliJ, Eclipse, VS Code. Hervorragende Unterstützung für Debugging, Profiling und CI/CD. | Java |
| Tooling & IDEs | An bestimmte SPS-Plattformen und Anbieter gebunden. Der Standard IEC 61131-3 ist hilfreich, aber nicht universell einsetzbar. | "Write once, run anywhere". Extremely portable across platforms and devices. | Unentschieden |
| Performanz | Schwierig, asynchronen Code zu schreiben. Hardware wird oft nicht vollständig genutzt. | Sehr einfach, asynchronen Code zu schreiben, und hohe Ausführungsleistung über RtThreads. | Java |
| Community & Support | Kleine Nischen-Community mit Schwerpunkt auf industrieller Automatisierung. | Große globale Community mit vielen Entwicklern, umfangreicher Dokumentation, Foren und Bibliotheken. | Java |
| Lesbarkeit | Für Ingenieure, die mit Automatisierung vertraut sind, klar verständlich. Die Syntax ähnelt Pascal. Für Nicht-SPS-Programmierer kryptisch. | Für Softwareentwickler sehr gut lesbar. Strenge Konventionen und eine ausführliche Syntax sorgen für Klarheit. | Unentschieden |
| Ausdrucksstärke | Unterstützt Schleifen, Bedingungen, Funktionen und bietet eingeschränkte Unterstützung für objektorientierte Programmierung (OOP). | Sehr ausdrucksstark: unterstützt OOP, Generics, Lambdas, umfangreiche APIs und fortgeschrittene Datenstrukturen. | Java |
Vergleich nach Features
| Feature | PLC | Java in KR Pro | Details |
|---|---|---|---|
| Cross-Plattform | |||
| Memory Safety | Für PLC Vendorabhängig. | ||
| Klassen | |||
| Vererbung | |||
| Polymorphismus | |||
| Reflection | |||
| Variadische Funktionen | |||
| Type Inference | |||
| Pattern Matching | |||
| Smart Enums |