ユーザ用ツール

サイト用ツール


ja-jp_products:mp_studio:indexed_address

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

次のリビジョン
前のリビジョン
ja-jp_products:mp_studio:indexed_address [2026/11/11 02:36] – 作成 - 外部編集 127.0.0.1ja-jp_products:mp_studio:indexed_address [2026/11/12 20:37] (現在) – 外部編集 127.0.0.1
行 66: 行 66:
  
 ^ 分類 ^ インデックスアドレスを使えるセル ^ ^ 分類 ^ インデックスアドレスを使えるセル ^
-| Comparison | 比較ファンクションのIN1・IN2、接点のセルに書いた比較(例: ''D100[D0]>D9'') | +| 比較 | 比較ファンクションのIN1・IN2、接点のセルに書いた比較(例: ''D100[D0]>D9'') | 
-| Conversion | ''H2D''・''D2H''・''INV''・''NEG''のIN・OUT | +| 変換 | ''H2D''・''D2H''・''INV''・''NEG''のIN・OUT | 
-| Math | ''ADD''・''SUB''・''MUL''・''DIV''のすべてのセル、''INC''・''DEC''、''SCALE''の6つのセル、''FLOOR''・''SQRT'' | +| 算術演算 | ''ADD''・''SUB''・''MUL''・''DIV''のすべてのセル、''INC''・''DEC''、''SCALE''の6つのセル、''FLOOR''・''SQRT'' | 
-| Counter | ''CTU''・''CTD''・''CTUD''のSET VALUE、''HCNT''・''ENCODER''・''ENMOV''・''HRST'' | +| カウンター | ''CTU''・''CTD''・''CTUD''のSET VALUE、''HCNT''・''ENCODER''・''ENMOV''・''HRST'' | 
-| Timer | ''TON''・''TOFF''・''TPL''・''TMON''・''TMR''のSET VALUE | +| タイマー | ''TON''・''TOFF''・''TPL''・''TMON''・''TMR''のSET VALUE | 
-| Word Logic | ''WAND''・''WOR''・''WXOR''・''SHL''・''SHR''・''SWAP''のすべてのセル | +| ワード論理 | ''WAND''・''WOR''・''WXOR''・''SHL''・''SHR''・''SWAP''のすべてのセル | 
-| Analog | ''ADC''・''ADC2''・''DAC''のすべてのセル、''AFILTER''、''NTEMP''・''PTEMP''、''PWM''・''FPWM''・''FDPWM''・''NPWM''・''POFF''・''PSR''、''PID''のすべてのセル、''PID_PWM''(PORTを除く) |+| アナログ | ''ADC''・''ADC2''・''DAC''のすべてのセル、''AFILTER''、''NTEMP''・''PTEMP''、''PWM''・''FPWM''・''FDPWM''・''NPWM''・''POFF''・''PSR''、''PID''のすべてのセル、''PID_PWM''(PORTを除く) |
 | MOVE | ''MOVE''・''GMOVE''・''FMOVE''のすべてのセル | | MOVE | ''MOVE''・''GMOVE''・''FMOVE''のすべてのセル |
-| Data Processing | ''MAX''・''MIN''・''SUM''・''AVE''・''MUX''・''ENCO''・''DECO''のすべてのセル | +| データ処理 | ''MAX''・''MIN''・''SUM''・''AVE''・''MUX''・''ENCO''・''DECO''のすべてのセル | 
-| Serialport | ''PUT''のCHANNEL・DATA・LENGTH、''GET''のCHANNEL・LENGTH・OUT、''PUT_LEN''・''GET_LEN''、''SERID''・''SERRATE''、''MNET''・''MNET_READ'' |+| シリアルポート | ''PUT''のCHANNEL・DATA・LENGTH、''GET''のCHANNEL・LENGTH・OUT、''PUT_LEN''・''GET_LEN''、''SERID''・''SERRATE''、''MNET''・''MNET_READ'' |
 | I2C | ''ISTA''のADDRESS、''IWR''、''IRD''のOUT、''ISR''、''IBR'' | | I2C | ''ISTA''のADDRESS、''IWR''、''IRD''のOUT、''ISR''、''IBR'' |
-| CLCD (Character LCD) | ''CINI''・''CLOC''・''CSTR''・''CINT''・''CREAL''・''CHEX''・''CCLS''・''CCON''・''CCOF''・''CPUT''・''CGET''のADR・値のセル(下の使えないセルを除く)、''CSCR''のPAGE | +| CLCD (キャラクター LCD) | ''CINI''・''CLOC''・''CSTR''・''CINT''・''CREAL''・''CHEX''・''CCLS''・''CCON''・''CCOF''・''CPUT''・''CGET''のADR・値のセル(下の使えないセルを除く)、''CSCR''のPAGE | 
-| 7Segment | ''FINT''のIN・POSITION・LENGTH・DOT、''FDATA''、''FSCR''のPAGE |+| 7 セグ | ''FINT''のIN・POSITION・LENGTH・DOT、''FDATA''、''FSCR''のPAGE |
 | DS3231 (RTC) | ''DS3231_WR''・''DS3231_RD''のすべてのセル | | DS3231 (RTC) | ''DS3231_WR''・''DS3231_RD''のすべてのセル |
  
行 91: 行 91:
  
 ^ 区分 ^ セル ^ 表示される理由 ^ ^ 区分 ^ セル ^ 表示される理由 ^
-| 固定アドレスだけを受け付けるセル | 接点・コイル・エッジのセル、タイマーのTIMER(''T0'')・カウンターのCOUNT(''C0'')、''CTU''のRESET・''CTD''のSET・''CTUD''のCU・CD・RESET、''JMP''・''JMPN''・''LABEL''、''ISTA''のREAD、''IRD''のACK、''CINI''のTYPE、''CPUT''のDEFINE、''CSTR''のSTRING、''CINT''・''CREAL''・''FINT''のZERO・SIGN、''CHEX''のZERO、''PID_PWM''のPORT | 「D100[D0] はインデックスアドレスのため、このセルには使えずコンパイルされません。インデックスアドレスは命令の値セル(例: MOV の IN・OUT)と比較接点にだけ使えます — このセルには D100 のような固定アドレスを書いてください。」 | +| 固定アドレスだけを受け付けるセル | 接点・コイル・エッジのセル、タイマーのTIMER(''T0'')・カウンターのCOUNT(''C0'')、''CTU''のRESET・''CTD''のSET・''CTUD''のCU・CD・RESET、''JMP''・''JMPN''・''LABEL''、''ISTA''のREAD、''IRD''のACK、''CINI''のTYPE、''CPUT''のDEFINE、''CSTR''のSTRING、''CINT''・''CREAL''・''FINT''のZERO・SIGN、''CHEX''のZERO、''PID_PWM''のPORT | 「D100[D0] はインデックスアドレスのため、この欄には使えずコンパイルされません。インデックスアドレスは命令の値欄(例: MOV の IN・OUT)と比較接点にだけ使えます — この欄には D100 のような固定アドレスを書いてください。」 | 
-| 定数だけを受け付けるセル | ''CSCR''のADR、''FSCR''のDSP、''MCS''・''MCSCLR''のNUM、''FINI''のCLK・DIO、''MBTRIG''・''UPTRIG''のNO、''CREAL''のDIGIT | 「CSCR の ADR セルは定数しか受け付けないため、インデックスアドレス(D100[D0])を使えず、コンパイルされません。このセルには定数(数値)を書いてください。」 |+| 定数だけを受け付けるセル | ''CSCR''のADR、''FSCR''のDSP、''MCS''・''MCSCLR''のNUM、''FINI''のCLK・DIO、''MBTRIG''・''UPTRIG''のNO、''CREAL''のDIGIT | 「CSCR の ADR 欄は定数しか受け付けないため、インデックスアドレス(D100[D0])を使えず、コンパイルされません。この欄には定数(数値)を書いてください。」 |
  
 {{ :ja-jp_products:mp_studio:ix-red-reason.png?1000 |図2. タイマーのTIMERセルに書いて赤く表示されたインデックスアドレスと、インスペクターに表示された理由 }} {{ :ja-jp_products:mp_studio:ix-red-reason.png?1000 |図2. タイマーのTIMERセルに書いて赤く表示されたインデックスアドレスと、インスペクターに表示された理由 }}
行 108: 行 108:
 {{ :ja-jp_products:mp_studio:ix-out-sim-marked.svg?1000 |図3. シミュレーションでインデックスが範囲を外れた様子 }} {{ :ja-jp_products:mp_studio:ix-out-sim-marked.svg?1000 |図3. シミュレーションでインデックスが範囲を外れた様子 }}
  
-  * **① 範囲外のセル:** ''D0''が-200のため''D100''より手前の領域外を指し、赤い「範囲外 (D0 = -200)」で表示されます。''MOVE''がスキップされるため、''D200''は前の値のままです。+  * **① 範囲外のセル:** ''D0''が-200のため''D100''より手前の領域外を指し、赤い「範囲外(D0 = -200)」で表示されます。''MOVE''がスキップされるため、''D200''は前の値のままです。
   * **② ''@IXERR''のラング:** ''@IXERR''がオンになり、後ろのコイルがオンになりました。   * **② ''@IXERR''のラング:** ''@IXERR''がオンになり、後ろのコイルがオンになりました。
-  * **③ 通知:** 「インデックスが範囲外になりました — @IXERR がオンになり、その命令はスキップされました。(最後: 0 行)」+  * **③ 通知:** 「インデックスが範囲外になりました — @IXERR が ON になり、その命令はスキップされました。(最後: 0 行)」
  
 > **@IXERRは自動ではオフにならない** > **@IXERRは自動ではオフにならない**
 > ''@IXERR''は、インデックスが範囲内に戻ってもオンのまま残ります。ラダーのRESETコイル(''@IXERR'')でオフにするか、モニタリング・シミュレーション中にデータテーブルで0を書き込んでオフにしてください。ほかの''@''システムビットと異なり、''@IXERR''には0を書き込めます。ダウンロードすると、オフの状態で始まります。 > ''@IXERR''は、インデックスが範囲内に戻ってもオンのまま残ります。ラダーのRESETコイル(''@IXERR'')でオフにするか、モニタリング・シミュレーション中にデータテーブルで0を書き込んでオフにしてください。ほかの''@''システムビットと異なり、''@IXERR''には0を書き込めます。ダウンロードすると、オフの状態で始まります。
 +
 +''@IXERR''は、[[:ja-jp_products:mp_studio:bit_control|ビット制御ファンクション]]の''BSFT''・''BRST''・''BSETN''が実行中に領域を外れたときや、''TFLK''の1周期がタイマーに収まらないときにもオンになります(V1.4.0以降)。インデックスアドレスを使っていないプログラムでは、''@IXERR''がラダー画面かデータテーブルにあるときにだけ通知が表示されるため、ラダーの''@IXERR''の接点で確認してください。
  
 ===== 入力の補助 ===== ===== 入力の補助 =====
行 119: 行 121:
 ==== インデックス候補の一覧 ==== ==== インデックス候補の一覧 ====
  
-セルの入力欄(接点の編集・ファンクションの引数のセル・ファンクションの挿入・ファンクションの修正ウィンドウ)に''D100[''まで入力すると、インデックスに使えるものだけが一覧で表示されます。**インデックス候補 — このプログラムで使ったアドレス**には、現在のタブで使ったアドレスのうちインデックスに使える''D''・''C''のワードアドレスと''##名前''のユーザーワードが、**登録済みのシンボル**にはそれらのアドレスのシンボルが、まとまりごとに8個まで表示されます。+セルの入力欄(接点の編集・ファンクションの引数のセル・ファンクションの挿入・ファンクションの編集ウィンドウ)に''D100[''まで入力すると、インデックスに使えるものだけが一覧で表示されます。**インデックス候補 — このプログラムで使ったアドレス**には、現在のタブで使ったアドレスのうちインデックスに使える''D''・''C''のワードアドレスと''##名前''のユーザーワードが、**登録済みのシンボル**にはそれらのアドレスのシンボルが、まとまりごとに8個まで表示されます。
  
 {{ :ja-jp_products:mp_studio:ix-complete.png?470 |図4. ファンクションの挿入ウィンドウにMOV D100[まで入力したときに表示されるインデックス候補 }} {{ :ja-jp_products:mp_studio:ix-complete.png?470 |図4. ファンクションの挿入ウィンドウにMOV D100[まで入力したときに表示されるインデックス候補 }}
行 148: 行 150:
 | 「2000 (→D103)」 | 値と指したセルです。ダブルワードは「70000 (→DD102)」のように表示されます。 | | 「2000 (→D103)」 | 値と指したセルです。ダブルワードは「70000 (→DD102)」のように表示されます。 |
 | 「— (→?)」(淡色の文字) | その命令がまだ一度も実行されていないため、指したセルと値が分かりません(キャンバスとインスペクターにのみ表示)。 | | 「— (→?)」(淡色の文字) | その命令がまだ一度も実行されていないため、指したセルと値が分かりません(キャンバスとインスペクターにのみ表示)。 |
-| 「範囲外 (D0 = -200)」(赤い文字) | 現在のインデックスが範囲外です。 |+| 「範囲外(D0 = -200)」(赤い文字) | 現在のインデックスが範囲外です。 |
  
 キャンバスとインスペクターの**現在値**はその命令が最後に実行されたときに指したセルを、ウォッチカードとデータテーブルは現在のインデックスの値が指すセルを、同じ形で表示します。ラングがオフで命令が実行されない間にインデックスを変えると、両者が別のセルを示すことがあります。''GMOVE''のINのようなブロックのセルは、「(→D252)」のように先頭のセルだけを表示します。比較接点の通電は機器が実際に比較した結果で表示され、範囲外のセルやまだ実行されていないセルは偽です。インデックスの値が変わった直後は、値をもう一度読むまで、指したセルの表示が少し遅れます。 キャンバスとインスペクターの**現在値**はその命令が最後に実行されたときに指したセルを、ウォッチカードとデータテーブルは現在のインデックスの値が指すセルを、同じ形で表示します。ラングがオフで命令が実行されない間にインデックスを変えると、両者が別のセルを示すことがあります。''GMOVE''のINのようなブロックのセルは、「(→D252)」のように先頭のセルだけを表示します。比較接点の通電は機器が実際に比較した結果で表示され、範囲外のセルやまだ実行されていないセルは偽です。インデックスの値が変わった直後は、値をもう一度読むまで、指したセルの表示が少し遅れます。
行 168: 行 170:
 **実行 → 使用データ一覧**では、先頭の要素とインデックスレジスターが使用中のセルとして塗りつぶされ、先頭の要素からその領域の終わりまでは、インデックスが届くセルとして斜線が表示されます。インデックスが''##名前''のユーザーワードの場合、そのインデックスはこのウィンドウに表示されません。 **実行 → 使用データ一覧**では、先頭の要素とインデックスレジスターが使用中のセルとして塗りつぶされ、先頭の要素からその領域の終わりまでは、インデックスが届くセルとして斜線が表示されます。インデックスが''##名前''のユーザーワードの場合、そのインデックスはこのウィンドウに表示されません。
  
-{{ :ja-jp_products:mp_studio:ix-usedata-marked.svg?425 |図9. 使用データ一覧ウィンドウで、D100の後ろのインデックスが届くセル(Dメモリ) }}+{{ :ja-jp_products:mp_studio:ix-usedata-marked.svg?425 |図9. 使用データ一覧ウィンドウで、D100の後ろのインデックスが届くセル(D メモリ) }}
  
   * **① 使用中のセル:** 先頭の要素(図では''D100'')とインデックスレジスターが塗りつぶされます。   * **① 使用中のセル:** 先頭の要素(図では''D100'')とインデックスレジスターが塗りつぶされます。
-  * **② 斜線:** インデックスが届くセルです。マウスポインターを合わせると、「D100[D0] はここまで届きます · インデックスが負なら手前のセルにも届きます」と表示されます。 +  * **② 斜線:** インデックスが届くセルです。マウスポインターを合わせると、「D100[D0] はここまで届きます · インデックスが負なら手前のアドレスにも届きます」と表示されます。 
-  * **③ 凡例:** **インデックスが届く範囲**+  * **③ 凡例:** **インデックスで参照できる範囲**
  
 ===== 例 ===== ===== 例 =====
行 205: 行 207:
 | 6 | ''D1>=20''(比較接点) | ''MOVE 0 D1'' | 20セルを使い切ると、最初のセルに戻ります。 | | 6 | ''D1>=20''(比較接点) | ''MOVE 0 D1'' | 20セルを使い切ると、最初のセルに戻ります。 |
  
-シミュレーション中にデータテーブルで''D10''に25を書き込んで数秒待つと、ラング4のOUTのセルに「25 (→D157)」のように現在記録しているセルが表示されます。**使用データ一覧**の**Dメモリ**では、''D150''が使用中のセルとして、その後ろから領域の終わりまでがインデックスが届くセルとして表示されます。''@100''は、タイマー基準が10 msのときに1秒です。[[:ja-jp_products:mp_studio:menus_settings#タイマー基準|タイマー基準]]を1 msに変えたプロジェクトでは、''@1000''を使ってください。+シミュレーション中にデータテーブルで''D10''に25を書き込んで数秒待つと、ラング4のOUTのセルに「25 (→D157)」のように現在記録しているセルが表示されます。**使用データ一覧**の**D メモリ**では、''D150''が使用中のセルとして、その後ろから領域の終わりまでがインデックスが届くセルとして表示されます。''@100''は、タイマー基準が10 msのときに1秒です。[[:ja-jp_products:mp_studio:menus_settings#タイマー基準|タイマー基準]]を1 msに変えたプロジェクトでは、''@1000''を使ってください。
  
 ===== 確認事項 ===== ===== 確認事項 =====
  
-  * インデックスアドレスはユーザーメモリ(USER)を使います。異なるインデックスアドレス1つごとに6バイト(同じアドレスを複数のセルで使う場合は1回だけ)と、プログラム全体で2バイトが必要です。足りない場合はコンパイルエラーのメッセージの末尾に「(うちインデックスアドレス N 個が隠しセル M バイトを使います)」が付くので、**設定 → データメモリ**の**USER**を増やしてください。+  * インデックスアドレスはユーザーメモリ(USER MEMORY)を使います。異なるインデックスアドレス1つごとに6バイト(同じアドレスを複数のセルで使う場合は1回だけ)と、プログラム全体で2バイトが必要です。足りない場合はコンパイルエラーのメッセージの末尾に「(うちインデックスアドレス N 個が内部用の隠し領域 M バイトを使います)」が付くので、**設定 → データメモリ**の**USER MEMORY**を増やしてください。
   * インデックスのセルごとに、実行時間が少し長くなります。   * インデックスのセルごとに、実行時間が少し長くなります。
   * インデックスアドレスは、ラダーのセルとデータテーブルで使えます。Modbus 機器テーブルのバインドと、CLCD 画面エディタの値フィールドには使えません。   * インデックスアドレスは、ラダーのセルとデータテーブルで使えます。Modbus 機器テーブルのバインドと、CLCD 画面エディタの値フィールドには使えません。
ja-jp_products/mp_studio/indexed_address.1794332162.txt.gz · 最終更新: by 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki