PDA

Просмотр полной версии : Астрономический таймер



Serhioromano
05.10.2018, 14:48
Есть такой блок? Мне нужно включать свет когда начинаются сумерки по времени.

Sulfur
05.10.2018, 14:52
А почему бы не использовать банальное фотореле?

Uniqum
05.10.2018, 14:59
Привет, вот держи* если знаешь когда начнутся сумерки то пойдет :)

lara197a
05.10.2018, 15:47
Для таких задач есть очень простые и дешевые специализированные устройства.
К Примеру ТАУ:
http://www.tau-spb.ru/rastr.htm
У них есть более сложные, программируемые устройства изделия.

Serhioromano
05.10.2018, 16:57
А почему бы не использовать банальное фотореле?

Нужно отталкиваться от времени суток а не от реального освещения на улице.


oscat.de есть такой блок и темы такие есть уже

Искал на форуме по слову астрономический и его склонения. Не нашел. Извините если дубль. Функцию нашел SUN_TIME. Спасибо.


Привет, вот держи* если знаешь когда начнутся сумерки то пойдет :)

В этом и суть такого блока что в зависимости от широты установленой, и даты, он сам знает когда закат. Другими словами я не знаю когда закат, для этого мне и нужно блок астрономического времени.


Для таких задач есть очень простые и дешевые специализированные устройства.
К Примеру ТАУ:
http://www.tau-spb.ru/rastr.htm
У них есть более сложные, программируемые устройства изделия.

Да думал поставить просто астро реле типа EKF и завести его реле на контролер. Но подумал может это можно и программно решить, зачем покупать изделие если можно и так будет решить.

Duvall
24.03.2023, 11:07
Нужно отталкиваться от времени суток а не от реального освещения на улице.



Искал на форуме по слову астрономический и его склонения. Не нашел. Извините если дубль. Функцию нашел SUN_TIME. Спасибо.



В этом и суть такого блока что в зависимости от широты установленой, и даты, он сам знает когда закат. Другими словами я не знаю когда закат, для этого мне и нужно блок астрономического времени.



Да думал поставить просто астро реле типа EKF и завести его реле на контролер. Но подумал может это можно и программно решить, зачем покупать изделие если можно и так будет решить.

Здравствуйте, можете показать какие блоки задействовали помимо sun_time.

kondor3000
24.03.2023, 13:36
Здравствуйте, можете показать какие блоки задействовали помимо sun_time.

Вот вам готовый Астротаймер, но на ST. ПЛК можно заменить на другой без проблем.
+3 часа для Москвы уже стоит (+180 минут), для других городов изменить часовой пояс.
День, месяц и год надо подавать на вход блока.
Блок выдаёт время восхода и захода солнца, дальше сами включайте, выключайте по времени, что надо.
Скрины для среды CoDeSys V3.5
82649 82650 82651 82652

Duvall
24.03.2023, 14:23
Вот вам готовый Астротаймер, но на ST. ПЛК можно заменить на другой без проблем.
+3 часа для Москвы уже стоит (+180 минут), для других городов изменить часовой пояс.
День, месяц и год надо подавать на вход блока.
Блок выдаёт время восхода и захода солнца, дальше сами включайте, выключайте по времени, что надо.

Огромное спасибо

c5657
05.09.2023, 08:59
А есть возможность (способ) его импортировать в Owen Logic?

melky
05.09.2023, 09:46
c5657 для Овен Лождик вроде petera делал когда-то астротаймер, поищите в макросах.

petera
05.09.2023, 10:17
А есть возможность (способ) его импортировать в Owen Logic?


c5657 для Овен Лождик вроде petera делал когда-то астротаймер, поищите в макросах.

Тут он https://owen.ru/forum/showthread.php?t=9398&page=420&p=296624&viewfull=1#post296624

70020

c5657
07.09.2023, 10:36
Да, спасибо! Нашел 10.01.2019. И макрос и схему управления освещением "восход-закат". Опробовал, работает))

kondor3000
18.10.2024, 09:26
А есть возможность (способ) его импортировать в Owen Logic?
Переписал Астротаймер на ST в Лоджике, версия OWEN Logic2.6.345 79487
Добавил упрощённый вариант, Астротаймер на ST_2, больше подходит для ПР205 и ПР225 79488
Приложил упакованный ФБ Астротаймера.fbst, распаковать и импортировать в любую ПР (вместе со всеми вложенными функциями)

Для ПЛК, среда CoDeSys V2.3 пример Астротаймера выложен на 1 странице, сообщение 7
https://owen.ru/forum/showthread.php?t=29532#7
Для Codesys 3.5 добавить биб-ки Oscat_Basic_333 и SysTimeRtc, 82649 скопировать ФБ SUN_TIME_My копипастом и

дописать BASIC. в трёх местах 82650 получится так 82651 работа 82652

Код времени

TOD1:= TO_TOD (TO_DT(SysTimeRtc.SysTimeRtcGet(dwErrorCode))) +T#3h ; (* Текущее время TOD для Москвы *)


FUNCTION_BLOCK SUN_TIME_My
VAR_INPUT
LATITUDE : REAL:=55.75; (* Широта географического положения *)
LONGITUDE : REAL:=37.617 ; (* Долгота географического положения *)
UTC : DATE:=D#2023-03-24; (* На 24 марта 2023 года (мировое время) *)
H : REAL := -0.83333333333; (* Высота над горизонтом для восхода солнца *)
END_VAR
VAR_OUTPUT
MIDDAY : TOD; (* Астрономический полдень по Гринвичу *)
SUN_RISE : TOD; (* Восход солнца на текущий день по Гринвичу *)
SUN_SET : TOD; (* Заход олнца на текущий день по Гринвичу *)
SUN_DECLINATION : REAL; (* Склонение солнца над горизонтом в полдень в градусах *)
END_VAR
VAR
dk: REAL; (* Склонение солнца над горизонтом в полдень *)
delta: TIME; (* Дельта от полудня для восхода и захода солнца *)
b: REAL;
RAD_H: REAL;
T: REAL;
OFFSET: REAL;
END_VAR
VAR CONSTANT
PI2: REAL := 6.28318530717958647692528676655900576;
END_VAR
__________________________________________________ ____________________
B := latitude * 0.0174532925199433;

T := DINT_TO_REAL(BASIC.DAY_OF_YEAR(utc)); (* Дописан BASIC. *)
OFFSET := -0.1752 * SIN(0.033430 * T + 0.5474) - 0.1340 * SIN(0.018234 * T - 0.1939);
MIDDAY := DWORD_TO_TOD(REAL_TO_DWORD((12.0 - OFFSET - longitude * 0.0666666666666) * 3600000)) +T#3h; (* Для Москвы *)
DK := 0.40954 * SIN(0.0172 * (T - 79.35));

sun_declination := BASIC.MODR(57.29577951308232 * DK, 360.0); (* Дописан BASIC. *)
IF sun_declination > 180.0 THEN sun_declination := sun_declination - 360.0; END_IF;
sun_declination := 90.0 - LATITUDE + sun_declination;

RAD_H:= BASIC.MODR(0.0174532925199433 * H, PI2); (* Дописан BASIC. *)
delta := DWORD_TO_TIME(REAL_TO_DWORD((ACOS((SIN(RAD_H) - SIN(B) * SIN(DK)) / (COS(B) * COS(DK))) * 3.819718632) * 3600000));
sun_rise := MIDDAY - delta; (* Для Москвы *)
sun_set := MIDDAY + delta; (* Для Москвы *)