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 funksjonblokkar ifrå ulike bibliotek, samt nokre eigen laga funskjonsblokker. Vi bruker biblioteket WagoAppStepper for å kjøre stepper-motorane, stepperane krevde fleire ulike funskjonsblokker ifrå dette biblioteket som førte til at eg lagde ein funksjonsblokk som inkluderte alle desse. Servo-motorane brukar biblioteket SM3_Basic der vi har ein funskjon for å slå dei på og ein for å styre posisjonen til servoane.  Vi måtte også bruke biblioteka WagoSysPlainMem og WagoAppCloud for å kunne subscribe på MQTT-brokeren som innhelder informasjon om posisjonen til dei dårige rogna.  


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 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.  See bildet til høgre for HMI i codesys


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

Ferdig laga bibliotek med funksjons blokker:

  • 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 funksjons blokker:

  • FbEndBreaks
  • FbServoMotor
  • FbStepperMotor


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.