Logikprogram

Beskrivning

PolyScope X-applikationer kan innehålla ett logikprogram som körs kontinuerligt i bakgrunden, oberoende av robotens huvudprogram. Detta är användbart för uppgifter som måste fortsätta köras när armen är avstängd, huvudprogrammet är pausat eller stoppat, eller när operatören har gått in i ett säkerhetsområde.


Typiska användningsområden är bland annat att upprätthålla fältbusskommunikation (Modbus, Ethernet/IP, PROFINET, Socket, XmlRPC), reagera på externa sensoringångar, rapportera robotens status till en produktions-PLC samt styra extern utrustning när huvudprogrammet avbryts.

Logikprogrammet kan inte använda funktioner som direkt rör robotarmen, ändrar nyttolasten eller modifierar TCP-parametrarna.

Exempel på tillämpningar med logikprogram

  1. Aktiv respons på extern sensorinformation medan roboten befinner sig i ett stopp-läge, såsom säkerhetsstopp, säkerhetsstopp eller Nödstopp, och huvudprogrammet är pausat eller stoppat, eller innan robotarmen slås på.

  2. Fältbusskommunikation (Modbus, Ethernet/IP, PROFINET, Socket, XmlRPC) upprätthålls även om robotarmen är avstängd och programmet inte körs.

  3. Kontinuerlig celllogikdrift medan huvudprogrammet avbryts av operatören.

  4. Robotstatusrapport, som överförs till produktionsstyrningsprogramvaran (produktions-PLC).

  5. Kontrollerat stopp av extern utrustning, såsom svetsmaskin, transportband och limdispenser, när huvudprogrammet stannar eller pausas.

  6. Operatörens inmatning registreras innan programmet startas.

  7. Anpassad återställning vid fel. Operatören kan bestämma vad som ska göras efter att huvudprogrammet har återupptagits.

  8. Byte av extern PLC-styrenhet i små robotceller.

Licens

Logic Program kräver en licens, som kan köpas via kundportalen.

 

Styra logikprogrammet

På programsidan väljer du Logikprogram i sidomenyn. I den utvidgade sidofältet visas kontrollerna för att navigera mellan de olika delarna av logikprogrammet. Det gör det också möjligt att starta, pausa, stoppa och återställa programmet.

 

Knappen för att köra programmet ändras till antingen Kör program eller Stoppa program, beroende på logikprogrammets status. Fungerar som en genväg till programstyrningsåtgärder som finns tillgängliga i snabbmenyn för logikprogrammet.

De fyra indikatorerna för logikprogrammet visar programmets aktuella status. De anger också om programmet är konfigurerat att starta automatiskt när ett program laddas.

 

Logik Programmets struktur

Ett logikprogram har samma strukturella avsnitt som ett huvudprogram:

  • Huvudprogrammet — körs kontinuerligt tills det stoppas manuellt, med en halt-instruktion eller på grund av ett körningsfel.
  • Innan start — körs en gång när logikprogrammet startar.
  • Moduler — funktioner och trådar, organiserade på samma sätt som i huvudprogrammet. Trådfunktioner körs som standard endast en gång; aktivera loop-alternativet för att köra en tråd kontinuerligt.

Robotprogrammet och logikprogrammet har vardera sin egen uppsättning globala variabler, en oberoende trådpool och en oberoende exekveringscykel. Att starta, stoppa eller avbryta ett program påverkar inte det andra. En stopp- eller paus- kommando påverkar endast det program där det utförs.

 

 

I avsnittet Innan du börjar kan du endast köra programmet en gång.

I avsnittet Moduler kan du se listan över funktioner och trådar som är tillgängliga för programmet.

 

Datautbyte med robotprogrammet

Det främsta sättet att kommunicera mellan robotprogrammet och logikprogrammet är via applikationsvariabler . Variabler kan både ställas in och läsas ut från roboten och logikprogrammet.

I det här exemplet räknas objekten som matas in i robotcellens inmatningsbuffert och antalet visas i robotprogrammet. Räknaren fortsätter att öka även när robotarmen är avstängd.

 

Avläsa robotens status

Robotens status kan avläsas via inbyggda RTDE-variabler . Dessa variabler kan läsas ut med hjälp av skriptfunktionen get_rtde_value() . En fullständig lista över tillgängliga RTDE-fält finns i RTDE-guiden .

Följande exempel visar hur man kontrollerar om Safeguard Stop är aktivt:


safety_status = get_rtde_value("safety_status")
# kontrollera om säkerhetsstopp och säkerhetsstopp
i automatiskt läge är aktiva  is_safeguard_stop_active = (safety_status == 5 or safety_status == 12)

 

I följande exempel kontrolleras om robotprogrammet är pausat:

is_program_paused = get_rtde_value("runtime_state") == 4

URScript Control API omsluter också denna funktionalitet.

 

Automatisk start av logikprogram

Du kan välja ett program som ska startas automatiskt när en applikation laddas. När du väljer alternativet Autostart startar logikprogrammet omedelbart efter att applikationen har laddats.

Du kan också starta logikprogrammet automatiskt när robotstyrenheten slås på och den senaste applikationen har laddats.

Funktionen Autostart fungerar oavsett driftsläge eller robotarmens status. När Autostart aktiveras vid start bekräftar ett snackbar-meddelande att logikprogrammet har startat.

 

 

Märket i sidofältet på ikonen för Logic Program visar alltid programmets aktuella status, oavsett om det körs eller är stoppat.

Det är ditt ansvar att säkerställa att logikprogrammet är säkert när roboten är påslagen och när olika applikationer laddas.

Logikprogram kan aktivera och inaktivera extern utrustning via kabelanslutningar eller PLC-anslutningar (Modbus, PROFINET, Ethernet/IP, Socket, direkta utgångar eller andra gränssnitt).

 

Moduler och trådar

Logikprogrammets funktionalitet kan organiseras i funktioner. Detta fungerar på samma sätt som i robotprogrammet.

Varje funktion kan markeras som en tråd . Som standard körs trådarna endast en gång. Markera kryssrutan Loop i trådfunktionen för att köra tråden kontinuerligt.

 

Delning av resurser

Även om robotprogrammet och logikprogrammet körs oberoende av varandra, vart och ett med sin egen pool av trådar och variabler, delar de alla samma hårdvaruresurser. Detta medför några begränsningar som programmeraren bör vara medveten om:

  • Logikprogrammets trådar körs på samma CPU som robotprogrammet. Körtiden för alla logikprogramtrådar läggs till körtiden för alla robotprogramtrådar. I extrema fall kan detta leda till felmeddelandet ”Runtime too much behind”.

  • Vissa kommunikationsresurser, såsom Modbus-signaler eller allmänna register, är delade resurser. Om man skriver till samma register samtidigt kan det leda till oväntade resultat. Dessutom kan det beteende som observeras för närvarande komma att förändras i framtiden när den underliggande implementeringen optimeras.

  • Modbus — En Modbus-klient delas. Signaler som skapas i något av programmen syns i båda.

  • Flexibel Ethernet/IP-adapter — Varje program öppnar sitt eget läs- eller skrivhandtag till samma instans. Handtag får inte skriva till samma datafält.

 

Begränsningar

  • Endast en delmängd av URScript-instruktionerna är tillgängliga i logikprogrammet.

  • Programkörningsindikatorer och felsökning med hjälp av brytpunkter stöds inte för logikprogrammet.

  • Tolkläge stöds inte i logikprogram. Tolkläget kan dock fortfarande startas i robotprogrammet medan logikprogrammet körs.