S7-1200・S7-1500にはCPUがエラーあるかどうか取る方法がたくさんありますが、その中で一番簡単なのは””LED”というFunctionだと思います。今回はこのFunctionの使い方について紹介いたします。
Functionの名前はLEDというと、多分みんなさんも分かると思いますが、なにかしらのLEDの状態を取るのことですね。以下はS7-1200の絵ですが、LED Functionを使うとか赤枠のLEDの”状態”を取ることができます。
Function
LADDRとLEDのパラメータによって現在デバイスのLED Statusが返してくれます。注意するにはすべてのデバイスも全部”LEDの色”もついてわけでもなく、このあたりは取りたいデバイスの取り扱い書を参考してください。
以下はLEDが Functionのパラメータです:
INPUT
LADDR | HW_IO | LED状態取りたいCPUやデバイスのアドレス(もしCPU取りたいならLocal~~XXXを入れればよい) |
LED | UINT | どんなLEDを取りたいのか 1=STOP/RUN 2=ERROR 3=MAINT 4=Redundant 5=Link(Green) 6=Rx/Tx(Yellow) |
OUTPUT
Ret_Val | INT | LEDの現在状態 0=LEDは存在しない・データ取りません 1=OFF 2=Color1(もしRun/Stopなら、緑のこと)がONしてる3=Color2(もしRun/Stopなら、オレンジのこと)がONしてる4=Color1が2Hzで点滅中 5=Color2が2Hzで点滅中 6=Color1と2も2Hzで点滅中 7=LEDは有効中、Color1 8=LEDは有効中、Color2 9=LEDは存在しない・データ取りません 8086=R/HシステムはRunしてません 8091=LADDRが間違いあり 8092=LADDR指定したデバイスが情報が返してくれれない8093=LADDR指定したデバイスが取りたいLEDがありません 808x=LADDR指定したデイバスがLED命令をSupportしません |
Example1#STOP/RUN状態取る
以下は簡単な例S7-1200のSTOP/RUN状態を取ります。
LADDRをLocal~Commonにして、LED=1。
そうすると、16#0002が返してくれます。
2=Color1(もしRun/Stopなら、緑のこと)がONしてるのことです。
つまり緑が光っています。
Example2#ERROR状態取る
では、次やりたいのはS7-1200のERROR状態を取ることです。
ハードウェア構成に実機がないモジュールを1つ追加します。
CPUが止まるのは嫌なので、エラーOBを追加します。
LADDRをLocal~Commonにして、LED=2。
そうすると、16#0004が返してくれます。
4=Color1が2Hzで点滅中のことです。
つまり赤が点滅中ですね。赤点滅中ってことはなにかエラーだと判断できます。
これは実際S7-1200の状態です:
はーい、以上になります。
お疲れ様ですー
なにかあったらコメントしてね。