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

Ergebnis 1 bis 9 von 9

Thema: Verständnisfrage zu Zahlenformaten

  1. #1
    Registriert seit
    15.06.2009
    Beiträge
    11
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    ich muss mich zum ersten Mal mit Zahlenformaten in Step7 auseinandersetzen.
    Konkret möchte ich einen Zähler hochzählen lassen und seinen Zählwert binär über 8 Leuchten ausgeben lassen.

    Nun finde ich an Funktionen aber jeweils nur Möglichkeiten den Zählwert als BCD auszugeben und nach meinem Verständnis bringt mich das nicht weiter, oder?

    BCD ist ja nicht gleich binär. Oder verstehe ich da etwas falsch?

    Wie gehe ich da am besten vor?

    Software ist Step7 5.4 und Hardware ist eine S7-300 mit CPU 313C-2 DP

    Danke und Grüße

    Sebastian
    Zitieren Zitieren Verständnisfrage zu Zahlenformaten  

  2. #2
    Registriert seit
    08.02.2007
    Ort
    A-2320
    Beiträge
    2.252
    Danke
    244
    Erhielt 332 Danke für 303 Beiträge

    Standard

    Was hast Du denn schon als Programm?

    Was steht nach dem Befehl

    L Zx

    im Akku?

  3. #3
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.712
    Danke
    398
    Erhielt 2.397 Danke für 1.997 Beiträge

    Standard

    Hallo,
    Ob BCD gleich Binär ist ist eine Frage der Auslegung, wie was angezeigt werden soll. Wenn du es so machen willst, dass bei Zähler = 0 keine Lampe leuchtet und bei Zähler = 255 alle des Ausgangsbytes, dann müßtest du erst noch den Befehl BTI zwischen "L Zähler" und "T Ausgangsbyte" schalten.
    Ansonsten ... Need more Info ...

    Gruß
    Larry

  4. #4
    brik ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    15.06.2009
    Beiträge
    11
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Mein Programm sieht folgendermaßen aus:

    Code:
     U     M    100.5
          ZV    "takt"
          BLD   101
          NOP   0
          NOP   0
          U     "256"
          R     "takt"
          L     "takt"
          T     MW     1
          NOP   0
          NOP   0
    Code:
     L     MW     1
          L     255
          >=I   
          =     "256"
    Code:
     O     E      0.0
          ON    E      0.0
          =     "Eins"
    Code:
     U     "Eins"
          SPBNB _001
          L     MW     1
          DTB   
          T     MW     2
    _001: NOP   0
    Wobei ich dazu sagen muss, dass ich alles in FBS programmiert habe und der AWL auch nicht wirklich mächtig bin.

    Was bezeichnet bei einer SPS den Akku?

    @Larry: Ja, du hast es richtig verstanden. So soll es sein. Scheinbar habe ich aber genau das Gegenteil von dem gemacht, was du vorgeschlagen hast, oder?

    Ich habe das Problem, dass ich absolut keine Ahnung davon habe, wie Zahlen in Step7 behandelt werden und was man mit ihnen machen muss um bestimmte Dinge zu erreichen. Habe da bis jetzt auch nicht wirklich Lesestoff zu gefunden.

  5. #5
    Registriert seit
    08.02.2007
    Ort
    A-2320
    Beiträge
    2.252
    Danke
    244
    Erhielt 332 Danke für 303 Beiträge

    Standard

    [QUOTE=brik;286562]Mein Programm sieht folgendermaßen aus:

    Code:
     U     M    100.5   //woher kommt der?
          ZV    "takt"   //Zähler zählt nur bei Flankenwechsel!!
          BLD   101
          NOP   0
          NOP   0
          U     "256"    //ist das ein Merker nehme ich an?!
          R     "takt"   
          L     "takt"
          T     MW     1
          NOP   0
          NOP   0
    Code:
     L     MW     1
          L     255
          >=I   
          =     "256"
    Code:
     O     E      0.0
          ON    E      0.0
          =     "Eins"   //also immer "1"
    Code:
     U     "Eins"
          SPBNB _001   
          L     MW     1
          DTB   //wandelt 32bit in BCD, wozu?
          T     MW     2
    _001: NOP   0

    Ist der M100.5 der Merker mit dem gezählt werden soll?
    Wenn der statisch "1" ist wird da nicht viel passieren.

  6. #6
    brik ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    15.06.2009
    Beiträge
    11
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Nein, M100 ist mein Taktmerker. Der Zähler soll im Sekundentakt inkrementieren.

  7. #7
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.712
    Danke
    398
    Erhielt 2.397 Danke für 1.997 Beiträge

    Standard

    Hallo,
    der AKKU ist das Arbeitsregister der CPU. Hierin steht der Wert, der gerade verarbeitet wird (u.A.).

    Was sind die Variablen in """ für welche ? Ich hoffe, es sind keine TEMP-Variablen. Ansponsten wird es immer noch nicht funktionieren.

    Hast dui den BTI nun schon probiert ?

    Gruß
    Larry

  8. #8
    brik ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    15.06.2009
    Beiträge
    11
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Woher weiß ich, ob es TEMP Variablen sind?
    Ich arbeite in einem FB und habe die Symbole in der Symboltabelle definiert.

    Habe dank weiterer Hilfe per PN nun eine funktionierende Lösung gefunden, die wie folgt aussieht:

    Code:
     U     M    100.5
          ZV    "takt"
          BLD   101
          NOP   0
          NOP   0
          U     "256"
          R     "takt"
          L     "takt"
          T     MW     1
          LC    "takt"
          T     AB     0
          NOP   0
    Code:
       L     MW     1
          L     255
          >=I   
          =     "256"
    Code:
    O     E      0.0
          ON    E      0.0
          =     "Eins"
    Danke für die Hilfestellungen.


    /edit: Hat so leider doch nicht richtig geklappt. Die Ausgabe war weiterhin BCD-kodiert. Mit Larrys Vorschlag hat es dann aber funktioniert. Der ausgegebene Zählerwert muss erst noch mittels BTI umgewandelt werden.

    Code:
          U     M    100.1
          ZV    "takt"
          BLD   101
          NOP   0
          NOP   0
          U     "256"
          R     "takt"
          L     "takt"
          T     MW     1
          LC    "takt"
          T     MW     2
          NOP   0
    Code:
          L     MW     1
          L     255
          >=I   
          =     "256"
    Code:
          O     E      0.0
          ON    E      0.0
          =     "Eins"
    Code:
          L     MW     2
          BTI   
          T     AB     0
          NOP   0

    So geht es nun wie gewünscht.
    Geändert von brik (14.10.2010 um 11:12 Uhr)

  9. #9
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.712
    Danke
    398
    Erhielt 2.397 Danke für 1.997 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von brik Beitrag anzeigen
    Woher weiß ich, ob es TEMP Variablen sind?
    TEMP-Variablen erkennst du daran, dass du sie im Deklarations-Bereich TEMP des jeweiligen Bausteins deklariert hast.
    Diese Variablen werden NICHT von Zyklus zu Zyklus gepuffert.
    Im Gegensatz dazu Variablen, die du in einem FB im Bereich STAT deklariert hast, diese werden im Instanz-DB des FB's gepuffert (wie z.B. Merker etc.).

    Nur so zur Info ...

    Gruß
    Larry


    Ach ja ... Nachsatz : Schön, dass es funktioniert ...

Ähnliche Themen

  1. Verständnisfrage zu ST
    Von mf123 im Forum CODESYS und IEC61131
    Antworten: 5
    Letzter Beitrag: 17.08.2011, 10:06
  2. Modbus TCP Verständnisfrage
    Von snej im Forum CODESYS und IEC61131
    Antworten: 4
    Letzter Beitrag: 12.07.2011, 19:57
  3. Verständnisfrage
    Von ditj_vitja im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 04.05.2011, 17:58
  4. AWL Verständnisfrage
    Von Peraglie im Forum Simatic
    Antworten: 24
    Letzter Beitrag: 22.03.2011, 23:10
  5. [ Speicheradressierung ] Verständnisfrage
    Von Anonymous im Forum HMI
    Antworten: 3
    Letzter Beitrag: 09.09.2005, 08:35

Lesezeichen

Berechtigungen

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