Datenbaustein sichern

Loipe

Level-2
Beiträge
28
Reaktionspunkte
2
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich habe ein S7 mit WinCC flexible Runtime als Visualisierung. Jetzt möchte ich gerne von einem Datenbaustein die Aktualwerte sichern, und diese wenn nötig wieder in die S7 zurückspeichern.
Geht das irgendwie ?

Gruß Alex
 
Hallo,
klar geht das. Wenn du Runtime am Start hast mit einem VB-Script.

Parameter Laden :
Code:
[SIZE=2][COLOR=#0000ff]Const[/COLOR][/SIZE][SIZE=2] ForReading = 1, ForWriting = 2, ForAppending = 3[/SIZE]
[SIZE=2][COLOR=#0000ff]Dim[/COLOR][/SIZE][SIZE=2] fs, f , Z , Datei[/SIZE]
[SIZE=2][COLOR=#0000ff]Set[/COLOR][/SIZE][SIZE=2] fs = CreateObject("Scripting.FileSystemObject")[/SIZE]
[SIZE=2]Datei = [/SIZE][SIZE=2]"c:\Parameter.DAT"[/SIZE]
[SIZE=2][COLOR=#0000ff]Set[/COLOR][/SIZE][SIZE=2] f = fs.OpenTextFile(Datei , ForReading, [/SIZE][SIZE=2][COLOR=#0000ff]true[/COLOR][/SIZE][SIZE=2])[/SIZE]
[SIZE=2][COLOR=#ff0000]PtVar[/COLOR][/SIZE][SIZE=2].[/SIZE][SIZE=2][COLOR=#ff0000]"St.111_Sollwert Drehzahl"[/COLOR][/SIZE][SIZE=2] = f.ReadLine[/SIZE]
[SIZE=2][COLOR=#ff0000]PtVar[/COLOR][/SIZE][SIZE=2].[/SIZE][SIZE=2][COLOR=#ff0000]"St.213_Sollwert Drehzahl"[/COLOR][/SIZE][SIZE=2] = f.ReadLine[/SIZE]
[SIZE=2][COLOR=#ff0000]Vorgabe_max_Beh_IO[/COLOR][/SIZE][SIZE=2] = f.ReadLine[/SIZE]
[SIZE=2][COLOR=#ff0000]Vorgabe_max_Beh_nIO[/COLOR][/SIZE][SIZE=2] = f.ReadLine[/SIZE]
[SIZE=2][COLOR=#ff0000]PtVar[/COLOR][/SIZE][SIZE=2].[/SIZE][SIZE=2][COLOR=#ff0000]"St.211 Offset-Verschiebung 1 Höhen-Messung"[/COLOR][/SIZE][SIZE=2] = f.ReadLine[/SIZE]
[SIZE=2][COLOR=#ff0000]PtVar[/COLOR][/SIZE][SIZE=2].[/SIZE][SIZE=2][COLOR=#ff0000]"St.211 Offset-Verschiebung 2 Höhen-Messung"[/COLOR][/SIZE][SIZE=2] = f.ReadLine[/SIZE]
[SIZE=2][COLOR=#ff0000]PtVar[/COLOR][/SIZE][SIZE=2].[/SIZE][SIZE=2][COLOR=#ff0000]"St.211 Offset-Verschiebung Ref.-Punkt"[/COLOR][/SIZE][SIZE=2] = f.ReadLine[/SIZE]
[SIZE=2][COLOR=#ff0000]PtVar[/COLOR][/SIZE][SIZE=2].[/SIZE][SIZE=2][COLOR=#ff0000]"St.211 Höhe Eich-Teil"[/COLOR][/SIZE][SIZE=2] = f.ReadLine[/SIZE]
[SIZE=2]f.Close[/SIZE]
[SIZE=2][COLOR=#0000ff]Set[/COLOR][/SIZE][SIZE=2] Datei = [/SIZE][SIZE=2][COLOR=#0000ff]Nothing[/COLOR][/SIZE]
[SIZE=2][COLOR=#0000ff]Set[/COLOR][/SIZE][SIZE=2] fs = [/SIZE][SIZE=2][COLOR=#0000ff]Nothing[/COLOR][/SIZE]
[SIZE=2][COLOR=#0000ff]Set[/COLOR][/SIZE][SIZE=2] f = [/SIZE][SIZE=2][COLOR=#0000ff]Nothing[/COLOR][/SIZE]
[SIZE=2][COLOR=#0000ff]Set[/COLOR][/SIZE][SIZE=2] Z = [/SIZE][SIZE=2][COLOR=#0000ff]Nothing[/COLOR][/SIZE]

Parameter Speichern :
Code:
[SIZE=2][COLOR=#0000ff]Const[/COLOR][/SIZE][SIZE=2] ForReading = 1, ForWriting = 2, ForAppending = 3[/SIZE]
[SIZE=2][COLOR=#0000ff]Dim[/COLOR][/SIZE][SIZE=2] fs , f , Datei[/SIZE]
[SIZE=2][COLOR=#0000ff]Dim[/COLOR][/SIZE][SIZE=2] sD , sT[/SIZE]
[SIZE=2][COLOR=#0000ff]Set[/COLOR][/SIZE][SIZE=2] fs = CreateObject("Scripting.FileSystemObject")[/SIZE]
[SIZE=2]Datei = [/SIZE][SIZE=2][COLOR=#ff0000]Info_Verzeichnis_Parameter[/COLOR][/SIZE][SIZE=2] + "Parameter.DAT"[/SIZE]
[SIZE=2][COLOR=#0000ff]Set[/COLOR][/SIZE][SIZE=2] f = fs.OpenTextFile(Datei , ForWriting, [/SIZE][SIZE=2][COLOR=#0000ff]true[/COLOR][/SIZE][SIZE=2])[/SIZE]
[SIZE=2]f.WriteLine [/SIZE][SIZE=2][COLOR=#ff0000]PtVar[/COLOR][/SIZE][SIZE=2].[/SIZE][SIZE=2][COLOR=#ff0000]"St.111_Sollwert Drehzahl"[/COLOR][/SIZE]
[SIZE=2]f.WriteLine [/SIZE][SIZE=2][COLOR=#ff0000]PtVar[/COLOR][/SIZE][SIZE=2].[/SIZE][SIZE=2][COLOR=#ff0000]"St.213_Sollwert Drehzahl"[/COLOR][/SIZE]
[SIZE=2]f.WriteLine [/SIZE][SIZE=2][COLOR=#ff0000]Vorgabe_max_Beh_IO[/COLOR][/SIZE]
[SIZE=2]f.WriteLine [/SIZE][SIZE=2][COLOR=#ff0000]Vorgabe_max_Beh_nIO[/COLOR][/SIZE]
[SIZE=2]f.WriteLine [/SIZE][SIZE=2][COLOR=#ff0000]PtVar[/COLOR][/SIZE][SIZE=2].[/SIZE][SIZE=2][COLOR=#ff0000]"St.211 Offset-Verschiebung 1 Höhen-Messung"[/COLOR][/SIZE]
[SIZE=2]f.WriteLine [/SIZE][SIZE=2][COLOR=#ff0000]PtVar[/COLOR][/SIZE][SIZE=2].[/SIZE][SIZE=2][COLOR=#ff0000]"St.211 Offset-Verschiebung 2 Höhen-Messung"[/COLOR][/SIZE]
[SIZE=2]f.WriteLine [/SIZE][SIZE=2][COLOR=#ff0000]PtVar[/COLOR][/SIZE][SIZE=2].[/SIZE][SIZE=2][COLOR=#ff0000]"St.211 Offset-Verschiebung Ref.-Punkt"[/COLOR][/SIZE]
[SIZE=2]f.WriteLine [/SIZE][SIZE=2][COLOR=#ff0000]PtVar[/COLOR][/SIZE][SIZE=2].[/SIZE][SIZE=2][COLOR=#ff0000]"St.211 Höhe Eich-Teil"[/COLOR][/SIZE]
[SIZE=2]f.Close[/SIZE]
[SIZE=2][COLOR=#0000ff]Set[/COLOR][/SIZE][SIZE=2] Datei = [/SIZE][SIZE=2][COLOR=#0000ff]Nothing[/COLOR][/SIZE]
[SIZE=2][COLOR=#0000ff]Set[/COLOR][/SIZE][SIZE=2] fs = [/SIZE][SIZE=2][COLOR=#0000ff]Nothing[/COLOR][/SIZE]
[SIZE=2][COLOR=#0000ff]Set[/COLOR][/SIZE][SIZE=2] f = [/SIZE][SIZE=2][COLOR=#0000ff]Nothing[/COLOR][/SIZE]
[SIZE=2][COLOR=#0000ff]Set[/COLOR][/SIZE][SIZE=2] sD = [/SIZE][SIZE=2][COLOR=#0000ff]Nothing[/COLOR][/SIZE]
[SIZE=2][COLOR=#0000ff]Set[/COLOR][/SIZE][SIZE=2] sT = [/SIZE][SIZE=2][COLOR=#0000ff]Nothing[/COLOR][/SIZE]

Vielleicht kannst du damit etwas anfangen.
Das Beispiel läuft unter ProTool, müßte sich aber in Wcc-F im Großen und Ganzen übernehmen lassen ...
 
zusatzinfo.

du kannst einen zusammenhängenden bereich auch über einen index ansprechen.

z.b.
variable: my_var --- anzahl/länge(array): 100

im script:
for i = 0 to 99
fs.writeline my_var(i)
next
 
Das Beispiel funktioniert schon mal ganz gut.
Kann man jetzt auch einen Bereich eingeben, der im WinCC nicht als Variable deklariert ist. z.B.

f.writeline db60.dbw102

Gruß Alex
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Alex,
Nein - nur so wie Volker es geschrieben hat. In jedem Fall muss die Variable aber Protool bekannt sein.

Nachsatz:
Du kannst allerdings deinen DB als (z.B.) ARRAY of WORD einlesen und dieses dann +ber eine Schleife (s.o.) abspeichern ...
 
Zurück
Oben