1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

日記;回すだけ ⑩ST言語でモータを回す記述<その2>

Posted at

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

ファイル名

 Stardard PLC Projectを選択します。
t202.png

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

ファイル名

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

ファイル名

 検索欄にMC2を入れると、関連ライブラリを探し出してくれます。TC2_MC2を選択し、OKを押します。ライブラリが追加されました。
t205.png
###プログラミング開始

 MAIN(PRG)の中央にあるエディタの上部は、変数定義で、その下が本体です。本体部分の1行目で右クリックし、入力アシスタントを選択します。

t206.png

 入力アシスタントの画面が出ます。ファンクションブロックの中から、MotionライブラリのTc2_MC2をクリックし、MC_Powerを表示します。
t207.png

 MC_Powerを選択し、OKをクリックすると、自動宣言の画面が出るので、名称、ここではPower_Onと入力してOKをクリックします。
t208.png

 ST言語なので、図は貼り込まれず、テキストの記述が挿入されます。
 エディタ上部の宣言領域には、先ほど名前を付けた宣言が挿入されています。
 エディタの本体には、入力パラメタは := で、出力パラメタは => で値を記入できるような状態で貼り込まれています。
t209.png
 最初の項目Axisは軸の名前ですが、左のソリューションエクスプローラを見ると「軸 1」です。じつは、コンパイルしたときにエラーになりました。なので、アルファベットAX1に変更しました。
t210.png

 エディタでAxis:=AX1と軸の名前を追加します。
t211.png

 メニューのビルドから、ソリューションのビルドを選び、コンパイルします。
 AX1をダブルクリックし、中央に出てきた情報の設定タブを開きます。PLCにリンクをクリックしたら出てくる画面で、 MAIN.AX1(Untitled1 Instance)を選択し、OKを押します。
t212.png
 これで、物理的なハードEPOS4とプログラムがリンクされた状態になりました。
t213.png

 Power_Onの必要と思われる残りの項目を記入します。
t214a.png

Enable:= TRUEは、Power_Onが呼ばれたら実行するという意味?です。
Enable_Positive:= TRUEとEnable_Negative:= TRUEは、動きの方向がどちらでもよいという意味です。
Override:= 99 は、モータに対する何らかの値で、0から100までの整数値を入れます。設定したことが明白になるよう99にしました。
###モータを回転(移動)する
 エディタで、Power_Onの下にカーソルを動かし、右クリックで入力アシスタントを選択します。入力アシスタントの画面が出ます。ファンクションブロックの中から、MotionライブラリのTc2_MC2をクリックし、MC_MoveAbsoluteを表示します。OKを押します。
t215.png
 自動宣言のパネルが出るので、Position_Moveと名前を付けてOKを押しました。

t216.png

 ソースが追加されました。
t217.png
 値は、次の2か所だけいれます。

= 25,
	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);

 以上で、最低限必要だと思われるファンクションブロックを記述しました。
t218.png

 すべてを保存し、ビルドしてエラーが出ないことを確認しておきます。

 次回は、二つのスイッチを使って、モータを回転させる指示を追加します。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?