Логическая константа False. Если у вас старый , она может чуть по-другому выглядеть.soleda писал(а):А что у вас в схеме означает F в зеленом квадрате? Не нашел у себя.
Помогите подключиться к NuDaq PCI-9112
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: Помогите подключиться к NuDaq PCI-9112
-
- junior
- Сообщения: 54
- Зарегистрирован: 26 сен 2016, 06:52
- Версия LabVIEW: 2011
- Контактная информация:
Re: Помогите подключиться к NuDaq PCI-9112
Сейчас за ноутбуком, завтра доберусь до компьютера, попробую.
Диаграмма это не блок схема?
Диаграмма это не блок схема?
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: Помогите подключиться к NuDaq PCI-9112
Она самая. Блочная диаграмма.soleda писал(а):Диаграмма это не блок схема?
Там до кучи надо в CLFN поставить Run In Any Thread (иконка должна стать жёлтой). И, скорее всего, обработки ошибок тоже превратить в реентерантный. Я бы для уверенности почитал ещё мануал на функции из вызываемой библиотеки. Там должно быть написано, можно ли вызывать функции одновременно.
-
- junior
- Сообщения: 54
- Зарегистрирован: 26 сен 2016, 06:52
- Версия LabVIEW: 2011
- Контактная информация:
Re: Помогите подключиться к NuDaq PCI-9112
Мне ещё рано такие тонкости читать...)
Вот такую блок схему сделал, она не работает. Если вместо false ставлю обычную кнопку stop, то цифры при нажатии начинают меняться, причем в произвольном порядке. Какое назначение это false?
Вот такую блок схему сделал, она не работает. Если вместо false ставлю обычную кнопку stop, то цифры при нажатии начинают меняться, причем в произвольном порядке. Какое назначение это false?
- Вложения
-
- Снимок экрана от 2016-10-16 22-23-55.png (3.56 КБ) 6632 просмотра
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: Помогите подключиться к NuDaq PCI-9112
В данном виде - бесконечно выполняющийся цикл While.soleda писал(а):Какое назначение это false?
Если вместо константы кнопка, то цикл, останавливаемый по кнопке.soleda писал(а):while(1)
{
// ...
}
Джеффри Тревис «LabVIEW для всех»
Могли бы и не делать - я же выложил сниппет.soleda писал(а):Вот такую блок схему сделал
Use VI Snippet to Store and Share Reusable Code Sections
zXtK6BGqz-k
-
- junior
- Сообщения: 54
- Зарегистрирован: 26 сен 2016, 06:52
- Версия LabVIEW: 2011
- Контактная информация:
Re: Помогите подключиться к NuDaq PCI-9112
Добрый день. Сегодня продолжил разбираться. Хочу объединить три сигнала полученных с daq в одном waveform char. Всякие примеры в книжках прокатывают, а вот с реальной платой нет. Как это все объединить?
-
- leader
- Сообщения: 932
- Зарегистрирован: 17 янв 2016, 15:02
- Награды: 1
- Версия LabVIEW: 6.1,8.5,20
Re: Помогите подключиться к NuDaq PCI-9112
Waveform Chart
- Вложения
-
- Chart.PNG (8.47 КБ) 6580 просмотров
-
- junior
- Сообщения: 54
- Зарегистрирован: 26 сен 2016, 06:52
- Версия LabVIEW: 2011
- Контактная информация:
Re: Помогите подключиться к NuDaq PCI-9112
Спасибо, разобрался. Вот такая блок схема получилась. Галку я не нашел...
-
- junior
- Сообщения: 54
- Зарегистрирован: 26 сен 2016, 06:52
- Версия LabVIEW: 2011
- Контактная информация:
Re: Помогите подключиться к NuDaq PCI-9112
Спасибо за подсказку, нашел)
Подскажите, какой фикус это не работает???
Подскажите, какой фикус это не работает???
- Вложения
-
- Безымянный.jpg (11.57 КБ) 6555 просмотров
Последний раз редактировалось soleda 28 окт 2016, 15:23, всего редактировалось 1 раз.
-
- junior
- Сообщения: 54
- Зарегистрирован: 26 сен 2016, 06:52
- Версия LabVIEW: 2011
- Контактная информация:
Re: Помогите подключиться к NuDaq PCI-9112
Как нарисовать функцию:
int a;
a=100; //можно вместо этого сделать на лицевой панели окошечко с курсором и возможностью регулировки числа.
if(AI_0>=a)
{
delay_ms(200);
if(AI_0>=a)
{
DO_1=0;
Led=0;
}
}
Где AI_1-аналоговый вход, DO_1 цифровой выход (он же светодиод на экране).
int a;
a=100; //можно вместо этого сделать на лицевой панели окошечко с курсором и возможностью регулировки числа.
if(AI_0>=a)
{
delay_ms(200);
if(AI_0>=a)
{
DO_1=0;
Led=0;
}
}
Где AI_1-аналоговый вход, DO_1 цифровой выход (он же светодиод на экране).
-
- junior
- Сообщения: 54
- Зарегистрирован: 26 сен 2016, 06:52
- Версия LabVIEW: 2011
- Контактная информация:
Re: Помогите подключиться к NuDaq PCI-9112
Друзья, ночь не спал, сделал вот такую схему см. вложение. Его смысл, смотреть, за температурой, если температура будет выше допустимой, либо будет обрыв датчика или замыкание датчика включить защиту и удерживать это состояние до нажатия кнопки "Сброс". Вроде бы схема работает, как мне её превратить в библиотечный элемент, выводы сделать итп., а то уже клин ловлю. Может есть, что почитать?
- Вложения
-
- Термозащита.vi
- (12.09 КБ) 84 скачивания
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: Помогите подключиться к NuDaq PCI-9112
Не работает, потому что на выходе у вас массив из логических элементов. Если вам надо сделать AND или OR на массиве значений, то используйте And Array Elements или Or Array Elements из вкладки Boolean. Но вот последняя операция (AND с константой True) изначально лишена смысла, т.к. умножая любой элемент на единицу, получаем тот же элемент.soleda писал(а):Спасибо за подсказку, нашел)
Подскажите, какой фикус это не работает???
1. Задержка в цикле должна быть всегда безо всяких условий, иначе ЦП будет нагружен на полную катушку, а ваша программа отнимет все ресурсы ОС. Другое дело, что в холостом режиме задержку можно делать меньше, например, 50-100 мс.soleda писал(а):Как нарисовать функцию:
int a;
a=100; //можно вместо этого сделать на лицевой панели окошечко с курсором и возможностью регулировки числа.
if(AI_0>=a)
{
delay_ms(200);
if(AI_0>=a)
{
DO_1=0;
Led=0;
}
}
Где AI_1-аналоговый вход, DO_1 цифровой выход (он же светодиод на экране).
2. Двойное вложенное одинаковое условие - if(AI_0>=a). Достаточно одной проверки AI_0.
3. Не сказано, что делать с DO_1 и Led, когда AI_0 меньше a.
Ну, и отвечая на вопрос - как-то так (в простейшем случае): Но я бы не стал использовать такой подход для работы с оборудованием, т.к. в этом случае происходит непрерывная работа с платой (чтение/запись канала), даже если это не нужно. Логичнее прочитать или записать вход (выход) один раз согласно алогоритму, а дальше крутить программу в холостом режиме. Таким образом снимается излишняя нагрузка на софт и железо.
В данном виде эту программу оформлять как SubVI бессмысленно, потому что она сразу зациклится внутри SubVI из-за бесконечного цикла While. Как SubVI оформляется обычно отдельный блок кода без циклов или с такими циклами, которые гарантированно завершатся после какого-то промежутка времени. Цикл практически всегда должен быть размещён в основной программе, чтобы была возможность обработки событий UI (нажатия кнопок и т.п.), возможность работы с оборудованием, а также логика (основной алгоритм) работы программы. В профессиональных проектах одним циклом обычно не ограничиваются, а на каждую процедуру (работа с железом или с UI) выделяют свой цикл. Таким образом, эти циклы крутятся параллельно, не мешая друг другу.soleda писал(а):как мне её превратить в библиотечный элемент, выводы сделать итп., а то уже клин ловлю
Я уже давал вам ссылку на азы программирования в :soleda писал(а):Может есть, что почитать?
Советую прочитать до конца и поделать примеры. А также просмотреть встроенные примеры , внимательно почитать справку. Вообще, этот вопрос поднимается чуть ли не каждым участником, причисляющим себя к "чайникам" в Посмотрите хотя бы эту тему: http://www.labviewportal.org/viewtopic. ... 884#p38884 Там есть ещё кое какие ссылки на литературу. Ну и поиск в помощь.dadreamer писал(а):Джеффри Тревис «LabVIEW для всех»
А что должна делать программа, если нажата кнопка "Сброс", а температура всё ещё выше допустимой или произошёл обрыв цепи датчика? Согласно вашему коду программа бесконечно будет включать защиту, пока показания по температуре не станут ниже уставки или каким-то образом не восстановится цепь датчика. Когда этот момент проясните, можно будет накидать пример.soleda писал(а):Его смысл, смотреть, за температурой, если температура будет выше допустимой, либо будет обрыв датчика или замыкание датчика включить защиту и удерживать это состояние до нажатия кнопки "Сброс".
-
- junior
- Сообщения: 54
- Зарегистрирован: 26 сен 2016, 06:52
- Версия LabVIEW: 2011
- Контактная информация:
Re: Помогите подключиться к NuDaq PCI-9112
Спасибо за ответ.
Про почитать, прочитаю, просто я уже две книжки прочитал Магда Ю.С и Белиоскую Ю.Г. они тоже ДМК издательства. Но материала там явно маловато....
По поводу двойного условия if(AI_0>=a) - смысл заключается в том, чтобы избежать ложных срабатываний, плохой контакт, электромагнитные наводки итп, я на подобие этого пишу для микроконтроллеров. К примеру взять кнопку, обычную настоящую. Если её подключить к контроллеру и написать код типа if("кнопка"==1)a++;, то нажав на кнопку "а" станет не на единицу больше, а на несколько единиц, т.е микроконтроллер из за дребезга контактов посчитает, что клавиша была нажата несколько раз. Поэтому мой код делает следующее: Если кнопка нажата, срабатывает if, потом происходит задержка 200мс, за это время дребезг пропал и остался чистый сигнал. И вот теперь следующий if смотрит есть ли единица на кнопке или нет. Если осталась, то выполнится a++, если это была помеха, то не выполнится.
Теперь по программе:
Будут всего 4 терморезистора, 2 стоять в электромоторе, 1 в ключах управления, один окружающая среда.
Запустил мотор, нужно считывать, отображать и записывать эти данные. А ещё заниматься контроллем, т.е если температура выйдет за допустимые пределы, отключить реальный контактор.
Естественно, если мотор или контроллер ещё не остыли никакие запуски производить нельзя и кнопка сброса срабатывать не должна, да и автоматически запуститься вновь ничего не должно.
Запуск должен выполнить оператор т.е Я, устранив ошибки и нажав на кнопку сброс.
DO - digital out, если сработала защита, то на выходе болжен быть LOW, если все нормально HIGH. На плате цифровых выходов много.....
Про почитать, прочитаю, просто я уже две книжки прочитал Магда Ю.С и Белиоскую Ю.Г. они тоже ДМК издательства. Но материала там явно маловато....
По поводу двойного условия if(AI_0>=a) - смысл заключается в том, чтобы избежать ложных срабатываний, плохой контакт, электромагнитные наводки итп, я на подобие этого пишу для микроконтроллеров. К примеру взять кнопку, обычную настоящую. Если её подключить к контроллеру и написать код типа if("кнопка"==1)a++;, то нажав на кнопку "а" станет не на единицу больше, а на несколько единиц, т.е микроконтроллер из за дребезга контактов посчитает, что клавиша была нажата несколько раз. Поэтому мой код делает следующее: Если кнопка нажата, срабатывает if, потом происходит задержка 200мс, за это время дребезг пропал и остался чистый сигнал. И вот теперь следующий if смотрит есть ли единица на кнопке или нет. Если осталась, то выполнится a++, если это была помеха, то не выполнится.
Теперь по программе:
Будут всего 4 терморезистора, 2 стоять в электромоторе, 1 в ключах управления, один окружающая среда.
Запустил мотор, нужно считывать, отображать и записывать эти данные. А ещё заниматься контроллем, т.е если температура выйдет за допустимые пределы, отключить реальный контактор.
Естественно, если мотор или контроллер ещё не остыли никакие запуски производить нельзя и кнопка сброса срабатывать не должна, да и автоматически запуститься вновь ничего не должно.
Запуск должен выполнить оператор т.е Я, устранив ошибки и нажав на кнопку сброс.
DO - digital out, если сработала защита, то на выходе болжен быть LOW, если все нормально HIGH. На плате цифровых выходов много.....
-
- junior
- Сообщения: 54
- Зарегистрирован: 26 сен 2016, 06:52
- Версия LabVIEW: 2011
- Контактная информация:
Re: Помогите подключиться к NuDaq PCI-9112
Приветствую! Пол книжки прочитал, но как бы стремно не звучало, ребята где мой любимый a++?
Вот хочу я:
while(1)
{
a++;
delay_ms(100);
}
И хочу я это число куда нибудь запомнить, чтобы им когда нибудь оперировать... Как это нарисовать? Где переменные??? Что только шифт регистр?
Вот хочу я:
while(1)
{
a++;
delay_ms(100);
}
И хочу я это число куда нибудь запомнить, чтобы им когда нибудь оперировать... Как это нарисовать? Где переменные??? Что только шифт регистр?
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение