Mittwoch, 20. November 2019

JS++ und Chemie

JS++ für die Chemie als Simulation und PLC


Chemische Prozesse werden in sogenannte "batches" betrieben, welche übergeordnet mittels Rezepte organisiert werden. Diese rufen dann sogenannte "operation" auf, welche wiederum zur Ausführung 'Phase'-Bausteine aufrufen. Die folgenden zwei Beispiele (Teil-1,2) zeigen die Anwendung mit dem speziellen IEC-Baustein 'Phase'.



https://www.youtube.com/watch?v=9qS3RQ4mR7E



https://www.youtube.com/watch?v=MlP0iUsWuh8


Im nächsten POST wird nun aus dem Chemie-Beispiel eine nodePLC generiert und schließlich als RunTime zur Verfügung gestellt. Nachfolgend das UML-Bild zur sogenannten nodePLC auch als Runtime bezeichnet.






Donnerstag, 31. Oktober 2019

JS++ und Pneumatik

Pneumatik mal ganz anders erklärt

Mit dem Browser als Client und node.js als Server kann man wunderbare Dinge erzeugen. Wunderbar im Sinne der Technik, wie z. B. die Pneumatik und deren Simulation.


Dieses Video zeigt eine kleine Vorschau für die folgende Verlinkung zu YouTube, welcher den Ausschnitt eines Seminares zeigt.



https://www.youtube.com/watch?v=KD3aqmXBinw&t=36s




Das UML-Js++ Diagramm zeigt den neuesten Zustand der Software für das Framework JS++. Neu ist nun die Verbindung der RUN-Time über den Server zur nodePLC. Diese liefert das Ergebnis aus dem "RunTest" für eine Kundenanwendung. Das ist ein Gerät welches JS versteht oder ein Programm, welches den erzeugten C++-Source einbinden kann  😉

Dazu weiter in Kürze mit dem neuen Abschnitt für das Praxis-Beispiel Chemie Teil-1/Teil-2!




Dienstag, 1. Oktober 2019

JS++ Framework für Automatisierer

Praxis-Beispiel mit dem Fadenkreuz


Wie kann ich mit dem Framework JS++ arbeiten? Eine häufig gestellte Frage. Im Praktikum werden wir solche Aufgaben behandeln. Bezüglich der oft gestellten Frage nachfolgend ein Ausschnitt zum Thema Fadenkreuz:




Hier sehr schön zu sehen, wie einfach und schnell die Integration eigener Ideen sein kann. Dieses Beispiel zeigt einen Ausschnitt zum Schulungsbereich Praxis-Anwendung. Ein weiteres Beispiel für die Anwendung der Pneumatik ist bez. der Anfragen in Vorbereitung :)

Es wird einige Tage dauern, da ich mich derzeit in einer Inbetriebnahme befinde. Also einfach ab und zu in meinem Blog nachschauen.

Dienstag, 17. September 2019

JS++ Framework für Automatisierer

Beantwortung der Fragen aus letzter Zeit:

Was kann ich mit dem Framework JS++ erarbeiten?

Zum Framework JS++:

Zunächst einige Worte zum Framework JS++ selbst: JS++ ist für JS-Programmierer entwickelt worden und bietet die Möglichkeit objektorientiert für die Automatisierung auf Web-Plattformen zu arbeiten. Es ist kein Produkt sondern ein Framework und bedeutet, dass der Anwender sein eigenes Automatisierungs-Programm damit stricken kann. Das Framework selbst ist kostenfrei und kann auf Anfrage (Kontaktformular rechts oben) angefordert werden. Die erste Version ist ab 26.09.2019 fertig und wird laufend weiter entwickelt. Voraussetzung sind die selbst vom Programmierer erstellten JS++-Funktionen und Klassen, welche im Framework angewendet werden können.

Dazu verweise ich auf das neue Buch:

Zum Buch

In den VDE-Seminaren erhalten Sie ebenfalls immer das aktuelle Framework:


Die Erstellung der Scripte für Funktionen bzw. Klassen werden als Grundlage mit dem Framework dazugelegt und können auch speziell für Ihre Bedürfnisse (nicht kostenfrei) entwickelt werden.

Die geplanten Videos:

Die angedeuteten Videos werden auch für Sie kostenfrei erstellt und können bedingt durch Ihre Anfrage an Sie gesendet werden, sobald ich die ersten 10 Videos fertig gestellt habe. Ob diese in YouTube veröffentlicht werden, muss ich mir noch überlegen. Lust dazu habe ich keine :(, da YouTube, nach meiner Meinung, sich sehr negativ entwickelt. Die restlichen Videos von Lexion 11 bis Lexion 25 werden nicht kostenfrei sein, aber in den VDE-Seminaren den Teilnehmern mit beigelegt.

Seitenzahl und Objekt-Anzahl:

Das Thema wieviel Objekte kann ich auf eine Webseite laden?
Dazu habe ich einen kleinen Film erstellt, welcher fast alles erklären wird. Die gesamte Anzahl der möglichen Seiten und Objekte sind nicht begrenzt. Ich denke das sind eine ganze Menge. Das größte Projekt hat bis jetzt 16 Seiten und 850 Objekte. Es handelt sich hierbei um eine komplette Visualisierung (HMI) und teilweise Automatisierung mit der nodePLC  für einen Hüttensand-Kran. Die komplette Automatisierung des Kranes wurde auf einer S7-1200 umgesetzt (TIA-Portal V15).



In diesem Video wird der Modbus-Zugriff auf eine S7-1200 noch einmal gezeigt. Besonders ist hier die Möglichkeit der Seitenanwahl schön zu sehen.



Viele möchten den SW-Stand erfahren. Dazu das aktuelle Diagramm:



Mit Lexion 25 ist das quasi Datenbank-Modul fertig und stellt nun bis auf das KI-Modul und die nodePLC das gesamte Framework dar. Die Objecte werden nun in eine propitäre DB gespeichert. Eine schon vorhandenes DB.js konnte ich nicht als geeignet finden. Diese DB organisiert auf einfache Weise Objekte und ist trotz JSON-Format "affenschnell" und industrietauglich, da entsprechende Sicherungsmassnahmen eingeflechtet wurden (Hash).

Das KI-Modul und die nodePLC sind in Arbeit und kostet derzeit eine Menge Arbeitseinheiten :)

KI-Modul:

Hier geht es um JS-Objekte welche über Experten direkt am Browser erweitert werden. Das Ergebnis soll einem speziellen Team (z. B. Ärtze) helfen, Entscheidungen mit KI zu unterstützen. Das vorab zur Info. Der Teil wird vorerst nicht veröffentlicht.

NodePLC:

Die PLC soll keine übliche PLC ersetzen. Das wäre nicht sinnvoll und auch nicht zeitgerecht. Hier geht es um interaktives Arbeiten am Browser, welches dann über das KI-Modul die PLC mit JS-Programmen füttert. Beispiel in Arbeit ist eine CNC-Kopplung über DXF-Files (Laserschneiden, Fräsen usw.)  und das automatische Sichern von Programmen und Dateien über den Browser. :)
Für Schulen wird das Thema Pneumatik mit Simulation bearbeitet.

Das zuerst vorab als Info, aufgrund der vielen Anfragen. Danke !!




Sonntag, 8. September 2019

Praktische Anwendung aus Lexion 21 JS++-Framework

Die Schnittstelle zum APP-Manager


Eigentlich müsste der App-Manager Device-Manager heißen. Da dort auch Applikationen laufen habe ich den Begriff APP-Manager beibehalten. Im folgenden Video sehen wir einen Ausschnitt aus einem Vortrag mit der S7-1211C und demonstriert hier die Eigenschaften der RUN-Scripte für verschiedene Quellen aus der laufenden S7-1211C.





Auch hier ist die Tonqualität zu entschuldigen, da diese Aufnahme während des Vortrages entstand. Hier sehen wir eine Anwendung mit der Visualisierung JS++ und dem Programm der SPS S7-1200, welche über Ethernet verbunden sind. Dazu wurde vom App-Manager die Version Simatic.js automatisch erkannt und ausgewählt.

Die Anwendung ist auf dem Browser in ca. 15 Minuten erstellt worden!

Auf Grund der vielen Anfragen bezüglich der NodePLC.js kann ich hier folgendes dazu beitragen:

Die NodePLC.js ist eine SW-PLC und läuft auf dem Server. Das ist letztendlich das Gerät auf dem node.js installiert ist. Die Soft-SPS ist mit den IEC-Bausteinen und natürlich mit  JS programmierbar.

Zudem können IEC-Bausteine eigene JS-Inhalte darstellen, sodass eine übersichtliche Struktur in der SW-PLC zu finden ist, welche über den Browser wunderbar kommunizieren und visualisieren kann. 

In den weiteren Lexionen wird auch die nodePLC.js vorgestellt.

Freitag, 19. Juli 2019

Voraussetzung für die praktische Anwendung der KI mit JS++.js

JS++.js ist eine Bibliothek mit der die Voraussetzung der praktischen Anwendung der KI umgesetzt werden kann.


Es handelt sich hier nicht um eine neue Programmiersprache, sondern die besondere Anwendung von JavaScript (JS) mit dem aktuellen Stand ECMAScript (ES7).

Beispiel Automatisierung

In der Bibliothek werden nur Klassen, so wie diese in C++ Anwendungen zu findet sind, verwendet. Das Basiswissen dazu kann aus dem Buch "Automatisieren mit Web-Technologien" oder den angebotenen Kursen über den VDE-Verlag angeeignet werden. 

Was nicht so ohne weiteres gegoogelt werden kann, ist die bereits angesprochene Anwendung für eine Automatisierung. Dazu gehört auch die praktische Anwendung der KI, welche bereits in einem Kranprojekt umgesetzt wurde.

Der Kran lernt seine Fahrten mit und ohne Last und kann nach seiner Lernphase den Lasthaken pendelarm fahren. Die dazu notwendigen "Lerndaten" werden in der SPS oder im Server gespeichert.

Was kann JS++.js nun und welche JS-Komponenten sind bereits umgesetzt worden?

JS++.js vereinbart einige JS-Dateien und ermöglicht so die Anwendung der Automatisierung im Netztwerk oder als Single-System auf einer JS-fähigen Hardware. Die Visualisierung erfolgt im Browser Google Chrome und wird von node.js als Server bedient (Bild 1).


Bild 1:  Browser und Server bilden eine Automatisierungs-Einheit


Einige Anwendungen sind hier in den  nachfolgenden Video-Links zu sehen. Es handelt sich hier jeweils um eine Vorschau aus verschiedenen Vorträgen. Die Tonqualität ist zu entschuldigen, da diese Aufnahmen bezüglich der störenden Geräusche gefiltert wurden.







Interessenten zum Thema Automatisieren mit Web-Technologien können sich bei mir melden unter johanneshofer@tia-expert.com

Zudem ist ein Video-Kurs für JS-Fortgeschrittene zur Anwendung der Datei JS++.js geplant. Bei entsprechender Anmeldezahl wird der Kurs Mitte September gestartet. Der Kurs ist kostenfrei!

Die im o.g. Buch gezeigten Grundkenntnisse müssen verstanden sein, sonst wird der JS++-Kurs für den Teilnehmer im Detail nicht erfolgreich sein.


Hier noch einige Links zu diesem Thema:
VDE Buchverlag/Seminare:

















Dienstag, 18. Juni 2019

Automatisieren mit Web-Technologien Teil-3

Java-Scripte machen die Web-Anwendung so intelligent!


Wie bereits in den vorangegangenen Teilen erwähnt, gibt es in der Programmierung mit JS einige Futures (Promis). Das sind RUN-Scripte, Inline-Scripte, Plug-In's und Verbindungen. Das Plug-In ist eine besondere Form der SW-Erweiterung und beinhaltet ebenfalls Scripte, welche als RUN-Scripte oder Inline-Scripte Anwendung finden und ist am Beispiel der Lagerverwaltung zur Automatisierung eines Hallenkranes bereits im Teil-2 kurz erwähnt worden.


Ereignisse können so zur Laufzeit bearbeitet werden, falls dies entsprechend den Anforderungen notwendig und sinnvoll wird. 

Aus diesem Grund werden Scripte als Parameter (Argumente) an Prozeduren weitergegeben. Diese werten deren mögliche Verwendung aus und können entscheiden, die Scripte auszuführen oder nicht.

Wie RUN-ScripteInline-Scripte und Verbindungen praktisch angewendet werden, zeigen die drei folgenden Videos.


Video Verbindungen


Video RUN-Scripte


Video Inline-Scripte


Vorschau zum Video-Kurs für fortgeschrittene JS-Programmierer

Die Kransteuerung zur Ausführung der Fahrbefehle etc. wird auf einer Simatic S7-300 ausgeführt. Die Kranverwaltung dazu befindet sich auf der PC-Plattform. Das ist in diesem Kranprojekt eine

nodePLC


und läuft direkt in Verbindung mit dem Browser völlig autark. Beispielhaft wird u. a. folgende Aufgabe aktiviert:

Bei der Kran-Steuerung werden die Fahrparameter der Kran- und Katzfahrt gespeichert und dessen Verhalten ausgewertet. Durch diese Daten kann nun jeder Belade- und Enladevorgang optimiert werden. Es entsteht dadurch ein künstlicher Effekt, welcher neuzeitlich auch als KI bezeichnet wird. Die Anlage lernt so pendelarm zu fahren und optimiert damit den Tonnenumsatz. Das ist nur ein Beispiel aus den vielen, möglichen Anwendungen mit dieser Technologie.

Im folgenden Teil-4 werde ich eine Übersicht zeigen, welche Themen die folgenden Videos zur Programmierung in JS beinhalten und darf bereits jetzt schon darauf hinweisen, dass die JS-Programmierer für den Video-Kurs, sich das Grundwissen JS ab ECMAScript 6 (class) zum Verständnis der Video-Reihe angeeignet haben müssen (Beispielhaft VDE-Buch Automatisieren mit Web-Technologien und Kursangebote). 

Hier noch einmal die Links zu diesem Thema:
VDE Buchverlag/Seminare:










Mittwoch, 5. Juni 2019

Automatisieren mit Web-Technologien Teil-2

Praxis-Beispiel einer Anwendung mit webPCE.js

Komplexe Webseiten können mit einem web-plugin beginnen und danach mit Basis-Objekten erweitert werden. Das web-plugin spezialisiert die Webseite und verbindet alle notwendigen Resourcen über den Server (node.js).

Im folgenden Bild ist die leere Webseite ersichtlich. Im Objekt-Menü links können nun die angebotenen Basisobjekte (einstellbar) hinzugefügt werden. Für dieses Beispiel wurde das web-plugin 'crane'  hinzugefügt (Punkt 1) und ausgeführt (Punkt 2).



Die gesamte Kran-Automatisierung ist mit dem Button 'Paint' gemäß der ersichtlichen Spezifikation eingefügt worden. Danach können weitere Objekte aus dem Objekt-Menü hinzugefügt werden. Mit den gebotenen Möglichkeiten der Inline-Scripte, Run-Scripte und den Verbindungen der Objekte ist in Kürze eine funktionsfähige Webseite einschließlich der Netzverbindung (Modbus) zur SPS entstanden. 



Fazit:

Das Einfügen einer web-Applikationen für eine Webseite ist neu. So kann jede denkbare Anwendung spezialisiert und letztendlich als Runtime-Version für den Anwender ohne Risiko bedient werden. Diese Applikation wurde auf einem Raspberry Pi3 getestet und lief sofort ohne Probleme. Dazu werde ich noch weitere Information zusammenstellen ☺.

Nun ist die Frage aus Teil-1 noch nicht geklärt: Wie macht man so etwas? Ich werde in Kürze eine Video-Serie für JS-Programmierer erstellen, welche die Anwendung der Datei webPCE.js erklärt. Das Basis-Wissen JavaScript wird hier jedoch vorausgesetzt, da dieses zur Genüge gegoogelt oder speziell zu diesem Thema in meinem Buch nachgelesen werden kann. 

Nachfolgend ein zusammenfassendes Video, wie die oben gezeigten Bilder entstanden sind. Die Kommunikation mit der SPS (SIMATIC S7-1200) wird durch die blinkende Lampe dargestellt und erfolgt über Modbus. Die Applikation wurde auch auf einem Tablett erfolgreich getestet. Voraussetzung für externe Geräte ist natürlich ein vorhandenes Netz (Wlan) damit der Server auf dem eigenen PC angesprochen werden kann.

Die Applikation mit einem PC


Die Applikation mit Raspberry Pi 3

In den folgenden Teilen werden weitere, praktische Beispiele aus verschiedenen Branchen vorgestellt.

Hier noch einige Links zu diesem Thema:
VDE Buchverlag/Seminare:

Beispiele zur Anwendung der Datei webPCE.js:

Montag, 3. Juni 2019

Automatisieren mit Web-Technologien Teil-1

Kann man mit Web-Technologien automatisieren? 


Ja - das geht, wenn die verwendeten Komponenten bestimmte Eigenschaften erfüllen. Die Komponenten entstehen aus den Anforderungen der einzelnen Disziplinen wie z. B. SVG, HMI, OOP oder KI.


Sind SVG oder HMI Disziplinen?  Bezogen auf ein Fachgebiet ist eine Disziplin eine Spezifikation, welche in unserem Fall für den Bereich Informatik zutrifft. HMI-Software gibt es wie Sand am Meer - möchte ich mal so ausdrücken - allerdings nicht mit der direkten Anwendung auf einem Browser und der Programmiersprache Java Script.

SVG ist skalierbar und für die Darstellung der grafischen Elemente innerhalb der HMI ideal auf einer Webseite anzuwenden.

OOP kann mit der Programmiersprache  JS optimal umgesetzt werden. Und last but not least kommt dann KI ins Spiel, wenn die SVG-Elemente ihren eigenen Programm-Code besitzen, welcher entsprechend der Klassifizierung nicht nur austauschbar, sondern während der Laufzeit anpassbar und kontrollierbar ist. Zudem kann zur Laufzeit einer Web-Anwendung JS-Inline-Code adaptiv erzeugt werden, welcher im Browser sowohl im Client ausführbar wird.

PCE = Process Control Engineering


Nach heutigen Maßstäben in der Informatik eine fast schon vergessene Abkürzung, welche für die Mess- und Regeltechnik einstmalig geschaffen wurde und sich im Wesentlichen mit Fließschemen beschäftigt. Die darin enthaltenen Kategorien und Verarbeitungsfunktionen sind unter anderem wichtige Hinweise für die Umsetzung, sprich Automatisierung, eines Fließschemas. Da passen doch die Disziplinen SVG und HMI sehr gut. Die Umsetzung in ein Programm ist da gerade ideal geeignet, denn ein Fließschema mit Pumpen, Ventilen usw. in SVG dargestellt, kann auch als bedienbare Visualisierung dienen. Das nur als Beispiel, denn auch andere Techniken wie Funktionsbausteine, Diagramme (Trend), Buttons, Eingabefenster usw. gehören auch dazu. Die Frage stellt sich nur wie macht man das?

Betrachten wir beispielhaft die grafische Programmierung mit Funktionsblöcken, so wie diese u. a. bei SPSen angewendet werden, dann sind auch hier ideale Voraussetzungen zu erkennen, denn ein Funktionsbaustein besitzt eine Software, welche durch seine Parameter entsprechend reagiert. Damit kommt wieder die KI ins Spiel, denn die Software in einem SVG-Element kann mittels Web-Technologie ausgetauscht werden oder sich in Real-Time an bestimmte Situationen anpassen. Auch hier die Frage, wie kann man so etwas mit einer Webseite umsetzen?

KI-webObjekt


Künstliche Intelligenz ist ein häufig verwendeter Begriff, welcher in die Neuzeit der Software-Entwicklung einen wichtigen Platz eingenommen hat. Um jeder Diskussion aus dem Weg zu gehen, verwende ich hier den Begriff KI-webObjekt.

Das kann nicht so einfach gegoogelt werden ☺, ist aber Bestandteil der Web-Technologie, wenn es darum geht etwas im Sinne der Technik zu automatisieren.

Meine Formel dazu:  SVG + Code + Daten = KI-webObjekt 

Das erklärt noch nicht viel, ist aber sicherlich neu und damit höchst interessant 😉. Die Basis zur Automatisierung mit Web-Technologien sind KI-Objekte und dazu gehört, wie aus der Formel erkennbar, schon einmal das SVG-Element und der Code in JS sowie klassenorientierte Daten. Der Code ist fester Bestandteil  zum SVG-Element und/oder ein Inline-Skript, ein austauschbarer Script oder ein webplug-in.

webplug-in


Ein Programmcode für eine bestimmte Applikation wird dem SVG-Element (eigentlich ist das auch ein Objekt) zugewiesen. Diese Software wird nun zusätzlich zu den bestehenden Skripten und Inline-Skripten als Applikation über die Webseite im sogenannten runScript ablauffähig.

runScript

Ein runScript wird im Browser ausgeführt und ist mit der Runtime einer WinCC-Application vergleichbar. Hier kann der Anwender am Browser seine Anlage Kontrollieren und Bedienen, so wie diese mit webPCE.js entwickelt wurde. Die Kommunikation mit den Geräten (SPS) erfolgt über den Server, welcher mit node.js erstellt wird und auf die runScripte reagiert.

webPCE.js


Zusammengefasst kann bereits festgestellten werden, dass eine Automatisierung mit Web-Technologien über bekannte Programmiertechniken realisiert werden kann. Die Datei webPCE.js beinhaltet die JS-Komponenten, welche zur Entwicklung für eine web-Applikation notwendig sind. Im nachfolgenden Diagramm sind die wesentlichen Komponenten ersichtlich. Diese werden von mir ständig weiter entwickelt. Dazu gehören auch bereits veröffentlichte JS-Programme anderer Autoren, wie z. B. modbus.js oder nodeS7.js.



Im nächsten Teil werde ich ein Beispiel mit einem webplug-in aus der Praxis zeigen, welche von mir bereits erfolgreich für die Automatisierung eines Hallenkranes umgesetzt wurde. 

Hier noch einige Links zu diesem Thema:
VDE Buchverlag/Seminare:
Grundseminar zum Thema Automatisieren mit Web-Technologien
Praxisanwendungen mit webPCE.js

Beispiele zur Anwendung der Datei webPCE.js:
Beispiel für die Anwendung von Funktionsbausteinen


Zum Buch




[HMI] Human Machine Interface
[SVG] Scalable Vector Graphics
[JS] Java Script
[OOP] Object-oriented programming
[AI] Artificial intelligence 
[FDB] Function Data Block