Формат перечисления с порядковым номером

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

Просмотр 4 сообщений - с 1 по 4 (из 4 всего)
  • Автор
    Сообщения
  • #30493
    Evgeniy58
    Участник

    Добрый день, подскажите можно ли присвоить порядковый номер для «Формат — Перечисление»?
    Для входного канала «Режим работы котла» у меня задано в «Перечислении»
    -; Старт; Готов; Вентиляция; Контроль герметичности; Розжиг запальника; Розжиг горелки; Прогрев; Работа; Стоп; Авария;
    где значение регистра 1 — Старт, 2 — Готов и т д. Эти значения идут по порядку. Тут вопросов нет, всё красиво выводится на мнемосхеме.

    А вот для Регистра «Стек ошибок» регистра возвращает значения в таком ввиде:
    3 = Отказ SD-карты
    8 = НИЗКОЕ НАПРЯЖЕНИЕ!
    16 = Р воздуха < min
    17 = Вентилятор выключ. Р воздуха > min
    18 = Отказ ЧРП вентилятора
    48 = Р газа > min при закрытом клапане (дискретн.датч)
    и так далее.

    Есть ли возможность задать порядковый номер для текста перечисления, чтобы на мнемосхеме выводить значение регистра «Стек ошибок» ?

    Или это лучше реализовать через формулы, где в код вбить все значения всех ошибок?
    Спасибо.

    #30494
    a80808
    Участник

    По мне так проще через формулу записать в доп.канал порядок 1, 2, 3 и т.д. и уже на него накладывать текст перечисления. Если каналов не один так проще формулу если что поправить. Только проверяйте канал сразу на недостоверность данных и в этом случае номер 0 или другой, чтобы показывалась недостоверность. Ну или статусом.

    #30495
    manjey73
    Участник

    Да, проще сделать через формулу в новый порядок последовательно, чем писать
    ;;; Отказ SD карты;;;;;Низкое напряжение;;;;; и так далее пропуская числа.

    Хотя можно и заморочиться, может и заработает 🙂

    #30498
    Mikhail
    Модератор

    Добрый день!
    В перечислении все значение идут по порядку 0, 1, …
    Понадобится формула в таблице Скрипты, примерно такая:

    public double GetValueIndex()
    {
      switch ((int)CnlVal) 
      {
        case 3: return 1;
    ...
        default: return 0;
      }
    }
    

    Затем используйте её в канале: GetValueIndex()

    • Этот ответ был изменен 3 месяца назад от Mikhail.
Просмотр 4 сообщений - с 1 по 4 (из 4 всего)
  • Вы должны авторизироваться для ответа в этой теме.