logo logo logo
13.11.23

Лестницы и мебель на заказ в Самаре

       В обустройстве нуждается каждое помещение, особенно, такая необходимость, возникает в период завершения строительства или же ...
12.11.23

Быстровозводимые здания под ключ

     Строительство остается одним из основных направлений индустриального развития страны. Это именно та отрасль, которая позволяет ...
03.11.23

Шкафы для раздевалок

Оборудовать предприятие не так просто. В первую очередь, необходимо обеспечить полноценную производственную деятельность, а также ...
25.10.23

Все преимущества рекламы в интернете

Открытие интернета, изменило жизнь каждого человека. Еще более значительную роль, интернет стал играть в работе бизнеса. Практически каждая ...
24.09.23

Подстолья из металла на заказ в Москве

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

Программирование Alpha SE на образце демо щита — 3

Программирование Alpha SE на образце демо щита - 32 ? отъединенно лишь 2 реле,

3 ? замкнуты лишь 1 а также 2 реле,

255 ? замкнуты все реле.

Выяснить о согласовании битов выходным реле позволительно применяя конвертор, аннексированный в окно редактора програмки.

На этом ликбез сообразно битовым маскам станем полагать оконченным.

Мыслю, что с этого момента обязано существовать ясно, что при передаче в функцию Set_SER8I8O_BufOutput битовой маски 0 все реле разомкнуться, а 255 ? замкнутся.

А также этак наша програмка, отрабатывающая метод ?Отключить все? при нажатии клавиши станет представлена последующим кодом:

if (var[20]==1){var[254]=Set_SER8I8O_BufOutput(1,0);}

В переменную 254 сохранится итог исполненья операции размыкания всех реле.

Однако в коде имеется один небольшой недочет ? покуда клавиша нажата контроллер станет непрерывно пробовать разъединить все реле блока SECU ? приблизительно 22 раза в секунду. Независимо от того, что юзер этого никак не увидит, на взгляд программирования код никак не совершенно тактичный. Для корректирования этого недостатка незначительно модернизируем код.

if (var[20]!=var[30]) # Ежели поменялось положение клавиши ‘Отключить все’ с прошедшего витка программы{if (var[20]==1) # Ежели клавишу нажали, но не отжали{var[254]=Set_SER8I8O_BufOutput(1,0);};};var[30]=var[20];

Присвоение переменной 30 смысла переменной 20 нужно для фиксации факта конфигурации состояния клавиши.

Однако как нам проработать этот же метод при помощи сенсорной панели? Позволительно естественно на явление нажатия клавиши сенсорной панели предназначить отправку команды Set_SER8I8O_BufOutput(1,0), только этот путь далековато никак не идеален а также вот отчего ? предположим через некотрое время покажется очередной блок SECU 16 а также тогда Вам будет необходимо опять записывать как программный код контроллера, этак а также сенсорной панели, т.е. непрерывно смотреть за идентичностью алгоритмов сенсорной панели а также контроллера. Во-2-х програмка контроллера выполняется в 10-ки раз скорее, чем команды поступающие от CPU-XA Server сенсорной панели. Как тогда поступить? Протест совсем прост. Нам требуется перенести метод ?Отключить все? в единичный программный блок. Предположим, вот этак:

if (var[0]==1) # Отрабатываем метод ‘Отключить все'{var[254]=Set_SER8I8O_BufOutput(1,0); # Отправляем команду модулю SECU16 отключить всеvar[0]=0;};

Сейчас для отработки метода ?Отключить все? хоть каким образом необходимо поменять смысл переменной 0 на 1. Эту функцию разрешено создавать а также из текста самой програмки, а также при помощи сенсорной панели. Опосля отработки метода смысл переменной опять поменяется на 0.

Модернизированный код приведен ниже:

if (var[20]!=var[30]) # Ежели поменялось клавиши ‘Отключить все’ с прошедшего витка программы{if (var[20]==1) # Ежели клавишу нажали {var[0]=1; # Подключаем признак такого, что нужно проработать метод ‘Отключить все’};};if (var[0]==1) # Отрабатываем метод ‘Отключить все'{var[254]=Set_SER8I8O_BufOutput(1,0); # Отправляем команду модулю SECU16 отключить всеvar[0]=0;};var[30]=var[20];

Клавиша ?Я пришел? станет возделываться подобным методом. Сообразно этой фактору мы пропустим детализированное очерчивание метода.

if (var[21]!=var[31]) # Ежели поменялось положение клавиши ‘Я пришел’ с прошедшего витка программы{if (var[21]==1) # Ежели клавишу нажали{var[1]=1; # Подключаем признак такого, что нужно проработать метод ‘Я пришел’};};if (var[1]==1) # Отрабатываем метод ‘Я пришел'{var[254]=Set_SER8I8O_BufOutput(1,156); # Отправляем команду модулю SECU16 подключить 2,3,4,7 группы освещенияvar[1]=0;};var[31]=var[21];

Приступим к реализации метода выключателей. Осмотрим чаще всего применяемые методы выключателей.

Клавишный отключатель обычный режим: if (var[25]!=var[35]) # Проработка метода клавишного выключателя { var[254]=Set_SER8I8O_Output(1,13,var[25]);};var[35]=var[25];

При изменении состояния входа блока SECU контроллер описывает новое состояние выключателя а также ежели тот замкнулся означает контроллер запирает реле, ежели разомкнулся ? размыкает реле.

Клавишный отключатель режим переключателя: if (var[25]!=var[35]) # Проработка метода клавишного выключателя (режим перелкючателя){var[255]=!var[15];var[254]=Set_SER8I8O_Output(1,13,var[255]);};var[35]=var[25];

В режиме переключателя контроллер заведует выходным реле никак не в согласовании с расположением входа, а элементарно изменяет его положение на противоположное.

Кнопочный отключатель подобен кнопке звонка ? покуда клавишу держим пальцем контакт замкнут, убираем палец ? контакт размыкается. if (var[22]!=var[32]) # Проработка метода кнопочного выключателя{if (var[22]==1){var[255]=!var[12];var[254]=Set_SER8I8O_Output(1,10,var[255]);};};var[32]=var[22];

Приведем код програмки для отработки всех выключателей:

# Правило блока отработки метода выключателей if (var[22]!=var[32]) # Проработка метода кнопочного выключателя{ if (var[22]==1) { var[255]=!var[12]; var[254]=Set_SER8I8O_Output(1,10,var[255]); };};if (var[23]!=var[33]) # Проработка метода