31.07.2018, 07:42
(28.07.2018, 11:21)Bitver Wrote: I wonder if there is any script to control shutters (position, up/down, stop) using reactor digital outputs?
try this
1/1/1 - button up
1/1/2 - button down
1/1/3 - motor up
1/1/4 - motor down
1/1/5 - position setpoint
1/1/6 - position status
event script for button up (name = gate_up)
Code:
up = event.getvalue()
status = grp.getvalue('1/1/6')
time = 65 -- movement time (sec.)
step = time/100 -- delay step
if up == true then
script.disable('gate_up')
script.disable('gate_down')
grp.write('1/1/3', true)
while up == true do
up1 = grp.getvalue('1/1/1')
if up1 == false then
status = status - 0
grp.write('1/1/3', false)
grp.write('1/1/4', false)
grp.write('1/1/6', status)
break
end
status = status + 1
os.sleep(step)
grp.write('1/1/6', status)
end
script.enable('gate_up')
script.enable('gate_down')
end
Code:
down = event.getvalue()
status = grp.getvalue('1/1/6')
time = 60 -- movement time (sec.)
step = time/100 -- delay step
if down == true then
script.disable('gate_up')
script.disable('gate_down')
grp.write('1/1/4', true)
while down == true do
down1 = grp.getvalue('1/1/2')
if down1 == false then
status = status - 0
grp.write('1/1/3', false)
grp.write('1/1/4', false)
grp.write('1/1/6', status)
break
end
status = status - 1
os.sleep(step)
grp.write('1/1/6', status)
end
script.enable('gate_up')
script.enable('gate_down')
end
Code:
proc = event.getvalue()
status = grp.getvalue('1/1/6')
time = 65 -- movement time (sec.)
step = time/100 -- delay step
if proc - status > 0 then
grp.write('1/1/3', false)
grp.write('1/1/4', false)
os.sleep(0.25)
grp.write('1/1/3', true)
while status ~= proc do
proc = grp.getvalue('1/1/5')
status = status + 1
os.sleep(step)
grp.write('1/1/6', status)
if proc == status then
grp.write('1/1/3', false)
grp.write('1/1/4', false)
grp.write('1/1/6', proc)
end
end
elseif proc - status < 0 then
time = 60 -- movement time (sec.)
step = time/100 -- delay step
grp.write('1/1/3', false)
grp.write('1/1/4', false)
os.sleep(0.25)
grp.write('1/1/4', true)
while status ~= proc do
proc = grp.getvalue('1/1/5')
status = status - 1
os.sleep(step)
grp.write('1/1/6', status)
if proc == status then
grp.write('1/1/3', false)
grp.write('1/1/4', false)
grp.write('1/1/6', proc)
end
end
end