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

Seite 7 von 8 ErsteErste ... 5678 LetzteLetzte
Ergebnis 61 bis 70 von 74

Thema: WORD aus einzelnen Bits zusammensetzen

  1. #61
    Registriert seit
    24.11.2006
    Ort
    57072 Siegen
    Beiträge
    466
    Danke
    59
    Erhielt 121 Danke für 109 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von marlob Beitrag anzeigen

    Was spricht dagegen, in einem FC/FB indem ich die Adressregister usw. benutze, diese grundsätzlich zu sichern und zurück zu laden. Dann bin ich immer auf der sicheren Seite. Soviel extra code ist das ja schliesslich auch nicht und ich muss mir keine Gedanken machen, ob was schiefgehen kann
    Hallo marlob,

    es spricht nichts dagegen,
    aber es ist auch kein FEHLER, es nicht zu machen, m.E.

    Was kiestumpe sagt, bringt eigendlich die Sache auf den Punkt.
    Wie gesagt (Hallo Zotos ), man muss halt wissen, wie die Lokalvariablen im I/O Bereich der Funktion funktionieren.


    Zitat Zitat von marlob Beitrag anzeigen
    Wird das Programm durch einen OB unterbrochen, dann werden vom Betriebssystem automatisch die aktuellen Inhalte der Akkumulatoren und
    Adressregister sowie die Nummer und die Größe der geöffneten Datenbausteine im U-Stack gesichert. Beim Rücksprung in den aufrufenden Baustein werden diese wieder zurück geladen. Wenn du in deinem OB also nur den FC aufrufst, gibt es keine Probleme
    Weitere Infos hierzu Beitrags-ID 14845057
    Das ist Richtig und wieder nicht richtig...
    Z.B. kann bei Multiinstanz - FB Aufrufen das AR2 so verbogen werden,
    dass es NICHT wieder herstellbar ist.

    Bitte entschuldige, dass ich den entsprechenden FAQ - Link nicht parat habe,
    ich werde ihn ggf. Nachreichen.

    CU

    Jürgen

    .
    Geändert von IBN-Service (22.11.2007 um 11:47 Uhr) Grund: AR2

    Zur Beachtung:
    Ich distanziere mich ausdrücklich von allen Aussagen in diesem Forum
    welche nicht von mir stammen und mache mir deren Inhalte nicht zu eigen.


    www.ibn-service.com

  2. #62
    Registriert seit
    18.09.2004
    Ort
    Münsterland/NRW
    Beiträge
    4.728
    Danke
    729
    Erhielt 1.161 Danke für 972 Beiträge

    Standard

    Zitat Zitat von IBN-Service Beitrag anzeigen
    es spricht nichts dagegen,
    aber es ist auch kein FEHLER, es nicht zu machen, m.E.
    In diesem Fall (Beispiel von Kai wird es wohl nicht nötig sein.)
    Aber man weiss nie, was andere Programmierer da später noch mit einbauen und was dann alles passieren kann.
    Da hab ich schon die dollsten Sachen gesehen

    Zitat Zitat von IBN-Service Beitrag anzeigen
    Das ist Richtig und wieder nicht richtig...
    Z.B. kann bei Multiinstanz - FB Aufrufen das AR2 so verbogen werden,
    dass es NICHT wieder herstellbar ist.
    Ich habe mich in meiner Aussage auf den FC bezogen, den du ja auch explizit angesprochen hast.
    Also ist es richtig!
    Was den FB in diesem Fall betrifft, muss ich selber nachgucken

    Zitat Zitat von IBN-Service Beitrag anzeigen
    Bitte entschuldige, dass ich den entsprechenden FAQ - Link nicht parat habe,
    ich werde ihn ggf. Nachreichen.
    Auf jeden Fall, das interessiert mich schon

  3. Folgender Benutzer sagt Danke zu marlob für den nützlichen Beitrag:

    zotos (22.11.2007)

  4. #63
    Registriert seit
    24.11.2006
    Ort
    57072 Siegen
    Beiträge
    466
    Danke
    59
    Erhielt 121 Danke für 109 Beiträge

    Standard

    Zitat Zitat von marlob Beitrag anzeigen

    Auf jeden Fall, das interessiert mich schon
    Hallo marlob,

    habe leider nicht gefunden, was ich gesucht habe...

    Ggf. heute Abend mehr...

    CU

    Jürgen

    .
    Geändert von IBN-Service (22.11.2007 um 12:19 Uhr) Grund: Doppelposting

    Zur Beachtung:
    Ich distanziere mich ausdrücklich von allen Aussagen in diesem Forum
    welche nicht von mir stammen und mache mir deren Inhalte nicht zu eigen.


    www.ibn-service.com

  5. Folgender Benutzer sagt Danke zu IBN-Service für den nützlichen Beitrag:

    zotos (22.11.2007)

  6. #64
    moeins ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    04.09.2007
    Beiträge
    128
    Danke
    20
    Erhielt 8 Danke für 8 Beiträge

    Standard

    Zitat Zitat von Onkel Dagobert Beitrag anzeigen
    Hallo moeins,

    Dich hätten wir ja fast vergessen. Du hast es sicherich schon so umgesetzt wie OHGN es im fünften Beitrag beschrieben hat! In solch kleinen, überschaubaren Funktionen hat die absolute Adressierung der Lokaldaten durchaus eine Berechtigung.
    Schön das wenigsten einer an mich denkt

    Ich habe die erste Variante genommen, bei der zweiten Variante mit dem Pointer bin ich mir nicht sicher ob es auch den Zweck erfüllt den ich möchte. Zu meiner Schande muß ich sagen das ich es nicht ausprobiert habe.

    Wird denn bei der Pointervariante Highbyte und Lowbyte vertauscht, so das ich mit der WinCC-Flexible Bitmeldung konform bin ?

    Mein FC sieht von der Aussenbeschaltung so aus :

    Meldung 1 -IN
    Meldung 2 -IN
    Meldung 3 -IN
    ...
    Meldung 16 -IN

    OUT -Meldewort


    WinCC Flexible nimmt ja für Meldung 1 aus dem Meldewort das erste Bit aus dem Lowbyte. Also so : 00000001 00000000 (Meldung 1 =1)

    ?!?
    Geändert von moeins (22.11.2007 um 16:02 Uhr)

  7. #65
    Registriert seit
    30.03.2005
    Beiträge
    2.096
    Danke
    0
    Erhielt 673 Danke für 541 Beiträge

    Standard

    Zitat Zitat von moeins Beitrag anzeigen
    Wird denn bei der Pointervariante Highbyte und Lowbyte vertauscht, so das ich mit der WinCC-Flexible Bitmeldung konform bin
    Falls Du mit der Pointervariante den Programmcode hier meinst:

    http://www.sps-forum.de/showpost.php...23&postcount=6

    Ja, es werden dort das Highbyte und das Lowbyte vertauscht.

    Gruß Kai

  8. #66
    moeins ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    04.09.2007
    Beiträge
    128
    Danke
    20
    Erhielt 8 Danke für 8 Beiträge

    Standard

    Nein, ich meinte eigentlich diese Variante :

    Zitat Zitat von Kai Beitrag anzeigen
    Hier noch mal ein Lösungsvorschlag mit Pointern:

    Code:
    FUNCTION "FC_BOOL_WORD_PT" : VOID
    TITLE =BOOL => WORD
    AUTHOR : KAI
    FAMILY : SPSFORUM
    NAME : LOKALDAT
    VERSION : 1.0
     
    VAR_INPUT
      IN_BIT_00 : BOOL ;    
      IN_BIT_01 : BOOL ;    
      IN_BIT_02 : BOOL ;    
      IN_BIT_03 : BOOL ;    
      IN_BIT_04 : BOOL ;    
      IN_BIT_05 : BOOL ;    
      IN_BIT_06 : BOOL ;    
      IN_BIT_07 : BOOL ;    
      IN_BIT_08 : BOOL ;    
      IN_BIT_09 : BOOL ;    
      IN_BIT_10 : BOOL ;    
      IN_BIT_11 : BOOL ;    
      IN_BIT_12 : BOOL ;    
      IN_BIT_13 : BOOL ;    
      IN_BIT_14 : BOOL ;    
      IN_BIT_15 : BOOL ;    
    END_VAR
    VAR_OUTPUT
      OUT_WORD : WORD ; 
    END_VAR
    BEGIN
    NETWORK
    TITLE =IN_BIT_00 - IN_BIT_15 (BOOL) => OUT_WORD (WORD)
     
          L     P##IN_BIT_00; 
          LAR1  ; 
     
          L     W [AR1,P#0.0]; 
          TAW   ; 
          T     #OUT_WORD; 
     
    END_FUNCTION
    Gruß Kai

  9. #67
    Registriert seit
    30.03.2005
    Beiträge
    2.096
    Danke
    0
    Erhielt 673 Danke für 541 Beiträge

    Standard

    Auch in meiner Funktion FC100 werden das Highbyte und das Lowbyte vertauscht. Das macht der Befehl TAW.

    TAW

    AW kehrt die Reihenfolge der Bytes in AKKU1-L um. Das Ergebnis wird in AKKU1-L gespeichert.
    Wenn Du meine Funktion FC100 verwendest, dann musst du aber den folgenden Beitrag beachten:

    http://www.sps-forum.de/showpost.php...7&postcount=64

    Den Aufruf des FC100 musst Du in der FUP-Ansicht in Dein Programm einfügen.

    Der Aufruf des FC100 muss in Deinem Programm dann so aussehen wie der Aufruf des FC100 in dem Netzwerk 1 in den PDF-Files OB1-FUP.PDF und OB1-AWL.PDF.

    Nur dann funktioniert der FC100 richtig.

    Gruß Kai

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

    Standard

    Zitat Zitat von moeins Beitrag anzeigen
    WinCC Flexible nimmt ja für Meldung 1 aus dem Meldewort das erste Bit aus dem Lowbyte. Also so : 00000001 00000000 (Meldung 1 =1)
    Was Du hier beschreibst ist aber das erste Bit aus dem High-Byte (also Meldung 9).
    Für die erste Meldung ist also richtig: 00000000 00000001

    @marlob: Verstehst Du jetzt was ich mit dem "Märchen_der_vertauschten_Bytes" meinte?
    Neue Ideen begeistern jene am meisten, die auch mit den alten nichts anzufangen wussten.
    Karl Heinrich Waggerl (1897-1973)

  11. #69
    Registriert seit
    18.09.2004
    Ort
    Münsterland/NRW
    Beiträge
    4.728
    Danke
    729
    Erhielt 1.161 Danke für 972 Beiträge

    Standard

    Zitat Zitat von OHGN Beitrag anzeigen
    @marlob: Verstehst Du jetzt was ich mit dem "Märchen_der_vertauschten_Bytes" meinte?
    @OHGN
    Da du das Thema unbedingt wieder ansprechen musstest, habe ich hier doch noch mal drauf geantwortet

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

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    ja, ja, das Märchen mit den vertauschten Bytes ...

    Selbstverständlich ist es mir auch schon passiert, dass ich die Fehlermeldungen verkehrt zugeordnet habe (ist aber jetzt schon eine Weile her). Aber es ist nicht selbstverständlich einzusehen, wie man Bytes in einem linear geordneten Speicher in Words und Doubles organisiert. Ich kenn da auch einen (meinen Chef, nicht hier im Forum), der gebetsmühlenartig sagt: "Aber in der Speicherzelle mit der höchsten Ordnungszahl, da muss doch auch das höchstwertige Byte drinnestehen!(?)"

    Und dann sag ich jedesmal: Tausendeinhundert! was schreibste zuerst hin? Richtig! die Tausenderstelle!!! Und wenn Du neunundsechzig sagst, bist Du als Deutscher allein auf weiter Flur, schreiben tust Du trozdem zuerst den höherwertigen Sechser.

    Mehr zum Für und Wider betreffend Big und Little-Endian möge jeder selbst bei Wikipedia nachlesen.

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

    OHGN (23.11.2007)

Ähnliche Themen

  1. SCL: Auf Bits eines Word zugreifen.
    Von Aksels im Forum Simatic
    Antworten: 13
    Letzter Beitrag: 28.10.2011, 17:10
  2. Aus Word BITs rausziehen
    Von mfg_mr.e im Forum Simatic
    Antworten: 16
    Letzter Beitrag: 20.06.2011, 11:02
  3. WORD of BITS - ILC Phönix Contacts
    Von poelli85 im Forum Sonstige Steuerungen
    Antworten: 6
    Letzter Beitrag: 05.09.2010, 22:55
  4. Codesys Bits, Byte, Word und DWord
    Von Znarf im Forum Sonstige Steuerungen
    Antworten: 16
    Letzter Beitrag: 03.05.2007, 13:36
  5. Antworten: 10
    Letzter Beitrag: 28.09.2004, 08:36

Lesezeichen

Berechtigungen

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