Ctrl + Enterでボックス関数を作成します。Tabで次の引数へ移動します。Enterまたは確認を押します。ボックス関数編集画面では、命令を探して引数を入力します。番号は下の説明と同じ位置を示します。
入力済みのボックス関数を修正するには、セルを選択してEnterを押すか、ダブルクリックします。別の命令を選択すると、入力欄全体が新しい命令の基本形式に変わります。確認は変更を保存し、キャンセルは編集前の値に戻します。
左側の接点から届くON・OFF状態がボックス関数の入力です。タイマーとカウンターは入力がOFFのときも、現在値と完了状態を命令ごとの規則で処理します。左側に接点がなければ入力は常にONです。INC D0のような累積命令を1回だけ実行する場合は立ち上がりエッジ接点を使用します。
定型命令はパレットに登録された44種類で、命令ごとに入力形式と引数の数が決まっています。自由入力形式では計算式を含む代入式、またはArduino関数呼び出しを直接入力します。
| 区分 | 入力例 | 使用基準 |
|---|---|---|
| 定型命令 | MOV D0 D1 | パレットから命令を選択し、表示された引数を入力 |
| 自由入力形式 | D0 = readSensor() | Arduinoコードで作成した関数呼び出し、または対応する式を直接入力 |
以下の2つの画面は、Arduino Codeに記述したsetMotor()関数と、ラダーロジックから同じ関数を呼び出すボックス関数を示します。
ボックス関数に入力する関数名の大文字・小文字、引数の数、データ型はArduino Codeの関数定義と一致させます。末尾にセミコロンは付けません。この例では、M0接点がONのときにsetMotor(100)を呼び出します。
| カテゴリ | 命令 | 機能 |
|---|---|---|
| タイマーボックス関数 | TON | 入力がONの間は時間を積算し、設定値に達すると完了状態をONにします。入力がOFFになると、現在値と完了状態を0に戻します。 |
| TOFF | 入力がONになると完了状態をすぐにONにします。入力がOFFになってから設定時間が経過すると、完了状態をOFFにします。 | |
| TPL | 入力がONに変わった時点で完了状態をONにします。入力がOFFになる時点と設定時間が終了する時点のうち、先に発生した時点でOFFにします。 | |
| TMON | 入力が一度ONになると、設定時間の間は完了状態をONにします。その間は入力の変化と再入力を受け付けません。 | |
| TMR | 入力がONの間は時間を積算します。入力がOFFになると現在値と完了状態を保持し、次にONになるとその値から積算を再開します。初期化にはラダーRESETコイルを使用します。 | |
| TAON | TONと同じオンディレイ動作を100 msティックで処理します。 | |
| TAOFF | TOFFと同じオフディレイ動作を100 msティックで処理します。 | |
| TAPL | TPLと同じ入力保持パルス動作を100 msティックで処理します。 | |
| TAMON | TMONと同じワンショットパルス動作を100 msティックで処理します。 | |
| TAMR | TMRと同じ積算動作を100 msティックで処理します。初期化にはラダーRESETコイルを使用します。 | |
| カウンターボックス関数 | CTU | 左側条件がOFFからONへ変化するたびに、現在値を1増やします。現在値が設定値以上になると完了状態をONにし、最大値で停止します。 |
| CTD | 現在値に設定値を読み込んだ後、左側条件の立ち上がりエッジごとに1減らします。現在値が0になると完了状態をONにし、0で停止します。 | |
| CTUD | 左側条件がONの間、増加入力の立ち上がりエッジで1を加え、減少入力の立ち上がりエッジで1を引きます。両方が同じスキャンで立ち上がった場合、値は変化しません。 | |
| ビット・ラッチボックス関数 | SET | 左側条件がONのとき、Mビットまたは出力に設定されたPビットへONを格納します。条件がOFFになった後もONを保持します。 |
| RST | 左側条件がONのとき、Mビットまたは出力に設定されたPビットへOFFを格納します。タイマーとカウンターの初期化には、ボックス関数RSTではなくラダーRESETコイルを使用します。 | |
| 算術ボックス関数 | ADD | 2つの値を加算し、結果を対象に格納します。 |
| SUB | 1つ目の値から2つ目の値を減算し、結果を対象に格納します。 | |
| MUL | 2つの値を乗算し、結果を対象に格納します。 | |
| DIV | 1つ目の値を2つ目の値で除算し、商を対象に格納します。整数同士の計算では小数部を格納しません。 | |
| MOD | 1つ目の値を2つ目の値で除算し、余りを対象に格納します。 | |
| INC | 対象の値を1増やし、同じアドレスに格納します。 | |
| DEC | 対象の値を1減らし、同じアドレスに格納します。 | |
| SCALE | 入力範囲の整数値を出力範囲の整数値へ線形変換し、対象に格納します。入力範囲外の値は近い境界値に制限し、IN_MINとIN_MAXが同じ場合はOUT_MINを格納します。 | |
| FLOOR | ソース値以下で最大の整数を対象に格納します。たとえば12.8は12、-1.2は-2になります。 | |
| SQRT | ソース値の平方根を対象に格納します。小数部を保持する場合はRメモリを対象に使用します。 | |
| 転送ボックス関数 | MOV | ソース値を1つ、対象にコピーします。 |
| GMOV | 連続するD・C・T WORDのソース領域を、同じ順序で対象領域へコピーします。 | |
| FMOV | D・C・T WORDアドレス1つの値を読み取り、対象の連続WORD領域を同じ値で埋めます。 | |
| ビット演算ボックス関数 | WAND | 2つのWORDの各ビットをAND演算し、結果を対象に格納します。 |
| WOR | 2つのWORDの各ビットをOR演算し、結果を対象に格納します。 | |
| WXOR | 2つのWORDの各ビットをXOR演算し、結果を対象に格納します。 | |
| WNOT | ソースWORDの各ビットを反転し、結果を対象に格納します。 | |
| SHL | WORDを左へシフトし、結果を対象に格納します。左へ出たビットを捨て、右の空きを0で埋めます。シフト数には0~15を使用します。 | |
| SHR | D WORDを右へ論理シフトし、結果を対象に格納します。右へ出たビットを捨て、左の空きを0で埋めます。 | |
| ROL | D・C・T WORDを左へローテートし、結果を対象に格納します。左へ出たビットは右端へ戻します。 | |
| ROR | D・C・T WORDを右へローテートし、結果を対象に格納します。右へ出たビットは左端へ戻します。 | |
| 変換ボックス関数 | INV | ソースWORDの各ビットを反転し、結果を対象に格納します。変換カテゴリでWNOTと同じ演算を使用する場合に選択します。 |
| NEG | ソース値の符号を反転し、結果を対象に格納します。 | |
| H2D | 4桁のBCDとして格納されたソースWORDを10進整数として読み取り、対象に格納します。 | |
| D2H | 0~9999の10進整数を4桁のBCDに変換し、対象WORDに格納します。 | |
| ロジック制御ボックス関数 | JMP | 左側条件がONのとき、同じラダー内の後ろにあるラベルへ移動し、その間のラダー行を飛ばします。飛ばした出力と計算対象は以前の状態を保持します。 |
| JMPN | 左側条件がOFFのとき、同じラダー内の後ろにあるラベルへ移動します。その他の動作と制限はJMPと同じです。 | |
| MCS | 0~15のレベルでマスターコントロール区間を開始します。左側条件がOFFのとき、対応するMCSCLRまでの区間内のコイルをOFFとして処理します。 | |
| MCSCLR | 指定したレベルのマスターコントロール区間と、その内側の区間を終了します。 | |
| 自由入力形式ボックス関数 | 自由入力形式ボックス関数 | D0 = D0 + 1 · R0 += 1.5 · D0 = readSensor() |
不正な命令や引数はビルド時にエラーとして表示されます。メッセージのラダー名と行番号を確認し、該当するボックス関数を開き直します。
| 症状 | 確認項目 |
|---|---|
| 命令が見つからない | 命令名のスペルと定型命令一覧を確認 |
| 引数数エラー | 詳細ページの入力形式と空白を確認 |
| アドレスまたは型エラー | Phase 2で対象メモリの種類とデータ形式を確認 |
| 0除算の可能性 | DIV、MOD、SCALEの除数または入力範囲を確認 |