WinCC - durch Array blättern

xXyYzZ

Level-1
Beiträge
67
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Guten Morgen,

ich hab ein Array [1..XX] mit je 10 Werten im DB und möchte dieses gerne in WinCC ausgeben und zwischen den Werten blättern können. Wie stelle ich dies am geschicktesten an? Ich könnte XX Seiten erstellen und mir einen hin- und her Copy-Pasten, aber das muss doch auch einfacher/bequemer gehen, oder nicht?

Danke für Ansätze
 
du könntest ein ea-feld anlegen welches die startadresse vorgibt. dann kopierst du ab dort eine gewissen anzahl in einen arbeits-db den du auf den hmi anzeigst.

eine andere möglichkeit wäre multiplexen. schau dazu mal in die hilfe von wcc
 
Zuviel Werbung?
-> Hier kostenlos registrieren
So umständlich es mit CoDeSys manchmal ist - Bilder exportieren, Suchen und Ersetzen, importieren fehlt mir :D
Werd mir den Multiplexer mal anschauen. Danke!

EDIT: Ok, Prinzip verstanden und ich probiere gerade auch schon, aber:
Code:
Array[1..10]

 [TABLE="width: 240"]
[TR]
[TD="width: 80"]0.0[/TD]
[TD="width: 80"]Value_1[/TD]
[TD="width: 80"]BOOL[/TD]
[/TR]
[TR]
[TD]2.0[/TD]
[TD]Value_2[/TD]
[TD]REAL[/TD]
[/TR]
[TR]
[TD]6.0[/TD]
[TD]Value_3[/TD]
[TD]REAL[/TD]
[/TR]
[TR]
[TD]10.0[/TD]
[TD]Value_4[/TD]
[TD]INT[/TD]
[/TR]
[TR]
[TD]12.0[/TD]
[TD]Value_5[/TD]
[TD]REAL[/TD]
[/TR]
[TR]
[TD]16.0
[/TD]
[TD]Value_6[/TD]
[TD]REAL[/TD]
[/TR]
[TR]
[TD]20.0[/TD]
[TD]Value_7[/TD]
[TD]BOOL[/TD]
[/TR]
[TR]
[TD="class: xl63"]20.1
[/TD]
[TD]Value_8[/TD]
[TD]BOOL[/TD]
[/TR]
[TR]
[TD]22.0[/TD]
[TD]Value_9[/TD]
[TD]INT[/TD]
[/TR]
[TR]
[TD]24.0[/TD]
[TD]Value_10[/TD]
[TD]DATE_AND_TIME[/TD]
[/TR]
[TR]
[TD]32.0[/TD]
[TD]Value_11[/TD]
[TD]TIME[/TD]
[/TR]
[/TABLE]

Wenn ich eine Variable nehme um zu multiplexen, dann brauche ich elf Variablen um die Adressen innerhalb des DB/des Arrays erreichen zu können, oder?
 
Zuletzt bearbeitet:
Ok, habe den Multiplexer soweit verstanden - glaube ich.
Optimal funktioniert der Multiplexer wenn ich Daten in verschiedenen DBs habe - dann brauche ich nur eine Variable. Bei mir liegt alles in einem DB, bräuchte dann ein paar mehr Variablen, wird mir zu umständlich. Spricht was dagegen mir über Schaltflächen einen Zähler zu erhöhen und mittels dann im DB rumzukopieren?

Kann ich den FETT markierten Part dynamisch machen?

Code:
      TAR1  #AR1_TEMP
      AUF   "BRAKE_VALUES_DATA"
      L     364
      L     28
      -I    
      T     #ZAEHLER
STA:  NOP   0
      L     #ZAEHLER
      SLD   3
      LAR1  
      L     DBB [AR1,P#0.0]
      [B]T     DBB [AR1,P#28.0][/B]
      L     #ZAEHLER
      L     1
      -I    
      T     #ZAEHLER
      L     1
      +I    
      L     16
      <=I   
      SPB   END
      SPA   STA
END:  NOP   0
      LAR1  #AR1_TEMP

Also in etwa so:
Code:
Wenn MeineIndexVariable = 28 dann [B]T     DBB [AR1,P#28.0][/B]
Wenn MeineIndexVariable = 56 dann [B]T     DBB [AR1,P#56.0][/B]

Danke euch!
 
Ich gehe mal davon aus dass du WinCC flexible und nicht WinCC meinst, oder?
Bei WinCCflebile gibt es noch das Adressmultiplexen. Dabei legst du eine Variable an. Z.B. bei einer DB-Variable im Feld für das Datenbyte/wort/doppelword kannst du eine weitere Variable (auch interne) einsetzen.
Wenn du z.B. ein Integer-Array hast, kannst du durch erhöhen/erniedrigen der Variable um 2 durch das Array navigieren. Du solltest natürlich an irgendeiner Stelle die Grenzen überprüfen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich meine WinCC flexible, sorry!

Hab leider kein "sauberes" Array, es ist eines mit Mischwerten. Da könnte ich natürlich auch wieder mit mehreren Variablen arbeiten.

Noch mal zum besseren Verständnis
Array[1...10]
0.0
Value_1BOOL
2.0Value_2REAL
6.0Value_3REAL
10.0Value_4INT
12.0Value_5REAL
16.0Value_6REAL
20.0Value_7BOOL
20.1Value_8BOOL
22.0Value_9INT
24.0Value_10DATE_AND_TIME
32.0Value_11TIME

Ich möchte diese Werte als reine Ausgabewerte in meiner Visu darstellen (alle auf einem Bild) und dann mit Schaltflächen durch das Array blättern. Wenn ich das mit dem Adressmultiplexen richtig verstanden habe heißt das:

Eine Variable für den "Index". Aus diesem Index mache ich mir dann 11 Variablen für die Adresse innerhalb des Bausteines (INDEX * ARRAYLÄNGE + ADRESSE_VALUE_1) etc. Ist das ein guter Ansatz? Mir fliegen gerade soviele Ideen im Kopf rum :D
 
Die Fragestellung ist auch gelöst, lag zum einen am Verständnis, zum Anderen daran, dass ich das Skript ungewollt jeden Zyklus aufgerufen habe.
 
Zurück
Oben