计算机测控综合实验指导书.docx
《计算机测控综合实验指导书.docx》由会员分享,可在线阅读,更多相关《计算机测控综合实验指导书.docx(51页珍藏版)》请在冰豆网上搜索。
计算机测控综合实验指导书
计算机测控综合实验
一、课程设计的基本情况
1、课程性质:
课程设计,必修
2、学分:
2学分
3、时间安排:
共40学时,分10次完成,一次4学时,大约需要两周时间。
4、计算机测控综合实验的含义:
指使用计算机进行测量与控制的实验,测量就是对现场的参数温度、压力、流量、液位等进行测量,实际就是测量传感器的电压,即数据采集的过程;控制指输出模拟量(电压、电流)对现场的被控对象进行控制的过程。
5、本课程设计的实验的内容
4个实验,分别是:
(1)A/D转换实验
(2)D/A转换实验
(3)数字量输入输出控制实验
(4)PID温度控制实验(采用PID算法对玻璃管的温度进行控制)
1、2、3占用4次课,实验4是一个综合性的实验,占用3次课。
后3次课用于学习MCGS组态软件和编程。
二、开设此课程设计的目的
计算机测控综合实验是运用计算机技术、模拟电子技术、数字电子技术以及软件编程技术解决工程和科研实验中数据采集、检测、控制和预处理的一门综合性大实验,它是电子技术与微机应用的一个重要组成部分。
也是专业课“数据采集系统”、“工业控制机系统”等课程工程训练的很好补充。
本课程设计的目的是使学生通过本综合实验的训练,进一步加深对“数据采集”的基本理论的理解,熟悉采集系统各组成环节的工作原理及性能指标,掌握各部分接口和系统的设计方法,主要掌握用VB语言和组态软件编写采集处理程序的方法,其它编程语言的实现有兴趣的同学可以自己练习,不做要求。
训练的具体内容主要包括:
1、用VB编写A/D、D/A、DI、DO接口程序;主要训练软件编程能力,硬件设计比较简单。
2、用VB编制一个实用工程软件实现一个控制对象参数(温度)的PID控制。
3、学习并利用MCGS组态软件编写数据采集与处理的程序,MCGS是国内做的较好的一种组态软件,要求学习MCGS并用MCGS组态实现实验内容,后边会提供参考资料介绍MCGS的使用方法。
三、要求和注意事项
1、实验前应认真阅读实验指导书的相关内容,掌握正确的接线方法、实验步骤及注意事项。
2、要严格遵守实验室纪律,按老师要求去做,按时上下课,有事必须事先请假,无故缺席一次取消课程设计的资格。
3、爱护实验室的仪器设备和计算机,严禁私自拆卸实验装置,接线有不明白的地方要及时请教老师。
接线一定要仔细认真,防止出错烧毁采集板卡,严禁带电接线。
4、要求大家不要在实验台的桌面上乱涂乱画,发现一次取消课程设计的资格,成绩按零分计,一定要特别注意。
5、实验的过程中要求先用VB编程完成所有的实验内容,完成后如果有时间,必须要学习MCGS组态软件,然后用MCGS编程完成部分实验内容,完成的内容越多越好,成绩就越高。
具体每一个实验的要求,做到的时候再具体安排。
6、VB部分的实验要求写实验报告,报告中主要写实验目的、实验设备、实验原理、实验结果,另外,要给出主要部分的程序清单,还要有一定的总结。
7、每做完一个实验的程序要注意保存好,以备老师检查,每做完一个实验,要检查实验的结果,会针对程序提一些问题,每个实验要打分,作为平时操作的成绩,检查完后继续做下一个实验。
8、最终成绩的评定:
平时操作的成绩*80%,实验报告的成绩*20%。
9、实验程序保存到D盘,自己建立一个文件夹存放好,以备下次使用,C盘有写保护,不能存放程序。
10、每台机器的D盘下有一个文件夹“参考资料”,里面有可以提供给大家的所有参考资料,包括VB学习资料、MCGS学习资料、参考的程序等。
不要随便删除这个文件夹。
11、每个实验台上有连接电路用的导线和万用表。
四、计算机测控实验装置介绍(略)
五、PCI1711采集卡介绍
1、概述
PCI1711是一款功能强大的低成本多功能PCI总线的数据采集卡,可以实现模拟量的输入、输出,数字量的输入、输出等功能,因此被称为多功能数据采集板卡。
PCI1711是台湾研华公司生产的数据采集设备,插在计算机的PCI插槽上,通过电缆引出到实验装置的面板上以供使用。
2、主要技术指标
(1)模拟量输入部分
1)16路单端模拟量输入通道;
2)A/D转换器的位数12位;
3)采样速率可达100KHz;
4)通道增益可编程,一般输入电压范围为:
-10V~+10V。
(2)模拟量输出部分
1)两路12位模拟量输出通道,输出信号为电压信号;
2)采用内部参考电压:
内部参考电压接-10V;
3)通道输出电压范围为0~10V,编程时按此设置。
(3)数字量输入输出部分
1)16路数字量输入通道;
2)16路数字量输出通道;
3)输入、输出均为TTL电平标准。
3、信号连接的方法(见实验内容部分)
4、有关PCI1711编程的核心内容
使用VB编写PCI1711采集程序时,要使用PCI1711自带的动态链接库adsapi32.DLL中定义的函数,在安装好板卡的驱动程序后,此动态链接库文件就被安装好了,此时需要在VB编程时在VB工程中添加一个模块文件(Driver.bas),此文件的路径如下:
C:
\ProgramFiles\Advantech\Adsapi\Include\Driver.bas
添加此模块文件后,在整个的工程中就可以直接调用板卡驱动函数完成数据采集与处理的任务。
这些函数的用途和参数的说明在后面有详细介绍。
另外,还可以去查看研华设备驱动手册(中文手册),可以在“开始”菜单中“所有程序”下找到“AdvantechAutomation”的菜单项下找到此手册,手册中有关于编程的一些详细的信息。
另外,学习编程的时候,可以参考提供的演示程序,在D:
\参考资料\VB部分\演示程序(单通道单次采集)目录下,有一个VB的演示程序,实现了单通道单次采集的任务,有对该程序编写过程的详细说明,看懂这个例子,然后参考这个例子完成后面实验的内容,每一种操作的编程过程与此类似。
实验内容
实验一A/D转换实验
一、实验目的
1、掌握PCI1711采集板中的A/D转换程序的编写方法;
2、熟悉A/D转换的基础知识。
二、实验仪器
1、ACCC-IE计算机测控系统实验装置
2、PCI1711多功能数据采集板卡
3、万用表
4、计算机
三、实验原理
输入模拟量电压的范围设置为-10V~+10V,使用12位的AD转换器,双极性应用,输入的电压和转换后的数字量之间的关系如下:
其中:
D表示转换后的数字量,
表示输入的模拟量电压,
表示满量程输入电压,n表示AD转换器的位数。
这里
=20V,n=12。
四、实验内容
1、利用ACCC-IE实验装置提供的0~30V的模拟电压信号,编写程序用通道1(AI1)分别对0V,±2V,±4V,±6V,±8V,±10V模拟量电压信号循环采集5次,要求显示并记录采集到的电压值和该电压值对应的数字量的大小。
2、利用ACCC-IE实验装置提供的0~30V的模拟电压信号,编写程序使用通道1~4(AI1~AI4)同时采集这一路模拟现场的信号,需要测量的电压值如下:
0V,±5V,±7V,±10V,要求每个通道采集10次取平均值。
要求显示并记录每个通道采集的电压值和该电压值对应的数字量的大小。
五、实验报告
包括:
实验目的、实验仪器、实验原理、实验内容、实验结果(数据)、主要部分的程序清单,实验心得体会。
接线方法:
被测模拟量电压正端接相应的通道,负端接GND。
实验二D/A转换实验
一、实验目的
1、掌握PCI1711采集板卡中的D/A转换程序的编写方法;
2、熟悉D/A转换的基础知识。
二、实验仪器
1、ACCC-IE计算机测控系统实验装置
2、PCI1711多功能数据采集板卡
3、万用表
4、计算机
三、实验原理
采用内部参考电压的输出方式,内部参考电压为-10V,输出模拟量电压的范围设置为0V~+10V,使用12位的D/A转换器,单极性应用,输出的电压和输入数字量之间的关系如下:
其中:
D表示输入的数字量,
表示输出的模拟量电压,
表示满量程输出电压,n表示DA转换器的位数。
这里
=10V,n=12。
四、实验内容
1、编程使用通道AO1分别输出0V、2V、4V、6V、8V、10V的电压信号,要求在界面上显示输出电压对应的数字量,并设计表格记录电压对应的数字量的大小和实际的电压输出值(用万用表测量)。
五、实验报告
包括:
实验目的、实验仪器、实验原理、实验内容、实验结果(数据)、主要部分的程序清单,实验心得体会。
测量方法:
直接用万用表测量AO1和GND两端的电压。
实验三数字量输入输出控制实验
一、实验目的
1、掌握PCI1711采集板中的数字量输入输出程序的编写方法;
2、熟悉和数字量有关的基础知识。
二、实验仪器
1、ACCC-IE计算机测控系统实验装置
2、PCI1711多功能数据采集板卡
3、万用表
4、计算机
三、实验原理
数字量也叫开关量,只有两种状态,高电平表示数字量“1”,低电平表示数字量“0”,电平的标准采用TTL电平。
PCI1711有16路数字量输入通道和16路数字量输出通道,可以采集16路现场的数字量的信号,可以输出16路数字量信号去控制现场的设备。
四、实验内容
1、交通灯模拟控制系统的实验。
要求设计电路并编写程序实现交通灯信号的模拟控制过程,控制效果要求如下:
(1)按下“起动”按钮,开始交通灯控制;
(2)南北方向、东西方向的通行时间均为5秒钟;
(3)红绿灯切换之间的黄灯点亮的时间为2秒钟;
(4)南北方向绿灯时,乙车通行,对应的发光二极管点亮;
(5)东西方向绿灯时,甲车通行,对应的发光二极管点亮;
(6)控制过程重复进行,直到在程序界面上点击“停止”按钮,停止交通灯控制;
(7)软件的界面自行设计。
2、喷泉模拟控制系统的实验。
要求设计电路并编写程序实现喷泉的效果,控制效果要求如下:
(1)按下“起动”按钮,开始喷泉模拟控制;
(2)顺序轮流点亮L1~L12发光二极管灯,实现喷泉的效果;
(3)各灯点亮之间的延时时间根据实际的效果进行调整,要求调整到满意的效果;
(4)控制过程重复进行,直到按下“停止”按钮,结束喷泉模拟控制;
(5)软件的界面自行设计。
五、实验报告
包括:
实验目的、实验仪器、实验原理、实验内容、实验结果(数据)、主要部分的程序清单,实验心得体会。
接线方法:
数字量控制对象部分的电路都是用发光二极管模拟实际生活场景中的控制对象的动作。
在各单元电路中,各发光二极管的正端都是连接在一起的,同时和+24V插孔相连,实验时将+5V直流稳压电源接到+24V插孔上,将PCI1711的数字量输出的通道接到发光二极管的相应的控制端(负端),当输出低电平时,发光二极管点亮。
将按钮下方的插孔和PCI1711的数字量输入通道相连,可以采集到开关的状态,实现控制。
实验四PID温度控制实验
一、实验目的
1、综合使用采集板卡PCI1711中的A/D和D/A转换部分;
2、掌握工业控制中常用的PID算法;
3、掌握VB绘制曲线的方法。
二、实验仪器
1、ACCC-IE计算机测控系统实验装置
2、PCI1711多功能数据采集板卡
3、万用表
4、计算机
三、实验原理(增量PID算法介绍)
1、PID即比例、积分、微分,采用PID算法控制温度的流程如下:
(1)提供SP:
给定温度值
(2)测量PV:
实测温度值
(3)计算e=SP-PV:
温度的偏差值
(4)根据偏差计算控制量:
其中:
:
比例系数;
:
积分系数;
:
微分系数;
:
采样周期(1000ms)
:
本次偏差;
:
上一次偏差;
:
上上次的偏差。
(5)根据控制量的大小决定输出电压的大小,调用接口函数输出电压对玻璃管进行加热,将温度保持在给定值上。
2、PID参数的调整过程
采用试凑法,先给一组初值,然后根据实际的现象对参数进行调整,调整方法如下:
(1)加温很迅速,温度很快到达目标值,但过冲很大:
1)减小kp
2)增大td
(2)加温经常达不到目标值,小于目标值的时间较多:
1)增大kp
2)减小ti
(3)基本上能够在控制目标上,但上下偏差大,经常波动:
1)增大td
2)增大ti
3)增大ts
(4)受工作环境影响过大:
1)增大td
2)减小ts
3、硬件流程图
4、接线方法:
AI1——Uout正端,GND——Uout负端
AO1——Uin正端,GND——Uin负端
四、实验内容
利用VB编写程序,通过PID算法来控制实验装置中玻璃管的温度。
要求:
1、控制指标:
PID参数整定后能在加热一定时间之后,使得加热块的温度稳定在给定温度
1度内;加热块的给定温度不超过40℃。
2、在软件中要以“控制回路”为基本数据结构,能输入回路PID参数、报警参数、温度给定值参数等参数,并能实时修改。
3、在软件中要有加热对象的温度实时变化的曲线(绘制温度和时间的曲线);
4、软件要有一个比较好看的温度控制系统的流程图画面,其中要包括采集的信号(电压0~10V)大小,此时此刻的温度大小,以及要输出的信号(电压0~10V)大小;
5、利用数据采集板卡的AI1通道对实验装置上的玻璃管的温度进行采集,采集的是已由温度传感器把0~100
C转化的0~10V的电压信号(注意:
玻璃管的温度0~100
C与实验仪上的温度变送单元输出的0~10V的V
是线性对应的)。
五、实验报告
包括:
实验目的、实验仪器、实验原理、实验内容、实验结果(数据)、主要部分的程序清单,实验心得体会。
其它要求:
1、作为一次总结报告;
2、要对程序的各部分进行具体介绍(思路、功能);
3、要有PID参数的具体调节过程;
4、写出最终的PID参数的调整结果。
PCI1711板卡驱动函数说明
所有函数均在adsapi32.dll中进行了定义,在使用之前必须要先安装研华设备管理器(AdvantechDeviceManager),然后在VB工程中添加模块Driver.bas,路径如下:
(C:
\ProgramFiles\Advantech\ADSAPI\Include\DRIVER.BAS)。
PCI-1711板卡的驱动函数部分包括模拟量输入函数,模拟量输出函数,数字量输入函数,数字量输出函数等等。
研华的每个函数都将以如下形式出现:
status=FUNCTION_Name(parameter1,parameter2...parametern)(n>0)
每个函数都会返回一个状态表明函数执行成功还是失败(保存在status变量中)。
Status(Value)
结果
UNSUCCESS(>0)
遇到错误,函数执行失败
SUCCESS(=0)
函数执行成功
Status是一个4字节的整型变量,在DRIVER.H里被定义。
请参照ErrorCodes获取错误代码的详细信息。
进行所有I/O操作时,必须先调用DRV_DeviceOpen通过设备号(DeviceNumber)打开设备得到设备句柄,用以访问该设备,然后调用一系列函数执行相应的功能,结束操作时调用DRV_DeviceClose关闭设备,释放由DRV_DeviceOpen分配的资源,基本流程图如下:
DeviceNumber(Type:
UnsignedLong,Size:
4bytes)
指定要进行I/O操作的设备,即要打开的设备的设备号,设备号在AdvantechDeviceManager中初始化设备的时候分配。
比如"000:
AdvantechDEMOI/O=1H",这个设备的设备号就为000,可以直接在DRV_DeviceOpen函数中指定要打开的设备号,也可以通过调用DRV_SelectDevice函数打开一个对话框选择需要的设备,从而取得相应的设备号。
DRV_DeviceOpen和DRV_DeviceClose函数
DRV_DeviceOpen打开设备号(DeviceNumber)指定的设备。
在I/O操作中,其他函数执行前必须先调用此函数。
与之对应,DRV_DeviceClose函数用来关闭设备。
DriverHandle(Type:
Long,Size:
4bytes)
指向的缓存保存了设备的设置信息。
函数DRV_DeviceOpen返回句柄(DriverHandle),其他进行I/O相关操作的函数使用该句柄来指定设备。
ErrorCode(Type:
UnsignedLong,Size:
4bytes)和DRV_GetErrorMessage函数
驱动函数返回错误代码(ErrorCode)来表明函数执行是否成功。
当返回代码非零时,函数执行失败。
DRV_GetErrorMessage函数通过错误代码获取出错信息。
一、设备函数
1)打开设备
DRV_DeviceOpen
LRESULTDRV_DeviceOpen(
ULONGDeviceNum,
LONG*DriverHandle);
用途
通过指定的设备号(DeviceNum)来打开一个已经安装的设备,返回设备句柄DriverHandle以备后续操作。
与指定设备相关的所有操作都必须使用指向该设备的句柄(DriverHandle),所以用户在使用与设备所分配资源相关的任何一项操作,如DIO、AO、AI等之前,必须先调用此函数。
参数
名称
方向
范围
描述
DeviceNum
input
default
设备号,即设备在研华设备管理器(AdvantechDeviceManager,即DevMgr.exe)中的编号,用于指定一个设备。
DriverHandle
output
default
返回的设备句柄,指向要操作的设备。
返回值
1.SUCCESS:
执行成功。
2.LoadLibraryFailed:
动态链接库装载失败,请尝试重新安装驱动程序。
3.MemoryAllocateFailed:
驱动程序内部内存分配失败。
4.ConfigDataLost:
从注册表获取设备配置信息失败,这些信息可能已经丢失,请尝试重新安装驱动程序。
5.GetProcAddressFailed:
无法获得驱动程序函数地址,请尝试更新驱动程序。
注意事项
1.与设备所分配资源相关的任何一项操作,如DIO、AO、AI等,执行完毕后,用户必须调用DRV_DeviceClose函数来释放由该设备通过DRV_DeviceOpen分配的资源,为设备再次操作做好准备。
2)关闭设备
DRV_DeviceClose
LRESULTDRV_DeviceClose(LONG*DriverHandle);
用途
关闭由设备句柄DriverHandle指向的设备,释放为该设备分配的资源。
所有与设备分配资源相关的操作,如:
DIO、AO、AI等完成后需要关闭该设备,以释放由函数DRV_DeviceOpen为该设备分配的资源。
参数
名称
方向
范围
描述
DriverHandle
input/output
default
DRV_DeviceOpen返回的设备句柄,指向要操作的设备。
返回值
1.SUCCESS:
执行成功。
2.InvalidDriverHandle:
设备句柄DriverHandle为NULL。
二、模拟量输入函数(软件触发方式)
软件方式
该组函数通过软件命令触发数据转换。
设备驱动为单通道和多通道数据采集分别提供了不同的函数。
两种数据采集都是一次完成。
可以使用软件定时器来周期性地调用这些函数,对单通道或多通道周期性地进行采样。
对于大块数据的连续高速采样,可以采用中断或DMA传输方式。
单通道采样
DRV_AIConfig函数为指定通道设置输入值范围.如果在运行期需要改变输入值范围,则需要再次调用DRV_AIConfig函数.DRV_AIVoltageIn函数读取输入通道当前电压值。
设备驱动通过函数DRV_AIBinaryIn读取输入通道的当前二进制值,DRV_AIScale函数可以把它转化成电压值.
多通道数据采集
多通道数据采集的方式和单通道基本相同,只是可以通过指定开始通道和通道个数进行多通道数据采集。
DRV_MAIConfig函数为指定的各个通道设置输入值范围。
DRV_MAIVoltageIn函数读取指定通道的电压值,存放在数组中。
DRV_MAIBinaryIn读取输入通道二进制值并返回,可对每个通道的二进制值调用DRV_AIScale获取电压值。
1)配置指定通道电压输入范围
DRV_AIConfig
LRESULTDRV_AIConfig(
LONGDriverHandle,
LPT_AIConfiglpAIConfig);
用途
在设备句柄DriverHandle指向的设备上,通过设置GainCode来配置指定AI(AnalogInput)通道(Channel)的电压输入范围。
参数
在lpAIConfig指向的结构PT_AIConfig中保存的参数包括:
所要设置的通道(DasChan)和GainCode(DasGain)。
名称
方向
范围
描述
DriverHandle
input
default
DRV_DeviceOpen返回的设备句柄,指向要操作的设备。
lpAIConfig
input
default
指向结构体PT_AIConfig的指针,该结构体须用户设置,用于保存采样通道(USHORTDasChan),GainCode(USHORTDasGain)。
返回值
1.SUCCESS:
执行成功。
2.InvalidDriverHandle:
设备句柄DriverHandle为NULL。
3.InvalidChannel:
指定的通道(chanoflpAIConfig)超出有效范围。
4.InvalidGain:
GainCode(DasGainoflpAIConfig)超出有效范围。
5.CardTypeIDNotSupported:
驱动无法识别DriverHandle指向的设备,请更新驱动程序。
。
用到的结构体如下:
PT_AIConfig
typedefstructtagPT_AIConfig
{
USHORTDasChan;
USHORTDasGain;
}PT_AIConfig,*LPT_AIConfig;
函数DRV_AIConfig使用到PT_AIConfig。
成员描述
名称
方向
范围
描述
DasChan
input
0-(N-1)(N为最大通道号,与硬件有关)
采样通道。
设置范围从0(第一个AI通道)到设备拥有的AI通道个数减一。
比如:
某设备有N个AI通道,那么这个范围就是从0到(N-1)。
DasGain
input
与硬件有关。
GainCode。
其对应输入电压范围有关的信息,请参考Gaincode列表或相关硬件手册。
PCI-1711Gai