实验一数据采集与控制输出实验.docx
《实验一数据采集与控制输出实验.docx》由会员分享,可在线阅读,更多相关《实验一数据采集与控制输出实验.docx(21页珍藏版)》请在冰点文库上搜索。
实验一数据采集与控制输出实验
实验一数据采集与控制输出实验
一、实验目的
1.了解计算机数据采集与控制输出的过程、原理、手段和方法。
2.掌握使用研华PCI-1713U板卡进行模拟量数据采集方法。
3.掌握使用研华PCI-1720U进行模拟量控制输出方法。
4.掌握用VisualC++6.0对数据采集与控制输出板卡进行计算机编程的方法。
5.掌握在Visual C++ 6.0中使用MFC开发图形化测控界面的方法。
二、实验仪器
1.研华工控机IPC-610。
2. 研华PCI-1713U模拟量数据采集卡。
3.研华PCI-1720U模拟量数据输出卡。
4.ADAM-3968接线端子2块及对应数据电缆2条。
5.温度控制及检测对象。
6. 导线若干。
三、实验原理
1. 计算机测控系统概述
所谓计算机测控,就是利用传感装置将被监控对象中的物理参量(如温度、压力、流量、液位、速度)转换为电量(如电压、电流),再将这些代表实际物理参量的电量送人输人装置中转换为计算机可识别的数字量,并且在计算机的显示装置中以数字、图形或曲线的方式显示出来,从而使得操作人员能够直观而迅速地了解被监控对象的变化过程。
除此之外,计算机还可以将采集到的数据存储起来,随时进行分析、统计和显示并制作各种报表。
如果还需要对被监控的对象进行控制,则由计算机中的应用软件根据采集到的物理参量的大小和变化情况以及按照工艺所要求该物理量的设定值进行判断;然后在输出装置中输出相应的电信号,并且推动执行装置(如调节阀、电动机)动作从而完成相应的控制任务。
图1为计算机测控系统的系统框图。
计算机控制系统借助传感器从生产过程中收集信息,对生产过程被控对象进行监视并提供控制信号。
被收集的信息在不同层次上进行分析计算,得出对生产装置提供的调节量,完成自动控制,或者为生产管理人员、工程师和操作员提供所需要的信息。
图1 计算机测控系统方框图
2.基于PCI总线板卡的数据采集与控制输出实验电路图
在工业测控系统中,输入信号往往是模拟量,这就需要一个装置把模拟量转换成数字量,各种A/D芯片就是用来完成此类转换的。
利用PC(或IPC)实现测控主要有两种方式,一是通过串行接口(RS-232或RS-485),二是通过各种数据采集与输出卡。
为了满足IBM-PC机及其兼容机用于数据采集与控制的需要,国内外许多厂商生产了各种各样的数据采集板卡(或I/O板卡)。
这类板卡均参照IBM-PC机的总线技术标准设计和生产,用户只要把这类板卡插入IBM-PC机主板上相应的I/O扩展槽中,就可以迅速方便地构成一个数据采集与处理系统,从而大大节省了硬件的研制时间和投资,又可以充分利用IBM-PC机的软硬件资源,还可以使用户集中精力对数据采集与处理中的理论和方法进行研究、进行系统设计以及程序的编制等。
基于PC总线的板卡种类很多,按照板卡处理信号的不同可以分为模拟量输入板卡(A/D卡)、模拟量输出板卡(D/A卡)、开关量输入板卡、开关量输出板卡、脉冲量输入板卡、多功能板卡等。
模拟量输入板卡根据使用的A/D转换芯片和总线结构不同,性能有很大的区别。
板卡通常有单端输入、差分输人以及两种方式组合输入三种。
板卡内部通常设置一定的采样缓冲器,对采样数据进行缓冲处理,缓冲器的大小也是板卡的性能指标之一。
在抗干扰方面,A/D板卡通常采取光电隔离技术,实现信号的隔离。
板卡模拟信号采集的精度和速度指标通常由板卡所采用的A/D转换芯片决定。
计算机内部处理采用的是数字量,而执行机构采用的是模拟量。
计算机通过D/A板卡将数字量转化为模拟量,从而通过控制执行机构的动作去控制生产工艺过程。
D/A转换板卡同样依据其采用的D/A转换芯片的不同,转换性能指标有很大的差别。
基于PCI总线板卡的集中式数据采集与控制输出系统由研华工控机、模拟量输入板卡PCI-1713U、模拟量输出板卡PCI-1720U、温度对象构成,如图2所示。
其中工控机负责对采集的温度信号进行分析、标度变换与显示,并可按要求输出电压信号,送给调功器或在电压表上显示;PCI-1713U为A/D板卡,负责将温度信号变换为数字信号,送给工控机;PCI-1720U为D/A板卡,负责输出模拟电压信号。
软件开发平台采用VC++6.0,完成模拟量采集与输出、信息处理、显示等功能。
图2 计算机数据采集与控制输出系统框图
3.设备驱动程序基础
(1)测控系统一般由硬、软两部分组成,其中的软件部分根据功能又可分为两大类,一类面向最终操作者,在层次上属于测控应用程序,它不和实际的系统硬件打交道。
另一类软件则是针对系统硬件操作而编写的,一般被称为设备驱动程序。
驱动程序是直接工作在各种硬件设备上的软件,其“驱动”这个名称也十分形象的指明了它的功能。
正是通过驱动程序,各种硬件设备才能正常运行,达到既定的工作效果。
设备驱动程序的特点是不需要任何操作界面与操作者进行交流,它的位置在测控应用程序和系统硬件设备之间,作用是把测控应用程序传达的用户操作指令转换为硬件操作指令并传递给系统硬件,同时也能根据操作者的需要从系统硬件中获取必要数据,然后再把这些数据上传给测控应用程序以供操作者进行分析和处理。
简单的说,这类软件就是测控应用程序和系统硬件之间沟通的桥梁。
(对于三者之间的简单关系,这里可参见图3所示)
(2)Windows的体系结构
在windows体系结构中,分为用户和系统内核两个不同的层次,这是windows操作系统为了对系统资源进行安全有效的管理,使用了cpu在不同运行空间的不同运行管理权,在windows系统的核心管理进程内包含虚拟内存管理、运行管理、系统任务分发管理等最重要系统的核心功能,也包括了一些与核心功能机密相关,为了提高系统效率的内核win32子系统功能。
从Windows3.1始,对于硬件设备的访问便采取了一种设备驱动程序的方法,用户通过设备驱动程序来获得硬件的参数或者设置,但是由于16位的操作系统基于原来的DOS,所以用户程序仍然可以通过一些BIOS或者DOS的DPMI中断调用来实现对硬件的操作。
32位的操作系统如Windows 95 &NT不再基于16位DOS,所以用户如果需要实现对硬件中断、DMA、I/O或者是绝对存储访问,都不可避免地必须通过设备驱动程序。
386以上的微处理器有4个优先级别:
0级、1级、2级、3级,一般操作系统运行于优先级0级上,而用户程序运行在3级上。
驱动程序运行于0级 上,其在内存中的位置也是处在操作系统保护的空间之内的。
另外,Windows还提供一些运行在优先级3上的驱动程序,主要是串口的通信程序和并口的打印机程序,这些程序以“DRV”为后缀名。
但是一般说来,运行于优先级别3上面的I/O比运行于0级的慢。
驱动程序通常有两种来源,一是,工作人员自己编写;二是,调用硬件开发商编写的驱动程序。
该实验就是调用的硬件自带的链接动态链接库DLL。
(3)并行总线的设备操作基础
关于研华工业数据采集板卡的编程可以采用三种编程方法,第一种是自己编写控制各种寄存器代码进行数据的采集和输出,第二种就是利用封装的动态链接库DDL的方法访问相应的函数进行完成,第三种是利用研华公司提供的ActiveDAQ Pro控件来实现。
本实验采用第三种方法对研华PCI总线数据采集卡的编程操作。
ActiveDAQ Pro是一系列进行输入输出操作的ActiveX控件,是一套高效数据采集开发组件,可以方便的应用于VisualC++、VisualBasic以及支持Active控件的组态软件中,通过控件的属性、事件、方法可以很方便的对控件进行编程,用来开发数据采集的各种功能,包括模拟量输入输出(软件/中断/DMA)、数字量输入输出、脉冲量输入输出等。
并且能够以ActiveDAQ Pro的各种操作来控制ADVANTECH设备。
ActiveDAQPro安装包中包括以下内容:
Advantech ActiveDAQ ProAI Control:
采集模拟量输入数据。
Advantech ActiveDAQPro AOControl:
向外部输出模拟量数据。
AdvantechActiveDAQ ProDIOControl:
数字量输入输出操作。
Advantech ActiveDAQProThermo Control:
采集热电测量温度值。
Advantech ActiveDAQPro CounterControl:
计量输入信号。
AdvantechActiveDAQProPulse Control:
选定信号输出。
实验中用到的主要函数有:
DRV_DeviceOpen-通过指定的设备号(DeviceNum)来打开一个已经安装的设备,返回设备句柄DriverHandle以备后续操作。
与指定设备相关的所有操作都必须使用指向该设备的句柄(DriverHandle),所以用户在使用与设备所分配资源相关的任何一项操作,如DIO、AO、AI等之前,必须先调用此函数。
DRV_DeviceClose-关闭由设备句柄DriverHandle 指向的设备,释放为该设备分配的资源。
所有与设备分配资源相关的操作,如:
DIO、AO、AI等完成后需要关闭该设备,以释放由函数DRV_DeviceOpen为该设备分配的资源。
4.VisualC++ 软件开发平台
VisualC++是微软公司推出的一种面向对象的可视化集成编程工具,使用VisualC++可以胜任从最简单的用户界面程序到高级、复杂的windows应用程序的编程工作。
使用VisualC++编制的程序具有代码尺寸小、运行速度高和移植能力强的特点,这些优点都是其他编程工具(C++Builder、VisualBasic等)所不具备的。
VisualC++成为目前最受欢迎的开发工具之一,其中一个重要的原因是它有一个庞大而且功能齐全的MFC库,该类库实现了对大多数WindowsAPI的封装。
在VisualC++6.0中既可以使用MFC完成大多数的工作,也可以调用WindowsAPI函数完成更深层次的开发。
另外Visual C++6.0在数据访问、向导及Internet支持等增加了许多新的功能,可以用于开发Windows环境下功能强大、图形界面丰富的各类应用软件系统。
本实验中利用MFC开发图形化操作界面,并结合研华公司提供的ActiveDAQ控件,可以很方便的将程序界面与数据板卡进行数据交互。
程序界面不仅能够实时显示温控对象温度,还具有最大、最小以及平均温度显示功能,还具有温度报警、历史数据打开及保存等功能。
5.在Visual C++ 6.0中创建ActiveDAQ Pro应用程序的步骤
步骤1:
在Advantech DeviceManager 中加入数据采集设备
步骤2:
在VC 工具条中加入AdvantechActiveDAQPro控件
步骤 3:
设计窗体
步骤4:
配置AdvAI控件属性页
步骤5:
编写程序代码
步骤6:
测试程序
四、实验主要设备
1.工控机
工业控制机也称为工业计算机IPC,主要用于工业工程测量、控制、数据处理等工作。
常用的是PC总线工控机(X86CPU)
工业控制机的特点:
(1)可靠性高和可维护性好。
可靠性和可维修性是两个非常重要的因素,它们决定着系统在控制上的可用程度。
可靠性的简单含义是指设备在规定的时间内运行不发生故障,为此采用可靠性技术来解决;可维修性是指工业控制机发生故障时,维修快速、简单、方便。
(2)环境适应性强。
工业环境恶劣,这就要求工业控制机适应高温、高湿、腐蚀、振动、冲击、灰尘等环境。
工业环境电磁干扰严重,供电条件不良,工业控制机必须要有极高的电磁兼容性。
(3) 控制的实时性。
工业控制机应具有时间驱动和事件驱动能力,要能对生产过程工矿变化实时地进行监视和控制。
为此,需要配有实时操作系统和中断系统。
(4)完善的输入输出通道。
为了对生产过程进行控制,需要给工业控制机配备完善的输入输出通道,如模拟量输入、模拟量输出、开关量输入、开关量输出、人-机通信设备等。
(5)丰富的软件。
工业控制机应配备较完整的操作系统、适合生产过程控制的应用程序。
工业控制软件正向结构化、组态化方向发展。
2.研华PCI总线数据采集与输出板卡
(1)研华PCI-1713U是一种32路隔离模拟量输入卡,可支持32 路单端或16路差分输入,包含12位A/D转换器,采样频率可达100KHZ,并提供直流2500V隔离保护功能,本实验中利用PCI1713U板卡进行实时温度变送电压信号采集。
研华PCI-1720U是一种4路隔离模拟量输入卡,多输出范围可选,包含12位D/A转换器,吞吐频率可达500KHZ,精度±0.024%,也具有直流2500V隔离保护功能,本实验中利用PCI-1720U板卡进行实时模拟电压信号输出。
图4 研华PCI板卡外观图
(2)PCI-1713U板卡设备的安装
首先进入研华公司官方网站找到并下载下列程序:
PCI1710.exe、DevMgr.exe、PortIO.exe、All_Examples.exe、Utility.exe等。
1)安装设备驱动程序
在测试板卡和使用研华驱动编程之前必须首先安装研华设备管理程序DeviceManager和32bitDLL驱动程序。
首先执行DevMgr.exe程序,根据安装向导完成配置管理软件的安装;接着执行PCI-1713.exe程序,按照提示完成驱动程序的安装。
2)安装硬件
关闭计算机电源,打开机箱,将PCI-1713U板卡正确地插到一空闲的PCI插槽中,如图5所示,检查无误后合上机箱。
图5 板卡安装图
重新开启计算机,进入WindowsXP系统,首先出现“找到新的硬件向导”对话框,选择“自动安装软件”项,点击“下一步”按钮,计算机将自动完成Advantech PCI-1713UDevice驱动程序的安装。
系统自动地为PCI板卡设备分配中断和基地址,用户无需关心。
检查板卡是否安装正确:
右击“我的电脑”,点击“属性”项,弹出“系统属性”对话框,选中“硬件”项,点击“设备管理器”按钮,进入“设备管理器”画面,若板卡安装成功后会在设备管理器列表中出现PCI-1713U的设备信息,如图6所示。
查看板卡属性“资源”选项中,可获得计算机分配给板卡的地址输入输出范围:
C000-C0FF,其中首地址为C000,分配的中断号为22(与板卡在扩展槽中的位置有关),如图7所示。
图7板卡资源信息
3)配置板卡
在测试板卡和使用研华驱动编程之前必须首先对板卡进行配置,通过研华板卡配置软件DeviceManager来实现。
从开始菜单/所有程序/AdvantechAutomation/DeviceManager打开设备管理程序AdvantechDeviceManager,如图8所示。
如果没有安装的板卡,先找到该板卡,再执行“Add”即可。
图8 配置板卡
4)板卡测试
可以利用板卡附带的测试程序对板卡的各项功能进行测试。
运行设备测试程序:
在研华设备管理程序Advantech DeviceManager对话框中点击“Test”按钮,出现“AdvantechDeviceTest”对话框,通过不同选项卡可以对板卡的“AnalogInput”、“AnalogOutput”、“DigitalInput”、“Digital Output”、“Counter”等功能进行测试。
3.温度对象
温度对象为一小型电加热炉,温度由AD590集成温度传感器检测,并转换为0-10V电压输出,对应0-100℃。
调功器的输入为0-10V,调节加热功率。
五、实验内容
1.采集温度对象的温度。
2. 标度变换,将采集到的0-10V电压信号转换为0-100℃温度值。
3.输出0-10V的电压值,送给调功器,给电加热炉加热,并在电压表上进行显示。
六、实验接线图
本试验中,研华PCI板卡均已插到IPC中,并且系统已经安装好板卡驱动,主板上的PCI板卡已通过PCL-10137电缆(如图9)连接于ADAM-3937接线端子板(如图10)上,这样,PCI板卡针脚号与ADAM-3937接线端子板标号一一对应。
图9PCL-10137电缆 图10 ADAM-3937接线端子板
PCI-1713U、PCI-1720U针脚定义信息见图11及图12。
其中PCI-1713U的I/O接口为37针D型接口,AD0—AD31为32路模拟量输入通道,GND为接地端,EXT_TRG为外部触发源触发A/D转换,当EXT-TRG有一个上升沿时触发一次A/D转换,没有使用外部触发功能时EXT-TRG脚不要连接任何信号。
其中PCI-1713U的I/O接口为37针D型接口,Vout0—Vout3为4路模拟量电压输出通道,Isink0—Isink3为4路电流汇点通道,+12Vout为+12V直流电源,用于电流环路激发电压,AGND为模拟量接地端,NC未连接。
图11 PCI-1713U针脚定义图 图12PCI-1720U针脚定义
在程序中,我们使用PCI-1713U的AI0通道进行电压采集,使用PCI-1720U的AO0通道进行电压输出,按照图13连接好硬件设备。
图13硬件连接示意图
七、实验步骤
1.Visual C++环境下人机界面的建立
①启动Visual C++6.0,单击“文件”菜单中的“打开工作空间”命令,以显示打开对话框,找到并打开“E:
/计算机控制实验/基于研华PCI板卡的温度采集与控制输出/GHL.dsw”,文件。
打开后在左侧的工程浏览器中切换至“ResourceView”选项卡,展开“GHLResource”文件夹,再展开Dialog“文件夹,双击”IDD_GHL_DIALOG“,即可打开如图所14示的界面
图14程序界面
图中,“输出电压编辑框”用于设置PCI-1720U板卡输出电压,以接到温控对象的输入端。
“变换系数编辑框”用于设置PCI-1713U采集的温度变送器电压与实际温度之间的对应关系。
温度显示区可以实时显示当前温度、从开始采集到目前的温度平均值、最大值、最小值。
“温度下限编辑框”和“上限编辑框”分别用于设置温度下限和上限报警值,当实时温度高于所设上限温度或低于所设下限温度时,对应指示灯会变为红色。
温度监测曲线可以根据温度数值绘制出温度变化曲线,方便我们观察温度变化趋势。
历史采样数据显示区可以显示我们从开始采集到目前的所有温度采集数值。
“输入板卡选择”按钮用于选择系统所用到的数据输入板卡(该实验中我们选择PCI-1713U),“输出板卡选择”按钮用于选择系统所用到的数据输出板卡(该实验中我们选择PCI-1720U)。
当各项参数设置完毕,我们就可以点击“开始实验”按钮,系统便开始按当前设置采集数据,并输出所设置的输出电压。
“停止实验”按钮用于终止实验。
我们可以通过“保存数据”按钮把当前采样数据保存至txt文件中,以后可以通过“打开文件”按钮来打开我们所保存的数据。
“退出程序”按钮用于退出该程序。
②添加成员变量,在“查看”菜单中或在对话框上单击鼠标右键,打开“建立类向导”中的MemberVariables标签,选中所需的空间ID号,双击鼠标左键或单击AddVariables按钮,为表1中的所列控件增加成员变量。
表1 成员变量
控件ID号
变量类型
变量名
IDC_DAQAICTRL1
CDAQAI
m_daqai
IDC_DAQAOCTRL1
CAdaout
m_daqao
③切换到“建立类向导”的MessageMaps标签页或在对话框中双击每一个按钮,为“输入板卡设置”(ID号:
IDC_BUTTON8)、“输出板卡设置(ID号:
IDC_BUTTON9)”及“退出程序(ID号:
IDCANCEL)”按钮分别添加ON_BN_CLICKED消息响应函数OnButton8()、OnButton9()及OnCancel()。
④在工程浏览器中切换到““选项卡,单击”GHL Files“,然后双击以打开”SourceFiles“文件夹,然后打开“GHLDlg.cpp”文件,分别为“voidCGHLDlg:
:
OnButton8()”、“void CGHLDlg:
:
OnButton9()”以及“voidCGHLDlg:
:
OnCancel()”函数添加功能代码,以完成输入输出板卡打开及初始化等操作。
void CGHLDlg:
:
OnButton8() //输入板卡选择
{
//TODO:
Add yourcontrol notificationhandlercode here
m_daqai.SelectDevice();//选择模拟量输入设备
ﻩm_daqai.SetStartChannel
(1);//通道号1
……
}
⑤为“voidCGHLDlg:
:
OnTimer(UINT nIDEvent)”函数添加功能代码,以实现数据的采集、标度变换、以及控制电压的输出等功能。
void CGHLDlg:
:
OnTimer(UINTnIDEvent)//时钟消息
{
ﻩ//TODO:
Addyourmessagehandlercodehereand/orcalldefault
ﻩif(num>199)renew();
ﻩdata[num]=(float)((m_daqai.RealInput
(1))*xishu);//获取AI通道数据(温度值)
……
}
2.开始试验
(1) 接通电源
确认硬件连线正确无误后,按照图15所示依次接通实验系统总电源(图中①)和温控对象电源(图中②)。
图15电源开关
(2)VisualC++程序设计、调试完毕,运行程序。
① 程序启动后,首先点击“输入板卡选择”按钮,选择模拟量输入板卡PCI-1713U、再点击“输出板卡选择”按钮,选择模拟量输出板卡PCI-1720U。
② 依次设置好控制输出电压、温度变换系数、上下限温度报警值(更改数值后一定要点击编辑框后面的“确定”按钮,否则数值不会被更改)。
③点击“开始实验”按钮,系统开始进行数据采集,并在相应区域显示出温度变化曲线、实时电压、实时温度、温度最小、最大值、平均值、以及历史采样数据等信息。
④实验中对参数更改时,系统会自动停止运行,参数修改完毕后,再点击“开始试验”按钮即可重新采集数据。
⑤点击“保存数据”按钮,会把该次温度采集数据保存到txt中,点击“打开文件”按钮,并选择需要打开的文件,系统会读取文本数值并绘制出温度曲线。
⑥点击“退出程序按钮”,可退出系统。
⑦ 实验结束后,关闭程序和计算机,拆除相关系统连线,并整理好。
最后确保所有设备电源均已关闭,离开实验室。
系统运行过程画面如图16
图16系统运行过程画面
八、思考题
(1) 如何实现研华PCI板卡与Visual C++的通信?
(2)如何验证程序显示的温度是准确的?
(3) 基于VisualC++开发的MFC程序较其他语言有什么优势与特点?
九、实验报告要求
(1)写出Visual C++主要程序块,说明各自功能作用。
(2)画出实验系统结构图和板卡接线图。
(3)将程序运行“截图”粘贴到实验报告中,并给出相关解释说明。
(4)回答思考题中的问题。
(5)提出实验中的问题和建