计算机控制实验报告计算机控制实验报告
中国石油大学计算机控制实验报告 实验日期:2011.11.30
成 绩:
班级:自动化08-4 姓名:陈方光 学号
实验一 基于NI6008的数据采集
实验目的:
理解基本计算机控制系统的组成,学会使用MATLAB和NI6008进行数据采集。
实验设备:
计算机控制实验箱、NI6008数据通讯卡、Matlab软件、计算机
3.实验内容:
(1)使用计算机控制实验箱搭建二阶被控对象,并测试对象特性
(2)在Matlab中设计数字PID控制器,对上述对象进行控制
4. 实验步骤:
选择合适的电阻电容,参考如下电路结构图,在计算机控制实验箱上搭建二阶被控对象,使得其被控对象传递函数为
建议数值:R1=200kΩ,R2=200kΩ,C1=1μF,R4=300kΩ, R5=500kΩ,C2=1μF.
测试NI6008数据通讯卡,确保数据输入输出通道正常。
使用MATLAB和OPC通讯技术进行数据采集:
编写程序,实现数据的定时采集和显示。
5.实验结果
测试NI6008数据通讯卡
首先将NI6008数据采集卡的AI负端与GND端短接,然后通过usb数据线连接计算机,打开opc端口调试工具,添加NI数据采集卡,添加自己所需的输入、输出端口,通过向输入端强制写入1,观察AO端口显示数据,能较精确的跟踪输入数据,该数据采集完好。
使用matlab和opc进行数据采集及其显示
在Matlab中读写数据:
da = opcda(‘localhost’, ‘NI USB-6008.Server’); % 定义服务器
connect(da); %连接服务器
grp = addgroup(da); %添加OPC 组
itmRead = additem(grp,‘Dev1/AI0’); %在组中添加数据项
itmWrite = additem(grp,'Dev1/AO0'); %在组中添加数据项
r=read(itmRead);
y(1)=r.Value; %读取数据项的值
Write(itmWrite,1); %向数据项中写值
disconnect(da); %断开服务器
关于定时器的问题
t = timer(‘TimerFcn’,@myread, ‘Period’, 0.2,‘ExecutionMode’,‘fixedRate’);%定义定时器
start(t) %打开定时器
out = timerfind; %寻找定时器
stop(out); %停止定时器
delete(out);%删除定时器
将读取的数据存储并动态显示于图中:
function myread(obj,event)
global tt k y da grp itmRead Ts itmWrite
r=read(itmRead);
k=k+1;
tt(k)=(k-1)*Ts;
y(k)=r.Value;
hold on
plot(tt,y)
if k>70/Ts
Write(itmWrite,0);
num=[1.484];
den=[46.4067,15.994,1];
[y,t]=step(tf(num,den),1:0.2:70);
plot(t,y)
out = timerfind;
stop(out);
delete(out);
disconnect(da);
end
表1:数据采集表
时间采集数据时间采集数据时间采集数据时间采集数据时间采集数据0.00 0.00 4.00 1.67 8.00 1.67 12.00 1.68 16.00 1.67 0.20 0.02 4.20 1.67 8.20 1.66 12.20 1.66 16.20 1.66 0.40 0.74 4.40 1.67 8.40 1.68 12.40 1.66 16.40 1.67 0.60 1.30 4.60 1.67 8.60 1