今回はE-Stopのプログラム作り方ついてに話しします。はぁ?EStopのプログラム教えるほどがあります?と思うかもしれませんが、シーメンスのSafety PLCではESTOP専用のFunction blocksがもうすでに実装されており、それを呼び出しさせすればOKです。
いまは実機ではなくシミュレーターでやっていますので(在宅ワークもん)、普通のHardwareのような機能がしません。この辺はご了承ください。
OB123を開いていくと様々なパラメータ設定ができます。この図みればもわかると思いますが、このOB123は周期プログラムで100000us度にFB0を呼び出します、そしてCycle timeの設定以上超えたらWarning・Error出したりもあります。
基本ここは触らなくでもOKです。とりあえずSafetyPLCのプロジェクトをシミュレーターにダウンロードします。
Safety Administrationのとなりに黄色の!ICONがついてると見えますね。これはWarningです。ではSafety Administrationをクリックします。
Access protectionのところが!が出てきますね。まぁ…簡単にいいますとプロジェクトにはSafety Passwordが設定されてないことのせいでWarningが出てきたのね。
では一回Offlineして、”Setup”を押してPasswordを設定しましょう。
Passwordを設定しましょう。注意するにはこのPasswordは絶対忘れないでください!!リセットできませんから。
設定終わると、いまSafety AdministrationのとなりがLock解除のICONが見えますね。
つまりいまSafety プログラムが編集することが可能です。
今度はLog offしてみてくだい。
Safety AdministrationのとなりがLockされるのICONに変わりますね。いまはSafetyプログラム修正できない状態になります。
例えばこの状態なにかSafety プログラムをやろうとすると、Safety Passwordが聞かれます。これは単なるWarningなので…実際のプログラムになにも影響がございません。
では、実際にESTOPのプログラムを作り始まりましょう。
SafetyのBlockを開いて、右のBasic instructionsをみたら”Safety functions”というFolderが増えたことがわかりますね。
このSafety functionsはSiemensが標準化されたSafety プログラムで、ESTOP・安全扉などのものもすでに実装されています。(お金を出せば、BurnerとかもSafety Libraryも使うことが可能。)それらのFunction BlocksがIECXXXXなどの標準に満たされており、絶対安全な動きが保証します。もちろん自分で実装するすることも可能ですが、勧めません。
Safety functionsの中にあるESTOP1というFunction Blockが今回使うSafety Function blocksになります。
このESTOP1をそのままMain_Safety_RTG1に引っ貼りましょう。
E_STOPというInputのパラメータが見えますが、こっちらはSafety モジュールに設定されたInput Tagを割り付けます。
おっと、その前にまずHardware構成を追加する必要がありますね。
Safety入力と出力一つずつ追加しましょう。
そしてTag名を追加します。I0.0=ESTOP、Q9.0=Motorになります。
ESTOP1という、先設定したTagを割り付けて於けば、OKです。
それだけでSafetyプログラム完成です!
ESTOP1というSafety InputをONさせたいので、PLCSIMに新しいSim Projectを作成します。赤枠のICONをクリックします。
このような画面が開くことになります。
新規のSim Projectを作成します。
そうすると、いまProjectがPLCSimのTag・ハードウェア構成を読み取ります。
SIM tables>SIMtable_1をクリックします。
右のTableにESTOPとMotor1、先設定したInput・OutputTagを割り付けます。
BitsのところにTrigger Checkbox入れると、E_STOPがONになりますが、関心な出力QがONになれません。なんで?なんで?
ではその前にまずQがなんなのか説明します。このQはみんなのプログラム中に使うデバイスになります。このQはいまのESTOPがどんな状態なのか示してくれます。じゃE_STOP信号がONになってるのに出力QががONになれないのはなぜ?
ここで想像してみてください。Operatorさんが機械を操作してるとき手が挟みそうだった。ですがそのとき反応よくてESTOPを押して緊急停止状態になり、動力がカットされ怪我がありませんでした。もしそのとき、OperatorさんがそのままESTOPを戻したらどうになります?最悪いきなり装置また動き出し怪我になるかもしれません。
こうにならないように、どうすればよいですか?
リセット動作です。Operatorさんがちゃんと確認しリセットする、ことです。
ではDIモジュール追加し、AckのInputを設定しましょう。
先のESTOP1のFunctions BlockにACKというパラメータにINPUTを割り付けます。
そしてESTOPをONさせます。
そのときDIAGが16#40が出力され、つまりACK必要ですよ。っと。
次はACKをONさせて、いまの状態が安全ですよ!っと。
そうするとQとQ_DELAYがTrueになってるのかわかります。
もしの場合ですが、ESTOPのボタンにはもうすでにリセットボタンがついてて、あのリセットボタンが押さないとESTOPの信号がTrueに戻らないなら、ACK_NECというパラメータをTrueすればよいです。そうすると、QがE_STOP=1になったらすぐONになります。ですが、それはあまりすすみません。
最後はそのESTOPのQが安全出力に繋がりれば、OKです。
最後は、BlockにあるTIME_DELとQ_DELAYについて話ししたいです。Q_DELAYはDelay OFFのイメージだと思ってください。つまりE_STOPの信号が落ちたあとにまだTIME_DELとの時間分だけQ_DELAYがON続ける、の感じです。
実はこれはSafetyのカタログに絡んでしまいますね。
CAT0=ESTOP落ちたら動力・電源即切る。
CAT1=ESTOP落ちたら機械が安全な状態戻ってから、動力・電源切る
CAT2=ESTOP落ちたら機械が安全な状態戻る。
…確かに。
はーい、お疲れ様です。