您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > %245 模拟量输入输出通道-1
模拟量输入输出通道1.了解计算机如何采集工业系统中的模拟信号。2.了解计算机如何输出模拟信号。训练目的采集卡信号调理电路驱动电路端子板工业系统模拟量输出/输入系统的一般组成Intvar=Inportb(基地址+偏移地址)Outportb(基地址+偏移地址,Intvar)PCL-812PG工业系统模拟量输入通道的一般组成模拟量传感器模拟量传感器模拟量传感器信号调理信号调理信号调理多路开关MUX可编程放大器接口电路控制电路A/D转换器采样/保持器S/H控制线数据总线模拟量输入的实现--多路控制问题1:同时会有多路模拟信号输入,每一路信号选用一个AD通道,采集卡有16路AD通道,哪一路工作?Base+10D7D6D5D4D3D2D1D0xxxxCL3CL2CL1CL0解决:多路转换控制寄存器地址:base+10属性:只写说明:CL3~CL0A/D转换通道号Base+10D7D6D5D4D3D2D1D0xxxx1010例:outportb(base+10,10)选用几号通道?解决:增益控制寄存器地址:base+9属性:只写说明:Gain=例:R2R1R0=000Gain=1,最大输入电压有跳线选择,默认10V模拟输入范围=10~0.3125Voutportb(base+9,0)电压范围?模拟量输入的实现--可编程放大器问题2:各路模拟的信号幅值范围不同Base+9D7D6D5D4D3D2D1D0xxxxxR2R1R0R2R1R02maxUGain模拟量输入的实现--A/D触发问题3:模拟电压输入后,如何使A/D开始?Base+11D7D6D5D4D3D2D1D0xxxxxS2S1S0解决:1)模式控制寄存器地址:base+11属性:只写说明:S3~S0选择例:outportb(base+11,1)选用何方式?S2S1S0内部触发000禁止触发A/D001仅允许软件触发+查询方式传输(默认)010仅允许板卡自带定时器触发+DMA传输110允许卡自带定时器触发+查询方式或中断传输触发:给一控制信号,使A/D开始触发方式:1)软件触发2)板上定时器触发3)外部脉冲触发模拟量输入的实现--A/D触发问题3:模拟电压输入后,如何使A/D开始?解决:2)A/D转换软件触发地址:base+12属性:只写说明:例:outportb(base+12,1)转换开始模拟量输入的实现—数据传输方式问题4:如何知道A/D转换已经完成?Base+5D7D6D5D4D3D2D1D0000DRDYAD11AD10AD9AD8例:DRDY=inportbb(base+5)&0x10判断DRDY是否为0?解决:A/D数据寄存器(高字节)地址:base+5属性:只读说明:DRDYA/D转换完成标志位DRDY=1:A/D转换没有完成=0:A/D转换完成当读A/D低字节寄存器(base+4)时,被设置为1数据传输方式:1)查询方式传输DRDY2)中断传输A/D完成后发中断请求3)DMA传输直接存储器存取模拟量输入的实现—数据读取问题5:如何读取A/D转换完成后的数据?Base+4D7D6D5D4D3D2D1D0低字节AD7AD6AD5AD4AD3AD2AD1AD0Base+5D7D6D5D4D3D2D1D0高字节000DRDYAD11AD10AD9AD8解决:A/D数据寄存器地址:base+4(低字节)AD7~AD0base+5(高字节)AD11~AD8属性:只读说明:AD11~AD012位注意:先读高字节,再读低字节Q模拟量输出通道的一般组成接口接口接口CPUD/AD/AD/A通路1通路1通路n模拟量输出通道--D/A输出寄存器Base+4D7D6D5D4D3D2D1D0低字节DA7DA6DA5DA4DA3DA2DA1DA0Base+5D7D6D5D4D3D2D1D0高字节XXXXDA11DA10DA9DA8Base+6D7D6D5D4D3D2D1D0低字节DA7DA6DA5DA4DA3DA2DA1DA0Base+7D7D6D5D4D3D2D1D0高字节XXXXDA11DA10DA9DA8D/A1D/A2先输出低字节,后输出高字节PCL-812PG采集卡的模拟量输入/出通道CN1连接0号~9号A/D通道,CN2连接A/D10~A/D15A/D通道。此外,CN2还用其13、14号引线担负1号D/A通道,15、16号引线担负2号D/A通道。1234567891011121314151617181920A/D0A/D1A/D2A/D3A/D4A/D5A/D6A/D7A/D8A/D9A.GNDA.GNDA.GNDA.GNDA.GNDA.GNDA.GNDA.GNDA.GNDA.GNDCN1模拟量单端输入1234567891011121314151617181920A/D10A/D11A/D12A/D13A/D14A/D15D/A1D/A2V.REF1V.REF2A.GNDA.GNDA.GNDA.GNDA.GNDA.GNDA.GNDA.GNDA.GNDA.GNDCN2模拟量输入与输出PCL-812PG采集卡的模拟量输入/出通道十六路A/D通道均可将模拟电压信号转换成12位数字信号。被转换电压的范围有六种,可以在程序中设定(须配合板卡上的跳线开关),本训练项目已采用±10V。二路模拟信号输出通道可输出电压范围是0~+5V或0~+10V。本训练项目采用0~+10V。12位2进制数0–4095(212-1)在关机状态下接线!输入A/D通道的电压严禁超出±10V!训练接线图在关机状态下接线!输出D/A通道严禁短路接采集卡CN2接信号发生器或直流稳压电源接示波器训练内容P1081.模拟量输出通道D/A(1)运行演示程序该程序有以下功能:·将一个由键盘输入的0~+10之间的十进制数字值转换成0~+10V的模拟直流电压;·产生一个方波信号,周期1ms~5ms可调,幅值0~10V可调;·产生一个正弦波信号,周期和幅值可调;这三种信号均可经由1(2)号D/A通道输出。这样,工控机和采集卡共同构成了一个信号发生器。演示中可以用示波器观察上述波形。(!!!注意示波器的探头的正确使用,不能相碰;否则设备损害,照价赔偿)(2)单步运行范例程序在TurboC环境下,单步运行程序DA_ONE.C(源程序见附录6),该程序将一个直流电压信号输出,电压值由键盘键入。程序运行中,利用“watch”区域观察有关变量的值,确认并记录程序中的关键语句及其作用。注意对采集卡各端口的寻址和数据格式。训练内容P1092.模拟量输入通道A/D(1)运行演示程序该程序可将以下三种信号经由10号A/D通道采入计算机,在显示器上显示:·0~+10V的直流电压·正弦波信号频率不能太大·方波信号这相当于一个数字示波器。演示中可以用信号发生器作为信号源,也可以将演示程序D/A部分所产生的信号作为信号源。可以示波器同时测量被转换的信号。(2)单步运行范例程序在TurboC环境下,单步运行程序AD_ONE.C(源程序见附录6),该程序将一个直流电压信号采入计算机,以数字形式显示,这相当于一个数字电压表。程序运行中,利用“watch”区域观察有关变量的值,确认程序中的关键语句及其作用,作记录。注意对采集卡端口的寻址。AD通道程序设置基地址#defineBASS_ADDRESS0x220intChannel=10;main(){unsignedshortintDRDY;inthbyte,lbyte;floattemp;charc;outportb(BASS_ADDRESS+10,Channel);outportb(BASS_ADDRESS+9,0);outportb(BASS_ADDRESS+11,1);while(1){DRDY=1;outportb(BASS_ADDRESS+12,1);定义通道选择通道(多路选择控制)增益控制(1)模式控制:仅允许软件触发+查询方式传输(默认)AD软件触发AD通道程序(续)等待AD转换完成while((DRDY!=0)&&(!kbhit())){DRDY=inportb(BASS_ADDRESS+5)&0x10;}hbyte=inportb(BASS_ADDRESS+5)&0x000f;lbyte=inportb(BASS_ADDRESS+4)&0x00ff;temp=((hbyte8)+lbyte-2047)*20.0/4095.0;printf(\nValue=%f,temp);printf(\nPressNtonextandPressotherkeytoquit!!);c=bioskey(0);if(c=='n'||c=='N')continue;elsebreak;}}获取AD高字节获取AD低字节计算AD采样值判断有无键按下作业1复习本次课程内容,思考模拟量输入输出程序与开关量输入输出程序的区别与联系2阅读附录1-3,进一步熟悉相关寄存器的功能3注释DA通道程序4编写选练3的相关程序,注意程序书写规范DA通道程序设置基地址#defineBASE_ADDRESS0x220intChannel=1;main(){floatOutputdata;intlbyte,hbyte;intout=0;charc;while(1){clrscr();printf(\nPleaseinputAmplitude(0~10V):);scanf(%f,&Outputdata);out=Outputdata*4095.0/10.0;hbyte=(out8)&0x0f;DA通道程序设置基地址lbyte=out&0xff;outportb(BASE_ADDRESS+4+2*(Channel-1),lbyte);outportb(BASE_ADDRESS+5+2*(Channel-1),hbyte);printf(\nPressNtonextandPressotherkeytoquit!!);c=bioskey(0);if(c=='n'||c=='N')continue;elsebreak;}outportb(BASE_ADDRESS+4+2*(Channel-1),0);outportb(BASE_ADDRESS+5+2*(Channel-1),0);}D/A输出时,先写低字节,暂存在寄存器里面,当高字节写完后,进行D/A转换作业1把AD程序(附录6.1)改写为子程序:intAD(intchannel)/*0-15*/{……}2把DA程序(附录6.2)改写为子程序:DA(intchannel,intdata)/*1-2;0-10V*/{……}3复习本次课程内容,思考模拟量输入输出程序与开关量输入输出程序的区别与联系
本文标题:%245 模拟量输入输出通道-1
链接地址:https://www.777doc.com/doc-3246892 .html