
Und wie rufe ich das ganze nun in der Visu auf ?
Code: Alles auswählen
Fehler Startzeit
Code: Alles auswählen
-- *******************
-- * Rolladen Anfang *
-- *******************
-- ************************************************************
startzeit = {} -- Startzeit bei Rollladenstart
-- Laufzeiten der Rollläden
set ('t_auf.rel.19.1',17700) -- Gäste WC
set ('t_ab.rel.19.1',16800)
set ('t_auf.rel.19.2',18600) -- Bad
set ('t_ab.rel.19.2',17700)
set ('t_auf.rel.19.3',17700) -- EG Küche
set ('t_ab.rel.19.3',16800)
set ('t_auf.rel.19.4',18600) -- Schlafzimmer
set ('t_ab.rel.19.4',17700)
set ('t_auf.rel.20.1',25800) -- Kind2
set ('t_ab.rel.20.1',23200)
set ('t_auf.rel.20.2',25800) -- Lotte
set ('t_ab.rel.20.2',23200)
set ('t_auf.rel.21.1',27000) --Wozi Sofa
set ('t_ab.rel.21.1',24500)
set ('t_auf.rel.21.2',18800) -- Wozi klein
set ('t_ab.rel.21.2',17800)
set ('t_auf.rel.21.3',27000) -- Wozi Terrasse
set ('t_ab.rel.21.3',24500)
set ('t_auf.rel.21.4',11000) -- HWR
set ('t_ab.rel.21.4',10000)
--**********************************************************
-- Hiermit wird das Netzrelais überwacht. Die Bezeichnung links ist Modul_Motor rechts Modul.Relais. Diese Funktion wird für jeden Rollladen einmal benötigt.
roll_rel_19_1_flag = use 'LCN.relay.0.19.1'
roll_rel_19_2_flag = use 'LCN.relay.0.19.2'
roll_rel_19_3_flag = use 'LCN.relay.0.19.3'
roll_rel_19_4_flag = use 'LCN.relay.0.19.4'
function roll_rel_19_1_flag:onchange(new) -- Relais 1
roll_rel_na(19,1,1,new) --Modul, Motor, Relais, Relaisstatus
end
function roll_rel_19_2_flag:onchange(new) -- Relais 2
roll_rel_na(19,2,2,new) --Modul, Motor, Relais, Relaisstatus
end
function roll_rel_19_3_flag:onchange(new) -- Relais 3
roll_rel_na(19,3,3,new) --Modul, Motor, Relais, Relaisstatus
end
function roll_rel_19_4_flag:onchange(new) -- Relais 4
roll_rel_na(19,4,4,new) --Modul, Motor, Relais, Relaisstatus
end
roll_rel_20_1_flag = use 'LCN.relay.0.20.1'
roll_rel_20_2_flag = use 'LCN.relay.0.20.2'
function roll_rel_20_1_flag:onchange(new) -- Relais 1
roll_rel_na(20,1,1,new) --Modul, Motor, Relais, Relaisstatus
end
function roll_rel_20_2_flag:onchange(new) -- Relais 2
roll_rel_na(20,2,2,new) --Modul, Motor, Relais, Relaisstatus
end
roll_rel_21_1_flag = use 'LCN.relay.0.21.1'
roll_rel_21_2_flag = use 'LCN.relay.0.21.2'
roll_rel_21_3_flag = use 'LCN.relay.0.21.3'
roll_rel_21_4_flag = use 'LCN.relay.0.21.4'
function roll_rel_21_1_flag:onchange(new) -- Relais 1
roll_rel_na(21,1,1,new) --Modul, Motor, Relais, Relaisstatus
end
function roll_rel_21_2_flag:onchange(new) -- Relais 2
roll_rel_na(21,1,2,new) --Modul, Motor, Relais, Relaisstatus
end
function roll_rel_21_3_flag:onchange(new) -- Relais 3
roll_rel_na(21,1,3,new) --Modul, Motor, Relais, Relaisstatus
end
function roll_rel_21_4_flag:onchange(new) -- Relais 4
roll_rel_na(21,1,4,new) --Modul, Motor, Relais, Relaisstatus
end
--*********************************************************
--Hier sind die Strings untergebracht, nach denen die Relais gesteuert werden. Ist z.B. das Richtungsrelais anders angeschlossen, kann man hier die Änderung eintragen.
-- Rollläden Relais String
down = {'11------';'--11----';'----11--';'------11'}
up = {'10------';'--10----';'----10--';'------10'}
stop = {'00------';'--00----';'----00--';'------00'} -- Richtungsrelais wird aus stromspargründen abgeschaltet
--**********************************************************
--Und die Bearbeitung, wenn sich das Relais ändert:
function roll_rel_na(mod,motor,relay, new) -- Bei Änderung des Power Relais
-- On, Zeit starten und n/a setzen
local t_auf = get('t_auf.rel.'..mod..'.'..motor)
local t_ab = get('t_auf.rel.'..mod..'.'..motor)
local position = get ('VAR.roll_position_rel.'..mod..'.'..motor)
local position_alt = position
if (new == 1) then
richtung = get('LCN.relay.0.'..mod..'.'..(relay + 1))
startzeit[mod .. '.' .. motor] = systime()
-- print(startzeit[mod][motor])
set ('VAR.roll_position_rel.'..mod..'.'..motor,"n/a")
set ('VAR.roll_start_rel.'..mod..'.'..motor,"n/a")
set ('VAR.roll_position_rel.text.'..mod..'.'..motor,"n/a")
elseif (new ==0) then
local stopzeit = systime()
if startzeit[mod .. '.' .. motor] then
laufzeit = math.floor((stopzeit - startzeit[mod .. '.' .. motor])*1000) -- ms
startzeit[mod .. '.' .. motor] = null
else print('Fehler Startzeit')
end
-- Endlage?
if richtung == 1 then -- ab
if laufzeit > (t_ab + 2000)then
set ('VAR.roll_position_rel.'..mod..'.'..motor,100)
set ('VAR.roll_position_rel.text.'..mod..'.'..motor,"unten")
--Richtungsrelais ausschalten
value = stop[motor]
command ('C.LCN.relays.0.'..mod..'='..value)
else -- Zwischenposition
-- -- Off Zeit messen und Position berechnen.
end
else -- auf
if laufzeit > (t_auf + 2000)then
set ('VAR.roll_position_rel.'..mod..'.'..motor,0)
set ('VAR.roll_position_rel.text.'..mod..'.'..motor,"oben")
--Richtungsrelais ausschalten
value = stop[motor]
command ('C.LCN.relays.0.'..mod..'='..value)
else -- Zwischenposition
-- -- Off Zeit messen und Position berechnen.
end
end
end
end
-- *****************************************************************
-- Jetzt kommt die eigentliche Steuerung
-- Rollläden an Relais
function roll_rel_pos(mod,motor,pos,force) -- motor 1-4, position 100 = geschlossen, 0 = offen, modul , Zwangssteuerung über Endlage
local t_auf = get('t_auf.rel.'..mod..'.'..motor)
local t_ab = get('t_ab.rel.'..mod..'.'..motor)
local position = get ('VAR.roll_position_rel.'..mod..'.'..motor)
local position_alt = position
local b = type(position_alt)
if (b ~= 'number' or force > 0) then
position_alt = 'n/a'
end
if pos == 0 then -- Bei Endlage immer bis zum Anschlag volle LAufzeit fahren
position_alt = 100
roll_rel_pos_absolut(mod,motor,pos)
set ('VAR.roll_position_rel.'..mod..'.'..motor,pos)
elseif pos == 100 then
position_alt = 0
roll_rel_pos_absolut(mod,motor,pos)
set ('VAR.roll_position_rel.'..mod..'.'..motor,pos)
elseif position_alt == "n/a" then
roll_rel_pos_absolut(mod,motor,pos)
else -- Zwischenposition direkt anfahren
relpos = pos - position_alt
if relpos >0 then
delay_ab = ((t_ab/100)*(relpos))
roll_rel_run(mod,motor,'down',pos)
-- command('DELAY.'..delay_ab..'ms.C.LOGIC=roll_rel_run('..mod..','..motor..',"stop",..'pos')')
command('DELAY.'..delay_ab..'ms.C.LOGIC=roll_rel_run('..mod..','..motor..',"stop",'..pos..')')
elseif relpos = 96 then -- unten
roll_rel_run(mod,motor,'down',100)
command('DELAY.'..delay_ab..'ms.C.LOGIC=roll_rel_run('..mod..','..motor..',"stop",100)')
elseif pos =40 then
roll_rel_run(mod,motor,'down',100)
command('DELAY.'..(t_ab+1000)..'ms.C.LOGIC=roll_rel_run('..mod..','..motor..',"up",'..pos..')') -- unten
command('DELAY.'..(t_ab+1000+delay_auf)..'ms.C.LOGIC=roll_rel_run('..mod..','..motor..',"stop",'..pos..')') -- Position
else -- über oberen Stop
roll_rel_run(mod,motor,'up',0)
command('DELAY.'..(t_auf+1000)..'ms.C.LOGIC=roll_rel_run('..mod..','..motor..',"down",'..pos..')') -- unten
command('DELAY.'..(t_auf+1000+delay_ab)..'ms.C.LOGIC=roll_rel_run('..mod..','..motor..',"stop",'..pos..')') -- Position
end
end
--************************************************************************
-- Das Schalten der Relais und Abspeichern der Werte
function roll_rel_run(mod,motor,_task,pos) --
local position_text
if _task == 'up' then
value = up[motor]
elseif _task == 'down' then
value = down[motor]
elseif _task == 'stop' then -- stop
value = stop[motor]
end
if value then
command ('C.LCN.relays.0.'..mod..'='..value)
if _task == 'stop' then
-- command('DELAY.2000ms.C.set('VAR.roll_position_rel.'..mod..'.'..motor,pos)') --Wert abspeichern
set('VAR.roll_position_rel.'..mod..'.'..motor,pos) --Wert abspeichern
if pos == 0 then
position_text = 'oben'
set ('VAR.roll_position_rel.text.'..mod..'.'..motor,"n/a")
elseif pos == 100 then
position_text = 'unten'
else
position_text = pos
end
set ('VAR.roll_position_rel.text.'..mod..'.'..motor,position_text)
else
-- set ('VAR.roll_position_rel.'..mod..'.'..motor,"n/a") --Wert abspeichern
end
end
end
-- *****************
-- * Rolladen Ende *
-- *****************
Zurück zu „Domiq-Module - DOMIQ Sp. z o.o.“
Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste