计算机控制实验报告

中国石油大学计算机控制实验报告    实验日期:2011.11.30

                                           成    绩:         

班级:自动化08-4           姓名:陈方光             学号:08071402

                                                                                         

实验一   基于NI6008的数据采集

1.  实验目的:

理解基本计算机控制系统的组成,学会使用MATLAB和NI6008进行数据采集。

2.  实验设备:

计算机控制实验箱、NI6008数据通讯卡、Matlab软件、计算机

3. 实验内容:

(1)使用计算机控制实验箱搭建二阶被控对象,并测试对象特性

(2)在Matlab中设计数字PID控制器,对上述对象进行控制

4. 实验步骤:

(1)  选择合适的电阻电容,参考如下电路结构图,在计算机控制实验箱上搭建二阶被控对象,使得其被控对象传递函数为

建议数值:R1=200kΩ,R2=200kΩ,C1=1μF,R4=300kΩ, R5=500kΩ,C2=1μF.

(2)  测试NI6008数据通讯卡,确保数据输入输出通道正常。

(3)  使用MATLAB和OPC通讯技术进行数据采集:

(4)  编写程序,实现数据的定时采集和显示。

5.实验结果

1)   测试NI6008数据通讯卡

首先将NI6008数据采集卡的AI负端与GND端短接,然后通过usb数据线连接计算机,打开opc端口调试工具,添加NI数据采集卡,添加自己所需的输入、输出端口,通过向输入端强制写入1,观察AO端口显示数据,能较精确的跟踪输入数据,该数据采集完好。

2)   使用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:数据采集表

Matlab绘图如下:

图表 1 开环数据读取显示曲线

6.实验总结:

通过本次实验我理解基本计算机控制系统的组成,学会使用MATLAB和NI6008进行数据采集,以及实验电路的搭建,如何设计PID算式使二阶对象完成相应的功能,并且测试了对象的特性。复习了以前学习的东西,能做到活学活用,搭建实际模型来完成模拟实验。


中国石油大学计算机控制实验报告    实验日期:2011.11.30

                                           成    绩:         

班级:自动化08-4           姓名:陈方光             学号:08071402

                                                                                               

实验二 数字PID算法的实现

1.  实验目的:

熟悉PID控制器,实现PID算法,深入了解PID参数对系统控制效果的影响

2.  实验设备:计算机控制实验箱、NI6008数据通讯卡、Matlab软件、计算机

3.  实验内容:

(1)  在实验一基础上编制PID数字控制器, 实现闭环控制。

 

(2)  进行PID参数的整定分析:

a)   取消积分和微分作用,分析比例系数数对系统控制性能的影响

b)   保持比例系数不变,分析积分作用对系统控制性能的影响

c)   保持比例系数和积分时间不变,分析微分作用对控制系统性能的影响

d)   运用所学的PID参数整定方法,确定一组控制性能良好的PID参数

4.  实验要求

(1)  实验过程中要记录实验曲线,标注控制系统输出的性能指标

(2)  总结PID参数对控制系统性能的影响

(3)  分析理论结果与实验结果的差异,如有误差分析原因。

5.  实验结果

a)   纯比例控制

分析:

对比分析上图可知:Kp越大,比例作用越强,比例动作越快,上升时间和延迟时间越短,调节时间峰值时间也相应减少,且稳态误差减小,但超调量增大,系统易发生振荡,甚至发散。

由于是纯比例作用,故系统稳定后存在余差,被控变量不可能回到原来的值上(在本系统中不可能稳定到1),且由于仿真电路干扰的存在,响应曲线存在较大的毛刺。

b)   比例不变,变积分控制

分析:

从表中可知,在Kp相同,Ti不同的情况下, Ti越大,积分作用越强,系统的上升时间,延迟时间,调节时间和峰值时间均越大,系统的响应越慢,动态性能越差,但是系统的超调量却越小,甚至小到不存在,系统地稳定性能提高。

加入积分环节后,对比表中数据可知,积分环节可以使系统的上升时间,调节时间,延迟时间,峰值时间变长,系统的动态性能变差,而超调量减小,稳态性能得到提高。

c)   比例、积分不变,变微分控制

分析:

从表中数据可知,第一,由于微分作用的存在,响应曲线的起始阶段呈现尖锐的波峰,之后曲线也呈衰减振荡;第二,保持Kp、Ti不变,增大Td,系统的上升时间上升,微分控制不直接影响稳态误差,但它增加了系统的阻尼,因为容许采用比较大的增益K值,这将有助于系统稳态精度的改善。

PID具有PD和PI双重作用,能够较全面地提高系统的控制性能,是一种应用比较广泛的控制器。PID控制器除了提高系统型别之外,还提供了两个负实零点,从而较PI控制器在提高系统的动态性能方面有更大的优越性。因此,在工业控制设计中,PID控制器得到了非常广泛的应用。一般来说,PID控制器参数中,I部分应发生在系统频率特性的低频段,以提高系统的稳态性能;D部分发生在系统频率特性的中频段,以改善系统的动态性能。

6.  实验总结

通过这次实验,我熟悉了PID控制器,实现了PID算法,深入了解了PID参数对系统控制效果的影响,宏观的了解了参数影响的效果,可以对于实际出现的各种图形进行分析,确定是那一个或者哪几个参数问题,便于实际应用,进一步熟悉了MATLAB软件的使用。

 

第二篇:计算机控制第二次实验报告

实验报告

课程名称:______计算机控制技术__________指导老师:    厉小润   成绩:__________________

实验名称:_____ 步进电机转速控制系统_________实验类型:________同组学生姓名:__________

一、实验目的和要求(必填)                                       二、实验内容和原理(必填)

三、主要仪器设备(必填)                                          四、操作方法和实验步骤

五、实验数据记录和处理                                              六、实验结果与分析(必填)

七、讨论、心得

一、实验目的

1.掌握步进电机调速控制的工作原理;

2.理解步进电机的转速控制方式和调速方法;

3.掌握用VBScript或JScript脚本语言进行开关量的编程。

4.掌握AD采样的工作原理。

5.掌握DIO,双四拍、四项八拍电机的使用方法

二、实验设备

1.THBDC-2型 控制理论·计算机控制技术实验平台

2.THBXD数据采集卡一块(含37芯通信线、16芯排线和USB电缆线各1根)

3.PC机1台(含软件“THBDC-2”)

三、实验原理

1.步进电机工作原理简介:

步进电机是一种能将电脉冲信号转换成机械角位移或线位移的开环控制元件,它实际上是一种单相或多相同步电机。在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响。即给电机加一个脉冲信号,电机则转过一个步距角。这一线性关系的存在,加上步进电机只有周期性的误差而无累计误差等特点。使得在速度、位置等控制领域用步进电机来控制变得非常简单。电脉冲信号通过环形脉冲分配器,励磁绕组按照顺序轮流接通直流电源。由于励磁绕组在空间中按一定的规律排列,轮流和直流电源接通后,就会在空间形成一种阶跃变化的旋转磁场,使转子转过一定角度(称为步距角)。在正常运行情况下,电机转过的总角度与输入的脉冲数成正比;电机的转速与输入脉冲频率保持严格的对应关系, 步进电机的旋转同时与相数、分配数、转子齿轮数有关;电机的运动方向由脉冲相序控制。

因为步进电机不需要A/D转换,能够直接将数字脉冲信号转化成为角位移,它被认为是理想的数控执行元件。故广泛应用于数控机床、打印绘图仪等数控设备中。

不过步进电机在控制的精度、速度变化范围、低速性能方面都不如传统的闭环控制的直流伺服电动机。在精度不是需要特别高的场合,可以使用步进电机,以发挥其结构及驱动电路简单、可靠性高和成本低的特点。伴随着不同数字化技术的发展以及步进电机本身技术的提高,步进电机将会在更多的领域得到应用。

现在比较常用的步进电机有反应式步进电机、永磁式步进电机、混合式步进电机和单相式步进电机等。其中反应式步进电机的转子磁路是由软磁材料制成,定子上有多相励磁绕组,利用磁导的变化产生转矩。现阶段反应式步进电机应用最广泛。

本实验系统的步进电机为四相步进电机,采用单极性直流电源供电。只要对步进电机的各相绕组按合适的时序通电,就能使步进电机步进转动。图3.1是该四相反应式步进电机工作原理示意图。

图3.1 四相步进电机步进示意图

开始时,开关SB接通电源,SA、SC、SD断开,B相磁极和转子0、3号齿对齐,同时,转子的1、4号齿就和C、D相 绕组磁极产生错齿,2、5号齿就和D、A相绕组磁极产生错齿。当开关SC接通电源,SB、SA、SD断开时,由于C相绕组的磁力线和1、4号齿之间磁力线的作用,使转子转动,1、4号齿和C相绕组的磁极对齐。而0、3号齿和A、B相绕组产生错齿,2、5号齿就和A、D相绕组磁极产生错齿。依次类推,A、B、C、D四相绕组轮流供电,则转子会沿着A、B、C、D方向转动。

四相步进电机按照通电顺序的不同,可分为单四拍、双四拍、八拍三种工作方式。单四拍与双四拍的步距角相等,但单四拍的转动力矩小。八拍工作方式的步距角是单四拍与双四拍的一半,因此,八拍工作方式既可以保持较高的转动力矩又可以提高控制精度。

单四拍、双四拍与八拍工作方式的电源通电时序与波形分别如图3.2.a、b、c所示:

a. 单四拍       b. 双四拍         c八拍

图3.2步进电机工作时序波形图

2.步进电机驱动电路原理

步进电机和普通电机的区别主要就在于其脉冲驱动的形式,必须使用专用的步进电机驱动控制器。正是这个特点,步进电机可以和现代的数字控制技术相结合。

图3.3  步进电机系统的驱动框图

如图3.3 所示,它一般有脉冲发生单元、脉冲分配单元、功率驱动单元保护和反馈单元组成。除功率驱动单元以外,其他部分越来越趋向于用软件来实现。

ULN2003是大电流驱动阵列,多用于单片机、智能仪表、PLC、数字量输出卡等控制电路中。可直接驱动继电器等负载。

  本实验台用ULN2003功率驱动,输入5VTTL电平,输出可达500mA/50V。

  ULN2003是高耐压、大电流达林顿陈列,由七个硅NPN达林顿管组成。 该电路的特点如下: ULN2003的每一对达林顿都串联一个2.7K的基极电阻,在5V的工作电压下它能与TTL和CMOS电路 直接相连,可以直接处理原先需要标准逻辑缓冲器。

  ULN2003 是高压大电流达林顿晶体管阵列系列产品,具有电流增益高、工作电压高、温度范围宽、带负载能力强等特点,适应于各类要求高速大功率驱动的系统。

3.软件控制方法(并行控制)

并行控制是指用硬件或软件方法实现脉冲分配器的功能,它输出的多相脉冲信号,经功率放大后驱动电机的各相绕组,其框图如图3.4所示。

图3.4  步进电机软件控制框图

该实验系统中的脉冲分配器由软件实现的,由数据采集卡中的DO1~DO4作为并行驱动驱动,驱动四相反应式步进电机。

要求输出电平在各步中的情况如下:

四、实验步骤

1.实验接线

1.1将数据采集卡单元中的DO1~DO4分别接到步进电机单元的A、B、C和D输出端;

1.2打开实验平台的电源总开关。

2.脚本程序运行

2.1启动计算机,在桌面双击图标“THBDC-2”,运行实验软件。

2.2 顺序点击虚拟示波器界面上的“”按钮和工具栏上的“”按钮(脚本编程器);

2.3在脚本编辑器窗口的文件菜单下点击“打开”按钮,并在“计算机控制技术应用算法”文件夹下选中“步进控制”脚本程序并打开,阅读、理解该程序,然后点击脚本编辑器窗口的调试菜单下“步长设置”,将脚本算法的运行步长设为100ms;

2.4点击脚本编辑器窗口的调试菜单下“启动”;观察步进电机的运行情况;

2.5点击“脚本编辑器”窗口上“停止”按钮,更改算法的运行步长,并再次运行算法程序,观察步进电机的运行;

2.6 实验结束后,关闭脚本编辑器窗口,退出实验软件。

五、实验源程序(四相八拍、双四拍为例)

 双四拍:

function Initialize(arg)

{    

SetDO(0 ,1) ;

SetDO(0 ,2) ;

SetDO(0,3);

SetDO(0 ,4);

n=0;

}

function TakeOneStep (arg)  

{

n=n+1;

if (n=1)

{

SetDO(1 ,1) ;

SetDO(1 ,2) ;

SetDO(0 ,3);

SetDO(0 ,4);

}

if (n=2)

{

SetDO (0 ,1) ;

SetDO (1 ,2 );

SetDO (1 ,3);

SetDO (0 ,4);

}

if (n=3 )

{

SetDO(0 ,1);

SetDO(0 ,2) ;

SetDO(1 ,3);

SetDO(1 ,4);

}

if (n=4)

{

SetDO(1 ,1);

SetDO(0 ,2);

SetDO(0,3);

SetDO(1 ,4);

n=0;

}

}

function Finalize (arg) 

{  

SetDO(0 ,1) ;

SetDO(0 ,2) ;

SetDO(0,3);

SetDO(0 ,4);

}

四相八拍(减速)

function Initialize(arg)

{    

SetDO(0 ,1) ;

SetDO(0 ,2) ;

SetDO(0,3);

SetDO(0 ,4);

n=0;

}

function TakeOneStep (arg)  

{

n=n+1;

if (n==1)

{

SetDO(0 ,1) ;

SetDO(0 ,2) ;

SetDO(0 ,3);

SetDO(1 ,4);

for(i=0;i<100000;i++);

}

if (n==2)

{

SetDO (0 ,1) ;

SetDO (0 ,2 );

SetDO (1 ,3);

SetDO (1 ,4);

for(i=0;i<100000;i++);

}

if (n==3 )

{

SetDO(0 ,1);

SetDO(0 ,2) ;

SetDO(1 ,3);

SetDO(0 ,4);

for(i=0;i<100000;i++);

}

if (n==4)

{

SetDO(0 ,1);

SetDO(1 ,2);

SetDO(1,3);

SetDO(0 ,4);

for(i=0;i<100000;i++);

}

if (n==5)

{

SetDO(0 ,1) ;

SetDO(1 ,2) ;

SetDO(0 ,3);

SetDO(0 ,4);

for(i=0;i<100000;i++);

}

if (n==6)

{

SetDO (1,1) ;

SetDO (1 ,2 );

SetDO (0,3);

SetDO (0 ,4);

for(i=0;i<100000;i++);

}

if (n==7)

{

SetDO(1 ,1);

SetDO(0 ,2) ;

SetDO(0 ,3);

SetDO(0,4);

for(i=0;i<100000;i++);

}

if (n==8)

{

SetDO(1 ,1);

SetDO(0 ,2);

SetDO(0,3);

SetDO(1 ,4);

for(i=0;i<100000;i++);

n=0;

}

}

function Finalize (arg) 

{  

SetDO(0 ,1) ;

SetDO(0 ,2) ;

SetDO(0, 3);

SetDO(0 ,4);

}

步进电机走步控制流程图:

实验波形:

1.      单四拍

2.      双四拍

3.      八拍

总结:步进电机实验相对比较简单,程序只需改动一点,对于延时,只需要加入for循环即可,对于编程语言要进一步加强语法学习。

相关推荐