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

Ergebnis 1 bis 9 von 9

Thema: Problem mit Werteumwandlung BCD nach Integer

  1. #1
    Registriert seit
    19.10.2006
    Beiträge
    86
    Danke
    18
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Folgendes Problem:
    Zeitschaltuhr das Uhrzeiten im Integerformat bearbeitet, wobei "123" 01:23Uhr entspricht und "0" z.B. 0:00Uhr. Funzt alles prima. Jetzt möchte ich aber verhindern, daß der Timer bei Eingabe unsinniger Uhrzeiten (z.B. "1263", was 12:63Uhr entsprechen würde) schaltet.
    Umzu Überprüfen, ob Minuten größer 59 sind habe ich in u.a. AWL erst die Einschaltzeit #TEIN in BCD gewandelt, 8 Bit links, dann 8 Bit rechts geschoben, um die Stunden zu eliminieren, wieder in INT zu wandeln und zu überprüfen. Ist die Überprüfung auf Minuten >59 negativ, wird die Ausschaltzeit #TAUS geprüft. Es funktioniert alles bis zur Rückwandlung von #TAUS BCD nach Integer (ab Zeilen die mit ** anfangen).
    Der letzte BTI-Befehl setzt die CPU (315-2DP) in Stop.
    Ich komm nicht drauf, warum, da es beim ersten mal ja klappt.


    L #TEIN //#TEIN in BCD wandeln
    ITB
    SLW 8 //sechs Stellen nach links verschieben
    SRW 8 //sechs Stellen nach rechts verschieben
    BTI //zurückwandeln in INT (nur beide niederwertigste Stellen)
    L 59
    >I //wenn größer 59
    SPB RST //dann springe zur Marke "Reset"
    L #TAUS //#TAUS in BCD wandeln
    ITB
    SLW 8 //sechs Stellen nach links verschieben
    SRW 8 //sechs Stellen nach rechts verschieben
    **BTI //zurückwandeln in INT (nur beide niederwertigste Stellen)
    **L 59
    **>I //wenn größer 59
    **SPB RST //dann springe zur Marke "Reset"
    NOP 0
    Ich fordere die Anerkennung von Boolimie als Berufskrankheit.
    Zitieren Zitieren Problem mit Werteumwandlung BCD nach Integer  

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

    gib mal bei TEIN eine Zeit größer 10:00 Uhr ein
    dann fliegt dir das ding schon da raus ...

    [edit][strike]Siemens BCD[/strike] ITB [/edit] kann nur +/- 999
    Geändert von vierlagig (21.05.2009 um 19:29 Uhr)
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

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

    urlicht (21.05.2009)

  4. #3
    Registriert seit
    29.03.2004
    Beiträge
    5.861
    Danke
    144
    Erhielt 1.724 Danke für 1.251 Beiträge

    Standard

    Warum denn überhaupt mit BCD?
    Code:
          L     #iZeit
          L     100
          /I    
          T     #iStd_tmp
          L     100
          *I    
          L     #iZeit
          TAK   
          -I    
          T     #iMin_tmp
    Danach Stunden/Minuten auf Grenzen prüfen.

  5. Folgender Benutzer sagt Danke zu Thomas_v2.1 für den nützlichen Beitrag:

    urlicht (21.05.2009)

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

    Zitat Zitat von Thomas_v2.1 Beitrag anzeigen
    Warum denn überhaupt mit BCD?
    warum denn überhaupt mit INT?
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

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

    urlicht (21.05.2009)

  8. #5
    Registriert seit
    29.03.2004
    Beiträge
    5.861
    Danke
    144
    Erhielt 1.724 Danke für 1.251 Beiträge

    Standard

    Zitat Zitat von vierlagig Beitrag anzeigen
    warum denn überhaupt mit INT?
    Gut, dann halt um 10 Feierabend...

  9. Folgender Benutzer sagt Danke zu Thomas_v2.1 für den nützlichen Beitrag:

    urlicht (21.05.2009)

  10. #6
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.299
    Danke
    545
    Erhielt 2.715 Danke für 1.962 Beiträge

    Standard

    Zitat Zitat von vierlagig Beitrag anzeigen
    gib mal bei TEIN eine Zeit größer 10:00 Uhr ein
    dann fliegt dir das ding schon da raus ...

    Siemens BCD kann nur +/- 999
    Ja 4L BTI, aber BTD kann mehr!
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

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

    urlicht (21.05.2009)

  12. #7
    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 Ralle Beitrag anzeigen
    Ja 4L BTI, aber BTD kann mehr!
    stimmt +/- 9 999 999
    aber ich find die lösung trotzdem nicht schön, der kai hat so viele schöne zeitschaltuhren gebaut.
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

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

    urlicht (21.05.2009)

  14. #8
    Registriert seit
    19.10.2006
    Beiträge
    86
    Danke
    18
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Ich verwende das Integer-Format für die Schaltuhr, weil sie halt einfach ist. Alle anderen Formate müssen ebenfalls auf einen gültigen Wertebereich überprüft werden können.
    Ausserdem schubse ich diese Werte z.T. über Profibus FMS und / oder Ethernet auf alte S5-Steuerungen115U/135U.
    Die +/-999-Grenze bei BCD hatte ich vergessen. Danke an Thomas_v2.1 und alle anderen.
    Ich fordere die Anerkennung von Boolimie als Berufskrankheit.
    Zitieren Zitieren Integer ist halt einfach  

  15. #9
    Registriert seit
    19.10.2006
    Beiträge
    86
    Danke
    18
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Integer ist an sich schon sicher bei Uhrzeiten. Ich generiere die Istzeit auch über die Systemzeit per Umwandlung in Stunden/Minuten.
    Hier sind keine Fehler zu erwarten.
    Fehleingaben im Stundenbereich lassen sich einfach per Auswerutung <=I oder >=I bewerkstelligen.
    Fehleingaben bei Minuten führen einfach zum Schalten beim nächsten Stundenübergang. Beispiel: Ein bei 1263 (entspäche 12:63Uhr). Um 13:00Uhr ist das Problem erledigt, da 1300>1263 ist.
    Ausserdem wollte ich die Möglichkeit des Tagesgrenzenüberschreitenden Schaltens (ein 23:00, aus 01:30). Tut ja auch. Die Minutenüberprüfung hätte es nur Narrensicher gemacht.
    Die Darstellung auf dem Prozessleitsystem und den Vor-Ort-Bedienpanels (Touch-Panels) wird durch Kommaverschiebung klarer gemacht. hier erscheint dann 12,53 statt 12:53. Danke an alle.
    Ich fordere die Anerkennung von Boolimie als Berufskrankheit.
    Zitieren Zitieren Ergänzende Bemerkung zu Integer  

Ähnliche Themen

  1. HexString nach Integer
    Von Scrat im Forum CODESYS und IEC61131
    Antworten: 5
    Letzter Beitrag: 11.11.2010, 15:45
  2. Ein ASCII-Zeichen im DB nach Integer
    Von noeppkes im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 09.11.2007, 11:42
  3. von Real nach Integer wandeln
    Von tuppes38 im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 27.09.2005, 18:41
  4. Real nach Integer wandeln
    Von paula23 im Forum Simatic
    Antworten: 9
    Letzter Beitrag: 14.06.2005, 22:53
  5. Umwandlung Integer nach ASCII
    Von el-koenig im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 27.03.2004, 18:42

Stichworte

Lesezeichen

Berechtigungen

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