Для наглядности, создал экспериментальный проект с "лёгким" MainTask, второй запускаемой вручную "тяжёлой" задачей HeavyTask, а в визуализации добавил второй "тяжёлый" экран с большой таблицей. Эксперимент проводил так: производил сброс счетчиков цикла всех задач и через 3 минуты делал "грязное дело" - запускал "тяжёлый" функционал.
Сначала приведу Monitor из конфигурации задач, когда все задачи, кроме MainTask, с приоритетом > 15:
MainTask (циклич. 20 ms) - приоритет = 1;
HeavyTask (циклич. 1000 ms) - приоритет = 16;
VISU_TASK (циклич. 200 ms) - приоритет = 31.
Прошло 2 минуты после сброса счетчиков цикла:
(макс. время цикла MainTask = 3.3 ms, HeavyTask = 0.77 ms, VISU_TASK = 11.4 ms)
Вложение 51644
Непосредственно после перехода на "тяжелый" экран и включения "тяжёлой" HeavyTask:
(Заметного влияния на макс. время цикла MainTask нет.)
Вложение 51645
Изменил приоритеты:
HeavyTask (циклич. 1000 ms) - приоритет = 9;
VISU_TASK (циклич. 200 ms) - приоритет = 15.
Один раз привожу Monitor из конфигурации задач через 2 минуты после сброса счетчиков цикла:
(макс. время цикла MainTask = 7 ms, HeavyTask = 0.16 ms, VISU_TASK = 3.3 ms)
Вложение 51646
Перешёл на "тяжёлый" экран:
(макс. время цикла VISU_TASK = 27.7 ms повлияло на макс. время цикла MainTask = 32.3 ms)
Вложение 51647
Запустил 1 цикл "тяжёлой" HeavyTask:
(макс. время цикла HeavyTask = 140 ms повлияло на макс. время цикла MainTask = 146 ms)
Вложение 51648
Запустил выполнение "тяжёлой" HeavyTask, скриншот через 3 минуты работы "тяжёлой" HeavyTask:
(макс. время цикла HeavyTask = 138 ms повлияло на макс. время цикла MainTask = 146 ms и видно как сред. время цикла MainTask заметно увеличивается)
Вложение 51649
Ещё один эксперимент. После сброса счетчиков цикла всех задач через 3 минуты вытащил MMC-карту из СПК207:
(На несколько секунд зависло всё, в том числе связь по RS-485, на подключенном через Ethernet CoDeSys все счетчики цикла замерли, но после зависания скакнуло только макс. время цикла MainTask до 3.2 секунды (были случаи и до 4.6 сек.). При отключении от USB Host такого не наблюдается, в т.ч. пробовал карт-ридер с той же самой MMC-картой).
Вложение 51650
Теперь ошибки 163: В экспериментальном проекте в MainTask (PLC_PRG) ловлю и считаю ошибки связи с шестью модулями вывода МУ110-16К на COM2. Но после экспериментирования с "тяжёлым" функционалом, 163-х ошибок поймалось мало, за пол часа было всего две. Не имея много времени для эксперимента (делал в пересменок), изменил приоритет VisuTask с 15 на 14 и добавил COM3 со slave, как у меня в рабочем проекте.
Вот, в следующий раз, эксперимент заключался только в ловле ошибок 163:
(Ровно за час поймал 4 ошибки. Частота появления ошибок вроде не изменилась. Но за 5 рабочих дней на моём рабочем проекте было до 50 на одном модуле.)
Вложение 51651
Выкладываю используемый мною проект при проведении экспериментов (с последней указаной конфигурацией):