Questa sezione mostra come fare piccole modifiche ad un post processore esistente.
Ad esempio, le prossime 3 modifiche saranno fatte ad un post processor esistente KUKA KRC4:
●Sovrascrivere la massima velocità a 500 mm/s. Anche se il robot è programmato per muoversi più velocemente la velocità sarà limitata a 500 mm/s nel post processore.
●Genera ogni programma come un file separato e forzare i programmi ad avere al massimo 3000 linee di codice per programma. Programmi grandi saranno divisi in programmi più piccoli e chiamati in sequenza.
La sezione precedente mostra come aprire post processori esistenti:
1.Seleziona Programma➔Aggiungi/Modifica Post Processore
2.Seleziona KUKA_KRC4
3.Seleziona OK. Il post processore sarà mostrato nell'editor IDLE Python.
Le prossime sezioni mostrano come fare modifiche nell'editor testo.
Fai le seguenti modifiche per evitare di aggiungere più di un programma per file e generare programmi con più di 3000 linee di codice:
1.Imposta la variabile MAX_LINES_X_PROG a 3000
2.Imposta la variabile INCLUDE_SUB_PROGRAMS in False

Segui questi passaggi per impostare un limite velocità a 500 mm/s ed evitare di impostare velocità maggiori usando RoboDK:
1.Localizzare la funzione setSpeed (def setSpeed)
2.Aggiungi la seguente linea prima di generare l'output $VEL.CP che modifica la velocità in m/s:
speed_mms = min(speed_mms, 500)

Questa sezione mostra come personalizzare l'impostazione del sistema di riferimento di un post processore esistente. Per esempio, impostando un sistema di riferimento personalizzato per un robot KUKA.
Puoi utilizzare post processori compilati e reimplementare facilmente solo le funzioni necessarie (per esempio, setFrame, setTool o setSpeed).
In questo esempio, supponiamo di voler personalizzare come viene definita la base per un controller KUKA. Per esempio, se desideri generare la seguente riga quando imposti il sistema di riferimento:
BASE_DATA[8] = {FRAME: X:2000, Y:0, Z:0, A:0, B:0, C:0}
BAS (#BASE,8)
È sufficiente creare un nuovo file chiamato KUKA_Custom_Post.py nella cartella C:/RoboDK/Posts/ con le seguenti righe, che utilizzano il post processore predefinito KUKA_KRC2 e sovrascrivono l'impostazione del sistema di riferimento (funzione setFrame):
from KUKA_KRC2 import RobotPost as MainPost
class RobotPost(MainPost):
def setFrame(self, pose, frame_id, frame_name):
"""Change the robot reference frame"""
self.addline('; BASE_DATA[8] = {FRAME: %s}' % (self.pose_2_str(pose)))
self.addline('BAS (#BASE,8)')
Tuttavia, potremmo aggiungere filtri personalizzati basati su determinati criteri per scegliere tra il comportamento predefinito e un'implementazione personalizzata. Il file del post processore potrebbe quindi essere modificato come segue:
from KUKA_KRC2 import RobotPost as MainPost
class RobotPost(MainPost):
def setFrame(self, pose, frame_id, frame_name):
"""Change the robot reference frame"""
if frame_name == "Frame 4": # Enter any condition here
# Trigger the call to the default method (same as not overriding the function)
super(MainPost, self).setFrame(pose, frame_id, frame_name)
return
# Implement a custom setFrame
self.addline('; ---- Setting reference: %s ----' % frame_name)
self.addline('; BASE_DATA[8] = {FRAME: %s}' % (self.pose_2_str(pose)))
self.addline('BAS (#BASE,8)')
self.addline('; --------------------------')
Quando generi programmi per controller KUKA KRC, esistono molti modi per impostare il tuo sistema di coordinate o sistema di riferimento. La seguente definizione di setFrame mostra un'implementazione alternativa con diverse opzioni:
def setFrame(self, pose, frame_id, frame_name):
"""Change the robot reference frame"""
self.addline('; ---- Setting reference: %s ----' % frame_name)
# option 1: Build the kinematics based on the MACHINE_DEF array and the provided offset
#self.addline('$BASE = EK (MACHINE_DEF[2].ROOT, MACHINE_DEF[2].MECH_TYPE, { %s })' % self.pose_2_str(pose))
# option 2: Build the kinematics based on the EX_AX_DATA array and the provided offset
#self.addline('$BASE=EK(EX_AX_DATA[1].ROOT,EX_AX_DATA[1].EX_KIN, { %s })' % self.pose_2_str(pose))
# Option 3: Build the kinematics based on the EX_AX_DATA array and the pre-defined offset
#self.addline('; Using external axes')
#self.addline('; $BASE=EK(EX_AX_DATA[1].ROOT,EX_AX_DATA[1].EX_KIN,EX_AX_DATA[1].OFFSET)')
#self.addline('; $ACT_EX_AX= %i' % (self.nAxes - 6))
# Option 4: Use the BAS(#ex_BASE) init function from the BAS.src file
#self.addline('; BASE_DATA[%i] = {FRAME: %s}' % (self.BASE_ID, self.pose_2_str(pose)))
#self.addline('BAS(#ex_BASE,%i)' % self.BASE_ID)
# Option 5: Use the BAS(#BASE) init function from the BAS.src file
self.addline('; BASE_DATA[%i] = {FRAME: %s}' % (self.BASE_ID, self.pose_2_str(pose)))
self.addline('BAS (#BASE,%i)' % self.BASE_ID)
# Option 6: Directly take the base from the BASE_DATA array (usually what the BAS(#BASE) does)
# self.addline('$BASE=BASE_DATA[%i]' % self.BASE_ID)
self.addline('; --------------------------')
Questa sezione mostra come modificare un post processore esistente per forzare un movimento assiale utilizzando valori articolari invece di valori cartesiani.
In questo esempio applicheremo questa modifica a un controller robot ABB IRC5.
3.Trova il manuale di programmazione del tuo controller robot. In questo esempio utilizziamo il manuale di programmazione ABB IRC5 RAPID.
4.Cerca le istruzioni di movimento articolare. In questo caso, il comando di movimento articolare assoluto di ABB si chiama MoveAbsJ. Questo comando richiede una variabile jointtarget che definisce gli assi articolari.

5.Seleziona Programma-Aggiungi/Modifica Post Processore e seleziona il post processore che stai attualmente utilizzando per modificarlo. Se stai attualmente utilizzando un post processore personalizzabile, sarà selezionato per default.
6.Dovresti cercare la funzione MoveJ all'interno del post processore. Questa funzione definisce il modo in cui i post processori generano i comandi di movimento articolare. In alternativa, RoboDK utilizza MoveL per i movimenti lineari. Utilizzando il linguaggio di programmazione Python, modifica la riga che viene aggiunta al file del programma per fornire informazioni sugli angoli articolari, come mostrato nell'immagine seguente.

7.Infine, potrebbe essere necessario modificare il modo in cui il post processore converte gli angoli articolari o la posa in una stringa. Le funzioni angles_2_str e pose_2_str definiscono rispettivamente come gli angoli articolari e una posa vengono convertiti in testo.

La maggior parte dei post processori RoboDK utilizza dati articolari per i movimenti articolari e coordinate cartesiane per i movimenti lineari. Si consiglia di iniziare sempre il primo punto in una sequenza di movimenti lineari come movimento articolare, specificando le coordinate articolari. Questo evita di iniziare un programma con la configurazione robot errata e di raggiungere una singolarità o i limiti degli assi.