Siemens
Siemens

Digital Industries, Motion Control, Machine Tool Systems

Jobliste abarbeiten

Beitrag 06.12.2018, 21:53 Uhr
Sven89
Sven89
Level 1 = Community-Lehrling
*
Gruppe: Mitglied
Mitglied seit: 16.08.2018
Beiträge: 6
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 smile.gif .

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
   
Beitrag 07.12.2018, 11:45 Uhr
Sven89
Sven89
Level 1 = Community-Lehrling
*
Gruppe: Mitglied
Mitglied seit: 16.08.2018
Beiträge: 6
Hallo zusammen,

Konnte eine Lösung finden.
Dennoch vielen Dank

Thema kann geschlossen werden.

Beste Grüße
Sven
   
Beitrag 23.10.2019, 14:01 Uhr
MaRi2804
MaRi2804
Level 1 = Community-Lehrling
*
Gruppe: Mitglied
Mitglied seit: 23.10.2019
Beiträge: 1
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
   
Beitrag 24.10.2019, 11:28 Uhr
CaptainFu
CaptainFu
Level 1 = Community-Lehrling
*
Gruppe: Mitglied
Mitglied seit: 09.09.2019
Beiträge: 49
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
   
1 Besucher lesen dieses Thema (Gäste: 1)
0 Mitglieder: