Step 5 S5 100; Zahlenformat Konvertierung

Hüpfer

Level-2
Beiträge
8
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Alle,

ich habe ein Problem mit einer Zahlen Wert Konvertierung. Eine S5- 100U arbeitet mit einem Lauer Bedienfeld zusammen.
Kommunikation erfolgt über DB50. Eine Uralt Anlage von 1999. Danke schon mal für eure Antworten.

Aufgabe ist es einen Dezimalwert ( 0- 9999 ) über das Bedienfeld in die S5 zu übergeben und mit einem Zähler Wert zu vergleichen,
um eine Alarmlampe zu schalten. Weiterhin soll von dem eingegeben Dezimalwert zur Vorwarnung ein um ( hier ) 2 kleinerer Wert mit dem Zähler verglichen werden um eine Warnlampe zu schalten.

Nun habe ich 2 Probleme:

1. der BCD Wert vom Bedienfeld wird in DB50 DW182 geschrieben, wird aber als Hexwert von der S5 interpretiert.

Beispiel Eingabe in Bedienfeld "400" Anzeige in DB50 DW182 ebenso "400" aber als HexWert. Wie bekomme ich die 400 als Dezimalwert hin?
Befehle DUF und DEF funktionieren nicht ( führen zum AG stop )
Ich habe das Format im DB50 für das DW 182 schon auf KZ eingestellt. Hat nichts gebracht.


Aus S5 Programm ( evtl. Syntaxfehler weil aus dem Gedächtnis heraus) :

A DB50 ; Aufruf Komunikationsbaustein mit Bedienfeld
L DW182
T MW90

Hat jemand ne Idee dazu, ich hörte was von FB241 zum Wandeln des Wertes, aber bitte mit konkreter Parametrierung


2tes Problem:

Der Zähler Zählwert wird in hex dargestellt. Wenn ich versuche MW90 ( ebenfals Hexwert ) um KF2 zu subtrahieren
kommt ein falsches Ergebnis raus. Sollte ich hier weil es sich um ( natürliche Zahlen 0- 9999 ) handelt nicht KF verwenden?


Aus S5 Programm ( evtl. Syntaxfehler weil aus dem Gedächtnis heraus) :


L -Z3 ; ZählerWert wird in Hex angegeben
L MW90 ; Grenzwert Alarm
>F
SPB =NOALARM
U M0.1 ; Log1
= A105.7 ; Alarmlampe
NOALARM

L MW90 ; Grenzwert Alarm
L +KF2
-F
T MW92 ; Grenzwert Voralarm; hier wird ein "falsches" Ergebnis reingeladen

L -Z3 ; ZählerWert wird in Hex angegeben
L MW92 ; Grenzwert Voralarm
>F
SPB =NOVORALARM
U M0.1 ; Log1
= A105.6 ; VorAlarmlampe
NOVORALARM
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Die Eingabe am Lauer Bedienfeld ist so projektiert, dass da ein Dezimalwert in DB50 DW182 eingegeben wird (nicht BCD-Wert)?
Es gibt keine Hex-Werte, nur eine Hex-Ansicht.
Wenn du weiter als bis 999 zählen willst, dann musst du mit Flankenerkennung und +F einen eigenen Zähler basteln. Vorteil dabei: du brauchst keine BCD-zu-Dezimal-Wandlung.
Sollen deine Alarm-Lampen nach Alarmwert-Überschreitung für immer leuchten? Wenn du nicht weißt, wie man etwas in AWL programmiert, dann versuche es in KOP oder FUP - eines davon kannst du?
 
Danke für die Antworten. Das mit den Lampen fange ich ab, das ist kein Problem.
Der Zähler ( S5 Zähler ) bis 999 sollte reichen so das ich mir nichts seperat basteln muß.

Ich habe in der Lauer SW angegeben das die Variable eine Soll-P, BCD codiert, 0- 9999, sein soll.
Vorher habe ich auch schon Soll-P, Wort, 0- 65536. Es wäre hier auch - 65536 bis + 65536 möglich gewesen.
Vlt. liegt hier das Problem mit dem Vorzeichen das bei der Speicherung in DW Probleme macht.
Bzw. anders interpretiert werden muß. Gleitpunktzahl 2erKomlement ? Möglich das hier das Problem liegt!?
 
Ich habe in der Lauer SW angegeben das die Variable eine Soll-P, BCD codiert, 0- 9999, sein soll.
dann musst du zum Vergleichen auch den Zählerwert BCD-Codiert laden mit "LC Zx"
beim Subtrahieren aber nicht!

Der Zähler ( S5 Zähler ) bis 999 sollte reichen so das ich mir nichts seperat basteln muß.
das bisschen zählen durch Addieren +1 bei Flanke ist doch kein Aufwand
also ich würde auf "normale" Int gehen anstatt BCD und das ganze Kuddelmuddel vermeiden

Der Zähler Zählwert wird in hex dargestellt. Wenn ich versuche MW90 ( ebenfals Hexwert ) um KF2 zu subtrahieren
kommt ein falsches Ergebnis raus.
(...)
T MW92 ; Grenzwert Voralarm; hier wird ein "falsches" Ergebnis reingeladen
zeige uns mal genauer, was da deiner Meinung nach "falsch" ist. Ich vermute, dass du einfach nur im falschen Format beobachtest, eventuell weil du den Vergleichswert in BCD eingibst.
Wie bereits geschrieben: Es gibt keine Hex-Werte, nur eine Hex-Ansicht.
 
Zurück
Oben