Теперь у меня появился другой вопрос.
В основной программе, я добавил следующий код:
С помощью данного кода я измеряю минимальное, максимальное и среднее время в микросекундах выполнения программы PRG_Timer.Код:var PRGTime : DWORD; SysTime1 : SysTime64; SysTime2 : SysTime64; dbCurTime: CurTime; dbStat : STATISTICS_INT; end_var dbCurTime(SystemTime:= SysTime1); PRG_Timer(); dbCurTime(SystemTime:= SysTime2); PRGTime := SysTime2.ulLow - SysTime1.ulLow; dbStat(IN := DWORD_TO_INT(PRGTime));
В этой программе собственно и содержится тот код, который я собираюсь выполнять по высокочастотному таймеру.
Измерения показали следующие значения:
Минимальное время - 160 мкс;
Максимальное время - 520 мкс;
Среднее время - 212 мкс.
Вопросы:
1. Почему период выполнения так разница, хотя программа выполняется "пустая", т.е. все время ходит по одним и тем же логическим ветвям?
2. Какой период можно задать при таких значениях времени выполнения для высокочастотного таймера?
3. Я задавал период вызова по таймеру - 400 мкс. И программа в ПЛК работала (еще не проверял на объекте, но сам контроллер в стоп не уходил). Что происходит, если программа еще не успела выполнится, а уже по времени необходимо вызывать ее снова? Она просто не выполняет те операторы, которые не были выполнены к моменту нового вызова?




Ответить с цитированием