TIA Wie kann ich mit WinCC einzelne Index oder Bereich eines Arrays abfragen?

LowLevelMahn

Level-1
Beiträge
766
Reaktionspunkte
90
Zuviel Werbung?
-> Hier kostenlos registrieren
ich habe eine 1511 mit einem symbolischen DB und zwei Arrays

Tuer_Matrix[1..28,1..28] of Bool

und

Tuer_Offen[1..100] of Bool

und wuerde gerne

1. Tuer_Matrix[24,13] - bei welcher Funktion kann ich mehrere Index angeben?
2. Tuer_Offen[3-26] also 3,4,5...26 lesen - geht das wirklich nur einzeln?

eine Idee wie ich das primär mit WinCC (oder auch OPC UA) Lösen kann
 
Jetzt habe ich mal mit einem HMI geschaut - da kann ich aber auch nur einzelne Indexe Abfragen

Scheinbar gibt es einfach keine Möglichkeit mit einem Aufruf einen Bereich aus einem Array zu lesen - also z.B. Index 1-30

Geht da was in WinCC - egal ob VBS, C-Script etc.?
der OPC-UA Scout erlaubt bei Multidimensionalen Arrays keine Indexangabe - die Tagauswahl wird nach der Eingabe einfach mit "null" ueberschrieben
in einem HMI-Projekt komme ich nur direkt auf einzelne Indexe
 
klar kann man das Problem auf x Arten Lösen - ich suche eben (ganz ohne Zeitdruck) nach einer "optimalen" Lösung

wenn ich z.B. Index [1-3000] Abfragen will werden das 3000 Requests die ziemlich lange brauchen - nicht so optimal :)

die 300/400 und 1200er können es auf Protokollebene d.h. man kann gezielt einen Bereich aus einem Array lesen, bei der 1500er weiss ich es nicht - wuerde mich aber sehr wundern wenn sie das nicht koennte
bisher habe aber leider keine Entsprechenden Funktionen in WinCC, OPC oder HMI gefunden und bin ein wenig verwirrt das nicht mal die Hardwarefähigkeiten voll genutzt/unterstützt werden
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Meinst du WinCC 7.2 oder TIA WinCC?

Bei WinCC 7.2 würde ich erstmal testen ob du überhaupt auf symbolische DBs zugreifen kannst. Bei der 1200er lässt sich mit WinCC 7.2 nämlich nur auf Absolut-DBs (S7-300/400 kompatibel) zugreifen. Sieht mir danach aus als ob im WinCC Treiber nur die Rack/Slot Angabe geändert wurde, und eine paar störende SZL-Anfragen entfernt wurden.

Mangels 1500 konnte ich mir noch nicht ansehen was WinCC treibt wenn es mit dieser kommuniziert. Darum kann ich nur schreiben was bei einer 1200er geht.

Bei einer 1200er kann man auch über symbolische Adressierung auf DBs auf eine Variable eines mehrdimensionalen Arrays zugreifen. Zumindest mit der Zugriffsmethode über LID/CRC/Index.
Auf Protokollebene wird ein mehrdimensionales Array wieder "flach" gemacht.
Beispiel:
boolArray [0..31, 0..31] of Bool

Zugriff auf Element boolArray[3, 10] erfolgt auf Protokollebene über Index 106, wegen 3*32+10 = 106.

Seit V12 ist der Zugriff über LID/CRC/Index aber schon wieder außer Mode gekommen.
 
Hallo zusammen,

ich möchte ein ähnliches Thema nochmal anschneiden, deswegen fand ich es hier passend und mache nicht unnötig einen neuen Thread auf.

Ich habe einen Bildbaustein in dem mittels Wegmesssystem eine Höhenkontrolle gemacht wird. In dem Bildbaustein gibt es Daten die in einem Array stehen. Problem ist, ich habe mehrere Positionen wo verschiedene Werte vorhanden sind und muss deshalb für jede Position den Bildbaustein einmal anlegen in der Visu.
Anbei ein Bild der Visu und des DB´s in dem die Arrays stehen.
In der Anbindung der Visu steht unten die Anbindung und in der Klammer ({1}). Diese 1 ist ja der Index und den würde ich gerne ändern, damit ich nicht für jede Position den Bildbaustein anlegen muss. Wenn man 2 Positionen hat oder so, dann wäre das im Prinzip kein Problem. Aber bei 20 Positionen müsste ich dann 20 mal den Bildbaustein anlegen und hab dann 10 Bilder oder mehr (je nach Panelgröße) verschwendet, was auch dann unübersichtlich wird.

Ich müsste jetzt nur mal Hilfe dabei haben, wie ich den Index im Panel ändern kann (evtl. über ein Skript)?

Vielen Dank für Eure Mithilfe

Gruß



DB_Kontrolle_auf.pngVisu_Schnittstelle.png
 
Zurück
Oben