Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 37

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

Комбинированный просмотр

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

    По умолчанию

    Цитата Сообщение от Александр Посмотреть сообщение
    Вероятно не ту версию вложил. Пробовал всякие варианты, обращение к регистрам не требующим парное чтение.
    Сейчас прикрепил актуальный проект.
    Если у вас частотник на том же RS485-1 и скоростью 4800 , зачем у вас два Модбас-мастера ? Сделайте в одном два UMD с адресами 1 и 2. Но это потом, сначала вообще уберите Модбас мастер на частотник.
    А лучше сделайте новый проект и работайте только со своим контроллером IVK-120, пока не заработает.
    И ещё у вас PLC_PRG 2 вообще не запускается, вы специально так сделали?
    Последний раз редактировалось kondor3000; 10.12.2021 в 15:20.

  2. #2

    По умолчанию

    Проблема в том что ПЛК на действующей установке, контролирует работу водоочистки, поэтому приходится в этом проекте упражняться. Два Модбас-мастера для пробы сделал (по вашему же совету)), PLC_PRG 2 - это CFC версия изготовителя оборудования, для практики для себя переделал в ST, этот вариант и используется.
    На данный момент ситуация такая: подключился через АС4 к ноутбуку с InSAT\MasterOPC Universal Modbus Server. А-В совпало, связь есть, но с данными непонятка.
    На фото в приложении видно что все запросы GOOD.
    Tag1 и Tag2 - попытка попарного чтения целой и дробной части накопленного объема V1, нулевые значения.
    Tag3 - индекс скорости RS232 (2:=4800b/s, вроде как соответствует).
    Tag4 - адрес Modbus = 1 (соответствует).
    Tag6 - заводской номер прибора (не соответствует, либо это программный номер, не совпадающий с тем что на корпусе).
    Tag7 - заводской номер преобразователя расхода (значение=0, возможно и не установлен номер ПР на ИВК).
    Tag8 и Tag9 - попытка попарного чтения целой и дробной части накопленного объема V1 другой командой.
    Tag5 и Tag10 - параметры, значения которых не могу проверить, поэтому непонятно корректные данные или нет.
    Прикрепил инструкции Взлет.
    Есть идеи куда копать?
    Увидел что в инструкции (ivk102p_82019111_modbus.pdf) сказано что Регистры хранения содержат настроечные параметры, а регистры ввода содержат
    измеренные и вычисленные значения. (функция 3: чтение нескольких регистров хранения,
    4: чтение нескольких регистров ввода).
    Хотя во второй инструкции (prtkl_Modbus_standart_data.pdf) сказано что старшая цифра логического адреса = 4 (Holding Register – функция 3).
    Попробовал функцией 4 прочитать по адресу 32784 (INPUT_REGISTERS), тип в устройстве uint, так же значение =0.
    Не могу понять, в ivk102p_82019111_modbus.pdf логический адрес 432785 тип unsigned long, а в первой таблице prtkl_Modbus_standart_data.pdf при старшей цифре логического адреса=4 - Holding Register – 16 битные данные (word, uint). То есть и тип другой и функция чтения другая.
    Изображения Изображения
    Вложения Вложения
    Последний раз редактировалось Александр; 13.12.2021 в 10:27.

  3. #3

    По умолчанию

    Снимок экрана (1).png
    В описании Modbus из инета говорится: 0x4 - Чтение регистров данных
    Эта функция используется для последовательного чтения от 1 до 125 регистров данных.
    Нумерация регистров начинается с нуля. Регистры 16-ти битные, беззнаковые или знаковые (в
    дополнительном коде). 32-х битные регистры разбиваются на два 16-ти битных слова в формате
    [HIword, LOWword].

    Как читать один 32-битный регистр двумя 16-битными словами - непонятно
    Последний раз редактировалось Александр; 13.12.2021 в 10:28.

  4. #4

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    старшее слово с помощью SHL сместили на 16 разрядов и сложили с младщим, это один из вариантов, их так то много еще
    К сожалению не владею темой, разовый вопрос - получение данных modbus, решится, и может еще год не придется сталкиваться. Поэтому уровень вот такой.

  5. #5

    По умолчанию

    Цитата Сообщение от Александр Посмотреть сообщение
    Проблема в том что ПЛК на действующей установке, контролирует работу водоочистки, поэтому приходится в этом проекте упражняться. Два Модбас-мастера для пробы сделал (по вашему же совету)), PLC_PRG 2 - это CFC версия изготовителя оборудования, для практики для себя переделал в ST, этот вариант и используется.
    На данный момент ситуация такая: подключился через АС4 к ноутбуку с InSAT\MasterOPC Universal Modbus Server. А-В совпало, связь есть, но с данными непонятка.
    На фото в приложении видно что все запросы GOOD.
    Tag1 и Tag2 - попытка попарного чтения целой и дробной части накопленного объема V1, нулевые значения.
    Tag3 - индекс скорости RS232 (2:=4800b/s, вроде как соответствует).
    Tag4 - адрес Modbus = 1 (соответствует).
    Tag6 - заводской номер прибора (не соответствует, либо это программный номер, не совпадающий с тем что на корпусе).
    Если правильно читает скорость и адрес и неправильно номер прибора, то возможно переставлены байты или WORD-ы в номере.

    По поводу парного чтения, вам уже написал, в вашей версии не используется похоже. Попробуйте вот с этого адреса объём считать 1 Целая часть.jpg

    PS пока писал, вы сами сделали тоже. А что с накопленным, сколько в приборе и сколько показывает? И что за объём V2, непонятно?

    А дробную часть, старшим словом вперёд сделали?
    Последний раз редактировалось kondor3000; 13.12.2021 в 11:54.

  6. #6

    По умолчанию

    Цитата Сообщение от kondor3000 Посмотреть сообщение
    Если правильно читает скорость и адрес и неправильно номер прибора, то возможно переставлены байты или WORD-ы в номере.

    По поводу парного чтения, вам уже написал, в вашей версии не используется похоже. Попробуйте вот с этого адреса объём считать 1 Целая часть.jpg
    Да, в сообщении выше описал результат

  7. #7

    По умолчанию

    Цитата Сообщение от kondor3000 Посмотреть сообщение
    Если правильно читает скорость и адрес и неправильно номер прибора, то возможно переставлены байты или WORD-ы в номере.

    По поводу парного чтения, вам уже написал, в вашей версии не используется похоже. Попробуйте вот с этого адреса объём считать 1 Целая часть.jpg

    PS пока писал, вы сами сделали тоже. А что с накопленным, сколько в приборе и сколько показывает? И что за объём V2, там есть тоже?
    Скорее всего номер прибора неправильный из-за перестановки байт. Уже ушел оттуда, не могу проверить, но уверен что так и есть.
    Накопленный объем V1 в приборе 779,075 а ОРС-сервер получает 779075. V2 - накопленный объем по второму каналу, не используется.
    Попытался в ПЛК (32bit_input_module, и также попробовал варианты RegisterInputModule, RealInputModule) обратиться к адресу 32822 (функция 4), то же самое что и раньше, lastError меняется с кода 81 на 89.
    Последний раз редактировалось Александр; 13.12.2021 в 12:00.

  8. #8

    По умолчанию

    Цитата Сообщение от kondor3000 Посмотреть сообщение

    А дробную часть, старшим словом вперёд сделали?
    Да, все варианты попробовал, там похожей на правду цифры так и не получилось

  9. #9

    По умолчанию

    Цитата Сообщение от Александр Посмотреть сообщение
    Да, все варианты попробовал, там похожей на правду цифры так и не получилось
    Значит надо не только слова (Word) менять местами, но и байты в словах переставлять.

  10. #10

    По умолчанию

    Цитата Сообщение от kondor3000 Посмотреть сообщение
    Значит надо не только слова (Word) менять местами, но и байты в словах переставлять.
    Это наверное уже в коде PRG делать? Смущает то что в ПЛК нет возможности при создании канала UMD выбирать эти варианты ("старшим словом вперед"). Там есть Trace_mode/Native, но ни один из них не дает эффекта, lastError 81/89 все так же идет.

Страница 1 из 2 12 ПоследняяПоследняя

Ваши права

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