Logikprogram

Beskrivelse

PolyScope X-applikationer kan omfatte et logikprogram , der kører kontinuerligt i baggrunden, uafhængigt af robotens hovedprogram. Dette er nyttigt til opgaver, der skal fortsætte med at køre, når armen er slukket, hovedprogrammet er sat på pause eller stoppet, eller operatøren er trådt ind i et sikkerhedsområde.


Typiske anvendelser omfatter opretholdelse af feltbuskommunikation (Modbus, Ethernet/IP, PROFINET, Socket, XmlRPC), reaktion på eksterne sensorindgange, rapportering af robotstatus til en produktions-PLC samt styring af eksternt udstyr, når hovedprogrammet stopper.

Logikprogrammet kan ikke anvende funktioner, der direkte bevæger robotarmen, ændrer nyttelasten eller ændrer TCP-parametrene.

Eksempler på anvendelser med logikprogram

  1. Aktiv reaktion på input fra eksterne sensorer, mens robotten er i en stop-tilstand, såsom Safeguard Stop, beskyttelsesstop eller Nødstop, og hovedprogrammet er sat på pause eller stoppet, eller før robotarmen er tændt.

  2. Fieldbus-kommunikation (Modbus, Ethernet/IP, PROFINET, Socket, XmlRPC) opretholdes, selvom robotarmen er slukket, og programmet ikke kører.

  3. Kontinuerlig drift af cellelogikken, mens hovedprogrammet afbrydes af operatøren.

  4. Robotstatusrapport, som overføres til produktionsstyringssoftwaren (produktions-PLC).

  5. Kontrolleret stop af eksternt udstyr, såsom svejsemaskine, transportbånd og limdispenser, når hovedprogrammet stopper eller sættes på pause.

  6. Indtastninger fra operatøren registreres, inden programmet startes.

  7. Tilpasset gendannelse i tilfælde af fejl. Operatøren kan selv bestemme, hvad der skal ske, når hovedprogrammet genoptages.

  8. Udskiftning af ekstern PLC-styring i små robotceller.

Licens

Logic Program kræver en licens, som kan købes via kundeportalen.

 

Styring af logikprogrammet

På siden Program skal du vælge Logikprogram i sidepanelet. Den udvidede sidebjælke viser kontrolelementerne til navigation i de forskellige dele af logikprogrammet. Det giver dig også mulighed for at starte, sætte på pause, stoppe og nulstille programmet.

 

Knappen "Kør program" skifter til enten Kør program eller Stop program, afhængigt af logikprogrammets tilstand. Fungerer som en genvej til programstyringshandlinger, der er tilgængelige i kontekstmenuen for logikprogrammet.

De fire indikatorer for logikprogrammet viser programmets aktuelle tilstand. De angiver også, om programmet er konfigureret til at starte automatisk, når et program indlæses.

 

Logisk programstruktur

Et logikprogram har de samme strukturelle afsnit som et hovedprogram:

  • Hovedprogrammet — kører kontinuerligt, indtil det stoppes manuelt, med en stop- instruktion eller på grund af en kørselsfejl.
  • Før start — køres én gang, når logikprogrammet starter.
  • Moduler — funktioner og tråde, organiseret på samme måde som i hovedprogrammet. Trådfunktioner udføres som standard kun én gang; aktiver loop-indstillingen for at køre en tråd kontinuerligt.

Robotprogrammet og logikprogrammet har hver deres eget sæt globale variabler, uafhængig trådpulje og uafhængig udførelsescyklus. Start, stop eller fejl i ét program stopper ikke det andet. En stop- eller pause- kommando påvirker kun det program, hvor den udføres.

 

 

I afsnittet Før start kan du kun køre programmet én gang.

I afsnittet Moduler kan du se listen over funktioner og tråde, der er tilgængelige for programmet.

 

Udveksling af data med robotprogrammet

Den primære måde at kommunikere mellem robotprogrammet og logikprogrammet på er via applikationsvariabler . Variabler kan både indstilles og aflæses fra robotten og logikprogrammet.

Dette eksempel tæller emner, der kommer ind i robotcellens indgangsbuffer, og viser antallet til robotprogrammet. Tælleren fortsætter med at tælle, selv når robotarmen er slukket.

 

Aflæsning af robotstatus

Robottens tilstand kan aflæses via indbyggede RTDE-variabler . Disse variabler kan aflæses ved hjælp af scriptfunktionen get_rtde_value() . Se RTDE-vejledningen for en komplet liste over tilgængelige RTDE-felter.

Følgende eksempel viser, hvordan man kontrollerer, om Safeguard Stop er aktivt:


safety_status = get_rtde_value("safety_status")
# kontroller for sikkerhedsstop og sikkerhedsstop
i automatisk tilstand  is_safeguard_stop_active = (safety_status == 5 or safety_status == 12)

 

Følgende eksempel kontrollerer, om robotprogrammet er sat på pause:

is_program_paused = get_rtde_value("runtime_state") == 4

URScript Control API omfatter også denne funktionalitet.

 

Automatisk start af logikprogram

Du kan vælge et program, der skal startes automatisk, når et program indlæses. Når du vælger indstillingen Autostart , starter logikprogrammet straks, efter at applikationen er indlæst.

Du kan også starte logikprogrammet automatisk, når robotcontrolleren tændes, og den sidste applikation indlæses.

Autostart -funktionen virker uanset driftsmodus eller robotarmens tilstand. Når Autostart udløses ved indlæsning, bekræfter en snackbar-meddelelse, at logikprogrammet er startet.

 

 

Badget i sidepanelet på ikonet for Logic-programmet viser altid programmets aktuelle tilstand, uanset om det kører eller er stoppet.

Det er dit ansvar at sikre, at logikprogrammet er sikkert, når robotten er tændt, og når forskellige applikationer indlæses.

Logikprogrammer kan aktivere og deaktivere eksternt udstyr ved hjælp af kabelforbindelser eller PLC-forbindelser (Modbus, PROFINET, Ethernet/IP, Socket, direkte udgange eller andre grænseflader).

 

Moduler og tråde

Logikprogrammets funktionalitet kan organiseres i funktioner. Dette fungerer på samme måde som i robotprogrammet.

Hver funktion kan markeres som en tråd . Som standard udføres trådene kun én gang. Markér afkrydsningsfeltet Loop i trådfunktionen for at køre tråden kontinuerligt.

 

Deling af ressourcer

Selvom robotprogrammet og logikprogrammet kører uafhængigt af hinanden, hver med deres egen pulje af tråde og variabler, deler de alle de samme hardwareressourcer. Dette medfører nogle få begrænsninger, som programmøren bør være opmærksom på:

  • Logiske programtråde kører på samme CPU som robotprogrammet. Køretiden for alle logiske programtråde lægges sammen med køretiden for alle robotprogramtråde. Dette kan i ekstreme tilfælde føre til en fejlmeddelelse om, at "Runtime er for langt bagud".

  • Nogle kommunikationsressourcer, såsom Modbus-signaler eller generelle registre, er delte ressourcer. Skrivning til det samme register på samme tid vil medføre uventede resultater. Desuden kan den adfærd, der observeres i øjeblikket, ændre sig i fremtiden, når den underliggende implementering optimeres.

  • Modbus — Der deles én Modbus-klient. Signaler, der oprettes i et af programmerne, kan ses i begge.

  • Fleksibel Ethernet/IP-adapter — Hvert program åbner sit eget læse- eller skrivehåndtag til den samme instans. Håndtag må ikke skrive til de samme datafelter.

 

Begrænsninger

  • Kun en delmængde af URScript-instruktionerne er tilgængelige i logikprogrammet.

  • Programudførelsesindikatorer og fejlfinding baseret på breakpoints understøttes ikke for logikprogrammet.

  • Tolkemodus understøttes ikke i logiske programmer. Interpreter-tilstand kan dog stadig startes i robotprogrammet, mens logikprogrammet kører.