Logicaprogramma

Beschrijving

PolyScope X-toepassingen kunnen een logisch programma bevatten dat continu op de achtergrond draait, onafhankelijk van het hoofdprogramma van de robot. Dit is handig voor taken die moeten blijven draaien wanneer de robotarm is uitgeschakeld, het hoofdprogramma is gepauzeerd of gestopt, of de operator een veiligheidszone is binnengegaan.


Typische toepassingen zijn onder meer het onderhouden van veldbuscommunicatie (Modbus, Ethernet/IP, PROFINET, Socket, XmlRPC), het reageren op externe sensoringangen, het rapporteren van de robotstatus aan een productie-PLC en het aansturen van externe apparatuur wanneer het hoofdprogramma stopt.

In het logische programma kunnen geen functies worden gebruikt die de robotarm rechtstreeks verplaatsen, de belasting wijzigen of de TCP-parameters aanpassen.

Voorbeelden van toepassingen met een logisch programma

  1. Actieve reactie op externe sensoringang terwijl de robot zich in een stopmodus bevindt, zoals Safeguard Stop, beschermende stop of noodstop, en het hoofdprogramma is gepauzeerd of gestopt, of voordat de robotarm wordt ingeschakeld.

  2. Fieldbus-communicatie (Modbus, Ethernet/IP, PROFINET, Socket, XmlRPC) blijft in stand, zelfs als de robotarm is uitgeschakeld en het programma niet draait.

  3. De cel logische bewerkingen worden voortgezet terwijl het hoofdprogramma door de operator wordt onderbroken.

  4. Robotstatusrapport, dat wordt doorgegeven aan de productiebesturingssoftware (productie-PLC).

  5. Gecontroleerde uitschakeling van externe apparatuur, zoals een lasapparaat, transportband of lijmdispenser, wanneer het hoofdprogramma stopt of wordt gepauzeerd.

  6. De invoer van de operator wordt vastgelegd voordat het programma wordt gestart.

  7. Aangepast herstel bij storingen. De operator kan zelf bepalen wat er moet gebeuren nadat het hoofdprogramma is hervat.

  8. Vervanging van de externe PLC-controller in kleine robotcellen.

Licentie

Voor Logic Program is een licentie vereist, die via het klantenportaal kan worden aangeschaft.

 

Het logica-programma aansturen

Selecteer op de pagina Programma in de zijbalk de optie Logisch programma . De uitgevouwen zijbalk toont de bedieningselementen voor het navigeren door de verschillende onderdelen van het logische programma. Hiermee kunt u het programma ook starten, pauzeren, stoppen en resetten.

 

De knop ‘Programma uitvoeren’ verandert in ‘Programma uitvoeren ’ of ‘Programma stoppen’, afhankelijk van de status van het logische programma. Dit fungeert als een snelkoppeling voor acties voor programmabesturing die beschikbaar zijn in het contextmenu van het logische programma.

De vier Logic Program-indicatoren geven de huidige status van het programma weer. Ze geven ook aan of het programma zo is geconfigureerd dat het automatisch wordt gestart wanneer een toepassing wordt geladen.

 

Structuur van het logische programma

Een logisch programma heeft dezelfde structurele onderdelen als een hoofdprogramma:

  • Hoofdprogramma — wordt continu uitgevoerd totdat het handmatig wordt gestopt, met een stopinstructie of door een runtime-fout.
  • Voor de start — wordt één keer uitgevoerd wanneer het logische programma start.
  • Modules — functies en threads, op dezelfde manier georganiseerd als in het hoofdprogramma. Threadfuncties worden standaard slechts één keer uitgevoerd; schakel de lusoptie in om een thread continu te laten draaien.

Het robotprogramma en het logische programma hebben elk hun eigen set globale variabelen, een onafhankelijke threadpool en een onafhankelijke uitvoeringscyclus. Het starten, stoppen of een storing in het ene programma heeft geen invloed op het andere programma. Een stop- of pauze-instructie heeft alleen invloed op het programma waarin deze wordt uitgevoerd.

 

 

In het gedeelte Voordat u begint kunt u het programma slechts één keer uitvoeren.

In het gedeelte Modules kunt u de lijst met functies en threads bekijken die beschikbaar zijn voor het programma.

 

Gegevens uitwisselen met het robotprogramma

De belangrijkste manier waarop het robotprogramma en het logische programma met elkaar communiceren, is via toepassingsvariabelen . Variabelen kunnen zowel worden ingesteld als uitgelezen vanuit de robot en het logische programma.

In dit voorbeeld worden de items geteld die de invoerbuffer van de robotcel binnenkomen en wordt het aantal weergegeven in het robotprogramma. De teller blijft oplopen, zelfs als de robotarm is uitgeschakeld.

 

De status van de robot aflezen

De status van de robot is beschikbaar via ingebouwde RTDE-variabelen . Deze variabelen kunnen worden uitgelezen met behulp van de scriptfunctie get_rtde_value() . Zie de RTDE-handleiding voor een volledige lijst van beschikbare RTDE-velden.

Het volgende voorbeeld laat zien hoe u kunt controleren of 'Safeguard Stop' actief is:


safety_status = get_rtde_value("safety_status")
# controleer op 'Safeguard Stop' en 'Automatic Mode Safeguard Stop'
is_safeguard_stop_active = (safety_status == 5 or safety_status == 12)

 

Het volgende voorbeeld controleert of het robotprogramma is gepauzeerd:

is_program_paused = get_rtde_value("runtime_state") == 4

De URScript Control API biedt ook toegang tot deze functionaliteit.

 

Logisch programma automatisch starten

U kunt een programma selecteren dat automatisch wordt gestart wanneer een toepassing wordt geladen. Wanneer u de optie Autostart selecteert, wordt het Logic-programma onmiddellijk gestart nadat de toepassing is geladen.

U kunt het Logic-programma ook automatisch starten wanneer de robotcontroller wordt ingeschakeld en de laatste toepassing is geladen.

De Autostart-functie werkt ongeacht de bedrijfsmodus of de status van de robotarm. Wanneer Autostart bij het laden wordt geactiveerd, bevestigt een snackbar-melding dat het Logic-programma is gestart.

 

 

Het pictogram in de zijbalk bij het icoontje 'Logic Program' geeft altijd de huidige status van het programma aan, of het nu actief is of gestopt.

Het is uw verantwoordelijkheid om ervoor te zorgen dat het logische programma veilig is wanneer de robot is ingeschakeld en wanneer verschillende toepassingen worden geladen.

Logische programma's kunnen externe apparatuur in- en uitschakelen via bekabelde of PLC-verbindingen (Modbus, PROFINET, Ethernet/IP, Socket, directe uitgangen of andere interfaces).

 

Modules en threads

De functionaliteit van het logische programma kan in functies worden georganiseerd. Dit werkt op dezelfde manier als in het robotprogramma.

Elke functie kan worden gemarkeerd als een Thread . Standaard worden de threads slechts één keer uitgevoerd. Schakel het selectievakje Loop bij de thread-functie in om de thread continu uit te voeren.

 

Hulpbronnen delen

Hoewel het robotprogramma en het Logic-programma onafhankelijk van elkaar worden uitgevoerd, elk met hun eigen pool van threads en variabelen, delen ze allemaal dezelfde hardwarebronnen. Dit brengt enkele beperkingen met zich mee waar programmeurs rekening mee moeten houden:

  • Logische programmastrengen worden op dezelfde CPU uitgevoerd als het robotprogramma. De uitvoeringstijd van alle logische programmastrengen wordt opgeteld bij de uitvoeringstijd van alle robotprogrammastrengen. Dit kan in extreme gevallen leiden tot de foutmelding "Runtime too much behind".

  • Sommige communicatiemiddelen, zoals Modbus-signalen of registers voor algemeen gebruik, zijn gedeelde middelen. Als u tegelijkertijd naar hetzelfde register schrijft, leidt dit tot onverwachte resultaten. Bovendien kan het momenteel waargenomen gedrag in de toekomst veranderen wanneer de onderliggende implementatie wordt geoptimaliseerd.

  • Modbus — Er wordt één Modbus-client gedeeld. Signalen die in een van beide programma's worden gegenereerd, zijn in beide zichtbaar.

  • Flexibele Ethernet/IP-adapter — Elk programma opent zijn eigen lees- of schrijfhandle naar dezelfde instantie. Handles mogen niet naar dezelfde gegevensvelden schrijven.

 

Beperkingen

  • In het logische programma is slechts een deel van de URScript-instructies beschikbaar.

  • Programma-uitvoeringsindicatoren en foutopsporing op basis van breekpunten worden niet ondersteund voor het logische programma.

  • De tolkmodus wordt niet ondersteund in Logic-programma's. De interpretermodus kan echter nog steeds worden gestart in het robotprogramma terwijl het logische programma wordt uitgevoerd.