Добрый день ещё раз
В общем, прошла ночь, утром на трезвую голову с 1 раза попал, куда надо. "Проблема" была здесь:
[I](*Собираем массив в кучу*)
FOR i := 0 TO 49 DO
Recept[0, i] := INT_TO_WSTRING(i + 1); (*Номер*)
Recept[1, i] := ReceptName[i]; (*Имя рецепта*)
Recept[2, i] := WCONCAT(STRING_TO_WSTRING(OSCAT_BASIC.REAL_TO_STRF (ReceptTimeKlapan1[i], 2, '.')), "сек"); (*Время первого клапана*)
Recept[3, i] := WCONCAT(STRING_TO_WSTRING(OSCAT_BASIC.REAL_TO_STRF (ReceptTimeKlapan2[i], 2, '.')), "сек"); (*Время второго клапана*)
Recept[4, i] := WCONCAT(STRING_TO_WSTRING(OSCAT_BASIC.REAL_TO_STRF (ReceptTimeShiberDozator[i], 2, '.')), "сек"); (*Время шибера дозатора*)
Recept[5, i] := WCONCAT(STRING_TO_WSTRING(OSCAT_BASIC.REAL_TO_STRF (ReceptTimeUkupor[i], 2, '.')), "сек"); (*Время укупоривания*)
Recept[6, i] := WCONCAT(STRING_TO_WSTRING(OSCAT_BASIC.REAL_TO_STRF (ReceptTimeShiber2Ukupor, 2, '.')), "сек"); (*Время шибера №2 укупора*)
END_FOR
И вот этот вот код - в 10мс цикле, сам Recept - на мнемосхему в комбинированное окно
Так как весь этот код нужен просто для красивого вывода на мнемосхему - убрал его в отдельный таск на 250мс - загрузка ЦП упала со 100% до 30%
Основной цикл теперь работает не 5мс из 10мс, а 1мс из 10мс
Таск вот этого кода - 4мс из 250мс
Слово "Проблема" взял в кавычки, т.к., несмотря на то, что код выглядит сложным - значения переменных там не меняются вообще почти никогда. Только когда человек вручную меняет значения
Всё равно всем спасибо за помощь!