|
Autor
|
Thema: Aufruf der Ziehensteuerung eines PickAndPlace-Roboter (1629 mal gelesen)
|
EineFrage Mitglied

 Beiträge: 11 Registriert: 09.04.2013
|
erstellt am: 05. Jun. 2013 16:14 <-- editieren / zitieren --> Unities abgeben:         
Hallo zusammen, ich programmiere derzeit an einem PickAndPlace-Roboter, welcher BEs aus Einzelnstationen entnimmt und in Lager legt. Zwischen den Einzelstationen, dem PickAndPlace und den Lagern gibt es keine Kanten, was ja aber im Eigentlichen kein Problem darstellen sollte (Winkel + Zeitentabellen sind gesetzt). Das Programmieren der Zielsteuerung war soweit kein Problem. Der Roboter entimmt brav im Round-Robin-Prinzip aus den Einzelnstationen und legt im richtigen Lager ab. Tricky wird es aber jetzt im Bezug auf die Ziehensteuerung. Der Quellcode hierfür sieht recht einfach aus. Es sei erwähnt, dass die BEs eine Eigenschaft names transportTarget vom Typ objekt haben, welches das Transportziel angibt. Zudem ist dafür gesorgt, dass immer mindestens ein Lager nicht voll, da BEs über einen später ausgeführten Code (mit Hilfe einer Tablle auf jedem Lager: expectedObjects) weiterbewegt werden: Code:
is blockList : table; nextObject : object; do -- initializing nextObject := void; blockList.create; ?.fwBlockList(blockList); -- choose next MU to move for local counter := 1 to blockList.yDim loop if (blocklist[1, counter].transportTarget.empty) then nextObject := blocklist[1, counter]; exitloop; end; next; -- unblocking MU if (NOT (nextObject = VOID)) then -- adding object to movement queue local expectedObjects := ref nextObject.transportTraget.expectedObjects; expectedObjects.insertRow(expectedObjects.yDim +1); expectedObjects[1, expectedObjects.yDim] := nextObject; ?.unblock(nextObject); end; end;
Nachdem der erste Transport mit dieser Methode gut klappt ist es jetzt jedoch so, dass die Ziehensteuerung nach jedem Transport noch einmal aufgerufen wird - und kein Transport durchgeführt wird (Zielsteuerung wird nicht aufgerufen, obwohl ja ein BE unblocked wurde), was dazu führt, dass expectedObjects mehr BEs enthält als es eigentlich sollte. Es scheint dabei keine Rolle zu spielen, ob "Standardwinkel anfahren" gesetzt ist, oder nicht. Ich bin mir nun nicht sicher warum die zweite Ausführung durchgeführt wird und wie ich jetzt erkenne, ob danach tatsächlich ein Transport druchgeführt wird, oder nicht. Gibt es hier eine gute Methode? Kann ich von "Hand" einen Transport antriggern? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
EineFrage Mitglied

 Beiträge: 11 Registriert: 09.04.2013
|
erstellt am: 05. Jun. 2013 16:25 <-- editieren / zitieren --> Unities abgeben:         
|
Bon Simul Mitglied Simulant
   
 Beiträge: 1250 Registriert: 08.08.2011 Plant Simulation 10.1, 11 ff Professional
|
erstellt am: 05. Jun. 2013 22:58 <-- editieren / zitieren --> Unities abgeben:          Nur für EineFrage
Die Ziehensteuerung wird aufgerufen, wenn Ihr Objekt leer und aufnahmebereit ist (also kurz nach dem Umlagern) oder wenn ein neues Teil eintrifft. Das ist die normale Funktionsweise. Etwas zu Ihrer Methode: Sie haben ein paar Fehler: Code:
if (NOT (nextObject = VOID)) then -- adding object to movement queue --local expectedObjects := ref nextObject.transportTraget.expectedObjects; -- sollte bestimmt sein local expectedObjects := ref nextObject.transportTarget.expectedObjects; --expectedObjects.insertRow(expectedObjects.yDim +1); --wenn Sie am Ende einer Tabelle eine Zeile einfügen, dann ändert sich yDim nicht --schreiben Sie einfach ans Ende der Tabelle expectedObjects[1, expectedObjects.yDim+1] := nextObject; ?.unblock(nextObject); end;
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |

| | CNC-Fräser (m/w/d) ? Heidenhain | Hermle | Hedelius | Wir sind ein führender Systemlieferant für mechatronische Lösungen, gegründet im Jahr 2000. Unser Fokus liegt auf der Entwicklung und Produktion von hochwertigen Komponenten, Baugruppen und Modullösungen aus Kunststoff. Durch unsere ausgeprägte Fachkompetenz und unseren außerordentlichen Automatisierungsgrad, bedienen wir erfolgreich Branchen wie die Elektroindustrie, den Automobilsektor, die Verpackungsindustrie und die Medizintechnik.... | | Anzeige ansehen | Feste Anstellung |
|
EineFrage Mitglied

 Beiträge: 11 Registriert: 09.04.2013
|
erstellt am: 06. Jun. 2013 11:04 <-- editieren / zitieren --> Unities abgeben:         
|
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
 |