2017-02-04 15 views
2

У меня возникают настоящие проблемы с кажущейся легкой задачей в LabView. Поэтому задача состоит в том, что у вас есть какой-то счетчик, который идет от 0 до 60 и кнопка. Если вы нажмете кнопку, счетчик должен подняться на один, это должно продолжаться до 60, где при следующей кнопке нажмите, чтобы счетчик сбрасывался до 0, чтобы начать все заново.Простой счетчик LabView

У меня уже есть какое-то решение, но моя проблема в том, что он продолжает рассчитывать быстро. Если я нажимаю кнопку, счетчик вскакивает 10-12 раз, а не один за другим.

Мое решение: https://www.pic-upload.de/view-32620107/Counter.png.html

+0

Если вы выберете код на блок-диаграмме и затем в меню выберите «Редактировать >> Создать фрагмент VI из выбора», тогда LabVIEW создаст PNG с вашим кодом.Люди могут перетащить этот PNG на свои блок-диаграммы, чтобы воссоздать ваш код из встроенных метаданных. Очень полезно для публикации в Stack Overflow! – srm

ответ

1

Никогда не используйте локальную переменную в LabVIEW.

Хорошо, это завышено, но это передовой инструмент, который следует использовать только в качестве последнего средства. Если вы когда-либо обнаруживаете, что используете локальную переменную, вы, вероятно, делаете это как неэффективно и рискованно, как можете, на языке потока данных. Локальные переменные ломают поток данных и вводят копии данных и риск условий гонки. Так что давайте откажемся от этого.

Есть два инструмента, которые, как вам кажется, отсутствуют в вашем инструменте: структура событий и регистр сдвига. Вот ваше исправление: (Вам может потребоваться изменить этот фрейм на 61 вместо 60 ... Я не знал, что вы имели в виду 60 нажатий кнопок или отображаемое значение «60». Я пошел с 60 нажатиями кнопок.)

Кстати ... изображение ниже представляет собой фрагмент VI. Вы можете буквально перетащить PNG на свою блок-схему, если у вас LV 2016 или более поздней версии, а встроенные метаданные превратят ее в рабочий код.

enter image description here

Вот как код будет написан до 2001 года с использованием опроса вместо событий. Есть редкие случаи, когда опрос полезен сегодня, но, как правило, хороший программист LabVIEW избегает этого решения, потому что он тратит так много пропускной способности процессора. enter image description here

+0

Спасибо большое! Это очистило вещи ^^ Но есть ли «более простой» способ сделать это, потому что мы havent использовали большинство инструментов, которые вы использовали в своем решении. Также мы программируем с Labview61, есть ли разница? – Xenox

+0

Вы, боги! Вы используете версию LabVIEW, выпущенную в 2001 году! Вау. К счастью, это первая версия со структурой Event, так что это работает. Но ваш учитель, вероятно, намеревается использовать старинный цикл опроса. Я отредактирую свой ответ, чтобы показать это. Но вам нужны сдвиговые регистры - любой ответ здесь, который не использует SR, по своей сути ошибочен. – srm

+0

Там вы идете, @Xenox. Если вы сочтете это полезным, проголосуйте за ответ. При желании, отметьте вопрос как ответ. – srm

0

У меня уже есть какое-то решение, но моя проблема в том, что он продолжает подсчет способ быстро. Если я нажимаю кнопку, счетчик вскакивает 10-12 раз, а не один за другим.

Вы просто должны изменить «Механическое действие» с помощью этой кнопки (правая кнопка мыши на нем), чтобы «Защелку Когда прессованные» или «Защелка, когда выход» и связать контроль непосредственно (без переменного) к чтобы устранить эту проблему с быстрым подсчетом.

Вы также должны рассмотреть вещи, о которых упоминалось в srm, я бы поставил по крайней мере структуру последовательности вокруг приращения числа (поместив сброс числа в другой кадр этой последовательности), чтобы определить, что сначала выполняется, увеличение или сброс числа.

Или вы можете сделать случай, единственное решение, как this

+0

Провод уже определяет, что сначала выполняется. Структуры последовательности не нужны в LabVIEW, если вы не управляете кодом с побочными эффектами (то есть, связь с аппаратным обеспечением, состояние системы, часы), и даже тогда структуры последовательности можно легко избежать, просто объявив ваши зависимости данных. Нет никакой необходимости в структуре последовательности в вашем коде или моем. – srm

-2

enter image description here

Нажмите кнопку ОК в 60 раз для того, чтобы считать от 1 до 60. На 60-й нажмите он будет идти обратно в 0.

+0

Этот код очень неаккуратный. Прежде чем отправлять ответ, если вы не можете воспользоваться моментом для написания прочитанного кода G, пожалуйста, по крайней мере, нажмите «ctrl + u», чтобы очистить диаграмму и сделать проводы бегущими. – srm