Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Ergebnis 1 bis 3 von 3

Thema: Prüfe, ob Datei auf FTP Server vorhanden ist (Wago 750-849)

  1. #1
    Registriert seit
    13.12.2011
    Beiträge
    6
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo! Ich beschäftige mich seit geraumer Zeit mit der Messwerterfassung auf der Wago 750-849. Da der Speicherplatz auf der SPS nicht ausreicht, wollte ich nun in geeigneten Abständen meine Daten per FTP verschicken. Das gelingt mir auch soweit... Ich möchte nun eine Abfrage integrieren, die VOR dem versenden der Datei prüft, ob schon eine Datei XYZ auf dem Server vorhanden ist. In der Bibliothek "WagoLibFtp" habe ich die Funktion gefunden.
    Code:
        Action STATUS:
            This action returns the status of the entity defined by 'PATH'. The status information is returned in 'BUFFER', with a maximum length of 'BUFF_SIZE'.
            An error is returned if the entity in 'PATH' does not exist.
    Leider hab ich es nicht geschafft diese richtig zu implementieren. Ich habe mich am Beispielcode von Wago orientiert und versucht zusätzlich die "Action STATUS" einzubinden. In der Variable bError erscheint die Fehlermeldung "FTP_INVALID_PARM".
    Code:
    VAR_INPUT
        filename_source: STRING;                    (* Quelldatei *)
        filename_destination: STRING;                (* Zieldatei *)
        send: BOOL;                                    (* lokale Datei an Server verschicken (anschließend in 'file_write' löschen) *)
        ftpServer_ip_adr: ARRAY[1..4] OF BYTE;        (* ftp-Server-IP-Adresse *)
        username: STRING;                            (* Username für Login *)
        password: STRING;                            (* Passwort für Login *)
    END_VAR
    VAR_OUTPUT
        file_send: BOOL;                        (* Datei erfolgreich verschickt *)
        bError: FTP_ret;                        (* Fehlerprotokoll *)
    END_VAR
    VAR
        test:BOOL;
        buffer:DWORD;
    
    
    
    
        state: INT := 1;
        f1: FTP_CLIENT;                        (* zum Versenden der Datei *)
        i: INT;
    END_VAR
    Code:
    
    IF send THEN
        f1();                                            (* Instanz vom FB 'FTP_CLIENT *)
        CASE state OF
            1:                                            (* setzen der Ziel-IP-Adresse *)
                f1.EN := TRUE;
                FOR i:=1 TO 4 DO
                    f1.HOST_IP[i] := ftpServer_ip_adr[i];
                END_FOR
                f1.PORT_NUM := 21;                    (* Port für ftp = 21 *)
    
    
                f1.OPEN;                                (* stellt Verbindung zum Server her *)
                IF f1.ENO THEN
                    IF f1.ERROR=0 THEN
                        f1.EN := FALSE;
                        state := 10;
                    ELSE
                        bError := f1.ERROR;
                        state := 30;
                    END_IF
                END_IF
    
    
            10:                                            (* login, öffnet den angegebenen account auf dem Server *)
                f1.LOGIN(EN := TRUE, USERNAME := username, PASSWORD := password);
                IF f1.ENO THEN
                    IF f1.ERROR=0 THEN
                        f1.EN := FALSE;
    
    
                            state := 11;
    
    
    
    
                    ELSE
                        bError := f1.ERROR;
                        state := 30;
                    END_IF
                END_IF
    
    
            11:                                            (* datei prüfen *)
                f1.STATUS(EN := TRUE, PATH:='E:\Downloads\Modul1.csv');
                IF f1.ENO THEN
                    IF f1.ERROR=0 THEN
                        f1.EN := FALSE;
                        f1.BUFF_SIZE:=300;
                        buffer:=f1.BUFFER;
    
    
                        state := 30;
                    ELSE
                        bError := f1.ERROR;
                        state := 30;
                    END_IF
                END_IF
    
    
    
    
    
    
            20:                                            (*Nicht verwendet! datei-transfer von lpath nach rpath *)
                f1.PUT(EN := TRUE, rpath := filename_destination, lpath := filename_source);
                IF f1.ENO THEN
                    IF f1.ERROR=0 THEN
                        f1.EN := FALSE;
                        state := 30;
                    ELSE
                        bError := f1.ERROR;
                        state := 30;
                    END_IF
                END_IF
    
    
    
    
    
    
            30:                                            (* schließt die Verbindung zwischen Server und Client *)
                f1.CLOSE(EN := TRUE);
                IF f1.ENO THEN
                    IF f1.ERROR=0 THEN
                        f1.EN := FALSE;
                        state := 1;
    
    
                        file_send := TRUE;
    
    
                    ELSE
                        bError := f1.ERROR;
                    END_IF
                END_IF
            40:;                                        (*waiting for new command*)
        END_CASE
    ELSE                                                (*Im Fehlerfall wird die FTP-Verbindung zurückgesetz t*)
        f1.EN := FALSE;
        state := 1;
        file_send := FALSE;
    
    
    END_IF
    MFG Stephan
    Zitieren Zitieren Prüfe, ob Datei auf FTP Server vorhanden ist (Wago 750-849)  

  2. #2
    Registriert seit
    20.05.2007
    Beiträge
    301
    Danke
    38
    Erhielt 6 Danke für 6 Beiträge

    Standard

    Was ich mir gut vorstellen könnte, dass du deine "\" Backslashes escapen musst.
    Versuch mal den Pfad so zu schreiben:

    Code:
    f1.STATUS(EN := TRUE, PATH:='E:\\Downloads\\Modul1.csv');

  3. #3
    Tenobaal ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    13.12.2011
    Beiträge
    6
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Ich habs aufgegeben mit der STATUS Aktion. Hab alles an Parametern ausprobiert und läuft nicht.
    Nutze jetzt eine "unsaubere" Lösung mittels der RENAME Aktion. Falls keine Datei mit dem entsprechenden Namen gefunden wurde, gibt es eine spezielle Fehlermeldung.
    Die Abfrage der Fehlermeldung gibt daher Aufschluss darüber, ob die entsprechende Datei vorhanden ist.
    MFG Stephan

Ähnliche Themen

  1. B&R Kopieren einer Datei auf einen FileZilla FTP-Server
    Von gaiskasimir im Forum Sonstige Steuerungen
    Antworten: 21
    Letzter Beitrag: 20.03.2015, 19:14
  2. Antworten: 5
    Letzter Beitrag: 04.06.2014, 09:32
  3. Anfänger - Haussteuerung mit WAGO 750-849
    Von IceWeasel im Forum CODESYS und IEC61131
    Antworten: 3
    Letzter Beitrag: 20.02.2012, 23:24
  4. WAGO 750-849 mit CoDeSys
    Von boheck im Forum CODESYS und IEC61131
    Antworten: 3
    Letzter Beitrag: 07.03.2009, 20:36
  5. WAGO 750-841 Daten von einem HTTP/FTP-Server holen?
    Von Brain im Forum Sonstige Steuerungen
    Antworten: 5
    Letzter Beitrag: 26.01.2007, 20:55

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •