Страница 1 из 1

Генератор дискретных сигналов

СообщениеДобавлено: Вс мар 31, 2013 1:39 pm
dist
Здравствуйте!
Работаю с железками CRIO-9073 и модулем дискретного ввода,вывода 9403. Разобрался как выдавать дискретные сигналы вручную используя переключатель boolean. Но это не совсем удобно, щелкать мышкой по нему то и дело.
возникла необходимость реализовать генератор дискретных сигналов (чередование нуля и единицы), чтобы вручную можно было задать период изменения состояния. Подскажите пожалуйста, как можно это сделать?
Заранее спасибо

Re: Генератор дискретных сигналов

СообщениеДобавлено: Пн апр 01, 2013 7:43 pm
Meteor
dist писал(а):возникла необходимость реализовать генератор дискретных сигналов (чередование нуля и единицы), чтобы вручную можно было задать период изменения состояния. Подскажите пожалуйста, как можно это сделать?

Вот так устроит?
Можно задать длительность импульса (1) и паузы (0), далее пока не нажмете "стоп" будет генерировать импульсную последовательность. Время в мс.

Re: Генератор дискретных сигналов

СообщениеДобавлено: Чт апр 04, 2013 9:43 am
dist
Спасибо огромное, такой вариант вполне устраивает, вот только возникла небольшая проблема при запуске его на compact rio. Входные параметры (pulse и pause) при компилировании считываются, а дальше в процессе работы программы при изменении их значений контроллер продолжает выдавать последовательность с параметрами, которые были заданы вначале, приходится останавливать работу программы, вводить новые данные, а потом опять запускать. Подскажите, пожалуйста, с чем может быть связана эта проблема?
P.S. dbl numeric control пришлось заменить на I lb numeric control, так как в случае dbl код не мог быть скомпилирован.

Re: Генератор дискретных сигналов

СообщениеДобавлено: Чт апр 04, 2013 10:29 am
Техподдержка NI
Добрый день! Попробуйте внести controls внутрь цикла, как показно на прилагаемом рисунке.

Уточните какая ошибка возникает при компиляции с использованием numeric dbl, и на какой тип данных вы поменяли? Вы указали: I lb numeric control.

_____
Олег Шкалябин

Re: Генератор дискретных сигналов

СообщениеДобавлено: Вс апр 07, 2013 12:43 pm
dist
Как я понял не поддерживается тип таких данных.

Re: Генератор дискретных сигналов

СообщениеДобавлено: Вс апр 07, 2013 12:47 pm
dist
Внес controls внутрь цикла, теперь управляется в реальном времени, но возникла другая проблема. Кроме последовательности необходимы еще несколько каналов, которые переключаются в ручном режиме, но чем больше я задаю длительность импульса, тем дольше время переключения состояния вручную, скриншот программы прилагаю

Re: Генератор дискретных сигналов

СообщениеДобавлено: Пн апр 08, 2013 3:54 pm
Техподдержка NI
Добрый день!

Давайте разбираться по порядку. Во-первых, у вас ошибка должна быть из-за того, что вы делите на ноль (qoutient & remainder.vi).

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

В-третьих. По поводу типа данных, использование Numeric dbl в данной части кода избыточно, поскольку задержка в миллисекундах работает с целыми числами (Numeric Unsigned), поэтому логичнее всего для controls "Pulse" и "Pause" установить тип U32.

Наконец, то, что вы меняете вручную при помощи controls, вводится в код на следующей итерации цикла, а временем между итерациями вы как раз и управляете через Pulse и Pause.

Re: Генератор дискретных сигналов

СообщениеДобавлено: Пн апр 08, 2013 6:24 pm
dist
Спасибо большое за ответ, как ни странно, но даже при значении 0 в qoutient & remainder.vi программа запускалась и работала.
Вы писали: "Наконец, то, что вы меняете вручную при помощи controls, вводится в код на следующей итерации цикла, а временем между итерациями вы как раз и управляете через Pulse и Pause." Т.е. как я понял, сделать например на одном модуле дискретного вывода несколько генераторов последовательности на разных каналах, имеющих разные периоды нельзя?

Re: Генератор дискретных сигналов

СообщениеДобавлено: Вт апр 09, 2013 12:27 pm
Meteor
Лучше каждый генератор выполнить отдельным подприбором.
Относительно смены управления, тоже не мешало бы выполнить отдельным ВПП и передавать значения через события.
Более подробно описано Тревиса в его "бестселлерах" по лабвью.