三菱サーボで押当て制御

今回は三菱PLCのユニットRD77MS4でサーボ押当て制御を紹介する。

例えばサーボZ軸を下降させながら、ネジ締めなどを行う場合に使用される。

具体的には位置決め動作中(Z軸ネジ締め開始位置の少し手前まで位置決め動作で下降させる)に、モータを停止させずにトルク制御に切換える方法として使用される。

「押当て制御モード」といわれる。

ラダーは以下となる。

・バッファアドレス#4390(目標トルク指定)→今回は10%指定
・バッファアドレス#4393(押当てモード切換え条件)→今回は「送り現在値」
・バッファアドレス#4394(押当て切換え条件パラ)→今回は送り現在値が20mmでトルク制御に切り替える。

・バッファアドレス#4375(制御モード指定)→今回は30(押当て制御モード)指定

制御モード指定は以下となる。
 0: 位置制御モード
 10: 速度制御モード
 20: トルク制御モード
 30: 押当て制御モード

そして制御モード切換え要求フラグ(バッファアドレス#4374の0ビット)をONにする。

ちなみにRD78G4のPLCopenでプログラムを組むときは、MC_TorqueControlのOptionsで押当て制御モードを指定する。

三菱サーボで自動生成カム

今回は三菱PLCのユニットRD77MS4で自動でカムデータを生成する方法について紹介する。

カムデータは、三菱シンプルモーションユニット設定で自分で作成するほかに、複雑な曲線は自動生成することができる。次の自動生成カム種別がある。

1.ロータリーカッター
2.ロータリーカッター(中央基準)
3.簡易ストローク比カム
4.詳細ストローク比カム

例えば、ロータリーカッター(回転しながら切断するサーボモーター)の同期カム動作は複雑だが、自動生成できる。

自動生成は以下のようにラダーを組んで行う。

1.バッファアドレス#53201→自動生成するカム番号を格納する。
2.バッファアドレス#53202→自動生成カム種別(上記)を格納する。
3.バッファアドレス#53204→カム分解能を格納する。
4.バッファアドレス#53206→シート長を格納する。
5.バッファアドレス#36472→1サイクル長を格納する。
6.バッファアドレス#53208→シート同期幅を格納する。
7.バッファアドレス#53210→同期長軸を格納する。

8.バッファアドレス#53212→同期開始位置を格納する。
9.バッファアドレス#53214→同期区間増速率を格納する。

そしてカム自動生成要求フラグ(バッファアドレス#53200の0ビット)をONにする。

三菱シンプルモーションユニット設定に自動生成されたカムデータが表示される。

三菱サーボ同期中にマーク検出

今回は三菱PLCのユニットRD77MS4でサーボ同期中に回転サーボコンベアの現在位置をマークセンサーで検出する方法について紹介する。

例えば、ロータリーカッター(回転しながら切断するサーボモーター)で切断するシートに印刷されたレジマーク(=切断シート長の中に1か所だけマークする)をセンサーで検出し、もしシートがずれていればサーボ補助軸(サーボ仮想軸)で位置補正するのに使用される。

※マークセンサーで検出した回転サーボコンベアの現在位置からマーク間の長さを算出し、切断シート長とずれていれば、その差分をサーボ仮想軸で同期させ移動させる。

ではマークセンサーで回転サーボコンベアの現在位置をどのように検出するかだが、マークセンサー入力をPLCの汎用入力(X番)にいれてラダーで回転サーボコンベアの現在位置を取得するのはNGだ。

ラダーのスキャン時間によって正確にデータ取得できないためである。

割り込みプログラムを組む手もあるが、今回は三菱シンプルモーションユニット設定で用意されているマーク検出機能について紹介したい。

まずRD77MS4の三菱シンプルモーションユニット設定でマーク検出設定を行う。

そしてマークセンサーをどこに配線するかだが、RD77MS4の外部入力接続用コネクタ(DSUBコネクタ)のDI1の端子に配線する。
※DI1をどのSINピンにするか割付け任意に変更可。

そして以下のようにラダーを組む。D4にマーク検出幅が格納される。

マーク検出回数(バッファアドレス#54960)、マーク検出データ(バッファアドレス#54962)を前回値と比較し、(今回値)-(前回値)でマーク検出幅を取得する。

IAIのSEL言語

IAIロボシリンダのPCON,SCONやRCONはPLCからCC-LINKやETHERNET/IPで
割り当てられた信号やデータを読み書きすれば制御できるが、
ASELシリーズはいくらPLCから指令しても、
内部にSEL言語でプログラムを組まないと動作しない。

以下SEL言語のプログラム例だ。
※PPUT(位置データ設定)は、No.199箱から読み出す。
 INBはNo.99箱へ読み出す。

No. B E N Cnd Cmnd Operand1 Operand2 Pst Comment
1 TAG 1 Main
2 TAG 2 動作開始動作
3 INB 64 8 (移動量 0.1mm)
4 LET 199 *99
5 DIV 199 10
6 PPUT 1 1 目標位置設定
7 INB 96 8 (速度 1mm/sec)
8 LET 1 *99
9 PVEL *1 1 移動速度設定
10 BTOF 302 位置決め完了OFF
11 MOVL 1 ポジション1 動作開始
12 BTON 302 位置決め完了ON
13 GOTO 1 Mainへ戻る
14 EXIT

三菱シンプルモーションで同期

三菱PLC RD77MS(シンプルモーション)で同期の設定の仕方を紹介する。

なお、今回もギア比設定など細かな設定は割愛する。同期の基本設定のみ紹介する。

※実際の機械の動作に気を付けて作成してください。本サイトは動作を保証するものではありません。各自責任で参考にしてください。

では、まず「シンプルモーションユニット設定機能」を起動する。

そして「同期制御パラメータ」の「入力軸パラメータ」で主軸を設定する。※今回は軸1を主軸にする。

そして同期パラメータの軸n同期パラメータで従軸の設定をする。※今回は軸2を従軸にする。

クラッチ(ON、OFFすることで一時的に同期から切り離すリレー)の設定もここで可能だ。

カムの設定もここで可能だ。

「同期制御パラメータ」の「入力軸一覧」で同期の設定が確認できる。

あとは各軸の主軸クラッチ指令フラグや同期制御始動フラグ(バッファメモリで割り当てられる)を操作して同期プログラムを作っていく。

カムでサーボ同期

サーボ同期するとき、従軸が直線動作するのではなく、機械カムのように複雑な動きをさせたいときサーボ設定で簡単にできる。(これを電子カムという。)

今回も三菱モーションRD78G4で紹介する。(なお三菱シンプルモーションやキーエンスでは設定の仕方が異なる。また別記事で紹介する。)

まずRD78G4のユニット拡張パラメータをクリックしてモーション制御設定機能画面を立ち上げる。(※前々回ブログ記事を参照。)

そして演算プロファイルで「データ新規作成」を行う。

そして以下画面が立ち上がるので、ここでカムデータを作る。1サイクル長とストロークを設定して、ストローク設定にデータを入れる。

ここでカムデータを作るコツなのだが、当たり前だが、ずっと繰り返し可能なカムデータを作らないとうまくいかない。主軸とずれたりおかしな動きになってしまう。必ず動きの周期がうまくいくよう考えて作成する。

※実際の機械のインターロックに気を付けて作成してください。本サイトは動作を保証するものではありません。各自責任で参考にしてください。

後はPlcopen関数 MC_CamInのCamTableID.ProfileIDに先ほど作成した演算プロファイルを代入すれば紐づけ完了。

モーションユニットでCPUとの負荷分散制御

三菱モーションユニットRD78G4はPLCのCPU本体のラダーとは独立してサーボプログラムをST言語で組むことができる。

CPU本体のラダースキャンに影響されないサーボ制御が出来るため、またシンプルモーションに比べプログラムが組みやすいため使われる。

ただしRD77MSではできないので、要注意だ。

まずRD78G4のユニット拡張パラメータをクリックしてモーション制御設定機能画面を立ち上げる。(※前回ブログ記事を参照。)

そして「プログラム」の「ノーマル」で右クリックしてデータ新規作成を行う。

そしてファンクション部品選択からモーション制御ファンクションブロックを選択する。今回はジョグ機能をドラッグアンドドロップする。

以下ポップアップでOKする。

以下ST言語の関数が自動で記載されるため、引数を記載する。

その前にグローバルラベルを設定しておく。これがラダーとの橋渡しになる。

公開ラベルは有効にしておく。

そしてグローバルラベルをジョグの正転(G_bServoForward)・逆転の指令(G_bServoReverce:綴り間違いは許してね)に引数設定する。

そして「全変換」を行う。

さらに「公開ラベルの反映」を行う。

後はラダー側でユニットラベルから先ほど作ったジョグ正転・逆転指令のグローバルラベルをドラッグアンドドロップしラダーのコイルにすればよい。

※実際の機械のインターロックに気を付けて作成してください。本サイトは動作を保証するものではありません。各自責任で参考にしてください。

Plcopenでサーボ同期

Plcopenでサーボ同期するにはMC_GearInを使用する。

※今回もGX WORKS3で紹介する。

また直線補間や円弧補間は複数の軸を軸グループという単位で管理し、MC_GroupEnableを実行すればできる。

軸グループ設定はRD78G4のユニット拡張パラメータで設定する。

もしユニット拡張パラメータをクリックしたときに以下メッセージが表示されれば、三菱FAサイトからsw1dnn-mucnf-j_021x.zipをダウンロードしてインストールするとよい。

三菱PLCでサーボPLCopen制御

今年2月にOMRON PLC(NX)でPLCopenファンクションブロックによるサーボ制御の仕事を行ったが、今回は三菱PLCでもPLCopenによる制御が可能なので紹介する。

今回はMR-J5サーボアンプで動作する位置決めユニットRD78G4を例に紹介する。

ちなみにRD78G4は従来通りのバッファアドレスを使用したシンプルモーション方式でも制御可能である。バッファアドレスの値はほとんどRD77MS(サーボアンプはMR-J4ーB)と同じでプログラムの書き方も同じだ。

バッファアドレスのサーボ制御は三菱Aシリーズでのサーボ制御から手法自体は変わっていない。(パラメータ設定等は当然進化している)

ではPLCopenのプログラム作成方法をGX WORKS3で紹介する。

まずPLCopen用ファンクションブロックライブラリ(MotionControl_RD78G_4e.zip)を三菱電機FAサイトからダウンロードする。

そしてGX WORKS3の「部品登録」でライブラリを登録する。

そして、そのファンクションブロックをラダー画面にドラッグする。今回は絶対位置決めファンクションブロックを例にする。

ラダーでファンクションブロックを使用して位置決め制御プログラムを作っていく。なお、PLCopenのサーボファンクションブロックはOMRONやシーメンスとも共通だ。

当然、過去の資産で動いている設備の保守・改造も我々電気制御技術者にとって大事な仕事であり、従来の手法も理解しておく必要があるが、PLCopenの存在自体を知らないわけにはいかない。

ST言語のみでファンクションブロック

PLCでファンクションブロックを使うとき、決まり決まった計算をライブラリとして使いたい時が多い。

新規の機械動作する部分のラダーはファンクションブロックにするとモニターしにくく切羽詰まっている現場では向かないが、卓上で事前にシミュレーションできる数式はライブラリしておきたい。

しかしその時はラダーよりST言語で書いたほうが効率的だ。今回紹介するのは三菱PLCでST言語のみのファンクションブロック作成方法である。

QシリーズでもRシリーズでも同じやり方だ。

※GX WORKS2ではST言語使用のため、プログラム種別変更が必要。

GX WORKS3でやり方を紹介する。

まず左ナビゲーションからFBFILEを右クリックし「データ新規作成」を選択する。

データ名を参考URLに従いLinerCalcにし、プログラム言語をST言語にする。

新規作成したファンクションブロックのローカルラベルを作る。

  • VAR:普通の内部変数ラベル
  • VAR_CONSTATNT:値の変わらない内部変数ラベル
  • VAR_RETAIN:ラッチ機能のある内部変数ラベル
  • VAR_INPUT:ファンクションブロックの入力
  • VAR_OUTPUT:ファンクションブロックの出力

プログラムをST言語で書く。変換すればファンクションブロックが完成。

できたファンクションブロックをラダー作成窓にドラッグし、入出力変数を記載。

これでST言語のファンクションブロック完成。