Programma logico

Descrizione

Le applicazioni di PolyScope X possono includere un programma logico che viene eseguito in modo continuo in background, indipendentemente dal programma principale del robot. Ciò è utile per le attività che devono continuare a funzionare quando il braccio è spento, il programma principale è in pausa o arrestato, oppure quando l'operatore è entrato in un'area di sicurezza.


Gli utilizzi tipici includono il mantenimento della comunicazione fieldbus (Modbus, Ethernet/IP, PROFINET, Socket, XmlRPC), la risposta agli input dei sensori esterni, la segnalazione dello stato del robot a un PLC di produzione e il controllo delle apparecchiature esterne quando il programma principale si arresta.

Il programma logico non può utilizzare funzioni che muovono direttamente il braccio del robot, modificano il carico utile o modificano i parametri TCP.

Esempi di applicazioni con Logic Program

  1. Risposta attiva a un input proveniente da un sensore esterno mentre il robot si trova in una modalità di arresto, come Arresto di sicurezza, Arresto di protezione o Arresto di emergenza, e il programma principale è in pausa o arrestato, oppure prima che il braccio del robot venga alimentato.

  2. La comunicazione Fieldbus (Modbus, Ethernet/IP, PROFINET, Socket, XmlRPC) viene mantenuta anche se il braccio del robot è spento e il programma non è in esecuzione.

  3. Funzionamento continuo della logica di cella mentre il programma principale viene interrotto dall'operatore.

  4. Rapporto sullo stato del robot, che viene trasmesso al software di controllo della produzione (PLC di produzione).

  5. Arresto controllato delle apparecchiature esterne, quali saldatrici, nastri trasportatori, dosatori di colla, quando il programma principale si arresta o viene messo in pausa.

  6. I dati inseriti dall'operatore vengono acquisiti prima dell'avvio del programma.

  7. Ripristino personalizzato in caso di condizioni di guasto. L'operatore può decidere cosa fare dopo aver ripreso il programma principale.

  8. Sostituzione del controllore PLC esterno nelle piccole celle robotizzate.

Licenza

Logic Program richiede una licenza, che può essere acquistata tramite il portale clienti.

 

Controllo del programma logico

Nella pagina Programma, selezionare Programma logico nella barra laterale. La barra laterale espansa mostra i comandi per la navigazione tra le diverse parti del programma logico. Consente inoltre di avviare, mettere in pausa, arrestare e ripristinare il programma.

 

Il pulsante "Esegui programma" assume l'etichetta " Esegui programma " o " Interrompi programma", a seconda dello stato del programma logico. Funge da scorciatoia per le azioni di controllo del programma disponibili nel menu contestuale del programma logico.

I quattro indicatori del Programma Logic mostrano lo stato attuale del programma. Indicano inoltre se il programma è configurato per avviarsi automaticamente all'avvio di un'applicazione.

 

Struttura di programma logico

Un programma logico presenta le stesse sezioni strutturali di un programma principale:

  • Corpo principale del programma — viene eseguito in modo continuo fino a quando non viene interrotto manualmente, tramite un'istruzione halt o a causa di un errore di esecuzione.
  • Prima dell'avvio — viene eseguito una volta all'avvio del programma logico.
  • Moduli — funzioni e thread, organizzati allo stesso modo del programma principale. Per impostazione predefinita, le funzioni dei thread vengono eseguite una sola volta; abilitare l'opzione "loop" per eseguire un thread in modo continuo.

Il programma del robot e il programma logico dispongono ciascuno di un proprio insieme di variabili globali, di un pool di thread indipendente e di un ciclo di vita di esecuzione indipendente. L'avvio, l'arresto o il malfunzionamento di un programma non interrompe l'esecuzione dell'altro. Un comando di arresto o pausa influisce solo sul programma in cui viene eseguito.

 

 

Nella sezione Prima di iniziare è possibile eseguire il programma una sola volta.

Nella sezione Moduli è possibile visualizzare l'elenco delle funzioni e dei thread disponibili per il programma.

 

Scambio di dati con il programma del robot

Il principale metodo di comunicazione tra il programma del robot e il programma logico avviene tramite le variabili dell'applicazione . Le variabili possono essere sia impostate che lette dal robot e dal programma logico.

Questo esempio conta gli elementi che entrano nel buffer di ingresso della cella robotica e visualizza il conteggio nel programma del robot. Il contatore continua ad aumentare anche quando il braccio del robot è spento.

 

Lettura dello stato del robot

Lo stato del robot è accessibile tramite le variabili RTDE integrate. Queste variabili possono essere lette utilizzando la funzione di script get_rtde_value() . Per un elenco completo dei campi RTDE disponibili, consultare la Guida RTDE .

L'esempio seguente mostra come verificare se la funzione "Safeguard Stop" è attiva:


safety_status = get_rtde_value("safety_status")
# verifica la presenza di "Safeguard Stop" e "Automatic Mode Safeguard Stop
"  is_safeguard_stop_active = (safety_status == 5 or safety_status == 12)

 

L'esempio seguente verifica se il programma del robot è in pausa:

is_program_paused = get_rtde_value("runtime_state") == 4

Anche l'API di controllo URScript integra questa funzionalità.

 

Avvio automatico del programma logico

È possibile selezionare un programma da avviare automaticamente all'avvio di un'applicazione. Quando si seleziona l'opzione Avvio automatico , il programma logico si avvia immediatamente dopo il caricamento dell'applicazione.

È inoltre possibile avviare automaticamente il programma logico all'accensione del controller del robot e al caricamento dell'ultima applicazione.

La funzione Autostart funziona indipendentemente dalla modalità operativa o dallo stato del braccio del robot. Quando l'avvio automatico viene attivato al caricamento, una notifica a barra di avviso conferma che il programma logico è stato avviato.

 

 

Il badge nella barra laterale sull'icona del programma Logic indica sempre lo stato attuale del programma, ovvero se è in esecuzione o in pausa.

È responsabilità dell’utente garantire che il programma logico sia sicuro quando il robot è acceso e quando vengono caricate diverse applicazioni.

I programmi logici possono attivare e disattivare apparecchiature esterne tramite connessioni cablate o PLC (Modbus, PROFINET, Ethernet/IP, Socket, uscite dirette o altre interfacce).

 

Moduli e thread

Le funzionalità del programma logico possono essere organizzate in funzioni. Funziona allo stesso modo del programma del robot.

Ogni funzione può essere contrassegnata come thread. Per impostazione predefinita, i thread vengono eseguiti una sola volta. Selezionare la casella di controllo Loop nella funzione thread per eseguire il thread in modo continuo.

 

Condivisione delle risorse

Sebbene il programma del robot e il programma logico vengano eseguiti in modo indipendente, ciascuno con il proprio pool di thread e variabili, entrambi condividono le stesse risorse hardware. Ciò comporta alcune limitazioni di cui il programmatore dovrebbe essere a conoscenza:

  • I thread del programma logico vengono eseguiti sulla stessa CPU del programma del robot. Il tempo di esecuzione di tutti i thread del programma logico si sommerà al tempo di esecuzione di tutti i thread del programma del robot. In casi estremi, ciò può causare la violazione "Runtime troppo in ritardo".

  • Alcune risorse di comunicazione, come i segnali Modbus o i registri generici, sono risorse condivise. La scrittura simultanea nello stesso registro comporterà risultati imprevisti. Inoltre, il comportamento attualmente osservato potrebbe cambiare in futuro, quando l'implementazione sottostante verrà ottimizzata.

  • Modbus — Viene condiviso un unico client Modbus. I segnali generati in uno dei due programmi sono visibili in entrambi.

  • Adattatore flessibile Ethernet/IP — Ogni programma apre il proprio handle di lettura o scrittura sulla stessa istanza. I gestori non devono scrivere negli stessi campi dati.

 

Limiti

  • Nel programma logico è disponibile solo un sottoinsieme delle istruzioni URScript.

  • Gli indicatori di esecuzione del programma e il debug basato sui punti di interruzione non sono supportati per il programma logico.

  • La modalità interprete non è supportata nei programmi logici. Tuttavia, è comunque possibile avviare la modalità interprete nel programma del robot mentre il programma logico è in esecuzione.