シーメンス#S7-1200 G2でPROFINET IRT構築:WITTENSTEINサーボ制御やってみよう

今回の記事ではSIEMENS S7-1200 G2 × WITTENSTEINサーボでPROFINET IRT構築に挑戦します。サーボドライブ(simco® drive 2)の設定からTIA Portalでのプログラム作成まで、実機で構築した手順をまとめました。また、制御のリアルタイム性や注意点も解説しています。実際に動かしたい人にもおすすめ!

さ、FAのを楽しもう。

Reference Link

http://soup01.com/ja/category/siemens-jp/s7%e2%80%901200-g2/

Project#Play with Wittenstein_Part1_Commissioning
Project#Play with Wittenstein_Part2_Configure with TwinCAT and ProfiDrive
Project#Play with Wittenstein_Part3_Testing with TwinCAT Online Panel

TIA Portalからのモーション制御

プロジェクトを作成し、テクノロジー・オブジェクトを設定し、TIAポータルを使用してコンフィギュレーションをCPUにダウンロードします。そしてCPUにダウンロードします。 モーションコントロール機能はCPUで処理されます。

ユーザープログラムの Motion Control 命令を使用して、テクノロジーオブジェクトを制御します。TIA Portal は、コミッショニング、最適化や診断などの機能を提供します。

次の図は、ユーザー・インターフェースと S7-1500 CPU へのモーション・コントロールの統合を概略的に示しています。ンセプトを簡単に説明します。

機能

TIAポータルは、モーションコントロール機能のプランニングと試運転をサポートします:

  • ハードウェアの統合と構成
  • テクノロジーオブジェクトの作成と設定
  • ユーザープログラムの作成
  • CPUへのダウンロード
  • 軸の試運転
  • ドライブの最適化
  • 診断

Technology objects?

Technology objectsは、コントローラ内の実際のオブジェクト(ドライブなど)を表します。 ユーザープログラムのモーションコントロール命令によって、Technology objectsの関数を呼び出します。 Technology objectsは、実オブジェクトの動きのオープンループおよびクローズドループ制御を行い、ステータス情報(現在位置など)をFeedbackします。

それを簡単にまとめると、

  • Technology objectsの構成は、実際のオブジェクトの特性を表している。
  • 構成データはTechnology データブロックに格納されます。

モーション・コントロールでは、以下のテクノロジー・オブジェクトが利用可能です。

Speed axis technology object

速度軸technology object(”TO_SpeedAxis”)は、ドライブの速度を指定するために使用します。 モーションコントロール命令で軸の動きをプログラムします。

Positioning axis technology object

位置決め軸technology object(”TO_PositioningAxis”)は、クローズドループ位置制御でドライブを位置決めするために使用されます。 位置決めジョブは、ユーザプログラムのモーションコントロール命令で軸に発行します。

Synchronous axis technology object

同期軸technology object(”TO_SynchronousAxis”)には、位置決め軸テクノロジー・オブジェクトのすべての機能が含まれています。 軸は、同期動作で先行軸の位置変化に追従するように、先行値と相互接続することもできます。

External encoder technology object

外部エンコーダtechnology object(”TO_ExternalEncoder”)は、位置を検出し、それをコントローラが利用できるようにします。 検出された位置は、ユーザープログラムで評価することができます。

Measuring input technology object

Measuring input technology object(”TO_MeasuringInput”)は、実際の位置を素早く正確に検出し、イベントをトリガーします。

Output cam technology object

Output cam technology object(”TO_OutputCam”)は、軸または外部エンコーダの位置に応じてスイッチング信号を生成します。 スイッチング信号はユーザープログラムで評価したり、デジタル出力に送ることができます。

Cam track technology object

Cam track technology object(”TO_CamTrack”)は、軸または外部エンコーダの位置に応じてスイッチング信号シーケンスを生成します。 このプロセスでは、最大32個のカムが重ね合わされ、スイッチング信号がトラックとして出力されます。 スイッチング信号はユーザープログラムで評価したり、デジタル出力に供給することができます。

Cam technology object (S7-1500T)

Cam technology object(”TO_Cam”)は、補間点および/またはセグメントによって関数f(x)を定義し、欠落した関数範囲は補間されます。

Kinematic technology object (S7-1500T)

Kinematic technology object(”TO_Kinematics”)は、位置決め軸をキネマティックに相互接続するために使用します。 キネマティクス・テクノロジー・オブジェクトを構成すると、構成されたキネマティクス・タイプに従って軸を相互接続します。

Technology data block

各オブジェクトのプロパティは、テクノロジー・オブジェクトによって設定され、テ クノロジー・データ・ブロックに保存されます。 Technology data blockには、テクノロジー・オブジェクトのすべての構成データ、設定値、実測値、ステータス情報が含まれます。 TIA ポータルは、テクノロジー・オブジェクトが作成されると自動的にTechnology data blockを作成します。 ユーザ・プログラムを使用して、テクノロジー・データ・ブロックのデータにアクセ ス(読み取り/書き込みアクセス)します。

Motion Control instructions

モーション・コントロールのインストラクションを使用すると、テクノロジー・オブ ジェクトで必要な機能を実行できます。 モーション・コントロールのインストラクションは、TIAポータルの「インストラクション > テクノロジー > モーション・コントロール」から入手できます。 モーションコントロール命令は PLCopen(バージョン 2.0)に準拠しています。

User program

モーションコントロール命令とテクノロジーデータブロックは、Technology objectsのプログラミングインターフェースを表します。 モーションコントロール命令を使用して、ユーザプログラム内のTechnology objectsのモーションコントロールジョブを転送します。 

実行中のジョブのステータスは、Motion Control 命令の出力パラ メータで追跡します。Technology data blockを使用して、実行中にTechnology objectsのステータス情報にアクセスし、特定の構成パラメータを変更します。

Drives and encoders

ドライブは軸の動きを確実にします。 ハードウェア構成に組み込まれています。 ユーザプログラムで Motion Control ジョブを実行すると、テクノロジオブジェクトがドライブの制御とエンコーダの値の読み込みを引き継ぎます。

PROFIdrive 機能を持つドライブとエンコーダは PROFIdrive テレグラムで接続されます。 以下の接続が可能です:

  • PROFINET IO
  • PROFIBUS DP
  • Technology module (TM)

アナログ設定値インターフェースを持つドライブは、アナログ出力(AQ)とオプションのイネーブル信号を使用して接続されます。 アナログ入出力は、対応するI/Oモジュールによって利用できます。

Axis types

軸は、さまざまな軸タイプで構成できます:

  • 位置決め軸と同期軸は、回転軸または直線軸として構成できます。
  • 速度軸は常に回転軸である。 メカニクスの実行に応じて、軸はリニア軸または回転軸として実装される:
    • 直線軸 直線軸の場合、軸の位置はミリメートル(mm)など、直線的な尺度として指定されます。
    • 回転軸 回転軸の場合、 軸の位置は角度単位(°)などで指定します。

PROFIdrive telegrams

PROFIdrive Telegramはコントローラとドライブ/エンコーダの間で、設定値と実測値、制御とステータスワード、そ の他のパラメータを転送するのに使われます。

PROFIdrive テレグラムが接続に使用され た場合、ドライブとエンコーダは PROFIdrive プロファイルに従って扱われ、オンになります。

  • 制御語STW1、STW2、ステータス語ZSW1、ZSW2
  • 速度設定値32ビット(NSET)、速度実測値32ビット(NACT)
  • エンコーダ実測値1(G1_XIST1、G1_XIST2)
  • ダイナミックサーボ制御(DSC)2
  • 速度プリコントロール値
    • 位置差(XERR)
    • Kpc – 閉ループ位置制御の速度プリコントロール値
  • トルク制限

Process response

モーションコントロールのためのOB

technology objectを作成すると、テクノロジーオブジェクトを処理するためのOBが自動的に作成されます。 technology objectのモーションコントロール機能は、独自の実行レベルを作成し、モーションコントロールのアプリケーションサイクルに従って呼び出されます。

それは以下のブロックが作成される:

MC-Servo [OB91]

ポジションコントローラーの計算

MC-Interpolator [OB92]

モーションコントロール命令の評価、セットポイントの生成、モニタリング機能

2つのOBの実行

OBはノウハウが保護されていて、 プログラムコードの閲覧や変更はできません。

2つのOBブロックの周波数は常に1:1であり、MC-Servo[OB91]は常にMC-Interpolator[OB92]の前で実行されます。制御品質とシステム負荷の要件に応じて、適用サイクルとOBの優先順位を設定できます。

MC-PreServo [OB67] とMC-PostServo [OB95]

さらに、アプリケーションによってOBブロックMC-PreServo [OB67]とMC-PostServo [OB95]を作成することができます。

OB MC-PreServo [OB67]とMC-PostServo [OB95]をプログラムすることができ、アプリケーション・サイクルで呼び出されます。 つまり、MC-PreServo[OB67]とMC-PostServo[OB95]OBは、一貫したデータ処理や、アプリケーションサイクルと同期して実行する必要があるプロセスのモーションや原点復帰機能の開始など、時間的に重要なイベントに使用できます。

アプリケーションサイクル

MC-Servo[OB91]が呼び出されるアプリケーション・サイクルは、OBのプロパティの”General > Cycle Time”で設定できます:

Synchronous to the bus

MC-Servo[OB91]は、バス・システムと同期して、またはバス・システムに reduced ratioで呼び出されます。 送信クロックは、選択したバスシステムのプロパティで設定します。 Distributed I/O”の ドロップダウンリストで、以下のバスシステムを選択できます:

  • Isochronous PROFIBUS DP
  • Isochronous PROFINET IO

注意するのは、通信プロセッサ/通信モジュール(CP/CM)を介してCPUに接続されているバスシステムと同期してMC-Servo [OB91]を呼び出すことはできません。

Cyclic

MC-Servo [OB91]は、指定されたアプリケーション・サイクルで周期的に呼び出される。

選択されたアプリケーション・サイクルは、1サイクルでtechnology objectを処理するのに十分な長さでなければなりません。technology objectの処理時間がアプリケーション・サイクルより長いと、オーバーフローが発生します。なので、最適な制御品質を達成するためには、MC-PreServo[OB67]、MC-Servo[OB91]、MC-PostServo[OB95]の構成ブロックの計算は、送信サイクル内で実行されなければならない。

MC-Servo[OB91]とMC-Interpolator[OB92]の実行時間は、拡張命令 “RT_INFO “で確認できます。それによって、OB MC-PreServo[OB67]とMC-PostServo[OB95]の現在のアプリケーション・サイクル(μs単位の情報)は、開始情報を使用して読み取ることができます。

Reduction ratio (CPU V1.5 and higher)

Isochronous PROFINET IOシステムの送信クロックに対して、MC-Servo [OB91]のアプリケーション・サイクルを減らすことができます。 送信クロックの整数倍を係数として設定できます。同じ PROFINET IO システムでIsochronousモード割り込み OB と MC-Servo [OB91] を同期して呼び出す場合、両方のOBに同じアプリケーションサイクルを設定する必要があります。

Priority

OBの優先順位は、”General > Properties > Priority”のプロパティで必要に応じて設定できます。

MC-Servo [OB91]

MC-Servoの優先度は17〜26まで調整できます(デフォルト値26)。

MC-Interpolator [OB92]

MC-Interpolatorの優先度は16〜25まで調整できます(デフォルト値24)。

注意

The priority of MC-Servo [OB91] must be at least one higher than the priority of MC-Interpolator [OB92]. The priority of the organization blocks MC-PreServo [OB67] and MC-PostServo [OB95] correspond to the priority of the MC-Servo [OB91]. MC-PreServo [OB67] is called immediately before MC-Servo [OB91]. MC-PostServo [OB95] is called immediately after MC-Servo [OB91].

MC-Servo [OB91] の優先度は MC-Interpolator [OB92] の優先度より少なくとも1つ高くなければならない。また、優先度の調整では:

  • MC-PreServo[OB67]とMC-PostServo[OB95]のOBの優先度は、MC-Servo[OB91]の優先度に対応する。
  • MC-PreServo [OB67]は、MC-Servo [OB91]の直前に呼び出される。
  • MC-PostServo[OB95]は、MC-Servo[OB91]の直後に呼び出されます。

Process image partition “OB Servo PIP”

MC-Servo[OB91]を呼び出すと、モーションコントロールのisochronous モードでProcess image partition「OB Servo PIP」が利用可能になります。 モーションコントロールが使用するすべてのドライブとエンコーダは、このプロセスイメージパーティションに割り当てられます。

また、MC-PreServo[OB67]とMC-PostServo[OB95]は、MC-Servo[OB91]から自動的に呼び出されるため、プロセスイメージのパーティションも自動的に利用できます。 MC-PreServo[OB67]を使用する場合は、MC-PreServo[OB67]の起動時にデータが読み込まれます。そして MC-PostServo[OB95]を使用する場合は、MC-PostServo[OB95]の起動後にデータが出力されます。

さらに、モーションコントロールが使用するすべての I/O モジュールをこのProcess image partitionに割り当てる必要があります(ハードウェア・リミットスイッチなど)。 この割り当てにより、テクノロジオブジェクトと時系列的に同期した処理が行われます。 注意するのは、入力プロセス・イメージ・パーティションは、STOP モードでも更新されます。

Operational Sequence and Timeouts

モーション・コントロール機能を処理する場合、各アプリケーション・サイクルでOB MC-Servo [OB91]とMC-Interpolator [OB92]が呼び出され、処理される。 残りのサイクル時間は、ユーザープログラムの処理に使用できます。エラーのないプログラム実行のために、以下のルールを守ってください:

  • 各アプリケーション・サイクルでは、MC-Servo [OB91]を起動し、完全に実行しなければならない。
  • 各アプリケーション・サイクルにおいて、関連するMC-Interpolator [OB92]は少なくとも起動されなければならない。

下図は、OB1 の処理におけるエラーなし動作シーケンスの例です。

Overflows

例えば、MC-PreServo [OB67]またはMC-PostServo [OB95]にtechnology objects oやプログラムが追加された場合など、設定されたアプリケーション・サイクルが超えた場合にオーバーフローが発生する可能性があります。 

MC-Servo[OB91]の送信クロックがオーバーフローした場合、CPUの診断バッファにメッセージが生成される。 コントローラは等時性で動作しなくなります。 アプリケーション・サイクルでMC-Servo [OB91]がオーバーフローした場合、CPUはSTOPモードに切り替わります。

次の図は、MC-Servo[OB91]がアプリケーション・サイクルでオーバーフローした場合と、reduction ratio=2の送信クロックでオーバーフローした場合の動作を示している:

MC-Interpolator [OB92]の実行は、MC-Servo [OB91]呼び出しによってのみ中断することができる。それ以上の割り込みが発生した場合、CPU は STOP モードに切り替わります。

CPUはMC-Interpolator [OB92]の最大3連続オーバーフローを許容する。それ以上のオーバーフローが発生した場合、CPUはSTOPモードに切り替わる。

Operating modes

最後は、各動作モードおよび動作モード間の遷移におけるモーションコントロールの動作について説明します。CPUには以下の動作モードがあります。

STOP mode

STOPモードでは、ユーザープログラムは処理されず、すべてのプロセス出力は無効になります。したがって、モーション・コントロールのジョブは実行されません。Technology data blocks は更新されます。

STARTUP mode

CPUが周期的なユーザープログラムの処理を開始する前に、スタートアップOBが1回処理する。STARTUPモードでは、プロセス出力は無効になる。モーションコントロールのジョブは拒否されますが、Technology data blocks は更新されます。

RUN mode

ユーザープログラムは RUN モードで処理される。RUN モードでは、プログラムされたモーション・コントロールのジョブが周期的に呼び出され、処理される。そしてTechnology data blocks は更新されます。

HOLD operating state

Technology Objectが使用されている場合、ブレークポイントの使用はサポートされません。各ケースでMC-Servoのオーバーフローが発生します。これは即座にSTOPモードに切り替わります。HOLD 動作状態では、イベントは開始されず、ユーザープログラムは実行されません。すべての出力は無効化されるか、パラメータ設定に従って反応します。出力は設定された代替値を供給するか、最後に出力された値を保持し、制御されたプロセスを安全な動作状態にします。

Operating mode transitions

動作モード間の遷移におけるモーション・コントロールの動作を示しています:

POWER ON → STOP 

CPUが技術オブジェクトの再起動を行う。 technology objectsはロード・メモリの値で再初期化される。

STOP → STARTUP 

モーションコントロールには関係ない。

STARTUP → RUN 

プロセス出力が有効になる。

RUN → STOP 

CPU が RUN モードから STOP モードに切り替わると、アラーム応答「remove enable」 に従ってすべてのtechnology objectsが無効になる。アクティブなモーションコントロールジョブは中断される。RUN中のtechnology objectsに対して再起動に関連するデータが変更された場合、CPUは対応するtechnology objectsの再起動を実行する。

STARTUP → HOLD 

起動ルーチンのブレークポイントに達したときになります。

HOLD → STARTUP 

technology objectsを使用する場合は不可能です。

RUN → HOLD

ブレークポイントに到達した。

HOLD → RUN 

technology objectsを使用する場合は不可能です。

HOLD → STOP 

スイッチ/ディスプレイの操作、またはプログラミング装置からSTOPに設定します。

Positioning axis technology object?

位置決め軸technology object?は、エンコーダ設定を考慮して位置設定値を計算し、対応する速度設定値をドライブに出力します。 

位置制御モードでは、位置決め軸のすべての動作は位置制御動作として行われる。アブソリュート位置決めでは、位置決め軸technology objectの物理的な位置がわかっていなければなりません。

各位置決め軸は、PROFIdrive テレグラ ム、アナログ設定値インターフェース、 PROFIdrive テレグラムによるエンコーダに よってドライブが割り当てられます。

エンコーダ値と定義された位置の関係は、機械的特性とエンコーダ設定のパラメータ割り当て、および原点復帰動作によって確立されます。

また、technology objectは、原点復帰状態でなくても、位置関係のない動きや、相対的な位置の動きを行うことができる。

Implementation

今回の記事の流れはWITTENSIEN側のDRIVE設定→TIA側のハードウェア構成→PROFINET設定→Technology Object構築→プログラム作成になります。

WITTENSTEIN Side

最初にWITTENSTEIN側を構築します。

ソフトウェア・バージョン

MotionGUI2ツールから現在のServo DriveのFirmwareを確認できます。今回の記事では03.02.00です。

古いMotionGUI2でも新しいFirmwareのDriveの設定も可能ですが、最新VersionをDownloadして使用しましょう。

モーターギア

今回記事で使用するdynamic motorのGear比を確認したいので、Unitsをクリックし>Unit perspectiveの基本設定はMotor/Input Sideになっています。

Drop-listからShaft/Output sideを選択します。

Motor gear ratioは12になっていることを確認できます。それはMotor Gear比になります。

同じくGear比はMotor項目からも確認できます。

Gear Ratioは固定で12であることがわかります。

PROFIdrive 設定

最後はPROFIdriveの設定を確認しまよう。

その中で調整するのはLife Sign Monitoringの回数ですね。実際のネットワーク状態に合わせて設定しましょう。

Siemens Side

次はシーメンスS71200 G2側を構築します。

GSDMLファイルのインストール

Options>Manage general Station description files(GSD)をクリックします。

GSDMLの管理画面が表示され、…ボタンをクリックします。

先程DownloadされたGSDML Folderを選びましょう。

Done!

ハードウェア構成

WITTENSEINサーボモータの追加

Catalogからsimco Drive2を追加します。

Done!

Profinet ネットワークの割り当て

先ほど追加したSERVO MOTORにある”Not Assigned”を選び、S71200G2と同じのPROFINETネットワークに割り付けます。

Done!

IPアドレスの設定

下図のボタンをクリックすれば、各デバイスのIPアドレスが表示され、アプリケーションに合わせてIPアドレスを設定しましょう。

IRTネットワークの設定

WITTENSEINサーボモータをクリックし、PROFINET>Advanced options>Real time settings>Synchronizationを選び、RT classをIRTに設定してください。

G71200-G2のPROFINET>Advanced options>Synchronizationに自動的にSync masterに変わります。

トポロジーの設定

PROFINET IRTネットワークを構築するには、各IRTデバイスの物理配線を設定する必要があります。ここでTopology Viewをクリックします。

こちらはTopology viewになります。

各IRTデバイスを実際の物理配線に合わせて設定しましょう。

Telegram設定

WITTENSEINサーボモータの通信Telegramを設定します。Default上でServo Driveの通信ModuleはTelegram1に設定されています。

Telegram1を右クリック>DeleteでDefaultのTelegram設定を削除します。

次はCatalogからTelegram105を追加します。

Done!

Realtime Settings-Update Time

WITTENSEINサーボモータを選び、Advanced options>Real time settings>Update timeを実際のネットワーク状態に合わせて調整してください。

Watchdog time

Watchdog timeも実際のネットワーク状態に合わせて調整してください。

Assign device name

WITTENSEINサーボモータを右クリック>Assign device nameで実機のPROFINETデバイス名を設定しましょう。

Safety Program Cycle Time 

Safety プログラムを使用する場合は、Cycle time・Warn Cycle time・Max Cycle timeを調整してください。

Configure MC_Servo

次は先程追加したTelegram105のPropertiesを開きます。

次はWITTENSEINサーボモータノIOAddress>InputにあるOBをMC_Servoに設定しましょう。

Done!

また、IOAddress>OutputにあるOBをMC_Servoに設定しましょう。

また、MC_Servo自体のサイクルタイムにも設定可能です。

Cycle timeを開き>Factorをアプリケーションに合わせて設定しましょう。

Insert Technology Object

今度はTechnology Objectを追加するため、Technology Objects>Add new objectで新規Objectを追加します。

今回記事で使用するTO_PositioningAxis(位置決め軸)を選び>OKでTechnology Objectsを追加しましょう。

Done!

Configure Axis

先ほど追加した位置決め軸を設定します。

Hardware interface-Drive

Drive項目を開きます。

Driveの項目のとなりにある…ボタンをクリックします。

先ほど追加したWITTENSEINサーボモータを選択します。

Done!

Hardware interface- Encoder

Encoderを選び>Encoder1>Encoder Typeを実機のエンコーダータイプに合わせて設定しましょう。

Hardware interface-Data exchange with the drive

Data exchange with the driveの項目でReferenceとMax Speedをアプリケーションに合わせて行きましょう。

  • reference speedはこの軸の基準速度(100%として扱う速度)
  • Maximum speedは実際の使用上の最大速度の上限
Hardware interface-Data exchange with encoder

エンコーダパラメータをエンコーダ設定からCPUに転送する場合は、チェックボックスを選択します。 エンコーダパラメータは、 テクノロジオブジェクトの(再)初期化、 エンコーダと CPU の(再)起動後、 バスから転送されます。 また、エンコーダタイプは、軸のコンフィギュレーションとドライブのコンフィギュレーションが同じでなければなりません。

注意するのはエンコーダパラメータの自動転送は、製品バージョン A16 の PROFIdrive エンコーダでのみ可能です。 このためには、”Encoder” を設定ウィンドウのデータ接続として選択する必要があります。また、SINAMICSドライブでエンコーダを使用するには、製品バージョン> V4.xが必要です。

Extend parameters-Mechanics-Drive

こちらは負荷ギヤのギヤ比は、モーター回転数と負荷回転数の比で規定される。また、”Leadscrew pitch”が1回転するときに負荷が移動する距離を設定する。

  • Number of motor revolutions モーター側の回転数:ここではモーターが12回転する
  • Number of load revolutions 上記12回転でリードスクリューが100回転する設定
Extend parameters-Mechanics-Encoder

このフィールドで、モーター1回転の負荷距離を設定する。負荷ギヤのギヤ比は、モータ回転数と負荷回転数の比で規定される。

  • Number of motor revolutions モーターが6553回転する間に
  • Number of encoder revolutionsエンコーダが65536カウントする

プログラム

次はプログラムを作成します。

dbData

WITTENSEINサーボモータのDBはモーション制御用の軸セットポイント(AxisSetPoint)配列として機能しています。それにより、パラメータを1つの配列で扱うため、コードやブロック間の受け渡しがシンプルなプログラムになります。

fbAxis

次はWITTENSEINサーボモータを制御するFBを作成します。

Interface

こちらはfbAxisのインタフェースで、Technology Objectと加減速などの変数をIOパラメータとして渡すことにより、FBの汎用化になり、1軸のサーボモーション制御を統合的に扱う再利用可能なモジュールです。

Network1

こちらはTechnology ObjectのServo ON信号・インタロック・リセット信号になります。

Network4

こちらはTechnology ObjectのJog Fw/Bwインタロックとコマンド発行のプログラムです。

Network5

このブロックは、軸(Axis)にサーボ電源(電力)を供給するための命令です。これにより、指定した軸が動作可能な状態になります。このブロックは、軸に電源を入れる最初のステップです。通常、MC_MOVE や MC_HOME など他のモーション命令の前に必ず実行されます。

Network6

これは「ジョグ運転(Jog Operation)」を行う命令ブロックで、一定の速度で前進・後退させるような用途に使われます。

Network7

これは、モーション制御軸のエラー状態をリセットする命令ブロックです。

Network8

このブロックは、軸をホーム(原点)位置に移動させ、以降の動作の基準とする処理を行います。

Network9

このブロックは、実行中のモーション(移動)を減速して停止させます。

Network10

MC_HALT は「即時停止(Halt)」を実行する命令です。

MC_STOPよりも緊急度が高く、現在の位置で強制的に速度をゼロに近づけて停止しますが、モーション制御上の「ターゲット位置」などは維持されます。

Network11

これは、指定された絶対座標へ軸を移動させる命令ブロックです。

Network12

この命令は、現在位置からの相対距離で軸を移動させる命令ブロックです。

Network13

これは、軸(#ioToPosition)の StatusDrive.InOperation ステータスを #xDriveOK というBOOL変数に代入しているシンプルの/代入処理です。

Network14

こちらは複数のモーションブロックの Busy フラグを集約し、そのうち 1つでも TRUE であれば xBusy を TRUE に設定します。また、>=1 演算ブロックは、入力信号のうち1つ以上がTRUEかを判定するOR条件です。

Network15

こちらは複数の Done フラグ(処理完了)を集約し、そのうち いずれかが TRUE なら xDone = TRUE に設定します。こちらも >=1 による OR条件の集約です。

fb1

b1(FB3)関数ブロックの宣言部になります。

Network 1:SWITCH #iStep

ステップ番号(#iStep)に応じて、Case0〜Case30へジャンプします。

Case0(Network 2): 開始条件

%M100.7 (mStart) が ON かつ _axis1.xDriveOK が TRUE → 上昇エッジ検出 (R_TRIG)します。またiStep を 1 に進めて %M100.7 をリセット(1回限りの起動)。

Case1(Network 3)

インターロックチェック → MC_POWER 有効化

DriveOK が TRUE かつ %M100.4 (mInterlock) に TRUE → %M100.0 (mEnable) をセットし、またiStep = 10にセットします。

Case10(Network 4): 絶対位置移動

AxisSetPoint[0] = 300.0(位置)

AxisSetPoint[1] = 300.0(速度)

%M100.5 (mMoveAbs) をセット → fbAxis で MC_MOVEABSOLUTE が実行される

終了後に iStep = 20 に進み %M100.5 をリセット

Case20(Network 5): 相対移動(マイナス方向)

AxisSetPoint[0] = 300.0, AxisSetPoint[1] = -300.0で、%M100.6 (mMoveRel) をセット → fbAxis で MC_MOVERELATIVEします。そして終了後に iStep = 30、mMoveRel リセット

Case30(Network 6): タイマーによる一時停止

TON タイマーで 1.5秒停止し、停止後に iStep = 10 に戻します(ループ再開)。

Network 7

FB2では、これまでの構成で見てきたように MC_POWER, MC_MOVEABS, MC_MOVEREL などが1つに集約されており、FB3からの各メモリビット(%M100.x)をトリガーとしてモーション制御が実行されています。

OB1 からの呼び出し

OB1内で fb1(FB3)が呼び出され、軸制御ステップシーケンスが常にサイクル実行されています。

結果

Done!PN/IE_1(G2_PLC_1) と DP-NORM(simco2) は、緑線で接続されており、通信経路は確立されていることを示しています(通常、緑線は正常接続)。

こちらの動画で動作確認できます。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする