Program logic

Descriere

Aplicațiile PolyScope X pot include un program logic care rulează continuu în fundal, independent de programul principal al robotului. Această funcție este utilă pentru sarcinile care trebuie să continue să ruleze atunci când brațul este oprit, programul principal este pus în pauză sau oprit, sau când operatorul a intrat într-o zonă de siguranță.


Utilizările tipice includ menținerea comunicării prin bus de câmp (Modbus, Ethernet/IP, PROFINET, Socket, XmlRPC), reacția la intrările senzorilor externi, raportarea stării robotului către un PLC de producție și controlul echipamentelor externe atunci când programul principal se oprește.

Programul logic nu poate utiliza funcții care mișcă direct brațul robotului, modifică sarcina utilă sau modifică parametrii TCP.

Exemple de aplicații cu program logic

  1. Răspuns activ la semnalul de intrare al senzorului extern în timp ce robotul se află într-un mod de oprire, cum ar fi Oprire de siguranță, Oprire de protecție sau Oprire de urgență, iar programul principal este pus în pauză sau oprit, sau înainte ca brațul robotului să fie pornit.

  2. Comunicarea prin bus de câmp (Modbus, Ethernet/IP, PROFINET, Socket, XmlRPC) este menținută chiar și atunci când brațul robotului este oprit și programul nu rulează.

  3. Funcționarea continuă a logicii celulei în timp ce programul principal este întrerupt de operator.

  4. Raportul privind starea robotului, care este transmis către software-ul de control al producției (PLC de producție).

  5. Oprirea controlată a echipamentelor externe, cum ar fi aparatul de sudură, transportorul, dozatorul de adeziv, atunci când programul principal se oprește sau intră în pauză.

  6. Datele introduse de operator sunt înregistrate înainte de pornirea programului.

  7. Re recuperare personalizată în cazul apariției unor defecțiuni. Operatorul poate decide ce să facă după reluarea programului principal.

  8. Înlocuirea controlerului PLC extern în celule robotizate de mici dimensiuni.

Licență

Programul Logic necesită o licență, care poate fi achiziționată prin intermediul portalului pentru clienți.

 

Controlul programului logic

În pagina „Program”, selectați „Program logic ” din bara laterală. Bara laterală extinsă afișează comenzile pentru navigarea între diferitele părți ale programului logic. De asemenea, vă permite să porniți, să puneți în pauză, să opriți și să resetați programul.

 

Butonul de executare a programului se transformă fie în „Executare program”, fie în „Oprire program”, în funcție de starea programului logic. Acesta funcționează ca o comandă rapidă pentru acțiunile de control al programului disponibile în meniul contextual al Programului logic.

Cei patru indicatori ai programului Logic prezintă starea actuală a programului. De asemenea, acestea indică dacă programul este configurat să pornească automat la încărcarea unei aplicații.

 

Structura programului logic

Un program logic are aceleași secțiuni structurale ca și un program principal:

  • Corpul principal al programului — rulează continuu până când este oprit manual, cu o instrucțiune de oprire sau ca urmare a unei erori de execuție.
  • Înainte de pornire — se execută o singură dată la pornirea programului logic.
  • Module — funcții și fire de execuție, organizate în același mod ca în programul principal. Funcțiile thread-urilor se execută o singură dată în mod implicit; activați opțiunea de buclă pentru a rula un thread în mod continuu.

Programul robotului și programul logic au fiecare propriul set de variabile globale, un pool de thread-uri independent și un ciclu de viață de execuție independent. Pornirea, oprirea sau apariția unei erori într-un program nu oprește celălalt program. O instrucțiune de oprire sau de pauză afectează numai programul în care este executată.

 

 

În secțiunea Înainte de pornire , puteți rula programul o singură dată.

În secțiunea Module puteți vedea lista funcțiilor și a thread-urilor disponibile pentru program.

 

Schimbul de date cu programul robotului

Principala modalitate de comunicare între programul robotului și programul logic este prin intermediul variabilelor de aplicație . Variabilele pot fi atât setate, cât și citite din robot și din programul logic.

Acest exemplu numără elementele care intră în bufferul de intrare al celulei robotului și afișează numărul acestora în programul robotului. Contorul continuă să crească chiar și atunci când brațul robotului este oprit.

 

Citirea stării robotului

Starea robotului poate fi accesată prin intermediul variabilelor RTDE încorporate. Aceste variabile pot fi citite folosind funcția de script get_rtde_value() . Pentru o listă completă a câmpurilor RTDE disponibile, consultați Ghidul RTDE.

Următorul exemplu arată cum se verifică dacă funcția „Safeguard Stop” este activă:


safety_status = get_rtde_value("safety_status")
# verifică dacă este activat oprirea de siguranță și modul automat de oprire
de siguranță  is_safeguard_stop_active = (safety_status == 5 or safety_status == 12)

 

Următorul exemplu verifică dacă programul robotului este pus în pauză:

is_program_paused = get_rtde_value("runtime_state") == 4

API-ul URScript Control integrează, de asemenea, această funcționalitate.

 

Pornirea automată a programului logic

Puteți selecta un program care să fie pornit automat la încărcarea unei aplicații. Când selectați opțiunea Autostart , programul logic pornește imediat după încărcarea aplicației.

De asemenea, puteți porni automat programul logic atunci când controlerul robotului este pornit și ultima aplicație este încărcată.

Funcția Autostart funcționează indiferent de modul de funcționare sau de starea brațului robotului. Când funcția Autostart este declanșată la încărcare, o notificare de tip snackbar confirmă că programul logic a pornit.

 

 

Insigna din bara laterală de pe pictograma programului Logic indică întotdeauna starea curentă a programului, indiferent dacă acesta rulează sau este oprit.

Este responsabilitatea dumneavoastră să vă asigurați că programul logic este sigur atunci când robotul este pornit și când sunt încărcate diferite aplicații.

Programele logice pot activa și dezactiva echipamente externe utilizând conexiuni prin cablu sau PLC (Modbus, PROFINET, Ethernet/IP, Socket, ieșiri directe sau alte interfețe).

 

Module și fire de execuție

Funcționalitatea programului logic poate fi organizată în funcții. Aceasta funcționează în același mod ca în programul robotului.

Fiecare funcție poate fi marcată ca un Thread . În mod implicit, procesele sunt executate o singură dată. Bifați caseta de selectare Loop din funcția de thread pentru a executa thread-ul în mod continuu.

 

Partajarea resurselor

Deși programul robotului și programul logic sunt executate independent, fiecare având propriul set de fire de execuție și variabile, toate partajează aceleași resurse hardware. Acest lucru impune câteva limitări de care programatorul trebuie să fie conștient:

  • Firele programului logic se execută pe același procesor ca și programul robotului. Timpul de execuție al tuturor firelor de program logic se va adăuga la timpul de execuție al tuturor firelor de program ale robotului. În cazuri extreme, acest lucru poate duce la apariția erorii „Runtime too much behind”.

  • Anumite resurse de comunicație, cum ar fi semnalele Modbus sau registrele de uz general, sunt resurse partajate. Scrierea simultană în același registru va avea rezultate neașteptate. În plus, comportamentul observat în prezent se poate modifica în viitor, odată cu optimizarea implementării subiacente.

  • Modbus — Se utilizează un singur client Modbus. Semnalele generate în oricare dintre programe sunt vizibile în ambele.

  • Adaptor flexibil Ethernet/IP — Fiecare program deschide propriul său identificator de citire sau scriere către aceeași instanță. Mânerele nu trebuie să scrie în aceleași câmpuri de date.

 

Limitări

  • În programul logic este disponibil doar un subset al instrucțiunilor URScript.

  • Indicatorii de execuție a programului și depanarea bazată pe puncte de întrerupere nu sunt acceptate pentru programul logic.

  • Modul de interpretare nu este acceptat în programele logice. Cu toate acestea, modul de interpretare poate fi pornit în continuare în programul robotului în timp ce programul logic este în execuție.