This training course introduce how can we develop our application through Object-Oriented-Programming (OOP). You can see new editor framework on NXG.
このトレーニングコースでは、オブジェクト指向によるLabVIEW NXGプログラミング法を紹介します。CEFをベースとした新しいエディタフレームワークの紹介も行っています。
You can learn what can LabVIEW NXG Web Module do in this training slide. You can easily develop web application using Web Module.
LabVIEW NXG Web Moduleについて学習します。LabVIEW NXG Web Moduleを使用することで、スタイリッシュなウェブアプリケーションを簡単に開発することができます。
In this session, you can learn GUI components and basic rule of LabVIEW NXG coding and operation.
このセッションでは、プロジェクトの構成やコーディングルールなど、LabVIEW NXGで開発する中での非常に基本的な部分について紹介しています。
You can learn what is LabVIEW NXG using LabVIEW NXG 5.0 in this training course. Let's begin LabVIEW NXG learning.
このコースでは、LabVIEW NXG 5.0を使用してLabVIEW NXGについて紹介します。このスライドではまずagendaについて紹介しています。
Visual Studio Online BUILD を本気で使いこなして品質&効率を劇的に上げる! [ Comm Tech Festival ] C-4慎一 古賀
?
Comm Tech Festival C-4 セッションのスライドです。
https://comuplus.doorkeeper.jp/events/30403#c4
ソースバージョン管理?タスク管理からもう一歩先に進みたい開発チームを対象に、Visual Studio での設計?開発からテスト?リリースまでの流れと Visual Studio Online BUILDを使いこなすためのポイント、出来ること?出来ないこと、工夫の仕方を解説します。
Visual Studio Online BUILD を本気で使いこなして品質&効率を劇的に上げる! [ Comm Tech Festival ] C-4慎一 古賀
?
Comm Tech Festival C-4 セッションのスライドです。
https://comuplus.doorkeeper.jp/events/30403#c4
ソースバージョン管理?タスク管理からもう一歩先に進みたい開発チームを対象に、Visual Studio での設計?開発からテスト?リリースまでの流れと Visual Studio Online BUILDを使いこなすためのポイント、出来ること?出来ないこと、工夫の仕方を解説します。
This topic was presented on Japan LabVIEW User Conference #2.
I introduced why TDD, how does it improve our development process. I developed FizzBuzz with TDD way in live.
LabVIEW is good at handling 3rd party instrument. LabVIEW NXG has the same character. In this session, you can learn how LabVIEW NXG communicate with the instrument.
元々LabVIEWは他社製計測器の制御を得意としていました。LabVIEW NXGでもそれは変わりません。ここでは計測器制御の基本について紹介します。
Local variable and Global variable has gone. What is alternative method? Duplicated variable and Tag!! Let's learn new those features.
ローカル変数とグローバル変数はLabVIEW NXGで実装されていません。名前こそ変わりましたが、「複製端子」と「タグ」がそれぞれ代替機能です。
Which type of file does LabVIEW NXG handle? It can do any type! This session, let's focus on three file type, text, binary, TDMS.
LabVIEW NXGが取り扱えるファイルタイプは非常に多くあります。このセッションでは主にテキスト、バイナリ、TDMSファイルの取り扱いについて紹介します。
Learn While Loop, For Loop, Case, Event Handling. We can control programming flow with those features.
プログラムフローと呼ばれる、WhileやForループ、ケースストラクチャ等について紹介します。これらを使用してプログラムの流れを制御できます。
You can learn what data type does LabVIEW NXG have. General type (numeric, string, boolean), array, cluster etc.
このセッションでは、LabVIEW NXGが取り扱うことのできる代表的なデータ型について紹介します。配列やクラスタといった特殊なデータ型の作成方法についても紹介しています。
These slides summarize what is QMS and IATF16949. This is for
self-learning and internal training.
自動車産業における品質管理(QMS)のための規格としてIATF16949が制定されました。この資料は、自身の学習、プライベートトレーニングのためにIATF16949規格をまとめたものです。この資料では、IATF16949で要求されるコアツールの概要についても紹介します。
私自身は品質管理に深い理解があるわけではありませんので、修正や改善の指摘は大歓迎です。
7. LabVIEW NXG OOP Training 7
OOP の基本 - オーバーライド
親クラスが持つメソッドは、子クラスが引き継ぐことができます。しかし同じメソッドでも、親
と異なる機能を実装したい場合もあります。
親クラスのメソッド VI と同じ名前の VI を子クラスで作成できます。これを「オーバーライ
ド」と呼び、子クラスは上書きしたメソッド VI を使用します。以下の例は、各クラスが
Speak メソッドを呼び出した時の動作を表しています。 Class B は Speak メソッドをオ
ーバーライドするので動作が異なります。
Parent
Class A
Class B
Speak Walk
Speak
Hello
Hello こんにちわ
Speak メソッドの
オーバーライド
12. LabVIEW NXG OOP Training 12
クラスへのデータ追加
Car.gtype を開き、データタブを選択します。パネル上に制御器を配置することで、クラ
スデータを定義します。また、ドキュメントタブでワイヤの外観を変更することができます。
13. LabVIEW NXG OOP Training 13
アクセサの作成
データの Write/Read を行うためにアクセス VI を作成します。プロジェクトファイルタブの
Car.gtype 上の右クリックメニューからメンバーを追加 》 データメンバーアクセスのた
めの VI またはアーキテクチャタブの + からメンバー VI を追加します。
14. LabVIEW NXG OOP Training 14
アクセサの作成
Production Date は読み取りと書き込みを、 Speed は読み取りのみ作成します。
Speed の変更はメソッド VI に限定することで、データの不整合を防ぎます。
アクセサはダイナミックディスパッチ VI としても作成できます。今回はスタティックディスパッ
チ VI として作成します。またオプションで、アクセサをプロパティノードとして使用できます。
19. LabVIEW NXG OOP Training 19
子クラスの作成
TypeA クラスのアーキテクチャタブを確認すると、親クラスが Car であり、 Car クラスが
持つ VI を継承していることがわかります。
TypeA クラス自身は Speed データを持っていませんが、親クラスが持つデータを継承す
るので、内部的に Speed データを所持し、取り扱うことができます。
20. LabVIEW NXG OOP Training 20
TypeA クラスの編集
TypeA クラスに gas データを追加します。 gas データの読み取り VI と、 Fill メソッドを
作成します。 TypeA クラスは親クラスになることはないので、 Fill メソッドはオーバーライ
ドを想定しないとし、スタティックディスパッチテンプレートから作成します。
21. LabVIEW NXG OOP Training 21
ここまでの実装
動作確認のために、以下のような VI を作成します。 Car と TypeA のクラス制御器
定数は、プロジェクトファイルタブからのドラッグアンドドロップでも作成できます。
実行すると、 2 つの Speed 表示器に「 1 」の値が表示されます。
このことから、子クラスは親クラスが持つデータも同様に継承できることがわかりま
す。 TypeA クラスは Speed up/down メソッドを持ちませんが、親クラスからの継承に
より、親と同じメソッドを使用できます。
22. LabVIEW NXG OOP Training 22
Car クラスを継承して TypeB クラスを作成します。 Speed Up.gvi をオーバーライド
します。
オーバーライド VI は、デフォルトで親クラスのメソッドを呼び出します。呼び出し関数を
削除し、 Speed Up.gvi と同じように編集をします。ところが、 Speed データがクラス
タに表示されません。
オーバーライド
23. LabVIEW NXG OOP Training 23
親データへの子からのアクセス
子クラスが親クラスのデータを使用する場合、親クラスで定義したアクセス VI やメソッドを
使用する必要があります。 TypeB クラス自身にはデータが定義されていないため、クラ
スタとして値を取りだすことはできません。
Car クラスに Speed データの書き込み VI を追加します。その後改めて、 TypeB クラ
スの Speed up.gvi を以下のように編集します。
24. LabVIEW NXG OOP Training 24
動作確認
TypeB クラスを使用するよう Demo.gvi を編集します。 Demo.gvi を実行する
と、 TypeB の Speed up メソッドはオーバーライドされておりスピードが +10 さ
れ、 Car クラスの方は元のまま +1 であることが確認できます。
25. LabVIEW NXG OOP Training 25
ダイナミックディスパッチ
ここで再度ダイナミックディスパッチについてみていきましょう。先ほどの Demo.gvi は以下
のように変更することができます。
1 親子、子同士のクラスを同じデータタイプとして配列に格納できます。この時ワイヤ上のデ
ータは親クラスになりますが、実際には親子の関係情報は保持されています。
2 For ループの中で、各クラスでのメソッドを呼び出します。この手法では、ループ内のメソッ
ドは格納された全クラスが共通で持つメソッドである必要があります。例えばここに
TypeA クラスのみが持つ Fill メソッドは加えられません。
以上でデモの作成は完了です。
26. LabVIEW NXG OOP Training 26
ダイナミックディスパッチ端子
クラスに所属するメソッド VI では、コネクタペーンの端子にダイナミックディスパッチを選択
することができます。
ダイナミックディスパッチを使用する場合、クラスの入出力端子はどちらもダイナミックディス
パッチに設定する必要があります。
27. LabVIEW NXG OOP Training 27
アクセススコープ
アクセススコープを設定することで、 VI の呼び出しを制限できます。 VI がどこからでも際
限なく呼び出せてしまうと、開発者の意図とは異なる使い方がされ、バグにつながる場合
があります。
スコープにより、処理の隠ぺい化、値変更箇所の限定化等大きなメリットがあるため、大
規模アプリケーションでは積極的な使用が求められます。
Car.gtype
Speed up.gvi
TypeA.gtype
Speed up.gvi
External
VI
Write
Speed
External VI からの呼び出しは、
予期せぬ値の更新を
引き起こすため禁止します。
28. LabVIEW NXG OOP Training 28
アクセススコープ
●
パブリック
どの VI からでも参照可能です。外部とのインタフェースとして使用します。
●
コミュニティ
フレンド登録した VI からのみ参照可能です。フレンドはドキュメントタブから追加します。
●
プロテクト
同じクラスか子クラスからのみ参照可能です。
●
プライベート
自身のクラスからのみ参照可能です。
29. LabVIEW NXG OOP Training 29
DVR による OOP
データ値リファレンス (Data Variable Reference) を用いた OOP 開発の手法を紹
介します。 DVR とは、データの代わりにデータの参照先となるリファレンスを受け渡す手
法です。
●
新規データ値リファレンスで任意のデータタイプと初期値を設定します
●
In Place 要素ストラクチャでリファレンスからのデータを読み書きします
●
データ値リファレンスを削除でリファレンスを削除します
DVR では、ワイヤ上を流れるデータは値ではなく、リファレンスです。 DVR は C++ など
のポインタに似ていて、大きな配列を取り扱う際などは、 DVR を使用することでパフォー
マンスの低下や不要なデータコピーを防止できます。
5 が返される
33. LabVIEW NXG OOP Training 33
クラスによるフレームワーク開発
以下が CEF NXG のメイン VI です。クラスを導入することで、メイン VI にアプリケーショ
ン固有のデータが実装されないというメリットがあります。これにより、メイン VI は編集アプ
リのフレームワークとして整備し、案件毎に再利用ができます。