Аналоговый вывод. Генератор импульсов на базе NI PCI 6221.
Цифровой ввод-вывод.
Программирование контроллера NI PCI 6221
Работа с NI PCI 6221 похожа на работу со звуковой картой. Для успешной работы должна быть установлена программа от National Instruments “Measurement and Automation Explorer” версии, поддерживающей данный контроллер. Процедуры для плат М серии NI собраны в динамической библиотеке mwnidaqmx.dll, которая есть в версии MatLab 7.0.3 и старше. Не забудьте, что в языке MatLab различаются прописные и строчные буквы т.е. АО и ао – это два разных объекта! Запустите Measurement and Automation Explorer и убедитесь, что данная плата NI PCI 6221 присутствует в системе. Проверьте наличие установленных адаптеров (nidaq, parallel, winsound) командами: out = daqhwinfo; out.InstalledAdaptors
1. Создайте объект на основе NI PCI 6221 с именем, с которым данный адаптер существует в системе. Для цифрового ввод-вывода: dio = digitalio('nidaq', 'dev 1');
2. Добавим линии для вывода: lines=addline(dio, 0:2,0, 'Out',{'Line0';'Line1';'Line2'});
Здесь 0:2 – три линии для 0 порта, работающие на выход 'Out' с именами 'Line0' и.т.д.
|
|
3. Для ввода назначим 3 линии для порта 1: lines=addline(dio, 0:2,1, 'In', 'LineIn0'; 'LineIn1'; 'LineIn2'});
4. Подготовим вектор-строку данных data=[0,0,0]
5. Запустим объект на выполнение start(dio);
6. Передадим их в контроллер putvalue (dio,data);
7. Получим данные из этой линии v=getvalue(dio);
8. Остановить работу объекта stop(dio);
9. Уничтожить объект: delete(dio); clear dio
1. Создайте объект на основе NI PCI 6221 с именем, с которым данный адаптер существует в системе. Для аналогового выхода ao = analogoutput('nidaq','Dev1');
2. Создайте канал, например, с номером 0: ch0 = addchannel(ao, 0, 'Chan0');
3. Создайте вектор-столбец data=[x1;x2;x3;x4;x5];
4. Передайте данные в аналоговый выход putdata(ao,data);
5. Запустите объект на выполнение start(ao);
6. Сделаем паузу на прием данных pause(1) и остановим объект stop(ao);
7. Можно повторить пункты 3-6
8. Цикл в языке MatLab записывается как
for i=1:10
stop(ao); putdata(ao,data1); start(ao);
end
9. Уничтожить объект: delete(ao); clear ao
10. Аналогично пункта 3 подготовьте вектор-столбец с данными для генерации синусоидальных колебаний, пилообразных, треугольных, трапециидальных.
1. Создайте объект на основе NI PCI 6221 с именем, с которым данный адаптер существует в системе для аналогового входа ai = analoginput('nidaq','Dev1');
2. Добавьте массив каналов addchannel(ai, [1 2]);
3. Задайте необходимые свойства созданного объекта
ai.SamplesPerTrigger = 1000; ai.TriggerType = 'hwDigital';
4. Запустите объект на выполнение start(ai);
5. Считайте или передайте данные data = getdata(ai);
6. Для вольтметра - усредните полученные данные и выведите их пользователю.
7. Полученные данные можно вывести в виде графика plot(data); как в осциллографе.
8. Остановить работу объекта stop(ai)
9. После работы объект необходимо удалить delete(ai); clear ai
10. Необходимо иметь ввиду, что выбор предела измерения программно не управляется, поэтому не забудьте на данную линию подать соответствующий потенциал (например 0).