You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 2 Current »

 Sekvenser

Kode

Til slutt ble sekvensen laget for robotbevegelsen laget i SFC. Det ble igjen brukt mye tid for å få kommunikasjonen som planlagt, men etter mye prøving og feiling ble det satt opp riktig i både TM Flow og CODESYS, se Modbus side.


Sekvensen for selve spillingen endte opp med å se slik ut:


Med denne sekvensen ville den være avhengig av feedback fra roboten over Modbus for å gå til neste sekvensblokk etter moveState. Siden hver av sekvensene kjører individuelt måtte oppdateringen til denne feedbacken og kommandoene tilbake til roboten oppdateres i hver blokk. 

Etter at capturePiece funksjonsblokken ble opprettet ble det lagt inn en sekvens for oppsettet av hver farge, se bildet under. Dette utvidet programmet og økte risikoen for at flere blokker kjørte samtidig som ikke var kompatible. Ofte endte det i feilsøking før sekvensene var på plass riktig parallelt med vanlig bevegelse og capture bevegelse.

For at sekvensene skulle kjøre flere runder uten at de ventet på parallelle sekvenser før loopen, ble alle grener separert fram til hoppet til toppen igjen.


Det siste som ble lagt til var digitalMove, som brukte funksjonsblokken koblet til visualiseringen til å ta robotbevegelsen. Dette ble gjort for å kunne teste at stockfish og kommunikasjonen mellom all software fungerte, uten at hardware var tilkoblet.

Koden på bildet under viser generelt oppsettet til alle blokker med robotbevegelse. Der blir de eneste forandringene hva som blir satt til x-,y- og z-koordinater, i tillegg til aktivering og deaktivering av den magnetiske griperen, se griper.

Det generelle oppsettet til hver kodeblokk i robotspillingen var veldig likt, bortsett fra forandinger i hvordan koordinatene ble satt. For å kunne ta motspilleren sine brikker måtte en gameState for "capture" bli lagt til, som hopper tilbake til vanlig bevegelse når motstanderen har tatt brikkene ut av brettet.

Hver entry i sekvensblokkene innholdt koden under, med litt variasjon for blokkene i board setup sekvensene. Disse satte take til False mens capture blokkene satte place til False. Det er fordi funksjonsblokken trenger en positiv flanke, og måtte resettes.

  • No labels