###プログラムはPLCに記述する
ソリューションエクスプローラにあったC++(非表示にした)は、ファンクションなどの開発用らしいです。
ソリューションエクスプローラのPLCを右クリックし、新しい項目の追加を選択します。このエリアで、IEC61131-3にそったプログラミング言語が利用できるようになります。

ソリューションエクスプローラのPLCの下に、Untitled1以下、プロジェクトに必要な項目が追加されます。POUsがプログラム類の収録する場所で、デフォルトのMAIN(PRG)が作られているので、ダブルクリックすると、中央のエリアにエディタが開きます。

###Motionの基本ライブラリを追加する
ソリューションエクスプローラの Referencesを開きます。Referencesを右クリックして、ライブラリの追加を選択します。

検索欄にMC2を入れると、関連ライブラリを探し出してくれます。TC2_MC2を選択し、OKを押します。ライブラリが追加されました。
###プログラミング開始
MAIN(PRG)の中央にあるエディタの上部は、変数定義で、その下が本体です。本体部分の1行目で右クリックし、入力アシスタントを選択します。
入力アシスタントの画面が出ます。ファンクションブロックの中から、MotionライブラリのTc2_MC2をクリックし、MC_Powerを表示します。
MC_Powerを選択し、OKをクリックすると、自動宣言の画面が出るので、名称、ここではPower_Onと入力してOKをクリックします。
ST言語なので、図は貼り込まれず、テキストの記述が挿入されます。
エディタ上部の宣言領域には、先ほど名前を付けた宣言が挿入されています。
エディタの本体には、入力パラメタは := で、出力パラメタは => で値を記入できるような状態で貼り込まれています。
最初の項目Axisは軸の名前ですが、左のソリューションエクスプローラを見ると「軸 1」です。じつは、コンパイルしたときにエラーになりました。なので、アルファベットAX1に変更しました。
メニューのビルドから、ソリューションのビルドを選び、コンパイルします。
AX1をダブルクリックし、中央に出てきた情報の設定タブを開きます。PLCにリンクをクリックしたら出てくる画面で、 MAIN.AX1(Untitled1 Instance)を選択し、OKを押します。
これで、物理的なハードEPOS4とプログラムがリンクされた状態になりました。
Enable:= TRUE
は、Power_Onが呼ばれたら実行するという意味?です。
Enable_Positive:= TRUEとEnable_Negative:= TRUE
は、動きの方向がどちらでもよいという意味です。
Override:= 99
は、モータに対する何らかの値で、0から100までの整数値を入れます。設定したことが明白になるよう99にしました。
###モータを回転(移動)する
エディタで、Power_Onの下にカーソルを動かし、右クリックで入力アシスタントを選択します。入力アシスタントの画面が出ます。ファンクションブロックの中から、MotionライブラリのTc2_MC2をクリックし、MC_MoveAbsoluteを表示します。OKを押します。
自動宣言のパネルが出るので、Position_Moveと名前を付けてOKを押しました。
Acceleration:= 20,
Positionに値を入れると、その位置に移動した後、変更ができなくなります。
###位置の読み出し
Positionを読み出します。
上記と同様に、ファンクションブロックMC_ReadActualPositionを追加します。名前はRead_Positionにしました。
値を入れるのは2か所です。
読みだしたPositionは実数です。あとで表示に使えるように文字列に変換したのがSpositionです。
Read_Position(
Axis:= AX1,
Enable:= TRUE,
Valid=> ,
Busy=> ,
Error=> ,
ErrorID=> ,
Position=> );
Sposition := LREAL_TO_STRING(Read_Position.Position);
以上で、最低限必要だと思われるファンクションブロックを記述しました。
すべてを保存し、ビルドしてエラーが出ないことを確認しておきます。
次回は、二つのスイッチを使って、モータを回転させる指示を追加します。