WinCC WinCC Professional (im TIA) - Script: Array of String (PLC) nach der entspr. Anzahl von Text-Ausgabefeldern mit nur zwei Tags.

IBFS

Level-3
Beiträge
4.226
Reaktionspunkte
990
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich muss leider Tags sparen.

Daher folgende Frage, heißt, wie bauche ich sinnvoll ein Script in WinCC (in Zusammenarbeit mit der PLC):

Array of String (PLC) nach der entsprechenden Anzahl von Ausgabefeldern mit nur zwei Tags.
Array Nummer + Inhalt (PLC) auf ---> ca. 20 separate Textfelder.
Aktualisierungszeit ist nicht so wichtig

PLC WinCC
1. .... Textfeld_001
2. .... Textfeld_002
3. .... Textfeld_003
4. .... Textfeld_004
5. .... Textfeld_005
....
 
Ich weiß nicht wie es bei WinCCProf ist, aber in Flex war doch ein Array auch nur ein Tag...

Aber mit nur 2 Tags wird es etwas komplizierter.
Du könntest etwas in der Art machen:

DataID int
Data string

Repeat
WinCC -> PLC -> DataID -> 1
PLC -> WinCC -> Arrayelement in Data kopieren und dann DataID auf 1 + Offset (z.B. 100) setzen, also 101
WinCC liest 101 -> Daten sind gültig -> String in internes Array kopieren
Until

Grüße

Marcel
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich weiß nicht wie es bei WinCCProf ist, aber in Flex war doch ein Array auch nur ein Tag...

Aber mit nur 2 Tags wird es etwas komplizierter.
Du könntest etwas in der Art machen:

Das spannende für mich ist, wie ich das auf die einzelnen Textfelder im WinCC schreibe.
Wie adressiere ich das. Das habe ich so noch nie gemacht.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wenn ich in TIA mehrere TAGs aus einem Array of DINT via Drag und Drop ins WinCC ziehe
wird nach dem Übersetzen jeweils ein Powertag hochgezählt.
Hallo Frank.

Wenn du Array-Elemente einzeln markierst und einfügst, dann stimmt das, dann wird aber auch für besagte elemente JEWEILS eine HMI-Variable angelegt.
Wie sieht es denn aus, wenn du das ARRAY herüberziehst? Dann sollte auf HMI-Seite EINE Variable mit dem Datentyp "Array of ..." angelegt werden.
 
Wobei ich gerade sehe, dass es um ein Array_of_String geht; da war/ist Siemens ja manchmal ein bisschen eigen, was die Behandlung angeht ...
 
Hallo Frank.

Wenn du Array-Elemente einzeln markierst und einfügst, dann stimmt das, dann wird aber auch für besagte elemente JEWEILS eine HMI-Variable angelegt.
Wie sieht es denn aus, wenn du das ARRAY herüberziehst? Dann sollte auf HMI-Seite EINE Variable mit dem Datentyp "Array of ..." angelegt werden.

OK ..


Wenn ich die Variable einzeln herüberziehe entsteht als Symbol: DB_Handling_Status_C11_PresetConfigRouting_Step{8}

Wenn ich die Variable einzeln herüberziehe entsteht als Symbol: DB_Handling_Status_C11_PresetConfigRouting_Step

und wird dann verwendet mit DB_Handling_Status_C11_PresetConfigRouting_Step[8]

Unterschied .... WinCC --> geschweifte Klammer {xx} anstatt wie in der PLC --> [xx]

Komplett herübergezogen dann AUCH in der Visu [xx] als Teil der einzelnen Arrayvariable

Ich hatte in der PLC ein Array von 1..20 daraus wird in der Visu 0..19

Also muss ich in der PLC 0..20 machen, dann ist es in der Visu auch 0.20 (wird beim PLC Übersetzen sofort aktualisiert.
Ist ok. Meine Schleifen laufen dennoch nur von 1..20 im For Next.

Danke für die Hilfe ... so geht es nun ohne Script
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wobei ich gerade sehe, dass es um ein Array_of_String geht; da war/ist Siemens ja manchmal ein bisschen eigen, was die Behandlung angeht ...

Auch wenn ich das Array als Ganzes (nun 21 Variable) in WinCC herüberziehe, es werden alle Variablen im Array gezählt unabhängig davon ob ich sie auf die Visu packe. also erhöht sieh der Zähler von XX69 auf XX90 direkt nach dem Einfügen und Software aktualisieren (HMI)
 
Variablen sparen ist doch Käse... rechne mal die Arbeitszeit von jetzt und später auf... vorallem, wenn mann deswegen einen verkorksten Programmierstil nutzt, blick dann irgendwann niemand mehr durch.

Der neue alte Trend, alles in der SPS zu machen und dann "automatisch" in der Visu zu haben, kostet halt Variablen... da sind schon einige, vor 20 Jahren und jetzt wieder reingefallen...
 
Zurück
Oben