姓名:##### 班级:##### 学号:######
一、实验目的
1.掌握研华ADAM4117和ADAM4024数据采集模块的使用方法
2.使用Matlab 软件编制数据采集程序
二、实验设备
研华数据采集模块ADAM4117, ADAM4024,Matlab软件,计算机控制实验箱,计算机,信号线
三、实验内容
在计算机控制实验箱上搭建二阶电路,模拟双容水箱系统,使用研华ADAM模块完成输入输出数据的采集。
1.选择合适的电阻电容,参考如下电路结构图,在计算机控制实验箱上搭建二阶被控对象,使得其被控对象传递函数为
建议数值:R1=200kΩ,R2=200kΩ,C1=1μF,R4=300kΩ, R5=500kΩ,C2=1μF.
2.在Matlab软件下编程,完成基于研华ADAM4117的数据采集,读取放大器的输出信号。
3.在Matlab软件下编程,完成基于研华ADAM4024的数据通讯,实现控制信号的输出。
4.使用Matlab软件中的Timer控件实现数据的实时采集和显示
四、实验结果
1.
传递函数为,且有
则取 满足条件
2.基于研华ADAM4117的数据采集,读取放大器的输出信号,程序如下:
clear all
clc
s1 = serial('COM1', 'BaudRate', 9600,'Terminator','CR','Timeout',5)
fopen(s1);
input_command=['#011',char(13)];
fprintf(s1,input_command);
out=fscanf(s1)
out1=str2num(out(2:8))
fclose(s1);%封闭串口设备对象
delete(s1);%删除内存中的串口设备对象
3.基于研华ADAM4024的数据通讯,实现控制信号的输出,程序如下:
clear all
clc
s1 = serial('COM1', 'BaudRate', 9600,'Terminator','CR','Timeout',5)
fopen(s1)
input_command=['#02C0+03.200',char(13)];
fprintf(s1,input_command);
out=fscanf(s1)
fclose(s1);%封闭串口设备对象
delete(s1);%删除内存中的串口设备对象
4.Timer控件实现数据的实时采集和显示,程序如下:
(1)function myread(obj,event)
global s1 t Ts k tt y
k=k+1;
input_command=['#010',char(13)];
fprintf(s1,input_command);
out=fscanf(s1);
out1=str2num(out(2:8));
tt(k)=(k-1)*Ts;
y(k)=out1;
plot(tt,y)
if k>30
all_timer = timerfind;
stop(all_timer);
delete(all_timer);
fclose(s1);
delete(s1);
end
(2)clc
global s1 t Ts k tt y
Ts=0.5;
s1 = serial('COM1', 'BaudRate', 9600,'Terminator','CR','Timeout',5);
s1.InputBufferSize=1024;
s1.OutputBufferSize=1024;
fopen(s1);
input_command=['#02C0+00.000',char(13)];
fprintf(s1,input_command);
out=fscanf(s1)
k=0;
t = timer('TimerFcn',@myread, 'Period', Ts,'ExecutionMode','fixedRate');
start(t)
五、实验总结
通过本实验,我进一步了解了数据采集模块中A/D、D/A转换的原理,熟悉了4024与4017模块与PC机的硬件连接方式,能够使用测试软件ADAM- Utility测试模块的通讯性能,进一步掌握了Matlab软件平台下的串口通讯编程方法。下载本文