Да в том же PRG, больше для удобства структурирования программы. Но ничего не мешает сделать отдельный PRG и вызывать его периодически из основной программы, а не через задачи. Вот к примеру, Вы запихали опрос порта в задачу 500 или 1000мс. Как это будет реагировать на тайм-аут неотвечающего устройства если это время может превышать интервал выполнения задачи? Как обрабатываете статус выполнения функционального блока чтения из порта? Такие функциональные блоки нужно вызывать циклически, пока алгоритм внутри блока не завершится чтением или ошибкой. С использованием задач, выполнение FB чтения из порта тоже приостанавливается на время интервала. Наверняка сейчас боретесь с не стабильной работой с портом и пытаетесь всё как-то синхронизировать между задачами.
У меня в порт летит только отладочный выхлоп,я не читаю из него,поэтому проблему такой нет.Проблема - именно в неправильной работе задач и планировщика , у меня логика не просто так реализована в разных задачах. Я прекрасно понимаю,что могу вызывать любой PRG из любого PRG, но мне это не нужно, это можно с помощью функции или функционального блока описать.У меня задачи как раз таки независимые, основной цикл хоть зависнуть может, но другие задачи параллельно должны работать.