サーボモータを動かす〜基本的な動作〜

PLCとタッチパネル
スポンサーリンク
スポンサーリンク

1.サーボモータでできること

筆者の私見ではありますが、産業用設備の制御の中でも、PLCなどを用いた制御を無理やりに大きく二つにわけると「プラント系」と「モーション系」に分かれると考えます。

プラント系の制御は特に「計装」とよばれることもあります。この単語は温度や圧力,液位などの計測を意味し、また同時に計測した結果を機器(ポンプやバルブ,ヒータ他)の制御に利用することで設備全体の自動運転を実現することが可能となります。

対して今回のテーマである、サーボモータを用いた制御は「位置決め制御」や「モーションコントロール」などとよばれ、言葉のとおり機械の動き自体を制御することが主たる目的となります。これにより加工機の工具や搬送装置におけるワークを自動的に目的の場所へ無駄なく移動させることが可能となります。

ちなみにサーボモータの「サーボ」は英語の「servant(サーヴァント)」やラテン語の「servus(サーバス)」からきており、この意味するところは「召使い」などの「命令に忠実に従うもの」というところにありあます。

1)位置決め制御

サーボモータを使用したモーションコントロールではモータ(電動機)を動力源としたアクチュエータをねらった位置に正確に移動させることが可能です。これを位置決め制御(動作)などともよびます。

アクチュエータは入力エネルギーの伝達や円運動,直線運動,(直線/円弧)往復運動などへ変換する機械機構と考えてください。

円運動を直線運動に変換するためのアクチュエータです。カップリングという連結部品を使用しモータと機械的に接続することでモータの回転動作を直線動作へ変換します。NEMA23取付のステッピングモータ付きです。

なお、ここで取りあげるモーションコントロールはモータを使用したシステムなので入力エネルギーは必然的に電力になります。

サーボモータにはエンコーダという部位があり、ここから返ってくる信号にて対象のモータ(自身)がどれくらい回転したのかを知ることができるようになっています。サーボモータに限らずですが、制御対象の状態を知るために、対象自身から取得する信号をフィードバック信号といいます。例えば、温度調節などで現在温度を信号として取得し、目標値との偏差分だけ制御信号を発信するというのも現在温度というフィードバック信号の利用になります。

サーボモータの使用によりアクチュエータの可動部をねらった位置へと動作させることができるようになりますが、ねらった位置への動作速度を自由に決定できることもサーボモータの特徴です。

2)多軸の制御

前の項目で、アクチュエータの可動部を、ねらった位置に制御するということを述べました。あくまでひとつのモータでひとつの動きという想定でしたが、複数のサーボモータを組み合わせることで複雑な動作の実現も可能です。

例えば、直線運動のためのアクチュエータを直角に重ね合わせることで平面上を自由に移動できるテーブルをつくりだすことが可能です。これは「xyテーブル」などとよばれ、これ自体が製品として市場に出回っています。

もちろん上記の「xyテーブル」に高さの概念を取り入れ、三つ目のサーボモータを付加することで三次元の動作を実現することも可能です。このように動作軸を組み合わせることでロボットアームのような動作を実現させることも可能です。

スポンサーリンク

2.サーボコントロールとシステム構成

上記でサーボモータは位置決め動作ができることを述べました。さらに軸数を増やすことで多少複雑な動作でも実現可能であるということでした。

では、このサーボモータはどのようなシステム上で動作をするのでしょうか。まずは大枠から捉えていきましょう。

なお、ここからは国内生産現場でよく見かけるシステム構成を例として説明します。この例では三菱電機製の制御器を使用していますが、どれか一つを理解することで他メーカへの知識の応用が可能です。まずは一つのメーカのもので動作させることができるようになることが必要です。

1)システム構成概要

下の図はサーボモータ(三菱電機製)を動作させる際に必要となるシステム構成の図です。制御盤視点から構成図(例)を作成しています。この図でわかるとおり、結局のところPLCは必要となります。

構成図からもある程度わかるかもしれませんが、サーボモータを動作させるためには複数の機器を介して制御のステップを踏む必要があります。簡単ではありますがサーボシステム内でやり取りされる信号の往復ステップを図に記載します。

サーボシステムにおいて、まずはPLCのCPUからのアクションが必要となります。CPUは動作指令を出す前に、CPU自身及びシステム下位に位置する各ユニットの状態に異常は無いかを確認します。そのうえで原点復帰動作や位置決めポイント動作など動作の種類を「サーボコントローラ」に指示します。

「サーボコントローラ」は情報伝達手段によって「位置決めユニット」や「モーションコントロールユニット」などともよばれるユニットと同義のユニットです。これら以外にも呼称がありますので少しややこしさを感じますが、つまりはサーボモータをコントロールするために特化したPLCと連携可能なユニットであると理解してもらえれば大丈夫です。このユニットも他ユニットと共にCPUに連結される形で配置されます。メーカや仕様によってはCPUに既にこの機能が内蔵されていることもあります。

サーボコントローラは直接CPUとやり取りをすることができ、かつ後述する「サーボアンプ」ともやり取り可能なユニットです。というより、サーボアンプとやり取りすることが目的のユニットとなります。つまりシステム上位であるPLCのCPUと下位のサーボアンプとの橋渡し役となります。ここではCPUからの動作開始停止指令や位置指令を受けサーボアンプへ伝達したりサーボシステムの異常をCPUへ伝達する役割を担います。

「サーボアンプ」はサーボコントローラからの信号をサーボモータへ供給する電力に変換するユニットです。「サーボドライバ」などと呼称されることもあります。位置や速度,トルクの信号によってサーボモータへ供給する電力の大小をスイッチング素子の動作にて制御します。

「サーボモータ」はサーボアンプからの供給電力により回転する駆動機器ですが、最も普及しているであろうインダクションモータに対して自己位置を伝達するための「エンコーダ」というユニットと連結されています。このユニットと連動するすることでサーボアンプへ自身の回転数と位置を知らせることが可能となり、位置決め制御を実現可能にしています。

2)CPUの振舞い

処理速度の高いCPUユニットです。EthernetポートやSDカードスロットも備える万能なCPUです。

元々PLCには産業用設備の全体的な制御を担う役割があります。生物でいう脳のような振舞いをするのがPLCであり、そのうちの主たる処理を担うのがCPUですが、サーボモータを動作させる場合はどのような動きをするのでしょうか。

a.サーボコントローラと直接やり取り

CPUはサーボコントローラと直接的にやり取りをすることになります。サーボコントローラに対して、「どの軸」を「どの位置へ」「どれくらいの速さで」などの信号を出します。ここからの指令がサーボモータの動作の起点となります。

CPUからサーボコントローラへ伝達する信号で最低限必要ものは以下となります。これらは単純動作をさせるだけであっても最低限必要な情報となります。

〈CPUからサーボコントローラ〉

ア)PLCレディ信号(シーケンサレディ等)

イ)サーボON信号

ウ)位置決め始動信号

エ)JOG始動信号(正逆転)

オ)位置決め識別子

カ)位置決めポイントデータ(位置決めアドレス)

キ)動作速度(原点復帰速度他を含む)

ク)ドゥエルタイム

動作させる軸(サーボモータ)が一つ、または複数あるが各々個別に動作させるということであればまずは上記のデータをおさえておくべきとなります。

なお、複数の軸の動作を連携させる場合は上記に加え以下のデータも必要になります。

ケ)主軸番号

コ)補間情報(ポイントまでの軌道)

サ)補間に必要なデータ(半径など)

また、CPUがサーボコントローラから受け取って、その後の処理に利用するための信号もあります。

〈サーボコントローラからCPU〉

ア)準備完了信号

イ)BUSY信号

ウ)サーボモータ現在位置

エ)各種エラー検出信号

上記のような信号のやりとりをもってCPUとサーボコントローラは次におこすべき動作を決定します。

また、これまでに挙げた信号は予め自動的に割り付けられるデバイスを介して、CPUとサーボコントローラ間でやり取りされることとなります。他メーカでも、全く同じではなくても似たようなやり取りがあるかと思われます。

b.共通のデバイス(メモリ)

CPUとサーボコントローラがデータのやり取りを実行する場合、必ず「お互いが既に認識しているデバイスやメモリ」を使用します。

たとえば、【軸1における一つ目の位置決めポイントデータ(№1,位置決めアドレス)は「8006番」のボックスに入れる】という具合に約束事として決められています。

CPUから移動してほしい位置データをこの「8006番」に入れておき、サーボコントローラがこれを読みにくることで、ポイントデータを受け渡すことが可能になるということになります。このときの「8006番」は専用の郵便ポストのような役割となります。

3)サーボコントローラ

前の項でサーボコントローラがPLCのCPUとやり取りできることを、CPU視点から述べました。更に前の項『1.』ではサーボアンプともやり取り可能なユニットであると述べました。

CPUとサーボアンプの橋渡しのために存在するであろうこのユニットがどのような動きをするのかについてみていきます。

a.サーボアンプへの指令

PLC自体が多くのパラメータを保有しており、これらを正しく設定することでねらったとおりの制御を実行することが可能となりますが、サーボコントローラにも様々なパラメータが存在します。これらパラメータは原点復帰動作や位置決め動作,JOG動作等を実行するにあたって、詳細を含めどのように動作すべきかを決定づけるための条件となります。

例えば【単軸動作のみ、位置決めポイントアドレス№1へ、20000[μm/sec]で動作する。】といったとき、少なくとも「動作軸情報」「№1ポイントアドレス情報」,「動作速度情報」が必要になります。もちろん動作のさせ方によってはより多くの情報を伝達する必要があることも充分に考えられます。そしてこれらの情報をサーボアンプへ伝達することではじめてサーボアンプがモータへの動力を供給することができるようになります。

これらの情報はCPU発信で、サーボコントローラが受け取り、サーボアンプへと伝達されます。また『2)-b』で述べたとおり、予め用意されている専用の「ポスト」、つまりデバイスやメモリでやり取りされたり、または専用のパルス信号でやり取りされることとなります。

いずれにしても、特定のデータを伝達する信号は特定の決められた場所へと送られるということです。

b.サーボアンプからの応答

サーボアンプからの信号を受け取るのも、原則的にはサーボコントローラとなります。

サーボコントローラがサーボアンプから受け取る主な信号は、サーボモータの現在位置(回転数と角度)や異常の信号です。

もちろんこれらも予め決められたデバイスやメモリに格納されます。

c.計算が得意

サーボコントローラの大きな特徴としてもう一つ、「移動量や速度の計算が得意」であることが挙げられます。

単軸のみの動作であったとしても、どれくらいの距離をどれくらいの速さで移動させたいかについて計算し、サーボアンプに対して出力する信号を変化させます。

軸が複数になり、各軸を連動させるような動作(補間)の場合、サーボコントローラはさらに複雑な計算をすることとなります。

これにより、人間側で細かく計算したデータを用意する必要がなくなり、より自由度の高い動作の制御を実現することが可能になっています。

4)サーボアンプ

サーボアンプはサーボモータへ動作の指令を出すためのユニットです。「アンプ」には「増幅」や「調整」という意味があるようです。とりわけ増幅という動作がアンプの主要機能と言えるでしょう。

a.サーボコントローラに従う

システムの流れを考える場合、サーボアンプはサーボコントローラの直下に位置します。上位のCPUから発信された動作の指令はサーボコントローラを介して計算された結果、具体的な動作指示としてサーボアンプへと送信されます。

サーボアンプは、自身が担う動作軸(サーボモータ)に対する動作信号を数値やパルスで受け取ることとなります。明示的な数値としての信号なのか、パルスによる信号なのかはサーボコントローラとサーボアンプの型式に依存します。

b.位置を知らせる

サーボコントローラの項にも記載しましたが、サーボアンプはサーボコントローラへ軸の位置を知らせます。サーボアンプはサーボモータから直接その位置情報を取得することが可能です。そしてその受け取った位置情報から、サーボモータがまだ動作を継続すべきかそれとも目標位置へ到達したかを判断しサーボコントローラに位置決めの継続/完了を知らせます。

また位置情報そのものをサーボコントローラへ送信することで表示に利用したり、必要に応じて制御上の判断に利用することが可能になります。

c.状態を知らせる

サーボアンプは直接サーボモータとやり取りをしていますのでモータの状態も当然のことながら都度取得しています。サーボアンプ自身の状態はもちろんサーボモータに発生した異常などをサーボコントローラに知らせることでシステムの動作継続判断を促します。

5)サーボモータ

サーボモータはサーボシステムの最下流に位置する動力部(駆動部)です。モータ、つまり電動機ですので電力を回転力に変換するという機能においては他のモータと同様です。ですが、サーボモータには電力を回転力に変換し利用できる以外に、位置や速度,トルクを制御できるような仕組みが備わっています。

a.サーボアンプに従う

サーボモータは必ずサーボアンプとセットになります。サーボアンプからは「PWM制御」により変調された電力が供給されることとなります。PWMは「パルス幅変調」方式のことであり、供給電力を矩形波(パルス)の形に変換しかつその出力状態の時間を制限することで実質的な効力をコントロールする方法です。

サーボモータはこのような方法で、サーボアンプから供給された電力を受けて動作することとなります。供給電力における、電圧の高さや周波数の高さに応じてサーボモータはその回転力や回転速度を変化させられる結果になります。

b.位置を知らせる

サーボコントローラやサーボアンプの項でも出てきたことですが、サーボモータは自身の位置情報を上位の機器に伝達しています。ここでの場合はサーボモータの位置情報をサーボアンプが受け取ることとなります。

この位置情報はモータの回転に連動する「エンコーダ」という機器から発信されます。産業用として用いられるサーボモータでは、多くの場合このエンコーダが内蔵されています。見た目としてサーボモータから電力入力用の端子(接続部/ケーブル)とエンコーダ信号伝達用の端子(接続部/ケーブル)が備わっています。

スポンサーリンク

3.結線

サーボコントロールに限らず、何かを自動的に制御しようとする場合、システムにおける制御盤内部はもちろんのこと、制御盤外部とのやり取りも何らかの手段により構築する必要があります。ここでは動力からシステム最下流のサーボモータまでをどのように結線すべきであるかについて説明します。

なお、一言でサーボコントロールといってもそのパターンは多岐にわたるので、以降は「2軸の個別制御」を例に説明します。以降でも例としてとり上げるのは三菱電機製の制御器によるものです。

1)通信インターフェイスサーボにおける配線 

以下は通信インターフェイスを活用したサーボコントロールシステムでの配線になります。このシステムでは、サーボコントローラとサーボアンプ間で、専用の通信ケーブルを利用した信号の授受が実行されることとなります。昨今ではこのシステムにおけるサーボコントロールが多く見受けられるようになりました。省配線化に寄与し、パラメータなどの調整で各種設定が容易になることから非常に使い勝手が良いという特徴があります。その反面、汎用性には乏しく、決まった型式の機器の組み合わせ(サーボコントローラとサーボアンプ)でしかやりとりはできません。

まずはサーボコントローラのコネクタにおけるピンアサインやサーボアンプとの通信コネクタについてを図示します。以下を参照してください。

次に、前述を踏まえたうえでの、各軸制御におけるサーボコントローラへの信号線接続や通信ケーブルの接続,また動力回路の接続について図示します。

以下の図は軸1における接続になります。各々サーボコントローラからサーボアンプまで及びサーボアンプからサーボモータまでを図示しています。

以下は軸2における接続図です。軸1同様にサーボコントローラからサーボアンプへの接続と、サーボアンプからサーボモータまでの接続を図示していますが、SSCNETⅢコネクタからの接続は軸1のサーボアンプを介していることに注意が必要です。

この例では、サーボコントローラとして「QD77MS2」というユニットを使用しています。このユニットは「シンプルモーションユニット」とよばれるユニットです。サーボアンプは「MR-J4-***B」という専用通信に対応したサーボアンプを使用します。サーボアンプ型式の「***」は定格出力です。動作させたいサーボモータの容量と照らし合わせて選ぶ必要があります。

「QD77MS2」と「MR-J4-***B」間、さらに各軸の「MR-J4-***B」間は、光ファイバーケーブルを利用した「SSCNETⅢ/H」という通信規格を用いてデータの伝送を実行します。「位置決めアドレス」データや「動作速度」データなどは、この通信を利用して伝送されます。

オートスイッチやリミットスイッチ利用による「ハードウェアリミット信号」,「近点ドグ信号」,「緊急停止信号」など、SSCNETⅢ/H通信とは別に取得また発信するものも存在します。

2)汎用インターフェイスサーボにおける配線

以下は「汎用サーボ」とよばれるサーボコントロールシステムでの配線になります。

ここでもまず、サーボコントローラのコネクタにおけるピンアサインとサーボアンプのインターフェイス用コネクタ(CN1)のピンアサインについて図示します。

サーボコントローラとサーボアンプ間の信号線接続において専用の端子台ユニットを利用することが多いようです。

次に、各軸制御におけるサーボコントローラへの信号線接続や動力回路の接続について図示します。通信インターフェイスの場合に比べると必要な信号を直接配線する必要がありますので、かなり複雑に見えます。

以下は軸1における接続です。「MR-TB50」というコネクタ変換端子台ユニットを利用しています。これを利用することで汎用性を保ったまま比較的容易に接続することが可能になっています。

以下は軸2における接続です。AX2のピンを利用すること以外は軸1とほぼ同様の接続となります。ここでも「MR-TB50」を利用しています。

例では、サーボコントローラには「QD75D2」という位置決めユニットを使用し、サーボアンプは「MR-J4-***A」という汎用サーボアンプを使用します。サーボアンプ型式の「***」が定格出力であるということは通信インターフェイスのサーボアンプ同様です。

「汎用サーボ」はおそらくではありますが三菱電機製のサーボシステム特有の呼称となり、その名のとおり「汎用」のサーボアンプを使用しますので各端子における電圧や極性を含む使用方法さえ誤らなければサーボコントローラを選ばないという利点があります。その反面、前述の専用通信による接続に比して配線が少々煩わしい部分もあります。

具体的にはサーボアンプはその型式によって「オープンコレクタ方式」や「ラインドライバ(差動ドライバ)方式」とよばれる配線方法でサーボコントローラから位置決めのためのデータを受け取ることになります。上記のオープンコレクタ方式とラインドライバ方式で、共通することとしては、いずれの場合も位置決めに必要な信号を高速のON/OFF繰り返し信号(パルス)で伝達します。しかし両者では伝達の詳細が異なります。前者はトランジスタを使用した単純なパルス信号によるものとなりますが、後者はその名のとおり、ラインドライバとよばれる電子デバイスを利用したパルス信号によるものとなります。

オープンコレクタ方式では比較的安価な構成機器によりシステムのコストを抑えることができる反面、ノイズの影響を受けやすく信号伝達の距離が比較的に短い範囲となります。また、高周波への対応も難しいです。

ラインドライバ方式では構成機器の価格が高めになりますが、信号発信の特徴から耐ノイズ性能が高くオープンコレクタ方式よりも長距離での信号伝達が可能です。また比較的高い周波数でも対応可能となります。

汎用サーボを利用したシステム構築ではその他に原点復帰に必要な「零点信号」やサーボアンプのスタンバイ状態を知らせる「READY信号」,溜りパルスといわれる偏差分の消去である「CLEAR信号」などを必要に応じて別途結線する必要があります。

スポンサーリンク

4.設計例1 ハード(回路)設計

ここからは実際に動作させる機器を想定して設計を進めてみます。

設計を進めるうえで、必ず仕様が必要となります。どのような機器をどう動かすのかを知る必要、もしくは決めておく必要があります。

ですので機械的仕様をまず最初に決めておきます。

1)機械的仕様

どのような機械をどう動かすのか、以下に記載します。

ア)モータの回転でエレベータを上下動作させる。

エレベータの上昇下降にサーボモータを使用し任意の高さで停止させることができる機構とします。

イ)上下エレベータは2基

上下するエレベータは2基あり、各々別々に動作可能とします。位置も各々に設定可能とします。

ウ)想定機械機構は「ボールネジ」

各々のエレベータは「ボールネジ」という機械機構にて動作するものとします。「ボールネジ」とは雄ネジと雌ネジのようなペアとなるネジ構造の部品で構成され、雄ネジが回転することで雌ネジが直線方向に移動する機械機構となります。名称に「ボール」が入っているのは雄ネジと雌ネジの摺動抵抗を減らすために鋼球(ボール)が多数仕込まれていることに起因します。

エ)「ボールネジ」ピッチは2[mm]

「ボールネジ」のピッチは2[mm]とします。このときの「ピッチ」とは「ボールネジ」が1回転するときの直線方向移動量のことになります。

2)ハード(回路)設計

機械の仕様が定まったならば、電気的なハード設計に進みます。もちろん上記の機械仕様以外にも決める必要がある内容も多々あります。例えば「リミットスイッチはどのような配置になるか」や「動作速度の限界はどれくらいか」などですが、これらも判明しているのであれば可能な限り情報収集しておくべきです。

電気的な設計に必要な最低限の情報が揃っている前提として先に進みます。

まずは全体構成です。2.1)にて既出の図ですがシステムの全体構成は以下のようになります。盤外形図や盤内配置図は割愛しています。

続いて回路図です。

以下「SH010」は主回路の接続図です。サーボモータへの電力供給元が「MCCB0」になります。

ハード上の制御回路が以下の「SH.020」です。運転準備回路の「CRRDY」コイルが励磁されることで「MC1」「MC2」が励磁され、各サーボアンプへ電源供給される回路となっています。サーボモータの一時停止信号である「サーボストップ」の回路もここで構築されています。

以下「SH.030」はPLCへの電源供給およびその構成図,GOTへの電源供給とLUNケーブルの接続図になります。また、サーボアンプへのSSCNETⅢ/H接続も記載しています。

以下「SH.040」では「軸1」用サーボアンプの接続について記載しています。SSCNETⅢ/Hがサーボコントローラから「軸1」用サーボアンプへ接続され、「軸2」用サーボアンプへ渡されることでシステムの通信が可能になります。

以下「SH.041」では「軸2」用サーボアンプの接続について記載しています。SSCNETⅢ/Hは最終軸である「軸2」で終端となります。

以下「SH.050」ではサーボコントローラの接続について記載しています。「近点DOG信号」は原点復帰時に使用する信号です。「上限リミット信号」「下限リミット信号」もこのサーボコントローラに接続します。

以下「SH.060」はPLCのインプットに関する接続です。

以下「SH.070」はPLCのアウトプットに関する接続です。各軸の「ブレーキ解除」の信号があり、今回のサーボモータを動作させようとする場合、必ずこのブレーキ解除を一瞬先に出力する必要があります。

スポンサーリンク

5.設計例2 セットアップとプログラミング

制御におけるハードウェア部分となる配線接続設計が完了したならば、次にソフトウェア部分を構築していく必要があります。

ですが、ソフトウェア部分といっても当然のことながら、パラメータ設定からプログラミング(PLCラダー),またタッチパネル内の作画設計をする必要があります。今回の例のようにほぼ最低限の動作であったとしても、数種類の作業が発生します。

ハードウェア構築が完了したサーボシステムにどのような設定やプログラムを書き込まなければならないのかについて順にみていきましょう。

なお、この項では先に説明したハードウェアのうち、例としてCPU他の選定を次のようにします。機械機構はもちろんですが、ここがしっかり決まっていないと設定やプログラミングが進まないので非常に大切な部分です。設計前に確実に決定しておく必要があります。

ア)CPU:Q03UDVCPU

イ)入力:QX42

ウ)出力:QY42P

エ)サーボコントローラ:QD77MS2 (2軸用,SSCNETⅢ/Hインターフェイス)

オ)サーボアンプ:MR-J4-10B (0.1[kW],SSCNETⅢ/Hインターフェイス)

1)タッチパネル作画設計(GT Designer3)

この記事での主題はサーボモータの動かし方ですのでこれとは少し外れた話であり、直接サーボモータを動作させるための設計ではありませんが「どのように操作してどのように動作させたいか」は、設計上非常に重要な要素となりますので簡単に説明をします。

タッチパネル(以下「TP」)の作画設計について基本的なことを知りたい場合はタッチパネルを使う〜便利なインターフェイス〜の記事を参照してください。

a.操作条件(インターフェイス仕様)

今回の設計では、まずサーボモータ2台を使って、2つの機械的回転軸を各々個別または同時に動作できるようにするということです機械的ハード,電気的ハード側の設計とも矛盾が無いように注意が必要です。

以下、操作における仕様となる情報を記載します。

ア)各軸の個別位置決め動作スイッチ

「軸1位置決めポイント動作」と「軸2位置決めポイント動作」のスイッチを設け、各々個別に位置決め動作ができるようにします。

イ)両軸の同時位置決め動作スイッチ

軸1,軸2の両軸を一括で位置決め動作可能なスイッチを設けます。

ウ)各軸の個別原点復帰スイッチ

「軸1原点復帰」と「軸2原点復帰」のスイッチを設け、各々個別に原点復帰ができるようにします。

エ)両軸の同時原点復帰スイッチ

軸1と軸2の両軸を一括で原点復帰可能なスイッチを設けます。

オ)各軸のJOG動作スイッチ

軸1,軸2の各軸において前後JOG動作が可能なスイッチを設けます。対象のスイッチを押下している間アクチュエータが指定速度で指定方向に動作し続けます。

カ)各軸の位置表示

軸1,軸2の各軸がどのポジションにあるかを数値で表示します。

キ)各軸の位置決めポイント登録

軸1,軸2の各軸の位置決めポイントを数値で入力し、位置決め動作に利用できるようにします。

ク)各軸のリミット登録(ソフトウェアストロークリミット)

軸1,軸2の両軸におけるデータ上のリミットを登録できるようにします。アクチュエータはこのストロークリミットを超えて動作することはできません。

ケ)各軸の位置決め動作速度登録

軸1,軸2の両軸において位置決め動作時にどれくらいの速度で動作するかを設定登録できるようにします。

コ)各軸のJOG動作速度登録

軸1と軸2の両軸においてJOG動作時にどれくらいの速度で動作するかを設定登録できるようにします。

b.画面作成

以下に前述の操作を可能とするために作成したTP画面とその裏で機能する設定内容を載せます。

ア)ホーム・モニタ画面

メイン画面となります。アクチュエータ(電動機)位置や原点,位置決めポイントにあるかどうかなどを表示するが画面となります。この画面はあくまでモニタのみを目的としており、動作や設定を実行するのは別の画面としています。

イ)操作・設定画面

位置決めポイントの設定や動作速度,ソフトウェア上のリミットを設定するための画面です。その他、各軸の原点へ移動するための操作や位置決め動作のためのスイッチも存在します。

ウ)原点調整画面

原点位置を調整,設定するための画面です。

エ)発生異常表示画面

現在発生中の異常を表示するための画面です。エラーコード表示部では直近で発生のコードを表示します。エラーが無ければここには“0”が表示されることとなります。

オ)異常履歴表示画面

これまでに発生した異常の履歴が表示される画面となります。

カ)画面切替設定

ベース画面切替用デバイスやオーバーラップウィンドウ表示用デバイスを設定します。

キ)IPアドレス設定

TPに割付けるIPアドレスを設定します。「192.168.1.15」がこのTPに割付けたIPアドレスです。LANケーブルを使用した接続下で、PLCがTPを認識するための設定になります。

ク)接続機器設定

接続対象となるPLCの機種やその接続インターフェイスに関する設定をします。認識すべきPLCのIPアドレスもここに設定します。「192.168.1.10」を割付けます。LANケーブルを使用して通信させたい機器では「192.168.△△.□□」というかたちでアドレスを割り付けますが、ルールとしてネットワークグループナンバーである「△△」部分は共通のナンバーとし、□□は各通信機器で重複しないナンバーを用います。

ケ)アラーム設定

アラーム表示を制御するデバイスに関する設定をします。「デバイス」タブで任意のデバイスにアラームを割付けることができます(後述のコメントが必要になります)。

別途「バッファリング」設定や「ファイル保存」設定で電源OFFでもアラームの履歴を維持することが可能となります。

コ)アラーム用コメント

アラームのコメントを設定します。どのアラームをどのように表示するかについては「QD77MS形シンプルモーションユニットユーザーズマニュアル」の「エラー一覧」を参照しています。汎用サーボシステム(Q type PLC)の場合は「QD75P/QD75D形位置決めユニットユーザーズマニュアル」を参照することとなります。いずれにしても、どのような異常内容がどのようなコードで処理されるかについては対応する取扱説明書を参照する必要があります。

2)PLCパラメータ設定(GX Works2)

TPにおける作画設計が完了の場合、この時点でシステムをどのように動作させたいかについて細かい部分を除き概ね決定されていることとなります。併せて設計の上流部分である機械構成やシステムのハードウェア構成もすでに決定されているはずです。これらの情報が揃っているのであれば、システムの中核を担うPLCにおけるパラメータを設定していく必要があります。

ここでは上記に述べましたPLCのパラメータについて設定する手順を確認していきます。ファイル作成の初動となるツールの開き方から保存などについては過去の記事であるPLCプログラム〜ラダー図の基本〜を参照してください。

①「PCパラメータ」設定

PLCを使用するのであれば、どのようなシステムでもほぼ確実に設定する必要があるのが「PCパラメータ」です。

GX Works2の画面左側にある「プロジェクト」のツリー内にある「パラメータ」を展開し「PCパラメータ」をダブルクリックします。開いたウィンドウの「I/O割付設定」タブをクリックし、あらかじめ設計で定められたPLCの構成とI/Oのナンバリングに関する設定をします。

以下、「I/O割付設定」にてベースユニットやCPU種別,入出力関連のユニットに関わる設定をします。ここでサーボコントローラに関する設定も実施しておきますが、このサーボコントローラの設定は後で置き換えられるものとはなります(見た目に変化はありません)。ですが、確認の意味も込めてひとまず設定をしておきます。

続いて「PC RAS」タブをクリックして「エラー時の運転モード」の項目にある「演算エラー」「拡張命令エラー」「ヒューズ断」「ユニット照合エラー」で各々を「続行」の設定にします。これは軽度のエラーでPLCが逐一停止してしまわないようにするための設定です。今回は画像のように設定しましたが、設計の構想に合わせる形で必要に応じて設定してください。

次に、「内蔵Ethernetポート設定」タブにてIPアドレス設定を実行します。先のTPにおける「接続機器設定」でPLCを対象に割付けたIPアドレスをそのまま転記するかたちになります。つまりここでは「192.168.1.10」を割付けることとなります。

「PCパラメータ」内ではこの他に「プログラム設定」などを実施する必要がありますが、現時点では設定するプログラムが設計されておりませんので改めて後ほど設定します。

ここまで設定ができた時点でウィンドウ内の「設定完了」をクリックして、一旦設定を終了させます。

②「インテリジェント機能ユニット」設定

ここからは今回のテーマであるサーボシステム特有の設定項目となります。

画像左側「プロジェクト」のツリー内にある「インテリジェント機能ユニット」を選択した状態で右クリックします。

「新規ユニット追加」のウィンドウが開きます。このウィンドウ内で該当のユニットを選択登録することとなります。

ウィンドウ内「ユニット種別」の「▼」をクリックするとドロップダウンリストが展開されます。このリストの中に今回の該当ユニットとなる「シンプルモーションユニット」がありますのでこれをクリックで選択します。

同じ要領で「ユニット形名」も選択します。今回の該当は「QD77MS2」です。

「ベース№」や「装着スロット№」,「先頭アドレスを指定」を設計のとおりに設定します。今回は「QD77MS2」を基本ベース上のスロット“0”に装着予定であり、先頭アドレスも“0000~”です。この「先頭アドレス」は後に出てくる専用信号や「バッファメモリ」のアドレス詳細を決定するものですので失念しないように注意してください。もし、開発中に失念した場合はサンプルコメントの流用(後述)結果や「パラメータ」で確認するようにしてください。

「I/O割付設定」で同一スロットに何らかの設定がなされている場合、ウィンドウ内の「O.K.」をクリックすると「指定したユニットに置き換えますか?」と尋ねられます。今回はこの「I/O割付設定」で先に「QD77MS2」が設定されていたことで置き換えを尋ねられましたが、各々の設定に相違はありませんので「はい」をクリックして完了します。もし、矛盾が生じるようなら「I/O割付設定」をよく見なおしてみましょう。

設定完了後、「プロジェクト」のツリー内にある「インテリジェント機能ユニット」に「+」マークが表示され、さらに直下に先頭アドレス「0000」の表示と共に「QD77MS2」の表示が現れました。

③「シンプルモーションユニット」設定

「プロジェクト」のツリー内に表示された「0000:QD77MS2」をダブルクリックするか、この左側にある「+」をクリックして項目を展開します。すると下位に「シンプルモーションユニット設定」と「自動リフレッシュ」が表示されます。

ここで、「シンプルモーションユニット設定」をダブルクリックします。

少しのタイムラグの後、下の画像のような画面が開きます。これは「シンプルモーション設定ツール」というツールで「GX Works2」とは別のツールであり、先の「シンプルモーションユニット設定」をダブルクリックすることで立ち上がります。また、今回は「QD77MS2」という「シンプルモーションユニット」というユニットを使用する前提により、ここから設定する運びとなりますが、「QD75**」などの「位置決めユニット」とよばれるユニットを選択の場合は「プロジェクト」のツリー上における表示や、開くツールが異なりますので注意してください。

とはいえ、今回の設計や設定の方法を知ることで、上記のようにユニットが少し異なる場合でも応用が利きます。理解が深まればメーカーが異なるシステム構築や設計の場合でも対応できるようになります。

それでは設定をしていきます。

画面左上の「新規作成」アイコンをクリックします。

画面左側の「ナビゲーション」ウィンドウの「プロジェクト」内に「インテリジェント機能ユニット」の表示が現れると共に画面中央に「新規ユニット追加」ウィンドウが表示されます。

ウィンドウ内の「ユニット形名」項目の「▼」をクリックします。ドロップダウンにて表示された各ユニットのうち、該当のものをクリックして選択します。今回は「QD77MS2」を選択します。

「先頭X/Yアドレスを指定」は今回変更する必要がありません(0000~)ので下の画像のまま「O.K.」をクリックします。

画面左側「プロジェクト」のツリーに「0000:QD77MS2」が表示されます。

ツリー内の「0000:QD77MS2」をダブルクリックするか「+」をクリックすることで展開する項目に「システム設定」がありますので、さらにこの「システム設定」をダブルクリックするか左側の「+」をクリックします。

さらに展開された項目に「システム構成」がありますのでこれをダブルクリックすることで以下の画面が表示されます。

ここで外面中央のワークスペース内にグレー表示されている「軸1 d01」をダブルクリックします。

「アンプ設定[軸1]」のウィンドウが開きます。ここではシンプルモーションユニットに接続されるサーボアンプのシリーズ設定と運転モード等、基本的な設定を実施します。

ウィンドウ内「サーボアンプシリーズ」を選択します。「▼」でドロップダウン表示される各種アンプシリーズ名から今回該当する「MR-J4(W)-B(-RJ)」を選択します。

「アンプ運転モード」は今回は「標準」のままです。ウィンドウ内の「O.K.」をクリックして「軸1」の設定を完了します。

「軸2」の設定をします。要領は「軸1」のときと同様です。「軸2 d02」をダブルクリックして「アンプ設定[軸2]」のウィンドウを開いて設定を進めます。

各軸のサーボアンプにおける基本的な設定が完了すると、これまでグレー表示であったサーボアンプがカラー表示になります。

画面左下にある「アシスタント」ウィンドウからシンプルモーションユニットのパラメータ設定を進めていきます。同ウィンドウ内「パラメータ」をクリックします。

「アシスタント」ウィンドウ内に「パラメータ設定」が表示されます。ここにある「↗基本パラメータ1」をクリックします。

「0000:QD77MS2[]-パラメータ」のタブと画面が開きます。その直後にオーバーラップするかたちで「基本パラメータ1の算出 軸1」のウィンドウが開きます。ここでは機械機構における基本情報を設定します。

「機械構成」ではサーボモータの回転運動をどのような運動に変換するかを,「単位設定」ではサーボシステムが速度や回転数(位置)を算出する為の基本単位を,「エンコーダ分解能」では1回転あたりのパルス数を設定します。

下の画像は「機械構成」を今回の(構想)設計対象となる「ボールネジ垂直」に選択した場合のものです。イラストが変わりますが、この場合その他の設定項目には特に変化はありません。

ここでは、「単位設定」を「mm」,「ボールネジリード」を「2000.0[μm]」,「減速比」を「1/1」としています。特に「エンコーダ分解能」は「4194304」でありデフォルトの数値ですが、組込予定である「MR-J4」シリーズはこの値が4194304[pulse/rev]であり合致するためこのままとします。

上記各項目は機械側の構成や使用するモータやそのモータに付随するエンコーダなどに合わせて設定する必要があります。

モータやエンコーダの仕様確認はもちろんのこと、機械機構がどのようなものであるか、またその仕組みによりモータが1回転するときの移動量などは確実に把握し設定しておかなければ目的の動作はできないということになります。

話をパラメータの設定に戻しますが、「機械構成」をはじめその他の機械的設計要素が決定し、また「エンコーダ分解能」も設定完了したら必ずウィンドウ中央より少し下部にある「基本パラメータ1算出」をクリックします。

「基本パラメータ1算出」をクリックすると、ウィンドウ内の「計算結果」の欄に各値が書き込まれます。

ここまで完了し、ウィンドウ内の「O.K.」をクリックすると、計算結果のパラメータへの反映許可を求められます。問題なければ「はい」をクリックしてウィンドウを閉じます。

「軸1」における「基本パラメータ1」設定が完了したら、続けて他のパラメータを設定していきます。下の画像に「基本パラメータ2」がありますが、こちらに「速度制限値」,「加速時間0」,「減速時間0」があります。こちらも機械の動作に合わせて最適値を設定します。

「詳細パラメータ1」や「詳細パラメータ2」もありますが、これらに関しても必要に応じて設定してください。システムの運用中であっても、設計次第で任意設定変更できるものもあります。例えば「ソフトウェアストロークリミット上限値」,「ソフトウェアストロークリミット下限値」などはTPや専用の設定器を用意することで途中変更をかけることが可能です。

続いて、画面左下の「アシスタント」ウィンドウ内にある「JOG運転」をクリックします。

「JOG運転」とは、いわば手動操作のひとつと考えて差支えはありません。動作命令のスイッチを押している間のみ動作継続するような運転方法です。

ここで、JOG運転時の動作速度に関する各種設定を行います。とはいえ、JOG運転時の直接的な動作速度を設定するのではなく、速度の制限値や加減速時間の選択などを設定します。

特に「JOG速度制限値」ではあまりにも小さな値を設定してしまうと実際にJOG運転をかけたときに制限の影響で動いているかどうか分からない速度でしか動作させられなくなります。動作対象となる機械系の動作量をみながら適正値を設定する必要があります。

次に、画面左下の「アシスタント」ウィンドウ内にある「↗原点復帰」をクリックします。ここでは「原点復帰」に関する各種パラメータ設定を行います。

以下の画像では「原点復帰方式」を選択しています。

先ほどのJOG運転に関わるパラメータを含め、各パラメータの項目をクリックするとそれが何を意味しているのかについて画面下に説明が出てくるようになっています。特に「原点復帰」項目などではグラフとともに詳しい説明が表示されます。

これらの説明は、設定の必要の有無を含めどのような値を設定すると良いかの判断材料になります。

今回の「原点復帰方式」は「カウント式②」としました。

「カウント式②」では、機械機構部に取り付けられた原点認識用のセンサやオートスイッチなどからの反応を検出し、後に原点位置から指定された移動量分の移動を完了した時点で原点復帰完了とする方法です。

「原点復帰方式」が決定できたならば、原点復帰をする方向も決めておく必要があります。そのまま「原点復帰方向」という項目がありますので、「正方向」か「負方向」かを選び設定します。画面下部の説明にあるとおり、原点復帰動作時のアドレス(位置情報)が増加するのが「正方向」、逆にアドレスが減少するのが「負方向」です。

「基本パラメータ1の算出 軸2」も設定します。今回は「軸2」で使用するサーボモータやサーボアンプが「軸1」と同型式であり、また動作させる内容としても同じであるため設定内容も必然的に同じになります。

以下に「軸2」の設定画像を載せます。

画面左下の「アシスタント」ウィンドウ内にある「軸№」の「▼」で「軸1」「軸2」がドロップダウン表示されるので「軸2」を選択します。

以降、「軸1」と同様に設定します。

「軸2」における「JOG運転」や「原点復帰」パラメータも設定していきます。こちらも「軸1」と同様ですので、以下には設定の様子を表した画像のみとします。

④「サーボパラメータ」設定(基本設定)

ここではサーボアンプに対する設定のうち、「基本設定」について説明します。先のサーボコントローラの設定と項目名が似たものも多数あります。このため慣れないうちは特に、サーボコントローラとサーボアンプのどちらの設定を実施しているのかを見失い混同してしまうことがありますので、混乱することの無いように気をつける必要があります。

先ず、画面左側上部のツリー内「サーボパラメータ」をダブルクリックします。

以下画像のように、開いた画面がサーボアンプにおける、「サーボパラメータ」の設定画面となります。

開いているウィンドウ「0000:QD77MS2[]-サーボパラメータ」タブ内にあるパラメータ設定用ツリーに「基本設定」がありますのでこちらをクリックします。

下の画像はツリー内の「リスト表示」によるパラメータのうち、「基本設定」の画面になります。変更したい対象のパラメータナンバーがわかっている状態では、この「リスト表示」から探し出して設定する方が早いかもしれません。

各パラメータにはその機能毎に表示する「機能別表示」もあります。

以下の画像は、タブ内のパラメータ設定用ツリー上部にある「機能別表示」における「基本設定」の表示内容です。この表示では設定項目と設定内容が言葉や図で説明されていますので、設定がより分かりやすいものになっています。

今回、この「基本設定」の「回転方向」,「エンコーダ出力パルス」における設定はデフォルトのままの想定となります。特に「回転方向」はモータの設置状態や「ボールネジ」等機械機構における回転方向とその移動方向が決定付けることとなります。

「強制停止」の「有効」「無効」はハード側の接続に依存することとなりますので矛盾が生じないように注意しましょう。今回はハード側ですでにサーボアンプの強制停止を使用しない前提で結線していますので、以下画像のように「強制停止」の項目で「無効(強制停止入力EM2およびEM1を使用しない)」を選択しておきます。

「拡張設定」などは必要に応じて設定しますが、今回は特に設定を変更する必要がありませんので割愛します。

続いて「構成品」について設定します。「回生オプション」については特に今回は使用するものがありませんのでデフォルトの「回生オプションを使用しない」のままにしておきます。

「バッテリ」に関しては「有効(絶対位置検出システムで使用する)」を選択しますが、これはオプションパーツであるサーボアンプ用のバッテリ(MR-BAT6V1SET)を取り付けている前提となります。

このように設定することで原点を絶対的な基準(ゼロポイント)とした位置決めを実行することとなります。これをアブソリュートシステムといいます。対して、今ある位置を「ゼロ」としてそこから相対的にどれだけ変化したかを検出して位置決めを行うシステムをインクリメントシステムといいます。多くのサーボコントロールシステムでは、この「絶対位置検出システム」が採用されているようです。

「ブレーキ出力」は特に設定変更しません。チェックボックスは「チェックなし」のまま、設定値も「0[ms]」です。ただし、ブレーキ自体は今回の構想で使用しますので、別途シーケンスから動作させるようにします(後述)。

「エンコーダケーブル」に関しても、今回使用を想定するケーブルは「2線式」のものですので、デフォルトでの設定にしておきます。

ここまで設定できたら「軸2」の設定に移ります。

以下の画像のように、「プロジェクト」ウィンドウのすぐ右側に軸選択用のドロップダウンメニューがありますので、ここで「軸2」を選択します。

「軸1」設定時と同様の設定を「軸2」でも実施します。

ここでの「軸2」における設定は選択軸以外「軸1」と全く同じになりますので説明を割愛します。ですが当然のことながら、各軸で使用するサーボモータ(サーボアンプ含)や動作させる内容が異なる場合は各々に見合った設定が必要になります。

④「ワンタッチ調整」の利用

これまで、各軸における基本的な設定を進めてきましたが、ここからはサーボモータが安定的に動作するための調整を実施します。パラメータの項目でいうところの「ゲイン・フィルタ」の設定になります。ここを調整設定することで予期せぬエラーやサーボモータの共振現象などを防止することができます。

しかしながら、これら「ゲイン」や「フィルタ」の各項目を理解したうえで値を決定しようにも、高度な知識や豊富な経験値を要求され、多くの時間を費やすこととなります。ですので三菱電機製のサーボシステムには上記項目を自動で設定する機能が備わっています。これを「ワンタッチ調整」といいます。

「プロジェクト」ツリー内の「サーボアンプ操作」をダブルクリックするか、すぐ左側の「+」をクリックします。

展開したツリー内に「調整」の項目がありますので、これをダブルクリックします。

調整やチューニングの項目が表示されたウィンドウが画面中央に立ち上がります。

ウィンドウ内の「ワンタッチ調整」をクリックすると、調整に入る前の注意が記されたウィンドウが立ち上がります。ここで「OK」をクリックして次へ進みます。

ようやく調整の画面が立ち上がります。下の画像は実機(サーボアンプとサーボモータ)に接続していないので、「開始」スイッチをはじめ、各項目がグレーアウトしていますが、正しく実機に接続されていればこれらの選択や実行が可能となります。

特に制限が無いのであれば「アンプ指令方式」を選択し、「移動許容量」をパルス数で指定するか「サーボモータ回転量」を指定します。いずれにおいても、機械的移動量の限界を超えないように注意してください。また、ウィンドウ内に記載されている注意点を遵守したうえで「▶開始」をクリックします。

「▶開始」をクリックすると即時サーボアンプの指令によりサーボモータが動作を始めます。複数回の往復動作を繰り返した後、サーボモータは停止します。直後、パラメータ内の各種ゲインや補正値などの値が自動で書き込まれます。

この「ワンタッチ調整」は機械的実負荷に近ければ近いほど、より正確な値が書き込まれることとなります。

「軸2」についても同様の操作を実施します。軸選択にて「軸2」を選択したうえで、「軸1」と同様の操作を実施することとなります(説明は割愛します)。

書き込まれる対象となるパラメータは「ゲイン・フィルタ」の箇所となります。これらが設定されることで負荷に見合った制御になり、結果として共振現象などの動作不良を回避することができます。

3)PLCプログラム作成(GX Works2)

TPやサーボコントローラ,サーボアンプの設定および設計が完了しました。この後はいよいよシーケンスプログラムの記述に入ります。これまでのプログラムに比べ大幅に変わる部分として「バッファメモリへのアクセス」があります。もちろんこのことはサーボシステムに限った話では無く、その他様々なユニット(アナログユニット等)が持っている機能でありシステムでもあります。

しかしながらサーボシステムではこの「バッファメモリ」へのアクセスが必須であり、これの理解無くしてサーボコントローラやサーボアンプを扱うことはできません。

①「既知コメント」記述登録

先ずはプログラム記述に必須のデバイスコメントを割付けていきます。入力の「X」や出力の「Y」などで、ハード面からすでに使用方法が決定している部分に関してのコメントを記述登録していきます。

a.サンプルコメント流用(入出力コメント含)

PLC(特に国産のもの)では各デバイスの中でも機能(動き)が決定しているものがあります。例えば「SM400」→「常時ON」のように、使い方が決まっているようなデバイスではサンプルコメントを流用することが可能です。

「バッファメモリ」へのアクセスを多用するサーボシステムではサンプルコメントを流用することでプログラム設計を格段に実施しやすくなります。

以下にサンプルコメントの流用方法を記載します。

画面左側のツリーで「グローバルデバイスコメント」をダブルクリックしてコメントの登録画面を開きます。

画面上のコメント記入欄であればどれが選択されている状態でも良いので、そこで右クリックをします。表示されたメニュー内に「サンプルコメントの流用」というものがありますのでこれをクリックするとさらに「特殊リレー/特殊レジスタ」と「インテリジェント機能ユニット」が表示されます。なお、「インテリジェント機能ユニット」の項目はパラメータ内にインテリジェント機能ユニットが存在しない場合は表示されません。

ここでは、まず「特殊リレー/特殊レジスタ」にサンプルコメントを適用しますので、これをクリックします。

「サンプルコメントの流用を実行しますか?(以下省略)」というウィンドウが開きますので「はい」をクリックします。

特殊リレーや特殊レジスタにサンプルコメントが設定されます。

次に、インテリジェント機能ユニットにおけるサンプルコメントを設定します。

現時点で特殊リレー,特殊レジスタのコメントが設定された状態の画面が開いていますが、このままで良いのでもう一度右クリックをします。先ほどと同様のメニューが表示されますので、同じように「サンプルコメントの流用」をクリックします。そして今度は「インテリジェント機能ユニット」をクリックします。

サンプルコメントを流用する対象ユニットの選択ウィンドウが開きます。今回の場合はインテリジェント機能ユニットが「QD77MS2」のみです。

ウィンドウ内左側にある「QD77MS2」のチェックボックスにチェックを入れ、同ウィンドウ内の「OK」をクリックします。

「QD77MS2」に関連するサンプルコメントが設定されます。以下の画像にみられるとおり、「バッファメモリ」にもサンプルコメントが設定されています。

「バッファメモリ」アドレスの「U0」はユニット先頭アドレスとなっています。デバイスの占有が「10」〜「2F」ならば「U1」となります。これはユニット自体の認識番号ということになります。この値は「PCパラメータ」内「I/O割付設定」の「XY先頭」に割り付けた番号の下一桁を省いた番号になります。

そして後に続く「G***」は特定の項目を指示する「バッファメモリ」のアドレスとなります。

「QD77MS2」で使用する入出力デバイスにおいてもサンプルコメントの流用を実施することでコメントが設定されます。先ほどの「バッファメモリ」アドレス同様、「PCパラメータ」内「I/O割付設定」の「XY先頭」における設定にて「X0」から始めたり「X10」から始めたり、もっと別の先頭番号から始めたりと、重複さえ無ければ自由に割り振ることが可能です。

以下は、「QD77MS2」用として「X0」から登録されたサンプルコメントです。

以下は、「QD77MS2」用として「Y0」から登録されたサンプルコメントです。

b.内部リレーコメント

内部リレーに関しても、現時点で既知のデバイスでは可能な限りコメント登録しておきましょう。特にTPで使用が決まっているデバイスは先にコメント登録しておくことをお勧めします。

以下の画像では、今回の設計で既に使い方を決定した内部リレーに対するコメントを登録しています。

c.データレジスタコメント

「バッファメモリ」へのアクセスを含め各種転送や演算用のデータレジスタにもコメントを登録していきます。やはりここでも、TPで使用が決まっているデバイスを先にコメント登録しておきます。TPでの使用デバイスをそのまま「バッファメモリ」への設定用デバイスとして使うパターンもあります。以下の画像ではこれらTPですでに使用が決定しているデバイスの他、サーボコントローラのバッファメモリへのアクセス用デバイスとしてもコメント割付をしています。

②「PLCプログラム」記述

既知のデバイスや使用予定のデバイスに対するコメント登録が完了しましたので、実際のプログラムを記述していきます。プログラムの作成中に新たに必要になったデバイスでは都度コメント登録をしていきます。

プログラムはその機能毎に「プログラム部品」で分けて作成します。

a.「画面遷移」プログラム

TPの画面を遷移させるためのプログラムを記述します。GT Designer3でTPに「D1000」(ベース画面切替)を画面遷移用のデバイスとして割り当てています。割り当てについては『5. 1) b.』を参照してください。TPに配置された画面遷移用の各スイッチで「D1000」にページナンバーを数値で格納することで任意の画面へ遷移することが可能となります。

b.「運転準備」プログラム

運転準備に関するプログラムを記述します。以下の画像内のプログラムが各々意味するところを説明します。

ア)1行目(ステップ0)~

「SM403」(RUN後1スキャンのみOFF)の動作により、2スキャン目から「Y0」(シーケンサレディ)を出力する命令を記述しています。出力元はCPUで出力先はサーボコントローラつまり「QD77MS2」です。

イ)2行目(ステップ25)~

「Y1」(サーボON)を出力するための記述です。「X21」(運転準備)はPLCの外部でハード的に成立することで入力される信号です。これに「X22」(軸1サーボアンプ電源),「X23」(軸2サーボアンプ電源)および「X1」(同期用フラグ),「Y0」が成立すると「Y1」が出力されます。

ウ)3行目(ステップ40)~

「Y40」(運転準備許可)を出力するための記述です。「M800」(異常発生一括補助)が導通(ON)していなければ「Y40」を出力します。

エ)4行目(ステップ42)~

異常を検出した場合、「Y41」(サーボ異常)を出力します。

c.「設定登録」プログラム

サーボコントローラの動作に関わるバッファメモリにアクセスし、読み書きを実行するためのプログラムを記述します。

ア)1行目(ステップ0)~

「SM400」(常時ON)で常に、バッファメモリから「軸1」の現在値の読み出しを実行します。「バッファメモリ」とはPLCの各ユニットで用意されている特定のメモリのことで、既に用途が特定されているものとなります。

「U0¥G850」はユニット先頭番号が「0」であるユニット(今回の場合「QD77MS2」)のバッファメモリアドレス「850」(軸1実現在値)を示しています。

つまり「U0¥G850」〜「U0¥G851」の値を「D2560」〜「D2561」(軸1現在値読出バッファ)へダブルワードとして転送しています。ここでの「バッファ」は先の「バッファメモリ」とは異なり、情報転送用の中継デバイスという意味でコメントに「バッファ」という単語を使用しただけのものになります。以降、明確に区別するために「バッファ用データレジスタ」と表記します。また、「MOV」命令の前に付加されている「D」はダブルワードで扱うことを表しています。

次の行のOR回路で、取り込んだ値(「D2560」〜「D2561」)を「K100」で除して「D100」(軸1現在位置表示レジスタ)へと再転送しています。除する値である「100」の前に付加されている「K」は「10進数」を意味します。上記の除算プログラムはGOTへ表示させるための処置です。除算に使用する「K100」は「10-6[m]」を「10-4[m]」つまり「0.1[mm]」で表現する目的の係数となります。

イ)3行目(ステップ50)~

「軸2」における現在値読み出しのプログラムです。先の「ア)」と全く同様の処理となります(アクセスするバッファメモリやバッファ用データレジスタ等は「軸2」用となり「軸1」とは異なります)。

ウ)5行目(ステップ89)~

近点ドグON後の移動量を読み出す命令です。「U0¥G824」~「U0¥G825」(軸1近点ドグON後の移動量)がその位置を格納しているバッファメモリです。これを「D2600」〜「D2601」(軸1ドグ後移動量読出バッファ)へ転送しています。

次の行のOR回路で、取り込んだ値(「D2600」〜「D2601」)を「K100」で除して「D320」~「D321」(軸1近点ドグ後移動量モニタ)へと再転送しています。これは『ア)』『イ)』同様、レンジを合わせたうえでTPへ表示させるための処置です。

エ)7行目(ステップ152)~

「軸2」における近点ドグON後移動量を読み出すためのプログラムです。先の『ウ)』と全く同様の処理となります(処理に利用するバッファメモリやバッファ用データレジスタ等は「軸2」用です)。

オ)9行目(ステップ198)~

「軸1」のソフトウェアリミットを設定するためのプログラムです。まずはTPからバッファ用データレジスタに転送をします。TPからの設定入力「D140」(軸1 S/Wストロークリミット max設定レジスタ)に「K100」を乗じたうえで「D2620」~「D2621」(軸1 S/Wストロークリミット max値バッファ)へ転送しています。これは上限値に関する設定動作ですので、次行では下限値に対する演算を実行するためのプログラムを記述しています。

カ)11行目(ステップ239)~

『オ)』で「軸1」の上下限のリミット値をバッファ用データレジスタへ格納しましたが、この各値をバッファメモリへ書き込みます。「U0¥G18」~「U0¥G19」(軸1ソフトウェアリミット 上限値)は上限側設定書込用のバッファメモリです。さらに次行では「U0¥G20」~「U0¥G21」(軸1ソフトウェアリミット 下限値)で下限側設定値を書き込んでいます。

キ)13行目(ステップ303)~

こちらも『オ)』同様に「軸2」におけるソフトウェアリミットを設定するプログラムです。13行目で下限値,14行目で上限値の各々に「K100」を乗じながらバッファ用データレジスタに転送しています。

ク)15行目(ステップ329)~

『キ)』で「軸2」の上下限のリミット値をバッファ用データレジスタへ格納しました。「軸1」同様にこれらの値をバッファメモリへ書き込みます。「U0¥G168」~「U0¥G169」は上限側の設定書込用のバッファメモリです。次行では「U0¥G170」~「U0¥G171」で下限側の設定値を書き込んでいます。

ケ)17行目(ステップ393)~

「軸1」における、近点ドグON後の移動量を設定するためのプログラムです。近点ドグをONした後、そこからの指定移動量を原点として設定します。先ずはTPを介して入力された値「D310」(軸1原点アドレス設定レジスタ)をバッファ用データレジスタ「D2500」~「D2501」へ、演算後に格納します。レンジを合わせるために「K100」を乗じています。

コ)18行目(ステップ436)~

前ステップ『ケ)』のプログラムで「D2500」~「D2501」へ格納された値をバッファメモリへ転送します。「軸1」の「近点ドグON後移動量」として「U0¥G80」~「U0¥G81」へ書き込んでいます。

サ)19行目(ステップ481)~

「軸2」における、近点ドグON後の移動量を設定するためのプログラムです。考え方は「軸1」と同じです。TPを介して入力された値「D350」に「K100」を乗じたうえでの演算結果をバッファ用データレジスタ「D2502」~「D2503」へ格納します。

シ)20行目(ステップ506)~

前ステップ『サ)』のプログラムで「D2502」~「D2503」へ格納された値をバッファメモリへ転送します。「軸2」の「近点ドグON後移動量」として「U0¥G230」~「U0¥G231」へ書き込んでいます。

ス)21行目(ステップ551)~

位置決めに必要な情報を格納するプログラムです。4つほどの項目についてOR回路で値を転送しています。

OR回路の1つ目は、16進数での「100」をバッファ用データレジスタ「D2100」へ転送しています。「100」の前に付加されている「H」が「16進数」を意味します。

コメントに「位置決め識別子」とありますが、これは位置決めのポイントや速度以外の内容を決定づけるための値になります。ここでの「H100」は正確には「H0100」であり、その意味するところは以下のとおりです。

「運転パターン:位置決め終了」

「制御方式:ABS直線1」

「加速時間No.:No.0の設定を使用」

「減速時間No.:No.0の設定を使用」

「補間対象軸:軸1指定(ただし補間制御ではないので無関係)」

詳しくは『MELSEC-Q QD77MS形シンプルモーションユニットユーザーズマニュアル(位置決め制御編)』の『5.3 位置決めデータ一覧』を参照してください。

OR回路の2つ目は「K0(ゼロ)」をバッファ用データレジスタ「D2101」へ転送しています。コメントに「Mコード」とありますが、この「Mコード」を活用することで位置決め動作中や位置決め動作後に、例えばハンドのチャック動作やドリルの回転等、補助的な動作の指令を出すことが可能となります。今回は使用する予定は無いので「K0」となります。

OR回路の3つ目は「K300」をバッファ用データレジスタ「D2102」へ転送しています。コメントに「ドウェルタイム」とありますが、これは位置決め完了の場合では「位置決め完了信号」を出力するまでのタイムラグとなり、連続で位置決めする場合では次の位置決めポイントへ動き出すまでのタイムラグとなります。

OR回路の4つ目は「K0」をバッファ用データレジスタ「D2103」へ転送しています。コメントには「ダミー」とあります。これは後のプログラムでまとめてバッファメモリへ転送する際に、設定の無い領域への転送となることから、意図せぬ誤動作を防止する意味で「K0」を入れておくというプログラムになります。ここではあえて記述していますが、無くても構いません。

セ)25行目(ステップ595)~

ここではTPを介して値が設定される「D130」(軸1動作速度)に「K100」を乗じた結果をバッファ用データレジスタ「D2104」へ格納しています。「K100」を乗じる理由はTPとのレンジ合わせになります。

ソ)26行目(ステップ600)~

ここではTPを介して値が設定される「D120」(軸1位置決めポイントアドレス)に「K100」を乗じた結果をバッファ用データレジスタ「D2104」へ格納しています。

次の行では円弧アドレス用のバッファ用データレジスタに「K0」を転送しています。ダブルワードでの転送になります。今回は円弧を描く制御がありませんので、誤動作防止のために「K0」を転送する命令を記述しています。これも「D2103」(ダミー)のときと同様に必ずしも必要な記述ではありません。

タ)28行目(ステップ609)~

前ステップ『ス)』〜『ソ)』のプログラムで格納された「D2100」〜「D 2109」の値をまとめてバッファメモリ「U0¥G2000」~「U0¥G2009」へ転送します。順番を合わせていますのでそのままブロックムーブ(BMOV)命令にて10ワード分を転送します。このプログラムを経てはじめて、モーションコントローラへ位置決め制御に必要な値が、最低限ではありますがセッティングされることとなります。

「G2000」番台が各々何を意味するのかについては『MELSEC-Q QD77MS形シンプルモーションユニットユーザーズマニュアル(位置決め制御編)』の『付録1 バッファメモリアドレス一覧』で確認することができます。一覧では、もちろんのことではありますが「G2000」番台以外の全てを確認できます。

次の行では「U0¥G2006」へ転送した値を「K100」で除し、その結果を「D110」~「D111」(軸1登録位置表示レジスタ)へ格納します。設定された値がいくつであるかをTPで確認するためのプログラムです。

チ)30行目(ステップ659)~

以降(の画像)では「軸2」における位置決めに必要な情報を格納しモーションコントローラのバッファメモリへ格納するプログラムです。考え方や内容は「軸1」と全く同じです。説明は「軸1」の場合として『ス)』~『タ)』に記載している内容がそのまま適用できますので割愛しますが、下に記述すべきプログラムの画像を載せておきます。

ツ)39行目(ステップ753)~

以降(の画像)ではTPを介して値が設定される「D132」(軸1手動動作速度設定レジスタ)に「K100」を乗じた結果をバッファ用データレジスタ「D2006」~「D2007」へ格納しています。ダブルワードで扱っています。「K100」を乗じるのはやはりレンジ合わせが目的となります。

テ)40行目(ステップ792)~

前のステップ『ツ)』で「D2006」~「D2007」に格納された値をバッファメモリ「U0¥G1518」~「U0¥G1519」(軸1 JOG速度)へダブルワードで転送します。これにより、「軸1」JOG動作時の速度がモーションコントローラへ設定されます。

ト)41行目(ステップ832)~

『ツ)』で説明している「軸1」のJOG動作速度設定と同様のプログラムです。「D182」の値に「K100」を乗じた結果を「D2206」~「D2207」へ格納しています。

ナ)42行目(ステップ854)~

これも、「軸1」のJOG動作速度設定の場合と同様のプログラムです。「D2206」~「D2207」の値を「U0¥G1618」~「U0¥G1619」(軸2 JOG速度)へ転送し「軸2」JOG動作時の速度をモーションコントローラへ設定します。

d.「異常処理」プログラム

各種異常を処理するためのプログラムを記述します。この項でのプログラムは単純なものである割に数は多いというものですので、代表的または特徴的なものに絞り説明をします。

ア)1行目(ステップ0)~

電源投入による立上げ時に非常停止誤検出を防止するタイマ回路です。この後の回路で「T80」(非常停止検出遅延)の接点を利用して電源投入時やPLC立上げ(再起動)時の非常停止誤検出を防止します。

イ)2行目(ステップ17)~

非常停止の検出回路です。先の『ア)』に説明の、誤検出防止回路のタイマ接点が導通している(ON)状態で「X20」(非常停止)入力が非導通(OFF)となる場合「M810」(非常停止補助)を出力するとともに自己保持をします。「X20」が再び導通(ON)された後、「M520」(異常リセット)操作があれば「M810」の出力は断たれます。

ウ)4行目(ステップ23)~

サーボコントローラの異常時にCPU側へシステム内で入力される「X8」(軸1 エラー検出)により当ユニットの「U0¥G806」(軸1 エラー番号)から「D800」(軸1 異常コード取得)へエラーコードを転送するプログラムです。エラーコードをTPに表示させることが目的です。

エ)5行目(ステップ63)~

「X8」(軸1 エラー検出)が入力されている状態で「M520」(異常リセット)操作があればリセットの要求として「M525」(軸1 異常リセット要求)の補助コイルを出力するプログラムです。

オ)6行目(ステップ66)~

『エ)』で出力された「M525」(軸1 異常リセット要求)により「U0¥1502」(軸1 軸エラーリセット)のバッファメモリに「K1」を書込むプログラムです。このバッファメモリに「K1」を書込むことでサーボコントローラの「軸1」へのエラーリセットを命令することができます。加えて、次行では「U0¥G806」(軸1 エラー番号)を「D800」(軸1 異常コード取得)へ転送しています。無事リセットが実行されて異常が無い状態であれば、正常であることを示す「0」が表示されることとなります。

カ)8行目(ステップ99)~

「軸2」における異常の処理プログラムです。

「軸1」の説明『ウ)』~『オ)』と全く同じ内容となります。各デバイスナンバーが「軸2」用となります。内容については「軸1」で説明済なので以下の画像に示すのみとし、ここでは説明を割愛します。

キ)12行目(ステップ163)~

各種異常の発生時に、異常の概要をTPへ表示させるためのプログラムです。「M8000」(ハードウェア異常)以降のコイルを「SET命令」で出力させることによりTPへのメッセージ表示を呼出すためのプログラムが羅列されています。

前述にあるとおり、異常の発生時に「軸1」の場合は「D800」(軸1 異常コード取得)へ、「軸2」の場合は「D810」(軸2 異常コード取得)へエラーコードが転送されてきますので、比較演算命令にて「D800」や「D810」へ格納された値とエラーコードとしての番号が合致する場合にTPへのメッセージ表示を実行します。

エラーコードは抜粋しており、システム上で起こり得るものと起こり得ないものを取捨選択したうえでプログラムへ反映します。十把一絡げに全てを記述するのは容量や労力の大きな無駄になる場合があります。必要に応じてピックアップし、プログラムに反映させる方が効率的かと考えます。

ク)55行目(ステップ743)~

非常停止操作が実行された場合、「M810」(非常停止補助)の補助コイルで別途出力をしています。この補助コイルをもって異常メッセージ表示に利用します。

ケ)56行目(ステップ759)~

各種異常を「M800」(異常発生一括補助)のコイルでまとめています。これは後の画面呼出しやランプ表示のために使用されます。

ケ)61行目(ステップ781)~

「800」(異常発生一括補助)のパルスアップで「D1000」(ベース画面切替)に「K10」を転送しています。これによりすでに設定済の異常画面が呼び出されることとなります。画面に関しましてはこの記事の『b.』に説明がありますので参照してください。

ケ)62行目(ステップ799)~

「M800」(異常発生一括補助)で「M510」(発生中異常ランプ)を点灯させるプログラムです。「M800」が出力しているかぎり、「M510」も出力するのですが、間に「SM412」(1秒クロック)を挿入しているので「M510」はフリッカ動作になります。結果、TPの発生中異常ランプは点滅動作になります。

コ)63行目(ステップ817)~

出力している異常をリセットするためのプログラムです。まとめて「K0」を書込み出力停止させることでリセット動作としています。

e.「始動指令」プログラム

サーボモータを動作させるための指令を出すプログラムを記述します。実際に動作させるためのプロセスの一歩手前の処理になります。

ア)1行目(ステップ0)~

原点復帰動作を命令するためのプログラムです。とはいえ、この行のプログラムは原点復帰動作指令の準備段階というところになります。TPからの原点復帰スイッチ操作にて「K9001」をバッファ用データレジスタ「D2032」(軸1始動番号)へ転送するプログラムです。なぜ「K9001」であるかは後ほど明らかになります。

イ)3行目(ステップ54)~

『ア)』同様に「軸2」における「K9001」の転送を実行します。バッファ用データレジスタは「D2232」(軸2始動番号)になります。

ウ)5行目(ステップ92)~

位置決め動作を命令するためのプログラムです。こちらも位置決め動作指令の準備段階のようなものです。『ア)』同様に「D2032」へ数値転送しますが、その値は「K1」です。「K1」の意味合いは後ほど説明します。

エ)6行目(ステップ151)~

『ウ)』同様に「軸2」における「K1」の転送を実行します。バッファ用データレジスタはやはり「軸2」用で「D2232」になります。

オ)7行目(ステップ192)~

TPからの原点復帰指令入力を遅延させるためのプログラムです。「Y40」(運転準備許可)が出力されている状態でこれを入力として取り込み、かつ「M200」(両軸原点復帰sw)「M100」(軸1原点復帰sw)「M150」(軸2原点復帰sw)のいずれかがTPから操作(ON)され、さらにこれが1[sec]以上継続した場合に「T50」(両軸原点復帰遅延タイマ)「T51」(軸1原点復帰遅延タイマ)「T52」(軸2原点復帰遅延タイマ)が各々出力されるというプログラムです。

カ)10行目(ステップ225)~

「T50」(両軸原点復帰遅延タイマ)や「T51」(軸1原点復帰遅延タイマ)が導通したうえで「D2032」(軸1始動番号)に「K9001」が格納されているという条件の一致の瞬間のみバッファメモリの「U0¥G1500」(軸1位置決め始動番号)へ「D2032」内の「K9001」が転送されることとなります。

「U0¥G1500」に「K9001」が格納されることにより、位置決めユニットは「軸1」に対する動作が原点復帰であると認識します。

また次行では、原点復帰以外の位置決め動作として「M105」(軸1位置決め動作sw)が導通(ON)時、同時に「D2032」に「K1」が格納されているという条件の一致の瞬間のみバッファメモリの「U0¥G1500」へは「D2032」内の「K1」が転送されることとなります。「K1」は「動作ポイントNo.1」を意味します。

同時に上記各々の条件により「M600」(軸1始動補助パルスアップ)が出力されることとなります。こちらも条件一致の瞬間のみの出力となります。

キ)13行目(ステップ292)~

「X21」(運転準備)が導通状態(ON)であり、かつ「X0C」(軸1 BUSY)「X14」(軸1位置決め完了)「X24」(軸1 STOP)が入力されておらず、さらに「M800」(異常発生一括補助)も導通(仮想コイルOFF)であるとき、「M600」(軸1始動補助パルスアップ)が出力された瞬間に「M601」(軸1始動指令補助)が出力されます。同時に「M602」(軸1位置決め時ブレーキ解除補助)も出力されることとなり、これらは「M601」の接点にて自己保持されることとなります。

ク)15行目(ステップ301)~

『カ)』同様に「軸2」におけるバッファメモリ「U0¥G1600」(軸2位置決め始動番号)へのデータ格納を実行します。さらに「軸1」同様、「M610」(軸2始動補助パルスアップ)を出力させるプログラムとなります。

ケ)17行目(ステップ349)~

こちらも「軸1」の場合の『キ)』同様に、「M601」(軸1始動指令補助)と「M602」(軸1位置決め時ブレーキ解除補助)を出力させるためのプログラムとなります。

コ)19行目(ステップ358)~

「軸1」におけるJOG動作指令のためのプログラムです。「X21」が入力されている状態(導通)で「Y09」(軸1 逆転JOG始動)と「X0C」が入力されておらず「M800」も導通(仮想コイルOFF)であるときに、TP操作にて「M110」(軸1 JOG正転)が入力された瞬間(パルスアップ)に「M650」(軸1 正転JOG始動補助)がSET命令により出力されます。

「Y09」のb接点は正転における逆転側のインタロックとなります。

サ)20行目(ステップ389)~

「M110」のON状態がOFFに切り替わった瞬間、つまりTP上の「M110」スイッチ操作を中断した瞬間に「M650」がRST命令にて出力遮断となります。また、「M800」の仮想コイルがONした場合も同様に「M650」がRST命令にて出力遮断となります。「M800」による出力遮断はこの仮想コイルが出力し続ける限りRST命令を実行し続けることとなります。

シ)22行目(ステップ393)~

『コ)』同様に「軸1」における逆転の出力プログラムとなります。「M651」(軸1 逆転JOG始動補助)がSET命令により出力されます。

「Y08」(軸1 正転JOG始動)のb接点は逆転における正転側のインタロックとなります。

ス)23行目(ステップ400)~

こちらも「軸1」の場合の『サ)』同様に、「M651」(軸1 逆転JOG始動補助)をRST命令にて出力遮断するためのプログラムです。

セ)25行目(ステップ404)~

『コ)』『シ)』にて「軸1」に対する正逆転JOG動作の指令を受けて、同軸におけるJOG動作時のブレーキ解除指令を出力するためのプログラムです。「M652」(軸1 JOGブレーキ解除補助)を出力します。

ソ)27行目(ステップ407)~

以下の画像は、前述の『コ)』~『セ)』と全く同じ要領で「軸2」におけるJOG動作での始動指令を処理するプログラムです。バッファメモリやその他デバイスが「軸2」用であること以外は「軸1」の場合と同じ処理になりますのでここでは画像のみの記載とし詳細説明は割愛します。

f.「出力指令」プログラム

動作の指令を実際に出力するためのプログラムを記述します。

ア)1行目(ステップ0)~

「M602」(軸1位置決め時ブレーキ解除補助)および「M652」(軸1 JOGブレーキ解除補助)の仮想コイルが出力した瞬間(パルスアップ)つまり「M602」「M652」のいずれかが導通(ON)した瞬間に「Y42」(軸1ブレーキ解除)をSET命令にて出力するためのプログラムです。

イ)3行目(ステップ30)~

『ア)』同様に「軸2」におけるブレーキ解除のためのプログラムです。「Y43」(軸2ブレーキ解除)をSET命令にて出力します。

ウ)5行目(ステップ48)~

「M601」(軸1始動指令補助)が出力されたときに「Y42」が出力されると「Y10」(軸1 位置決め始動)を出力するプログラムです。

上記「Y10」の出力時に、『e.始動指令プログラム』-『カ)』で「U0¥G1500」(軸1位置決め始動番号)に「K9001」が書込まれていれば原点復帰動作となり、「K1」が書込まれていれば「位置決めデータ№1」への位置決め動作となります。

エ)6行目(ステップ85)~

「軸2」における位置決め始動のプログラムです。「Y11」(軸2 位置決め始動)を出力します。

考え方は『ウ)』と全く同じになります参照されるバッファメモリは「U0¥G1600」(軸2位置決め始動番号)となります。

オ)7行目(ステップ106)~

「M650」(軸1正転JOG始動補助)が出力している状態で「Y42」が出力された場合に「Y8」(軸1正転JOG始動)を出力します。

「M651」(軸2正転JOG始動補助)が出力している状態で「Y42」が出力された場合に「Y9」(軸1逆転JOG始動)を出力します。

カ)9行目(ステップ141)~

「軸1」同様に、「軸2」のJOG始動を出力するプログラムです。正転JOG動作では「Y0A」(軸2正転JOG始動)を、逆転JOG動作では「Y0B」(軸2逆転JOG始動)を出力します。

キ)11行目(ステップ163)~

「軸1」におけるブレーキ解除出力の遮断、つまりブレーキの再セットのプログラムとなります。「M602」と「Y10」の双方の出力が断たれた瞬間、または「M652」と「Y8」および「Y9」の全ての出力が断たれた瞬間に「Y42」の出力がRST命令にて遮断されるプログラムです。

ク)13行目(ステップ203)~

「軸2」におけるブレーキ解除出力の遮断、つまりブレーキの再セットのプログラムとなります。こちらもまた「軸1」と全く同じ考え方です。「Y43」の出力がRST命令にて遮断されるプログラムです。

ケ)15行目(ステップ229)~

「軸1」の位置決め動作中表示のためのプログラムです。「X0C」(軸1 BUSY)の導通状態をそのまま「M125」(軸1位置決め動作ランプ)の出力へ反映させています。

コ)16行目(ステップ257)~

「軸2」の位置決め動作中表示のためのプログラムです。「X0D」(軸2 BUSY)の導通状態をそのまま「M175」(軸2位置決め動作ランプ)の出力へ反映させています。

g.プログラム設定

作成したプログラムは下の画像にあるように、「PCパラメータ」内の「プログラム設定」に必ず「挿入」(登録)しておく必要があります。「挿入」忘れに注意してください。

ここまででひととおりの設計が完了することとなります。

このあとは機械系を含む実機動作として検証を繰り返してより効率的な制御へとブラッシュアップする段階に入っていきます。

スポンサーリンク

6.獲得した知識と経験を活かす

ここまで、サーボシステムにおける設計に関して、かなり基本的な項目から始まり、さらに簡単な動作として2軸個別制御の例を挙げて説明をしてきました。

多くの説明を必要としましたが、まだまだサーボコントローラやサーボアンプなどのほんの一部の機能しか使用していないことは明白です。本来、もっと多くの軸をもっと複雑に便利に利用することができる機器でありシステムです(補間動作など)。

筆者がサーボシステムについて一気通貫でハード(配線)ソフト(プログラム)双方の設計に本格的に携わったのはほんの2~3年前からであり、まだまだ知識経験が浅いです。ハード側の設計はもっと以前から経験させてもらってはいたものの、システム全体(制御部分)の設計に初めて携わったときは理解にとても苦労しました。ですのでそのときに得た知識経験は確実に活かすべきと考えております。

まだまだ浅いながら筆者が実務をとおして得たものは惜しみなく開示していきます。もしかすると知識経験の不足から誤解をしてしまっていることもあるかもしれません。そのときは是非ともご指摘いただき、皆さんのお知恵やご経験をお借りしたくお願いいたします。

筆者はこれからも学び続け世の中に存在する技術を吸収し、今よりももっとレベルアップしていきます。そして教わり得たものを皆で共有させていただきます。

これからも是非ともよろしくお願いいたします。