WinCC Steuerwert über WINCC RT in DB schreiben

s.t.a.r.s

Level-1
Beiträge
21
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Servus

Ich möchte von einer WINCC RT mit zwei E/A Felder, einen Steuerwert in einen DB der Steuerung übertragen.

Gibt man im ersten Feld "123" und im zweiten "W" ein, soll das "W" in den DB1.DBB122 übertragen werden.
Bei 555 und W > DB1.DBB544 usw
Und das ganzen von 1 bis 1500.
Ich möchte jetzt keine 1500 E/A Felder mit der passenden Variable machen, sondern z.B. nur 10.
Am besten über ein Script?

WINCC RT Prof 15.1

Danke & Grüße
 
Sind diese 1500 Variablen als einzelne Variablen im WinCC angelegt? Dann kannst du den Variablennamen entsprechend der Eingabe im ersten Feld in einem String zusammensetzen und diesen dann mit deinem Zeichen beschreiben.

Ich weiß nicht ob WinCC Prof. auch Adressmultiplexen wie z.B. bei WinCC Advanced kann, bei WinCC 6/7 ist das zumindest nicht möglich.
 
Sind diese 1500 Variablen als einzelne Variablen im WinCC angelegt? Dann kannst du den Variablennamen entsprechend der Eingabe im ersten Feld in einem String zusammensetzen und diesen dann mit deinem Zeichen beschreiben.

Ich weiß nicht ob WinCC Prof. auch Adressmultiplexen wie z.B. bei WinCC Advanced kann, bei WinCC 6/7 ist das zumindest nicht möglich.
Nein, sind noch nicht, kann ich mal testen.

Meinst so..
DB1.DBX0.0
I_ 1 DB1.DBB0
2 DB1.DBB1

Multiplexen gibt es in der Hilfe nicht für Prof.
Welche PLC hast Du? Deine PLC könnte die Berechnung und Prüfung der Adresse und die indirekte Adressierung nach der Eingabe machen. Dann brauchst Du nur 2 E/A-Felder und 2 bis 3 Variablen.

Harald
Eine CPU 417-4
 
Gibt man im ersten Feld "123" und im zweiten "W" ein, soll das "W" in den DB1.DBB122 übertragen werden.
Bei 555 und W > DB1.DBB544 usw
Und das ganzen von 1 bis 1500.
Zusätzlich noch z.B. eine Schaltfläche "Übernahme", die (nach der Eingabe des Index und des Zeichens) ein Trigger-Bit in der PLC auf 1 setzt.
Dann kannst Du in der CPU 417 programmieren (z.B. TIA SCL):
Code:
IF "DB_HMI".Werteingabe.Trigger THEN
    "DB_HMI".Werteingabe.Trigger := FALSE; //nur einmal übernehmen/schreiben
    
    #intTempIndex := "DB_HMI".Werteingabe.Index;
    IF #intTempIndex >= 1 AND #intTempIndex <= 1500 THEN
        //Variante 1: Adressierung des DBB: 1..1500 -> DBB0..DBB1499
        "DB1".DB(#intTempIndex - 1) := "DB_HMI".Werteingabe.Zeichen;
        
        //oder Variante 2: Adressierung eines Array[0..1499]
        "DB1".ArraySteuerwerte[#intTempIndex - 1] := "DB_HMI".Werteingabe.Zeichen;
    END_IF;
    
END_IF;

Harald
 
Zurück
Oben