2025-01-06 10:02

#95 クリス回 シーメンスPLCのFC、FB、DB、OBなどについて解説

シーメンスPLCについてクリスが解説します

00:00
みなさんこんにちは。またFARADIOの時間です。今回はクリスの一人回ですが、今回もFARADIOで話したいと思います。どうぞよろしくお願いします。
今回話すのは、シーメンスのプログラムはどうやってやるのか、知っていますか?の話をしたいと思います。
今は、もちろん2024年ですよね。この中で、シーメンスはコーディス、ペックオフ、共駐している部分も結構ありますので、これから出てくる様々な言葉も、
コンセント、他のPLCメーカーでも通用してきた部分もありますので、この話をする途中の登場というのは伝えていきたいなと思っています。
まずシーメンスのPLCでは大きく分けると、OB、FC、FB、DBという4つの大きな部分に分かれています。
最初に話したいのはOBですね。OBは他社で考えると、例えばペックオフさんとポイズでPUに近いイメージじゃないかなと思っています。
もちろんポイなので、中ではFBとかFCを呼び出したり、直接行動のOBを書いて実行することもできます。
さらに、マシンの場合ではOB1と一般的に使用されていますが、OB1はポイ1ですね。絶対走るの部分ですけれども、
他には例えばOB100、一発目のサイクルだけ勝利するのOBとか、80番から90何番までかな、エラー勝利用のOB、例えばネットワークエラーとかモジュールエラーとか、
そういうときはこのOBの80番が呼び出されて、その中で自分が勝利するとかはできます。
その後はOB30ですね。OB30から38か39までかな、これは低周期の実行するのOBですね。
例えばこのOB30だったら10msとか低周期に回すことができます。
なので、C面の場合はこのOBの番号によって様々な用途に分かれています。
なのでC面のPOCプログラムは基本的にOBです。
で、ペックオフとか、こうして対応するとポイになります。
次はFCですね。
FCは何かというと、FCはファンションの逆ですね。つまり関数です。
関数はちょっと難しいイメージがあるかもしれませんが、
その中に簡単に言いますと、どんなものが入っても同じ勝利して出力するのが考えがファンションですね。
03:06
つまりBOX、ブラックボスと言ってもいいんですよ、極端な話だと。
このBOXをどんな勝利するのか全く気にする必要がなくて、
とりあえずこの有力配入を入れたらこんな出力が出てくるという考え方でいいんじゃないかなと思っています。
このファンションは例えば簡単な仕様例とすると、スケアリングの関数を作ったりとか、
あとは単に変換とか関数を使うとかも、そのときはFCを使う場合がありますね。
一つを注意するのはFCはファンションですね。
メモリを持っていません。
メモリを持っていないということは、つまりFCに勝利された演算結果は次のサイクルに持っていけないという問題なんですね。
なのでファンションの中に演算結果を保存したいんだったら、
そもそもFCを使わないし、その後はアウトプットで出力で外レジェスターを出すこともするんですね。
だからFCは結構大きな特徴なんですね。メモリがない。
次に話したいのはFPです。
FPはファンションブロックですね。
FPとFCは何が違うんだろうとよく聞かれますけれども、
皆さんいろいろとOBと言いますけど、
これから見ると一番根本的な違うところはメモリが持っているか持っていないかじゃないかなと思っています。
この中でファンションブロックFPですね。
メモリが持っています。
その後にファンションは何をするかはその後の話なので、
さっき言ったのでもメモリ持っていることは演算結果を次のサイクルにもキープできますよね。
例えばこのFPを使って何をするかというと、
ロボットとかロボシリンドとかバルブとかを表現できるようになりますね。
そして更なるOOPとかオブジェクト指向とかも展開もできます。
もうちょっと簡単な例を紹介すると、
例えば自分がロボットを制御するFPを作っています。
最初に決めるのはこのFPはどんな有力パラメーターが必要なのか、
そしてどんな出力をロボ側に反映したいのかを決めるよね。
その後はこのFPの中にどういう変数、どういう機能があるかを考えます。
06:09
最初に絞りたかったのは、
例えば欲しいのはロボットのENABLEとEUGOのリセット機能、
プルーム番号のCD機能、PAUSEとSTOPの機能が欲しいですね。
あとはもちろんフィールドパス、
ロボットのフィールドパスの有力側のフィールドパスの信号も欲しいですね。
これを全部パラメーターとして、
FPインプットパラメーターとしてトンガンボックンに渡します。
次は出力はロボット件である状態とか、
今のプルームを走る番号とか、
あとフィールドパスで経由でロボットに書き込むの出力データですね。
そういった出力のパラメーターを決めたら、
ファンションのFPの有力出力のフィールドパスデータをどうやって解釈して、
あとはエンコードして書き込むのか決めるだけなので、
OOPとかもまた次のラジオで話しようかなと思っていますね。
なのでFP、FCはもちろんシーメンスだけじゃなくて、
ベックオフとか、こういったフル対応をしています。
今度DBです。
DBはデータブロックの略で、いわゆる変数を保存する領域になります。
シーメンスのPHではDB1、DB2のようにDB番号で変数領域を切り分けていますね。
なのでDB100、例えばソン1になります。
DB100はソン2になるような切り分けをしているのが多かったのです。
ここに面白いのは、このDB100とかDB200とか、
国産PHではD100とD200が違っていて、
各DBには完全に分離していることです。
なのでDBの中に極端な数、どんだけデータを増やしても
DB100と全く異なる領域で被ることはほぼないんです。
新しいシーメンスのPHではDBの番号ではなくて、
DBの名前で訓別しています。
実際に番号はまだありますけれども、気にしなくてもよくなりました。
例えばソン1はDBになったら、ソン1.status.runというように
名前の形で変わってきましたね。
このDBのデータブロック、ペックオフとは全く同じものがありまして、
それは何かというとグローバル選ぼうリストですね。
じゃあ国産はどうするか、国産の話ですね。
さっき話したFP、FC、DB、OBの話だと一番近いのは
BeneficeのIQRですね。
09:02
ファンションもあり、ファンションブロックもあって、
DBはグローバルラベルの形で対応しています。
グローバルラベルの形ではちょっと微妙なところもあるんですけれども、
それは連スペインのコンセプトがないんですね。
つまりどんだけ綺麗にローカルレーボーのリストを切り分けても
領域名も一緒なので変数名も被ることが多くなっていますね。
なので今後この辺でミュージックも頑張っていってほしいなと私は思っています。
今回は簡単な話ですけれども、
次回は一人会が出た時にOBのコンセプトを話すか、
もうちょっと別のものを話していきたいなと思っています。
今日はお疲れ様です。
さよなら。
10:02

コメント

スクロール