内容 タッ
チパネルで、I/Oチェック画面を作る時、そのデバイスを間接参照すると配置するランプの数を減らす事ができます。
しかし、そのデバイスの内容説明は書けません。 |
||
●PDFを表示 ●コードをダウンロード | ||
◆ 初期化モジュール 【 Initial 】![]() ・「初期化モジュール」はPLC起動時、1回だけ実行されます。 ・VTのページ切替デバイスを[EM1208]に設定しています。初期化時、ページ8(デバイス表示範囲の設定とI/O画面切替)を表示させています。 |
||
◆ 毎スキャンモジュール 【 Main 】![]() ・「毎スキャンモジュール」は毎回スキャンされます。 ・タッチパネル上のスイッチ、[R1013]〜[R1015]が押されると、対応したデバイス種別コードを、種別選択デバイス[EM1006]と画面切替 デバイス[EM1208]に代入します。 ・たとえば4行目では、LR画面移行のスイッチ[R1014]が押されると”2”が、[EM1006]と[EM1208]に代入されます。 ![]() ・タッチパネル上のスイッチ、[R1013]〜[R1015]の内どれかのスイッチが押されると「待機モジュール」”Boolean”が起動します。 ・[R0000]〜の16ビットとF000(Hex)の論理積をとる事で[R1013]〜[R1015]の4ビットのみを抽出しています。 |
||
◆ 待機モジュール 【 Boolean 】(パラメータ初期化)![]() ・このモジュールが最初に呼出された時だけサブルーチン0(初期化)を実行します。 ・以下がサブルーチン0の内容です。 ![]() ・デバイス毎のページを記憶している領域をクリアします。 ![]() ・コメント表示桁数を20に宣言します。[Length] 表示スペース上2バイト文字10桁分しかとれませんでした。 ・表示行数を32行に宣言しています。[Line] これで2チャネル分を1ページに表示できます。 ![]() ・各デバイスの最大表示範囲を制限しています。 ・ローカルデバイスはチャネルの後の方から使われます。例えばMRはこのシステムで500チャネルローカルに予約しましたので”499”となります。 [EM1025] ・KV-3000ではローカルデバイス分のグローバルデバイスコメントも読める様ですが、KV-7000はエラーになる様です。 ![]() ・[R1001]をセットすると、サブルーチン2が実行されます。 ![]() ・サブルーチン2は、このモジュールが呼ばれる度に実行されます。 ・[R1001]は、他の場所からもサブルーチン2を呼べる様テスト用で設けています。不要の場合は他の方法で都度呼出す様にしてもかまいません。 ・以下がサブルーチン2の内容です。 ![]() ![]() ・デバイスの種類が設定範囲外の値で呼出された時のチェック用の変数[Check]です。デバイスタイプが確定されるとセットされるので、ここでリセット しておきます。 ![]() ・デバイスタイプが確定できなかった時は、種別を”0”として[EM1006]に代入し、最初(40行目)にジャンプします。 ![]() ・デバイスタイプが確定(43行目では”0”でデバイスR)されると、サブルーチン3を実行し、デバイス”R”の先頭アドレス(MPUのアドレスマップの アドレス)を[@FM30]に代入します。 ![]() ・表示行数と表示桁数を掛けて、コメントを消去する範囲を計算します。 ・[R1000]はページめくりキーが押された時にセットされるデバイスですが、ここでセットして初回の表示を行います。 デバイス毎のパラメータ完了のフラグ[Preset]をセットし、この処理の実行命令[R1001]をリセットし、終了します。 ・以下がサブルーチン3の内容です。 ![]() ・デバイスタイプを[Kind]に一時記憶します。 ・そのデバイス種の番号をインデックスレジスターに代入します。 ・[EM1016]〜各デバイスの表示範囲の先頭チャネルです。初期画面にて設定します。 ・[EM1000]は各画面の表示範囲の先頭チャネルです。昔の名残で16倍していますが、VT側の式の変更と間接参照デバイス計算側を変更すれば不要で す。 ・34行目でページ数を計算しています。最終チャネル番号から先頭チャネル番号を引いていますが、必ず偶数になる様にします。 ・もしページ数が0ならページ数を1にしています。(35行目 ![]() ・前回記憶しておいたページ[@FM0:Z1]を現在ページ[EM1004]に代入します。 ・表示行数[Line]にページ数を掛けて表示範囲を算出します。 ・デバイスタイプが確定したフラグ[Check]をセットします。 |
||
◆ 待機モジュール 【 Boolean 】(メインルーチン)![]() ・初期化が終了した段階で[Preset]は真なのでコメント読出許可フラグ[Enable]をONします。 ・このフラグで、コメント読出しを1スキャン遅らせます。 ![]() ・コメント書込み中[Writing]でない時にページめくりフラグ[R1000]が真になると[Page]をONします。 ![]() ・7行目の[Page]が真ならこの行の次からを実行します。 ![]() ・処理先頭の戻り先です。 ![]() ・I/Oチェック画面には、1または5ページ進む、1または5ページ戻るスイッチが設けてあります。また、現ページ表示部に直接ページを書込む事もできま す。 ・現ページのオーバーフロー処理は、現在ページ番号[EM1004]をページ数[EM1002]で割ったあまり[TM1]を現在ページに戻す事で、ページ 末尾 ⇒ ページ先頭 に戻る様にしています。 ・ただ、現在ページが負数になって戻って来た時の対処として、現在ページ番号にページ数を足してからページ数で割ります。 ・現在ページが負数の間は9行目にジャンプして正数になるまで同じ処理を繰返します。 ![]() ・タッチパネルランプ用の間接参照変数値を計算します。現在ページに行数を掛けて先頭チャネル分シフトします。 ・コメントを読出すためのポインタのインデックスレジスタにも、その数値を代入するため[Add_RD](コメント読出し側アドレス)にも代入します。 ・行数カウンタ[CNT_Ln]とコメント書込みアドレス[Add_WT]を”0”にします。 ・書込み開始フラグ[Writing]をセットし、ページめくりフラグ[R1000]をリセットして、コメント表示領域をクリアします。 ・[R1004]はローカル領域を読出した時にセットされるフラグです。 ![]() ・書込み終わった行数が[Line]で設定(32)された行数に達したら[Writing]をリセットします。 ![]() ・書込み開始フラグ[Writing]が真で[Mask]が偽なら、読込みインデックスレジスタ、書込みインデックスレジスタに数値をセットし、コメント 読込み命令を実行させます。 ・[@FM30]はデバイスの先頭アドレスです。読出しポイントでインデックス修飾して、順次デバイスのコメントを読出します。 ![]() ![]() ・読出し通知デバイス[Finish]は命令が終了するとセットされます。 ・コメント書込みアドレス[Add_WT]を更新します。(桁数分増加) ・読込み側のアドレスと、行カウンタを更新します。 ・[Mask]をONし、通知デバイスをリセットします。 ・[Mask]はコメント読出し完了後、2スキャン遅れて再度コメント読出しを実行させます。 |
||
◆ 待機モジュール 【 Boolean 】(モジュール停止処理)![]() ・タッチパネルの『デバイス選択へ』スイッチが押されると終了フラグ[R1008]がセットされます。 ・サブルーチン10で終了処理を行いモジュールを停止します。 ![]() ・サブルーチン10ではフラグの始末と、現在ページ番号を記憶します。 ・終了フラグ[R1008]をリセットします。 ・[Preset]をリセットします。 ・次回このモジュールが呼出された時にサブルーチン2を実行させるため、[R1001]をセットします。 ・デバイスタイプ番号をインデックスレジスタに代入し、現在ページをデバイス毎の現ページ記憶領域へ書込みます。 |
||
◆ VT スクリーンサンプル【 操作方法
】 ・左側のスイッチで、各デバイスのI/Oチェック画面へ切替ります。 ・大小チェックはしていません。 ・「先頭Chanel」<「末尾Chanel」にして下さい。 ・デバイスのコメントが表示されます。 ・下のページ切替スイッチでページがめくれます。 ・『デバイス選択へ』スイッチで戻ります。 ・因みに私、女性によく言われるのは… 「音に聞く高師の浜のあだ波は かけじや袖のぬれもこそすれ」 ・上部の、現在ページ番号の表示にタッチすれば、10キーで直接任意のページにジャンプできます。 ■ 実機作成例 VT-5シリーズで作成しました。PLCはKV-7500。7500シリーズの場合、読み出せるコメントは「コメント1」のみです。 ON-DelayとOFF-Delayのパラメータを設定する画面です。 ・時定数の各パラメータはFMに書込みます。 設定変更通知デバイスを監視し、変更があれば各タイマに代入しています。 ・入力モニターは現在431チャンネルのランプ、タイマ挿入後のモニターは、現在435チャンネルのランプです。 ・ランプのデバイス番号は、銘板の文言に書きます。チャンネル番号は数値表示を使い、参照ワードデバイスを演算で指定しています。 動作タイムオーバーのパラメータを設定する画面です。 ・「現在値」のデバイスはカウンタで、動作中に0.1秒のクロックをカウントします。 カウンタの値が設定値を超えると、エラーを発行します。 ・設定値が[0]の場合、エラーは発行されません。 |
||
●PDFを表示 ●コードをダウンロード |