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

Ergebnis 1 bis 3 von 3

Thema: TwinCAT 2 Dateien innerhalb von Funktionen beschreiben?

  1. #1
    Registriert seit
    22.08.2014
    Beiträge
    4
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,
    Wir schreiben momentan ein Program in TwinCAT 2 wobei Werte aus einem Array in eine Datei geschrieben werden sollen. Dies muss innerhalb einer Funktion passieren, die Methode um in TwinCAT Dateien zu beschreiben ist jedoch ein Funktionsblock. Der Versuch ist das Ganze innerhalb einer While-Schleife zu implementieren, es kommt jedoch immer ein Timeout Fehler aus dem Funktionsblock selbst. Der Code sieht wie folgt aus:

    Code:
    fbTimer(IN:= TRUE, PT := T#2s);
    fbWrite(udRows:=(iIpolEnd-iIpolStart), bExecute := TRUE, pWriteBuffer := ADR(laMotorValues));
    WHILEfbWrite.bBusy OR fbTimer.Q DO 
    fbWrite(udRows:=(iIpolEnd-iIpolStart), bExecute := TRUE, pWriteBuffer := ADR(laMotorValues)); 
    IFfbWrite.bError THEN Gerade_Velo := 10; 
    RETURN;
    END_IF
    END_WHILE
    fbTimer.IN:= FALSE;
    fbWriteist eine Instanz eines Funktionsblocks der so anfängt:
    RisingEdge(CLK:= bExecute);
    CASE iStep OF 0:
    IFRisingEdge.Q THEN iStep := 1; 
    bBusy:= TRUE; 
    bError:= FALSE; 
    nErrId:= 0; hFile := 0;
                END_IF
    1:fbFileOpen(bExecute := FALSE);
     fbFileOpen(sNetId := sNetId, sPathName :=sPathName, nMode := FOPEN_MODEAPPEND OR FOPEN_MODEPLUS OR FOPEN_MODEBINARY,ePath := PATH_GENERIC, tTimeout := T#2s, bExecute := TRUE); 
    iStep:= iStep + 1; 
    2:fbFileOpen(bExecute := FALSE); 
    IFNOT fbFileOpen.bBusy THEN 
    IFNOT fbFileOpen.bError THEN hFile := fbFileOpen.hFile;
     iStep := iStep + 1;
     ELSE iStep := 50;
     nErrId := fbFileOpen.nErrId; bError := TRUE; 
    END_IF
    END_IF

    Im Case 2 hängt der sich dann immer am Timeout auf. fbFileOpen ist eine Instanz eines FB_FileOpen Funktionsblock.
    Die Frage ist also: Ist es möglich in TwinCAT 2 innerhalb von Funktionen Dateien zu beschreiben?
    Vielen Dank!Paddel
    Zitieren Zitieren TwinCAT 2 Dateien innerhalb von Funktionen beschreiben?  

  2. #2
    Registriert seit
    25.11.2010
    Ort
    OWL
    Beiträge
    750
    Danke
    27
    Erhielt 165 Danke für 143 Beiträge

    Standard

    Hm, ich erinnere mich dunkel an etwas, weiss allerdings nicht genau, ob das die File-FB's betraf. Es gibt jedenfalls bei Beckhoff Bibliotheks-FB's, die ihre Schnittstelle zur Anwendung nur einmal pro Programmzyklus aktualisieren. In diesem Fall würde die WHILE-Schleife nicht funktionieren, ihr müsstet den File-FB ausserhalb der Funktion deklarieren und ihn als VAR_IN_OUT übergeben.

  3. #3
    Registriert seit
    13.12.2011
    Beiträge
    1.420
    Danke
    147
    Erhielt 161 Danke für 152 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Paddel,
    wie StructuredTrash schon richtig bemerkt hat benötigen die File-FBs mehrere Zyklen, daher läuft die Sache mit while nicht. Ich würde außerdem von While und auch For-Schleifen bei der SPS-Programmierung die Finger lassen, wenn Du nicht genau weißt, das die Laufzeit der Schleife nicht deutlich unter der maximalen Zykluszeit liegt, sonst schießt Du Dir ganz schnell die SPS ab.
    Geändert von oliver.tonn (18.09.2014 um 15:27 Uhr)

Ähnliche Themen

  1. Antworten: 6
    Letzter Beitrag: 27.04.2016, 09:22
  2. Antworten: 2
    Letzter Beitrag: 10.07.2014, 12:27
  3. Array von FB Ausgang beschreiben
    Von michal im Forum Programmierstrategien
    Antworten: 6
    Letzter Beitrag: 03.08.2011, 08:58
  4. DB-Variablen von aussen beschreiben
    Von Ollypse im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 07.12.2009, 13:47
  5. Array von Strings beschreiben
    Von Fluffi im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 30.04.2009, 16:48

Lesezeichen

Berechtigungen

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