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

Ergebnis 1 bis 7 von 7

Thema: Bit zusammenfassen

  1. #1
    Registriert seit
    03.11.2004
    Beiträge
    44
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Lächeln


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    kann ich irgendwie einzelne zusammenhängende bits zu "irgendetwas"zusammenfassen um dann darauf direkt eine Zahl zu schreiben?

    Bsp. A2.4 bis A3.3 sollen eine Programmnummer für ein externes Gerät sein.
    Jetzt könnte ich jedes Bit einzeln beschreiben, oder direkt eine nummer mit Lade/Transfer schreiben.
    Das muß doch gehen oder??
    haltet schön alle bits zusammen
    Zitieren Zitieren Bit zusammenfassen  

  2. #2
    Registriert seit
    21.12.2006
    Ort
    Wiener Neustadt
    Beiträge
    934
    Danke
    157
    Erhielt 169 Danke für 127 Beiträge

    Standard

    Hallo!

    wenn du kannst verschiebe deine ausgänge auf eine grade zahl A4.0 oder 3.0 und lade das AB oder AW und transferiere es.
    andererseits schreib mit einem pointer von deinem ersten bit mit der länge und transferiere es

    viel erfolg
    Gruß
    M

    Handbook not read error...
    Klare Frage - klare Antwort

  3. #3
    Registriert seit
    01.11.2007
    Beiträge
    1.239
    Danke
    91
    Erhielt 407 Danke für 368 Beiträge

    Standard

    Also, Manfreds Vorschlag wär für mich auch erste Wahl. Wenn die Belegung denn unbedingt so bleiben soll:
    Code:
    L MB10      // Programmnummer
    SLW 4       // Schieben
    T AW2      // und weg damit
    So kann man aber die restlichen Ausgänge nicht mehr nutzen, daher:

    Code:
    L     MB    10   //Programmnummer
    SLW   4          // Schieben
    T     MW    12 // Merken
    L     AW     2   // AW laden
    L     W#16#F00F // Maske
    UW              // wortweises UND, um A2.0-A2.3 und A3.4-A3.7 zu erhalten
    L     MW    12 
    OW              // Programmnummer einfügen
    T     AW     2 // und weg damit
    Ist jetzt nicht getestet, sollte aber so oder so ähnlich funktionieren.

    Grüße von HaDi

  4. #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

    Code:
    *
    //adressregister sichern
    
          TAR1  
          T     MD    40
          TAR2  
          T     MD    44
    
    //byte-startadresse quelle
          L     3
          SLD   3
          LAR1  
    
    //byte-startadresse ziel
          L     2
          SLD   3
          LAR2  
    
          L     8                           //anzahl der zu schreibenden elemente
    next: T     MW    20
          U     M [AR1,P#0.0]               //quelle
          =     A [AR2,P#0.4]               //ziel (mit versatz)
          +AR1  P#0.1                       //nächstes element
          +AR2  P#0.1
          L     MW    20
          LOOP  next
    
    //adressregister zurückschreiben
          L     MD    40
          LAR1  
          L     MD    44
          LAR2
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

  5. #5
    Registriert seit
    29.09.2008
    Ort
    Land der Frühaufsteher
    Beiträge
    104
    Danke
    6
    Erhielt 22 Danke für 21 Beiträge

    Daumen hoch

    Zitat Zitat von vierlagig Beitrag anzeigen
    Code:
    *
    //adressregister sichern
     
          TAR1  
          T     MD    40
          TAR2  
          T     MD    44
     
    //byte-startadresse quelle
          L     3
          SLD   3
          LAR1  
     
    //byte-startadresse ziel
          L     2
          SLD   3
          LAR2  
     
          L     8                           //anzahl der zu schreibenden elemente
    next: T     MW    20
          U     M [AR1,P#0.0]               //quelle
          =     A [AR2,P#0.4]               //ziel (mit versatz)
          +AR1  P#0.1                       //nächstes element
          +AR2  P#0.1
          L     MW    20
          LOOP  next
     
    //adressregister zurückschreiben
          L     MD    40
          LAR1  
          L     MD    44
          LAR2
    Hallo 4L,

    wenn ich das richtig lese, steht bei dir die Programmnummer in MB 3?
    Für MW 20, MD 40 und MD 44 kann man auch lokale Variablen nehmen.

    Schöne Routine!

    MfG
    FrankW

  6. #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 FrankW Beitrag anzeigen
    Hallo 4L,

    wenn ich das richtig lese, steht bei dir die Programmnummer in MB 3?
    Für MW 20, MD 40 und MD 44 kann man auch lokale Variablen nehmen.

    Schöne Routine!

    MfG
    FrankW
    richtig, die kann man natürlich auch variabel gestalten, als FC z.b.:

    Code:
    *
    FUNCTION "COPY_Memory_to_Output" : VOID
    //DATE:     01.10.2008
    //AUTHOR:   4lagig
    //VERSION:  V0.1 BasicVer
    AUTHOR : '4lagig'
    FAMILY : BoolGF
    VERSION : 0.1
    
    VAR_INPUT
      iSourceByte : INT ;    
      iSourceBit : INT ;    
      iDestinationByte : INT ;    
      iDestinationBit : INT ;    
      iElements : INT ;    
    END_VAR
    VAR_TEMP
      dAR1Save : DWORD ;    
      dAR2Save : DWORD ;    
      iLoop : INT ;    
    END_VAR
    BEGIN
    NETWORK
    TITLE =
    
    //adressregister sichern
    
          TAR1  ; 
          T     #dAR1Save; 
          TAR2  ; 
          T     #dAR2Save; 
    
    //byte-startadresse quelle
          L     #iSourceByte; 
          SLD   3; 
          L     #iSourceBit; 
          +D    ; 
          LAR1  ; 
    
    //byte-startadresse ziel
          L     #iDestinationByte; 
          SLD   3; 
          L     #iDestinationBit; 
          +D    ; 
          LAR2  ; 
    
          L     #iElements; //anzahl der zu schreibenden elemente
    next: T     #iLoop; 
          U     M [AR1,P#0.0]; //quelle
          =     A [AR2,P#0.0]; //ziel (mit versatz)
          +AR1  P#0.1; //nächstes element
          +AR2  P#0.1; 
          L     #iLoop; 
          LOOP  next; 
    
    //adressregister zurückschreiben
          L     #dAR1Save; 
          LAR1  ; 
          L     #dAR2Save; 
          LAR2  ; 
    
    END_FUNCTION
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

  7. Folgender Benutzer sagt Danke zu vierlagig für den nützlichen Beitrag:

    FrankW (01.10.2008)

  8. #7
    Registriert seit
    23.08.2006
    Ort
    Benningen
    Beiträge
    13
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Totalfuchs,

    schau Dir mal die Anlage FC303 an. Mit diesem Baustein kannst Du ganz einfach 16 zusammen gewürfelte Bits zu einem Wort zusammenfassen.
    Einfach gemacht, funktioniert prima. Hab das mal gebraucht um Wincc flex
    Fehlerwörter zu versorgen.

    Ich benütze dafür nur Lokalvariable.

    Gruß
    Angehängte Dateien Angehängte Dateien

Ähnliche Themen

  1. Instanz DB´s zusammenfassen
    Von 1985zottel im Forum Simatic
    Antworten: 9
    Letzter Beitrag: 18.02.2011, 09:28
  2. Instanz DB's zusammenfassen?
    Von Beckx-net im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 25.05.2010, 09:38
  3. Zusammenfassen von 20 Bytes in INT
    Von ice6461 im Forum Simatic
    Antworten: 9
    Letzter Beitrag: 02.08.2007, 20:40
  4. Zusammenfassen und digitalen Eingängen (TwinCat)
    Von drfunfrock im Forum Sonstige Steuerungen
    Antworten: 1
    Letzter Beitrag: 24.06.2006, 05:57
  5. festplatten zusammenfassen
    Von volker im Forum PC- und Netzwerktechnik
    Antworten: 15
    Letzter Beitrag: 07.11.2005, 09:01

Lesezeichen

Berechtigungen

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