このシリーズは、NI-DAQmxに同梱されている2つの主要なリファレンスマニュアルを参照しています。
この項の目的は、データ集録デバイスの内部サンプルクロックを使用し、有限アナログ入力操作を実行するデータ集録アプリケーションを作成することです。
従来型NI-DAQ(レガシー)で測定を構成する
以下のコードでプログラム的にCWAIコントロールを構成する。
[VB 6.0]
CWAI1.Device = 1 'use device 1
'Use channel 0, with a range of +/- 10 volts in differential mode
CWAI1.Channels.Add "0", 10, -10, CWAIInputModes.cwaiDIFF
'Configure the sample clock
CWAI1.ScanClock.Frequency = 1000
'Configure the number of points
CWAI1.NScans = 1000
'Use the internal clock for acquisition
CWAI1.ChannelClock.ClockSourceType = cwaiInternalCS
'Specify the task to be finite
CWAI1.StopCondition.Type = cwaiNoActiveCondition
'Other code...
CWAI1.Configure
この構成コードは有限アナログ入力操作を設定します。これは、作成しようとしているサンプルアプリケーションの要件を満たします。ただし、この構成は実行している測定タイプを考慮しないことに注目してください。たとえば、熱電対電圧を読み取っている場合、意味のあるデータを集録するには、返されるでデータでスケールを実行する必要があります。DAQToolsコンポーネントで使用可能な熱電対スケール関数を使用する、または自分でスケールアルゴリズムを書くのいずれかの方法で実現できます。
NI-DAQmxで測定を構成する
NI-DAQmxのコンポーネントはありません。タスクを作成した後、適切なチャンネルを作成して、各操作を構成します。以下のコードはNI-DAQmx .NET APIを使用して同じ操作を構成する方法を示します。
[VB.NET]
Dim aiTask As Task
'Create a new Task
aiTask = New Task("Analog Input Task")
'Create an Analog Input Channel object for Device 1, channel 0 in ‘Differential mode.The measurement range is from -10.0 to +10.0 Volts.
aiTask.AIChannels.CreateVoltageChannel("Dev1/ai0", "", AITerminalConfiguration.Differential, _
-10.0, 10.0, AIVoltageUnits.Volts)
'Configure the sample clock to be the internal clock, sampling at 1000 Hz on the
'rising edge of the sample clock.The acquisition mode is finite and we will return 1000 samples per channel.
aiTask.Timing.ConfigureSampleClock("", 1000, _
SampleClockActiveEdge.Rising, SampleQuantityMode.FiniteSamples, 1000)
より直観的なAPIを使用し、関連パラメータを一緒にグループ化する方法で、この関数を編成します。別の点では、APIが特定のタイプの測定に対するターゲットになっていることに注目してください。
従来型NI-DAQ(レガシー)で測定の構成およびスケールを行う
前の従来型NI-DAQ(レガシー)サンプルでは、データを構成しましたが、スケールは行いませんでした。以下のコードはCWAIコントロールで測定の構成とスケールを行います。
[VB 6.0]
'use device 1
CWAI1.Device = 1
'Use channel 0, with a range of +/- 10 volts in differential mode
CWAI1.Channels.Add "0", 10, -10, CWAIInputModes.cwaiDIFF
'Configure the sample clock
CWAI1.ScanClock.Frequency = 1000
'Configure the number of points
CWAI1.NScans = 1000
'Use the internal clock for acquisition
CWAI1.ChannelClock.ClockSourceType = cwaiInternalCS
'Specify the task to be finite
CWAI1.StopCondition.Type = cwaiNoActiveCondition
CWAI1.Configure
CWAI1.Start
Dim AcqData
Dim temps
'Read 1000 points from the device
CWAI1.Read 1000, AcqData
'Convert the voltages returned to temperature data
'for a B type thermocouple
CWDAQTools1.ConvertTC CWThermocouples.cwB, 30, cwCelsius, AcqData, temps
前のコードでは、熱電対から電圧データを集録する要件でした。その後、温度データを取得するためにDAQツールユーティリティコントロールで変換関数を使用しています。この集録操作は、実行している測定では構成されていません。
NI-DAQmxで測定の構成およびスケールを行う
前のNI-DAQmxサンプルでは、CreateVoltageChannelを使用してチャンネルを構成しました。熱電対に接続されているアナログ入力操作を構成する必要がある場合、以下のコードでチャンネルを構成します。
[VB.NET]
'Create a task
myTask = New Task("temperature task")
'Create a thermocouple channel
myTask.AIChannels.CreateThermocoupleChannel(("Dev1/ai0", "", _
Convert.ToDouble(minimumValueNumeric.Value), Convert.ToDouble(maximumValueNumeric.Value), _
thermocoupleType, AITemperatureUnits.DegreesC)
前の構成を使用する場合、NI- DAQmxでデータを内部的にスケールするため、返されるデータは温度測定になります。
カスタムスケール
NI-DAQmxはカスタムスケールの使用も完全にサポートします。カスタムスケールの詳細については、『NI-DAQmxヘルプ』でNI-DAQmxヘルプ→NI-DAQmxの概念→カスタムスケールを参照してください。
多くの場合、実行時にデータ集録操作の構成を変更する必要はありません。以下のセクションは、対話式にDAQ操作を構成する際に使用可能なオプションについて説明します。
従来型NI-DAQ(レガシー)
従来型NI-DAQ(レガシー) ActiveXコントロールは、コントロールに関連付けられたプロパティページを使用します。たとえば、CWAIコントロールでは、Channelsタブで操作に使用するデバイスとチャンネルを選択します。Buffer、Clocks、Conditionsタブは、バッファ設定(集録するスキャン数)、サンプルクロック設定(サンプルレート)、開始/停止/一時停止の状態をそれぞれ構成します。プロパティページでご使用のアプリケーションの設定が可能でも、従来型NI-DAQ(レガシー) ActiveXコントロールではご使用の構成を対話式にテストすることはできません。
NI-DAQmx
NI-DAQmxは、対話式の構成ツールであるDAQアシスタントを提供しています。DAQアシスタントは、対話式にNI-DAQmxのタスクの作成、編集、実行を行うツールであり、データ集録の構成と操作を試すことができます。DAQアシスタントはMeasurement & Automation Explorer (MAX)からアクセスできます。また、Measurement Studio 7.x以降がインストールされている場合、Visual Studio .NET 2003でDAQアシスタントを使用できます。Measurement Studio 8.0.1以降がインストールされている場合、Visual Studio 2005でDAQアシスタントを使用できます。MAXで作成および構成するタスクは、ご使用のシステム上のDAQmxアプリケーションからアクセスできます。これらのタスクはプロジェクトにローカルではありません。Visual Studio .NET 2003でDAQアシスタントを起動すると、Visual Basic .NET、Visual C#、C++の自動生成タスク構成コードでプロジェクトタスクを作成できます。
MAXでDAQアシスタントを使用する
以下はMAXでDAQアシスタントを使用する概念を説明します。
DAQアシスタントで対話式に測定タスクを構成する
DAQアシスタントは、以前はVisual Basic 6.0でプロパティページを使用してもできなかった構成を設定できます。コードを書かずに、DAQアシスタントを使用して構成をテストすることもできます。また、ご使用のDAQデバイス用に構成したアクセサリに基づいて、特定のタスクの接続ダイアグラムを表示することもできます。
特定のサンプルアプリケーションには、特別なタイミングとトリガの要件はありません。ただし、タイミングとトリガのサポートを理解することは、効率の良いデータ集録アプリケーションを作成する点で重要です。
従来型NI-DAQ(レガシー)でのタイミング
CWDAQコントロールのタイミングパラメータの設定は、プロパティページを介して、またはプログラム的に実行できます。以下のプロパティページサンプルでは、サンプルレートは、サンプルクロックに内部クロックを使用し、1000サンプル/秒に設定されています。
図2
[VB 6.0]
With CWAI1.ScanClock
'Configure the scan clock to be the Internal Clock
.ClockSourceType = cwaiInternalCS
'specify the clock mode
.InternalClockMode = cwaiFrequency
'Specify the Scan Clock frequency
.Frequency = 1000
End With
CWAI1.Configure
NI-DAQmxでのタイミング
NI-DAQmxタイミングクラスは、ハードウェアタイミングデータ集録操作のタイミングを構成します。タイミングクラスで、連続操作または有限操作の指定、有限の操作に集録や生成を行うサンプル数の選択、必要に応じたバッファ作成を行います。
DAQアシスタントを使用すると、これらのパラメータを対話式に構成してタスクをテストできます。
図3
Visual Basic .NETでタイミングオブジェクトを使用した前のサンプルです。以下のコードのとおり、DAQmx .NETクラス階層は、直観的な方法で関連パラメータをグループ化し、複雑な構成の簡素化をはかります。
[VB.NET]
'Configure the sample clock to be the internal clock, sampling at 1000 Hz on the rising edge of the sample clock.The acquisition mode is finite and we will return 1000 samples per channel.
aiTask.Timing.ConfigureSampleClock("", 1000, _
SampleClockActiveEdge.Rising, SampleQuantityMode.FiniteSamples, 1000)
NI-DAQmxでサポートされている多様なタイプのタイミングに関する詳細については、『NI-DAQmxヘルプ』の「タイミングとトリガ」セクションを参照してください。
タイミングクラスの詳細については、『DAQmx .NET Help』を参照してください。
従来型NI-DAQ (レガシー)でのトリガ
従来型NI-DAQ (レガシー)の多様なCWDAQ ActiveXコントロールのプロパティページで、さまざまなタイプのトリガ操作の構成ができます。たとえば、以下のとおり、Visual Basic 6.0でCWAIコントロールとプロパティページで、0 Vのヒステリシスを使用し、3.0 VレベルでソースとしてPFI0でアナログ開始トリガを構成できます。
図4
以下のコードのとおり、プログラム的にこのタイプのトリガを設定することもできます。
[VB 6.0]
With CWAI1.StartCondition
.Type = cwaiHWAnalog
.Source = "PFI0"
.Mode = cwaiFalling
.Level = 3#
End With
NI-DAQmxでのトリガ
NI-DAQmxトリガクラスは特定の動作を実行するトリガを構成します。最も一般的に使用される動作は開始トリガと基準トリガです。トリガクラスは以下のトリガ構成を提供します。
これらのクラスでそれぞれのタイプのトリガを構成します。これらのクラス関する詳細については、『DAQmx .NET Help』を参照してください。
以下のコードは、NI-DAQmxでVisual Basic .NETコードを使用し、0 Vのヒステリシスを使用して、3.0 VレベルでソースとしてPFI0でアナログ開始トリガを構成する方法を示します。
[VB.NET]
'Configure PFI0 to be the analog trigger, setup the trigger to be
'asserted on the Falling slope at 3.0 volts
aiTask.Triggers.StartTrigger.ConfigureAnalogEdgeTrigger("PFI0", AnalogEdgeStartTriggerSlope.Falling, 3.0)
トリガオプションはDAQアシスタントで完全にサポートされているため、構成されたこれらのオプションで既存のタスクをロードする、またはプログラム的にトリガオプションを設定するオプションがあります。
NI-DAQmxでサポートされている多様なタイプのタイミングに関する詳細については、『NI-DAQmxヘルプ』の「タイミングとトリガ」セクションを参照してください。
このセクションはこのシリーズの別のトピックの一覧を示します:
以下を参照してください:
Microsoft Visual Basic .NETで従来型NI-DAQからNI-DAQmxへ移行する: Part 1
Microsoft Visual Basic .NETで従来型NI-DAQからNI-DAQmxへ移行する: Part 3
Microsoft Visual Basic .NETで従来型NI-DAQからNI-DAQmxへ移行する: Part 4