-> Hier kostenlos registrieren
TwinCAT program probleme
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.
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
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
Zuletzt bearbeitet: