1
2

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.

日記;回すだけ⑥TwinCATでST言語をちょっとだけ触る

Last updated at Posted at 2021-07-03

 この記事を書き始めたとき、ST言語をキーワードに入れたら、なんと驚くなかれ、1件しか出てきませんでした。EtherCATでは6種類の言語が規定されたIEC 61131-3 (IL, FB, LD, AS, ST)がプログラミングに使えます。PLCで一般的なラダー言語も含まれています。

 Pascalが語源といわれていますが、きっと70歳前後の人しか使ったことがありません。ST言語はC言語によく似ているかもしれません。

ディジタル出力を事例にST言語を使う

 ここで、モータは動かしません。現時点で、まだ動かすプログラムが書けていません。なので、ベッコフのカプラにつながっているディジタル出力をST言語で制御します。

PLCにプログラムを入れる

 左のソリューションエクスプローラのPLCにマウスを置いて、右クリックで新しい項目の追加をクリックします。Standard PLC Projectを選び、追加をクリックします。
t1001.png

 Untitled 1ーUntitled1プロジェクトーPOUsーMAIN(PRG)を開くと、中央にソースの入力できるエディタ・エリアが開きます。
 上の部分はローカル変数の宣言で、下がプログラムの記述エリアです。
 heatbeat := heatbeat + 1;
を記入してリターンをたたくと、自動宣言というパネルが出ます。初期値に0を入れ、OKを押します。
t1002.png
 ローカル変数が追加されました。INTは16ビットです。32ビットはDINTです。
t1003.png
 プログラムMAINは2msに1回実行されます。したがって、変数heatbeatは、0から2msごとにインクリメントされます。
 つぎに、ch1_outというBOOL変数にheatbeatを8で割ったときにTUREを代入する式を追加します。自動宣言は、デフォルトのままOKを押します。

t1004.png

 ローカル変数に追加されました。
t1005.png
 このch1_out変数部分を修正します。追加した、
AT %Q*
は、物理的などこかの出力ポートのリンク変数だということを表します。入力デバイスなら %I* です。
t1006.png
 実際のポートは、I/OにいるEL2008出力モジュールのChannel1ーOutputを右クリックしてリンクの変更を選択します。

ファイル名

 このパネルに何も出てこないことがあります。その場合、構成の有効化をクリックします。ch1_out変数はどこどこにリンクというのを選択し、OKをクリックします。
t1008.png
 ビルドします。

ファイル名

 構成の有効化をクリックします。同じ列の緑の矢印をクリックします。実行開始です。
t1010.png
 ターミナル(EL2008)のOutputをダブルクリックし、上部のバーのTwinCAT Project9の文字部分にマウスを置き、マウスの右ボタンで出てくるメニューの水平タブグループの新規作成を選びます。すると、MAINソースと、Outputの情報の画面が同時に見れるので、オンラインのタブを選びます。
 緑の右三角をクリックすると、プログラムが動きます。
t1011.png
 2msに1回、このMAINは動くのですが、画面の更新は追いつきません。heatbeat MOD 64と頻度は下げたのですが、めったにch1_outはTRUEになりません。したがって、グラフもときどきしか'1'にならないですが、EL2008の動作確認用LEDはずっとピカピカ点滅しています。
 止めたいときは、緑の三角の右横にある赤い四角を押します。その右にある赤色の矢印をクリックすると、ソース修正・追加画面に戻ります。
t1012.png

 実行中のようすです。
IMGP0628.png

資料

 上記のサンプルは、Motion Control and IO with PLCs - EP4 - Beckhoff TwinCAT IOが詳しいです。

 Hello Worldだけを出したい事例は、PLC programming using TwinCAT 3 - Tasks, programs & “Hello world” (Part 3/18)の44:35付近にあります。IF文の事例でもあります。2msごとにやってくるMAINで、一度だけメッセージを表示するときプログラムです。
 
PLC programming using TwinCAT 3 - Data types & arrays (Part 4/18)の、

  • 4分からは、型
  • 15分からは、enum
  • 23分からは、pointer
  • 26分からは、references
  • 32分からは、arrays
  • 36分からは、型変換

PLC programming using TwinCAT 3 - Structures & functions (Part 5/18)の、

  • 最初は構造体
  • 4分からは、関数

 ベッコフのドキュメント、サンプルは、https://infosys.beckhoff.com/にありますが、膨大です。

つづき

 以上で、回すだけは終了です。
 EPOS4のプログラミングは、次の資料があります。また、maxonのサイトから、いろいろな言語のサンプルをダウンロードできます。

EPOS4 Application Notes

ベッコフのPTP – point to point movementは、MOTIONのサンプルのようです。
 何かしら動いたら、続きを書きます。

1
2
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
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?