Перевод переменных чисел в слова на схеме

Стартовая страница Форумы Понять, как работает ПО Перевод переменных чисел в слова на схеме

Просмотр 10 сообщений - с 1 по 10 (из 10 всего)
  • Автор
    Записи
  • #38905
    Vitaly_Zhidkov
    Участник

    От контроллера по протоколу Modbus или SNMP приходят числовые параметры типа integer, для которых значению параметра соответствует какое-то слово, пояснение.
    Например, регистр «Режим работы двигателя». Приходит значение 0 — двигатель остановлен, 1 — двигатель запускается, 2 — нормальная работа двигателя, 3 — двигатель останавливается, 4 — авария двигателя, 5 — ремонт двигателя.
    Каким образом можно отображать на схеме вместо числа 0…5 соответствующие слова на русском языке?
    Для этого можно использовать какой-то инструмент графического редактора или только через создание дорасчёта?
    Приведите, пожалуйста, пример создания дорасчёта (скрипта, формулы).

    #38906
    a80808
    Участник

    Не надо никаких дорасчетов.
    В канале, где собираются эти значения, ставите «Формат чисел» = «Текст перечисления», в таблице «Размерности» добавляете строку «Двигатель остановлен; Двигатель запускается; Нормальная работа двигателя; Двигатель останавливается; Авария двигателя; Ремонт двигателя» и указываете эту размерность в поле «Размерности» канала. На схеме будет выводиться нужный текст

    #38909
    Vitaly_Zhidkov
    Участник

    Применил указанный способ. Создал свой формат в таблице Форматы. Добавил в канал. Всё работает.

    #38910
    Vitaly_Zhidkov
    Участник

    Ещё один вопрос по этой же теме.

    От частотного преобразователя передаются данные по одному из регистров.
    И здесь значения, которые соответствуют положению частотного преобразователя, могут быть разными.
    1 — Запущен.
    3 — Ожидание.
    0, 4, 1280, 1344, 1368 — Остановлен.
    1347 — Вперёд.

    Как в этом случае отображать на схеме вместо числа соответствующие слова на русском языке?
    Наверное, можно создать канал с дорасчётом, где переменной на выходе будут соответствовать значения:
    0, 4, 1280, 1344, 1368 —> 0
    1 —> 1
    2 —> 2
    3 —> 3
    1347 —> 4

    И потом уже использовать этот канал с дорасчётом, как в предыдущем случае.

    Приведите, пожалуйста, пример создания дорасчёта (скрипта, формулы) для этого случая.

    #38911
    a80808
    Участник

    Идея верная. Если не срочно, скрипт немного позже. Если кто другой не поможет )))

    #38912
    manjey73
    Участник

    Вам нужно сделать через case (выкладывали формулы) и привести в последовательности
    А далее все точно так же.

    Если бы шаг был меньше, то каждый символ ; удаляет из перечисления число.
    Например у вас нет никогда нуля, вы можете в начале перечисления поставить пустой ; Тут 1; Тут 2; ; Тут 4

    Но как-то набивать 1344 точек с запятой это жесть 🙂

    #38913
    manjey73
    Участник

    Можно не дорасчетный, а там же во входной. Просто формула через case будет возвращать последовательные цифры.

    #38914
    manjey73
    Участник
    #38946
    Vitaly_Zhidkov
    Участник

    По приведенному примеру написал скрипт

    // Устанавливает значения для перечисления для статуса ПЧ.
    public double StatusPCh(double val)
    {
    switch ((int)val)
    {
    case 0: return 0; // Остановлен
    case 1: return 1; // Запущен
    case 2: return 2; // Значение не используется
    case 3: return 3; // Ожидание
    case 4: return 0; // Остановлен
    case 1280: return 0; // Остановлен
    case 1344: return 0; // Остановлен
    case 1347: return 4; // Вперёд
    case 1368: return 0; // Остановлен
    default: return 0;
    }
    }

    #38947
    Vitaly_Zhidkov
    Участник

    Создал канал с типом дорасчёт.
    Написал в него входную формулу StatusPCh(Val(10051)); Stat(10051).
    Создал и добавил в канал формат, как в примере с двигателем.
    Всё работает.

Просмотр 10 сообщений - с 1 по 10 (из 10 всего)
  • Для ответа в этой теме необходимо авторизоваться.