Преобразование латиницы в кириллицу

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

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

    Добрый день. Не очень силен в написании формул.
    Подскажите, пожалуйста, как текст перевести в кириллицу с условием:

    Если значение канала «BKV out of sync» , то на вебстанции и журнале событий отображается текст «УСВ не синхронизирован»
    Аналогично с BKV synh with GPS — «УСВ синхронизирован»

    Это все относится к одной переменной.

    #20765
    MikhailMikhail
    Модератор

    Добрый день!
    Можно сделать. Сначала несколько доп. вопросов:
    Какой драйвер используется?
    Есть ли возможность получить этот параметр от контроллера не строкой, а числом?

    #20766
    a80808a80808
    Участник

    Михаил, так значение канала разве может быть текстовым? Должно быть число. А дальше «Текст перечисления»…

    #20767
    MikhailMikhail
    Модератор

    8 латинских символов или 4 кириллических символа могут быть записаны во входной канал (8 байт). Текстовые значения, например, поддерживаются драйверами OPC или SNMP.

    Но если приходит число, то вопрос данной темы решается намного проще.

    #20768
    a80808a80808
    Участник

    Ну там по любому больше восьми символов 🙂
    В принципе если писать во входной канал (например №100) первые восемь символов. Затем их анализировать и в зависимости от анализа присваивать значение 1 или 0 дорасчетному каналу (например 101). На значение канала 101 «навешиваем» текст перечисления «Да/нет» и событие по изменению. Сам канал называем «Синхронизация BKV».

    Ну как то так (проверить не на чем :))

    double BKVSync()
    {
    double sync = 0;
    if (val() = «BKV synh»)
    {
    sync = 1;
    }
    else
    {
    sync = 0;
    }
    return sync;
    }
    return

    #20769
    a80808a80808
    Участник

    Ай-ай… неправильно. Возвращаю в тот же канал 🙁

    А так:

    double BKVSync()
    {
    if (val() = «BKV synh»)
    {
    SetVal(101,1);
    }
    else
    {
    SetVal(101,0);;
    }
    }

    #20770
    a80808a80808
    Участник

    double BKVSync()
    {
    if (val() == «BKV synh»)
    {
    SetVal(101,1);
    }
    else
    {
    SetVal(101,0);;
    }
    }

    #20771
    MikhailMikhail
    Модератор

    Стоит дождаться ответов от автора темы.
    Чтобы в формулах работать со строковыми значениями каналов, их нужно сначала извлечь:
    string s = ScadaUtils.DecodeUnicode(Val(101));

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