easy-forum

Deutsch - Hardware => easyControl => Thema gestartet von: KressSwiss am Dezember 26, 2006, 10:00:04 Vormittag

Titel: Datenübertragung auf Speicherkarte
Beitrag von: KressSwiss am Dezember 26, 2006, 10:00:04 Vormittag
Hallo EasyControl Anwender
Ich nutze die Weihnachtsferien um mich in die Programmierung der EC einzuarbeiten. Dabei möchte ich folgende Idee umsetzen:
Der anstehende Wert am Analogeingang I7 soll jede Minune auf die Speicherkarte übertragen werden. Nach dieser Aufzeichnung möchte ich dann die Werte auf einem PC in eine EXCEL Datei übertragen.
Kann mir jemand einige Tipps geben wie man die Daten auf die Karte schreibt?
Gruss Hermann
Titel: Re: Datenübertragung auf Speicherkarte
Beitrag von: opajan am Dezember 27, 2006, 09:50:14 Vormittag
Hallo KressSwiss, das hier hab ich bei der ec-Anleitung gefunden:

Datenzugriff auf die Speicherkarte
Mit Funktionen wie „FileOpen“ oder „FileRead“ können Sie aus
dem Anwenderprogramm heraus auf die Dateien der Speicherkarte
zugreifen. Diese Funktionen sind in der Bibliothek
„EC_File.lib“ enthalten und in dem Handbuch „Funktionsbausteine“
(AWB2786-1456D) beschrieben.

Ich hab mit da auch schon mal ein paar Gedanken gemacht, allerdings möchte ich meine Meßwerte erst irgendwie im Flash speichern und dann den gesamten Datensatz aus dem Flash in einer Datei auf der Speicherkarte anhängen (zu viele Zyklen sind glaub nicht so gut für die Speicherkarte)
Gruß Jan
Titel: Re: Datenübertragung auf Speicherkarte
Beitrag von: KressSwiss am Dezember 27, 2006, 10:33:12 Vormittag
Danke Jan
Dann hab ich nun ja mal was zu tun. Falls sonst noch sich jemand damit befassen möchte, habe ich hier gleich den Link zum handbuch.
Gruss Hermann

ftp://ftp.moeller.net/DOCUMENTATION/AWB_MANUALS/h1456d.pdf
Titel: Re: Datenübertragung auf Speicherkarte
Beitrag von: DieterB am Dezember 27, 2006, 11:39:39 Vormittag
Hallo Herrmann, hallo Jan,
um den Einstieg zu erleichtern, habe hier ein einfaches Beispiel für die Anwendung der Bausteine geschrieben.
Ich hoffe das es auf Anhieb funktioniert. Da es in der Simulation nicht läuft und ich keine EC4 hier habe konnte ich es leider vorher nicht testen.


Jan hat prinzipiell recht, wenn er schreibt das zu häufiges Schreiben auf die Speicherkarte nicht gut ist.  Das relativiert sich aber, da die MMC Karten 1.000.000 Write-Zyklen überstehen sollen.   

Für die lokale Zwischenspeicherung der Daten in einem FLASH, würde ich den RETAIN-Daten Bereich verwenden.
Dafür braucht man nichts weiter zu tun, als seine Daten als VAR_RETAIN zu deklarieren. Die Variablen werden dann in einem speziellen Speichersegment abgelegt, welches beim Ausschalten der EC4 automatisch gesichert wird. Beim Einschalten wird der Bereich wieder restauriert und die Daten stehen wieder zur Verfügung und können zu einem definierten Zeitpunkt auf die Speicherkarte übertragen werden.

Viele Grüße
Dieter
Titel: Re: Datenübertragung auf Speicherkarte
Beitrag von: KressSwiss am Dezember 27, 2006, 15:42:53 Nachmittag
Hallo Dieter
Danke für das Beispiel. Ich denke, da hätte ich mir wohl die Zähne ausgebissen. Ich werde das morgen gleich laden und austesten.
Gruss Hermann
Titel: Re: Datenübertragung auf Speicherkarte
Beitrag von: KressSwiss am Dezember 28, 2006, 11:23:08 Vormittag
Hallo Dieter
Dein Programmbeispiel konnte ich runterladen. Die Eingänge schalten und es ändern sich auch Variablen. Nur, ob auf die Karte geschrieben wurde weiss ich nicht, da mein PC die Karte nicht liest. Am PC liegt es nicht, denn die Karte von meiner DigiCam, im selben Slot,  wird erkannt. ???  ???  ???

Das wundert mich aber nicht, denn alles was ich in die Hände nehme, funktioniert zuerst einmal nicht!  :-[.
Als nächstes, wen ich wieder neue Energie gefasst habe, werde ich versuchen in ein Programm von der EC auf die Karte und wieder zurück zu laden, um zu sehen ob die Karte in der Steuerung beschrieben werden kann.
Trotzden vielen Dank
Hermann   
Titel: Re: Datenübertragung auf Speicherkarte
Beitrag von: DieterB am Dezember 28, 2006, 12:41:59 Nachmittag
Hallo Herrmann,

zuerst solltest Du prüfen, ob die EC4 die Speicherkarte überhaupt erkennt. Dazu genügt ein Blick auf das Display.
Dort steht auf der linken Seite die Meldung "MC" wenn eine gesteckte Speicherkarte erkannt wurde.

Dann kannst Du versuchen die Karte zu formatieren (wenn nicht sonst was wichtiges drauf ist !). Hierzu Online gehen, und im PLC-Browser das Kommando "format" aufrufen -> die Karte wird formatiert und das wird mit "OK!"
quittiert. Beim formatieren wird folgende Verzeichnis-Struktur auf der MMC angelegt:

[ROOT]
      |
MOELLER --> EC4P-200 ---> BOOTPRJ
                                      |--> PROJECT

Deine Datei wird im Unterverzeichnis "PROJECT" abgelegt.

Jetzt das Programm starten, Datei öffnen und Daten schreiben. Hierbei kannst Du die Fehler-Ausgänge der Funktionsbausteine beobachten, es sollte immer "FILE_OK" erscheinen.

Um die Datei zu überprüfen, muss die MMC nicht unbedingt im PC gelesen werden. Es ist auch möglich,
sie von der Steuerung auf den PC hochzuladen. Das geht mit easySoft CoDeSys. Zuerst muss man sich einloggen, und dann im Menue "Online" den Menupunkt "Datei aus Steuerung laden" anwählen. Nach der Auswahl eines Dateipfads und der Angabe des Dateinamens wird die Datei hochgeladen.

Viele Grüße
Dieter

 
Titel: Re: Datenübertragung auf Speicherkarte
Beitrag von: KressSwiss am Dezember 28, 2006, 21:45:02 Nachmittag
Zitat
Hierzu Online gehen, und im PLC-Browser das Kommando "format" aufrufen -> die Karte wird formatiert

Hallo Dieter
Ich hab mir gedacht, dass die Karte formatiert werden muss. Gemäss Display wird die Karte erkannt. Ich kriege die Formatierung aber das nicht hin, weil ich das Kommando "Format" nirgens finden kann. Auch die "Hilfe" lässt mich da im Stich.
Gruss Hermann
Titel: Re: Datenübertragung auf Speicherkarte
Beitrag von: Knodelpa am Dezember 28, 2006, 22:09:56 Nachmittag
Hallo Hermann,
wenn du Online bist wechsele in die Lasche Resourcen. Dann starte den PLC Browser. Wenn du dort den Button mit den drei Punkten drückst erhälst du alle vorhandenen Befehle des PLC Browsers.

Gebe format ein und bestätige dies mit der Returntaste !!!

Gruß Paul
Titel: Re: Datenübertragung auf Speicherkarte
Beitrag von: DieterB am Dezember 28, 2006, 22:17:51 Nachmittag
Hallo Herrmann,

hier ist ein Screenshot der Dir weiterhelfen sollte.

PS: die Speicherkarte muss nicht unbedingt formatiert werden. Wenn Du eine unformatierte Karte steckst, wird sie durch das Betriebssystem automatisch formatiert.

Viele Grüße
Dieter
Titel: Re: Datenübertragung auf Speicherkarte
Beitrag von: KressSwiss am Dezember 28, 2006, 22:24:06 Nachmittag
Hallo Paul und Dieter
Danke für die Hinweise, es kam die Rückmeldung, "Format OK"  :D. Trotzdem, der PC erkennt die Karte im Slot nicht. Ich werde nun aber mal versuchen Daten vom IA auf die Karte zu schreiben und dann aus der Steuerung herauszuholen.
Ich werde dann Morgen mal berichten, was ich erreicht habe. Step by step  ;D
Schönen Abend noch und Gruss,
Hermann
Titel: Re: Datenübertragung auf Speicherkarte
Beitrag von: KressSwiss am Dezember 30, 2006, 11:27:12 Vormittag
Hallo liebe Kollegen
Also der Programmtransfer auf die Karte funktioniert, was bedeutet, dass eine Kommunikation möglich wäre. Die Karte wird nun auch erkannt, allerdinge nich auf dem Geschäfts-PC sondern auf meiner privaten Station. Eine CVS mit den Analogwertdaten ist aber nicht zu finden. Ich denke, ich muss mich hier "Step by Step" mit kleinen Schritten dahinter klemmen.
Gruss Hermann
Titel: Re: Datenübertragung auf Speicherkarte
Beitrag von: OK am Januar 26, 2007, 08:57:57 Vormittag
Hallo Hermann,
Bist du weiter gekommen? Ich versuche etwas ähnliches zumachen unr möchte ich am liebsten direkt auf einen Servereschreiben. Da es die EC4P noch nicht mit Ethernetschnittstelle gibt werde ich mich wohl erstmal mit dem Beschreiben einer Speicherkarte zufriedengeben.
BNlöd ist, dass man das Schreiben auf eine Speicherkarte nicht simulieren kann....
Gruss Oliver
Titel: Re: Datenübertragung auf Speicherkarte
Beitrag von: Knodelpa am Januar 26, 2007, 20:00:13 Nachmittag
Hallo Oliver,
leider gibt es die easy Control mit Ethernet noch nicht, aber selbst wenn die Ethernetvariante verfügbar ist kann man damit sicherlich nicht auf einen Server schreiben.  :'(

Die Ethernetschnittstelle dient zum programmieren und zum kommunizieren über den OPC Standard.

 :) ;) :D
Gruß Paul
Titel: Re: Datenübertragung auf Speicherkarte
Beitrag von: OK am Februar 01, 2007, 15:17:44 Nachmittag
Es würde jedoch die Möglichkeit bestehen die Dateien von einem Netzwerk aus zu lesen?
Titel: Re: Datenübertragung auf Speicherkarte
Beitrag von: DieterB am Februar 01, 2007, 17:53:46 Nachmittag
Hallo,

nein, diese Möglichkeit besteht nicht. (siehe Pauls antwort)
Titel: Re: Datenübertragung auf Speicherkarte
Beitrag von: OK am Februar 09, 2007, 15:07:18 Nachmittag
Hallo
Ich schreibe auf eine Datei. dieses FUnktioniert auch bzw. ich erhalte entsprechende Rückmeldungen.
Nun willich diese Datei schliessen. Hierbei gibt es Problme mit dem Handle.
Ich bekomme ide Fehlermeldung "File Invalid File Handle". Leider ist mein File Hanlde "0".
Ich habe zunächst vermutet, dass dieses das Problem ist. Und den Handle mit Werten beschrieben.
Diese werden jedoch mit 0 wieder überschrieben.
Und bekomme weiterhin diese Fehlermeldung.
Wenn ich das Programm beende und die Datei auslesen möchte bekomme ich die Mitteilung, dass ein Befehl nicht korrekt ausgeführt wurde. Entsprechend vermute ich hier ein Problem mit den Schliessen der Datei.
Kann mir hierbei jemand weiterhelfen?
Titel: Re: Datenübertragung auf Speicherkarte
Beitrag von: Knodelpa am Februar 09, 2007, 17:21:19 Nachmittag
Hallo OK,

beim Öffnen der Datei erhälst du ein Filehandle. Dies ist <> 0. Dieses Filehandle musst du dann anschließend für alle weiteren Zugriffe verwenden, auch für das FileClose !!!

 :) ;) :D
Gruß Paul
Titel: Re: Datenübertragung auf Speicherkarte
Beitrag von: OK am Februar 12, 2007, 11:22:15 Vormittag
Das ist mir bewusst. Dies verwende ich auch.
Habe mittlerweile ein weiteres Projekt erstellt mit welchem ich die Funktionen zum Schreiben und Lesen einer Datei teste.
Hirebei wird beim Lesen eine Datei geöffnet (Diese wurde zuvor auf das System übertragen) leider bekomme ich nun die Fehlermeldung, dass diese Datei nicht existiert, wenn ich jedoch so wie ich die Datei reingeschrieben habe ich sie auch herrauslese funktioniert es. Also muss die Datei auf der Steuerung sein.
Wenn ich nun eine neue Datei öffne um in diese zu schreiben, wird mir ein Handle geliefert.
Ich gebe den Strobe für jedes Bauteil manuell.
Hierbei erhalte ich dann ein kurzes Signal am Activ-Ausgang jedoch der immer "true" führende Finish-Ausgang ändert sich nicht.
Dieses kann man zum einen optisch sehen und zum anderen habe ich dieses durch einen Zähler (CTU) nachgewiesen.
Wenn ich nun in den Stop-Modus wechsle und möchte diese Datei öffnen, dann wird mir mitgeteilt, dass der letzte Onlinebefehl nicht ordnungsgemäs durchgeführt wurde.
Titel: Re: Datenübertragung auf Speicherkarte
Beitrag von: DieterB am Februar 12, 2007, 12:56:38 Nachmittag
Hallo OK,

gib mir doch mal das Programm, ich seh's mir dann mal an.
Welche Betriebssystem-Version hat deine EC4P ?

Gruß
Dieter
Titel: Re: Datenübertragung auf Speicherkarte
Beitrag von: OK am Februar 12, 2007, 13:25:17 Nachmittag
Hallo Dieter

Die Betriebsversion ist die :V02.01.
Mit dem Link kannst du dir die ZIP-Datei runterladen welche das Testprojekt enthält.

Gruß
Oliver
Titel: Re: Datenübertragung auf Speicherkarte
Beitrag von: DieterB am Februar 12, 2007, 15:28:15 Nachmittag
Hallo Oliver,

ich hab mir dein Programm angesehen und folgendes festgestellt:

1. Problem beim Schließen der Datei
Für beide Dateien wurde die gleiche Instanz des "FileClose" Bausteins verwendet. Soll z.B. die Datei "name" geschlossen werden, wird der FB für diese Datei mit Strobe = TRUE aufgerufen, hierbei wird die Datei auch korrekt geschlossen. Weiter unten im Zyklus wird der gleiche FB für die 2. Datei mit Strobe = FALSE aufgerufen, es passiert zunächst mal nichts. Die Strobe -Eingänge der Bausteine sind Flanken-gesteuert, d.h der Baustein wird nur bei einer steigenden Flanke am Strobe Eingang ausgeführt. Um ihn das nächste mal auszuführen, muss zuerst ein FALSE am Eingang erkant werden. Dieses False wurde aber bei dem Versuch die 2. Datei zu schliessen erkannt, da die gleiche FB-Instanz (File_Close_1) für beide Files verwendet wurde. Im nächsten Zyklus wird der Baustein für die Datei "name" wieder mit Strobe = TRUE aufgerufen, und da der Baustein wieder eine steigende Flanke erkennt, erneut ausgeführt. Da die Datei aber bereits beim ersten Aufruf geschlossen wurde, gibt's die Fehlermeldung "File Invalid File Handle".
Abhilfe: fur beide Dateien eigene Baustein-Instanzen anlegen, wie bei open, read und write auch.

2. ) Datei kann nicht geschrieben, bzw. gelesen werden.
Die Bausteine "FileRead" und "FileWrite" besitzen als Eingang den Parameter "dwSize". Hier muss angegeben werden, wie viele Bytes geschrieben, bzw. maximal gelesen werden sollen. In deinem Programm waren die Eingänge beim Schreiben und beim Lesen nicht beschaltet.
Die Bausteine besitzen ausserdem den Ausgang "dwWriteSize" bzw. "dwReadSize". Hier kann nach Beendigung der Aktion festgestellt werden, wieviele Bytes wirklich übertragen worden sind.

Abhilfe: Eingänge mit gewünschter Länge belegen

3.) Datei wird nach der Übertragung durch die Oberfläche nicht gefunden.
Dieser Effekt entsteht durch einen Fehler im Betriebssystem der EC4. Die Dateien sollen beim Transfer in einem bestimmten Unterverzeichnis auf der Speicherkarte abgelegt werden. Durch den Fehler werden sie aber irrtümlich im Root-Verzeichnis abgelegt. (Ist in der nächsten Version behoben !)

Abhilfe:
1. MMC in Kartenleser stecken und Datei dort in das Unterverzeichnis "PROJECT" kopieren. (Kompatibel mit nächster Version)

oder: Datei über Oberflächce auf Speicherkarte laden und im Dateinamen den Pfad "A:\Dateiname" angeben.

Das geänderte Testprojekt habe ich wieder angehängt.

Viele Grüße
Dieter

 
Titel: Re: Datenübertragung auf Speicherkarte
Beitrag von: OK am Februar 12, 2007, 15:55:13 Nachmittag
Danke für deine Mühe....
Das mit dem Baustein-Instanzen scheint wohl ein dummer "Copy and Paste" Fehelr zu sein.
Ich  nahm an, dass bei keiner Angabe der Länge der komtlette Inhalt der variablen auf welche die Adresse zeigt geschrieben wird. Dumme Annahme...
Ok, das mit dem Speicherort, hätte ich wohl auch irgendwie herrausbekommen.
Denke, dass ich einfach zu oft mir das angeschaut habe und so die Eigentlichen Fehlerquellen übersehen habe...
Danke ;)
Titel: Re: Datenübertragung auf Speicherkarte
Beitrag von: OK am Februar 13, 2007, 14:01:55 Nachmittag
Das Lesen aus einer Datei funktioniert nicht.
Die Länge welche angegeben werden kann, wird nicht eingehalten.
Es wird immer ein Zeichen eingelesen...
Kann mir jemand helfen?
Titel: Re: Datenübertragung auf Speicherkarte
Beitrag von: OK am Februar 13, 2007, 14:51:35 Nachmittag
Hier mal das Beispiel.
Mit der entsprechenden Datei.
Titel: Re: Datenübertragung auf Speicherkarte
Beitrag von: DieterB am Februar 13, 2007, 16:40:13 Nachmittag
Hallo Oliver,

wie kommst Du zu  der Erkenntniss, daß das Lesen nicht richtig funktioniert ?
Kannst Da das etwas näher erklären ?

Dieter
Titel: Re: Datenübertragung auf Speicherkarte
Beitrag von: OK am Februar 14, 2007, 08:28:47 Vormittag
Hallo Dieter
Ich erhalte in meinen String immer nur ein Zeichen. bzw. der Erste gelesene String ist etwas Seltsam.
wenn ich nun die Anzahl der zu lesenden Zeichen auf z.B. 6 setze sollte dieser String dann auch 6 zeichen beinhalten.
Was nicht der Fall ist.
Das unten dargestellte Bild zeigt ein entsprechendes beispiel. Wobei in der Datei folgendes stehet.
t#00h00m00s   t#13h00m00s   t#15h00m00s   t#17h30m00s   t#17h30m00s
Titel: Re: Datenübertragung auf Speicherkarte
Beitrag von: DieterB am Februar 14, 2007, 08:57:49 Vormittag
Hallo Oliver,

kannst Du nochmal das Programm einstellen, anhand der Screenshots ist das Problem schwer zu finden, da die nicht gut lesbar sind. Bitte auch die Datei dazugeben.

Dieter
Titel: Re: Datenübertragung auf Speicherkarte
Beitrag von: OK am Februar 14, 2007, 10:09:47 Vormittag
ja klar.
Hier die entsprechende Projektdatei sowie die zu lesende Datei
Titel: Re: Datenübertragung auf Speicherkarte
Beitrag von: DieterB am Februar 14, 2007, 10:55:30 Vormittag
Hallo Oliver,
das Problem liegt nicht beim Lesen der Datei, sondern in der Datei, die Du lesen möchtest, bzw im Datentyp der Variablen, in der die gelesenen Daten abgelegt werden. In deinem Fall ist das eine Variable mit dem Datentyp "STRING". Da aber die Datei keine reine ASCII-Datei ist, sondern auch Zeichen enthält, die in Strings nicht vorkommen gibt's die Probleme. (siehe Screenshot)

Du solltest den Datentyp der Variablen "value_read" von String in ARRAY[1..n] OF BYTE (n bestimmt die größe des Arrays) umändern. 

Dieter
Titel: Re: Datenübertragung auf Speicherkarte
Beitrag von: OK am Februar 14, 2007, 11:02:41 Vormittag
Hallo Dieter,

Es ist doch dann eher sinnvoller die Datei in eine reine ASCII-Datei zuwandeln (reine Textdatei)?
Wenn ich BYTE nutzen würde, käm ich nicht auf die gesammte Information!?
Danke für deine Information.

Oliver
Titel: Re: Datenübertragung auf Speicherkarte
Beitrag von: OK am Februar 14, 2007, 13:08:59 Nachmittag
Hallo Dieter,

vielen Dank. Habe jetzt die Dadteien zu einer TXT umgewandelt und diese mir dannin HEX nochmal angeschaut.
Funktioniert so auch mit Strings.

Gruß Oliver
Titel: Re: Datenübertragung auf Speicherkarte
Beitrag von: OK am Februar 20, 2007, 08:40:31 Vormittag
Erneutes Porblem mit Datenschraiben...
Sobald das Programm gestartet wird versuchen die hintereinandergeschalteten Bausteine zum Schraiben gleichzeitig auf die Datei zu schreiben...wie kann ich dieses am bessten umgehen...Bzw. kann ich irgendwie den Startzeitpunkt des Programmstarts feststellen? Und diesen dann weiter verwenden?
so, dass ich ein Dleay für das Schreiben auf die Daten setze?
Titel: Re: Datenübertragung auf Speicherkarte
Beitrag von: OK am Februar 20, 2007, 08:45:45 Vormittag
Also um es nochmal etwas besser zu beschreiben: Datei open öffnet die Datei...jedoch ist diese schon offen..somit ist der Handle auf 0....und alle weiteren einschließlich des Close befehls können nicht ausgeführt werden...
Somit steht das schreiben dauerhaft.
Titel: Re: Datenübertragung auf Speicherkarte
Beitrag von: DieterB am Februar 20, 2007, 11:38:04 Vormittag
Hallo Oliver,

beschreib doch mal etwas genauer was du eingentlich machen möchtest.  ???
Ich nehme an, das du den Ablauf, den wir bisher "von Hand" gesteuert haben automatisieren möchtest. d.h. File öffnen -> lesen oder schreiben -> File schliessen. Hierbei musst du die einzelnen Aktionen sauber gegeneinander verriegeln, zB. über einen Zustandsautomaten. Das scheint aber bisher noch nicht so zu klappen. Wie kann es sonst sein, das die Datei schon geöffnet ist wenn du sie mit FileOpen öffnest ?

Du kannst gerne dein Programm nochmal einstellen.

Gruß Dieter


Titel: Re: Datenübertragung auf Speicherkarte
Beitrag von: OK am Februar 20, 2007, 12:58:09 Nachmittag
Ja..
Also cih möchte bei Zustandsänderungen meiner Ausgänge die aktuellen Werte in einer Datei speichern.
Hierbei öffne ich eine Datei um dann mit ca. 20 Bausteinen in diese zu schreiben....um daraufhin die Datei zu schliessen..
Wenn nun währed ich die Datei offen habe diese einweiteres mal aktiviert wird, dann merkt der Baustein, dass die Datei schon offen ist, und gibt somit die Fehlermeldung zurück. Gleichzeitig wird hierbei das FileHandle auf 0 gesetzt. Dadurch können keine Aktionen bezüglich der Datei durchgeführt werden.
Ich müsste also auf jeden Fall mir irgendwie merken, dass die Datei geöffnet ist und ebenso dann wieder um sie zu schliessen.
Mein Programm ist nun mittlerweile so groß, dass ich es nicht anhängen kann---

Gruß Oliver
Titel: Re: Datenübertragung auf Speicherkarte
Beitrag von: OK am Februar 20, 2007, 13:14:01 Nachmittag
Wie kann ich dir denn das Programm zukommen lassen?