Знакомимся с LabView

Практически у всех разработчиков устройств на микроконтроллерах, будь то любители или профессионалы, рано или поздно возникает необходимость подключить микроконтроллерный девайс к его «старшему брату», а именно к PC. Вот тогда и встает вопрос, а какой софт использовать для обмена с микроконтроллером, анализировать и обрабатывать полученные от него данные? Часто для обмена МК с компьютером используют интерфейс и протокол RS232 — старый добрый COM порт в той или иной реализации.

На стороне компьютера применяют различные терминальные программы, коих сотни. Но эти программы обеспечивают лишь прием и передачу информации. Как то обрабатывать и визуализировать ее в наглядной форме затруднительно.

Некоторые пишут подобное ПО самостоятельно на каком либо языке программирования (Delphi, C++), наделяя необходимым функционалом. Но эта задача не из легких, нужно знать, помимо самого языка, устройство операционной системы, способы работы с комуникационными портами, множество других технических тонкостей, которые отвлекают от главного — реализации алгоритма программы. В общем, быть попутно еще Windows/Unix программистом.

На фоне этих подходов резко отличается концепция виртуальных приборов (vi). В этой статье пойдет речь о программном продукте LabView фирмы Nationals Instruments. Я только начинаю осваивать этот замечательный продукт, поэтому могу допускать неточности и ошибки. Спецы поправят :-)) Собственно что такое LabView?

LabView — это среда разработки и платформа для выполнения программ, созданных на графическом языке программирования «G» фирмы National Instruments.

Говоря простым языком, LabView — Это среда создания приложений для задач сбора, обработки, визуализации информации от различных приборов, лабораторных установок и т.п. А также для управления технологическими процессами и устройствами. Однако с помощью LabView можно создавать вполне себе обычное прикладное ПО. У меня нет цели подробно описывать этот продукт и работу с ним. По LabView написаны тысячи страниц отличной документации и сотни книг. В интернете полно ресурсов, посвященных LabView, на которых можно получить ответы на все вопросы.

Цель статьи — показать насколько просто и удобно, по сравнению с традиционным программированием, можно создавать приложения для ПК и какую мощь несет в себе LabView. (На самом деле спорно, т.к. в традиционном программировании, на той же Delphi сделать не сложней. И по эффективности вряд ли хуже, если не лучше. Но для этого дельфу надо гораздо дольше изучать. Тут же все быстро и понятно почти сразу. Пару методичек проштудировал и вперед городить циферблаты всякие. Так что для программистов оно как собаке пятая нога, а вот таким далеким от компа товарищам как я — самое то. Я когда то, за полчаса, впервые увидев LabView, по тоненькой методичке сваял зверскую систему управления поливом и отоплением для конопляной теплицы. С ПИД регуляторами всякими. Вывел на потенциометры и датчики лабораторного стенда, что стоял в нашем технаре и запустил этот адский агрегат. Причем все заработало сразу, без отладки. Кстати, на LabView работает вся аппаратура адронного коллайдера, а также очень много научной аппаратуры. прим. DI HALT) Ведь большинству электронщиков чуждо программирование для PC, верно? Вот это мы и попробуем исправить. Дабы не изучать сферических вакуумных коней, поставим для себя и реализуем простенькую задачу. Задача действительно проста, но на основе нее можно понять основные принципы программирования в LabView. Мы будем использовать LabView версии 2010. Для других версий отличия будут минимальны.

Задача
У нас есть плата с микроконтроллером AVR, соединенная с компьютером по RS232. В контроллер залита прошивка, согласно которой контроллер измеряет значение напряжения на одном из входов АЦП, и передает код АЦП (от 0 до 1023) в компьютер по последовательному каналу. Необходимо написать программу для ПК, которая будет принимать поток данных от АЦП, отображать код АЦП, преобразовывать код АЦП в значение напряжения в вольтах, отображать значение напряжения в вольтах, строить график изменения напряжения во времени.

Ну наверное хватит лирики, начнем пожалуй!

Итак что нам потребуется для работы:

  • Собственно сама LabView. Можно скачать с сайта NI триал версию: http://www.ni.com/trylabview/. Также без проблем нагугливается пиратская версия. Кстати, на rutracker.org, помимо прорвы пиратских, лежит и версия под Linux на которую регистрация вроде как не требуется вообще. NI решила пойти навстречу опенсорцу?
  • Также обязательно необходимо скачать компонент NI VISA. Без этой программы LabView не «увидит» COM порт на компьютере. VISA содержит в себе функции для работы с комуникационными портами и много чего еще. Скачать ее можно с joule.ni.com. Устанавливаем LabView и VISA. Установка этого ПО стандартная, каких либо особенностей не имеет.

Первым делом нам нужно убедится, что VISA нашла в системе COM порт и корректно с ним работает. Проверить это можно так: запускаем программу Measurement & Automation. Она ставится вместе с LabView. Если она не установилась, установить можно вручную. На диске (образе с LabView она есть).

В левой части окна мы видим оборудование, обнаруженное в системе. Среди всего прочего находим наш COM порт. Справа есть кнопка Open Visa test panel. С помощью нее можно протестировать выбранное устройство. В случае с COM портом там можно отправить или принять заданную по умолчанию или произвольную последовательность символов. Если с портом все в порядке, можно приступать к непосредственно созданию нашей программы.

Запускаем LabView. В окне Getting Started выбираем пункт Blank Vi, тобишь новый виртуальный прибор.

Получаем вот такую штуку:

Итак что мы имеем. Рабочая область состоит из двух больших панелей Front Panel и Block Diagram. На лицевой панели мы будем составлять интерфейс нашей программы, используя элементы управления с панели Controls. Эти элементы представляют собой привычные нам ручки переменных резисторов, светодиоды, кнопки, стрелочные приборы, экран осциллографа и т.п. Они служат для ввода информации в программу и отображения результатов выполнения. На панели Block Diagram распологается непосредственно программный код. Тут надо немного отступить и пояснить принцип программирования на LabView. Небольшой пример. Принято работу над прогой начинать с оформления интерфейса, а затем реализации алгоритма работы на блок-диаграмме. Сделаем простейшую прогу умножения двух чисел. Для этого разместим на лицевой панели путем перетаскивания три элемента управления, скажем элементы Knob и Numeric Indicator для отображения результата.

Сформируем интерфейс как душа пожелает, например вот так:

Ок, теперь нам необходимо реализовать собственно умножение. Переходим на панель Block diagram и видим что для каждого из наших контролов создался соответствующий значек. Лучше всего сразу перевести режим отображения в виде терминалов. Не будет так загромождаться диаграмма. Кроме того в терминалах виден тип данных, которыми оперирует тот или иной контрол. Для этого щелкаем ПКМ по значку и снимаем галку View as icon. Вверху на скрине контрол в виде терминала, внизу и справа в виде иконки. Для того чтобы настроить вид на блок-диаграмме в виде терминалов по умолчанию, нужно выбрать пункт меню Tools->Options, слева выбрать Block diagram и снять галку Place front panel terminals as icons. Очень полезно вывести контекстной справки. Вывести его можно комбинацией Ctrl+H. В этом окошке отображается информация о объекте на котором в данный момент налодится курсор. Мега удобная вещь.

Теперь нужно добавить на блок-диаграмму функцию умножения. Щелкаем ПКМ на блок-диаграмме и из палитры Numeric выбираем функцию умножения Multiply. Преносим ее на диаграмму. Стоит заметить, что LabView имеет просто огромный набор функций. Это и различная математика, статистика, анализ сигналов, PID регулирование, обработка видео, звука и изображений. Всего не перечислишь.

Важнейшей концепцией программирования на LabView является концепция потоков данных DataFlow. Суть такова: В отличие от императивных языков программирования, где операторы выполняются в порядке следования, в LabView функции работают только если на всех входах функции есть информация (каждая функция имеет входные и выходные значения). Только тогда функция реализует свой алгоритм, а результат направляет на выход, который может быть использован другой функцией. Таким образом в пределах одного виртуального прибора функции могут работать независимо друг от друга.

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

Для соединения элементов на блок-диаграмме используется инструмент Connect Wire с панели Tools. Выбираем его и рисуем наши соединения.

Собственно все, можно запустить эту тупую программку на циклическое выполнение и покрутить ручки, наблюдая результат умножения.

Как видно, ничего сложного вроде бы нет. Но в то же время LabView позволяет решать задачи любой сложности! Епт, система управления БАК на нем сделана! Так то.

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

Итак, что нам необходимо сделать. Сначала нужно настроить и проинициализировать последовательный порт. Запустить бесконечный цикл . В цикле мы используем функцию чтения из порта и принимаем информацию. Преобразуем инфу для отображения на графике, пересчитываем код АЦП в значение напряжения в вольтах. При выходе из цикла закрываем порт.
Так в интерфейсе нашей проги не будет никаких управляющих элементов кроме кнопки Стоп, а будет лишь отображение результата, мы поступим так: сначала создадим блок-диаграмму, а потом добавим недостающие элементы на лицевую панель. Хотя делать нужно наоборот! Но в данном случае так удобнее.

На панели блок-диаграммы помещаем из палитры Structures элемент While Loop, это наш бесконечный цикл. Обводим рамкой цикла область, достаточную для размещения внутри алгоритма. В правом нижнем углу есть красная точка, щелкнем по ней ПКМ и выберем Create Control. На лицевой панели у нас тут же появится кнопка Stop. При щелчке на ней наша прога завершится.

Теперь вне цикла мы должны разместить функции инициализации и закрытия порта. Слева инициализация, справа закрытие. Опять же щелкаем ПКМ и выбираем функции Configure Port, Read и Close. Эти функции находятся в палитре Instrument I/O —> Serial. Функцию чтения помещаем внутрь цикла. Соединяем с помощью катушки с проводами выходы и входы функций. Для функции Read мы должны задать количество байт, которая она будет принимать. Щелкаем ПКМ на среднем входе функции Read и выбираем Create->Constant, вводим значение, например 200. На данном этапе должно получится как на скрине.

Нужно создать контролы для функции инициализации порта. Нам вполне хватит двух — скорость порта и имя порта. Точно так же как мы создавали константу для функции чтения, создаем контролы. ПКМ на нужных входах функции инициализации и пункт

Create->Control.

Нас интересуют два входа: Visa resourse name и Baud Rate (по умолчанию 9600). Таперь перейдем на лицевую панель и добавим необходимые компоненты, а именно экран отрисовки графика и метки для отображения кода АЦП и напряжения в вольтах.
Соответственно это элементы Waweform Chart c палитры Graph и два элемента Numeric Indicator с палитры Numeric.

Вернемся к блок-диаграмме и переместим появившиеся элементы внутрь цикла. Мы близимся к завершению! Единственное, нам нужно еще преобразовать строку символов, поступающих с выхода функции Read к формату, который переварят наши индикаторы. И еще реализовать простейшую математику по переводу кода АЦП в вольты. Ниже скрины лицевой панели и блок-диаграммы на данном этапе:

Для преобразования строки мы воспользуемся функцией Scan from string из палитры String. Помещаем ее внутрь цикла. Теперь математика. Для того чтобы преобразовать код АЦП в значение напряжения в вольтах нужно умножить код на величину опорного напряжения (в моем случае это пять вольт) и получившееся значение разделить на 1023 (так как АЦП имеет разрядность 10 бит). Необходимые функции умножения и деления, а также константы (5 и 1023) разместим в цикле. Скрины каждого соединения делать не буду, ибо и так картинок дофига. Приведу финальный скрин всех соединений. Там все предельно просто.

Я думаю все понятно, если будут вопросы спрашивайте в каментах. Вместе разберемся :-))) Тем временем прога готова.

Перейдем к нашему интерфейсу и немного настроим график. Выделим нижнее значение по оси Y и поставим 0. Выделем верхнее и поставим 5. Таким образом наша шкала по оси Y в диапазоне 0-5 вольт. Ну что, выбираем COM порт, вводим скорость обмена, запускаем по кнопке со стрелкой нашу прогу и яростно крутим резистор на плате, невозбранно наблюдая при этом на экране результат нашего труда. Щелкаем на кнопке Stop чтобы остановить прогу.

Как видите все достаточно просто. Данный пример это лишь мизерная часть всех возможностей LabView. Если кому поможет данная статья, буду рад. Только в коментах сильно не бейте я же не профи. Еще один маленький трюк. Если диаграмма стала похожа на Ктулху, можно попробовать воспользоваться кнопкой CleanUp Diagram. Она приведет диаграмму в более-менее божеский вид, но пользоваться надо осторожно. Вот результат ее работы

А еще можно куски объединять в функциональные блоки, чтобы они не загромождали схему.

Много книжек по LabView можно качнуть на automationlabs.ru

Bomond для Easyelectronics.ru

192 thoughts on “Знакомимся с LabView”

  1. Спасибо за статью!
    Весьма интересная вещь, можно замутить удобную отладку через ком-порт с визуализацией, графиками. Просто про возможности LV слышал, а только сейчас начало доходить возможное реальное применение)

        1. Это так, но для того чтобы перенести на другой комп нужно создавать не exe, а инсталлятор куда включен Run-Time Engine и другие используемые компоненты (если есть). Нужно поставить Run-Time Engine, а затем проинсталлировать прогу.

            1. Не не не, без Runtime engine на компе без LabView виртуальный прибор никогда не стартует. Видимо всетаки либо сама LabView, либо RT engine было там. Но более вероятно, что прога была написана не на LabView, а на LabWindows/ Там таки да, компилируется в exe, который можно запустить где угодно.

                1. Возможно. Я не в курсе. Но, по моему проще поставить бесплатную RT Engine и дело в шляпе. Кроме того, есть такая вещь, как LabView Player, тоже вроде позволяет запускать программы на других компах, но я пока не пробовал. На днях постараюсь поэкспериментировать.

        1. РАСШИФРОВКА ВИДЕОУРОКА ПО СОЗДАНИЮ ФАЙЛА .exe в Labview начиная с 55 секунды просмотра:
          -проверить правильность работы программы;
          -остановить работу программы;
          File> Save As…> в появившемся окне уточнить (задать) имя файла с расширением .vi > OK > Project > New Project… > Add >
          в появившемся окне выбрать Build Specifications > Правая Кнопка Мыши (ПКМ) > New -> Application (EXE) > в появившемся окне Save > OK > Source Files > выделить файл с расширением .vi => Previent > Build > Done > My Application > ПКМ > Explore > выделить Application.exe > Enter >
          -убедиться, что программа по прежнему работает;
          -остановить программу;
          -закрыть программу кликом по красному кресту;
          -закрыть окно из которого запустили Application.exe кликом по красному кресту;
          -В окне Project Explore выделить > Build Specifications > ПКМ > New -> Installer >
          выделить Source Files > перейдя в среднее окно выделить My Application => OK > My Installer > ПКМ > Build > Done > My Application ПКМ > Explore > Volume > Enter > Setup.exe > Next
          НА ЭТОМ ВИДЕОУРОУК ЗАКАНЧИВАЕТСЯ.

    1. Здравствуйте bomond Очень нужна помощь Новичку по связи с USB-портом
      Есть программа Счетчика расхода жидкости. Принцип работы ее основан на перепаде давлений допустим устанавливаем Нижний придел давления 3кг/см Вкл клапана и 5кг/см Откл клапана Когда давление падает до 3кг/см Вкл клапан подает давление в сосуд(в этот момент програма подсчитывает+ Цена импульса и происходит счет) в 5кг/см клапан отключается
      Датчик давления автомобильный ММ370 я переделал его на напряжение до 5вольт для использования с работой на USB так как у меня на Ноутбуке нет КОМ-порта
      Заранее Вас благодарю с Уважением Алексей alexey_kushnir@mail.ru

  2. Спасибо большое за статью! У меня вопрос,
    1.Количество байт что задает ? .
    2.Если мы задали 200 то только когда Функции чтения приймет 200 байт дале будет выполняеться функция Scan from string ?

    Большое спасибо ) Буду ждать с нетерпением следующих статей !!!!

    1. 1. Ну собственно и задает количество байт, которое будет прочитано из порта. Я просто для примера 200 поставил. Эту константу можно заменить на контрол, и выбирать необходимое количество байт с лицевой панели.
      2. Все верно, считывается заданное количество байт, и передается в буфер. Там данные доступны для других функций.

      1. Должен добавить, что число 200 в данном примере большой роли не играет. Функция прекращает чтение либо если «увидит» конец строки, либо если количество байт достигнет указаноого значения 200. В данном примере я так понимаю, что строка короче 200 символов.
        И да, есть ещо и третье условие для прекращения чтения строки — это таймаут, который указывается при конфигурации порта.

  3. Риспект за статью!
    Уже давно назревало испытать лаб вью для похожих дел.
    Хотя, весьма успешно до этого юзал visual basic 6. Но там красивые контролы-приборы надо рисовать самому, а тут все годово! Кул!

    1. Ага. Писал диплом. Приём\обработка в пару строчек влезла, а вот отрисовка\визуализация — несколько десятков страниц. При этом так и не смог сделать человеческого вида развёртку как в осциллографе.

    1. Да, конечно. Можно прямо из LabView создать инсталлятор. Для того чтобы запускать программы, созданные в LabView на машине где она не установлена, необходимо установить на этот компьютер среду NI Run-Time Engine. Ее можно скачать с сайте National Instruments.

  4. Спасибо! Хорошая статья для начала.
    я уже больше года не могу приступить к изучению, из-за нехватки времени, хоть и тянет периодически. А тут раз прочитал, и уже чтото да стало ясно.
    Чувство что как будто 30% сам уже сделал :) шучу.

      1. Да уже точно и не помню, давно дело было. Сначала сидел на 5 версии, потом 5.5, семёрка была лучшая, а как только восьмая вышла — поставил, попробовал работать, и через недельку снёс. Возможно не понравилась монструозность разросшейся программы, а может и сильная нагрузка на слабенький процессор.

        1. LabWindows/CVI — Full Development System with 1 Year SSP
          Цена: 110291.53 руб.
          Lite верстя 50 000, почти даром )))

          Интересно, а Borland C++ под ДОС 1993 года платный или нет? У нас на нем многие проекты, компилируем .exe файлы и прошиваем в контроллеры такие вот:
          http://www.promsat.com/page/337/
          стоят 5000 руб, тайваньские, нам удобны для опроса устройств по RS232 и передачи данных по Ethernet (Modbus TCP). Есть платы расширения, можно к ним датчики цеплять, но я не пробовал.

  5. Я считаю, что подобные пакеты нужны не разработчикам, а ученым, у которых есть какой-то прибор для измерения определённых параметров, подрубаемый к ПК, у которого нет определённого удобного способа вывода информации. Разработчик же всегда движется к уменьшению себестоимости и надёжности, в чем дорогие и нагруженные сторонние пакеты не помошники. Человеку, который способен быстро и качественно написать прошивку для сложного устройства не составляет большого труда разобраться в нужной теме и так же быстро и качественно написать легкую, стабильную и удобную программу выполняющую нужную задачу.
    Это было имхо. не призываю этому свято следовать.
    ЗЫ: Мне кажется, что я заболел программированием для любой архитектуры, с использованием наименьшего числа сторонних библиотек. У такого подхода есть большие плюсы в виде легковесности, скорости и простоте программ.

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

  6. Кто-нибудь пытался поставить Labview на Ubuntu? Точнее Visa…собственно Labview отлично ставится и работает, а вот в конфигурационных файлах Visa я уже з….лся копаться….Или есть другой способ работы с портами?

    1. Работать с портами конечно проще всего через функции VISA, а на линуксе проблема с VISA часто у людей выскакивает, судя по сообщениям на форумах. Я Линух не юзаю, погуглите, проблема не раз поднималась. Решение должно быть.

  7. Кому как, а мне так и DELPHI для моих виртуальных отладочных пультов хватает. Есть и графики, и шкалы, как линейные, так и круговые, и регуляторы всякие. И для программирования в целом возможностей гораздо больше. И EXEшник делается, для сложных программ можно и инсталляшку сделать. Зато универсальный и довольно серьезный продукт.
    А пользоваться всякими полумультяшными специализированными продуктами, вроде Алгоритм Буилдера или LabView — так толком ничему и не научишься. Это как в кубики играть. Простые учебные примеры делаются легко, а как что серьезное — так все равно намаешься…

          1. По вине ПО марсоход завис американский, число файлов на диске превысило 65535 и произошел крах системы.

            По вине ПО еще какой-то марсоход превратился в плазму, датчики выдавали информацию в километрах, а компьютер думал что это мили, и не открыл парашют при посадке вовремя.

            Интересный пример с вояджерами, в 1975 году что-ли, на орбите Плутона из-за какой-то шальной частицы сгорел один из битов регистров 8080 или подобного процессора, контроллер по сути, программисты подправили код и обновили прошивку удаленно, чтобы не использовать тот регистр, вот это круто, и для того времени, и для нашего. Сэкономили сотни миллионов долларов, проект продолжился успешно. В интернете подробности есть все. Программисты вычислили и исправили аппаратный сбой, в наше время всё наоборот, в процессоры встраивают системы контроля за программистами и не помогает, память утекает, стеки переполняются, порты уязвимы :)

      1. 1. Обе приины поломки БАК — неправильно спроектированные магниты, просто забыли учесть пару простых эффектов.
        2. Всегда есть человеческий фактор. Как и в случае использования лабвью, так и в случае использования собственных разработок. Так что, ломался бы так и так.
        3. Насчет меньше — спорный вопрос, ибо лабвью — продукт, над которым ведется постоянная работа: что-то исправляется, улучшается. В случае, когда пишут самостоятельно (имею в виду софт для такого рода установок), бесконечно отлаживаться не получится — все таки эта машинка не стенд для испытания софта.

    1. Ну как сказать. Я на лабвью видел очень сложные проекты. Т.е. с платы АЦП в комп идет поток данных, тут же на лету проводится его матобработка, результаты по весьма сложным алгоритмам сортируются и часть из них уходит в цепи регулирования (всякие ПИДы там просто гроздьями) и потом идет обратно, в плату вывода. И все это рулит весьма нешуточной установкой электромеханической (вроде небольшой электростанции).

      Причем софт был написан и отлажен примерно за неделю. Думаю что на дельфи они бы возились в разы если не в порядке дольше. Т.к. там одна отладка бы сколько всего заняла.

      1. Вот именно, я бы наверно ебанулся на тех же делфях кодить БПФ, хотя это не шибко сложный алгоритм. Тем кто шарит в программинге на тех же делфях, это не проблема. А таким как я, например, LabView самое то. Тот же БПФ там две секунды реализовать.

          1. Да это понятно, уже все написано, но как то ссыкотно для ответственного проекта брать код с форумов, неизвестно кем и как написанный. Я предпочту проверенное, гарантированно безглючное решение.

    2. Мне Дельфи тоже кажутся удобными. Без пример наверное сложно, но пример у меня есть, работа с СОМ портом простейшая, интерфейс удобный.
      Предлагаю кому-нибудь выложить пример на Дельфи подобный, считывание данных с СОМ порта и вывод графика. Для СОМ порта у меня нестандартные библиотеки, обычная работа с портом кажется неудобной…

  8. Я считаю, что это разработчику не лишне — на самом деле работа с портами в любой ос организована одинаково — специальный файл для записи и чтения и спец функции для регулирования скорости/разрядности. Всё устроенно очень просто, да и освоить C
    после ассемблера очень просто.

  9. Хорошая статья! Как раз в тему. Как раз стоит задача автоматизации производства -организовать связь калибруемых датчиков с компом.
    Тоже немного покомментирую. Сложно определится, какое решение выбрать.
    Дело в том, что на дельфи можно что то написать,есть книжки с примерами для com порта, но требуется лицензия, а то ходят тут всякие :)
    Лабвью лицензионный стоит 18 тыс. Хотя вещь конечно, хорошая и что важно много по нему информации.
    С++ с QT опенсорсные долго изучать.
    Вот если что нибудь на питоне написать… Вроде бы самый простой вариант. Он чем хорош, есть библиотека serial, + библиотеки визуализации данных, и язык проще чем Си.
    Вообще же складывается ощущение, что тема простой опенсорсной лабораторной автоматизации как то не развита. Не всегда же нужны монструозные и дорогие инструменты, если достаточно поддержки 2-х 3-х распространенных протоколов и вывод нескольких простых графиков.

    1. Дельфи ставите на ноутбуке с паролем, а скомпилированная программа по опросу датчиков получается бесплатная, проверяющим говорите что писали в машинных кодах в блокноте :)

      Есть бесплатные сборки дельфей, Lite версии, урезаны ненужные функции работы с базами данных и интернетом.

    2. Насчет лицензии и денег — для простых, на скорую руку, проектов я использую Microsoft Visual Studio Express — бесплатная лицензия http://www.microsoft.com/express/Downloads/ Си шарп мне показался даже проще, чем дельфи. Для фанатов или начинающих опять же есть Вижуал Бейсик (бейсик в школе вроде как преподают).
      P.S. EXEшники делает сразу же:))) хотя для их работы скорей всего нужно будет ставить .NET Framework — тоже бесплатный ессно.

    1. Сетка настраивается в свойствах компонента Waveform Crart, а чтобы по оси X добавить значения — щелкаем ПКМ по Waveform Chart, выбираем X Scale->Marker Spacing->Uniform/

      Можно воспользоваться компонентом Waveform Graph, там и сетка и числа сразу стоят.

    1. ага, тип данных не совместим. Ну тут можно заюзать функцию String To Byte Array. Она находится в палитре Numeric->Conversion. Ко входу подключаете строку с выхода VISA Read, а к выходу Waveform Graph. Попробуйте, посмотрите на результат и сразу будет понятна разница между Waveform Chart и Waveform Graph. Еще можно примеры к LabView посмотреть. Весьма удобно то, что открыть пример можно прямо из хелпа на тот или иной объект.

      1. подключил но график какойто страный строит ???!!! ничего не понятно … на Waveform Graph нормально, но мне нужно что бы ось т или х была проградуирована до 100 типа (1, 2, 3, 4 … ) и все !!! можно как то сделать ?

        1. Щелкаем ПКМ на графике X Scale->Properties. В этом окне выбираем минимум-максимум шкалы и можно включить автомасштабирование. А чуть ниже есть два поля Scaling Facrots. Допустим максимум мы выставим в 10. В поле смещение остается 0, а в поле Multiplier вводим 0,1. Получаем шкалу x 12345678910

            1. спасибо за ответ … я уже Вас замучил… но ничего не получаеться… сделал как вы сказали все четко шкала стала как нужно я делал 0 до 100 с шагом 10, включил сетку. запускаю проект сетка движется что не нужно !!!! и шкала тоже движется. мне нужно так сделать что бы сетка бы на месте, и шкала не двигалась … Спасибо

              1. Вы хотите что то набодобие осциллографа сделать? Дайте mail, я отправлю готовый проект осциллографа на звуковой карте. Посмотрите как там все сделано. Просто в вашем случае Waveform Chart не поможет, нужно использовать Waveform Graph.

  10. это ваще мощная тема, на этой программе коэффициенты теплового расширения снимают при сверхнизких температурах программа сама строит графики и управляет источниками тока.

  11. Вместо громоздкой VISA, если нужно работать только с COM портом можно установить дополнительный компонент сторонних разработчиков lvserial http://www.mhst.de/downloads.htm, для её работы нужна всего одна Dll размером около 200 кБ. После установки в палитре Instrument Drivers появится подпалитра lvserial. Возможностей даже больше чем в стандартной палитре VISA для работы с COM портом. Сам помаленьку осваиваю LabVIEW. Сначала сделал самодельную ISA плату на ней 12 разрядный ЦАП и 8 битный порт ввода/вывода, сейчас работаю через USB на FT232.

      1. Di, да никакой компонент для этого не нужен скорее всего. Какая разница как физически реализован RS232. Главное что в винде он COM порт и все. А какие компоненты для работы с ним, это дело десятое. Упомянутую выше штуку я пробовал, все работает нормально.

              1. В LabView есть шикарные функции для работы с dll. Но ты прав, надо знать по крайней мере какие функции в драйвере используются. Надо погуглить, может сделал уже ктонибудь битбанг.

                1. http://www.ftdichip.com/Support/SoftwareExamples/CodeExamples/LabVIEW.htm
                  лежит ихняя D2xx реализованная ввиде виртуальных приборов и два примера ее использования
                  немного вкурить ман по программированию D2хх, эти примерчики, и путь открыт

                  PS.Как ни печально, примеры только под винду, так под линухом запускаем пример, видим кучу ошибок и начинаем в каждом приборе править путь к библиотеке D2xx

                  1. Да, этим примером я и воспользовался, работает во всех последующих версиях LabVIEW. Правда получается дрыганье ногами параллельного 8 битного порта, но мне для начала хватает. Работает очень стабильно. Для установки драйвера подправил VID и PID в инф. файле, есть соответствующая статья и всё OK!

  12. А контроллер в каком формате передает данные? Чтобы на контроллер прописать стандартный модбас какой-нибудь свихнуться можно :) А вот несколько байт выплюнуть проще, но не все программы их поймут. Про возможности блока захвата данных с СОМ порта не расказали. Как данные расшифровываются? :)

    Работал с СОМ портом на дельфях, всё просто, но использовал нестандартный компонент, жизнь упростилась, использовал несколько команд типа
    InstallCom(port1, 9600, 8,N,1), ToCom1(байт), FromCom(байт) и т.п.

    Впринципе нормальный вариант. У нас подобным образом программисты котельные автоматизировали, стандартные контроллеры с OPC сервером, на С++ подправили стандартную форму, поставили на комп диспетчеру и работает система уже 5 лет. Софт получился бесплатный, удобный и надежный.

    Данный проект тоже интересен, в идеале можно взять контроллер за 0.25$ tiny какой-нибудь, прилепить к нему датчик температуры, СОМ порт (или лучше преобразователь СОМ в Ethernet) пару реле и будет аналог промышленного контроллера за 1000$, для каких-то целей и лучше. У меня например проблема, в офисном здании нет датчиков температуры, сеть везде, а мерять нечем, или не знаю чем чтобы недорого :) Давно обдумываю как бы что-то придумать простое.

    Если народу интересны ARM, LabView, можно описать работу со SCADA системами, и простейшими контроллерами? Российские Сегнетиксы вот собраны на атмеловских контроллерах и по цене сравнимы с ценой деталей, но это промышлненный контроллер, корпус, блок питания, экранчик, кнопки, реле, часики, АЦП, ЦАП, эзернет опционельно при цене 4500 руб:
    http://www.segnetics.com/main.aspx?Page=349
    Цепляется к любым серьезным программам через Modbus RTU, для лабораторий помоему идеальное решение.
    Образцы не высылают, даже хуже, очередь за ними 4-6 недель(!)
    И программируется в своей среде функциональными блоками, плюсы не завесить программами неуловимыми ошибками (стеки, оптимизация, утечки памяти), простое программирование (студент за несколько часов кликания написал простую программу), минусы меньшее быстродействие, сотни миллисекунд.
    Помоему этот контроллер идеален чтобы по быстрому сделать законченное промышленное решение, хоть программу работы котла задать дома, хоть самогонный аппарат автоматизировать :)

    Кроме LabView можно взять SCADA системы, в деморежиме там 32-64 тэга поддерживаются, для простых работ хватит, и ключей полный интернет :) Работал с Inouch 8.0 если разобраться красиво, и параметры отображаются, и трэнды, и архивы все, и скрипты можно делать, и графика динамическая, выглядит серьезнее LabView. Недостатки мало встроенных протоколов обмена данными, свой контроллер подключить сложно, если тот же Модбас в него запрограммировать, или делать связку программ… Хорошие отзывы встречал о Genesis 32, всё встроенно, но не работал с ней. Вобщем и сам в поисках «смотрелки» данных, много непонятного всего )))

  13. Спасибо за интересную статью!
    Месяца 2 назад искал нечто подобное (неудачно), пришлось просить знакомого программиста написать визуализатор для исследования одного техпроцесса. Теперь вот думаю либо изучить лабвью, либо дельфи (а может и то и другое).
    Кстати, по поводу управления сложными техпроцессами при помощи лабвью: считаю, что делать управление процессами из под винды (лабвью или что то другое, пофиг) это дело весьма опасное. Впрочем, если фатальный крах системы управления не грозит ядерным взрывом, то можно и под виндой.

    1. На LabView можно делать системы жесткого реального времени, как раз для ответственных задач. Есть модуль labview real-time module. Правда и аппаратура должна быть соответствующей.

      1. Я не в коем случае не против LabView, я против винды в управляющих (не мониторинговых) системах. Ну и еще один аспект: на промышленном предприятии управляющий компьютер (контроллер) не должен выглядеть как обычный ПК, дабы не искушать всяких «товарищей» играть в косынку на компьютере, управляющем подачей материала в обжиговую (бывают и такие придурки).

  14. Для альт линукса есть проект openscada. Правда я так и не понял как с ним работать. и еще древняя версия лабвью 6.1 на сайте немецкого журнала СT, но неясно, можно ли ей бесплатно пользоваться на предприятии.

  15. Микроконтроллер выдает 10 разрядные результаты работы АЦП. Вначале 8-бит, а потом еще 2, ведь так? Тогда каким образом программа из статьи распознает, что данные из COM порта поступают в формате по 2 байта на один отсчет?

        1. $regfile = «m8def.dat»
          $crystal = 8000000
          $baud = 19200
          $hwstack = 32
          $swstack = 8
          $framesize = 24

          Config Adc = Single , Prescaler = Auto , Reference = Avcc

          Start Adc

          Dim W As Word , Channel As Byte
          Do
          W = Getadc(4)
          Print W
          Waitms 50
          Loop
          End

          Это программа на BASCOM AVR залита в контроллер. Обычная терминалка принимает код в диапазоне от 0 до 1023. То есть если апряжение на входе АЦП будет 2,5 вольт терминал примет код 511. Они то из контроллера в ASCII идут как я понимаю. Точно также принимает и функция VISA Read. Тоесть из контроллера идет строка символов, если смотреть на тип данных.

          1. На BASCOM AVR никогда не программировал, так как программирую на С. Но в данном случае это не имеет особого значения, обмен между микроконтроллером и ПК по средствам USART (СОМ порт) осуществляется байтами (1 байт = 8 бит = 256 состояний). Таблица символов ASCII тоже имеет 256 символов, смотрим здесь http://proavr.narod.ru/ascii.pdf
            Вот я и не могу никак понять, как тебе далось протащить по 8-ми битному протоколу, 10-и битные данные от АЦП???

                    1. если есть желание, можно с контроллера гнать результат АЦП в битах. LV это легко соберет.

    1. Файлы могу замылить вам. Дайте только почту. Планы туманные, так как я пока учусь и честно сказать я еще просто нуб, но есть у меня задумка сделать плату ввода-вывода, которая будет управляться LabView. Как сделаю, отпишусь :-))

        1. Учебный курс это уж слишком для меня. Могу посоветовать книгу Д.Трэвис. LabView для всех. Весьма толковое чтиво для начала. качнуть можно тут: http://www.automationlabs.ru/forum/showthread.php?t=1672

          Ну а плата, я думаю будет простая — Mega128 (может ARM если раскурю). Микросхемы АЦП, ЦАП, ну и линии дискретных входов-выходов. Или вообще пошлю эти AVR, ARM да и соберу на старом, добром 8051 кристалле. Есть у меня парочка MSC1211Y5

          1. Плату ввода-вывода я уже делал. Использовал 572ПВ1 и несколько мультиплексоров, кажется КП11. 572 в качестве ЦАП (АЦП мне был не нужен), КП11 для ввода — вывода дискретных сигналов. Интересна технология :) Берём ненужную ISA плату 16 разрядную, отрезаем ножничками по металлу верхнюю часть, к оставшейся части с разъёмом прикручиваем кусок фольгированного располосованный в нужных местах с шагом 2.5 мм резаком из ножовочного полотна, распаиваем микросхемы и соединяем что нужно МГТФом, всё, ISA контроллер готов. И как ни странно всё это работало под LabVIEW весьма стабильно, жаль что те компы уже на свалке. С PCI такой номер не прокатит!

              1. Можно, конечно, но сложновато. Платой на ISA я управлял всего двумя инструментами LabVIEW — In Port и Out Port, не считая мелочёвки: сложить, разделить, умножить и.т.д. Заморачиваться стоит если нужна скорость, я думаю. Поэтому я и пересел на USB. Тем более если с нетбуком или ноутбуком работать.

                1. Может есть смысл общими усилиями спроектировать плату( что-то на подобии Pinboard) с набором аппаратных средств на борту(ввод\вывод, ацп, цап и другое) для проведения экспериментов с Labview?

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

      1. У меня код АЦП превращается в 8-и битный (в самом МК)и по UART-у на комп. Как сделать так, чтобы LabView воспринимал байты, как числа в диапазоне [0..255]? Скорость отправки у меня 1000 байт в секунду. Хочу, чтобы сие чудо отображалось на графике (как на осциллографе).

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

  16. LabVIEW хорошая IDE, изучается легко и интуитивно. Проблемы начинаются при более сложных проектах, как в общем то и при использовании других IDE.
    К тому же LabVIEW дорогое удовольствие. Сам уже достаточно долго программирую на LabVIEW (только на LabVIEW), но смотрю в сторону Qt из за его бесплатности. О Делфи наслышан, но он тоже платный.

    Чтобы не быть голословным, вот последний урок по созданию DLL в Qt и использовании оного в LabVIEW
    http://labviewportal.eu/ru/softinterfejsy/dll

  17. Здорово, что выбрали LabVIEW в качестве среды разработки! В контексте обсуждаемой тематики она вписывается как нельзя лучше.
    Ну а если будут вопросы, заходите, поможем:
    http://labviewportal.eu/index.php
    Кстати решения и проекты на LabVIEW можно выкладывать на обсуждение здесь:
    http://labviewportal.eu/viewforum.php?f=142
    в наиболее успешных проектах можно будет обсудить их коммерческую реализацию.

    1. Добрый день Всем!Очень нужная программа.Захотел скачать LabVIEW себе,но на гуглях сплошной вирусняк и засилье вымогателей. Прошу дайте нормальную ссылку на этот софт

    1. Это означает что с порта ничего не прочитано. И функция Scan from string не выполняется. У меня такое было, когда с моей платы улетело питание, соответственно она ничего не отправляла по RS232. Убедитесь с помощью терминалки любой, что устройство отправляет инфу. Если все в норме, то проверьте еще скорости. Должны совпадать в программе и в настройках порта.

      1. Специально поставил окошко отображения инфы(String) с ком порта, информация валится и та которую задаю, скорости в норме. Для проверки вывожу в порт число каждую секунду. Не понял как бы преобразовывалось 10ти битное число в ЛАБе

          1. В том то и дело. Я так подумал, что 10битное число нужно передать за два раза (HI и LO) и не поняв как это дело преобразуется в ЛАБе решил попробовать с одного 8битного байта. И ни как не могу добиться выполнения без ошибки.

                  1. Мега644 на макетке. Специально сейчас в КВАВРе визартом зделал установки УАРТа, чтоб вам показать.
                    // USART initialization
                    // Communication Parameters: 8 Data, 1 Stop, No Parity
                    // USART Receiver: Off
                    // USART Transmitter: On
                    // USART0 Mode: Asynchronous
                    // USART Baud Rate: 19200
                    UCSR0A=0x00;
                    UCSR0B=0x08;
                    UCSR0C=0x06;
                    UBRR0H=0x00;
                    UBRR0L=0x19;

                    выдаю раз в секунду число 0х41, в терминале читается нормально, в ЛАБе тоже читается и выводится на показыватель STRINGов(интересное выражение получилось) в правильном виде.
                    Я так понимаю что мне нужно в каком то другом виде посылать данные что бы СКАН ФРОМ СТРИНГ читал нормально ?

                    1. Преобразовать в строку. Кстати, на графике его и в таком виде можно отобразить. Функция преобразования находится в палитре Conversions по моему.

                    2. Скомпилил БАСКОМовский вариант — работает. Понял что от меня требовалось :)) Посылаю число(например число 232) строкой вида:
                      SendStr(«232\r\n»);
                      2labview спасибо, попробую.

                    3. SendStr(”232\r\n”);

                      Что означает \r\n ?

                      Я тоже не могу побороть: Error 85 occurred at Scan From String (arg 1) in Untitled 1.vi

  18. Отличный вводный пример. Но прежде чем использовать эту программу, хотелось бы узнать, и желательно с примерчиком, можно ли построить терминал с логикой работы запрос — ответ.

  19. Т.е. для того, чтобы перенести проект с одного компа на другой, на нём тоже должна быть установлена ЛабВью?
    Было бы интересней, если бы компилировался ЕХЕ-шник с возможностью работы как с самостоятельной программой =)))

    1. Чтобы запустить на другом компе нужно поставить NI RunTime Engine. Это чтото вроде майкрософтовской .NET Framework.

      По поводу запрос-ответ что вы имеете ввиду? Типа, программа отправляет инфу, контроллер ее принимает и каким то образом отвечает? Если это так, то все реализуется очень просто.

        1. Понятно, я могу попозже сделать примерчик. Сейчас просто нету LabView на компе, но вообще среди стандартных примеров, которые идут с LabView есть пример работы с RS232, там и чтение и запись сделаны. Вы можете подточить этот пример под себя, ну и софт для контроллера написать останется. Почти готовый софт есть тут на сайте. DiHalt в своих уроках по C приводил пример приема байта по RS232 и в зависимости от того какой байт пришел по моему светодиодами мигал. Вот вам практически готовое решение.

  20. Привет.
    Для начала сделал вот такой проектик
    При приходе по COM порту единички (код 0х31) будем зажигать диодик, а при приходе нуля (код 0х30) гасить. Фоновой задачей будет мигание другого диода. Взят проект из http://easyelectronics.ru/avr-uchebnyj-kurs-programmirovanie-na-si-chast-1.html.

    http://filebox.od.ua/?file=a18338fe673defc8315b3a2d1d821e55

    p.s. Может есть смысл создать тему на форуме.

      1. Советую ознакомится с примером Basic serial read and write.vi Для этого нужно открыть NI Example Finder. Этот пример будет в разделе Hardware Input and Output-> Serial. Там все очень просто сделано.

  21. Хороший ликбез по возможностям LabVIEW.
    В статью хотелось бы еще добавить пару предложений/примеров по оборудования от NI на которое собственно LabVIEW и подвязывается, так сказать для широты представления.
    На первый взгляд реализовывать какую-либо систему мониторинга/управления на LabVIEW будет сплошным удовольствием: тут и быстрота, и дружелюбность.

    Сам на предприятии программирую управление контроллерами на C++/Qt.
    Плюсов тут конечно много, и гибкость, какая захочешь, и кроссплатформенность, что тоже немаловажно. Минус же длительной разработки компенсируется тем, что реализовав пару проектов потом просто слегка перерабатываешь уже известный код под другую задачу, да и библиотек связи по разным протоколам хватает.
    Слабое место тут конечно в представлении: нужный GUI писать, например тот же вывод графика — полный геморр, особенно если ты не высокоуровневый прогер, хотя в этом плане библиотеки тоже растут.
    В дельфи было все поудобнее, но там своих костылей море.

    1. Да, с родными платами и модулями от NI было бы вообще классно. Там есть такая штука, DAQ Assistant, очень удобно конфигурировать аппаратуру от NI, вот только стоит эта аппаратура негуманно для нас, радиолюбителей. Мне довольно часто приходилось делать софтины с графиками, в основном для лабораторных приборов. Так вот именно из-за гемора с их реализацией я разбираюсь LabView. На мой взгляд это очень мощная система, можно сделать все что угодно. Если надо код на C, например

      1. А можно ли налидить прием по UART, но в своем формате? Например, у меня от МК идут пакеты, в которых и служебная информация, и измерительная, и контрольные суммы — график мне необходимо строить только по измерительной, служебные данные тоже хорошо бы отображать где-либо, да еще и проверять пару байт контрольной суммы.

        1. Расскажите, что за система.
          Как организован протокол?
          Можно ли увидеть проект и его исходники?
          С помощью labview реализовать можно, только надо знать, что
          же необходимо сделать.

          1. На пальцах, система сбора информации с каналов(датчиков), каждый канал оцифровывает свой МК(пусть будет кМК) и передает информацию по UART в управляющий ведущий МК(вМК), а потому уже этот управляющий вМК пересылает пакет информации по RS-232(еще один UART) в компьютер(собственно это и есть момент возможного включения сюда labview).
            Управляющий пакет от компьютера состоит из 5 байт: 2б(признак начала) + 1б(команда)+1б(канал)+1б(контр.сумма)
            Инф.пакет от вМК из ~75 байт: 2б(признак начала) + 24б(служебная инф.) + 48б(результаты измерений) + 1б(контр.сумма)
            Исходники лежит на sourceforge, но это программа для компа, не думаю что вам есть резон в ней ковыряться.

  22. Есть вопрос. Ситуация такая: по уарту (9600 бод) передаю пилу от 0 до 255. Раз в 1/64 секунды выдается 1 байт. Контроллер с этой прошивкой подключил через переходник на max232 к com порту, составил программу как у вас. Но в лабвью и терминале выдает не чистую пилу, вот скрин:
    http://img641.imageshack.us/i/36876833.jpg/
    Кто-нибудь знает почему так выходит?
    Контроллер работает от внутреннего источника импульсов на 1МГц

  23. Народ, подскажите, пожалуйста, в чем проблема. Я еще экспериментировал: замкнул RX на TX у контроллера, на выход uart подавал старший байт с ацп, а контроллер все это принимает и отображает на 3-х сегментном дисплее, все было норм. Потом я в схеме переходника у микрухи max232 замкнул rx на tx и отправлял данные через терминал. Все данные приходили без искажений. То есть по отдельности и переходник и контроллер работают нормально.
    Решил по другой схеме потестить еще…Я контроллер подключил через переходник к компу. контроллер все что получает выводит на индикатор и отсылает обратно. Потом в лабвью сделал программу, которая шлет пилу в ком порт и то что принимает выводит на график, график получился такой(схема прибора там же):
    http://img17.imageshack.us/i/75420623.jpg/
    красный — то что шлет лабвью, а белый то что приходит. странно что обратно не пришел ни один байт <128

  24. Разобрался в чем проблема. Видимо все дело было в нестабильности частоты, вообщем выставил в фузах 8МГц, заново пересчитал делитель для уарта и все запахало четко

  25. Скачал LabView 2010 v1.10 Visa Всё понятно,но не могу понять как можно удалить элемент если ошибочно ввёл? Там в Хелпе только замена на что-то другое. Можно ли вращать элементы?

  26. Приходят последовательно значение с сом порта, нужно записать их в два массива х и у, например приходит 1,2,3,4,5,6
    для массива х нужно записать х=[1,3,5] для массива у=[2,4,6]. Вроде для этого есть встроеная функция Decimate 1D Array.
    Не могу подключить Decimate 1D Array к VISA Read Function ? Подскажите как можно пожалуйста.

  27. >Slavast
    Смотри лучше палитру Programming->String.

    >Si-Soft Тебе нужно это Programmgin->Structures->Case Structure. Работает как case в дельфи или как switch в с++

    >Gordienko Victor да она делит массив на части, но для начала надо заполнить массив значениями. Или юзай case структуру и заведи счетчик х. Если х нечетное, то вставляешь элемент в первый массив, иначе во второй.

  28. LabView прекрасная вещь один недостаток, в винде без плат расширения просто через com порт невозможна обработка потоковых данных, такая же хрень с Proteusom — хотел сделать управление двигателем через com порт — и шиш но это как я понял свойство самой винды потому что она не реалтайм.

  29. Да и спасибо авторам за статью

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

  30. Для преобразования строки мы воспользуемся функцией Scan from string из палитры String
    Все делаю точно так как на картинке вход стринга — розовый, выход — оранжевый.
    Прога пишет ошибка во входном сигнале Scan from string. Разъясните пожалуста.

  31. Кто-нибудь пробовал эту программу на LabView с PinBoard’ом..?
    На пинборде 1.1 по-умолчанию прошивка передаёт по значения потенциометра, подключённого к АЦП…
    В обычном терминале всё отображается… в лабвью — прямая линия…. Лабвью виртуальный компорт обнаружил и протестил саксессфул…
    Схема из основной статьи ругалась, мол тип данных не тот…
    Когда поставил Decimal String To Number Function по совету Leonard_magnum из комментов выше — ругаться перестал, но по-прежнему ничего не отображает…
    Параметры порта в лабвью сверил с параметрами из обычного терминала — всё сходится…
    Перед тем как подцеплять лабвью дисконектнуть терминал я не забыл….
    Если кто-нибудь юзал с пинбордом — поделитесь опытом, мож там ньюансы какие? Возможно в настройках Visa Serial на Block Diagram в лабвью надо что-то прописать или поставить..

  32. Хорошая статья для новичков вроде меня, спасибо!
    По образу и подобию данной схемы я собрал свою. Принцип такой же — отправка результата 10-битного АЦП контроллера на экран, с отображение его на графике, но я пользовался функциями перебора массива, выделения старшего и младшего байт с последующей их склейкой, можно сказать, вручную :)
    Решив усложнить схему добавлением датчика освещённости, работающего одновременно с температурным датчиком, наткнулся на препятствие — не могу придумать как различать байты с информацией. Мне советовали ставить маркеры на каждый байт, но как это реализовать я не знаю.
    Интересно, а можно ли реализовать такую сортировку байт блок-диаграммами в ЛабВью?
    Может быть кто-то уже решал с подобную задачу. Нуждаюсь в дельном совете ;)

  33. Еще было бы прикольно, если бы програмка производил бы интерполяцию (например, Уттекера-Шенона) сигнала по снятым отсчетам, а то так потребуется избыточная частота дискретизации для восстановления сигнала с не самым широким спектром. Типа следующий уровень — сначала просто снимаем отсчеты и пытаемся восстановить сигнал, а потом уже для продвинутых, алгоритмы увеличивающие разрешающую способность программы+устройства, да и вещь в принципе стандартная, и покажет всесторонность LabVIEW, я уже сам с матлаба+симулинк на лабвью перекинулся давно))))
    Сам все хочу сделать нечто похожее для себя, но времени нет, может как руки доберуться выложу дальнейшее развитие статьи))))

  34. Спасибо за статью!
    При написании программы у меня возникли проблемы при конвертировании строковых данных из Read в формат «перевариваемый нашими измерительными приборами». При запуске появляется сообщение об ошибках:
    Error 1 occurred at Scan From String (arg 1) in ADCtest.vi

    Possible reason(s):

    LabVIEW: An input parameter is invalid. For example if the input is a path, the path might contain a character not allowed by the OS such as ? or @. »
    В качестве передающего устройства использовал UART-USB FT232RL (http://easyelectronics.ru/skorostnoj-avr-usb-programmator-na-ft232rl-bez-vspomogatelnogo-kontrollera.html)

    Прогмма Measurement&Automation видет и определяет устройство правильно.
    И еще, я хотел попросить файл с проектом, если это возможно. Спасибо)

  35. Большое спасибо за статью.

    Я хотел узнать об AVR устройстве который преобразует аналоговый сигнал в цифровой код, и отправляет на com порт.
    Где можно найти схему и прoшивку ?

    Спасибо Harut.

  36. Доброго времени суток,….
    поставил качать данный программный пакет
    Думаю разбирать его по немногу…
    подскажите, здесь можно организовывать отправку данных в СОМ порт(для микроконтроллера) и по принятой информации из СОМ порта выполнять различные switch-case конструкции???

    1. Можно, но устройство нельзя будет использовать на производстве, продать и показывать друзьям. Разбираться очень сложно. И поддержки USB я не нашел. Вот здесь получилось начало того чего надо: http://we.easyelectronics.ru/electro-and-pc/ft232-eto-ne-tolko-usb-uart-chast-2-cbus-bit-bang.html . Но для выбора switch-case , графиков, записи в .txt и математики там не дошло. А очень жаль…

  37. Здравствуйте bomond Очень нужна помощь Новичку (Я по специальности техник-мехайник немног далек от этого) по связи с USB-портом
    Есть программа Счетчика расхода жидкости. Принцип работы ее основан на перепаде давлений допустим устанавливаем Нижний придел давления 3кг/см Вкл клапана и 5кг/см Откл клапана Когда давление падает до 3кг/см Вкл клапан подает давление в сосуд(в этот момент програма подсчитывает+ Цена импульса и происходит счет) в 5кг/см клапан отключается
    Датчик давления автомобильный ММ370 я переделал его на напряжение до 5вольт для использования с работой на USB так как у меня на Ноутбуке нет КОМ-порта
    Заранее Вас благодарю с Уважением Алексей alexey_kushnir@mail.ru

  38. а можно попросить о помощи? никак не могу программу Lab View. занимаюсь программированием с 2011 года. посмотрев эту статью мне понравилась эта программа а найти не могу как бесплатно скачать. у кого есть установочный фаил этой программы? заранее спасибо. мой майл: mihai-27.87@mail.ru

  39. Подскажите пожалуйста, как научить ЛабВью различать сигналы со входа А0 и А1 ардуино. Если мне нужно организовать одновременное измерение напряжения с двух каналов А0 и А1? Помогите очень-очень надо!

Добавить комментарий