Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Ergebnis 1 bis 9 von 9

Thema: Befehle aus einem Byte Bts zuordnen

  1. #1
    Registriert seit
    09.11.2006
    Beiträge
    690
    Danke
    36
    Erhielt 31 Danke für 29 Beiträge

    Standard


    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??
    Zitieren Zitieren Befehle aus einem Byte Bts zuordnen  

  2. #2
    Registriert seit
    15.01.2005
    Ort
    In der Mitte zwischen Bayreuth/Weiden
    Beiträge
    6.732
    Danke
    314
    Erhielt 1.520 Danke für 1.282 Beiträge

    Standard

    Byte oder Wort, wen kümmerts:

    L Handbefehle
    L 1
    ==I
    = Auf

    L Handbefehle
    L 2
    ==I
    = Zu

    ...

    Mfg
    Manuel
    Warum denn einfach, wenn man auch Siemens einsetzen kann!

    Wer die grundlegenden Freiheiten aufgibt, um vorübergehend ein wenig Sicherheit zu bekommen, verdient weder Freiheit noch Sicherheit (B. Franklin).

  3. #3
    Registriert seit
    15.01.2005
    Ort
    In der Mitte zwischen Bayreuth/Weiden
    Beiträge
    6.732
    Danke
    314
    Erhielt 1.520 Danke für 1.282 Beiträge

    Standard

    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
    Warum denn einfach, wenn man auch Siemens einsetzen kann!

    Wer die grundlegenden Freiheiten aufgibt, um vorübergehend ein wenig Sicherheit zu bekommen, verdient weder Freiheit noch Sicherheit (B. Franklin).

  4. Folgender Benutzer sagt Danke zu MSB für den nützlichen Beitrag:

    mitchih (02.10.2008)

  5. #4
    Registriert seit
    08.08.2007
    Ort
    Dresden
    Beiträge
    9.648
    Danke
    1.059
    Erhielt 2.046 Danke für 1.627 Beiträge

    Standard

    Zitat Zitat von mitchih Beitrag anzeigen
    z.B. 1=Auf 2= Zu 4= Automatik usw..
    ... 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
    Geändert von vierlagig (01.10.2008 um 23:09 Uhr)
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

  6. #5
    mitchih ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    09.11.2006
    Beiträge
    690
    Danke
    36
    Erhielt 31 Danke für 29 Beiträge

    Standard

    Zitat Zitat von vierlagig Beitrag anzeigen
    ... 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
    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
    Geändert von mitchih (02.10.2008 um 12:35 Uhr)

  7. #6
    Registriert seit
    08.08.2007
    Ort
    Dresden
    Beiträge
    9.648
    Danke
    1.059
    Erhielt 2.046 Danke für 1.627 Beiträge

    Standard

    Zitat Zitat von mitchih Beitrag anzeigen
    Richtig Nur steht des Befehl in einem DB in einem Byte, denn die Visu versorgt das Byte mit Werten.
    Code:
    *
          L     DB100.DBB    3
          T     MB   100
    zum beispiel ...
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

  8. #7
    Registriert seit
    06.07.2007
    Beiträge
    2.811
    Danke
    174
    Erhielt 274 Danke für 253 Beiträge

    Standard

    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.
    A programmer is just a tool which converts caffeine into code.

  9. #8
    Registriert seit
    08.08.2007
    Ort
    Dresden
    Beiträge
    9.648
    Danke
    1.059
    Erhielt 2.046 Danke für 1.627 Beiträge

    Standard

    man solls nicht glauben, aber

    Code:
    *
          U     DB1.DBX    0.1
    funktioniert auch ... 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
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

  10. #9
    Registriert seit
    08.11.2006
    Ort
    Uckermark
    Beiträge
    903
    Danke
    201
    Erhielt 256 Danke für 208 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Oder man gießt sich den Quatsch in eine FC
    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
    Neue Ideen begeistern jene am meisten, die auch mit den alten nichts anzufangen wussten.
    Karl Heinrich Waggerl (1897-1973)

Ähnliche Themen

  1. Antworten: 33
    Letzter Beitrag: 22.10.2010, 17:13
  2. Antworten: 5
    Letzter Beitrag: 15.07.2008, 16:38
  3. Antworten: 12
    Letzter Beitrag: 19.11.2007, 11:06
  4. Anzahl der 1sen iin einem Byte.
    Von Anonymous im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 01.09.2005, 14:29
  5. Struct Größe von einem Byte
    Von Jochen Kühner im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 02.09.2004, 10:36

Stichworte

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •