この記事を書き始めたとき、ST言語をキーワードに入れたら、なんと驚くなかれ、1件しか出てきませんでした。EtherCATでは6種類の言語が規定されたIEC 61131-3 (IL, FB, LD, AS, ST)がプログラミングに使えます。PLCで一般的なラダー言語も含まれています。
Pascalが語源といわれていますが、きっと70歳前後の人しか使ったことがありません。ST言語はC言語によく似ているかもしれません。
ディジタル出力を事例にST言語を使う
ここで、モータは動かしません。現時点で、まだ動かすプログラムが書けていません。なので、ベッコフのカプラにつながっているディジタル出力をST言語で制御します。
PLCにプログラムを入れる
左のソリューションエクスプローラのPLCにマウスを置いて、右クリックで新しい項目の追加をクリックします。Standard PLC Projectを選び、追加をクリックします。
Untitled 1ーUntitled1プロジェクトーPOUsーMAIN(PRG)を開くと、中央にソースの入力できるエディタ・エリアが開きます。
上の部分はローカル変数の宣言で、下がプログラムの記述エリアです。
heatbeat := heatbeat + 1;
を記入してリターンをたたくと、自動宣言というパネルが出ます。初期値に0を入れ、OKを押します。
ローカル変数が追加されました。INTは16ビットです。32ビットはDINTです。
プログラムMAINは2msに1回実行されます。したがって、変数heatbeatは、0から2msごとにインクリメントされます。
つぎに、ch1_outというBOOL変数にheatbeatを8で割ったときにTUREを代入する式を追加します。自動宣言は、デフォルトのままOKを押します。
ローカル変数に追加されました。
このch1_out変数部分を修正します。追加した、
AT %Q*
は、物理的などこかの出力ポートのリンク変数だということを表します。入力デバイスなら %I*
です。
実際のポートは、I/OにいるEL2008出力モジュールのChannel1ーOutputを右クリックしてリンクの変更を選択します。

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

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