IO-Link-Prozessdaten schreiben

Löwenzahn

Level-1
Beiträge
39
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
und noch eine Frage zu IO-Link:
Ich habe ein IO-Link-Device und konnte es mit einem IO-Link-Device-Tool bereits betreiben, indem ich ein Statuswort und ein Sollwert geschrieben habe. Nun möchte ich das in einem kleinen Programm auf der SPS realisieren, habe allerdings keinen Ansatz wie ich da am besten vorgehe.

Benötige ich hierfür (TIA) den IO-Link-Call-Baustein? (Wobei der ja eigentlich nur zur Parametrisierung verwendet wird, wenn ich es richtig verstanden habe)
Oder wie geht man da vor? Muss ich mich da wirklich mit den Bits und Bytes herumschlagen?

Da ich leider noch sehr wenig Erfahrung mit IO-Link habe, kann es durchaus sein, dass ich hier irgendwo noch genauer darauf eingehen sollte, bitte in diesem Fall mich darauf aufmerksam machen:D
 
Hast du schon den Master in der Hardware eingebunden? Wenn ja legst du einfach je nach Device auf dem entdprechenden Port die I/O Daten an. Je nach Gerät gibt es da Prozessdaten als Eingänge oder Ausgänge oder eben beides. Auf die kannst du dann via angelegter Variablen direkt zugreifen bzw. Lesen und Schreiben! Die FB‘s brauchst du nur wenn du Parametrieren und Diagnose machen willst!

Hier noch ein Beispielhafte Konfiguration der Master hängt am Profinet:

beispiel IO-Link Konfig.jpg
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Die Konfiguration hatte ich bereits...
An so eine simple Lösung hab ich gar nicht gedacht, Vielen Dank...
Die Eingangsdaten konnte ich so schon mal lesen.

Aber bei den Ausgangsdaten habe ich noch Probleme:
Ich muss 6Byte Ausgangsdaten schreiben wie genau realisiere ich das, welchen Datentyp wird hier benutz?

Ich habe mal einen Versuch hochgeladen, der aber so nicht funktioniert hat.
(gilt ab Netzwerk 4)

In meinem IO-Link-Device Tool gebe ich den Prozesswert so ein: 00 00 9C 40 00 14
Nun möchte ich das auf der SPS schreiben.
 

Anhänge

  • IO_Link_Test.jpg
    IO_Link_Test.jpg
    64,7 KB · Aufrufe: 67
Wieviel Byte hat das Device als Ausgangsdaten? Wenn du Byte übertragen willst musst du die Variablen auch als Byte definieren! Du schreibst aber Word!

Gruss Tommy
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Tommy

Das Device hat 6 Byte Ausgangsdaten.
Ah ok, dann versuche ich das mal.
Muss ich die einzelnen Bytes dann wie in dem Beispiel jeweils extra schreiben oder geht das auch irgendwie auf einmal?
Und mache ich das mit dem MOVE Baustein richtig oder macht man das normal anders/ mit anderen Bausteinen...?
Wie gebe ich dann in Akku 1 den Byte Wert richtig an?
Ich habe wie gesagt leider noch wenig Erfahrungen


Ich habe das Bild nochmal in besserer Qualität hochgeladen.

Gruss Peter
 

Anhänge

  • IO_Link_Test.jpg
    IO_Link_Test.jpg
    232,3 KB · Aufrufe: 34
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Also, ich habe das heute so probiert wie du gemeint hast. Das hat dann auch funktioniert, jedoch musste ich die MSB/LSB vertauschen.
Ist das immer so bzw. hat das einen Grund warum das so ist oder ist das nur bei meinem Device so?

Auf jeden Fall mal vielen Dank ;)
 
Das ist mir ein Begriff.
Nur hätte es ja sein können, dass es da einen Grund gibt bzw. immer so ist, weil im Datenblatt wüsste ich jetzt nicht wo ich dazu etwas finden würde...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Normalerweise überträgst Du die Daten nicht BYTE-weise an den IO-Bereich des IOL, sondern in dem Format, wie dieser die Daten auch verarbeitet.
Bei Deinen Ausgangsdaten legst Du z.B. einen STRUCT oder besser noch UDT an, der nach Deiner Anleitung Seite 21 & 24 folgenderweise aufgebaut ist:
Code:
TYPE "PSx3xxIO Ausgangsdaten"
VERSION : 0.1

   STRUCT
      Steuerwort 				: Struct  // Steuerwort als Struktur
         "Handfahrt zu größeren Werten" 	: Bool;   // Steuerwort - Bit  0
         "Handfahrt zu kleinen Werten" 		: Bool;   // Steuerwort - Bit  1
         "Sollwert übergeben" 			: Bool;   // Steuerwort - Bit  2
         "Freigabe Handfahrt bei Tippbetrieb" 	: Bool;   // Steuerwort - Bit  3
         "Freigabe" 				: Bool;   // Steuerwort - Bit  4
         "Freigabe Tippbetrieb mit Tasten" 	: Bool;   // Steuerwort - Bit  5
         "Fahrt ohne Schleife" 			: Bool;   // Steuerwort - Bit  6
         "Einschaltschleife ausführen" 		: Bool;   // Steuerwort - Bit  7
         "Tippfahrt zu größeren Werten" 	: Bool;   // Steuerwort - Bit  8
         "Tippfahrt zu kleineren Werten" 	: Bool;   // Steuerwort - Bit  9
         "Freigabe Nachregeln" 			: Bool;   // Steuerwort - Bit 10
         "Bremsenlosbrechfahrt ausführen" 	: Bool;   // Steuerwort - Bit 11
         "Fahrt mit Schleppfehlerkorrektur" 	: Bool;   // Steuerwort - Bit 12
         "Reserve 1" 				: Bool;   // Steuerwort - Bit 13
         "Reserve 2" 				: Bool;   // Steuerwort - Bit 14
         "Reserve 3" 				: Bool;   // Steuerwort - Bit 15
      END_STRUCT;
      Sollwert 					: DInt;   // anzufahrende Sollposition (Wert in 1/100 mm)
   END_STRUCT;

END_TYPE
Diesen UDT legst Du auf den Ausgangsbereich an die Anfangsadresse Deines IOL.
So kannst Du vollsymbolisch die Daten an den IOL schicken.

Für den Eingangsbereich dann entsprechend genau so.

PS:
Aus dem pdf geht leider nicht hervor, ob Bit 0 im Byte 0 oder 1 erwartet wird. Also ob Big oder Little Endian für das "Pseudo"-WORD.
Ggf. also die Bits 0-7 mit den Bits 8-15 in der Struktur tauschen.
 
Zuletzt bearbeitet:
Diesen UDT legst Du auf den Ausgangsbereich an die Anfangsadresse Deines IOL.
So kannst Du vollsymbolisch die Daten an den IOL schicken.
So könnte das dann z.B. in der Benutzung aussehen:

attachment.php

die Hardwarezuweisung

attachment.php

und die symbolische Nutzung als Beispiel
(hab' aber k.A. ob die Steuerbits wirklich so genutzt werden)
 

Anhänge

  • IOL Nutzung.jpg
    IOL Nutzung.jpg
    25 KB · Aufrufe: 82
  • IOL Hardwarezuweisung.jpg
    IOL Hardwarezuweisung.jpg
    77,3 KB · Aufrufe: 80
Wahrscheinlich eine blöde Frage, aber wie und wo lege ich denn diesen UDT an? In der Standardvariablentabelle geht es nicht. Und unter PLC-Datentypen kann ich die Ausgangsadressen nicht zuweisen.:confused:
 
Die Adresse legst du erst fest wenn die die UDT-Struktur in deiner Variablentabelle angibst!

beispiel UDT.jpg
Lege eine neue Variable an und als Datentyp gibst du deine UDT-Struktur an die du unter PLC-Datentyp angelegt hast!

Gruß Tommy
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das wollte ich auch schon so machen, aber mir wurde der Datentyp (der unter PLC-Datentyp erstellte UDT) nicht angezeigt, nur die Standard-Datentypen.
Was mache ich dann falsch?
 
Ok, mach ich. Das muss man auch erst mal wissen...
Ich hab auch schon mit Datenbausteinen experimentiert und da wurde er direkt angezeigt, deswegen wär ich da vermutlich auch nie draufgekommen, da ich davon ausging, dass alle verwendbaren Datentypen aufgelistet werden...:D
 
Zurück
Oben