WinCC flexible: Zeiger auf Strukturen/Multiinstanzen?

Markus

Administrator
Teammitglied
Beiträge
6.301
Reaktionspunkte
2.317
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

folgendes Beispiel:

Ich habe einen FB100 mit Instanzdatenbaustein DB100.

Im FB100 habe ich 10x den FB41 (PID-Regler) als Multiinstanz drin.


In der Visu (WinCC flexible RT) möchte ich eine Seite machen wo ich die Parameter der Regler einstellen kann.

Ich will aber nur eine Seite machen wenn das geht.

Wie sieht die sauberste Lösung aus das mit Bildbausteinen oder Mux-Variablen oder sonst irgendwie zu realisieren?

Ich habe quasi ein DropDown Feld mit einer Textliste der verschiedenen FB41 Instanzen, und ja nach Auswahl steht in der Variabel der Textliste ein Wert.


Früher bei Protool habe ich den Wert der Variablen als DB-Nr für die andren Variablen genommen (natürlich ohne Multiinstanz). oder bei einer Multiinstanz mit einem Skript alle Pointer gerechnet.

Aber ich bin mir sicher das dass bei WinCC flex schöner und vor allem Symbolisch geht...

Danke für eure Anregungen!
 
Hallo Markus,
ich habe das bei einem ähnlichen Problem ungefähr so gelößt, wie du es geschreiben hast.
In meinem Fall wähle ich über 2 Buttons (+ und -) und dahinterliegendem Script den gewünschten Datensatz an, den ich zum Editieren auf der Seite freigebe. In dem Script bekommt dann jeder Datensatz auch eine Überschrift (String) zugeordnet. ARRAY_OF_STRING geht ja leider nicht.

Soweit ich bisher herausgefunden habe (!?) hat WinCCFlex diesbezüglich keine erwähnenswerten Mehr-Fähigkeiten ...
 
Ich Handle das auch mit einem einzigen Fenster. Aber die Daten werden in der SPS entsprechend umkopiert, da noch eine "Datenbank" in einem Datenbaustein dahintersteht, die dann mehrerer Produkte zuläßt. Hat auch den Vorteil, daß Daten im Bild geändert werden können, aber erst mit einem extra "Save"-Button übernommen werden, also nicht gleich wirken, bzw. die aktiven Daten überpinseln.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich Handle das auch mit einem einzigen Fenster. Aber die Daten werden in der SPS entsprechend umkopiert, da noch eine "Datenbank" in einem Datenbaustein dahintersteht, die dann mehrerer Produkte zuläßt. Hat auch den Vorteil, daß Daten im Bild geändert werden können, aber erst mit einem extra "Save"-Button übernommen werden, also nicht gleich wirken, bzw. die aktiven Daten überpinseln.


so mache ich das bei rezepturen wenn ich sei sps-seitig verwalte, ist eben alles schön symbolisch angebunden...

naja dann werde ich wohl ein bissel scripten...
 
Hallo,

vorweg, die derzeitige 5-Sterne-Bewertung kommt von mir (nicht etwa von Markus). Ich finde das Thema sehr interessant.

In meinen Anwendungen nutze ich so etwas auch z.Bsp. zur HMI-Anbindung von Regelkreisen. Ich nehme hierfür einen DB mit n Datensätzen. Der erste Datensatz im DB ist der, dessen Variablen in WinCCFlexible verwendet werden (u.a. auch als Struktur). Jeder Regelkreis bekommt eine ID. Diese wird bei Bildanwahl oder auch per Tastendruck entsprechend gesetzt. Anhand dieser ID werden die Daten in der Steuerung gemultiplext. Der größte Datensatz hat bei mir eine Länge von 100Bytes mit entsprechend vielen Variablen. Dazu gehören Reglerparameter, Betriebsarten, Sollwerte, Istwerte, Heizkennlinien, eine Schaltuhr usw., alles was man bei einer Regelung brauchen kann.


Drei gewaltige Vorteile rechtfertigen den Aufwand:

  1. Variablen (es können hunderte sein) werden nur einmal im HMI angelegt und werden x mal genutzt.
  2. Auf der HMI-Seite spart man enorm viele Power-Tacks, was beim Multiplexen unter WinCCFlexible nicht der Fall ist.
  3. Fehlerfreies Hinzufügen eines Reglers ohne nenneswerten Aufwand.
@Markus,
was hast du mit Scripten vor?


Gruß, Onkel
 
@onkel dagobert
deine visu greift auf das erste element der struktur zu?

wenn sich die "ID" ändert werden alle daten von dem element das die id hat in das erste kopiert (einmalig mit flanke) ab dann wird nur noch von der ersten in die entsprechende mit der id geschrieben?

blockmove?


zu den skripten:
ich habe im HMI auch alle variablen nur einmal, die haben die db adresse fest drin, die wortadresse ist über eine HMI interne variable indirekt.

bei wertänderung oder seitenaufruf berechnet ein skript abhängig von der "ID" die zeiger im HMI...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Markus,

...wenn sich die "ID" ändert werden alle daten von dem element das die id hat in das erste kopiert (einmalig mit flanke) ab dann wird nur noch von der ersten in die entsprechende mit der id geschrieben?...
Im Prinzip ja, in der Wirklichkeit ist es noch etwas komplexer, es geht im FC noch einmal einen Weg über temporäre Lokaldaten. Ich schreibe später gerne mehr dazu, im Moment habe ich sehr wenig Zeit.

Nein, in einer FC mit Pointer über AR1/AR2. Bevor ich einen Pointer move, habe ich die Daten schon kopiert. Wenn ich's noch mal neu anfangen würde, wären es ANYs.

Code:
//*** 100 Byte vom Datenfeld in Lokaldaten kopieren
      LAR1  P##P
      L     25
LOO4: T     #TEMP_INT
      L     DBD [AR2,P#0.0]
      T     LD [AR1,P#0.0]
      +AR1  P#4.0
      +AR2  P#4.0
      L     #TEMP_INT
      LOOP  LOO4
ACTI: NOP   0                           //Bild ist am OP aktiv

...
zu den skripten:
ich habe im HMI auch alle variablen nur einmal, die haben die db adresse fest drin, die wortadresse ist über eine HMI interne variable indirekt.

bei wertänderung oder seitenaufruf berechnet ein skript abhängig von der "ID" die zeiger im HMI...
Mit Scripten kenne ich mich nur sehr wenig aus. Ich versuche, so etwas immer zu umgehen. Bedenke, dass du mit Scripten eng an das Bediengerät gebunden bist. Meine Variante habe ich ursprünglich mit OP7/OP17 verwendet. Damals war die Bildnummer die ID. Die Bausteine nutze ich noch heute unverändert unter WinCCFlexible.


Gruß, Onkel
 
Hallo,
das Problem, dass ich hier sehe (das hat mir auch schon mal jemand vorgeworfen) ist, dass du nicht auf die Änderung der Struktur automatisch reagieren kannst. Ansonsten finde ich persönlich die Variante mit dem Index-Pointer von der Visu und ggf. auch den Index-DB von der Visu nicht so schlecht. Bei meinen Applikationen gibts damit auch keinen Ärger ...
Man braucht auch nicht zwingend ein Script für den Pointer, Wert setzen ginge auch, ist halt nur nicht so elegant ...
Der Nachteil dieses Konzeptes ist m.E. nur das dann direkt auf die addressierten Variablen zugegriffen wird. Die von Ralle angesprochene "Save"-Funktion hat auch was für sich. Läßt sich natürlich über den Script-Umweg auch hier erreichen (ohne die SPS dafür mit ins Boot zu nehmen).
 
Hallo Markus,
Mit Scripten kenne ich mich nur sehr wenig aus. Ich versuche, so etwas immer zu umgehen. Bedenke, dass du mit Scripten eng an das Bediengerät gebunden bist. Meine Variante habe ich ursprünglich mit OP7/OP17 verwendet. Damals war die Bildnummer die ID. Die Bausteine nutze ich noch heute unverändert unter WinCCFlexible.


Gruß, Onkel

Wir verwenden auch die indirekte adressierung, aber wir verwenden zur adressberechnung lineare skallierung! diese gibt es auf jedem wincc flexible gerät!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich habe auch vor ein paar Jahren was ähnliches gehabt. Da hatte ich ein Testbild (unter anderen), wo ich 21 identische Module ansteuern wollte, mit Multiplexen im ProTool realisiert. Als die Anzahl Tags > 2800 wurde kriegte ich langsam Angst, obwohl alles noch funktionierte (irgendwo habe ich gelesen dass es ein 8000 Tag Lizenz für ProTool geben sollte, oder mindestens ursprunglich vorgesehen wurde) darauf hin habe ich das ganze umgebaut und das Multiplexen im Program gemacht. Damit konnte ich meine Tags auf ca. 700 reduzieren.
 
Hallo,

vorweg, die derzeitige 5-Sterne-Bewertung kommt von mir (nicht etwa von Markus). Ich finde das Thema sehr interessant.

In meinen Anwendungen nutze ich so etwas auch z.Bsp. zur HMI-Anbindung von Regelkreisen. Ich nehme hierfür einen DB mit n Datensätzen. Der erste Datensatz im DB ist der, dessen Variablen in WinCCFlexible verwendet werden (u.a. auch als Struktur). Jeder Regelkreis bekommt eine ID. Diese wird bei Bildanwahl oder auch per Tastendruck entsprechend gesetzt. Anhand dieser ID werden die Daten in der Steuerung gemultiplext. Der größte Datensatz hat bei mir eine Länge von 100Bytes mit entsprechend vielen Variablen. Dazu gehören Reglerparameter, Betriebsarten, Sollwerte, Istwerte, Heizkennlinien, eine Schaltuhr usw., alles was man bei einer Regelung brauchen kann.


Drei gewaltige Vorteile rechtfertigen den Aufwand:
  1. Variablen (es können hunderte sein) werden nur einmal im HMI angelegt und werden x mal genutzt.
  2. Auf der HMI-Seite spart man enorm viele Power-Tacks, was beim Multiplexen unter WinCCFlexible nicht der Fall ist.
  3. Fehlerfreies Hinzufügen eines Reglers ohne nenneswerten Aufwand.
@Markus,
was hast du mit Scripten vor?


Gruß, Onkel

Jep, so in etwas mach ich das auch. Ich mag auch der Visu irgendwie nicht zuviel Aufgaben übertragen.
 
also...

also wenn ich in wincc flexible adressmultiplexen mache, brauchen wir bei unseren projekten gerade 2 mal so viele variablen wie für das einzelne bild (eine für den wert, die zweite für die adresse!) wir hatten früher auch alles in der steuerung, brauchten aber selbst füre kleinanlagen eine 315 cpu! nun haben wird eine mehlwaage, eine tischwaage, einmal kleinkomp, wasserdossierung und einen sauerteig alles auf einer 313 cpu...
und für jede waage können 100 komp verwendet werden!
 
Zurück
Oben