Страница 1 из 1

Графическая имитация работы в VI

Добавлено: 03 окт 2017, 19:21
Anton.M
Здравствуйте, господа.
Появилась проблемка - решил обратиться к вам. Есть структура EventCtructure, у которой выставлен EventTimeout в 100мс. При возникновении события (приходит команда через COM) возводится флаг, и в вкладке TimeOut начинает воспроизводится отображение работы комплекса. Алгоритм такой:
1. С 0 по 6 секунду горит красный индикатор
2. С 2 по 6 секунду на экране последовательно загорается 5-4-3-2-1
3. С 7 по 12 секунд горит зеленый индикатор.
4. После 12 секунд - красный индикатор моргает (режим "ожидание").

Система вызова такая - есть переменная FF, которая по умолчанию равна 121. Как происходит событие - она обнуляется, и через ShiftRegister начинает добавлять по единичке каждую 0.1 сек.

Проблема заключается в том, что в этой реализации период зажигания красного и отсчёта (т.е. эти 7 секунд) колеблется от 6,5 до 7,5 секунд (отстает/спешит от комплекса, на комплексе - время с GPS). И похоже, временные процедуры в LV не очень точны. Вопрос - может есть более правильная реализация этого цикла, дабы исключить это отставание/спешку? Хотелось бы синхронизовать изображение с оборудованием...

Заранее спасибо!
Test_SFV.vi
(15.83 КБ) 89 скачиваний

Re: Графическая имитация работы в VI

Добавлено: 03 окт 2017, 22:45
Kosist
С :labview: на Виндовс точности менее миллисекунды Вы не сможете выжать - это что касается точности.
Но у Вас главная проблема в том, что Вы не оперируете со временем, а ведете отсчет - но в шифт регистре лучше держать время (отсчеты Tick Counts). Tick Counts позволит Вам оперировать с миллисекундами, т.е. точность времени переключения возрастет.

Re: Графическая имитация работы в VI

Добавлено: 03 окт 2017, 22:48
IvanLis
Anton.M писал(а):Заранее спасибо!
Попробуйте использовать Timed Loop: http://zone.ni.com/reference/en-XX/help ... imed_loop/
Он более детерминирован.