波形显示控件
LABVIEW第4章图形显示

图4-3 Waveform Graph弹出菜单
第4章 图形显示
图4-4 X 标尺菜单
第4章 图形显示
设置刻度类型为任意刻度后,Waveform Graph控件上X轴
只有第一个和最后一个刻度显示,如图4-5所示。此时Add
Maker项为可选项,利用该项可以在鼠标指针所在的位置增加 新刻度及相应的竖直网络线,如图4-6所示。
第4章 图形显示
图4-10 标尺选项
第4章 图形显示
图4-11 Cursor游标选项
第4章 图形显示
4.1.2 Waveform Graph组成元素的使用方法
根据图4-2所示,分别介绍Waveform Graph的部分组成元素
的使用方法。 1.波形设置工具
利用波形设置工具可以定义波形的各种相关参数。使用文
标签显示和标签的内容;Caption栏用来设置标题的显示和标题 的内容;Enable State栏用来设置Waveform Graph的状态;其余 几个选项用于是否显示特定的工具面板。
第4章 图形显示
图4-7 外观选项
第4章 图形显示
数据格式与精度(Format and Precision)选项如图4-8所示。
本编辑工具单击波形控制工具上的名称可以进行修改。默认情 况只显示第一条波形的图例,使用定位工具拖动下边沿可以填
加图例。
第4章 图形显示
2.图形工具选板 图形工具选板用来选择鼠标操作模式,共有3个按钮。十 字标志按钮用于切换操作模式和普通模式;第二个按钮是缩放 工具按钮,共有6个选项,从左到右,从上到下依次是按鼠标 拖拽出来的矩形放大、按鼠标拖拽水平放大、按鼠标拖拽垂直 放大、取消最近一次的操作、按鼠标所在点位置放大和按鼠标 所在点位置缩小,如图4-13所示;第三个按钮是平移工具,用 于在X-Y平面上移动可视区域的位置。
labview曲线图与波形图控件的组成

曲线图与波形图控件的组成曲线图与波形图有很多强大的特色功能,通过掌握对这些功能的应用,你可以自定义自己的曲线。
在本文中将讲解如何运用与配置这些曲线图的选项。
一个曲线图的组成元素如下图所示:其中每个组件的说明如下:1——曲线图例(Plot legend)2——光标(Cursor)3——分度标记(Grid mark)4——小分度标记(Minor-grid mark)5——曲线图工具栏(Graph palette)6——光标移动器(Cursor mover)7——光标图例(Cursor legend)8——比例图标(Scale legend)9—— X轴刻度(X-scale)10——Y轴刻度(Y-scale)11——曲线图标记(Label)玩转比例尺波形图与曲线图都能自动调整它们的水平与垂直方向的刻度比例以对绘于其上的数据点作出反应,也就是说比例尺能够按最大的分辨率调整自己以显示数据曲线上的所有数据点。
你可以在曲线图或波形图对象上面点击鼠标右键,在右键弹出菜单中的X Scale菜单或Y Scale菜单里面对AutoScale X或AutoScale Y选项进行设置就可以将自动比例尺调整功能关闭或打开。
在比例图标(Scale Legend)里面我们也可以对自动比例尺调整进行设置(在后面我们会讲到这些)。
在LabVIEW中,默认是将曲线图控件的自动调整功能启用的,而波形图控件这是默认关闭的。
不过,通过启用这个选项可能会使波形图或曲线图更新缓慢,缓慢程度与计算机的处理性能和显示性能有关,缓慢的原因是每条曲线的新比例在每次数据更新的时候都要重新计算一次。
X与Y轴比例尺菜单X与Y轴的比例尺都有一个用来设置的子菜单,如下图所示:通过选择该菜单中的AutoScale选项,就可以关闭或打开自动比例尺功能。
一般情况下,当你执行自动比例尺功能的时候,比例尺就设定为输入数据的实际数值范围。
如果你想要让LabVIEW 将比例尺显示为更好看的数值,可以启用菜单中的Loose Fit选项。
labview波形显示控件

右击Chart选择Stack Plots
整理课件
13
• 定制Chart显示样式
– 设置更新模式 • 右击Chart选择Advanced->Update Mode…可以
设置曲线的更新模式。
• Strip Chart模式:曲线填满显示区后曲线通过左移
来更新曲线。
• Scope Chart模式:曲线填满显示区后直接清空显示
– 数字显示(Show Digital Display); – 滚动条(Show Scrollbar); – 历史记录长度(Chart History Length)。 – 多层图(Stack Plots); – 波形刷新模式(Update Mode);
整理课件
12
• 定制Chart显示样式
– 分栏显示多条曲线。
整理课件
3
一、 Chart趋势图
• Chart可以将新测得的数据添加到曲线的尾
端,从而反映实时数据的变化趋势,它主 要用来显示实时曲线。
• 控制面板的结构:
• X,Y轴;
– 图形显示区; – 波形设置; – 控件标签。
整理课件
4
• 对于标量数据,Chart图表直接将数据添加
在曲线的尾端。
整理课件
线图、密度图、数字时序图和三维图。
整理课件
16
Graph图表
• 右击Graph控件可以看到该控件有很多属性可以设置。
选择Visible Items…可以看到关于该控件的很多辅助 选项。选择这些选项可以使它们都可见,如下图所示。
整理课件
17
• 波形设置:
– 图形表示方法(Common Plots); – 数据点风格(Point Style); – 线型(Line Style); – 线宽(Line Width); – 直方图(Fill Baseline); – 连线方式(Interpolation); – 颜色(Color)。
LabVIEW入门与实战开发——编辑前面板

LabVIEW入门与实战开发——编辑前面板前面板是VI代码的接口,是用户交互界面。
前面板界面上放置了各种图形控件,这些控件主要分为输入控件(Control)和显示控件(Indicator)两大类。
例如,在实例1中打开的模板VI的前面板含有波形图显示、数值显示和停止按钮3个控件。
1. 控件选板前面板中放置的控件来源于控件选板。
显示控件选板的方法有两种:方法一,按图1-1所示在前面板的菜单栏选择“查看(V)→控件选板(C)”,弹出控件选板,如图1-2所示;方法二,如图1-3所示,在前面板的空白处单击鼠标右键,再单击固定端子按钮就能得到如图1-2所示的控件选板。
▲图1-1 从菜单栏打开控件选板▲图1-2 控件选板▲图1-3 单击鼠标右键打开控件选板说明:对于方法二,若不单击固定端子按钮,单击鼠标左键时,控件选板便会消失。
控件选板包含了创建前面板时可用的全部对象,其中最常用的是新式、系统和经典3类控件。
单击控件选板的某一个图标会进入该图标链接的下一层控件菜单。
图1-4所示为新式控件及其包含的所有类型的控件。
新式控件主要包括数值、布尔、字符串与路径、数组、矩阵与簇、列表与表格、图形、下拉列表与枚举、容器、I/O、引用句柄、变体与类等控件,以及用于修饰的图形与线条。
图1-4新式控件及其包含的所有类型的控件图1-5所示为系统控件,图1-6所示为经典控件。
由图可见,系统控件和经典控件中也包含了数值、布尔、字符串等控件,虽然在表现风格上有些差别,但在用法上基本一致。
一般情况下,相对于系统控件和经典控件来说,新式控件更常用一些。
▲图1-5系统控件▲图1-6 经典控件2.工具选板工具选板主要用于在编辑前面板和程序框图时根据需要改变鼠标的功能,从而实现连线、选择、移动等操作。
调出工具选板的方法也有两种:方法一,按图1-7所示在前面板的菜单栏中选择“查看(V)→工具选板(T)”,弹出工具选板,如图1-8所示;方法二,按住“Shift”键,在前面板或程序框图的空白处单击鼠标右键,也可以调出工具选板,但是此时如果单击鼠标左键,工具选板便会消失。
威伦触摸屏曲线图显示波形

威伦触摸屏曲线图显示波形一、实验前基本知识了解。
1、HMI内存地址LW,范围LW0~LW11300,为16位寄存器,存储32数据时,地址偏移量+2。
例如:以LW0为首地址存放一个浮点型的数,那么该浮点数存放位置为LW0-LW1,我们在操作时,只需要设置该数据的类型,系统会自动读取和写入。
2、西门子1200PLC DB数据块数据的读取。
数值元件读取写入添加一个数值元件,打开属性。
设备:选择添加好的PLC。
地址:选择DBDn,30000。
30000中的3表示数据块DB3,后面的0000表示数据块DB3中的偏移地址。
那么则我们选择的是读取变量“采集温度”。
需要注意的是数据块要取消优化访问功能才能进行偏移量显示。
威伦触摸屏幕中的地址格式可以通过在地址栏中任意输入字符点确定即可查看地址填写规则。
3、HMI宏指令。
GetData:取值指令。
格式:GetData(读取数据存放的变量, “读取数据的设备名称”, 数据名, 读取的数据首地址, 读取数据个数)。
说明:读取的数据可以来自HMI,也可以来自PLC,主要看对应参数的设置,读取的数据类型取决于数据存放变量的类型。
例:float in_1[201]GetData(in_1[200], "Siemens S7-1200/S7-1500", DBDn, 30004, 1)将PLC "Siemens S7-1200/S7-1500"中的DB3.DBD4开始读取1个数据把它存放在数组in_1[200]中。
SetData:赋值指令。
格式:SetData(要赋值的变量, “被赋值的设备名称”, 被赋值的数据名, 被赋值的首地址, 赋值的个数)。
例:float in_1[201]in_1[200]=3.14GetData(in_1[200], "Siemens S7-1200/S7-1500", DBDn, 30004, 1)将3.14的值赋给PLC "Siemens S7-1200/S7-1500"中DB3数据块中偏移量为4首地址中,被赋值数据的个数为1.4、宏指令设置。
Qt编写自定义控件60-声音波形图

Qt编写⾃定义控件60-声⾳波形图⼀、前⾔这个控件源⾃于⼀个⾳乐播放器,在写该⾳乐播放器的时候,需要将⾳频的数据转换成对应的频谱显⽰,采⽤的fmod第三⽅库来处理(fmod声⾳系统是为游戏开发者准备的⾰命性⾳频引擎,⾮常强⼤和⽜逼),fmod负责拿到⾳频数据对应的采样频谱数据,然后传给这个控件进⾏绘制即可,本控件主需要专注于绘制即可,这样fmod对应封装的类专注于⾳频采集等处理,实现了隔离,修改和增加功能⽐较⽅便,声⾳波形图控件除了可以设置采样的深度以外,还⽀持三种数据样式展⽰,线条样式、柱状样式、平滑样式。
为了可以直接定位到某⼀位置直接跳转到⾳频位置,还增加了绘制数线条定位线。
⼆、实现的功能1:可设置采样深度2:可设置当前位置线条宽度/线条颜⾊3:可设置前景⾊/背景⾊4:可设置数据展⽰样式,线条样式/柱状样式/平滑样式三、效果图四、头⽂件代码#ifndef WAVEDATA_H#define WAVEDATA_H/*** ⾳量采样值波形控件作者:feiyangqingyun(QQ:517216493) 2017-9-10* 1:可设置采样深度* 2:可设置当前位置线条宽度/线条颜⾊* 3:可设置前景⾊/背景⾊* 4:可设置数据展⽰样式,线条样式/柱状样式/平滑样式*/#include <QWidget>#ifdef quc#if (QT_VERSION < QT_VERSION_CHECK(5,7,0))#include <QtDesigner/QDesignerExportWidget>#else#include <QtUiPlugin/QDesignerExportWidget>#endifclass QDESIGNER_WIDGET_EXPORT WaveData : public QWidget#elseclass WaveData : public QWidget#endif{Q_OBJECTQ_ENUMS(WaveStyle)Q_PROPERTY(double deep READ getDeep WRITE setDeep)Q_PROPERTY(bool showLine READ getShowLine WRITE setShowLine)Q_PROPERTY(int lineWidth READ getLineWidth WRITE setLineWidth)Q_PROPERTY(QColor lineColor READ getLineColor WRITE setLineColor)Q_PROPERTY(QColor foreground READ getForeground WRITE setForeground)Q_PROPERTY(QColor background READ getBackground WRITE setBackground)Q_PROPERTY(WaveStyle waveStyle READ getWaveStyle WRITE setWaveStyle)public:enum WaveStyle {WaveStyle_Line = 0, //线条样式WaveStyle_Smooth = 1, //平滑样式WaveStyle_Bar = 2 //柱状样式};explicit WaveData(QWidget *parent = 0);protected:void mousePressEvent(QMouseEvent *);void paintEvent(QPaintEvent *);void drawBg(QPainter *painter);void drawData(QPainter *painter);void drawLine(QPainter *painter);private:double deep; //采集深度bool showLine; //显⽰线条int lineWidth; //线条宽度QColor lineColor; //线条颜⾊QColor foreground; //前景⾊QColor background; //背景⾊WaveStyle waveStyle; //数据样式int length; //采样点长度int position; //当前位置QVector<float> data; //采样点数据public:double getDeep() const;bool getShowLine() const;int getLineWidth() const;QColor getLineColor() const;QColor getForeground() const;QColor getBackground() const;WaveStyle getWaveStyle() const;QSize sizeHint() const;QSize minimumSizeHint() const;public slots://设置深度void setDeep(double deep);//设置是否显⽰线条void setShowLine(bool showLine);//设置线条宽度void setLineWidth(int lineWidth);//设置线条颜⾊void setLineColor(const QColor &lineColor);//设置前景⾊void setForeground(const QColor &foreground);//设置背景⾊void setBackground(const QColor &background); //设置数据样式void setWaveStyle(const WaveStyle &waveStyle); //设置总长度void setLength(int length);//设置当前位置void setPosition(int position);//设置当前数据void setData(const QVector<float> &data);//清空数据void clearData();signals:void positionChanged(int position);};#endif // WAVEDATA_H五、核⼼代码void WaveData::paintEvent(QPaintEvent *){//绘制准备⼯作,启⽤反锯齿QPainter painter(this);painter.setRenderHints(QPainter::Antialiasing);//绘制背景drawBg(&painter);//绘制数据drawData(&painter);//绘制当前位置线条drawLine(&painter);}void WaveData::drawBg(QPainter *painter){painter->save();painter->fillRect(this->rect(), background);painter->restore();}void WaveData::drawData(QPainter *painter){if (data.count() == 0) {return;}painter->save();//获取最⼤值最⼩值float max = data.at(0);float min = data.at(0);int count = data.count();for (int i = 1; i < count; i++) {if (max < data.at(i)) {max = data.at(i);}if (min > data.at(i)) {min = data.at(i);}}//转化成当前屏幕的内的坐标⼤⼩max += deep;min -= deep;//⾃动转换数据到屏幕坐标位置QVector<QPointF> points;for (int i = 0; i < count; i++) {double x = i * width() / count;double y = height() - (((data.at(i) - min) / (max - min)) * height());points.append(QPointF(x, y));}//绘制不同的风格if (waveStyle == WaveStyle_Line) {painter->setPen(foreground);for (int i = 0; i < count - 1; i++) {painter->drawLine(points.at(i), points.at(i + 1));}} else if (waveStyle == WaveStyle_Smooth) {painter->setPen(foreground);QPainterPath path = SmoothCurveCreator::createSmoothCurve(points); painter->drawPath(path);} else if (waveStyle == WaveStyle_Bar) {double penWidth = width() / (count * 1.6);QPen pen;pen.setColor(foreground);pen.setWidthF(penWidth);pen.setCapStyle(Qt::RoundCap);painter->setPen(pen);for (int i = 0; i < count; i++) {QPointF point = points.at(i);double x = point.x() + penWidth / 1.2;painter->drawLine(QPointF(x, point.y()), QPointF(x, height()));}}painter->restore();}void WaveData::drawLine(QPainter *painter){if (!showLine || position > length || data.count() <= 0) {return;}painter->save();QPen pen;pen.setWidth(lineWidth);pen.setColor(lineColor);painter->setPen(pen);//计算当前位置对应的坐标int x = ((double)position / length) * width();painter->drawLine(x, 0, x, height());painter->restore();}六、控件介绍1. 超过150个精美控件,涵盖了各种仪表盘、进度条、进度球、指南针、曲线图、标尺、温度计、导航条、导航栏,flatui、⾼亮按钮、滑动选择器、农历等。
LabVIEW虚拟仪器技术第3章-基本数据类型

布尔控件
布尔串控件,位于 “控件”选板->“新式”>“布尔”中。
布尔函数
对布尔量实施操 作的函数称为布尔函 数,位于“函数”选 板->“编程”->“布 尔”中。
按钮与开关
布尔输入控件分为按钮型布尔控件和开关型 布尔控件。它们都是布尔输入控件,但物理意义 有所区别。
单位标签可以在快捷菜单->显示项->单位标 签从而显示,可自由输入物理单位符号,如时间 “h”,“s”,长度“m”等。也可于单位标签上 右键->创建单位字符串进行单位选择。
LabVIEW程序可实现不同单位的自动转换, 还可以通过运算自动处理组合单位。
数值控件的基数与单位标签
数值控件的属性
在快捷菜单上选择“属性”项,即可打开属 性对话框。属性对话框由许多属性页组成,涵盖 了大量的控件属性设置信息。
我们利用控件选板所提供的各种输入控件 和显示控件就可以达到”所见即所得”的效果。
从LabVIEW数据流编程的角度看,任何数 据都必须是有源的,这个源就是输入控件或常 量。常量可以理解为特殊的输入控件。而数据 最终流向的目的地就是显示控件。
从控件本身的角度看,LabVIEW只是推荐 了控件的使用方法,而并没有绝对区分控件必 须是输入控件还是显示控件,两者之间可以相 互转化。
线型与数据类型
LabVIEW中,不同的线型代表不同的数据类型。
在LabVIEW中,数值控件的数据类型是可以 改变的。当我们使用数值控件时,需注意正确使 用数据类型,避免程序发生错误。
编写求平均数程序: 程序能否运行? 程序能否实现功能?
Result为蓝色控件,其数据类型为整型数据, 程序计算结果会被强制转换为整形数。程序能运 行,但无法正确结果。
LabView实验教程

LabVIEW是实验室虚拟仪器集成环境(Laboratory Virtual Instrument Engineering Workbench)的简称,是美国国家仪器公司(NATIONAL INSTRUMENTS,简称NI)的创新软件产品,也是目前应用最广、发展最快、功能最强的图形化软件集成开发环境。
LabVIEW是一种图形化编程语言,又称G语言。
其编写的程序称为虚拟仪器VI(Virtual Instrument),以.VI后缀。
LabVIEW模板:◆ 工具模板(Tools Palette)◆ 控件模板(Controls Palette)◆ 功能模板(Functions Palette)VI的组成:◆ 前面板(Panel)控制(Control),指示(Indicator),修饰(Decoration)。
将前面板中的控制和指示统称为前面板对象或控件。
◆ 框图程序(Diagram Programme)节点(Node),数据连线(Wire)节点有:功能函数(Functions),结构(Structures),代码接口节点(CIN),子VI(SubVI)。
数据端口有:控制端口和指示端口,节点端口。
LabVIEW编程又称为“数据流编程”。
◆ 图标/连接端口(Icon/Terminal)把VI作为一个SubVI在其它VI中调用。
常用术语:SubVI 子VI Chart 实时趋势图LLBs VI库Graph 事后记录图Objects 对象Functions 功能Panel 前面板Structures 结构Block Diagram 框图程序Cluster 簇Control 控制Bundle 打包Indicator 指示Unbundle 解包Control和Indicator 前面板对象或控件RefNum 枚举,标志号Palette 模板Local Variable 本地变量Functions Palette 功能模板Global Variable 全局变量Controls Palette 控件模板Constant 常量Tools Palette 工具模板Disable Indexing 无索引Terminal 端口Enable Indexing 有索引Wires 数据连线Read Local 本地读Bad Wires 错误数据连线Write Local 本地写Node 节点Read Global 全局读Attribute Node Write Global 全局写Property Node 属性节点Legend 图例Frame 框架Cursor 光标Channel 框架通道Bounds 边界范围Index 索引Data Acqisition(DAQ) 数据采集Shift Register 移位寄存器Label 标签运行VI1.运行VI(Run)2.连续运行VI(Run Continuously)3.停止运行VI(Abort Execution)4.暂停运行VI(Pause)调试VI1.单步执行单步(入),单步(跳),单步(出)2.设置端点3.设置探针4.显示数据流动画数据类型:基本数据类型:数字型(Numeric),布尔型(Boolean),字符串型(String)构造数据类型:数组(Array),簇(Cluster)其它数据类型:枚举(RefNum),空类型数组(Array):索引号从0开始一维数组(1D,列或向量),二维数组(2D,矩阵)组成:数据类型,数据索引(Index),数据创建:1.控制模板->Array & Cluster子模板2.根据需要将相应数据类型的前面板对象放入数组框架中使用:1. Array Size返回输入数组的长度2. Index Array返回输入数组由输入索引指定的元素3. Replace Array Element替换输入数组的一个元素4. Array Subset从输入数组取出指定的元素5. Reshape Array改变输入数组的维数6. Initialize Array初始化数组7. Build Array建立一个新数组8. Rotate 1D Array将输入数组的最后n个元素移至数组的最前面9. Sort 1D Array将数组按升序排列10.Reverse 1D Array将输入的1D数组前后颠倒,输入数组可以是任何类型的数组11.Transpose 2D Array转置输入的二维数组,也叫矩阵转置12.Search 1D Array搜索指定元素在一维数组中的位置13.Array Max & Min返回输入数组中的最大值和最小值14.Split 1D Array将输入的一维数组在指定的元素处截断,分成2个一维数组15.Interpolate 1D Array线性插值16.Threshold 1D Array一维数组阀值,是线性插值的逆过程17.Interleave 1D Arrays将从输入端口输入的一维数组插入到输出的一维数组中18.Decimate 1D Array将输入的一维数组分成数个一维数组,是Interleave 1D Arrays的逆过程簇(Cluster):类似于Pascal语言的record和C语言的struct组成:不同的数据类型创建:控制面板—>Array & Cluster子面板;向框架添加所需的元素;根据需要更改簇和簇中元素的名称使用:1.Unbundle解包。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
图形是虚拟仪器的重要组成部分,Labview为用户提供了丰富的图形显示功能,在图形子模版中提供了许多可供使用的显示控件,如图:
我们将在下面的章节通过一些例子向大家介绍前三种图形显示控件的使用。
波形图及波形图表
首先放置一个波形图表到前面板上,然后在上面单击右键,如图:
或者右击后选择属性,便可以看到所有能对该控件操作的选项,如图:
例一:用波形图表显示两组随机数。
新建一个VI,在前面板上放置一个波形图表,取消X轴和Y轴的刻度标签,如图:
2定位工具上下拖动边框,让它显示两条曲线图注,如图:3然后把他们拖动到合适的位置。
如图:
4切换到程序框图,放置一个For循环,计数端子取值为100,这样每次运行产生100个数据。
在循环体内放置两个随机数产生函数,分别乘上一个因子5和-5。
如图:
运行结果如图:
例二:温度临界预警器
5新建一个VI,在前面板上放置一个波形图表,将Y轴的刻度标签改为“温度”,然后选择隐藏图例,然后将Y轴坐标的自动调整取消,如图:
6添加一个布尔圆形指示灯,并调整为合适大小,把标签内容改为“报警”当温度超出临界值时点亮报警灯,同时在前面板放置一个停止开关。
7在程序框图上放置如图所示的程序,其中添加一个定时工具,把时间间隔设为200ms。
如图:
运行结果如图:
波形图
波形图和波形图表得大部分组建及其功能都是类似的,特别的是波形图具有光标指示器,利用它可以准确地读出波形曲线上的任何一点数据,便于分析某一时刻的特性值。
如图:
波形图举例:
例一:该例的目的是用随机数函数产生100个随机数据,分别用波形图和波形图表来显示,并比较他们的区别。
8新建一个VI,在前面板上分别放置一个波形图和一个波形图表,调整为合适大小,取消显示图例,取消Y标尺自动调整,最大值设为1,最小值设为0。
9切换到程序框图,放置一个For循环结构,内部添加一个随机数产生函数,For循环结构计数端口设为100,同时添加定时工具,每次循环间隔时间为100ms.
10连线,如图所示:
运行,程序结果如图:
我们可以清楚地看到这两种显示工具的区别,它们地实现方法和过程不同,在程序框图也可以看出,波形图表产生在循环体内,这样每得到一个数据点,就立刻显示一个;而波形图产生在循环体外,100个数据都产生之后,跳出循环,然后一次显示出整个数据曲线。
程序运行第二次时,波形图表的X轴刻度就会随之增加,由0~99变为100~199,表示数据点的增加;而波形图的X轴刻度并没有发生变化,还是0~99,表示只显示当前的数据。
例二:该例的目的是学习使用“捆绑”打包函数来设置波形图的X轴刻度起始点和间隔。
11新建一个VI,在前面板上放置一个波形图,取消X轴的自动调整,使产生的波形可以充满整个X 轴刻度。
同时放置两个数值输入控件,Xo控制X轴刻度的起始点,数据类型为I32,Delta X控制X 轴刻度的水平间隔,数据类型为DBL。
12切换到程序框图,放置一个高斯白噪声函数,它位于函数→信号处理→信号生成→高斯白噪声。
如图:
13添加“捆绑”函数,用定位工具拖动它的边框为3个输入端口,然后如图所示联系。
运行,结果如图:
例三:该例的目的是学习使用簇数组来显示不同长度的数据,并比较它与直接用二维数组显示的区别。
14新建一个VI,在前面板上放置两个波形图,将它们标签内容分别改为“二维数组显示”和“簇数组显示”,标签字体大小设为18号。
15打开程序框图,添加正弦波函数和方波函数,它们位于函数→信号处理→信号生成→正弦波,方波。
分别给它们的采样端口赋值为150和200。
16在数组函数中,选择创建数组函数,将正弦波和方波的输出合并为一个二维数组。
在介绍数组时,已经得知当将两个不同长度的一维数组组成二维数组时,会自动在长度较短的一维数组后面添加0,使得它们的长度相同。
所以在图形显示时会在正弦波形后面添加一些没有意义的0。
17为了解决显示不同长度的一维数组,需要建立一个簇数组。
方法是用“捆绑”函数将一维数组打包为一个簇,然后用创建数组函数建立一个簇数组,由于每组数据是一个簇,这样就可以解决显示不同长度的一维数组。
程序框图如图所示:
运行结果如图:
XY图
以上介绍的两种波形显示器:波形图表和波形图只能描绘样点均匀分布的单值函数变化曲线,因为它们的X轴只是表示时间先后,而且是单调均匀的。
要想描绘Y与X的函数关系,就需要用XY图。
XY图形就是通常意义上的笛卡尔图形,描绘XY图首先需要两个数组X和Y,分别对应于图形的X轴和Y轴,并且需要两个数组打包构成一个簇,X轴在上,Y轴在下。
下面通过两个例子来说明XY图的一般用法。
XY图位于控件→新式→图形→XY图,如图:
例一:应用XY图显示里萨如图形。
首先简单介绍一下构成里萨如图形的原理,如果知道X和Y方向的两个数组分别按正弦规律变化(假设其数据点数,幅值和频率都相同),如果它们的相位相同,则应用XY图描绘出的里萨如图形是一条45°的斜线;当它们之间的相位差等于90°时为圆;大部分情况都是椭圆。
18新建一个VI,在前面板上放置一个XY图,调整它的边框为合适大小,同时放置一个数值输入控件“相位差”。
19切换到程序框图,添加两个正弦波函数放置到程序框图上。
将“相位差”输入控件与第二个正弦波函数的“相位输入”端口相连,默认的相位是0。
20在簇函数子模板上选择“捆绑”函数,将两个正弦信号打包为一个簇,第一个数组作为X轴的数据,第二个数组作为Y轴的数据,簇的输出与XY图相连。
如图:
例二:用XY图描绘同心圆
21新建一个VI,在前面板上放置一个XY图,使曲线图例显示两条曲线标识。
22在程序框图上放置一个For循环,给计数端子赋值为360,添加正弦函数和余弦函数,它们位于函数→数学→基本与特殊函数→三角函数→正弦,余弦。
23选择“捆绑”打包函数,将每次循环产生的一对正弦值和余弦值攒成一个簇,循环结束后将这360个簇组成一个簇函数。
24因为XY图的显示机制决定了它的输入必须是簇,所以要再用一次“捆绑”打包函数将两个簇数组转换为簇,最后再用“创建数组”函数组成一个簇数组。
程序框图如图:
运行结果如图:
Labview同时还为我们提供了另外一种XY图,就是Express XY图切换到程序框图时,
我们会看到在程序框图上,它的使用比单纯的XY图简便,从图中我们也可以看到,它的输入端口是两个,输入既可以是单个的数值,也可以是数组,这里我们不再作详细的介绍。