Step 7 BCD Wandlungsfehler

M.Hammerl

Level-1
Beiträge
3
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich wollte mit Schalten einen BCD Code über eine Eingangsbyte (z.B EB 0) in eine S7-Steuerung eingeben. Dies hat soweit funktioniert, wenn der BCD Code richtig eingegeben wurde. Sobald aber ein falscher BCD Code (also höher als den Wert 9) eingeben wurde, schaltete die S7-Steuerung auf Störung und hängte sich auf.

Ist es nun möglich bzw. gibt es einen Baustein der eine falsche Eingabe des BCD Codes ignoriert oder stattdessen einfach eine Null herausgibt?
 
Es empfiehlt sich halt immer wieder die F1-Hilfe zu den Befehlen zu lesen.... ;)
F1-Hilfe zu BTI schrieb:
BTI (Dezimal-Dual-Umwandlung einer dreistelligen BCD-Zahl) wertet den Inhalt von AKKU1-L als eine dreistellige binär-codierte Dezimalzahl (BCD) aus und wandelt diese in eine Ganzzahl (16 Bit) um. Das Ergebnis wird in AKKU1-L gespeichert. AKKU1-H und AKKU 2 werden nicht verändert.


BCD-Zahl in AKKU1-L: Zulässig sind Werte von "-999" bis "+999". Bit 0 bis Bit 11 geben den Wert und Bit 15 das Vorzeichen (0 = positiv, 1= negativ) der BCD-Zahl an. Bit 12 bis Bit 14 werden bei der Umwandlung nicht verwendet. Wenn eine Dezimalziffer (eine 4-Bit-Tetrade in der BCD-Darstellung) im ungültigen Bereich von 10 bis 15 liegt, tritt während einer versuchten Umwandlung ein BCDF-Fehler auf. Im allgemeinen geht das Automatisierungssystem dann in den Betriebszustand STOP. Sie können jedoch mit Hilfe von OB121 eine andere Fehlerreaktion auf diesen Synchronfehler programmieren.
Ich würde aber lieber gleich den Eingangswert auf den Bereich +/-999 prüfen. Damit der Fehler gar nicht erst auftritt. Es ist auch keine gute Praxis seine Steuerung mit OB121 am leben zu erhalten.

Die 999 meinen natürlich 999bcd, also 100110011001bin bzw. 2457dez.

EDIT: Es gibt natürlich auch zwischen +-/2457 ungültige BCD-Werte. PN/DP hat unten einen Link zu Lösungen gepostet.
 
Zuletzt bearbeitet:
Zurück
Oben