钟胜财07电化1班21号工业控制计算机原理及应用课程实验报告.docx
- 文档编号:10998200
- 上传时间:2023-02-24
- 格式:DOCX
- 页数:18
- 大小:172.09KB
钟胜财07电化1班21号工业控制计算机原理及应用课程实验报告.docx
《钟胜财07电化1班21号工业控制计算机原理及应用课程实验报告.docx》由会员分享,可在线阅读,更多相关《钟胜财07电化1班21号工业控制计算机原理及应用课程实验报告.docx(18页珍藏版)》请在冰豆网上搜索。
钟胜财07电化1班21号工业控制计算机原理及应用课程实验报告
《工业控制计算机原理及应用》课程实验
报告
试验一:
模拟量输入/输出程序设计
【实验目的】
1.掌握模拟量数据采集过程和模拟量数据处理的原理
2.设计模拟量采集的原理电路图。
3.了解模拟量数据处理的原理。
【实验设备】
1.PC总线工业控制计算机。
2.计算机网络
3.模拟量采集板。
【实验原理】
模拟量输入通道设计:
器件:
12位AD574A,采样保持器LF398,多路开关CD4051,并行接口芯片8255A。
技术指标:
8通道模拟量输入;12位A/D转换(转换时间25us),量程0~10V;查询应答方式。
电路逻辑:
CD4051通道多路选择->PC0-PC2,通道禁止->PC3
ADC574的STS高电平正在转换,低电平转换结束;LF398采样保持控制引脚8:
高电平采样,低电平保持;LF398采样和保持->ADC547的STS+反相器
AD574A的R/C,CS,CE->PC4-PC6
转换状态检测STS->PA7
数据输入:
高4位->PA0-PA3,低8位->B口
8通道模拟量输入电路原理图:
图1-1
【实验内容】
1.设计用12位A/D转换器AD574通过8255A与PC总线工业控制机接口,实现8路模拟量采集。
。
2.设计并画出接口电路原理图。
3.参考如下程序用MATLAB或C、C++设计出A/D转换程序。
8通道模拟量数据采集程序流程图。
图1-2
1.程序:
AD574APROCNEAR
CLD
LEADI,BUF;将缓冲区地址送入寄存器DI
MOVBL,00000000B;令CE,CS,R/C,INH=0,初始化
MOVCX,8
ADC:
MOVDX,2C2H;C口地址
MOVAL,BL
OUTDX,AL;选择多路开关,STS=0,LF398采样
NOP
NOP
ORAL,01000000B;令CE=1,启动转换A/D
OUTDX,AL;
ANDAL,10111111B;令CE=0,形成启动脉冲
OUTDX,AL
MOVDX,2C0H;A口地址
PULLING:
INAL,DX;测试STS,看转换是否结束
TESTAL,80H
JNZPULLING;转换期间STS=1,LF3980保持
MOVAL,BL
ORAL,00010000B;转换结束,令R/C=1,准备读
MOVDX,2C2H;
OUTDX,AL
ORAL,01000000B;令CE,R/C=1,开始读
MOVDX,2C0H;读A口高4位
INAL,DX
ANDAL,0FH
MOVAH,AL;高4位存在AH
INCDX;读B口低8位
INAL,DX;低8位存在AL
STOSW;数据存储入BUF缓冲区
INCBL;更换通道
LOOPADC
MOVAL,00111000B;CE=0,CS,R/C,INH=1,芯片复位
MOVDX,2C2H
OUTDX,AL
RET
AD574AENDP
附【程序分析】:
AX、BX、CX、DX分别为累加、基址、计数、数据寄存器。
AH、BH、CH、DH分别为上述寄存器的高四位。
AL、BL、CL、DL分别为上述寄存器的低八位。
LEADI,BUF将缓冲区的地址送入寄存器DI,
MOVBL,00000000B;令CE,CS,R/C,INH=0,将00000000B存入BL中,所以BX寄存器的低八位就是00000000.
MOVCX,8因为有8路模拟通道,将8存入CX计数寄存器中,就是说要循环8次。
MOVDX,2C2H;选通C口地址存入DX数据计数器
MOVAL,BL将BL中的00000000送给AL,即AL为00000000
OUTDX,AL;将AL的00000000给DX输出,即C口为00000000,因为PC2、PC1、PC0与多路开关CD4051的C、B、A端相连,即选通V0通道的模拟量
NOP;为延时语句,等待
ORAL,01000000B01000000B与AL的00000000B作或运算,并将结果送到AL中,此时AL为01000000B,因为PC6口与AD574A的CE端相连,使CE为1,即高电平,CS、RS为低电平,则AD574A启动转换A/D
OUTDX,AL;将AL的01000000B送入DX中输出
ANDAL,10111111B;将AL的01000000B与10111111B作与运算,并将结果送入AL中,即此时AL为00000000B,所以PC6为0,低电平,则形成启动脉冲
OUTDX,AL;将AL的00000000B送入DX中输出
MOVDX,2C0H;选通A口地址存入DX数据计数器
INAL,DX;将A口地址的数据存入AX寄存器的低八位
TESTAL,80H将10000000B与AL中的数据作与运算
JNZPULLING对AL进行判断,如果PA7不等于0则循环,如果等于0则进行下一步
MOVAL,BL将BL的00000000送给AL,即AL为00000000
ORAL,00010000B;将AL的00000000与00010000B作或运算,将结果存入AL
MOVDX,2C2H;选通C口地址存入DX寄存器
OUTDX,AL;将AL的00010000给DX输出,即C口为00010000,此时PC4为1,即为高电平,准备读操作
ORAL,01000000B;将01000000与AL的00010000作或运算,结果存入AL中
MOVDX,2C0H;选通A口地址存入DX寄存器中
INAL,DX将DX的数据存入AL中
ANDAL,0FH将00001111与AL作与运算,即将AL中的高四位清零
MOVAH,AL;将AL的高4位存在AH中
INCDX;读B口低8位
INAL,DX;低8位存在AL
STOSW;数据存储入BUF缓冲区
INCBL;更换通道
LOOPADCCX不为0时循环,为0时进入下一指令
MOVAL,00111000B;CE=0,CS,R/C,INH=1,芯片复位
MOVDX,2C2H选通C口地址存入DX中
OUTDX,AL将AL的的数据给PC口从DX中输出
RET重复
AD574AENDP结束
2.8通道模拟量A/D数据采集程序设计:
#definePAXBYTE[0X02C0]//PA口地址
#definePBXBYTE[0X02C1]//PB口地址
#definePCXBYTE[0X02C2]//PC口地址
voiddelay();//延时函数声明
voidmain()
{
intdata[8];//存储八个通道的转换数据
charnum1,num2;//存储AD574的高四位数据、低八位数据
for(intselenum=0;selenum<8;selenum++)//8次循环,selenum表示通道号
{
PC=selenum;//初始化,选择欲转换通道
delay();//延时
PC=selenum|40H;//令CE=1,启动转换
PC=selenum;//令CE=0,形成启动脉冲
chartemp;//定义临时变量,用来测试STS信号
do
{
temp=PA;//从PA口最高位读出STS信号状态
}while(temp>=80H);//若STS为高,则temp不小于80H
PC=selenum|10H;//令R/C=1,准备读
PC=selenum|50H;//令CE,R/C=1,准备读
num1=PA;//从PA口读出转换数据的高四位
num2=PB;//从PB口读出转换数据的低八位
num1=num1&0FH;//num1中的高四位清零
data[selenum]=num2+(num1<<8);//将高四位左移八位后与低八位求和,结果放入data数组中
}
PC=38H;//令CE=0,CS,R/C,INH=1,芯片复位
}
Voiddelay()//延时函数的定义
{
chari=5;
while(i--);
}
3.实验模拟仿真(部分):
图1-3
【附】:
器件及原理说明:
1.8255A有PA,PB,PC口(PA、PB、PC是输入输出口,与外设相连。
功能是将采集到的数据传送至CPU,和将CPU的控制信号传给外设)
与外设相连,可将采集到得数据传送至CPU,或将CPU的数据D0~D7是I/O口传送数据的接口,与ISA总线的D0~D7相连D0-D7是I/O端口传送数据的接口,与ISA总线的D0-D7相连。
信号数据的输入通道),传送数据,8255A是连通CPU和外设的I/O端口,8255A与外设的接线图课程实验书有,这里只画出8255A和ISA总线之间的接线图。
2.WD、WR是控制读、写的控制线,与ISA总线的IOR、IOW相连。
决定是读操作还是写操作。
3.RESET是复位控制线,与ISA总线的复位控制线REST相连,起复位作用。
4.A0、A1是地址线,与ISA总线的地址线A0、A1相连。
传给外设。
5.AD574与ISA总线前62根信号线的接口设计可由上两张图得到。
8255A是具有24条输入/输出引脚、可编程的通用并行输入/输出接口电路,它能连通CPU和外设。
6.CS是片选引脚,控制芯片是否工作。
7.多路模拟信号首先通过译码电路选通一路,进入A/D转换器(AD574A)将模拟信号转换为数字信号,再输入I/O端口(8255A)寄存,等ISA有时间的时候再通过D0-D7口读取处理。
选通控制由ISA总线信号A0、A1接入8.ISA总线是具有19位的地址总线,地址从00000H---7FFFFH。
NOP
NOP
ORAL,01000000B;将40H和累加寄存器单元的内容进行或得操作,AL原来的内容是00H,
或操作之后AL的内容变为01000000B
OUTDX,AL;将40H通过数据线传递给PC口;对应真值表可知该指令是启动12位模数转换
MOVDX,00000H;将PA口地址给数据存储器,这之后数据的读写将对PA口操作
PULLING:
INAL,DX将数据线上的内容(即PA口内容)写入累加器A
TESTAL,10000000B;AL和10000000B作与运算。
JNZPULLING如果AL内容不为0,则转移到PULLING;如果AL内容不为0,则不转移,进入下一指令
MOVAL,01010000B;将10H赋给累加器A,准备读
MOVDX,00010H;将PC口地址送给数据寄存器,对PC口进行操作
OUTDX,AL;将01010000B经过数据总线送给PC口,使得R/C、CE为1,其余为零,根据真值表可知AD574A为12位并行输出
MOVDX,00000H;将PA口地址交给数据寄存器,之后就对PA口进行操作
INAL,DX;将PA口的8位数据交给累加寄存器
ANDAL,00001111B;对AL中采集到的PA口的低四位取出
MOVAH,AL;将PA口的低四位存入累加寄存器的高四位
MOVDX,00001H;将PB口地址交给数据存储器,之后就对PB口进行操作
INAL,DX;将PB口采集到的数据存入寄存器A
STOSW;数据存入BUF缓冲区
INCBL;基址寄存器加1,更换通道
DECCX;计数器寄存器减1
LOOPADC;CX不为0时循环,为0时进入下一指令
MOVAL,00111000B;
MOVDX,00010H;将PC口地址送数据寄存器,对PC口操作
OUTDX,AL;将00111000B交给PC口赋值,使得CE为0,CS、R/C、INH为1,芯片复位
RET
AD574A
试验二:
数字程序控制程序设计
【实验目的】
了解数字程序控制原理和数字程序控制方式;
了解插补原理及计算的程序实现、步进驱动控制技术原理及计算的程序实现、伺服驱动控制技术原理及计算的程序实现。
【实验设备】
1.工业控制计算机。
2.
计算机网络
【实验原理】
程序流程图:
偏差判别
↓
坐标进给
↓
偏差计算
↓
坐标计算
↓
终点判断
【实验内容】
1.四象限圆弧插补计算程序设计
2.作出走步轨迹图。
【实验步骤】
【注意事项】
【实验报告】
1.四象限圆弧插补计算过程表;
2.用MATLAB或C、C++编写四象限圆弧插补计算程序;
3.作出四象限圆弧插补走步轨迹图.
实验程序:
X0=input('请输入起点横轴坐标x:
');
Y0=input('请输入起点纵轴坐标y:
');
NXY=input('请输入差补步数:
');
pace=input('请输入差补步长:
');
RNSS=input('请选择差补走向(1代表顺时针/2代表逆时针):
');
XM=X0;
YM=Y0;
%画基准圆
R=sqrt(X0*X0+Y0*Y0);
alpha=0:
pi/20:
2*pi;
xx=R*cos(alpha);
yy=R*sin(alpha);
plot(xx,yy,'g:
');
holdon;
axisequal;
%针对跨象限运行时对ZF初始化(由于在跨象限运行时不改变ZF值所以必须对其初始化)
ZF=(RNSS==1)*(((Y0==0)*((X0>0)*4+(X0<0)*3))+((X0==0)*((Y0>0)*1+(Y0<0)*2)))+...
(RNSS~=1)*(((Y0==0)*((X0>0)*3+(X0<0)*4))+((X0==0)*((Y0>0)*2+(Y0<0)*1)));
%建立NXY次循环来实现差补计算与绘图
fornum=1:
NXY
%FM值判断
FM=XM*XM+YM*YM-X0*X0-Y0*Y0;
%象限判断(RNS为1,2,3,4分别代表1,2,3,4象限)
RNS=(XM>0)*((YM>0)*1+(YM<0)*4)+(XM<0)*((YM>0)*2+(YM<0)*3);
%走步计算(RNS百位为1表示逆时针画圆,十位为1表示FM<0,个位数字表示所在象限,ZF代表走步方向)
switchRNS+((FM<0)*10)+(RNSS~=1)*100
case001
ZF=4;
case002
ZF=1;
case003
ZF=3;
case004
ZF=2;
case011
ZF=1;
case012
ZF=3;
case013
ZF=2;
case014
ZF=4;
case101
ZF=2;
case102
ZF=4;
case103
ZF=1;
case104
ZF=3;
case111
ZF=3;
case112
ZF=2;
case113
ZF=4;
case114
ZF=1;
end
%步进电机走步(由ZF控制走步方向由pace控制步长)
switchZF
case1
x1=[XM,XM+pace];
y1=[YM,YM];
case2
x1=[XM,XM-pace];
y1=[YM,YM];
case3
x1=[XM,XM];
y1=[YM,YM+pace];
case4
x1=[XM,XM];
y1=[YM,YM-pace];
end
plot(x1,y1,'r-');%由此点和前一点坐标组成的2个向量画直线
XM=x1
(2);%保存此点坐标供下次作图和比较时使用
YM=y1
(2);
holdon;
pause(0.01);%延时程序形参为每走一步所用时间
end
holdoff;
实验步骤:
一、打开Matlab程序主窗口;
二、执行此程序的M文件;
三、输入起点坐标、差补步数、步长、差补方向;
四、观察绘图窗口的绘图轨迹的变化;
附【实验结果】:
通过这两周的工业控制计算机原理及应用课程实验(实验一:
模拟量输入/输出程序设计;实验二:
数字程序控制程序设计),温习了先前学习的单片微型计算机原理及应用、Protel电子电路orCAD等EDA软件的相关知识及一些常用电子设计仿真软件,结合课内所学的工业控制计算机、电子技术与实验及Matlab仿真等内容,我对工业控制计算机原理及应用方面有了初步的认识,学会了初步的综合运用所学知识和设计及其检测方法,掌握了一些编程和设计技能,熟悉了一些控制程序的使用,能应用一些常用软件进行一些电路设计,系统分析能力和整体概念与设计能力有所提高。
为更好的将理论知识与实际设计联系结合,将硬件描述语言与软件仿真等内容有效结合使用。
同时准备在近段时间继续学些工业自动控制、程序控制程序设计、系统分析、综合研发等技术方面的知识,加强对工业控制计算机原理与运用的学习。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 钟胜财 07 电化 21 工业 控制 计算机 原理 应用 课程 实验 报告