WinCC V6.2.2 User Archive

leo

Level-2
Beiträge
523
Reaktionspunkte
130
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
kann man auf die User Archive tatsächlich nur über C-Script zugreifen, oder geht das auch über VB-Script? Mein Problem: VB Kenntnisse HUI, C Kenntnisse Pfui.
Leo
 
Hey, du kannst das User Archive über ein im Bild eingefügtes User Archiv Control ansprechen. Weiß zwar nicht genau, aber dieses Control dürfte ja auch nix anderes sein als ein ActiveX- Control. Also müsste das auch rein über ein Script ansprechbar sein. Aber das erste wird wohl einfacher sein.

Gruß Spier
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ja, das geht, ich muß aber etliche Funktionen hinterlegen (Eintrag direkt aus Comboboxen etc.). Dazu muß man mit EAFeldern arbeiten, die dann auf das Userarchiv zugreifen.Das Handling der EAFelder klappt mit VB recht gut aber das Schreiben ins Archiv scheint nur mit "C" zu gehen.
 
Also unter C kann ich, neben den C-Funktionen, das Control direkt mit den Befehlen bearbeiten:

SetPropChar("NameBild.pdl","Control1","PressTBButton","New");//Neuer Eintrag

SetPropChar("NameBild.pdl","Control1","PressTBButton","Edit");//Eintrag editieren

SetPropChar("NameBild.pdl","Control1","PressTBButton","ReadVar");//in Archiv schreiben

SetPropChar("NameBild.pdl","Control1","PressTBButton","WriteVar");//aus Archiv lesen

Hab mal kurz probiert, also damit kannst du auf das Control zugreifen und dann über PressTBButton das Archiv bearbeiten (wobei ich aber nicht alle Befehle für PressTBButton kenne, nur oben die)

HTML:
Sub OnClick(ByVal Item) 
Dim objControl
Set objControl = ScreenItems("Control1") 'Also Control des User Archivs
objControl.PressTBButton = "*" 'Befehl wie Edit
End Sub
Es gibt aber noch die Möglichkeit, das User Archiv über Steuervariablen anzusprechen. Ein Beispiel findest du in der WinCC Hilfe unter "Steuervariablen , Beispiel".

Ich könnte dir auch ein paar Beispiele in C zusenden.
 
Hier mal ein paar C-Scripte zum schreiben vom
UA -> PLC
UA -> UA
PLC -> UA

Die sind aus irgendeinem Siemens-Beispielprojekt kopiert
 

Anhänge

  • scripts.zip
    5 KB · Aufrufe: 118
Hallo,
bin jetzt soweit das Userarchiv auszulesen, aber das Zurückschreiben will einfach nicht klappen. Ich habe mal das aufs nötigste abgespeckte Script angehängt. Weiß jemand was ich falsch mache?
Gruß, Leo

Code:
[FONT=Arial]Set DSN_Name = HMIRuntime.Tags("@DatasourceNameRT")[/FONT]
[FONT=Arial]Set RN = ScreenItems("RN") [/FONT]
[FONT=Arial]Set ER = ScreenItems("ER")[/FONT]
[FONT=Arial]Set EP = ScreenItems("EP")  [/FONT]
[FONT=Arial] [/FONT]
[FONT=Arial]DataSource = DSN_Name.Read[/FONT]
[FONT=Arial]strConnectionString = "Provider=MSDASQL.1;PersistSecurityInfo=False; Data Source=" &DataSource&";" [/FONT]
[FONT=Arial]strSQL = "UA#Mischungen" 'Auswahl der Tabelle[/FONT]
[FONT=Arial] [/FONT]
[FONT=Arial]Set objConnection = CreateObject("ADODB.Connection") 'Verbindung zur Datenbank[/FONT]
[FONT=Arial]            objConnection.ConnectionString = strConnectionString[/FONT]
[FONT=Arial]            objConnection.Open[/FONT]
[FONT=Arial] [/FONT]
[FONT=Arial]Set objCommand = CreateObject("ADODB.Command")[/FONT]
[FONT=Arial]            objCommand.CommandType = 2 [/FONT]
[FONT=Arial] [/FONT]
[FONT=Arial]With objCommand[/FONT]
[FONT=Arial]            .ActiveConnection = objConnection[/FONT]
[FONT=Arial]            .CommandText = strSQL 'Commandtext ist der Name der Tabelle[/FONT]
[FONT=Arial]End With[/FONT]
[FONT=Arial] [/FONT]
[FONT=Arial]'Verbindung herstellen[/FONT]
[FONT=Arial]Set oRs = objCommand.Execute [/FONT]
[FONT=Arial] [/FONT]
[FONT=Arial]'---------------------------------SUB Archiv Datensatz auslesen---------------------------------------[/FONT]
[FONT=Arial] [/FONT]
[FONT=Arial]RN.OutputValue = oRs.Fields(1).value[/FONT]
[FONT=Arial]ER.OutputValue = oRs.Fields(2).value[/FONT]
[FONT=Arial]EP.OutputValue = oRs.Fields(3).value[/FONT]
[FONT=Arial] [/FONT]
[FONT=Arial]'-------------------------------SUB ins Archiv Datensatz schreiben---------------------------------[/FONT]
[FONT=Arial] [/FONT]
[FONT=Arial]oRs.Fields(1).value = RN.OutputValue[/FONT]
[FONT=Arial]oRs.Fields(2).value = ER.OutputValue[/FONT]
[FONT=Arial]oRs.Fields(3).value = EP.OutputValue[/FONT]
[FONT=Arial]oRs.update[/FONT]
 
Zurück
Oben