Siemens#Timer & Pointer

今回はIEC Timerを使うことになりますので、IEC Timerについて簡単は紹介はこっちらの記事にご覧になってください。↓

SiemensPLC#IEC タイマー

みんなさんはTimerとPointerは一緒に使うことあまり想像しないというか、一般的ではないと思いますのね?S7-1500では少しコーティングをすれば簡単にできます。なぜかというと、まずはIEC Timer1個呼び出すには結構MEMORYが使っちゃいますよ〜もし1つのBLOCKの中にIEC Timerが50個があれば50個全部PROGRAMの中に書くと膨大なMemoryが消費されますのでCPUももっと大きなやつをしないと行けないですし、お金の無駄です。だからここでちょっとしたトリックしてMemoryをそんなに使わず、POINTERでIEC Timerを呼び出ししてみます。

おすすめのProgram LanguageはLAD+STLです。

Step#1

tp01

まずは新しいFBを作成してください(FCもできますが、別のDBを作らないといけませんのでちょっとめんどくさいです)。

Step#2

tp02

Staticの所に改めて以下のVariablesを作ります:
TE[0..10] of TON_TIMEーTimerの配列
TIN[0..10] of BoolーTimer Activeの配列
TPT[0..10] of TimeーTimerの設定時間の配列
TQ[0..10] of BoolーTimer Outputの配列
TET[0..10] of TimeーTimer の残り時間の配列
あと、TempのところにJというINTの変数を追加します。
Constantの所にEND1、INTで10を設定します。

Step#3

下のcodeを貼り付けてください;)

L 0
T #J   //init the index
SN1: NOP 1 //++
CALL #TE[#J] // call the Timer
TIME
IN:=#TIN[#J]
PT:=#TPT[#J]
Q:=#TQ[J]
ET:=#TE[J]
L #J
L END1
<I
JCN EN1 //if >10, break the loop and jump to EN1
TAK
L 1     //else, +1 of index
+I
T #J
JU SN1  //Loop again
EN1: NOP 1

それだけです。もちろんLADでも同じなこともできますがSTLのほうがわかりやすいと思いますーみんなもやってみてください。

またねー

シェアする

  • このエントリーをはてなブックマークに追加

フォローする