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.

Kursinfo:

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. 

Kursinfo:


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.

Kursinfo:






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:
Kursinfo:

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:
Kursinfo:

VDE Buchverlag/Seminare:

Beispiele zur Anwendung der Datei webPCE.js:

Dienstag, 4. 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:
Kursinfo:

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


Mittwoch, 4. Juli 2018

Home-IoT

Mit JavaScript und NodeMCU läßt sich schnell und einfach eine Home-IoT zusammenbasteln.


Die Elemente werden mittels Drag & Drop auf die Webseite gezogen (Framework webPCE.js), beschriftet und beliebig bunt angelegt. Mit dem RUN-Script {Home-IoT} kann nun eine Verbindung über WiFi zur NodeMCU hergestellt werden. Auch werden im RUN-Script die im Browser gezeichneten Elemente mittels JS programmiert. 


Bild 1: Beispiel einer Home-IoT-Anwendung mit webPCE.js und NodeMCU

Die Logik für die Steuerung der Öffner S1 + S2 an den Fenstern werden mittels den IEC-61131 Blöcken in sekundenschnelle erstellt. Im RUN-Script sind die entsprechenden Scripte automatisch durch den Klick mit der Maus auf das entsprechende Blockelement verbunden und werden im "RUN-Modus" automatisch gestartet. Fertig ist die Home-IoT.

Die auf dem Breadboard aufgebaute Schaltung zeigt sehr schön wie das alles funktioniert. Die Kosten für den kompletten Aufbau einschließlich aller Komponenten liegen bei etwa 25€.



Bild 2.: Das Breadboard mit der Node-MCU und der Spannungsversorgung  

Die Schalter "S1" und "S2" simulieren die Schließer an den Fenstern und die grüne  LED den Ausgang Q1, welcher am IEC-UND-Block (Bild 1, oben rechts) geschaltet wird. Solange die LED leuchtet ist alles ok. Sobald der Ausgang Q1 entfällt wird ein Alarm-Signal ausgelöst (nicht verdrahtet ). Der blaue Potentiometer dient als Temperatur-Simulation. Da der Pin "A0" an der NodeMCU einen Wert von 0-1024 auflöst, wird dieser mit dem IEC-SCALE-Block auf 0-70 Grad Celsius skaliert. 

Hier der Link zum Video:




Kursinfo: