Jos koodaa FBD:llä kannattaa muuttujien nimet pitää lyhyinä koska muuten koodia katsoessa tai printatessa ne eivät näy... options voi muuttaa näkyvän koon
HMI (human machine interface) käynnistetään kuten yllä olevassa videossa. online->simulation, online->login, debug->start
huomattavaa on että jos debuggerilla pysäyttää koodin ja koodissa on aikaan perustuvaa koodia se ei toimi (kuten tuo speden peli nyt) vaan koodi pitäisi muuttaa käyttämään ajo-syklien välistä ajanmuutosta ja jos dt = last_dt - TIME(); dt > max_dt niin dt:=max_dt; (dt lyhenne delta time:sta, cur_time := cur_time+dt)
myös random joka perustuu aikaan ei toimi välttämättä oikein kun koodi ajetaan tasan 10ms sykleissä (on olemassa myös free-wheeling tila missä koodia ajetaan niin nopeasti kuin keretään)... Parempi olisi muuttaa Random1to4_CLK oikeaksi pseudorandom koodiin perustuvaksi Random1to4 funktioksi, joka arpoo luvun 1-4 niin varmasti toimii oikein. (Tossa koodissa ton Random1to4_CLK kutsupaikkakin taitaa olla väärä, jotta tulisi edes freewheeling moodissa kunnon randomia)
Here's an example of a simple random-number formula from the book "The C Programming Language," by Kernighan and Ritchie:
To create a random and unpredictable sequence, the seed must be a truly random number. To get this truly random number for the seed, most programs use the current date and time, converted to an integer value (for example, converted to the number of seconds that have elapsed since January 1, 1970). Since this is a different number every time you start the program, it makes a good seed
en saanut eka V3.5SP4:n HMI toimimaan mutta kun asensin V2.3:n ja sitten importtasin sen projektin sain HMI:n toimimaan, en tiedä miksi! (päivitys: katso SimpleAND projekti)
HMI ei myöskään minulla toiminut tarpeeksi nopeasti eli valot eivät ehdi syttyä jos aikaväli menee riittävän pieneksi... mielestäni kuitenkin LB[i] (valo päälle output) menee päälle oikein eli siis valon syttymistä ei ehdi nähdä ja siksi se näyttää painoit väärää nappia vaikka mielestäsi painoit oikeaa nappia. Pitäisi tosin testata jollain oikealla koneella jotta asian voisi varmistaa.
V3.5SP4 kaatui koodauspäivän aikana ainakin 5 kertaa, joten ei sekään ihan kaikkein vakain ole. Myöskään en ymmärtänyt millä logiikalla FBD editori tuhoaa eri lohkoja, helpompi oli luoda uusi network ja copy/pastata yksi kerrallaan uuteen networkkiin.
CoDeSys tukee FBD koodissa array muuttujien viittauksia eli ARRAY[i] voidaan kirjoittaa FBD koodiin ja i:n arvo voi olla muuttuja
FBD:llä tehty lähinnä testin vuoksi, vastaavan asian tekevää ST koodi mukana, eri FB:n ym kutsut ST:ssa ei ole ihan selkeetä joten mieluiten yrittäisin pitää ST koodin semmoisena ettei siellä tarvisi kutsua FB kovin paljoa.