Controller 

Controller_To_Jointstate_Scaling(Funksjonsblokk)


Tar inn enkoderverdier og lagrer forrige enkoderverdi. Ved å ta forskjellen, og så multiplisere dem med forholdet mellom enkoderverdi og radianer, 2*pi / 1024 = 0.0061 gir endring i enkoderverdi i radianer. Ved å ta forrige vinkelverdi å addere forskjellen får man hva vinkel leddet er på. Dette blir iterert for hvert ledd. Etter blir vinkelverdien begrenset mellom 2*pi og 2*pi, altså de fysiske begrensingene. xCalibrate setter vinkelene til [0, -1.5708(-90deg), 0, 0, 0 ,0), som er kalibreringsposisjonen

MQTT_to_gripLength(Funksjon)

Tar inn string og konverterer til integer. Reservert for å måle griplength fra MQTT

MQTT_to_calibrateButton(Funksjon)

Tar inn string og konverterer til bool. Reservert for å måle knappstatus fra MQTT

subscriber

Gir ut stringdata fra MQTT topic definert av xTopic. xOnSwitch skrur listener på eller av. xError gir feilmelding viss MQTT feiler.

Generelle funksjonsblokker

Split_string_to_int(Funksjonsblokk)

Reservert for å behandle MQTT vinkeldata. Splitter opp den 24 byte lange stringen i 6 like deler på 4, og konverterer dem til integer. Dette blir lagret i array of int og sendt til output.

Queue_system(Funksjonsblokk)

Køsystemblokken sikrer at UR-roboten følger kontrollerens bane med stor nøyaktighet. Dette oppnås ved å lagre mellomliggende punkter når kontrolleren manipuleres imellom 2 posisjoner. Deretter kontrollerer den UR-roboten gjennom disse veipunktene ved å overvåke eventuelle avvik fra robotens faktiske posisjon basert på tilbakemeldinger.

visualization_HMI(Funksjonsblokk)

Visualiseringsblokken gjør det enklere å tilordne variabler til knapper, slidere og tekstfelt. Dette forenkler prosessen med å raskt justere og omkoble disse elementene ved endringer. I tillegg bidrar den til å holde variablene i simuleringen organisert og oversiktlig.

Modbus funksjonsblokker

jointstate_to_modbus(Funksjonsblokk)

Reservert for å behandle ferdigskalert vinkeldata. Tar inn vinkeldata av typen REAL (float) og konverterer den til DWORD (16bit unsigned). Dette blir gjort ved å subtrahere -6.283 (maks negativ verdi av enhver vinkel) og multipliserer med 1000. Deretter blir alle desimal kuttet vekk. Viss en verdi er under -6.283 eller over 6.283 returnerer den feilkode.

modbus_to_jointstate(Funksjonsblokk)

Gjør det motsatte av funksjonsblokken over. Men sjekker fremdeles om verdiene er utenfor grensen.

Gripper_to_modbus(Funksjon)

Funksjonsblokken konverterer en flyttallverdi fra inngangen som representer den ønskede posisjonen til en gripper, til datavardien DWORD. Dette gjør den slik at tallet blir gjort om til en verdi som kan sendes i modbus. Den gjør dette ved å multiplisere inngangs verdien med 10 for å bevare et decimals presisjon og deretter konvertere resultatet til et 16-bit data verdi. Gripper verdien trenger bare 1 decimals presisjon.


  • No labels