- •Лекции по курсу: Автоматизированные системы научных исследований.
- •Глава 2: Типы ацп.
- •Глава 3: цап весового типа.
- •Глава 4: Структуры систем автоматизации.
- •4.1. Системы с непосредственным подключением компьютера к экспериментальной установке.
- •4.2. Системы с подключением к компьютеру через промежуточное устройство (зу и/или уу).
- •4.3.Системы на базе стандартных приборных интерфейсов.
- •4.4. Системы со встроенными микроконтроллерами.
- •4.5. Распределенные системы, системы на основе сети.
- •Глава 5: Виды обеспечения асни.
- •Глава 6: Датчики.
- •6.1. Основные характеристики датчиков.
- •6.2. Основные схемы включения измерительных преобразователей.
- •6.3. Датчики линейных и угловых перемещений.
- •6.4. Резонансные измерительные цепи.
- •6.5. Датчики температуры.
- •6.6.Датчики сил и механических передвижений.
- •6.7. Датчики давления разряженных газов.
- •Глава 7: Структура эвм.
- •7.1. 5 Принципов:
- •7.2. Схема функционирования алу для двоичных чисел с фиксированной точкой.
- •7.3. Схема алу, работающих с одноадресными командами.
- •7.4. Регистр состояния процессора.
- •7.5. Цикл команд.
- •7.6. Классификация простейших процессоров по отношению к используемым регистрам.
- •7.7. Системный interface.
- •Системный интерфейс с общей шиной:
- •7.8. Обмен данными с внешними устройствами ввода/вывода.
- •7.9. Стандартно-универсальные приборные интерфейсы.
- •7.10. Система камак.
- •7.11. Временные диаграммы циклов магистрали крейта.
- •7.12. Программно – доступные регистры с интерфейсом общей шины.
- •Приложения. Лабораторная работа №1. Стандартные интерфейсы ibm компьютера Сentronics и rs232b.
- •Лабораторная работа №2. Цифровой и аналоговый ввод/вывод информации через адаптер нвл-08.
- •Технические характеристики устройства.
- •2. Программирование устройства nvl08.
- •2.1 Программирование цифрового ввода /вывода.
- •2.2 Программирование аналогового выхода (цап).
- •2.3 Программирование аналогового выхода (ацп).
- •3. Учебный стенд
- •4. Ход работы.
- •5. Приложения.
- •2002 Год доцент кфтт Ивашенков о.Н.
- •Лабораторная работа № 3
- •«Цифровой ввод-вывод через ni pci 6221 в среде LabView».
- •Цель работы:
- •Лабораторная работа №4.
- •Аналоговый ввод
- •Аналоговый вывод
- •Лабораторная работа №5. «Создание виртуальных приборов в среде MathLab». Цель работы.
- •Лабораторная работа №6. Клиент-серверные программы для протокола udp в среде LabView. Цель работы:
Лабораторная работа №5. «Создание виртуальных приборов в среде MathLab». Цель работы.
Научиться основным принципам работы в среде MathLab
Создание осциллографа и звукового генератора на основе звуковой картой
Цифровой ввод-вывод через контроллер NI PCI 6221
Аналоговый ввод-вывод через контроллер NI PCI 6221
Среда разработки MatLab.
MATLAB (MATrix LABoratory матричная лаборатория) – это мощный инструмент для высокопродуктивных исследований, разработок и анализа данных. Широко используется при математическом моделировании физических устройств и систем.
MATLAB - система, специально предназначенная для проведения сложных вычислений с векторами, матрицами и массивами. При этом она по умолчанию предполагает, что каждая заданная переменная - это вектор, матрица или массив. Все определяется конкретным значением переменной. Например, если задано Х=1, то это значит, что X - это вектор с единственным элементом, имеющим значение 1. Если надо задать вектор из трех элементов, то их значения следует перечислить в квадратных скобках, разделяя пробелами V=[l 2 3] . Задание матрицы требует указания нескольких строк. Для разграничения строк используется знак ; (точка с запятой). Этот же знак в конце ввода предотвращает вывод матрицы или вектора на экран дисплея. Для указания отдельного элемента вектора или матрицы используются выражения вида V(1) или M(i. j). Для стирания переменных из рабочей области памяти служит команда clear.
Для построения графика достаточно вначале задать вектор x=0:0.1:10, а затем использовать команду построения графиков plot(sin(x)). Вектор х задает интервал изменения независимой переменной от 0 до 10 с шагом 0.1. Команда grid on выводит сетку на график. MATLAB строит в отдельных окнах, называемых графическими окнами
MATLAB позволяет сохранять значения переменных в виде бинарных файлов с расширением .mat. Для этого служит команда save. save fname — записывается рабочая область всех переменных в файле бинарного формата с именем fname.mat; save fname X — записывает только значение переменной X; После этих параметров можно указать ключи, уточняющие формат записи файлов: -mat — двоичный МАТ-формат, используемый по умолчанию; -ascii — ASCII-формат единичной точности (8 цифр); -ascii -double (16 цифр);
Для написания программ надо воспользоваться редактором и отладчиком, которые позволяют (после отладки программы) получить документ в корректной форме без ошибок. Такой документ сохраняется в текстовом формате в виде файла с расширением .m. Язык программирования MATLAB является типичным интерпретатором. Можно использовать систему MATLAB и в режиме непосредственного счета - в командном режиме.
Со списком элементарных функций можно ознакомиться, выполнив команду help elfun, а со списком специальных функций — с помощью команды help specfun. Функции могут быть встроенными (внутренними) и внешними, или т-функциями.
Язык системы MATLAB реализует почти все известные средства, в том числе объектно-ориентированное и (средствами Simulink) визуальное программирование
В лабораторной работе будем работать со звуковой картой, которая, как известно, имеет АЦП и ЦАП и контроллером NI PCI 6221, которые в MatLab представляют собой объекты. Расширение Simulink обеспечивает визуальное программирование, как и известная среда LabView.
Работа со звуковой картой
В
Simulink
будем программировать визуально.
Для вызова библиотеки объектов Simulink нажмите кнопку.
В блоке «Signal Processing Blockset» в разделе «Platform Specific I/O» найдите микрофон и динамик.
Создайте новый документ.
Вытащите мышью микрофон в новый документ.
Сигнал с микрофона будем наблюдать на виртуальном осциллографе, который вы можете найти в блоке «Simulink» в разделе «Sinks». Переместите осциллограф в документ.
Соедините микрофон с осциллографом «проводником» с помощью мыши при нажатой левой кнопке.
Сохраните документ и запустите его на выполнение, нажав кнопку «Start simulation».
Для наблюдения осциллограммы щелкните мышью по осциллографу. Для изменения масштаба графика воспользуйтесь кнопкой «Autoscale» (Бинокль).
Для изменения параметров микрофона, как источника данных, щелкните по нему. Если вы щелкнули по объекту во время выполнения программы, окно параметров будет неактивным.
Создайте новый документ. Аналогично пункту 3, создайте динамик в этом документе.
Найдите генератор синусоидальных колебаний в разделе «Signal Processing Sources». Там же есть осциллограф и блок для вывода информации в Matlab – yout.. Все три элемента вытащите мышью в документ. Соедините «проводниками» источник и приемники. Ответвление проводников от основной линии делается при нажатии правой кнопки мыши.
Протестируйте программу. Подберите подходящие параметры объектов.
После завершения программы, полученные данные будут в переменной (массиве) yout. Содержание массива будет выведено в командном режиме после ввода имени переменной yout.
Анализировать полученные 100 точек лучше в виде графика. Чтобы построить график, необходимо полученные данные из 3-х мерного массива yout занести в новый одномерный массив xy командой: for i=1:100 xy(i)=yout(i); end; После этого можно вывести график: plot(xy); Эти команды выполняются в командном режиме MatLab.
Файлы программ скопируйте в свой каталог для дальнейшего предъявления преподавателю.
Дальнейшая работа со звуковой картой будет проходить непосредственно в Matlab. Аналоговые входы и выходы в данном случае будут представлять собой объекты.
Создайте новый документ, при этом будет вызван редактор.
Аналоговый вход
Создайте объект ai = analoginput('winsound');
Задайте число каналов (1 или 2) addchannel(ai,1);
Установите для свойства «частота дискретизации» величину кратную 11025 set(ai,'SampleRate',11025);и для свойства «Число получаемых слэплов (точек)» необходимую величину set(ai,'SamplesPerTrigger', 22050) – в данном случае при частоте 11025 кГц 22050 точек будет получено за 2 секунды.
Запустите объект start(ai);
Получите данные в переменную data = getdata(ai);
Постройте график plot(data);
Удалите объект delete(ai); clear ai
Точно также для аналогового выхода
ao = analogoutput('winsound');
Создайте 1 канал: addchannel(ao,1);
Установите частоту дискретизации: set(ao,'SampleRate',44100);
Перед запуском объекта необходимо подготовить данные в виде вектора-столбца со значениями, попадающими в диапазон данного устройства и разделенных точкой с запятой – data= [0.1;0.02;0.03;0.04]. Для формирования вектора можно использовать функцию - function y = linspace(d1, d2, n), где d1,d2 – начало и конец диапазона, n – число точек, которая создает линейный вектор. Применив функцию синуса к вектору, получим sin(linspace(0,1*pi*500,44100)');
Можно установить число битов (8 или 16) на сэмпл: ao.BitsPerSample=16;
Передадим данные в объект putdata(ao, data);
Запуск объекта: start(ao); Пауза в 1 секунду: pause(1);
Остановим и уничтожим объект: stop(ao); delete(ao); clear ao;
Сохраните программы в своем каталоге.
Измените частоту генерации синусоидального сигнала.
Сохраните полученные осциллограммы в файлы.
Основные характеристики платы NI PCI 6221
Данный контроллер, относящийся к М-серии, инсталлируется в PCI слот материнской платы. Он имеет входы и выходы для аналоговых сигналов, цифровые входы-выходы (3 порта по 8 линий), а также генератор и таймеры-счетчики, выведенные на те же линии цифрового ввода-вывода.
Аналоговый ввод
Число каналов |
8 дифференциальных или 16 одиночный |
Разрядность АЦП |
16 бит |
Скорость передачи данных: |
0 - 250 килосэмплов/с |
Разрешение по времени |
50 нс |
Пределы измерения: |
±10 В, ±5 В,±1 В, ±0.2 В |
Ширина полосы частот (-3 дБ) |
700 кГц |
Размер буфера FIFO |
4.095 сэмплов |
Аналоговый вывод
Число каналов |
2 |
Разрядность ЦАП |
16 бит |
Скорость передачи данных: |
740 килосэмплов/с |
Разрешение по времени |
50 нс |
Пределы измерения: |
±10 В |
Выходной ток |
±5 мА |
Размер буфера FIFO |
8.191 сэмплов |
Цифровой ввод/вывод
Число линий |
24 |
Число портов |
3 |
Разрядность портов |
8 бит |
Частота передачи данных |
0 – 1 МГц |
Размер буфера FIFO |
2.047 |
Высокий уровень входного сигнала |
2.2 - 5.25 В |
Низкий уровень входного сигнала |
0 - 0.8 В |
Выходной ток |
24 мА (0 порт), 16 мА (1,2 порт) |
Аналоговые и цифровые входы и выходы имеют раздельные собственные общие шины (земля). Есть линии, на которые выведено напряжение +5В. На линию 62 выведен сигнал выбора пределов измерений.
Программирование контроллера 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
Цифровой ввод-вывод.
Создайте объект на основе NI PCI 6221 с именем, с которым данный адаптер существует в системе. Для цифрового ввод-вывода: dio = digitalio('nidaq', 'dev 1');
Добавим линии для вывода: lines=addline(dio, 0:2,0, 'Out',{'Line0';'Line1';'Line2'});
Здесь 0:2 – три линии для 0 порта, работающие на выход 'Out' с именами 'Line0' и.т.д.
Для ввода назначим 3 линии для порта 1: lines=addline(dio, 0:2,1, 'In', 'LineIn0'; 'LineIn1'; 'LineIn2'});
Подготовим вектор-строку данных data=[0,0,0]
Запустим объект на выполнение start(dio);
Передадим их в контроллер putvalue (dio,data);
Получим данные из этой линии v=getvalue(dio);
Остановить работу объекта stop(dio);
Уничтожить объект: delete(dio); clear dio
Аналоговый вывод. Генератор импульсов на базе NI PCI 6221.
Создайте объект на основе NI PCI 6221 с именем, с которым данный адаптер существует в системе. Для аналогового выхода ao = analogoutput('nidaq','Dev1');
Создайте канал, например, с номером 0: ch0 = addchannel(ao, 0, 'Chan0');
Создайте вектор-столбец data=[x1;x2;x3;x4;x5];
Передайте данные в аналоговый выход putdata(ao,data);
Запустите объект на выполнение start(ao);
Сделаем паузу на прием данных pause(1) и остановим объект stop(ao);
Можно повторить пункты 3-6
Цикл в языке MatLab записывается как
for i=1:10
stop(ao); putdata(ao,data1); start(ao);
end
Уничтожить объект: delete(ao); clear ao
Аналогично пункта 3 подготовьте вектор-столбец с данными для генерации синусоидальных колебаний, пилообразных, треугольных, трапециидальных.
Аналоговый ввод. Цифровой вольтметр на базе NI PCI 6221.
Создайте объект на основе NI PCI 6221 с именем, с которым данный адаптер существует в системе для аналогового входа ai = analoginput('nidaq','Dev1');
Добавьте массив каналов addchannel(ai, [1 2]);
Задайте необходимые свойства созданного объекта
ai.SamplesPerTrigger = 1000; ai.TriggerType = 'hwDigital';
Запустите объект на выполнение start(ai);
Считайте или передайте данные data = getdata(ai);
Для вольтметра - усредните полученные данные и выведите их пользователю.
Полученные данные можно вывести в виде графика plot(data); как в осциллографе.
Остановить работу объекта stop(ai)
После работы объект необходимо удалить delete(ai); clear ai
Необходимо иметь ввиду, что выбор предела измерения программно не управляется, поэтому не забудьте на данную линию подать соответствующий потенциал (например 0).
Экспериментальная часть
Запустите MatLab 2006. Откройте демонстрационную программу с графическим интерфейсом для работы со звуковой картой. С помощью ее протестируйте работу звукового адаптера.
Напишите программу, генерирующие синусоидальные колебания разной частоты для звуковой карты.
Создайте в Simulink MatLab 7.1 программу методом графического программирования, включающую динамик, микрофон, генератор, осциллограф, вывод данных в MatLab, где визуализируйте полученные данные.
Для использования цифрового ввод и вывода информации для котроллера NI PCI 6221 напишите программу в MatLab 2006. Для контроля работы контроллера соедините управляемый программой выход с входом, предназначенным вами для ввода данных. Подавайте логические «1» и «0» и получайте эти сигналы в программу.
Напишите программу для котроллера NI PCI 6221 для генерации колебаний различной формы и частоты. Подсоедините к аналоговому выходу осциллограф и пронаблюдайте полученные колебания.
Напишите программу для котроллера NI PCI 6221 для ввода аналоговых сигналов. Подайте сигнал (менее 10 В!) на один входов колебания известной формы и частоты. Сравните поданный и полученный программой сигнал.
Дополнительные задания
Создайте программу, управляющую выводом через параллельный интерфейс компьютера. Команды out.InstalledAdaptors и out = daqhwinfo('ИмяАдаптера') позволят вам узнать имена и свойства установленных адаптеров. Работа с параллельным портом мало отличается от работы с цифровым выводом NI PCI 6221. Протестируйте программу на учебном стенде для лабораторной работы №1.
Дополните программу возможностью чтения данных через параллельный интерфейс компьютера. Присоедините принтер и определите его статус (состояние).
Лабораторный отчет
Введение в лабораторную работу, цель работы и что было достигнуто в ходе выполнения.
Описание работы вашей программы. Если вы выполнили любое из дополнительных заданий, подробно изложите порядок ваших действий.
Приведите по крайней мере три способа применения вашего программного продукта.
Контрольные вопросы
Сколько портов аналогового ввода у платы NI PCI 6221?
Сколько портов аналогового вывода у платы NI PCI 6221?
Какая разрядность АЦП и ЦАП?
Какая максимальная рабочая частота аналогового ввод/вывода?
Какой диапазон напряжений аналогового ввод/вывода у NI PCI 6221?
Что влияет но точность пребразования АЦ и ЦА?
Перечислите возможности Matlab.
Какие объекты связаны со звуковой картой? Параллельным интефейсом?
Какие объекты связаны с NI PCI 6221?
Какие свойства есть у этих обектов?
Чем отличается программирование в «Simulink»?
Как можно изменить свойства объектов в «Simulink»?
Какие команды существую для получения данных из приборов с цифровым входом и анаолговым входом?
Как подготовить массив данных для передачи на аналоговый выход?
Как полученную информацию представить в графическом виде?
Доцент КФТТ Ивашенков О.Н. 2007 г.
