Настройка Входных каналов

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

В этой теме 11 ответов, 3 участника, последнее обновление Mikhail Mikhail 5 мес., 3 нед. назад.

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

    Господа я тут, срипя пытаюсь освоить R S и столкнулся с вопросами кое какие сам разобрался а другие не могу понять как решить. Протокол M-bus TCP-IP, создал шаблон все вроде понятно но запутался вот в чем у меня все Переменные HOLDING REGISTERS,
    1- 2 байта со знаком это какой тип данных?

    2- Как считывать тип данных — бит регистр 65,66, бит от 2 до 5 и от 0-7,9 (фактически это дискретные сигналы) желательно получить на выходе все по отдельности с значениями 0-1. или как это в Выходных каналах правильно прописать?
    3- 2 байта без знака регистр возвращает значение от 0-33, так как вот этим 33 переменым присвоить буквенное обозначение (это все статусы), текст перечислением не получился так как не больше 100 символов в строке, да и если можно как к ним еще цвета текста применить к примеру Тест системы синий, Работа — зеленая, Аварийные сообщения красные? Хелп Ми Плиззз!!!

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

    Напишите в эту тему, автор драйвера увидит уведомление и, надеюсь, ответит.

    Или у Вас не M-Bus, а Modbus?

    #11005
    Аватар
    manjey73
    Участник

    Явно Modbus так как во втором нет понятия регистров…

    #11006
    Аватар
    parti3an
    Участник

    Ну да вот до чего лень и невнимательность приводит, ModBus у меня.

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

    2 байта со знаком это какой тип данных?

    short

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

    Как считывать тип данных — бит регистр 65,66, бит от 2 до 5 и от 0-7,9

    Нужно считывать весь регистр целиком (скорее всего, 2 байта без знака, ushort). Затем создавать отдельные входные каналы дорасчётного типа, в которых с помощью формул извлекать нужные биты.

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

    2 байта без знака регистр возвращает значение от 0-33, так как вот этим 33 переменым присвоить буквенное обозначение

    Для входного канала нужно использовать формат «Текст Unicode». Написать формулу в таблице Формулы, которая будет возвращать строку. Затем в формуле входного канала указать EncodeUnicode(MyFunc())

    как к ним еще цвета текста применить к примеру Тест системы синий, Работа — зеленая, Аварийные сообщения красные?

    В таблицы Типы событий создайте свои статусы с нужными цветами. Напишите свою формулу для вычисления статуса в зависимости от значения входного канала. В формуле для входного канала будет
    EncodeUnicode(MyFunc()); MyStat()

    По мере продвижения, задавайте вопросы.

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

    EncodeUnicode правда максимум отображает 4 русских символа.

    #11012
    Аватар
    parti3an
    Участник

    Я правильно понял как работать с таблицей Тип событий, значение канала соответствует номеру в таблице, state это только цвет или надпись тоже будет отображаться?

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

    Данные входных каналов состоят из двух полей: значение и статус. Значение — всегда вещественное число, а статус — целое. Таблица Тип событий описывает поле Статус для входных каналов и влияет в частности на цвет вывода данных.
    Отображать число или текст — задаётся полем Формат в таблице входных каналов. При отображении текста, текст получается декодированием числового значения.

    #11014
    Аватар
    parti3an
    Участник

    спасибо еще более запутался 🙂 что то понял что то нет, нет под рукой скады пишу в дороге как понял, можно сделать так. беру канал у него есть значение к примеру 23 это значение должно соответствовать тексту #авария датчика номр 8# для того чтобы не совпадали значения от 0-х я значение множу к примеру на 100 получаю 2300, так вот куда эту 2300 мне с чем сравнивать с таблицей событий или в статусе я должен указать 2300 циферкой, сори не могу понять где что с чем сравнивает.Я уже думал картинок с надписями наделать и их по условию сравнивать, но не уверен что сработает. С условиями еще не особо разобрался там есть именно = или только больше меньше и 1 и 0.

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

    В таблице формул добавьте что-то типа:

    function MyFunc()
    {
      switch ((int)CnlVal)
      {
        case 0: return "Зн.1";
        case 1: return "Зн.2";
        default: return "????";
      }
    }
    

    Затем в формуле для входного канала напишите MyFunc() и задайте ему формат Текст Unicode. Макс. длина строки для русскиго текста — 4 символа.

Просмотр 12 сообщений - с 1 по 12 (из 12 всего)

Для ответа в этой теме необходимо авторизоваться.