Befehle aus einem Byte Bts zuordnen

mitchih

Level-2
Beiträge
806
Reaktionspunkte
32
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
ich bin irgendwie ein wenig auf dem Holzweg.

Ich habe einen FC der eine Element steuert z.B. Schieber

Die Ansteuerung des Schiebers erfolgt durch eine Textliste in WinCCflexible

z.B. 1=Auf 2= Zu 4= Automatik usw..

Leider habe ich keine Möglichkeit gefunden ein Byte zu vergleichen (KOP oder FUP)
Jetzt habe ich überlegt das Byte umzutransferieren auf temporäre Bits.

Leider kenne ich nur die Möglichkeit das transferieren dann so auszuführen
Code:
L Handbefehle
T LB 2

Im LB 2 stehen dann die einzelnen Bits.
Ich finde diese Möglichkeit jedoch unsauber da ich absolut auf das Lokalbyte zugreife und es z.B. nicht besschreiben kann.

Hat jemand eine Lösung??
 
Byte oder Wort, wen kümmerts:

L Handbefehle
L 1
==I
= Auf

L Handbefehle
L 2
==I
= Zu

...

Mfg
Manuel
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Oder die andere Variante ist, du schaltest im Bausteineditor
unter "Extras - Einstellungen" KOP/FUP die Typüberprüfung aus,
dann klappt Byte auch in KOP/FUP.

Mfg
Manuel
 
... 8, 16, 32?

und Handbefehle ist ein MB?

dann wäre ja:

M x.0 -> Auf
M x.1 -> Zu
M x.2 -> Automatik
usw.

also nur mal so :rolleyes:

Richtig Nur steht des Befehl in einem DB in einem Byte, denn die Visu versorgt das Byte mit Werten.

Ich möchte jetzt halt einmal auf das Byte zugreifen (Visu und Versorgung Baustein) Außerdem halt auf die einzelnen Bits des Bytes innerhalb des Bausteins. Und dafür suche ich eine saubere Lösung
 
Zuletzt bearbeitet:
Eine andere Möglichkeit wäre, dass du deinen Wert mit einem Hilfsbyte bitweise verundest. Das Hilfsbyte wäre dann 0 und hätte nur an der einen Stelle (kommt drauf an welches Bit du haben möchtest) eine 1.
 
man solls nicht glauben, aber

Code:
*
      U     DB1.DBX    0.1

funktioniert auch :rolleyes: ... allerdings ist es mit der symbolik sone sache

du kannst auch ein array anlegen ...

aber die schönste möglichkeit ist ein UDT, 8 bool lang, kann mit bytezugriff beschrieben werden und du kannst den einzelnen elementen einen namen geben ... doch, ich glaub das ist die eleganteste lösung
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Oder man gießt sich den Quatsch in eine FC :rolleyes:
Code:
FUNCTION FC 2 : VOID
TITLE =
VERSION : 0.1
 
VAR_INPUT
  byte_1 : BYTE ; 
END_VAR
VAR_OUTPUT
  bool0 : BOOL ; 
  bool1 : BOOL ; 
  bool2 : BOOL ; 
  bool3 : BOOL ; 
  bool4 : BOOL ; 
  bool5 : BOOL ; 
  bool6 : BOOL ; 
  bool7 : BOOL ; 
END_VAR
BEGIN
NETWORK
TITLE =
      L     P##byte_1; 
      LAR1  ; 
      U      [AR1,P#0.0]; 
      =     #bool0; 
      U      [AR1,P#0.1]; 
      =     #bool1; 
      U      [AR1,P#0.2]; 
      =     #bool2; 
      U      [AR1,P#0.3]; 
      =     #bool3; 
      U      [AR1,P#0.4]; 
      =     #bool4; 
      U      [AR1,P#0.5]; 
      =     #bool5; 
      U      [AR1,P#0.6]; 
      =     #bool6; 
      U      [AR1,P#0.7]; 
      =     #bool7; 
 
 
END_FUNCTION
 
Zurück
Oben