Помогите подключиться к NuDaq PCI-9112

Простейшие вопросы в области инженерной разработки
Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3926
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2022
Благодарил (а): 11 раз
Поблагодарили: 126 раз
Контактная информация:

Re: Помогите подключиться к NuDaq PCI-9112

Сообщение dadreamer »

soleda писал(а):А что у вас в схеме означает F в зеленом квадрате? Не нашел у себя.
Логическая константа False. Если у вас старый :labview: , она может чуть по-другому выглядеть.
soleda
junior
junior
Сообщения: 54
Зарегистрирован: 26 сен 2016, 06:52
Версия LabVIEW: 2011
Контактная информация:

Re: Помогите подключиться к NuDaq PCI-9112

Сообщение soleda »

Сейчас за ноутбуком, завтра доберусь до компьютера, попробую.
Диаграмма это не блок схема?
Вложения
Снимок экрана от 2016-10-16 22-05-56.png
Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3926
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2022
Благодарил (а): 11 раз
Поблагодарили: 126 раз
Контактная информация:

Re: Помогите подключиться к NuDaq PCI-9112

Сообщение dadreamer »

soleda писал(а):Диаграмма это не блок схема?
Она самая. Блочная диаграмма.

Там до кучи надо в CLFN поставить Run In Any Thread (иконка должна стать жёлтой). И, скорее всего, :vi: обработки ошибок тоже превратить в реентерантный. Я бы для уверенности почитал ещё мануал на функции из вызываемой библиотеки. Там должно быть написано, можно ли вызывать функции одновременно.
Вложения
2016-10-16_23-16-23.jpg
soleda
junior
junior
Сообщения: 54
Зарегистрирован: 26 сен 2016, 06:52
Версия LabVIEW: 2011
Контактная информация:

Re: Помогите подключиться к NuDaq PCI-9112

Сообщение soleda »

Мне ещё рано такие тонкости читать...)
Вот такую блок схему сделал, она не работает. Если вместо false ставлю обычную кнопку stop, то цифры при нажатии начинают меняться, причем в произвольном порядке. Какое назначение это false?
Вложения
Снимок экрана от 2016-10-16 22-23-55.png
Снимок экрана от 2016-10-16 22-23-55.png (3.56 КБ) 6623 просмотра
Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3926
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2022
Благодарил (а): 11 раз
Поблагодарили: 126 раз
Контактная информация:

Re: Помогите подключиться к NuDaq PCI-9112

Сообщение dadreamer »

soleda писал(а):Какое назначение это false?
В данном виде - бесконечно выполняющийся цикл While.
soleda писал(а):while(1)
{
// ...
}
Если вместо константы кнопка, то цикл, останавливаемый по кнопке.
Джеффри Тревис «LabVIEW для всех»
soleda писал(а):Вот такую блок схему сделал
Могли бы и не делать - я же выложил сниппет.
Use VI Snippet to Store and Share Reusable Code Sections

zXtK6BGqz-k
soleda
junior
junior
Сообщения: 54
Зарегистрирован: 26 сен 2016, 06:52
Версия LabVIEW: 2011
Контактная информация:

Re: Помогите подключиться к NuDaq PCI-9112

Сообщение soleda »

Добрый день. Сегодня продолжил разбираться. Хочу объединить три сигнала полученных с daq в одном waveform char. Всякие примеры в книжках прокатывают, а вот с реальной платой нет. Как это все объединить?
Вложения
Безымянный.jpg
Blackman

Activity
leader
leader
Сообщения: 932
Зарегистрирован: 17 янв 2016, 15:02
Награды: 1
Версия LabVIEW: 6.1,8.5,20

Re: Помогите подключиться к NuDaq PCI-9112

Сообщение Blackman »

Waveform Chart
Вложения
Chart.PNG
Chart.PNG (8.47 КБ) 6571 просмотр
soleda
junior
junior
Сообщения: 54
Зарегистрирован: 26 сен 2016, 06:52
Версия LabVIEW: 2011
Контактная информация:

Re: Помогите подключиться к NuDaq PCI-9112

Сообщение soleda »

Спасибо, разобрался. Вот такая блок схема получилась. Галку я не нашел...
Вложения
Безымянный.jpg
Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3926
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2022
Благодарил (а): 11 раз
Поблагодарили: 126 раз
Контактная информация:

Re: Помогите подключиться к NuDaq PCI-9112

Сообщение dadreamer »

soleda писал(а):Галку я не нашел...
Вложения
2016-10-27_20-15-20.jpg
soleda
junior
junior
Сообщения: 54
Зарегистрирован: 26 сен 2016, 06:52
Версия LabVIEW: 2011
Контактная информация:

Re: Помогите подключиться к NuDaq PCI-9112

Сообщение soleda »

Спасибо за подсказку, нашел)
Подскажите, какой фикус это не работает???
Вложения
Безымянный.jpg
Безымянный.jpg (11.57 КБ) 6546 просмотров
Последний раз редактировалось soleda 28 окт 2016, 15:23, всего редактировалось 1 раз.
soleda
junior
junior
Сообщения: 54
Зарегистрирован: 26 сен 2016, 06:52
Версия LabVIEW: 2011
Контактная информация:

Re: Помогите подключиться к NuDaq PCI-9112

Сообщение 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 цифровой выход (он же светодиод на экране).
soleda
junior
junior
Сообщения: 54
Зарегистрирован: 26 сен 2016, 06:52
Версия LabVIEW: 2011
Контактная информация:

Re: Помогите подключиться к NuDaq PCI-9112

Сообщение soleda »

Друзья, ночь не спал, сделал вот такую схему см. вложение. Его смысл, смотреть, за температурой, если температура будет выше допустимой, либо будет обрыв датчика или замыкание датчика включить защиту и удерживать это состояние до нажатия кнопки "Сброс". Вроде бы схема работает, как мне её превратить в библиотечный элемент, выводы сделать итп., а то уже клин ловлю. Может есть, что почитать?
Вложения
Термозащита.vi
(12.09 КБ) 84 скачивания
Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3926
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2022
Благодарил (а): 11 раз
Поблагодарили: 126 раз
Контактная информация:

Re: Помогите подключиться к NuDaq PCI-9112

Сообщение dadreamer »

soleda писал(а):Спасибо за подсказку, нашел)
Подскажите, какой фикус это не работает???
Изображение
Не работает, потому что на выходе у вас массив из логических элементов. Если вам надо сделать AND или OR на массиве значений, то используйте And Array Elements или Or Array Elements из вкладки Boolean. Но вот последняя операция (AND с константой True) изначально лишена смысла, т.к. умножая любой элемент на единицу, получаем тот же элемент.
Snippet.png
Snippet.png (12.81 КБ) 6486 просмотров
fp.jpg
fp.jpg (46.2 КБ) 6486 просмотров
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 цифровой выход (он же светодиод на экране).
1. Задержка в цикле должна быть всегда безо всяких условий, иначе ЦП будет нагружен на полную катушку, а ваша программа отнимет все ресурсы ОС. Другое дело, что в холостом режиме задержку можно делать меньше, например, 50-100 мс.
2. Двойное вложенное одинаковое условие - if(AI_0>=a). Достаточно одной проверки AI_0.
3. Не сказано, что делать с DO_1 и Led, когда AI_0 меньше a.

Ну, и отвечая на вопрос - как-то так (в простейшем случае):
Snippet2.png
Snippet2.png (17.58 КБ) 6486 просмотров
Но я бы не стал использовать такой подход для работы с оборудованием, т.к. в этом случае происходит непрерывная работа с платой (чтение/запись канала), даже если это не нужно. Логичнее прочитать или записать вход (выход) один раз согласно алогоритму, а дальше крутить программу в холостом режиме. Таким образом снимается излишняя нагрузка на софт и железо.
soleda писал(а):как мне её превратить в библиотечный элемент, выводы сделать итп., а то уже клин ловлю
В данном виде эту программу оформлять как SubVI бессмысленно, потому что она сразу зациклится внутри SubVI из-за бесконечного цикла While. Как SubVI оформляется обычно отдельный блок кода без циклов или с такими циклами, которые гарантированно завершатся после какого-то промежутка времени. Цикл практически всегда должен быть размещён в основной программе, чтобы была возможность обработки событий UI (нажатия кнопок и т.п.), возможность работы с оборудованием, а также логика (основной алгоритм) работы программы. В профессиональных проектах одним циклом обычно не ограничиваются, а на каждую процедуру (работа с железом или с UI) выделяют свой цикл. Таким образом, эти циклы крутятся параллельно, не мешая друг другу.
soleda писал(а):Может есть, что почитать?
Я уже давал вам ссылку на азы программирования в :labview: :
Советую прочитать до конца и поделать примеры. А также просмотреть встроенные примеры :labview: , внимательно почитать справку. Вообще, этот вопрос поднимается чуть ли не каждым участником, причисляющим себя к "чайникам" в :labview: :D Посмотрите хотя бы эту тему: http://www.labviewportal.org/viewtopic. ... 884#p38884 Там есть ещё кое какие ссылки на литературу. Ну и поиск в помощь.
soleda писал(а):Его смысл, смотреть, за температурой, если температура будет выше допустимой, либо будет обрыв датчика или замыкание датчика включить защиту и удерживать это состояние до нажатия кнопки "Сброс".
А что должна делать программа, если нажата кнопка "Сброс", а температура всё ещё выше допустимой или произошёл обрыв цепи датчика? Согласно вашему коду программа бесконечно будет включать защиту, пока показания по температуре не станут ниже уставки или каким-то образом не восстановится цепь датчика. Когда этот момент проясните, можно будет накидать пример.
soleda
junior
junior
Сообщения: 54
Зарегистрирован: 26 сен 2016, 06:52
Версия LabVIEW: 2011
Контактная информация:

Re: Помогите подключиться к NuDaq PCI-9112

Сообщение soleda »

Спасибо за ответ.
Про почитать, прочитаю, просто я уже две книжки прочитал Магда Ю.С и Белиоскую Ю.Г. они тоже ДМК издательства. Но материала там явно маловато....

По поводу двойного условия if(AI_0>=a) - смысл заключается в том, чтобы избежать ложных срабатываний, плохой контакт, электромагнитные наводки итп, я на подобие этого пишу для микроконтроллеров. К примеру взять кнопку, обычную настоящую. Если её подключить к контроллеру и написать код типа if("кнопка"==1)a++;, то нажав на кнопку "а" станет не на единицу больше, а на несколько единиц, т.е микроконтроллер из за дребезга контактов посчитает, что клавиша была нажата несколько раз. Поэтому мой код делает следующее: Если кнопка нажата, срабатывает if, потом происходит задержка 200мс, за это время дребезг пропал и остался чистый сигнал. И вот теперь следующий if смотрит есть ли единица на кнопке или нет. Если осталась, то выполнится a++, если это была помеха, то не выполнится.

Теперь по программе:
Будут всего 4 терморезистора, 2 стоять в электромоторе, 1 в ключах управления, один окружающая среда.

Запустил мотор, нужно считывать, отображать и записывать эти данные. А ещё заниматься контроллем, т.е если температура выйдет за допустимые пределы, отключить реальный контактор.
Естественно, если мотор или контроллер ещё не остыли никакие запуски производить нельзя и кнопка сброса срабатывать не должна, да и автоматически запуститься вновь ничего не должно.
Запуск должен выполнить оператор т.е Я, устранив ошибки и нажав на кнопку сброс.
DO - digital out, если сработала защита, то на выходе болжен быть LOW, если все нормально HIGH. На плате цифровых выходов много.....
soleda
junior
junior
Сообщения: 54
Зарегистрирован: 26 сен 2016, 06:52
Версия LabVIEW: 2011
Контактная информация:

Re: Помогите подключиться к NuDaq PCI-9112

Сообщение soleda »

Приветствую! Пол книжки прочитал, но как бы стремно не звучало, ребята где мой любимый a++?
Вот хочу я:
while(1)
{
a++;
delay_ms(100);
}
И хочу я это число куда нибудь запомнить, чтобы им когда нибудь оперировать... Как это нарисовать? Где переменные??? Что только шифт регистр?
Ответить
  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Для чайников»