Страница 1 из 9 123 ... ПоследняяПоследняя
Показано с 1 по 10 из 83

Тема: ПЛК63 Modbus Master

  1. #1

    По умолчанию ПЛК63 Modbus Master

    Столкнулся со следующей проблемой:
    При записи значения Float на другой ПЛК63 запись проходит успешно, запрос-ответ (сниффер) корректные, но функция MB_WR_REGS возвращает 255 - ошибка таймаута.
    В чем може быть проблема? Такое впечатление, что ф-я не анализирует ответ. Может, необходимо сразу после начала записи по Enable:= TRUE сбросить параметр до установки Complete = TRUE ?

  2. #2

    По умолчанию

    хотелось бы увидеть код

  3. #3

    По умолчанию

    Пожалуйста.
    Пересылка из VentWater в VentHome - в оперативный параметр.
    Вложения Вложения

  4. #4

    По умолчанию

    Возвращаясь к вопросу, параметр Enable в функциях MODBUS - это "толчек" функции, который говорит ей, что надо начать обработку при данном проходе цикла ПЛК. И затем Enable надо сбросить, ожидая завершения, по прежнему вызывая функцию в цикле ПЛК?

  5. #5

    По умолчанию

    апну еще раз.
    вот совсем простая програмка для тестирования записи по Modbus. значения пишутся, ошибка таймаута - постоянная. в чем дело? что я делаю не правильно?
    Вложения Вложения

  6. #6

    По умолчанию

    Цитата Сообщение от ASo Посмотреть сообщение
    апну еще раз.
    вот совсем простая програмка для тестирования записи по Modbus. значения пишутся, ошибка таймаута - постоянная. в чем дело? что я делаю не правильно?
    А зачем Вы каждый цикл открываете порт?
    Плюс, не дождавшись открытия порта, сразу посылаете запрос и больше его никогда не шлете?

  7. #7

    По умолчанию

    Цитата Сообщение от Филоненко Владислав Посмотреть сообщение
    А зачем Вы каждый цикл открываете порт?
    Даже если считать это ошибкой - это не совсем так, ибо после открытия порта Enable сбрасывается FALSE,

    Цитата Сообщение от Филоненко Владислав Посмотреть сообщение
    Плюс, не дождавшись открытия порта, сразу посылаете запрос и больше его никогда не шлете?
    Что значит - не дождавшись открытия - ждем Ready=1
    И что значит - больше не шлю - шлю каждые 250мс. Я же говорю - пакеты идут, реле на МДВВ щелкают, но ответ 255 (ошибка таймаута) постоянный.

  8. #8

    По умолчанию

    Открытие/закрытие порта - операция не мгновенная и т.к.
    библиотеку ComService писал не я и как она работает не имею ни малейшего представления, рекомендую вызывать все же 1 раз её. Во избежание.

    Далее.
    Buffer[0]:= 0;
    Buffer[1]:= SHR(Kbd, 2) ; - эти строчки надо вызывать лишь 1 раз пред посылкой, по условию SendReq = TRUE;
    а не затирать буфер каждый раз. Этот же буфер используется при приёме, а Вы его портите.

  9. #9

    По умолчанию

    Такая же фигня, только для любого типа переменной.
    Один ПЛК63 - мастер, второй ПЛК63 - слэйв.
    Трафик по Modbus отслеживаю с компа. Все в порядке - запрос-ответ корректные. Но функция возвращает ошибку таймаута. Если этой же функцией опрашивать что угодно, но не второй ПЛК63(слэйв) - ошибок нет. Причем если слэйв опрашивать с компа - все в порядке, ведь запрос-ответ и были всегда в порядке.
    Собственно вопрос: почему MB_RD_HOLD_REGS возвращает отшибку таймауа только при обращении к ПЛК63?

    P.S. потратил 2 дня - ПЛК63+ПЛК63 получается фигня.

  10. #10

    По умолчанию

    см. предидущий пост.
    нельзя перетирать(использовать) буфер до окончания транзакции

Страница 1 из 9 123 ... ПоследняяПоследняя

Ваши права

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