Versions Compared

Key

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

 Funksjoner og funksjonsblokk - movement programmet

Funksjonsblokk - visualisering

moveFromCoord funksjonen tar de to første tallene/bokstavene fra sjakkbevegelsesnotasjonen i formatet "h8h4", og gir ut et korresponderende koordinat for roboten som er lagret i en array.









moveToCoord var satt opp på akkurat samme måte som funksjonen over, men at den tar de to siste verdiene fra formatet "h8h4". På denne måten kan den ene kalles i en sekvensblokk for robotbevegelsen fra der brikken skal beveges og den andre til koordinatene den skal beveges til.

Inputs og output til moveFromCoord og moveToCoord har disse input-/output- og funksjonsvariabler:


Den siste funksjonen i hovedkoden var pieceHeight som brukes for å finne riktige z-koordinater for roboten, ut ifra hvilke brikker som skal flyttes. En brikke type blir satt som input, og den får en output av korresponderende høyde fra en array med brikkehøyder. En array med brikkenavn har samme indeks som hver brikkes høyde.

capturePlace var funksjonsblokken som lagret hvilke brikker som har blitt tatt. Denne ble implementert etter at hovedprogrammet viste at det kunne bevege delene. Ettersom det ikke var noen plass å legge brikkene fra capture sekvensen, måtte roboten ha en plass å lagre verdiene.

Funksjonsblokken over ble initalisert i ST men vises her med inputs og outputs. Denne returnerer posisjonen til brikketypen ut ifra en fast designert plass til hver type på siden av brettet, se brettet. Den lagrer hvilke plasser som er fylt opp og sender ut lokasjonen på brikkene ut ifra typen, dersom plassen skal bli tømt eller fylt men en brikke. Place og take inputs blir brukt til å gi angi om piecePos skal gi ut en fylt  posisjon eller en tom en.

Måten den blir satt opp, var ved hjelp av to-dimensjonale arrays, som er beskrevet i CODESYS dokumentasjon. De blir brukt til å skape to matriser på . En for BOOL verdier, for å lagre om plassen er opptatt, og en for strings, som lagrer hvilken type brikke plassen er designert til.

Funksjon blokk

Målet med dette programmet er å lage et sjakkspill som kan flytte sjakkbrikkene fra posisjoner til posisjoner på sjakkbrettet samt oppdatere disse posisjonene når brikkene flyttes koden inneholder:

Image Added


  • FromPos: Denne koden setter opp startposisjonene til de hvite og svarte brikkene

Image Added

  • PosName og PosNumber: Denne koden definerer brettets koordinater med bokstaver (a-h) og tall (1-8) som tilsvarer kolonner og rader på sjakkbrettet.


Image Added

  • PiecePos: Denne koden er for å kombinere posisjonsnavn og tall for hver brikke på brettet.

Image Added

  • FromPos[WselectedX, WselectedY] og FromPos[bselectedX, bselectedY]: Denne koden
    er for sjekker om det er en hvit og en svart brikke ved valgt startposisjon
  • FromPos[WTargetX, WTargetY] og ToPos[bTargetX, bTargetY]: Denne koden flytter brikke til sluttposisjon.
  • WhitePiecePos og BlackPiecePos: Denne koden er oppdatert med en kombinert streng som representerer bevegelsen fra startposisjon til sluttposisjon.

Image Added

  • UpdatedPiecePos: Denne koden oppdaterer brettet til å vise brikkenes nye plassering etter en brikke er flyttet.

Under viser til slutt ble det brukt en funksjonsblokk med 8 input og 2 output for å kunne flytte brikker fra posisjon til posisjon.

Image Added