Push button relay toggle
Jan Teunis last edited by
I've just recieved my neuron L203 and began playing with the mervis software. In my house are only push button switches, so they don't keep the DI constantly on, instead, they give a short pulse (or long, is you keep pressing them).
How can I get this behavior to toggle a RO?
- push > relay goes on
- release > relay stays on
- push > relay goes off
- release > relay stays off
Even better... is there a way to detect the length of the push, or detect double clicks?
@Jan-Teunis Neurons have a direct switch function (see documentation) but it detects only rising/falling edges of the signal. Long presses has to be solved in mervis. So I suggest you to create your own function block, which will take care of it...
SorakCz last edited by tomas_hora
I am solving same issue. I have ST program. Its reacts only on rising edge. But it is slowly and it not work on every push though I have sleep ratio 5%.
PROGRAM tlacitko VAR_INPUT tlacitko:BOOL; END_VAR VAR_OUTPUT rele:BOOL; END_VAR if (tlacitko=1 AND rele=1) THEN rele:=0; ELSIF (tlacitko=1 and rele=0) THEN rele:=1; ELSE ; END_IF; END_PROGRAM
@SorakCz If you want just this functionality then use the Direct Switch. You do not have to program in ST anything and it reacts on every rising edge which mervis does not have to catch (you could try to detect the pushes via counters thought)
RainerK last edited by
I tried to solve the problem by using "Event triggered tasks" maybe @tomas_hora could explain how it could be done this way.
Giamba last edited by Giamba
With the following program, If I "short" push the button, the final out value goes 0 or previous analog value. If I "long" push the button the value increase or decrease.
So I have short and long push detection and a toggled output.
This is working pretty well with 50% ratio.
Giamba last edited by
This is my On/Off switch (allways as a fonction block in fdb mode):
kolopes last edited by
I have 3 buttons that I want to turn on / off the bulb. (push - lights up, push light off)
How best to solve.
thank you for the advice
@kolopes The asnwer is above. The best is to use the DirectSwitch function (set variables DS_enable and DS_toggle to True). The number of DI(button) must be the same as RO. You can enable this functionality for each pair of DI-Ro/Do. Make sure to set the NV_save variable of the group where this will be configured to True and False afterwards.
To be able to set the values, you have to be in debug mode!
Alternative approach is to write your own function block that might do much more...
sgtgarcia last edited by
Where can i find the "Direct Switch" function?
Are there some more library files i can download somewhere?
I am new to mervis and I'am no programmer.
The programs above seem complicated.
In the logo software there is a block especially for this purpose.
It als has an global off function.
That is the kind of thing I need.
@sgtgarcia Direct Switch is a feature of HW of Neuron, it's not a feature of Mervis (but it can be of course programmed for such behaviour). To enable DS, check Mervis variables that start with "DS_" there you will find the DS_enable, DS_toggle and DS_polarity functions.