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

Seite 2 von 3 ErsteErste 123 LetzteLetzte
Ergebnis 11 bis 20 von 24

Thema: Byte in 8 bit teilen

  1. #11
    Registriert seit
    23.04.2009
    Ort
    Allgäu
    Beiträge
    3.042
    Danke
    241
    Erhielt 863 Danke für 617 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von OHGN Beitrag anzeigen
    Er will ja eben nicht absolut auf die Bitadressen zugreifen weil er sein Byte symbolisch adressiert hat.
    Ah, jetzt ist der Groschen gefallen.
    Ja das geht leider nur bei Merkern das ich die gleiche Adresse als Byte wie auch als Bit Symbolisch benennen kann.
    Da muss man bei den DB's schon manchmal überlegen wie man es am besten Strukturiert: Int; Byte; Bool; Array of Bool; u.s.w.)
    Gruß
    Paule
    ----------------------------------------------------------------------------
    > manchmal verliert man und manchmal gewinnen die anderen <

  2. #12
    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 OHGN Beitrag anzeigen
    Hier bleibt dir definitiv nichts anderes übrig als mit indirekter Adressierung zu arbeiten
    .
    ob das so stimmt?
    schließlich kann man auch bytes mit UW verknüpfen
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

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

    Standard

    Zitat Zitat von vierlagig Beitrag anzeigen
    ob das so stimmt?
    schließlich kann man auch bytes mit UW verknüpfen
    Wo er recht hat, hat er (fast immer) recht.

    Mein Vorschlag aus Post #7 ist ohnehin nicht so ganz brauchbar, weil dieser nur auf lokale Variablen anwendbar ist. Dem Threadersteller geht es aber offensichtlich um den Bitzugriff auf symbolische Global-Datenbausteinvariablen.

    Anlehnend an Koll. vierlagigs Idee:
    Code:
    L  1
    L  "deinDB".deinByte
    UW
    ==I
    =  deinBit0
    
    L  2
    L  "deinDB".deinByte
    UW
    ==I
    =  deinBit1
    
    L  4
    L  "deinDB".deinByte
    UW
    ==I
    =  deinBit2
    ............
    ............
    usw. usf.
    Geändert von OHGN (15.01.2010 um 09:03 Uhr) Grund: code geändert da fehlerhaft
    Neue Ideen begeistern jene am meisten, die auch mit den alten nichts anzufangen wussten.
    Karl Heinrich Waggerl (1897-1973)

  4. #14
    d3nnis.c ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    24.07.2008
    Ort
    41748
    Beiträge
    15
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Ich werde es jetzt wohl so lösen, ich erstelle mir einen Hilfs Db(DBsymbol),
    in diesem Db werde ich dann die einzelnen Bits erstellen!

    Dann werde ich

    L Byte1
    T DBsymbol.dbb0

    L Byte2
    T DBsymbol.dbb2

    L Byte3
    T DBsymbol.dbb3

    dann kann ich mit den Symbolnamen aus dem DBSymbol arbeiten!!
    Scheint mir die einfachste Methode zu sein!
    Aber trotzdem Danke
    Dennis

  5. #15
    Registriert seit
    28.01.2009
    Ort
    Hamburg
    Beiträge
    199
    Danke
    52
    Erhielt 54 Danke für 34 Beiträge

    Standard

    Habe mir für solche Funktionen kleine parametrierbare FC`s in SCL gebaut,und in einer Libary abgelgt,somit habe ich die Funktionalität überall verfügbar.
    Durch Kleine Änderungen in der SCL Quelle kann man dann auch Wort bzw. Doppelwort Filter bauen.




    SCL Quelle
    Eingangsgröße:byte
    Ausgangsgröße:Array[1..8] of bool

    Code:
    FUNCTION Byte_nach_bit_array :void
    VAR_INPUT
       Einbyte:BYTE; // Eingangsbyte
    END_VAR
    
    VAR_OUTPUT
        Aus_bool_8_array:ARRAY[1..8] Of BOOL;
    END_VAR
    
    VAR_TEMP
        Einbyte_intern:BYTE; // Eingangsbyte
        Einbyte_at AT Einbyte_intern:ARRAY [1..8] OF BOOL;
        schleife:INT;
    END_VAR
    Einbyte_intern:=Einbyte;
       schleife:=1     ; 
        FOR schleife := 1 TO 8 BY 1 DO
          Aus_bool_8_array[schleife]:=Einbyte_at[schleife];
        END_FOR;
    OK:=true;
     END_FUNCTION
    Angehängte Grafiken Angehängte Grafiken
    Zitieren Zitieren Byte in 8 bit teilen  

  6. Folgender Benutzer sagt Danke zu Bernard für den nützlichen Beitrag:

    Paule (15.01.2010)

  7. #16
    Registriert seit
    01.10.2007
    Ort
    Waiblingen
    Beiträge
    3.317
    Danke
    767
    Erhielt 536 Danke für 419 Beiträge

    Standard

    so hatte ich das schonmal in der Vergangenheit vorgeschlagen:
    Zitat Zitat von Perfektionist Beitrag anzeigen
    mein Programmvorschlag:

    L #IN
    SLW 12 // Bit 4 in A1 schieben
    U >0
    = bit4
    SLW 1
    U >0
    = bit3
    SLW 1
    U >0
    = ....

  8. Folgender Benutzer sagt Danke zu Perfektionist für den nützlichen Beitrag:

    OHGN (18.01.2010)

  9. #17
    Registriert seit
    23.04.2009
    Ort
    Allgäu
    Beiträge
    3.042
    Danke
    241
    Erhielt 863 Danke für 617 Beiträge

    Daumen hoch

    Zitat Zitat von Bernard Beitrag anzeigen
    Habe mir für solche Funktionen kleine parametrierbare FC`s in SCL gebaut,und in einer Libary abgelgt,somit habe ich die Funktionalität überall verfügbar.
    Also Bernard,
    Deine Funktion gefällt mir am besten, Voraussetzung ist natürlich man hat SCL.
    Ich brauche das jetzt nicht, aber nachdem hier sonst keiner mal ein Danke drückt, bekommst eins von mir.
    Gruß
    Paule
    ----------------------------------------------------------------------------
    > manchmal verliert man und manchmal gewinnen die anderen <

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

    Standard

    Zitat Zitat von Paule Beitrag anzeigen
    .....
    Ich brauche das jetzt nicht, aber nachdem hier sonst keiner mal ein Danke drückt, bekommst eins von mir.
    Und da mir, für alle die nicht über SCL verfügen, die Lösung von Perfektionist am besten gefällt, werde ich mal das entsprechende 'Danke' drücken.
    Neue Ideen begeistern jene am meisten, die auch mit den alten nichts anzufangen wussten.
    Karl Heinrich Waggerl (1897-1973)

  11. Folgender Benutzer sagt Danke zu OHGN für den nützlichen Beitrag:

    Perfektionist (18.01.2010)

  12. #19
    Registriert seit
    26.05.2009
    Beiträge
    541
    Danke
    35
    Erhielt 78 Danke für 69 Beiträge

    Standard

    Hi Bernard,

    eine Frage hab ich zu deinem Code.
    Ich bin in SCL zwar noch nicht so fit, aber:
    Code:
    schleife:=1 ;
    kannst du dir doch eigentlich sparen, oder?!

    mit
    Code:
    FOR schleife := 1 TO 8 BY 1 DO
    fängt die scheife doch automatisch bei 1 an, oder ist das in scl anders als in anderen Hochsprachen?

    Gruß wolder

  13. #20
    Registriert seit
    28.01.2009
    Ort
    Hamburg
    Beiträge
    199
    Danke
    52
    Erhielt 54 Danke für 34 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Wolder.
    SCL ist zwar eine Hochsprache,doch der Code läuft auf einer SPS.Meine Schleifenvariable liegt im temporären Bereich,ist also nach verlassen des Bausteines in einem nicht definierten Zustand.Aus diesem Grund präge ich temporäre Indexgrössen mit einem Anfangswert ein.
    Versuche es doch einmal ohne Vorbelegung,kann ja sein das die FOR Anweisung selbst vorbelegt.


    Viele Grüße Bernard
    Zitieren Zitieren Betr. Schleifenvorbelegung  

Ähnliche Themen

  1. Bild teilen
    Von al3x im Forum HMI
    Antworten: 1
    Letzter Beitrag: 05.01.2011, 16:16
  2. Bewegen von Teilen
    Von Mike369 im Forum HMI
    Antworten: 5
    Letzter Beitrag: 29.05.2009, 13:21
  3. Bildschirm teilen?
    Von sonic_229 im Forum E-CAD
    Antworten: 1
    Letzter Beitrag: 02.03.2009, 14:24
  4. Antworten: 4
    Letzter Beitrag: 08.07.2008, 08:52
  5. Laengenmessung an beweglichen Teilen
    Von mzva im Forum Elektronik
    Antworten: 12
    Letzter Beitrag: 20.12.2007, 22:53

Lesezeichen

Berechtigungen

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