MP STUDIO 2 · ファンクション · V1.4.0以降
ビット制御ファンクションは、ビットを反転したり、1つずつシフトしたり、まとめてOFFまたはONにしたりするFF・BSFT・BRST・BSETNと、オン時間とオフ時間を別々に決めて点滅させるタイマーTFLKの5つのファンクションです(V1.4.0以降)。押しボタン1つで出力をON・OFFする回路、コンベヤー上の製品の位置と不良の追跡、警告灯の点滅のように、複数のラングが必要だった回路をファンクション1つで作成できます。
| ファンクション | 分類 | 実行 | 対応バージョン |
|---|---|---|---|
| 5個 | ビット論理・タイマー | ONになるとき・ONの間・周期 | V1.4.0以降 |
FFは条件がONになった瞬間にだけビットを反転するため、押しボタンの接点に立ち上がりエッジを入れずにそのままつなげます。BSFTは条件がONになるたびにN個のビットを1つずつシフトし、空いた位置に新しい値を入れます。BRST・BSETNは、開始ビットからN個をすべてOFFまたはONにします。TFLKは、オン時間の間ON、オフ時間の間OFFにする動作を繰り返します。このページの内容
FF・BSFT・BRST・BSETNはファンクションパネルのビット論理分類に、TFLKはタイマー分類にあります。挿入方法はほかのファンクションと同じです。ファンクションパネルで行をダブルクリックするか、ファンクションの挿入ウィンドウ(Ctrl+E)にFF P32のように1行で入力してください。ファンクションパネルの検索欄にビット・フリップ・シフト・フリッカーと入力しても見つかります。
| ファンクション | ファンクションパネルの名前 | ブロックのセル(左から) |
|---|---|---|
FF | FF: フリップフロップ(ビット反転) | OUT |
BSFT | BSFT: ビットシフトレジスタ | BIT・N・IN・DIR |
BRST | BRST: ビット範囲リセット | BIT・N |
BSETN | BSETN: ビット範囲セット | BIT・N |
TFLK | TFLK: フリッカータイマー(ON/OFF) | TIMER・ON・OFF |
ファンクションの挿入ウィンドウでは、TFLKの引数の順序が[TFLK] [IN] [ON] [OFF]と表示され、最初の引数(タイマーアドレス)はブロックのTIMERセルに入ります。
5つのファンクションは、いずれもブロックの左側の条件で動作します。動作するタイミングはファンクションごとに異なります。
| ファンクション | 動作するタイミング |
|---|---|
FF・BSFT | 条件がOFFからONに変わったスキャンで1回(立ち上がりエッジと同じタイミング) |
BRST・BSETN | 条件がONのスキャンごと |
TFLK | 条件がONの間、オン時間とオフ時間を繰り返す |
FF・BSFT・BRST・BSETNは、ブロックの左側の条件をそのままブロックの右側へ伝えるため、後ろにコイルを続けて配置できます。TFLKは、ブロックの右側が点滅の出力です。FF・BSFTは、直前の条件をブロックごとに個別に記憶します。FFは1回反転し、BSFTは1つシフトします。MCS区間の中に置くと、区間がOFFの間は条件がOFFのときと同じように動作し、ブロックの右側もOFFになります(ほかのファンクションブロックはMCSに関係なく実行されます)。区間が再びONになったときに条件がONであれば、OFFからONに変わったものとみなします。
FFは、条件がOFFからONに変わったスキャンでだけOUTのビットを反転します(0なら1、1なら0)。条件をONのまま保っている間は、再び反転しません。たとえばP0接点の後ろのFF P32は、P0を押すたびにP32をON・OFFします。
P・Mのビット、D10.5のようなDワード内のビット、#名前のユーザービットを使えます。FFで反転できます。P0とP1の後ろにそれぞれFF P32を置くと、どちらのボタンを押してもP32が切り替わります。2つの条件が同じスキャンで同時にONになると、2回反転して元のままになります。同じビットのコイルがFFの結果を上書きする
FFのOUTに書いたビットを通常のコイルにも使うと、コイルがスキャンごとにそのビットを書き直すため、FFが反転した値が残りません。OUTに書いたビットは、SETコイルと同じく二重コイルのチェックの対象外なので、チェックでも表示されません。FFのOUTに書いたビットは、通常のコイルと一緒に使わないでください。
BSFTは、条件がOFFからONに変わるたびに、BITからN個のビットを1つずつシフトし、空いた位置にINの値を入れます。シフトする方向はDIRで決めます。コンベヤー上の製品の不良追跡と排出、順次点灯、工程の履歴のように、位置に合わせて値を移す回路に使います。
| DIR | シフトする方向 | INが入る位置 | 押し出されて捨てられる値 |
|---|---|---|---|
| 0 | 番号が大きくなる方向 | BIT | BIT+N-1の値 |
| 1 | 番号が小さくなる方向 | BIT+N-1 | BITの値 |
たとえばBSFT M200 8 P2 0は、条件がONに変わるたびにM200~M206の値を1つ後ろ(M201~M207)へ移し、M200にそのときのP2の値を入れます。M207にあった値は捨てられます。
P・Mのビットと、D10.0のようなDワード内のビットを使えます。Dワード内のビットは、D10.15の次がD11.0に続きます。D0・BD0のようなバイト・ワードのアドレスを書きます。M5・P1のようなビットを書きます。IN・DIRがビットの場合は、条件がONに変わったそのスキャンの値を読みます。
M200~M207にシフトされてきた値が表示されます。M207がONになり、P33がONになりました。
BRSTはBITからN個のビットをすべて0に、BSETNはすべて1に書き込みます。条件がONのスキャンごとに書き込み、同じ値を繰り返し書き込んでも問題ありません。BITとNに使えるものはBSFTと同じです。
| 例 | 動作 |
|---|---|
BRST M200 8 | M200~M207をすべてOFFにします。 |
BSETN D20.0 8 | D20の0~7番のビットをすべてONにします。 |
BRST M0 D0 | M0から、D0の値の個数だけビットをOFFにします。 |
TFLKは、条件がONになるとONから始めて、オン時間の間ON、オフ時間の間OFFにする動作を繰り返します。出力はブロックの右側へ伝わる信号です。TIMERセルのタイマーの接点(例: T5)も同じ値でON・OFFするため、ほかのラングでも同じ点滅を使えます。
T5の現在値: 1周期の中で経過した時間です。20 = 0.2秒)とオフ時間(180 = 1.8秒)です。P34: TFLKの出力です。T5の接点: TFLKの出力と同じ値でP35をON・OFFします。
ONとOFFは、TONの設定値(SET VALUE)と同じ単位です。数値だけを書くと10 ms単位になり(20は0.2秒)、200MS・2S・1M・1Hのように単位を付けるとその時間になります。5MSのように10 msより短い値は10倍の50 msとして入り、セルにオレンジ色の警告が表示されます。BD0・D0・DD0のようなバイト・ワード・ダブルワードのアドレスも使えます。
タイマー基準を1 msに変えたプロジェクトでは、数値は1 ms単位です。タイマー基準を変えるときに表示されるタイマー基準の変更ウィンドウでは、数値で書いたTFLKのON・OFFも設定値として一緒に数えられます。値も直す(同じ時間を保つ)を選ぶと、変えた基準に合わせて一緒に直されます。
TIMERセルには、TONと同じくBT5(バイト)・T5(ワード)・DT5(ダブルワード)を使えます。タイマーのサイズによって、1周期(オン時間+オフ時間)の最大が決まります。タイマー番号はほかのタイマーファンクションと重ならないようにする必要があり、重なるとコンパイル時に「タイマーメモリは重複して使用できません。」と表示されます。
| TIMERセル | 1周期の最大(タイマー基準10 ms) | 1周期の最大(タイマー基準1 ms) |
|---|---|---|
BT | 2.55秒 | 0.255秒 |
T | 655.35秒 | 65.535秒 |
DT | 約497日 | 約49.7日 |
次の入力は、セルが赤く表示され、コンパイルされません。理由は、セルを選択するとインスペクターに、セルにマウスポインターを合わせるとツールチップに表示されます。
| セル | コンパイルされない入力 |
|---|---|
FFのOUT | @BEGINのように機器が毎スキャンセットするシステムビット、T0・D10のようなワードアドレス、D0>3のような比較式 |
BSFT・BRST・BSETNのBIT | #名前のユーザービット、@のシステムビット、T・C・Dのワードアドレス、比較式 |
BSFT・BRST・BSETNのN | 0以下の定数、領域の終わりを超える個数(例: M領域がM2047までのときのBSETN M2040 9)、DD0のようなダブルワードアドレス |
BSFTのIN・DIR | 0・1以外の定数(2・-1など)、BD0・D0のようなバイト・ワードのアドレス |
TFLKのON・OFF | 負の値、足した値がタイマーに収まらない定数(例: TIMERがT1のときの40000と40000) |
TFLKのTIMER | ONに書いた値より狭いタイマー(例: ONがDD0または70000のときのT1) |
5つのファンクションのセルには、インデックスアドレス(D100[D0])を使えません。
たとえばTFLK T6 40000 40000を入力すると、OFFのセルが赤く表示され、「TFLK のオン時間とオフ時間の合計(80000)がタイマー T6 に入る最大値 65535 を超えるため、コンパイルされません。時間を短くするか、より広いタイマー(DT)を使ってください。」と表示されます。
NにD10のようなアドレスを書くと、個数は実行中に決まります。領域の大きさは、M・Dではデータメモリで決めたサイズ、Pでは実際の入出力端子の数ではなく、機種によってP55またはP127までのP領域全体です。実行時にNが0以下の場合や、BITからN個のビットがその領域の終わりを超える場合、機器は次のように動作します。
@IXERRがONになります。BSFTは条件がONに変わったスキャン以外)は範囲をチェックしないため、@IXERRはONになりません。
TFLKのON・OFFにアドレスを書いた場合は、実行時に1周期が上の表の最大を超えると@IXERRがONになり、出力がOFFのまま現在値が0にとどまります。
@IXERRは、インデックスアドレスが範囲を外れたときにONになるのと同じビットで、自動ではOFFになりません。OFFにする方法もインデックスアドレスと同じです。モニタリング・シミュレーション中の通知(「インデックスが範囲外になりました — …」)は、インデックスアドレスを使っていないプログラムでは@IXERRがラダー画面かデータテーブルにあるときにだけ表示されます。ビット制御ファンクションの範囲外は、ラダーに@IXERRの接点を置いて確認してください。
D10: 値が0のため、BRST M300 D10をスキップしました。@IXERRのラング: @IXERRがONになり、後ろのコイルM1がONになりました。5つのファンクションは、シミュレーションでも機器と同じように動作します。
FF・BSFT・BRST・BSETNは、条件がONのときにブロックが通電色で表示されます。アドレスを書いたセルにはそのアドレスの現在値が表示され、定数のセルには表示されません。TFLKのTIMERセルには、タイマーの現在値が表示されます。オン時間中はブロックと出力が通電色で表示され、オフ時間中はTONが時間を数えている間と同じく、出力が通電色になりません。M・D領域)。
3つの例は、MPA-8A8R(T)の新規プロジェクト(データメモリは既定値)に順に作成し、シミュレーションで確認できます。
P0を押すたびに、P32のランプをON・OFFする例です。
P0にLAMP_BTN、P32にLAMPを登録します。| ラング | 入力 | ファンクション | 動作 |
|---|---|---|---|
| 0 | P0 | FF P32 | P0を押すたびにP32を反転します。 |
実行 → シミュレーションを開始し、シミュレーションバーのP0チップでON・OFFを繰り返します。P0をONにするたびにP32がONとOFFを交互に繰り返し(図3)、P0をONにしている間は変わりません。
コンベヤーが1区画動くたびに不良検出の結果をM200~M207へシフトし、不良品が排出位置である8番目(M207)に達すると、P33で排出する例です。
P1にMOVE_PULSE、P2にNG_SENSOR、P3にCLEAR_BTN、M200にTRACK、P33にEJECTを登録します。| ラング | 入力 | ファンクション・コイル | 動作 |
|---|---|---|---|
| 1 | P1 | BSFT M200 8 P2 0 | 1区画動くたびにP2の値をM200に入れ、M200~M207を1つずつシフトします。 |
| 2 | M207 | コイルP33 | 排出位置に達した不良品を排出します。 |
| 3 | P3 | BRST M200 8 | 追跡の記録をすべて消去します。 |
シミュレーション中にデータテーブルにM200~M207を登録し、P2をONにしたままP1を1回ON・OFFします。続けてP2をOFFにし、P1をさらに7回ON・OFFすると、最初の不良がM207に達してP33がONになります。図4は、1番目と3番目が不良品のときの様子です。P3をONにするとM200~M207がすべてOFFになり、ラング2はラング3より前にあるため、P33は次のスキャンでOFFになります。
警報入力P4がONの間、警告灯P34を0.2秒ON、1.8秒OFFにする動作を繰り返す例です(タイマー基準10 ms)。
P4にALARM、P34にBEACONを登録します。| ラング | 入力 | ファンクション・コイル | 動作 |
|---|---|---|---|
| 4 | P4 | TFLK T5 20 180の後ろにコイルP34 | 0.2秒ON、1.8秒OFFにします。TFLK T5 200MS 1800MSと書いても同じです。 |
| 5 | T5 | コイルP35 | 同じ点滅をP35にも出力します。 |
シミュレーション中にP4をONにすると、P34とP35が2秒ごとに0.2秒ずつONになり、T5の現在値は0から199まで増えた後、0に戻ります(図5)。P4をOFFにすると、すぐにOFFになり、T5は0になります。
FF・BSFTが直前の条件を記憶するビットは自動で用意され、シンボルテーブル・データテーブル・使用データ一覧には表示されません。V1.3.0以前では開けない
ビット制御ファンクションを1つでも使った.mpxプロジェクトは、V1.3.0以前のアプリでは開けません。