MP277 Protokoll auf USB & PW-Level HMI zu SPS

Springbock

Level-1
Beiträge
54
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen.

Das Forum konnte mir bereits in vielen Problemen behilflich sein, jedoch bei diesen zwei Fragen wurde ich nicht noch nicht fündig:

Ich würde gerne einen Chargentrennung auf einen USB-Stick protokolieren. Es sollte die Füllmenge dokumentiert werden, welche der Tankwagen gebracht hat. Zusätzlich sollte die BATCH-Nr., die Uhrzeit & das Datum zu der jeweiligen Füllmenge protokoliert werden.

Das Protokoll sollte ca. so Aussehen

Batch NR. Datum Uhrzeit Füllmenge
002 21.12.09 15:00 5000
001 20.12.09 14:00 4800


Diese Daten sollten immer nach dem Befüllen des Tanks auf dem USB-Stick gespeichert werden. Z.B. auf die Flanke der Vollmeldesonde oder nach dem beenden des Füllprogramms.
Am liebsten als CSV sonst als Text-Datei auf dem USB-Stick, der am Panel angeschlossen ist.

Ich habe das Forum nach ähnlichen Problemen durchsucht, konnte jedoch nichts Passendes finden. Nun meine Frage. Geht das überhaupt? Wenn ja, wie mache ich das am besten.


Meine zweite Frage ist:
Ich würde gerne das PW-Level, das gerade auf dem HMI aktiv ist, der SPS übergeben. Z.B. Administrator PW-Level 9. Gibt es eine Variable „Passwortlevel“ und wie übergebe ich deren Inhalt der SPS?

System Info:

CPU Speed 7(VIPA), MP277 10“ Touch, WinCC Flex 2008 SP1, USB-Stick am HMI
 
Das MP277 ist scriptfähig.
Damit kannst du CSV-Dateien erstellen und auch auf einen Stick kopieren.
Zu beachten ist eigentlich "nur", dass das MP unter Windows CE läuft und somit die Script-Befehle zum File-Zugriff andere sind als bei der PC-Runtime.
Hier im Forum findest du Beispiele dazu.
Schau mal hier:
http://www.sps-forum.de/showthread.php?t=3028

Gruß
Dieter
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Vielen Dank für den Link, Ich muss leider sagen, kenne mich wenig bis überhaupt nicht aus in VB, könntest du mir vielleicht noch diese Fragen beantworten?

Dim f,fs,datei,datum,laenge

Set f= CreateObject("filectl.file")
Set fs = CreateObject("filectl.filesystem")

'abfrage ob ein verzeichnis existiert
'If fs.dir("storage card2\daten") = "" Then fs.mkdir("storage card2\daten")

datei="storage card2\Log_Hydrowatt.csv"
datum="20"&Right(Date,2)&"."&Mid(Date,4,2)&"."&Left(Date,2)

If fs.dir(datei) = "" Then
f.open datei, 2 <= Was bedeuetet diese "2"
f.LinePrint "Statistik Hydrowatt HD-Pumpe"
f.LinePrint "Datum (JJJJ.MM.TT);"&"Uhrzeit;"&"Schaltspiele;"&"Betriebsstunden [h];"&"Pumpe auf Druck [h];"&"Bollfilter"
f.LinePrint "Datum;"&"Zeit;"&"Schaltsp.;"&"Betr.Std[h];"&"P.auf Druck[h];"&"Bollfilter"
f.Close
End If

f.open datei, 8 <= Was bedeuetet diese "8"
f.LinePrint Datum&";"&Time&";"&Schaltspiele_Hydrowatt_täglich&";"& Betriebsstunden_hydrowatt_heute&";"& Betriebsstunden_hydrowatt_druck_heute&";"&Schaltspiele_Bollfilter_täglich

f.Close

Wie ist der Intervall dieser Aufzeichnung definiert, erkenne dies anhand dieses Codes nicht.

Mersi
 
Zuviel Werbung?
-> Hier kostenlos registrieren
muss zugeben, habe etwas mühe mit dem Skript, habe mich bis jetzt einfach zu wenig mit VB auseinander gesetzt.

Deshalb bin ich mal auf die Siemens-Hompage und habe dieses Beispiel heruntergeladen:

Das Skript rufe ich per Button auf. Anzeigen möchte 3x mal die Variable DB100 DBW100, habe sie auch so benannt im WinCC Flex

Hier nochmals einige Fragen, vielleicht könnt ihr mir nochmals helfen.

Beispiel Siemens das ich ein wenig angepasst habe (Anstatt Memory-Card habe ich den USB Stich als Ablageort gewählt)

Dim fs, f, FName, Dataset, Header, Storage_Path, strName, strTemp, arr, strDir

' Ablagepfad festlegen
' Define Storage path
Storage_Path = "\Storage Card USB\" <= Habe ich den Pfad USB-Stick richtig definiert, weil wenn ich den Button drücke, habe ich das Gefühl USB-Stick wird nicht angesprochen (USB mit LED, sollte doch zumindest blinken wenn er zugreifft?)

' Archivierungspfad (Eingangsparameter) und Dateiname zusammensetzen -> Archiv_01_d_m_yyyy

' Combine archivepath (input parameter) and filename -> Archiv_01_d_m_yyyy
FName = Storage_Path & "\Archiv_" & CStr(DatePart("d",Date)) & "_" & CStr(DatePart("m",Date)) & "_" & CStr(DatePart("yyyy",Date)) & ".csv"<= Dieser Archivierungspfad sollte ja generiert werden, habe ich so 1:1 von Siemens, geschieht jedoch nicht, denke aber das Problem liegt bei der Frage 1 von mir

der Rest des Skripts muss ich ja noch nicht beachten, da bereits der Zugriff auf den Stick und generierung des Ablagepfad nicht korrekt ausgeführt werden.
' Tabellenkopf zusammenstellen
' Create table header
Header = "Storage time;DB 100 DBW_100;DB 100 DBW_100;DB 100 DBW_100" & Chr(10)

' FileSystemObject erstellen
' Create FileSystemObject
Set fs = CreateObject("FileCtl.FileSystem")

' Prüfen ob eine MMC Karte vorhanden ist
' Checking if a MMC Card available
strDir = fs.dir ("\Storage Card USB")
If strDir = "" Then 'Ablagepfad nicht vorhanden / directory not exists, card not available
Call ShowSystemAlarm ("Keine Speicherkarte vorhanden / No Storage-Card available")
Else

'Prüfen ob Ablagepfad vorhanden, wenn nicht -> erzeugen.
'Checks storage path availably, if not -> create
Script_Storage_Path Storage_Path ' Übergabe des Ablagepfades aus dem Script "Script_Storage_Path" / Handing over of the storage path from the script "Script_Storage_Path"

' FileObject erstellen
' Create FileObject
Set f = CreateObject("FileCtl.File")
' Datei öffnen bzw. erstellen, wenn sie noch nicht existiert
' Open File or create file if it does not exist
f.open FName, 8

' Wenn Datei 0 Byte groß, dann ist sie neu
' If file is 0 byte the file is new
If fs.FileLen(FName) = 0 Then
f.lineprint(Header)
' =0 => Tabellenkopf muss eingefügt werden
' =0 => Table header must be inserted
End If

' Werte der Variablen in die Archivdatei schreiben (Tag_x)
' Write values of variables in archive file (Tag_x)
Dataset = CStr(Now) & ";" & CStr(SmartTags("DB 100 DBW_100")) & ";" & CStr(SmartTags("DB 100 DBW_100")) & ";" & CStr(SmartTags("DB 100 DBW_100")) 'Create the Dataset'

f.LinePrint(Dataset) 'Write the Dataset in File'
f.Close 'Datei wieder schließen / Close File'
End If
 
Zuletzt bearbeitet:
Laut WinFlex hilfe sollte eine Datei angabe so sein
Wenn Sie als Ablageort eine Speicherkarte verwenden, dann geben Sie den Ablageort wie folgt an: "\StorageCard\<Dateiname>".

Dann habe ich mal einen Stick bei mir ins Panel gesteckt und mal geschaut
wie die Bezeichnung aus CE aussieht, da steht dann

vlt. musst du das USB anhängen

wie du es vor deiner Änderung noch nicht geschrieben hattest :rolleyes:
 
mir ist nicht ganz klar was du meinst

vorlage siemens:

' Prüfen ob eine MMC Karte vorhanden ist
' Checking if a MMC Card available
strDir = fs.dir ("\Storage Card MMC")

Nun habe ich das MMC einfach durch USB ersetzt. (Pfad noch kontroliert bei meldearchiv = \Storage Card USB\)

aber funktioniert einfach nicht.
 
war der stick beim startet des panels gesteckt?
wenn nein, probier das mal. hatte auch erst probleme das der stick nicht erkannt wurde wenn er nachträglich gesteckt wurde.
dies wird aber komischerweise behoben wenn man dann einmal unter win ce in der eingabeaufforderung auf den stick zugreift
 
Zuviel Werbung?
-> Hier kostenlos registrieren
vielleicht solltest du dich vom Siemens Beispiel trennen.
Versuche doch erstmal mit einer Systemfunktion Daten auf deinen Stick
zu schreiben. Als Beispiel, erstelle ein Rezept und Exportiere dieses mit
der Systemfunktion "Exportiere Datensatz" auf deinen Speicherstick.

Wenn das Funktioniert wissen wir erstmal das der Speicherstick
mit dem Panel arbeitet. Dann vlt. mit Beispiel von Volker aus dem
FAQ einfach erstmal einen Text in eine Datei schreiben.
 
Zurück
Oben