计算机控制实验报告学号:3010203109班级:自动化2班姓名:叶林奇实验一数字量输入输出一、实验目的与要求1.通过实验熟悉并掌握实验装置原理与使用方法,掌握数据采集卡的基本使用方法。2.通过实验掌握数字输入输出通道数据采集方法。二、实验结果1、模板程序运行结果2、框架程序及运行结果PublicConstSampingTime=25'设置采样周期,单位msSubMyDeviceOpen()'注册数据采集卡ErrCde=DRV_DeviceOpen(0,DeviceHandle)'注册数据采集卡CallPCI_1711ErrorTest'调用PCI_1711ErrorTest()子程序,验证函数是否执行成功EndSubSubMyOperation(intInputAsInteger,intOutputAsInteger)lpDioReadPort.Port=intInput'设置数字采样端口号lpDioReadPort.value=DRV_GetAddress(DiValue)'设置读入数字量存储地址ErrCde=DRV_DioReadPortByte(DeviceHandle,lpDioReadPort)'读取相应端口的数字量CallPCI_1711ErrorTest'调用PCI_1711ErrorTest()子程序,验证函数是否执行成功CallUpdateLed(DiValue)'数据刷新并显示lpDioWritePort.Port=intOutput'设置数字量输出端口号lpDioWritePort.Mask=255'输出端口各位数字量状态都可改变(值为255)lpDioWritePort.state=DiValue'设置输出数字量值ErrCde=DRV_DioWritePortByte(DeviceHandle,lpDioWritePort)'数字量的输出CallPCI_1711ErrorTest'调用PCI_1711ErrorTest()子程序,验证函数是否执行成功EndSubSubMyDeviceClose()'释放数据采集卡ErrCde=DRV_DeviceClose(DeviceHandle)'释放数据采集卡CallPCI_1711ErrorTest'调用子程序,验证函数是否执行成功EndSubSubPCI_1711ErrorTest()'验证函数是否执行成功If(ErrCde0)ThenDRV_GetErrorMessageErrCde,szErrMsgResponse=MsgBox(szErrMsg,vbOKOnly,Error!!)ExitSubEndIfEndSub实验二A/D、D/A转换实验一、实验目的与要求1、实验掌握模拟量通道中A/D,D/A转换的实现方法,掌握用计算机进行多通道A/D,D/A转换的基本方法。2、学习掌握A/D,D/A转换的相关知识。二、实验线路分析图中,模拟信号的输入输出均采用带权值的加法器。对其分析如下:三、实验结果与分析inoutininnpVKIVKVIIIKIKVIVV25200200252005,10002121-斜坡信号-5VAI1200K200K100K100KAIGNDAOGNDAO1-200k200K100K100KAI13U7U11++BU2信号源信号源锁零端信号源锁零端GG数据采集卡-5V(右下角波形为AI13)(右下角波形为AO1)对实验结果分析如下:1、原始斜坡信号2、AI1波形(0V段由5V下移得到)Uout=5-2UinAD采样从AI1输入DA转换从AO1输出3、AO1波形(DA转换输出值限定为0~5V)4、AI13波形框架程序:PublicConstSampingTime=10'设置采样周期,单位msSubMyDeviceOpen()'注册数据采集卡ErrCde=DRV_DeviceOpen(0,DeviceHandle)CallPCI_1711ErrorTest'调用PCI_1711ErrorTest()子程序,验证函数是否执行成功EndSubSubMyOperation(intchan,lngreadAsLong,intoutAsInteger,intchanoutAsInteger)'初始化设置数据采样通道lpAIConfig.DasChan=intchan'采样通道lpAIConfig.DasGain=1'A/D增益为1时,增益范围为:-5V~+5VErrCde=DRV_AIConfig(DeviceHandle,lpAIConfig)'初始化特定的模拟量输入通道CallPCI_1711ErrorTest'调用子程序,验证函数是否执行成功'开始数据采集lpAIBinaryIn.chan=intchan'采样通道lpAIBinaryIn.TrigMode=0'触发方式(1外触发,0内触发,即软件触发)lpAIBinaryIn.reading=lngread'从采样通道读到的数字量ErrCde=DRV_AIBinaryIn(DeviceHandle,lpAIBinaryIn)'读单个模拟量通道的数据返回模拟量对应的二进制数据CallPCI_1711ErrorTest'调用子程序,验证函数是否执行成功Calldisplay'调用显示曲线子过程'数据输出lpAOBinaryOut.chan=intchanout'输出通道lpAOBinaryOut.BinData=intout'输出数据CallDRV_AOBinaryOut(DeviceHandle,lpAOBinaryOut)'接收数据量通过模拟量输出通道输出得到对应的电压值CallPCI_1711ErrorTest'调用子程序,验证函数是否执行成功EndSubUout=5-2UinSubMyDeviceClose()'释放数据采集卡ErrCde=DRV_DeviceClose(DeviceHandle)CallPCI_1711ErrorTest'调用子程序,验证函数是否执行成功EndSubSubPCI_1711ErrorTest()'验证函数是否执行成功If(ErrCde0)ThenDRV_GetErrorMessageErrCde,szErrMsgResponse=MsgBox(szErrMsg,vbOKOnly,Error!!)ExitSubEndIfEndSub四、思考题改变采样周期系统输入输出波形有什么变化,为什么?答:增大采样周期输入输出波形看起来会更连续,减小采样周期输入输出波形会出现明显的锯齿状,甚至严重失真。原因:根据奈奎斯特采样定理,当采样频率大于等于信号频率的2倍,采样到的信号才不发生失真。实验三、数字滤波一、实验目的与要求通过实验让学生掌握一阶惯性滤波,四点加权滤波方法及影响相应滤波方法效果的因素二、实验结果与分析1、一阶惯性滤波要求设计一个相当于的数字滤波器,由一阶差分法可得到近似公式Yn=(1-α)Xn+αYn-1其中,Yn是第n次采样后滤波结果输出值;Xn是第n次采样值;Yn-1是上次滤波结果输出值;1-α=T/,α是滤波平滑系数,T是采样周期;α=0.211Sα=0.4α=0.6α=0.8α=0.9结果分析:α值越大,惯性系数越大,Yn-1在Yn中所占比重越大,滤波后的波形越平滑2、四点加权滤波:近似公式:Yk=a1*Xk+a2*Xk-1+a3*Xk-2+a4*Xk-3Xk是第k次采样值,Yk是第k次采样后滤波结果输出值,a1、a2、a3、a4是各次采样权系数,且a1+a2+a3+a4=1结果分析:不同的加权系数对应的滤波输出波形也不同,当加权系数1=0.2,加权系数2=0.3,加权系数3=0.2时输出波形较为理想框架程序:PublicConstSampingTime=50'一阶惯性滤波采样周期,单位msPublicConstSampingTime1=50'四点加权滤波采样周期,单位msSubMyDeviceOpen()'注册数据采集卡ErrCde=DRV_DeviceOpen(0,DeviceHandle)'注册数据采集卡CallPCI_1711ErrorTest'调用PCI_1711ErrorTest()子程序,验证函数是否执行成功EndSubSubMyOperation(addressAsLong)'参数配置lpAIConfig.DasChan=intchan'采样通道intchanlpAIConfig.DasGain=0'A/D增益为0时,增益范围为:-10V~+10VErrCde=DRV_AIConfig(DeviceHandle,lpAIConfig)'初始化特定的模拟量输入通道CallPCI_1711ErrorTest'调用子程序,验证函数是否执行成功'采集数据AiVolIn.chan=intchan'采样通道AiVolIn.gain=0'设置增益AiVolIn.TrigMode=0'触发方式(内部触发)AiVolIn.voltage=address'采样通道模拟量值ErrCde=DRV_AIVoltageIn(DeviceHandle,AiVolIn)'读模拟量通道,返回对应的电压值CallPCI_1711ErrorTest'调用子程序,验证函数是否执行成功EndSubSubMyDeviceClose()'释放数据采集卡ErrCde=DRV_DeviceClose(DeviceHandle)'释放数据采集卡CallPCI_1711ErrorTest'调用子程序,验证函数是否执行成功EndSubSubPCI_1711ErrorTest()'验证函数是否执行成功If(ErrCde0)ThenDRV_GetErrorMessageErrCde,szErrMsgResponse=MsgBox(szErrMsg,vbOKOnly,Error!!)ExitSubEndIfEndSub