БУСТ не подходит. Время нарастания сигнала, если не ошибаюсь не менее 5с, да и в разных режимах необходимо действовать по разному.

Получить задержку менее 1мс, можно. Но существуют некоторые проблемки. С которыми, я надеюсь, вы поможете мне справиться.
Идея состоит в следующем. Необходимо вставить програмный код время выполнения которого будет значительно меньше дискреты в 1 мс.
Думаю наиболее удобно использовать цикл.
Поясню на примере. Допустим мне необходма задержка в 12.4мс. Я знаю, что 0.4мс время выполнения 10 пустых циклов. Тогда решение будет следующим.
n:=10
TONInst(IN:=var1,PT:=T#12ms);
var2:=TONInst.Q;
IF var2 THEN
FOR I:=1 TO n
END_FOR
var3:=
END_IF
А теперь вопросы.
1. Функция TON сразу начинает свою работу (по событию) или дожидается окончания милисекундного интервала?
2. Как можно расчитать необходимое количество пустых циклов?
3. Какова точность такой задержки если параллельно работают в ждущем режиме(срабатывают по событию) программы с одинаковым приоритетом?