WinCC Variablen aus VBS in die Steuerung schreiben

BiC

Member
Beiträge
5
Punkte Reaktionen
0
Zuviel Werbung?
->Hier kostenlos registrieren
Hallo zusammen,

ich bin gerade dabei eine Visualisierung in Runtime-Format per TIA15.1 WinCC Advanced auf ein HMI zu bringen.
Hierbei möchte ich, unabhängig vom Einsatzland auf der Steuerung immer mit den Grundwerten "bar", "mm" und "°C" arbeiten. Ich habe in der Runtime selbst schon ein VBS laufen, welches mir die Istwerte der Steuerung aus den besagten Einheiten, je nach Einstellung der HMI, auf der HMI in den passenden Ausgabefeldern ausgibt.
Der gleiche Weg soll aber nun auch natürlich andersherum funktionieren, die Sollwerte sollen in den Eingabefeldern in den jeweilig eingestellten Einheiten eingegeben werden können, dann aber on-the-fly umgerechnet werden und in der jeweiligen "Grundeinheit" zu Steuerung geschrieben werden.
Soll heißen: Es wird im Eingabefeld des HMI ein Wert in "inch" eingeben, per Enter bestätigt und in der Steuerung kommt der Wert als "mm" an.
Eingabefeld und SPS-Variable arbeiten mit dem gleichen Datentypen. Schreibe ich den errechneten Wert auf eine interne Variable (zum Testen), dann funktioniert alles wie gewünscht. Setze ich im gleichen Skript die SPS-Variable ein, wird das Skript nur einmal durchlaufen (das sehe ich, da ich bei Werteauswahl "Kein Wert ausgewählt" fix eine "1" in die SPS-Variable schreibe. Diese "1" wird dann noch in die Steuerung geschrieben, aber danach nichts mehr berechnet)
Die SPS-Variablen stehen auf "Zyklisch fortlaufend" und wenn ich sie direkt an ein Eingabefeld hänge, dann können sie auch beschrieben werden.
Falls noch etwas an Informationen fehlt, trage ich dies noch gerne nach.
Ich sehe gerade einfach nicht, wo ich den falschen Weg beschritten habe.

Ich wäre über hilfreiche Antworten sehr erbaut.

Grüße
BiC
 
OP
BiC

BiC

Member
Beiträge
5
Punkte Reaktionen
0
Hallo!

Niemand da, der mir dabei helfen könnte? Oder fehlt noch etwas an Informationen?

Grüße
BiC
 

faust

Well-known member
Beiträge
571
Punkte Reaktionen
134
Zuviel Werbung?
->Hier kostenlos registrieren
Hallo BiC.

Könntest du ein paar Screenshots/den VBS-Code etc. posten?
Das von dir gewünschte Verhalten ist klar, so ganz werde ich aus deiner Problembeschreibung aber nicht schlau, und bevor ich jetzt mutmaße...
Danke.


Gruß, Fred
 

Heinileini

Well-known member
Beiträge
5.676
Punkte Reaktionen
1.289
Ich kenne die Möglichkeiten bzw. Einschränkungen des HMI nicht.
Meine Vorstellung wäre, dass Du eine unsichtbare Variable auf dem Bild benötigst als Schnittstelle zwischen PLC und VBS und eine sichtbare Variable für die Anzeige/Eingabe.
 

MFreiberger

Well-known member
Beiträge
2.262
Punkte Reaktionen
507
Moin BiC,

zunächst einmal würde ich sämtliche Umrechnungen in der SPS machen.

Dann könntest Du so vorgehen:
DB1: enthält alles Sollwerte. Diese werden im HMI angezeigt/eingestellt und mit diesen arbeitet die CPU.

Dann mit einem Trigger (Taste am HMI?) alle Werte von DB1 umrechnen.

Beispiel:
trigger => wird im HMI zur Umrechnung gesetzt
FaktorTempC_F => ein Faktor für die Umrechnung von °C in °F
FaktorTempF_C => ein Faktor für die Umrechnung von °F in °C

INI:
IF
    trigger
THEN
    trigger := false;
    DB1.temperaur_1 := DB1.temperaur_1 * FaktorTempC_F;
    ...
    Faktor := FaktorTempF_C;
END_IF;

Damit werden alle Sollwerte umgerechnet und der Steuerung ein Faktor mitgegeben, damit sie weiß, wie sie die Werte bei Verwendung auf °C zurückrechnen muss.

Ja, °C/°F ist ein doofes Beispiel, weil hier noch ein Offset angegeben werden muss. Aber das Prinzip sollte deutlich geworden sein.

VG

MFreiberger
 
OP
BiC

BiC

Member
Beiträge
5
Punkte Reaktionen
0
Zuviel Werbung?
->Hier kostenlos registrieren
Hallo Fred, hallo Heinileini,

Danke für Eure Antworten. Hier einmal die gewünschten Screenshots des VBSs. "Temp_Ist" ist das Script, das funktioniert und die °C Werte der Steuerung direkt, je nach Anwahl °C oder F, umrechnet und den gewünschten Wert ausgibt.
"Temp_Soll" ist das Script, das die eingegebenen Werte aus dem HMI (je nach Anwahl F oder °C) umrechnen und in °C in die Steuerung schreiben soll.
Das gleiche möchte ich noch mit Druckwerten (Anwahlen: "bar", "psi", "TORR", usw.) und mit Wegstrecken (Anwahlen: "mm", "inch", ...) machen.
 

Anhänge

  • Temp_Ist.jpg
    Temp_Ist.jpg
    177,8 KB · Aufrufe: 18
  • Temp_Soll.jpg
    Temp_Soll.jpg
    387,5 KB · Aufrufe: 18
OP
BiC

BiC

Member
Beiträge
5
Punkte Reaktionen
0
Besten Dank für Deinen Tipp, MFreiberger,

das wäre auch kein Problem, aber...

kurz zur Erklärung:
Es geht hier um ein Bestandssystem an der ich die Visualisierung ablösen will, da sie von einem Zulieferer kommt, den es nicht mehr gibt.
Von diesem System gibt es bereits mehrere Anlagen im Feld jeweils mit unterschiedlichen HMI-Ausführungen (mal IPC, mal PC, usw.)
In diesen Anlagen gehen die HMIs mittlerweile "außer Dienst" und müssen ersetzt werden.
Das System an sich wird aber auch noch bei uns gebaut und möchte somit auch Erneuerungen erfahren.
Daher habe ich die Visualisierung quasi Hand-am-Arm portiert und da die Umrechnung wie oben erwähnt bisher im HMI stattgefunden hat, soll dies auch weiterhin passieren, um sowohl Bestandsanlagen, als auch Neuanlagen bedienen zu können.
Allerdings habe ich mit dem Scripting in TIA bisher keinerlei Erfahrung.

Grüße
BiC
 

MFreiberger

Well-known member
Beiträge
2.262
Punkte Reaktionen
507
Moin BiC,

aber, wenn die Visu die Werte in °C an die Steuerung liefern soll und die Steuerung nicht "angefasst" werden soll, wird das mit der Remanenz ggf. schwierig.

Man könnte über die Oberfläche den Umrechnungsfaktor vorwählen.
Bei Umstellung müsste man einmal alle Werte von der Steuerung zurückrechnen.

Ansonsten so:
Für die E/A-Felder interne Variablen anbinden. Jeweils bei Änderung in eine Datei schreiben und in die externen Variablen, die an die Steuerung übergeben werden schreiben.
Beim starten der Visu muss man immer einmalig die Datei auslesen und die internen und externen Variablen "füllen".

Alles ein gewisser Aufwand, aber sicherlich machbar.

VG

MFreiberger
 
OP
BiC

BiC

Member
Beiträge
5
Punkte Reaktionen
0
Zuviel Werbung?
->Hier kostenlos registrieren
Moinsen MFreiberger,

danke für den Hinweis, im Moment habe ich die E/A-Felder über interne Variablen eingebunden.
Vorgehensweise ist wie im Anhang beschrieben.
Meinst Du, der weitere Umweg über eine Externe Datei wird hier Abhilfe schaffen?
Die Remanenz bildet hier kein Problem, da vor Start immer erst ein Rezept geladen wird, welches als Datei vorliegt. Wird nach Wiedereinschalten die Einheitenauswahl geändert, so liegt eine Wertänderung an, die ebenfalls direkt zu Steuerung übertragen wird. Die Scripte hierfür laufen ab HMI-Start.

Ich blicke einfach nicht so ganz, warum ich die Variablen aus der Steuerung im Scripting lesen, direkt verarbeiten und ausgeben kann (Temp_ist.jpg),
Aber der Weg andersherum, Werte aus der Visualisierung lesen, direkt verarbeiten und in die Steuerung schreiben nicht funktioniert.
Zumal es ja funktioniert, wenn ich die Variable "Wert_TemperaturKopfHinten" (siehe Anhang) direkt an das E/A-Feld binde.

Ich denke hier, dass es am Script selbst liegt, da es einmal durchzulaufen scheint, denn die "1" aus der Anwahl "No Choice" aus dem Bild oben "Temp_Soll.jpg" wird in die Steuerung übertragen, danach wird aber das VBS nicht weiter bearbeitet. Es sieht so aus, als würde es "hängen bleiben".

Grüße
BiC
 

Anhänge

  • Temp_Soll_interne_Verarbeitung.jpg
    Temp_Soll_interne_Verarbeitung.jpg
    21,3 KB · Aufrufe: 10

Thomas_v2.1

Well-known member
Beiträge
8.839
Punkte Reaktionen
2.706
Da sich die Einheiten wohl nicht minütlich ändern, könntest du doch auch alles über die Lineare Skalierung am jeweiligen Wert fest umrechnen. Das wäre zumindest meine erste Idee das zu lösen, ganz ohne Scripte. Wenn man die Variablen entsprechend bezeichnet z.B. degF_degC weiß man auch direkt was dort einzustellen ist.

Das Prinzip was du vorhast, ließe sich ganz einfach in WinCC 7.x oder WinCC Prof. umsetzen. Bei TIA WinCC mit diesem dreimal um die Ecke scripten, halte ich das für keine elegante und wartbare Lösung.
 
Oben