Versions Compared

Key

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

Main koden bruker vi for å kjøre den fysiske modellen. Den bruker fleire ferdige laga funksjonblokker ifrå ulike bibliotek, samt nokre eigen laga funskjonsblokker. Vi bruker biblioteket WagoAppStepper for å kjøre stepper-motorane. Servo-motorane brukar biblioteket SM3_Basic for å kjøres.  Vi bruke biblioteka WagoSysPlainMem og WagoAppCloud for å kunne subscribe på MQTT-brokeren.


Hovedkoden trenge ein variablen for å starte sekvensen(startRoeBot). Etter dette må vi velge hvilken skuff vi ønsker å jobbe med, vi har valgt å forholde oss til ein skuff på grunn av fysiske begrensinger med modellen. Vi valgte også å begrense ned søkeområdet etter dårlig rogn til ein fast posisjon i reolen. Når man har valgt hvilken skuff modellen skal jobbe med starter sekvensen og programmet vil å åpne skuff, gå i søkeposisjon regne om til ny stepper-posisjon og fjerne dårlige rogn. Dette vil den gjøre til nummeret med detekterte dårlige rogn blir til 0. Vi lagde til ein funksjon som lagrer ein start posisjon til servoane visst dei nedre endebryterane er aktiv slik at vi ikkje trenger å resette servo-pos til 0 kvar gang modellen skal kjøres. 


Vi løyste dette ved å finne ei referanseposisjon når kameraet er i ein spesifikk posisjon, og bruke formlane under for å berekne dei nye stepper-motor posisjonane.


Image Added

Vi fant konstantane under brøken ved å køyre stepper-motorane eit visst antal steg både i positiv og negativ retning, og rekna forskjellen i posisjon.


Vi lagde til ein enkel HMI i codesys for å kunne enkelt kjøre motorane manuelt til ønsketposisjon og sette ønsket state for enkel testing av sekvensen.   Alle sikkerheitsfunksjonere fungere i både manuell og auto. See bildet til høgre for HMI i codesys


                                                             Enkel HMI For test kjøring av servo- og stepper-motorar:

Ferdig laga bibliotek med funksjonsblokker:

  • WagoAppStepper
    • FbPower
    • FbReadActualPosition
    • FbMoveAbsolute
    • FbStop
    • FbReset
  • WagoAppCloud
    • FbSubscribeMQTT_2
  • WagoSysPlainMem
    • MemCopy
  • WagoTypesModule
    • WagoTypesModule_75x_67x.I_Module_75x_67x
  • SM3_Basic
    • MC_Power
    • MC_MoveAbsolute

Sjølv laga funksjonsblokker:

  • FbEndBreaks
  • FbServoMotor
  • FbStepperMotor


Forklaring av egen lagde funksjonsblokker:

FbEndBreaks brukse for å sjekke enedbrytera på servomotor og setter execute command til true visst ikkkje enedbryter aktiv og sjekker at den nye posisjonen ikkje er større eller mindre en faktisk verdi slik at dei ikkje kan gå ned når endebryter nede er aktiv og motsatt.


FbServoMotor er ein måten vi kjører begge servomotorane samtidig og sjekker at dei ikkje går i fault og position Reached.


FbStepperMotor er ein kombinasjon av fleire ferdige lagde funksjons blokker ifrå WagoAppStepper.

Main project:

View file
nameMain.project
height250