Моделирование ввода в Labview

Я пытаюсь написать программу Labview, которая принимает входные данные от термодатчика через последовательный порт RS-232, применяет к нему некоторые базовые преобразования и отображает их на экране.

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

Это возможно?

У меня Labview 2011.


person Kshitiz Sharma    schedule 21.05.2012    source источник


Ответы (4)


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

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

person Mourndark    schedule 21.05.2012

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

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

person glglgl    schedule 21.05.2012
comment
иметь другую программу, имитирующую датчик, - хорошая идея. Я искал подробности того, как это сделать. - person Kshitiz Sharma; 21.05.2012
comment
Я не знаю вашего датчика - вот что вам нужно выяснить. Но я добавил основную идею, как использовать этот подход. - person glglgl; 21.05.2012
comment
Я также часто использовал com0com для имитации нуль-модемного кабеля (удобно, когда у вас нет ни одного или достаточного количества портов) для тестирования приложений RS-232: com0com.sourceforge.net - person J...; 24.05.2012

Если вы инкапсулируете весь свой коммуникационный код в subVI или наборе subVI, отдельно от кода, который выполняет преобразование и отображение, вы можете легко заменить тестовый код и тестовые данные на реальные данные датчика. Вы можете написать subVI, который генерирует тестовые данные и позже заменить его реальным subVI связи с датчиком, или вы можете использовать структуру case в subVI, чтобы выбирать между обменом данными с реальным датчиком и просто выводом тестовых данных (что, как предлагает Морей , вы могли читать из файла, чтобы вы могли легко его изменить).

Я бы посоветовал вам написать отдельные subVI для открытия связи с датчиком, получения от него точки данных и закрытия порта связи, когда вы закончите (хотя вы, вероятно, можете просто использовать для этого функцию закрытия последовательного порта или VISA). Объедините эти ВП в цепочку, используя порт связи (также известный как сеанс VISA) и провода ошибок. «Открытый» ВП может принимать входные данные, определяющие, будут ли использоваться реальные / смоделированные данные, и сохранять этот выбор в глобальной переменной (или функциональном глобальном ВП), которую ВП «получить данные» проверяет каждый раз при вызове.

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

person nekomatic    schedule 22.05.2012

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

  1. Создайте виртуальные последовательные порты на своем компьютере с помощью имитатора виртуального порта. http://www.eltima.com/products/vspdxp/
  2. Получите симулятор Modbus. http://www.plcsimulator.org/
  3. Загрузите библиотеку Labview Modbus. http://zone.ni.com/devzone/cda/epd/p/id/4756

Откройте библиотеку Labview Modbus и запустите 'MB Serial Master Example.vi'

Теперь должно быть возможно считывать / записывать значения в симулятор с помощью примера программы.

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

person Kshitiz Sharma    schedule 30.05.2012