Стартовая страница › Форумы › Понять, как работает ПО › Мнемосхемы › Битовый массив в виде матрицы светодиодов
- В этой теме 20 ответов, 4 участника, последнее обновление 6 дней, 15 часов назад сделано
Mikhail.
-
АвторЗаписи
-
12.10.2026 в 21:41 #45366
Vic616
УчастникДоброго времени суток!
RapidScada 6, Mimic Editor.
Есть задача отобразить на новой мнемосхеме матрицу светодиодов (24 х 31).
Зажигать их надо по данным двух каналов (канал строк и канал столбцов) на основе побитного AND этих каналов.
Задачу можно решить «в лоб» создав 24*31= 744 дорасчетных канала и каждом из которых делать GetBit соответствующих нужному светодиоду битов, но это мне кажется очень некрасиво и громоздко.
Существует ли какая то возможность в самих свойствах диода извлекать нужные значения бит из данных каналов и на основании AND этих бит зажигать или гасить диод?
Может кто то из уважаемого сообщества уже сталкивался с аналогичной задачей, или хотя бы подскажет направление в котором копать?
Заранее благодарю!12.10.2026 в 21:59 #45367
manjey73УчастникВходных канала ДВА? в одном строки 24 бита, в другом столбцы 31 бит?
биты по идее можно же определять в javascript самого Светодиода, ну или сделать ‘светодиод’ свой. Подать на него два канала и добавить экспортируемые свойства, в которых указывать на какие биты одного и второго канала реагировать.
а там, картинка в фейсплейте (только у этого компонента есть экспортируемые свойства) или Разметкой (расширенные компоненты — платные) используя код svg.
Начните с картинки в фейсплейте. Недавно Михаил выкладывал пример смены картинок даже без скриптов.
В принципе реально сделать один компонент.
12.10.2026 в 22:03 #45370
manjey73УчастникНатыкать 744 фейсплейта это будет круто 🙂
Я бы делал на основе Разметки и svg, просто в одном фейсплейте сделал бы саму матрицу .
з.ы. там можно сделать одно изображение светодиода и просто его масштабируя за счет ‘x’ и ‘y’ нужное количество раз.12.10.2026 в 22:15 #45371Vic616
УчастникСпасибо за наводку!
Да, входных каналов два.
Попробую через JavaScript. с новым редактором мнемосхем только начал разбираться, пока всё не очень понятно. Может есть где документация по нему — почитать, поучиться?12.10.2026 в 23:52 #45372
manjey73УчастникОсобенности PlgMimic.pdf
Идея какая, в Разметке можно поместить код svg
В <defs> разместить изображение ОДНОГО индикатора. При помощи use svg создать матрицу , указывая x и y каждого объекта в выключенном состоянииПри помощи скрипта подсвечивать (менять цвет, фон, что угодно) нужный элемент.
Использовать Уникальный ID для каждого элемента use в общем.Можно даже скрывать элементы use.
как мучать можно посмотреть в моих примерах примеры
В Маркере и в QFD есть примеры с use, ну и как цвет менять.
12.10.2026 в 23:54 #45373
manjey73Участникз.ы. при желании можно сделать так, что вы будете задавать размер матрицы и оно само все нарисует скриптом каждый элемент по указанной сетке.
13.10.2026 в 09:47 #45380
manjey73УчастникВот тут конечно, при создании подобных матриц, очень вредно копировать html разметку каждый раз при работе domUpdated.
Один раз при открытии страницы в domCreated это нормально, потом только изменения.И так во многих вещах. Это вот на заметку Михаилу, убрать этот эффект, или сделать его управляемым из скрипта.
-
Ответ изменён 1 неделя, 2 дня назад пользователем
manjey73.
13.10.2026 в 14:17 #45382
MikhailМодераторСуществует ли какая то возможность в самих свойствах диода извлекать нужные значения бит из данных каналов и на основании AND этих бит зажигать или гасить диод?
Добрый день!
При привязке канала к элементу матрицы доступно свойство Выражение, которое позволяет на уровне компонента извлечь заданный бит. Таким образом, количество необходимых каналов можно уменьшить.13.10.2026 в 14:20 #45383
MikhailМодераторЗажигать их надо по данным двух каналов (канал строк и канал столбцов) на основе побитного AND этих каналов.
Попробуйте разработать фейсплейт, который будет иметь 2 соответствующих экспортируемых свойства. Внутри этого фейсплейта нужно разместить элементы, которыми будете управлять на основе значений двух свойств.
Учитывая текущие особенности работы мнемосхем, удобнее всего внутри фейсплейта поместить компонент Разметка, внутри которой находится собственный SVG. Тогда за образец можно взять Damper.fp.13.10.2026 в 14:22 #45384
MikhailМодераторКроме того, вариант с компонентом Разметка будет достаточно оптимальным по сравнению с 744 компонентами типа Светодиод с точки зрения создания вспомогательных JavaScript объектов при работе мнемосхемы.
13.10.2026 в 14:37 #45387
MikhailМодераторОбратите внимание, что в JavaScript тип Number имеет ограничения. 31 бит может не поместиться в нём. Нужно проверять.
13.10.2026 в 22:05 #45394Vic616
УчастникСпасибо за информацию к размышлению.
В общем вектор ясен, буду пробовать делать фейсплейт с двумя свойствами, опять же повспоминать программирование тоже будет полезно.
Работа факультативная, денег за нее получить вряд ли удастся, поэтому быстро не попробую.
Но в любом случае — большое спасибо. Как чего будет получаться/неполучаться — отпишусь.14.10.2026 в 15:06 #45404
MikhailМодераторКаким образом кодируются 744 светодиода с использованием только двух каналов?
14.10.2026 в 15:43 #45407
manjey73УчастникБитами двух каналов, как я понял.
Один канал (24 бита) разрешают работать всему ряду.
Ещё 31 бит это столбцы.Хотя да, тоже как-то странно, как по мне.
Мне кажется если там идёт сканирование с большой частотой, то время обновления страницы не даст этого сделать.15.10.2026 в 22:56 #45442Vic616
УчастникПо оси Х — дни месяца(31 бит) по оси Y — часы (24 бита). Если день не выходной (или праздничный) то в соответствующий бит записана 1. Таков же принцип с часами. То есть если на данный час запланирована работа и соответвующий день не выходной — то на пересечении столбца и строки светодиод отображается зеленым.
Короче, это визуализация расписания работы газопоршневой установки. В начале месяца оператор заносит график работы, отмечая на мнемосхеме (там ряд кнопок от 1 до 31 и от 00:00-01:00 до 23:00-00:00) выходные и праздники, и часы работы. Потом нажимает кнопку и эти два битовых поля улетают в контроллер ГПУ. Этот функционал у меня реализован, всё работает. Хотелось отобразить это в виде массива светодиодов для наглядности. -
Ответ изменён 1 неделя, 2 дня назад пользователем
-
АвторЗаписи
- Для ответа в этой теме необходимо авторизоваться.