Страница 3 из 4 ПерваяПервая 1234 ПоследняяПоследняя
Показано с 21 по 30 из 38

Тема: Проблемы связи ПЛК-100Р с МДВВ

  1. #21

    По умолчанию

    не буду плодить ветки. поэтому спрошу здесь (аналогичный вопрос).
    Имеется: 8 МДДВ (прошивка 1.09, 1 ПЛК 150 У-М (прошивка №2.07.2), все приборы лежат на одном столе, длина шины rs485 не превышает 30 см.

    Сначала попробовали на всё поднять на протоколе Овен - результат жуткие тормоза (реакция). При Poling time = 20, WorkMode = Both, Speed = 115200. Причем входа читали не побитово, а двумя байтами на прибор (побитово тормозит наного больше.).

    Далее попробовали на ModBus ASCII. В этом случае и выхода устанавливали через маску (Word). Итого получилось 4 байта на прибор (я прав?).
    Параметры для "Register input module[VAR]"
    RegisterAdress=51,
    Command=Command Read(03).

    Параметры для "Register output module[VAR]"
    RegisterAdress=50,
    Command=WriteMultipleRegisters(0x10).

    Скорость оставили ту же, PolingTime = 10, WorkMode = Both.
    В итоге имеем всё те же тормоза .

    Решили попробовать последний вариант - с ModBus RTU.
    Все настройки остались те же, что и для ModBus ASCII, но имеем следующий казус: если плк находится в режиме STOP программы - связь с МДДВ есть, причем стабильная и без ошибок. Как только запускаем программу - связь исчезает. По всем адресам держится ошибка 81. Далее, оставили всего один МДВВ, запустили - работает! Причем скорость удовлетворительная для наших нужд. Подключили остальные МДВВ - связь падает.
    "Игрались" со всеми временными задержками - никакого эффекта . Уважаемые разработчики подскажите как решить данную проблему, сроки горят.

  2. #22

    По умолчанию

    1) Время цикла надо увеличить. Его не хватает на опрос МДВВ (сканирование входов +запись выходов + выполнение программы)>1 мс.
    2) [(7 запрос+3.5 задержка+7 ответ) регистр 50 + (тоже ) регистр 51]*8=350 байт переведем в биты - старт, 8, стоп=10 бит *350=3500 байт /115200 = 0.030 сек - итого мин время Pooling Time=31 мс!!!
    Последний раз редактировалось Малышев Олег; 14.04.2009 в 08:22. Причина: орефметическая ашибка

  3. #23

    По умолчанию

    Цитата Сообщение от Малышев Олег Посмотреть сообщение
    1) Время цикла надо увеличить. Его не хватает на опрос МДВВ (сканирование входов +запись выходов + выполнение программы)>1 мс.
    2) [(7 запрос+3.5 задержка+7 ответ) регистр 50 + (тоже ) регистр 51]*8=350 байт переведем в биты - старт, 8, стоп=10 бит *350=3500 байт /115200 = 0.030 сек - итого мин время Pooling Time=31 мс!!!
    Можно подробнее пояснить формулу расчета [(7 запрос+3.5 задержка+7 ответ) регистр 50 + (тоже ) регистр 51]*8=350 байт?


    пробовали выставлять и 50 мс (на каждый модуль) - не помогло
    Последний раз редактировалось Kraft; 14.04.2009 в 09:12.

  4. #24

    По умолчанию

    Pooling time - время обновления значения - т.е. через какое время в линию выдастся запрос и будет получен ответ после очередного.
    7 байт длина кадр запрос/ответа в modbus rtu. 3.5 символа - в RTU задержка между запросом и ответом. Вы работаете с 2 регистрами - итого 7+7+3.5 + 7+7+3.5=35 байт в битах=350 бит на скорости 115200 бит/в сек ~31 мс только на обмен. Если Вы установили rs.dl<>0 в МДВВ - на каждый запрос плюсуем rs.dl. В случае rs.dl=0 вполне хватит 31-35 мс.

    Еще раз обмен падает т.к. ПЛК не хватает времени на выполнение цикла. Он приоритетен по сравненнию с обменом в линии. Больше не трогайте модуль модбас. увеличьте время цикла или определите задачи.

  5. #25

    По умолчанию

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

  6. #26

    По умолчанию

    Resources ->Task Configuration ->Appen Task-Appen Programm Call ->PLC PRG

    Task Attrib
    cyclic

    t#10ms

  7. #27

    По умолчанию

    спасибо за помощь

  8. #28

    По умолчанию

    Заработало?

  9. #29

    По умолчанию

    У меня в программе был такой косяк. На одном шаге у меня вызывалось много таймеров и программа начинала висеть.
    Сейчас сделал как сказал Олег Малышев - все стало нормально. Так что именно этим изменяется - время между вызовами программы? Нужно еще что нибудь задавать (таймер может сторожевой)?
    Я знаю то, что я ничего не знаю. Но другие не знают и этого. (Сократ).

  10. #30

    По умолчанию

    Контроллер создавался и работает для задач жесткого реального времени. Т.е. время вызова цикла ПЛК по умолчанию 1 мс, допустимый джиттер 100нс. Это позволяет делать многие забавные вещи ( например, управлять фазами через симисторы как БУСТ2).

    Если в прошивках до 2.07 коммуникационным задачам (опрос модулей в PLC configuration) позволялось отгрызать время у цикла - сейчас все просто - в цикле не осталось время на опрос - коммуникации нет.

    На приведенном выше примере видно как все порешать.

    Для облегчения жизни с версии 2.10.4 дополнен модуль статистика - там просто можно посмотреть нагрузку на CPU.

Страница 3 из 4 ПерваяПервая 1234 ПоследняяПоследняя

Ваши права

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