Was und wie kann ich mit dem neuen Gateway SIMATIC IOT2000 anfangen?
Diese Frage habe ich mir mehrmals gestellt und bin vorerst zu keinem Ergebnis gekommen. Nach einigen Untersuchungen am Objekt konnte ich feststellen, dass ich wohl ein Galileo-Board in den Händen hielt. Das hat mich nicht sehr überrascht, denn das Galileo-Board gibt es ja schon seit 2014 mit der Integration einer Arduino-Schnittstelle. Wie und was kann ich nun mit dem IOT2000 anfangen, um nicht das was es bereits in der Galileo-Welt schon gibt, noch einmal neu zu erfinden?
Die Antwort ist mein neues Buch:
1.1 SIMATIC IOT2000
Viele reden von Industrie 4.0, deren Idee es ist, unter anderem
Daten in der Cloud über die weltweite Vernetzung für verschiedene Nutzer zur
Verfügung zu stellen. Das Problem ist nicht die Erfassung der physikalischen
Daten, sondern deren Portierung und Darstellung über ein Netzwerk in eine
entsprechende Internet-Struktur. Beispielhaft liefert ein Barcode eine
Information über ein Objekt (Größe, Gewicht, Farbe, Preis usw.) und kann so als
gespeichertes Objekt innerhalb eines Netzwerkes Informationen weitergeben.
Eine Lösung bietet das Kommunikationsprotokoll
MQTT[1], welches
sich bereit in der Anwendung IoT etabliert hat und bietet bessere Möglichkeiten
der Umsetzung als das http[2]-Protokoll.
Ganz anders sieht es bei der Sensorik aus, diese liefern nicht
nur Daten wie Temperatur, Feuchtigkeit usw., sondern können zudem
Funktionalität übermitteln und Aktionen einleiten. So schaltet sich z. B.
eine Heizung ein, wenn die Temperatur unter den Sollwert fällt. Aufgrund der
verschiedenen Systeme und Darstellung der physikalischen Werte entsteht ein
riesiges Funktionsbündel. Dazu gehören z. B. die Identifikation, Adressierung
und Skalierung der Daten und ein ganz wichtiges Argument ist die
Informationsverarbeitung der eingebetteten
Systeme (Embedded). Und da sind wir schon beim SIMATIC IOT2000 (im
weiteren Buchverlauf auch häufig als IOT2000 bezeichnet) angekommen.
Es stellt sich damit die Frage: „Wie kommen meine
physikalischen Daten in die IOT2000 und wie muss ich diese verwerten und
kalibrieren, um diese dann wieder in einem Netzwerk zur Verfügung zu stellen"?
Ein Gateway mit der Möglichkeit
verschiedene Datenquellen zu lesen, zu schreiben und auch zu erzeugen wäre eine
denkbare Lösung. Z. B. eine SPS kann von der Datenquelle lesen und Daten
erzeugen. Experten können sich deren Programmierung gut vorstellen. Auch die
Vernetzung der SPS innerhalb eines bekannten, lokalen Netzwerkes ist gut
denkbar. Die Daten oder sogar Funktionalität in einen Cloud zu senden wird
dagegen für den SPS-Programmierer schon schwieriger, sich vorzustellen und
damit auch umzusetzen. Noch komplexer wird der Gedanke, Daten aus anderen
Netzwerken und deren Geräte zu erfassen, auszutauschen und letztendlich in
einer Cloud als Service zur Verfügung zu stellen.
Die Sensorik und die
Kommunikationsfähigkeit, sollten mit einer minimalen Informationsverarbeitung
möglich werden.
....
8.1 Der Entwurf von Ardu_IOsim
Es soll ein Programm geschrieben werden, welches die digitalen
Eingänge Pin2-Pin13 und die analogen Eingänge A0-A5 des Arduino-Boards simulieren
soll. Die Kontrolle zum Arduino-Board soll mit der seriellen Schnittstelle (USB) erfolgen.
Dafür müssen je ein Programm für den PC und ein Programm für das Arduino-Board
geschrieben werden. Für den PC wird das Java-Programm und das C++-Programm für
den Arduino erstellt. Die Anwendung auf dem PC wird durch eine kleine Grafik (JavaFX
Scene Builder) unterstützt,
welche es erlaubt die Schnittstelle zum Arduino zu kontrollieren. Die digitalen und analogen Eingänge für den Arduino können so per Klick
zum Board gesendet werden, welches nun mit seinem Anwenderprogramm auf die
simulierten Daten reagiert und diese dann auf einer Webseite präsentiert.
Das Arduino-Projekt bekommt eine Library, welche
zum beliebigen, eigenen Projekt eingefügt wird. Der Programmierer kann so mittels
#define-Anweisung zwischen Simulation
und echten Eingängen unterscheiden.
Bild 8.1 Das Programm Ardu_IOsim kann für das SIMATIC IOT2000 und dem
Arduino/Genuino eingesetzt werden
....8.1 Der Datenaustausch zwischen Arduino/IOT2000 und Ardu_IOsim
Der Arduino/IOT2000 dient als Server und der PC als Client.
Das bedeutet, dass der PC seine Aufforderung an den Client sendet und dieser
Antwortet. Mit der Aufforderung des Client werden die digitalen und die
analogen Eingänge im ASCII-Format
gesendet (Bild 8.2).
Im Bild sind die Eingänge Pin_0, Pin_1, Pin10 und Pin_11 als Eingänge
deklariert. Die restlichen Pins sind Ausgänge und können bei dieser Deklaration
vom Anwender nicht gesetzt werden.
Die Datenrichtungen der einzelnen Pins sind für die
Darstellung im Programm Ardu_IOsim wichtig,
damit diese richtig angezeigt werden und die Eingabemöglichkeit zugeordnet
werden können. Dafür werden die Datenrichtungsregister DDRD-DDRC gesendet. Für
die Zustände der Ports auf True oder False sind die Register Port_D bis
Port_C zuständig. Im Programm Ardu_IOsim
werden die letzten Ports DDRC und Port_C nicht ausgewertet. Das kann dann der
Leser erweitern, falls er die analogen Pins ebenfalls als digitale Eingänge
verwerten möchte. Das Zusammensetzen der Port-Signale übernimmt die Funktion SerialEvent, welche dann noch später zur
Programmierung erklärt werden wird.
Damit ist die Philosophie für den Datenaustausch dieser proprietären Verbindung prinzipiell
erklärt.
Wenn die SIMATIC IOT2000 Daten zur Verfügung
stellen soll, ist diese als Server zu programmieren (Empfehlung). Sie wird also
nie von sich aus irgendwelche Daten senden, sondern wartet bis der Client (PC) seine
Aufforderung dazu sendet.
Welches Protokoll dazu verwendet wird und wie die Vernetzung mit anderen SPSen funktionieren soll, wird in Kapitell 11 vorgestellt.