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

Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 13 von 13

Thema: Kodierung

  1. #11
    kendoku ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    02.05.2007
    Beiträge
    7
    Danke
    3
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Funktionsbaustein
    eigentlich sollte das ein FB sein aber mein Problem war es wie ich die Bits in ein integer reinkrieg also die Syntax dafür. Die Lösung ist ok Brauche zwar noch etwas um sie ganz zu verstehen.
    Zitieren Zitieren aw: funktionsbaustein  

  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

    wenn wir schon lösungen präsentieren

    Code:
          L     EB     1
          L     W#16#F
          UW    
          T     MW     2
    [edit]
    lori hat es seit gestern auf mich abgesehen er kritisierte, das meine lösung nur funktioniert, wenn der bereich ab E1.0 genutzt wird, das ist soweit richtig, folgende kann man aber einsetzen, wenn der bereich bei E1.2 beginnt ... allerdings müssen sie immer noch zusammenhängen

    Code:
          L     EB     1
          T     MW     2
    
          L     W#16#2
          L     MW     2
          SRW   
          
          L     W#16#F
          UW    
          T     MW     2
    für nicht zusammenhängende bits muß dann halt ein pointer, wie es OHGN vorgeschlagen hat oder eine der möglichkeiten, die zottel vorschlug zum zuge kommen
    [/edit]

    zum verstehen von OHGN seiner lösung mal Pointer, Zeiger, FIFO, LIFO gucken
    Angehängte Grafiken Angehängte Grafiken
    Geändert von vierlagig (23.01.2008 um 17:59 Uhr) Grund: weil der lori die funktion anzweifelt ein screenshot
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

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

    kendoku (24.01.2008)

  4. #13
    Registriert seit
    19.06.2003
    Beiträge
    2.200
    Danke
    85
    Erhielt 259 Danke für 175 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Bits in Integer reinkriegen: Du nimmst ein Wort im Speicher, kopierst deine Bits hinein und sorgst dafür, daß die übrigen Bits 0 sind. Das Wort ist dann dein Integer.

    Wenn es KEIN FB/FC sein müßte, könntest du so vorgehen:
    L 0
    T MW0 //damit sind alle Bits 0
    //
    // Nun kopierst du deine auf die passenden Stellen:
    //
    U bit0
    = M1.0
    U bit1
    = M1.1
    U bit2
    = M1.2
    U bit3
    = M1.3

    MW0 enthält jetzt das Ergebnis.

    Natürlich kannst du diesen Code auch in einen FB/FC packen und deine Aufgabe ist rein technisch gesehen gelöst.
    Ein paar Leute werden dir diese Lösung "um die Ohren hauen"...
    Warum? Dein Baustein verändert bei jedem Aufruf MW0. Noch schlimmer ist, daß man es ihm von außen nicht ansieht. Andere Leute könnten meinen, daß MW0 oder die Merker 0.0 bis 1.7 noch frei seien.
    Früher hat man das so gemacht, meist Merker ab 200 für so etwas benutzt und diese "Schmiermerker" genannt.
    Neuere SPSen stellen für Zwischenergebnisse in FCs/FBs Lokalvariablen zur Verfügung. OGHNs Beispiel definiert solch eine Lokalvariable als temp_int. Danach benutzt er Addresszeiger, speichert die Adresse von temp_int darin und addiert den Abstand zum jeweilgen Bit, um einzelne Bits dieser Variablen anzusprechen.

    Andere Möglichkeit wären:

    - Die absolute Adresse der Variablen temp_int herauszufinden und die Bits mittels
    U #bit_0; //Bit_0 in TempVar kopieren
    = Lx.0 // x= Adresse der temp_int + 1 !!!!
    zu kopieren. Das braucht keinen Zeiger, ist aber gefährlich, wenn man die Schnittstelle des Bausteins ändert.

    - Statt der Variablen temp_int 16 Bits als lokale Variablen zu definieren und dann mit dem Adresszeiger ein Integer von der Adresse des ersten Bits zu lesen. Das wären nur ein oder zwei Zugriffe über Zeiger statt 4.

  5. Folgende 3 Benutzer sagen Danke zu Zottel für den nützlichen Beitrag:

    kendoku (24.01.2008),lorenz2512 (23.01.2008),TommyG (23.01.2008)

Ähnliche Themen

  1. Antworten: 17
    Letzter Beitrag: 08.10.2007, 12:19

Lesezeichen

Berechtigungen

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