Первая задача
Вложение 44570
Вложение 44571
Вид для печати
Первая задача
Вложение 44570
Вложение 44571
Имеет значение порядок нажатия переключателей?Цитата:
И вторая задача: необходимо сделать заполнение инструмента "линейка" по 4м переключателям. То есть есть 4 переключателя, при нажатии на первый- заполнение линейки на 1/4, если отжать его, линейка уходит в нулевое положение. При нажатии сначала на 1й- заполнение на 1/4, на 2й- заполнение происходит на 1/2. Если отпустить 2й, заполнение снова становится 1/4. Тоже самое с 3м и 4м переключателями. Нажат 1- 1/4, нажаты 1 и 2- 1/2, нажаты 1, 2 и 3- 3/4, и нажаты все 4 - заполнение 100%. При отжатии переключателей- все в обратную сторону.
Т.е. №2 можно нажать если №1 не включен? Или только в такой последовательности сначала №1 затем №2 и выключение строго в обратной последовательности?
№3 и №4 допускается включать если не включены №1 и №2?
Пример во вложении
Вложение 44576
Скрытый текст:
Вся логика сделана на ф. кнопках
для индикации вкл. состояния используются битовые лампы (Этап 1)
Скрытый текст:
Затем у ламп меняется оформление, внешний вид ламп выбран имитирующий состояние кнопок (Этап 2)
Скрытый текст:
Последний штрих лампы помещаются поверх ф.кнопок (Этап 3)
Скрытый текст:
Хотелось бы пояснить логику работы функций в кнопках, т.к. есть не очевидные моменты
Для контроля последовательности нажатия кнопок 1-2-3-4 используются вспомогательные биты PSB300..303. Регистр со значением для линейки выбран PSW500.
Задача: - в зависимости от комбинации бит PSB300..303 при нажатии любой кнопки нужно записывать в PSW500 фиксированные значения 25, 50, 75, 100.
И так в каждой кнопке есть цепочка функций, функции выполняются последовательно, сверху вниз, в том порядке как они расположены. Некоторые функции выполняются безусловно, а на выполнение остальных наложены ограничения. Ограничения на выполнение для отдельных функций спрятаны за кнопкой "Пароль", например
Вложение 44582
1. Кнопка №1
Вложение 44580
цепочка состоит из следующих функциий
- Инвертировать бит 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.
Вложение 44581
цепочка функций аналогичная, меньше на одну функцию (нет функции PSW500 = 25)
3. Кнопки №3 и №4
цепочки функций аналогичные, в каждой меньше на одну функцию (нет функции PSW500 = 50 и PSW500 = 75 соответственно)
Добрый день! Стоит задача получить модуль знакопеременного значения переменной float и записать его во внутренний регистр. Руководство по макросам не помогло, прошу помощи
Добрый день.
Простейший пример:
Код:*(float*)(PSW+302) = fabs(*(float*)(PSW+300));
Спасибо, Евгений!
Добрый день!
Имеется такой проект:
4 поплавковых переключателя (концевики), показывающие уровень жидкости в резервуаре (сигнал с них будет приходить на ПЛК160, но пока хочу отработать алгоритм на функциональных кнопках). Первый поплавок- нижний уровень жидкости, 2й и 3й промежуточные значения, 4й- переполнение. В рабочем режиме они должны срабатывать по очереди 1-2-3-4 и так же отключаться 4-3-2-1 или 1-2-3-2-1 или 1-2-1. У данных поплавков бывают отказы, то есть не всегда срабатывают. При этом не совсем корректно начинает отображаться алгоритм работы на панели СП310.
Можно ли реализовать такую функцию, если поплавки срабатывают не по очереди или один или несколько не сработали, выводить окно об ошибке(туда сделать что -то типа сброса)?
Чтобы не перебирать все неверные комбинациии включенных датчиков Проще всего описать корректные состояния датчиковЦитата:
В рабочем режиме они должны срабатывать по очереди 1-2-3-4 и так же отключаться 4-3-2-1 или 1-2-3-2-1 или 1-2-1. У данных поплавков бывают отказы, то есть не всегда срабатывают.
их всего 5
0,
1
12
123
1234
и если текущие комбинация датчиков не попадает в эти состояния - авария
в кодесис это выглядит так
Вложение 44662
Решение для панели, включая формирование линейки
Скрытый текст:
Для линейки используется PSW500
Бит аварии(вызов окна) - PSB500
Биты состояния датчиков прежние PSB371..374
Добрый день!
А каким образом можно реализовать счетчик наработки в часах, а не в секундах?
На сколько я понял, если установить цикл 3600 секунд, то при отключении и последующем включении, отсчет начнется заново.
В качестве операнда использовать регистр PFW(энергонезависимый), формат желательно DWORD
Цикл оставить 1 сек, т.е. подсчет наработки будет в секундах, а вот в дисплее для наработки использовать масштабирование и отображать наработку в часах
ЗЫ
Вложение 44761
Вложение 44762
Если при масштабировании в результат добавить нолик
Вложение 44768
то можно наработку отображать с десятыми частями часа
Вложение 44769
Вложение 44770
Вложение 44771
Добрый день.
При запуске конфигуратора СП300 выскакивает сообщение. Что это может означать ?
Добрый день.
Попробуйте для начала рекомендации отсюда:
https://remontka.pro/side-by-side-co...ion-incorrect/
В РП на СП3xx сказано, что макросы не работают в режиме эмуляции. Это справедливо и для OnLine и для OffLine эмуляции ?
Как в Таблице отображения данных увеличить количество столбцов ? Нужно добавить четвертый столбец для вывода системного времени.
Как уменьшить ширину первого столбца ?
См. скриншот.
Вложение 44871
Добрый день.
Элемент Таблица отображения данных используется для отображения на экране таблицы данных, обновляющейся в реальном времени.
Что значит данные, обновляющиеся в реальном времени ? Возможно ли по нажатию кнопки заносить в эту таблицу данные, хранящиеся в энергонезависимом регистре ?
По нажатию на кнопку надо будет изменить значения регистров, соответствующих нужной строке таблице.
Сделать это можно по-разному - и с макросом, и без него - зависит от конкретной задачи.
Посмотрите приложенный пример.
Вообще нужно делать по другому.
Таким образом у Вас не получится формировать строки таблицы, каждое нажатие кнопки будет переписывать значения в первом столбце таблицы.Цитата:
Еще есть кнопка для записи в таблицу значения регистра
Вам нужно для формирования записей расхода с привязкой ко времени использовать элемент "Архивирование" с привязкой к биту управления(кнопка для записи в таблицу значения регистра)
А таблица будет только отображать архивированные значения
Системное время хранится в регистрах PSW30..35 (год...секунда).
Хороший пример. petera - это голова. Данные из таблицы будут хранится на флешке ?