Страница 3 из 9 ПерваяПервая 12345 ... ПоследняяПоследняя
Показано с 21 по 30 из 83

Тема: ПЛК63 Modbus Master

  1. #21

    По умолчанию

    пунктирная линия - замкнул интерфейсы на время наладки.

    попробовал с компа опрашивать параметры типа реал (термодатчики) через терринг модбас, ответ - нулевой. присоил по умолчанию ненулевое значение, ответ все равно ноль. опрашиваю в этом же контроллере параметры типа байт через этот же терринг модбас - опрашиваются без проблем (но только с компа, если опрашивать со второго плк63 - ошибка таймаута).
    сменил прошиву 2.11 обратно на 1.94. теперь и параметры типа байт и параметры реал опрашиваются иногда с ошибкой таймаута. иногда реал как возвращал ноль так и возвращает, а байт - возвращает то что надо. заблокировал в программе слэйва вообще открытие портов и какой либо обмен по внутреннему интерфейсу. результат не поменялся. вообщем паремерты реал я вообще не могу прочитать.

    Сделал вообще пустую программу слэйва, назначил две переменные в слоте, одну байт, другую реал. Такая же фигня.


    ASo: тем не менее снимите - чтобы начать отсчет тайм-аута(?).
    Снимал. Результат тот же.
    Изображения Изображения
    Последний раз редактировалось Доренский Алексей; 11.10.2010 в 08:30.

  2. #22

    По умолчанию

    Цитата Сообщение от Доренский Алексей Посмотреть сообщение
    Прошу прощения что сразу не ответил на ваш вопрос. 30ms.
    Это много. Для межПЛК обмена ставить 0 или 1. Остальные цифры для ПК.

    P.S. Если вы в программе открыли порт 0 - 485, и не закрыли его, а сам ПЛК не выключали/перегружали - порт как slave до его закрытия работать не будет. При отладке такой момент надо учитывать.
    Последний раз редактировалось Филоненко Владислав; 11.10.2010 в 12:21.

  3. #23

    По умолчанию

    P.S. Если вы в программе открыли порт 0 - 485, и не закрыли его, а сам ПЛК не выключали/перегружали - порт как slave до его закрытия работать не будет. При отладке такой момент надо учитывать.

    Это я знаю. Уже пробывал при открытом порте на слейве чего-нибудь с него прочитать мастером. Естественно ничего не получилось. От того что уменьшил время задержки до нуля - лучше не стало.

    Вот только сдается мне что Модбас слэйв на ПЛК63 нифига не работает. Попробую разобраться с библиотеками ОВЕН и связать два ПЛК по нему.

  4. #24

    По умолчанию

    Через протокол ОВЕН переменные типа byte, int считываются нормально. Тип REAL - выдает какие-то огромные непонятные числа. Ну чтож, можно уже обойтись малой кровью, прередавая температуру в целочисленном виде. Хотя бы это заработало у ПЛК63 slave.

  5. #25

    По умолчанию

    Существует несколько вариантов передачи чисел Float (real) по протоколу ModBus. Я видел 4 варианта.
    Формат этот не стандартизирован.
    Насколько я понимаю, в библиотеке ModBus.lib нет функции чтения/записи float.
    А есть только функция чтения/записи нескольких регистров.
    Соответственно функция "расшифровки" и "кодирования" float ложится на пользователя и он должен правильно передавать float в зависимости от того, какой тип кодирования используется в slave.

  6. #26

    По умолчанию

    дело не в фуциях с флоат, дело в плк63 слэйв. с мва8 параметры флот нормально читаются плк63 мастер по любому протоколу, замечаний не обнаружено.

  7. #27

    По умолчанию

    Для Modbus что байт, что флоат одинаков. Он о сути параметра не знает.

  8. #28

    По умолчанию

    естественно не знает.

    Переставил кодесис на по-новее. Заменил все библиотеки на по-новее кроме двух (comservise.lib, Ind_Mode.lib). ПЛК63 стал работать гораздо лучше, снялось куча вопросов. ОВЕН рулит!

    Товариши пользователи ПЛК, не забывайте менять библиотеки на те что по-новее!
    Последний раз редактировалось Доренский Алексей; 14.10.2010 в 15:02.

  9. #29
    Пользователь
    Регистрация
    26.03.2011
    Адрес
    Краснодар
    Сообщений
    16

    По умолчанию

    Здравствуйте техническая поддержка!

    Ошибка Exception=255 при работе функциональных блоков библиотеки ModBus.lib (режим RTU):
    MB_RD_HOLD_REGS – функция 3 (чтение слова),
    MB_WR_SNG_REG – функция 6 (запись слова).
    Проблема в следующем:
    После выполнения ФБ чтения/записи устанавливается бит указывающий на завершение операции Complete, и на выходе Exception появляется ошибка 255 (превышение тайм-аута), при этом команды чтение или запись доходят до slave устройства. И slave устройство отправляет на ПЛК 73 ответ об успехе.
    ФБ не отсчитывает время, установленное в параметре TimeOut (например 100мс), а всегда выдерживает паузу 3мс, и естественно отсюда ошибка 255.

    Переменная отвечающая за время определения тайм-аута внутри библиотечного ФБ -.RxData.T_FRTU. Если при подключенном контроллере изменить этот параметр с изначального значения 3мс на 100мс, то исключение не возникает. Таймер отвечающий за ожидание тайм-аута - .RxData.tonTimer . Ниже привожу структуру библиотечного ФБ:
    Безымянный.jpg

    Из-за этой проблемы, у меня не получиться организовать алгоритм, выполняемый при отключении Modbus. Также подсчет не доставленных посылок.
    С ув. Ширяев Олег

  10. #30

    По умолчанию

    Повторяю в который раз - примеры в руководстве не правильные.
    Дайте блоку поработать.

Страница 3 из 9 ПерваяПервая 12345 ... ПоследняяПоследняя

Ваши права

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