Стартовая страница › Форумы › Понять, как работает ПО › Использование формул › Разбор аварии из 32-бит с занесением в журнал
- В этой теме 11 ответов, 6 участников, последнее обновление 9 месяцев назад сделано Mikhail.
-
АвторСообщения
-
23.11.2023 в 08:38 #30455mr_smitУчастник
Который день ломаю голову…
По modbus читаю регистр ошибок. Он 4-байтный. Соответственно 32 бита = 32 вида ошибок. Когда всё хорошо то = 0.
Сейчас сделал перечисление: Alarm «; Авария»
В web поставил динамический текст и назначил ему входной канал аварий. В сам канал аварии добавил формулу Cnl > 0? 1:0 и выбрал перечисление Alarm.
Т.е. при возникновении любой ошибки в динамическом тексте появляется слово «Авария». В журнал заносится Канал, определен, Авария. Когда авария сбрасывается, то в журнал заносится Канал, определен, … .
Во-первых, как уйти от пробела в журнале при сбросе аварии?
И второе. Меня интересуют 4 ошибки в первую очередь из этих 32-х. Т.е. 4,8,9,15 бит аварии отобразить. Если другие, то просто написать Авария.
Планирую сделать дополнительно 4 канала и 4 динамических текста. И через GetBit получать 0 или 1. И в зависимости от этого зажигать тот или иной динамический текст. Но опять же при этом при сбросе будет пустая строка в журнал заноситься.
Ещё раз, регистр стал > 0. В журнал заносится «установка, определен, авария» первой строкой. Второй строкой расшифровка если выпал какой то из нужных бит. Если нет, то и второй строчки нет. В web видно и Авария и «расшифровка» (если нужные биты). Когда регистр стал 0, то можно просто занести в журнал что авария «ушла».
Чувствую как то проще и изящнее можно сделать. Как правильно? Моего логического мышления не хватает 🙁
23.11.2023 в 10:58 #30456JurasskParkУчастникМихаил часто писал на форуме, что сделать функцию, которая на вход принимает значение, внутри функции у вас будет парсинг этих битов, вот здесь как раз и можно обработать ваши пустые строки. 🙂
P.S. Смотрите таблицу Скрипты (папка Вспомогательные таблицы) и как это там сделано. Делайте свою функцию.
23.11.2023 в 11:33 #30457a80808УчастникА чем GetBit() не устраивает? Если регистр не 0 то в цикле смотрите какой бит 1 а там уж дальше решение принимаете.
23.11.2023 в 14:20 #30458manjey73УчастникУ автора другая проблема — ненужное ЕМУ отображение нормализации в событиях.
То есть поле пусто-пусто-пусто БАЦ «Авария» покажи и зафиксируй.
Пропала авария или сброшена — ничего не показывай и не фиксируй в событиях.23.11.2023 в 14:21 #30459manjey73Участникз.ы. не хватает динамического списка для WEB. Как раз для Аварий из битовых масок.
ИМХО.23.11.2023 в 14:27 #30460JurasskParkУчастникНу я лично этого не понял 🙂
Мне всегда нужны картинки, видео и конкретное и четкое описание «как должно» и «как на самом деле происходит».23.11.2023 в 15:16 #30464MikhailМодераторОдин канал принимает только одно значение. Поэтому если одновременно может быть несколько разных аварий, то потребуется отдельный канал для каждой из них.
Текст событий генерируется автоматически. Поэтому вместо пустого текста для отображения событий предпочтительно написать «норма». Но тогда этот текст появится на схеме тоже. Может быть, на схеме светодиодом показывать аварию.
23.11.2023 в 17:20 #30465a80808УчастникМожно сдублировать каналы. Тот, то в события (если я правильно понял) с птичкой на записи событий текст «Авария»; «Норма», тот что на схеме (без птички) вообще убрать текст перечисления и ориентироваться на статус или коллекцию. Т.е. Авария — картинка с Восклицательным знаком (!), норма — картинки нет.
14.12.2023 в 21:36 #30628mr_smitУчастникИтак, пусть данные об аварии читаются в 507 канал. Когда там 0 — ошибок нет. Когда больше 0 — ошибки есть и их надо разобрать.
Создал расчетный канал 539 в который дублируется значение из 507 канала и по условию Val(507) > 0? 1:0 выдается 0 или 1 (когда есть ошибки). Далее сделал изображение с надписью «Авария». Поместил на мнемосхему динамическое изображение. Указал входной канал 539. При 0 — пустое изображение, при 1 — изображение с надписью Авария. В качестве формата выбрал свой формат Авария:
«Сброс»:green; «Активна»:redНа этом этапе я получил, что при возникновении аварии становится активной картинка с надписью авария, а в журнал заносится сообщение с надписью Авария — «Активна». При пропадании аварии Авария — «Сброс».
Но хотелось расшифровки. Меня интересовало только 4 ошибки из 32-х. Я решил что сделаю расшифровку 4-х, а при возникновении любой другой просто выдать надпись Авария.
Добавил на каждую ошибку свой расчетный канал. В формуле канала GetBit(Val(507),3) с порядковым номером интересующего меня бита. Получается теперь, что при возникновении ошибки на мнемосхеме появляется надпись авария, а журнал заносится её расшифровка.
[url=https://ibb.co/FgFbn2G][img]https://i.ibb.co/FgFbn2G/1.jpg[/img][/url] [url=https://ibb.co/D5tz1dK][img]https://i.ibb.co/D5tz1dK/2.jpg[/img][/url] [url=https://ibb.co/vX9gK5c][img]https://i.ibb.co/vX9gK5c/3.jpg[/img][/url]
P.S. Только заметил интересный момент. Сообщение Авария заносится и в журнал «Все сообщения» и в журнал «По представлению». А уже расшифровка отображается только в журнале «Все сообщения», в журнал «По представлению» не заносится. Интересно почему? Есть предположение что это из за того что выбран везде один формат «Авария». «По представлению» видимо он не дублируется т.к. первым туда заносится сообщение «Авария». Возможно если сделать такой же формат, но назвать его Авария1 и выбрать его для расшифровок то и в журнал «По представлению» будет заноситься всё.
15.12.2023 в 08:15 #30629RomirosУчастникЕсли на вкладке «по представлению» событие отсутствует, значит Вы не добавили данный канал на схему.
15.12.2023 в 11:36 #30634mr_smitУчастникЕсли на вкладке «по представлению» событие отсутствует, значит Вы не добавили данный канал на схему.
Да, так и есть.
https://ibb.co/FgFbn2G
https://ibb.co/D5tz1dK
https://ibb.co/vX9gK5c15.12.2023 в 12:25 #30644MikhailМодераторТолько заметил интересный момент. Сообщение Авария заносится и в журнал «Все сообщения» и в журнал «По представлению»
Журнал событий один и тот же, на самом деле. Все или по представлению — это только фильтр событий. Все — показывает все события, доступные пользователю. По представлению — события для тех каналов, которые есть в представлении.
На мнемосхеме (свойства документа схемы) можно дописать номера каналов, которые не отображаются компонентами, но нужны для работы фильтра.
-
АвторСообщения
- Вы должны авторизироваться для ответа в этой теме.