Codesys#WAGO PFC200でJTEKT Servo Drive をPR Modeで制御しよう

今回の記事ではCodesys Runtimeを稼働できるWago PFC200 Controllerからデジタル入出力からJTEKTのServo Driveを制御していきたいと思います。

Codesys側はFBD言語で制御プログラムを実装し、JTEKT側はPR Modeを使用します。

さ、はじめよう!

Reference Link

JTEKT#KSD Servo Drive_Part1_動かしてみよう

Video

こちらは今回の記事の動画Versionになります。

Codesys.Tutorial02:JTEKT Servo DriveをDIOで制御しよう

PR Mode?

KSD-A3 Servo Driveの位置制御には、外部位置指令パルス(PT)入力と内部レジスタ入力(PR)の 2 つの指令入力モードがあります。

そのPR Modeは、外部指令パルス入力を使用することなく、簡単に位置制御を行うことができるモードになります。Servo Driveには100セットまでのPR Registerが用意されています。

下図のように、End-Userが実行したいPRをPOS0からPOS6までBit単位として分解し、CTRG Flagを立ち上げTrueすれば、コマンドがトリガーされます。

下図は基本的な制御構成です。

Pars

PR ModeでもPT Modeでもパラメータを調べたり変更したりする場合もあります。

KSDソフトからParameter Editorをクリックします。

パラメータの一覧画面が表示されます。

変更するパラメータをクリックすると下図のようなParameter Setting Helper画面が表示され、Valueに新しい設定値を入力し、Write to Servoでパラメータを更新しましょう。

Time Chart

PRモードでは、DI信号に基づいて位置指令が入力され、POS0とPOS6が位置指令を選択し、CTRGが実行すればServoが位置命令を実行します。

0x08 CTRG

0X08 CTRGが立ち上がりエッジでPOS0-6の入力に合わせ、Servo内部で定義されたPRに沿って運転します。PR制御モードのみ使用できます。

0x02 SON

0x02 SONはServo ON信号でこの信号がTrueでなおかつアラームがない限り、ServoがONになります。

0x15 Cmd_OK

0x15 Cmd_OKがTrueになるとPR位置命令が実行完了だと示しています。

0x17 MC_OK

0x17 MC_OKはDO.Cmd_OKとDO.TOSが両方ON信号するときTrueになります。

つまり命令の実行成功(DO.Cmd_OK)と現在パルス値は設定パルス範囲内(DO.TOS)両方とも成立であることを示しています。DO.TOSをONする参照範囲はP1.048と関係あります。

0x05 TPOS

0x05 TPOS=Trueはパルス設定位置範囲(P1.054)以内であることを示しています。

P1.054 InPosition

TPOSがTrueになるかを参照するパラメータです。

例えばロータリモータの場合、P1.054=167772の場合、誤差パルス数が167772パルス以下になると、 TPOSがTrueになります。

これは167772/16777216=0.01回転に相当します。

Mapping

次は今回の記事でMappingした信号を紹介します。

Input

0x01 SON

0X01 SON=TrueでServo MotorをONにします。

すべての制御モードからも使用できます。

0x02 ARST

0X02 ARSTが立ち上がりエッジでServo Motorが発生したアラームなどをリセットします。

すべての制御モードからも使用できます。

0x08 CTRG

0X08 CTRGが立ち上がりエッジでPOS0-6の入力に合わせ、Servo内部で定義されたPRに沿って運転します。PR制御モードのみ使用できます。

0x11 0x12 0x13 0x1A 0x1B 0x1C 0x1E POS

POS0-POS6の入力レベルに沿って内部のPRを選択します。

例えばPR#5を選択したい場合、POS0、POS2をTrueにします。

PR制御モードのみ使用できます。

0x21 EMGS

0x21 EMGS=TrueでServo Motorを緊急停止します。

すべての制御モードからも使用できます。

Output

0x01 SRDY

0x01 SRDY=TrueはServoが準備Okの状態を示しています。

この状態は制御と主回路電源もあることを示します。

すべての制御モードからもこの信号を出力できます。

0x03 ZSPD

0x03 ZSPD=TrueはServo Motorの現在のSpeed=0を示しています。

この場合は実際の速度がP1.038の設定より低い場合を示します。

すべての制御モードからもこの信号を出力できます。

0x05 TPOS

0x05 TPOS=TrueはServo Motorの位置決めタスク完了であることを示しています。

この場合は実際の位置偏差はP1.054の設定値より小さいであることを示します。

PT/PRモードのみこの信号を出力できます。

0x07 ALRM

0x05 ALRM=TrueはServo Motorがアラームを発していることを示しています。

すべての制御モードからもこの信号を出力できます。

0x09 HOME

0x09 HOME=TrueはServo Motorが復旧完了したことを示しています。

PRモードのみこの信号を出力できます。

0x17 MC_OK

0x17 MC_OK=Trueは先程で説明したDO.Cmd_OKとDO.TPOS両方ともTrueしている状態になります。

PRモードのみこの信号を出力できます。

P1.038

0x03 ZSPDがTrueに遷移することを左右するパラメータです。現在SpeedはこのP1.038より小さい場合、0x03 ZSPDのがTrueに出力します。

Implementation

JTKET Side

Scan devices

もしServo Driveの最終プロジェクトを持っていないなら、File>Scan DeviceでUSBケーブル接続中のDriveを検索しプロジェクトに追加することが可能です。

Scanボタンでデバイスを検索します。

Done!今回の記事では使用してるKSD-A3-Lがみつかりました。

AddボタンをクリックしDriveをプロジェクトに追加しましょう。

Wiring

こちらはManualに載せてたNPNのIO配線図です。

OUTPUT

こちらは出力の配線図です。

INPUT

こちらは入力の配線図です。注意するのは今回使用するのはPNP配線です。

Mapping 

次はIO Mappingを変更するため、Digital IO Jog Controlをクリックしましょう。

Mapping画面が表示され、各入出力が紐つけられたパラメータを一覧できます。

例えばDI6を変更したい場合、Edit DI/O ItemのCheckboxを入れ、DI6のDrop-Listから変更したいパラメータを設定できます。

設定が完了したらOKボタンをクリックし設定を保存しましょう。

Done!

もちろん入力をA/B設定に変更することも可能です。

Finally

こちらは今回記事で設定したDIO Mappingになります。

PR Mode Configuration

今回はPR Modeを使用しますので、Motion Control>PR Mode SettingでPR の設定画面を開きます。

Done!こちらはServo Drive内部の各Position Registerの設定画面になります。

Accel/Decel Time

こちらはServo Driveの加速・減速設定値になります。

AC00-A15まで16個の設定値があります。

Delay Time

こちらはServo DriveのコマンドDelay設定値になります。

DLY00-DLY15まで16個の設定値があります。

Internal Target Speed

こちらはServo Driveの速度設定値になります。

POV00-POV15まで16個の設定値があります。

Position Register

こちらはServo DriveのPosition Regiserになります。

PR00-PR99まで100個の設定値があります。

PR を開くと細かい設定項目が表示されます。

Read the PR

Read the Path Type and DataをクリックするとDriveから該当するPRの設定を読み込むことができます。

TYPE Settings

TYPE SettingsはこのPRはどんなMotion Taskを実行するかを設定できます。

Drop ListからPoint to Point・定速運転など多彩な制御タイプがあります。

OPT options

OPT Optionsの設定でいま実行中のPRを中断し、いまのPRを実行に切り替えるかを選択できます。

CMD

該当するPRを実行するコマンドです。絶対位置決め・相対位置決めなどのコマンドが用意されています。

Speed and Time Setting

こちらは該当するPRの速度値・加減速と遅延を設定できます。

Data

Dataは該当するPRの移動位置を設定できます。

Write Path

最後はWrite the path to driveでPRの設定をDriveに書き込みましょう。

Test it

では、実際にKSDソフトからPRの運転をテストしてみましょう。

Forced Srv On

まずForced Srv OnのCheckbox入れServo ONします。

Run Path

実行したいPR番号を入力し、Run PR.PathをクリックすればServo Driveが該当するPRを実行します。

Video

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

Stop Path

運転中にServoを止めたい場合、Stop PR. Pathをクリックしましょう。

Video

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

Wago Side

Options For FBD

FBDを実際に始める前に、OptionsからFBD,LD and IL editorを開き、Show Network titleとShow network CommentのCheckboxを入れましょう。

下図のようにNetwork TitleとNetwork Commentが表示されるようになります。

Add FBD Program

今度はPOUを追加するためApplication>Add Object>POUをクリックします。

Add POUの画面が表示されます。

NameでPOUの名前を入力しImplementation LanguageをFBDに設定しましょう。

Done!FBDプログラムが追加されました。

POU_Servo

次はServo Driveを制御するプログラムを作成します。

VAR

PROGRAM POU_Servo
VAR
Slot1:BYTE;
Slot2:BYTE;
Switch_Status1:BOOL;
Switch_Status2:BOOL;
iServo_Ready :BOOL;
iHome_Completed :BOOL;
iPR_Command_Completed:BOOL;
iServo_Alarm :BOOL;
iPosition_Reached:BOOL;
iSpeedNotZero :BOOL;
qServoON :BOOL;
qCommandtrigger :BOOL;
qAlarmReset :BOOL;
qESTOP :BOOL;
qCommands_PR_Bit0,qCommands_PR_Bit1,qCommands_PR_Bit2:BOOL;
qSwitchLamp:BOOL;
Switch_Lamp:BOOL;
PRCommand1,PRCommands2,PRCommand3:BOOL;
Alarms_Servo:BOOL;
Alarms_ESTOP:BOOL;
System_Reset:BOOL;
Servo_Start :BOOL;

Commands_Reset:BOOL;
Commands_Servo_ON:BOOL;
Commands_PR_INT:SINT;
Commands_PR_Backup:SINT;
Actual_PR:SINT;

TON_0: TON;
TON_1:TON;

END_VAR

VAR CONSTANT
Always_ON:BOOL:=TRUE;//symbol comment
END_VAR

Program

Network1 Get Data From Process Input

こちらはFBDのEXECUTE Blockで、ST CodeをFBDのNetwork内で実行することができます。このBlockはSlot1の入力をUser Programの内部変数に移動するプログラムになります。

Execute BlockをNetworkに追加するため、Networkを右クリック>Insert Execute Boxします。

Done!EXECUTE Blockが追加されました。

EXECUTE Blockは3つの部分に分けられます。

  • ENがTrueになるとEXECUTE Blockのプログラムが実行されます。
  • ENOがTrueになるとEXECUTE Blockが実行に成功したことを示しています。
  • 真ん中にある”Enter ST Code here..”のところにSTコードを入力できます。
Network2 System Reset

Commands_Reset変数をSystem_ResetからAssignされます。

Assignmentを追加するためにNetworkに右クリック>Insert Assignmentします。

このようなAssignment Formatが追加され、右の変数値が左のパラメータから与えます。

Network3 ESTOP Alarm

Network3はSwitchのNC接点が切れたらAlarms_ESTOPがTrueいなり、System_ResetがTrueにしないとAlarms_ESTOPがそのまま自己保持します。

AND Blockを追加するために右のToolboxからAND Blockを追加しましょう。

次はOR GateのパラメータにあるSwitch_Status2が小さい丸いICONついてますね。この丸い形はNOT Gateになります。

NOT Gateを追加したい場合はPinを選択した状態で右クリック>Negationを選択すればOkです。

Network4 Servo Alarm

Network4はiServo_AlarmがTrueになるとAlarm_ServoがTrueいなり、System_ResetがTrueにしないとAlarm_Servoがそのまま自己保持します。

Networkに新しいBoxを追加するにはToolboxからDropする以外、Networkの空き部分もしくは追加した場所に右クリック>Insert Empty Boxも可能です。

このように新しいEmpty Boxが追加されます。

黒文字の???ここをクリックし追加したいBoxを入力しましょう。

Done!AND BOXが追加されました。

Network Switch Lamp

こちらのNetworkではアラームが発生する場合、スイッチのLampをONするようにします。

Network6 Servo Start Command

こちらのNetworkはServo StartがコマンドをTrueにするときAlarmが発生していなければ、Commands_Servo_ONをTrueにしなおかつ自己保持します。

そしてアラームが発生した場合にCommands_Servo_ONの自己保持回路を切るようにします。

このNetworkで注意するのはServo_Startコマンドには小さな三角がついてるところです。その三角は立ち上げ検知という機能になります。

Boxに渡すパラメータが立ち上げ検知必要のところを選択し>右クリック>Edge DetectionをクリックしていただければOkです。

Network7 Reset Servo Start Command

こちらのNetworkはServo_Start コマンドが1秒以上ONにすると自動リセットするようにします。

Network8 Reset PR Command

こちらのNetworkはアラームが発生する・もしくはコマンド値は無効である場合はコマンドと現在Positionをリセットするようにします。

Network9 Back up the Command

こちらのNetworkは現在のコマンドと1つ前のコマンドを常に比較し、異なるであれば新しいコマンドを受信したことがわかります。

コマンドを更新したあと現在のCommand_PR_INTをCommands_PR_Backupに移します。

次はqCommandTriggerをTrueにしPR Jobを開始します。

Network10 Set the Command Bit

こちらのNetworkは最後に受信したコマンドをBit単位に分けて出力します。

例えばコマンド=3の場合、Bit0、Bit1がTrueになります。

Network11 Actual PR

iPosition_Reached=TrueならServo DriveのMotion Taskが完了することを示しています。

そのときコマンド値を現在位置として認識します。

Network12 Servo ON Output

Servo ONのコマンドです。

Network13 Alarm Reset

Servo のアラームリセットするコマンドです。

Network 14,15,16  PR Command Output

こちらは新しく受信し、なおかつ分解したBit Dataを出力します。

Network17 ESTOP STOP

Servoの緊急停止をトリガーするコマンドです。

Network18 Lamp Output

オペレーターに現在システムにエラーあるを示すため、Lampを光ります。

Network19 Reset 

Commandが1秒以上ONすると自動的にリセットします。

Network20 Output to Process Output Image

最後は変数をProcess Output に出力します。

Download

LoginボタンでプログラムをWAGO PLCにDownloadしましょう。

Run

最後はStartボタンでRuntimeを起動します。

Result

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

Wago.Control JTKET Sero Drive in PR Mode

Source Project

こちらのLinkから今回のサンプルプロジェクトをDownloadしてください。

https://github.com/soup01Threes/Codesys/blob/main/DemoProject_Wago_JKTEK_Servo_FBD.projectarchive

Footer_Basic

Please Support some devices for my blog

Amazon Gift List

Find ME

Twitter:@3threes2
Email:soup01threes*gmail.com (* to @)
YoutubeChannel:https://www.youtube.com/channel/UCQ3CHGAIXZAbeOC_9mjQiWQ

シェアする

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

フォローする