Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

I oppsettet vår imellom robot og PLS så støttes kun 16-bit informasjon. Dette skaper problemer da når vi skal lese over vinkler til og fra roboten kommer disse ofte i positive og negative komma tall. Så for å løse dette må vi endre tallet før vi sender det over. Disse tallene varierer imellom -π og π da roboten har en 360 grader +/- arbeidsområde. 



Forsøk 1:

På grunn av begrensningene til 16-bit data, som ikke tillater overføring av negative tall eller desimaltall direkte, måtte vi finne en løsning:

  1. Endre tallet til positivt: Vi tok det opprinnelige tallet og la til π (pi) på det, slik at verdien alltid ble positivt.

  2. Multiplisere med 1000: For å kunne behandle desimaltall, multipliserte vi tallet med 1000. Dette gjorde at hvis tallet besto av et naturlig tall pluss syv desimaltall, ble det transformert til fire naturlige tall pluss fire desimaltall.

  3. Bruk av Trunc-funksjonen: Deretter brukte vi Trunc-funksjonen for å fjerne desimalene helt. Dette resulterte i et heltall som kunne sendes over som en 16-bit verdi.

  4. Overføring via 16-bit verdi: Dette heltallet ble deretter sendt til enheten via en 16-bit verdi.

Når tallet ble mottatt på enheten, ble prosessen reversert:

  1. Dekoding av verdien: Vi dekodet verdien og gjenopprettet det opprinnelige tallet ved å reversere trinnene. Detter medførte at vi fikk tilbake en verdi med et heltall og 3 desimaler, og fortegnet til det opprinnelige tallet ble bevart .


Forsøk 1 var lett å implementere for testing men vi ønsket og få en mer nøyaktig verdi på de overførte tallene.

...

Ved bruk av to registere kan vi overføre dobbelt så mye data og få bedre nøyaktighet. I dette forsøket skal vi bruke metoden "floating point representation", denne metoden lar oss oveføre dataen ved å dele verdien i 2 enheter og sende den over i 2 registre.

  1. Oppdeling av desimaltallet: Del det desimaltallet du ønsker å overføre inn i to deler: en del for heltallet og en del for desimaldelen.

  2. Konvertering til heltall: Multipliser desimaldelen med en potens av 10 for å flytte desimalpunktet til høyre. Dette konverterer desimaldelen til et heltall.

  3. Overføring av to heltall: Overfør heltallsdelen og desimaldelen til separate registers.

  4. Dekoding på mottakersiden: Når dataen er mottatt, dekoder du de to verdiene fra registers og slår dem sammen tilbake til det opprinnelige desimaltallet ved å dele desimaldelen med en passende potens av 10 og legge den til heltallet.





Programmering av script:

https://s3-eu-west-1.amazonaws.com/ur-support-site/115824/scriptManual_SW5.11.pdf



Universal Robots
user manual for CB3 version 3.8 section 13.11 (Polyscope: Installation -> Modbus Client IO Setup) 

...