РЕКЛАМА НА ФОРУМХАУС Цена 1289 р. Вот ссылка на цену arc.com.ru/catalog/regulator/4135/element269193.php
О, даже ещё меньше Ну значит вот, вырисовывается для топикстартера бюджетная система управления освещением!
Итак, чтоб не думали что тема потерялась Наконец-то закончился летний строительный период и появилось время (и деньги) для копошения с электричеством. Закуплено железо на один этаж контроллер ОВЕН ПЛК 100 блоки ввода/вывода МДВВ и МВУ8 итого 20 входов и 22 выхода. Всего на этаже 9 выключателей и 18 лампочек. За вечер был собрано представленное ниже фанерно-электронное чудовище которое было подключено к компу и восприняло предварительно написанную программу. Результат: все работает Что особенно радует, что теперь можно управлять несколькими лампочками от одного выключателся. Суть такая - если просто нажать на выключатель (а они естественно кнопочные), то естественно, включится свет. Если нажать и удерживать клавишу, то начинается циклическое переключение сцен. На один выключатель можно повесить до 15 сцен по 8 лампочек в каждой. Сцена задается битовой маской например 0х00000001 означает включить первую лампочку, 0х00001100 - третью и четвертую, ну и так далее. При отпускании клавиши остаются гореть те лампочки, которые были выбраны на тот момент. При следующем коротком нажатии свет собсно гаснет. При следующем коротком нажатии включаются лампочки из последней выбраной сцены. Что не получилось. С удивлением узнал, что линия RS485 (по которой модули связываются друг с другом) требует терминальных резисторов, которых дома в 10 вечера ессно не оказалось Посему нужные резисторы с утра куплены (нижегородский радиорынок - это что-то! но выбирать не из чего ). так что на вечер запланирована модернизация чудовища и опробывание в боевом режиме По бюджету. Контроллер с модулями ВВ обошелся в 14 тыр. Плюс 2.5 тыр ушло на выключатели АВВ (10 штук). Да, великобританский магазин skyview.co.uk прислал 10 штук датчиков температуры и влажности малоизвестного бренда Technoline, а на самом деле широкоизвестных La Crosse TX3-TH, умеющих передавать данные на частоте 433 мгц и широко используемых самодельщиками например в связке с arduino. надеюсь, что когда нибудь руки дойдут до мониторинга температуры в доме. ну и для интересующихся - текст программы управления светом на этаже in_2B1_proc(switch:=_2DI_0_11.0); in_2B2_proc(switch:=_2DI_0_11.1); in_2B3_proc(switch:=_2DI_0_11.2, scene:= const_scene_2_running, num_scenes:=2); in_2B4_proc(switch:=_2DI_0_11.3, scene:= const_scene_2_cumul, num_scenes:=2); in_2B5_proc(switch:=_2DI_0_11.4, scene:= const_scene_2_cumul, num_scenes:=2); in_2B6_proc(switch:=_2DI_0_11.5, scene:= const_scene_2_running, num_scenes:=2); in_2B7_proc(switch:=_2DI_0_11.6); in_2B8_proc(switch:=_2DI_0_11.7); _light_2_C1 := bind_output(scene:=in_2B1_proc.out_scene, n:= 0); _light_2_C3 := bind_output(scene:=in_2B2_proc.out_scene, n:= 0); _light_2_C4 := bind_output(scene:=in_2B3_proc.out_scene, n:= 0); _light_2_C5 := bind_output(scene:=in_2B3_proc.out_scene, n:= 1); _light_2_C7 := bind_output(scene:=in_2B4_proc.out_scene, n:= 0); _light_2_C9 := bind_output(scene:=in_2B4_proc.out_scene, n:= 1); _light_2_C11 := bind_output(scene:=in_2B5_proc.out_scene, n:= 0); _light_2_C12 := bind_output(scene:=in_2B5_proc.out_scene, n:= 1); _light_2_C14 := bind_output(scene:=in_2B7_proc.out_scene, n:= 0); _light_2_C15 := bind_output(scene:=in_2B7_proc.out_scene, n:= 1); _light_2_C17 := bind_output(scene:=in_2B8_proc.out_scene, n:= 0); _light_2_C18 := bind_output(scene:=in_2B8_proc.out_scene, n:= 0); _light_2_C171 := bind_output(scene:=in_2B9_proc.out_scene, n:= 0); _2DO0 := bool_to_1000(on:=_light_2_C1); _2DO1 := bool_to_1000(on:=_light_2_C3); _2DO2 := bool_to_1000(on:=_light_2_C4); _2DO3 := bool_to_1000(on:=_light_2_C5); _2DO4 := bool_to_1000(on:=_light_2_C7); _2DO5 := bool_to_1000(on:=_light_2_C9); _2DO6 := bool_to_1000(on:=_light_2_C11); _2DO7 := bool_to_1000(on:=_light_2_C12); _2DO8 := bool_to_1000(on:=_light_2_C14); _2DO9 := bool_to_1000(on:=_light_2_C15); _2DO10 := bool_to_1000(on:=_light_2_C17); _2DO11 := bool_to_1000(on:=_light_2_C18); _2DO12 := bool_to_1000(on:=_light_2_C171); остальные фотки тут
vores8, А что вы использовали в качестве диммирующего устройства? Сразу не въехал - лампочки на вашем стенде не диммируются.
в принципе МДВВ может выдавать на выходах ШИМ сигнал (именно поэтому в последних строчках на выходы прописывается значение 1000 если нужно тупо зажечь свет). У меня все лампочки энергосберегающие (кфл), поэтому я их не диммирую. Но по моему дилетантскому представлению ШИМ это вобщем-то почти что диммер (да поправят меня гуру)
вобщем полноценный запуск чудовища откладывается до завтра. оказывается для подключения модулей ВВ нужно их сперва сконфигурировать, для чего потребен переходник rs485-usb. Упоминание о нем конечно есть на странице 10 руководства (но могли бы и на первой странице это написать крупными буквами) Вобщем скороспешно найден умелец, который завтра к вечеру обещался сей конвертер сваять. Соответственно все откладывается до завтра...
А можете подробнее про датчики температуры и влажности рассказать? какова цена вопроса и что еще нужно докупить чтобы вводить с них данные в контроллер или ПК?
датчики покупал тут протокол описан тут почти готовое устройство тут ну и вообще погуглите на тему "arduino weather"
Ну круто, поздравляю! Всегда приятно сделать что-то своими руками, а тем более ТАКУЮ нужную штуковину для дома! Но не очень понятна логика работы. Я про удерживание клавиш. Обычно, если удерживаешь, то группа диммируется. Или это именно вы в своей программе такой алгоритм прописали? Почему именно на русские девайсы выбор пал? Насчет резисторов удивили. Обычно, если линия короткая (несколько десятков метров), то резисторы попросту не нужны. Да и садят передатчик они прилично. Я не припомню объектов, где бы мы ставили 120-омные резисторы, хотя линии общей длиной доходили до 100 м. Кстати, как программить в CoDeSys? Сильно геморно? Не знаю, по мне так проще что-нибудь на WM 5CE или другая винда: слил, залил, тут же интерфейс загрузил, порт инициализировал и т.д.
про логику. поскольку у меня везду понатыканы душевые люминесцентные лампочки из икеи то они естественно не диммируются. поэтому было решено на один выключатель повесить несколько лампочек с возможностью их включать постепенно. жмешь на клавишу выключателя и удерживаешь - включается сначала первая группа, потом она гаснет и включается вторая, потом гаснет вторая и включается третья, ну и обратно по циклу. или включается первая, потом к ней добавляется вторая, потм третья и снова по циклу. можно припрограммировать например дабл-клик, чтобы сразу включались все лампочки в комнате - ну тут уж на что фантазии хватит. у меня в планах еще привесить радиореле с пультом (для этого оставлены свободные входы на контроллере), чтобы можно было лежа в кроватке например выключить свет в комнате (или во всем доме). про российского производителя - исключительно из-за цены (см начало топика) про резисторы - ну да, я ламер в проводах. но учусь в кодесисе программить совсем не геморно. геморная у них библиотека, в которой много сладких готовых функций, но описание их весьма лаконично. но мне с программированием проще чем с проводами вот собсно подпрограмма (функциональный блок в терминах кодесиса) которая обрабатывает состояние выключателя (и это вобщем-то основное что крутится в контроллере) FUNCTION_BLOCK scene_idx VAR_INPUT switch :BOOL := FALSE; override : BOOL := FALSE; scene: ARRAY[0..15] OF BYTE; num_scenes : INT := 1; END_VAR VAR_OUTPUT out_scene : BYTE; END_VAR VAR light : BOOL := FALSE; can_off : BOOL := FALSE; switch_delay: TP; switch_off: F_TRIG; override_on : R_TRIG; scene_demo : TP; scene_cnt : CTU; END_VAR IF switch = TRUE AND light = FALSE THEN light := TRUE; END_IF switch_off(CLK := switch); override_on(CLK := override); IF num_scenes > 1 THEN switch_delay(IN := switch, PT:= const_delay_scm); scene_cnt(CU:=scene_demo.Q, pv:=num_scenes, reset:= scene_cnt.Q); scene_demo(in:= (NOT scene_demo.Q) AND switch AND (switch_delay.ET = const_delay_scm), pt:=const_delay_demo); IF scene_demo.Q AND switch THEN can_off := FALSE; END_IF END_IF IF switch_off.q THEN IF can_off THEN light := FALSE; ELSE can_off := TRUE; END_IF END_IF IF override_on.Q AND NOT switch THEN light := NOT light; END_IF IF global_off THEN light := FALSE; END_IF; IF light THEN IF num_scenes = 1 THEN out_scene := 1; ELSE out_scene := scene[scene_cnt.CV]; END_IF ELSE out_scene := 0; can_off := FALSE; END_IF по поводу интерфейса. поскольку контроллер может вещать по modbus tcp (слейвом), то к нему можно прицепить какой-нибудь готовый умный дом. я пока остановился на m2m mango . вывод у нее на веб морду, так что в качестве устройства для взаимодействия подойдет практически все (посматриваю на китайский андроидный планшет за 65 баксов и тачскрин накладку на 17" монитор)
Скорее на чуть менее древний паскаль это язык программирования среды codesys. Их там 4: LD, IL, ST и еще что-то. И все такиеже забавные это был собственно ST (structured text)
Да все они паскалеподобные Зато всё ясно и понятно. Я думал на чем-нибудь типа этого собрать: https://www.nnz-ipc.ru//show/1820372/1820237/ Есть возможности расширения, думаю, можно в Ethernet-сеть его подключить, а там и до управления с помощью гаджетов недалеко Либо сразу что-нибудь такое: http://www.nnz-ipc.ru//show/1821439/1821438/
кодесис может работать в режиме эмуляции (без реального контроллера). Если контроллер подключен, то как правило проект можно заливать в него налету. Вобщем погуглите про кодесис, да и на сайте производителей контроллера много инфы