Einzelnes Bit eines Bytes einem Ausgang (Bool) zuordnen

joergflorian

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

Ich mache gerade meine ersten Schritte mit AWL. Hab im Forum gesucht, aber irgendwie nichts gefunden was mir weiterhilft (Wahrscheinlich hab ich es einfach nicht verstanden).

Folgendes Problem:

Ich habe einen FB. In den statischen Variablen habe ich folgendes Byte:

#ComData_IN.StatusWord.LowByte

Von diesem möchte ich nun das 7. Bit dem Ausgang #Warning (Bool) zuordnen. Ich habe es folgendermassen versucht:

L #ComData_IN.StatusWord.LowByte
SLD 3
LAR1

U L [AR1,P#0.7]
= #Warning

Dabei geht mir die SPS in den Stop (Bereichslängenfehler beim Lesen). Tja ihr seht, hier ist ein totaler Anfänger am Werk.

Danke für eure Tipps
Florian
 
Code:
      L       #ComData_IN.StatusWord.LowByte   
      SLD   3
      LAR1
Das geht so nicht, du lädst den Wert in dem Byte und machst dann daraus einen Pointer.

Versuchs mal so:

Code:
      L     P##DeinByte
      LAR1  

      U     DIX [AR1,P#0.7]
      =     #Warning
Du lädst die Adresse des IN-Parameters (Bei einem FB erscheint hier die Adresse im Instanz-DB!)
Und anchließend greifst du in diesen Instanz-DB. IN sind keine Lokaldaten, nur Temp sind Lokal. Das siehst du, wenn du in die Variablendeklaration gehst, dort fangen die Temp bei 0.0 an!

Du könnstest also auch die IN in eine Temp umkopieren und dann darauf über lokale Variablen zugreifen.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Hier noch die Temp-Geschichte nachgereicht:

Code:
      L     P##Bit0
      LAR1  

      L     #DeinByte
      T     LB [AR1,P#0.0]

      U     #Bit7
      =     #Warning

Im Temp-Abschnitt definierst du hintereinander 8 Bool, Bit0 ... Bit7!
 
Wenn Deine Variable #ComData_IN.StatusWord.LowByte z.B. an Adresse 2 liegt, dann kannst du folgendes probieren

Code:
U     DIX [AR2,P#2.7]
=     #Warning

Diese Lösung von Ralle hat aber den Vorteil, das du Deine Adresse über den symbolischen Namen ermitteln kannst.
Warnhinweis!
Ausserdem beim Gebrauch der Adressregiste AR1 und AR2 immer darauf achten, das sie am Anfang des Bausteins gesichert und am Ende zurückgeschrieben werden
 
Zuletzt bearbeitet:
Warnhinweis!
Ausserdem beim Gebrauch der Adressregiste AR1 und AR2 immer darauf achten, das sie am Anfang des Bausteins gesichert und am Ende zurückgeschrieben werden

Hierzu mal die Hilfe im Simatic Manager durchlesen
Programmieren von Bausteinen -> Bausteinkonsistenz prüfen und Zeitstempel als Bausteineigenschaft -> Vermeiden von Fehlern beim Aufruf von Bausteinen
 
Zurück
Oben