Показано с 1 по 10 из 37

Тема: ПЛК160М и ИВК-102 по RS-485

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #2

    По умолчанию

    Цитата Сообщение от Александр Посмотреть сообщение
    Добрый день! Пытаюсь получить данные накопленного объема (V1) с ИВК-102 (Взлёт, v.82019111) по RS-485 (ModbusRTU). В качестве опрашивающего устройства (master) ПЛК160М (Овен), при опросе ИВК-102 возвращает ошибку опроса - код 81.
    Логический адрес нужных данных 432785. Если правильно понял инструкцию Взлет, то в опрашивающем устройстве указываем физический адрес 32784 (отбрасываем старшую цифру логического адреса и вычитаем единицу). Целая часть накопленного объема (V1) - тип данных long, соответственно в ПЛК160 в подмодуле UniversalModBusDevice в качестве входного канала 32inputModule. Тип команды на чтение (ReadHoldingRegisters 0x03). Было бы достаточно получить только целую часть, без дробной, но в инструкции Взлет упоминается что в этом диапозоне адресов данные могут читаться только попарно. Так как дробная часть параметра V1 - float, добавил в ПЛК еще один входной канал 32inputModule (также пробовал RealInputModule) с адресом 49234 (дробная часть V1), но не уверен что это так работает, в описаниях протокола Modbus не нашел описания того как делается парное чтение.
    Скорость 4800, без контроля четности, 8 бит, 1 стоповый бит. Изменение времени таймаута (текущий 1000), периода опроса устройства (текущее 500), эффекта не даёт (на ИВК задержка ответа 200). FramingTime слота RS-485 = 0. Последовательность байт менял с Native на TraceMode, эффекта нет.
    Через "Универсальный просмоторщик-Взлет" ИВК-102 подключается, данные считываются.
    Также, этот ПЛК160 по RS-485 ведет опрос преобразователя частоты, чтение и запись данных нормальная.
    Где искать решение проблемы - непонятно.
    Вы бы лучше инструкцию выложили, а то сами запутались и нас запутать хотите. 81 ошибка, это нет связи, проблема с адресом устройства, в настройках связи, или с подключением. Сначала надо разобраться со связью, а потом уже с чтением. Если скорость 4800, то сажать надо на отдельный слот, остальные то наверняка скорость побольше.

    Если я правильно понял, то читать надо как RealInputModule, так как флоат, а не как вы 32inputModule. А потом выделить нужный кусок как WORD, то есть разбить на два WORD.
    Или объявить переменную как массив WORD,
    w_1 : ARRAY[0..1] OF WORD AT%QB9.1.3.0 ; и читать как StringInputModule (AT% подставить свои).
    Последний раз редактировалось kondor3000; 09.12.2021 в 16:17.

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •