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

Ergebnis 1 bis 4 von 4

Thema: TwinCAT program problem

  1. #1
    Registriert seit
    24.09.2014
    Beiträge
    15
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo allen zusammen,

    Ich bin neu mit TwinCAT und bin fur mein Praktikum beschäftigt mit ein EPC CX9020-0111.
    Das Programm was ich geschrieben hab, macht drei log Dateien.
    Mann kann ein log machen via ein HMI Schirm.

    Wenn ich den EPC starte und ein log mach, funktioniert alles richtig. Die Datei haben die richtige grobe und enthalten die richtige Daten.
    Aber wenn ich ein zweiten log machen möchte gibt es immer ein Fehler. Er fehlt Data in ein Datei oder ein Datei ist komplett leer.

    Ich begreife nur nicht warum es den erste Mahl richtig funktioniert und danach nicht mehr.


    Code:
    Communication;                                (*In het blok communication zal er gekeken worden of er nog communicatie is tussen PLC en EPC*)
    
    IF NOT TON1.Q AND  NOT TON2.Q THEN         (*Als de communicatie aanwezig is dan zullen de uitgangen van TON1 en TON2 niet aanwezig zijn*)
    
        IF HMI_test_Bit_PLC AND NOT HMI_test_bit_Epc AND NOT tp1.Q AND NOT alarm_bit THEN
            log_bit_EPC:=TRUE;
            STEP:=1;
        ELSIF  NOT hmi_test_bit_plc AND hmi_test_bit_EPC  THEN
            hmi_test_bit_EPC:=FALSE;
        ELSIF alarm_bit THEN
             Alarms;
        ELSE
            Time_update;
        END_IF
    
    
        CASE STEP OF
        0:    Time_update;
    
    
        1:    (*Data klaarzetten*)
            Change_data;
    
        16:     (*TEST*)
            IF ChecksumEPC = ChecksumPLC THEN
                STEP:=2;
            ELSE
                alarm_byte:= 8;
                Alarms;
            END_IF
    
        2:    (*Log bestemming*)
            Log_Destination;
            STEP:=3;
    
    
        3:    (*Bestand openen*)
            file_open:= TRUE;
            Create_File;
            STEP:=4;
    
        4:    (*Bestand openen*)
            file_open:= FALSE;
            IF FB_FileOpen1.bBusy OR FB_FileOpen2.bBusy OR FB_FileOpen3.bBusy THEN
            Create_File;
            ELSIF FB_FileOpen1.bError OR FB_FileOpen2.bError OR FB_FileOpen3.bError THEN
                alarm_byte:=1;
                Alarms;
            ELSE
                STEP:=5;
                R_TRIG1.CLK:=FALSE;
            END_IF
    
        5:    (*Bestand schrijven*)
            file_writer:=TRUE;
            Write_File;
            STEP:=6;
    
        6:
            file_writer:=FALSE;
            IF FB_FileWrite1.bBusy OR FB_FileWrite2.bBusy OR FB_FileWrite3.bBusy THEN
            Write_File;
            ELSIF FB_FileWrite1.bError OR FB_FileWrite2.bError OR FB_FileWrite3.bError THEN
                alarm_byte:=2;
                Alarms;
            ELSE
                STEP:=7;
                R_TRIG2.CLK:=FALSE;
            END_IF
    
        7:    (*Bestand sluiten*)
            file_Closer:=TRUE;
            Close_file;
            STEP:=8;
    
        8:     (*Bestand sluiten*)
            file_closer:=FALSE;
            IF  FB_FileClose1.bBusy OR FB_FileClose2.bBusy OR FB_FileClose3.bBusy THEN
            Close_file;
            ELSIF FB_FileClose1.bError OR FB_FileClose2.bError OR FB_FileClose3.bError THEN
                alarm_byte:=3;
                Alarms;
            ELSE
                STEP:=11;
                R_TRIG3.CLK:=FALSE;
            END_IF
    
        9:    (*Bestand verzenden*)
            file_sender:=TRUE;
            Send_Files;
            STEP:=10;
    
        10:     (*Bestand verzenden*)
            file_sender:=FALSE;
            IF FB_FTP_FileUploadEx1.bBusy OR FB_FTP_FileUploadEx2.bBusy OR FB_FTP_FileUploadEx3.bBusy THEN
            Send_Files;
            ELSIF FB_FTP_FileUploadEx1.bError OR FB_FTP_FileUploadEx2.bError OR FB_FTP_FileUploadEx3.bError THEN
                    alarm_byte:=4;
                    Alarms;
            ELSE
                STEP:=11;
                R_TRIG4.CLK:=FALSE;
            END_IF
    
    
        11:     (*Bestand verplaatsen*)
            file_mover:=TRUE;
            Move_Files;
            STEP:=12;
    
        12:     (*Bestand verplaatsen*)
            file_mover:=FALSE;
            IF NOT FB_FileRename1.bBusy AND NOT FB_FileRename2.bBusy AND NOT FB_FileRename3.bBusy THEN
                IF FB_FileRename1.bError OR FB_FileRename2.bError OR FB_FileRename3.bError THEN
                    alarm_byte:=5;
                    Alarms;
                ELSE
                    STEP:=0;
                    hmi_test_bit_Epc:=TRUE;
                    lastlogdate:=logtimedate;
                    log_bit_EPC:=FALSE;
                    tp1.IN:=TRUE;
                    Time_Wait;
                    R_TRIG5.CLK:=FALSE;
                END_IF
            ELSE
                Move_Files;
            END_IF
    
        13:    TP1.IN:=FALSE;
    
        END_CASE
    
    
    ELSE
        alarm_byte:= 7;
        Alarms;
    END_IF
    Das ist mein Code.
    In ein Step rufe ich ein block an, zum beispiel "Create_File". Das block enthalt code für das öffenen von ein Datei.
    Und so wird von den Main jeden block angesteurt.

    Kann jemand Mahl schauen ob das stimmt?
    Ich werde euch sehr dankbar.

    Freundliche Grusse aus Holland
    Geändert von schakel (24.09.2014 um 11:07 Uhr)
    Zitieren Zitieren TwinCAT program probleme  

  2. #2
    schakel ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    24.09.2014
    Beiträge
    15
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Eigentlich habe ich noch ein Frage. Die Funktionsbausteine haben allen ein bExecute. Ich verstehe das mann damit die bausteine startet.
    Aber was wenn zum Beispiel das schreiben mehrere Zyklen nötig ist? Dann wird der Baustein busy, aber muss er auch jeden Zyklus ein neue signal bekommen van bExecute?

    Grusse aus Holland

  3. #3
    Registriert seit
    25.11.2010
    Ort
    OWL
    Beiträge
    745
    Danke
    27
    Erhielt 164 Danke für 142 Beiträge

    Standard

    bExecute braucht nur in dem Zyklus True sein, in dem Du die Funktion starten willst.
    Die Beckhoff-File-FB's haben aber eine Eigenheit: Nach dem Aufruf, in dem bBusy=False wird, musst Du sie ein weiteres Mal mit bExecute=False aufrufen, sonst wird die nächste bExecute-High-Flanke nicht erkannt. Ist ein wenig anwenderunfreundlich programmiert, um es mal vorsichtig zu sagen.

  4. #4
    schakel ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    24.09.2014
    Beiträge
    15
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Unglaublich! Habe so viele Dingen probiert das Problem zu Lössen. Und jetzt hat es endlich geklappt!
    Viele viele dank!!

Ähnliche Themen

  1. TwinCAT Problem
    Von tech007 im Forum CODESYS und IEC61131
    Antworten: 21
    Letzter Beitrag: 26.11.2010, 15:59
  2. TwinCAT Problem
    Von tech007 im Forum CODESYS und IEC61131
    Antworten: 0
    Letzter Beitrag: 18.08.2010, 23:09
  3. Antworten: 4
    Letzter Beitrag: 03.11.2009, 14:05
  4. Twincat Problem
    Von Twix_23 im Forum CODESYS und IEC61131
    Antworten: 10
    Letzter Beitrag: 12.10.2008, 13:31
  5. Program DirektIO
    Von Diamond im Forum PC- und Netzwerktechnik
    Antworten: 14
    Letzter Beitrag: 29.08.2006, 20:48

Lesezeichen

Berechtigungen

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