2015LabVIEW实验指导书

2015LabVIEW实验指导书
2015LabVIEW实验指导书

《虚拟仪器设计》

实验指导书

机械工程学院

机械电子系

2015年3月

目录

实验1 LabVIEW入门 (3)

实验2 程序结构 (5)

实验3 数据类型:数组、簇 (12)

实验4 图形显示 (17)

实验5 字符串和文件I/O ....................................... 错误!未定义书签。实验6 信号处理与分析........................................... 错误!未定义书签。实验7 VI程序的创建与结构控制........................... 错误!未定义书签。实验8 LabVIEW网络程序设计 .............................. 错误!未定义书签。实验9 LabVIEW串口数据采集实验 ...................... 错误!未定义书签。

实验10 基于声卡的数据采集系统......................... 错误!未定义书签。

实验1 LabVIEW入门

1 实验目的

(1)初步学会使用LabVIEW;

(2)掌握创建自己的VI。

2 实验任务

(1)建立一个测量温度和容积的VI;

(2)为 VI创建图标和联接器;

(3)使用LabvIEW图表模式。

3 实验步骤

练习1-1:

建立一个测量温度和容积的VI,其中须调用一个仿真测量温度和容积的传感器子VI。步骤如下:1.选择,打开一个新的前面板窗口。

2.从Controls?Numeric中选择Tank放到前面板中。

3.在标签文本框中输入“容积”,然后在前面板中的其他任何位置单击一下。

4.把容器显示对象的显示范围设置为0.0到1000.0。

a. 使用文本编辑工具(Text Edit Tool),双击容器坐标的10.0 标度,使它高亮显示。

b.在坐标中输入 1000,再在前面板中的其他任何地方单击一下。这时0.0到1000.0之间的增量

将被自动显示。

5.在容器旁配数据显示。

将鼠标移到容器上,点右键,在出现的快速菜单中选Visible Iterms?Digital Display即可。

6.从Controls?Numeric中选择一个温度计,将它放到前面板中。设置其标签为“温度”,显示范围为

图1-1 练习1-1的前面板图

7. W indows?Show Diagram 打开流程图窗口。从功能模板中选择对象,将它们放到流程图上组成下图(其

中的标注是后加的)。

图1-2 练习1-1的流程图

该流程图中新增的对象有两个乘法器、两个数值常数、一个随机数发生器、一个进程监视器,温度和容

积对象是由前棉板的设置自动带出来的。

a. 乘法器和随机数发生器由Functions?Numeric 中拖出,尽管数值常数也可以这样得到,但是建议

使用c 中的方法更好些。

b. 进程监视器(Process Monitor )不是一个函数,而是以子VI 的方式提供的,它存放在

LabVIEW\Activity 目录中,调用它的方法是在Functions?Select a VI 下打开Process Monitor ,然后在流程图上点击一下,就可以出现它的图标。

注意:LabVIEW 目录一般在Program Files\National Instruments\目录下。 8.用连线工具将各对象按规定连接。a 中的遗留问题创建数值常数对象的另一 种方法是在连

线时一起完成。具体方法是:用连线工具在某个功能函数或VI 的连线端子上单击鼠标右键,再从弹出的菜单中选择 Create Constant ,就可以创建一个具有正确的数据格式的数值常数对象。 9.选择 , 把该VI 保存为 LabVIEW\Activity 目录中的 Temp & Vol.vi 。

在前面板中,单击Run (运行)按钮,运行该 VI 。注意电压和温度的数值都显示在前面板中。

10.选择,关闭该 VI 。 练习 1-1 结束

练习 1-2 为 VI 创建图标和联接器

1.打开 LabVIEW\Activity 目录中的Temp & Vol.vi ,这是练习1-1做的程序。

2.在前面板中,用鼠标右键单击窗口右上角的图标,在快捷菜单中选择 Edit Icon ….,也可以双击图

标激活图标编辑器。注意只能在前面板中编辑图标和联接器。 3.删除默认图标。使用Select Tool (矩形框),单击并拖动想要删除的部分,按下。也可以通

过双击工具框中的阴影矩形删除图标。

4.用 Pencil Tool (铅笔工具)绘制一个温度计。

5.用 Text Tool (文本工具)创建文本。得到图标将如下图所示。

随机数发

生器

乘法函数 数值常数 进程监视器

图1-3编辑后的图标编辑器窗口

6.单击OK,关闭编辑器。新创建的图标就显示在屏幕右上角的图标窗口中。

7.用鼠标右键单击前面板中的图标窗口,在快捷菜单中选择Show Connector,设置联接器端子连接模式。在默认情况下,LabVIEW 会根据前面板中的控制对象和显示对象的数目确定联接器的端子连接模式。因为前面板中有两个对象,所以联接器有两个端子,如左图所示。用鼠标右键单击联接器窗口,在快捷菜单中选择Rotate 90 Degrees(旋转90度),注意联接器窗口的变化,如左图所示。

8.将端子连接到温度计和电压计:

a. 点击联接器上部端子。光标自动变成连线工具,同时端子变成黑色。

b. 单击温度显示对象。一个移动的虚线框把它包围起来,选中的端子的颜色变为与控制/显示对象的

数据类型一致的颜色。

如果单击前面板中的任何空白区域以后,虚线消失,选中的端子变暗,这表示您已经成功地把显

示对象和上部端子连接起来。如果端子是白色,则表示没有连接成功。

c. 重复步骤a 和 b,把底部的端子和容积计连接起来。

d. 用鼠标右键单击联接器,在快捷菜单中选择Show Icon….

9.选择,保存该 VI。

这样这个 VI 就完成了,并也可以作为子 VI 被其他的VI调用。子VI 的图标在主 VI 的流程图

中代表它。VI 的联接器(含有两个端子)输出温度和容积。

练习1-2结束

练习 1-3 使用三种图表模式

目的:查看VI 分别在三种模式下执行时图表的显示。

1.建立前面板及流程图如下

该程序中利用一个循环产生连续的sin(i)函数值,并及时地在chart图表上显示出来,现在前面板上的chart是一个strip,这是一个坐标式显示器,与纸带式图表记录器相似。每接受一个新数据,新数据就将显示在右侧,而原有数据移动到左侧

图1-4 图表的例子

2.用鼠标选中chart,点击右键,可在快速菜单中选择Advanced?Update Mode子菜单。可以选择更换其他两种更新模式。

示波器模式是一个返回式的显示器,与示波器类似。每接受一个新数据时,它就把新数据绘制在原有数据的右侧。当数据曲线到达显示区的右边缘时,VI 会删除全部图形,从左边缘重新开始绘制曲线。

示波器模式显然要快于条状图模式,因为它不会因为滚动产生溢出。

扫描模式更接近于示波器模式,但是当数据曲线到达显示区的右边时,不会变成空白,而是会出现一个移动的垂线,标记新数据的开始,并当VI添加新数据时穿过整个显示区。

练习 1-3 结束。

4 实验报告

写出以上三个练习的中的步骤要点,附上运行时的前后面版图形。

实验2 程序结构

1 实验目的

(1)学会使用LabVIEW中的While循环;

(2)学会使用LabVIEW中的移位寄存器;

(3)学会使用LabVIEW中的For循环;

(4)学会使用LabVIEW中的CASE结构;

(5)学会使用LabVIEW中的顺序结构;

(6)学会使用LabVIEW中的公式节点。

2 实验任务

(1)建立一个While循环的VI;

(2)建立一个移位寄存器的VI;

(3)建立一个For循环的VI;

(4)建立一个CASE结构的VI;

(5)建立一个顺序结构的VI;

(6)建立一个有公式节点的VI。

3 实验步骤

练习2-1使用While循环和图表

目的:用 While 循环和图表获得数据,并实时显示。

创建一个可以产生并在图表中显示随机数的VI。前面板有一个控制旋钮可在0到10秒之间调节循环时间,还有一个开关可以中止VI的运行。学习怎样改变开关的动作属性,以便不用每次运行VI时都要打开开关。操作步骤如下:

前面板

图2-1 练习2-1的前面板

1.选择,打开一个新的前面板。

2.选择Controls?Boolean,在前面板中放置一个开关。设置开关的标签为控制开关。

3.使用标签工具创建 ON 和 OFF 的标签,放置于开关旁。

4.选中Controls?Graph,在前面板中放置一个波形图(是chart,而不是graph)。设置它的标签为随机信号。这个图表用于实时显示随机数。

5.把图表的纵坐标改为0.0 到 1.0。方法是用标签工具把最大值从10.0改为1.0。

6.选择Controls?Numeric,在前面板中放置一个旋钮。设置旋钮的标签为循环延时。这个旋钮用于控制While 循环的循环时间。

流程图

7.开流程图,按照下图创建流程图。

图2-2练习2-1的流程图

a)从Functions?Structures 中选择 While 循环,把它放置在流程图中。将其拖至适当大小,

将相关对象移到循环圈内。

b)从Functions? Numeri c中选择随机数(0-1)功能函数放到循环内。

c)在循环中设置Wait Until Next ms Multiple函数(Functions?Time & Dialog),该函数

的时间单位是毫秒,按目前面板旋钮的标度,可将每次执行时间延迟0到10毫秒。

d)照上面所示的流程图连线,把随机数功能函数和随机信号图表输入端子连接起来,并把启动

开关和While 循环的条件端子连接。

8.返回前面板,调用操作工具后单击垂直开关将它打开。

9.把该 VI 保存为 LabVIEW\Activity目录中的Random Signal.vi。

10.执行该 VI。While循环的执行次数是不确定的,只要设置的条件为真,循环程序就会持续运行。

在这个例子中,只要开关打开(TRUE),框图程序就会一直产生随机数,并将其在图表中显示。

11.单击垂直开关,中止该VI。关闭开关这个动作会给循环条件端子发送一个FALSE值,从而中止循环。

12.用鼠标右键单击图表,选择Data Operations?Clear Chart,清除显示缓存,重新设置图表。练习2-1结束

附注与说明

布尔开关的机械动作:

布尔开关有6种机械动作属性可供选择。在前面板上用鼠标右键单击开关,在快捷菜单中选择Mechanical Action就可以看到这些可选的动作。LabVIEW还提供了一个范例示范这些动作,它是位于Examples\General\Controls\booleans.llb的Mechanical Action of Booleans.vi。

练习2-2使用移位寄存器

目的:创建一个可以在图表中显示运行平均数的VI。

前面板

1. 打开一个新的前面板,按照下图所示创建对象。

2. 把波形图表的坐标范围改为0.0到2.0。

3. 在添加竖直坐标之后,用鼠标右键单击它,在快捷菜单中选择Mechanical Action?Latch When Pressed,再选择Operate?Make Current Values Default,把ON状态设置为默认状态。

图2-3 练习2-2的前面板

1. 按下图创建流程图。

图2-4练习2-2的流程图

2. 在流程图中添加While 循环(Functions?Structures),创建移位寄存器。

a. 用鼠标右键单击While循环的左边或者右边,在快捷菜单中选择Add Shift Register。

b. 用鼠标右键单击寄存器的左端子,在快捷菜单中选择Add Element,添加一个寄存器。用同样的方法

创建第三个元素。

3. Random Number (0–1)函数(Functions?Numeric)——产生0到1之间的某个随机数。

4. Compound Arithmetic 函数(Functions?Numeric)——在本练习中,它将返回两个周期产生的随机数的和。如果要加入其他的输入,只需用右键单击某个输入,从快捷菜单中选择Add Input。

5. 除法函数(Functions?Numeric)——在本练习中,它用于返回最近四个随机数的平均值。

6. 数值常数(Functions?Numeric)——在While循环的每个周期,Random Number (0–1)函数将产生一个随机数。VI就将把这个数加入到存储在寄存器中的最近三个数值中。Random Number (0–1)再将结果除以4,就能得到这些数的平均值(当前数加上以前的三个数)。然后再将这个平均值显示在波形图中。

7. Wait Until Next ms Multiple函数(Functions?Time & Dialog)——它将确保循环的每个周期不会比毫秒输入快。在本练习中,毫秒输入的值是500毫秒。如果用鼠标右键单击图标,从快捷菜单中选择Visible?Label,

8. 用鼠标右键单击Wait Until Next ms Multiple 功能函数的输入端子,在快捷菜单中选择Create Constant。出现一个数值常数,并自动与功能函数连接。

9. 将Constant设置为500。这样连接到函数的数值常数设置了500毫秒的等待时间。因此循环每半秒执行一次。注意,VI用一个随机数作为移位寄存器的初始值。如果没有设置移位寄存器端子的初始值,它就含有一个默认的数值,或者上次运行结束时的数值,因此开始得到的平均数没有任何意义。

10. 执行该VI,观察过程。

11. 把该VI 保存为LabVIEW\Activity目录下的Random Average.vi。

练习2-2结束。

附注:移位寄存器的初值:

上面的练习中对移位寄存器设置了初值0.5。如果不设这个初值,默认的初值是0。在这个例子中,一开始的计算结果是不对的,只有到循环完3次后移位寄存器中的过去值才填满,即第4次循环执行后可以得到正确的结果。

练习 2-3 使用For循环

目的:用For循环和移位寄存器计算一组随机数的最大值。

1.打开一个新的前面板,按照下图创建对象。

a.将一个数字显示对象放在前面板,设置它的标签为“最大值”。

b.将一个波形图表放在前面板,设置它的标签为“随机数”。将图表的纵坐标范围改为0.0到1.0。

c.在图表的快捷菜单中选择Visible Items?Scrollbar和Digital Display,并隐藏Plot Legend。

d.用移位工具修改滚动栏的大小。

图2-5练习2-3的面板和流程图

2.按照上图画流程图。

3.在流程图中放置一个For循环(Functions?Structures)。

4.在For循环的边框处单击鼠标右键,在快捷菜单中选择Add Shift Register。

5.将下列对象添加到流程图。

1.Random Number (0–1)函数(Functions?Numeric)——产生0到1之间的某个随机数。

2.数值常数(Functions?Numeric)——在这个练习中需要将移位寄存器的初始值设成0。

3.Max&Min函数(Functions?Comparison)——输入两个数值,再将它们的最大值输出到右上角,最小值输出到右下角。这里只需要最大值,只用连接最大值输出。

4.数值常数(Functions?Numeric)——For循环需要知道需要执行的次数。本练习中是100次。6.按照上图连接各个端子。

7.运行该VI。

8.将该VI保存为LabVIEW\Activity 目录下的Calculate Max.vi。

练习 2-3结束。

练习2-4使用 Case结构

目的:创建一个VI以检查一个数值是否为正数。如果它是正的,VI就计算它的平方根,反之则显示出错。

前面板

1. 打开一个新的前面板,并按照下图所示创建对象。控制对象用于输入数值,显示对象用于显示该数值的平方根。

2.照下图创建流程图。

图2-6练习2-4的面板和流程图

从Functions?Structures中选择一个 Case结构,并放置在在流程图中。Case 结构是一个可以改变大小的方框。先来做Ture的情况,照流程图上半部分构造。

Greater Or Equal To 0? 函数(Functions?Comparison)——如果输入数值大于或者等于0就会返回一个TRUE值。

Square Root 函数(Functions?Numeric)——返回输入数值的平方根。

连好线

点击Case框的选择按钮,转入False情况编程

数值常数(Functions?Numeric)——这里用于显示错误的代数值-999.00。

One Button Dialog函数(Functions?Time & Dialog)——在这里它用于显示一个对话框,内容是Error...。

字符串常数(Functions?Strin g)——用Edit Text Tools在对话框中输入字符串。

该VI在TRUE或者FALSE情况下都会执行。如果输入的数值大于等于0,VI会执行TRUE Case,返回该数的平方根,否则将会输出-999.00,并显示一个对话框,内容为Error...。

返回前面板,运行该VI。修改标签为Number的数字式控制对象的数值,分别尝试一个正数和负数。

注意,当把数字式控制对象的值改为负数时,LabVIEW会显示Case结构的FALSE Case中设置的出错信息。

保存该 VI 到LabVIEW\Activity目录中的Square Root.vi。

练习2-4结束。

练习2-5使用顺序结构

目的:创建一个 VI,计算生成等于某个给定值的随机数所需要的时间。

前面板

1.打开一个新的前面板,并按照下图所示创建对象。

图2-8练习2-5的前面板

我们约定数据是0到100范围的整数。当前值用于显示当前产生的随机数。“执行次数”用于显示达到指定值循环执行的次数。匹配时间用来显示达到指定值所用的时间。

流程图

图2-7练习2-5的流程图(共3帧)

i.在流程图中放置顺序结构(Functions?Structures)。

ii.用鼠标右键单击帧的边框,在快捷菜单中选择Add Frame After,创建一个新帧。重复这个步骤,再创建一个帧。共3桢。

iii.选中第0桢,设置读取初始时间(子)程序.

iv.第0帧的下边框上含有一个小方框,其中有一个箭头。这个方框叫做顺序局部变量,可以在同一个顺序结构中的各个帧之间传递数据。用鼠标右键单击第0帧的底部边框,选择Add Sequence Local,创建顺序局部变量。顺序局部变量显示为一个空的方块。当您将某个功能函数与顺序局部变量相连时,方块中的箭头就会自动显示。

v.Tick Count (ms) 函数(Functions?Time & Dialog)——返回启动到现在的时间(以毫秒为单位)。在这里例子里需要使用两个这个函数。另一个在第2帧中。

vi.按图连好线。转入第1帧。该帧是匹配计算,内含一个循环结构。该图中使用的新函数有:

Round to Nearest函数(Functions?Numeric)——在该例中,它用于取0到100之间的随机数到距离最近的整数。

Not Equal?函数(Functions? Comparison)——在该例中,它将随机数和前面板中设置的数相比较,如果两者不相等会返回TRUE值,否则返回FALSE。

Increment函数(Functions?Numeric)——在该例中,它将While循环的计数器加1。

vii.按图连好线。转入第2帧

在第0帧中,Tick Count (ms)功能函数将以毫秒为单位表示当前时间。这个数值被连到顺序局部变量,这样它就可以被后续的帧使用。在第1帧中,只要函数返回的值与指定值不等,VI就会持续执行While循环。在第2帧中,Tick Count (ms)功能函数以毫秒为单位返回新的时间。VI从中减去原来的时间(由第0帧通过顺序局部变量提供)就可以计算出花费的时间。

viii.返回前面板,在Number to Match控制对象中输入一个数值,执行该VI。

练习 2-5 结束。

练习 2-6 使用公式节点

目的:创建一个VI ,它用公式节点计算下列等式:

y1 = x 3 – x 2

+ 5 y2 = m* x + b

x 的范围是从0到10。可以对这两个公式使用同一个公式节点,并在同一个图表中显示结果。 前面板

30.00

m 20.00

b 1000.00.0

200.0400.0

600.0

800.010

1

2

3

4

5

6

7

8

9

y1y2

Waveform Graph

6. 打开一个新的前面板,按照上图(该图中包含运行结果)创建前面板中的对象。波形图显示对象用于显示等式的图形。该 VI 使用两个数字式控制对象来输入m 和b 的值。 流程图

7. 按照下图创建流程图。

图2-9 练习2-6的流程图

在创建某个输入或者输出端子时,必须给它指定一个变量名。这个变量名必须与公式节点中使用的变量名完全相符。

公式节点中,在边框上单击鼠标右键,在快捷菜单中选择Add Input ,可以创建三个输入端子。在快捷菜单中选择Add Output ,创建输出端子。

x 的范围是从0到10(包括10),就必须连接11到计数端子。 Build Array (Functions?Arra y )——在这个例子中,它用于将两个数据构成数组形式提供给一个多曲线的图形中。通过用变形工具拖拉边角就可以创建两个输入端子。 8. 返回前面板,尝试给m 和b 赋以不同的值再执行该 VI 。 9. 把该VI 保存为 LabVIEW/Activity 目录下的Equations.vi 。 练习 2-6 结束。

4 实验报告

写出以上6个练习的中的步骤要点,附上运行时的前后面版图形。

实验3 数据类型:数组、簇

1 实验目的

(1)学会使用LabVIEW中的索引数组;

(2)学会使用LabVIEW中的簇;

2 实验任务

(1)建立一个能数组索引的VI;

(2)建立一个使用的VI;

3 实验步骤

练习3-1创建一个自动索引的数组

目的:使用 For 循环的自动索引功能创建数组,并用一个图形(Graph)显示该数组。

图3-1练习3-1的面板

前面板:

1.打开一个新的前面板。

2.选择Controls?Array & Cluster,在前面板中放置一个数组。设置它的标签为

Waveform Array。

3.选择Controls?Numeric,在数组框中插入一个数字式显示对象。如右图

所示。它用于显示数组的内容。

4.选择Controls?Graph,在前面板中放置一个波形图。设置它的标签为

Waveform Graph。

5.隐藏图例和模板。

6.用鼠标右键单击图形,并在快捷菜单中取消选中Y

Scale?Autoscale Y,禁止自动坐标功能。

流程图

1.按照下图创建流程图。

图3-2练习3-1的流程图

2.由Functions?Select a VI…寻找LabVIEW\activity目录下的

Generate Waveform VI,它的作用是返回波形中的某一点。这个VI需要输入一个索引,我们将循环周期连接到这个输入。

3.注意Generate Waveform VI连出来的连线在循环边界变成一个数组时会

变粗,正是在这个边界处形成了一维数组。

4.For循环会自动累计边界内的数组。这种功能叫做自动索引。在这个例子

中,连接到循环计数输入的数值常数令For循环创建了一个由100个元素组成的数组。

5.Bundle函数(Functions? Cluster)——将图块中的各个组件组合成一个

簇,在正确连接以前需要改变该函数的图标的大小。将移位工具放在图标的左下角。变形工具会变成如左图所示,拖曳鼠标直到出现第三个输入端子。

6.数值常数(Functions?Numeric)——三个数值常数用于设置For循环执行的周期数N=100,初始

X=0和delta X=1。

7.从前面板执行该VI。该VI将把自动索引后的波形图数组显示在波形图中。

8.把 X的delta值改为0.5,X的初始值改为20。再次执行该VI。注意,波形图现在同样显示100个

点,而每个点的初始值为20,X的delta值为0.5(见X轴)。

9.只需在显示器中输入元素的索引号就可以查看波形数组中的任何元素。如果输入的数比数组的元素

个数大,那么显示器将变暗,表示您没有为该元素设置索引。

如果需要一次查看多个元素,可以通过改变数组显示对象的大小来实现。把定位工具放置在数组框的右下角。工具将变成右图所示的变形工具。当工具变形时,用鼠标拖曳数组的右边或者下边。数组现在就可以按照元素索引的上升顺序显示多个素,以某个与指定索引对应的元素开始,如下图所示。

图3-3练习3-1中多个数组元素的同时观察

在前面的流程图中,您为波形图指定了初始的X值和delta X值。默认的X初始值是0,delta X 值是1。这样,也可以把波形数组直接连接到波形图端子,而无需指定初始的X值和delta X值,如图3-4所示。

图3-4练习3-1使用默认X及Delta X时简化后的流程图

常数对象,按下。再选择Edit?Remove Bad Wire s 。按照上图完成流程图的连线。 11. 执行该VI 。注意初始的X 值是0,delta X 值是1。

2 多图区图形

可以创建含有多条曲线的图形,方法是创建一个数组,用它来汇集传给单图区图形的类型的数据元素。

图3-5 练习3-1多图区图形的流程图

12. 按照上图创建流程图。

* 正弦函数(Functions?Numeric?Trigonometric )——在这里,它用于在For 循

环中创建一个由数据点组成的数组,表示一个正弦波周期。 * Pi 常数(Functions?Numeric?Additional Numeric Constants )

* Build Array (Functions?Arra y )——在这里,它用于创建合适的数据结构(一个二维数组),在波形图中绘制两条曲线。。用移位工具拖曳边角可以增大该函数的面积,创建两个输入端子。

13.返回前面板,执行该 VI 。注意同一个波形中的两个图区。默认情况下,它们的X 初始值都是0,

delta X 初始值都是1。下图是该程序的运行结果(前面板未改动)。

14.把该VI 保存为LabVIEW\Activity 目录中的Graph Waveform Arrays.vi 。 15. 可以修改图形中的某个图区的外观。方法是,用鼠标右键单击这个图形,再从弹出菜单选择对应

的图例。

-0.09

Array 1.5

-0.5

0.00.51.0

100

102030405060708090Plot 0

Waveform Graph

图3-6练习 3-1 结束。

练习 3-2 对输入数组使用自动索引功能

目的:打开并执行一个VI ,它将在一个For 循环中使用自动索引功能处理一个数组。

1.选择…,打开Examples\General\arrays.llb 中的Separate Array Values VI 。

2.打开流程图。下面的示意图显示的是在TRUE 和FALSE 时的情况。

图3-7练习3-2的流程图

注意,Input Array引出的连线与For循环外的粗线不同,表示这是一个数组,而循环内部的细线则表示这是一个数组元素。数组元素在每个循环期间将自动编号。

3. 用自动索引功能设置 For 循环的计数器

注意,计数器端子还没有连线。当您对某个进入For循环的数组使用自动索引功能时,循环就将根据数组的大小执行相应的次数,这样就无需连接某个值到计数器的端口。如果对一个以上的数组使用自动索引功能,或者在使用自动索引功能之外还需要设置计数器时,实际的循环次数将是其中最小的数。

4.执行该VI。在输入的八个数中,可以看到4个属于正数数组,另外4个属于负数数组。

5.从流程图中将一个值为5的常数对象连接到For 循环的计数器端子。执行该 VI。可以看到尽管输入

数组仍然有八个元素,但是3个位于正数数组,另外2个位于负数数组。这说明,如果设置了N并开启了自动索引功能,那么实际循环的次数将取较小的数。

6.关闭该VI,不要保存任何修改。

注:练习3-2的算法说明

下面是一段伪代码,解释上面的算法,假定输入数组为A(已赋值),B(正数)、C(负数)。Sbr 、Scr分别是与B数组、C数组对应的右寄存器数组,Sbl 、Scl分别是与B数组、C数组对应的左寄存器

B=0 初始化

C=0

K=size(A(.)) 测A数组大小

For i=0 to k-1

p=A(i) 取第I个元素值

if p>=0 then

Ins p,Sbr 将p值插入右寄存器

Else

Ins p,Scr

end if

Sbl=Sbr 右寄存器值送给左寄存器

Scl=Scr

Next i

B=Sbr 右寄存器值送到正数组

C=Scr

Print C

End

练习3-2结束。

练习3-3使用创建数组功能函数

目的:使用创建数组函数,把一些元素和输出组织成一个更大的数组。

图3-8练习3-3的面板和框图

1.按照图3-8创建一个前面板。

2.从Controls?Numeric模板中选择一个数字控制对象放置在前面板中,设置它的标签为scalar 1。

3.复制并粘贴该数字显示对象,创建两个新的对象,并分别设置它们的标签为scalar 2和scalar 3。

4.创建一个数字控制对象的数组,设置它的标签为array 1。复制并粘贴它,创建一个新的数组,

设置它的标签为array 2。

5.在array 1、scalar 1、 scalar 2、scalar 3、array 2中输入数值1到9。

6.创建流程图。选择Functions?Array,在流程图中放置一个Build Array功能函数。用定位工具

增大函数额面积,以容纳5个输入。

7.把数组和标量与Build Array连接起来。创建输出的一维数组,它由 array 1、scalar 1、 scalar

2、array 2、scalar 3中的元素所组成,如图所示。

8.执行该VI。可以看到array 1、scalar 1、 scalar 2、scalar 3、array 2中的数值出现在同一

个一维数组中。

9.保存该VI为LabVIEW\Activity目录下的Build Array.vi。

练习3-3结束。

练习3-4簇

目的:学习创建簇、分解簇,再捆绑簇并且在另一个簇中显示其内容。

6.00

Numeric

Boolean1Boolean 2

Tsinghua

String

Input Cluster

6.00

Numeric

Boolean1Boolean 2

Tsinghua

String

Output Cluster

STOP

stop

图3-10练习3-4的面板和框图

1.打开前面板,创建一个簇壳(Array & Cluster palette),标签改为Input Cluster,拖曳至适当大小。2.在这个簇壳中放置一个数字Control,两个布尔开关,和一个串Control。

3.仿照以上步骤,创建Output Cluster如上。注意将各Control改为相应的indicator。

4.用快速菜单查看两个簇的序是否一致,若有差别,改之。

5.在前面板上设置一个[STOP]按钮。注意其缺省值为FALSE,不要改变它的状态。

6.建立如上面所示的流程图。注意在[STOP]按钮与循环条件端子之间接入了一个NOT函数,因为按钮缺省值为FALSE,经NOT函数后变为TRUE,这就意味着当按钮状态不变时,循环继续执行,相反一旦按钮动作,则循环终止。

7.返回前面板并运行VI。在输入簇中输入不同的值观察输出。

8.关闭并保存程序。Cluster Exercise.vi

练习3-4结束

4 实验报告

写出以上4个练习的中的步骤要点,附上运行时的前后面版图形。

实验4 图形显示

1 实验目的

(1)掌握Chart和Graph的特征;

(2)学会利用XY Graph构成利萨育图形。

2 实验任务

建立一个利萨育图形的VI。

3 实验步骤

链表实验报告

C语言程序设计实验报告 实验一:链表的基本操作一·实验目的 1.掌握链表的建立方法 2.掌握链表中节点的查找与删除 3.掌握输出链表节点的方法 4.掌握链表节点排序的一种方法 5.掌握C语言创建菜单的方法 6.掌握结构化程序设计的方法 二·实验环境 1.硬件环境:当前所有电脑硬件环境均支持 2.软件环境:Visual C++6.0 三.函数功能 1. CreateList // 声明创建链表函数 2.TraverseList // 声明遍历链表函数 3. InsertList // 声明链表插入函数 4.DeleteTheList // 声明删除整个链表函数 5. FindList // 声明链表查询函数 四.程序流程图 五.程序代码 #include #include typedef int Elemtype; typedef int Status; typedef struct node//定义存储节点 { int data;//数据域 struct node *next;//结构体指针 } *linklist,node;//结构体变量,结构体名称 linklist creat (int n)//创建单链表 { linklist head,r,p;//定义头指针r,p,指针 int x,i; head=(node *)malloc(sizeof(node));//生成头结点

r=head;//r指向头结点 printf("输入数字:\n"); for(i=n;i>0;i--)//for 循环用于生成第一个节点并读入数据{ scanf("%d",&x); p=(node *)malloc(sizeof(node)); p->data=x;//读入第一个节点的数据 r->next=p;//把第一个节点连在头结点的后面 r=p;//循环以便于生成第二个节点 } r->next=0;//生成链表后的断开符 return head;//返回头指针 } void output (linklist head)//输出链表 { linklist p; p=head->next; do { printf("%3d",p->data); p=p->next; } while(p); printf("\n") } Status insert ( linklist &l,int i, Elemtype e)//插入操作 { int j=0; linklist p=l,s; while(jnext; ++j; } if(!p || j>i-1) return -1; else { s=(node *)malloc(sizeof(node)); s->data=e; s->next=p->next; p->next=s; return 1; } } Status delect ( linklist &l,int i, Elemtype &e)//删除操作 { int j=0; linklist p=l,q; while(jnext) { p=p->next; ++j; } if(!p->next || j>i-1) return -1;

《数据结构》实验报告 设计循环单链表

《数据结构》实验报告 1、实验名称:设计循环单链表 2、实验日期: 2013-3-26 3、基本要求: 1)循环单链表的操作,包括初始化、求数据元素个数、插入、删除、取数据元素; 2)设计一个测试主函数实际运行验证所设计循环单链表的正确性。 4、测试数据: 依次输入1,2,3,4,5,6,7,8,9,10,删除5,再依次输出数据元素。 5、算法思想或算法步骤: 主函数主要是在带头结点的循环单链表中删除第i个结点,其主要思想是在循环单链表中寻找到第i-1个结点并由指针p指示,然后让指针s指向a[i]结点,并把数据元素a[i]的值赋给x,最后把a[i]结点脱链,并动态释放a[i]结点的存储空间。 6、模块划分: 1)头文件LinList.h。头文件LinList.h中包括:结点结构体定义、初始化操作、求当前数据个数、插入一个结点操作、删除一个结点操作以及取一个数据元素操作; 2)实现文件dlb.cpp。包含主函数void main(void),其功能是测试所设计的循环单链表的正确性。

7、数据结构: 链表中的结点的结构体定义如下: typedef struct Node { DataType data; struct Node *next; }SLNode; 8、源程序: 源程序存放在两个文件中,即头文件LinList.h和实现文件dlb.cpp。//头文件LinList.h typedef struct Node { DataType data; struct Node *next; }SLNode; void ListInitiate(SLNode **head) //初始化 { *head=(SLNode *)malloc(sizeof(SLNode)); //申请头结点,由head指示其地址 (*head)->next=*head; }

生物质热解技术

生物质压缩成型技术 1 压缩成型原理 生物质主要有纤维素、半纤维素和木质素组成。木质素为光合作用形成的天然聚合体,具有复杂的三维结构,属于高分子化合物,它在植物中的含量一般为15%~30%。木质素不是晶体,没有熔点但有软化点,当温度为70-110℃时开始软化,木质素有一定的黏度;在200-300℃呈熔融状、黏度高,此时施加一定的压力,增强分子间的内聚力,可将它与纤维素紧密粘接并与相邻颗粒互相黏结,使植物体变得致密均匀,体积大幅度减少,密度显著增加,当取消外部压力后,由于非弹性的纤维分子之间相互缠绕,一般不能恢复原来的结构和形状。在冷却以后强度增加,成为成型燃料。压缩时如果对生物质原料进行加热,有利于减少成型时的挤压力。 对于木质素含量较低的原料,在压缩成型过程中,可掺入少量的黏结剂,使成型燃料保持给定形状。当加入黏结剂时,原料颗粒表面会形成吸附层,颗粒之间产生引力,使生物质粒子之间形成连锁的结构。这种成型方法所需的压力较小,可供选择的黏结剂包括黏土、淀粉、糖蜜、植物油和造纸黑液等。 2 压缩成型生产工艺 压缩成型技术按生产工艺分为黏结成型、压缩颗粒燃料和热压缩成型工艺,可制成棒状、块状、颗粒状等各种成型燃料。 生物质—-干燥—-粉碎—-调湿—-成型—-冷却—-成型燃料 主要操作步骤如下: (1)干燥 生物质的含水率在20%-40%之间,一般通过滚筒干燥机进行烘干,将原料

的含水率降低至8%-10%。如果原料太干,压缩过程中颗粒表面的炭化和龟裂有可能会引起自燃;而原料水分过高时,加热过程中产生的水蒸气就不能顺利排出,会增加体积,降低机械强度。 (2)粉碎 木屑及稻壳等原料的粒度较小,经筛选后可直接使用。而秸秆类原料则需通过粉碎机进行粉碎处理,通常使用锤片式粉碎机,粉碎的粒度由成型燃料的尺寸和成型工艺所决定。 (3)调湿 加入一定量的水分后,可以使原料表面覆盖薄薄的一层液体,增加黏结力,便于压缩成型。 (4)成型 生物质通过压缩成型,一般不使用添加剂,此时木质素充当了黏合剂。生物质压缩成型的设备一般分为螺旋挤压式、活塞冲压式和换模滚压成型。 螺旋挤压机源于日本,是目前国内比较常见的技术,生产的成型燃料为棒状,直径50-70mm。将已经粉碎的生物质通过螺旋推进器连续不断推向锥形成型筒的前端,挤压成型。因为生产过程是连续进行的,所以成型燃料的质量比较均匀,外表面在挤压过程中发生炭化,容易点燃。但是,由于螺杆处在较高温度和压力下工作,螺杆与物料始终处于摩擦状态,导致压缩区螺纹的磨损非常严重。当螺杆磨损到一定程度,螺杆与出料筒失去尺寸配合,原料就无法完成成型。因此,压缩区螺纹的磨损决定了螺杆的使用寿命,螺杆使用寿命成为生物质压缩成型技术实用化决定性因素。对螺杆磨损,由于受工艺技术的制约,目前没有从根本上解决问题,平均寿命仅为60-80h。

测试技术实验指导书及实验报告2006级用汇总

矿压测试技术实验指导书 学号: 班级: 姓名: 安徽理工大学 能源与安全学院采矿工程实验室

实验一常用矿山压力仪器原理及使用方法 第一部分观测岩层移动的部分仪器 ☆深基点钻孔多点位移计 一、结构简介 深基点钻孔多点位移计是监测巷道在掘进和受采动影响的整个服务期间,围岩内部变形随时间变化情况的一种仪器。 深基点钻孔多点位移包括孔内固定装置、孔中连接钢丝绳、孔口测读装置组成。每套位移计内有5~6个测点。其结构及其安装如图1所示。 二、安装方法 1.在巷道两帮及顶板各钻出φ32的钻孔。 2.将带有连接钢丝绳的孔内固定装置,由远及近分别用安装圆管将其推至所要求的深度。(每个钻孔布置5~6个测点,分别为;6m、5m、4m、3m、2m、lm或12m、10m、8m、6m、4m、2m)。 3.将孔口测读装置,用水泥药圈或木条固定在孔口。 4。拉紧每个测点的钢丝绳,将孔口测读装置上的测尺推至l00mm左右的位置后,由螺丝将钢丝绳与测尺固定在一起。 三、测试方法 安装后先读出每个测点的初读数,以后每次读得的数值与初读数之差,即为测点的位移值。当读数将到零刻度时,松开螺丝,使测尺再回到l00mm左右的位置,重新读出初读数。 ☆顶板离层指示仪 一、结构简介: 顶板离层指示仪是监测顶板锚杆范围内及锚固范围外离层值大小的一种监测仪器,在顶板钻孔中布置两个测点,一个在围岩深部稳定处,一个在锚杆端部围岩中。离层值就是围岩中两测点之间以及锚杆端部围岩与巷道顶板表面间的相对位移值。顶板离层指示仪由孔内固定装置、测量钢丝绳及孔口显示装置组成如图1所示。

二、安装方法: 1.在巷道顶板钻出φ32的钻孔,孔深由要求而定。 2.将带有长钢丝绳的孔内固定装置用安装杆推到所要求的位置;抽出安装杆后再将带有短钢丝绳的孔内固定装置推到所要求的位置。 3.将孔口显示装置用木条固定在孔口(在显示装置与钻孔间要留有钢丝绳运动的间隙)。 4.将钢丝绳拉紧后,用螺丝将其分别与孔口显示装置中的圆管相连接,且使其显示读数超过零刻度线。 三、测读方法: 孔口测读装置上所显示的颜色,反映出顶板离层的范围及所处状态,显示数值表示顶板的离层量。☆DY—82型顶板动态仪 一、用途 DY-82型顶板动态仪是一种机械式高灵敏位移计。用于监测顶底板移近量、移近速度,进行采场“初次来压”和“周期来压”的预报,探测超前支撑压力高 峰位置,监测顶板活动及其它相对位移的测量。 二、技术特征 (1)灵敏度(mm) 0.01 (2)精度(%) 粗读±1,微读±2.5 (3)量程(mm) 0~200 (4)使用高度(mm) 1000~3000 三、原理、结构 其结构和安装见图。仪器的核心部件是齿条6、指针8 以及与指针相连的齿轮、微读数刻线盘9、齿条下端带有读 数横刻线的游标和粗读数刻度管11。 当动态仪安装在顶底板之间时,依靠压力弹簧7产生的 弹力而站立。安好后记下读数(初读数)并由手表读出时间。 粗读数由游标10的横刻线在刻度管11上的位置读出,每小 格2毫米,每大格(标有“1”、“22'’等)为10毫米,微读数 由指针8在刻线盘9的位置读出,每小格为0.01毫米(共200 小格,对应2毫米)。粗读数加微读数即为此时刻的读数。当 顶底板移近时,通过压杆3压缩压力弹簧7,推动齿条6下 移,带动齿轮,齿轮带动指针8顺时针方向旋转,顶底板每 移近0.01毫米,指针转过1小格;同时齿条下端游标随齿条 下移,读数增大。后次读数减去前次读数,即为这段时间内的顶底板移近量。除以经过的时间,即得

实验指导书

Matlab实验指导书 河北大学电子信息工程学院 2004年1月

目录 MATLAB实验教学计划 (2) 实验一MATLAB基本操作 (3) 实验二MATLAB图形系统......................................................... . (5) 实验三 MATLAB程序设计 (6) 实验四 MATLAB基本应用领域 (7) 实验五设计性综合实验1---数字信道编译码 (14) 实验六设计性综合实验2---fir滤波器设计................................. . (16) 2

MATLAB实验教学计划 指导教师:郑晓昆薛文玲王竹毅学时数:12学时周4学时2次实验,共3周6次实验,第7—9教学周,每次实验2学时 所用仪器设备:MATLAB7.0实验软件系统 实验指导书:Matlab实验指导书 自编 实验参考书:, 楼顺天等编著, 西安电子科大出版社,06年5月第二版 实验项目: A, MATLAB基本操作 内容:矩阵操作,基本数学函数,逻辑函数操作等; 要求:循序渐进完成P83练习题1—10 B, MATLAB图形系统 内容:图形绘制,图形标注,对数和极坐标,坐标轴控制,颜色控制等要求:循序渐进完成P146练习题1—10 C, MATLAB程序设计 内容:脚本script和函数function认识,流程控制,参数交互输入,基本程序设计技巧练习,程序调试DEBUG等 要求:循序渐进完成P184练习题1—10 D, MATLAB基本应用领域 内容:线性代数,多项式与内插,曲线拟合,数据分析与统计,泛函基础等 要求:循序渐进完成P146练习题1—4,6—19 E, 设计性综合实验----数字信道编译码 内容:1数字通信系统信道编码AMI编译码 2数字通信系统信道编码HDB3编译码 F,设计性综合实验----fir滤波器设计 内容:设计一个有限冲击相应数字滤波器FIR是该滤波器能够滤出规定频率以上的信号,而该频率以下的信号不受影响。 3

单链表实验报告

计算机与信息技术学院综合性、设计性实验报告 一、实验目的 (1)熟悉顺序表的创建、取值、查找、插入、删除等算法,模块化程序设计方法。 二、实验仪器或设备 (1)硬件设备:CPU为Pentium 4 以上的计算机,内存2G以上 (2)配置软件:Microsoft Windows 7 与VC++6.0 三、总体设计(设计原理、设计方案及流程等) 设计原理: 单链表属于线性表,线性表的存储结构的特点是:用一组任意存储单元存储线性表的数据元素,这组存储单元可以是连续的,也可以是不连续的。因此,对于某个元素来说,不仅需要存储其本身的信息,还需要存储一个指示其直接后继的信息。 设计方案: 采用模块化设计的方法,设计各个程序段,最终通过主函数实现各个程序段的功能。设计时,需要考虑用户输入非法数值,所以要在程序中写入说可以处理非法数值的代码。 设计流程: 1. 引入所需的头文件; 2. 定义状态值; 3. 写入顺序表的各种操作的代码; 写入主函数,分别调用各个函数。在调用函数时,采用if结构进行判断输 入值是否非法,从而执行相应的程序 四、实验步骤(包括主要步骤、代码分析等) #include // EOF(=A Z 或F6),NULL #in clude // srand( ) ,rand( ),exit (n) #in clude // malloc( ),alloc( ),realloc() 等 #in clude // INT_MAX 等 #in clude #in clude #in clude // floor(),ceil( ),abs() #in clude // cout,ci n #in clude // clock( ),CLK_TCK,clock_t #defi ne TRUE 1 #defi ne FALSE 0 #defi ne OK 1 #defi ne ERROR 0 #defi ne INFEASIBLE -1

生物质热解技术

生物质热解技术 按温度,升温速率,固定停留时间(反应时间)和颗粒大小等实验条件可将热解分为炭化(慢热解),快速热解和气化。由于液体产物的诸多优点和随之而来的人们对其研究兴趣的日益高涨,对液体产物收率相对较高的快速热解技术的研究和应用越来越受到人们的重视。快速热解过程在几秒或更短的时间内完成。所以,化学反应,传热传质以及相变现象都起重要作用。关键问题是使生物质颗粒只在极短的时间内处于较低温度(此种低温利于生成焦炭),然后一直处于热解过程最优温度。要达到此目的的一种方法是使用小生物质颗粒(应用于流化床反应器),另一种方法是通过热源直接与生物质颗粒表面接触达到快速传热(这一方法应用于生物质烧蚀热解技术中)。由众多实验研究得知,较低的加热温度和较长气体停留时间会有利于炭的生成,高温和较长停留时间会增加生物质转化为气体的量,中温和短停留时间对液体产物增加最有利。 秸秆发电商品化前景分析 解决浪费性生物质能资源的唯一出路在于商品化。生物质能秸秆发电技术,不仅为农村提供更多电力,更有意义的是将使生物质能资源的商品化成为可能,一方面农民可通过出售秸秆获得更多的收入;另一方面过去农村使用直接燃烧秸秆的方式进行炊事,要为秸秆的收集、运输、储存以及在直接燃烧时花费大量的时间和劳力。如果能使用秸秆发电,农村使用更多的商品能源,农民将获得更多的时间从事生产性劳动,以尽早脱贫致富。因此,将秸秆发电进行能源方式转化,是一件利国利民的好事。 1 生物质能秸秆发电的工艺流程 农作物秸秆在很久以前就开始作为燃料,直至1973年第一次石油危机时丹麦开始研究利用秸秆作为发电燃料。在这个领域丹麦BWE公司是世界领先者,第一家秸秆燃烧发电厂于1998年投入运行(Haslev,5Mw)。此后,BWE公司在西欧设计并建造了大量的生物发电厂,其中最大的发电厂是英国的Elyan发电厂,装机容量为38Mw。 1.1 秸秆的处理、输送和燃烧 发电厂内建设两个独立的秸秆仓库。每个仓库都有大门,运输货车可从大门驶入,然后停在地磅上称重,秸秆同时要测试含水量。任何一包秸秆的含水量超过25%,则为不合格。在欧洲的发电厂中,这项测试由安装在自动起重机上的红外传感器来实现。在国内,可以手动将探测器插入每一个秸秆捆中测试水分,该探测器能存储99组测量值,测量完所有秸秆捆之后,测量结果可以存入连接至地磅的计算机。然后使用叉车卸货,并将运输货车的空车重量输入计算机。计算机可根据前后的重量以及含水量计算出秸秆的净重。 货车卸货时,叉车将秸秆包放入预先确定的位置;在仓库的另一端,叉车将秸秆包放在进料输送机上;进料输送机有一个缓冲台,可保艚崭?分钟;秸秆从进料台通过带密封闸门(防火)的进料输送机传送至进料系统;秸秆包被推压到两个立式螺杆上,通过螺杆的旋转扯碎秸秆,然后将秸秆传

混凝土结构实验指导书及实验报告(学生用)

土木工程学院 《混凝土结构设计基本原理》实验指导书 及实验报告 适用专业:土木工程周淼 编 班级::学 号: 理工大学 2018 年9 月

实验一钢筋混凝土梁受弯性能试验 一、实验目的 1.了解适筋梁的受力过程和破坏特征; 2.验证钢筋混凝土受弯构件正截面强度理论和计算公式; 3.掌握钢筋混凝土受弯构件的实验方法及荷载、应变、挠度、裂缝宽度等数据的测试技术 和有关仪器的使用方法; 4.培养学生对钢筋混凝土基本构件的初步实验分析能力。 二、基本原理当梁中纵向受力钢筋的配筋率适中时,梁正截面受弯破坏过程表现为典型的三个阶段:第一阶段——弹性阶段(I阶段):当荷载较小时,混凝土梁如同两种弹性材料组成的组合梁,梁截面的应力呈线性分布,卸载后几乎无残余变形。当梁受拉区混凝土的最大拉应力达到混凝土的抗拉强度,且最大的混凝土拉应变超过混凝土的极限受拉应变时,在纯弯段某一薄弱截面出现首条垂直裂缝。梁开裂标志着第一阶段的结束。此时,梁纯弯段截面承担的弯矩M cr称为开裂弯矩。第二阶段——带裂缝工作阶段(II阶段):梁开裂后,裂缝处混凝土退出工作,钢筋应力急增,且通过粘结力向未开裂的混凝土传递拉应力,使得梁中继续出现拉裂缝。压区混凝土中压应力也由线性分布转化为非线性分布。当受拉钢筋屈服时标志着第二阶段的结束。此时梁纯弯段截面承担的弯矩M y称为屈服弯矩。第三阶段——破坏阶段(III阶段):钢筋屈服后,在很小的荷载增量下,梁会产生很大的变形。裂缝的高度和宽度进一步发展,中和轴不断上移,压区混凝土应力分布曲线渐趋丰满。当受压区混凝土的最大压应变达到混凝土的极限压应变时,压区混凝土压碎,梁正截面受弯破坏。此时,梁承担的弯矩M u 称为极限弯矩。适筋梁的破坏始于纵筋屈服,终于混凝土压碎。整个过程要经历相当大的变形,破坏前有明显的预兆。这种破坏称为适筋破坏,属于延性破坏。 三、试验装置

实验指导书

苯甲酸红外光谱的测绘—溴化钾压片法制样 一、实验目的 1、了解红外光谱仪的基本组成和工作原理。 2、熟悉红外光谱仪的主要应用领域。 3、掌握红外光谱分析时粉末样品的制备及红外透射光谱测试方法。 4、熟悉化合物不同基团的红外吸收频率范围.学会用标准数据库进行图谱检索 及化合物结构鉴定的基本方法。 二、实验原理 红外光谱分析是研究分子振动和转动信息的分子光谱。当化合物受到红外光照射,化合物中某个化学键的振动或转动频率与红外光频率相当时,就会吸收光能,并引起分子永久偶极矩的变化,产生分子振动和转动能级从基态到激发态的跃迁,使相应频率的透射光强度减弱。分子中不同的化学键振动频率不同,会吸收不同频率的红外光,检测并记录透过光强度与波数(1/cm)或波长的关系曲线,就可得到红外光谱。红外光谱反映了分子化学键的特征吸收频率,可用于化合物的结构分析和定量测定。 根据实验技术和应用的不同,我们将红外光划分为三个区域:近红外区(0.75~2.5μm;13158~40001/cm),中红外区(2.5~25μm;4000~4001/cm)和远红外区(25~1000μm;400~101/cm)。分子振动伴随转动大多在中红外区,一般的红外光谱都在此波数区间进行检测。 傅立叶变换红外光谱仪主要由红外光源、迈克尔逊干涉仪、检测器、计算机和记录系统五部分组成。红外光经迈克尔逊干涉仪照射样品后,再经检测器将检测到的信号以干涉图的形式送往计算机,进行傅立叶变换的数学处理,最后得到红外光谱图。

傅立叶变换红外光谱法具有灵敏度高、波数准确、重复性好的优点,可以广泛应用于有机化学、金属有机化学、高分子化学、催化、材料科学、生物学、物理、环境科学、煤结构研究、橡胶工业、石油工业(石油勘探、润滑油、石油分析等)、矿物鉴定、商检、质检、海关、汽车、珠宝、国防科学、农业、食品、生物医学、生物化学、药学、无机和配位化学基础研究、半导体材料、法庭科学(司法鉴定、物证检验等)、气象科学、染织工业、日用化工、原子能科学技术、产品质量监控(远距离光信号光谱测量:实时监控、遥感监测等)等众多方面。 三、仪器和试剂 1、Nicolet 5700 FT-IR红外光谱仪(美国尼高力公司) 2、压片机(日本岛津公司) 3、压片模具(日本岛津公司) 4、玛瑙研钵(日本岛津公司) 5、KBr粉末(光谱纯,美国尼高力公司) 6、苯甲酸(分析纯) 四、实验步骤 1、样品的制备(溴化钾压片法)

单链表的插入和删除实验报告

. 实验一、单链表的插入和删除 一、目的 了解和掌握线性表的逻辑结构和链式存储结构,掌握单链表的基本算法及相关的时间性能分析。 二、要求: 建立一个数据域定义为字符串的单链表,在链表中不允许有重复的字符串;根据输入的字符串,先找到相应的结点,后删除之。 三、程序源代码 #include"stdio.h" #include"string.h" #include"stdlib.h" #include"ctype.h" typedef struct node //定义结点 { char data[10]; //结点的数据域为字符串 struct node *next; //结点的指针域 }ListNode; typedef ListNode * LinkList; // 自定义LinkList单链表类型 LinkList CreatListR1(); //函数,用尾插入法建立带头结点的单链表

ListNode *LocateNode(); //函数,按值查找结点 void DeleteList(); //函数,删除指定值的结点void printlist(); //函数,打印链表中的所有值 void DeleteAll(); //函数,删除所有结点,释放内存 //==========主函数============== void main() { char ch[10],num[10]; LinkList head; head=CreatListR1(); //用尾插入法建立单链表,返回头指针printlist(head); //遍历链表输出其值 printf(" Delete node (y/n):");//输入“y”或“n”去选择是否删除结点scanf("%s",num); if(strcmp(num,"y")==0 || strcmp(num,"Y")==0){ printf("Please input Delete_data:"); scanf("%s",ch); //输入要删除的字符串 DeleteList(head,ch); printlist(head); } DeleteAll(head); //删除所有结点,释放内存 } //==========用尾插入法建立带头结点的单链表

第十章 生物质热解技术

第十章生物质热解技术 1 概述 热化学转化技术包括燃烧、气化、热解以及直接液化,转化技术与产物的相互关系见图10-1。热化学转化技术初级产物可以是某种形式的能量携带物,如,木炭(固态)、生物油(液态)或生物质燃气(气态),或者是能量。这些产物可以被不同的实用技术所使用,也可通过附加过程将其转化为二次能源加以利用。 图10-1 热化学转化技术与产物的相互关系 生物质热解、气化和直接液化技术都是以获得高品位的液体或者气体燃料以及化工制品为目的,由于生物质与煤炭具有相似性,它们最初来源于煤化工(包括煤的干馏、气化和液化)。本章中主要围绕热解展开。 1.1生物质热解概念 热解(Pyrolysis又称裂解或者热裂解)是指在隔绝空气或者通入少量空气的条件下,利用热能切断生物质大分子中的化学键,使之转变成为低分子物质的过程。可用于热解的生物质的种类非常广泛,包括农业生产废弃物及农林产品加工业废弃物、薪柴和城市固体废物等。 关于热解最经典的定义源于斯坦福研究所的J. Jones提出的,他的热解定义为“在不向反应器内通入氧、水蒸气或加热的一氧化碳的条件下,通过间接加热使寒潭有机物发生热化学分解,生成燃料(气体、液体和固体)的过程”。他认为通过部分燃烧热解产物来直接提供热解所需热量的情况,严格地讲不应该称为部分燃烧或缺氧燃烧。他还提出将严格意义上的热解和部分燃烧或缺氧燃烧引起的气化、液化等热化学过程统称为PTGL(Pyrolysis,Thermal Gasification or Liquification)过程。 生物质由纤维素、半纤维素和木质素三种主要组分组成,纤维素是β-D-葡萄糖通过C1-C4苷键联结起来的链状高分子化合物,半纤维素是脱水糖基的聚合物,当温度高于500℃时,纤维素和半纤维素将挥发成气体并形成少量的炭。木质素是具有芳香族特性的,非结晶性的,具有三度空间结构的高聚物。由于木质素中的芳香族成分受热时分解较慢,因而主要形成炭。此外,生物质还含有提取物,主要由萜烯、脂肪酸、芳香物和挥发性油组成,这些提取物在有机和无机溶剂中是可溶的。三种成分的含量茚生物质原料的不同而变化,生物质热裂解产

土工实验指导书及实验报告

土工实验指导书及实验报告编写毕守一 安徽水利水电职业技术学院 二OO九年五月

目录 实验一试样制备 实验二含水率试验 实验三密度试验 实验四液限和塑限试验 实验五颗粒分析试验 实验六固结试验 实验七直接剪切试验 实验八击实试验 土工试验复习题

实验一试样制备 一、概述 试样的制备是获得正确的试验成果的前提,为保证试验成果的可靠性以及试验数据的可比性,应具备一个统一的试样制备方法和程序。 试样的制备可分为原状土的试样制备和扰动土的试样制备。对于原状土的试样制备主要包括土样的开启、描述、切取等程序;而扰动土的制备程序则主要包括风干、碾散、过筛、分样和贮存等预备程序以及击实等制备程序,这些程序步骤的正确与否,都会直接影响到试验成果的可靠性,因此,试样的制备是土工试验工作的首要质量要素。 二、仪器设备 试样制备所需的主要仪器设备,包括: (1)孔径0.5mm、2mm和5mm的细筛; (2)孔径0.075mm的洗筛; (3)称量10kg、最小分度值5g的台秤; (4)称量5000g、最小分度值1g和称量200g、最小分度值0.01g的天平;

(5)不锈钢环刀(内径61.8mm、高20mm;内径79.8mm、高20mm或内径61.8mm、高40mm); (6)击样器:包括活塞、导筒和环刀; (7)其他:切土刀、钢丝锯、碎土工具、烘箱、保湿器、喷水设备、凡士林等。 三、试样制备 (一)原状土试样的制备步骤 1、将土样筒按标明的上下方向放置,剥去蜡封和胶带,开启土样筒取土样。 2、检查土样结构,若土样已扰动,则不应作为制备力学性质试验的试样。 3、根据试验要求确定环刀尺寸,并在环刀内壁涂一薄层凡士林,然后刃口向下放在土样上,将环刀垂直下压,同时用切土刀沿环刀外侧切削土样,边压边削直至土样高出环刀,制样时不得扰动土样。 4、采用钢丝锯或切土刀平整环刀两端土样,然后擦净环刀外壁,称环刀和土的总质量。 5、切削试样时,应对土样的层次、气味、颜色、夹杂物、裂缝和均匀性进行描述。 6、从切削的余土中取代表性试样,供测定含水率以及颗粒分析、界限含水率等试验之用。

实验指导书

实验一材料硬度测定(综合性) 一、实验内容 1.金属布氏硬度实验。 2.金属洛氏硬度实验。 二、实验目的及要求 该实验的目的是使学生熟悉金属布氏、洛氏、维氏硬度计的使用方法,巩固硬度试验方法的理论知识,掌握各种硬度计的结构原理、操作方法及注意事项。要求学生具有踏实的理论知识,同时也具有严谨、一丝不苟的作风。 三、实验条件及要求 (一)实验条件 1.布氏硬度计、洛氏硬度计和显维硬度计,读数放大镜,标准硬度块。 2.推荐试样用材:灰铸铁、经调质处理的45钢、淬火低温回火的T10钢。 (二)要求 制备试样过程中不得使试样因冷、热加工影响试验面原来的硬度。试验面应为光滑的平面,不应有氧化皮及污物,测布氏硬度、洛氏硬度时试验面的粗糙度Ra≤0.8μm。 试验时,应保证试验力垂直作用于试验面上,保证试验面不产生变形、挠曲和振动。试验应在10~35℃温度范围内进行。 不同硬度试验对试样及试验操作尚有具体要求。 四、实验相关知识点 1.硬度试验原理。 2.对试样的要求。 3.硬度试验方法的选择。 4.各种硬度计的结构原理、操作方法及注意事项。 5.试验数据的获得。 6.不同硬度试验方法的关系。 五、实验实施步骤 (一)金属布氏硬度试验 金属布氏硬度值是单位压痕表面积所承受的外力。

1.试验规范的选择 布氏硬度试验时应根据测试材料的硬度和试样厚度选择试验规范,即压头材料与直径、F/D2值、试验力F及试验力保持时间t。 (1)压头材料与直径的选择压头为硬质合金球。 球体直径D的选择按GB/T231.1-2009《金属布氏硬度试验方法》有五种,即10mm、5mm、2.5mm、2mm和1mm。压头直径可根据试样厚度选择,见压头直径、压痕平均直径与试样最小厚度关系表。选择压头直径时,在试样厚度允许的条件下尽量选用10mm球体作压头,以便得到较大的压痕,使所测的硬度值具有代表性和重复性,从而更充分地反映出金属的平均硬度。 (2)F/D2、试验力F及试验力的选择 F/D2比值有七种:30、15、10、5、2.5、1.25和1,其值主要根据试验材料的种类及其硬度范围来选择。 球体直径D和F/D2比值确定后,试验力F也就确定了。 试验须保证压痕直径d在(0.24~0.6)D范围内,试样厚度为压痕深度的10倍以上。 (3)试验力保持时间t的选择试验力保持时间t主要根据试样材料的硬度来选择。黑色金属:t=10~15s;有色金属:t=(30±2)s;<35HBW的材料:t=(60±2)s。 2.布氏硬度试验过程 (1)试验前,应使用与试样硬度相近的二等标准布氏硬度块对硬度计进行校对,即在硬度块上不同部位测试五个点的硬度,取其平均值,其值不超过标准硬度块硬度值的±3%方可进行试验,否则应对硬度计进行调整、修理。 (2)接通电源,打开电源开关。将试样安放在试验机工作台上,转动手轮使工作台慢慢上升,使试样与压头紧密接触,直至手轮与螺母产生相对滑动。同时应保证试验过程中试验力作用方向与试验面垂直,试样不发生倾斜、移动、振动。 启动按钮开关,在施力指示灯亮的同时迅速拧紧压紧螺钉,使圆盘随曲柄一起回转,直至自动反向转动为止,施力指示灯熄灭。从施力指示灯亮到熄灭的时间为试验力保持时间,转动手轮取下试样。 (3)用读数显微镜在两个互相垂直的方向测量出试样表面的压痕直径d1 。

链表实验报告

链表实验报告

————————————————————————————————作者: ————————————————————————————————日期:

《数据结构》实验报告二 系别:嵌入式系统工程系班级:嵌入式11003班 学号:11160400314姓名:孙立阔 日期:2012年4月9日指导教师:申华 一、上机实验的问题和要求: 单链表的查找、插入与删除。设计算法,实现线性结构上的单链表的产生以及元素的查找、插入与删除。具体实现要求: 1.从键盘输入10个字符,产生不带表头的单链表,并输入结点值。 2.从键盘输入1个字符,在单链表中查找该结点的位置。若找到,则显示“找到了”;否则, 则显示“找不到”。 3.从键盘输入2个整数,一个表示欲插入的位置i,另一个表示欲插入的数值x,将x插 入在对应位置上,输出单链表所有结点值,观察输出结果。 4.从键盘输入1个整数,表示欲删除结点的位置,输出单链表所有结点值,观察输出结果。 5.将单链表中值重复的结点删除,使所得的结果表中个结点值均不相同,输出单链表所有结 点值,观察输出结果。 6.删除其中所有数据值为偶数的结点,输出单链表所有结点值,观察输出结果。 7.(★)将单链表分解成两个单链表A和B,使A链表中含有原链表中序号为奇数的元素, 而B链表中含有原链表中序号为偶数的元素,且保持原来的相对顺序,分别输出单链表A和单链表B的所有结点值,观察输出结果。 二、程序设计的基本思想,原理和算法描述: (包括程序的结构,数据结构,输入/输出设计,符号名说明等) 创建一个空的单链表,实现对单链表的查找,插入,删除的功能。 三、源程序及注释: #defineOK 1 #define ERROR 0 #define INFEASIBLE -1 #define OVERFLOW -2 #define TRUE 1

CAD上机实验指导书及实验报告

北京邮电大学世纪学院 实验、实习、课程设计报告撰写格式与要求 (试行) 一、实验报告格式要求 1、有实验教学手册,按手册要求填写,若无则采用统一实验报告封面。 2、报告一律用钢笔书写或打印,打印要求用A4纸;页边距要求如下:页边距上下各为2.5厘米,左右边距各为2.5厘米;行间距取固定值(设置值为20磅);字符间距为默认值(缩放100%,间距:标准)。 3、统一采用国家标准所规定的单位与符号,要求文字书写工整,不得潦草;作图规范,不得随手勾画。 4、实验报告中的实验原始记录,须经实验指导教师签字或登记。 二、实习报告、课程设计报告格式要求 1、采用统一的封面。 2、根据教学大纲的要求手写或打印,手写一律用钢笔书写,统一采用国家标准所规定的单位与符号,要求文字书写工整,不得潦草;作图规范,不得随手勾画。打印要求用A4纸;页边距要求如下:页边距上下各为2.5厘米,左右边距各为2.5厘米;行间距取固定值(设置值为20磅);字符间距为默认值(缩放100%,间距:标准)。 三、报告内容要求 1、实验报告内容包括:实验目的、实验原理、实验仪器设备、实验操作过程、原始数据、实验结果分析、实验心得等方面内容。 2、实习报告内容包括:实习题目、实习任务与要求、实习具体实施情况(附上图表、原始数据等)、实习个人总结等内容。 3、课程设计报告或说明书内容包括:课程设计任务与要求、总体方案、方案设计与分析、所需仪器设备与元器件、设计实现与调试、收获体会、参考资料等方面内容。 北京邮电大学世纪学院 教务处 2009-8

实验报告 课程名称计算机绘图(CAD) 实验项目AutoCAD二维绘图实验 专业班级 姓名学号 指导教师实验成绩 2016年11月日

热电偶测温实验指导书

《建筑环境测试技术》 热电偶测温系统实验实验指导书 上海工程技术大学机械工程学院 能源与环境系统工程系 2014.3

一、实验目的 通过本实验掌握热电偶测量温度的主要内容和方法,了解引起测量误差的因素,达到以下实验目的: 1、观察了解热电偶的结构、校验装置; 2、熟悉热电偶工作特性; 3、掌握热电偶测温方法,学习查阅热电偶分度表; 4、掌握数据读取和数据处理方法。 二、实验原理 两种不同成份的导体两端接合成回路,当两接合点的温度不同时,在回路中就会产生电动势,这种现象称为热电效应,而这种电动势称为热电势。热电偶就是利用这种原理进行温度测量的,其中,直接用作测量介质温度的一端叫做工作端(也称为测量端),另一端叫做冷端(也称为补偿端、自由端、参考端);冷端可以是室温值也可以是经过补偿后的0℃、25℃的模拟温度场。冷端与显示仪表或配套仪表连接,可显示测得的热电势。 国际上,将热电偶的A 、B 热电极材料不同分成若干分度号,如常用的K(镍铬-镍硅或镍铝)、E(镍铬-康铜)、T(铜-康铜)等等,并且有相应的分度表,即参考端温度为0℃时的测量端温度与热电动势的对应关系表。 从热电偶的测温原理可知,热电偶测量的是测量端与参考端之间的温度差,必须保证参考端温度为0℃,才能利用热电偶分度表查得热电势对应的温度,而实际测量时,环境温度T 0(不为0)。对此,有如下关系式: )0,(),()0,(00T E T T E T E += 其中)0,(T E ——测量端温度为T ,参考端为0℃时的热电势 ),(0T T E ——测量端温度为T ,参考端为T 0时的热电势 )0,(0T E ——测量端温度为T 0,参考端为0℃时的热电势 热电偶校验有两种方法:定点法和比较法,后者常用于校验工业用和实验室用热电偶。

单链表实验报告

数据结构 课程设计 设计题目:单链表 专业班级:11软会四班 指导教师:吉宝玉 日期:2012 目录 一、实验目的 (2) 1、 (2) 2、 (2) 二、实验内容 (3)

三、实验基本要求(软、硬件) (3) 四、算法设计思想 (3) 1、 (3) 2、 (3) 3、 (3) 4、 (3) 5、 (3) 6、 (3) 7、 (3) 8、 (3) 五、算法流程图 (4) 六、算法源代码 (4) 七、运行结果 (9) 1、 (9) 2、 (10) 3、 (11) 4、 (11) 5、 (11) 6、 (12) 7、 (12) 8、 (13) 9、 (13) 八、收获及体会 (14) 一、实验目的 1、理解并掌握单链表的结构特点和相关概念; 2、学会单链表的基本操作:建立、插入、删除、查找、 输入、撤销、逆置、求前驱和后继等并实现其算法。

二、实验内容 利用头插建立一个带头结点的单链表,并用算法实现该单链表的插入、删除查找、输出、求前驱和后继、再把此单链表逆置,然后在屏幕上显示每次操作的结果当所有操作完成后能撤销该单链表。 三、实验基本要求(软、硬件) 用VC++6.0软件平台,操作系统:Windows XP 硬件:内存要求:内存大小在256MB,其他配置一般就行。 四、算法设计思想 1、定义一个创建链表的函数,通过该函数可以创建一个链表,并为下面的函数应用做 好准备。 2、定义输出链表的算法,通过对第一步已经定义好的创建链表函数的调用,在这一步 通过调用输出链表的函数算法来实现对链表的输出操作。 3、定义一个遍历查找的算法,通过此算法可以查找到链表中的每一个节点是否存在。 4、定义查找链表的每一个前驱和后继,通过定义这个算法,可以很容易的实现对链表 的前驱和后继的查找工作。 5、定义插入节点的算法,通过定义这个算法,并结合这查找前驱和后继的算法便可以 在连链表的任意位置进行插入一个新节点。 6、定义删除节点的操作,这个算法用于对链表中某个多余节点的删除工作。 7、定义一个逆置单链表的操作,通过定义这个算法,可以逆置输出单链表。 8、定义一个撤销链表的算法,这个算法用于删除单链表中的所有节点,使链表为空。

链表实现多项式相加实验报告

实验报告 课程名称:数据结构 题目:链表实现多项式相加 班级: 学号: 姓名: 完成时间:2012年10月17日

1、实验目的和要求 1)掌握链表的运用方法; 2)学习链表的初始化并建立一个新的链表; 3)知道如何实现链表的插入结点与删除结点操作; 4)了解链表的基本操作并灵活运用 2、实验内容 1)建立两个链表存储一元多项式; 2)实现两个一元多项式的相加; 3)输出两个多项式相加后得到的一元多项式。 3、算法基本思想 数降序存入两个链表中,将大小较大的链表作为相加后的链表寄存处。定义两个临时链表节点指针p,q,分别指向两个链表头结点。然后将另一个链表中从头结点开始依次与第一个链表比较,如果其指数比第一个小,则p向后移动一个单位,如相等,则将两节点的系数相加作为第一个链表当前节点的系数,如果为0,则将此节点栓掉。若果较大,则在p前插入q,q向后移动一个,直到两个链表做完为止。 4、算法描述 用链表实现多项式相加的程序如下: #include #include #include struct node{ int exp; float coef; struct node*next; };

void add_node(struct node*h1,struct node*h2); void print_node(struct node*h); struct node*init_node() { struct node*h=(struct node*)malloc(sizeof(struct node)),*p,*q; int exp; float coef=1.0; h->next=NULL; printf("请依次输入多项式的系数和指数(如:\"2 3\";输入\"0 0\"时结束):\n"); p=(struct node*)malloc(sizeof(struct node)); q=(struct node*)malloc(sizeof(struct node)); for(;fabs(coef-0.0)>1.0e-6;) { scanf("%f %d",&coef,&exp); if(fabs(coef-0.0)>1.0e-6) { q->next=p; p->coef=coef; p->exp=exp; p->next=NULL; add_node(h,q); } } free(p); free(q); return(h); } void add_node(struct node*h1,struct node*h2) { struct node*y1=h1,*y2=h2; struct node*p,*q; y1=y1->next; y2=y2->next; for(;y1||y2;) if(y1) { if(y2) { if(y1->expexp) y1=y1->next; else if(y1->exp==y2->exp) { y1->coef+=y2->coef; if(y1->coef==0)

相关文档
最新文档