プログラムは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);
 以上で、最低限必要だと思われるファンクションブロックを記述しました。

すべてを保存し、ビルドしてエラーが出ないことを確認しておきます。
次回は、二つのスイッチを使って、モータを回転させる指示を追加します。





