第9章

その他

9-1 デジタルI/O

9-1-1 入出力機器の接続

コントローラボックスのデジタルI/Oに入出力機器(スイッチ、ランプ)を接続します。

出力は上段、入力は下段にそれぞれ16個あります。

今回のCOMの配線は、入力は+COM、出力は-COMとしています。
接続する入出力に合わせて適切に配線してください。

出力機器(ランプ)を接続します。V24+とDO.0へ接続します。

入力機器(スイッチ)を接続します。GNDとDI.0へ接続します。

上記は今回の条件のもとでの配線です。常にこの通りに配線することを意味していません。
配線は入出力機器の回路図とTMシリーズのマニュアル記載の回路図を確認してから適切に行ってください。

9-1-2 TMflowのデジタルI/O設定

デジタルI/Oを設定するノードを説明します。

1.新規プロジェクトを作成します。
上メニューから「コントローラ」、次に「IO」タブを選択します。

2.デジタルIOとアナログIO

3.エンドエフェクタ近くのデジタルIOとアナログ入力

カメラの照明ON/OFF

安全コネクター(表示のみ)

4.DO.0を押下します。「H」に切り替わり、取り付けたランプが点灯します。

また、取り付けたスイッチをONするとDI.0が「H」になります。

5.Setノードをドラッグしてつなげます。

6.編集アイコンを押下し、「デジタルI/O」を押下します。

7.ランプを点灯させる設定をします。
DO.0を「H」へ切り替えます。押下していくと「L」やグレー状態へ切り替わります。

グレー状態の出力については、プログラム実行で何も変更しない箇所です。

8.「テスト出力」ボタンを押下すると、この画面の中から出力確認することができます。

9-1-3 WaitFor

プログラムの動作実行を制御するノードです。

1.WaitForノードをドラッグしてつなぎます。

2.デジタルI/Oや時間などの条件を設定します。

「すべて」がONの場合、複数の条件がAND条件で満たされるまで、プログラムの実行はここで待ちます。

「1つ」はOR条件で、複数の条件のうち、一つ満たされるまで、プログラムの実行はここで待ちます。

3.デジタルI/O設定の条件の場合、スイッチが押され、DI.0が「H」になるまで、このノードで待つことになります。

4.時間設定の場合、設定した待機時間の間、このノードで待つことになります。

9-1-4 I/Oのリセット

StartノードでI/Oをリセットします。
編集アイコンを押下すると設定ダイアログがポップアップします。
デフォルトは、リセットにチェックが設定されています。

参考 デジタルI/Oで動作するグリッパー

プラグ&プレイ以外のI/O制御で動作するグリッパーも、グリッパーボタンで制御できます。

1.機能メニューの「設定」アイコンを押下し、「グリッパー」アイコンを押下します。

2.「一般グリッパーの出力」を選択します。
「グリップ」を押下します。

3.I/Oを割り付けます。
14番Hをグリップ
15番Hを開放
とします。ここでは、
14番:H 15番:L
とします。

4.「保存」ボタンを押下して完了です。

5.次に「解放」を設定します。
「解放」ボタンを押下し、
14番:L 15番:H
とします。
「保存」ボタンを押下して完了です。

6.グリッパーボタンを押下すると、Setノードを「グリップ」/「解放」を交互にセットしてつなげていきます。

9-2 変数

9-2-1 変数追加

変数を追加して、プログラムの中で更新と参照ができます。また、変数を更新し、表示させることもできます。
変数にはローカル変数とグローバル変数があります。ローカル変数は宣言したプロジェクトの中だけで有効です。グローバル変数は、「ロボット設定」ページの「グローバル設定」で宣言され、異なるプロジェクト間で参照することができます。
変数には次の型があります。

1.変数を新規に追加します。
上メニューで「変数」を押下します。
「変数を作成」ボタンを押下します。

2.ここでは整数型intのcounter(初期値0)を宣言します。

設定したらOKボタンを押下します。

3.変数が追加されていることを確認します。
OKボタンを押下します。

9-2-2 変数更新

1.Setノードをドラッグしてつなげます。
編集アイコンを押下して、ダイアログの「変数」を押下します。

2.リストにある「var_counter」を選択し、OKボタンを押下します。
var_はローカル変数であることを意味し、変数登録時に自動的に付与されます。

3.ここでは、var_counterをインクリメントする式を設定します。
左辺に選択した変数があります。
中央に式があります。

4.選択できる式

5.右辺を押下すると、入力画面に切り替わります。
今回は「1」を設定します。
OKボタンを押下します。

6.この画面で追加ボタンを押下します。
忘れやすいので気を付けましょう。

7.リストに追加されたことを確認します。
OKボタンを押下します。

8.ループするプログラムを作成して、インクリメントすることを確認します。

9-2-3 変数表示

1.プロジェクト編集ツールバーの「表示」を押下します。

2.ディスプレイマネージャの「出力1」のスロット1の変数を押下します。

3.リストの中から表示させたい変数を選択し、OKボタンを押下します。

4.スロット1に選択した変数が登録されています。
必要に応じてタイトルを設定します。
フラッシュ時間で表示の更新間隔を設定します。

OKボタンを押下します。

5.実行/一時停止ボタンを押下して実行します。
右上の「Variables」を押下します。

6.選択した変数が更新していることを確認します。

ここでは出力を確認しました。
入力に変数を設定すれば、変数の値を変更して、プログラムの動作を変えることができます。

9-2-4 Visionノードの変数

Visionノードを設定すると、結果を格納する変数を作ります。この変数を参照や更新させることができます。

9-3 構文

9-3-1 IFノード

IF ノードでは I/O の状態と変数の状態を判断または比較します。
判断の条件が満たされているかどうかで、「はい」の経路か、「いいえ」の経路を進みます。
条件の設定手順はWaitFor(9-1-3)と同じです。

1.IFノードを追加します。
編集アイコン(鉛筆マーク)を押下します。

2.ここでは変数で条件を設定します。
「変数」を押下します。

3.変数を押下するとリスト表示します。

4.変数を選択し、「挿入」ボタンを押下します。
すると、上のボックスに表示されます。
「OK」ボタンを押下します。

5.左辺に選択した変数があります。判断の記号を設定します。
右辺のボックスをクリックすると、設定画面に切り替わります。

6.今回は数値を設定します。ボックスを押下して、20などの数値を設定します。

「OK」ボタンを押下します。

7.ここで「追加」ボタンを押下します。
「追加」ボタンを押下せずに下のOKボタンを押下すると、設定せずに終了するので気を付けてください。

リストに式が追加されたことを確認したら、OKボタンを2回押下して完了です。

8.IFノードに他のノードをつなげる時、はい/いいえのどちらへ接続するか確認のポップアップが表示されます。
適切なルートを選択して接続します。

9-3-2 Gatewayノード

IFノード同様に条件を判断します。使用すると、設定に応じた個数のサブノードが自動的に生成されます。

ユーザーはこれらのサブノードが満たす条件を設定でき、それらに応じてトップダウンに判断できます。下図のように、条件が満たされると次のサブノードに関する判断は行われません。
ゲートウェイノードを使うと、レイアウトが単純になり、フローが見やすくなります。

1.Gatewayノードをつなげます。
編集アイコンを押下します。

2.必要なケース数だけ「新しいケースを追加」を押下します。
ここでは2つのケースを追加しました。

OKボタンを押下します。

3.各サブノードを設定します。
編集アイコンを押下します。
設定手順はIFノードと同じです。

9-3-3 M-Decision(手動確認)ノード

Gatewayノード同様に、設定に応じた個数のサブノードが自動的に生成されます。

M-Decisionノードでは、どの条件とも一致しない場合は手動でCaseを選択することが可能です。

Scace0~3どの条件とも一致しない場合手動選択ウィンドウが表示ボードに表示されます。

9-4 サブフローとスレッド

9-4-1 サブフロー

フロー内のノード数が大きくなると、プロジェクトの特定のいくつかのブロックが繰り返して使用されます。そのような繰り返されるブロックの中のノードを修正すると、パラメータ間で矛盾が生じることがあります。その場合には、TMflow のサブフローノードを使用します。このノードは新しいページを作成し、変数、ツールのパラメータおよびベースを、元のページと共有します。
この手法で作られたモジュール化の概念によって、ユーザーはプロジェクト編集の流れを単純化して流れを見やすくすることができます。
フローのプログラミングでは、図に示したように、フロー全体を単純にするために、サブフローノードの利用をお勧めします。
このプロジェクトでは、同じアクションを実行するノードは、1 回だけプログラムすれば済みます。

1.サブフローページを作成します。左上のクエリーボックスを押下すると、選択ダイアログがポップアップします。
「サブフローページを作成」を押下します。

新しいサブフローページが追加されます。

2.サブフローノードをつなげると、サブフローページを作成するかどうか確認するポップアップが表示されます。ここからでも作成することができます。
既に使いたいサブフローが設定済であれば、キャンセルボタンを押下します。

3.編集アイコンを押下して、サブフローを選択します。
OKボタンを押下します。

4.サブフローノードが設定されました。

5.サブフローページを削除する場合、サブフローページのStartノードの編集アイコンを押下して、削除ボタンを押下します。

9-4-2 スレッド

TMflow ではスレッド機能を提供し、ロボットとは独立に、状態の監視とデータ収集ができます。フロータブの左上のクエリーボックスをクリックして、スレッドページを追加できます。

スレッドページ内では、次のアクションだけをプロジェクト編集ページに追加できます。
・判断するためのロジックの使用
・ノードの値の表示
動作タイプのノードは使用できません。

スレッドページは 2 つのタイプに分かれます。
①プロジェクトが一時停止すると、スレッドページも同時に一時停止します。
②プロジェクトが一時停止しても、スレッドページは一時停止しません。
ユーザーはスレッドページ内でデータを収集し、変数を更新して、「表示」で表示できます。

②のスレッドタブは濃色の枠で囲まれています。

9-5 オートモードで実行

9-5-1 オートモード実行手順

機能メニューの「実行設定」アイコンを押下すると、全ての実行可能なプロジェクトを表示します。また、2つのマークがあります。

  • Current現在実行中のプロジェクト(緑表示)
  • Testedオートモードで実行できるプロジェクト(青表示)

プログラム作成が完了し、プロジェクトをオートモードで実行させたい場合、まず、マニュアル試運転モードを実行します。速度調整後、プロジェクト実行中にロボットスティックのM/Aボタンを長押ししてから、オートモードへ切り替えのキー操作をします。次に、ロボットスティックの停止ボタンを押下します。このとき速度はプロジェクト速度として保持され、プロジェクトアイコンの下に表示します。
因みに、モードはマニュアルモードを維持しています。
このように一度調整した速度で試運転させることが、オートモードで実行中の安全性を保証することになります。
「実行設定」画面でこのプロジェクトを確認すると、「Tested」マークが付きます。

オートモードで実行するには、対象プロジェクトに「Current」と「Tested」の両方のマークが必要です。「実行設定」画面から、別のTestedプロジェクトを実行させたい場合、対象プロジェクトのアイコンを押下して、「Current」へ切り替えます。もしくは、左上から保存プロジェクトを選択して読込みます。

ロボットを起動したときのオートモードで動作するプロジェクトは、両方のマークがあるプロジェクトになります。

9-6 演習問題

9-6-1 個数検査

ワークの個数を検査します。所定数あるか否かを検査して、その結果に基づいてロボットの動きを制御します。次のStepに沿って設定してください。

Step1
・入力スイッチをDI.0へ接続します。
・出力ランプをDO.0へ接続します。
・ワークが所定数あればOKとします。それ以外の値ならNGとします。
・検査がOKならOK位置へ、NGならNG位置へロボットを移動させます。
・検査処理(ワーク検出)ができなければ、カメラの照明を変更(検査がOFFで運用ならON)して初期位置へ戻ります。
・入力スイッチの立上りONで検査を始めます。
・検査中はBUSY状態として出力ランプをONします。
Step2
・検査を連続でできるようにします。ただし、1度検査したら再び入力スイッチの立上りONが入るまで待機させます。
・検査(ワーク検出)を実行した回数をカウントします。
・カウント数とワーク数を表示ボードページで確認できるようにします。
Step3
・BUSY状態では入力スイッチは常にON状態とする条件を追加します、OFFになれば直ちにプログラムを停止させてください。停止には「停止ノード」を使用します。

取り掛かる前に、
・初期位置、OK/NG位置、検査位置を右のように決めてください。
・適切な検査方法を決めてください。
・ワークは同じ形状で複数あるとします。下のワークでは、20個をOKとします。

9-6-2 設定例

ここでは、検査に「AOIのみ」の「ブロブファインダ」を使用しています。

スレッドで停止条件を設定しています。ここでは「一時停止しないスレッドページ」を作成しています。

外部機器と連携するとき、衝突する可能性がある状態(ステイタスの組合せ)が発生すれば、直ちに停止させなければなりません。そのような時にも有効な使い方です。

「Blob_Blob_1_MAX」と「var_counter」を「表示」へ追加して、表示ボードページへ表示します。

第1章 はじめに
1-1 協調ロボット
1-2 TMシリーズ
1-3 安全について
第2章 協調ロボット TMシリーズ
2-1 基本構成
2-2 ハードウェア
2-3 ソフトウェア
2-4 周辺機器
2-5 座標系(ベース)
2-6 特異点
2-7 TCP
2-8 設置条件
第3章 セットアップ
3-1 使用機器
3-2 セーフティ機器の接続
3-3 ロボットの起動
3-4 マニュアル/オートモード
3-5 表示ライトリング
第4章 基本動作のプログラミング
4-1 ログイン
4-2 初回起動時にすべきこと
4-3 ティーチング
4-4 緊急スイッチ(E-STOP)からの復帰
4-5 FreeBotコントロール
4-6 協調(協働)モードの設定
4-7 デカルト制限
第5章 フローチャートを使ったプログラミング
5-1 フローチャートとノード
5-2 ポイント設定
5-3 シンプルなPick&Place
第6章 グリッパーの取付け方法
6-1 エンドエフェクタの使用準備
6-2 グリッパー コンポーネント
6-3 グリッパーボタン
第7章 キャリブレーションとビジョンノード
7-1 カメラ
7-2 ビジョン キャリブレーション
7-3 ビジョンノードとタスクデザイナー
7-4 パターンマッチング(形状)
7-5 ブロブファインダ
7-6 Visionベース
第8章 カメラを使ったP&P動作の設定
8-1 Pick&Place
参考 ステップ実行
8-2 TM Landmarkを使ったP&P
8-3 TM Landmarkへ関連づけたP&P
参考 プログラムのスタイル
第9章 その他
9-1 デジタルI/O
9-2 変数
9-3 構文
9-4 サブフローとスレッド
9-5 オートモードで実行
9-6 演習問題