AlexanderUshakov

Ответы в темах

Просмотр 7 сообщений - с 16 по 22 (из 22 всего)
  • Автор
    Записи
  • AlexanderUshakov
    Участник

    Потому что люди, которые его администрируют работают в другом отделе и им якобы трудно, неудобно, очень заморочено заводить тэги в соответствии их реальным типом данных, а в стринг они где-то там используют у себя и им достаточно, мне сложно сказать, мне просто поставили задачу забрать у них данные и вывести в СКАДУ.
    Раз уж оффтоп по OPC-серверу. Скажите у меня есть kepserver с которого мастерскада4D забирает параметры. Безопасность и шифрование выключены. Но я не могу подключиться из Рапид Скады к нему, пишет «Ошибка соединения с ОРС-сервером: Certificate doesn’t meet minimum key lenght requrement»

    AlexanderUshakov
    Участник

    Михаил, сделал как вы сказали, динамический рисунок заработал.
    Получается мне все каналы для динамических рисунков через конвертацию в расчетные каналы делать?
    Попробовал сделать тип пустой у родного канала 124 и вашу формулу, получаю 0, что недостоверно

    AlexanderUshakov
    Участник

    Михаил, сделал так:
    Добавил канал
    Номер «159»
    Наименование «Расчетный»
    Тип данных «Integer»
    Тип канала «Расчётный»
    Формат «Строка»
    Формула «Val(135)» 135- это канал с температурой.
    Канал 158 оставил с формулой DecodeUnicode(Val(124)) == «1» ? 1 : 0
    Результат в визуализации:
    Канал 159 показывает 0, а канал 135 напрямую 14,6 С
    Канал 158 показывает 1, канал 124 напрямую 1
    https://disk.yandex.ru/i/6omLFWOyDx69TA -администратор
    https://disk.yandex.ru/i/uuPv4Trm62oo6Q -отображение

    Далее сделал следующее:
    Канал 159 поменял тип на Unicode string получил в визуализации:
    Канал 159 показывает 1.33, а канал 135 напрямую 14,7 С
    https://disk.yandex.ru/i/JyFEIpNcRY84Ug -администратор
    https://disk.yandex.ru/i/Qv65Lu39DIu_sg -визуализация

    Но потом выключился вентилятор и рисунок принял значение 0 — появился красный треугольник. Потом Вентилятор включился, принял значение 1, но треугольник на зеленый не поменялся, появилось изображение по умолчанию — серый треугольник.

    AlexanderUshakov
    Участник

    Михаил,у меня приходит из OPC сервера в Unicode string.
    Я в «Каналах», выбрал «Пустое устройство», там добавил канал:
    Номер «158»
    Наименование «Расчетный»
    Тип данных «Integer»
    Тип канала «Расчётный»
    Входная формула DecodeUnicode(Val(124)) == "1" ? 1 : 0 124-канал это статус работы вентилятора 1 или 0 в Unicode string

    Проект компилируется.
    Канал 124 в Unicode string в динамическом тексте показывает 1
    Канал 158 в Integer в динамическом тексте показывает 1
    Канал 158 в Integer в динамическом рисунке изображение НЕ МЕНЯЕТСЯ. Настройки условия Знач.=1 — Зеленый треугольник, Знач.=0 Красный треугольник, Изображение по умолчанию — Серый треугольник.
    Что я делаю не так?

    • Ответ изменён 4 года, 2 месяца назад пользователем Mikhail.
    AlexanderUshakov
    Участник

    Сделал конвертацию и из double в строку потом в int и просто из double в int. Проект работает, но картинка не меняется.
    Но если выводить в динамический текст, то значение меняется с 0 на 1 и обратно. Причем, если я у канала ставлю Формат D вместо Строка, то получаю в тексте «!!!»
    Хотя я же в int сконвертировал, и значение должно быть в int и понимать формат этот.
    Если поле формат вообще пустым оставляю, то динамический текст корректно работает.

    AlexanderUshakov
    Участник

    Спасибо за замечание.
    Сделал так:
    1. Написал StrToInt(Val(135)) в ячейке входная формула.
    2. В ячейке Формат указал D.

    Проект не запускается, запись в журнале:
    [ERR] Ошибка при компиляции исходного кода скриптов и формул: (362,61):error CS1503: Argument 1: cannot convert from ‘double’ to ‘string’

    почему описана конвертация из дабл в стринг?
    ради интереса выбрал встроенный скрипт public double EncodeUnicode(string s)
    результат получил точно такой же

    AlexanderUshakov
    Участник

    «Либо нужно в формуле канала преобразовать строку в число»
    А формула должна быть входная или выходная? Или без разницы?
    А то у меня как-то не вышло.
    Сделал такой скрипт
    public int StrToInt(string s)
    {
    int stringToInt = Convert.ToInt32(s);
    return stringToInt;
    }

    включил формулу и в клетке Входная формула написал — StrToInt(135) 135- это номер канала, проект у меня не запустился.

Просмотр 7 сообщений - с 16 по 22 (из 22 всего)