计算机控制实验课(邵长友).ppt
《计算机控制实验课(邵长友).ppt》由会员分享,可在线阅读,更多相关《计算机控制实验课(邵长友).ppt(78页珍藏版)》请在三一办公上搜索。
1、计算机控制技术实验,邵长友,实验一、串口通信实验,一、实验目的:1.认识串口在控制中的应用2.学会用C语言给串口编程二、实验器材:PC机、串口线三、实验内容:用C语言编程实现两个PC机之间的串行通信,实验一、串口通信实验,一、认识串口,在PC机上,有各种各样的接头,其中有两个9针的接头区,见这就是串行通信端口。PC机上的串行接口有多个名称:232口、串口、通信口、COM口、异步口等。,实验一、串口通信实验,相关知识一、认识串口,实验一、串口通信实验,一、认识串口,1查看设备信息进入Windows“我的电脑”系统属性,在“设备管理器”列表中有端口COM和LPT设备信息,如图所示。,实验一、串口通
2、信实验,一、认识串口,RS-232-C标准:信号电平标准:逻辑“1”:-15V-5V 逻辑“0”:+5V+15V,实验一、串口通信实验,RS-232-C控制信号的定义,实验一、串口通信实验,一、认识串口二、实验(1)用串口调试助手实现两个PC之间的通信(2)用C语言编程实现两个PC之间的通信三、编写程序实现PC和单片机之间的串行通信(单片机程序),实验一、串口通信实验,编程知识,编程知识,COM1与COM2的I/O端口地址,线路状态寄存器(读/写),D0:接收数据就绪。D1:超越错。D2:奇偶校验错。D3:帧格式错。D4:间断错。D5:发送保持寄存器空。D6:发送移位寄存器空。D7:恒为0。,
3、接收数据寄存器收到了一个完整的字符,CPU可以读这个数据。,接口可以接收下一个要发送的字符,CPU可以写数据。,编程知识,地址:3FDH,线路状态寄存器(读/写),D0:接收数据就绪。D1:超越错。D2:奇偶校验错。D3:帧格式错。D4:间断错。D5:发送保持寄存器空。D6:发送移位寄存器空。D7:恒为0。,接收数据寄存器收到了一个完整的字符,CPU可以读这个数据。,可以接收下一个要发送的字符,CPU可以写数据。,编程知识,地址:3FDH,Turbo C的串口通信函数,int bioscom(int cmd,char byte,int port);,cmd=0:设置通讯参数 byte 的值 1
4、:把字符按字节送到通讯线上 2:从通讯线上接收一个字符 3:返回通讯端口的状态,port=0:COM1;port=1:COM2,初始化串口,byte值是下列各位的组合,0 x027个数据位0 x038个数据位,0 x00 110波特率0 x20 150波特率0 x40 300波特率0 x60 600波特率0 x801200波特率0 xa02400波特率0 xc04800波特率0 xe09600波特率,0 x001个停止位0 x042个停止位,0 x00无校验0 x08奇校验0 x18偶校验,若要求:8位数据位,1个停止位,奇校验,9600波特。byte=0 x03|0 x00|0 x08|0
5、xe0 D7 D6 D5 D4 D3 D2 D1 D0,#include#include main()int i;bioscom(0,0 x83,0);do i=inportb(0X3fd);if(i,初始化串口1 1200波特,无校验,1位停止位,8个数据位,读线路状态寄存器,判断是否有错(D1:超越错D2:奇偶校验错D3:帧格式错D4:间断错),判断接收数据是否就绪,读接收数据寄存器,显示字符。,判断发送保持寄存器是否空,如果有键按下,写发送保持寄存器输出字符。,实验二、8254定时器实验,一、实验目的:1)掌握8254定时器/计数器的工作原理与编程2)熟悉8259中断控制器的工作原理和使
6、用方法3)掌握硬件中断程序设计的原理与编程方法4)为数据采集程序打下控制采样的基础二、实验内容(1)用TPC-UP微机原理实验箱上的定时器芯片编程完成脉冲计数(2)编写程序使PC机主板上的芯片完成定时器(已经集成到一个大的芯片组中)中断实验,微机原理实验箱上的片选地址280h,280h,方式控制字,方式0:计数初值一个八位数()二进制,控制字10h,实验箱上的电路,参考程序,/*/*可编程定时器计数器(一)*/*/*8253CS-280H-287HGATE0-+5VCLK0-单脉冲OUT0-逻辑笔*/#include#include#include.ApiEx.h#pragma comment
7、(lib,.ApiEx.lib),void main()BYTEdata;if(!Startup()/*打开设备*/printf(ERROR:Open Device Error!n);return;PortWriteByte(0 x283,0 x10);/*设8253计数器0工作方式0,只写低字节*/PortWriteByte(0 x280,0 x0f);/*写入计数初值16*/while(!kbhit()/*有键按下则退出*/PortReadByte(0 x280,/*关闭设备*/,#include#include voidinterrupt myint8(void);voidmain(vo
8、id)disable();outportb(0 x43,0 x36);/0 x43是定时器控制寄存器地址outportb(0 x40,0 x9d);/0 x40是定时器0通道地址outportb(0 x40,0 x2e);/0 x9d,0 x2e分别是计数值低八位和高八位setvect(0 x08,myint8);/设置中断向量enable();while(1);,利用PC机上的定时器通道0工作在方式3,计数时间到产生中断,voidinterrupt myint8(void)putchar(8);outportb(0 x20,0 x20);/第一个0 x20主8259的OCW2的 地址,/第二
9、个0 x20是中断结束命令,#include void interrupt myint8(void);int count=1;void main(void)disable();outportb(0 x43,0 x30);outportb(0 x40,0 x0);outportb(0 x40,0 x0);setvect(0 x08,myint8);enable();while(1);,void interrupt myint8(void)char s=中国海洋大学青岛学院机电工程系;FILE*fp;fp=fopen(E:test.txt,w);fwrite(s,2,15,fp);fclose(f
10、p);outportb(0 x20,0 x20);,通道0,方式0,定时时间到调用中断服务程序,实验三、中断方式实现串口通信,通过“设备管理器查看键盘和COM1的中断源,8259主片中断源:,键盘,COM1,#include#include main()int i;disable();bioscom(0,0 x83,0);do i=inportb(0X3fd);if(i,初始化串口1:1200波特,无校验,1位停止位,8个数据位,实验四、pid 程序演示实验,一、实验目的:理解数字PID控制器的设计方法二、实验内容(1)运行C语言PID演示程序,分析设定值、被控量、偏差,控制量的变化(2)编写
11、PID MATLAB仿真程序,分析运行结果,C语言PID演示程序#include#includetypedef struct PID double Command;/输入指令 double Proportion;/比例系数 double Integral;/积分系数 double Derivative;/微分系数 double preErr;/前一拍误差 double sumErr;/误差累积PID;,void motorInit(motor*m)memset(m,0,sizeof(motor);,double PIDCale(PID*p,double feedback)double dErr
12、,Err;Err=p-Command-feedback;/当前误差 p-sumErr+=Err;/误差累加 dErr=Err-p-preErr;/误差微分 p-preErr=Err;return(p-Proportion*Err/比例项+p-Derivative*dErr/微分项+p-Integral*p-sumErr);/积分项,typedef struct motor double lastY;double preY;double lastU;double preU;motor;void motorInit(motor*m)memset(m,0,sizeof(motor);,double
13、motorCal(motor*m,double u)double y=1.9753*m-lastY-0.9753*m-preY+0.00003284*u+0.00006568*m-lastU+0.00003284*m-preU;/二阶系统 m-preY=m-lastY;m-lastY=y;m-preU=m-lastU;m-lastU=u;return y;,y(k)=y(k-1)-0.9753*y(k-2)+0.00003284*u(k)+0.00006568*u(k-1)+0.00003248*u(k-2),void main()FILE*fp=fopen(data.txt,w+);PID
14、sPID;motor m_motor;int k=0;double u;double y=0;PIDInit(,while(k=1000)fprintf(fp,%d 设定值=%f 被控量=%f 偏差=%f 控制量=%fn,k,sPID.Command,y,sPID.Command-y,u);u=PIDCale(,clear all;close all;ts=0.001;sys=tf(50,0.125,7,0);dsys=c2d(sys,ts,z);num,den=tfdata(dsys,v);u_1=0.0;u_2=0.0;y_1=0.0;y_2=0.0;x=0,0,0;error_1=0;e
15、rror_2=0;for k=1:1:1000time(k)=k*ts;,S=2;if S=1 kp=10;ki=0.1;kd=15;%Step Signal rin(k)=1;elseif S=2 kp=10;ki=0.1;kd=15;%Sine Signal rin(k)=0.5*sin(2*pi*k*ts);end,du(k)=kp*x(1)+kd*x(2)+ki*x(3);%PID Controlleru(k)=u_1+du(k);%Restricting the output of controllerif u(k)=5 u(k)=5;endif u(k)=-5 u(k)=-5;en
16、d%Linear modelyout(k)=-den(2)*y_1-den(3)*y_2+num(2)*u_1+num(3)*u_2;error(k)=rin(k)-yout(k);%Return of parametersu_2=u_1;u_1=u(k);y_2=y_1;y_1=yout(k);,x(1)=error(k)-error_1;%Calculating Px(2)=error(k)-2*error_1+error_2;%Calculating Dx(3)=error(k);%Calculating I error_2=error_1;error_1=error(k);endfig
17、ure(1);plot(time,rin,b,time,yout,r);xlabel(time(s),ylabel(rin,yout);figure(2);plot(time,error,r)xlabel(time(s);ylabel(error);,实验五、RS485总线实验,实验目的:1、理解RS485的通信原理 2、学会RS485的C语言编程实验内容:1、利用RS232-RS485无源转换器给PC机组网 2、利用C语言编写RS485的通信程序,1.RS-485的电气特性:逻辑“1”以两线间的电压差为+(2-6)V表示;逻辑“0”以两线间的电压差为-(2-6)V表示。接口信号电平比RS-2
18、32-C降低了,就不易损坏接口电路的芯片,且该电平与TTL电平兼容,可方便与TTL电路连接。2.RS-485的数据最高传输速率为10Mbps。3.RS-485接口是采用平衡驱动器和差分接收器的组合,抗共模干能力增强,即抗噪声干扰性好。4.RS-485接口的最大传输距离标准值为4000英尺,实际上可达3000米,另外RS-232-C接口在总线上只允许连接1个收发器,即单站能力。而RS-485接口在总线上是允许连接多达128个收发器。即具有多站能力,这样用户可以利用单一的,RS485网络,RS485网络,连线时“手拉手”,实验程序,/*-通信协议-发送的命令:#xxRn$#-命令前导符xx-两位A
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机控制 实验 邵长友
链接地址:https://www.31ppt.com/p-6606421.html