Стартовая страница › Форумы › Понять, как работает ПО › Мнемосхемы › Битовый массив в виде матрицы светодиодов
- В этой теме 10 ответов, 3 участника, последнее обновление 3 часа, 2 минуты назад сделано
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 это нормально, потом только изменения.И так во многих вещах. Это вот на заметку Михаилу, убрать этот эффект, или сделать его управляемым из скрипта.
-
Ответ изменён 7 часов, 52 минуты назад пользователем
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 бит может не поместиться в нём. Нужно проверять.
-
Ответ изменён 7 часов, 52 минуты назад пользователем
-
АвторЗаписи
- Для ответа в этой теме необходимо авторизоваться.