RoboDK è un simulatore focalizzato su applicazioni di robot industriali. Ciò significa che i programmi robot possono essere creati, simulati e generati offline per uno specifico braccio robotico e controller robot. In altre parole, RoboDK è un software per la Programmazione Offline.
Per creare programmi robot, è richiesto selezionare un robot, caricare il tool e usare una o più funzionalità CAD in percorso per creare programmi o aggiungere bersagli usando tool specifici (ad esempio convertire programmi CNC in programmi robot)
Una libreria extesa di robot industriali è disponibile. Robot industriali sono modellati in RoboDK nella stessa maniera in cui si comportano utilizzando il controller specifico, inclusi limiti assi, movimenti e connessioni tra gli assi.

Questa sezione mostra come programmi robot possono essere creati, simulati e generati per specifici controllori robot usando l'interfaccia grafica di RoboDK (GUI).
Programmazione Offline (o Programmazione Off-line) significa programmare robot fuori dal loro ambiente produttivo. La programmazione offline elimina i tempi morti di produzione a causa di una programmazione su teach pendant. La simulazione e la programmazione offline permettono di studiare scenari multipli per una cella di lavoro prima di impostare la cella di produzione. Errori fatti comunemente nella progettazione di una cella di lavoro possono essere predetti in tempo.
La programmazione offline è la via migliore per massimizzare l'investimento per un sistema robotico e richiede software appropriati di simulazione. Il tempo per l'adozione di nuovi programmi può essere ridotto da settimane a giorni, permettendo la robotizzazione di piccole serie.
Una simulazione può essere effettuata aggiungendo una sequenza di istruzioni in un programma. Ogni istruzione rappresenta un codice specifico in un controller, tuttavia, RoboDK offre un'Interfaccia Grafica Utente (GUI) per creare facilmente programmi robot, in maniera generica, senza la necessità di scrivere codice. Il codice specifico di un controller robot sarà generato automaticamente quando il programma è generato.
Per creare un nuovo programma vuoto usando l'Interfaccia Grafica di RoboDK:
1.Seleziona Programma➔
In alternativa, seleziona il pulsante corrispondente della toolbar.
2.Seleziona Strumenti➔Rinomina elemento (F2) per rinominare il programma
Questa azione crea un programma vuoto e permetterà di aggiungere nuove istruzioni cliccando con il casto destro sul programma o selezionando un istruzione dal menu Programma. La prossima sezione Istruzioni Programma fornisce più informazioni riguardo l'aggiunta di istruzioni.

È possibile aggiungere nuove istruzioni facendo click con il tasto destro su un programma o dal menu Programma, come mostrato nella precedente sezione.
Questa sezione descrive le istruzioni supportate dall'Interfaccia Grafica di RoboDK per programmazione offline di robot.
Seleziona Programma➔
A meno che un bersaglio sia selezionato prima di aggiungere l'istruzione, l'istruzione di movimento creerà un nuovo bersaglio e i due saranno collegati. Se il bersaglio è mosso, anche il movimento è modificato.
Se questa è la prima istruzione aggiunta, due altre istruzioni verranno aggiunte prima dell'istruzione di movimento: una selezione del Piano di Riferimento e una selezione del Piano Tool. Ciò assicurerà che quando un programma raggiunge l'istruzione di movimento, il robot giusto e il tool giusto vengano utilizzati.

Seleziona Programma➔
A meno che un bersaglio sia selezionato prima di aggiungere l'istruzione, l'istruzione di movimento creerà un nuovo bersaglio e i due saranno collegati. Se il bersaglio è mosso, anche il movimento è modificato.
Muovi Giunti e Muovi Lineare si comportano alla stessa maniera e possono essere scambiati facilmente da un tipo all'altro.
Se questa è la prima istruzione aggiunta, due altre istruzioni verranno aggiunte prima dell'istruzione di movimento: una selezione del Piano di Riferimento e una selezione del Piano Tool. Ciò assicurerà che quando un programma raggiunge l'istruzione di movimento, il robot giusto e il tool giusto vengano utilizzati.
Contrariamente ai Movimenti Giunti, i Movimenti linare sono sensibili alle singolarità e ai limiti assi. Per esempio, un robot a 6 assi non può oltrepassare una singolarità seguendo un movimento lineare. La seguente immagine mostra un esempio che dice Joint 5 is too close to a singularity (0 degrees). […] Consider a Joint move instead.

Se un movimento lineare non è strettamente necessario, clicca con il tasto destro sull'istruzione di movimento e modificala in un istruzione Giunti.

In alternativa, il bersaglio, il TCP o la posizione del piano di riferimento deve essere modificata per evitare singolarità.
Seleziona Programma➔
Il piano di riferimento è una variabile conosciuta anche come Work Object (ABB), UFRAME (Fanuc), FRAME (Motoman) or $BASE (KUKA).

Seleziona Programma➔
Il piano di riferimento è una variabile conosciuta anche come Work Object (ABB), UFRAME (Fanuc), FRAME (Motoman) or $BASE (KUKA).

Seleziona Programma➔
A meno che due bersagli siano selezionati prima di aggiungere l'istruzione, l'istruzione di movimento non creerà due nuovi tracciati. È richiesto aggiungere due o più bersagli separatamente e collegarli all'istruzione di movimento circolare come mostrato nella prossima immagine.

Il percorso circolare è un arco creato dai punti dove il robot è localizzato, passando per il primo punto circolare (Target Linked 1) e finendo al punto finale (Target Linked 2).
Seleziona Programma➔
Attivare i casi corrispondenti per impostare una specifica velocità o accelerazione nel programma. La velocità del robot è applicata dai movimenti in cui questa istruzione viene eseguita.
La velocità del robot può anche essere modificata nel menu parametri del robot: Doppio click sul robot, poi, seleziona parametri.

Seleziona Programma➔

Seleziona Programma➔

Seleziona Programma➔
Di default, ciò è una chiamata bloccante al programma specifico. Tuttavia, è possibile cambiare in Inserisci Codice per immettere un codice specifico nella posizione della chiamata. Ciò può essere utile per una specifica applicazione e uno specifico controller.


Cambia da Chiamata Programma in Inizia Thread per provocare una chiamata non bloccante ad un subprogramma. In questo caso, il controller inizierà un nuovo thread. Questa opzione è disponibile solamente su certi tipo di controllori e certe operazioni.
Seleziona Programma➔
Il nome IO può essere un numero o un valore di testo se è una variabile nominativa. Il valore IO può essere un numero (0 per False 1 per True) o un valore testo se è uno stato nominativo.

Imposta su Aspetta per Digital Input per fermare l'esecuzione del programma fino a che uno specifico input cambia in un valore specifico. In più, molti controller robot supportano un timeout per avere un errore se il tempo di attesa ha superato il valore specifico. Controlla l'opzione Timeout (ms) per attivare questa caratteristica.

Alterare Digital Input e Output simulati creerà nuove variabili della stazione. Per controllare lo stato di queste variabili puoi cliccare con il tasto destro sulla stazione e selezionare Parametri Stazione. È anche possibile leggere o modificare queste variabili tramite l'API.
Seleziona Programma➔
Senza un'istruzione di raccordo, il robot raggiungerà la velocità di 0 alla fine di ogni movimento (a meno che il movimento successivo sia tangente al precedente). Ciò provocherà un'alta accelerazione e un drastico cambiamento di velocità per assicurare l'accuratezza del movimento.
Questo valore è anche conosciuto come Blending radius (Universal Robots), ZoneData (ABB), CNT/FINE (Fanuc), Cornering (Mecademic) or $APO.CDIS/$APO.CPTP/Advance (KUKA).

Alcuni controller richiedono di impostare questo valore come percentuale, per esempio su un controller Fanuc, se vuoi fornire il comando CNT5 devi inserire il valore 5.
Puoi anche specificare il parametro di raccordo nella finestra Eventi Programma se stai generando i tuoi programmi per la fresatura robotizzata, la stampa 3D o il following di curve/punti.

Seleziona Programma➔
●Collegare un oggetto ad un tool.
●Scollegare un oggetto da un tool e lasciarlo in un sistema di coordinate.
●Mostrare uno o più oggetti o tool.
●Nascondere uno o più oggetti o tool.
●Impostare la posizione assoluta di uno o più oggetti o piani di riferimento.
●Impostare la posizione relativa di uno o più oggetti o piani di riferimento.
●Impostare i giunti del robot in posizione home.
●Muovere il nastro trasportatore.
●Creare un oggetto.
●Eliminare oggetti.
●Attendere un oggetto.

Combinando gli eventi di simulazione più adatti è possibile creare, tramite l'interfaccia utente, simulazioni per la movimentazione di materiali o per muovere oggetti lungo nastri trasportatori all'interno della simulazione, come desiderato.

L'evento di simulazione Collega oggetto permette di collegare un oggetto ad un tool per simulare un'operazione di presa.
Quando viene attivata l'azione di collegamento di un oggetto ad un tool, viene collegato l'oggetto più vicino al tool selezionato. Una tolleranza di default di 200 mm viene utilizzata per ignorare gli oggetti più distanti di questo valore.

Se non specifichi una tolleranza di distanza, verrà utilizzato il valore di default globale (puoi modificarlo in Strumenti➔Opzioni➔Distanza massima per collegare un oggetto ad un tool robot). Inoltre, di default, la distanza è controllata dalla posizione del TCP al riferimento dell'oggetto. In alternativa, possiamo usare la distanza tra il TCP e la geometria dell'oggetto selezionando Controlla distanza più breve tra TCP e forma dell'oggetto.
L'evento di simulazione Scollega oggetto permette di scollegare un oggetto da un tool verso un altro oggetto o sistema di coordinate.
È necessario scegliere il tool da cui gli oggetti devono essere scollegati e il sistema di coordinate o l'oggetto a cui devono essere successivamente collegati.
L'evento di simulazione Scollega oggetto permette di simulare un'operazione di deposito in un'applicazione di pick and place (eseguendo l'azione opposta all'evento Collega oggetto).
Per esempio, se il robot si muove in una specifica posizione per prendere un oggetto possiamo impostare l'evento Collega oggetto per muovere l'oggetto assieme al robot. Poi, dopo che il robot si è mosso ed è pronto a lasciare l'oggetto possiamo impostare un evento Scollega oggetto per lasciare l'oggetto che il tool aveva preso.

L'evento Mostra oggetti o tool permette di rendere visibili uno o più oggetti, tool o robot all'interno dell'ambiente di simulazione.
Puoi selezionare uno o più elementi tenendo premuto il tasto Ctrl.

L'evento Nascondi oggetti o tool permette di rendere invisibili uno o più oggetti o tool all'interno della simulazione.
Puoi selezionare uno o più elementi tenendo premuto il tasto Ctrl.

L'evento Imposta la posizione dell'oggetto (assoluta) permette di aggiornare la posizione di ogni oggetto selezionato quando questa azione viene attivata. Il riferimento genitore a cui ciascun elemento è collegato non viene modificato: viene aggiornata solo la posizione di ogni oggetto.
Puoi selezionare uno o più elementi tenendo premuto il tasto Ctrl. La posizione attuale dell'elemento viene registrata quando premi OK.

L'evento Imposta la posizione dell'oggetto (relativa) permette di aggiornare la posizione e il genitore di ogni oggetto selezionato quando questa azione viene attivata. Viene modificato anche il riferimento genitore a cui ciascun elemento è collegato e viene aggiornata anche la posizione di ogni oggetto.
Puoi selezionare uno o più elementi tenendo premuto il tasto Ctrl. La posizione attuale dell'elemento e l'elemento genitore a cui è collegato vengono registrati quando premi OK.
La differenza tra questa istruzione e l'istruzione di posizione assoluta è che questa istruzione aggiorna anche l'elemento genitore a cui ciascun oggetto è collegato.

L'evento Imposta i giunti in posizione home attiva lo spostamento immediato del robot o del meccanismo selezionato verso le sue posizioni giunti “home” definite (il movimento non viene simulato nel tempo).
Questo è utile quando è necessario azzerare una simulazione e riportare i nastri trasportatori nella posizione iniziale.
Puoi selezionare uno o più elementi tenendo premuto il tasto Ctrl.

L'evento movimento nastro trasportatore simula lo spostamento del nastro trasportatore di una distanza specifica, simulando l'effetto del movimento nel tempo.
Questo è utile quando è necessario simulare un incremento specifico per elaborare un oggetto sul nastro trasportatore una volta percorsa una distanza specifica.

L'istruzione Crea oggetto permette di simulare un alimentatore creando un nuovo oggetto nell'ambiente di simulazione.
È necessario selezionare l'oggetto modello da creare e il riferimento genitore a cui gli elementi devono essere collegati.
Questa azione è utile per creare nuovi oggetti su un nastro trasportatore.

L'istruzione Elimina oggetti rimuove gli oggetti dall'ambiente di simulazione.
È necessario selezionare un oggetto modello che si desidera eliminare. Ogni oggetto che corrisponde al nome e alla geometria dello stesso oggetto viene eliminato quando questa azione viene attivata. L'oggetto modello selezionato e gli eventuali oggetti bloccati non vengono rimossi.
Questa istruzione aiuta a ripulire una simulazione terminata in cui sono stati creati molti oggetti tramite l'istruzione Crea oggetto.

L'istruzione Attendi oggetto attende che un oggetto entri in contatto con un altro oggetto per attivare un'azione specifica.
Questo evento è utile quando si desidera attivare un'azione in base al contatto tra oggetti. È comune inserire questa istruzione da sola in un programma eseguito in loop, che esegue un'azione specifica quando un oggetto entra in contatto con un sensore.

Le azioni che puoi eseguire quando un oggetto è in contatto con il sensore sono le seguenti:
1.Fermare un robot: è necessario selezionare il robot o il meccanismo che deve fermarsi.
2.Eliminare un oggetto: l'oggetto deve essere rimosso dalla stazione.
3.Attendere solo l'oggetto (per esempio, puoi attivare la presa di un oggetto da parte di un robot).
4.Spostare un oggetto verso un altro sistema di coordinate. Per esempio, per trasferire un oggetto da un nastro trasportatore ad un altro.

Fai doppio click sul 
1.Tasto destro sul programma
2.Seleziona Avvia
Una barra di simulazione si aprirà nella parte inferiore se si è cliccato due volte. È possibile trascinare la barra della simulazione per muovere la simulazione avanti o indietro.


RoboDK simula 5 volte più velocemente di un robot reale di default. Ciò significa che se un programma impiega 30 secondi per esser eseguito sarà simulato in 6. Velocizzare la simulazione aumenta la ratio a 100. Queste velocità posson esser modificate in Strumenti➔Opzioni➔Menu Movimento


Quando un programma è pronto per essere esportato al robot, puoi generare il file di programma richiesto dal controller del tuo robot.
Segui questi passaggi per generare un programma robot:
●Clicca con il tasto destro su un programma.
●Seleziona Genera programma robot (F6).
In seguito, il programma robot verrà visualizzato in un editor di testo.

I programmi robot vengono salvati per impostazione predefinita nella cartella Documenti (C:/Users/NomeUtente/Documents/RoboDK/Programs/). Puoi modificare questa cartella selezionando Strumenti➔Opzioni, seleziona la scheda Programma e fai click su Imposta accanto a Cartella programmi robot.
In alternativa, puoi anche fare click con il tasto destro su un programma e selezionare Genera programma robot come… (Shift+F6) per generare il programma specificando la posizione in cui vuoi salvarlo.
È possibile trasferire un programma dal computer direttamente al robot. Questa opzione solitamente manda il programma al robot tramite protocollo FTP o altri protocolli specifici, come socket o connessione seriale. Prima, è richiesto immettere l'IP del robot e i parametri dell'FTP nel menu connessione:
1.Tasto destro sul robot
2.Seleziona Connetti a robot... Una nuova finestra apparirà sulla sinistra.
3.Immetti l'IP del robot
4.Seleziona Più opzioni per immettere le impostazioni FTP e le credenziali

Una volta che le impostazioni della rete sono state fornite e il robot è propriamente connesso, segui questi passaggi per trasferire il programma al robot direttamente in RoboDK:
1.Tasto destro sul programma
2.Seleziona Invia programma al robot (Ctrl+F6)
Una finestra popup mostrerà il successo o il fallimento.
La conversione da simulazione RoboDK a programma robot specifico è fatta da un Post Processore. Il Post Processore definisce come programmi robot devono essere generati per uno specifico robot. Ogni robot ha uno specifico post processore di default in RoboDK.
Per selezionare uno specifico post processore per un robot:
1.Clicca con il tasto destro su un programma
2.Seleziona Seleziona Post Processore
3.Scegli un post processore dalla lista
4.Seleziona OK


La modifica è ora applicata e tutti i programmi possono essere generati nuovamente per vedere il risultato.
Post processori in RoboDK forniscono una flessibilità completa per generare programmi robot per requisiti specifici. RoboDK fornisce Post Processori per molte marche. Post Processori possono essere facilmente creati o modificati. Più informazioni sui post processori nella sezione dedicata ai post processori.
È possibile personalizzare il modo in cui vengono generati i programmi per il robot.
Segui questi passaggi per visualizzare le impostazioni di generazione dei programmi:
●Seleziona Strumenti➔Opzioni.
●Seleziona la scheda Programma.

Questo menu permette di personalizzare la generazione dei programmi, ad esempio:
●Dividere i movimenti giunti in passi più piccoli.
●Dividere i movimenti lineari in passi più piccoli.
●Convertire i movimenti circolari in piccoli movimenti lineari.
●Suddividere i programmi robot di grandi dimensioni in subprogrammi.
●Specificare la cartella predefinita in cui salvare i programmi robot.
●Specificare l'editor di testo predefinito per i programmi robot.
È possibile convertire facilmente i movimenti circolari in piccoli movimenti lineari durante la generazione dei programmi per il robot. Questo è utile se il controller non supporta i movimenti ad arco.
Segui questi passaggi per generare gli archi come piccoli movimenti lineari:
●Seleziona Strumenti➔Opzioni.
●Seleziona la scheda Programma.
●Seleziona Evita archi.
●Specifica la Dimensione massima arco (mm) che definisce la dimensione dei movimenti lineari lungo l'arco.

Programmi lunghi possono superare le limitazioni del controller. Le limitazioni del controller possono essere la dimensione del file o il numero di linee per programma. Per esempio, un programma robot fatto per la stampa 3D o la fresatura può superare il milione di linee per codice. In quel caso è meglio suddividere il programma in subprogrammi più piccoli, incluso un programma principale che avvia i subprogrammi in ordine.
Per dividere automaticamente un programma lungo:
1.Seleziona Strumenti➔Opzioni➔Programma
2.Seleziona Limita il numero massimo di linee per programma e fornisci il desiderato numero massimo di linee per programma per generare il file.

Quando generi un programma che richiama un subprogramma, RoboDK crea automaticamente un'istruzione per chiamare quel subprogramma. In alternativa, è possibile personalizzare l'output del programma per includere i subprogrammi direttamente nel programma principale (inline), evitando le chiamate di programma.
Segui questi passaggi per includere i subprogrammi in linea ed evitare le chiamate ai programmi offline:
●Seleziona Strumenti➔Opzioni.
●Seleziona la scheda Programma.
●Seleziona l'opzione Subprogrammi in linea.
Da questo momento in poi, quando generi programmi che contengono subprogrammi otterrai il contenuto di questi subprogrammi direttamente nel primo programma/programma principale.

I post processori e i driver robot utilizzano metodi diversi per muovere i robot. Mentre un post processore permette di generare programmi offline, un driver permette di avere una comunicazione in tempo reale con il robot.
Un post processore viene utilizzato per la programmazione offline ed è responsabile della conversione del programma robot RoboDK nel linguaggio di programmazione nativo del controller robot associato. Ad esempio, il post processore ABB genera file .mod per i controller IRC5. Il post processore include anche il caricamento del programma sul controller robot, spesso tramite FTP. Le seguenti funzionalità di un programma sono gestite dal post processore:
●Genera programma robot
●Genera programma robot come…
●Invia programma al robot
●Avvia su Robot (in combinazione con il driver)

Un driver robot permette il controllo remoto del robot dal computer utilizzando RoboDK. Questo consente di eseguire le istruzioni del programma da RoboDK sul controller del robot in tempo reale, inclusa la possibilità di richiamare programmi remoti sul controller. Ad esempio, il driver ABB invia comandi di movimento tramite comunicazione socket. Le seguenti funzionalità sono gestite dal driver:
●Attiva l'opzione Esegui su Robot, poi fai doppio click per eseguire il programma sul robot utilizzando il driver.
●Avvia su Robot (in combinazione con il post processore)
