Вся логика сделана на ф. кнопках
для индикации вкл. состояния используются битовые лампы (Этап 1)
Скрытый текст:
Затем у ламп меняется оформление, внешний вид ламп выбран имитирующий состояние кнопок (Этап 2)
Скрытый текст:
Последний штрих лампы помещаются поверх ф.кнопок (Этап 3)
Скрытый текст:
Мой канал на ютубе
https://www.youtube.com/c/ПетрАртюков
Мой канал на РУТУБЕ
https://rutube.ru/channel/23641433/
Библиотека ГМ для СП300
https://disk.yandex.com/d/gHLMhLi8x1_HBg
Хотелось бы пояснить логику работы функций в кнопках, т.к. есть не очевидные моменты
Для контроля последовательности нажатия кнопок 1-2-3-4 используются вспомогательные биты PSB300..303. Регистр со значением для линейки выбран PSW500.
Задача: - в зависимости от комбинации бит PSB300..303 при нажатии любой кнопки нужно записывать в PSW500 фиксированные значения 25, 50, 75, 100.
И так в каждой кнопке есть цепочка функций, функции выполняются последовательно, сверху вниз, в том порядке как они расположены. Некоторые функции выполняются безусловно, а на выполнение остальных наложены ограничения. Ограничения на выполнение для отдельных функций спрятаны за кнопкой "Пароль", например
Захват-6.png
1. Кнопка №1
Захват-4.png
цепочка состоит из следующих функциий
- Инвертировать бит PSB300(бит состояния самой кнопки №1), выполняется безусловно. Визуально - нажали Включилось следующие нажатие Выключилось
- Включить бит PSB300(бит состояния кнопки №1), выполняется по условию если включен бит PSB301(состояние кнопки №2). Нивелирует результат предыдущей функции, т.е. если следующая кнопка включена, то эту кнопку выключить нельзя!
- функция PSW500 =PSW500 - 25, выполняется безусловно. Но фактически будет выполняться когда в PSW500 уже есть число 25, как результат предыдущего нажатия кнопки.
- функции PSW500 = 25, выполняется по условию если в текущем нажатии бит PSB300 установился первой функцией цепочки или второй. Нивелирует результат предыдущей функции, т.е. в PSW500 значение < 0 не возникнет.
- функции PSW500 = 50, выполняется по условию если бит PSB301(если кнопка №2) вкл. Нивелирует результат предыдущей функции. Если больше нет нажатых кнопок это значение будет результатом нажатия кнопки.
- функции PSW500 = 75, выполняется по условию если бит PSB302(если кнопка №3) вкл. Нивелирует результат предыдущей функции. Если больше нет нажатых кнопок это значение будет результатом нажатия кнопки.
- функции PSW500 = 100, выполняется по условию если бит PSB303(если кнопка №4) вкл. Нивелирует результат предыдущей функции и это значение будет результатом нажатия кнопки.
2. Кнопка №2.
Захват-5.png
цепочка функций аналогичная, меньше на одну функцию (нет функции PSW500 = 25)
3. Кнопки №3 и №4
цепочки функций аналогичные, в каждой меньше на одну функцию (нет функции PSW500 = 50 и PSW500 = 75 соответственно)
Последний раз редактировалось petera; 12.09.2019 в 13:08.
Мой канал на ютубе
https://www.youtube.com/c/ПетрАртюков
Мой канал на РУТУБЕ
https://rutube.ru/channel/23641433/
Библиотека ГМ для СП300
https://disk.yandex.com/d/gHLMhLi8x1_HBg
Добрый день! Стоит задача получить модуль знакопеременного значения переменной float и записать его во внутренний регистр. Руководство по макросам не помогло, прошу помощи
Добрый день.
Простейший пример:
Код:*(float*)(PSW+302) = fabs(*(float*)(PSW+300));
Связь со мной: telegram: @JuneSmellsLikeBlood | e-mail: e.kislov@owen.ru (личка на форуме - не подходит)
Раздел CDS V3.5 на сайте | Основные темы по CDS V3.5 на форуме: Вопросы и ответы | Визуализация | Настройка обмена с другими устройствами
Repository Archive V3.5 SP4 (необходим для СПК207/СПК1хх без Eth/ПЛК3xx)
oscat.ru | Как обратиться в техподдержку? | Как отлаживать ошибки | Отладка проектов в CODESYS V3.5 | Проблема XY | Как правильно задавать вопросы | AnyDesk
Спасибо, Евгений!
Добрый день!
Имеется такой проект:
4 поплавковых переключателя (концевики), показывающие уровень жидкости в резервуаре (сигнал с них будет приходить на ПЛК160, но пока хочу отработать алгоритм на функциональных кнопках). Первый поплавок- нижний уровень жидкости, 2й и 3й промежуточные значения, 4й- переполнение. В рабочем режиме они должны срабатывать по очереди 1-2-3-4 и так же отключаться 4-3-2-1 или 1-2-3-2-1 или 1-2-1. У данных поплавков бывают отказы, то есть не всегда срабатывают. При этом не совсем корректно начинает отображаться алгоритм работы на панели СП310.
Можно ли реализовать такую функцию, если поплавки срабатывают не по очереди или один или несколько не сработали, выводить окно об ошибке(туда сделать что -то типа сброса)?
Последний раз редактировалось Айрат Гарафутдинов; 17.09.2019 в 10:54.
Мой канал на ютубе
https://www.youtube.com/c/ПетрАртюков
Мой канал на РУТУБЕ
https://rutube.ru/channel/23641433/
Библиотека ГМ для СП300
https://disk.yandex.com/d/gHLMhLi8x1_HBg
Чтобы не перебирать все неверные комбинациии включенных датчиков Проще всего описать корректные состояния датчиковВ рабочем режиме они должны срабатывать по очереди 1-2-3-4 и так же отключаться 4-3-2-1 или 1-2-3-2-1 или 1-2-1. У данных поплавков бывают отказы, то есть не всегда срабатывают.
их всего 5
0,
1
12
123
1234
и если текущие комбинация датчиков не попадает в эти состояния - авария
в кодесис это выглядит так
Захват-1.png
Решение для панели, включая формирование линейки
Скрытый текст:
Для линейки используется PSW500
Бит аварии(вызов окна) - PSB500
Биты состояния датчиков прежние PSB371..374
Мой канал на ютубе
https://www.youtube.com/c/ПетрАртюков
Мой канал на РУТУБЕ
https://rutube.ru/channel/23641433/
Библиотека ГМ для СП300
https://disk.yandex.com/d/gHLMhLi8x1_HBg