1. Vorbereitung

Benötigt werden:

Hardware:

  • Simativ MV440 (im Beispiel Version 7.0)
  • Simatic S7-1200 (im Beispiel Version 4.2)
  • Anschlussleitungen für MV440
  • Schalter

Software:

  • TIA-Portal V14
  • Internet Explorer

1.1 Integration der Hardware

Die Simatic MV440 muss per Lan mit der S7-1200 verbunden werden (Port X3 der MV440). Das lässt sich entweder direkt über den Port X1 der CPU realisieren oder wie in unserem Beispiel über einen Switch. Außerdem muss die Kamera über den Port X1 mit Strom versorgt werden.

Der Schalter wird an die SPS angeschlossen.

Kamera mit angeschlossener SPS

Kamera mit angeschlossener SPS, Deckel mit QR-Code und LS-Schalter als Schalter

1.2 Konfiguration der Kamera

Die Konfiguration der Kamera wird über das Web-Interface der Kamera vorgenommen. Dazu muss die Kamera per Lan mit dem PC verbunden sein. Der Zugriff erfolgt über die IP-Adresse der Kamera, die in die Adresszeile des Internet Explorers eingegeben wird. Der Internet Explorer muss genutzt werden, da die Software in anderen Browsern nicht läuft.

Die IP-Adresse der Kamera lässt sich über TIA-Portal über "Online-Zugänge" herausfinden. Die IP-Adresse kann über TIA-Portal auch geändert werden. Hierbei ist wichtig, dass sich die Kamera im gleichen Adressbereich wie die SPS befindet. 

Verbindungskonfiguration

Auf dem Web-Interface der Kamera unter "Einrichten" unter dem Reiter "Verbindungen" lassen sich die Schnittstellen der Kamera einstellen.

Die nötigen Einstellungen müssen wie im Bild unten vorgenommen werden.

Unter dem Reiter "Integration" müssen die Punkte "Quelle", "Text", "Ergebnis" und "Steuerung" auf "PROFINET IO" gestellt werden.

Programm

Im Menüpunkt "Programme" kann ein Programm für die Kamera geschrieben werden. Hier können z.B. Belichtungszeit und Helligkeit an die Umgebungsbedingungen, in denen die Kamera eingesetzt werden soll, angepasst werden. Ist alles eingestellt, kann das Programm gespeichert werden. Hier ist vor allem die Nummer wichtig, unter der das Programm gespeichert wird, weil diese später im SPS-Programm benötigt wird.


1.3 Hardwarekonfiguration (im TIA-Portal)

Einfügen der SPS und Kamera

Zunächst wird die SPS in der Hardwarekonfiguration eingefügt. Hier muss beachtet werden, dass die richtige Version ausgewählt ist und die IP-Adresse richtig eingestellt ist. Dann geht man in die Netzsicht und fügt die Kamera hinzu. Die Kamera findet man unter "Weitere Feldgeräte" --> "Profinet IO" --> "Ident Systems" --> "SIEMENS AG" --> "Simatic Code Reading Systems" --> "MV44x" als "Ident-Profil". Nun muss die richtige Version ausgewählt werden, in diesem Beispiel Version 7.0, also "Ident-Profil V7.0". 

In der Netzsicht müssen dann die Lan-Ports der Kamera und der SPS wie unten miteinander verbunden werden.

In der Gerätekonfiguration der Kamera muss anschließend die IP-Adresse und der Gerätename wie im Web-Interface eingestellt werden.

2. Programm

2.1 Erstellen des Datenbausteins für die Kameradaten

Um die Daten der Kamera alle an einem Ort speichern zu können, wird ein Datenbaustein erstellt, in dem alle relevanten Daten abgelegt werden. Die erste Variable, die angelegt wird, ist vom Datentyp "IID_HW_CONNECT". Diese Variable wird ausgeklappt und die Felder mit den entsprechenden Kameradaten ausgefüllt.

Außerdem muss ein Array vom Typ Byte mit einem Bereich von 1 bis 1024 und eine weitere Variable vom Typ String angelegt werden.


In das Feld LADDR der ersten Variable kommen die E-/A-Adressen der Kamera, die man in der Gerätesicht der Kamera findet. Diese können dort auch verändert werden. Um Komplikationen zu vermeiden, sollten die E- sowie die A-Adressen dieselben Werte aufweisen.

2.2 Das eigentliche Programm

Der Main Baustein

Um die Kamera zu verwenden, muss sie initialisiert werden. Dies geschieht durch den Funktionsblock "Reset_MV", der bei den Anweisungen im Untermenü Optionspakete im Ordner SIMATIC Ident zu finden ist. In den EXECUTE Eingang wird eine Bool geschrieben. Tritt eine positive Flanke am Eingang auf, wird der Baustein ausgeführt. Sobald der Befehl erfolgreich ausgeführt wurde, wird der Ausgang "DONE" "1". In den Eingang HW_CONNECT wird die erste Variable des eben erstellten Datenbausteins geschrieben. In diesem Beispiel wird der Reset Baustein dann aktiviert, wenn der verbaute Schalter ausgeschaltet wird oder wenn die Kamera bei ausgeschaltem Schalter länger als 2s kein Signal zum Einlesen eines QR-Codes bekommen hat. Das ist nötig, da Kamera neu initialisiert werden muss, nachdem sie erfolgreich einen Code eingelesen hat.


Erster Funktionsbaustein

Als nächstes wird der Funktionsbaustein erstellt, in dem festgelegt wird, welches Programm die Kamera ausführen soll (siehe 1.2 Programm). Dafür wird der Baustein "Set_MV_Program" benutzt. Den Baustein ist ebenfalls unter Simatic Ident zu finden. Am Eingang PROGRAM wird die Zahl eingetragen, unter der das Programm auf der Kamera abgespeichert ist und die Kameradaten werden wie bei der RESET Funktion übergeben. Als nächstes werden unter den Variablen des Bausteins zwei Variablen vom Typ Bool angelegt, eine als Input und eine als Output. Die Input Variable wird auf den EXECUTE Eingang gelegt und die Ausgangsvariable an den DONE Ausgang.


Damit der erstellte Funktionsbaustein ausgeführt wird, wird er im Baustein OB1 in ein neues Netzwerk gezogen. Nun sollte links an dem Baustein ein Eingang mit dem Namen der soeben erstellten Inputvariable zu sehen sein. An diesen wird ein temporary Bool gesetzt, der den Wert des DONE Ausganges des "Reset_MV" Bausteins übernimmt. Der Ausgang des Funktionsbausteins sollte in einem Merker zwischengespeichert werden. Es wäre auch möglich, beide Variablen als Merker zu deklarieren, nicht aber, beide als temporary zu deklarieren, da der Ausgangswert in einem anderen Funktionsbaustein genutzt wird (siehe nächster Abschnitt).


Funktionsbaustein zum Einlesen der QR-Codes

In diesem Abschnitt wird beschrieben, wie die Kamera angesteuert werden muss, damit sie einen QR-Code mit dem im vorherigen Abschnitt eingestellten Programm einliest.

Dazu wird zunächst ein neuer Funktionsbaustein erstellt (hier Read_Qr). Da die Kamera in diesem Beispiel immer wieder versuchen soll, einen Code einzulesen, solange der Schalter nicht betätigt ist, wird im ersten Netzwerk ein Merker immer dann beschaltet, wenn die Kamera einen Lesevorgang 2s lang beendet hat und ein Programm eingestellt ist. Für diese Abfrage  wird der im vorherigen Abschnitt erstellte Merker am Ausgang des Set_Programm Bausteins genutzt. Für die Abfrage des Lesevorgangs wird eine InOut Variable genutzt, die als Bool im Funktionsbaustein deklariert ist.

Die restlichen Variablen im Bild unten müssen ebenfalls deklariert werden, da sie später noch genutzt werden.



In  Netzwerk 2 des Bausteins wird das eigentliche Lesen der Kamera aktiviert. Dazu wird der Read_MV Funktionsbaustein benötigt, der wie Reset_MV unter Simatic Ident zu finden ist.

An den EXECUTE Eingang des Bausteins kommt der Im vorherigen Netzwerk genutzte Merker "start_read". Wenn sich der Merker auf einen positiven Wert ändert, wird der Baustein ausgeführt.

HW_CONNECT wird wie beim Reset_MV Baustein beschaltet und an IDENT_DATA wird das Array aus dem Datenbaustein für die Kamera gelegt.

Der Ausgang LEN_DATA gibt die Länge der eingelesenen Daten zurück. Diese Ausgabe sowie die anderen Statusmeldungen des Bausteins werden in den zugehörigen oben erstellten Variablen des Funktionsbausteins gespeichert.


Da der Read_MV Baustein den QR-Code als Byte Array ausgibt, muss diese Ausgabe noch in einen String konvertiert werden. Das wird in Netzwerk 3 mit der Funktion Chars_TO_Strg erreicht. An den Eingang Chars werden die Daten des Byte Arrays der Kameradaten gelegt. Der Eingang pChars legt fest, bei welchem Platz des Arrays angefangen wird, die Daten zu konvertieren. Hier wird eine 2 hineingeschrieben, da auf den ersten beiden Plätzen des Arrays die Länge des gelesenen Codes gespeichert wird. An den Cnt Eingang wird der Ausgang LEN_DATA des Read_MV Blocks gelegt.

Die Ausgabe des Blocks wird zunächst in einem temporary String gespeichert, um später mit Fehlermeldungen verglichen werden zu können.


In Netzwerk 4 erfolgt der Abgleich auf Fehlermeldungen. In diesem Beispiel wird nur auf eine Fehlermeldung verglichen, das Netzwerk lässt sich aber natürlich beliebig erweitern. Ist der temporäre String nicht gleich der Fehlermeldung, wird der temporäre String per S_MOVE Block in den String im Datenbaustein für die Kameradaten übernommen.

Zu guter Letzt wird der erstellte Funktionsbaustein in die Main eingefügt und da über den Merker am Ausgang des Set Bausteins aufgerufen.


Dieses Programm lässt sich selbstverständlich beliebig verändern, um andere Anwendungsaufgaben zu erfüllen.

Zuletzt geändert: Freitag, 19. Januar 2018, 07:31