基于MATLAB的数据采集与仿真
1
内容简介
从实用的角度出发,详细介绍了在MATLAB软件环境下,如何利用研华的数据采集与控制多功能板卡实现数据采集与控制仿真。
本手册适合工程技术人员、科学研究人员和大中专学校的学生参考。
2
使用手册
在MATLAB中,基于研华板卡PCI-1711 / PCI-1712 的数据采集
本文档对使用MATLAB 数据采集工具箱和研华PCI-1711 / PCI-1712 进行数据采集的相关设 置进行了介绍。
商标说明
MATLAB® 是The Mathworks 的注册商标。
目录
使用手册....................................................................................... ..................................................................1 1. 概述. ........................ ..................................................................... ............................................................2 2. 测量套件和捆绑项目表................................................ ..........................................................................3 3. 安装........................... .......................... .......................... .......................... ................................................4 4. DAQ 板卡验证......................... .............. ................................... .......................... ...........................5 4.1. 显示DAQ 板卡的适配器列表......................................... ................................................................5 4.2. 显示DAQ 板卡的属性.............................................................. .......................................................6 5. 模拟量到数字量转换(A/D) ..............................................................................................................7 5. 1. 电缆连接....... ..... ..... ..... ..... ..... ........ ..... ..... ..... ..... ..... ..... ..... ..... ..... ..... ..... ..... ..... ..... ......7 5.2. 启动DAQFCNGENTM.M ..............................................................................................................7
5.3. 通过DAQ 工具箱采集数据........................................ .....................................................................8 5.3.1. 创建接口对象............................................................................................................................8 5.3.2. 配置测量通道............................................................. ...............................................................8 5.3.3. 配置属性......................... ....................... ......................... ......................... ..........................9 5.3.4. 开始测量. ......................... .................. ......................... ......................... ..................... .....10 5.3.5. 数据采.集................... ......................... ......................... ......................... .................... ......10 5.3.6. 停止测量并删除对象........................... .................................................................................. 11 5.4. 创建M-FILE. ........... .......... ...... ........... ........... ........... ........... ........... ........... ........... ........... ...........11 5.5. 使用帮助.. ........... ........... ........... ........... ........... ........... ........... ........... ........... ........... ........... .........12 6. 模拟量输出(AO 或D/A) ........................ ...............................................................................................13 6.1. 电缆连接...... ...... ...... ...... ...... ...... ...... ...... ...... ...... ...... ...... ...... ... ...... ...... ...... ...... ...... ...... .......13 6.2. 通过DAQ 工具箱输出数据.................................................. ...............................................................13 6.2.1. 创建接口对象................................. ..........................................................................................13 6.2.2. 配置输出通道............................... ............................................................................................13 6.2.3. 配置属性........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ......13 6.2.4. 生成数据和标记........................ ...............................................................................................14 6.2.5. 开始输出........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ .....15 6.2.6. 停止输出并删除对象................................. .............................................................................16 6.3. 使用模拟量输入确认输出数据............................................ ....... .......................................................16 7. 使用触发器功能. .................... ................ .................... ................. .................... ................. ................17 8. 使用事件和回调.................... ................ .................... ................. .................... ................. ..................19 9. 总结.......... .................... ................. .................... ................. .................... ................. ...........................21 研华.................... ...... ...... ...... ...... ...... ...... ...... ...... ...... ...... ...... ...... ...... ...... ...... ...... ...... ...... ...... ...21 附录A 管脚定义...... ...... ...... ...... ...... ...... ...... ...... ...... ...... ...... ...... ...... ...... ...... ...... ...... ...... ...... ......22 研华.................. ........... ........... ........... ........... ........... ........... ........... ........... ........... ........... ........... .....22 PCI-1711......... ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........22 PCI-1712.. ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ........ ...............22
2004 年7 月第1 版
3
1. 概述
本文档对如何使用MATLAB 的数据采集工具箱和研华PCI-1711 或PCI-1712 建立测试环境进行了介绍。
除了可以为算法开发、系统级设计和模拟提供技术计算环境之外,MATLAB 还可以通过其数据采集工具箱和仪器控制工具箱提供一个测试和测量环境。这样开发人员就可以使用相同的环境/语言来开发/模拟和获取/分析测量数据。
此文档中的数据采集工具箱(又称作DAQ 工具箱)提供以下功能,它们可以将用于数据采集的传统测量编程环境发展为一种用于数据分析的应用环境:
z 用于工业DAQ 板卡的接口 z 单路/多路模拟量输入(AI 或A/D(模拟量到数字量转换))、模拟量输出(AO 或D/A(数字量到模拟量转换))和数字量输入/输出
z 用于数据测量、分析和可视化的集成环境 z DAQ 板卡可输出MATLAB 生成的测试信号 z 硬件软件触发功能
z 使用MATLAB 和其它工具箱的无缝开发环境
本文档对DAQ 工具箱的基本功能模拟量输入(AI 或A/D) 和模拟量输出(AO 或D/A) 的基本使用方法进行了简要介绍。有关DAQ 工具箱的高级使用,请参见随工具箱附带的“数据采集工具箱用户指南”。本文档并不介绍如何使用MATLAB。如果您对MATLAB 不熟悉,请访问The Mathworks 的网站,您可以查找有关该软件的详细信息。
>> http://www.mathworks.com/products/matlab/
4
2. 测量套件和捆绑项目表
请检查您是否配置以下文档、软件和硬件:
z “在MATLAB 中,基于研华PCI-1711 / PCI-1712 板卡的数据采集”(本文档) z MATLAB 测量套件启动CD-ROM
z MATLAB/数据采集工具箱(如果您已经安装了MATLAB,只需输入路径码即可) z MATLAB 原始计算器
z 推荐的数据采集板卡(即DAQ 板卡) z 连接电缆 z 端子板
表1 列出了测量套件、推荐研华DAQ 板卡、连接电缆和端子板的型号名。
DAQ 板卡 连接电缆 端子块
表1 研华数据采集控制卡 套件1 PCI-1711 PCL-10168 PCLD-8710
套件2 PCI-1712 PCL-10168 PCLD-8712
5
3. 安装
本章介绍当MATLAB 使用DAQ 板卡时,如何安装所需的软件。有关MATLAB/DAQ 工具箱的安装,请参见随MATLAB 捆绑的“MATLAB 安装指南”。有关如何安装DAQ 板卡、连接电缆和端子板以及验证操作的方法,请参见随DAQ 板卡附带的用户手册。
以下内容介绍当MATLAB 使用研华DAQ 板卡时,如何安装所需的软件。安装完Advantech Device Manger、PCI-1711 / 1712 驱动程序和例程后,请将“MATLAB 测量套件启动CD-ROM”的“Programs and Data”文件夹下所有例程的整个文件夹复制到您的工作目录下,并将MATLAB 的当前目录移动到复制的“Programs and Data”文件夹下。
安装:使用随研华PCI1711 / 1712 附带的CD-ROM,选择Installation->Device Manager。然后选择该CD-ROM 下的Installation-> Individual Drivers 安装您的DAQ 板卡驱动程序(用于测量套件的DAQ板卡应该为PCI-1711 或PCI-1712):
然后双击“MATLAB 测量套件启动CD-ROM”中研华文件夹下的文件“mwAdvantech.exe”,选择如下所示的压缩文件目标文件夹,单击Unzip 按钮继续安装:
$ 这里的$ >> matlabroot ans = C:\\MATLAB6p5p1 解压缩过程结束后,在命令行中输入以下内容。 >> daqregister (‘advantech’) >> rehash toolboxcache 6 4. DAQ 板卡验证 本章介绍如何确定MATLAB 能够识别您的DAQ 板卡。这里我们假定您已经安装了MATLAB/DAQ 工具箱、DAQ 板卡供应商提供的驱动程序和附件工具。 4.1. 显示DAQ 板卡的适配器列表 使用函数“daqhwinfo”验证DAQ 板卡。启动MATLAB 后,输入以下命令行获取有关DAQ 工 具箱的信息。 >> out = daqhwinfo out = ToolboxName: 'Data Acquisition Toolbox' ToolboxVersion: '2.2 (R13SP1)' MATLABVersion: '6.5.1 (R13SP1)' InstalledAdaptors: {5x1 cell} 然后使用以下命令显示安装的DAQ 板卡的适配器列表。为了使用DAQ 板卡,DAQ 工具箱提供了一个专门的适配器,可将DAQ 工具箱对应到每个驱动程序。 >> out.InstalledAdaptors ans = 'advantech' 'parallel' 'winsound' 只有安装了相应板卡的驱动程序后,才会在适配器列表中显示它的适配器名。适配器名称如表2 所示。 表2 DAQ 板卡供应商 适配器名 Advantech Advantech 如果您DAQ 板卡的适配器名没有在列表中显示,请确定是否正确安装了DAQ 板卡的驱动程序 和附件工具。我们有一个DAQ 板卡的附件工具可以用来方便的检查板卡是否可用,您可以使用此工具来确定DAQ 板卡的安装是否正确。表3 列出了附件工具。 表3 DAQ 板卡供应商 附件工具名 Advantech Advantech Device Manager 7 4.2. 显示DAQ 板卡的属性 在4.1 一节中显示适配器名之后接下来是显示DAQ 板卡的属性。要显示DAQ 板卡的属性,将板卡适配器的名称设为参数daqhwinfo。 >> out = daqhwinfo ('advantech') out = AdaptorDllName: [1x53 char] AdaptorDllVersion: 'Version 2.2 (R13) 28-Jun-2002' AdaptorName: 'advantech' BoardNames: {'PCI-1711'} InstalledBoardIds: {'0'} ObjectConstructorName: {1x3 cell} 在这里,主要信息为BoardNames 和InstalledBoardIds。BoardNames 包括DAQ 工具箱可使用的DAQ板卡的型号名。DAQ 板卡有一个用户可配置的识别码(被叫ID),它显示在 InstalledBoardIds 中。这样即使PC 中安装了多块DAQ 板卡,每块DAQ 板卡也可以控制。有关ID 的设置,请参见DAQ 板卡的用户手册。如果DAQ 板卡在InstalledBoardIds中没有显示,请确定其对应的驱动程序和附件的安装是否正确。这里使用的DAQ 板卡为研华的PCI-1711 其ID 号为0。 8 5. 模拟量到数字量转换(A/D) 本章介绍如何将DAQ 板卡测量的模拟量输入数据传送到MATLAB 的DAQ 工具箱。在这里,我们介绍一些使用信号波的模拟量输入功能,这些信号波是由测量套件捆绑的“daqfcngentm.m”输出的。信号流程如图1 所示。 图 1 5. 1. 电缆连接 首先,将端子块上的模拟量输出通道0 连接到模拟量输入通道0。这里的模拟量为单端输入。分别连接模拟量输出通道0 到模拟量输入通道0,连接模拟量输出GND 到模拟量输入GND。本文档附录中的“管脚定义”显示了每块DAQ 板卡的管脚编号。当您连接电缆时,请参见附录中的“单端输入”。我们建议您使用随包装附带的连接电缆。 当输入为单端时,测量DAQ 板卡输入电位和GND 的电位差。DAQ 板卡支持两类输入,“差分”和“单端”。DAQ 工具箱可选择任何一种输入。输入选择取决于所选择的测量系统,因此本文档并不对这些输入方式做深入介绍。 5.2. 启动daqfcngentm.m 启动“daqfcngentm.m”。请输入以下命令,此时显示图2 中的GUI。 >> daqfcngentm 图 2 9 使用DAQ 板卡,函数“Daqfcngentm.m”可以输出信号波、方波、三角波等。要将模拟量输入作为信号源,请进行如下配置。 1. 在“Select an analog output channel”中,从下拉菜单中选择要使用的DAQ 板卡。从列表中选择Channel 0。选中SampleRate 复选框并设为100 Hz。 2. 将Frequency 设为10 Hz。如果您使用的是研华PCI-1711,将DC Offset 设为2 V。(有关详情 请参见本应用说明结尾的总结文档)。 3. 单击Start 按钮。 此配置可以从端子板的模拟输出通道0 输出频率为10 Hz、幅度为1 V 的信号波。 5.3. 通过DAQ 工具箱采集数据 本节介绍如何采集来自5.2 一节中信号波的数据,此数据使用DAQ 工具箱输出。数据采集的一般流程如下。 z 创建接口对象(参见5.3.1) z 配置测量通道(参见5.3.2) z 配置属性(参见5.3.3) z 开始测量(参见5.3.4) z 采集数据(参见5.3.5) z 停止测量并删除对象(参见5.3.6) 5.3.1. 创建接口对象 函数“analoginput”为您的DAQ 板卡创建一个接口对象,如下所示。 >> ai = analoginput (‘advantech’, 0) Display Summary of Analog Input (AI) Object Using 'PCI-1711'. Acquisition Parameters: 1000 samples per second on each channel. 1000 samples per trigger on each channel. 1 sec. of data to be logged upon START. Log data to 'Memory' on trigger. Trigger Parameters: 1 'Immediate' trigger (s) on START. Engine status: Waiting for START. 0 samples acquired since starting. 0 samples available for GETDATA. AI object contains no channels. 这样,变量“ai”就有了一个对应于研华DAQ 板卡的新模拟量输入对象(称作AI 对象)。在这里,函数“analoginput”的第一个参数为适配器名称的单引号字符串,第二个参数为4.2 一节中获取的ID 编号。在MATLAB 中,字符串使用单引号。 5.3.2. 配置测量通道 函数“addchannel”用来配置有效通道。如果您使用通道0,输入以下命令。 >> ichan = addchannel (ai, 0); 函数“addchannel”的第一个参数为AI Object,第二个参数为Channel Number。此时将会创 10 建一个对象(称作通道对象),以对应于加入变量“ichan”中的通道。 5.3.3. 配置属性 创建完AI Object 和Channel Object 后,就可以配置这些对象以执行正确的操作。要配置对象,请编辑与该对象有关的属性。您可以使用函数“get”显示与对象有关的属性。 >> get (ai) >> get (ichan) 在5.2 一节中介绍了模拟量输入的基本属性和数据采集输出的设置。 AI Object 的属性: z InputType: 选择差分或单端输入。(参见5.1) z SampleRate: 选择采样率。 z SamplesPerTrigger: 选择开始测量后一共测量多少个点。 Channel Object 的属性: * InputRange: 设定测量范围。 函数“set”用来配置每个属性。例如,如果您要将AI Object 的采样速率设置为500 Hz,请输入以下命令。 >> set (ai, ‘SampleRate’, 500); 如果一个属性(如AI Object 的InputType)有一个有限的设置值,则可以在不需要第三个参数,通过以下命令显示设置值的列表。 >> set (ai, ‘InputType’) [ {SingleEnded} | Differential ] 显示列表中的{ } 表示它是一个默认的设定值。按照如下所示设定AI Object 的属性。 >> set (ai, ‘InputType’, ‘SingleEnded’); >> set (ai, ‘SampleRate’, 500); >> set (ai, ‘SamplesPerTrigger’, 500); 在上面的例子中,输入类型、采样速率和采样触发次数(采集数据量)被分别设定为单端、500 Hz 和500点。这样将在测量开始后1 秒钟内采集500 点的数据。 下一步配置Channel Object。首先使用函数“daqhwinfo”显示设置值列表。 >> daqhwinfo (ai, 'InputRanges') ans = 0 5.0000e+000 0 1.0000e+000 0 1.0000e-001 0 2.0000e-002 -5.0000e+000 5.0000e+000 -1.0000e+000 1.0000e+000 -1.0000e-001 1.0000e-001 -1.0000e-002 2.0000e-002 11 由于输出信号波的幅值为1 V,请设定测量范围,这样就可以正确测量被测信号。在此例子中, 从上面的列表中选择[-5 5],并输入下面的命令。 >> set (ichan, ‘InputRange’, [-5 5]); 如果不考虑某些参数的设置,例如信号频率、幅值、测量周期等,您不能获得获得所需的测量数据。 5.3.4. 开始测量 配置完属性并开始测量后,您就可以获得所需的测量数据。使用函数“start”启动测量。使用AI Object作为参数输入以下命令。 >> start (ai); 根据SampleRate 和SamplesPerTrigger 属性的设置(参见5.3.3),测量时间必须为1 秒。但还需要进行初始化,因此需要几秒钟才会停止。有关详情,请参见本应用说明结尾的补充文档。 5.3.5. 数据采集 将获取的测量数据发送到MATLAB 的工作区。它有一个缓冲区,用来临时保存DAQ 板卡采集的数据。如果您使用函数“getdata”,缓冲区中的数据将被发送到工作区。工作区保存数据后,缓冲区中的数据将被删除。例如,以下命令将保存所有500 点的数据。 >> [data, time] = getdata (ai, 500); 在上面的例子中,变量“data”获得500 点的测量数据,变量“time”获得采样数据的时间。要使用函数“plot”检查测量数据,输入以下命令。 >> plot (time, data); 然后会显示图3 所示的画面。您可以看到1 秒的采样数据和10 Hz 的信号波。 5.3.6. 停止测量并删除对象 图 3 12 函数“stop”用于停止测量。使用AI Object 作为参数输入以下命令。 >> stop (ai); 测量完成后,您可以通过函数“delete”删除AI 对象。使用AI Object 作为参数输入以下命令。 >> delete (ai); 当您删除AI Object 后,Channel Object 也同时被自动删除。但尽管您已经删除了对象,工作区中依然会保留变量。因此,如果您要删除变量,请使用函数“clear”。 当您要退出本节中“daqfcngentm.m”的GUI 画面时,单击Stop 按钮,然后单击Close 按钮。 当您使用函数“clear”删除变量时,工作区中不再有变量,但是对象并未删除。例如,当您创建一个AI Object 后,使用函数“clear”删除它的变量,如下所示。 >> ai = analoginput (‘advantech’, 0); >> clear ai 在上面的例子中,即使工作区中没有变量,但MATLAB 的存储器中依然会存在对象。您可以使用函数“daqfind”查找并恢复MATLAB 存储器中的对象。在上面的例子中,使用函数“daqfind”将函数“clear”删除的变量“ai”的AI Object 恢复为变量“obj”。 >> obj = daqfind; 在此情况下,用户无法实时控制任何对象,程序运行也会出现混乱,因此我们建议您删除不需要的对象。函数“daqreset”可以一次删除所有对象。 >> daqreset 5.4. 创建M-File MATLAB 可以创建一个称作M-File 的程序,该程序包含所有从命令行执行的命令。M-File 创建为“data_meas.m”,添加到测量套件中。当您从命令行输入“data_meas”时,所有执行的命令都会运行。如果您再次输入“daqfcngentm.m”,遵照5.2 一节中的说明并执行“data_meas.m”,您将获得类似图3 的相同结果。 如果您要了解有关M-File 的详情,请访问MATLAB 网站: http://www.mathworks.com/products/matlab/ 13 5.5. 使用帮助 本节介绍DAQ 工具箱功能的帮助。使用函数“daqhelp”显示Help。如果您输入以下命令,屏幕中将显示DAQ 工具箱函数的列表。 >> daqhelp 要显示每个函数的帮助,选择函数名作为函数“daqhelp”的参数。例如,输入以下命令显示函数“analoginput”的帮助。 >> daqhelp (‘analoginput’) 函数“daqhelp”还能显示与每个对象有关的属性。例如,如果您要显示PropertySampleRate 的帮助,将该对象变量名作为第一个参数,输入以下命令。 >> daqhelp (ai, ‘SampleRate’) 14 6. 模拟量输出(AO 或D/A) 本章介绍如何在MATLAB 的DAQ 工具箱中,从DAQ 板卡输出模拟量数据。第5 章使用了 “daqfcngentm.m”输出的信号波,本章将对各个模拟量输出函数进行介绍,DAQ 板卡输出通过MATLAB 的命令行产生的信号波。 6.1. 电缆连接 第5 章介绍的模拟量输入可以确定由模拟量输出产生的数据输出是否正确。本节中的电缆连接与5.1一节相同。 6.2. 通过DAQ 工具箱输出数据 本节介绍如何使用DAQ 工具箱输出数据。数据输出的一般流程如下。 z 创建接口对象(参见6.2.1) z 配置输出通道(参见6.2.2) z 配置属性(参见6.2.3) z 生成数据和标记(参见6.2.4) z 开始输出(参见6.2.5) z 停止输出并删除对象(参见5.3.6) 6.2.1. 创建接口对象 函数“analogoutput”为您的DAQ 板卡创建一个接口对象,如下所示。 >> ao = analogoutput (‘advantech’, 0) Display Summary of Analog Output (AO) Object Using 'PCI-1711'. Output Parameters: 1000 samples per second on each channel. Trigger Parameters: 1 'Immediate' trigger on START. Engine status: Waiting for START. 0 total sec. of data currently queued for START. 0 samples currently queued by PUTDATA. 0 samples sent to output device since START. AO object contains no channels. 这样,变量“ao”就有了一个对应于研华DAQ 板卡的新模拟量输出对象(称作AO 对象)。 6.2.2. 配置输出通道 函数“addchannel”用来配置有效通道。如果您使用通道0,输入以下命令。 >> ochan = addchannel (ao, 0); 之后,Channel Object 被加入到变量“ochan”中。 6.2.3. 配置属性 创建完AO Object 和Channel Object 后,您就可以配置这些对象以执行正确的测量。要设定对象并编辑与该对象有关的属性,您可以使用函数“get”显示与对象有关的属性。 >> get (ao) >> get (ochan) 15 现在我们介绍Analog Output 的基本属性和输出信号波的设置。 AO Object 的属性: z RepeatOutput: 设置重复输出数据的次数。 z SampleRate: 选择采样率。 Channel Object 的属性 z OutputRange: 设置输出范围 函数“set”用来配置每个属性。要输出信号波,照如下所示配置AO Object 的属性。 >> set (ao, ‘RepeatOutput’, Inf); >> set (ao, ‘SampleRate’, 100); 在此设置中,循环采集次数和采样率被分别设置为“Inf”和100 Hz。这样将在1 秒钟之内输出100 点的数据,并且数据输出会重复有限的次数。 下一步设置Channel Object。首先使用函数“daqhwinfo”显示设置值列表。 >> daqhwinfo (ao, 'OutputRanges') ans = -10 10-10 10 您可以根据输出数据选择并设置最佳的范围,但我们使用的是默认的设置。 6.2.4. 生成数据和标记 现在,我们生成从DAQ 板卡输出的信号波和标记。DAQ 工具箱标记指将其缓冲区时间信息保存到输出数据中。如果数据没有标记,您就无法使用Analog Output。首先从0 到0.99 每间隔0.01 秒,共生成100个点的数据。根据6.2.3,采样速率为100 Hz,因此100 个点的数据的输出将在1 秒钟之内完成。下一步通过函数“sin”生成输出数据“y”,这样它的频率和幅度分别为5 Hz 和1 V。在这里,数据必须为列向量,因此使用(') 生成时间数据“t”。 >> t = (0: 0.01: 0.99)'; >> y= sin (2 * pi * t * 5); >> plot (t, y); 生成的数据与图4 中的显示类似。 16 图 4 要标记生成的数据“y”,输入函数“putdata”,如下所示。 >> putdata (ao, y); 如果您使用研华PCI-1711,输入以下命令。此变化与5.2 一节中DC 偏移的变化相同,偏移输出+2V。 >> putdata (ao, y + 2); 6.2.5. 开始输出 设置完属性和标记数据后,您就可以输出生成的数据。使用函数“start”开始输出。使用AO Object 作为参数输入以下命令。 >> start (ao); 17 根据RepeatOutput 和SampleRate Properties 的设置,将反复输出5 Hz / 1 V 的信号波。 6.2.6. 停止输出并删除对象 这里,我们介绍如何停止输出并删除对象,但不要停止输出并删除对象,因为第7 章还要用到本章中信号波生成的输出。函数“stop”用于停止测量。使用AO Object 作为参数输入以下命令。 >> stop (ao); 输出完成后,您可以通过函数“delete”删除对象。使用AI Object 作为参数输入以下命令。 >> delete (ao); 6.3. 使用模拟量输入确认输出数据 在这里,我们使用5.4 一节中生成的“data_meas.m”来确认6.2.5 一节中输出的数据。然后会显示图5所示的画面。 >> data_meas 在此例子中,输出侧的采样率(500 Hz) 高于输出侧的采样率(100 Hz)。 图 5 18 7. 使用触发器功能 在第6 章中,MATLAB(图4)生成的信号波数据相位与模拟量输入(图5)生成的信号波数据相位之间有所不同。这是因为模拟量输入采集的时间是执行函数“start”的时间。在此情况下,使用触发器功能设置数据采集的开始时间。 对于模拟量输入,在执行函数“start”之后触发器启动时开始采集数据。默认设置为“Immediate Trigger”,这意味着触发器在执行函数“start”后立即启动。MATLAB 支持除“Immediate Trigger”之外的多种触发方式,但此文档只介绍软件触发。有关其它触发方式的详情,请参见“数据采集工具箱用户指南”。 您可以使用AI Object 的TriggerType 属性来设置触发器。如果您要修改为软件触发,使用函数“set”输入以下命令。 >> set (ai, ‘TriggerType’, ‘Software’); 然后您可以通过将通道的Channel Object 设置为TriggerChannel 属性,来选择要触发的模拟量输入通道。 >> set (ai, ‘TriggerChannel’, ichan); 此例子设置为触发器Channel 0,它是信号波自身的数据。无论您是否使用软件触发,请设置以下属性。 z TriggerCondition: 设置触发器执行条件,如上升沿/下降沿等。 z TriggerConditionValue: 设置触发电压值。 z TriggerDelay: 设置触发后开始采集数据的时间。 z TriggerRepeat: 设置重复触发的次数。 为了使触发器更加稳定,将TriggerConditionValue 属性设置为t = -0.001。如果您使用研华PCI-1711,输入set (ai, 'TriggerConditionValue', value + 2),而不是set (ai, 'TriggerConditionValue', value)。 >> value = sin (2 * pi * -0.001 * 5) >> set (ai, 'TriggerConditionValue', value); 在此例子中,当输入数据上升沿为值(V) 时,数据采集在0 秒开始。根据TriggerRepeat 属性,测量只执行一次。如果您将TriggerDelay 属性设为负值(-),您可以提前开始采集数据。如果您输入以下命令,则会开始测量并显示采集的数据。 >> start (ai); >> [data, time] = getdata (ai); >> plot (t, y, time, data); 采集的数据如图6 所示,它与图4 相对应。 19 图 6 在进入第8 章之前,输入以下命令以停止模拟量输出并删除对象。 >> stop (ao); >> delete (ao); 这里创建的程序与软件套件附带的“data_out.m”相同。对于此M-File,如果您分别将Adaptor Name 和ID 设为第一个参数和第二个参数,您可以获得与图6 相同的结果。 20 8. 使用事件和回调 通过使用由不同事件调用的回调,DAQ 工具箱可以创建更多的高级应用。本章创建一个获取“daqfcngentm.m”输出信号波形的M-File,每次获取一定数量的采样后计算并显示最大值和最小值之间的差,最后显示所有获取的信号波形。创建的M-File 为“data_meas.m”,添加到测量套件中。您可以通过将Adaptor Name 和ID 分别设置为第一个和第二个参数,来执行此M-File。如果您要这样做,根据5.3.3,为第六行的InputRange 设置一个合适的范围。 首先运行“daqfcngentm.m”并设定与5.2 一节中相同的设置,以输出信号波形。在本章中,我们将频率设为1Hz。 然后显示“peakmeas.m”的内容。左侧的数字为行号。 M-File: peakmeas.m 1 function peakmeas (adaptor, id) 2 data = []; 3 4 ai = analoginput (adaptor, id); 5 ichan = addchannel (ai, 0); 6 set (ichan, 'InputRange', [-5 5]); 7 8 set (ai, 'SamplesPerTrigger', 5000); 9 set (ai, 'InputType', 'SingleEnded'); 10 set (ai, 'SampleRate', 500); 11 set (ai, 'StopFcn', @stop_plot); 12 set (ai, 'SamplesAcquiredFcn', {@view_meas}); 13 set (ai, 'SamplesAcquiredFcnCount', 500); 14 set (ai, 'UserData', data); 15 16 start (ai); 17 18 function stop_plot (obj, event) 19 data = get (obj, 'UserData'); 20 figure; plot (data); 21 delete (obj); 22 clear all; 23 24 function view_meas (obj, event) 25 data = get (obj, 'UserData'); 26 buff = getdata (obj, 500); 27 maxval = max (buff); 28 minval = min (buff); 29 ppdata = maxval – minval 30 data = [data; buff]; 31 set (obj, 'UserData', data); “peakmeas.m”中使用事件或回调的部分为“StopFcn”中的第11 行和“SamplesAcquiredFcn”中的第12 行。当发生显示测量结束(如执行函数“Stop”,通过函数“SamplesPerTrigger”设定的结束测量等)的事件时,StopFcn 属性选择一种要回调的函数。将@ 添加到您要回调的函数名开头。在上面的例子中,为了回调函数“stop_plot”,我们将@stop_plot 设定为StopFcn 属性。 21 要回调的函数显示在18~22 行。第18 行定义了要回调的函数,并选择obj 和事件作为输入参数。无论您何时使用回调功能,这些变量都必须固定。“Obj”必须使用生成的对象替换,“event”必须使用时间内容替换。这样,在第21 行我们使用函数“delete”删除了发生为事件的对象(第4 行创建的AI对象)。 通过第13 行SamplesAcquiredFcnCount 设定的采样数量被测量之后,SamplesAcquiredFcn 属性选择要回调的函数,在此例子中,“view_meas”被选为要回调的函数。如果您设定函数名旁边的变量名,您可以将变量关联到要回调的函数。有关详情,请参见文档“K 型热电偶温度测量”。第24~31 行显示了要回调的函数。在第14 行,通过将温度数据的变量“data”设置为UserData,我们更新在“view_plot”中测量的温度数据。在获取并更新变量“data”(被函数“get”、“view_plot”设为UserData 属性)之后,再次将变量数据设置为UserData 属性。在此情况下,如果您要使用在主函数和回调函数之间使用相同的变量,使用UserData property 属性就更为方便。 22 9. 总结 本文档对DAQ 工具箱的基本功能模拟量输入(AI 或A/D) 和模拟量输出(AO 或D/A) 的基本使用方法进行了简要介绍。我们还通过信号波的输入和输出示意图,介绍了DAQ 工具箱的一般使用方法。我们希望此文档能够对使用MATLAB 进行测试和测量的人员有所帮助。 有关DAQ 工具箱的高级使用,请参见随工具箱附带的“数据采集工具箱用户指南”。如果您对DAQ工具箱有任何疑问,请联系MATLAB 的技术支持中心。 补充文档 研华 研华板卡不支持Analog Input 的InputType 属性的输入方式设置。在开始使用MATLAB 之前,请在研华的Device Manager 中配置A/D 通道配置,修改输入方式。(在Device Manager 中,双击您要修改输入方式的板卡,修改Channel 和Single-Ended /Differential)。 请注意由于DAQ 工具箱的,AnalogOutput 的最大采样速率为500Hz。 PCI-1711 只支持单端输入方式。如果您配置AI Object 的InputType 属性,就会报告一条错误信息。 PCI-1711 的输出范围仅为[0 5] 和[0 10]。此文档的例子中信号波有+2V 的偏移。 通过函数“start”开始测量后,如果您再次修改属性设置和开始测量,由于DAQ 工具箱的问题,PCI-1711会输出以下错误信息。 >> start (ai) ??? Error: ==> daqdevice/start ADVANTECH: DIO port configuration failed. 即使您通过函数“delete”删除了对象并通过函数“analoginput”重新创建了对象,您也会得到同样的结果。在此情况下,在使用函数“daqreset”删除所有对象后,请创建对象和配置属性,然后开始测量。 DAQ 工具箱对PCI-1711 有一个bug。在使用函数“start”开始测量后,如果您再次修改属性设置并开始测量,就会报告以下错误信息。 通过函数“start”开始测量后,如果您再次修改属性设置和开始测量,由于DAQ 工具箱的问题,PCI-1711会输出以下错误信息。 23 附录A 管脚定义 研华 PCI-1711 PCI-1711 在PCLD-8710 板卡上没有印出管脚编号,因此请使用端子面的编号。如果多个端子有同样的名称,您就可以选择方便连接的端子。 当使用差分输入时 不可用 当使用单端输入时 AI0: 模拟量输入通道0 DA0OUT: 模拟量输出通道0 AIGND: 模拟量输入地 AOGND: 模拟量输出地 PCI-1712 当使用差分输入时 AI0: 通道0 + (高) AI1: 通道0 - (低) 当使用单端输入时 AI0: 模拟量输入通道0 AO0OUT: 模拟量输出通道0 AIGND: 模拟量输入地 AOGND: 模拟量输出地 24
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- huatuo7.cn 版权所有 湘ICP备2022005869号-9
违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务