Вывод текстовой информации вместо цифровой

Стартовая страница Форумы Понять, как работает ПО Вывод текстовой информации вместо цифровой

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

    В базе данные в виде цифровых значений в формате double.
    В табличном представлении мы можем видеть только цифры.
    А есть ли возможность выводить вместо цифровых данных текстовые при отображении ?
    Например у меня есть массив цифровых значений от источника (прибора), при чем могут идти не подряд 1,-,7 а иметь разрывы. 10, 12, 14, 22, 24, 35 и т.д.
    Каждому значению соответствует некое описание.
    Ну на примере цифр подряд это роза ветров. 1 — сервер, 2 — северо-восток, 3 — восток и т.д.
    Или если значения не подряд 10 — облачно, 12 — дождь и т.д.

    Вот как имея в базе данных цифровое значение 10, вывести на экран текст «облачно» или 12 — «дождь» ну и т.д.

    Есть такая возможность ?

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

    Да, конечно можно.
    Заведите в таблицы Размерности размерность Погода. Посмотрите по аналогии, как указать значения для неё. Затем для входного канала установите тип — ТС, Вашу размерность и формат — Текст.

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

    Если значения имеют разрывы, то нужно написать формулу типа

    double ConvertWeather()
    {
      int val = (int)Cnl;
      switch (val)
      {
        case 10:
          return 1;
        default:
          return 0; // по умолчанию
      }
    }
    
    #4013
    manjey73
    Участник

    Спасибо, попробую разобраться…

    #6444
    Rainproof
    Участник

    А что за тип канала ТС? у меня такого нет в выпадающем списке. Названия на английском — Real, Discrete и т.п.

    #6449
    manjey73
    Участник

    Теле Сигнал, по идее Discrete

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

    Значит, Вы скачали Rapid SCADA с нашего англоязычного сайта, где в дистрибутив входит англоязычная база. Вы можете скачать русский дистрибутив с http://rapidscada.ru и переписать C:\SCADA\BaseSDF\ScadaBase.sdf, а также настройки Коммуникатора в C:\SCADA\ScadaComm\Config
    Переустановка не требуется

    #6727
    Oleg
    Участник

    Здравствуйте. Вопрос по этой же теме.
    Есть контроллер, в котором ошибки работы агрегата записываются в блок данных размером 200 байт. Количество типов ошибок 200х8=1600. Есть список этих ошибок в текстовом виде типа:
    «ошибка 100.0″=»Ошибка автомата»
    «ошибка 100.1″=»Ошибка предохранителя»

    Есть какой либо более простой способ выводить ошибки на веб страницу, чем создание 1600 входных каналов + создание 1600 строк в таблице Размерности с описанием ошибки для каждого канала?

    У меня был вариант создания 50 входных каналов для считывания 50 переменных типа DWORD что с разрядностью контроллера составит 50 двойных слов х 4 байта х 8 бит = 1600 бит. Далее каждый канал раскладывать по битам и брать те каналы, значение которых равно 1, т.е. ошибка активна. Далее, зная номер канал с активной ошибкой мы можем с помощью формулы взять описание ошибки из референсного текстового файла на сервере, например «ошибка 100.0″=»Ошибка автомата».
    Но как это описание вывести в табличное представление или на схему?

    • Этот ответ был изменен 6 лет, 9 месяцев назад от Oleg.
    #6729
    manjey73
    Участник

    ограничение текста 8 знаков для ASCII или выходит 4 знака для Unicod. Это если формулой формировать текст

    Так что наверное все таки через размерности пока.
    Как вариант сделать сотню картинок, например SVG и через коллекцию по значению

    Кстати для Коллекции не хватает вывода текста а не только картинок.

    • Этот ответ был изменен 6 лет, 9 месяцев назад от manjey73.
    • Этот ответ был изменен 6 лет, 9 месяцев назад от manjey73.
    #6733
    Mikhail
    Модератор

    Вариант 1.
    1600 входных каналов. Имя ошибки при этом — это имя входного канала, а значение ошибки — Есть или Нет. То есть забивать множество размерностей не потребуется.

    Вариант 2.
    Если Вы можете сократить названия ошибок до 8 латинских или 4 кириллических символа, то можно написать формулу, которая будет выдавать ошибку в виде текста. Правда формулу придётся разбить на несколько, из-за ограничений размера текста формулы.
    Т.к. в значении входного канала 32 бита, то Вы правильно написали, что потребуется несколько входных каналов. Формула будет базироваться на них.

    Если несколько ошибок возникнет одновременно, то какой текст выдавать?

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

    Как вариант сделать сотню картинок

    Насколько я понял, потребуется 1600 картинок 🙂

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

    При таком количестве допустимых значений создание формулы или ввод каналов надо как-то автоматизировать. У Вас же наверное есть готовый текстовый список?

    #6738
    manjey73
    Участник

    кстати да, можно хранить файл а формулой читать код ошибки и брать его из файла.
    з.ы. можно чуть еще изменить функциональность и показывать ошибки в цикле с задержкой 3-5 секунд. Делали подобное на экране программируемого реле. Надо будет покумекать как реализовать это в Scada.
    Потребуется всего 2 канала. один для количества ошибок, второй для отображения.
    Ну еще 3-й чтобы номер(код) текущей ошибки показывать.

    з.ы. Коллекция для текста тут бы могла очень пригодиться, чуть даже дальше посмотреть можно. Брать коллекцию из файла txt, чтобы не набирать каждый раз в настройках.
    Если пару-тройку текстовых сообщений, можно и так прописать. Если много, то указываем файл. В котором первое значение это значение с которым сравнивать, знак что сравниваем > , <, >= и так далее, номер канала для сравнения ну и сам текст. Типа все одной строкой с разделителем делать. Например CSV файлик чтобы понимал

    #6817
    Oleg
    Участник

    Получается самый «простой вариант» это создание 25 вх. каналов телеизмерения.
    Получаем 25*35=1600 бит. Плюс нужно создать 1600 вх. каналов дорасчетных — каждый канал для своей ошибки. В каждый из 25 каналов вставить формулу, которая будет устанавливать значение 0 или 1 для 1600 каналов в соответствии с диапазоном:
    1 вх. канал телеизмерение <—> 1..32 вх. канал дорасчетный
    ………………………………………………….
    25 вх. канал телеизмерение <—> 1568..1600 вх. канал дорасчетный

    Если создавать 1600 вх. каналов телеизмерения типа bool заметно тормозит коммуникатор — обновление данных происходит не раз в секунду, а раз в три или пять секунд. Возможно большая нагрузка на OPC сервер. Если переменных около 200 — все нормально.

    Нет, создавать 1600 картинок — это вех мазохизма 🙂
    По кругу тоже не вариант — хочется списком и фиксация появления/сброса ошибки в событиях.

    Да, у меня есть текстовый файл со списком ошибок. В файле 1600 строк.
    Если несколько ошибок по выводить нужно конечно все ошибки.
    Сократить до 8 символов не получится, точнее получится шифр) Тога проще выдавать номер ошибки и сверяться с табличкой, что означает этот номер.
    Сопоставление бита ошибки строке в файле сделать можно, но вот как вывести в веб — это опрос конечно.

    • Этот ответ был изменен 6 лет, 8 месяцев назад от Oleg.
    • Этот ответ был изменен 6 лет, 8 месяцев назад от Oleg.
    • Этот ответ был изменен 6 лет, 8 месяцев назад от Oleg.
    #6821
    Oleg
    Участник

    Как можно импортировать хотя бы названия этих каналов в базу Администратора? Я так понимаю у файла базы проприетарный формат

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