February 16, 2015

Многозадачность системы реального времени


Система TwinCAT позволяет создать до четырех подсистем реального времени (Run-Time System). Они будут работать параллельно, если доступно четыре ядра процессора, или как-то делить процессорное время, если ядер меньше.

В каждом рантайме можно организовать параллельную работу четерех задач (Task), т. е. всего получается 16 параллельных задач, которые могут взаимодействовать друг с другом внутри своего рантайма. Фактически задачи работают последовательно, но внутри задачи будет казаться, что все работает параллельно. Как таковые задачи нужны для удобства задания времени цикла программы; это спорно, но похоже на правду.

Визуализация, кстати, автоматически добавляет две задаче: одна - для вывода интерфейса (рисования графики, там время цикла совсем большое), другая - для пользовательского ввода (побыстрее, но медленнее технологического цикла).



  • Переменные, имена программ, ФБ и пр. POU "принадлежат" рантайму, а не задачам (см. у них номер порта отличается от номера порта задач и совпадает с номером порта рантайма).
  • ADS.API библиотеки подключаются к рантайму (опять-таки, см. номер порта), т. к. именно образ рантайма публикуется ADS-сервером.
  • В System Manager'e переменные из разных задач отображаются в первой задаче: просто так сделано.



  • Задачи - это по сути список вызова программ или глобальных экземпляров ФБ (Program Call, см. PLC Control → Resources → Task configuration).
  • Задачи одного рантайма могут иметь разное время циклов. Это влияет на время цикла программы, назначенной задаче. Например, вызов одной и той же программы из разных задач, заставит работать программу со временем цикла вызывающей задачи.
  • При вызове одной и той же программы из разных задач, программа по прежнему существует в единственном экземпляре, с единым набором локальных переменных и состояний.
  • Порядок обработки задач в рамках рантайма задается приоритетом задачи: 0 - первая, ..., 3 - последняя.
  • В рамках одного рантайма программы могут вызывать друг-друга, передавать данные через IN/OUT и глобальные переменные/константы.
  • Если задаче назначено несколько программ, они вызываются в порядке их следования и делят между собой время цикла задачи.
  • Точки останова прерывают все задачи рантайма разом, т. е. действуют на весь рантайм сразу.

No comments

Post a Comment

Note: Only a member of this blog may post a comment.