Gepost door Jeroen Vreuls op woensdag 10 november 2021
Ik had het hierboven over dat je maar tot een waarde van 255 kon verzenden via de compoort-module, maar door wat berekeningen uit te voeren kan er een veel grotere waarde verzonden worden.
Ik geef eerst een voorbeeld met een klein getal.
Bij ingave NE1
geef je bijvoorbeeld een waarde van 5 in, die wordt gedeeld door 100 (FW1
). Dan verschijnt er op de uitgang van DIV1
dus een waarde van 5 : 100 = 0,05. Die waarde komt op de ingang van MATH1
en SUB1
te staan. Bij de uitgang van MATH1
is de waarde ook 0,05, die wordt weer vermenigvuldigt door MUL1
x FW2
. Dan krijg je dus 0,05 x 100 = 5. De berekening van SUB1
is als volgt, de waarde bij E0 = 0.05 en de waarde bij E1 = 0.05. De waarde op de uitgang van SUB1
wordt dus 0,05 - 0.05 = 0. Als er nu dus op de knop verzenden T1
gedrukt wordt, dan wordt eerst de waarde 0 verzonden en dan waarde 5. Dat wordt later in het programma van de controller weer omgezet, maar dat komt later aan bod.
We gaan nu kijken naar een waarde groter dan 255.
Bij ingave NE1
geef je bijvoorbeeld een waarde van 1000 in, die wordt gedeeld door 100 (FW1
). Dan verschijnt er op de uitgang van DIV1
dus een waarde van 1000 : 100 = 10. Die waarde komt op de ingang van MATH1
en SUB1
te staan. Bij de uitgang van MATH1
is de waarde nu 0, die wordt weer vermenigvuldigd door MUL1
x FW2
. Dan krijg je dus 0 x 100 = 0. De berekening van SUB1
is als volgt, de waarde bij E0 = 10 en de waarde bij E1 = 0. De waarde op de uitgang van SUB1
wordt dus 10 - 0 = 10. Als er nu dus op de knop verzenden T1
gedrukt wordt, dan wordt eerst de waarde 10 verzonden en dan waarde 0. Ook dat wordt later in het programma van de controller weer omgezet.
Op deze manier kun je dus makkelijk grote waardes verzenden via de compoort-modules $CS1
en $CS2
. De tijd tussen de twee waardes verzenden loopt via monoflop MF1
. De tijd tussen het verzenden staat hier op 0,05 seconden, die tijd is wel afhankelijk van de gebruikte baudrate.