Step 7 DB BYTE wandeln zur Darstellung in WIN CC

Garviel

Level-1
Beiträge
7
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Guten Morgen allerseits :)

Ich sitze momentan an einem Problem und hoffe das ihr mir hier weiterhelfen könnt :

Ich beschreibe/lese momentan Parameter eines Reglers. Dies geschieht über eine Visualisierung die ich über WIN CC angefertigt habe.

In einem DB speichere ich mir die Daten, sowohl vom schreiben wie auch vom lesen. Das funktioniert auch wunderbar, ich habe die Daten als Typ Byte und Darstellung HEX dort abgespeichert (Screenshot ab Adresse 262).

Ich möchte die gelesenen Daten, welche im DB stehen, jetzt noch als Ausgabe in WIN CC darstellen, jedoch bin ich dort an die Grenzen meiner Fähigkeiten gestoßen, da ich nicht wirklich weiß wie ich die Bytes in ein Format bringe, damit es WIN CC ausgeben kann.

Momentan stehen die Daten im DB noch im Format HEX, da die Ausgabe aber auch "Laien" etwas sagen soll, würde ich diese gerne dort als INT ausgeben.

Die Daten um die es sich handelt sind ab Adresse 288.0 - 297.0 auf dem Screenshot zu finden.
Der Prinzipielle Aufbau der Daten bzw. des Befehls im DB ist ( SOH - Adresse - STX - Befehlsbyte (!/?) - ParameterAdresse - ParameterWert - ETX . Checksumme - EOT.

Hier jetzt Beispielhaft für den Parameter 2075 mit dem Wert von 22.5
01 7E 02 23 32 30 37 35 32 32 35 03 68 08 04


Ich bin für jede Hilfe eurerseits sehr dankbar :)

Liebe Grüße
 

Anhänge

  • DB11+WINCC.jpg
    DB11+WINCC.jpg
    94,6 KB · Aufrufe: 35
Ich würde die HMI Eingabe vom Protokoll an das Bauteil trennen, und nicht direkt auf den Protokolldaten arbeiten.

D.h. am HMI gibst der Bediener ein was er machen will, am besten so dass es für den Bediener am einfachsten verständlich ist. Und auf Anforderung baut das SPS-Programm aus diesen Daten das Anforderungstelegramm zusammen. Dann könntest du für die Werteigabe eine Gleitkommazahl verwenden, und im SPS Programm verarbeitest du das dann entsprechen des Protokolls (z.B. Übertragung als Int mit einer Nachkommastelle).
Dann kannst du im SPS Programm das Ganze auch noch auf Gültigkeit prüfen, bevor du die Daten abschickst.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Thomas!

Vielen Dank für deine Antwort und entschuldige bitte meine verspätete Antwort hier. Ich war gesundheitlich sehr angeschlagen und kam nicht dazu im Forum nachzuschauen.

Ich habe mich wahrscheinlich zu blöd ausgedrückt. Momentan ist es so, dass der Bediener am HMI einstellt, ob er Lesen oder Schreiben möchte. Danach gibt er den Parameter ein den er beschreiben/lesen möchte und am Ende noch den Wert (falls benötigt). Der Wert wird in stink normalen Dezimalzahlen angegeben.

Das funktioniert auch einwandfrei. Ich habe mir auch schon einen Lesebefehl geschrieben, der quasi wie der Schreibbefehl funktioniert, aber nur die aktuellen Daten des Parameters in meinen DB abspeichert.

Das Problem was sich für mich jetzt ergibt ist, dass die Daten als einzelne Bytes in meinem DB stehen.
Beispiel: Im Parameter steht der Wert 30.0 (Grad).
Im DB steht nach dem auslesen:
BeispielByte1:33
BeispielByte2:30
BeispielByte3:30

Und diese jetzt zusammenzuführen, um daraus dann den Wert 30.0 zu bilden und am HMI wieder auszugeben ist für mich gerade etwas, was mein Wissen übersteigt oder ich stehe auf dem Schlauch.

Für weitere Hilfe wäre ich sehr dankbar!

Liebe Grüße
 
Im DB steht ASCII-Text, den müsstest Du in das REAL-Format umwandeln (z.B. in einen STRING kopieren und mit STRNG_R oder STRNG_DI was basteln).
Du könntest den Text aber auch einfach in Deinem WinCC flexible als StringChar anzeigen.

Harald
 
Zurück
Oben