TIA Udt auf EA Bereich

lutre

Level-2
Beiträge
25
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

ich will über eine IO-Link Karte mit einem Distanzsensor kommunizieren.

Mit dem S7 PCT Tool habe ich den Sensor konfiguriert und den enstprechenden UDT erstellen lassen.
Die Adressen sind dann wie in Bild 1 belegt

Jetzt den UDT ins Tia importiert und auf den entsprechenden Eingangsbereich gelegt (Bild 2)

Tia macht dabei folgendes:

Der Wert "Distanz und Status - Distanz" wird von der IO-Link Karte auf IW2102 geliefert.
Adressiere ich dieses Eingangswort "direkt" (also Word auf %EW2102) dann kommt auch der richtige Wert an.

Im UDT wird allerdings das 2102 Byte einfach "übersprungen" und "Distanz und Status - Distanz" wird auf %EW2103 gelegt.

Gibt es eine Einstellung um den Adresssprung bei UDT´s zu deaktivieren bzw. verstehe ich nicht ganz warum TIA mir da ein ganzes freies Byte lässt.

TIAV15.1

Grüße,
Luis
 

Anhänge

  • Bild1.jpg
    Bild1.jpg
    56,1 KB · Aufrufe: 100
  • Bild2.jpg
    Bild2.jpg
    52,2 KB · Aufrufe: 89
Zuviel Werbung?
-> Hier kostenlos registrieren
Begonnene BITs belegen im udt min. (Vielfaches von) 2 BYTEs bevor ein INT folgen kann.

Eigentlich müsste am Beginn des udt ein Dummy-Byte (oder Dummy-Bits) stehen, damit er auf die "saubere" Adresse 2100.0 gelegt werden kann.
 
Hallo,

da habe ich mich auch schon drüber geärgert. Ich befürchte, dass man das Verhalten nicht ändern kann. In deinem Fall würde es helfen der Struktur ein Dummybyte am Anfang zu geben und dann die Struktur 1 Byte früher beginnen zu lassen, wie Hucki vorgeschlagen hat. Eine schöne Lösung ist das aber auch nicht.
 
Eigentlich müsste am Beginn des udt ein Dummy-Byte (oder Dummy-Bits) stehen, damit er auf die "saubere" Adresse 2100.0 gelegt werden kann.
Der udt sähe dann angepasst z.B. so aus:

Code:
TYPE "PII - ODS10L1.8/LA6-M12"
VERSION : 0.1
   STRUCT
      "Reserved Byte" 						: Byte;
      "Distanz und Status - Q1 Ausgangszustand" 		: Bool;
      "Distanz und Status - Q2 Ausgangszustand" 		: Bool;
      "Distanz und Status - Q3 Ausgangszustand" 		: Bool;
      "Distanz und Status - Messung" 				: Bool;
      "Distanz und Status - Empfangssignal" 			: Bool;
      "Distanz und Status - Warnung: verminderte Genauigkeit" 	: Bool;
      "Reserved Bit" 						: Bool;
      "Reserved Bit_1" 						: Bool;
      "Distanz und Status - Distanz" 				: Word;
   END_STRUCT;

END_TYPE

attachment.php



PS:
Ich hab' die Bezeichnung des Dummy-BYTEs mal der restlichen (eher unglücklichen :rolleyes:) Struktur von Leunze angepasst.
Der ganze Brams, was da in den Namen steht, gehört IMHO eigentlich in die Kommentare.
 

Anhänge

  • udt auf ea.jpg
    udt auf ea.jpg
    38,6 KB · Aufrufe: 228
Zuletzt bearbeitet:
ist das grundsätzlich so, dass ein UDT auf EAs immer mindestens 2 Byte belegt??? Auch wenn man nur 2 Bits braucht?
Was passiert, wenn die UDTs fortlaufend auf 1 Byte schauen? Also EB0->UDT1 EB1->UDT1 EB2->UDT1? Geht/funktioniert das überhaupt?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Je nach Anordnungen der Daten in der Hardware können zwischendrin im UDT auch noch Lücken mit jeweils einem Byte entstehen, beispielsweise erst 8 BOOL dann 1 INT danach wieder 8 BOOL, da hat der UDT insgesamt 6 Bytes, erst ein Byte mit den ersten 8 BOOL, dann ein Byte Lücke, dann zwei Bytes mit dem INT, dann die zweiten 8 BOOL, dann das zweite Byte Lücke. Da gibt es schon sehr seltsame Geräte (z.B. Keyence QR-Leser), da fängst du dann an die Adressen in der Hardware passend zu schieben. Das liegt meiner Meinung nach daran, dass Menschen Schnittstellen entwickeln, die sich keinerei Gedanken um eine leichte Integration machen.
Überlappende Adressen habe ich noch nicht getestet, bei Eingängen sollte das funktionieren, bei Ausgängen würde ich mich nicht darauf verlassen.
 
Zurück
Oben