Sensorparameter Auslesen

beckmich

Level-1
Beiträge
3
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Guten Tag,

ich muss für einem Hochschulprojekt mit Sensoren über Io-Link eine Entfernung messen.
Ich hab an eine CPU 1212C das IO-Link SM1278 angechlossen. An das Io-Link ist eine Reflektionslichtaster mit Messkern.
Ich möchte nun die gemessene Größe in meinem SPS Programm weiter bearbeiten. Leider bekomme ich nur von dem
Lichtaster 2 Ausgänge die ein/aus schalten. Der gemessene Wert kann ich im TIA-Portal mit S7-PCT sehen.
Wenn ich online gehe seh ich auch wie der Parameter sich ändert, wenn ich die Distanz ändere.

Ist es möglich diesen Parameter auszulesen und als Variable weiter zuverarbeiten?

Bin recht neu dem Thema SPS - Programmieren und hoffe das mir hier jemand weiterhelfen kann.
Vielen Dank
Gruß Michael
 
Ich kenne das 1200er System jetzt nicht, aber bei den 300, 400 und 1500 zeigt dir PCT im Reiter Adressen an, wohin der Wert auf der Steuerung geschrieben wird.
Diesen Wert kannst Du selbstverständlich in der Steuerung weiterverwenden.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

wie schon gesagt, mappt der IOL-M die Prozessdaten des Sensors auf eine SPS-Eingangsadresse. Um Servicedaten während der Laufzeit zu lesen / schreiben, musst du den IO-Link Call Funktionsbaustein von Siemens verwenden. Je nach Sensorhersteller gibt es auch Funktionsbausteine die dies erledigen.
 
Jo das stimmt, aber er hat nur von den zyklischen Daten gesprochen.
Um diese zu erfassen braucht man keinen IO-Link-Call.
Das hat Beckx-net auch geschrieben, aber ich hatte schon genug Kunden am Telefon, die dies verwirrt hat.

Wenn Du schreibst, dass Du noch zwei Schaltpunkte vom Sensor hast, werden die vermutlich über die IO-Link Prozessdaten mitübertragen.
Um den eigentlichen Wert zu sehen, musst Du diese rausschieben.

Das geht sehr elegant mit

L DenProzesswertVomSensor
SSI 2 // Die Zahl ist abhängig von den zuschiebenden Bits
T WhereEverYouWant
 
Vielen Dank für die Antworten.
Komm leider aber nicht weiter. Hab den Io_call Baustein in mein OB gemacht weiß aber nicht genau welche Eingänge ich wie benennem muss.
Anbei sind mal 2 Bilder im ersten Bild ist der Wert den ich auslesen möchte im PCT(Da steht leider keine adresse bei mir).
Im Bild 2 Ist mein OB mit meiner Belegung.
Hier mal meine Überlegungen Wieso ich die so Belegt habe:
Reg = E0.0 ( damit starte ich mein Lesebefehl sobald eine positive Flanke ankommt)
ID= 269 (das ist meine HW-Kennung von dem IO-Link)
CAP= 227 (für mein Siemens IO-Link)
RD_WR=0 (will die Daten nur lesen)
Port = 4 (der Port wo mein Sensor angeschlossen ist)
IOL_Index= 130
IOL_Subindex = 0
Len= leer (wird für den Lesevorgang nicht benötigt)
Record_IOL_Data= (Da wurde beim erstellen des Io-call Baustein ein Datenbaustein generiert. Dieser hab ich verwendet, allerdings hab ich da read.data ausgewählt)
Wenn ich nun das Programm laufen lasse und mir die Werte im DB anzeigen lasse zeigt er mir niergends den gewünschten wert an.
Ich bekomme aber wenn ich den Schalter(E0.0) betätige an DONE_VALID true das die Übertragungerfolgreich stattgefunden hat.

Hoff es findet sich jemand nettes der mir weiterhelfen kann.

Gruß Michael

PCT.jpgIO-call.jpg
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich verstehe Deine Frage nicht.
Was Du Dir in PCT anschaust ist der zyklische Prozesswert.
Lesen tust Du aber den Index 130.

Den Zyklischen Prozesswert kann man zwar auch azyklisch Lesen, dann ist es aber der Index 40
 
Sorry das ich mich so umtändlich Ausdrücke aber ich befasse mich mit dem Thema SPS erst seit 2 Wochen.

Meine Problem ist:

Ich habe 2 Lichttaster die ich im Abstand von 2 m gegenüber voneinander montiert hab. Nun Stell ich eine Verpackung dazwischen und möchte die Breite ermitteln.
Die möchte ich lösen, in dem ich die gemessenen werten von den Sensoren von dem Abstand(2m) abziehe.

Mein Problem ist das ich nicht weiß wie ich an den gemessenen Wert (den wo ich im PCT sehe) auslesen/übernehmen kann.

Hoff mein Problem ist nun besser beschrieben.

Vielen Dank für die Hilfen.

Gruß Michael
 
Schau mal in deiner Hardwarekonfiguration welchen Adressbereich du für die Eingangsdaten des IOLM festgelegt hast. In diesem Peripheriebereich findest Du das Prozessdatum deines Sensors.
Dieser Roh-Wert beinhaltet je nach IO-Link Gerät einige Prozessrelevanze Werte. Wo genau die Werte im Adressbereich liegen, wird im PCT definiert (Master anklicken --> Reiter Adressierung).

Beispiel:
Dein Sensor liefert Dir die Distanz + Qualität + Schaltsignal verpackt in zwei Bytes auf %EW0. Im Steuerungsprogramm kannst nun direkt die Adresse %EW0 verwenden um die Daten abzuholen und zu verarbeiten. Um die einzelnen Bestandteile des Prozessdatums zu extrahieren musst du nur noch ein bissle SPS-Code schreiben (Stichwort: Bitmaske/Schiebebefehle/Slicen).

Viel Erfolg
 
Zurück
Oben