计算机控制技术基础实验指导书.docx
《计算机控制技术基础实验指导书.docx》由会员分享,可在线阅读,更多相关《计算机控制技术基础实验指导书.docx(55页珍藏版)》请在冰豆网上搜索。
计算机控制技术基础实验指导书
第1章计算机测控系统实验基础
1.1BorlandC++Builder6.0应用指导
1.1.1BorlandC++Builder6.0简介
BorlandC++Bilder6.0是Interprise(Borland)公司推出的基于C++语言的快速应用程序开发(RapidApplicationDevelopment,RAD)工具,它是最先进的开发应用程序的组件思想和面向对象的高效语言C++融合的产物。
C++Bilder充分利用了已经发展成熟的Delphi的可视化组件库(VisualComponentLibrary,VCL),吸收了BorlandC++6.0这个优秀编译器的诸多优点。
C++Builder结合了先进的基于组件的程序设计技术,成熟的可视化组件库和优秀编译器,调试器。
发展到6.0版本,C++Builder已经成为一个非常成熟的可视化应用程序开发工具,功能强大而且效率高。
C++Builder的特色如下:
①C++Builder是高性能的C++开发工具
C++Builder是基于C++的,它具有高速的编译,连接和执行速度。
同时,C++Builder具有双编译器引擎,不仅可以编译C/C++程序,还能编译ObjectPascal语言程序。
②C++Builder是优秀的可视化应用程序开发工具
C++Builder是一完善的可视化应用程序开发工具,使程序员从繁重的代码编写中解放出来,使他们能将注意力重点放在程序的设计上,而不是简单的重复的劳动中。
同时,它提供的完全可视的程序界面开发工具,从而使程序员对开发工具的学习周期大大缩短。
③C++Builder具有强大的数据库应用程序开发功能
C++Builder提供了强大的数据库处理功能,它使的程序员不用写一行代码就能开发出功能强大的数据库应用程序,这些主要依赖于C++Builder众多的数据库感知控件和底层的BDE数据库引擎。
C++Builder除了支持MicroSoft的ADO(ActiveDataObject)数据库连接技术,还提供了一种自己开发的成熟的数据库连接技术——BDE(BorlandDatabaseEngine)数据库引擎。
1.1.2C++Builder6.0的集成开发环境
(1)C++Builder6.0的IDE主界面
(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)对象查看器
对象名称用于选择和查看当前对象的名称,属性选项卡用于设置对象设计时的可见属性,事件选项卡用来设置对象的事件句柄或者在代码编辑器中定位对象事件句柄。
1.1.3创建和运行应用程序
(1)创建应用程序
在主菜单中选择【File】中的【New】,在New对话框中选择Application,按OK。
(2)运行应用程序
在菜单中选择【Run】中的【Run】,或者直接按快捷菜单上的运行按钮,还有是按快捷键F9,就可以运行当前程序。
1.1.4保存程序
在主菜单中选择【File】中的【SaveAll】选项。
再把所有文件(包括*.cpp,*.bpr)都保存到同一个目录下面。
1.1.5加载ActiveX控件
众所周知,ActiceX控件因为其可以跨平台的特性使得ActiveX在很多环境下被广泛地使用。
在C++Builder中引用ActiveX很简单。
具体操作是在主菜单【Component】中选【ImportActiveXControl…】,弹出【ImportActiveX】的对话框,在对话框中选择你要引用的ActiveX控件。
(1)控件类明(Classname)
可以包括多个,表示这个ActiveX控件包里面有多个ActiveX控件,这里只加入了一个TMSComm控件。
(2)组件在ComponentPalette(组件面板)的页面(Palettepage)
在本例中,我们把引入的ActiveX控件放在ActiveX页面中。
(3)组件的源文件(cpp),一般不用修改(Unitdirname)
(4)当前搜索路径,一般不用修改(Searchpath)
以上四个步骤完成以后,按【Install】键,ActiveX控件就可成功的引入到C++Builder组件面板的ActiveX页面中。
注意:
TMSComm控件的具体用法见教材P195。
1.1.6多页面窗口设计
多页面窗口就是指可以在同一个窗口上建立好几页重叠的画面,并且可以利用顶端的‘标签头’在各页中间切换,C++Builder的组件面板就是一个多页面的对象。
用多页面设计的用户界面,是非常好用的界面,因为我们可以将一大堆功能或选项利用这中界面分类,而且只占用整
个屏幕的其中一小部分,既美观又省平面空间,更重要的是我们可以一眼看到整个窗口。
C++Builder提供了两种多页面的窗口组件,一种是新的Windowsxp和Windows2000界面的PageControl组件(在组件面板的Win32上)。
另一种是Windows3.1操作界面的TabbedNotebook组件(在组件面板的Win3.1页上),我们这里只讲前者。
首先新建一个工程,把一个PageControl组件加到Form1上,在PageControl1上点击鼠标右键,弹出右键菜单,选择【NewPage】功能来增加页面,【NextPage】或者【PreviousPage】功能选项来前后变换当前页面,选择【DeletePage】功能删除当前页面。
不过必须先把焦点定在页面组件上,再按【Del】键,那么选中页面就会被删除;如果你不小心把焦点定在PageControl上,整个PageControl组件都会从Form1中删除掉,所以在删除页面的时候要多加小心(见下图)。
多页面组件(PageControl)的几个常用属性:
(1)ActivePage
当前激活的页面,可以在设计时设置,则为程序运行时的默认当前页面;也可以在程序运行中动态改变其值,使想要的页面自动变成当前激活页面。
例如:
PageControl1->ActivePage=TabSheet2;//把第二页设置为当前页
(2)PageIndex
页面排列顺序,修改此栏可以改变页面排列的
顺序。
可以在设计时设置,也可以在程序运行中修改。
例如:
PageControl1->Pages[2]->PageIndex=0;//把第三页调到最前面。
(3)MultiLine
多页面显示类型。
如果是false,则当你增加的页面超过Form的宽度,会在Form的右上角显示一对左右方向的箭头符号,可以点选箭头符号来查看超过窗口范围的页面;如是true,则可以把所以的页面标签都显示通通显示在同一个Form的窗口范围内
1.1.7在C++Builder中使用图形
C++Builder的VCL图形组件封装了Windows图形设备接口(GDI,GraphicsDeviceInterface),使得在Windows程序设计中添加图形也变得很容易。
在C++Builder应用程序中绘制图形,应该在图形对象(如Form,Image等)的画布(Canvas)中绘制,而不是直接在对象中绘制。
画布是图形对象的属性,同时它本身又是对象。
画布对象的一个主要的优点是它能够有效地处理资源并且能管理设备场境。
所以应用程序可以用相同的方法在屏幕、打印机、位图或者图元文件中绘图。
直接在控件的画布上绘图,该图就会立即显示。
画布(Canvas)的主要属性和方法如下表所示:
属性
说明
Font
指定在图象中写入文本时使用的字体。
设置TFont对象的属性可以指定字体、字体的颜色、大小和样式。
Brush
决定画布在填充图形形状和背景时使用的颜色和图案。
设置TBrush对象的属性可以指定在填充画布的空间使用的颜色、样式或位图。
Pen
指定画布在绘制线条和边框时使用的画笔类型。
设置TPen对象的属性可以指定画笔的颜色、样式、宽度和模式。
PenPos
指出画笔当前的位置。
Pixels
指出当前的画笔所在的位置的象素的颜色值。
(1)
使用画笔(Pen)
画布的Pen属性控制线条出现的方式,包括用来绘制形状外框的线条。
画笔本身有四个属性:
Color,Width,Style和Mode:
①Color属性:
更改画笔的颜色
Canvas->Pen->Color=color;
值
说明
clBlack
黑色
clWhite
白色
clBlue
蓝色
clRed
红色
clGreen
绿色
还可以用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("MyBitmap.bmp");
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:
:
TPointpoints[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.8C++Builder画面设计实例
用C++Builder编程实现下图所示的显示画面,实时趋势所需的数据由内部函数值代替。
解:
上图所示的画面设计称之为窗体设计,是用C++Builder中的控件绘制的。
曲线和棒图的动态显示则是通过程序实现的。
(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
#pragmahdrstop
#include"XIMU.h"
#pragmapackage(smart_init)
#pragmaresource"*.dfm"
floatt30sp=138.5,t30pv=130.5,t30mv=50.2;//假设值
intt30trend[480];//曲线有480个点
intt1;
TForm1*Form1;
//窗体程序
__fastcallTForm1:
:
TForm1(TComponent*Owner)
:
TForm(Owner)
{
}
//定时器处理程序
void__fastcallTForm1:
:
Timer1Timer(TObject*Sender)
{
t30pv=120+50*sin(t1*5*3.1415/360);//建立实时数据,Y=A+B*SIN(C)
t1++;
for(inti=0;i<479;i++)
{
t30trend[i]=t30trend[i+1];//刷新实时数据
}
t30trend[479]=t30pv;//最新数据
Image2->Picture->LoadFromFile("bangtu.bmp");//重调背景,清楚当前棒图
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("qushi.bmp");//重调趋势背景,清除当前趋势曲线
Image1->Canvas->Pen->Width=1;//曲线粗细程度
Image1->Canvas->Pen->Color=clRed;//测量值曲线为红色
Image1->Canvas->MoveTo(0,300);//曲线起点
for(inti=0;i<480;i++)//曲线由480个点组成
{
Image1->Canvas->LineTo(i,300-t30trend[i]);//两点之间连一直线
}
Image1->Canvas->Pen->Color=clBlue;//给定值曲线为兰色
Image1->Canvas->MoveTo(0,300);//曲线起点
for(inti=0;i<480;i++)//曲线由480点组成
{
Image1->Canvas->LineTo(i,300-t30sp);//两点之间连一直线
}
Edit1->Text=FloatToStrF(t30sp,0,4,4);//给定值显示,取4位有效数
Edit2->Text=FloatToStrF(t30pv,0,4,4);//测量值显示,取4位有效数
Edit3->Text=FloatToStrF(t30mv,0,3,3)+"%";//阀位值显示,取3位百分数形式
}
1.2AC6611PCI过程板卡及其应用
AC6611是北京双诺测控技术有限公司一款廉价通用A/D、D/A板和I/O卡,AD工作在查询方式,采用PCI总线支持即插即用、无需地址跳线。
AC6611具有16路单端模拟输入、1路12位D/A和32路开关量(16路输入及16路输出)。
1.2.1AC6611性能参数
(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。
输入范围跳线器选择,对应输入幅度及精度如下:
输入
系统精度(FSR)
跳字
0-10V
0.1%
1LSB
0-5V
0.1%
1.5LSB
-5V-+5V
0.1%
1LSB
(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)其它
●符合PCIV2.1标准,供电:
+5伏、+12伏、-12伏。
●AC6611占用64个I/O选通空间(自动分配)。
●工作温度:
0-70℃,尺寸:
12(W)X9(H)(厘米)
1.2.2AC6611及其端子板实物图
AC6611必须通过端子板才能连接外部的输入/输出模拟量信号和开关量信号,其配套的模拟量输入/输出端子板为AC157,开关量输入输出端子板为AC142,三者如下图所示。
1.2.3AC6611与端子板的连接
AC6611通过DB25连接器和AC157连接,通过40芯扁缆连接器与AC142或AC145连接,其连接接关系如下图所示(实验人员已经安装和连接好AC6611、AC157和AC142)。
1.2.4AC6611跳线配置
S1的三针跳线开关选择AC6611的A/D的输入范围,其可选配置如下表所示。
A/D输入范围
0~5V
0~10V
±5V
S1配置
不短接
1-2短接
2-3短接
JP5的三针跳线开关选择AC6611的D/A输出范围,其可选配置如下表所示。
A/D输入范围
±10V
0~10V
JP5配置
1-2短接
2-3短接
1.2.5AC6611连接器引脚定义
AC6611通过连接器P1和AC157端子板连接,通过连接器P2和端子板AC142连接,其中P1为DB25连接器,P2为40芯扁缆连接器。
P1连接器的引脚定义如下图所示。
P1连接器(DB25)
P2连接器(IDC40)
1.2.6AC157接线端子
AC157的接线段子和其上的P1连接器以及AC6611的P1连接器的信号是一一对应的,端子的布局及其表示的信号如下图所示。
图中的模拟量输入通道CH0~CH15分别对应P1连接器的AI0~AI15(各通道均为单端输入,参考端均为GND)。
P11~P13对应P1连接器的引脚11~13(未用),P23~P25对应P1连接器的引脚23~25,其中的P23为D/A输出通道(参考端为GND),其它两个引脚未用。
1.2.6AC142接线端子
AC142的接线段子和其上的P1连接器以及AC6611的P1连接器的信号是一一对应的,端子的布局及其表示的信号如下图所示。
1.2.7安装AC6611驱动程序
(1)Windows98平台下安装AC6611驱动程序
①关闭计算机的电源;
②将AC6611板卡插入PCI槽中;
③打开计算机电源,启动Windows98;
④Windows98将会显示找到新硬件(将显示找到PCIEarlynon-VGADevice),进行下一步;
⑤在添加硬件向导窗口中选择搜索设备的最新驱动程序,下一步;
⑥选择驱动所在目录,进行安装(\ac6611\driver\);
⑦Windows98将显示找到WWlabPCIAC6XXXA/DBoard提示进行下一步;
⑧驱动已经安装完成
安