Siemens
Digital Industries, Motion Control, Machine Tool Systems
8832
Follower:innenJobliste abarbeiten
06.12.2018, 21:53 Uhr
Hallo zusammen,
Ich habe eine Frage oder vielmehr stehe ich gerade auf dem Schlauch und hoffe Ihr könnt mir ggf. eine Lösung servieren .
Mein Kunde sendet mir über einen FTP Server eine Jobliste. Diese Jobliste enthält einen Ordnerpfad mit einer undefinierten Anzahl an einzelnen Aufträgen.
Jeder Auftrag hat seinem eigenen Programmnamen und ist nacheinander aufgelistet.
Die Idee ist:
;======== ABFRAGE OB JOB.MPF VORHANDEN=====
WHILE $A_DBB[602] == 0
STOPRE
MSG("JOB.MPF nicht vorhanden")
G4 F0.5
STOPRE
ENDWHILE
;=====ABLOESCHEN NACHRICHT=======
STOPRE
MSG("")
;======== Variable JobRequest auf 1 setzen=====
STOPRE
$A_DBB[601]=0
;======== Aufruf der JOB.MPF von Netzwerk=====
STOPRE
EXTCALL"\\Pfadangabe\Job.mpf
;======== Schleife für Loading Programme =====
WHILE MAX_NO <> 0 ;MAX_NO ist die Anzahl an Auftraegen in der JOB.MPF
;======== Aufruf der Auftrag.MPF von Netzwerk=====
STOPRE
EXTCALL"\\Pfadangabe\"<<Auftrag1<<".mpf
;====== Bearbeitung Starten =======
;(...START CHANNEL_1 TOP MILLING
IF STATUS_K1=="ON"
INIT(1,"ZYK_MILL_TOP_K1")
START(1)
ENDIF
;(...START CHANNEL_2 BOTTOM MILLING
IF STATUS_K2=="ON"
INIT(2,"ZYK_MILL_BOT_K2")
START(2)
ENDIF
;(...START CHANNEL_3 SHUTTLE 2
IF STATUS_K3=="ON"
INIT(3,"ZYK_SAW_K3")
START(3)
ENDIF
;(...START CHANNEL_4 SHUTTLE 1
IF STATUS_K4=="ON"
INIT(4,"ZYK_RUN_IN_K4")
START(4)
ENDIF
;(...START CHANNEL_5 SHUTTLE 3
IF STATUS_K5=="ON"
INIT(5,"ZYK_RUN_OUT_K5")
START(5)
ENDIF
STOPRE
MAX_NO=MAX_NO-1
ENDWHILE
ENDLOOP
Ich weiß leider nur nicht wie ich im EXTCALL sage das er jetzt nach dem ersten Mal durchlaufen der WHILE schleife nun das nächste Programm aufrufen soll.
Letztlich sind die Aufgelistet nacheinander.
Aber wie lasse ich diesen Wert hoch zählen sodass dann Programm EXTCALL"\\Pfadangabe\"<<Auftrag2<<".mpf, dann Auftrag3 usw. (kann bis 10000 gehen)?
Hoffe Ihr könnt mir helfen.
Beste Grüße
Sven
Ich habe eine Frage oder vielmehr stehe ich gerade auf dem Schlauch und hoffe Ihr könnt mir ggf. eine Lösung servieren .
Mein Kunde sendet mir über einen FTP Server eine Jobliste. Diese Jobliste enthält einen Ordnerpfad mit einer undefinierten Anzahl an einzelnen Aufträgen.
Jeder Auftrag hat seinem eigenen Programmnamen und ist nacheinander aufgelistet.
Die Idee ist:
;======== ABFRAGE OB JOB.MPF VORHANDEN=====
WHILE $A_DBB[602] == 0
STOPRE
MSG("JOB.MPF nicht vorhanden")
G4 F0.5
STOPRE
ENDWHILE
;=====ABLOESCHEN NACHRICHT=======
STOPRE
MSG("")
;======== Variable JobRequest auf 1 setzen=====
STOPRE
$A_DBB[601]=0
;======== Aufruf der JOB.MPF von Netzwerk=====
STOPRE
EXTCALL"\\Pfadangabe\Job.mpf
;======== Schleife für Loading Programme =====
WHILE MAX_NO <> 0 ;MAX_NO ist die Anzahl an Auftraegen in der JOB.MPF
;======== Aufruf der Auftrag.MPF von Netzwerk=====
STOPRE
EXTCALL"\\Pfadangabe\"<<Auftrag1<<".mpf
;====== Bearbeitung Starten =======
;(...START CHANNEL_1 TOP MILLING
IF STATUS_K1=="ON"
INIT(1,"ZYK_MILL_TOP_K1")
START(1)
ENDIF
;(...START CHANNEL_2 BOTTOM MILLING
IF STATUS_K2=="ON"
INIT(2,"ZYK_MILL_BOT_K2")
START(2)
ENDIF
;(...START CHANNEL_3 SHUTTLE 2
IF STATUS_K3=="ON"
INIT(3,"ZYK_SAW_K3")
START(3)
ENDIF
;(...START CHANNEL_4 SHUTTLE 1
IF STATUS_K4=="ON"
INIT(4,"ZYK_RUN_IN_K4")
START(4)
ENDIF
;(...START CHANNEL_5 SHUTTLE 3
IF STATUS_K5=="ON"
INIT(5,"ZYK_RUN_OUT_K5")
START(5)
ENDIF
STOPRE
MAX_NO=MAX_NO-1
ENDWHILE
ENDLOOP
Ich weiß leider nur nicht wie ich im EXTCALL sage das er jetzt nach dem ersten Mal durchlaufen der WHILE schleife nun das nächste Programm aufrufen soll.
Letztlich sind die Aufgelistet nacheinander.
Aber wie lasse ich diesen Wert hoch zählen sodass dann Programm EXTCALL"\\Pfadangabe\"<<Auftrag2<<".mpf, dann Auftrag3 usw. (kann bis 10000 gehen)?
Hoffe Ihr könnt mir helfen.
Beste Grüße
Sven
07.12.2018, 11:45 Uhr
Hallo zusammen,
Konnte eine Lösung finden.
Dennoch vielen Dank
Thema kann geschlossen werden.
Beste Grüße
Sven
Konnte eine Lösung finden.
Dennoch vielen Dank
Thema kann geschlossen werden.
Beste Grüße
Sven
23.10.2019, 14:01 Uhr
Hallo
ich bin auch auf der Suche nach so etwas. Ich würde gerne mehrere Programme nacheinander abarbeiten lassen. Jedes Programm müsste nach der vorgegebenen Stückzahl das nächste laden.
Würdest du uns deine Lösung preisgeben?
Gruß Mario
ich bin auch auf der Suche nach so etwas. Ich würde gerne mehrere Programme nacheinander abarbeiten lassen. Jedes Programm müsste nach der vorgegebenen Stückzahl das nächste laden.
Würdest du uns deine Lösung preisgeben?
Gruß Mario
24.10.2019, 11:28 Uhr
Vorausgesetzt der Programmname (Auftrag1 bis ...) unterscheidet sich nur über den angehängten Index
könnte man, um mal hier bei diesem Beispiel zu bleiben, die Anzahl der Aufträge wie folgt abarbeiten.
;Zähler für den Index
Def Int li
For li=1 To MAX_NO
;Mit dem Teileprogrammbefehl Execstring, ist es möglich, eine zuvor erzeugte
;String-Variable als Teileprogrammzeile auszuführen.
Execstring("EXTCALL'"'\\Pfadangabe\'"'<<Auftrag<<li<<'"'.mpf'"'")
;Berbeitung usw.
.
.
.
.
Endfor
könnte man, um mal hier bei diesem Beispiel zu bleiben, die Anzahl der Aufträge wie folgt abarbeiten.
;Zähler für den Index
Def Int li
For li=1 To MAX_NO
;Mit dem Teileprogrammbefehl Execstring, ist es möglich, eine zuvor erzeugte
;String-Variable als Teileprogrammzeile auszuführen.
Execstring("EXTCALL'"'\\Pfadangabe\'"'<<Auftrag<<li<<'"'.mpf'"'")
;Berbeitung usw.
.
.
.
.
Endfor
1 Besucher lesen dieses Thema (Gäste: 1)
0 Mitglieder: