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

Некорректная работа подприборов

СообщениеДобавлено: Ср ноя 07, 2012 8:32 pm
Meteor
Доброго времени, уважаемое сообщество.
Потребовалось отслеживать группу событий с формированием меток времени. Если быть точнее в потоке определять начало данных и их окончание.
Для этого был разработан подприбор "детектор фронта", суть работы которого заключена в определении переходов "нет данных - первые данные" и "последние данные - нет данных" (можно нарисовать импульс и отождествить с его фронтами).
Далее был разработан узел, с применением Get Date/Time in Second и Get Date/Time string. Суть узла - при наступлении события выдать в строку данные о времени (часы, минуты, секунды). (На скрине находится в case два одинаковых узла, к ним проведены стрелки)
Данный узел был оттестирован и после того, как проверена правильность его работы (выдавались 2 строки с временем нажатия и отпускания кнопки) свернут до подприбора для экономии места и наведения эстетики (стрелка к нижней части).
После размещения двух подприборов началась какая-то галиматья. При включении тумблера строка отображения времени принимает одинаковые значения в обоих подприборах (хотя должна в только в одном их них). То же самое и при отключении.
Далее, были поставлены два узла не свернутые до подприборов. И проведено тестирование. Итог таков: узлы свернутые в подприбор - работают некорректно, узлы не свернутые в подприбор работают как положено (скрин).
Попытка комбинировать подприбор (один) с узлом - дает правильный результат работы. Красным выделены строки с выводом времени "фронтов", синим - строки одноименных событий "включение тумблера" (вверху) и "выключение тумблера" (внизу).
Отладка показала, что в строках подприборов данные меняются так: сперва в строке 1 появляются данные (начало), затем они же появляются в строке 2, далее новое значение появляется в строке 2 (окончание потока), затем, через 1 такт эти же данные сменяют запомненное значение в строке 1.
Признаюсь, потратив около часа на эти казусы не нашел никакого вразумительного объяснения.
Собственно вопрос таков: это вина программы или моя? Если моя, то как исправить ситуацию? Использую LabView 8.5

Re: Некорректная работа подприборов

СообщениеДобавлено: Чт ноя 08, 2012 12:51 pm
IvanLis
Meteor писал(а):Отладка показала, что в строках подприборов данные меняются так: сперва в строке 1 появляются данные (начало), затем они же появляются в строке 2, далее новое значение появляется в строке 2 (окончание потока), затем, через 1 такт эти же данные сменяют запомненное значение в строке 1.
Признаюсь, потратив около часа на эти казусы не нашел никакого вразумительного объяснения.
Собственно вопрос таков: это вина программы или моя? Если моя, то как исправить ситуацию? Использую LabView 8.5

дело в том, что SubVI в Вашем случае запускаются/вызываются последовательно
сделайте их "реентеральными", что бы запускалось несколько копий одной SubVI
1.png
1.png (27.11 KiB) Просмотров: 1255

должно все заработать нормально...
Реентерабельность: http://ru.wikipedia.org/wiki/%D0%A0%D0% ... 1%82%D1%8C
Reentrant VIs: http://digital.ni.com/public.nsf/allkb/ ... 59006B57CC

Re: Некорректная работа подприборов

СообщениеДобавлено: Чт ноя 08, 2012 7:03 pm
Meteor
IvanLis писал(а):сделайте их "реентеральными", что бы запускалось несколько копий одной SubVI...
должно все заработать нормально...

Сделал, заработали как положено. Спасибо!