今回はGlobal Acknowledgeについて紹介します。それはSafetyのプログラムを作成するときかなり大事なことです。まずいままで作ったSafetyプログラムを見てみましょう。
こちらはESTOPです。
こちらは安全扉です。
どれもACKがありますね。そのACK=Trueにしないと、Qが出力されない状態になります。つまり正常状態じゃないってことですね。このACKの動作はLocal Acknowledgeだと思ってください。そこでみんなさんがもしGlobal Acknowledgeあれば一気にそれらのESTOPや安全扉をAcknowledgeすることできるじゃない?!と思うかもしれませんが…
違います。
確かに、S7-1500はそのGlobal AcknowledgeというSafety Functionがあります。
ですが、それはESTOPや安全扉のSafety FunctionBlockのAcknowledge用ではありません。
みんなさん、Safetyの入力・出力モジュールには自己診断機能がついてます。
例えば先の構成だとSafety InputモジュールとSafety Outputモジュール1つずつありますね。そしてSystem blocks>STEP7 Safety>F-I/O data blocksには2つのSafety Data Blockが追加あります。それはコンパイルするときに自動作成するものです。
F0000_F-DI16x24VDC..は一つ目のSafety Inputモジュールです。
DBを開いたらいろんな変数がありますね。全部説明切れないので、いくつ使えそうなものを簡単に紹介します。
ACK_REI:安全モジュールをAcknowledgeします。
PASS_OUT:いまモジュールがPassivation状態です、と。例えば短絡、配線ミスなどの問題で発生したら、モジュール自体が赤く点灯(点滅?忘れました。)します。そのときPASS_OUTが1になります。
QBAD:モジュールが問題あります。
ACK_REQ:モジュールがAcknowledge必要な状態です。
もしQBADやPASS_OUTがONになったら、Acknowledgeが必要になります。そうしないと、モジュールがいくらたっても元に戻れません。
Ackのボタンが押したら、各モジュールのACK_REIをTrueすればモジュールのAcknowledgeができます。
が、もし機械に20個のSafetyモジュールがあったら、一つ一つのSafety DBのACK_REIをTrueしないといけません。
めんとくさい。
そこであるのはそのACK_GLです。つまりGlobal Acknowledgeです。
やってることはすこく簡単です。ACK_GLOBにAcknowledgementの条件をONすれば、機械にSafetyのモジュールがいくつあっても一気にAcknowledgeすることになります。
はーいお疲れ様です。