В проекте требуется создать визуализацию работы робота по заданному алгоритму (чтобы в определённый момент во время выполнения последовательного действия горел индикатор). Проблема в том, что:
Во-первых невозможно остановить выполнение Stacked Sequence Structure пока все кадры не будут пройдены.
Во-вторых при прохождении всех этапов алгоритма прога начинает "чудить" и перескакивает с последнего 16го кадра на 12й, потом просто зацикливается на 12ом... Самое интересное, что в пошаговом режиме по завершении 16го кадра прога совершенно корректно выходит из Stacked Sequence Structure и завершает цикл While Loop!
Люди! HELP! Больше спросить не у кого... Проект горит...
Реализация алгоритма
-
Forward
- professional
- Сообщения: 337
- Зарегистрирован: 03 мар 2008, 12:41
- Награды: 3
- Версия LabVIEW: 2010
- Откуда: Кишинев
- Контактная информация:
Re: Реализация алгоритма
1) Использовать другую структуру.
2) Прога не перескакивает в 12 кадр, а после 16 она останавливает цикл (кстати зачем он вообще? все равно выполняется только 1 итерация), как и было задумано. Потом наступает следующая итерация главного цикла, прога опять заходит в твою последовательную структуру и проскакивает первые 11 кадров (т.е. в них с elapsed time сразу приходит true). Разберись как работает Elapsed time, а если нужно просто реализовать небольшую задержку, то лучше использовать другие функции.
Предлагаю сделать немного проще. Если я правильно понял задачу, то кейс "включение робота" можно реализовать запихнув в него вот это например (и все!). Заодно сможешь добавить туда условие остановки и избежишь поллинга, а то прога в режиме ожидания делает по 50 млн. ненужных итераций и жрет много ресурсов проца (это относится и к главному циклу тоже) .
2) Прога не перескакивает в 12 кадр, а после 16 она останавливает цикл (кстати зачем он вообще? все равно выполняется только 1 итерация), как и было задумано. Потом наступает следующая итерация главного цикла, прога опять заходит в твою последовательную структуру и проскакивает первые 11 кадров (т.е. в них с elapsed time сразу приходит true). Разберись как работает Elapsed time, а если нужно просто реализовать небольшую задержку, то лучше использовать другие функции.
Предлагаю сделать немного проще. Если я правильно понял задачу, то кейс "включение робота" можно реализовать запихнув в него вот это например (и все!). Заодно сможешь добавить туда условие остановки и избежишь поллинга, а то прога в режиме ожидания делает по 50 млн. ненужных итераций и жрет много ресурсов проца (это относится и к главному циклу тоже) .
- Вложения
-
- primer.png (4.1 КБ) 4030 просмотров
-
- primer.vi
- (8.03 КБ) 225 скачиваний
-
Eugen Graf
- guru
- Сообщения: 6502
- Зарегистрирован: 13 ноя 2007, 02:20
- Награды: 4
- Версия LabVIEW: 2009
- Откуда: Saarbrücken
- Контактная информация: