Was ist hier falsch? (WinCC, Skript für Archivexport)

Holcapone

Level-1
Beiträge
22
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
das ist mein kurzes Skript:

#include "apdefap.h"
long _main(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)
{
UAHARCHIVE hArchive;
BOOL janein;
janein = uaArchiveExport(hArchive,"C:\Program Files\Siemens\Step7\S7Proj\WinCC_3\wincproj\OS(1)\Export\LED-Anzeige\Control1.csv",0,0);
}
return (0);

Und als Fehlermeldung bekomme ich:
line8: error (0040): <type> expected before 'return'

Will eigentlich nur das Archiv in die *.csv Datei exportieren, ohne auf den Knopf drücken zu müssen. Habe schon im Forum recherchiert und weiß, dass das ein altes Thema ist. Hat jemand trotzdem eine Lösung für mich?

Grüße...
 
Unter C ist der Backslash in einem String ein Steuerzeichen.
Wenn du das Zeichen verwenden willst musst du es 'escapen', also einen Backslash davorschreiben. Also:

C:\\Program Files\\Siemens\\Step7....
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Habe es gerade probiert, daran liegt es nicht.
Der Dateipfad ist ja auch in den Anführungszeichen geschrieben.
Die Fehlermeldung bezieht sich auf das return, da weiß ich aber nicht weiter.
 
Uups... jetzt geht es ohne Fehlermeldung.
Muss ich eigentlich beim ersten Parameter nicht mein Archiv in irgendeiner Form angeben? ("hArchive")
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Also nach viel belesen, habe ich folgendes Skript geschrieben:

#include "apdefap.h"
void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)
{
UAHCONNECT hConnect;
UAHARCHIVE hArchive;
uaConnect(&hConnect);
uaQueryArchiveByName(hConnect, "Einzelwerte", &hArchive);
uaArchiveOpen(hArchive);
uaArchiveExport(hArchive,"C:\\Export\\Control2.csv",0,0);
uaArchiveClose(hArchive);
uaReleaseArchive(hArchive);
uaDisconnect(hConnect);
}

Also das Archiv Einzelwerte soll unter den Dateinamen Control2.csv im Ordner C:\Export abgelegt werden.
Das habe ich als Aktion auf einen Taster projektiert, der also auf Tastendruck das Archiv exportieren soll.
Das klappt aber nicht! Wenn ich den Knopf drücke, passiert nix.
Woran könnte das liegen?
 
Zum UserArchiv in eine csv zu exportieren benutze ich folgendes Script.
In dem Script musst du
in Zeile 30 den Archivnamen anpassen
in Zeile 64 den Pfad anpassen
und überall wo UAExport_VAM5() steht, sollte der Name deines Scripts stehen.
 

Anhänge

  • export.txt
    3,3 KB · Aufrufe: 65
Zuletzt bearbeitet:
Ich habe es jetzt mal mit deinem Skript probiert, hat aber noch nichts funktioniert. Es scheint mit sehr stark an die Siemensvorlage angelehnt zu sein. :)

Wie realisiere ich eigentlich die Fehlerausgabe, die durch die "print"-Befehle erzeugt wird? Mit einem EA- Feld? Oder gibt es irgendwo eine Konsole?

Dann könnte ich sehen, wo der Hase im Pfeffer liegt.

Danke.
 
Du kannst über Smart Objects -> Application Windows ->
Global Script -> GSC Diagnostic ein diagnosefenster einfügen
 
Momentan sieht es noch so aus:

#E201: UAExport_VAM5() - uaQueryArchiveByName failed! error=0
#E302: UAExport_VAM5() - uaArchiveSetSort failed! error=1002
#E401: UAExport_VAM5() - uaArchiveOpen failed! error=1002
#E501: UAExport_VAM5() - uaArchiveExport failed! error=54589576
#E801: UAExport_VAM5() - uaArchiveClose failed! error=1002
#E802: UAExport_VAM5() - uaReleaseArchive failed! error=1002
#E803: UAExport_VAM5() - uaDisconnect failed! error=1002

Sollte im gleichen Fenster nicht auf das Archiv zugegriffen werden? Z. B. mit TrendControl.
 
Ich habe genau den Namen eingegeben, der auch im TagLogging steht.

Die Codezeile:
bOK = uaQueryArchiveByName(hConnect, "Einzelwerte", &hArchive);

Der Archivname im TagLogging:
Einzelwerte Prozesswertarchiv

Könnte es vielleicht daran liegen,
dass ich in den ersten Zeile des Quelltextes folgendes NICHT stehen habe: "int Einzelwerte(void)" ?

Sieht so aus bei mir:

#include "apdefap.h"
void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)
{
#pragma code("kernel32.dll")
VOID GetLocalTime(LPSYSTEMTIME lpSystemTime);
#pragma code()

UAHCONNECT hConnect;
...
...

Es lässt sich ja so nichts dazuschreiben, bis zum "{".



Aussehemüsste es aber laut Vorgabe so:

#include "apdefap.h"
int Einzelwerte(void)
{
#pragma code("kernel32.dll")
VOID GetLocalTime(LPSYSTEMTIME lpSystemTime);
#pragma code()

UAHCONNECT hConnect;
...
...
 
Zuletzt bearbeitet:
So, habe mich jetzt mit UA beschäftigt: Angelegt und bissl rumgespielt.
Exportieren hebe ich mir noch auf, denn ich versuche noch das automatische Variablenlesen hinzubekommen.
Hatte dazu schon ein Skript für die alte OCX geschrieben, dass immer alle 2 Sek. die Werte liest. In der RT gab es dafür aber einen Fehler: fehlercode 0x80040005
Mein Code:

SetPropChar("Tabellen.pdl","Control3","PressTBButton", "Last");
SetPropChar("Tabellen.pdl","Control3","PressTBButton", "Next");
SetPropChar("Tabellen.pdl","Control3","PressTBButton","ReadVar");


Was ist denn eigentlich der moderne ua- Befehl für Variablen lesen?

15.12.09: Exportieren geht jetzt von allein, mittel Global Skript. Es fehlt jetzt nur noch das selbsständige einlesen der Werte, habe dazu aber einen neuen Fred aufgemacht.
 
Zuletzt bearbeitet:
Zurück
Oben