Статус измерения

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

    Добрый день!
    Нужна помощь в реализации следующей конструкции при опросе по модбас:
    Имеется 6 регистров с хранимыми переменными int16(2байта), в 5 и 6 регистрах требуется считать результат, при
    Условии что во 2 регистре хранится 0
    Если во 2 регистре 1 , то передать
    В представление 0.
    На с# делал так, считывал в массив 6 регистров по 2 байта, по условию проверял состояние регистра 2 в массиве и
    Возвращал значение из 5,6 регистра
    Или 0
    Есть у кого идеи как сделать в скаде
    Хотяб алгоритм, куда копать

    #8528
    Romiros
    Участник

    Все тоже самое. Читаете все регистры во входной канал. Есть функция getbit из коробки. А в формулу дорасчетного пишите
    Ваш алгоритм. Дорасчетного выводить в представлении.

    #8542
    hizkiyau
    Участник

    Получилось вот что,
    В редакторе шаблонов устройств
    Создал 6 элементов (0-5),
    Элементам (0-3) установил тип ushort(2 байта)
    Элементы (4-5) float(4байта) — здесь хранится измеряемая величина
    Элемент (2) — здесь проверяем статус

    В администраторе во входных каналах
    Создал 1 канал для приема данных и вписал формулу
    Val(101)==0?SetVal(1,Cnl):0
    Создал канал 101 дорасчетный ТИ здесь смотрим статус

    Если статус 0, то в представлении отражается измеряемая величина, если статус не равен 0, то выводим в представление 0.
    Как то так получилось.
    Считать 6 регистров типа int16 в один канал не понял как, это 12 байт, а максимальный тип 8 байт в коммуникаторе

    #8543
    Romiros
    Участник

    Все правильно. Я просто невнимательно прочитал. Конечно не один канал

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