计算机测控系统实验指导书 - 图文

更新时间:2024-06-10 16:05:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

计算机测控系统实验指导书

第1章 计算机测控系统实验基础

1.1 Borland C++Builder 6.0应用指导

1.1.1 Borland C++Builder 6.0简介

Borland C++Bilder 6.0是Interprise(Borland)公司推出的基于C++ 语言的快速应用程序开发(Rapid Application Development,RAD)工具,它是最先进的开发应用程序的组件思想和面向对象的高效语言C++融合的产物。C++Bilder充分利用了已经发展成熟的Delphi 的可视化组件库(Visual Component Library,VCL),吸收了Borland C++ 6.0 这个优秀编译器的诸多优点。C++Builder 结合了先进的基于组件的程序设计技术,成熟的可视化组件库和优秀编译器,调试器。发展到6.0版本,C++Builder 已经成为一个非常成熟的可视化应用程序开发工具,功能强大而且效率高。

C++Builder的特色如下:

①C++Builder 是高性能的C++开发工具

C++Builder是基于C++的,它具有高速的编译,连接和执行速度。同时,C++Builder具有双编译器引擎,不仅可以编译C/C++程序,还能编译Object Pascal语言程序。

②C++Builder是优秀的可视化应用程序开发工具

C++Builder是一完善的可视化应用程序开发工具,使程序员从繁重的代码编写中解放出来,使他们能将注意力重点放在程序的设计上,而不是简单的重复的劳动中。同时,它提供的完全可视的程序界面开发工具,从而使程序员对开发工具的学习周期大大缩短。

③C++Builder具有强大的数据库应用程序开发功能

C++Builder 提供了强大的数据库处理功能,它使的程序员不用写一行代码就能开发出功能强大的数据库应用程序,这些主要依赖于C++Builder众多的数据库感知控件和底层的BDE数据库引擎。C++Builder除了支持MicroSoft的ADO(Active Data Object)数据库连接技术,还提供了一种自己开发的成熟的数据库连接技术——BDE(Borland Database Engine)数据库引擎。

1.1.2 C++Builder6.0的集成开发环境 (1)C++Builder 6.0的IDE主界面

1

第1章 计算机测控系统实验基础

(2)组件面板

标准组件选项卡上的组件是构成Windows应用程序窗口最常用的标准元素,它们包括15种组件。主要有:主菜单(MainMenu),右键菜单(PopMenu),标签(Label),备注(Memo),命令按钮(Button),单选按钮(GroupBox),复选按钮(CheckBox),列表框(ListBox),下拉式列表框(ComboBox),滚动条(ScrollBar),组框(GroupBox)和单项按钮组框(RadioGroup)。

附加组件选项卡上的组件是Windows应用程序常用的专门控制元素,它包括14种组件。主要有:位图按钮(BitBtn),加速按钮(SpeedButton),格式编辑框(MaskEdit),字符网格(StringGrid),数据网格(dataGrid),图片框(Image),形状(Shape),和控制栏(ControlBar)。

Win32组件选项卡上的组件是32位Windows应用程序的常用元素,它们具有32位应用程序的新特征,Win32组件选项卡共包括18种组件。分页面控制(PageControl),图片列表(ImageList),多文本编辑器(RichEdit),列表视图框(ListView),树状目录视图框(TreeView),工具栏(ToolBar)和状态栏(StatusBar)。

除了以上3个主要的组件选项卡以外,还有其他相应的组件选项卡,这里不再一一介绍。

(3)对象查看器

2

计算机测控系统实验指导书

对象名称用于选择和查看当前对象的名称,属性选项卡用于设置对象设计时的可见属性,事件选项卡用来设置对象的事件句柄或者在代码编辑器中定位对象事件句柄。

1.1.3 创建和运行应用程序 (1)创建应用程序

在主菜单中选择【File】中的【New】,在New 对话框中选择Application,按OK。

(2)运行应用程序

在菜单中选择【Run】中的【Run】,或者直接按快捷菜单上的运行按钮,还有是按快捷键F9,就可以运行当前程序。

1.1.4 保存程序

在主菜单中选择【File】中的【Save All】选项。再把所有文件(包括*.cpp,*.bpr)都保存到同一个目录下面。

3

第1章 计算机测控系统实验基础

1.1.5 加载ActiveX控件

众所周知,ActiceX控件因为其可以跨平台的特性使得ActiveX在很多环境下被广泛地使用。在C++Builder中引用ActiveX很简单。具体操作是在主菜单【Component】中选【Import ActiveX Control…】,弹出【Import ActiveX】的对话框,在对话框中选择你要引用的ActiveX控件。

(1)控件类明(Class name) 可以包括多个,表示这个ActiveX控件包里面有多个ActiveX控件,这里只加入了一个TMSComm控件。

(2)组件在Component Palette(组件面板)的页面(Palette page)

在本例中,我们把引入的ActiveX控件放在ActiveX页面中。

(3)组件的源文件(cpp), 一般不用修改(Unit dir name)

(4)当前搜索路径,一般不用修改(Search path)

以上四个步骤完成以后,按【Install】键,ActiveX控件就可成功的引入到

C++Builder组件面板的ActiveX页面中。

注意:TMSComm控件的具体用法见教材P195。

1.1.6 多页面窗口设计

多页面窗口就是指可以在同一个窗口上建立好几页重叠的画面,并且可以利用顶端的‘标签头’在各页中间切换,C++Builder的组件面板就是一个多页面的对象。用多页面设计的用户界面,是非常好用的界面,因为我们可以将一大堆功能或选项利用这中界面分类,而且只占用整

个屏幕的其中一小部分,既美观又省平面空间,更重要的是我们可以一眼看到整个窗口。

4

计算机测控系统实验指导书

C++Builder提供了两种多页面的窗口组件,一种是新的Windows xp和Windows 2000界面的PageControl组件(在组件面板的Win32上)。另一种是Windows3.1操作界面的TabbedNotebook组件(在组件面板的Win3.1页上),我们这里只讲前者。

首先新建一个工程,把一个PageControl组件加到Form1上,在PageControl1上点击鼠标右键,弹出右键菜单,选择【New Page】功能来增加页面,【Next Page】或者【Previous Page】功能选项来前后变换当前页面,选择【Delete Page】功能删除当前页面。不过必须先把焦点定在页面组件上,再按【Del】键,那么选中页面就会被删除;如果你不小心把焦点定在PageControl上,整个PageControl组件都会从Form1中删除掉,所以在删除页面的时候要多加小心(见下图)。多页面组件(PageControl)的几个常用属性:

(1)ActivePage

当前激活的页面,可以在设计时设置,则为程序运行时的默认当前页面;也可以在程序运行中动态改变其值,使想要的页面自动变成当前激活页面。 例如:

PageControl1->ActivePage=TabSheet2;//把第二页设置为当前页

(2)PageIndex

页面排列顺序,修改

此栏可以改变页面排列的

顺序。可以在设计时设置,也可以在程序运行中修改。

例如:PageControl1->Pages[2]->PageIndex=0;//把第三页调到最前面。 (3)MultiLine

多页面显示类型。如果是false,则当你增加的页面超过Form的宽度,会在Form的右上角显示一对左右方向的箭头符号,可以点选箭头符号来查看超过窗口范围的页面;如是true,则可以把所以的页面标签都显示通通显示在同一个Form的窗口范围内

5

第1章 计算机测控系统实验基础

1.1.7 在C++Builder中使用图形

C++Builder的VCL图形组件封装了Windows图形设备接口(GDI,Graphics Device Interface),使得在Windows程序设计中添加图形也变得很容易。 在C++Builder应用程序中绘制图形,应该在图形对象(如Form,Image等)的画布(Canvas)中绘制,而不是直接在对象中绘制。画布是图形对象的属性,同时它本身又是对象。画布对象的一个主要的优点是它能够有效地处理资源并且能管理设备场境。所以应用程序可以用相同的方法在屏幕、打印机、位图或者图元文件中绘图。直接在控件的画布上绘图,该图就会立即显示。画布(Canvas)的主要属性和方法如下表所示:

属性 Font Brush Pen PenPos Pixels 说明 指定在图象中写入文本时使用的字体。设置TFont对象的属性可以指定字体、字体的颜色、大小和样式。 决定画布在填充图形形状和背景时使用的颜色和图案。设置TBrush对象的属性可以指定在填充画布的空间使用的颜色、样式或位图。 指定画布在绘制线条和边框时使用的画笔类型。设置TPen对象的属性可以指定画笔的颜色、样式、宽度和模式。 指出画笔当前的位置。 指出当前的画笔所在的位置的象素的颜色值。

(1)使用画笔(Pen)

画布的Pen属性控制线条出现的方式,包括用来绘制形状外框的线条。 画笔本身有四个属性:Color,Width,Style和Mode: ①Color属性:更改画笔的颜色 Canvas->Pen->Color=color; 值 clBlack clWhite clBlue clRed clGreen

6 说明 黑色 白色 蓝色 红色 绿色 计算机测控系统实验指导书

还可以用rgb的各分量的值来表示一种颜色: Canvas->Pen->Color=RGB(214,214,200);

②Width属性:更改画笔的宽度 Canvas->Pen->Width=n;

③Style属性:更改画笔的样式 Canvas->Pen->Style=psDash;

值 psSolid psDash psDot psDashDot PsClear 说明 实线 虚线 点画线 点虚线 清除线 ④Mode属性:更改画笔的模式 Canvas->Pen->Style=pmCopy; 值 pmBlack pmWhite pmNop pmNot pmCopy 说明 总是黑色 总是白色 颜色不变 转成背景颜色 指定颜色(默认值)

(2)使用画刷(Brush)

画布的Brush属性控制填充区域的方式,包括形状的内部区域。画刷有三个属性: ①Color属性:更改填充颜色 Canvas->Brush->Color=color;

②Style属性:更改画刷样式 Canvas->Brush->Style=bsSolid;

③使用位图作为画刷模式

BrushBmp->LoadFromFile(\

7

第1章 计算机测控系统实验基础

Form1->Canvas->Brush->Bitmap = BrushBmp;

Form1->Canvas->FillRect(Rect(0,0,100,100));

(3)单独设置和获取单个象素点

读取:color=Canvas-> Pixels[x][y];//读取位置为(x,y)的象素的点的颜色值。 Canvas->Pixels[x][y] = clRed; //把位置为(x,y)的象素值设置为红色。

(4)使用Canvas的方法来绘制图形对象 ①绘制直线

Canvas->MoveTo(0, 0);

Canvas->LineTo(X, Y);//从(0,0)到(X,Y)画一条直线。

②绘制矩形、椭圆形和圆角矩形

矩形:Canvas->Rectangle(0, 0, 100, 400);

椭圆形:Canvas->Ellipse(0, 0, Image1->Width, Image1->Height); 圆角矩形:Canvas->RoundRect(x, y, x + Dx, y + Dy, Dx/2, Dy/2); ③绘制多边形

Windows::TPoint points[4]; points[0] = Point(10,10); points[1] = Point(30,10); points[2] = Point(130,30); points[3] = Point(240,120); Canvas->Polygon(points, 3);

1.1.8 C++Builder画面设计实例

用C++ Builder编程实现下图所示的显示画面,实时趋势所需的数据由内部函数值代替。

解:上图所示的画面设计称之为窗体设计,是用C++ Builder中的控件绘制的。曲线和棒

8

计算机测控系统实验指导书

图的动态显示则是通过程序实现的。

(1)窗体设计 ①趋势曲线和棒图的刻度盘采用Image控件装入预先绘制好的位图文件。两个Image控件标记为Image1和Image2。

②趋势曲线和棒图的刻度、工位号、工位名称、SP、PV、MV及参数名称等画面上的可视文字信息,均利用Label控件直接显示。该画面所使用的Label控件标记为Label1~Label35。

③最新报警点的点号及报警类型也由Label控件实现,但由程序控制其显示状态。这两个Label控件标记为Label36和Label37。

④所有可变数值的显示使用Edit控件实现,各控件标记为Edit1~Edit14。 ⑤使用PageControl控件实现不同类画面的切换。 ⑥使用Button控件实现同类画面的翻页操作及某些控制功能。 ⑦使用Timer控件实现数据、曲线、棒图的实时刷新操作。

(2)参考程序

#include

#include #pragma hdrstop #include \

#pragma package(smart_init) #pragma resource \

float t30sp=138.5,t30pv=130.5,t30mv=50.2;//假设值 int t30trend[480]; //曲线有480个点 int t1;

TForm1 *Form1; //窗体程序

__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner)

{ }

//定时器处理程序

void __fastcall TForm1::Timer1Timer(TObject *Sender) {

t30pv=120+50*sin(t1*5*3.1415/360); //建立实时数据,Y=A+B*SIN(C) t1++;

for(int i=0;i<479;i++)

{

t30trend[i]=t30trend[i+1]; //刷新实时数据 }

t30trend[479]=t30pv; //最新数据

Image2->Picture->LoadFromFile(\; //重调背景,清楚当前棒图 Image2-> Canvas->Pen->Color = clRed; //给定值棒图为红色 Image2-> Canvas->Pen->Width = 3; //棒条宽度 Image2->Canvas->MoveTo(20,181); //给定值棒条起点 Image2->Canvas->LineTo(20,181-t30sp*177/300); //比例变换 Image2-> Canvas->Pen->Color = clBlue; //测量值棒图为兰色 Image2->Canvas->MoveTo(26,181); //测量值棒条起点 Image2->Canvas->LineTo(26,181-t30pv*177/300); //比例变换 Image2-> Canvas->Pen->Color = clGreen; //输出阀位为绿色 Image2->Canvas->MoveTo(46,181); //阀位棒条起点 Image2->Canvas->LineTo(46,181-t30mv*177/300); //比例变换 Image1->Picture->LoadFromFile(\; //重调趋势背景,清除当前趋势曲线

9

第1章 计算机测控系统实验基础

Image1-> Canvas->Pen->Width = 1; //曲线粗细程度 Image1-> Canvas->Pen->Color = clRed; //测量值曲线为红色 Image1->Canvas->MoveTo(0,300); //曲线起点 for(int i=0;i<480;i++) //曲线由480个点组成

{

Image1->Canvas->LineTo(i,300-t30trend[i]); //两点之间连一直线 }

Image1-> Canvas->Pen->Color = clBlue; //给定值曲线为兰色 Image1->Canvas->MoveTo(0,300); //曲线起点 for(int i=0;i<480;i++) //曲线由480点组成

{

Image1->Canvas->LineTo(i,300-t30sp); }

Edit1->Text=FloatToStrF(t30sp,0,4,4); Edit2->Text=FloatToStrF(t30pv,0,4,4); Edit3->Text=FloatToStrF(t30mv,0,3,3)+\; } 10

//两点之间连一直线 //给定值显示,取4位有效数 //测量值显示,取4位有效数 //阀位值显示,取3位百分数形式

计算机测控系统实验指导书

1.2 AC6611 PCI过程板卡及其应用

AC6611是北京双诺测控技术有限公司一款廉价通用A/D、D/A板和I/O卡,AD工作在查询方式,采用PCI总线支持即插即用、无需地址跳线。AC6611具有16路单端模拟输入、1路12位D/A和32路开关量(16路输入及16路输出)。

1.2.1 AC6611性能参数

(1)模拟量输入(A/D)

●A/D转换器: 120KHZ ,12位A/D,ADS7816,A/D内置采样保持器。 ●工作方式:软件查询。

●16路单端输入,输入阻抗:1MΩ

●最大输入耐压电压:< +12V / -5.5V,瞬时输入耐压:-25V - +30V ●连接器:DB25孔式输入连接器。

●A/D最大通过率: 70KHZ,输入通道建立时间<8uS。

●双极性输入范围:? 5V,单极性输入范围:5V、10V。输入范围跳线器选择,对应输入幅度及精度如下:

输入 0-10V 0-5V -5V-+5V

(2)模拟量输出(D/A)

●1路12位DA,分辨率12位,精度:0.2%, ●电压输出,最大输出电流:5毫安。 ●输出零点误差小于±10毫伏。

●输出范围:10伏、±10伏,跳线器选择。 ●输出建立时间小于:50微秒。 ●输出插座:DB25(孔)连接器。

(3)开关量输入/输出

●16路开关量输入(2个8位),16路开关量输出(2个8位) ●TTL电平(兼容3伏逻辑)

●开关量输出复位后为输出为低电平“0”。

●输出高电压 > 2.5V,低电压 < 0.5V,最大输出电流 :8mA ●输入电流:<0.1mA 输入高电压门限:〉2V, 低电压:〈 0.8V。 ●输入耐压:高电平最大耐压:8伏,低电平:-0.4伏。 ●连接器:40脚扁平电缆插座。

(4)其它

●符合PCI V2.1标准,供电:+5伏、+12伏、-12伏。 ●AC6611占用64个I/O选通空间(自动分配)。

●工作温度:0-70℃,尺寸:12(W) X 9(H) (厘米)

11

系统精度(FSR) 0.1% 0.1% 0.1% 跳字 ? 1LSB ? 1.5LSB ? 1LSB 第1章 计算机测控系统实验基础

1.2.2 AC6611及其端子板实物图

AC6611必须通过端子板才能连接外部的输入/输出模拟量信号和开关量信号,其配套的模拟量输入/输出端子板为AC157,开关量输入输出端子板为AC142,三者如下图所示。

12

AC6611

AC157

AC142

计算机测控系统实验指导书

1.2.3 AC6611与端子板的连接

AC6611通过DB25连接器和AC157连接,通过40芯扁缆连接器与AC142或AC145连接,其连接接关系如下图所示(实验人员已经安装和连接好AC6611、AC157和AC142)。

P1 DB25 AC6611 P2 AC157 IDC40

AC142 AC145 1.2.4 AC6611跳线配置

S1的三针跳线开关选择AC6611的A/D的输入范围,其可选配置如下表所示。 A/D输入范围 0~5V 不短接 S1配置

JP5的三针跳线开关选择AC6611的D/A输出范围,其可选配置如下表所示。 A/D输入范围 ±10V 1-2短接 JP5配置 1 2 3 0~10V 2-3短接 1 2 3 1 2 3 0~10V 1-2短接 1 2 3 ±5V 2-3短接 1 2 3 13

第1章 计算机测控系统实验基础

1.2.5 AC6611连接器引脚定义

AC6611通过连接器P1和AC157端子板连接,通过连接器P2和端子板AC142连接,其中P1为DB25连接器,P2为40芯扁缆连接器。

P1连接器的引脚定义如下图所示。

P1连接器(DB25) P1AIN0AIN8AIN1AIN9AIN2AIN10AIN3AIN11AIN4AIN12AIN5AIN13AIN6AIN14AIN7AIN1511421531641751861972082192210231124122513DB25P2连接器(IDC40)

DI0DI2DI4DI6DI8DI10DI12DI14DO0DO2DO4DO6DO8DO10DO12DO14P213579111315171921232527293133353739IDC40246810121416182022242628303234363840DI1DI3DI5DI7DI9DI11DI13DI15DO1DO3DO5DO7DO9DO11DO13DO15DAOUT

1.2.6 AC157接线端子

AC157的接线段子和其上的P1连接器以及AC6611的P1连接器的信号是一一对应的,端子的布局及其表示的信号如下图所示。

P1

CH0

CH1 CH8 CH0 CH2 CH9 CH3 CH10 CH4 CH11 CH5 CH12 CH6

CH13 CH7

CH14 GND

CH15 P10 GND P11 P23 P12 P24 P13 P25

14

计算机测控系统实验指导书

图中的模拟量输入通道CH0~CH15分别对应P1连接器的AI0~AI15(各通道均为单端输入,参考端均为GND)。P11~P13对应P1连接器的引脚11~13(未用),P23~P25对应P1连接器的引脚23~25,其中的P23为D/A输出通道(参考端为GND),其它两个引脚未用。

1.2.6 AC142接线端子

AC142的接线段子和其上的P1连接器以及AC6611的P1连接器的信号是一一对应的,端子的布局及其表示的信号如下图所示。

DB37 8 DI7 16 DI13 24 DO3 32 DO9 40 GND 7 DI6 15 DI12 23 DO2 31 DO8 39 GND

6 DI5 14 DI11 22 DO1 30 GND 38 DO15

5 DI4 13 DI10 21 DO0 29 GND 37 DO14

4 DI3 12 DI9 20 GND 28 DO7 36 DO13

3 DI2 11 DI8 19 GND 27 DO6 35 DO12

2 DI1 10 GND 18 DI15 26 DO5 34 DO11

1 DI0 9 GND 17 DI14 25 DO4 33 DO10 P1

1.2.7 安装AC6611驱动程序

(1)Windows 98平台下安装AC6611驱动程序 ①关闭计算机的电源;

②将AC6611板卡插入PCI槽中;

③打开计算机电源,启动Windows 98;

④Windows 98将会显示找到新硬件(将显示找到PCI Early non-VGA Device),进行下一步;

⑤在添加硬件向导窗口中选择搜索设备的最新驱动程序,下一步; ⑥选择驱动所在目录,进行安装(\\ac6611\\driver\\);

⑦Windows 98将显示找到WWlab PCI AC6XXX A/D Board提示进行下一步; ⑧驱动已经安装完成

安装完毕后将在设备管理器中出现一个其他设备(其他设备是问号,不表示设备有问题,只是表示系统不知道ac6611是何种类型设备)

(2)Windows 2000平台下安装AC6611驱动程序 ①关闭计算机的电源;

②将ac6611板卡插入PCI槽中;

③打开计算机电源,启动Windows 2000;

15

第1章 计算机测控系统实验基础

④Windows 2000将会显示找到新硬件,可按找到新硬件向导进行下一步; ⑤选择搜索适用与我的设备的驱动程序(推荐),下一步; ⑥选择驱动所在目录,进行安装(\\ac6611\\driver\\); ⑦按找到新硬件向导的提示进行下一步;

⑧Windows 2000将显示完成添加/删除硬件向导,单击完成即可完成安装过程

安装完毕后将在设备管理器中出现一个其他设备(其他设备是问号,不表示设备有问题,只是表示系统不知道ac6611板卡是何种类型设备)

(3)Windows XP平台下安装AC6611驱动程序 ①关闭计算机的电源;

②将ac6611板卡插入PCI槽中;

③打开计算机电源,启动Windows XP,Windows XP将会显示找到新硬件; ④在“找到新硬件向导”对话窗中选择“从列表或指定位置安装”,下一步; ⑤选择驱动所在目录,进行安装(\\ac6611\\driver\\); ⑥按找到新硬件向导的提示进行下一步;

⑦Windows XP将显示完成添加/删除硬件向导,单击完成即可完成安装过程

安装完毕后将在设备管理器中出现一个其他设备(其他设备是问号,不表示设备有问题,只是表示系统不知道ac6611板卡是何种类型设备)

驱动安装后,ac6611.sys, ac6611.dll文件就自动被复制到系统中去了,可以进行其他测试、开发工作了。若无法正常安装,请换一台机器再尝试安装过程,若安装成功,说明安装不成功的机器系统有问题,考虑重装系统,在进行安装AC6611驱动。

注意:一般情况下,实验室已经安装好AC6611的驱动程序,只是在驱动程序出现问题或在没有驱动程序的机器上使用AC6611时才需要重新安装驱动程序。

1.2.8 AC6611测试程序的使用方法

使用AC6611测试程序可以检验AC6611卡件的功能是否正确,AC6611测试程序不需要安装,其名称为“AC6611(静态).EXE”,找到其存放目录(可以询问实验老师)双击即可运行,其界面如下图所示。界面分为A/D、D/A和I/O三个测试区域。

16

计算机测控系统实验指导书

(1)AC6611模拟量输入的测试

以下操作在界面的A/D测试区域进行操作,如右图所示。

①选择输入量程

AC6611的输入量程可以是0~5V、0~10V和-5V~+5V,选择的输入量程应该和板卡设置的量程一致,否则无法获得正确的采集结果。

②选择起始通道通道和结束通道 AC6611共有16个通道,可以选择任何一个或多个通道进行采集,如果只采集一个通道,将起始通道和结束通道设为相同即可。

③给指定的通道施加电压信号,注意不能超过选择的量程和极限电压范围,否则将损坏AC6611板卡。

④按启动按钮,启动数据采集,其显示情况如右图所示。

⑤观察采集结果和实际施加的电压是否相同或接近,如果相同或接近,则说明板卡是好的,否则说明板卡存有故障。如果板卡是好的,则还可利用测试软件测试其各项指标。

注意:可以使用AC6611的D/A输出作为电压信号源。

(2)AC6611模拟量输出的测试

以下操作在界面的A/D测试区域进行操作,如下图所示

①选择输入量程

AC6611的模拟量输出量程可以是0~10V或-10V~+10V,选择的输出量程应该和板卡设置的量程一致,否则无法获得正确的采集结果。

②使用鼠标移动滑块即可改变模拟量输出值,滑块移动后对应的电压值在屏幕上有显示。 ③使用万用表测量输出电压,如果和给定的输出电压一致或接近,则说明AC6611的D/A输出是正常的,否则有问题。

④通过测试软件可以测试D/A的各项指标。

17

第1章 计算机测控系统实验基础

注意:可以将AC6611的A/D当作万用表使用。

(3)AC6611 I/O功能的测试

以下操作在界面的I/O测试区域进行操作,如下图所示。

AC6611共有16路开关量输入和16路开关量输出,其中DI7~DI0和DI15~DI8分别为开关量输入的低8路(占1字节)和高8路(占1字节);其中DO7~DO0和DO15~DO8分别为开关量输出的低8路(占1字节)和高8路(占1字节)。对于开关量输入,红色方块表示高电平,绿色方块表示低电平;对于开关量输出,划钩(选中)表示输出高电平,反之输出低电平。 采用万用表测量其输出是高电平还是低电平。

注意:可以将某路开关量输出和开关量输入互连,通过改变某路开关量输出,观察某路开关量输入是否跟随开关量输出变化来测试I/O功能是否正确。

1.2.9 AC6611程序设计(开发)

AC6611提供有WDM驱动程序,支持Windows 98/Windows 2000/XP操作系统,提供DLL接口,支持多种语言,并提供大量例程方便用户开发使用(Visual C 6.0(win32 console、MFC)、Visual Basic 6.0、C++ Builder 5.0、Delphi 6.0)。 开发工作主要是通过调用DLL库中的专用函数操作AC6611板卡,从而达到实现AD、DA、DIO等功能。对于C++一类的语言,可以使用动态调用DLL的方法使用DLL,如Visual C++\\C++ Builder;对于Visual Basic\\Delphi等语言基本省略了加载DLL的过程,定义了函数说明后,可以直接使用DLL中的函数。

18

计算机测控系统实验指导书

(1)基本步骤

对于需要自行加载DLL的程序设计语言,AC6611程序设计的步骤如下: ①加载DLL;

②调用AC6611_CreateDevice();

③调用AC6611_AD( )、AC6611_DA( )、AC6611_DI( )、AC6611_DO( )?? ④AC6611_CloseDeivce()。

⑤卸载DLL

对于不需要自行加载DLL的程序设计语言,AC6611程序设计的步骤如下: ①调用AC6611_CreateDevice();

②调用AC6611_AD( )、AC6611_DA( )、AC6611_DI( )、AC6611_DO( )?? ③AC6611_CloseDeivce()。 开发流程如下图所示。

加载DLL DLL加载成功 N DLL不存在 未正确安 装 Y AC6611_CreateDevice 可否建立 设备句柄? N 指定板卡 未安装 Y 操作功能函数 AC6611_AD AC6611_DA AC6611_DI AC6611_DO ?? N AC6611_CloseDevice 卸载DLL 结束 19

第1章 计算机测控系统实验基础

(2)头文件

应在窗体头文件末增加以下内容 //define the function of Dll HINSTANCE hDLL; //DLL句柄

int hDevice; //驱动 句柄--->暂定为全局变量,自定义时,可以自己传递参数 unsigned long ErrorOf6611;

int __stdcall (*AC6611_CreateDevice)(int, unsigned long *);//创建驱动句柄 int __stdcall (*AC6611_CloseDevice)(int);//关闭驱动句柄

int __stdcall (*AC6611_DI)(int, int , unsigned char*);//输入数字量 int __stdcall (*AC6611_DO)(int, int , unsigned char);//输出数字量 int __stdcall (*AC6611_DiBit)(int, int , unsigned long);//输入数字量

int __stdcall (*AC6611_DoBit)(int, int , unsigned long, int);//输出数字量 int __stdcall (*AC6611_DA)(int, unsigned long);//DA输出

;//DA电压转换函数,将电压转换成0-4095,mode=0,1对应0-10V,+-10V int __stdcall (*AC6611_VoltageToDA)(float Voltage, int mode) //自动作延时10uS,返回AD数值0-4095

int __stdcall (*AC6611_AD)(int, int, unsigned long*);

int __stdcall (*AC6611_AD_CHN)(int, unsigned long);//设置通道0-15

int __stdcall (*AC6611_ADS)(int, unsigned long*);//直接采样,返回AD数值0-4095 //转换成实际电压的数据mode=0,1,2对应转换为5V,10,+-5V float __stdcall (*AC6611_ADToVoltage)(int AD, int mode);

注意:可以通过拷贝和粘贴范例程序的上述代码避免繁琐输入。

(3)主要API函数及其应用(均以C++Builder为例) 1)AC6611_CreateDevice

函数功能:创建AC6611设备驱动句柄

函数原型:HANDLE AC6611_CreateDevice(DWORD instance, PDWORD pError); 参数:

instance:板卡的编号0,1,2根据选择的板卡号,即第一、二、三块AC6611卡; pError:出错代码;

返回值:获得的驱动句柄由此返回;

备注:当获得有效句柄,说明该编号的AC6611存在;若句柄无效,则该编号的句柄不存在;这样比较方便进行多板卡操作; 实例:

void __fastcall TForm1::FormCreate(TObject *Sender) {

hDLL=LoadLibrary(\

if(hDLL!=NULL)Label6->Caption = \//Label6因程序而异 //创建驱动句柄

(FARPROC &)AC6611_CreateDevice=GetProcAddress(hDLL,\//关闭驱动句柄

(FARPROC &)AC6611_CloseDevice=GetProcAddress(hDLL,\

20

计算机测控系统实验指导书

//数字量输入,port=0-1两个通道,8位数据由DiData返回

(FARPROC &)AC6611_DI=GetProcAddress(hDLL,\//数字量输出,port=0-1两个通道,8位数据由DoData输出

(FARPROC &)AC6611_DO=GetProcAddress(hDLL,\//数字量输入,port=0-1两个通道,指定位输入

(FARPROC &)AC6611_DiBit=GetProcAddress(hDLL,\//数字量输出,port=0-1两个通道,指定位输出

(FARPROC &)AC6611_DoBit=GetProcAddress(hDLL,\//DA输出,0-4095

(FARPROC &)AC6611_DA=GetProcAddress(hDLL,\

(FARPROC &)AC6611_VoltageToDA=GetProcAddress(hDLL,\//通用AD采样

(FARPROC &)AC6611_AD=GetProcAddress(hDLL,\//设置AD通道0-15

(FARPROC &)AC6611_AD_CHN=GetProcAddress(hDLL,\//直接AD采样,为单通道AD采样设计

(FARPROC &)AC6611_ADS=GetProcAddress(hDLL,\

(FARPROC &)AC6611_ADToVoltage=GetProcAddress(hDLL,\hDevice=AC6611_CreateDevice(0, &ErrorOf6611); //创建驱动,选择第0块卡 if(hDevice != -1){

Label5->Caption = \因程序而异 }

else {

Label5->Caption = \

} }

注意:可以通过拷贝和粘贴范例程序的上述代码避免繁琐输入,以后雷同。

2)AC6611_CloseDevice

函数功能:关闭AC6611驱动句柄;

函数原型:int AC6611_CloseDevice(HANDLE hDevice); 参数: hDevice:欲关闭的驱动句柄;

返回值:出错信息,0为成功执行,其他为错误代码(由GetLastError()函数获得); 实例:

void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action) {

if(hDevice != NULL) AC6611_CloseDevice(hDevice); //关闭设备驱动 if(hDLL != NULL) FreeLibrary(hDLL); }

21

第1章 计算机测控系统实验基础

3)AC6611_DI

函数功能:输入数字量;

函数原型: int AC6611_DI(HANDLE hDevice, int port, unsigned char* data); 参数:

hDevice :驱动句柄;

port:端口号0,1,每通道有8个IO点,8bit。数据分别对应8个DI输入; data:输入的数据由此指针返回;

返回值:出错信息,0为成功执行,其他为错误代码(由GetLastError()函数获得);

备注:获得每位的操作,可以用该位为1,其他位为0的数相与,即可获得该位是1还是0; 实例: ??

unsigned char didata0, didata1;

AC6611_DI(hDevice, 0, &didata0); //数字量输入0口,数据存放在变量di_data0中 AC6611_DI(hDevice, 1, &didata1); //数字量输入1口,数据存放在变量di_data1中 Label1->Caption = IntToHex(didata0, 2); Label2->Caption = IntToHex(didata1, 2); ??

4)AC6611_DO

函数功能:输出数字量;

函数原型: int AC6611_DO(HANDLE hDevice, int port, unsigned char data); 参数:

hDevice :驱动句柄;

port:端口号0,1,每通道有8个IO点,8bit; data:输出的数据(8Bit数据,代表8个IO点);数据分别对应输出的8位数据; 返回值:出错信息,0为成功执行,其他为错误代码(由GetLastError()函数获得); 备注:

为将某位输出为1,可以将该位为1,其他位为0的数据和原来输出的数据进行或操作,这样其他位不变的情况下,该已经成为1了;为将某位输出为0,可以将该位为0,其他位为1的数据和原来输出的数据进行与操作,这样其他位不变的情况下,该已经成为0了; 实例: ??

AC6611_DO(hDevice, 0, 0xaa); //数字量输出0口,aa() AC6611_DO(hDevice, 1, 0x55); //数字量输出1口,55() ??

5)AC6611_DiBit

函数功能:读出数字量端口中指定的BIT;

函数原型: AC6611_DoBit(HANDLE hDevice, int port, unsigned char WhatBit, ); 参数:

hDevice :驱动句柄; port:IO端口号,0、1;

22

计算机测控系统实验指导书

WhatBit :8BIT中的那个BIT需要改变状态;取值为0-7; 返回值:指定位的值,1为高电平,0为低电平; 备注:方便开发人员直接读取端口中的某位的状态; 实例: ??

for(i=0;i<8;i++)

{

didata=didata | (1<<(i*AC6611_DiBit(hDevice, 0 , i)));//读入各BIT位 } ??

6)AC6611_DoBit

函数功能:输出数字量中指定的BIT;

函数原型: AC6611_DoBit(HANDLE hDevice, int port, unsigned char WhatBit, bitstate); 参数:

hDevice :驱动句柄; port:IO端口号,0、1;

WhatBit :8BIT中的那个BIT需要改变状态;取值为0-7; bitstate:1为高电平,0为低电平;

返回值:出错信息,0为成功执行,其他为错误代码(由GetLastError()函数获得); 实例: ??

AC6611_DoBit(hDevice, 0, i, 1); //直接BIT输出,通道0,D0,置为1 ??

7)AC6611_DA

函数功能:将0-4095的数值DA输出;

函数原型:AC6611_DA(HANDLE hDevice, unsigned long data); 参数:

hDevice :驱动句柄;

data :16位数值,范围0-4095;

返回值:出错信息,0为成功执行,其他为错误代码(由GetLastError()函数获得); 备注: 电压转换公式:DAData=实际电压/10.0*4095.0(0-10V);

电压转换公式:DAData=(实际电压+10.0)/20.0*4095.0(±10V); 根据需要也可以使用AC6611_VoltageToDA()做电压/数值转换; 转换时注意浮点和整型的关系问题;

实例: ??

float da_data;

da_data=5.789;

AC6611_DA(hDevice, AC6611_VoltageToDA(da_data,0)); //DA输出(0-10V)

23

int 第1章 计算机测控系统实验基础

// AC6611_DA(hDevice, AC6611_VoltageToDA(da_data,1));//DA输出(-10V-+10V)

Label12->Caption = FloatToStrF(da_data, ffFixed, 10,3);

Label11->Caption = IntToStr(AC6611_VoltageToDA(da_data,1)); ??

8)AC6611_VoltageToDA

函数功能:将(0-10V/±10V)实际电压的数据转换成0-4095; 函数原型:AC6611_VoltageToDA(float Voltage, int mode); 参数: Voltage :实际的浮点电压值(0-10v/±10V); Mode:0,1两种模式(0:0-10V/1:±10V); 返回值:转换成为0-4095的DA输出值;

备注:提供用户方便使用,省略了烦琐的数值转换。

电压转换公式:DAData=(输出电压+10)/20*4095(±10V); 例子:见AC6611_DA

9)AC6611_AD

函数功能:对指定通道chn进行采样,返回AD数值0-4095;

函数原型:AC6611_AD(HANDLE hDevice, int chn, unsigned long *AD); 参数:

hDevice :驱动句柄;

chn:AD转换通道号,0-15共16个通道;

AD:AD转换的数值有此指针返回,范围位0-4095;

返回值:出错信息,0为成功执行,其他为错误代码(由GetLastError()函数获得); 备注:做普通采集使用,加入了通道转换之间的延时。

电压转换公式:AD实际电压=ADData/5.0*4095.0 (0-5V) 电压转换公式:AD实际电压=ADData/10.0*4095.0 (0-10V) 电压转换公式:AD实际电压=(ADData-2048)/5.0*2048.0 (±5V)

转换时注意浮点和整型的关系问题;

或者根据需要选择提供的转换函数进行转换。

AC6611_ADToVoltage( )

如果信号源或者信号传输通道有噪声,影响准确采样,而在硬件上又无法解决,可以考虑采用多次测量求平均值的方法来解决。

测量的时候要注意:不用的模拟输入端要接地。使用的信号端一定要保证地线接触良好,否则不同电源系统地线之间的电压差将严重损坏AC6611板卡。

注意:为检测AC6611采样是否准确,请使用一节1.5V的干电池接入输入端或使用精密电压源,进行测量;不建议使用一般供电电源(使用一般电源有两个缺点:①易损坏AC6611;②普通电源的电压精度太差,和AC6611 0.1%的精度比差太远);使用对比用的电压表应考虑使用精度高于0.1%的高档仪表。

24

计算机测控系统实验指导书

实例: ??

unsigned long ad_data;

AC6611_AD(hDevice, 0, &ad_data); //0通道AD采样,数据存储于ad_data中(0-4095) //转换成0-5V显示

Label7->Caption = FloatToStrF(AC6611_ADToVoltage(ad_data,0), ffFixed, 10,3)+'V'; //转换成0-10V显示

//Label7->Caption = FloatToStrF(AC6611_ADToVoltage(ad_data,1), ffFixed, 10,3)+'V'; //转换成-5V-+5V显示

//Label7->Caption = FloatToStrF(AC6611_ADToVoltage(ad_data,2), ffFixed, 10,3)+'V'; ??

10)AC6611_ADS

函数功能:直接采样,返回AD数值0-4095;

函数原型:AC6611_ADS(HANDLE hDevice, unsigned long *AD); 参数:

hDevice :驱动句柄;

AD:AD转换的数值有此指针返回,范围位0-4095;

返回值:出错信息,0为成功执行,其他为错误代码(由GetLastError()函数获得); 备注:直接采样,不考虑AD通道转换的电压建立延时问题,主要针对单通道采样。 详细解释见AC6611_AD函数的备注 实例:

unsigned long ad_data; unsigned long chn=0;

AC6611_AD_CHN(hDevice, chn); //设置AD转换通道为0通道 AC6611_ADS(hDevice, &ad_data); //直接采样 //转换成0-5V显示

//Label9->Caption = FloatToStrF(AC6611_ADToVoltage(ad_data,0), ffFixed, 10,3); //转换成0-10V显示

Label9->Caption = FloatToStrF(AC6611_ADToVoltage(ad_data,1), ffFixed, 10,3); //转换成-5V-+5V显示

//Label9->Caption = FloatToStrF(AC6611_ADToVoltage(ad_data,2), ffFixed, 10,3);

11)AC6611_AD_CHN 函数功能:设置AD通道;

函数原型:AC6611_AD_CHN(HANDLE hDevice, int chn); 参数:

hDevice :驱动句柄;

chn:AD转换通道号,0-15共16个通道;

返回值:出错信息,0为成功执行,其他为错误代码(由GetLastError()函数获得); 备注:配合AC6611_ADS使用 实例: 见AC6611_ADS

25

第1章 计算机测控系统实验基础

12)AC6611_ADToVoltage

函数功能:转换成实际电压的数据0-5V/0-10V/-5V-+5V; 函数原型:AC6611_ADToVoltage(int AD, int mode); 参数: AD:AD采样值(0-4095) Mode:0,1,2分别对应0-5V/0-10V/-5V-+5V 返回值:已经转换为0-5V的实际电压值;

备注:提供用户方便使用,省略了烦琐的数值转换。 实例:见AC6611_AD

26

计算机测控系统实验指导书

第2章 计算机测控系统实验项目

实验一 A/D和D/A应用实验

一、实验目的

认识工业PC(IPC),了解其和PC的异同点;认识工业过程通道及其安装规则。

二、实验设备

工业PC样机、个人电脑样机、和教材配套的ISA总线过程板卡及其端子板。

三、实验方法

以老师讲解、演示,学生观看实物为主。

四、内容及实验步骤(思考题) 1. 认识工业PC

(1)工业PC机箱的材质、结构、尺寸,正压机箱的原理及其作用 (2)安装了几个风扇,哪个是,哪个是出风? (3)何为总线结构,有什么优势? (4)IPC的元器件有何要求 (5)IPC的主板有何特点

(6)IPC在维护方面有何优势

2. 认识过程板卡

(1)和教材配套的板卡是基于ISA总线还是PCI总线?,看到实物如何识别其是ISA卡还是PCI卡?

(2)端子板有何用?

(3)过程板卡和主板是如何连接和实现数据交换的。 (4)AC6611的主要特点、连接关系及其安装。

实验二 A/D和D/A应用实验

一、实验目的

认识IPC,了解其和PC的异同点;认识工业过程通道;了解AC6611的接线及其性能指标,掌握AC6611的测试;了解基于DLL调用的AC6611的A/D和D/A程序设计的一般方法。

二、实验设备

1台IPC或PC、1块AC6611、1块AC157及其电缆、1块万用表、1把小螺丝刀、2~5根导线、CB6环境、测试软件等。

三、实验方法(接线)

27

第1章 计算机测控系统实验基础

将AC157端子板的P23端子和CH0(或CH1~CH15中的其它任何一个)连接,此时在进行A/D实验时相当于利用AC6611的D/A输出作为电压信号源;而在进行D/A实验时,相当于利用其A/D作为万用表使用。

四、实验内容

1. 认识IPC,了解其和PC的异同点; 2. 认识工业过程通道;

3. 了解AC6611和AC157、AC142的链接 4. 验证AC6611的功能是否正确

5. 测试AC661的A/D和D/A的精度和线性度

6. 自编A/D和D/A程序,分别使用编辑框输入D/A代码和显示A/D代码(选做) 7. 写实验报告,解答思考题。

五、实验步骤

1. 认识IPC,了解其和PC的异同点,主要是观察老师操作、演示和讲解; 2. 认识工业过程通道,现场观察未教材上的ISA总线板卡及其配套的端子板; 3. 了解AC6611和AC157、AC142的连接情况 4. 启动测试程序,验证AC6611的功能是否正确

5. 测试AD6611的A/D转换的精度和线性度,改变D/A输出,将10次不同测量数据或显示数据填入下表中。

A/D代码 A/D显示值 万用表测量值 显示值:测量值 显示值-测量值

6. 测试AD6611的D/A转换的精度和线性度,改变D/A输出,将10次不同测量数据或显示数据填入下表中。

D/A显示值 万用表测量值 显示值:测量值 显示值-测量值 7. 程序设计

界面设计如下图所示,要求单击D/A按钮,输出D/A代码;单击A/D,读1次CH0的A/D转转值。

可以按以下步骤进行:

①参考1.1节,设计一个界面,工程文件名存为ADPRJ.BPR,窗体文件名存为ADCPP.CPP

28

计算机测控系统实验指导书

②打开ADCPP.H文件,在其末尾AC6611所要求的头文件,添加第19页所示的头文件代码,参考1.2节,可以用记事本打开范例程序的头文件,并从范例程序中拷贝和粘贴。

③单击窗体,填入20~21页所示的创建句柄等相关代码,参考1.2节,可以用记事本打开范例程序的头文件,并从范例程序中拷贝和粘贴。

④单击A/D按钮,调用AC6611_AD()等相关函数实现数据采集。 ⑤单击D/A按钮,调用AC6611_DA()等相关函数实现D/A数据输出。 ⑥编译和运行程序。

六、思考题

1. 如何测试A/D和D/A转换的线性度?

2. 本次实验中,导致A/D误差的因素有哪些? 3. AC6611的A/D、D/A的理论精度未多少

4. 在没有万用表等工具的情况下,如何测试A/D和D/A功能是否正确?

实验三 I/O应用实验

一、实验目的

进一步熟悉AC6611的安装、接线、测试和基本应用,学习数据采集程序和画面显示程序的设计方法。

二、实验设备

1台IPC或PC、1块AC6611、1块AC157及其电缆、1块AC142及其电缆、1块万用表、1把小螺 丝刀、2~5根导线、CB5环境、测试软件等。

三、实验方法(接线)

将AC142端子板的DO0端子和DI0端子(或DI1~DI15中的其它任何一个和DO1~DO15中的其它任何一个)连接,此时在进行DI实验时相当于利用AC6611的DO输出高、低电平信号;而在进行DO实验时,相当于利用其DI作为逻辑笔观察DO输出的电平是高电平还是低电平。

四、实验内容

1. 熟悉AC6611和AC142端子板的连接

29

第1章 计算机测控系统实验基础

2. 测试和验证AC6611的开关量输入/输出功能 3. AC6611编程

4. 写实验报告,解答思考题

五、实验步骤

1. 检查AC6611和AC142是否正确连接

2. 启动测试程序,验证AC6611的开关量输入/输出功能是否正确 3. 编写I/O控制程序,实现下图所示功能。

DO0

DI0 DI1

DO0

提示:调用AC6611_DI()读取开关量输入,调用AC6611_DO()输出开关量。

六、思考题

1. 在没有万用表等工具的情况下,如何测试DI和DO功能是否正确?

2. 在没有万用等测试工具的情况下,如何判断程序的执行结果是否正确?

实验四 PID算法与参数整定

一、实验目的

巩固AC6611的基本应用和测试操作,熟悉AC6611的编程,观察PID参数对调节过程的影响,试验PID算法的参数整定。

二、实验设备

1台IPC或PC、1块AC6611、1块AC157及其电缆、1块AC142及其电缆、1块万用表、1把小螺 丝刀、2~5根导线、电阻、电容、软件环境、PID实验软件等。

三、实验方法(接线)

接线方法和实验二相同,即将AC157端子板的P23端子和RC电路相连,其输出和CH0(或CH1~CH15中的其它任何一个)连接,此时在进行A/D实验时相当于利用AC6611的D/A输出作为电压信号源;而在进行D/A实验时,相当于利用其A/D作为万用表使用。

基于PID实验软件,修改PID参数,观察和记录结果。

30

计算机测控系统实验指导书

PID控制需要一个控制对象,实验中采用RC电路来模拟一阶对象,其电路如下: R 接AC157的CH0或 CH1~CH15中的其 它任何一个端子

C

四、实验内容

1. 测试AC6611的A/D和D/A转换功能正常否。 2. 整定PID参数,分别使测量值振荡和收敛。 3. 自行编写PID算法程序(选作)。 4. 写实验报告,解答思考题

五、实验步骤

1. 检查AC6611和AC142是否正确连接

2. 启动测试程序,验证AC6611的A/D、D/A功能是否正确 3. 启动PID实验程序,修改PID参数,记录数据填入下表。

设定值变化量 调节时间 超调量 比例带P 积分时间I 微分时间D 接AC157的P23端子

4. 修改PID参数,同时修改设定值,促使控制出现较长时间的振荡,记录此时的PID参数。

六、思考题

1. PID三个参数对控制效果有何影响?

2. 如果将一阶RC换成二阶RC,要达到相同的控制效果,其PID参数是否相同?为什么?

实验五 数据采集与画面显示

一、实验目的

进一步熟悉AC6611的安装、接线和测试操作,掌握AC6611开关量输入/输出的功能验证方法,理解AC6611的编程思路和实例。

31

第1章 计算机测控系统实验基础

二、实验设备

1台IPC或PC、1块AC6611、1块AC157及其电缆、1块AC142及其电缆、1块万用表、1把小螺 丝刀、2~5根导线、CB6环境、测试软件等。

三、实验方法(接线)

接线方法和实验二相同,即将AC157端子板的P23端子和CH0(或CH1~CH15中的其它任何一个)连接,此时在进行A/D实验时相当于利用AC6611的D/A输出作为电压信号源;而在进行D/A实验时,相当于利用其A/D作为万用表使用。

以趋势曲线和文本方式显示A/D采样值。 趋势曲线的设计方法可以参考教材或1.1节。

四、实验内容

1. 熟悉AC6611的基本应用及其测试;

2. 数据采集程序设计 3. 画面显示程序设计

(1)数显 (2)曲线 (3)棒图

曲线和棒图设计可以任选其中一个。 4. 写实验报告,解答思考题

五、实验步骤

1. 检查AC6611和AC142是否正确连接

2. 启动测试程序,验证AC6611的A/D和D/A功能是否正确

3. 编写画面程序,界面如下图所示,用到的控件主要有PageControl、Button、Edit、Label、Timer、Bevel、Image等。

提示:绘制趋势曲线时需要用到背景图(刻度盘),可以使用画笔或其它作图工具设计。

六、思考题

1. 如果未改变输入电压,A/D的趋势是否是一根直线?

2. 利用AC6611的A/D、D/A,并显示A/D结果,试问可否实现三角波和正弦波?

32

计算机测控系统实验指导书

实验六 远程I/O实验

一、实验目的

掌握远程模块的安装、接线、配置和测试操作方法,完成远程I/O模块的A/D数据采集或D/A数据输出程序的设计和调试。

二、实验设备

IPC或PC、NuDAM6520或DAC8520、NuDAM6018、DAC8021或i7021、1台直流电源、1块万用表、1把小螺丝刀、0.3-0.5米长的导线10余根、CB5环境、配置软件等。

三、线路连接

使用RS-232通信电缆连接PC/IPC的RS-232接口和ADAM4520(或兼容模块)的RS-232接口,将ADAM4520(或兼容模块)的DATA+和DATA-分别连接到ADAM4017(或兼容模块,如NuDAM6018)的DATA+和DATA-将电位器的两端分别连接到直流电源的+5V和0V,其中心抽头和0V分别连接到ADAM4017(或兼容模块,如NuDAM6018)的Vin0+和Vin0-,也可以连接其它的通道。

四、配置软件及其应用

各商家都针对自己的远程模块提供了相应的配置软件,使用方法大体相同。这里以NuDAM模块的配置软件为例进行介绍。配置软件用于配置模块的地址,默认时,所有的模块出厂地址均为1,该地址随时可以使用配置软件进行配置。配置模块地址时,一条RS-485链路上只能连接一个远程模块(通信转换模块除外)。配置软件启动界面如下所示。如果默认的通信口正

- 直流电源 + 33

第1章 计算机测控系统实验基础

确,且所有的远程模块的地址已经设置成各不相同,则此时可以让配置软件字段搜索所挂接的远程模块。否则可以取消。

可以通过配置软件提供的菜单和快捷按钮进行相关操作,快捷按钮依次为搜索(Search)、终端(Terminal)、配置(Configuration)、诊断(Diagnostic)和校核(Calibration)。一般情况下不要求进行校核操作。

(1)单击Network菜单的ComPort选单,可以指定用于连接远程模块的计算机通信口,弹出下图所示的界面。选定通信口后单击Search快捷按钮即可搜索已连接的远程模块。搜索不到模块,请确定各模块的地址是否唯一,可以只连接单个模块进行搜索核配置。

(2)单击Terminal即可进入终端界面,此时可以键入远程模块的各类命令。弹出的窗口如下图所示:

34

计算机测控系统实验指导书

(3)选中搜索到的某个模块,单击Configuration快捷按钮,既可以进行配置,弹出的窗口如下:

注意,修改地址时,应确保各模块的地址唯一。

(4)选中搜索到的某个模块,单击Diagnostic快捷按钮,既可以进行诊断核测试,弹出的窗口如下:

35

第1章 计算机测控系统实验基础

五、实验内容及步骤

1. 熟悉远程模块的安装和接线 2. 配置远程模块 3. 程序设计

六、参考设计 1. 界面

用到的控件包括MSComm、Timer、Lebel、Edit、Bevel等。

2. 双击MSComm,填写相应的通信参数,要求和模块的配置相同,也可以通过编写程序实现。 3. 双击Timer控件,编写以下代码:

36

计算机测控系统实验指导书

void __fastcall TForm1::Timer1Timer(TObject *Sender) {

if(MSComm1->PortOpen==false) MSComm1->PortOpen=true; AnsiString SendString=\SendString +=\

MSComm1->Output=OleVariant(AnsiString(SendString));

for(int i=0;i<1000000;i++); //延时时间和计算机的速度有关 Edit1->Text=AnsiString(WideString(MSComm1->Input)); }

4. 编译和允许程序,出现数据采集结果,如下图所示。

37

本文来源:https://www.bwwdw.com/article/oka6.html

微信扫码分享

《计算机测控系统实验指导书 - 图文.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档
下载全文
范文搜索
下载文档
Top