Olen juuri aloittanut Codesysillä ohjelmoinnin ja perusteet on hyvin hukassa. Minulla on sellainen anturi joka antaa luvun välillä 1-230. Luvut ovat ainoastaan kokonaislukuja. Minun pitäisi saada Boolean arvo trueksi aina kun luku kasvaa edelliseen lukuun nähden ja sitten laitan counterin perään laskemaan. Jos luku pienenee niin silloin laskuriin ei saisi tulla mitään. Voisiko joku viisaampi antaa vinkkiä tähän?
Tapoja on useita, mutta jos haluat välttämättä käyttää counteria niin esim tällä tavalla:
VAR anturiArvo AT%IW0 : WORD; edellinenLuku : WORD; laskuri : CTU; saavutettu : bool; END_VAR laskuri(CU := (anturiArvo > edellinenLuku), PV := 10); edellinenLuku := anturiArvo; //Muistaakseni tarvitaan varalta, koska CTU tutkii nousevia reunoja laskuri(CU := FALSE); IF laskuri.Q THEN //10 saavutettu saavutettu := TRUE; END_IF
Tietty voisi saman korvata ihan vaan kasvattamalla lukua näin:
VAR anturiArvo AT%IW0 : WORD; edellinenLuku : WORD; laskuri : INT; END_VAR IF anturiArvo > edellinenLuku THEN laskuri := laskuri + 1; END_IF edellinenLuku := anturiArvo; IF laskuri > 10 THEN //yli kymmenen, esimerkiksi END_IF
Jos siis ymmärsin mitä tarkoitit.
Kiitos avusta!oon niin alussa tämän ohjelmoinnin kanssa että tämä helpotti paljon!
Aihe on jo aika vanha, joten et voi enää vastata siihen.