こちらはDELTA Motion ControlのRM200 Lite – CPU20LのTutorialシリーズ第3話です。今回は簡単なUser Program作成・IOの出力などを説明します。
さ、はじめよう!
Using Command Tools
Select Command
RMCToolsの左にはCommand Toolがあり、直接各軸に対してコマンドを発行できます。
Axis0はCPU本体で、Cmd隣にある…ボタンをクリックしてください。
Commandの選択画面が表示されました。
該当する軸に実行したいコマンドを選択し>Okで進みます。今回の例ではEnable Controllerを選び>Okします。
下図のような操作になります。
Cmdは”Enable Controller(7)”に設定しましたので、SendボタンでAxis0にコマンドを発行しましょう。
More Info
もし実行したいコマンドになにか不明点があればMore Infoをクリックしてください。
各コマンドに詳しい説明があります。
Directly Input
他に毎回…ボタンからコマンド選択しなくても直接コマンドを選択できます。
下図のような操作になります。
User Program
Tutorialの第3話でいよいよUserプログラムの作成について説明します。ProgrammingのFolderにはUser ProgramsというFolderがあり、User programは、PLCや他のコントローラからと連携せずせずに、RMC上で複雑なコマンドシーケンスを実行できます。
これにより、RMC は PLC のScanに依存せず、制御ループ時間内のイベントに応答できます。また、必要な PLC プログラミングも減ります。
User Programの数は、RMC のメモリ容量によってのみ制限されます。
注意するのはUser Programの実行にはRMC CPUがRun Modeのみになります。
Add New Program
新しいUser Programを追加するためProgram>User Programs>右クリック>New Programをクリックします。
Program NameとProgram Numberを入力してください。
Done!User Programが追加されました。
User programをダブルクリックすればプログラムEditorが表示されます。ユーザプログラムは複数のステップから構成され、各ステップは、1つまたは複数の軸に対して複数のコマンドを実行することができます。それら一連のステップはシーケンスで連結されて、各ステップの実行には1Loop timeがかかります。
Loop Time?
RMCは入力を読み取り、制御アルゴリズムを計算し、特定の間隔で出力を更新するProcessです。この間隔は、コントローラーが繰り返しコードをLoopさせることで、Controller loop timeとも呼ばれています。
RMCは常にループ時間の設定で実行され、あるループの計算がすべて終わると、次のループ時間まで待ってから再び計算を行います。
Program1
Step0
最初にStep0の実行Commandを修正するため、…ボタンをクリックしてください。
Commandの選択画面が表示されます。
Step1ではControllerを有効にしたいので、General Commands>Enable Controllerを選び>Okします。
Done!いまStep0はEnable Controller(7)を実行するようになっています。Commandを指定したあとにCommand Axesという項目が出てきます。ステップの各コマンドは、1つまたは複数の軸に対して同時に発行することができ、コマンドを発行する軸を定義する設定項目です。下図の例だとAxes0にEnable Controller(7)コマンドを発行することです。
Command Axesを追加したい場合は直接Command AxesをクリックするとDrop-listが表示されます。
Done!
Step1
新しいステップを追加するため、Program Editorの空き場所を右クリック>Append Stepをクリックしてください。
Done!新しいステップが追加されました。
Step1ではDiscrete Output %QX1.0 をTrueに出力したいので、Programming>Set Discrete Outputを選び>Okします。
Done!
I/O Pointでは現在のStepに制御したい出力番号を設定できます。
最後はLink Typeを設定します。Link Typeは、RMCがユーザープログラムの次のステップにジャンプして開始する条件を指定できます。ユーザープログラムの実行中には、RMCはループ時間ごとに現在のステップのLink Typeをチェックし、Link Typeがtrueと評価されると、指定されたステップにジャンプする。ジャンプ先のステップは、有効なステップ番号またはステップ・ラベルもOkです。
今回はImmedに設定し、Immedはすぐに次のステップにジャンプする動作になります。ではまたProgram Editorの空き場所を右クリック>Append Stepをクリックし新しいStepを追加しましょう。
Step2
今度はLink Typeを”Delay”に設定します。”Delay “はLink Condition Boxで指定された秒数だけ待機し、その後、ジャンプ先ボックスで指定されたステップにジャンプする動作です。
Delayを選択したあと、Time to Delay(sec)という項目が表示され、このFieldからDelay表示を設定できます。
今回は5秒に設定し、Jump ToのDrop-Listから5秒Delayのあとはの動作を決めます。
Nextを設定すると、次のStepに遷移します。
Step3
Step3は”Clear Discrete Output(61)”というコマンドを追加します。
こちらは出力をFalseに変更する命令になり、I/O PointのDrop-ListはFalseに変更するIO番号を設定できます。
Step4
Step4はStep2と同じくTime Delayになります。
Step5 End
最後Step5は”End” Link Typeを設定し、FlowがこのStepに遷移したらプログラムが終了になります。
Finally
こちらは先程作ったUserProgram0になります。
Verify Program
Programming>Verify ProgramでUser Programをコンパイルします。
Verify Resultsの画面からコンパイル結果を確認できます。
Download
Programming>Download Programs to ControllerでプロジェクトをCPUにDownloadします。
Run Program
最後は実行したいプログラムを右クリック>Run Program>Task 0 -Stoppedでプログラムを実行しましょう。
Result
Done!出力はOn/Offするようになりました。
Program2 Add Wait for
次のプログラムは入力待ちするような制御を追加します。
Add Wait For Step
Step4を選択し>右クリック>Add Step Afterします。
Link Type
新しいStepが追加され、Link TypeのDrop-Listから”Wait for”を設定します。
Link Condition
”Wait For”のLink TypeにはLink ConditionのFieldがあります。
Condition Wizardg表示され、Wait For の条件を設定できます。
今回はデジタル入力信号待ちなので、Discrete I/Oを選び>Nextします。
Discrete I/Oの選択画面に変わります。
Drop-ListからWaitする信号を選択できます。今回は%IX1.0 を設定します。
次は該当する信号はOn/Offどっちか待ちを設定します。
今回は%IX1.0をON待ちする設定にします。Next>で進みます。
該当する条件が正しいかを確認し、Finishで完了します。
Done!Link Conditionを設定しました。
Result
プログラムがStep5にデジタル入力%IX1.0をTrueにしないと進めないようになりました。
Add Comment
Commentを追加することによりプログラムの可読性が上がります。RMC ToolsにもComment機能があり、Comment追加したいStepを選び>右クリック>Edit Step Commentをクリックします。
CommentをStepの動作に合わせて設定しましょう。
Done!Step5はCommentを追加されました。
もちろん追加されたCommentを一時的に非表示することができ、Stepを選び>右クリック>Hide Commentsをクリックします。
Done!
Tag Name IO
いままでデジタル入出力をプログラム内で使用するとき絶対アドレスの%IX0.0のようにしますが、プログラムの可読性を上げるために、デジタル入出力に”変数名”を割り付けます。
Programming>Discrete I/Oをクリックします。
Discrete I/Oの設定画面が表示されます。
Tag Nameの欄で各デジタル入出力の変数名を設定できます。
最後はアプリケーションに合わせてTag Nameを設定しましょう。
先程のプログラムでI/O Pointのところに本来%QX1.0のような絶対アドレスはTag Nameに変わりました!
Tag Nameを設定すると、プログラムの可読性が上がります。もうはや%IX0.0はなに?の疑問がなくなります。
Program画面の上にあるDiscrete I/O監視画面の表示にも絶対アドレスからTag Nameになりました。
IO State
Delta MotionのControllerは各出力をCPUの状態によりON/OFFにすることができます。
PROGRAM State
Hold
先ほどのDiscrete I/O設定画面からPROGRAM StateをHoldにすると、CPUがPROGRAM Modeに切り替わると、出力が最後の状態にKeepするようになります。
下図のように、CPUがPROGRAM Modeに変更してもDout0とDout1も最後のON/OFFにKeepするようになります。
On/Off
もちろんHoldだけではなく、PROGRAM Stateのときは該当する出力をON/OFFに強制切り替えも可能です。
下図のように、Dout0がProgram ModeするときON・Dout1がProgram ModeするときOFFするようになりました。
FAULT State
また、RMC CPUはFault発生するとき出力を強制にON/OFFに切り替えるもできます。
下図のように、Dout0とDout1がFault ModeするときONするときOFFするようになりました。