2016-02-08 2 views
0

Моя программа Labview работает как шарм, пока я не посмотрю блок-схему. Изменения не производятся. Я не сэкономлю. Просто Ctrl + E, а затем Ctrl + R.Программа Labview Program меняет поведение после просмотра (не меняя) блок-схемы

Теперь это не работает должным образом. Проблема только в перезапуске Labview.

Моя программа одновременно управляет двумя массивами сканера для лазерной резки. Для принудительной параллельной работы я использую обработчик ошибок и циклы, которые ждут сигнала от сканера. Но внезапно некоторые петли бегают чаще, чем должны.

Что происходит в Labview, когда я открываю блок-схему, которая мешает моему коду?


Edit: Его трудно сказать, что происходит, не нарушая мое соглашение о неразглашении.

Я управляю двумя независимыми зеркальными массивами для лазерной резки. В то время как один запускает один Cutting-Job, другой должен запускать другие задания. Очень быстро. Когда первый закончен, они встречаются в одном и том же положении и управляют той же геометрией с той же медленной скоростью. Задачи задаются как * .XML и сохраняются как .net-объекты. Устройство выполняет только самое последнее задание и перезаписывает его при получении нового.

Я могу проверить, работает ли работа еще. Хотя это правда, я запускаю цикл while для других заданий. Теперь этот цикл работает несколько раз слишком часто и даже игнорирует WAIT-блоки. Также он пропускает часть, где он читает файл задания XML, снова изменяет часть скорости назад и сохраняет ее. Он работает только один раз быстро.

@Joe: Нет, это не так. Он работает только хорошо. впоследствии это не так.


Youtube ссылки

The way it is supposed to move

The wrong way

+1

Предоставьте: 1. минимальный воспроизводимый VI 2. ожидаемое поведение 3. Что вы видите вместо этого – mzu

+0

Многое может случиться. Чтобы более точно попытаться описать проблему более подробно или предоставить пример кода. –

+0

Верно ли, что если вы просто открываете VI и используете Ctrl + R несколько раз, что он всегда работает правильно после первого запуска? –

ответ

0

Быстрая точка, чтобы проверить: являются Debug и "сохраняют данные в проводах" отключен? Хотя это может не изменить вычисления, но это может, конечно, изменить время очень плотных циклов, и это было одно из неожиданных программных поведений, о которых говорил OP.

+0

проверил это. его не то, что –

+0

Сохранение данных в проводах не изменило бы поведение запущенных программ в любом случае. Значения будут перезаписаны при следующем выполнении. В обратной связи с кэшем нет обратной связи ... кэширование значений проводов помогает только при отладке, отключая много оптимизации памяти LV. – srm

+0

Сохранение данных в проводе вместе с открытым BD во время выполнения может исказить время параллельных циклов. Если это действительно так, то можно сказать только, когда код доступен. – mzu

2

Есть только одна вещь, о которой я могу думать, которая изменяется только путем открытия блок-схемы.

Когда блок-диаграмма открывается, все секции кода, исключенные из комментируемого или недоступного для компилятора, будут загружать их ВПП. Если какой-либо из этих комментариев кода каким-то образом повлиял на ваш текущий код, у вас может возникнуть проблема.

Есть только два способа, которыми я знаю, чтобы вмешаться ... оба они довольно маловероятны. a) У вас есть своего рода «проверка всех ВП в памяти» или «проверка всех типов в памяти», которые вы используете в качестве подключаемой системы. Когда загружаются секции с комментариями, это изменит ВП в памяти. Такие системы не редкость при анализе XML, так что, может быть. b) Вы используете метод Run VI для некоторого динамически вызываемого ВП для выполнения как VI верхнего уровня, но, загружая диаграмму, он обнаруживает, что это ВПП вашей текущей программы. ВП не может одновременно находиться на верхнем уровне и в ВПП, поэтому вызов Run VI возвращает ошибку.

Все. Я ничего не могу придумать. Обе идеи кажутся маловероятными, но, учитывая ваши претензии и отсутствие блок-схемы, я решил, что опубликую ее как гипотезу.

+0

Каков наилучший способ загрузки блок-схемы здесь? Он довольно большой со многими случаями и под-Vis –

+0

Используйте snipplet, загружайте прямо здесь, как PNG-файл. – mzu

+0

Публикация фрагмента изображения, как предлагает Михаил, работает по тем вопросам, которые StackOverflow лучше всего подходит. Но если вы действительно думаете, что обнаружили ошибку в LabVIEW или кому-то нужно исследовать всю вашу иерархию под NDA, обратитесь в службу технической поддержки NI. Их юридический отдел может работать с вами, чтобы настроить способы исследования кода, не нарушая NDA. – srm

 Смежные вопросы

  • Нет связанных вопросов^_^