-
Добрый день!
Программную задержку получить не удастся с требуемой точностью, т.к. прерывания и пр. будут непредсказуемо влиять на ее длину.
Получить в программе ПЛК время с точностью больше 1 мс можно, воспользовавшись библиотекой SysLibTime:
VAR
fb_cut_time:CurTime;
systime: SysTime64;
END_VAR
fb_cut_time (SystemTime:=systime);
systime.ulLow - здесь врямя в мкс. Однако реальная точность в 100-х мкс.
В версии 2.0 (в ближайшее время) мы реализуем функцию вызова цикла ПЛК как можно чаще.
Тестирование даёт следующие результаты: (ПЛК100-24)
Режим работы частота вызова цикла ПЛК
Logout, ethernet физ. вынут
фильтрация входов откл. 3500Гц
Login через ethernet
фильтрация входов откл. 3100Гц
Logout ethernet физ. вынут
фильтрация входов (10). 3900Гц
Login через ethernet
фильтрация входов (10). 3500Гц
Подключение дополнительных модулей (мастера, slave, и пр.) как и сложная программа ПЛК будет снижать эту частоту.
-
Библиотека CurTime также имеет миллисекундный интервал (это есть в описании на эту библиотеку и проверял с помощью программы).
Как можно достать 100мкс?
-
не далее как вчера я извлекал методом, описанным выше время с точностью до 100 мкс.
-
Может конечно я чего и не понял. Давай попробуем разобраться вместе.
Ввел твой пример. Запустил. Переменная systime.ulLow периодически изменяется. Причем четвертый разряд меняется на одно значение за секунду (проверял с секундомером на 10 сек). Следовательно первый разряд миллисекунды. Может у меня прошивка старая, от этого такой кавардак. Прошивка 1.28
-