Welcome to our new forum
All users of the legacy CODESYS Forums, please create a new account at account.codesys.com. But make sure to use the same E-Mail address as in the old Forum. Then your posts will be matched. Close

Probleme mit FTP-Verbidung

schmokie
2010-01-29
2010-02-16
  • schmokie - 2010-01-29

    Hallo zusammen.

    Im Rahmen einer studentischen Hilfstätigkeit soll ich die Fehler in einem bereits bestehenden SPS-Programm, welches auf einer Wago 750-841 mit Firmware revision (11), läuft beseitigen.

    Unter anderm werden dabei Messdaten abgespeichert um dann stündlich per FTP an einen Rechner übertragen zu werden. Dazu wird die WagoLibFTP.lib verwendet.

    Das eigentliche Problem ist, dass gelegentlich die FTP-Verbindung zu dem Rechner abricht und sich nicht wieder aufbauen lässt. Erst wenn ich die Anlage mittels Hauptschalter neustarte schafft es die SPS wieder die Verbindung herzustellen.

    Eine Idee war nun, einen automatischen Reset einzuprogrammieren, so das sich die SPS immer gegen Mitternacht (ein für uns unkriterscher Zeitraum) neustart um diesen Problem vorzubeugen. Zumindest erst einmal als Vorläufige Lösung.

    Deshalb meine Frage:

    Gibt es so einen "Reset-Befehl"? In den Foren und Dokumentationen konnte ich diesbezüglich nichts finden.

    Hatte vieleicht jemand schon mal so ein ähnliches Problem?

    Ich bin für jeden Vorschlag sehr dankbar.

    Gruß

    Tobias

     
  • Matze001 - 2010-01-29

    Schau mal in die Regestriekarte "Tasks", ich glaube dort schonmal etwas in der Richtung gelesen zu haben.

    MfG

    Marcel

     
  • Anonymous - 2010-01-31

    Originally created by: Andy :-)

    Hallo Schmockie,

    in den Target-Library's muß es eine WagoLibReset.lib geben. Die kannst Du

    eventl. hierfür verwenden.

    Aber...

    Ich verwende die FTP-Funktion schon min. 2 Jahre und es läuft auf dem 841 super. Meine Logwerte werden jede Minute in ein *.txt geschrieben und nach dem letzten Eintrag um 23:59 per FTP auf eine Speicherkarte im Netzwerk übertragen.

    Stolpersteine:

    • Eigene (Hintergrund)-Task für das Logging und versenden per FTP

    • Zykluszeit der Task nicht zu hoch (ich verwende 100ms)

    • Datei schreiben und versenden darf sich nicht in die quere kommen.

    mfg

    Andy

     
  • schmokie - 2010-02-12

    Hi.

    Tut mir leid das ich mich noch nicht gemeldet habe, aber die Prüfungen warn leider im weg

    Erst ein mal danke soweit für die Hilfe.

    @Matze001

    In den Task-Einstellungen habe ich leider nichts weiter gefunden.

    @Andy

    Hab mir das Programm bezüglich der Stolpersteine noch nicht weite anschauen können, hab aber schon mal Bibliothek gefunden.

    Jetzt schreiben die da drinn aber das dieser Baustein einen Firmware-Reset macht. Ich bin mir da jetzt etwas unsicher. Startet das Ding meine SPS einfach nur neu oder setzt es mir die die ganze SPS auf Werkseinstellungen zurück?

    Gruß Tobias[/list]

     
  • McNugget2000 - 2010-02-12

    Moin.

    Nur mal eben so...

    Du verwendest noch Firmware 11??

    Hat das einen Grund?

    Mittlerweile laufen die Controller auf Firmware 17.

    Ich würde doch mal als allererstes mal die neuste Version einspielen, um schon mal ein aktuelles System zu verwenden.

    Da sollten diverse Bugfixe in der Zwischenzeit drin sein, die solch unerklärliche/unliebsame Nebeneffekte ausbügeln (könnten).

    Gruss

    McNugget

     
  • Anonymous - 2010-02-13

    Originally created by: Andy :-)

    Hallo Schmokie,

    die Funktion reset den Controller (wie drücken des Hardware-Resettasters).

    McNugget's Hinweis ist auch gut - ich nutze aktuell FW 16...

    mfg

    Andy

     
  • raadya - 2010-02-15

    Hallo Smokie,

    verstehe ich es gut: du stellst am Anfang des Programms die Verbindung zwischen PLC und deinem Rechner her und diese Verbindung bleibt immer geöffnet?

    Es wäre sicher besser, die Verbindung nur für den Dateitransfer zu öffnen und dann wieder schliessen.

    Ich habe Anst, dass Reset von PLC nicht hilft. Das Problem liegt sicher im FTP-Server (der auf deinem Rechner läuft)

    Raadya

     
  • schmokie - 2010-02-16

    Hi.

    Also ich hab jetzt erst einmal ein Firmwareupdate auf 17 gemacht und noch mal das Programm soweit überarbeitet das auch wirklich keine Schreibzugriffe stattfinden wenn die SPS die Daten via FTP überträgt.

    Ob die Maßnahmen auch wirklich was gebracht haben wird sich zeigen.

    Ich hab aber nichts desto trotz den Reset mit implementiert, so das sich die SPS immer bei einem FTP-Fehler um Mitternacht neustartet.

    Mein Problem ist jetzt nur, das ich anscheinend bei den Systemereignissen (unter Taskkonfiguration) nen Denkfehler hab. Ich wolle da mit Hilfe des Erreignisses "after_reset" ein Programm aufrufen welches mir einen Zähler hochsetzt um so zu verhindert das sich die SPS-ständig neustartet wenn der Fehler weiterhin ansteht. Nur ruft der mir das Programm nach dem Neustart nicht auf.

    Kann mir vieleicht jemand sagen was ich falsch mache?

    Oder gibt es vieleicht irgendwo vieleicht ne Dokumentation in der ich nachlesen kann was die einzellnen Systemereignisse machen und was zu beachten ist?

    Danke

    Gruß

    Tobias

    @raadya

    Die FTP-Verbindung wird wirklich nur dann aufgebaut wenn die Datenübertragung stattfinden soll (in meinem Fall stündlich). Dann wird sie wieder geschlossen (sollte sie zumindest) [/list]

     
  • raadya - 2010-02-16

    Die Erignis "after reset" wird nach dem Befehl "neu starten" ausgeführt, direkt nach dem Restart = noch vor neuem Start deiner PLC.

    ich würde für den Zähler RetainData verwenden:

    VAR RETAIN

    Counter : DINT;

    bReset : BOOL;

    END_VAR

    die Variablen "Counter" und "bReset" werden seinen Wert auch nach dem Spannungsausfall halten.

    Die Ereignis "after reset" kannst verwenden, um die Variable "bReset" auf TRUE zu setzen.

    Dann kannst du nach dem Restart im Program ermitteln, dass die PLC neu gestartet wurde.

    P.S. Deine PLC muss aber die RetainData unterstützen...

     
  • Matze001 - 2010-02-16

    Man kann es auch so machen:

    Deklaration:

    Init: BOOL :=1;

    Programm

    Init zählt counter hoch...

    Init:=False;

    MfG

    Marcel

     

Log in to post a comment.