プログラム作成 =============== .. toctree:: :maxdepth: 6 概要 ~~~~~~~ 左側のコマンドをクリックすると、プログラムツリーにプログラムノードを追加できます。プログラム実行時、現在実行中のプログラムノードは緑色でハイライト表示されます。 手動モードでは、ノードの右側にある最初のアイコンをクリックすると、ロボットがその命令を単独で実行できます。2番目のアイコンは、そのノードの内容を編集します。 .. image:: coding/001.png :width: 6in :align: center .. centered:: 図表 9.1-1 プログラムツリー画面 「⇄」をクリックしてモードを切り替えると、ティーチングプログラムのテキストを編集状態に変更できます。 .. image:: coding/002.png :width: 6in :align: center .. centered:: 図表 9.1‑2 ティーチングプログラム編集状態 プログラム名の右側にあるアイコンの説明は以下の通りです。 .. note:: .. image:: coding/003.png :height: 0.75in :align: left 名称:**展開/縮小** 機能:プログラムツリー画面の展開/縮小 .. note:: .. image:: coding/004.png :height: 0.75in :align: left 名称:**新規ティーチング点追加** 機能:現在のプログラムにローカルティーチング点を追加 .. note:: .. image:: coding/005.png :height: 0.75in :align: left 名称:**名前変更** 機能:現在のプログラムの名前を変更 ツールバー ~~~~~~~~~~~~~~~~~~~~ プログラムツリー上部のツールバーを使用してプログラムツリーを変更します。 .. note:: .. image:: coding/006.png :height: 0.75in :align: left 名称:**開く** 機能:ユーザープログラムファイルを開く .. note:: .. image:: coding/007.png :height: 0.75in :align: left 名称:**新規作成** 機能:テンプレートを選択して新しいプログラムファイルを作成 .. note:: .. image:: coding/008.png :height: 0.75in :align: left 名称:**インポート** 機能:ファイルをユーザープログラムフォルダにインポート .. note:: .. image:: coding/009.png :height: 0.75in :align: left 名称:**エクスポート** 機能:ユーザープログラムファイルをローカルにエクスポート .. note:: .. image:: coding/010.png :height: 0.75in :align: left 名称:**保存** 機能:ファイルの編集内容を保存 .. note:: .. image:: coding/011.png :height: 0.75in :align: left 名称:**名前を付けて保存** 機能:ファイルの名前を変更してユーザープログラムまたはテンプレートプログラムフォルダに保存 .. note:: .. image:: coding/012.png :height: 0.75in :align: left 名称:**コピー** 機能:ノードをコピーし、他の操作に使用できるようにする(例:プログラムツリーの別の場所に貼り付ける) .. note:: .. image:: coding/013.png :height: 0.75in :align: left 名称:**貼り付け** 機能:以前に切り取りまたはコピーしたノードを貼り付けます .. note:: .. image:: coding/014.png :height: 0.75in :align: left 名称:**切り取り** 機能:ノードを切り取り、他の操作に使用できるようにする(例:プログラムツリーの別の場所に貼り付ける) .. note:: .. image:: coding/015.png :height: 0.75in :align: left 名称:**削除** 機能:プログラムツリーからノードを削除 .. note:: .. image:: coding/016.png :height: 0.75in :align: left 名称:**上に移動** 機能:このノードを上に移動 .. note:: .. image:: coding/017.png :height: 0.75in :align: left 名称:**下に移動** 機能:このノードを下に移動 .. note:: .. image:: coding/018.png :height: 0.75in :align: left 名称:**編集モード切り替え** 機能:プログラムツリーモードとlua編集モードを相互に切り替え 上部右側のアイコンの説明は以下の通りです。 .. note:: .. image:: coding/240.png :height: 0.75in :align: left 名称:**プログラム作成 追加/編集** 機能:現在のプログラムコマンドの内容を追加/編集 .. note:: .. image:: coding/241.png :height: 0.75in :align: left 名称:**ロボットモデル** 機能:ロボット3Dモデル画面に戻る .. note:: .. image:: coding/242.png :height: 0.75in :align: left 名称:**NewDofileサブプログラム画面** 機能:現在のプログラムコマンドにNewDofile命令が存在する場合、クリックしてサブプログラム名を選択し、サブプログラムの内容を表示 .. note:: .. image:: coding/243.png :height: 0.75in :align: left 名称:**Modbus TCP設定** 機能:Modbus TCP通信のパラメータを設定 .. note:: .. image:: coding/244.png :height: 0.75in :align: left 名称:**現在のティーチングプログラムのバックアップ** 機能:現在のプログラムの変更内容を記録 .. note:: .. image:: coding/245.png :height: 0.75in :align: left 名称:**ローカルティーチング点** 機能:現在のプログラムにのみ適用されるティーチング点 プログラムコマンド ~~~~~~~~~~~~~~~~~~~~~~ 左側は主にプログラムコマンドの追加です。各キーワードの上部のアイコンをクリックすると、右側のプログラムコマンド追加の詳細画面に入ります。プログラムコマンドをファイルに追加する操作は、主に2種類に分けられます。 - 1. 関連する命令を開き、「適用」ボタンをクリックすると、その命令をプログラムに追加できます。 - 2. 先に「追加」ボタンをクリックします。この時点では命令はプログラムファイルに保存されていないため、さらに「適用」をクリックしてから命令をファイルに保存する必要があります。 2番目の方法は、同じタイプの命令を複数回発行する場合に多く見られます。このタイプの命令に対して、追加ボタンと追加済み命令内容表示機能を追加し、追加ボタンをクリックすると1つの命令を追加できます。追加済み命令にはすべての追加済み命令が表示され、「適用」をクリックすると、追加された命令が右側で開いているファイルに保存されます。 論理命令画面 ~~~~~~~~~~~~~ .. image:: coding/019.png :width: 6in :align: center .. centered:: 図表 9.4 論理命令画面 ループ命令 ++++++++++++++++ 「ループ」アイコンをクリックしてWhile命令編集画面に入ります。 While命令のループシナリオを選択します。シナリオは以下の通りです。 - 常にループ - 有限回数ループ:ループ回数と変数名を入力 - 式が真の場合ループ:入力ボックスをクリックして式エディタを表示し、使用状況に応じて適切な式を選択 .. image:: coding/020.png :width: 6in :align: center .. centered:: 図表 9.4-1-1 While命令画面 .. image:: coding/236.png :width: 6in :align: center .. centered:: 図表 9.4-1-2 While命令——常にループ .. image:: coding/237.png :width: 6in :align: center .. centered:: 図表 9.4-1-3 While命令——有限回数ループ .. image:: coding/238.png :width: 6in :align: center .. centered:: 図表 9.4-1-4 While命令——式エディタ .. image:: coding/239.png :width: 6in :align: center .. centered:: 図表 9.4-1-5 While命令——式が真の場合ループ 操作を容易にするために、doの内容は任意に入力でき、プログラム内で他の命令を編集して挿入して代用できます。 判断命令 ++++++++++++++++ 「判断」ボタンをクリックしてif…else命令編集画面に入ります。 この命令には以下のボタンが含まれます。 - else ifを追加:「else」式が存在しない場合、このボタンをクリックして「else if」式を追加 - else ifを削除:「else if」式が存在する場合、このボタンをクリックして「else if」式を削除 - elseを追加:このボタンをクリックして「else」式を追加 - elseを削除:このボタンをクリックして「else」式を削除 対応するボタンをクリックして追加した後、入力ボックスをクリックして式エディタを表示し、使用状況に応じて適切な式を選択します。追加が完了したら「追加」、「適用」をクリックします。 この命令を使用するにはある程度のプログラミング知識が必要です。サポートが必要な場合はお問い合わせください。 .. image:: coding/021.png :width: 6in :align: center .. centered:: 図表 9.4-2 if…else命令画面 ジャンプ命令 ++++++++++++++++ 「ジャンプ」ボタンをクリックしてGoto命令編集画面に入ります。 Goto命令はジャンプ命令です。右側の入力ボックスに文を入力し、編集が完了したら「追加」、「適用」をクリックします。(この命令を使用するにはある程度のプログラミング知識が必要です。サポートが必要な場合はお問い合わせください) .. image:: coding/022.png :width: 6in :align: center .. centered:: 図表 9.4-3 Goto命令画面 待機命令 ++++++++++++++++ 「待機」アイコンをクリックしてWait命令編集画面に入ります。 この命令は遅延命令で、「WaitMs」、「WaitDI」、「WaitAI」の3つの部分に分かれています。 「WaitTime」命令の遅延待機時間の単位はミリ秒です。待機するミリ秒数を入力し、「追加」、「適用」をクリックします。 .. image:: coding/023.png :width: 6in :align: center .. centered:: 図表 9.4-4 WaitTime命令画面 「WaitDI」命令は、単一DI待機です。待機するIOポート番号、待機状態、最大待機時間、待機タイムアウト処理方法を選択し、「追加」、「適用」をクリックします。 .. image:: coding/024.png :width: 6in :align: center .. centered:: 図表 9.4-5 WaitDI命令画面 「WaitMultiDI」命令は、複数DI待機です。まず複数DIの成立条件を選択し、次に待機するDIポートと状態をチェックし、最後に最大待機時間と待機タイムアウト処理方法を設定し、「追加」、「適用」をクリックします。 .. image:: coding/025.png :width: 6in :align: center .. centered:: 図表 9.4-6 WaitMultiDI命令画面 「WaitAI」命令は、待機するアナログ量、数値、最大待機時間、待機タイムアウト処理方法を選択し、「追加」、「適用」をクリックします。 .. image:: coding/026.png :width: 6in :align: center .. centered:: 図表 9.4-7 WaitAI命令画面 一時停止命令 ++++++++++++++++ 「一時停止」アイコンをクリックしてPause命令編集画面に入ります。 この命令は一時停止命令です。プログラムにこの命令を挿入すると、プログラムがこの命令を実行したときにロボットは一時停止状態になります。続行したい場合は、制御エリアの「一時停止/再開」ボタンをクリックします。 .. image:: coding/027.png :width: 6in :align: center .. centered:: 図表 9.4-8 Pause命令画面 サブプログラム命令 +++++++++++++++++++++++++ 「サブプログラム」アイコンをクリックしてDofile命令編集画面に入ります。 Dofile命令はコントローラ内部のプログラムを呼び出します。Dofile命令を使用するには、呼び出されるサブプログラムを保存する必要があります。メインプログラムが変更されていない場合は、再度保存する必要はありません。Dofile命令は2段階の呼び出しをサポートしています。2つのパラメータ設定に注意する必要があります。1つはこの呼び出しが何層目にあるか、もう1つはこの呼び出しのID番号です。ID番号は、原則として同じプログラム内で同じIDが出現してはいけません。 .. image:: coding/028.png :width: 6in :align: center .. centered:: 図表 9.4-9 Dofile命令画面 変数命令 ++++++++++++++++ 「変数」アイコンをクリックしてVar命令編集画面に入ります。 この命令は変数システム命令で、Lua変数定義、変数クエリ、Sys変数の名前変更、値の取得、値の設定の2つの部分に分かれています。Lua変数定義では、変数を宣言して初期値を割り当てることができ、while、if-elseなどの命令と組み合わせて使用します。Lua変数クエリ命令では、入力された変数名の値をリアルタイムでクエリし、ステータスバーに表示します。Sys変数の数は固定されており、名前を変更したり、変数の値を取得したり、変数の値を設定したりできます。この変数に保存された値はシステムのシャットダウンによってクリアされません。 .. image:: coding/029.png :width: 6in :align: center .. centered:: 図表 9.4-10 Var命令画面 .. important:: 変数名は必ず文字またはアンダースコアで始めなければならず、数字やその他の特殊文字で始めることはできません。 運動命令画面 ~~~~~~~~~~~~~ .. image:: coding/030.png :width: 6in :align: center .. centered:: 図表 9.5 運動命令画面 ポイントツーポイント命令 ++++++++++++++++++++++++++++++++ 「ポイントツーポイント」アイコンをクリックしてPTP命令編集画面に入ります。 到達したい点を選択できます。スムーズ遷移時間を設定すると、この点から次の点への運動を連続させることができます。オフセット設定の有無では、ベース座標系オフセットとツール座標オフセットを選択でき、x、y、z、rx、ry、rzのオフセット量設定がポップアップ表示されます。PTPの具体的な経路は、モーションコントローラが自動的に計画する最適経路です。「追加」、「適用」をクリックすると、この命令を保存できます。 .. image:: coding/031.png :width: 6in :align: center .. centered:: 図表 9.5-1 PTP命令画面 直線命令 ++++++++++++++++ 「直線」アイコンをクリックしてLin命令編集画面に入ります。 この命令の機能は「PTP」命令と似ていますが、この命令が到達する点の経路は直線です。 .. image:: coding/032.png :width: 6in :align: center .. centered:: 図表 9.5-2 Lin命令画面 .. important:: 点名として「seamPos」を選択する場合、直線命令は溶接シーンでレーザーセンサーを使用するために適用されます。溶接中の使用による累積誤差のため、「オフセットの有無」と「オフセット量」が追加されています。 **オフセットの有無**:なし、ベース座標系オフセット、ツール座標系オフセット、レーザー生データオフセット **オフセット量**:∆x、∆y、∆z、∆rx、∆ry、∆rz、範囲:-300~300 .. image:: coding/033.png :width: 6in :align: center .. centered:: 図表 9.5-2-1 Lin命令画面(溶接シーン) LIN命令の関節速度超過処理機能 ***************************************** デカルト空間の直線運動命令LINを使用する場合、制約される計画条件は線速度ですが、実際の運行時には作業空間の影響を受け、線速度の要件を満たしていても関節角速度がすでに制限を超えている可能性があります。本機能は、LIN運動中の関節速度超過に対処するための選択可能な処理戦略を実現しています。 **Step1**:直線運動命令ボタンをクリックします。 .. image:: coding/034.png :width: 6in :align: center .. centered:: 図表 9.5-3-1 直線運動命令ボタンをクリック **Step2**:直線運動命令の目標経由点を選択します。 .. image:: coding/035.png :width: 6in :align: center .. centered:: 図表 9.5-3-2 直線運動目標経由点の選択 **Step3**:関節速度超過保護スイッチをオンにします。 .. image:: coding/036.png :width: 6in :align: center .. centered:: 図表 9.5-3-3 関節速度超過保護スイッチボタンをオン **Step4**:関節速度超過処理戦略を選択します(速度超過エラー報告または適応型減速を選択。その他はすべてデフォルト戦略で保護なし)。 .. image:: coding/037.png :width: 6in :align: center .. centered:: 図表 9.5-3-4 関節速度超過処理戦略 **Step5**: 処理戦略と処理戦略パラメータを設定し、「追加」ボタンをクリックするとlua命令を追加できます。 適応型減速戦略では、減速閾値は線速度の減少値の設定線速度に対する割合です。減速値が設定閾値を超えると、ロボットはエラーを報告して停止します。 .. image:: coding/038.png :width: 6in :align: center .. centered:: 図表 9.5-3-5 関節速度超過処理戦略の選択と設定 **Step6**:追加されたlua命令の形式は図の通りです。 .. image:: coding/039.png :width: 6in :align: center .. centered:: 図表 9.5-3-6 lua命令 **速度超過保護開始**:JointOverSpeedProtectStart(a、b) a:戦略番号(ドロップダウンボックスの順序を参照) b:閾値パーセンテージ(0~100、適応型減速時のみ有効) **速度超過保護終了**:JointOverSpeedProtectEnd() .. note:: 「特異点通過」運動保護については、自動モードでの特異点通過機能の説明を参照してください。 コーナー姿勢遷移時の角速度調整機能 ***************************************** 溶接プロセス中にコーナー溶接が要求されるワーク、または特定の直線計画(姿勢変化は大きいが位置変化は小さく、線速度を上げずに高速で遷移する必要がある場合)に遭遇した場合、本機能を使用して完了できます。 **Step1**:ツール座標系を設定し、溶接トーチのツール寸法と姿勢をキャリブレーションします。 .. note:: 画面の数値はあくまで例です。実際のツール状態に基づいてください。 .. image:: coding/246.png :width: 4in :align: center .. centered:: 図表 9.5-3-7 ツール座標系の設定 **Step2**:「ティーチングプログラム」をクリックし、「プログラム作成」を選択し、「運動命令」カテゴリの「直線」を選択します。 .. image:: coding/032.png :width: 6in :align: center .. centered:: 図表 9.5-3-8 直線命令設定画面 **Step3**:コーナー溶接の各直線セグメントの開始点を遷移点として設定し、「遷移点角速度調整可能」ボタンをオンにし、最大加速度パーセンテージを設定します(デフォルトの最大角速度100%は360°/sです)。 .. image:: coding/248.png :width: 6in :align: center .. centered:: 図表 9.5-3-9 遷移点角速度調整パラメータ設定画面 **Step4**:「追加」ボタンをクリックして、遷移姿勢角速度調整を含む直線命令を生成します。 .. image:: coding/249.png :width: 6in :align: center .. centered:: 図表 9.5-3-10 遷移点直線運動命令の追加 **Step5**:ロボットは開始点で姿勢遷移を完了し、直線命令を正常に実行してそのセグメントの終点まで移動し、「遷移点角速度調整可能」ボタンをオフにして、終了点を追加します。 .. image:: coding/250.png :width: 6in :align: center .. centered:: 図表 9.5-3-11 直線終点の挿入 **Step6**:「適用」ボタンをクリックして、対応するLUA命令を生成します。 .. image:: coding/251.png :width: 6in :align: center .. centered:: 図表 9.5-3-12 遷移点を含む直線LUA命令の生成 完全なコーナー溶接には通常、複数の遷移点があります。図7に示すコーナーの場合、溶接プロセスには2つの位置変化は小さく姿勢変化が大きい姿勢遷移点があります。 点1は第1セグメント溶接の開始点、点2は第1セグメント溶接の終了点です。 点3は第2セグメント溶接の開始点、点4は第2セグメント溶接の終了点です。 点5は第3セグメント溶接の開始点、点6は第3セグメント溶接の終了点です。 姿勢遷移は前のセグメントの溶接終了点から次のセグメントの溶接開始点で発生するため、次のセグメントの溶接開始点に姿勢角速度調整命令を追加する必要があります。これにより、コーナー姿勢遷移中に最大線速度は維持され、最大角速度が増加し、コーナー溶接プロセスがスムーズに実行されます。 .. image:: coding/252.png :width: 4in :align: center .. centered:: 図表 9.5-3-13 コーナー溶接手順の例 円弧命令 ++++++++++++++++ 「円弧」アイコンをクリックしてArc命令編集画面に入ります。 「Arc」命令は円弧運動で、3つの点を含みます。第1点は円弧開始点、第2点は円弧中間遷移点、第3点は終了点です。 遷移点と終了点の両方でオフセットの有無を設定でき、ベース座標系オフセットとツール座標オフセットを選択でき、x、y、z、rx、ry、rzのオフセット量設定がポップアップ表示されます。終了点ではスムーズ遷移半径を設定でき、運動を連続させる効果を実現します。 .. important:: 円弧運動を行うには、まずPTPまたはLin命令を追加して開始点まで移動する必要があります。 .. image:: coding/040.png :width: 6in :align: center .. centered:: 図表 9.5-4 Arc命令画面 真円命令 ++++++++++++++++ 「真円」アイコンをクリックしてCircle命令編集画面に入ります。 協働ロボットは真円命令を追加することで、真円軌道運動を行うことができます。真円命令を追加する前に、まず真円軌道上の3つの経路点をティーチングする必要があります。真円軌道上の3つの経路点がそれぞれ「P1」、「P2」、「P3」であると仮定します。ここで「P1」は真円軌道の開始点、「P2」と「P3」はそれぞれ真円軌道の中間点1と中間点2です。ロボットをそれぞれ上記3つの点に移動させ、ティーチング点の名前をそれぞれ「P1」、「P2」、「P3」として追加します。 .. important:: 真円軌道運動を行うには、まずPTPまたはLin命令を追加して開始点まで移動する必要があります。 .. image:: coding/042.png :width: 3in :align: center .. centered:: 図表 9.5-5 真円軌道 .. image:: coding/043.png :width: 3in :align: center .. image:: coding/044.png :width: 3in :align: center .. image:: coding/045.png :width: 3in :align: center .. centered:: 図表 9.5-6 「P1」、「P2」、「P3」点のティーチング 真円命令追加 ************** **Step1**:新しいユーザープログラム「testCircle.lua」を作成し、「真円」ボタンをクリックして、真円命令追加ページを開きます。 .. image:: coding/046.png :width: 6in :align: center .. centered:: 図表 9.5-7 真円命令追加ボタン **Step2**:真円命令追加ページで開始点の運動方式と開始点を「P1」に選択します。 .. image:: coding/050.png :width: 6in :align: center .. centered:: 図表 9.5-8 開始点運動方式と開始点「P1」 **Step3**:真円命令追加ページで「真円中間点1」を「P2」点に選択します。 .. image:: coding/047.png :width: 6in :align: center .. centered:: 図表 9.5-9 真円中間点1 **Step4**:「真円中間点2」を「P3」点に選択し、「追加」ボタンと「適用」ボタンを順にクリックします。 .. image:: coding/048.png :width: 6in :align: center .. centered:: 図表 9.5-10 真円中間点2 **Step5**:これで「testCircle.lua」に真円運動命令が追加されました。 .. image:: coding/049.png :width: 6in :align: center .. centered:: 図表 9.5-11 真円運動命令追加 ロボットを自動モードに切り替え、安全を確保した上でこのプログラムを起動すると、ロボットは真円軌道に沿って運動します。 真円軌道オフセット **************************** 協働ロボットの真円運動は、真円軌道の中間点1と真円軌道の中間点2の位置をオフセットすることをサポートしています。オフセットタイプは以下の2種類です。 **真円の2つの軌道中間点の同じオフセット量**:真円軌道中間点1(「P2」点)と真円軌道中間点2(「P3」点)に同じオフセット量∆(dx, dy, dz, drx, dry, drz)を適用してオフセットします。 **真円の2つの軌道中間点の異なるオフセット量**:真円軌道中間点1(「P2」点)と真円軌道中間点2(「P3」点)に、それぞれ2つの異なるオフセット量∆1(dx1, dy1, dz1, drx1, dry1, drz1)と∆2(dx2, dy2, dz2, drx2, dry2, drz2)を適用してオフセットします。 以下で「同じオフセット量」と「異なるオフセット量」の使い方をそれぞれ説明します。 1. 同じオフセット量 図のように、真円命令追加ページを開き、「オフセットタイプ」で「同じオフセット量」を選択し、同様に開始点運動方式と開始点を「P1」、真円中間点1を「P2」点に選択します。 .. image:: coding/051.png :width: 6in :align: center .. centered:: 図表 9.5-12 真円の同じオフセット量 真円中間点2を「P3」に選択し、「オフセットの有無」で「ベース座標オフセット」を選択します。 .. note:: 実際の作業状況に応じて「ツール座標オフセット」を選択することもできます。 オフセット量dxとして10mmを入力し、ページ下部の「追加」ボタンと「適用」ボタンを順にクリックします。 .. image:: coding/052.png :width: 6in :align: center .. centered:: 図表 9.5-13 オフセット量の設定 これで、真円開始点が「P1」で、2つの中間点「P2」と「P3」がともにベース座標系のX軸方向に10mmオフセットされた真円命令が、「testCircle.lua」プログラムに追加されました。 .. image:: coding/053.png :width: 6in :align: center .. centered:: 図表 9.5-14 真円の同じオフセット量プログラム ロボットを自動モードに切り替え、安全を確保した上でこのプログラムを起動すると、ロボットの実際の運動軌跡は「P1」、「P2」、「P3」を通る円になります。ここで「P2」は元の「P2」点をX方向に10mmオフセットした点、「P3」は元の「P3」点をX方向に10mmオフセットした点です。 .. image:: coding/054.png :width: 3in :align: center .. centered:: 図表 9.5-15 同じオフセット量 X10mm の軌跡 2. 異なるオフセット量 真円命令追加ページを開き、「オフセットタイプ」で「異なるオフセット量」を選択し、同様に開始点運動方式と開始点を「P1」、真円中間点1を「P2」点に選択し、「オフセットの有無」で「ベース座標オフセット」を選択します。 .. note:: 実際の作業状況に応じて「ツール座標オフセット」を選択することもできます。 オフセット量dyとして10mmを入力します。 .. image:: coding/055.png :width: 6in :align: center .. centered:: 図表 9.5-16 異なるオフセット量 真円中間点を「P3」に選択し、「オフセットの有無」で「ベース座標オフセット」を選択します。 .. note:: 実際の作業状況に応じて「ツール座標オフセット」を選択することもできます。 オフセット量dxとして10mmを入力し、ページ下部の「追加」ボタンと「適用」ボタンを順にクリックします。 .. image:: coding/056.png :width: 6in :align: center .. centered:: 図表 9.5-17 異なるオフセット量で中間点2のオフセットを設定 これで、真円開始点が「P1」で、中間点「P2」がベース座標系Y方向に10mmオフセット、「P3」がベース座標系のX軸方向に10mmオフセットされた真円命令が、「testCircle.lua」プログラムに追加されました。 .. image:: coding/057.png :width: 6in :align: center .. centered:: 図表 9.5-18 真円の2点異なるオフセット量プログラム ロボットを自動モードに切り替え、安全を確保した上でこのプログラムを起動すると、ロボットの実際の運動軌跡は「P1」、「P2’」、「P3’」を通る円になります。ここで「P2’」は元の「P2」点をY方向に10mmオフセットした点、「P3’」は元の「P3」点をX方向に10mmオフセットした点です。 .. image:: coding/058.png :width: 3in :align: center .. centered:: 図表 9.5-19 真円の2軌跡点をそれぞれオフセットした軌跡 螺旋命令 ++++++++++++++++ 「螺旋」アイコンをクリックしてSpiral命令編集画面に入ります。 「Spiral」命令は螺旋線運動で、3つの点を含みます。この3つの点で1つの円を構成します。第3点の設定ページには、螺旋回数、姿勢補正角、半径増分、回転軸方向増分というパラメータ設定が含まれます。螺旋回数はその螺旋線の運動回数、姿勢補正角は螺旋線終了時の姿勢と螺旋線第1点の姿勢を補正します。半径増分は各周の半径の増分、回転軸方向増分は螺旋軸方向の増分です。オフセットの有無を設定します。このオフセット量は螺旋線全体の軌道に適用されます。 .. image:: coding/059.png :width: 6in :align: center .. centered:: 図表 9.5-20 Spiral命令画面 新螺旋命令 ++++++++++++++++ 「新螺旋」アイコンをクリックしてN-Spiral命令編集画面に入ります。 「N-Spiral」命令は最適化版の螺旋線運動で、この命令は1つの点と各パラメータの設定だけで螺旋線運動を実現します。ロボットは現在位置を開始点として、ユーザーはデバッグ速度、オフセットの有無、螺旋回数、螺旋傾斜角、初期半径、半径増分、回転軸方向増分、回転方向というパラメータを設定します。螺旋回数はその螺旋線の運動回数、螺旋傾斜角はツールZ軸と水平方向のなす角、姿勢補正角は螺旋線終了時の姿勢と螺旋線第1点の姿勢を補正します。初期半径は第1周の半径の大きさ、半径増分は各周の半径の増分、回転軸方向増分は螺旋軸方向の増分、回転方向は時計回りと反時計回りです。 .. image:: coding/060.png :width: 6in :align: center .. centered:: 図表 9.5-21 N-Spiral命令画面 水平螺旋命令 ++++++++++++++++ 「水平螺旋」アイコンをクリックしてH-Spiral命令編集画面に入ります。 「H-Spiral」命令は水平空間螺旋線運動で、この命令は単一セグメント運動(直線)命令の後に設定します。 - 螺旋半径:0~100mm - 螺旋角速度:0~2rev/s - 回転方向:螺旋時計回り/反時計回り - 螺旋傾斜角:0~40° .. image:: coding/061.png :width: 6in :align: center .. centered:: 図表 9.5-22 H-Spiral命令画面 スプライン命令 ++++++++++++++++ 「スプライン」アイコンをクリックしてSpline命令編集画面に入ります。 この命令は、スプライングループ開始、スプラインセグメント、スプライングループ終了の3つの部分に分かれています。スプライングループ開始はスプライン運動の開始フラグ、スプラインセグメントはSPL、SLIN、SCIRCセグメントを含み、対応するアイコンをクリックして命令追加画面に入ります。スプライングループ終了はスプライン運動の終了フラグです。 .. image:: coding/062.png :width: 6in :align: center .. centered:: 図表 9.5-23 Spline命令画面 新スプライン命令 ++++++++++++++++ 「新スプライン」アイコンをクリックしてN-Spline命令編集画面に入ります。 この命令はSpline命令のアルゴリズム最適化命令であり、将来的に既存のSpline命令を置き換える予定です。 この命令は、多点軌跡開始、多点軌跡セグメント、多点軌跡終了の3つの部分に分かれています。多点軌跡開始は多点軌跡運動の開始フラグ、多点軌跡セグメントは各軌跡点を設定します。 アイコンをクリックして点追加画面に入り、多点軌跡終了は多点軌跡運動の終了フラグで、ここでは制御モードとデバッグ速度を設定できます。 - 制御モード:円弧遷移点/指定経路点 - 全体平均接続時間:整数型、10以上、デフォルト値は2000 .. image:: coding/063.png :width: 6in :align: center .. centered:: 図表 9.5-24 N-Spline命令画面 ウィービング命令 ++++++++++++++++ 「ウィービング」アイコンをクリックしてWeave命令編集画面に入ります。「Weave」命令は2つの部分を含みます。 - パラメータ設定済みのウィービング番号を選択し、「ウィービング開始」と「ウィービング停止」をクリックして適用すると、関連する命令をプログラムに追加できます。 .. image:: coding/064.png :width: 6in :align: center .. centered:: 図表 9.5-25 Weave命令画面 - 「設定とテスト」をクリックすると、使用シーンに応じてウィービングタイプを選択し、ウィービングのパラメータを設定できます。設定後、「ウィービングテスト開始」と「ウィービングテスト停止」ボタンでそのウィービング軌道をテストできます。現在のウィービングタイプは以下の通りです。 - 三角波ウィービング(LIN/ARC) - 垂直L型三角波ウィービング(LIN/ARC) - 円形ウィービング-時計回り(LIN) - 円形ウィービング-反時計回り(LIN) - 正弦波ウィービング(LIN/ARC) - 垂直L型正弦波ウィービング(LIN/ARC) - 垂直溶接三角ウィービング .. image:: coding/065.png :width: 6in :align: center .. centered:: 図表 9.5-26 Weave設定とテスト命令画面 斜め鋸歯状ウィービング機能 ************************************* 斜め鋸歯状ウィービング機能を使用すると、ロボットツールの末端がデカルト空間内で傾斜した鋸歯状のウィービング軌道を形成します。斜めウィービングは直線計画に重ね合わせられ、傾斜量は方位角パラメータによって制御され、指定されたウィービング平面上でのウィービングの方位角の傾斜度(単位deg)です。 値が正の場合は左端点が進行方向に傾斜し、負の場合は右端点が進行方向に傾斜します。90degまたは-90degの場合、進行方向に沿ってウィービングできます。 .. image:: coding/066.png :width: 4in :align: center .. centered:: 図表 9.5-26-1 ウィービング方位角の影響 **Step1**:基本直線運動を編集して設定します。 .. image:: coding/067.png :width: 4in :align: center .. centered:: 図表 9.5-26-2 基本直線運動luaプログラム例 **Step2**:クリックしてウィービング命令を追加します。 .. image:: coding/068.png :width: 1.5in :align: center .. centered:: 図表 9.5-26-3 クリックしてウィービング命令を追加 **Step3**:ウィービング命令パラメータ設定ページで「設定」ボタンをクリックし、「ウィービングタイプ」ドロップダウンリストで「三角波ウィービング」または「正弦波ウィービング」を選択し、対応する「ウィービング方向方位角」を入力し、「適用」をクリックします。 .. image:: coding/069.png :width: 6in :align: center .. centered:: 図表 9.5-26-4 ウィービングパラメータ設定 **Step4**:「ウィービング開始」ボタンをクリックして、ウィービング命令を直線運動の上に追加します。「ウィービング終了」ボタンをクリックして、ウィービング命令を直線運動の下に追加します。 .. image:: coding/070.png :width: 4in :align: center .. centered:: 図表 9.5-26-5 ウィービング命令追加後のluaプログラム **Step5**:「実行開始」をクリックすると、ロボットの末端軌道は図のようになります。 .. image:: coding/071.png :width: 3in :align: center .. image:: coding/072.png :width: 3in :align: center .. centered:: 図表 9.5-26-6 鋸歯状ウィービング(左) 斜め鋸歯状ウィービング(右) 軌道再現命令 ++++++++++++++++ 「軌道再現」ボタンをクリックしてTPD命令編集画面に入ります。 この命令では、ユーザーは事前に記録された軌道を持っている必要があります。 軌道記録について:軌道を記録する前に、軌道の開始点を保存します。ロボットがドラッグモードの状態で、ファイル名を入力し、周期を選択し(数値をxとすると、xミリ秒ごとに1点を記録します。4ミリ秒を推奨)、記録開始をクリックします。ユーザーは必要に応じてロボットをドラッグして指定された運動をさせることができます。記録が完了したら、記録停止をクリックすると、それまでのロボットの運動軌跡を保存できます。1回の運動で完全に記録できない場合は、記録点数の上限超過の警告が表示されます。ユーザーは運動を数回に分けて記録する必要があります。 プログラム作成を行う際は、まずPTP命令で対応する軌道開始点に到達し、次にTPD軌道再現命令で軌道を選択し、スムーズの有無を選択し、デバッグ速度を設定し、「追加」、「適用」の順にクリックすると、プログラムに挿入できます。軌道ロード命令は、主に軌道ファイルを事前に読み込み、軌道命令として抽出し、コンベアトラッキングシーンにより適したものにするために使用されます。 .. note:: TPDの詳細な操作については、「ティーチングプログラミング(TPD)機能操作説明」モジュールを参照してください。 .. image:: coding/073.png :width: 6in :align: center .. centered:: 図表 9.5-27 TPD命令画面 点オフセット命令 ++++++++++++++++ 「点オフセット」アイコンをクリックしてOffset命令編集画面に入ります。 この命令は全体オフセット命令です。各オフセット量を入力し、開始命令と終了命令をプログラムに追加します。開始と終了の間にある運動命令は、ベース座標(またはワーク座標)に基づいてオフセットされます。 .. image:: coding/074.png :width: 6in :align: center .. centered:: 図表 9.5-28 Offset命令画面 サーボ命令 ++++++++++++++++ 「サーボ」アイコンをクリックしてServoCart命令編集画面に入ります。 ServoCartサーボ制御(デカルト空間運動)命令は、絶対位置姿勢制御または現在の位置姿勢に基づくオフセットによってロボットの運動を制御できます。 .. image:: coding/075.png :width: 6in :align: center .. centered:: 図表 9.5-29 ServoCart命令画面 絶対位置姿勢制御プログラム例: .. image:: coding/076.png :width: 6in :align: center この例では、x、y、z、rx、ry、rz(デカルト位置)は取得したロボットの現在位置です。その他にも、ユーザーは軌道データファイルの読み取り、socket通信による軌道データの送信などによって、ロボットの運動を制御できます。 現在の位置姿勢に基づくオフセット(ベース座標オフセット)制御プログラム例: .. image:: coding/077.png :width: 6in :align: center 軌道命令 ++++++++++++++++ 「軌道」アイコンをクリックしてTrajctory命令編集画面に入ります。 .. image:: coding/078.png :width: 6in :align: center .. centered:: 図表 9.5-30 Trajctory命令画面 軌道J命令 ++++++++++++++++ 「軌道J」アイコンをクリックしてTrajctoryJ命令編集画面に入ります。 Trajctory命令とTrajctoryJ命令は、カメラが直接軌道を与える場合の汎用インターフェースに適しています。既存の固定フォーマットの離散軌道点ファイルがある場合、システムにインポートして、ロボットがインポートされたファイルの軌道に従って運動できるようにします。 1. 軌道ファイルインポート機能:ローカルコンピュータのファイルを選択してロボット制御システムにインポートします。 2. 軌道プリロード:インポート済みの軌道ファイルを命令によってロードします。 3. 軌道運動:プリロードされた軌道ファイルと選択されたデバッグ速度の組み合わせ命令でロボットの運動を開始します。 4. 軌道点番号の出力:ロボットが軌道を実行する過程で軌道点番号を出力し、現在の運動の進捗を確認します。 .. image:: coding/079.png :width: 6in :align: center .. centered:: 図表 9.5-31 TrajctoryJ命令画面 DMP命令 ++++++++++++++++ 「DMP」アイコンをクリックしてDMP命令編集画面に入ります。 DMPは軌道模倣学習の方法であり、事前に参考軌道を計画する必要があります。命令編集画面で、ティーチング点を新しい開始点として選択し、「追加」、「適用」をクリックすると、この命令を保存できます。DMPの具体的な経路は、新しい開始点を基準に参考軌道を模倣した新しい軌道です。 .. image:: coding/080.png :width: 6in :align: center .. centered:: 図表 9.5-32 DMP命令画面 ワーク座標変換命令 +++++++++++++++++++++++ 「ワーク座標変換」アイコンをクリックしてWPTrsf命令編集画面に入ります。 自動変換を行いたいワーク座標系を選択し、「追加」、「適用」をクリックすると、この命令を保存できます。この命令は、内部のPTP、LIN命令を実行する際に、ワーク座標系における点を自動変換します。使用例エリアでは、命令の正しい使用方法の組み合わせを表示・提示しています。具体的な命令は追加後に実際のシーンに応じて自分で組み合わせを調整できます。 .. image:: coding/081.png :width: 6in :align: center .. centered:: 図表 9.5-33 WPTrsf命令画面 ツール座標変換命令 ++++++++++++++++++++++++++++++ 「ツール座標変換」アイコンをクリックしてToolTrsf命令編集画面に入ります。 PTP、Lin命令を追加した後、自動変換を行いたいツール座標系を選択し、「追加」、「適用」をクリックすると、この命令を保存できます。命令内の点のデカルト座標は、現在設定されているワーク座標系に応じて自動変換されます。 .. note:: 使用例エリアでは、命令の正しい使用方法の組み合わせを表示・提示しています。具体的な命令は追加後に実際のシーンに応じて自分で組み合わせを調整できます。 .. image:: coding/276.png :width: 6in :align: center .. centered:: 図表 9.5-34 ToolTrsf命令画面 制御命令画面 ~~~~~~~~~~~~~ .. image:: coding/082.png :width: 6in :align: center .. centered:: 図表 9.6 制御命令画面 デジタルIO命令 ++++++++++++++++ 「デジタルIO」アイコンをクリックしてIO命令編集画面に入ります。 「IO」命令は、IOの設定(SetDO/SPLCSetDO)とIOの取得(GetDI/SPLCGetDI)の2つの部分に分かれています。 「SetDO/SPLCSetDO」この命令は、指定された出力DOの状態を設定できます。これには16路の制御箱デジタル出力と2路のツールデジタル出力が含まれます。状態オプションの「False」は閉、「True」は開です。ブロックオプションで「ブロック」を選択すると運動停止後にDO状態が設定され、「非ブロック」を選択すると前の運動中にDO状態が設定されます。スムーズ軌道オプションで「Break」を選択するとスムーズ遷移半径終了後にDO状態が設定され、「Serious」を選択するとスムーズ遷移半径の運動中にDO状態が設定されます。この命令が補助スレッドに追加される場合、スレッド適用の有無は「はい」を選択する必要があり、その他の場所でこの命令を使用する場合は「いいえ」を選択します。「追加」、「適用」をクリックします。 .. image:: coding/083.png :width: 6in :align: center .. centered:: 図表 9.6-1 SetDO命令画面 「GetDI/SPLCGetDI」命令では、取得したいポート番号の値を選択します。ブロックオプションで「ブロック」を選択すると運動停止後にDI状態を取得し、「非ブロック」を選択すると前の運動中にDI状態を取得します。この命令が補助スレッドに追加される場合、スレッド適用の有無は「はい」を選択する必要があり、その他の場所でこの命令を使用する場合は「いいえ」を選択します。選択が完了したら「追加」、「適用」ボタンをクリックします。 .. image:: coding/084.png :width: 6in :align: center .. centered:: 図表 9.6-2 GetDI命令画面 アナログAI命令 ++++++++++++++++ 「アナログAI」アイコンをクリックしてAI命令編集画面に入ります。 この命令は、アナログ出力の設定(SetAO/SPLCSetAO)とアナログ入力の取得(GetAI/SPLCGetAI)の2つの部分の機能に分かれています。 「SetAO/SPLCSetAO」設定したいアナログ出力を選択し、設定したい値を入力します。範囲は0-10です。ブロックオプションで「ブロック」を選択すると運動停止後にAO状態が設定され、「非ブロック」を選択すると前の運動中にAO状態が設定されます。この命令が補助スレッドに追加される場合、スレッド適用の有無は「はい」を選択する必要があり、その他の場所でこの命令を使用する場合は「いいえ」を選択します。「追加」、「適用」をクリックします。 .. image:: coding/085.png :width: 6in :align: center .. centered:: 図表 9.6-3 SetAO命令画面 「GetAI/SPLCGetAI」取得したいアナログ入力を選択します。ブロックオプションで「ブロック」を選択すると運動停止後にAI状態を取得し、「非ブロック」を選択すると前の運動中にAI状態を取得します。この命令が補助スレッドに追加される場合、スレッド適用の有無は「はい」を選択する必要があり、その他の場所でこの命令を使用する場合は「いいえ」を選択します。「追加」、「適用」をクリックします。 .. image:: coding/086.png :width: 6in :align: center .. centered:: 図表 9.6-4 GetAI命令画面 仮想IO命令 ++++++++++++++++ 「仮想IO」アイコンをクリックしてVir-IO命令編集画面に入ります。 この命令は仮想的なIO制御命令であり、外部DIやAI状態の設定、外部DIやAI状態の取得をシミュレートできます。 .. image:: coding/087.png :width: 6in :align: center .. centered:: 図表 9.6-5 Vir-IO命令画面 拡張IO命令 ++++++++++++++++ 「拡張IO」アイコンをクリックしてAux-IO命令編集画面に入ります。 Aux-IOは、ロボットがPLCと通信して外部拡張IOを制御するための命令機能です。ロボットとPLCの間でUDP通信を確立する必要があり、既存の16路の入出力に加えて、128路の入出力を拡張できます。この命令の使用方法は、前述の汎用IOの使用方法と似ています。この機能を使用するにはある程度の技術的難易度があります。お問い合わせください。 .. image:: coding/088.png :width: 6in :align: center .. centered:: 図表 9.6-6 Aux-IO命令画面 運動DO命令 ++++++++++++++++ 「運動DO」アイコンをクリックしてMoveDO命令編集画面に入ります。 この命令は、連続出力モードと単発出力モードに分かれています。 - 連続出力モード:直線運動中に、設定された間隔に基づいてDO信号を連続出力する機能を実現します。 .. image:: coding/089.png :width: 6in :align: center .. centered:: 図表 9.6-7 MoveDO命令の連続出力画面 - 単発出力モード:等速区間出力と自由設定の2つの選択肢があります。運動開始後に出力セット時間、運動終了前に出力リセット時間を設定します。範囲[0, 1000]。 .. image:: coding/090.png :width: 6in :align: center .. centered:: 図表 9.6-8 MoveDO命令の単発出力画面 運動AO命令 ++++++++++++++++ 「運動AO」アイコンをクリックしてMoveAO命令編集画面に入ります。 1. 概要 この命令を運動命令と組み合わせて使用すると、運動中に、リアルタイムのTCP速度に比例してAO信号を出力できます。 2. 運動AO命令の説明 運動AO命令は、ティーチングシミュレーション-プログラムティーチング命令編集エリアにあり、アイコンは制御命令-運動AOです。 .. image:: coding/091.png :width: 6in :align: center .. centered:: 図表 9.6-9 運動AO命令 .. image:: coding/092.png :width: 6in :align: center .. centered:: 図表 9.6-10 運動AO命令の詳細 - AO番号:ドロップダウンリストから選択。Ctrl-AO0は制御箱AO0、Ctrl-AO1は制御箱AO1、End-AO0は末端AO0に対応します。 - 最大TCP速度:ロボットの最大TCP速度値。機能:リアルタイムTCP速度と比例関係を形成します。 - 最大TCP速度時のAOパーセンテージ:ロボットの最大TCP速度値に対応するAOパーセンテージ。機能:AO出力の上限値を設定します。 - 不感帯補償値AOパーセンテージ:比例弁に不感帯が存在する場合、このパラメータを設定してAO出力を保証します。機能:AO出力の下限値を設定します。 .. important:: 計算式:出力AOパーセンテージ = リアルタイムTCP速度 / 設定最大TCP速度 * 設定最大TCP速度時のAOパーセンテージ この命令に対応する運動命令は以下の通りです。PTP/LIN/ARC/CIRCLE/SPLINE/NSPLINE/SERVOJ 座標系命令 ++++++++++++++++ 「座標系」アイコンをクリックしてToolList命令編集画面に入ります。 ツール座標系の名前を選択し、「適用」をクリックしてこの命令をプログラムに追加します。プログラムがこの文を実行すると、ロボットのツール座標系が設定されます。 .. image:: coding/093.png :width: 6in :align: center .. centered:: 図表 9.6-11 ToolList命令画面 モード切替命令 ++++++++++++++++ 「モード切替」アイコンをクリックしてMode命令編集画面に入ります。 この命令はロボットを手動モードに切り替えることができます。通常、プログラムの末尾に追加され、プログラム終了後にユーザーがロボットを自動的に手動モードに切り替えて、ロボットをドラッグできるようにします。 .. image:: coding/094.png :width: 6in :align: center .. centered:: 図表 9.6-12 Mode命令画面 衝突レベル命令 ++++++++++++++++ 「衝突レベル」アイコンをクリックしてCollision命令編集画面に入ります。 この命令は衝突レベルの設定です。この命令によって、プログラム実行中に各軸の衝突レベルをリアルタイムで調整し、より柔軟にアプリケーションシーンを展開できます。 .. image:: coding/095.png :width: 6in :align: center .. centered:: 図表 9.6-13 Collision命令画面 加速度命令 ++++++++++++++++ 「加速度」アイコンをクリックしてAcc命令編集画面に入ります。 Acc命令は、ロボットの加速度を個別に設定できる機能を実現します。運動命令の加速度スケーリングファクタを調整することで、加減速時間を増減し、ロボットの動作タクト時間を調整可能にします。 .. image:: coding/096.png :width: 6in :align: center .. centered:: 図表 9.6-14 Acc命令画面 周辺機器命令画面 ~~~~~~~~~~~~~~~~~~~~~~~~~~ .. image:: coding/097.png :width: 6in :align: center .. centered:: 図表 9.7 周辺機器命令画面 グリッパ命令 ++++++++++++++++ 「グリッパ」アイコンをクリックしてGripper命令編集画面に入ります。 この命令は、グリッパ運動制御命令とグリッパアクティブ化/リセット命令に分かれています。グリッパ制御命令では、設定が完了しアクティブ化されているグリッパ番号が表示されます。ユーザーは編集ボックスで編集するか、スライドバーを必要な値までスライドさせることで、グリッパの開閉、開閉速度、開閉トルクの設定を完了できます。数値はパーセンテージです。ブロック機能オプションで「ブロック」を選択すると、グリッパの運動は前の運動命令の実行完了を待ってから実行されます。「非ブロック」を選択すると、グリッパの運動は前の運動命令と並行して実行されます。「追加」、「適用」ボタンをクリックすると、設定された値がティーチングファイルに保存されます。グリッパリセット/アクティブ化命令では、設定済みのグリッパ番号が表示され、リセット/アクティブ化命令をプログラムに追加できます。 .. image:: coding/098.png :width: 6in :align: center .. centered:: 図表 9.7-1 Gripper命令画面 スプレーガン命令 ++++++++++++++++ 「スプレーガン」アイコンをクリックしてSpray命令編集画面に入ります。 この命令はスプレー塗装関連の命令で、スプレーガンを制御して「塗装開始」、「塗装停止」、「ガン清掃開始」、「ガン清掃停止」を行います。このプログラム命令を編集する前に、スプレーガンの周辺機器が設定されていることを確認する必要があります。詳細はロボット周辺機器の章を参照してください。 .. image:: coding/099.png :width: 6in :align: center .. centered:: 図表 9.7-2 Spray命令画面 外部軸命令 ++++++++++++++++ 「外部軸」アイコンをクリックしてEAxis命令編集画面に入ります。組み合わせモードを選択します。 - コントローラ+サーボドライバ(485) - コントローラ+PLC(UDP) コントローラ+PLC(UDP)を選択します。この命令は外部軸を使用するシーンを対象としており、PTP命令と組み合わせて使用することで、空間上の1点のX軸方向の動きを外部軸の運動に分解できます。外部軸番号を選択し、運動方式を「同期」に選び、到達したい点を選択し、「追加」、「適用」をクリックすると、この命令を保存できます。 .. image:: coding/100.png :width: 6in :align: center .. centered:: 図表 9.7-3 EAxis命令画面 コントローラ+サーボドライバ(485)を選択します。この命令では拡張軸のパラメータを設定できます。異なる制御モードに応じて異なるパラメータを設定します。設定済みの拡張軸に対しては、そのゼロ点を設定できます。 .. image:: coding/101.png :width: 6in :align: center .. centered:: 図表 9.7-4 拡張軸命令画面 コンベア命令 ++++++++++++++++ 「コンベア」アイコンをクリックしてConvey命令編集画面に入ります。 この命令には、位置リアルタイム検出、IOリアルタイム検出、トラッキング開始、トラッキング終了の4つの命令が含まれます。詳細はロボット周辺機器の章を参照してください。 .. image:: coding/102.png :width: 6in :align: center .. centered:: 図表 9.7-5 Conveyor命令画面 研磨デバイス命令 ++++++++++++++++ 「研磨デバイス」アイコンをクリックしてPolish命令編集画面に入ります。 この命令では、研磨デバイスの回転数、接触力、突出距離、制御モードなどを設定できます。 .. image:: coding/103.png :width: 6in :align: center .. centered:: 図表 9.7-6 Polish命令画面 溶接命令画面 ~~~~~~~~~~~~~ .. image:: coding/104.png :width: 6in :align: center .. centered:: 図表 9.8 溶接命令画面 溶接命令 ++++++++++++++++ 「溶接」アイコンをクリックしてWeld命令編集画面に入ります。 この命令は主に溶接機の周辺機器に使用されます。この命令を追加する前に、ユーザー周辺機器で溶接機の設定が完了していることを確認してください。詳細はロボット周辺機器の章を参照してください。 - 溶接電圧範囲:0~700V - 溶接電流範囲:0~1000A .. important:: 出力AO、溶接電流、溶接電圧を設定する際は、I/Oタイプを選択する必要があります。「コントローラI/O」を選択する場合は、対応する出力AOを選択する必要があります。 .. image:: coding/105.png :width: 6in :align: center .. centered:: 図表 9.8-1 Weld命令画面 インターバル溶接命令 +++++++++++++++++++++++++++ 「インターバル溶接」アイコンをクリックしてSegment命令編集画面に入ります。 協働ロボットはインターバル溶接命令を追加することでインターバル溶接操作を行うことができます。インターバル溶接命令を追加する前に、まずインターバル溶接モードを選択し、開始点と終了点をティーチングする必要があります。インターバル溶接モードには「姿勢を変化させない」と「姿勢を変化させる」があり、ロボットは選択されたインターバル溶接モードに応じて、溶接軌道中に姿勢を変化させるかどうかを決定します。 開始点「segment01」と終了点「segment02」をティーチングし、溶接軌道の開始点と終了点の位置を確定します。下図の通りです。 .. image:: coding/106.png :width: 3in :align: center .. centered:: 図表 9.8-2-1 開始点「segment01」 .. image:: coding/107.png :width: 3in :align: center .. centered:: 図表 9.8-2-2 終了点「segment02」 インターバル溶接命令追加 ****************************** **Step1**:新しいユーザープログラム「testSegment1.lua」を作成し、「インターバル溶接」ボタンをクリックして、インターバル溶接命令追加ページを開きます。 .. image:: coding/108.png :width: 6in :align: center .. centered:: 図表 9.8-2-3 インターバル溶接命令追加ボタン **Step2**:インターバル溶接命令追加ページで「開始点」を「segment01」に、「終了点」を「segment02」に選択します。 .. image:: coding/109.png :width: 6in :align: center .. centered:: 図表 9.8-2-4 インターバル溶接の開始点、終了点 **Step3**:デバッグ速度、実行長さ、非実行長さ、機能モード、ウィービング選択、丸め規則を設定し、「追加」ボタンと「適用」ボタンを順にクリックします。 **Step4**:これで「testSegment1.lua」にインターバル溶接運動命令が追加されました。 .. image:: coding/110.png :width: 6in :align: center .. centered:: 図表 9.8-2-5 インターバル溶接運動命令の追加 インターバル溶接運動軌道の姿勢変化 ************************************** 協働ロボットのインターバル溶接運動では、インターバル溶接モードを選択できます。モードタイプは以下の2種類です。 **姿勢を変化させない**:ロボットは溶接軌道中、常に溶接軌道の開始点の姿勢を維持して運行します。 **姿勢を変化させる**:ロボットは溶接軌道中、各セグメントのデカルト位置姿勢と関節位置を計算し、インターバル溶接の実行中に姿勢を変化させます。 以下で「姿勢を変化させない」と「姿勢を変化させる」の使い方をそれぞれ説明します。 1. 姿勢を変化させない インターバル溶接命令追加ページを開き、「インターバル溶接モード」で「姿勢を変化させない」を選択し、同様に開始点を「segment01」、終了点を「segment02」に選択し、実行長さを100、非実行長さを50に設定し、その他の関連設定を選択した後、プログラムを保存します。 .. image:: coding/111.png :width: 6in :align: center .. centered:: 図表 9.8-2-6 姿勢変化なしのインターバル溶接モード 2. 姿勢を変化させる インターバル溶接命令追加ページを開き、「インターバル溶接モード」で「姿勢を変化させる」を選択し、同様に開始点を「segment01」、終了点を「segment02」に選択し、実行長さを100、非実行長さを50に設定し、その他の関連設定を選択した後、プログラムを保存します。 .. image:: coding/112.png :width: 6in :align: center .. centered:: 図表 9.8-2-7 姿勢変化ありのインターバル溶接モード 3. インターバル溶接の実行タイプ プログラムを実行すると、ロボットのインターバル溶接の実行状況は以下のいくつかのケースに分けられます。 1) 機能モードで「第1セグメント機能を実行」を選択し、ウィービングで「セグメントウィービングを実行」を選択し、丸め規則で「丸めなし」を選択した場合。ロボットは100mmのウィービング運動、50mmの直線運動を交互に行い、終了点で停止します。 .. image:: coding/113.png :width: 6in :align: center .. centered:: 図表 9.8-2-8 第1セグメント機能を実行、ウィービングあり、丸めなし 2) 機能モードで「第1セグメント機能を実行しない」を選択し、ウィービングで「セグメントウィービングを実行しない」を選択し、丸め規則で「丸めなし」を選択した場合。ロボットは50mmのウィービング運動、100mmの直線運動を交互に行い、終了点で停止します。 .. image:: coding/114.png :width: 6in :align: center .. centered:: 図表 9.8-2-9 第1セグメント機能を実行せず、ウィービングあり、丸めなし 3) 機能モードで「第1セグメント機能を実行」を選択し、ウィービングで「セグメントウィービングを実行」を選択し、丸め規則で「丸め」を選択した場合。ロボットは100mmのウィービング運動、50mmの直線運動を交互に行い、最後のセグメント全体のループが終了した後、残り距離が150mm未満になるとウィービングを停止します。 .. image:: coding/115.png :width: 6in :align: center .. centered:: 図表 9.8-2-10 第1セグメント機能を実行、ウィービングあり、ループ丸め 4) 機能モードで「第1セグメント機能を実行」を選択し、ウィービングで「セグメントウィービングを実行しない」を選択し、丸め規則で「丸め」を選択した場合。ロボットは50mmのウィービング運動、100mmの直線運動を交互に行い、最後のセグメント全体のループが終了した後、残り距離が150mm未満になるとウィービングを停止します。 .. image:: coding/116.png :width: 6in :align: center .. centered:: 図表 9.8-2-11 第1セグメント機能を実行せず、ウィービングあり、ループ丸め 5) 機能モードで「第1セグメント機能を実行」を選択し、ウィービングで「セグメントウィービングを実行」を選択し、丸め規則で「単セグメント丸め」を選択した場合。ロボットは100mmのウィービング運動、50mmの直線運動を交互に行い、最後のセグメントのループが終了した後、次のセグメントが100mmのウィービング計画で残り距離が100mm未満の場合、ウィービングを停止します。次のセグメントが50mmの直線運動計画で残り距離が50mm未満の場合、運動を停止します。 .. image:: coding/117.png :width: 6in :align: center .. centered:: 図表 9.8-2-12 第1セグメント機能を実行、ウィービングあり、単セグメント丸め 6) 機能モードで「第1セグメント機能を実行」を選択し、ウィービングで「セグメントウィービングを実行しない」を選択し、丸め規則で「単セグメント丸め」を選択した場合。ロボットは50mmのウィービング運動、100mmの直線運動を交互に行い、最後のセグメントのループが終了した後、次のセグメントが50mmのウィービング計画で残り距離が50mm未満の場合、ウィービングを停止します。次のセグメントが100mmの直線運動計画で残り距離が100mm未満の場合、運動を停止します。 .. image:: coding/118.png :width: 6in :align: center .. centered:: 図表 9.8-2-13 第1セグメント機能を実行せず、ウィービングあり、単セグメント丸め 4. 姿勢比較 異なるインターバル溶接モードを設定した場合、ロボットの溶接軌道実行中の姿勢も異なります。実行中の姿勢の比較は以下の通りです。 .. image:: coding/119.png :width: 3in :align: center .. centered:: 図表 9.8-2-14 溶接軌道の初期姿勢 .. image:: coding/120.png :width: 3in :align: center .. centered:: 図表 9.8-2-15 実行中に姿勢を変化させない場合 .. image:: coding/121.png :width: 3in :align: center .. centered:: 図表 9.8-2-16 実行中に姿勢を変化させる場合 インターバル溶接の実際のシーン ****************************************** 実際のテスト環境では、ロボットに溶接トーチなどを取り付ける必要があります。作成したインターバル溶接命令に従って、溶接板で溶接操作を行います。実際のシーン図は以下の通りです。 .. image:: coding/122.png :width: 3in :align: center .. centered:: 図表 9.8-2-17 インターバル溶接の実際のシーン レーザートラッキング命令 +++++++++++++++++++++++++++++++++++++++ 「レーザートラッキング」アイコンをクリックしてLaser命令編集画面に入ります。 この命令は、レーザー命令、トラッキング命令、位置探知命令の3つの部分を含みます。この命令を追加する前に、ユーザー周辺機器でレーザートラッキングセンサーが正しく設定されていることを確認してください。詳細はロボット周辺機器の章を参照してください。 センサーロードモジュールで、機能選択に応じて対応する「センサー命令」画面を表示した後、センサー命令を設定します。 **睿牛/創想**:溶接タイプを入力します。範囲:0~49の整数 .. image:: coding/123.png :width: 6in :align: center .. centered:: 図表 9.8-3-1 Laser命令画面(溶接タイプ) **全視**:タスク番号を入力します。範囲:0~255の整数 .. image:: coding/124.png :width: 6in :align: center .. centered:: 図表 9.8-3-2 Laser命令画面(タスク番号) レーザー記録命令 ++++++++++++++++ 「レーザー記録」アイコンをクリックしてLT-Rec命令編集画面に入ります。 この命令は、レーザートラッキング記録の開始点、終了点の取り出し機能を実現し、ロボットが自動的に開始点位置に移動できるようにします。これはワーク外部から運動を開始してレーザートラッキング記録を行う場合に適しており、同時に上位機は記録データから開始点と終了点の情報を取得し、後続の運動に使用できます。 レーザートラッキングの再現速度調整機能を実現し、ロボットが非常に速い速度で記録を行い、その後通常の溶接速度で再現できるようにすることで、作業効率を向上させることができます。 .. image:: coding/125.png :width: 6in :align: center .. centered:: 図表 9.8-4 LT-Rec命令画面 ワイヤタッチセンシング命令 +++++++++++++++++++++++++++++++++++++++ 「ワイヤタッチセンシング」アイコンをクリックしてW-Search命令編集画面に入ります。 この命令はワイヤタッチセンシング命令で、位置探知開始、位置探知終了、オフセット量計算の3つの命令を含みます。この命令は一般的に溶接シーンで使用され、溶接機とロボットのIOおよび運動命令を組み合わせて使用する必要があります。 .. image:: coding/126.png :width: 6in :align: center .. centered:: 図表 9.8-5 W-Search命令画面 プログラムを作成する際は、通常、まず位置探知開始命令を設定し、その後2つのLIN命令を追加して位置探知の方向を確定します。位置探知が成功したら、計算されたオフセット量を取得し、このオフセット量を全体オフセット命令によって実際の溶接運動命令に適用します。プログラム例は以下の通りです。 .. image:: coding/127.png :width: 4in :align: center .. centered:: 図表 9.8-5-1 W-Searchの例(1D) アークトラッキング命令 +++++++++++++++++++++++++++++++++++++++ 「アークトラッキング」アイコンをクリックしてWeld-Trc命令編集画面に入ります。 この命令は、ロボットのシームトラッキングにおいて、シームのずれ検出を利用して軌道を補償するもので、アークセンサーを使用してシームのずれを検出できます。 **Step1**:上下補償基準電流設定方法:フィードバック、上下基準電流カウント開始と上下基準電流カウントを設定します。 .. image:: coding/128.png :width: 6in :align: center .. centered:: 図表 9.8-6-1 Weld-Trc命令画面-フィードバック **Step2**:上下補償基準電流設定方法:定数、上下基準電流を設定します。 .. image:: coding/129.png :width: 6in :align: center .. centered:: 図表 9.8-6-2 Weld-Trc命令画面-定数 **Step3**:左右補償パラメータ対話ページ .. image:: coding/130.png :width: 6in :align: center .. centered:: 図表 9.8-6-3 Weld-Trc命令画面-左右補償パラメータ ロボットアークトラッキングシステム構成 ++++++++++++++++++++++++++++++++++++++++++++++ 協働ロボットのアークトラッキング溶接プロセスにおいて、溶接機はリアルタイムの溶接電流信号をPLCにフィードバックし、さらにPLCはUDP通信を介してロボットにフィードバックします。ロボットはリアルタイムでフィードバックされる溶接電流値に基づいて溶接軌道の位置補償を行い、アークトラッキング効果を実現します。上記の溶接機とPLC間の電流信号フィードバックには2つの方法があります。 ①CANopenまたはその他のバス通信:お使いの溶接機がCANopen、EtherCAT、ModbusTCPなどのバス通信プロトコルをサポートしている場合(例:奥太NBC-500RP、Megmeet A2シリーズなど)、PLCと溶接機は関連する通信プロトコルを介して直接データ通信を行うことができ、対応する溶接電流信号は直接通信によってPLCに伝送され、さらにPLCからUDP通信を介してロボットにフィードバックされます。 .. image:: coding/277.png :width: 6in :align: center .. centered:: 図表 9.8-6-4 ロボットアークトラッキングシステム構成トポロジー図(PLCと溶接機のバス通信) .. centered:: a-コンピュータ;b-ロボットおよび制御ボックス;c-PLCおよびバス通信モジュール;d-溶接機 ②IOアナログ量:PLCはアナログ量信号を直接収集し、そのアナログ量信号を一定の変換関係で電流値に変換してロボットにフィードバックすることもできます。お使いの溶接機にリアルタイム溶接電流のアナログ量出力チャンネルがある場合は、そのチャンネルを直接PLCのアナログ量入力モジュールに接続できます。お使いの溶接機にリアルタイム溶接電流のアナログ量出力チャンネルがない場合は、ホール電流センサーを外付けし、センサーがリアルタイムの溶接電流信号を収集し、溶接電流信号をアナログ信号に変換してPLCのアナログ量入力モジュールに出力します。 .. image:: coding/278.png :width: 6in :align: center .. centered:: 図表 9.8-6-5 ロボットアークトラッキングシステム構成トポロジー図(PLCがアナログ量信号を収集) .. centered:: a-コンピュータ;b-ロボットおよび制御ボックス;c-PLCおよびアナログ量入力モジュール;d-溶接機およびホール電流センサー 溶接機型式と設定 **************************************** .. centered:: 表 9.8-1 溶接機型式と設定 .. list-table:: :widths: 70 :header-rows: 0 :align: center * - **現在テスト済みで適合可能な溶接機型式** * - Megmeet ArtsenII CM350溶接機 .. centered:: 表 9.8-2 溶接機機能設定 .. list-table:: :widths: 100 100 :header-rows: 0 :align: center * - **機能番号** - **設定パラメータ** * - F18 - 20 * - F19 - 56 PLC型式と設定 ************************ .. centered:: 表 9.8-3 PLC型式と設定 .. list-table:: :widths: 70 :header-rows: 0 :align: center * - **現在テスト済みで適合可能なPLC型式** * - 汇川 Easy521 .. centered:: 表 9.8-4 PLC主要設定 .. list-table:: :widths: 70 70 :header-rows: 0 :align: center * - **設定項目** - **設定内容** * - 通信プロトコル - CANOPEN * - フィードバック電流サンプリングソース - 溶接機CANOPENフィードバックデータ * - 同期周期 - 2ms :download:`添付:PLCプログラム <../_static/_doc/MEGMEET PLC PROGRAME.zip>` アークトラッキング機能 ************************************* **1)機能画面パラメータ概要** .. image:: coding/279.png :width: 4in :align: center .. centered:: 図表 9.8-7-1 アークトラッキングの典型的なシーン アークトラッキング機能の典型的なシーンには以下が含まれます:a.溶接ワーク(溶接開先は直角または鋭角)、b.溶接トーチ、eは開先中心線。 アークトラッキング機能は、収集した溶接電流情報とロボットが設定したウィービングパラメータを通じて、溶接開先のc.上下(深さ)方向のトラッキングとd.左右(中心)方向のトラッキングを実現できます。 **2)通信設定** WebAppを開き、「初期設定」、「ユーザー周辺機器設定」、「溶接機設定」を順にクリックします。 .. image:: coding/280.png :width: 4in :align: center .. centered:: 図表 9.8-7-2 溶接機設定を開く 制御タイプとして「デジタル通信プロトコル」を選択し、UDP通信パラメータを設定します。各パラメータの意味は以下の通りです。 **IPアドレス**:UDP通信のPLC側のIPアドレス **ポート番号**:PLC側のUDP通信ポート番号 **通信周期**:ロボットとPLCがUDP通信を行う周期、デフォルトは2ms **パケットロス検出周期、パケットロス回数**:パケットロス検出周期内のパケットロス数が設定値を超えると、ロボットは「UDP通信パケットロス異常」エラーを報告し、同時に通信を自動切断します。 **通信中断確認時間**:ロボットがこの時間内に完全な1フレームのPLCフィードバックデータパケットを受信しない場合、「UDP通信中断」エラー警告を報告し、同時にUDP通信を切断します。 **通信中断自動再接続**:ロボットがUDP通信の中断を検出した後、自動的に再接続して回復するかどうか **再接続周期、再接続回数**:UDP通信中断自動再接続を有効にし、UDP通信の中断を検出した後、ロボットは設定された周期で再接続を行います。再接続回数が最大設定値に達しても接続に成功しない場合、ロボットは「UDP通信中断」エラー警告を報告し、同時にUDP通信を切断します。 上記のパラメータの設定が完了したら、「設定」と「ロード」ボタンを順にクリックします。 .. image:: coding/281.png :width: 4in :align: center .. centered:: 図表 9.8-7-3 制御タイプの選択 **3)チャンネル設定** 「初期設定」、「基本」、「I/O設定」、「AI」を順にクリックし、実際の設定に応じて適切な拡張AIチャンネルを選択し、「適用」ボタンをクリックします。 .. note:: ロボットとPLC間のUDP通信プロトコルは「8.5.5 付属一:ロボットUDP通信プロトコル」を参照してください。プロトコルの中でPLCがロボットにフィードバックするデータには、シリアル番号70~73の4つのアナログ入力チャンネルが含まれており、これらは図4-4のAux-AI0~3に対応します。 溶接プロセス中、PLCはリアルタイムの溶接電流信号を収集し、それを0~4095の数値信号に変換して特定のアナログ量入力チャンネルに割り当てます。デフォルトでは「Aux-AI0」です。ロボット側は対応するアナログ量入力チャンネルの値を収集してアークトラッキング操作を行います。 アークトラッキングチャンネルを「Aux-AI1」、「Aux-AI2」または「Aux-AI3」に変更する必要がある場合は、PLC側のプログラムを同時に更新し、収集したリアルタイム溶接電流を対応するアナログ量入力ポートに割り当てる必要があります)。 .. image:: coding/282.png :width: 4in :align: center .. centered:: 図表 9.8-7-4 アークトラッキングチャンネル設定 **4)機能命令の使用概要** アークトラッキング機能は、ウィービング溶接運動に適応できます。ウィービング溶接のアークスタート後にアークトラッキング開始命令を挿入し、ウィービング溶接の消弧前にアークトラッキング終了命令を挿入します。 .. image:: coding/283.png :width: 6in :align: center .. centered:: 図表 9.8-7-5 典型的なアークトラッキングの例プログラム **5)機能画面パラメータ概要** .. centered:: 表 9.8-5 アークトラッキング上下補償モジュール .. list-table:: :widths: 70 70 70 :header-rows: 0 :align: center * - **パラメータ名** - **意味** - **備考** * - アークトラッキング遅延時間 - フィードバック電流の遅れ時間 - デフォルト0ms、調整しないでください * - 上下偏差補償 - 上下補償スイッチ - 「開始」または「終了」を選択可能 * - 上下調整係数 - 電流と補償距離の関係係数(調整感度) - 溶接が短絡移行状態に近づくほど電流SN比が低下するため、感度を下げることをお勧めします * - 上下補償開始時間 - 最速で上下補償を開始する周期 - ウィービング周波数に関連。アークスタート後3~4秒で電流が安定した時点で開始するのが良い。ウィービング周波数が1Hzの場合はパラメータを4、2Hzの場合は8などとする * - 上下毎回最大補償量 - 各上下補償周期の最大補償量 - 溶接シーンに応じて設定。ウィービング周波数が速いほど補償量は小さくする * - 上下合計最大補償量 - 単回の完全な溶接プロセスにおける最大累積補償量 - 溶接シーンに応じて設定。溶接のずれが大きいほどそれに応じて大きく設定する * - 上下座標系選択 - 補償値が補償される座標系 - 溶接ウィービングが存在する場合は「ウィービング」を選択し、それ以外の場合は「ツール」または「ベース」を選択 * - 上下基準電流設定方法 - 基準電流の取得方法の選択 - 「フィードバック」でフィードバック電流を読み取って取得するか、「定数」で電流値を直接記入して取得するかを選択 * - 上下基準電流サンプリングカウント開始 - 基準電流の収集を遅延して開始する周期数 - ウィービング周波数に関連。アークスタート後3~4秒で電流が安定した時点で開始するのが良い。ウィービング周波数が1Hzの場合はパラメータを4、2Hzの場合は8などとする * - 上下基準電流サンプリングカウント - 基準電流フィードバックモードで、基準電流を収集する統計周期 - デフォルト1cyc * - 上下基準電流 - 基準電流定数モードでの基準電流値 - 手動で記入して期待される補償高さを実現可能 .. centered:: 表 9.8-6 アークトラッキング左右補償モジュール .. list-table:: :widths: 70 70 70 :header-rows: 0 :align: center * - **パラメータ名** - **意味** - **パラメータ説明** * - アークトラッキング遅延時間 - フィードバック電流の遅れ時間 - デフォルト0ms、調整しないでください * - 左右偏差補償 - 左右補償スイッチ - 「開始」または「終了」を選択可能 * - 左右調整係数 - 電流と補償距離の関係係数(調整感度) - 溶接が短絡移行状態に近づくほど電流SN比が低下するため、感度を下げることをお勧めします * - 左右補償開始時間 - 最速で左右補償を開始する周期 - ウィービング周波数に関連。アークスタート後3~4秒で電流が安定した時点で開始するのが良い。ウィービング周波数が1Hzの場合はパラメータを4、2Hzの場合は8などとする * - 左右毎回最大補償量 - 各左右補償周期の最大補償量 - 溶接シーンに応じて設定。ウィービング周波数が速いほど補償量は小さくする * - 左右合計最大補償量 - 単回の完全な溶接プロセスにおける最大累積補償量 - 溶接シーンに応じて設定。溶接のずれが大きいほどそれに応じて大きく設定する **6)適用範囲** .. centered:: 表 9.8-7 上下補償開始、左右補償終了 .. list-table:: :widths: 70 70 :header-rows: 0 :align: center * - **主要パラメータ** - **パラメータ範囲** * - ウィービング周波数Hz - 0(溶接ウィービングを使用しない)、0.5 から 2(溶接ウィービングを使用する) * - ウィービング振幅mm - 0(溶接ウィービングを使用しない)、3 から 7(溶接ウィービングを使用する) * - 設定電圧V - >17 * - 設定電流A - >160 .. centered:: 表 9.8-8 上下補償終了、左右補償開始 .. list-table:: :widths: 70 70 :header-rows: 0 :align: center * - **主要パラメータ** - **パラメータ範囲** * - ウィービング周波数Hz - 0.5 から 2 * - ウィービング振幅mm - 3 から 7 * - 設定電圧V - >17 * - 設定電流A - >160 .. centered:: 表 9.8-9 上下、左右補償ともに開始 .. list-table:: :widths: 70 70 :header-rows: 0 :align: center * - **主要パラメータ** - **パラメータ範囲** * - ウィービング周波数Hz - 0.5 から 2 * - ウィービング振幅mm - 3 から 7 * - 設定電圧V - >19 * - 設定電流A - >210 **7)注意事項** 1) 左右補償アークトラッキング機能は、直線軌道に対称な三角波または正弦波ウィービングを組み合わせた場合にのみ適応します。 2) 補償機能を使用する際、溶接開始位置は必ず正確に溶接シームの上方(溶接トーチの軸線が隅肉溶接の中心にある)に位置する必要があり、溶接トーチがシームに近づきすぎないようにしてください。そうしないとトーチがワークに衝突する危険があります。 3) ワークの開先両側の材料は同一である必要があります。 4) ワーク座標の寸法と姿勢は、6点法で正確にキャリブレーションする必要があります。 5) 設定軌道と溶接シームのずれが大きいほど、毎回の最大補償量と合計最大補償量もそれに応じて大きくする必要があります。 6) 設定軌道と溶接シームの終了点のずれは100mm/m以内にしてください。ずれが大きすぎると、溶接ワイヤや溶接トーチがワークに衝突し、溶接位置が設定軌道から外れる(ウィービングが適切に行われない)可能性があり、アークトラッキング機能が正常に機能しなくなります。 7) より低い設定電流・電圧で溶接を行う場合は、アークトラッキングの上下・左右調整係数をそれに応じて小さくし、フィードバック電流のノイズによる不安定な補償を減らす必要があります。 8) アークトラッキングを行うために異なる座標系を選択する場合、上下と左右の補償係数の符号を調整する必要がある場合があります。対応する座標系の方向で判断するだけでなく、試し溶接によって判断することもできます。傾斜したプレートでウィービング溶接軌道(左図)をティーチングした後、アークトラッキングを有効にして溶接した軌道(右図)がウィービング平面の傾斜勾配の下降方向に沿って移動し、同時に終了時のトーチ高さが開始時とほぼ同じであれば、調整係数の符号は正しいです。 .. image:: coding/284.png :width: 6in :align: center .. centered:: 図表 9.8-7-6 傾斜ウィービング軌道の設定(左)、符号が正しい場合の溶接軌道(右) 姿勢調整命令 ++++++++++++++++ 「姿勢調整」アイコンをクリックしてAdjust命令編集画面に入ります。 この命令は、溶接トラッキングでトーチの姿勢を適応的に調整するシーンを対象としており、3つの対応する姿勢点を記録した後、ロボットの実際の運動方向に応じて姿勢適応調整命令を追加します。詳細はロボット周辺機器の章を参照してください。 .. image:: coding/134.png :width: 6in :align: center .. centered:: 図表 9.8-8 Adjust命令画面 力制御命令画面 ~~~~~~~~~~~~~~~~~~~~~~~~~~ .. image:: coding/135.png :width: 6in :align: center .. centered:: 図表 9.9 力制御命令画面 力制御セット命令 ++++++++++++++++ 「力制御セット」アイコンをクリックしてF/T命令編集画面に入ります。 この命令には、FT_Guard(衝突検出)、FT_Control(恒力制御)、FT_Compliance(コンプライアンス制御)、FT_Spiral(螺旋挿入)、FT_Rot(回転挿入)、FT_Lin(直線挿入)、FT_FindSurface(表面位置決め)、FT_CalCenter(中心位置決め)の8つの命令が含まれます。詳細はロボット周辺機器の章を参照してください。 .. image:: coding/136.png :width: 6in :align: center .. centered:: 図表 9.9-1 F/T命令画面 トルク記録命令 ++++++++++++++++ 「トルク記録」アイコンをクリックしてTorque命令編集画面に入ります。 この命令はトルク記録命令であり、トルクをリアルタイムで記録する衝突検出機能を実現します。「トルク記録開始」ボタンをクリックすると、運動命令の実行中に発生する衝突状況を継続的に記録します。記録されたリアルタイムトルクは、衝突検出判断の理論値として使用され、誤警報の確率を減らします。設定された閾値範囲を超えた場合、衝突検出の継続時間を記録します。「トルク記録停止」ボタンをクリックすると、記録を停止します。「トルク記録リセット」をクリックすると、状態がデフォルト状態に戻ります。 .. image:: coding/137.png :width: 6in :align: center .. centered:: 図表 9.9-2 Torque命令画面 ビジョン命令画面 ~~~~~~~~~~~~~~~~~~~~~~~~~~ .. image:: coding/138.png :width: 6in :align: center .. centered:: 図表 9.10 ビジョン命令画面 3Dビジョン命令 ++++++++++++++++ 「3Dビジョン」アイコンをクリックして3D命令編集画面に入ります。 この命令は3Dビジョンプログラムの例を生成する命令であり、ユーザーは生成されたプログラムを参考にして、他のビジョンデバイスとの通信作業を行うことができます。これには、カメラキャリブレーションとカメラグラスピングの2つのプログラム例が含まれます。 .. image:: coding/139.png :width: 6in :align: center .. centered:: 図表 9.10-1 3D命令画面 パレタイジング命令画面 ~~~~~~~~~~~~~~~~~~~~~~~~~~ .. image:: coding/140.png :width: 6in :align: center .. centered:: 図表 9.11 パレタイジング命令画面 マトリクス移動命令 ++++++++++++++++++++++ 「マトリクス移動」アイコンをクリックしてPallet命令編集画面に入ります。 この命令はパレタイジングプログラムを生成する命令です。 .. image:: coding/141.png :width: 6in :align: center .. centered:: 図表 9.11-1 Pallet命令画面 この機能は、3点の座標と行・列・層の数、および層の高さなどの数値を設定することで、ロボットアームを規則的に移動させるもので、一般的なパレタイジング用途に適しています。最初のステップでは、ロボットの運動方式「PTP」または「Line」を選択します。2番目のステップでは、ロボットの運動経路「ヘッドトゥテイル方式」または「弓形方式」を選択します。3番目のステップでは、積み重ね方式「スタッキング」または「デスタッキング」を選択します。 .. image:: coding/142.png :width: 6in :align: center .. centered:: 図表 9.11‑2 マトリクス移動 4番目のステップでは、経路に従って3点をティーチングします。第1点は最初の列の開始点で、アームの姿勢はこの点によって決まります。第2点は最初の列の終了点、第3点は最後の列の終了点です。5番目のステップでは、行数と列数を設定します。6番目のステップでは、層数と各層の高さを設定します。 .. image:: coding/143.png :width: 6in :align: center .. centered:: 図表 9.11‑3 マトリクス移動 通信命令画面 ~~~~~~~~~~~~~ .. image:: coding/144.png :width: 6in :align: center .. centered:: 図表 9.12 通信命令画面 Modbus命令 ++++++++++++++++ 「Mobus」アイコンをクリックしてModbus命令編集画面に入ります。 この命令の機能は、ModbusTCPプロトコルに基づくバス機能です。ユーザーは関連する命令を使って、ロボットとModbusTCPクライアントまたはサーバー間の通信(マスタとスレーブ間の通信)を制御し、コイル、ディスクリート量、レジスタの読み書き操作を行うことができます。 .. image:: coding/145.png :width: 6in :align: center .. centered:: 図表 9.12-1 modbus命令マスタ画面 .. image:: coding/146.png :width: 6in :align: center .. centered:: 図表 9.12-2 modbus命令スレーブ画面 ModbusTCPのさらなる操作機能については、お問い合わせください。 Xmlrpc命令 ++++++++++++++++ 「Xmlroc」アイコンをクリックしてXmlrpc命令編集画面に入ります。 XML-RPCは、socketsを使用してプログラム間でXMLを介してデータを転送するリモートプロシージャコールの方法です。この方法により、ロボットコントローラはリモートのプログラム/サービスで関数(パラメータ付き)を呼び出し、返された構造化データを取得できます。ロボットコントローラは、XML-RPCクライアントメッセージの作成と、データ型とXML間の変換の詳細を処理する役割を担います。 .. image:: coding/147.png :width: 6in :align: center .. centered:: 図表 9.12-3 Xmlrpc命令画面 .. important:: 1) コントローラはクライアントとしてリモートのカスタムポートに接続します。 2) コントローラはクライアントとしてリモート側の機能関数を呼び出します。 3) リモート側の異なる機能関数の呼び出しをサポートします。 4) 文字列配列パラメータの受け渡しと文字列配列結果の返却をサポートします。配列の要素数はカスタマイズ可能です。 double型配列パラメータの受け渡しとdouble型配列結果の返却をサポートします。配列の要素数はカスタマイズ可能です。 :: XmlrpcClientCall(serverUrl,methodName,tableType,param) serverUrl サーバーURL、例:"http://192.168.58.29:50000/RPC2" methodName 呼び出し関数名、"example.add" tableType 1-double型配列、2-string型配列 param 呼び出し関数のパラメータ :: XmlrpcClientCall(error, result) error 0-エラーなし、1-エラー result パラメータがdouble型配列の場合、resultはdouble型配列。 パラメータがstring型配列の場合、resultはstring型配列。 補助命令画面 ~~~~~~~~~~~~~ .. image:: coding/148.png :width: 6in :align: center .. centered:: 図表 9.13 補助命令画面 補助スレッド命令 ++++++++++++++++ 「補助スレッド」アイコンをクリックしてThread命令編集画面に入ります。 Thread命令は補助スレッド機能です。ユーザーはメインスレッドと同時に実行される補助スレッドを定義できます。補助スレッドは主に外部デバイスとのデータ連携を行い、socket通信、ロボットDI状態の取得、ロボットDO状態の設定、ロボット状態情報の取得、メインスレッドとのデータ連携をサポートします。メインスレッドは補助スレッドが取得したデータをロボットの運動ロジックの判断に使用します。ユーザープログラムのスクリーンショット例: .. image:: coding/149.png :width: 6in :align: center .. centered:: 図表 9.13-1 Threadプログラム例 関数呼び出し命令 ++++++++++++++++ 「関数呼び出し」アイコンをクリックしてFunction命令編集画面に入ります。 この命令は関数呼び出しインターフェース機能であり、ロボットのインターフェース関数を顧客に選択できるように提供し、その関数に必要なパラメータを顧客に提示することで、顧客がスクリプト命令を作成しやすくします。さらなる関数は順次追加されます。 .. image:: coding/150.png :width: 6in :align: center .. centered:: 図表 9.13-2 Function命令画面 ポイントテーブル命令 ++++++++++++++++++++++++++++ 「ポイントテーブル」アイコンをクリックしてPT-Mode命令編集画面に入ります。 この命令は主にシステムモードとポイントテーブルモード間のモード切替に使用され、ポイントテーブルを切り替えることで、異なるポイントテーブル内のティーチングポイントを適用します。詳細は第11章「ティーチングポイント」を参照してください。 .. image:: coding/151.png :width: 6in :align: center .. centered:: 図表 9.13-3 ポイントテーブル命令画面 ティーチングプログラムの未保存検証 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ プログラムティーチングページで、プログラムを開く/新規作成した後、ティーチングプログラムに変更が加えられて未保存の場合。 「開く」、「新規作成」、「エクスポート」、「名前変更」などの関連ファイル操作をクリックすると、「このプログラムを保存しますか?」というポップアップボックスが表示され、「現在のプログラムが変更されています。このプログラムの変更を保存しますか?」というメッセージが表示されます。下図の通りです。 .. image:: coding/152.png :width: 6in :align: center .. centered:: 図表 9.14-1 現在のページのプログラム未保存検証 **Step1**:「保存しない」ボタンをクリックすると、プログラムは変更前のデータに戻り、以前の関連ファイル操作を続行します。 **Step2**:「保存」ボタンをクリックすると、未保存のluaプログラムが正常に保存され、以前の関連ファイル操作を続行します。 プログラムティーチングページから離れて他のページに切り替える場合も、同様に「このプログラムを保存しますか?」というメッセージが表示され、現在のティーチングプログラムページに留まります。下図の通りです。 .. image:: coding/153.png :width: 6in :align: center .. centered:: 図表 9.14-2 ページ切り替え時のプログラム未保存検証 **Step1**:「保存しない」ボタンをクリックすると、以前選択したページにジャンプします。 **Step2**:「保存」ボタンをクリックすると、未保存のluaプログラムが正常に保存され、以前選択したページにジャンプします。 ティーチングプログラムの暗号化 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ティーチングプログラムは、暗号化された状態とされていない状態に分けられます。暗号化レベルは、レベル1暗号化とレベル2暗号化に分けられ、レベル1暗号化が最も保護レベルが高く、レベル2がそれに次ぎます。 すべてのティーチングプログラムは、「システム設定--カスタム情報」でテーブル形式でプログラムの暗号化情報を表示・設定します。テーブルの右側には暗号化レベルの説明が付いています。 .. image:: coding/154.png :width: 6in :align: center .. centered:: 図表 9.15-1 ティーチングプログラムの暗号化 プログラムがレベル1暗号化状態の場合、そのプログラムを開くと: 操作バーの対応する「エクスポート」、「保存」、「名前を付けて保存」、「コピー」、「切り取り」、「貼り付け」、「削除」、「上に移動」、「下に移動」、「編集モード切り替え」などのボタンアイコンがすべてグレーアウトし、アイコンをクリックしても無効で、現在のプログラムが暗号化状態であることを示すメッセージが表示されます。 プログラムの「名前変更」アイコンは非表示になります。 コマンド追加バーとプログラム編集エリアはどちらも非表示になり、レベル1暗号化でロックされていることを示すメッセージが表示されます。 .. image:: coding/155.png :width: 6in :align: center .. centered:: 図表 9.15-2 プログラムのレベル1暗号化画面 プログラムがレベル2暗号化の場合、「プログラムティーチング」ページでそのプログラムを開くと: 操作バーの対応する「保存」、「コピー」、「切り取り」、「貼り付け」、「削除」、「上に移動」、「下に移動」などのボタンアイコンがすべてグレーアウトします。アイコンをクリックしても無効で、現在のプログラムが暗号化状態であることを示すメッセージが表示されます。 プログラムの「名前変更」アイコンは非表示になります。 コマンド追加バーは非表示になり、レベル2暗号化でロックされていることを示すメッセージが表示されます。 プログラム編集エリアは通常通りプログラムを閲覧できます。 .. image:: coding/156.png :width: 6in :align: center .. centered:: 図表 9.15-3 プログラムのレベル2暗号化画面 レベル1暗号化とレベル2暗号化の両方で「エクスポート」機能を使用できます。インポート時に検証が行われ、同じ名前のプログラムが暗号化ファイルとして存在する場合、インポート操作が中断され、暗号化されたプログラムを上書きできないことを示すメッセージが表示されます。 .. image:: coding/157.png :width: 3in :align: center .. centered:: 図表 9.15-4 プログラムのインポート ローカルティーチングポイント ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ローカルティーチングポイントは、現在のティーチングプログラムにバインドされます。プログラムコマンドを追加する際、現在のティーチングプログラムにのみ適用され、他のティーチングプログラムには使用できません。 **新規追加**:プログラムファイル名の右端にある「新規ローカルティーチングポイント追加」アイコンをクリックして、ローカルティーチングポイントを追加します。(ローカルティーチングポイントの詳細な記録については、ロボット操作の「ティーチングポイント記録」を参照してください) .. image:: coding/158.png :width: 6in :align: center .. centered:: 図表 9.16-1 ローカルティーチングポイントの新規追加 **削除**:テーブルのシリアル番号欄で削除したいローカルティーチングポイントを選択した後、ローカルティーチングポイントタイトルの右上にある「削除」アイコンをクリックして、ローカルティーチングポイントを削除します。 .. image:: coding/159.png :width: 6in :align: center .. centered:: 図表 9.16-2 ローカルティーチングポイントの削除 **実行**:ローカルティーチングポイントテーブルデータの操作欄にある「実行開始」アイコンをクリックして、ローカルティーチングポイントを単点実行し、ロボットをその点の位置に移動させます。 .. image:: coding/160.png :width: 6in :align: center .. centered:: 図表 9.16-3 ローカルティーチングポイントの実行 **詳細**:ローカルティーチングポイントテーブルデータの操作欄にある「詳細」アイコンをクリックして、ローカルティーチングポイントの詳細を確認します。 .. image:: coding/161.png :width: 3in :align: center .. centered:: 図表 9.16-4 ローカルティーチングポイントの詳細 現在のプログラムのバックアップ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ユーザーがティーチングプログラムを変更して保存をクリックすると、現在のプログラムの「バックアップ」機能がトリガーされ(バックアップ期間は1年間)、現在のプログラムの初期内容が保存され、右側に表示されてユーザーが変更内容を比較しやすくなります。 ユーザーは日付を選択して対応するプログラムのバックアップ内容を表示でき、右上の「削除」アイコンをクリックして現在のプログラムのバックアップ内容を削除できます。現在のプログラムのバックアップ内容は表示のみ可能で、変更はできません。 .. image:: coding/162.png :width: 6in :align: center .. centered:: 図表 9.17 現在のプログラムのバックアップ Modbus TCP通信 ~~~~~~~~~~~~~~~~~ ModbusTCPは産業分野で一般的に使用される通信プロトコルです。FAIRINO協働ロボットは、ModbusTCPマスタとModbusTCPスレーブの2つの方法でお客様のデバイスとの通信を提供します。 協働ロボットは最大8つのModbusTCPマスタを同時に外部デバイスと通信させることができ、各マスタは最大128のレジスタをサポートします。協働ロボットのModbusTCPスレーブは、128のコイル、128のディスクリート入力、64の保持レジスタ、64の入力レジスタを備えています(保持レジスタと入力レジスタのデータ型は符号なし、符号付き、浮動小数点の3種類)。また、協働ロボットの一部のModbusTCPスレーブ入力レジスタアドレスは、現在のロボットの関節位置、運動速度などの情報をフィードバックするために専用されており、一部のコイルレジスタアドレスは、ロボットのプログラム起動、プログラム停止、制御箱DOの設定などの機能を制御するために専用されています。 ロボットのModbusTCPスレーブは、1つのマスタとの接続のみをサポートします。ロボットはマスタとスレーブの両方として同時に異なるデバイスと通信できます。以下に詳細な使用方法を示します。 ModbusTCPマスタ +++++++++++++++++ 協働ロボットをModbusTCPマスタとして使用し、お客様のデバイスと通信する前に、まずお客様のデバイスとロボットのネットワーク接続を確認し、ネットワークインターフェースが同じネットワークセグメントにあることを確認してください。 ロボットのModbusTCPマスタを使用するには、次の手順があります。 - マスタの追加 - レジスタの追加 - 通信テスト - ユーザープログラムの作成 - ユーザープログラムの実行 ModbusTCPマスタの追加 ****************************** WebAppを開き、「ティーチングシミュレーション」、「プログラムティーチング」を順にクリックし、新しいユーザープログラム「testModbusMaster.lua」を作成します。 .. image:: coding/163.png :width: 6in :align: center .. centered:: 図表 9.18-1 ModbusTCPマスタのユーザープログラム作成 「ModbusTCP設定」ボタンをクリックして、ModbusTCP機能設定ページを開きます。 .. image:: coding/164.png :width: 6in :align: center .. centered:: 図表 9.18-2 ModbusTCP設定を開く 「マスタ設定」、「Modbusマスタの追加」を順にクリックすると、ModbusTCPマスタの追加が完了します。 .. image:: coding/165.png :width: 6in :align: center .. centered:: 図表 9.18-3 「ModbusTCPマスタ」の追加 お客様のデバイスの状況に応じて、「名前」、「スレーブIP」、「ポート番号」、「スレーブ番号」、「通信周期」を順に入力します。上記のパラメータの具体的な意味は以下の通りです。 **名前**:ロボットのModbusTCPマスタ名。ロボットは最大8つのマスタを作成して対応するスレーブとの接続を確立できます。異なるマスタには一意の名前を設定して区別できます。例:「PLC」、「カメラ」、「データ収集カード」、「FRRobot1」など。 **スレーブIP**:ロボットのModbusTCPマスタが接続するスレーブのIPアドレス。 .. note:: まずネットワークケーブルでロボットとスレーブデバイスを接続し、ロボットとスレーブデバイスのIPアドレスが同じネットワークセグメントにあることを確認する必要があります。 **ポート番号**:接続するModbusTCPスレーブのポート番号。 **スレーブ番号**:接続するModbusTCPスレーブの番号。 **通信周期**:ロボットのModbusTCPマスタがスレーブの状態をクエリする周期(ms)。この周期は「ModbusTCP設定」ページでのスレーブレジスタデータの表示更新速度にのみ影響し、ユーザーのluaプログラムでのModbusTCPスレーブレジスタの読み取りまたは書き込み速度には影響しません。 .. image:: coding/166.png :width: 6in :align: center .. centered:: 図表 9.18-4 ModbusTCPマスタパラメータの設定 上記のパラメータを正しく入力すると、ロボットのModbusTCPマスタは自動的に設定されたスレーブとの接続を確立します。接続が成功すると、ページ上の「接続状態」インジケータが点灯します。 .. note:: ModbusTCPマスタの関連パラメータを正しく設定したことを確認しても、ロボットがお客様のデバイスと接続できない場合は、以下の設定を確認してください。 ①ロボットとスレーブデバイスの物理的なネットワーク接続。 ②ロボットのティーチングペンダントと制御ボックスの2つのネットワーク物理ポートのIPアドレスが異なるため、正しいネットワークポートに接続しているか確認してください。 ③ロボットのネットワークポートとスレーブデバイスのネットワークポートが同じネットワークセグメントにあるか確認してください。例えば、ロボットのIPアドレスが192.168.58.2の場合、スレーブデバイスのIPアドレスは192.168.58.0~192.168.58.255の範囲内で、ロボットのIPアドレスと同じであってはなりません。 ④スレーブデバイスのポート番号と設定されたポート番号が同じか確認してください。接続状態インジケータが点滅している場合は、そのマスタ内のレジスタアドレスに誤りがあることを示します。レジスタタイプとアドレスが正しいか確認してください。 .. image:: coding/167.png :width: 6in :align: center .. centered:: 図表 9.18-5 ModbusTCPマスタの接続状態 これでロボットのModbusTCPマスタの作成が完了しました。「Modbusマスタの追加」を再度クリックすると、新しいModbusTCPマスタを再度作成できます。ロボットは最大8つのマスタを同時に外部デバイスと通信できます。Modbusマスタの右上にある「削除」ボタンをダブルクリックすると、そのModbusマスタを削除できます。 .. image:: coding/168.png :width: 6in :align: center .. centered:: 図表 9.18-6 ModbusTCPマスタの再追加 ModbusTCPマスタへのレジスタ追加 ************************************ 「マスタレジスタの追加」ボタンをクリックすると、そのマスタにレジスタを追加できます。 .. image:: coding/169.png :width: 6in :align: center .. centered:: 図表 9.18-7 ModbusTCPマスタレジスタの追加 マスタのレジスタタイプ、アドレス番号、名前を順に選択します。各パラメータの意味は以下の通りです。 **タイプ**:レジスタタイプ。DI-ディスクリート入力;DO-コイル;AI符号なし-符号なし入力レジスタ(0-65535);AI符号付き-符号付き入力レジスタ(-32768-32767);AI浮動小数点-浮動小数点数入力レジスタ(浮動小数点レジスタのデータ長は32ビットで、2つの符号付きまたは符号なしレジスタを占有);AO符号なし-符号なし保持レジスタ(0-65535);AO符号付き-符号付き保持レジスタ(-32768-32767);AO浮動小数点-浮動小数点数保持レジスタ(浮動小数点レジスタのデータ長は32ビットで、2つの符号付きまたは符号なしレジスタを占有)。AI、AOの浮動小数点レジスタはビッグエンディアン表示です。 **アドレス番号**:読み取りまたは書き込みを行うModbusTCPスレーブのレジスタアドレス。 **名前**:レジスタの別名。ロボットのModbusTCPマスタは最大128の異なるレジスタを設定でき、各レジスタには実際の意味に応じて異なる名前を設定して区別できます。例:「開始」、「サーボアライメント」、「液位」など。 .. image:: coding/170.png :width: 6in :align: center .. centered:: 図表 9.18-8 ModbusTCPマスタレジスタパラメータの設定 「マスタレジスタの追加」ボタンを再度クリックすると、さらにマスタレジスタを追加できます。レジスタの右側にある「削除」ボタンをダブルクリックすると、そのレジスタを削除できます。下図は各タイプのレジスタを1つずつ追加した例です。 .. note:: マスタレジスタを追加した後、マスタの接続状態インジケータが点滅する場合は、そのマスタのレジスタアドレスを読み取れないことを示します。レジスタタイプとアドレスが正しいか確認してください。 .. image:: coding/171.png :width: 6in :align: center .. centered:: 図表 9.18-9 複数のマスタレジスタの追加 ModbusTCPマスタの通信テスト ******************************** 通信テストの前に、ModbusTCPマスタの「接続状態」インジケータが常時点灯しているか確認してください。インジケータが常時点灯している場合は、現在の接続が成功していることを示します。 ロボットのModbusマスタレジスタには、「アドレス値」という数値ボックスがあり、現在のレジスタの値を表示します。ここで、DI(ディスクリート入力)およびAI(入力レジスタ)タイプのレジスタは読み取り専用タイプであり、対応するアドレス値は灰色の編集不可能な数値ボックスです。 スレーブの対応するアドレスの値が変化すると、ロボットマスタの対応するレジスタアドレス値も同時に現在の数値を表示します。一方、DO(コイル)およびAO(保持レジスタ)は読み取り・書き込み可能なレジスタであるため、そのアドレスは白色の編集可能な数値ボックスであり、ModbusTCPスレーブの対応するレジスタの値を読み取ることも、ロボットのModbusマスタ設定ページでこのレジスタの値を変更することもできます。 .. image:: coding/172.png :width: 6in :align: center .. centered:: 図表 9.18-10 Modbusマスタのアドレス値 1. マスタのDI、AIタイプレジスタの値の監視 外部のModbusTCPスレーブデバイスで、DI(ディスクリート入力)レジスタの255番アドレスの値を1に設定し、AI(入力レジスタ)の257番アドレスの値を123に、258番レジスタアドレスの値を-123に、259番レジスタアドレスの値を123.3に変更します。このとき、ロボットのModbusマスタ設定ページの対応するレジスタのアドレス値がそれに応じて表示されます。 .. note:: アドレス259のレジスタは浮動小数点レジスタとして設定されているため、実際には1つの浮動小数点数を保存するために259と260の2つの16ビットレジスタを占有します。したがって、AIの260番レジスタを操作するために別途レジスタを設定することはできません。そうすると数値エラーが発生します。 .. image:: coding/173.png :width: 6in :align: center .. centered:: 図表 9.18-11 ModbusマスタによるDI、AIレジスタ値の表示 2. マスタのDO、AOタイプレジスタへの値の書き込み ロボットのModbusマスタ設定ページで、「開始」という名前のDO(コイル)タイプレジスタの255番アドレス値の入力ボックスに1を入力し、「目標位置A」、「目標位置B」、「目標位置C」という名前のAO(保持レジスタ)の260、261、262番レジスタアドレス値の入力ボックスにそれぞれ65535、-32768、128.78を入力します。このとき、Modbusスレーブの対応するレジスタアドレスにそれぞれの値が書き込まれます。 .. image:: coding/174.png :width: 6in :align: center .. centered:: 図表 9.18-12 ModbusマスタによるDO、AOレジスタへの書き込み 3. マスタのDO、AOタイプレジスタの値の監視 ModbusTCPスレーブでDO(コイル)、AO(保持レジスタ)の値を変更しても、ModbusTCPマスタ設定ページのレジスタアドレス値はすぐには更新されません。マスタ設定の右上にある「更新」ボタンをクリックすると、ページ上のDO、AOレジスタアドレス値が更新されます。 .. image:: coding/175.png :width: 6in :align: center .. centered:: 図表 9.18-13 ModbusTCPマスタのDO、AOアドレス値の更新 ModbusTCPマスタプログラムの作成 ++++++++++++++++++++++++++++++++++++++++ 「すべて」、「通信命令」を順にクリックし、通信命令追加ページを開きます。 .. image:: coding/176.png :width: 6in :align: center .. centered:: 図表 9.18-14 通信命令追加ページを開く 「Modbus」をクリックします。 .. image:: coding/177.png :width: 6in :align: center .. centered:: 図表 9.18-15 Modbusを選択 「Modbus_TCP」をクリックします。 .. image:: coding/178.png :width: 6in :align: center .. centered:: 図表 9.18-16 Modbus_TCPを選択 「マスタ(クライアント)」を選択し、ModbusTCPマスタ命令追加ページを開きます。 .. image:: coding/179.png :width: 6in :align: center .. centered:: 図表 9.18-17 ModbusTCPマスタ命令の追加 1. 単一デジタル出力DO(コイル)の書き込み 「Modbusマスタ名」として、以前Modbusマスタ設定ページで追加したマスタ「PLC」を選択し、DO名を「開始」、レジスタ数を1、レジスタ値を1とし、「デジタル出力を書き込む」をクリックします。最後にこのページの一番下までスクロールし、「適用」ボタンをクリックします。 .. image:: coding/180.png :width: 6in :align: center .. centered:: 図表 9.18-18 単一デジタル出力の書き込みを追加 これでロボットプログラム「testModbusMaster.lua」に、ロボットのModbusマスタが単一デジタル出力を書き込む命令が1つ追加されました。ロボットを自動モードに切り替え、起動ボタンをクリックすると、ロボットはマスタ「PLC」に対応するコイルレジスタ「開始」のアドレス値を1に書き込みます。 .. image:: coding/181.png :width: 6in :align: center .. centered:: 図表 9.18-19 単一コイル書き込みのLUAプログラム 2. 複数デジタル出力DO(コイル)の書き込み ModbusTCPマスタ命令追加ページを開き、「Modbusマスタ名」として以前Modbusマスタ設定ページで追加したマスタ「PLC」を選択し、DO名を「開始」、レジスタ数を5、レジスタ値を1,0,1,0,1とします。ここで、レジスタ値の個数は設定したレジスタ数と対応し、複数のレジスタ値はカンマで区切ります。「デジタル出力を書き込む」をクリックします。最後にこのページの一番下までスクロールし、「適用」ボタンをクリックします。 .. image:: coding/182.png :width: 6in :align: center .. centered:: 図表 9.18-20 複数デジタル出力の書き込みを設定 これでロボットプログラム「testModbusMaster.lua」に、ロボットのModbusマスタが複数デジタル出力を書き込む命令が1つ追加されました。ロボットを自動モードに切り替え、起動ボタンをクリックすると、ロボットはマスタ「PLC」に対応するコイルレジスタ「開始」とその後の4つのコイルの値をそれぞれ1、0、1、0、1に書き込みます。 .. image:: coding/183.png :width: 6in :align: center .. centered:: 図表 9.18-21 複数コイル書き込みのLUAプログラム 3. 単一デジタル出力DO(コイル)の読み取り ModbusTCPマスタ命令追加ページを開き、「Modbusマスタ名」として以前Modbusマスタ設定ページで追加したマスタ「PLC」を選択し、DO名を「開始」、レジスタ数を1とし、レジスタ値は記入不要で、「デジタル出力を読み取る」をクリックします。最後にこのページの一番下までスクロールし、「適用」ボタンをクリックします。 .. image:: coding/184.png :width: 6in :align: center .. centered:: 図表 9.18-22 単一デジタル出力の読み取りを設定 これでロボットプログラム「testModbusMaster.lua」に、ロボットのModbusマスタが単一デジタル出力を読み取る命令が1つ追加されました。 .. image:: coding/185.png :width: 6in :align: center .. centered:: 図表 9.18-23 単一コイル読み取りのプログラム 通常、Modbusレジスタを読み取った後は、読み取った値を変数に格納するため、読み取った値を格納する変数を定義する必要があります。「モード切り替え」ボタンをクリックして、ロボットのluaプログラムを編集可能な状態に切り替え、「ModbusMasterReadDO」命令の前に戻り値の変数「startValue」を記述して追加します。プログラムを実行すると、読み取った値は「startValue」に格納されます。 .. image:: coding/186.png :width: 6in :align: center .. centered:: 図表 9.18-24 単一デジタル出力の読み取りを変数に格納 コイルタイプのレジスタ値は0と1の2種類のみです。ロボットプログラムでは、レジスタの値が異なることで異なる操作を行うように判断できます。「モード切り替え」ボタンをクリックしてロボットのティーチングプログラムを編集不可モードに切り替え、2つの関節運動命令を追加して、それぞれ「P1」と「P2」という異なる点に移動させます。 .. image:: coding/187.png :width: 6in :align: center .. centered:: 図表 9.18-25 異なる点への運動命令の追加 再度プログラムを編集可能モードに切り替え、コイル値「startValue」の判断条件を記述します。「startValue」の値が1の場合はロボットを「P1」点に移動させ、そうでない場合は「P2」点に移動させます。 .. image:: coding/188.png :width: 6in :align: center .. centered:: 図表 9.18-26 コイル値によって異なる点に移動 最後にロボットプログラムを再び編集不可モードに切り替え、ロボットを自動モードに切り替え、安全を確認した上でプログラムを起動します。このプログラムの最初の2行は「開始」という名前のコイルDO値を1に設定しているため、プログラムを実行するとロボットは「P1」点に移動します。 .. image:: coding/189.png :width: 6in :align: center .. centered:: 図表 9.18-27 単一コイルレジスタ値を読み取って運動 4. 複数デジタルDO(コイル)の読み取り ModbusTCPマスタ命令追加ページを開き、「Modbusマスタ名」として以前Modbusマスタ設定ページで追加したマスタ「PLC」を選択し、DO名を「開始」、レジスタ数を6とし、レジスタ値は記入不要で、「デジタル出力を読み取る」をクリックします。最後にこのページの一番下までスクロールし、「適用」ボタンをクリックします。 .. image:: coding/190.png :width: 6in :align: center .. centered:: 図表 9.18-28 複数デジタル出力の読み取りを設定 これでロボットプログラム「testModbusMaster.lua」に、ロボットのModbusマスタが複数デジタル出力を読み取る命令が1つ追加されました。 .. image:: coding/191.png :width: 6in :align: center .. centered:: 図表 9.18-29 複数デジタル出力読み取りプログラム 「モード切り替え」ボタンをクリックして、ロボットのluaプログラムを編集可能な状態に切り替えます。読み取る数は6個なので、「ModbusMasterReadDO」命令の前に6つの戻り値の変数「value1,value2,value3,value4,value5,value6」を記述して追加します。プログラムを実行すると、読み取った6つのレジスタ値はそれぞれ上記の6つの変数に格納されます。同様に「value1」~「value6」の値を判断してロボットに異なる動作をさせることができます。 .. image:: coding/192.png :width: 6in :align: center .. centered:: 図表 9.18-30 複数デジタル出力の読み取りを変数に格納 5. デジタル入力DI(ディスクリート入力)の読み取り ModbusTCPマスタ命令追加ページを開き、「Modbusマスタ名」として以前Modbusマスタ設定ページで追加したマスタ「PLC」を選択し、DI名を「サーボアライメント」、レジスタ数を2とし、「デジタル入力を読み取る」をクリックします。最後にこのページの一番下までスクロールし、「適用」ボタンをクリックします。 .. image:: coding/193.png :width: 6in :align: center .. centered:: 図表 9.18-31 デジタル入力の読み取りを設定 これでロボットプログラム「testModbusMaster.lua」に、ロボットのModbusマスタがデジタル入力を読み取る命令が1つ追加されました。 .. image:: coding/194.png :width: 6in :align: center .. centered:: 図表 9.18-32 デジタル入力読み取りプログラム命令 「モード切り替え」ボタンをクリックして、ロボットのluaプログラムを編集可能な状態に切り替え、「ModbusMasterReadDO」命令の前に戻り値の変数「state1,state2」を記述します。プログラムを実行すると、読み取った2つのデジタル入力値はそれぞれ変数「state1」と「state2」に格納されます。変数の値を判断することで、ロボットに異なる操作をさせることができます。 .. image:: coding/195.png :width: 6in :align: center .. centered:: 図表 9.18-33 デジタル入力の読み取りを変数に格納 6. アナログ入力AI(入力レジスタ)とアナログ出力AO(保持レジスタ)の読み書き操作 アナログ入力AI(入力レジスタ)およびアナログ出力AO(保持レジスタ)の読み書き操作は、デジタル入力DI(ディスクリート入力)およびデジタル出力DO(コイル)の操作と基本的に同じですが、後者のデータ範囲が0または1のみに限られるのに対し、前者のデータ範囲はより広いという違いがあります。したがって、具体的な操作はデジタル入力およびデジタル出力プログラムの作成を参考にしてください。ここでは、アナログ入力AIの読み取り操作とアナログ出力AOの読み書き操作のプログラム例のみを示します。 .. image:: coding/196.png :width: 6in :align: center .. centered:: 図表 9.18-34 アナログ入力AIの読み取り .. image:: coding/197.png :width: 6in :align: center .. centered:: 図表 9.18-35 アナログ出力AOの読み書き 7. デジタル入力の待機 ModbusTCPマスタ命令追加ページを開き、「デジタル入力待機設定」、つまりDIディスクリート入力待機設定を見つけ、DI名として設定済みの「サーボアライメント」レジスタを選択し、待機状態を「True」、タイムアウト時間を5000msに設定します。「追加」ボタンをクリックし、最後に「適用」ボタンをクリックします。 .. image:: coding/198.png :width: 6in :align: center .. centered:: 図表 9.18-36 デジタル入力待機命令の追加 これでロボットプログラム「testModbusMaster.lua」に、ロボットのModbusマスタがデジタル入力DIを待機する命令が1つ追加されました。プログラムを起動すると、ロボットは「PLC」マスタの「サーボアライメント」レジスタ値がtrue、つまり数値1になるまで待機し続けます。設定されたタイムアウト時間は5秒のため、ロボットが5秒待機しても「サーボアライメント」信号が0のままの場合、ロボットプログラムはタイムアウトエラーを報告し、プログラムも自動的に実行を停止します。 .. image:: coding/199.png :width: 6in :align: center .. centered:: 図表 9.18-37 デジタル入力DI待機プログラム 8. アナログ入力の待機 ModbusTCPマスタ命令追加ページを開き、「アナログ入力待機設定」、つまりAI入力レジスタ待機設定を見つけ、AI名として設定済みの「液位」レジスタを選択し、待機状態を「>」、レジスタ値を255、タイムアウト時間を5000msに設定します。「追加」ボタンをクリックし、最後に「適用」ボタンをクリックします。 .. image:: coding/200.png :width: 6in :align: center .. centered:: 図表 9.18-38 アナログ入力待機の追加 これでロボットプログラム「testModbusMaster.lua」に、ロボットのModbusマスタがアナログ入力AIレジスタ値を待機する命令が1つ追加されました。プログラムを起動すると、ロボットは「PLC」マスタの「液位」レジスタ値が255より大きくなるまで待機し続けます。設定されたタイムアウト時間は5秒のため、ロボットが5秒待機しても「液位」信号が255より大きくならない場合、ロボットプログラムはタイムアウトエラーを報告し、プログラムも自動的に実行を停止します。 .. image:: coding/201.png :width: 6in :align: center .. centered:: 図表 9.18-39 AI入力レジスタ待機プログラム ModbusTCPスレーブ ++++++++++++++++++ ロボットのModbusTCPスレーブは、汎用デジタル入力(コイル)、汎用デジタル出力(ディスクリート入力)、汎用アナログ入力(保持レジスタ)、汎用アナログ出力(入力レジスタ)の4種類のレジスタを提供します。汎用デジタル入力とアナログ入力は主にロボットが外部のModbusTCPマスタデータを読み取ってロボットの操作を制御するために使用され、汎用デジタル出力とアナログ出力は主にロボットが外部のModbusTCPマスタデバイスにデータ信号を送信するために使用され、外部マスタデバイスが関連するレジスタ値を読み取ってそのデバイスの動作を制御します。 上記の汎用入出力に加えて、ロボットは外部マスタデバイスがロボットのプログラム起動、プログラム停止などの操作を制御するための「機能デジタル入力(コイル)」の一部も提供し、現在のロボットのデカルト位置、現在のロボットの動作状態などのロボットの状態情報を表示するための一部の入力レジスタも提供します(詳細な定義は付属一:ModbusTCPスレーブアドレスマッピング表を参照してください)。ロボットのModbusTCPスレーブの使用手順には、主に①パラメータ設定、②通信テスト、③プログラム作成が含まれます。 ModbusTCPスレーブ通信パラメータ設定 ************************************** WebAppを開き、「ティーチングシミュレーション」、「プログラムティーチング」を順にクリックし、新しいユーザープログラム「testModbusSlave.lua」を作成します。 .. image:: coding/202.png :width: 6in :align: center .. centered:: 図表 9.18-40 ModbusTCPスレーブのユーザープログラム作成 「ModbusTCP設定」ボタンをクリックして、ModbusTCP機能設定ページを開きます。 .. image:: coding/203.png :width: 6in :align: center .. centered:: 図表 9.18-41 ModbusTCP設定を開く 「スレーブ設定」を順にクリックし、ロボットスレーブのIP、ポート番号、スレーブ番号を入力します。ここで「IP」はロボットスレーブのIPアドレスです。FAIRINO協働ロボットにはティーチングペンダントと制御ボックスの2つのネットワークポートがあり、2つのポートのIPアドレスは異なります。外部デバイスがロボットスレーブに接続するネットワークポートに応じて正しいIPアドレスを入力してください(制御ボックスのネットワークポートを使用することをお勧めします)。ロボットのModbusTCPスレーブのIPアドレス、ポート番号、またはスレーブ番号を変更した後は、ロボットを再起動して有効にする必要があります。 .. image:: coding/204.png :width: 6in :align: center .. centered:: 図表 9.18-42 ModbusTCPスレーブ設定 ModbusTCPスレーブのパラメータ設定が完了し、ロボットを再起動すると、外部マスタデバイスは設定されたパラメータを介してロボットスレーブとの接続を確立できます。接続が成功すると、ロボットスレーブ設定ページの「接続状態」インジケータが点灯します。 .. image:: coding/205.png :width: 6in :align: center .. centered:: 図表 9.18-43 スレーブ接続状態インジケータ ModbusTCPスレーブ通信テスト ***************************** 1. 汎用デジタル入力(コイル) ロボットのModbusTCPスレーブは128個のコイルレジスタを提供します。これらのレジスタアドレスは100~127です。 .. note:: 詳細な定義は付属一:ModbusTCPスレーブアドレスマッピング表を参照してください。 ロボットのModbusTCPスレーブの汎用レジスタにはすべて別名を設定できます。ロボットスレーブのコイルレジスタDI0の名前を「Aアライメント」、DI1の名前を「Bアライメント」に変更します。アドレスマッピング表によると、「Aアライメント」と「Bアライメント」のModbusコイルアドレスはそれぞれ100と101です。外部のModbusTCPマスタデバイスでロボットスレーブのコイルレジスタアドレス100と101を両方とも1に設定すると、ロボットのModbusTCPスレーブ監視ページでこの2つのレジスタのインジケータが点灯します。 .. image:: coding/206.png :width: 6in :align: center .. centered:: 図表 9.18-44 ModbusTCPスレーブのコイル状態監視 2. 汎用デジタル出力(ディスクリート入力) ロボットのModbusTCPスレーブは128個のディスクリート入力レジスタを提供します。これらのレジスタアドレスは100~127です。 .. note:: 詳細な定義は付属一:ModbusTCPスレーブアドレスマッピング表を参照してください。 同様に、ロボットのModbusTCPスレーブのディスクリート入力レジスタにも別名を設定できます。「汎用デジタル出力(ディスクリート入力)」をクリックして、ロボットスレーブのディスクリート入力レジスタDO0の名前を「A起動」、DO1の名前を「B起動」に変更します。アドレスマッピング表によると、「A起動」と「B起動」のModbusディスクリート入力アドレスはそれぞれ100と101です。「A起動」に対応するディスクリート入力インジケータをクリックすると、このインジケータが点灯し、対応するレジスタアドレス100の値が1になり、外部のModbusTCPマスタデバイスからこのレジスタ値を読み取ることができます。 .. image:: coding/207.png :width: 6in :align: center .. centered:: 図表 9.18-45 ModbusTCPスレーブのディスクリート入力制御 3. アナログ入力(保持レジスタ) ロボットは、符号なし、符号付き、浮動小数点の3種類の保持レジスタを合計64個提供します。AI0~AI63のアドレスは100~195です。 .. note:: text 詳細な定義は付属一:ModbusTCPスレーブアドレスマッピング表を参照してください。符号なしタイプレジスタのデータ範囲は0~65535、符号付きタイプレジスタのデータ範囲は-32768~32767、浮動小数点レジスタはビッグエンディアン表示です。 AI0とAI1の名前をそれぞれ「電圧」、「電流」に変更します。ModbusTCPスレーブアドレスマッピング表から、2つのレジスタのアドレスはそれぞれ100と101であることがわかります。したがって、接続されているマスタデバイスが保持レジスタ100と101のレジスタアドレス値を変更すると、ロボットのModbusTCPスレーブ監視ページの「電圧」および「電流」レジスタアドレス値もそれに応じて同期して更新・表示されます。ロボットのアナログ入力は、主にロボットが外部マスタデバイスの数値信号を読み取るために使用されます。 .. image:: coding/208.png :width: 6in :align: center .. centered:: 図表 9.18-46 ModbusTCPスレーブのアナログ入力監視 4. アナログ出力(入力レジスタ) ロボットは、符号なし、符号付き、浮動小数点の3種類の入力レジスタを合計64個提供します。AO0~AO63のアドレスは100~195です。 .. note:: text 詳細な定義は付属一:ModbusTCPスレーブアドレスマッピング表を参照してください。符号なしタイプレジスタのデータ範囲は0~65535、符号付きタイプレジスタのデータ範囲は-32768~32767、浮動小数点レジスタはビッグエンディアン表示です。 AO0とAO1の名前をそれぞれ「目標位置A」、「目標位置B」に変更し、入力量レジスタの値をそれぞれ2000、1500に設定します。ModbusTCPスレーブアドレスマッピング表から、2つのレジスタのアドレスはそれぞれ100と101であることがわかります。したがって、接続されているマスタデバイスが入力レジスタ100と101のレジスタアドレス値を読み取ると、設定された数値を取得できます。ロボットスレーブのアナログ出力は、主にロボットが外部マスタデバイスに数値信号を送信するために使用されます。 .. image:: coding/209.png :width: 6in :align: center .. centered:: 図表 9.18-47 Modbusスレーブによるアナログ入力の変更 ModbusTCPスレーブプログラムの作成 ********************************* 「すべて」、「通信命令」を順にクリックし、通信命令追加ページを開きます。 .. image:: coding/210.png :width: 6in :align: center .. centered:: 図表 9.18-48 通信命令追加ページを開く 「Modbus」をクリックします。 .. image:: coding/211.png :width: 6in :align: center .. centered:: 図表 9.18-49 Modbusを選択 「Modbus_TCP」をクリックします。 .. image:: coding/178.png :width: 6in :align: center .. centered:: 図表 9.18-50 Modbus_TCPを選択 「スレーブ」を選択し、ModbusTCPスレーブ命令追加ページを開きます。 .. image:: coding/212.png :width: 6in :align: center .. centered:: 図表 9.18-51 ModbusTCPスレーブ命令の追加 1. 単一デジタル出力DO(ディスクリート入力)の書き込み DO名として「A起動」を選択し、レジスタ数を1、レジスタ値を0として、「単一デジタル出力を書き込む」をクリックします。最後にこのページの一番下までスクロールし、「適用」ボタンをクリックします。 .. image:: coding/213.png :width: 6in :align: center .. centered:: 図表 9.18-52 単一デジタル出力書き込み命令の追加 これでロボットプログラム「testModbusSlave.lua」に、ロボットのModbusスレーブが単一デジタル出力を書き込む命令が1つ追加されました。ロボットを自動モードに切り替え、起動ボタンをクリックすると、ロボットは「A起動」という名前のデジタル出力に対応するアドレス値を0に書き込みます。 .. image:: coding/214.png :width: 6in :align: center .. centered:: 図表 9.18-53 単一デジタル出力書き込みのLUAプログラム 2. 複数デジタル出力DO(ディスクリート入力)の書き込み ModbusTCPスレーブ命令追加ページを開き、「デジタル出力設定」を見つけ、DO名として「A起動」を選択し、レジスタ数を5、レジスタ値を1,0,1,0,1とします。ここで、レジスタ値の個数は設定したレジスタ数と対応し、複数のレジスタ値はカンマで区切ります。「デジタル出力を書き込む」をクリックします。最後にこのページの一番下までスクロールし、「適用」ボタンをクリックします。 .. image:: coding/215.png :width: 6in :align: center .. centered:: 図表 9.18-54 複数デジタル出力の書き込みを設定 これでロボットプログラム「testModbusSlave.lua」に、ロボットのModbusスレーブが複数デジタル出力を書き込む命令が1つ追加されました。ロボットを自動モードに切り替え、起動ボタンをクリックすると、ロボットはスレーブの「A起動」とその後の4つのディスクリート入力レジスタの値をそれぞれ1、0、1、0、1に書き込みます。 .. image:: coding/216.png :width: 6in :align: center .. centered:: 図表 9.18-55 複数デジタル出力書き込みのLUAプログラム 3. 単一デジタル出力DO(ディスクリート入力)の読み取り ModbusTCPマスタ命令追加ページを開き、「デジタル出力設定」を見つけ、DO名として「A起動」を選択し、レジスタ数を1とし、レジスタ値は記入不要で、「デジタル出力を読み取る」をクリックします。最後にこのページの一番下までスクロールし、「適用」ボタンをクリックします。 .. image:: coding/217.png :width: 6in :align: center .. centered:: 図表 9.18-56 単一デジタル出力の読み取りを設定 これでロボットプログラム「testModbusSlave.lua」に、ロボットのModbusスレーブが単一デジタル出力を読み取る命令が1つ追加されました。 .. image:: coding/218.png :width: 6in :align: center .. centered:: 図表 9.18-57 単一デジタル出力読み取りプログラム 通常、Modbusレジスタを読み取った後は、読み取った値を変数に格納するため、読み取った値を格納する変数を定義する必要があります。「モード切り替え」ボタンをクリックして、ロボットのluaプログラムを編集可能な状態に切り替え、「ModbusSlaveReadDO」命令の前に戻り値の変数「AStartValue」を記述して追加します。プログラムを実行すると、読み取った値は「AStartValue」に格納されます。 .. image:: coding/219.png :width: 6in :align: center .. centered:: 図表 9.18-58 単一デジタル出力の読み取りを変数に格納 コイルタイプのレジスタ値は0と1の2種類のみです。ロボットプログラムでは、レジスタの値が異なることで異なる操作を行うように判断できます。「モード切り替え」ボタンをクリックしてロボットのティーチングプログラムを編集不可モードに切り替え、2つの関節運動命令を追加して、それぞれ「P1」と「P2」という異なる点に移動させます。 .. image:: coding/220.png :width: 6in :align: center .. centered:: 図表 9.18-59 異なる点への運動命令の追加 再度プログラムを編集可能モードに切り替え、デジタル出力値「AStartValue」の判断条件を記述します。「AStartValue」の値が1の場合はロボットを「P1」点に移動させ、そうでない場合は「P2」点に移動させます。 .. image:: coding/221.png :width: 6in :align: center .. centered:: 図表 9.18-60 デジタル出力値によって異なる点に移動 最後にロボットプログラムを再び編集不可モードに切り替え、ロボットを自動モードに切り替え、安全を確認した上でプログラムを起動します。このプログラムの2行目は「A起動」という名前のデジタル出力DO値を1に設定しているため、プログラムを実行するとロボットは「P1」点に移動します。 .. image:: coding/222.png :width: 6in :align: center .. centered:: 図表 9.18-61 単一コイルレジスタ値を読み取って運動 4. 複数デジタル出力DO(ディスクリート入力)の読み取り ModbusTCPマスタ命令追加ページを開き、「デジタル出力設定」を見つけ、DO名として「A起動」を選択し、レジスタ数を2とし、レジスタ値は記入不要で、「デジタル出力を読み取る」をクリックします。最後にこのページの一番下までスクロールし、「適用」ボタンをクリックします。 .. image:: coding/223.png :width: 6in :align: center .. centered:: 図表 9.18-62 複数デジタル出力の読み取りを設定 これでロボットプログラム「testModbusSlave.lua」に、ロボットのModbusスレーブが複数デジタル出力を読み取る命令が1つ追加されました。 .. image:: coding/224.png :width: 6in :align: center .. centered:: 図表 9.18-63 複数デジタル出力読み取りプログラム 「モード切り替え」ボタンをクリックして、ロボットのluaプログラムを編集可能な状態に切り替えます。読み取る数は2個なので、「ModbusSlaveReadDO」命令の前に2つの戻り値の変数「value1,value2」を記述して追加します。プログラムを実行すると、読み取った2つのデジタル出力レジスタ値はそれぞれ上記の2つの変数に格納されます。同様に「value1」、「value2」の値を判断してロボットに異なる動作をさせることができます。 .. image:: coding/225.png :width: 6in :align: center .. centered:: 図表 9.18-64 複数デジタル出力の読み取りを変数に格納 5. デジタル入力DI(コイル)の読み取り ModbusTCPスレーブ命令追加ページを開き、「デジタル入力設定」を見つけ、DI名として「Aアライメント」を選択し、レジスタ数を2とし、「デジタル入力を読み取る」をクリックします。最後にこのページの一番下までスクロールし、「適用」ボタンをクリックします。 .. image:: coding/226.png :width: 6in :align: center .. centered:: 図表 9.18-65 デジタル入力の読み取りを設定 これでロボットプログラム「testModbusSlave.lua」に、ロボットのModbusスレーブがデジタル入力を読み取る命令が1つ追加されました。 .. image:: coding/227.png :width: 6in :align: center .. centered:: 図表 9.18-66 デジタル入力読み取りプログラム命令 「モード切り替え」ボタンをクリックして、ロボットのluaプログラムを編集可能な状態に切り替え、「ModbusSlaveReadDI」命令の前に戻り値の変数「AState,BState」を記述します。プログラムを実行すると、読み取った2つのデジタル入力値はそれぞれ変数「AState」と「BState」に格納されます。変数の値を判断することで、ロボットに異なる操作をさせることができます。 .. image:: coding/228.png :width: 6in :align: center .. centered:: 図表 9.18-67 デジタル入力読み取りプログラム 6. アナログ出力AO(入力レジスタ)とアナログ入力AI(保持レジスタ)の読み書き操作 アナログ出力(入力レジスタ)およびアナログ入力(保持レジスタ)の読み書き操作は、デジタル出力(ディスクリート入力)およびデジタル入力(コイル)の操作と基本的に同じですが、後者のデータ範囲が0または1のみに限られるのに対し、前者のデータ範囲はより広いという違いがあります。したがって、具体的な操作はデジタル出力およびデジタル入力プログラムの作成を参考にしてください。ここでは、アナログ入力の読み取り操作とアナログ出力の読み書き操作のプログラム例のみを示します。 .. image:: coding/229.png :width: 6in :align: center .. centered:: 図表 9.18-68 アナログ入力の読み取り .. image:: coding/230.png :width: 6in :align: center .. centered:: 図表 9.18-69 アナログ出力の読み書き 7. デジタル入力の待機 ModbusTCPスレーブ命令追加ページを開き、「デジタル入力待機設定」を見つけ、DI名として設定済みの「Aアライメント」レジスタを選択し、待機状態を「True」、タイムアウト時間を5000msに設定します。「追加」ボタンをクリックし、最後に「適用」ボタンをクリックします。 .. image:: coding/231.png :width: 6in :align: center .. centered:: 図表 9.18-70 デジタル入力待機命令の追加 これでロボットプログラム「testModbusSlave.lua」に、ロボットのModbusスレーブがデジタル入力を待機する命令が1つ追加されました。プログラムを起動すると、ロボットはスレーブの「Aアライメント」コイルレジスタ値がtrue、つまり数値1になるまで待機し続けます。設定されたタイムアウト時間は5秒のため、ロボットが5秒待機しても「Aアライメント」信号が0のままの場合、ロボットプログラムはタイムアウトエラーを報告し、プログラムも自動的に実行を停止します。 .. image:: coding/232.png :width: 6in :align: center .. centered:: 図表 9.18-71 デジタル入力待機プログラム 8. アナログ入力の待機 ModbusTCPスレーブ命令追加ページを開き、「アナログ入力待機設定」を見つけ、AI名として設定済みの「電圧」レジスタを選択し、待機状態を「>」、レジスタ値を255、タイムアウト時間を5000msに設定します。「追加」ボタンをクリックし、最後に「適用」ボタンをクリックします。 .. image:: coding/233.png :width: 6in :align: center .. centered:: 図表 9.18-72 アナログ入力待機命令の追加 これでロボットプログラム「testModbusSlave.lua」に、ロボットのModbusスレーブがアナログ入力値を待機する命令が1つ追加されました。プログラムを起動すると、ロボットはスレーブの「電圧」レジスタ値が255より大きくなるまで待機し続けます。設定されたタイムアウト時間は5秒のため、ロボットが5秒待機しても「電圧」信号が255より大きくならない場合、ロボットプログラムはタイムアウトエラーを報告し、プログラムも自動的に実行を停止します。 .. image:: coding/234.png :width: 6in :align: center .. centered:: 図表 9.18-73 アナログ入力レジスタ待機プログラム ModbusTCPスレーブのロボット状態フィードバックと制御 ******************************************************** 協働ロボットのModbusTCPスレーブ入力レジスタアドレス310~473は、ロボットのリアルタイム状態をフィードバックするために使用されます(具体的なアドレス定義は付属一:ModbusTCPスレーブアドレスマッピング表を参照してください)。マスタデバイスで対応するレジスタの値を読み取るだけで、対応するロボットのリアルタイム状態データを取得できます。 協働ロボットのModbusTCPスレーブコイルレジスタアドレス300~599は、マスタデバイスがロボットを制御するために使用されます(具体的なアドレス定義は付属一:ModbusTCPスレーブアドレスマッピング表を参照してください)。コイルアドレス502を例にとると、このアドレスの機能は「プログラムの起動」を表します。 ロボットが自動モードの場合、マスタデバイスがアドレス502の値を0から1に変更すると、ロボットは自動的に現在設定されているプログラムの実行を開始します。また、コイルアドレス300を例にとると、これはロボットの制御箱DO0の出力を制御するために使用されます。外部マスタがコイルアドレス300を0から1に変更すると、制御箱DO0の出力が自動的に有効になります。同様に、外部マスタがコイルアドレス300を1から0に変更すると、制御箱DO0の出力は無効になります。ModbusTCPスレーブ設定ページで「機能デジタル入力(コイル)」をクリックすると、現在のすべての機能デジタル入力を監視できます。 .. image:: coding/235.png :width: 6in :align: center .. centered:: 図表 9.18-74 ロボットスレーブの機能デジタル入力 .. image:: coding/434.png :width: 6in :align: center .. centered:: 図表 9.18-74 Modbusスレーブアドレスマッピング表 付属一::download:`Modbusスレーブアドレスマッピング表 <../_static/_doc/ModbusTCP Slave station address mapping table.xlsx>` ロボットバックグラウンドプログラム ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ロボットバックグラウンドプログラム機能 +++++++++++++++++++++++++++++++++++++++++++++++++++ ロボットのバックグラウンドプログラムとは、ロボットがフロントグラウンドの運動プログラムを実行している間に、同時にバックグラウンドで実行できる、信号の論理関係を処理するための制御プログラムであり、両者の実行関係は相互に独立しています。 バックグラウンドプログラムはフロントグラウンドの実行状態を監視できると同時に、フロントグラウンドに制御信号を送信することもできます。また、バックグラウンドプログラムはI/O通信を介して外部デバイスと接続し、ロボット周辺機器の動作監視と制御を行うこともできます。バックグラウンドロジックプログラムで実行可能な命令はフロントグラウンドのティーチングプログラムとは異なり、いかなる運動軸も制御できません。そのため、プログラミング時にはロボットの軸運動命令を一切含めることはできません。論理制御機能とI/O通信機能のみが保持されます。 バックグラウンドプログラムを使用する際、プログラムは最初から最後まで繰り返し循環スキャンされます。システム内のバックグラウンドプログラムの実行周期は1ミリ秒です。バックグラウンドプログラムに遅延関数を追加して実行周期を制御できます。バックグラウンドプログラムの実行中は、緊急停止、一時停止、アラームの影響を受けません。 .. note:: 最大同時実行数は8つのバックグラウンドプログラムです。 電源切断後、次回通電時にバックグラウンドロジックプログラムは自動的にロードされ、設定された状態で実行されます。 ロボットバックグラウンドプログラムの保存 *********************************************** バックグラウンドプログラムの作成、編集、保存は、バックグラウンドプログラム画面でのみ実行できます。 **Step1**:ロボットのバックグラウンドプログラム画面を開きます。ティーチングページを開き、「ティーチングプログラム」、「プログラム作成」を順にクリックします。左上の「バックグラウンドプログラム」を選択すると、バックグラウンドプログラム画面に入ります。 .. note:: バックグラウンドプログラムには、論理判断、代入命令、フロントグラウンド制御命令、I/Oインターフェース命令、Modbus通信命令のみが含まれます。 .. image:: coding/253.png :width: 6in :align: center .. centered:: 図表 9.19-1 バックグラウンドプログラム画面 **Step2**:手動モードで、バックグラウンドティーチングプログラムファイルを開きます。「新規作成」をクリックして、新しいティーチングプログラムファイルを作成し、プログラムを編集して、「保存」をクリックしてファイルを保存します。 .. note:: バックグラウンドプログラムの実行周期は1ミリ秒です。プログラム内では提供されている遅延関数を使用できます。下の図のプログラムの4行目のように、1秒の遅延を追加して実行周期を制御します。 .. image:: coding/254.png :width: 6in :align: center .. centered:: 図表 9.19-2 バックグラウンドプログラムファイルの新規作成と保存 ロボットバックグラウンドプログラムの管理 ************************************************** 保存に成功したバックグラウンドプログラムは、バックグラウンドプログラム管理画面で作成、一時停止、再開、削除ができます。バックグラウンドプログラム管理画面では、作成されたすべてのバックグラウンドプログラムの実行状態を一目で確認できます。緑色は実行中、赤色は一時停止状態を示します。 **Step1**:バックグラウンドプログラムを作成します。バックグラウンドプログラム管理ボタンをクリックし、ドロップダウンリストから保存済みのバックグラウンドプログラムを選択し、「実行開始」をクリックすると、対応するバックグラウンドプログラムが実行されます。 .. image:: coding/255.png :width: 6in :align: center .. centered:: 図表 9.19-3 バックグラウンドプログラムの作成 **Step2**:バックグラウンドプログラムを再開、一時停止します。バックグラウンドプログラム管理画面で、監視プログラムの「再開」ボタンと「一時停止」ボタンをクリックすると、対応するバックグラウンドプログラムを再開および一時停止できます。「削除」ボタンをクリックすると、対応するバックグラウンドプログラムを削除できます。 .. image:: coding/256.png :width: 6in :align: center .. centered:: 図表 9.19-4 バックグラウンドプログラムの一時停止、再開、削除 ロボットユーザー変数の使用 +++++++++++++++++++++++++++++++ .. note:: 協働ロボットに新しく追加されたユーザー変数機能は、ロボットのバックグラウンドプログラムとフロントグラウンドプログラム、または異なるバックグラウンドプログラム間のデータ連携に適しています。 ロボットユーザー変数の管理 ************************************* ユーザー変数を使用する前に、好みに応じてユーザー変数の名前を変更できます。ティーチングページを開き、「ティーチングプログラム」、「プログラム作成」、「ユーザー変数管理」を順にクリックします。このページはフロントグラウンドプログラムとバックグラウンドプログラムの両方で使用できます。変数名をクリックすると、直接変数名を変更できます。 .. image:: coding/257.png :width: 6in :align: center .. centered:: 図表 9.19-5 ユーザー変数の管理 ロボットユーザー変数の使用 ********************************* ユーザー変数は、フロントグラウンド/バックグラウンドプログラムでの使用時に、ユーザー変数の読み書きインターフェースのみを使用して操作できます。 **Step1**:手動モードで、ティーチングプログラムファイルを開きます。ティーチングページを開き、「ティーチングプログラム」、「プログラム作成」を順にクリックし、「新規作成」をクリックして、新しいティーチングプログラムファイルを作成します。 .. image:: coding/258.png :width: 6in :align: center .. centered:: 図表 9.19-6 新しいティーチングプログラムファイルの作成 **Step2**:ユーザー変数読み取りインターフェースを使用します。「変数」命令をクリックし、「ユーザー変数」を選択し、「変数値を取得」ドロップダウンリストをクリックして、読み取りたいユーザー変数を選択し、「追加」、「適用」ボタンをクリックすると、ユーザー変数読み取りインターフェースプログラムを作成できます。 .. image:: coding/259.png :width: 6in :align: center .. centered:: 図表 9.19-7 ユーザー変数読み取りインターフェースの使用 **Step3**:ユーザー変数書き込みインターフェースを使用します。「変数」命令をクリックし、「ユーザー変数」を選択し、「変数値を設定」ドロップダウンリストをクリックして、設定したいユーザー変数を選択し、対応する設定値を記入します。この値は定数や変数値をサポートします。「追加」、「適用」ボタンをクリックすると、ユーザー変数書き込みインターフェースプログラムを作成できます。 .. image:: coding/260.png :width: 6in :align: center .. centered:: 図表 9.19-8 ユーザー変数書き込みインターフェースの使用 XY方向横向き恒力研磨 ~~~~~~~~~~~~~~~~~~~~~~~~ 概要 +++++++++++++++ XY方向横向き恒力研磨の原理は以下の通りです。横向き恒力研磨とは、指定されたワーク表面上で、研磨ツール(例:グラインダー、研磨パッドなど)を一定の力で押し付け、XY方向にツールの移動を制御することで、接触点で常に一定の研磨力を維持するものです。 XY方向横向き恒力研磨機能の操作フロー +++++++++++++++++++++++++++++++++++++++++++ 力センサーを利用して恒力研磨を行うには、力センサーの下に研磨ツールを取り付け、ツール座標系を設定する必要があります。「初期設定」->「基本」->「座標系」->「ツール」ボタンを順にクリックすると、「ツール座標系設定」画面に入ります。「座標系名」で設定する座標系を選択し(例としてtoolcoord0座標系を例にとります)、末端ツールの寸法に基づいて設定します。 .. image:: coding/246.png :width: 4in :align: center .. centered:: 図表 9.20-1 ツール座標系の設定 力制御参照座標系の設定。web画面で、「FT」->「参照座標系」を順にクリックし、「カスタム座標系」を選択し、各パラメータを「0」に設定します。力センサーが動作する際、異なる参照座標系はセンサーが検出する外力の大きさに影響します。 .. image:: coding/261.png :width: 6in :align: center .. centered:: 図表 9.20-2 参照座標系の設定 研磨する平板はロボットの作業空間内に固定し、平板はぐらつかないようにします。ツールの末端をほぼ垂直に研磨板に当て、開始点と終了点をティーチングします。 .. image:: coding/262.png :width: 2in :align: center .. centered:: 図表 9.20-3 研磨レイアウトの概略図 「ティーチングプログラム」->「プログラム作成」->「力制御セット」ボタンを順にクリックし、「FT_Control」命令を追加します。「FT_Control」命令は力制御運動命令で、ロボットを設定された力の近くで運動させることができます。 .. image:: coding/263.png :width: 4in :align: center .. centered:: 図表 9.20-4 力制御命令の追加 .. image:: coding/264.png :width: 6in :align: center .. centered:: 図表 9.20-5 力制御研磨命令の例 パラメータの具体的な役割: **座標系名**:センサー座標系を設定する際の対応する名前。 **力方向検出のチェック**:検出しきい値の設定:制御する力の方向を選択します。横向き研磨では、Fx、Fyをチェックし、対応する期待する恒力を設定します。 **PIDパラメータ**:力とトルクのPID比例係数を設定します。通常、F_P_gainは0.001に設定します。 **最大調整距離**:X,Y,Z方向の最大移動距離に対応します。 **最大調整角度**:RX,RY,RZの最大回転角度に対応します。 **研磨ディスク半径**:実際の末端研磨ツールの半径によって決まります。 軌道自動特異点回避機能 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 概要 +++++++++++++++ ロボットがLIN、ARC命令の軌道でロボットが通過できない特異範囲に遭遇した場合、ロボットはエラーを報告し、次の位置姿勢が特異点であることを示すか、特異点警告が表示されます。特異範囲を通過する次の経路点に到達したい場合は、本機能を使用して関節空間またはデカルト空間で特異点を回避し、次の目標位置姿勢に到達できます。 .. image:: coding/265.png :width: 4in :align: center .. centered:: 図表 9.21-1 ロボット特異点の簡易概略図 上図はロボットの特異点の概略図です。ロボットの特異点には肩、肘、手首の3種類があります。図中のAは5関節の中心WCP(Wrist Center Point)で、肩の特異点を判断するために使用されます。Bは肩の特異範囲で、形状は円柱状で、その半径はロボットのDHパラメータd4の長さです。WCPが円柱Bに入るとロボットは特異状態になります。Cはロボットの肘の特異点境界で、J3=0または180°の時、ロボットは肘の特異点状態になります。Dはロボットの内部空間で、内部空間の任意の位置でJ5=0または180°の時、手首の特異点状態になります。 .. note:: 特異点はロボットの物理構造によって決定される運動特性であり、実際の運転時には避けるべきです。アルゴリズムで回避すると末端の位置姿勢や速度、さらには構成設定が変化する可能性があるため、回避の副作用が要件に影響するかどうかを検討してから選択する必要があります。 軌道自動特異点回避機能の操作フロー +++++++++++++++++++++++++++++++++++ 新しく作成したプログラムで、ロボットのLIN/ARCタイプの運動命令を追加します。 .. image:: coding/266.png :width: 6in :align: center .. centered:: 図表 9.21-2 LIN/ARC運動命令の追加 「直線」命令をクリックし、ロボットの特異点を通過する経由点を選択し、命令パラメータ設定画面の「運動保護」サブオプションで「特異点回避」ボタンをクリックします。 .. image:: coding/267.png :width: 6in :align: center .. centered:: 図表 9.21-3 特異点回避機能の有効化 「特異点回避」パラメータには、「保護モード」、「肩特異点調整」、「肘特異点調整」、「手首特異点調整」の関連パラメータが含まれます。「保護モード」は「関節モード」と「デカルトモード」に分かれており、ロボットが関節空間で特異点を越えるか、デカルト空間で特異点を迂回するかを意味します。「特異点調整」のパラメータは、特異点の判定範囲と特異点回避の最大偏差を指定します。肩と肘の特異点の単位はmm、手首の特異点の単位は°です。 .. note:: 関節空間では関節間の最も近い軌道が選択されるため、リミットに達する状況は発生しません。デカルト空間での回避では関節リミットが発生する可能性があるため、ティーチング時に注意して調整する必要があります。 特異点回避パラメータを選択・設定した後、「追加」ボタンをクリックして命令を追加し、その後「適用」をクリックしてlua命令をプログラムに追加します。 .. image:: coding/268.png :width: 6in :align: center .. centered:: 図表 9.21-4 特異点回避パラメータの設定とlua命令の追加 ティーチングが完了した、典型的なLIN特異点回避運動のluaプログラムを以下に示します。 .. image:: coding/269.png :width: 6in :align: center .. centered:: 図表 9.21-5 特異点回避命令を含むluaプログラム 回避の効果を以下に示します。赤色はロボットの末端軌跡線です。 .. image:: coding/270.png :width: 4in :align: center .. image:: coding/271.png :width: 4in :align: center .. centered:: 図表 9.21-6 肩関節特異点回避軌跡の例(上:デカルト空間、下:関節空間) .. image:: coding/272.png :width: 4in :align: center .. image:: coding/273.png :width: 4in :align: center .. centered:: 図表 9.21-7 肘関節特異点回避軌跡の例(上:デカルト空間、下:関節空間) .. image:: coding/274.png :width: 4in :align: center .. centered:: 図表 9.21-8 手首関節特異点回避軌跡の例(関節空間) 現在、本機能はLIN/ARC運動時に単一の種類の特異点を通過する場合の回避をサポートしています。運動の開始点と終了点が設定された特異範囲内にある場合、運動中に複数の種類の特異点を通過する場合、あるいは2種類以上の特異点が同時に発生する場合、画面には「[警告] 特異位置姿勢」ポップアップが表示され、現在の特異状況では回避できないことを示します。 .. image:: coding/275.png :width: 3in :align: center .. centered:: 図表 9.21-9 現在の特異状況では回避できないという警告 自動モードでの特異点通過機能 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 概要 ++++++++++++ ロボットがLINまたはARC命令を実行中に特異点を通過する際、ロボットの速度が突然変動し、運動制御が不安定になったり、機器に損傷を与えたりする可能性があります。特異点通過機能を使用することで、ロボットは安定して特異点を通過できるようになります。このマニュアルでは、手首特異点を通過するLIN命令を例に、自動モードでの特異点通過機能の使用方法を説明します。 操作手順 ++++++++++++++++ 1. ロボットにLIN命令の2つの運動制御点をティーチングします(このマニュアルではそれぞれwristlin1、wristlin2と命名します)。 2. 「ティーチングプログラム」→「プログラム作成」ボタンを順にクリックし、「運動命令」の「ポイントツーポイント」を選択して、最初の運動点を追加します。 .. image:: coding/285.png :width: 6in :align: center .. centered:: 図表 9.22-1 最初の運動点の追加 3. 「運動命令」の「直線」命令を選択して2番目の運動点を追加し、「運動保護」で「特異点通過」を選択し、肩特異点、肘特異点、手首特異点の調整範囲をそれぞれ設定します。 .. image:: coding/286.png :width: 6in :align: center .. centered:: 図表 9.22-2 特異点通過パラメータの設定 4. luaプログラムを生成して実行します。自動モードでの特異点通過の典型的なLIN命令プログラムです。 .. image:: coding/287.png :width: 6in :align: center .. centered:: 図表 9.22-3 典型的な特異点通過LIN命令 5. ロボットの運動結果を観察し、ロボットの運動速度と特異点設定範囲を調整することで、異なる運動精度と衝撃を得ることができます。 精度・衝撃対照表 ++++++++++++++++++++++++++++++++++ 1. 手首特異点はロボットが最も発生しやすい特異点のタイプです。手首特異点のLIN命令とARC命令の精度と衝撃の対照表をまとめました。LIN/ARC命令の対照表は以下の通りです(〇は衝突警告が発生したことを示します)。 .. centered:: 表 9.22-3-1 手首特異点LIN命令の誤差(単位:mm) .. list-table:: :widths: 35 20 20 20 20 20 20 :header-rows: 0 :class: sheet-center * - **特異範囲/画面速度** - **2** - **20** - **40** - **60** - **80** - **100** * - 2 mm - 0.19 - 0.20 - 0.20 - 0.21 - 〇 - 〇 * - 4 mm - 0.14 - 0.14 - 0.14 - 0.14 - 0.14 - 0.14 * - 6 mm - 0.40 - 0.40 - 0.41 - 0.41 - 0.42 - 0.42 * - 8 mm - 0.82 - 0.83 - 0.83 - 0.84 - 0.83 - 0.84 * - 10 mm - 1.38 - 1.38 - 1.39 - 1.39 - 1.39 - 1.41 .. centered:: 表 9.22-3-2 手首特異点LIN命令の線ジャーク(単位:m/s\ :sup:`3`) .. list-table:: :widths: 35 20 20 20 20 20 20 :header-rows: 0 :class: sheet-center * - **特異範囲/画面速度** - **2** - **20** - **40** - **60** - **80** - **100** * - 2 mm - 0.605 - 12.040 - 11.370 - 2743.000 - 〇 - 〇 * - 4 mm - 0.916 - 34.620 - 110.900 - 241.300 - 303.900 - 400.700 * - 6 mm - 0.906 - 59.700 - 139.600 - 343.700 - 445.600 - 582.900 * - 8 mm - 1.073 - 67.480 - 199.600 - 438.300 - 553.400 - 623.900 * - 10 mm - 1.013 - 69.490 - 195.800 - 556.600 - 649.300 - 953.300 .. centered:: 表 9.22-3-3 手首特異点LIN命令の角ジャーク(単位:°/s\ :sup:`3`) .. list-table:: :widths: 35 20 20 20 20 20 20 :header-rows: 0 :class: sheet-center * - **特異範囲/画面速度** - **2** - **20** - **40** - **60** - **80** - **100** * - 2 mm - 1122 - 25140 - 24780 - 54890 - 〇 - 〇 * - 4 mm - 305 - 9035 - 26030 - 39330 - 60510 - 80330 * - 6 mm - 219 - 8161 - 19450 - 84700 - 109300 - 143400 * - 8 mm - 478 - 6651 - 19780 - 121600 - 150500 - 162100 * - 10 mm - 281 - 5296 - 14470 - 161600 - 177300 - 256000 .. centered:: 表 9.22-3-4 手首特異点ARC命令の誤差(単位:mm) .. list-table:: :widths: 35 20 20 20 20 20 20 :header-rows: 0 :class: sheet-center * - **特異範囲/画面速度** - **2** - **20** - **40** - **60** - **80** - **100** * - 2 mm - 1.06 - 1.06 - 1.05 - 1.05 - 〇 - 〇 * - 4 mm - 1.58 - 1.59 - 1.60 - 1.62 - 〇 - 〇 * - 6 mm - 3.31 - 3.34 - 3.35 - 3.32 - 3.39 - 3.33 * - 8 mm - 5.81 - 5.83 - 5.87 - 5.87 - 5.87 - 5.96 * - 10 mm - 9.06 - 9.09 - 9.12 - 9.17 - 9.17 - 9.22 .. centered:: 表 9.22-3-5 手首特異点ARC命令の線ジャーク(単位:m/s\ :sup:`3`) .. list-table:: :widths: 35 20 20 20 20 20 20 :header-rows: 0 :class: sheet-center * - **特異範囲/画面速度** - **2** - **20** - **40** - **60** - **80** - **100** * - 2 mm - 13.970 - 643.000 - 2230.000 - 3408.000 - 〇 - 〇 * - 4 mm - 0.635 - 24.850 - 42.480 - 76.990 - 〇 - 〇 * - 6 mm - 3.000 - 19.960 - 45.350 - 57.120 - 77.050 - 59.800 * - 8 mm - 1.494 - 27.830 - 90.290 - 124.200 - 148.400 - 168.000 * - 10 mm - 0.460 - 31.870 - 112.600 - 211.000 - 229.300 - 117.500 .. centered:: 表 9.22-3-6 手首特異点ARC命令の角ジャーク(単位:°/s\ :sup:`3`) .. list-table:: :widths: 35 20 20 20 20 20 20 :header-rows: 0 :class: sheet-center * - **特異範囲/画面速度** - **2** - **20** - **40** - **60** - **80** - **100** * - 2 mm - 3378 - 85380 - 228600 - 351900 - 〇 - 〇 * - 4 mm - 1098 - 31360 - 71460 - 104800 - 〇 - 〇 * - 6 mm - 390 - 15770 - 43650 - 79330 - 93930 - 124200 * - 8 mm - 315 - 10270 - 28770 - 57000 - 75840 - 94050 * - 10 mm - 504 - 6108 - 21470 - 34920 - 47280 - 97160 2. 肩特異点と肘特異点はそれぞれロボットの最小作業境界と最大作業境界に対応するため、精度を指標とすることはできません。そこで、肩特異点の衝撃対照表と肘特異点の衝撃対照表を以下にまとめます(〇は衝突警告が発生したことを示します)。 .. centered:: 表 9.22-3-7 肩特異点の線ジャーク(単位:m/s\ :sup:`3`) .. list-table:: :widths: 35 20 20 20 20 20 20 :header-rows: 0 :class: sheet-center * - **特異範囲/画面速度** - **2** - **20** - **40** - **60** - **80** - **100** * - 40 mm - 1.166 - 99.730 - 253.200 - 273.500 - 〇 - 〇 * - 70 mm - 1.047 - 92.440 - 328.900 - 634.500 - 878.400 - 1499.000 * - 100 mm - 1.060 - 90.250 - 273.900 - 506.600 - 926.300 - 1555.000 .. centered:: 表 9.22-3-8 肩特異点の角ジャーク(単位:°/s\ :sup:`3`) .. list-table:: :widths: 35 20 20 20 20 20 20 :header-rows: 0 :class: sheet-center * - **特異範囲/画面速度** - **2** - **20** - **40** - **60** - **80** - **100** * - 40 mm - 396 - 89.83 - 824 - 348 - 〇 - 〇 * - 70 mm - 428 - 121 - 681 - 167 - 1783 - 35690 * - 100 mm - 440 - 151 - 473 - 246 - 1495 - 39280 .. centered:: 表 9.22-3-9 肘特異点の線ジャーク(単位:m/s\ :sup:`3`) .. list-table:: :widths: 35 20 20 20 20 20 20 :header-rows: 0 :class: sheet-center * - **特異範囲/画面速度** - **2** - **20** - **40** - **60** - **80** - **100** * - 40 mm - 0.905 - 14.430 - 52.080 - 87.380 - 129.400 - 657.000 * - 70 mm - 1.144 - 24.320 - 79.580 - 270.300 - 793.300 - 1478.000 * - 100 mm - 1.852 - 27.930 - 112.700 - 328.100 - 583.000 - 758.600 .. centered:: 表 9.22-3-10 肘特異点の角ジャーク(単位:°/s\ :sup:`3`) .. list-table:: :widths: 35 20 20 20 20 20 20 :header-rows: 0 :class: sheet-center * - **特異範囲/画面速度** - **2** - **20** - **40** - **60** - **80** - **100** * - 40 mm - 347 - 128 - 148 - 142 - 63 - 38050 * - 70 mm - 424 - 132 - 141 - 21780 - 56190 - 95610 * - 100 mm - 46 - 1443 - 6194 - 19940 - 35170 - 46770 リアルタイム先読み軌道計画機能 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 概要 ++++++++++++ リアルタイム先読み軌道計画は、現在および将来の経路情報に基づいて、ロボットの速度や加速度などの運動パラメータを動的に調整し、運動の滑らかさ、連続性、精度を確保します。ロボットの将来の位置と姿勢を予測することで、先読み制御は経路上のキーポイントの前に応答し、速度や加速度の急変による運動の不安定さや軌道誤差を回避します。 操作手順 ++++++++++++ **Step1**:「txt」形式の軌道点ファイルを用意します。各軌道点はデカルト位置姿勢で表されます。 **Step2**:「ティーチングプログラム」->「プログラム作成」ボタンを順にクリックし、「運動命令」の「軌道先読み」命令を選択し、「命令設定」で軌道ファイルのインポートと削除を行います。 .. image:: coding/288.png :width: 6in :align: center .. centered:: 図表 9.23-1 軌道ファイルのインポートと削除 **Step3**:実行したい軌道ファイルを選択し、「軌道プリロード」命令を追加します。まず「曲線フィッティング方式」で軌道点のフィッティング方式を選択します。「直線接続」、「直線フィッティング」、「Bスプライン曲線」、「多項式最適化法」などがあります。「直線フィッティング」を選択した場合は、追加で誤差制限を設定する必要があります。その他の方式ではこの設定は不要です。次に、平滑方式と平滑精度を設定します。最後に、実行中の最大速度、最大加速度、最大ジャークを設定し、「等速運動」で等速先読みを有効にするかどうかを選択できます。有効にすると、ロボットは等速で先読みを行います。 .. image:: coding/289.png :width: 6in :align: center .. centered:: 図表 9.23-2 「直線フィッティング」軌道プリロードパラメータの設定 .. image:: coding/292.png :width: 6in :align: center .. centered:: 図表 9.23-3 軌道プリロードパラメータの設定 **Step4**:「軌道運動」命令を追加してluaプログラムを生成し、luaプログラムを実行することで、インポートした軌道ファイルに対してリアルタイム先読み軌道計画を行うことができます。リアルタイム先読み軌道計画の典型的なプログラムを下図に示します。 .. image:: coding/290.png :width: 5in :align: center .. centered:: 図表 9.23-4 リアルタイム先読み軌道計画の典型的なプログラム(Bスプライン曲線) **Step5**:luaプログラム中の「LoadTrajectory」コマンド行に対して、編集ボタンをクリックすることで、設定パラメータを変更し、異なる軌道計画効果を実現できます。 .. image:: coding/291.png :width: 6in :align: center .. centered:: 図表 9.23-5 設定パラメータの変更 振幅単調漸変アークトラッキング機能 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ウィービング運動では、「突然変異」と「漸変」の2つの振幅切り替え方式を実現できます。 「突然変異」方式は、前のセグメントのウィービングパラメータから次のセグメントのウィービングパラメータへ直接切り替える方式です。これは、隣接する2つの異なるパラメータのウィービング運動を設定することで実現でき、またウィービング運動の実行中に新しいウィービング番号をリアルタイムで送信することでも実現できます(詳細は機能対応マニュアルを参照、ここでは詳しく説明しません)。 「漸変」方式は、現在のセグメントのウィービング運動において、開始時に設定されたウィービング振幅が終了時に設定されたウィービング振幅まで徐々に変化する方式です。 ウィービングパラメータの漸変切り替え方式は、直線ウィービング中のみサポートされます。 概要 +++++++++++++ 振幅単調漸変ウィービング運動の軌跡を下図に示します。 .. image:: coding/293.png :width: 4in :align: center ここで、青線はウィービング運動の方向、aは開始点のウィービング振幅、bは終了点のウィービング振幅です。ウィービング振幅は運動中に徐々に変化します。 .. note:: 注意:現在サポートされているのは、開始点と終了点が同じタイプで、振幅が異なり(aからbへ変化)、その他のパラメータが同一の漸変ウィービングのみです。ウィービング実行前にウィービングパラメータを確認することをお勧めします。 振幅漸変ウィービングを設定する操作手順は以下の通りです。 **Step 1**:「ティーチングプログラム」、「プログラム作成」をクリックし、「運動命令」配下の「ウィービング」ボタンを選択してクリックし、ウィービング命令設定ページに入ります。 .. image:: coding/294.png :width: 3in :align: center .. centered:: 図表 9.24-1 ウィービング機能ボタンをクリック **Step 2**:命令編集でウィービング開始時のウィービングパラメータ番号を選択し、「ウィービング開始」をクリックした後、「追加」ボタンをクリックします。 .. image:: coding/295.png :width: 6in :align: center .. centered:: 図表 9.24-2 開始ウィービングパラメータの追加 **Step 3**:ウィービング漸変の目標番号を選択し、「ウィービング漸変開始」をポイント選択し、「追加」ボタンをクリックします。 .. image:: coding/296.png :width: 6in :align: center .. centered:: 図表 9.24-3 漸変ウィービングパラメータの追加 **Step 4**:対応する直線運動を追加した後、「ウィービング漸変終了」をポイント選択して追加し、「ウィービング停止」をポイント選択して追加すると、一段の振幅漸変ウィービング運動の設定が完了します。「適用」をクリックしてLUAプログラムに追加します。 .. image:: coding/297.png :width: 6in :align: center .. centered:: 図表 9.24-4 完全な振幅漸変運動LUA命令の実装 オフセットアークトラッキング機能 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ アークトラッキング溶接プロセスにおいて、ロボットはデフォルトで電流情報に基づいて溶接トーチのウィービング中心を調整し、ワークの開先中心に追従させます。しかし、一部の工程要件では、溶接トーチのウィービング中心をワークの開先中心に対してある程度オフセットさせたい場合があります。 .. image:: coding/298.png :width: 3in :align: center .. centered:: 図表 9.25-1 オフセットアークトラッキングの典型的なシーン オフセットアークトラッキング機能の典型的なシーンには以下が含まれます:a.溶接ワーク(溶接開先は直角または鋭角)、b.溶接トーチ、e.開先中心線。アークトラッキング機能は、溶接開先のc.上下(深さ)方向のトラッキングとd.左右(中心)方向のトラッキングを実現し、fは左右方向のトラッキングオフセット距離です。 オフセットアークトラッキングを実現するには、左右オフセット量を設定する2つの方法、「サンプリング」と「パーセンテージ」調整方式から選択できます。 サンプリングオフセットアークトラッキング ++++++++++++++++++++++++++++++++++++++++++++++++++++ サンプリング方式は、ウィービング溶接のアークスタート後、ある周期内のウィービング時の左右電流値を基準として収集し、その後の溶接プロセスでサンプリング電流と基準電流を比較して追跡方向を決定します。 サンプリング方式では、要求されるオフセット量までウィービング溶接の開始位置をティーチングする必要があります。オフセット量はウィービング振幅を超えてはならず、溶接シームは突合せ開先をカバーする必要があります。 サンプリングオフセット指令の設定手順は以下の通りです。 .. image:: coding/299.png :width: 3in :align: center .. centered:: 図表 9.25-2 アークトラッキング指令ボタンをクリック **Step 1**:「ティーチングプログラム」、「プログラム作成」をクリックし、「溶接命令」配下の「アークトラッキング」ボタンを選択してクリックし、アークトラッキング指令設定ページに入ります。 .. image:: coding/300.png :width: 6in :align: center .. centered:: 図表 9.25-3 サンプリングオフセットアークトラッキング設定ページ **Step 2**:オフセットアークトラッキングは左右補償に作用します。「左右補償」サブページをクリックし、オフセット方式のドロップダウンで「サンプリング」を選択し、サンプリング開始周期を設定します(サンプリング開始周期は左右補償開始時間より小さくする必要があります)。指令タイプで「開始」を選択し、「追加」ボタンをクリックしてLUA指令を生成します。 .. image:: coding/301.png :width: 6in :align: center .. centered:: 図表 9.25-4 サンプリングオフセットアークトラッキング終了指令の追加 **Step 3**:ウィービング運動指令を追加した後、アークトラッキング指令タイプで「終了」を選択してクリックし、「追加」をクリックして対応するLUA指令を生成します。 パーセンテージオフセットアークトラッキング ++++++++++++++++++++++++++++++++++++++++++++++ パーセンテージオフセットは、アークトラッキングプロセス中に入力されたサンプリング電流にパーセンテージゲインを与え、左右のウィービング周期の電流に偏差を生じさせ、ロボットは偏差後の信号を自動的に補償します。 .. note:: ウィービング振幅が小さく、開先角度が大きいほど、左右電流の偏差は小さくなり、調整パーセンテージも小さくする必要があります。調整間隔は1%単位でデバッグすることをお勧めします。 パーセンテージオフセット指令の設定手順は以下の通りです。 .. image:: coding/299.png :width: 3in :align: center .. centered:: 図表 9.25-5 アークトラッキング指令ボタンをクリック **Step 1**:「ティーチングプログラム」、「プログラム作成」をクリックし、「溶接命令」配下の「アークトラッキング」ボタンを選択してクリックし、アークトラッキング指令設定ページに入ります。 .. image:: coding/302.png :width: 6in :align: center .. centered:: 図表 9.25-6 パーセンテージオフセットアークトラッキング設定ページ **Step 2**:オフセットアークトラッキングは左右補償に作用します。「左右補償」サブページをクリックし、オフセット方式のドロップダウンで「パーセンテージ」を選択し、パーセンテージ値を設定します(正の値は前半周期の電流をゲインアップし、後半周期の方向に補償します。負の値はその逆です)。指令タイプで「開始」を選択し、「追加」ボタンをクリックしてLUA指令を生成します。 .. image:: coding/303.png :width: 6in :align: center .. centered:: 図表 9.25-7 パーセンテージオフセットアークトラッキング終了指令の追加 **Step 3**:ウィービング運動指令を追加した後、アークトラッキング指令タイプで「終了」を選択してクリックし、「追加」をクリックして対応するLUA指令を生成します。 一段のオフセットトラッキングの典型的なLUAプログラム構造を以下に示します。 .. image:: coding/304.png :width: 6in :align: center .. centered:: 図表 9.25-8 典型的なオフセットアークトラッキングLUAプログラム カスタム衝突検出しきい値機能 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 概要 ++++++++ カスタム衝突検出しきい値機能は、現在の手動衝突レベル設定機能の拡張です。現在の衝突レベル設定が使用シーンに合わない場合、ユーザーは実際の状況に応じてカスタム衝突検出しきい値を設定できます。衝突検出しきい値は、関節検出しきい値とTCP検出しきい値に分けられます。 機能設定の説明 ++++++++++++++++++++++++++++ **Step1**:「ティーチングプログラム」をクリックし、「プログラム作成」を選択して、対応する画面を開きます。 **Step2**:上部の「新規作成」ボタンをクリックし、「example」を入力し、「empty.lua」を選択して、新しいluaスクリプトを作成します。図1に示します。 .. image:: coding/305.png :width: 3in :align: center .. centered:: 図表 9.26-1 新しいluaスクリプトの作成 関節検出しきい値機能設定の説明 *********************************** パラメータ設定の説明 """""""""""""""""""" **Step1**:制御命令画面で、「衝突検出」機能を選択します。図2に示します。「衝突検出開始」をクリックし、検出ステータスバーで「関節のみ」を選択します。実際の必要に応じて、J1-J6の入力値を変更します。数値範囲は、単位はNMです。このモードでは、X-RZ方向のTCPしきい値を変更しても有効になりません。実際の必要に応じて、ブロックの有無で「非ブロック」または「ブロック」を選択します。「追加」ボタンをクリックすると、開始指令の追加が完了します。 **Step2**:「衝突検出終了」をクリックし、「追加」ボタンをクリックすると、終了指令の追加が完了します。プログラムプレビュー画面は図3に示します。「適用」ボタンをクリックして、機能の追加を完了します。 .. note:: カスタム衝突検出しきい値機能は一連の指令です。開始したら速やかに終了する必要があります。 **Step3**:衝突検出機能内に、対応する運動指令を追加します。図4に示します。 .. image:: coding/306.png :width: 6in :align: center .. centered:: 図表 9.26-2 関節検出しきい値設定画面 .. image:: coding/307.png :width: 6in :align: center .. centered:: 図表 9.26-3 プログラムプレビュー画面 .. image:: coding/308.png :width: 6in :align: center .. centered:: 図表 9.26-4 luaスクリプトプログラム例画面 TCP検出しきい値機能設定の説明 ********************************** パラメータ設定の説明 """""""""""""""""""" **Step1**:制御命令画面で、「衝突検出」機能を選択します。図5に示します。「衝突検出開始」をクリックし、検出ステータスバーで「TCPのみ」を選択します。実際の必要に応じて、X-RZ方向の入力値を変更します。数値範囲は、単位はNです。このモードでは、J1-J6の関節しきい値を変更しても有効になりません。実際の必要に応じて、ブロックの有無で「非ブロック」または「ブロック」を選択します。「追加」ボタンをクリックすると、開始指令の追加が完了します。 **Step2**:「衝突検出終了」をクリックし、「追加」ボタンをクリックすると、終了指令の追加が完了します。プログラムプレビュー画面は図6に示します。「適用」ボタンをクリックして、機能の追加を完了します。 .. note:: カスタム衝突検出しきい値機能は一連の指令です。開始したら速やかに終了する必要があります。 .. image:: coding/309.png :width: 6in :align: center .. centered:: 図表 9.26-5 TCP検出しきい値設定画面 .. image:: coding/310.png :width: 6in :align: center .. centered:: 図表 9.26-6 プログラムプレビュー画面 **Step3**:衝突検出機能内に、対応する運動指令を追加します。図7に示します。 .. image:: coding/311.png :width: 6in :align: center .. centered:: 図表 9.26-7 luaスクリプトプログラム例画面 関節とTCP検出しきい値機能設定の説明 ***************************************** パラメータ設定の説明 """""""""""""""""""" **Step1**:制御命令画面で、「衝突検出」機能を選択します。図8に示します。「衝突検出開始」をクリックし、検出ステータスバーで「関節とTCP」を選択します。実際の必要に応じて、J1-J6とX-RZ方向の入力値を変更します。J1-J6の数値範囲は、単位はNMです。X-RZ方向の入力値は、単位はNです。実際の必要に応じて、ブロックの有無で「非ブロック」または「ブロック」を選択します。「追加」ボタンをクリックすると、開始指令の追加が完了します。 .. image:: coding/312.png :width: 6in :align: center .. centered:: 図表 9.26-8 関節とTCP検出しきい値設定画面 **Step2**:「衝突検出終了」をクリックし、「追加」ボタンをクリックすると、終了指令の追加が完了します。プログラムプレビュー画面は図9に示します。「適用」ボタンをクリックして、機能の追加を完了します。 .. note:: カスタム衝突検出しきい値機能は一連の指令です。開始したら速やかに終了する必要があります。 .. image:: coding/313.png :width: 6in :align: center .. centered:: 図表 9.26-9 プログラムプレビュー画面 **Step3**:衝突検出機能内に、対応する運動指令を追加します。図10に示します。 .. image:: coding/314.png :width: 6in :align: center .. centered:: 図表 9.26-10 luaスクリプトプログラム例画面 検出しきい値の推奨設定 *********************** 関節検出しきい値 """""""""""""""""""" 推奨する関節検出しきい値は、衝突レベルを10に設定することに相当します。数値が大きいほど衝突検出は鈍感になります。数値範囲は、単位はNMです。表中のデータは参考値です。実際の数値はロボットの運転速度と負荷状況に応じて調整する必要があります。 .. centered:: 表 9.26-1 関節推奨しきい値 .. list-table:: :widths: 30 20 20 20 20 20 20 :header-rows: 0 :class: sheet-center :align: center * - **ロボットタイプ** - **J1** - **J2** - **J3** - **J4** - **J5** - **J6** * - **FR3** - 0.4 - 0.7 - 0.6 - 0.3 - 0.3 - 0.3 * - **FR3-WMS** - 0.4 - 0.7 - 0.6 - 0.3 - 0.3 - 0.3 * - **FR3-WML** - 0.4 - 0.7 - 0.6 - 0.3 - 0.3 - 0.3 * - **FR3-C** - 0.4 - 0.7 - 0.6 - 0.3 - 0.3 - 0.3 * - **FR5** - 0.6 - 1 - 0.8 - 0.3 - 0.3 - 0.3 * - **FR10** - 2.5 - 3.6 - 0.8 - 0.6 - 0.6 - 0.6 * - **FR16** - 2.5 - 3.6 - 0.8 - 0.6 - 0.6 - 0.6 * - **FR20** - 5 - 8 - 4.5 - 0.9 - 0.9 - 0.9 * - **FR30** - 5 - 8 - 4.5 - 0.9 - 0.9 - 0.9 TCP検出しきい値 """""""""""""""""""" TCP検出しきい値は、数値が大きいほど衝突検出は鈍感になります。数値範囲は、単位はNです。表中のデータは参考値です。実際の数値はロボットの運転速度と負荷状況に応じて調整する必要があります。 .. centered:: 表 9.26-2 TCP検出しきい値 .. list-table:: :widths: 30 20 20 20 20 20 20 :header-rows: 0 :class: sheet-center :align: center * - **ロボットタイプ** - **X** - **Y** - **Z** - **RX** - **RY** - **RZ** * - **FR3** - 300 - 300 - 300 - 20 - 20 - 20 * - **FR3-WMS** - 300 - 300 - 300 - 20 - 20 - 20 * - **FR3-WML** - 300 - 300 - 300 - 20 - 20 - 20 * - **FR3-C** - 300 - 300 - 300 - 20 - 20 - 20 * - **FR5** - 300 - 300 - 300 - 20 - 20 - 20 * - **FR10** - 500 - 500 - 500 - 35 - 35 - 35 * - **FR16** - 500 - 500 - 500 - 35 - 35 - 35 * - **FR20** - 800 - 800 - 800 - 60 - 60 - 60 * - **FR30** - 800 - 800 - 800 - 60 - 60 - 60 T字形速度特性最適化+blending平滑機能 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 概要 ++++++++++++++ 2つの軌跡間でblendingを行うことで、完全停止による頻繁な起動・停止の問題を回避し、ロボットの運動効率を向上させることができます。本機能は主にPTP、LIN、ARC、CIRCLE命令間のblendingに対応しており、いずれもLua指令方式と運動設定スイッチ方式の2つの方法で実現できます。 操作手順 ++++++++++++++++++++++++++++ PTP-PTPのblending *************************************** Lua指令方式の使用 """""""""""""""""""""""""""""""""""""""""" **Step1**:PTP-PTP機能を実行するティーチングポイントを選択します。このマニュアルでは「A0」~「A5」をティーチングポイント名とします。 **Step2**:「ティーチングプログラム」→「プログラム作成」ボタンをクリックし、「運動指令」の「ポイントツーポイント」を選択し、「指令編集」でティーチングポイントを選択してデバッグ速度を設定し、運動保護で「加速度平滑モード」を選択し、平滑化が必要なポイントで「スムーズ遷移」パラメータを設定します。 .. image:: coding/315.png :width: 6in :align: center .. centered:: 図表 9.27-1 加速度平滑PTP指令のblending指令設定 **Step3**:複数のPTP指令を追加し、Luaプログラムを生成して実行すると、PTP-PTPのblending機能を実現できます。この方式はAccSmoothStart()とAccSmoothEnd()の間の指令のみに最適化されたT字形速度運動を使用し、その他の指令には元のT字形速度運動を使用します。 .. image:: coding/316.png :width: 4in :align: center .. centered:: 図表 9.27-2 Lua指令方式によるPTP-PTP間blendingの典型プログラム 運動設定スイッチ方式の使用 """"""""""""""""""""""""""""""""""""""""""""""""""""""" **Step1**:「初期設定」→「安全」→「運動設定」ボタンをクリックし、「加速度平滑モード」のスイッチをオンにします。 .. image:: coding/317.png :width: 6in :align: center .. centered:: 図表 9.27-3 加速度平滑モード設定スイッチの設定 **Step2**:PTP-PTP機能を実行するティーチングポイントを選択します。このマニュアルでは「A0」~「A5」をティーチングポイント名とします。 **Step3**:「ティーチングプログラム」→「プログラム作成」ボタンをクリックし、「運動指令」の「ポイントツーポイント」を選択し、「指令編集」でティーチングポイントを選択してデバッグ速度を設定し、運動保護で「なし」を選択し、平滑化が必要なポイントで「スムーズ遷移」パラメータを設定します。 .. image:: coding/318.png :width: 6in :align: center .. centered:: 図表 9.27-4 通常のPTP指令のblending指令設定 **Step4**:複数のPTP指令を追加し、Luaプログラムを生成して実行すると、PTP-PTPのblending機能を実現できます。典型プログラムは通常のPTP-PTPプログラムと同じです。この方式はすべての指令に最適化されたT字形速度運動を使用します。 .. image:: coding/319.png :width: 4in :align: center .. centered:: 図表 9.27-5 設定スイッチを使用したPTP-PTP間blendingの典型プログラム PTP-LINのblending *************************************** Lua指令方式の使用 """""""""""""""""""""""""""""""""""""""""" **Step1**:PTP-LIN機能を実行するティーチングポイントを選択します。このマニュアルでは「A0」~「A5」をティーチングポイント名とします。 **Step2**:「ティーチングプログラム」→「プログラム作成」ボタンをクリックし、「運動指令」の「ポイントツーポイント」を選択し、「指令編集」でティーチングポイントを選択してデバッグ速度を設定し、運動保護で「加速度平滑モード」を選択し、平滑化が必要なポイントで「スムーズ遷移」パラメータを設定します。 .. image:: coding/315.png :width: 6in :align: center .. centered:: 図表 9.27-6 加速度平滑PTP指令のblending指令設定 **Step3**:複数のPTPとLIN指令を追加し、Luaプログラムを生成して実行すると、PTP-LINのblending機能を実現できます。この方式はAccSmoothStart()とAccSmoothEnd()の間の指令のみに最適化されたT字形速度運動を使用し、その他の指令には元のT字形速度運動を使用します。 .. image:: coding/415.png :width: 4in :align: center .. centered:: 図表 9.27-7 Lua指令方式によるPTP-LIN間blendingの典型プログラム 運動設定スイッチ方式の使用 """"""""""""""""""""""""""""""""""""""""""""""""""""""" **Step1**:「初期設定」→「安全」→「運動設定」ボタンをクリックし、「加速度平滑モード」のスイッチをオンにします。 .. image:: coding/317.png :width: 6in :align: center .. centered:: 図表 9.27-8 加速度平滑モード設定スイッチの設定 **Step2**:PTP-LIN機能を実行するティーチングポイントを選択します。このマニュアルでは「A0」~「A5」をティーチングポイント名とします。 **Step3**:「ティーチングプログラム」→「プログラム作成」ボタンをクリックし、「運動指令」の「ポイントツーポイント」を選択し、「指令編集」でティーチングポイントを選択してデバッグ速度を設定し、運動保護で「なし」を選択し、平滑化が必要なポイントで「スムーズ遷移」パラメータを設定します。 .. image:: coding/318.png :width: 6in :align: center .. centered:: 図表 9.27-9 通常のPTP指令のblending指令設定 **Step4**:複数のPTPとLIN指令を追加し、Luaプログラムを生成して実行すると、PTP-LINのblending機能を実現できます。典型プログラムは通常のPTP-LINプログラムと同じです。この方式はすべての指令に最適化されたT字形速度運動を使用します。 .. image:: coding/397.png :width: 4in :align: center .. centered:: 図表 9.27-10 設定スイッチを使用したPTP-LIN間blendingの典型プログラム PTP-ARCのblending *************************************** Lua指令方式の使用 """""""""""""""""""""""""""""""""""""""""" **Step1**:PTP-ARC機能を実行するティーチングポイントを選択します。このマニュアルでは「A0」~「A8」をティーチングポイント名とします。 **Step2**:「ティーチングプログラム」→「プログラム作成」ボタンをクリックし、「運動指令」の「ポイントツーポイント」を選択し、「指令編集」でティーチングポイントを選択してデバッグ速度を設定し、運動保護で「加速度平滑モード」を選択し、平滑化が必要なポイントで「スムーズ遷移」パラメータを設定します。 .. image:: coding/315.png :width: 6in :align: center .. centered:: 図表 9.27-11 加速度平滑PTP指令のblending指令設定 **Step3**:複数のPTPとARC指令を追加し、Luaプログラムを生成して実行すると、PTP-ARCのblending機能を実現できます。この方式はAccSmoothStart()とAccSmoothEnd()の間の指令のみに最適化されたT字形速度運動を使用し、その他の指令には元のT字形速度運動を使用します。 .. image:: coding/398.png :width: 4in :align: center .. centered:: 図表 9.27-12 Lua指令方式によるPTP-ARC間blendingの典型プログラム 運動設定スイッチ方式の使用 """"""""""""""""""""""""""""""""""""""""""""""""""""""" **Step1**:「初期設定」→「安全」→「運動設定」ボタンをクリックし、「加速度平滑モード」のスイッチをオンにします。 .. image:: coding/317.png :width: 6in :align: center .. centered:: 図表 9.27-13 加速度平滑モード設定スイッチの設定 **Step2**:PTP-ARC機能を実行するティーチングポイントを選択します。このマニュアルでは「A0」~「A8」をティーチングポイント名とします。 **Step3**:「ティーチングプログラム」→「プログラム作成」ボタンをクリックし、「運動指令」の「ポイントツーポイント」を選択し、「指令編集」でティーチングポイントを選択してデバッグ速度を設定し、運動保護で「なし」を選択し、平滑化が必要なポイントで「スムーズ遷移」パラメータを設定します。 .. image:: coding/318.png :width: 6in :align: center .. centered:: 図表 9.27-14 通常のPTP指令のblending指令設定 **Step4**:複数のPTPとARC指令を追加し、Luaプログラムを生成して実行すると、PTP-ARCのblending機能を実現できます。典型プログラムは通常のPTP-ARCプログラムと同じです。この方式はすべての指令に最適化されたT字形速度運動を使用します。 .. image:: coding/399.png :width: 4in :align: center .. centered:: 図表 9.27-15 設定スイッチを使用したPTP-ARC間blendingの典型プログラム PTP-CIRCLEのblending *************************************** Lua指令方式の使用 """""""""""""""""""""""""""""""""""""""""" **Step1**:PTP-CIRCLE機能を実行するティーチングポイントを選択します。このマニュアルでは「A0」~「A8」をティーチングポイント名とします。 **Step2**:「ティーチングプログラム」→「プログラム作成」ボタンをクリックし、「運動指令」の「ポイントツーポイント」を選択し、「指令編集」でティーチングポイントを選択してデバッグ速度を設定し、運動保護で「加速度平滑モード」を選択し、平滑化が必要なポイントで「スムーズ遷移」パラメータを設定します。 .. image:: coding/315.png :width: 6in :align: center .. centered:: 図表 9.27-16 加速度平滑PTP指令のblending指令設定 **Step3**:複数のPTPとCIRCLE指令を追加し、Luaプログラムを生成して実行すると、PTP-CIRCLEのblending機能を実現できます。この方式はAccSmoothStart()とAccSmoothEnd()の間の指令のみに最適化されたT字形速度運動を使用し、その他の指令には元のT字形速度運動を使用します。 .. image:: coding/400.png :width: 4in :align: center .. centered:: 図表 9.27-17 Lua指令方式によるPTP-CIRCLE間blendingの典型プログラム 運動設定スイッチ方式の使用 """"""""""""""""""""""""""""""""""""""""""""""""""""""" **Step1**:「初期設定」→「安全」→「運動設定」ボタンをクリックし、「加速度平滑モード」のスイッチをオンにします。 .. image:: coding/317.png :width: 6in :align: center .. centered:: 図表 9.27-18 加速度平滑モード設定スイッチの設定 **Step2**:PTP-CIRCLE機能を実行するティーチングポイントを選択します。このマニュアルでは「A0」~「A8」をティーチングポイント名とします。 **Step3**:「ティーチングプログラム」→「プログラム作成」ボタンをクリックし、「運動指令」の「ポイントツーポイント」を選択し、「指令編集」でティーチングポイントを選択してデバッグ速度を設定し、運動保護で「なし」を選択し、平滑化が必要なポイントで「スムーズ遷移」パラメータを設定します。 .. image:: coding/318.png :width: 6in :align: center .. centered:: 図表 9.27-19 通常のPTP指令のblending指令設定 **Step4**:複数のPTPとCIRCLE指令を追加し、Luaプログラムを生成して実行すると、PTP-CIRCLEのblending機能を実現できます。典型プログラムは通常のPTP-CIRCLEプログラムと同じです。この方式はすべての指令に最適化されたT字形速度運動を使用します。 .. image:: coding/401.png :width: 4in :align: center .. centered:: 図表 9.27-20 設定スイッチを使用したPTP-CIRCLE間blendingの典型プログラム LIN-PTPのblending *************************************** Lua指令方式の使用 """""""""""""""""""""""""""""""""""""""""" **Step1**:LIN-PTP機能を実行するティーチングポイントを選択します。このマニュアルでは「A0」~「A5」をティーチングポイント名とします。 **Step2**:「ティーチングプログラム」→「プログラム作成」ボタンをクリックし、「運動指令」の「直線」を選択し、「指令編集」でティーチングポイントを選択してデバッグ速度を設定し、運動保護で「加速度平滑モード」を選択し、平滑化が必要なポイントで「遷移半径」と「遷移方式」パラメータを設定します。遷移方式は「コーナー遷移」と「内接遷移」を選択できます。 .. image:: coding/402.png :width: 6in :align: center .. centered:: 図表 9.27-21 加速度平滑LIN指令のblending指令設定 **Step3**:複数のLINとPTP指令を追加し、Luaプログラムを生成して実行すると、LIN-PTPのblending機能を実現できます。この方式はAccSmoothStart()とAccSmoothEnd()の間の指令のみに最適化されたT字形速度運動を使用し、その他の指令には元のT字形速度運動を使用します。 .. image:: coding/403.png :width: 4in :align: center .. centered:: 図表 9.27-22 Lua指令方式によるLIN-PTP間blendingの典型プログラム 運動設定スイッチ方式の使用 """"""""""""""""""""""""""""""""""""""""""""""""""""""" **Step1**:「初期設定」→「安全」→「運動設定」ボタンをクリックし、「加速度平滑モード」のスイッチをオンにします。 .. image:: coding/317.png :width: 6in :align: center .. centered:: 図表 9.27-23 加速度平滑モード設定スイッチの設定 **Step2**:LIN-PTP機能を実行するティーチングポイントを選択します。このマニュアルでは「A0」~「A5」をティーチングポイント名とします。 **Step3**:「ティーチングプログラム」→「プログラム作成」ボタンをクリックし、「運動指令」の「直線」を選択し、「指令編集」でティーチングポイントを選択してデバッグ速度を設定し、運動保護で「なし」を選択し、平滑化が必要なポイントで「遷移半径」と「遷移方式」パラメータを設定します。遷移方式は「コーナー遷移」と「内接遷移」を選択できます。 .. image:: coding/404.png :width: 6in :align: center .. centered:: 図表 9.27-24 通常のLIN指令のblending指令設定 **Step4**:Luaプログラムを生成して実行すると、LIN-PTPのblending機能を実現できます。典型プログラムは通常のLIN-PTPプログラムと同じです。この方式はすべての指令に最適化されたT字形速度運動を使用します。 .. image:: coding/405.png :width: 4in :align: center .. centered:: 図表 9.27-25 設定スイッチを使用したLIN-PTP間blendingの典型プログラム LIN-LINのblending *************************************** Lua指令方式の使用 """""""""""""""""""""""""""""""""""""""""" **Step1**:LIN-LIN機能を実行するティーチングポイントを選択します。このマニュアルでは「A0」~「A5」をティーチングポイント名とします。 **Step2**:「ティーチングプログラム」→「プログラム作成」ボタンをクリックし、「運動指令」の「直線」を選択し、「指令編集」でティーチングポイントを選択してデバッグ速度を設定し、運動保護で「加速度平滑モード」を選択し、平滑化が必要なポイントで「遷移半径」と「遷移方式」パラメータを設定します。遷移方式は「コーナー遷移」と「内接遷移」を選択できます。 .. image:: coding/402.png :width: 6in :align: center .. centered:: 図表 9.27-26 加速度平滑LIN指令のblending指令設定 **Step3**:複数のLIN指令を追加し、Luaプログラムを生成して実行すると、LIN-LINのblending機能を実現できます。この方式はAccSmoothStart()とAccSmoothEnd()の間の指令のみに最適化されたT字形速度運動を使用し、その他の指令には元のT字形速度運動を使用します。 .. image:: coding/416.png :width: 4in :align: center .. centered:: 図表 9.27-27 Lua指令方式によるLIN-LIN間blendingの典型プログラム 運動設定スイッチ方式の使用 """"""""""""""""""""""""""""""""""""""""""""""""""""""" **Step1**:「初期設定」→「安全」→「運動設定」ボタンをクリックし、「加速度平滑モード」のスイッチをオンにします。 .. image:: coding/317.png :width: 6in :align: center .. centered:: 図表 9.27-28 加速度平滑モード設定スイッチの設定 **Step2**:LIN-LIN機能を実行するティーチングポイントを選択します。このマニュアルでは「A0」~「A5」をティーチングポイント名とします。 **Step3**:「ティーチングプログラム」→「プログラム作成」ボタンをクリックし、「運動指令」の「直線」を選択し、「指令編集」でティーチングポイントを選択してデバッグ速度を設定し、運動保護で「なし」を選択し、平滑化が必要なポイントで「遷移半径」と「遷移方式」パラメータを設定します。遷移方式は「コーナー遷移」と「内接遷移」を選択できます。 .. image:: coding/404.png :width: 6in :align: center .. centered:: 図表 9.27-29 通常のLIN指令のblending指令設定 **Step4**:Luaプログラムを生成して実行すると、LIN-LINのblending機能を実現できます。典型プログラムは通常のLIN-LINプログラムと同じです。この方式はすべての指令に最適化されたT字形速度運動を使用します。 .. image:: coding/417.png :width: 4in :align: center .. centered:: 図表 9.27-30 設定スイッチを使用したLIN-LIN間blendingの典型プログラム LIN-ARCのblending *************************************** Lua指令方式の使用 """""""""""""""""""""""""""""""""""""""""" **Step1**:LIN-ARC機能を実行するティーチングポイントを選択します。このマニュアルでは「A0」~「A8」をティーチングポイント名とします。 **Step2**:「ティーチングプログラム」→「プログラム作成」ボタンをクリックし、「運動指令」の「直線」を選択し、「指令編集」でティーチングポイントを選択してデバッグ速度を設定し、運動保護で「加速度平滑モード」を選択し、平滑化が必要なポイントで「遷移半径」と「遷移方式」パラメータを設定します。遷移方式は「コーナー遷移」と「内接遷移」を選択できます。 .. image:: coding/402.png :width: 6in :align: center .. centered:: 図表 9.27-31 加速度平滑LIN指令のblending指令設定 **Step3**:複数のLINとARC指令を追加し、Luaプログラムを生成して実行すると、LIN-ARCのblending機能を実現できます。この方式はAccSmoothStart()とAccSmoothEnd()の間の指令のみに最適化されたT字形速度運動を使用し、その他の指令には元のT字形速度運動を使用します。 .. image:: coding/406.png :width: 4in :align: center .. centered:: 図表 9.27-32 Lua指令方式によるLIN-ARC間blendingの典型プログラム 運動設定スイッチ方式の使用 """"""""""""""""""""""""""""""""""""""""""""""""""""""" **Step1**:「初期設定」→「安全」→「運動設定」ボタンをクリックし、「加速度平滑モード」のスイッチをオンにします。 .. image:: coding/317.png :width: 6in :align: center .. centered:: 図表 9.27-33 加速度平滑モード設定スイッチの設定 **Step2**:LIN-ARC機能を実行するティーチングポイントを選択します。このマニュアルでは「A0」~「A8」をティーチングポイント名とします。 **Step3**:「ティーチングプログラム」→「プログラム作成」ボタンをクリックし、「運動指令」の「直線」を選択し、「指令編集」でティーチングポイントを選択してデバッグ速度を設定し、運動保護で「なし」を選択し、平滑化が必要なポイントで「遷移半径」と「遷移方式」パラメータを設定します。遷移方式は「コーナー遷移」と「内接遷移」を選択できます。 .. image:: coding/404.png :width: 6in :align: center .. centered:: 図表 9.27-34 通常のLIN指令のblending指令設定 **Step4**:Luaプログラムを生成して実行すると、LIN-ARCのblending機能を実現できます。典型プログラムは通常のLIN-ARCプログラムと同じです。この方式はすべての指令に最適化されたT字形速度運動を使用します。 .. image:: coding/407.png :width: 4in :align: center .. centered:: 図表 9.27-35 設定スイッチを使用したLIN-ARC間blendingの典型プログラム LIN-CIRCLEのblending *************************************** Lua指令方式の使用 """""""""""""""""""""""""""""""""""""""""" **Step1**:LIN-CIRCLE機能を実行するティーチングポイントを選択します。このマニュアルでは「A0」~「A8」をティーチングポイント名とします。 **Step2**:「ティーチングプログラム」→「プログラム作成」ボタンをクリックし、「運動指令」の「直線」を選択し、「指令編集」でティーチングポイントを選択してデバッグ速度を設定し、運動保護で「加速度平滑モード」を選択し、平滑化が必要なポイントで「遷移半径」と「遷移方式」パラメータを設定します。遷移方式は「コーナー遷移」と「内接遷移」を選択できます。 .. image:: coding/402.png :width: 6in :align: center .. centered:: 図表 9.27-36 加速度平滑LIN指令のblending指令設定 **Step3**:複数のLINとCIRCLE指令を追加し、Luaプログラムを生成して実行すると、LIN-CIRCLEのblending機能を実現できます。この方式はAccSmoothStart()とAccSmoothEnd()の間の指令のみに最適化されたT字形速度運動を使用し、その他の指令には元のT字形速度運動を使用します。 .. image:: coding/408.png :width: 4in :align: center .. centered:: 図表 9.27-37 Lua指令方式によるLIN-CIRCLE間blendingの典型プログラム 運動設定スイッチ方式の使用 """"""""""""""""""""""""""""""""""""""""""""""""""""""" **Step1**:「初期設定」→「安全」→「運動設定」ボタンをクリックし、「加速度平滑モード」のスイッチをオンにします。 .. image:: coding/317.png :width: 6in :align: center .. centered:: 図表 9.27-38 加速度平滑モード設定スイッチの設定 **Step2**:LIN-CIRCLE機能を実行するティーチングポイントを選択します。このマニュアルでは「A0」~「A8」をティーチングポイント名とします。 **Step3**:「ティーチングプログラム」→「プログラム作成」ボタンをクリックし、「運動指令」の「直線」を選択し、「指令編集」でティーチングポイントを選択してデバッグ速度を設定し、運動保護で「なし」を選択し、平滑化が必要なポイントで「遷移半径」と「遷移方式」パラメータを設定します。遷移方式は「コーナー遷移」と「内接遷移」を選択できます。 .. image:: coding/404.png :width: 6in :align: center .. centered:: 図表 9.27-39 通常のLIN指令のblending指令設定 **Step4**:複数のLINとCIRCLE指令を追加し、Luaプログラムを生成して実行すると、LIN-CIRCLEのblending機能を実現できます。典型プログラムは通常のLIN-ARCプログラムと同じです。この方式はすべての指令に最適化されたT字形速度運動を使用します。 .. image:: coding/409.png :width: 4in :align: center .. centered:: 図表 9.27-40 設定スイッチを使用したLIN-CIRCLE間blendingの典型プログラム ARC-PTPのblending *************************************** Lua指令方式の使用 """""""""""""""""""""""""""""""""""""""""" **Step1**:ARC-PTP機能を実行するティーチングポイントを選択します。このマニュアルでは「A0」~「A9」をティーチングポイント名とします。 **Step2**:「ティーチングプログラム」→「プログラム作成」ボタンをクリックし、「運動指令」の「円弧」を選択し、「指令編集」でティーチングポイントを選択してデバッグ速度を設定し、運動保護で「加速度平滑モード」を選択し、平滑化が必要なポイントで「スムーズ遷移」パラメータを設定します。 .. image:: coding/410.png :width: 6in :align: center .. centered:: 図表 9.27-41 加速度平滑ARC指令のblending指令設定 **Step3**:複数のARCとPTP指令を追加し、Luaプログラムを生成して実行すると、ARC-PTPのblending機能を実現できます。この方式はAccSmoothStart()とAccSmoothEnd()の間の指令のみに最適化されたT字形速度運動を使用し、その他の指令には元のT字形速度運動を使用します。 .. image:: coding/411.png :width: 4in :align: center .. centered:: 図表 9.27-42 Lua指令方式によるARC-PTP間blendingの典型プログラム 運動設定スイッチ方式の使用 """"""""""""""""""""""""""""""""""""""""""""""""""""""" **Step1**:「初期設定」→「安全」→「運動設定」ボタンをクリックし、「加速度平滑モード」のスイッチをオンにします。 .. image:: coding/317.png :width: 6in :align: center .. centered:: 図表 9.27-43 加速度平滑モード設定スイッチの設定 **Step2**:ARC-PTP機能を実行するティーチングポイントを選択します。このマニュアルでは「A0」~「A9」をティーチングポイント名とします。 **Step3**:「ティーチングプログラム」→「プログラム作成」ボタンをクリックし、「運動指令」の「円弧」を選択し、「指令編集」でティーチングポイントを選択してデバッグ速度を設定し、運動保護で「なし」を選択し、平滑化が必要なポイントで「スムーズ遷移」パラメータを設定します。 .. image:: coding/418.png :width: 6in :align: center .. centered:: 図表 9.27-44 通常のARC指令のblending指令設定 **Step4**:複数のARCとPTP指令を追加し、Luaプログラムを生成して実行すると、ARC-PTPのblending機能を実現できます。典型プログラムは通常のARC-PTPプログラムと同じです。この方式はすべての指令に最適化されたT字形速度運動を使用します。 .. image:: coding/412.png :width: 4in :align: center .. centered:: 図表 9.27-45 設定スイッチを使用したARC-PTP間blendingの典型プログラム ARC-LINのblending *************************************** Lua指令方式の使用 """""""""""""""""""""""""""""""""""""""""" **Step1**:ARC-LIN機能を実行するティーチングポイントを選択します。このマニュアルでは「A0」~「A9」をティーチングポイント名とします。 **Step2**:「ティーチングプログラム」→「プログラム作成」ボタンをクリックし、「運動指令」の「円弧」を選択し、「指令編集」でティーチングポイントを選択してデバッグ速度を設定し、運動保護で「加速度平滑モード」を選択し、平滑化が必要なポイントで「スムーズ遷移」パラメータを設定します。 .. image:: coding/410.png :width: 6in :align: center .. centered:: 図表 9.27-46 加速度平滑ARC指令のblending指令設定 **Step3**:複数のARCとLIN指令を追加し、Luaプログラムを生成して実行すると、ARC-LINのblending機能を実現できます。この方式はAccSmoothStart()とAccSmoothEnd()の間の指令のみに最適化されたT字形速度運動を使用し、その他の指令には元のT字形速度運動を使用します。 .. image:: coding/413.png :width: 4in :align: center .. centered:: 図表 9.27-47 Lua指令方式によるARC-LIN間blendingの典型プログラム 運動設定スイッチ方式の使用 """"""""""""""""""""""""""""""""""""""""""""""""""""""" **Step1**:「初期設定」→「安全」→「運動設定」ボタンをクリックし、「加速度平滑モード」のスイッチをオンにします。 .. image:: coding/317.png :width: 6in :align: center .. centered:: 図表 9.27-48 加速度平滑モード設定スイッチの設定 **Step2**:ARC-LIN機能を実行するティーチングポイントを選択します。このマニュアルでは「A0」~「A9」をティーチングポイント名とします。 **Step3**:「ティーチングプログラム」→「プログラム作成」ボタンをクリックし、「運動指令」の「円弧」を選択し、「指令編集」でティーチングポイントを選択してデバッグ速度を設定し、運動保護で「なし」を選択し、平滑化が必要なポイントで「スムーズ遷移」パラメータを設定します。 .. image:: coding/419.png :width: 6in :align: center .. centered:: 図表 9.27-49 通常のARC指令のblending指令設定 **Step4**:複数のARCとLIN指令を追加し、Luaプログラムを生成して実行すると、ARC-LINのblending機能を実現できます。典型プログラムは通常のARC-LINプログラムと同じです。この方式はすべての指令に最適化されたT字形速度運動を使用します。 .. image:: coding/414.png :width: 4in :align: center .. centered:: 図表 9.27-50 設定スイッチを使用したARC-LIN間blendingの典型プログラム ARC-ARCのblending *************************************** Lua指令方式の使用 """""""""""""""""""""""""""""""""""""""""" **Step1**:ARC-ARC機能を実行するティーチングポイントを選択します。このマニュアルでは「A0」~「A12」をティーチングポイント名とします。 **Step2**:「ティーチングプログラム」→「プログラム作成」ボタンをクリックし、「運動指令」の「円弧」を選択し、「指令編集」でティーチングポイントを選択してデバッグ速度を設定し、運動保護で「加速度平滑モード」を選択し、平滑化が必要なポイントで「スムーズ遷移」パラメータを設定します。 .. image:: coding/410.png :width: 6in :align: center .. centered:: 図表 9.27-51 加速度平滑ARC指令のblending指令設定 **Step3**:複数のARC指令を追加し、Luaプログラムを生成して実行すると、ARC-ARCのblending機能を実現できます。この方式はAccSmoothStart()とAccSmoothEnd()の間の指令のみに最適化されたT字形速度運動を使用し、その他の指令には元のT字形速度運動を使用します。 .. image:: coding/420.png :width: 4in :align: center .. centered:: 図表 9.27-52 Lua指令方式によるARC-ARC間blendingの典型プログラム 運動設定スイッチ方式の使用 """"""""""""""""""""""""""""""""""""""""""""""""""""""" **Step1**:「初期設定」→「安全」→「運動設定」ボタンをクリックし、「加速度平滑モード」のスイッチをオンにします。 .. image:: coding/317.png :width: 6in :align: center .. centered:: 図表 9.27-53 加速度平滑モード設定スイッチの設定 **Step2**:ARC-ARC機能を実行するティーチングポイントを選択します。このマニュアルでは「A0」~「A12」をティーチングポイント名とします。 **Step3**:「ティーチングプログラム」→「プログラム作成」ボタンをクリックし、「運動指令」の「円弧」を選択し、「指令編集」でティーチングポイントを選択してデバッグ速度を設定し、運動保護で「なし」を選択し、平滑化が必要なポイントで「スムーズ遷移」パラメータを設定します。 .. image:: coding/419.png :width: 6in :align: center .. centered:: 図表 9.27-54 通常のARC指令のblending指令設定 **Step4**:複数のARC指令を追加し、Luaプログラムを生成して実行すると、ARC-ARCのblending機能を実現できます。典型プログラムは通常のARC-ARCプログラムと同じです。この方式はすべての指令に最適化されたT字形速度運動を使用します。 .. image:: coding/421.png :width: 4in :align: center .. centered:: 図表 9.27-55 設定スイッチを使用したARC-ARC間blendingの典型プログラム ARC-CIRCLEのblending *************************************** Lua指令方式の使用 """""""""""""""""""""""""""""""""""""""""" **Step1**:ARC-CIRCLE機能を実行するティーチングポイントを選択します。このマニュアルでは「A0」~「A12」をティーチングポイント名とします。 **Step2**:「ティーチングプログラム」→「プログラム作成」ボタンをクリックし、「運動指令」の「円弧」を選択し、「指令編集」でティーチングポイントを選択してデバッグ速度を設定し、運動保護で「加速度平滑モード」を選択し、平滑化が必要なポイントで「スムーズ遷移」パラメータを設定します。 .. image:: coding/410.png :width: 6in :align: center .. centered:: 図表 9.27-56 加速度平滑ARC指令のblending指令設定 **Step3**:複数のARCとCIRCLE指令を追加し、Luaプログラムを生成して実行すると、ARC-CIRCLEのblending機能を実現できます。この方式はAccSmoothStart()とAccSmoothEnd()の間の指令のみに最適化されたT字形速度運動を使用し、その他の指令には元のT字形速度運動を使用します。 .. image:: coding/422.png :width: 4in :align: center .. centered:: 図表 9.27-57 Lua指令方式によるARC-CIRCLE間blendingの典型プログラム 運動設定スイッチ方式の使用 """"""""""""""""""""""""""""""""""""""""""""""""""""""" **Step1**:「初期設定」→「安全」→「運動設定」ボタンをクリックし、「加速度平滑モード」のスイッチをオンにします。 .. image:: coding/317.png :width: 6in :align: center .. centered:: 図表 9.27-58 加速度平滑モード設定スイッチの設定 **Step2**:ARC-CIRCLE機能を実行するティーチングポイントを選択します。このマニュアルでは「A0」~「A12」をティーチングポイント名とします。 **Step3**:「ティーチングプログラム」→「プログラム作成」ボタンをクリックし、「運動指令」の「円弧」を選択し、「指令編集」でティーチングポイントを選択してデバッグ速度を設定し、運動保護で「なし」を選択し、平滑化が必要なポイントで「スムーズ遷移」パラメータを設定します。 .. image:: coding/419.png :width: 6in :align: center .. centered:: 図表 9.27-59 通常のARC指令のblending指令設定 **Step4**:複数のARCとCIRCLE指令を追加し、Luaプログラムを生成して実行すると、ARC-CIRCLEのblending機能を実現できます。典型プログラムは通常のARC-CIRCLEプログラムと同じです。この方式はすべての指令に最適化されたT字形速度運動を使用します。 .. image:: coding/423.png :width: 4in :align: center .. centered:: 図表 9.27-60 設定スイッチを使用したARC-CIRCLE間blendingの典型プログラム CIRCLE-PTPのblending *************************************** Lua指令方式の使用 """""""""""""""""""""""""""""""""""""""""" **Step1**:CIRCLE-PTP機能を実行するティーチングポイントを選択します。このマニュアルでは「A0」~「A9」をティーチングポイント名とします。 **Step2**:「ティーチングプログラム」→「プログラム作成」ボタンをクリックし、「運動指令」の「真円」を選択し、「指令編集」でティーチングポイントを選択してデバッグ速度を設定し、運動保護で「加速度平滑モード」を選択し、平滑化が必要なポイントで「スムーズ遷移」パラメータを設定します。 .. image:: coding/424.png :width: 6in :align: center .. centered:: 図表 9.27-61 加速度平滑CIRCLE指令のblending指令設定 **Step3**:複数のCIRCLEとPTP指令を追加し、Luaプログラムを生成して実行すると、CIRCLE-PTPのblending機能を実現できます。この方式はAccSmoothStart()とAccSmoothEnd()の間の指令のみに最適化されたT字形速度運動を使用し、その他の指令には元のT字形速度運動を使用します。 .. image:: coding/425.png :width: 4in :align: center .. centered:: 図表 9.27-62 Lua指令方式によるCIRCLE-PTP間blendingの典型プログラム 運動設定スイッチ方式の使用 """"""""""""""""""""""""""""""""""""""""""""""""""""""" **Step1**:「初期設定」→「安全」→「運動設定」ボタンをクリックし、「加速度平滑モード」のスイッチをオンにします。 .. image:: coding/317.png :width: 6in :align: center .. centered:: 図表 9.27-63 加速度平滑モード設定スイッチの設定 **Step2**:CIRCLE-PTP機能を実行するティーチングポイントを選択します。このマニュアルでは「A0」~「A9」をティーチングポイント名とします。 **Step3**:「ティーチングプログラム」→「プログラム作成」ボタンをクリックし、「運動指令」の「真円」を選択し、「指令編集」でティーチングポイントを選択してデバッグ速度を設定し、運動保護で「なし」を選択し、平滑化が必要なポイントで「スムーズ遷移」パラメータを設定します。 .. image:: coding/426.png :width: 6in :align: center .. centered:: 図表 9.27-64 通常のCIRCLE指令のblending指令設定 **Step4**:複数のCIRCLEとPTP指令を追加し、Luaプログラムを生成して実行すると、CIRCLE-PTPのblending機能を実現できます。典型プログラムは通常のCIRCLE-PTPプログラムと同じです。この方式はすべての指令に最適化されたT字形速度運動を使用します。 .. image:: coding/427.png :width: 4in :align: center .. centered:: 図表 9.27-65 設定スイッチを使用したCIRCLE-PTP間blendingの典型プログラム CIRCLE-LINのblending *************************************** Lua指令方式の使用 """""""""""""""""""""""""""""""""""""""""" **Step1**:CIRCLE-LIN機能を実行するティーチングポイントを選択します。このマニュアルでは「A0」~「A12」をティーチングポイント名とします。 **Step2**:「ティーチングプログラム」→「プログラム作成」ボタンをクリックし、「運動指令」の「真円」を選択し、「指令編集」でティーチングポイントを選択してデバッグ速度を設定し、運動保護で「加速度平滑モード」を選択し、平滑化が必要なポイントで「スムーズ遷移」パラメータを設定します。 .. image:: coding/424.png :width: 6in :align: center .. centered:: 図表 9.27-66 加速度平滑CIRCLE指令のblending指令設定 **Step3**:複数のCIRCLEとLIN指令を追加し、Luaプログラムを生成して実行すると、CIRCLE-LINのblending機能を実現できます。この方式はAccSmoothStart()とAccSmoothEnd()の間の指令のみに最適化されたT字形速度運動を使用し、その他の指令には元のT字形速度運動を使用します。 .. image:: coding/428.png :width: 4in :align: center .. centered:: 図表 9.27-67 Lua指令方式によるCIRCLE-LIN間blendingの典型プログラム 運動設定スイッチ方式の使用 """"""""""""""""""""""""""""""""""""""""""""""""""""""" **Step1**:「初期設定」→「安全」→「運動設定」ボタンをクリックし、「加速度平滑モード」のスイッチをオンにします。 .. image:: coding/317.png :width: 6in :align: center .. centered:: 図表 9.27-68 加速度平滑モード設定スイッチの設定 **Step2**:CIRCLE-LIN機能を実行するティーチングポイントを選択します。このマニュアルでは「A0」~「A12」をティーチングポイント名とします。 **Step3**:「ティーチングプログラム」→「プログラム作成」ボタンをクリックし、「運動指令」の「真円」を選択し、「指令編集」でティーチングポイントを選択してデバッグ速度を設定し、運動保護で「なし」を選択し、平滑化が必要なポイントで「スムーズ遷移」パラメータを設定します。 .. image:: coding/426.png :width: 6in :align: center .. centered:: 図表 9.27-69 通常のCIRCLE指令のblending指令設定 **Step4**:複数のCIRCLEとLIN指令を追加し、Luaプログラムを生成して実行すると、CIRCLE-LINのblending機能を実現できます。典型プログラムは通常のCIRCLE-LINプログラムと同じです。この方式はすべての指令に最適化されたT字形速度運動を使用します。 .. image:: coding/429.png :width: 4in :align: center .. centered:: 図表 9.27-70 設定スイッチを使用したCIRCLE-LIN間blendingの典型プログラム CIRCLE-ARCのblending *************************************** Lua指令方式の使用 """""""""""""""""""""""""""""""""""""""""" **Step1**:CIRCLE-ARC機能を実行するティーチングポイントを選択します。このマニュアルでは「A0」~「A12」をティーチングポイント名とします。 **Step2**:「ティーチングプログラム」→「プログラム作成」ボタンをクリックし、「運動指令」の「真円」を選択し、「指令編集」でティーチングポイントを選択してデバッグ速度を設定し、運動保護で「加速度平滑モード」を選択し、平滑化が必要なポイントで「スムーズ遷移」パラメータを設定します。 .. image:: coding/424.png :width: 6in :align: center .. centered:: 図表 9.27-71 加速度平滑CIRCLE指令のblending指令設定 **Step3**:複数のCIRCLEとARC指令を追加し、Luaプログラムを生成して実行すると、CIRCLE-ARCのblending機能を実現できます。この方式はAccSmoothStart()とAccSmoothEnd()の間の指令のみに最適化されたT字形速度運動を使用し、その他の指令には元のT字形速度運動を使用します。 .. image:: coding/430.png :width: 4in :align: center .. centered:: 図表 9.27-72 Lua指令方式によるCIRCLE-ARC間blendingの典型プログラム 運動設定スイッチ方式の使用 """"""""""""""""""""""""""""""""""""""""""""""""""""""" **Step1**:「初期設定」→「安全」→「運動設定」ボタンをクリックし、「加速度平滑モード」のスイッチをオンにします。 .. image:: coding/317.png :width: 6in :align: center .. centered:: 図表 9.27-73 加速度平滑モード設定スイッチの設定 **Step2**:CIRCLE-ARC機能を実行するティーチングポイントを選択します。このマニュアルでは「A0」~「A12」をティーチングポイント名とします。 **Step3**:「ティーチングプログラム」→「プログラム作成」ボタンをクリックし、「運動指令」の「真円」を選択し、「指令編集」でティーチングポイントを選択してデバッグ速度を設定し、運動保護で「なし」を選択し、平滑化が必要なポイントで「スムーズ遷移」パラメータを設定します。 .. image:: coding/426.png :width: 6in :align: center .. centered:: 図表 9.27-74 通常のCIRCLE指令のblending指令設定 **Step4**:複数のCIRCLEとARC指令を追加し、Luaプログラムを生成して実行すると、CIRCLE-ARCのblending機能を実現できます。典型プログラムは通常のCIRCLE-ARCプログラムと同じです。この方式はすべての指令に最適化されたT字形速度運動を使用します。 .. image:: coding/431.png :width: 4in :align: center .. centered:: 図表 9.27-75 設定スイッチを使用したCIRCLE-ARC間blendingの典型プログラム CIRCLE-CIRCLEのblending *************************************** Lua指令方式の使用 """""""""""""""""""""""""""""""""""""""""" **Step1**:CIRCLE-CIRCLE機能を実行するティーチングポイントを選択します。このマニュアルでは「A0」~「A12」をティーチングポイント名とします。 **Step2**:「ティーチングプログラム」→「プログラム作成」ボタンをクリックし、「運動指令」の「真円」を選択し、「指令編集」でティーチングポイントを選択してデバッグ速度を設定し、運動保護で「加速度平滑モード」を選択し、平滑化が必要なポイントで「スムーズ遷移」パラメータを設定します。 .. image:: coding/424.png :width: 6in :align: center .. centered:: 図表 9.27-76 加速度平滑CIRCLE指令のblending指令設定 **Step3**:複数のCIRCLE指令を追加し、Luaプログラムを生成して実行すると、CIRCLE-CIRCLEのblending機能を実現できます。この方式はAccSmoothStart()とAccSmoothEnd()の間の指令のみに最適化されたT字形速度運動を使用し、その他の指令には元のT字形速度運動を使用します。 .. image:: coding/432.png :width: 4in :align: center .. centered:: 図表 9.27-77 Lua指令方式によるCIRCLE-CIRCLE間blendingの典型プログラム 運動設定スイッチ方式の使用 """"""""""""""""""""""""""""""""""""""""""""""""""""""" **Step1**:「初期設定」→「安全」→「運動設定」ボタンをクリックし、「加速度平滑モード」のスイッチをオンにします。 .. image:: coding/317.png :width: 6in :align: center .. centered:: 図表 9.27-78 加速度平滑モード設定スイッチの設定 **Step2**:CIRCLE-CIRCLE機能を実行するティーチングポイントを選択します。このマニュアルでは「A0」~「A12」をティーチングポイント名とします。 **Step3**:「ティーチングプログラム」→「プログラム作成」ボタンをクリックし、「運動指令」の「真円」を選択し、「指令編集」でティーチングポイントを選択してデバッグ速度を設定し、運動保護で「なし」を選択し、平滑化が必要なポイントで「スムーズ遷移」パラメータを設定します。 .. image:: coding/426.png :width: 6in :align: center .. centered:: 図表 9.27-79 通常のCIRCLE指令のblending指令設定 **Step4**:複数のCIRCLE指令を追加し、Luaプログラムを生成して実行すると、CIRCLE-CIRCLEのblending機能を実現できます。典型プログラムは通常のCIRCLE-CIRCLEプログラムと同じです。この方式はすべての指令に最適化されたT字形速度運動を使用します。 .. image:: coding/433.png :width: 4in :align: center .. centered:: 図表 9.27-80 設定スイッチを使用したCIRCLE-CIRCLE間blendingの典型プログラム 拡張軸非同期運動のblending *************************************** Lua指令方式の使用 """""""""""""""""""""""""""""""""""""""""" **Step1**:拡張軸非同期運動blending機能を実行するティーチングポイントを選択します。このマニュアルでは「A0」~「A5」をティーチングポイント名とします。 **Step2**:「ティーチングプログラム」→「プログラム作成」ボタンをクリックし、「周辺機器指令」の「拡張軸」指令を選択し、「運動方式」を「非同期」に選び、ティーチングポイントを選択してデバッグ速度を設定し、運動保護で「加速度平滑モード」を選択し、平滑化が必要なポイントで「スムーズ遷移」パラメータを設定します。 .. image:: coding/435.png :width: 6in :align: center .. centered:: 図表 9.27-81 拡張軸非同期運動のblending指令設定 **Step3**:運動指令を追加し、Luaプログラムを生成して実行すると、拡張軸非同期運動のblending機能を実現できます。この方式はAccSmoothStart()とAccSmoothEnd()の間の指令のみにS字形速度計画を使用してblendingを行い、その他の指令にはT字形速度計画を使用します。 .. image:: coding/436.png :width: 4in :align: center .. centered:: 図表 9.27-82 Lua指令方式による拡張軸非同期運動blendingの典型プログラム 運動設定スイッチ方式の使用 """"""""""""""""""""""""""""""""""""""""""""""""""""""" **Step1**:「初期設定」→「安全」→「運動設定」ボタンをクリックし、「加速度平滑モード」のスイッチをオンにします。 .. image:: coding/317.png :width: 6in :align: center .. centered:: 図表 9.27-83 加速度平滑モード設定スイッチの設定 **Step2**:拡張軸非同期運動blending機能を実行するティーチングポイントを選択します。このマニュアルでは「A0」~「A5」をティーチングポイント名とします。 **Step3**:「ティーチングプログラム」→「プログラム作成」ボタンをクリックし、「周辺機器指令」の「拡張軸」指令を選択し、「運動方式」を「非同期」に選び、ティーチングポイントを選択してデバッグ速度を設定し、運動保護で「なし」を選択し、平滑化が必要なポイントで「スムーズ遷移」パラメータを設定します。 .. image:: coding/437.png :width: 6in :align: center .. centered:: 図表 9.27-84 通常の拡張軸非同期運動のblending指令設定 **Step4**:複数の運動指令を追加し、Luaプログラムを生成して実行すると、拡張軸非同期運動のblending機能を実現できます。典型プログラムは通常の拡張軸運動プログラムと同じです。この方式はすべての指令にS字形速度計画を使用してblending運動を行います。 .. image:: coding/438.png :width: 4in :align: center .. centered:: 図表 9.27-85 設定スイッチを使用した拡張軸非同期運動blendingの典型プログラム 拡張軸同期運動のblending *************************************** Lua指令方式の使用 """""""""""""""""""""""""""""""""""""""""" **Step1**:拡張軸同期運動blending機能を実行するティーチングポイントを選択します。このマニュアルでは「A0」~「A5」をティーチングポイント名とします。 **Step2**:「ティーチングプログラム」→「プログラム作成」ボタンをクリックし、「周辺機器指令」の「拡張軸」指令を選択し、「運動方式」を「同期」に選び、ティーチングポイントを選択してデバッグ速度を設定し、運動保護で「加速度平滑モード」を選択し、平滑化が必要なポイントで「スムーズ遷移」パラメータを設定します。 .. image:: coding/439.png :width: 6in :align: center .. centered:: 図表 9.27-86 拡張軸同期運動のblending指令設定 **Step3**:運動指令を追加し、Luaプログラムを生成して実行すると、拡張軸同期運動のblending機能を実現できます。この方式はAccSmoothStart()とAccSmoothEnd()の間の指令のみにS字形速度計画を使用してblendingを行い、その他の指令にはT字形速度計画を使用します。 .. image:: coding/440.png :width: 4in :align: center .. centered:: 図表 9.27-87 Lua指令方式による拡張軸同期運動blendingの典型プログラム 運動設定スイッチ方式の使用 """"""""""""""""""""""""""""""""""""""""""""""""""""""" **Step1**:「初期設定」→「安全」→「運動設定」ボタンをクリックし、「加速度平滑モード」のスイッチをオンにします。 .. image:: coding/317.png :width: 6in :align: center .. centered:: 図表 9.27-88 加速度平滑モード設定スイッチの設定 **Step2**:拡張軸同期運動blending機能を実行するティーチングポイントを選択します。このマニュアルでは「A0」~「A5」をティーチングポイント名とします。 **Step3**:「ティーチングプログラム」→「プログラム作成」ボタンをクリックし、「周辺機器指令」の「拡張軸」指令を選択し、「運動方式」を「同期」に選び、ティーチングポイントを選択してデバッグ速度を設定し、運動保護で「なし」を選択し、平滑化が必要なポイントで「スムーズ遷移」パラメータを設定します。 .. image:: coding/441.png :width: 6in :align: center .. centered:: 図表 9.27-89 通常の拡張軸同期運動のblending指令設定 **Step4**:複数の運動指令を追加し、Luaプログラムを生成して実行すると、拡張軸同期運動のblending機能を実現できます。典型プログラムは通常の拡張軸運動プログラムと同じです。この方式はすべての指令にS字形速度計画を使用してblending運動を行います。 .. image:: coding/442.png :width: 4in :align: center .. centered:: 図表 9.27-90 設定スイッチを使用した拡張軸同期運動blendingの典型プログラム ウィービング側傾角機能 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 概要 ++++++++++++++ ロボットのウィービング側傾角機能は、ロボットの末端ツールがウィービング運動中にウィービング座標系のRx軸周りにウィービング角度をカスタマイズできるようにし、重ね溶接などの作業において、すみ肉溶接と両側の被接合材料間の接触長さの差を減らすことを実現します。 操作手順 ++++++++++++++++++++++++++++ ロボットのWeb制御画面で、「ティーチングプログラム」->「プログラム編集」を順にクリックし、「運動指令」画面に入ります。下図の通りです。 .. image:: coding/320.png :width: 3in :align: center .. centered:: 図表 9.28-1 運動指令画面 「運動指令」画面で、「ウィービング」をクリックし、「Weave」指令編集画面に入ります。 .. image:: coding/321.png :width: 6in :align: center .. centered:: 図表 9.28-2 Weave指令編集画面 「Weave」指令編集画面で、「選択番号」ドロップダウンリストをクリックすると、異なる番号のウィービングパラメータ設定を選択できます。「選択番号」ドロップダウンリストの右側の「ボタン」をクリックすると、その番号のウィービングパラメータ設定を変更できます。 .. image:: coding/322.png :width: 6in :align: center .. centered:: 図表 9.28-3 ウィービングパラメータ設定 ウィービングパラメータ設定の「ウィービング方向側傾角」欄で、ウィービング座標系のRx軸周りの回転角度をカスタマイズして入力し、「設定」をクリックすると、ウィービングパラメータ設定が完了します。 .. note:: 注意、「ウィービング方向側傾角」パラメータは、「ウィービングタイプ」パラメータの「三角波ウィービング」、「正弦波ウィービング」、「円形ウィービング-時計回り」、「円形ウィービング-反時計回り」に適用されます。 以下、Lin運動を例に、ウィービング側傾角機能を実現します。 **Step1**:「Weave」指令編集画面の「指令編集」画面にある「選択番号」ドロップダウンリストで、ウィービング側傾角パラメータの設定が完了した設定番号を選択します。「指令タイプ」欄で、「ウィービング開始」をクリックし、「追加」をクリックすると、ウィービング機能が開始されます。 .. image:: coding/323.png :width: 6in :align: center .. centered:: 図表 9.28-4 ウィービング開始の追加 **Step2**:「運動指令」画面で、「直線」をクリックすると、Lin直線運動を作成できます。このステップは基本的な運動指令のため説明は省略します。 **Step3**:「Weave」指令編集画面の「指令タイプ」欄で、「ウィービング終了」をクリックし、「追加」をクリックすると、ウィービング機能が終了します。 .. image:: coding/324.png :width: 6in :align: center .. centered:: 図表 9.28-5 ウィービング停止の追加 **Step4**:ステップ1~3を完了した後、「Weave」指令編集画面の「プログラムプレビュー」欄で、ステップ1~3が正しく設定されているか確認できます。 .. image:: coding/325.png :width: 6in :align: center .. centered:: 図表 9.28-6 ウィービングプログラムプレビュー **Step5**:「プログラムプレビュー」欄でプログラム設定を確認した後、「適用」をクリックすると、実行可能なLUAプログラムが自動生成されます。 .. image:: coding/326.png :width: 4in :align: center .. centered:: 図表 9.28-7 典型的なLUAウィービング運動プログラム 溶接プロセスパラメータ漸変(電流、電圧、シームに沿った前進速度)機能 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 概要 ++++++++++++++ 溶接プロセスパラメータ漸変(電流、電圧およびシームに沿った前進速度)機能は、溶接プロセス中のパラメータの変化範囲をカスタマイズすることをサポートします。 電流・電圧パラメータ漸変手順 ++++++++++++++++++++++++++++++++++ 電流パラメータ漸変 ***************************** ロボットのWeb制御画面で、「ティーチングプログラム」->「プログラム作成」を順にクリックし、「溶接指令」画面に入ります。下図の通りです。 .. image:: coding/327.png :width: 3in :align: center .. centered:: 図表 9.29-1 溶接指令画面 「溶接指令」画面で、「溶接」をクリックし、「Weld」指令設定画面に入ります。 .. image:: coding/328.png :width: 4in :align: center .. centered:: 図表 9.29-2 Weld指令設定画面 「Weld」指令設定画面の「指令タイプ」欄で、「溶接電流漸変開始」をクリックし、「開始電流」、「終了電流」、「溶接電流制御AO」、「平滑選択」パラメータを設定します。 例えば、「開始電流」を260 A、「終了電流」を220 A、「溶接電流制御AO」を「Ctrl-AO0」制御箱アナログ量チャンネル、「平滑選択」を「Break」に設定し、「追加」をクリックすると設定が完了します。「プログラムプレビュー」欄で、指令パラメータに誤った設定がないか確認します。 .. image:: coding/329.png :width: 4in :align: center .. centered:: 図表 9.29-3 溶接電流漸変開始指令パラメータ 「Weld」指令設定画面の「指令タイプ」欄で、「溶接電流漸変終了」をクリックします。パラメータ設定は不要で、「追加」をクリックすると設定が完了します。「プログラムプレビュー」欄で、指令パラメータに誤った設定がないか確認します。 .. image:: coding/330.png :width: 4in :align: center .. centered:: 図表 9.29-4 溶接電流漸変終了指令パラメータ 「溶接電流漸変開始」指令と「溶接電流漸変終了」指令のパラメータ設定が完了したら、「適用」をクリックすると、実行可能なLUAプログラムが自動生成されます。 .. note:: 「溶接電流漸変開始」指令と「溶接電流漸変終了」指令のパラメータ設定中に、運動指令を設定する必要があります。例として、アークトラッキング運動指令に電流パラメータ漸変を組み合わせた典型的なLUAプログラムを示します。 .. image:: coding/331.png :width: 4in :align: center .. centered:: 図表 9.29-5 典型的な電流パラメータ漸変のアークトラッキングLUAプログラム 電圧パラメータ漸変 ********************************** 「Weld」指令設定画面の「指令タイプ」欄で、「溶接電圧漸変開始」をクリックし、「開始電圧」、「終了電圧」、「溶接電圧制御AO」、「平滑選択」パラメータを設定します。 例えば、「開始電圧」を25 V、「終了電圧」を22 V、「溶接電圧制御AO」を「Ctrl-AO1」制御箱アナログ量チャンネル、「平滑選択」を「Break」に設定し、「追加」をクリックすると設定が完了します。「プログラムプレビュー」欄で、指令パラメータに誤った設定がないか確認します。下図の通りです。 .. image:: coding/332.png :width: 4in :align: center .. centered:: 図表 9.29-6 溶接電圧漸変開始指令パラメータ 「Weld」指令設定画面の「指令タイプ」欄で、「溶接電圧漸変終了」をクリックします。パラメータ設定は不要で、「追加」をクリックすると設定が完了します。「プログラムプレビュー」欄で、指令パラメータに誤った設定がないか確認します。 .. image:: coding/333.png :width: 4in :align: center .. centered:: 図表 9.29-7 溶接電圧漸変終了指令パラメータ 「溶接電圧漸変開始」指令と「溶接電圧漸変終了」指令のパラメータ設定が完了したら、「適用」をクリックすると、実行可能なLUAプログラムが自動生成されます。 .. image:: coding/334.png :width: 4in :align: center .. centered:: 図表 9.29-8 典型的な電圧パラメータ漸変のアークトラッキングLUAプログラム 前進速度パラメータ漸変手順 +++++++++++++++++++++++++++++++++++++++++++++++ ロボットのWeb制御画面で、「ティーチングプログラム」->「プログラム作成」を順にクリックし、「運動指令」画面に入ります。 .. image:: coding/335.png :width: 3in :align: center .. centered:: 図表 9.29-9 運動指令画面 「運動指令」画面で、「ウィービング」をクリックし、「Weave」指令設定画面に入ります。 .. image:: coding/336.png :width: 4in :align: center .. centered:: 図表 9.29-10 Weave指令設定画面 「Weave」指令設定画面の「指令タイプ」欄で、「ウィービング漸変開始」をクリックし、「開始速度」、「終了速度」、「漸変モード」パラメータを設定します。 例えば、「漸変モード」を「ウィービング+前進速度」、「開始速度」を24 cm/min、「終了速度」を30 cm/minに設定し、「追加」をクリックすると設定が完了します。「プログラムプレビュー」欄で、指令パラメータに誤った設定がないか確認します。 .. image:: coding/337.png :width: 4in :align: center .. centered:: 図表 9.29-11 ウィービング+前進速度漸変開始指令パラメータ 「Weave」指令画面の「指令タイプ」欄で、「ウィービング漸変終了」をクリックします。パラメータ設定は不要で、「追加」をクリックすると設定が完了します。「プログラムプレビュー」欄で、指令パラメータに誤った設定がないか確認します。 .. image:: coding/338.png :width: 4in :align: center .. centered:: 図表 9.29-12 ウィービング+前進速度漸変終了指令パラメータ 「ウィービング漸変開始」指令と「ウィービング漸変終了」指令のパラメータ設定が完了したら、「適用」をクリックすると、実行可能なLUAプログラムが自動生成されます。 .. note:: 「ウィービング漸変開始」指令と「ウィービング漸変終了」指令のパラメータ設定中に、運動指令を設定する必要があります。例として、アークトラッキング運動指令に前進速度パラメータ漸変を組み合わせた典型的なLUAプログラムを示します。 .. image:: coding/339.png :width: 4in :align: center .. centered:: 図表 9.29-13 典型的な前進速度パラメータ漸変のアークトラッキングLUAプログラム .. note:: 「Weld」指令設定画面と「Weave」指令設定画面で、溶接プロセスパラメータ漸変指令のパラメータ設定を行う際は、いずれもまず制御箱と溶接機の通信方式を確定する必要があります。アナログ量通信とデジタル量通信については、それぞれ「コントローラI/O」または「デジタル通信プロトコル」をクリックします。 ロボットModbusRTU通信 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 概要 ++++++++++++++ ModbusRTUは産業分野で一般的に使用される通信プロトコルです。FAIRINO協働ロボットは、ModbusRTUマスタとModbusRTUスレーブの2つの方法でお客様のデバイスとの通信を提供します。協働ロボットは最大8つのModbusRTUマスタを同時に外部デバイスと通信させることができ、各マスタは最大128のレジスタをサポートします。協働ロボットのModbusRTUスレーブは、64個のコイル、64個のディスクリート入力、32個の保持レジスタ、32個の入力レジスタを備えています(保持レジスタと入力レジスタのデータ型は符号付きと浮動小数点の2種類を含みます)。 同時に、協働ロボットの一部のModbusRTUスレーブ入力レジスタアドレスは、現在のロボットの関節位置、運動速度などの情報をフィードバックするために専用されており、一部のコイルレジスタアドレスは、ロボットのプログラム起動、プログラム停止、制御箱DOの設定などの機能を制御するために専用されています。ロボットのModbusRTUスレーブは、1つのマスタとの接続のみをサポートします。以下に詳細な使用方法を示します。 ロボットModbusRTUマスタ関連操作説明 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 協働ロボットをModbusRTUマスタとして使用し、お客様のデバイスと通信する前に、まずお客様のデバイスとロボットの485ハードウェア接続を確認してください。ロボットのModbusRTUマスタを使用するには、以下の手順があります。①マスタの追加、②レジスタの追加、③通信テスト、④ユーザープログラムの作成、⑤ユーザープログラムの実行。 ModbusRTUマスタの追加 ******************************************* WebAppを開き、「ティーチングシミュレーション」、「プログラムティーチング」を順にクリックし、新しいユーザープログラム「testModbusRTUMaster.lua」を作成します。 .. image:: coding/340.png :width: 6in :align: center .. centered:: 図表 9.30-1 ModbusRTUマスタのユーザープログラム作成 「ModbusRTU設定」ボタンをクリックして、ModbusRTU機能設定ページを開きます。 .. image:: coding/341.png :width: 4in :align: center .. centered:: 図表 9.30-2 ModbusRTU設定を開く 「マスタ設定」、「Modbusマスタの追加」を順にクリックすると、ModbusRTUマスタの追加が完了します。 .. image:: coding/342.png :width: 4in :align: center .. centered:: 図表 9.30-3 「ModbusRTUマスタ」の追加 お客様のスレーブデバイスの状況に応じて、「ボーレート」、「データビット」、「パリティ」、「ストップビット」を順に選択します。上記のパラメータの具体的な意味は以下の通りです。 **ボーレート**:ModbusRTUが通信に使用するボーレート。サポート:9600、14400、19200、38400、56000、67600、115200、128000。デフォルトは115200で、スレーブに合わせて設定します。 **データビット**:現在サポートされているのは8ビットのみの設定です。スレーブに合わせて設定します。 **パリティ**:パリティ方式。None、Odd、Evenをサポートします。デフォルトはNoneで、スレーブに合わせて設定します。 **ストップビット**:0.5、1、1.5、2をサポートします。デフォルトは1で、スレーブに合わせて設定します。 .. image:: coding/343.png :width: 4in :align: center .. centered:: 図表 9.30-4 ModbusRTUマスタパラメータの設定 上記のパラメータを正しく入力すると、ロボットのModbusRTUマスタはスレーブとの通信を行うことができます。(ModbusRTUマスタの関連パラメータを正しく設定したことを確認しても、ロボットがお客様のデバイスと通信できない場合は、以下の設定を確認してください。 ①ロボットとスレーブデバイスの物理的な485接続。②スレーブデバイスの通信設定を確認し、まずシリアルデバッグアシスタントを使用して通信リンクが正しいかテストすることをお勧めします。PC側でロボットと同じModbusRTUパラメータを設定し、ロボットのweb画面で新しいレジスタを作成して0x03の保持レジスタ読み取り操作を行い、シリアルデバッグアシスタントがデータを受信できるか確認します。下図に示すように、0x03命令で0x1000アドレスのレジスタを読み取ると、PC側は正常にデータを受信できます。これは通信設定が正しいことを示します。 .. image:: coding/344.png :width: 4in :align: center .. centered:: 図表 9.30-5 Modbus接続状態の確認 これでロボットのModbusRTUマスタの作成が完了しました。「Modbusマスタの追加」を再度クリックすると、新しいModbusRTUマスタを再度作成できます(図2-6)。ロボットは最大8つのマスタを同時に外部デバイスと通信できます。Modbusマスタの右上にある「削除」ボタンをダブルクリックすると、そのModbusマスタを削除できます。 .. image:: coding/345.png :width: 4in :align: center .. centered:: 図表 9.30-6 ModbusRTUマスタの再追加 ModbusRTUマスタへのレジスタ追加 ******************************************* 「マスタレジスタの追加」ボタンをクリックすると、そのマスタにレジスタを追加できます。 .. image:: coding/346.png :width: 4in :align: center .. centered:: 図表 9.30-7 ModbusRTUマスタレジスタの追加 マスタのレジスタタイプ、アドレス番号、名前を順に選択します。各パラメータの意味は以下の通りです。 **タイプ**:modbus機能コード。0x01-コイル読み取り;0x02-ディスクリート量読み取り;0x03-保持レジスタ読み取り(符号付き型-32768-32767);0x03-保持レジスタ読み取り(浮動小数点レジスタのデータ長は32ビット、2つのレジスタ、4バイトを占有);0x04-入力レジスタ読み取り(符号付き型-32768-32767);0x04-入力レジスタ読み取り(浮動小数点レジスタのデータ長は32ビット、2つのレジスタ、4バイトを占有);0x05-単一コイル書き込み;0x06-単一保持レジスタ書き込み;0x0F-複数コイル書き込み;0x03-保持レジスタ読み取り(符号付き型-32768-32767);0x03-保持レジスタ読み取り(浮動小数点レジスタのデータ長は32ビット、2つのレジスタ、4バイトを占有)。読み書きする浮動小数点レジスタはビッグエンディアン表示です。 **レジスタアドレス**:読み取りまたは書き込みを行うModbusRTUスレーブのレジスタアドレス。 **レジスタ数**:複数読み取りまたは複数書き込み時に操作するレジスタの数(0x05、0x06の数は1のみ可能)。最大12個のレジスタ操作をサポートします。 **アドレス値**:読み取り表示値、または書き込み操作値(複数の値を書き込む場合は英語のカンマ「,」で区切ります) .. image:: coding/347.png :width: 4in :align: center .. centered:: 図表 9.30-8 ModbusRTUマスタレジスタパラメータの設定 「マスタレジスタの追加」ボタンを再度クリックすると、さらにマスタレジスタを追加できます。レジスタの右側にある「削除」ボタンをダブルクリックすると、そのレジスタを削除できます。下図はサポートされている機能コードのレジスタを追加した例です。 .. image:: coding/348.png :width: 4in :align: center .. centered:: 図表 9.30-9 複数のマスタレジスタの追加 ModbusRTUマスタ通信テスト ********************************************************** ロボットのModbusマスタレジスタには、「アドレス値」という数値ボックスがあり、現在のレジスタの値を表示します。ここで、0x01、0x02、0x03、0x04タイプのレジスタは読み取り専用タイプであり、対応するアドレス値は灰色の編集不可能な数値ボックスです。スレーブの対応するアドレスの値が変化した場合、ロボットマスタは読み取りボタンをクリックすることで対応するレジスタアドレス値を読み取り、現在の数値を同期して表示します。0x05、0x06、0x0F、0x10機能コードは書き込み操作であり、そのアドレスは白色の編集可能な数値ボックスで、ロボットのModbusマスタ設定ページでこのレジスタの値を変更できます。 .. image:: coding/349.png :width: 4in :align: center .. centered:: 図表 9.30-10 Modbusマスタのアドレス値 マスタによるレジスタ読み取りテスト """""""""""""""""""""""""""""""""" 外部のModbusRTUスレーブデバイス上で、アドレス0x4000のコイルを連続して10個読み取り、アドレス0x3000のディスクリート量を連続して12個読み取り、アドレス0x2010の保持レジスタをint16で連続して2つ読み取り、アドレス0x1029の入力レジスタを浮動小数点で1つ読み取ります。このとき、ロボットのModbusマスタ設定ページの対応するレジスタのアドレス値がそれに応じて表示され、送信されるデータフレームは下図の通りです(アドレス0x1029のレジスタ読み取り方式が浮動小数点型に設定されているため、実際には1つの浮動小数点数を格納するために0x1029と0x102Aの2つの16ビットレジスタを読み取りますが、読み取り数は1に設定すればよいです)。 .. image:: coding/350.png :width: 4in :align: center .. centered:: 図表 9.30-11 Modbusマスタによる読み取りレジスタ値の表示(指令フレームスクリーンショット) マスタによるレジスタ書き込みテスト """""""""""""""""""""""""""""""""" ロボットのModbusRTUマスタ設定ページで、アドレス0x1000に単一コイルを書き込み、書き込み値は1とします。アドレス0x1001に単一レジスタを書き込み、値は2001とします。アドレス0x2000に5つのコイルを書き込み、値は1,1,0,1,1とします。アドレス0x2010に2つの保持レジスタを書き込み、データ型はint16、値は3001、3002とします。アドレス0x1029に浮動小数点型の保持レジスタを書き込みます(実際には2つの16ビットレジスタ)、値は21.55とします。Modbusスレーブの対応するレジスタアドレスにそれぞれの値が書き込まれます。 .. image:: coding/351.png :width: 4in :align: center .. centered:: 図表 9.30-12 ModbusRTUマスタの書き込み操作(指令フレームスクリーンショット) ModbusRTUマスタプログラムの作成 ************************************************ 「すべて」、「通信命令」を順にクリックし、通信命令追加ページを開きます。 .. image:: coding/352.png :width: 4in :align: center .. centered:: 図表 9.30-13 通信命令追加ページを開く 「Modbus」をクリックします。 .. image:: coding/353.png :width: 4in :align: center .. centered:: 図表 9.30-14 Modbusを選択 「Modbus_RTU」をクリックし、「マスタ(クライアント)」を選択して、ModbusRTUマスタ命令追加ページを開きます。 .. image:: coding/354.png :width: 4in :align: center .. centered:: 図表 9.30-15 Modbus_RTUを選択 単一コイルの書き込み """""""""""""""""""""""""""" 「レジスタ書き込み」を選択し、機能コードを0x05-単一コイル、レジスタ・コイルアドレスを0x1000、レジスタ値・コイル数を1、バイト配列を{1}とし、「追加」ボタンをクリックします。最後にこのページの一番下までスクロールし、「適用」ボタンをクリックします(図2-16)。 .. image:: coding/355.png :width: 4in :align: center .. centered:: 図表 9.30-16 単一コイルの書き込み これでロボットプログラム「testModbusRTUSlave.lua」に、ロボットのModbusマスタが単一デジタル出力を書き込む命令が1つ追加されました。ロボットを自動モードに切り替え、起動ボタンをクリックすると、ロボットマスタは対応するコイルレジスタ0x1000のアドレス値を1に書き込みます。 .. image:: coding/356.png :width: 6in :align: center .. centered:: 図表 9.30-17 単一コイル書き込みのLUAプログラム 複数コイルの書き込み """""""""""""""""""""""""""""""""""""""" 「レジスタ書き込み」を選択し、機能コードを0x0F-複数コイル、レジスタ・コイルアドレスを0x1010、レジスタ値・コイル数を3、バイト配列を{1,0,1}とし、「追加」ボタンをクリックします。最後にこのページの一番下までスクロールし、「適用」ボタンをクリックします(図2-18)。 .. image:: coding/357.png :width: 4in :align: center .. centered:: 図表 9.30-18 複数コイルの書き込み これでロボットプログラム「testModbusRTUSlave.lua」に、ロボットのModbusマスタが複数コイルを書き込む命令が1つ追加されました。ロボットを自動モードに切り替え、起動ボタンをクリックすると、ロボットマスタは対応するコイルレジスタ0x1000のアドレス値を1に書き込みます。 .. image:: coding/358.png :width: 4in :align: center .. centered:: 図表 9.30-19 複数コイル書き込みのLUAプログラム コイル、ディスクリート量の読み取り """""""""""""""""""""""""""""""""""""""""""""""" 「レジスタ読み取り命令」を選択し、機能コードを0x01-コイル(ディスクリート量を読み取る場合は0x02-ディスクリート量を選択)、レジスタ・コイルアドレスを0x2000、レジスタ・コイル数を3とし、「追加」ボタンをクリックします。同時に「レジスタデータ読み取り」を選択し、レジスタ・コイル・ディスクリート量の数を3とし、「追加」ボタンをクリックします。最後にこのページの一番下までスクロールし、「適用」ボタンをクリックします(図2-20)。 .. image:: coding/359.png :width: 4in :align: center .. image:: coding/394.png :width: 4in :align: center .. centered:: 図表 9.30-20 コイルの読み取り これでロボットプログラム「testModbusRTUSlave.lua」に、ロボットのModbusマスタがコイルを読み取る命令が2つ追加されました。 .. image:: coding/360.png :width: 6in :align: center .. centered:: 図表 9.30-21 単一コイル読み取りプログラム 通常、Modbusレジスタを読み取った後は、読み取った値を変数に格納するため、読み取った値を格納する変数を定義する必要があります。「モード切り替え」ボタンをクリックして、ロボットのluaプログラムを編集可能な状態に切り替え、「ModbusRegRead」命令の前に戻り値の変数「value1」、「value2」、「value3」を記述して追加します。プログラムを実行すると、読み取った値は「value1」、「value2」、「value3」に格納されます。 .. image:: coding/361.png :width: 6in :align: center .. centered:: 図表 9.30-22 複数コイル値の読み取りを変数に格納 コイルとディスクリート入力タイプのレジスタ値は0と1の2種類のみです。ロボットプログラムでは、レジスタの値が異なることで異なる操作を行うように判断できます。 保持レジスタ、入力レジスタの読み取り """""""""""""""""""""""""""""""""""""""""""""" 「レジスタ読み取り命令」を選択し、機能コードを0x03-コイル(入力レジスタを読み取る場合は0x04-入力レジスタを選択)、レジスタ・コイルアドレスを0x4000、レジスタ・コイル数を5とし、「追加」ボタンをクリックします。同時に「レジスタデータ読み取り」を選択し、レジスタ・コイル・ディスクリート量の数を5とし、「追加」ボタンをクリックします。最後にこのページの一番下までスクロールし、「適用」ボタンをクリックします(図2-23)。 .. image:: coding/362.png :width: 4in :align: center .. image:: coding/395.png :width: 4in :align: center .. centered:: 図表 9.30-23 保持レジスタの読み取り これでロボットプログラム「testModbusRTUSlave.lua」に、ロボットのModbusマスタが保持レジスタを読み取る命令が2つ追加されました。 .. image:: coding/363.png :width: 4in :align: center .. centered:: 図表 9.30-24 単一コイル読み取りプログラム 通常、Modbusレジスタを読み取った後は、読み取った値を変数に格納するため、読み取った値を格納する変数を定義する必要があります。「モード切り替え」ボタンをクリックして、ロボットのluaプログラムを編集可能な状態に切り替え、「ModbusRegRead」命令の前に戻り値の変数「value1」、「value2」、「value3」、「value4」、「value5」を記述して追加します。プログラムを実行すると、読み取った値は「value1」、「value2」、「value3」、「value4」、「value5」に格納されます。 .. image:: coding/364.png :width: 6in :align: center .. centered:: 図表 9.30-25 複数保持レジスタ値の読み取りを変数に格納 ロボットModbusRTUスレーブ関連操作説明 +++++++++++++++++++++++++++++++++++++++++++++++++++ ロボットのModbusRTUスレーブは、汎用デジタル入力(コイル)、汎用デジタル出力(ディスクリート入力)、汎用アナログ入力(保持レジスタ)、汎用アナログ出力(入力レジスタ)の4種類のレジスタを提供します。汎用デジタル入力とアナログ入力は主にロボットが外部ModbusRTUマスタデータを読み取ってロボットの操作を制御するために使用され、汎用デジタル出力とアナログ出力は主にロボットが外部ModbusRTUマスタデバイスにデータ信号を送信するために使用され、外部マスタデバイスが関連するレジスタ値を読み取ってそのデバイスの動作を制御します。 上記の汎用入出力に加えて、ロボットは外部マスタデバイスがロボットのプログラム起動、プログラム停止などの操作を制御するための「機能デジタル入力(コイル)」の一部も提供し、現在のロボットのデカルト位置、現在のロボットの動作状態などのロボットの状態情報を表示するための一部の入力レジスタも提供します(詳細な定義は付属一:ModbusRTUスレーブアドレスマッピング表を参照してください)。ロボットのModbusRTUスレーブの使用手順には、主に①パラメータ設定、②通信テスト、③プログラム作成が含まれます。 ModbusRTUスレーブ通信パラメータ設定 ****************************************************** WebAppを開き、「ティーチングシミュレーション」、「プログラムティーチング」を順にクリックし、新しいユーザープログラム「testModbusRTUSlave.lua」を作成します。 .. image:: coding/365.png :width: 6in :align: center .. centered:: 図表 9.30-26 ModbusRTUスレーブのユーザープログラム作成 「ModbusRTU設定」ボタンをクリックして、ModbusRTU機能設定ページを開きます。 .. image:: coding/366.png :width: 6in :align: center .. centered:: 図表 9.30-27 ModbusRTU設定を開く 「スレーブ設定」を順にクリックし、ロボットスレーブのボーレート、データビット、パリティ、ストップビット、スレーブ番号を入力します。ここで「ボーレート」、「データビット」、「パリティ」、「ストップビット」は、ロボットがModbusRTUスレーブとして動作する際のパラメータ設定です。「スレーブ番号」は、外部マスタが命令を送信するスレーブデバイスの番号です。 .. image:: coding/367.png :width: 4in :align: center .. centered:: 図表 9.30-28 ModbusRTUスレーブ設定 ModbusRTUスレーブ通信テスト **************************************** 汎用デジタル入力(コイル) """""""""""""""""""""""""""""""""""""""""""""" ロボットのModbusRTUスレーブは64個のコイルレジスタを提供します。これらのレジスタアドレスは0x4000~0x403Fです(詳細な定義は付属一:ModbusRTUスレーブアドレスマッピング表を参照してください)。ロボットのModbusRTUスレーブの汎用レジスタにはすべて別名を設定できます。ロボットスレーブのコイルレジスタDI0の名前を「Aアライメント」、DI1の名前を「Bアライメント」に変更します。アドレスマッピング表によると、「Aアライメント」と「Bアライメント」のModbusコイルアドレスはそれぞれ0x4000と0x4001です。外部のModbusRTUマスタデバイスでロボットスレーブのコイルレジスタアドレス0x4000と0x4001を両方とも1に設定すると、ロボットのModbusRTUスレーブ監視ページでこの2つのレジスタのインジケータが点灯します。 .. image:: coding/368.png :width: 4in :align: center .. centered:: 図表 9.30-29 ModbusRTUスレーブのコイル状態監視(指令フレームスクリーンショット) 汎用デジタル出力(ディスクリート入力) """""""""""""""""""""""""""""""""""""""""""""" ロボットのModbusRTUスレーブは64個のディスクリート入力レジスタを提供します。これらのレジスタアドレスは0x3000-0x303Fです(詳細な定義は付属一:ModbusRTUスレーブアドレスマッピング表を参照してください)。同様に、ロボットのModbusRTUスレーブのディスクリート入力レジスタにも別名を設定できます。「汎用デジタル出力(ディスクリート入力)」をクリックして、ロボットスレーブのディスクリート入力レジスタDO0の名前を「A起動」、DO1の名前を「B起動」に変更します。アドレスマッピング表によると、「A起動」と「B起動」のModbusディスクリート入力アドレスはそれぞれ0x3000と0x3001です。「A起動」に対応するディスクリート入力インジケータをクリックすると、このインジケータが点灯し、対応するレジスタアドレス0x3000の値が1になり、外部のModbusRTUマスタデバイスからこのレジスタ値を読み取ることができます。 .. image:: coding/369.png :width: 4in :align: center .. centered:: 図表 9.30-30 ModbusRTUスレーブのディスクリート入力制御 アナログ入力(保持レジスタ) """""""""""""""""""""""""""""""""""""""" ロボットは、符号なし、符号付き、浮動小数点の3種類の保持レジスタを合計32個提供します。AI0~AI32のアドレスは0x2000-0x202Fです(詳細な定義は付属一:ModbusRTUスレーブアドレスマッピング表を参照してください)。符号付きタイプレジスタのデータ範囲は-32768~32767、浮動小数点レジスタはビッグエンディアン表示です。AI0とAI1の名前をそれぞれ「電圧」、「電流」に変更します。ModbusRTUスレーブアドレスマッピング表から、2つのレジスタのアドレスはそれぞれ0x2000と0x2001であることがわかります。したがって、接続されているマスタデバイスが保持レジスタ0x2000と0x2001のレジスタアドレス値を変更すると、ロボットのModbusRTUスレーブ監視ページの「電圧」および「電流」レジスタアドレス値もそれに応じて同期して更新・表示されます。ロボットのアナログ入力は、主にロボットが外部マスタデバイスの数値信号を取得するために使用されます。 .. image:: coding/370.png :width: 4in :align: center .. centered:: 図表 9.30-31 ModbusRTUスレーブのアナログ入力監視(指令フレームスクリーンショット) アナログ出力(入力レジスタ) """""""""""""""""""""""""""""""""""""""" ロボットは、符号なし、符号付き、浮動小数点の3種類の入力レジスタを合計64個提供します。AO0~AO63のアドレスは0x1000-0x100F、0x104D-0x106Cです(詳細な定義は付属一:ModbusRTUスレーブアドレスマッピング表を参照してください)。符号付きタイプレジスタのデータ範囲は-32768~32767、浮動小数点レジスタはビッグエンディアン表示です。AO0とAO1の名前をそれぞれ「目標位置A」、「目標位置B」に変更し、入力量レジスタの値をそれぞれ2000、1500に設定します。ModbusRTUスレーブアドレスマッピング表から、2つのレジスタのアドレスはそれぞれ0x1000と0x1001であることがわかります。したがって、接続されているマスタデバイスが入力レジスタ0x1000と0x1001のレジスタアドレス値を読み取ると、設定された数値を取得できます。ロボットスレーブのアナログ出力は、主にロボットが外部マスタデバイスに数値信号を送信するために使用されます。 .. image:: coding/371.png :width: 4in :align: center .. centered:: 図表 9.30-32 Modbusスレーブによるアナログ入力の変更 ModbusRTUスレーブプログラムの作成 ************************************************** 「すべて」、「通信命令」を順にクリックし、通信命令追加ページを開きます。 .. image:: coding/372.png :width: 4in :align: center .. centered:: 図表 9.30-33 通信命令追加ページを開く 「Modbus」をクリックします。 .. image:: coding/373.png :width: 6in :align: center .. centered:: 図表 9.30-34 Modbusを選択 「Modbus_RTU」をクリックし、「スレーブ」を選択して、ModbusRTUスレーブ命令追加ページを開きます(図60)。 .. image:: coding/374.png :width: 4in :align: center .. centered:: 図表 9.30-35 Modbus_RTU、スレーブを選択 単一デジタル出力DO(ディスクリート入力)の書き込み """"""""""""""""""""""""""""""""""""""""""""""""""""""""""" DO名として「A起動」を選択し、レジスタ数を1、レジスタ値を0として、「単一デジタル出力を書き込む」をクリックします。最後にこのページの一番下までスクロールし、「適用」ボタンをクリックします。 .. image:: coding/375.png :width: 4in :align: center .. centered:: 図表 9.30-36 単一デジタル出力書き込み命令の追加、適用 これでロボットプログラム「testModbusRTUSlave.lua」に、ロボットのModbusスレーブが単一デジタル出力を書き込む命令が1つ追加されました。ロボットを自動モードに切り替え、起動ボタンをクリックすると、ロボットは「A起動」という名前のデジタル出力に対応するアドレス値を0に書き込みます。 .. image:: coding/376.png :width: 6in :align: center .. centered:: 図表 9.30-37 単一デジタル出力書き込みのLUAプログラム 複数デジタル出力DO(ディスクリート入力)の書き込み """""""""""""""""""""""""""""""""""""""""""""""""""""""" ModbusRTUスレーブ命令追加ページを開き、「デジタル出力設定」を見つけ、DO名として「A起動」を選択し、レジスタ数を5、レジスタ値を1,0,1,0,1とします。ここで、レジスタ値の個数は設定したレジスタ数と対応し、複数のレジスタ値はカンマで区切ります。「デジタル出力を書き込む」をクリックします。最後にこのページの一番下までスクロールし、「適用」ボタンをクリックします。 .. image:: coding/377.png :width: 4in :align: center .. centered:: 図表 9.30-38 複数デジタル出力の書き込みを設定、適用 これでロボットプログラム「testModbusRTUSlave.lua」に、ロボットのModbusスレーブが複数デジタル出力を書き込む命令が1つ追加されました。ロボットを自動モードに切り替え、起動ボタンをクリックすると、ロボットはスレーブの「A起動」とその後の4つのディスクリート入力レジスタの値をそれぞれ1、0、1、0、1に書き込みます。 .. image:: coding/378.png :width: 6in :align: center .. centered:: 図表 9.30-39 複数デジタル出力書き込みのLUAプログラム 単一デジタル出力DO(ディスクリート入力)の読み取り """"""""""""""""""""""""""""""""""""""""""""""""""""""""" ModbusRTUマスタ命令追加ページを開き、「デジタル出力設定」を見つけ、DO名として「A起動」を選択し、レジスタ数を1とし、レジスタ値は記入不要で、「デジタル出力を読み取る」をクリックします。最後にこのページの一番下までスクロールし、「適用」ボタンをクリックします。 .. image:: coding/379.png :width: 4in :align: center .. centered:: 図表 9.30-40 単一デジタル出力の読み取りを設定、適用 これでロボットプログラム「testModbusRTUSlave.lua」に、ロボットのModbusスレーブが単一デジタル出力を読み取る命令が1つ追加されました。 .. image:: coding/380.png :width: 4in :align: center .. centered:: 図表 9.30-41 単一デジタル出力読み取りプログラム 通常、Modbusレジスタを読み取った後は、読み取った値を変数に格納するため、読み取った値を格納する変数を定義する必要があります。「モード切り替え」ボタンをクリックして、ロボットのluaプログラムを編集可能な状態に切り替え、「ModbusSlaveReadDO_RTU」命令の前に戻り値の変数「AStartValue」を記述して追加します。プログラムを実行すると、読み取った値は「AStartValue」に格納されます。 .. image:: coding/381.png :width: 4in :align: center .. centered:: 図表 9.30-42 単一デジタル出力の読み取りを変数に格納 コイルタイプのレジスタ値は0と1の2種類のみです。ロボットプログラムでは、レジスタの値が異なることで異なる操作を行うように判断できます。 複数デジタル出力DO(ディスクリート入力)の読み取り """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ModbusRTUマスタ命令追加ページを開き、「デジタル出力設定」を見つけ、DO名として「A起動」を選択し、レジスタ数を2とし、レジスタ値は記入不要で、「デジタル出力を読み取る」をクリックします。最後にこのページの一番下までスクロールし、「適用」ボタンをクリックします。 .. image:: coding/382.png :width: 4in :align: center .. centered:: 図表 9.30-43 複数デジタル出力の読み取りを設定、適用 これでロボットプログラム「testModbusRTUSlave.lua」に、ロボットのModbusスレーブが複数デジタル出力を読み取る命令が1つ追加されました。 .. image:: coding/383.png :width: 4in :align: center .. centered:: 図表 9.30-44 複数デジタル出力読み取りプログラム 「モード切り替え」ボタンをクリックして、ロボットのluaプログラムを編集可能な状態に切り替えます。読み取る数は2個なので、「ModbusSlaveReadDO_RTU」命令の前に2つの戻り値の変数「value1,value2」を記述して追加します。プログラムを実行すると、読み取った2つのデジタル出力レジスタ値はそれぞれ上記の2つの変数に格納されます。同様に「value1」、「value2」の値を判断してロボットに異なる動作をさせることができます。 .. image:: coding/384.png :width: 4in :align: center .. centered:: 図表 9.30-45 複数デジタル出力の読み取りを変数に格納 デジタル入力DI(コイル)の読み取り """"""""""""""""""""""""""""""""""""""""""" ModbusRTUスレーブ命令追加ページを開き、「デジタル入力設定」を見つけ、DI名として「Aアライメント」を選択し、レジスタ数を2とし、「デジタル入力を読み取る」をクリックします。最後にこのページの一番下までスクロールし、「適用」ボタンをクリックします。 .. image:: coding/385.png :width: 4in :align: center .. centered:: 図表 9.30-46 デジタル入力の読み取りを設定、適用 これでロボットプログラム「testModbusRTUSlave.lua」に、ロボットのModbusスレーブがデジタル入力を読み取る命令が1つ追加されました。 .. image:: coding/386.png :width: 4in :align: center .. centered:: 図表 9.30-47 デジタル入力読み取りプログラム命令 「モード切り替え」ボタンをクリックして、ロボットのluaプログラムを編集可能な状態に切り替え、「ModbusSlaveReadDI_RTU」命令の前に戻り値の変数「AState,BState」を記述します。プログラムを実行すると、読み取った2つのデジタル入力値はそれぞれ変数「AState」と「BState」に格納されます。変数の値を判断することで、ロボットに異なる操作をさせることができます。 .. image:: coding/387.png :width: 4in :align: center .. centered:: 図表 9.30-48 デジタル入力読み取りプログラム アナログ出力AO(入力レジスタ)とアナログ入力AI(保持レジスタ)の読み書き操作 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" アナログ出力(入力レジスタ)およびアナログ入力(保持レジスタ)の読み書き操作は、デジタル出力(ディスクリート入力)およびデジタル入力(コイル)の操作と基本的に同じですが、後者のデータ範囲が0または1のみに限られるのに対し、前者のデータ範囲はより広いという違いがあります。したがって、具体的な操作はデジタル出力およびデジタル入力プログラムの作成を参考にしてください。ここでは、アナログ入力の読み取り操作(図3-24)とアナログ出力の読み書き操作(図3-25)のプログラム例のみを示します。 .. image:: coding/388.png :width: 4in :align: center .. centered:: 図表 9.30-49 アナログ入力の読み取り .. image:: coding/389.png :width: 6in :align: center .. centered:: 図表 9.30-50 アナログ出力の読み書き デジタル入力の待機 """""""""""""""""""""""""""""""""""""""""""""""""""""" ModbusRTUスレーブ命令追加ページを開き、「デジタル入力待機設定」を見つけ、DI名として設定済みの「Aアライメント」レジスタを選択し、待機状態を「True」、タイムアウト時間を5000msに設定します。「追加」ボタンをクリックし、最後に「適用」ボタンをクリックします。 .. image:: coding/390.png :width: 4in :align: center .. centered:: 図表 9.30-51 デジタル入力待機命令の追加 これでロボットプログラム「testModbusRTUSlave.lua」に、ロボットのModbusスレーブがデジタル入力を待機する命令が1つ追加されました。プログラムを起動すると、ロボットはスレーブの「Aアライメント」コイルレジスタ値がtrue、つまり数値1になるまで待機し続けます。設定されたタイムアウト時間は5秒のため、ロボットが5秒待機しても「Aアライメント」信号が0のままの場合、ロボットプログラムはタイムアウトエラーを報告し、プログラムも自動的に実行を停止します。 .. image:: coding/391.png :width: 4in :align: center .. centered:: 図表 9.30-52 デジタル入力待機プログラム アナログ入力の待機 """""""""""""""""""""""""""""""""" ModbusRTUスレーブ命令追加ページを開き、「アナログ入力待機設定」を見つけ、AI名として設定済みの「電流」レジスタを選択し、待機状態を「>」、レジスタ値を255、タイムアウト時間を5000msに設定します。「追加」ボタンをクリックし、最後に「適用」ボタンをクリックします。 .. image:: coding/392.png :width: 4in :align: center .. centered:: 図表 9.30-53 アナログ入力待機命令の追加 これでロボットプログラム「testModbusRTUSlave.lua」に、ロボットのModbusスレーブがアナログ入力値を待機する命令が1つ追加されました。プログラムを起動すると、ロボットはスレーブの「電流」レジスタ値が255より大きくなるまで待機し続けます。設定されたタイムアウト時間は5秒のため、ロボットが5秒待機しても「電流」信号が255より大きくならない場合、ロボットプログラムはタイムアウトエラーを報告し、プログラムも自動的に実行を停止します。 .. image:: coding/393.png :width: 4in :align: center .. centered:: 図表 9.30-54 アナログ入力レジスタ待機プログラム ModbusRTUスレーブのロボット状態フィードバックと制御 *********************************************************************************** 協働ロボットのModbusRTUスレーブ入力レジスタアドレス0x1010-0x104Cは、ロボットのリアルタイム状態をフィードバックするために使用されます(具体的なアドレス定義は付属一:ModbusRTUスレーブアドレスマッピング表を参照してください)。マスタデバイスで対応するレジスタの値を読み取るだけで、対応するロボットのリアルタイム状態データを取得できます。 協働ロボットのModbusRTUスレーブコイルレジスタアドレス0x4040-0x405Cは、マスタデバイスがロボットを制御するために使用されます(具体的なアドレス定義は付属一:ModbusRTUスレーブアドレスマッピング表を参照してください)。コイルアドレス0x4054を例にとると、このアドレスの機能は「プログラムの起動」を表します。ロボットが自動モードの場合、マスタデバイスがアドレス0x4054の値を0から1に変更すると、ロボットは自動的に現在設定されているプログラムの実行を開始します。また、コイルアドレス0x4040を例にとると、これはロボットの制御箱DO0の出力を制御するために使用されます。外部マスタがコイルアドレス0x4040を0から1に変更すると、制御箱DO0の出力が自動的に有効になります。同様に、外部マスタがコイルアドレス0x4040を1から0に変更すると、制御箱DO0の出力は無効になります。ModbusRTUスレーブ設定ページで「機能デジタル入力(コイル)」をクリックすると、現在のすべての機能デジタル入力を監視できます。 .. image:: coding/396.png :width: 4in :align: center .. centered:: 図表 9.30-55 ロボットスレーブの機能デジタル入力 付属一:Modbus Rtuスレーブアドレスマッピング表 .. list-table:: :widths: 15 20 25 15 20 10 :header-rows: 0 :align: center * - **サードパーティコントローラ送信アドレス** - **タイプ** - **名称** - **データ型** - **機能コード** - **読み取り/書き込み** * - 0x3000 - 汎用デジタル出力(ディスクリート) - DO0 - BOOL - 0x02 - 読み取り専用 * - 0x3001 - 汎用デジタル出力(ディスクリート) - DO1 - BOOL - 0x02 - 読み取り専用 * - 0x3002 - 汎用デジタル出力(ディスクリート) - DO2 - BOOL - 0x02 - 読み取り専用 * - 0x3003 - 汎用デジタル出力(ディスクリート) - DO3 - BOOL - 0x02 - 読み取り専用 * - ... - 汎用デジタル出力(ディスクリート) - ... - BOOL - 0x02 - 読み取り専用 * - 0x303F - 汎用デジタル出力(ディスクリート) - DO127 - BOOL - 0x02 - 読み取り専用 * - 0x4000 - 汎用デジタル入力(コイル) - DI0 - BOOL - 0x01、0x05、0x0F - 読み取り/書き込み * - 0x4001 - 汎用デジタル入力(コイル) - DI1 - BOOL - 0x01、0x05、0x0F - 読み取り/書き込み * - 0x4002 - 汎用デジタル入力(コイル) - DI2 - BOOL - 0x01、0x05、0x0F - 読み取り/書き込み * - 0x4003 - 汎用デジタル入力(コイル) - DI3 - BOOL - 0x01、0x05、0x0F - 読み取り/書き込み * - ... - 汎用デジタル入力(コイル) - ... - BOOL - 0x01、0x05、0x0F - 読み取り/書き込み * - 0x403F - 汎用デジタル入力(コイル) - DI64 - BOOL - 0x01、0x05、0x0F - 読み取り/書き込み * - 0x4040 - ロボット制御 - 制御箱DO0 - BOOL - 0x01、0x05、0x0F - 読み取り/書き込み * - 0x4041 - ロボット制御 - 制御箱DO1 - BOOL - 0x01、0x05、0x0F - 読み取り/書き込み * - 0x4042 - ロボット制御 - 制御箱DO2 - BOOL - 0x01、0x05、0x0F - 読み取り/書き込み * - 0x4043 - ロボット制御 - 制御箱DO3 - BOOL - 0x01、0x05、0x0F - 読み取り/書き込み * - 0x4044 - ロボット制御 - 制御箱DO4 - BOOL - 0x01、0x05、0x0F - 読み取り/書き込み * - 0x4045 - ロボット制御 - 制御箱DO5 - BOOL - 0x01、0x05、0x0F - 読み取り/書き込み * - 0x4046 - ロボット制御 - 制御箱DO6 - BOOL - 0x01、0x05、0x0F - 読み取り/書き込み * - 0x4047 - ロボット制御 - 制御箱DO7 - BOOL - 0x01、0x05、0x0F - 読み取り/書き込み * - 0x4048 - ロボット制御 - 制御箱CO0 - BOOL - 0x01、0x05、0x0F - 読み取り/書き込み * - 0x4049 - ロボット制御 - 制御箱CO1 - BOOL - 0x01、0x05、0x0F - 読み取り/書き込み * - 0x404A - ロボット制御 - 制御箱CO2 - BOOL - 0x01、0x05、0x0F - 読み取り/書き込み * - 0x404B - ロボット制御 - 制御箱CO3 - BOOL - 0x01、0x05、0x0F - 読み取り/書き込み * - 0x404C - ロボット制御 - 制御箱CO4 - BOOL - 0x01、0x05、0x0F - 読み取り/書き込み * - 0x404D - ロボット制御 - 制御箱CO5 - BOOL - 0x01、0x05、0x0F - 読み取り/書き込み * - 0x404E - ロボット制御 - 制御箱CO6 - BOOL - 0x01、0x05、0x0F - 読み取り/書き込み * - 0x404F - ロボット制御 - 制御箱CO7 - BOOL - 0x01、0x05、0x0F - 読み取り/書き込み * - 0x4050 - ロボット制御 - ツールDO0 - BOOL - 0x01、0x05、0x0F - 読み取り/書き込み * - 0x4051 - ロボット制御 - ツールDO1 - BOOL - 0x01、0x05、0x0F - 読み取り/書き込み * - 0x4052 - ロボット制御 - 一時停止 - BOOL - 0x01、0x05、0x0F - 読み取り/書き込み * - 0x4053 - ロボット制御 - 再開 - BOOL - 0x01、0x05、0x0F - 読み取り/書き込み * - 0x4054 - ロボット制御 - 起動 - BOOL - 0x01、0x05、0x0F - 読み取り/書き込み * - 0x4055 - ロボット制御 - 停止 - BOOL - 0x01、0x05、0x0F - 読み取り/書き込み * - 0x4056 - ロボット制御 - 作業原点へ移動 - BOOL - 0x01、0x05、0x0F - 読み取り/書き込み * - 0x4057 - ロボット制御 - 手動/自動切替 - BOOL - 0x01、0x05、0x0F - 読み取り/書き込み * - 0x4058 - ロボット制御 - メインプログラム起動 - BOOL - 0x01、0x05、0x0F - 読み取り/書き込み * - 0x4059 - ロボット制御 - レベル1縮退モード - BOOL - 0x01、0x05、0x0F - 読み取り/書き込み * - 0x405A - ロボット制御 - レベル2縮退モード - BOOL - 0x01、0x05、0x0F - 読み取り/書き込み * - 0x405B - ロボット制御 - レベル3縮退モード(停止) - BOOL - 0x01、0x05、0x0F - 読み取り/書き込み * - 0x405C - ロボット制御 - 全故障クリア - BOOL - 0x01、0x05、0x0F - 読み取り/書き込み * - 0x405D - ロボット制御 - 予約 - BOOL - 0x01、0x05、0x0F - 読み取り/書き込み * - 0x405E - ロボット制御 - 予約 - BOOL - 0x01、0x05、0x0F - 読み取り/書き込み * - 0x1000 - アナログ入力 - AO0 - INT16 - 0x04 - 読み取り専用 * - 0x1001 - アナログ入力 - AO1 - INT16 - 0x04 - 読み取り専用 * - 0x1002 - アナログ入力 - AO2 - INT16 - 0x04 - 読み取り専用 * - ... - アナログ入力 - ... - INT16 - 0x04 - 読み取り専用 * - 0x100F - アナログ入力 - AO15 - INT16 - 0x04 - 読み取り専用 * - 0x1010 - ロボット状態 - イネーブル状態 0-未イネーブル、1-イネーブル - UINT16 - 0x04 - 読み取り専用 * - 0x1011 - ロボット状態 - ロボットモード、1-手動モード、0-自動モード - UINT16 - 0x04 - 読み取り専用 * - 0x1012 - ロボット状態 - ロボット動作状態 1-停止、2-実行、3-一時停止、4-ドラッグ - UINT16 - 0x04 - 読み取り専用 * - 0x1013 - ロボット状態 - ツール番号 - UINT16 - 0x04 - 読み取り専用 * - 0x1014 - ロボット状態 - ワーク番号 - UINT16 - 0x04 - 読み取り専用 * - 0x1015 - ロボット状態 - 緊急停止状態 0-未緊急停止、1-緊急停止 - UINT16 - 0x04 - 読み取り専用 * - 0x1016 - ロボット状態 - ソフトリミット超過故障 - UINT16 - 0x04 - 読み取り専用 * - 0x1017 - ロボット状態 - メイン故障コード - UINT16 - 0x04 - 読み取り専用 * - 0x1018 - ロボット状態 - サブ故障コード - UINT16 - 0x04 - 読み取り専用 * - 0x1019 - ロボット状態 - 衝突検出、1-衝突、0-衝突なし - UINT16 - 0x04 - 読み取り専用 * - 0x101A - ロボット状態 - 運動完了信号 - UINT16 - 0x04 - 読み取り専用 * - 0x101B - ロボット状態 - 安全停止信号SI0 - UINT16 - 0x04 - 読み取り専用 * - 0x101C - ロボット状態 - 安全停止信号SI1 - UINT16 - 0x04 - 読み取り専用 * - 0x101D - ロボット状態 - 制御箱アナログ入力AI0 - UINT16 - 0x04 - 読み取り専用 * - 0x101E - ロボット状態 - 制御箱アナログ入力AI1 - UINT16 - 0x04 - 読み取り専用 * - 0x101F - ロボット状態 - ツールアナログ入力AI0 - UINT16 - 0x04 - 読み取り専用 * - 0x1020 - ロボット状態 - 制御箱アナログ出力AO0 - UINT16 - 0x04 - 読み取り専用 * - 0x1021 - ロボット状態 - 制御箱アナログ出力AO1 - UINT16 - 0x04 - 読み取り専用 * - 0x1022 - ロボット状態 - ツールアナログ出力AO0 - UINT16 - 0x04 - 読み取り専用 * - 0x1023 - ロボット状態 - 制御箱デジタル入力 Bit0-Bit7 = DI0-DI7、Bit8-Bit15 = CI0-CI7 - UINT16 - 0x04 - 読み取り専用 * - 0x1024 - ロボット状態 - ツール端デジタル入力 Bit0-Bit15 = DI0-DI15 - UINT16 - 0x04 - 読み取り専用 * - 0x1025 - ロボット状態 - 制御箱デジタル出力 Bit0-Bit7 = DO0-DO7、Bit8-Bit15 = CO0-CO7 - UINT16 - 0x04 - 読み取り専用 * - 0x1026 - ロボット状態 - ツール端デジタル出力 Bit0-Bit15 = DO0-DO15 - UINT16 - 0x04 - 読み取り専用 * - 0x1027 - ロボット状態 - TCP速度 - FLOAT32(ビッグエンディアン表示) - 0x04 - 読み取り専用 * - 0x1028 - ロボット状態 - TCP速度 - FLOAT32(ビッグエンディアン表示) - 0x04 - 読み取り専用 * - 0x1029 - ロボット状態 - 関節1位置 - FLOAT32(ビッグエンディアン表示) - 0x04 - 読み取り専用 * - 0x102A - ロボット状態 - 関節1位置 - FLOAT32(ビッグエンディアン表示) - 0x04 - 読み取り専用 * - 0x102B - ロボット状態 - 関節2位置 - FLOAT32(ビッグエンディアン表示) - 0x04 - 読み取り専用 * - 0x102C - ロボット状態 - 関節2位置 - FLOAT32(ビッグエンディアン表示) - 0x04 - 読み取り専用 * - 0x102D - ロボット状態 - 関節3位置 - FLOAT32(ビッグエンディアン表示) - 0x04 - 読み取り専用 * - 0x102E - ロボット状態 - 関節3位置 - FLOAT32(ビッグエンディアン表示) - 0x04 - 読み取り専用 * - 0x102F - ロボット状態 - 関節4位置 - FLOAT32(ビッグエンディアン表示) - 0x04 - 読み取り専用 * - 0x1030 - ロボット状態 - 関節4位置 - FLOAT32(ビッグエンディアン表示) - 0x04 - 読み取り専用 * - 0x1031 - ロボット状態 - 関節5位置 - FLOAT32(ビッグエンディアン表示) - 0x04 - 読み取り専用 * - 0x1032 - ロボット状態 - 関節5位置 - FLOAT32(ビッグエンディアン表示) - 0x04 - 読み取り専用 * - 0x1033 - ロボット状態 - 関節6位置 - FLOAT32(ビッグエンディアン表示) - 0x04 - 読み取り専用 * - 0x1034 - ロボット状態 - 関節6位置 - FLOAT32(ビッグエンディアン表示) - 0x04 - 読み取り専用 * - 0x1035 - ロボット状態 - 関節1速度 - FLOAT32(ビッグエンディアン表示) - 0x04 - 読み取り専用 * - 0x1036 - ロボット状態 - 関節1速度 - FLOAT32(ビッグエンディアン表示) - 0x04 - 読み取り専用 * - 0x1037 - ロボット状態 - 関節2速度 - FLOAT32(ビッグエンディアン表示) - 0x04 - 読み取り専用 * - 0x1038 - ロボット状態 - 関節2速度 - FLOAT32(ビッグエンディアン表示) - 0x04 - 読み取り専用 * - 0x1039 - ロボット状態 - 関節3速度 - FLOAT32(ビッグエンディアン表示) - 0x04 - 読み取り専用 * - 0x103A - ロボット状態 - 関節3速度 - FLOAT32(ビッグエンディアン表示) - 0x04 - 読み取り専用 * - 0x103B - ロボット状態 - 関節4速度 - FLOAT32(ビッグエンディアン表示) - 0x04 - 読み取り専用 * - 0x103C - ロボット状態 - 関節4速度 - FLOAT32(ビッグエンディアン表示) - 0x04 - 読み取り専用 * - 0x103D - ロボット状態 - 関節5速度 - FLOAT32(ビッグエンディアン表示) - 0x04 - 読み取り専用 * - 0x103E - ロボット状態 - 関節5速度 - FLOAT32(ビッグエンディアン表示) - 0x04 - 読み取り専用 * - 0x103F - ロボット状態 - 関節6速度 - FLOAT32(ビッグエンディアン表示) - 0x04 - 読み取り専用 * - 0x1040 - ロボット状態 - 関節6速度 - FLOAT32(ビッグエンディアン表示) - 0x04 - 読み取り専用 * - 0x1041 - ロボット状態 - TCP位置X - FLOAT32(ビッグエンディアン表示) - 0x04 - 読み取り専用 * - 0x1042 - ロボット状態 - TCP位置X - FLOAT32(ビッグエンディアン表示) - 0x04 - 読み取り専用 * - 0x1043 - ロボット状態 - TCP位置Y - FLOAT32(ビッグエンディアン表示) - 0x04 - 読み取り専用 * - 0x1044 - ロボット状態 - TCP位置Y - FLOAT32(ビッグエンディアン表示) - 0x04 - 読み取り専用 * - 0x1045 - ロボット状態 - TCP位置Z - FLOAT32(ビッグエンディアン表示) - 0x04 - 読み取り専用 * - 0x1046 - ロボット状態 - TCP位置Z - FLOAT32(ビッグエンディアン表示) - 0x04 - 読み取り専用 * - 0x1047 - ロボット状態 - TCP位置RX - FLOAT32(ビッグエンディアン表示) - 0x04 - 読み取り専用 * - 0x1048 - ロボット状態 - TCP位置RX - FLOAT32(ビッグエンディアン表示) - 0x04 - 読み取り専用 * - 0x1049 - ロボット状態 - TCP位置RY - FLOAT32(ビッグエンディアン表示) - 0x04 - 読み取り専用 * - 0x104A - ロボット状態 - TCP位置RY - FLOAT32(ビッグエンディアン表示) - 0x04 - 読み取り専用 * - 0x104B - ロボット状態 - TCP位置RZ - FLOAT32(ビッグエンディアン表示) - 0x04 - 読み取り専用 * - 0x104C - ロボット状態 - TCP位置RZ - FLOAT32(ビッグエンディアン表示) - 0x04 - 読み取り専用 * - 0x104D - アナログ入力 - AO16 - FLOAT32(ビッグエンディアン表示) - 0x04 - 読み取り専用 * - 0x104E - アナログ入力 - AO16 - FLOAT32(ビッグエンディアン表示) - 0x04 - 読み取り専用 * - 0x104F - アナログ入力 - AO17 - FLOAT32(ビッグエンディアン表示) - 0x04 - 読み取り専用 * - 0x1050 - アナログ入力 - AO17 - FLOAT32(ビッグエンディアン表示) - 0x04 - 読み取り専用 * - ... - アナログ入力 - ... - FLOAT32(ビッグエンディアン表示) - 0x04 - 読み取り専用 * - 0x106B - アナログ入力 - AO31 - FLOAT32(ビッグエンディアン表示) - 0x04 - 読み取り専用 * - 0x106C - アナログ入力 - AO31 - FLOAT32(ビッグエンディアン表示) - 0x04 - 読み取り専用 * - 0x2000 - アナログ出力 - AI0 - INT16 - 0x03、0x06、0x10 - 読み取り/書き込み * - 0x2001 - アナログ出力 - AI1 - INT16 - 0x03、0x06、0x10 - 読み取り/書き込み * - 0x2002 - アナログ出力 - AI2 - INT16 - 0x03、0x06、0x10 - 読み取り/書き込み * - ... - アナログ出力 - ... - INT16 - 0x03、0x06、0x10 - 読み取り/書き込み * - 0x200F - アナログ出力 - AI15 - INT16 - 0x03、0x06、0x10 - 読み取り/書き込み * - 0x2010 - アナログ出力 - AI16 - FLOAT32(ビッグエンディアン表示) - 0x03、0x06、0x10 - 読み取り/書き込み * - 0x2011 - アナログ出力 - AI16 - FLOAT32(ビッグエンディアン表示) - 0x03、0x06、0x10 - 読み取り/書き込み * - 0x2012 - アナログ出力 - AI17 - FLOAT32(ビッグエンディアン表示) - 0x03、0x06、0x10 - 読み取り/書き込み * - 0x2013 - アナログ出力 - AI17 - FLOAT32(ビッグエンディアン表示) - 0x03、0x06、0x10 - 読み取り/書き込み * - ... - アナログ出力 - ... - FLOAT32(ビッグエンディアン表示) - 0x03、0x06、0x10 - 読み取り/書き込み * - 0x202E - アナログ出力 - AI31 - FLOAT32(ビッグエンディアン表示) - 0x03、0x06、0x10 - 読み取り/書き込み * - 0x202F - アナログ出力 - AI31 - FLOAT32(ビッグエンディアン表示) - 0x03、0x06、0x10 - 読み取り/書き込み 6軸力センサーに基づく姿勢適応機能の保護 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 概要 ++++++++++++++ 現在のFRロボットの恒力FT_Controlにおける姿勢適応機能には、最大調整角度の制限がありません。6軸力センサーが外力トルクを受けるとロボットの末端が持続的にオフセットし、この状況では危険が発生しやすくなります。 FT_Control姿勢適応機能に最大調整角度制限を追加し、カスタムしきい値を設定することで、姿勢適応機能をより滑らかにします。 操作手順 ++++++++++++++++++++++++++++++++++++++++ **Step1**:「初期設定」->「基本」->「座標系」->「ツール」をクリックし、ツール座標系設定画面に入り、「座標系名」を選択し、末端ツールに対応する座標系パラメータを設定します。 .. image:: coding/443.png :width: 4in :align: center .. centered:: 図表 9.31-1 ツール座標系の設定 **Step2**:「ティーチングプログラム」->「プログラム作成」をクリックし、恒力制御luaスクリプトを作成します。「力制御セット」->「Control」を選択し、力制御運動指令を追加し、姿勢適応を「開始」に設定し、最大調整角度を姿勢適応角度のしきい値に設定します。 .. image:: coding/444.png :width: 6in :align: center .. centered:: 図表 9.31-2 力制御運動指令 **Step3**:web画面で「FT」をクリックし、6軸力センサーの参照座標系を設定します。参照座標系として「カスタム座標系」を選択し、対応する座標系パラメータを設定します。 姿勢適応角度調整がツール座標系を中心に回転する場合は、参照座標系パラメータを「0」に設定します。姿勢適応角度調整が末端フランジ座標系を中心に回転する場合は、参照座標系パラメータを末端ツールに対応する座標系パラメータに設定します。 .. image:: coding/445.png :width: 4in :align: center .. centered:: 図表 9.31-3 6軸力センサーの参照座標系設定 **Step4**:スクリプトを実行し、姿勢適応の効果を確認します。恒力下での姿勢適応調整角度は、カスタムされた最大調整角度の範囲内に制限されます。