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

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

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

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

    По умолчанию

    Цитата Сообщение от Александр Посмотреть сообщение
    Проблема в том что ПЛК на действующей установке, контролирует работу водоочистки, поэтому приходится в этом проекте упражняться. Два Модбас-мастера для пробы сделал (по вашему же совету)), 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.

  2. #2

    По умолчанию

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

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

  3. #3

    По умолчанию

    Цитата Сообщение от 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.

  4. #4

    По умолчанию

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

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

  5. #5

    По умолчанию

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

  6. #6

    По умолчанию

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

  7. #7

    По умолчанию

    Цитата Сообщение от Александр Посмотреть сообщение
    Это наверное уже в коде PRG делать? Смущает то что в ПЛК нет возможности при создании канала UMD выбирать эти варианты ("старшим словом вперед"). Там есть Trace_mode/Native, но ни один из них не дает эффекта, lastError 81/89 все так же идет.
    Сначала надо со связью разобраться, связь должна работать, тогда и данные будете получать, хоть и неправильные.
    Добавьте целочисленные регистры которые точно читаются, адрес (RegistеrInput, WORD), скорость (RegistеrInput), номер прибора. Функция 0х03.

    Потом будете разбираться с неправильными показаниями.
    Как раз Native и переставит байты в словах (только в DWORD и REAL), останется только слова местами поменять в программе. ФБ для перестановки местами WORD, есть даже в примерах на форуме.

    По поводу дробной части V1, попробуйте этот регистр считать как Real Input 1 Дробная часть.jpg
    Последний раз редактировалось kondor3000; 13.12.2021 в 14:47.

Ваши права

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