MP STUDIO 2 · ファンクション · V1.4.0以降

MP STUDIO 2 · ビット制御ファンクション

ビット制御ファンクションは、ビットを反転したり、1つずつシフトしたり、まとめてOFFまたはONにしたりするFF・BSFT・BRST・BSETNと、オン時間とオフ時間を別々に決めて点滅させるタイマーTFLKの5つのファンクションです(V1.4.0以降)。押しボタン1つで出力をON・OFFする回路、コンベヤー上の製品の位置と不良の追跡、警告灯の点滅のように、複数のラングが必要だった回路をファンクション1つで作成できます。

例を見る 挿入方法

例のプログラムをシミュレーションし、ファンクションパネルのビット論理分類とFF・BSFT・TFLKブロックの値が一緒に表示されたMP STUDIO 2のウィンドウ全体

ファンクション 分類 実行 対応バージョン
5個 ビット論理・タイマー ONになるとき・ONの間・周期 V1.4.0以降

このページの内容

ファンクションパネルと挿入方法

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

図1. ビット論理分類とタイマー分類を展開したファンクションパネル

ファンクションの挿入ウィンドウでは、TFLKの引数の順序が[TFLK] [IN] [ON] [OFF]と表示され、最初の引数(タイマーアドレス)はブロックのTIMERセルに入ります。

図2. TFLK T5 20 180を入力し、引数の順序と説明が表示されたファンクションの挿入ウィンドウ

共通の動作

5つのファンクションは、いずれもブロックの左側の条件で動作します。動作するタイミングはファンクションごとに異なります。

ファンクション 動作するタイミング
FF・BSFT 条件がOFFからONに変わったスキャンで1回(立ち上がりエッジと同じタイミング)
BRST・BSETN 条件がONのスキャンごと
TFLK 条件がONの間、オン時間とオフ時間を繰り返す

FF フリップフロップ

FFは、条件がOFFからONに変わったスキャンでだけOUTのビットを反転します(0なら1、1なら0)。条件をONのまま保っている間は、再び反転しません。たとえばP0接点の後ろのFF P32は、P0を押すたびにP32をON・OFFします。

図3. シミュレーションでP0をONにし、FFがP32をONにした様子

同じビットのコイルがFFの結果を上書きする
FFのOUTに書いたビットを通常のコイルにも使うと、コイルがスキャンごとにそのビットを書き直すため、FFが反転した値が残りません。OUTに書いたビットは、SETコイルと同じく二重コイルのチェックの対象外なので、チェックでも表示されません。FFのOUTに書いたビットは、通常のコイルと一緒に使わないでください。

BSFT ビットシフトレジスタ

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にあった値は捨てられます。

IN・DIRがビットの場合は、条件がONに変わったそのスキャンの値を読みます。

図4. シミュレーションでBSFTが不良検出の結果をM200~M207へシフトした様子

BRST・BSETN ビット範囲リセット・セット

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 フリッカータイマー

TFLKは、条件がONになるとONから始めて、オン時間の間ON、オフ時間の間OFFにする動作を繰り返します。出力はブロックの右側へ伝わる信号です。TIMERセルのタイマーの接点(例: T5)も同じ値でON・OFFするため、ほかのラングでも同じ点滅を使えます。

図5. シミュレーションでオフ時間中のTFLK

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)を使ってください。」と表示されます。

図6. ON・OFFの合計がタイマーT6に収まらず赤く表示されたOFFのセルと、インスペクターに表示された理由

範囲外と@IXERR

NにD10のようなアドレスを書くと、個数は実行中に決まります。領域の大きさは、M・Dではデータメモリで決めたサイズ、Pでは実際の入出力端子の数ではなく、機種によってP55またはP127までのP領域全体です。実行時にNが0以下の場合や、BITからN個のビットがその領域の終わりを超える場合、機器は次のように動作します。

TFLKのON・OFFにアドレスを書いた場合は、実行時に1周期が上の表の最大を超えると@IXERRがONになり、出力がOFFのまま現在値が0にとどまります。

@IXERRは、インデックスアドレスが範囲を外れたときにONになるのと同じビットで、自動ではOFFになりません。OFFにする方法もインデックスアドレスと同じです。モニタリング・シミュレーション中の通知(「インデックスが範囲外になりました — …」)は、インデックスアドレスを使っていないプログラムでは@IXERRがラダー画面かデータテーブルにあるときにだけ表示されます。ビット制御ファンクションの範囲外は、ラダーに@IXERRの接点を置いて確認してください。

図7. データテーブルに@IXERRがあるプログラムで表示された通知

図8. シミュレーションでBRSTの個数が範囲を外れ、@IXERRがONになった様子

モニタリングとシミュレーション

5つのファンクションは、シミュレーションでも機器と同じように動作します。

例

3つの例は、MPA-8A8R(T)の新規プロジェクト(データメモリは既定値)に順に作成し、シミュレーションで確認できます。

例1. 押しボタン1つでランプをON・OFFする

P0を押すたびに、P32のランプをON・OFFする例です。

  1. 設定 → シンボルで、P0にLAMP_BTN、P32にLAMPを登録します。
  2. 下のラングを作成します。
ラング 入力 ファンクション 動作
0 P0 FF P32 P0を押すたびにP32を反転します。

実行 → シミュレーションを開始し、シミュレーションバーのP0チップでON・OFFを繰り返します。P0をONにするたびにP32がONとOFFを交互に繰り返し(図3)、P0をONにしている間は変わりません。

例2. コンベヤーの不良品を追跡する

コンベヤーが1区画動くたびに不良検出の結果をM200~M207へシフトし、不良品が排出位置である8番目(M207)に達すると、P33で排出する例です。

  1. 設定 → シンボルで、P1にMOVE_PULSE、P2にNG_SENSOR、P3にCLEAR_BTN、M200にTRACK、P33にEJECTを登録します。
  2. 例1のラングの後ろに、下のラングを作成します。
ラング 入力 ファンクション・コイル 動作
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になります。

例3. 警告灯を点滅させる

警報入力P4がONの間、警告灯P34を0.2秒ON、1.8秒OFFにする動作を繰り返す例です(タイマー基準10 ms)。

  1. 設定 → シンボルで、P4にALARM、P34にBEACONを登録します。
  2. 例2のラングの後ろに、下のラングを作成します。
ラング 入力 ファンクション・コイル 動作
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になります。

確認事項

V1.3.0以前では開けない
ビット制御ファンクションを1つでも使った.mpxプロジェクトは、V1.3.0以前のアプリでは開けません。

関連文書

← MP STUDIO 2 ユーザーマニュアルに戻る