Страница 2 из 4 ПерваяПервая 1234 ПоследняяПоследняя
Показано с 11 по 20 из 32

Тема: "Умное" управление освещением в квартире

  1. #11
    Пользователь
    Регистрация
    18.06.2015
    Адрес
    Бровары, Украина
    Сообщений
    5

    По умолчанию

    Че ж такое то?
    Codesys 2.3.9.41
    Таргет 2.10

    Если хотите, наделаю скриншотов настроек.
    Но должно же быть более красивое решение.

  2. #12
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,224

    По умолчанию

    Цитата Сообщение от RadioLover Посмотреть сообщение
    Че ж такое то?
    Codesys 2.3.9.41
    Таргет 2.10

    Если хотите, наделаю скриншотов настроек.
    Но должно же быть более красивое решение.
    выложите экспорт проекта, так будет удобнее портировать остальным
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

    среди успешных людей я не встречала нытиков
    Барбара Коркоран

  3. #13
    Пользователь
    Регистрация
    13.10.2011
    Адрес
    Златоуст
    Сообщений
    1,021

    По умолчанию

    У меня нормально открывается. Так-то респект, конечно. Но код не очень понравился: много условий, деление на POU довольно наивное, кучки данных тут и там. Вообще наличие в коде повторяющихся рисунков текста это верный признак того, что часть кода просится «за скобки» — в отдельные функциональные блоки и типы данных. Дела иначе обстоят в графических языках, но здесь-то текст.

    Взять, скажем, MainRoom со 137 строки. Там регулировки яркости идут счётчиками CTUD. И везде в аргументах счётчиков идентичные по своей логике выражения. Так почему не вынести эту логику в свой ФБ на основе того же CTUD, чтобы не писать одну и ту же комбинацию AND/OR/NOT?

    Или вот такое:
    Код:
    IF ((R_out=100)AND(G_out=0)AND(B_out=0)AND(Auto)) THEN R_set:=100; G_set:=100; B_set:=0; END_IF;
    IF ((R_out=100)AND(G_out=100)AND(B_out=0)AND(Auto)) THEN R_set:=0; G_set:=100; B_set:=0; END_IF;
    IF ((R_out=0)AND(G_out=100)AND(B_out=0)AND(Auto)) THEN R_set:=0; G_set:=100; B_set:=100; END_IF;
    IF ((R_out=0)AND(G_out=100)AND(B_out=100)AND(Auto)) THEN R_set:=0; G_set:=0; B_set:=100; END_IF;
    IF ((R_out=0)AND(G_out=0)AND(B_out=100)AND(Auto)) THEN R_set:=100; G_set:=0; B_set:=100; END_IF;
    IF ((R_out=100)AND(G_out=0)AND(B_out=100)AND(Auto)) THEN R_set:=100; G_set:=0; B_set:=0; END_IF;
    Это автомат ротации цветов. По достижении одной комбинации уставок задаётся следующая комбинация. Реально суть переключений сводится к этому: state := MAX(1, (state + 1) MOD 7), причём нулевое состояние можно использовать вместо признака Auto. А суть условий сводится к тому, что все условия делятся на 100. В итоге можно обойтись одним условием и обезопасить себя от несоответствий:
    Код:
    IF state > 0 AND R_out MOD 100 = 0 AND G_out MOD 100 = 0 ABD B_out MOD 100 = 0 THEN
        state := MAX(1, (state + 1) MOD 7);
        R_set := SEL(state.0, 0, 100);
        G_set := SEL(state.1, 0, 100);
        B_set := SEL(state.2, 0, 100);
    END_IF
    И тому подобное. Код надо писать так, чтобы как можно труднее было ошибиться из-за копипаста.

  4. #14

    По умолчанию

    Цитата Сообщение от RadioLover Посмотреть сообщение
    Че ж такое то?
    Codesys 2.3.9.41
    Таргет 2.10

    Если хотите, наделаю скриншотов настроек.
    Но должно же быть более красивое решение.
    У тебя путь к папке с target-файлами какой ?
    Последний раз редактировалось Вольд; 23.06.2015 в 12:02.

  5. #15

    По умолчанию

    Yegor, в этом проекте интересен не код, а авторские идеи по управлению освещением. Посмотри сколько он всего понапридумывал.
    Последний раз редактировалось Вольд; 23.06.2015 в 11:15.

  6. #16
    Пользователь
    Регистрация
    13.10.2011
    Адрес
    Златоуст
    Сообщений
    1,021

    По умолчанию

    Клёво. Особенно клёво, если эти фишки не сбивают с толку остальных жильцов.

    Я, кстати, делал что-то в таком роде вот этому товарищу: http://www.owen.ru/forum/showthread.php?t=18565 Там, впрочем, не было вещей вроде конечников в шкафчиках ванной; не было и графической панели. Он подумывал об управлении с планшета по вайфаю, но по некоторым причинам эта тема не пошла. В итоге мне дали просто раскладку сцен по нефиксированным кнопкам. По одиночному нажатию включается/выключается свет согласно последней сцене, по удержанию — меняются сцены. Переводить эту раскладку вручную мне очень не хотелось, и я написал прогу на сишарпе, которая генерировала вот такой ST-код:
    Код:
    shower36(button := DI36, sceneCount := 2, lightsOn => state.0);
    bathroom7(button := DI7, sceneCount := 2, lightsOn => state.1);
    bathroom8(button := DI8, sceneCount := 1, lightsOn => state.2);
    (* ... *)
    MO[30] := (shower36.sceneIdx = 0 AND shower36.lightsOn);
    DO9 := (shower36.sceneIdx = 0 AND shower36.lightsOn) OR (bathroom8.sceneIdx = 0 AND bathroom8.lightsOn);
    DO23 := (shower36.sceneIdx = 1 AND shower36.lightsOn);
    из вот такого:
    Код:
    shower36    m30p9    p23
    bathroom7    m31    m32    
    bathroom8    p8p9        
    laundry26    p7        
    laundry22    m20    m28    m20m28
    ... что в свою очередь получалось напрямую из такого: http://imgur.com/6C97kes Разумеется, это только часть всего — там на порядок больше.

    Проект не выкладываю, т.к. с заказчиком это не обговаривали.
    Последний раз редактировалось Yegor; 23.06.2015 в 12:32.

  7. #17

    По умолчанию

    Yegor, а что за ОС стояла на том планшете ?
    Последний раз редактировалось Вольд; 23.06.2015 в 13:52.

  8. #18
    Пользователь
    Регистрация
    13.10.2011
    Адрес
    Златоуст
    Сообщений
    1,021

    По умолчанию

    Андроид. Я знаю про полуготовые решения под эту платформу, если что У меня и опыт разработки под андроид есть какой-никакой.

  9. #19

    По умолчанию

    Цитата Сообщение от Yegor Посмотреть сообщение
    Андроид. Я знаю про полуготовые решения под эту платформу, если что У меня и опыт разработки под андроид есть какой-никакой.
    А ты под Android на чем собирался программу писать ?

  10. #20
    Пользователь
    Регистрация
    18.06.2015
    Адрес
    Бровары, Украина
    Сообщений
    5

    По умолчанию

    путь к таргетам - по умолчанию: C:\CoDeSys\Targets\PLC100.K_L\\IOModules\
    в приложении - експорт
    Вложения Вложения
    • Тип файла: rar EXPORT.rar (11.8 Кб, Просмотров: 32)

Страница 2 из 4 ПерваяПервая 1234 ПоследняяПоследняя

Похожие темы

  1. Ответов: 16
    Последнее сообщение: 15.02.2017, 11:39
  2. Ответов: 20
    Последнее сообщение: 15.04.2015, 11:02
  3. Ответов: 7
    Последнее сообщение: 27.02.2013, 19:08
  4. как выбрать управление "прямое" или "обратное"
    от maxmore в разделе Эксплуатация
    Ответов: 1
    Последнее сообщение: 18.01.2010, 10:13

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •