Страница 1138 из 1185 ПерваяПервая ... 138638103810881128113611371138113911401148 ... ПоследняяПоследняя
Показано с 11,371 по 11,380 из 11842

Тема: ВОПРОС-ОТВЕТ (отвечаем на простые вопросы от новичков)

  1. #11371

    По умолчанию

    Цитата Сообщение от kondor3000 Посмотреть сообщение
    Цикл ПЛК - 1 мс, запрос ответ по Модбас не менее 25-30 мс. За время одного запроса, ПЛК выполнит 25-30 раз программу целиком.
    Если это так, и цикл ПЛК не "растягивается" на время необходимое для обмена по Modbus, то возможно этот интервал для задач в 200 мсек как раз установлен для согласования обмена данных и их обработки в программе, и для того чтобы не заваливать ведомые устройства запросами каждые 20-30 мсек (такое суммарное время цикла задачи №1 и №2). Понимаю что не понимаю как оно должно работать. Есть ФБ выполняющий запрос по Ethernet. Если ответ на запрос еще не вернулся, но уже в следующем цикле идет новый вызов этого ФБ, то ответ первого запроса игнорируется? Интересно, эти вещи где-нибудь описаны вообще

  2. #11372

    По умолчанию

    Цитата Сообщение от Александр Посмотреть сообщение
    Если это так, и цикл ПЛК не "растягивается" на время необходимое для обмена по Modbus, то возможно этот интервал для задач в 200 мсек как раз установлен для согласования обмена данных и их обработки в программе, и для того чтобы не заваливать ведомые устройства запросами каждые 20-30 мсек (такое суммарное время цикла задачи №1 и №2). Понимаю что не понимаю как оно должно работать. Есть ФБ выполняющий запрос по Ethernet. Если ответ на запрос еще не вернулся, но уже в следующем цикле идет новый вызов этого ФБ, то ответ первого запроса игнорируется? Интересно, эти вещи где-нибудь описаны вообще
    ФБ выполняющий запросы работает в цикле: запросил - подождал - ответили - запросил - подождал - ответили и т.д. Когда ответили - обновил значения полученных данных. До момента ответа - висят данные прошлого ответа.
    Основная программа в начале своего цикла считала входные данные (в том числе и текущие значения с ФБ обмена) - их обработала

  3. #11373

    По умолчанию

    Иногда PLC_PRG становится настолько большой, что время её выполнения не вмещается в цикл и происходит срабатывание WDT.
    Эту проблему каждый решает по-своему:
    - Кто-то разделяет на несколько PRG и создает глобальную переменную, которая определяет какой именно PRG будет работать в текущем цикле.
    - Кто-то выделяет часть кода, которая по мнению создателя может выполняться еще реже и выделяет её в отдельную задачу (Task).

    В любом случае OS ПЛК выполняет опрос исключительно по своим правилам и независимо от PRG.
    Однако есть механизмы передачи сигналов управления в/из. Они описаны в документации.
    Когда PRG обращается к переменным, то их содержимое может как еще не обновиться OS, так и обновиться несколько раз.
    Так и при опросе регистра ведомого устройства, его значение может успеть измениться несколько раз, т.е. значение поступит самое последнее.
    Поэтому приходится придумывать различные семафоры, четко фиксирующие ожидаемое событие. За счет чего удается синхронизироваться.

  4. #11374

    По умолчанию

    Цитата Сообщение от Александр Посмотреть сообщение
    Если это так, и цикл ПЛК не "растягивается" на время необходимое для обмена по Modbus, то возможно этот интервал для задач в 200 мсек как раз установлен для согласования обмена данных и их обработки в программе, и для того чтобы не заваливать ведомые устройства запросами каждые 20-30 мсек (такое суммарное время цикла задачи №1 и №2). Понимаю что не понимаю как оно должно работать. Есть ФБ выполняющий запрос по Ethernet. Если ответ на запрос еще не вернулся, но уже в следующем цикле идет новый вызов этого ФБ, то ответ первого запроса игнорируется? Интересно, эти вещи где-нибудь описаны вообще
    Проблемы начинаются у тех, кто бездумно втыкает задачи по 200 мс в программу, думая, что разгружает ПЛК. А по факту делает только хуже.
    Надо не задачи втыкать, а оптимизировать обмен по интерфейсам и программу. Тогда и проблем не будет.

    Думаю в вашем случае, задержки по 200 мс в 2 задачах, просто не дают работать программе нормально.
    Вместо цикла 1-5 мс, у вас 400 мс и скорее всего обмен работает быстрее чем программа, цикл ещё не закончился, а ответами уже завалили по горло.
    Любой таймер насчитает вместо нужных 100 мс, 300-500 мс, что у вас и происходит.
    Последний раз редактировалось kondor3000; 19.03.2025 в 14:55.

  5. #11375

    По умолчанию

    Цитата Сообщение от 1exan Посмотреть сообщение
    ФБ выполняющий запросы работает в цикле: запросил - подождал - ответили - запросил - подождал - ответили и т.д. Когда ответили - обновил значения полученных данных. До момента ответа - висят данные прошлого ответа.
    Основная программа в начале своего цикла считала входные данные (в том числе и текущие значения с ФБ обмена) - их обработала
    Так понимаю это должно быть реализовано в ФБ библиотеки, определение того что нужно делать: выполнить новый запрос, или ждать ответа на предыдущий? В ФБ (отвечающем за обмен по сети) использующемся в программе этого нет, а как посмотреть код библиотеки не знаю.

  6. #11376

    По умолчанию

    Цитата Сообщение от EFrol Посмотреть сообщение
    Однако есть механизмы передачи сигналов управления в/из. Они описаны в документации.
    Какие механизмы имеются в виду в данном случае?
    Буду признателен если скажете в какой именно документации.

  7. #11377

    По умолчанию

    Цитата Сообщение от kondor3000 Посмотреть сообщение
    Думаю в вашем случае, задержки по 200 мс в 2 задачах, просто не дают работать программе нормально.
    Любой таймер насчитает вместо нужных 100 мс, 300-500 мс, что у вас и происходит.
    Так и есть, при управлении ИМ через контроль времени активности шага SFC это и происходит.

    Цитата Сообщение от kondor3000 Посмотреть сообщение
    Надо не задачи втыкать, а оптимизировать обмен по интерфейсам и программу.
    Знать бы как оптимизировать этот обмен ) Из каких составляющих состоит эта оптимизация?

  8. #11378

    По умолчанию

    Цитата Сообщение от Александр Посмотреть сообщение
    Так понимаю это должно быть реализовано в ФБ библиотеки, определение того что нужно делать: выполнить новый запрос, или ждать ответа на предыдущий? В ФБ (отвечающем за обмен по сети) использующемся в программе этого нет, а как посмотреть код библиотеки не знаю.
    Какая используется библиотека?

  9. #11379

    По умолчанию

    Здравствуйте коллеги, подскажите пожалуйста, почему выскакивает сообщение?Снимок.PNG

  10. #11380

    По умолчанию

    Цитата Сообщение от sssssaaaaabbbbb Посмотреть сообщение
    Здравствуйте коллеги, подскажите пожалуйста, почему выскакивает сообщение?Снимок.PNG
    Когда вы уже разделы путать перестанете?

Страница 1138 из 1185 ПерваяПервая ... 138638103810881128113611371138113911401148 ... ПоследняяПоследняя

Метки этой темы

Ваши права

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