====== MPINO STUDIO 2 Phase 4・ボックス関数 ====== ボックス関数の入力・修正方法、実行条件、MPINO Studio 2で使用できるボックス関数を説明します。 {{ :ja-jp_products:mpino_studio2:box-function-learning-path.svg?1000 |ボックス関数の作成から動作確認までの手順 }} ===== 1. ボックス関数の作成 ===== ==== 命令の作成方法 ==== - ラダーセルを選択し、''Ctrl + Enter''でボックス関数を作成します。 - 編集画面でカテゴリと命令を選択します。 - 選択された引数を入力し、''Tab''で次の引数へ移動します。 - 入力後、''Enter''または**確認**を押します。 ボックス関数編集画面では、命令を探して引数を入力します。番号は下の説明と同じ位置を示します。 {{ :ja-jp_products:mpino_studio2:box-function-editor-marked.svg?1000 |ボックス関数編集画面のカテゴリ、命令、入力欄、説明、確認ボタン }} * **①** カテゴリ:タイマー、カウンター、演算など命令の種類を選択します。 * **②** 命令一覧:選択したカテゴリで使用する命令を選びます。 * **③** 命令入力:命令と引数を1行で入力します。 * **④** 説明:選択した命令の動作、引数、例を確認します。 * **⑤** 確認・キャンセル:入力値をセルに保存するか、変更を取り消します。 ==== 命令の読み方 ==== カテゴリを選択して命令を押すと、入力欄に基本形式が入り、最初の引数が選択されます。値を入力し、''Tab''で次の引数へ移動します。定型命令では命令名と引数を空白で区切ります。 {{ :ja-jp_products:mpino_studio2:box-function-entry-anatomy.svg?1000 |命令名と引数の入力形式 }} ===== 2. ボックス関数を修正する ===== 入力済みのボックス関数を修正するには、セルを選択して''Enter''を押すか、ダブルクリックします。別の命令を選択すると、入力欄全体が新しい命令の基本形式に変わります。**確認**は変更を保存し、**キャンセル**は編集前の値に戻します。 ===== 3. ボックス関数の実行条件 ===== 左側の接点から届くON・OFF状態がボックス関数の入力です。タイマーとカウンターは入力がOFFのときも、現在値と完了状態を命令ごとの規則で処理します。左側に接点がなければ入力は常にONです。''INC D0''のような累積命令を1回だけ実行する場合は立ち上がりエッジ接点を使用します。 {{ :ja-jp_products:mpino_studio2:box-function-execution.svg?1000 |左側の接点によるボックス関数の実行条件 }} ===== 4. 定型命令と自由入力形式 ===== 定型命令はパレットに登録された44種類で、命令ごとに入力形式と引数の数が決まっています。自由入力形式では計算式を含む代入式、またはArduino関数呼び出しを直接入力します。 ^ 区分 ^ 入力例 ^ 使用基準 ^ | 定型命令 | ''MOV D0 D1'' | パレットから命令を選択し、表示された引数を入力 | | 自由入力形式 | ''D0 = readSensor()'' | Arduinoコードで作成した関数呼び出し、または対応する式を直接入力 | ===== 5. Arduino Codeの関数呼び出し ===== 以下の2つの画面は、Arduino Codeに記述した''setMotor()''関数と、ラダーロジックから同じ関数を呼び出すボックス関数を示します。 ==== Arduino Codeに関数を記述する ==== {{ :ja-jp_products:mpino_studio2:arduino-code-setmotor.svg?1000 |Arduino CodeにsetMotor()関数を記述した画面 }} ==== ラダーロジックから関数を呼び出す ==== {{ :ja-jp_products:mpino_studio2:ladder-arduino-call.svg?1000 |M0接点がONのときにsetMotor(100)を呼び出すボックス関数 }} ボックス関数に入力する関数名の大文字・小文字、引数の数、データ型はArduino Codeの関数定義と一致させます。末尾にセミコロンは付けません。この例では、M0接点がONのときに''setMotor(100)''を呼び出します。 [[ja-jp_products:mpino_studio2:box_functions:free_input|Arduino Codeの関数呼び出しの詳細を見る]] ===== 6. ボックス関数一覧 ===== ^ カテゴリ ^ 命令 ^ 機能 ^ | タイマーボックス関数 | [[ja-jp_products:mpino_studio2:box_functions:timer:ton|TON]] | 入力がONの間は時間を積算し、設定値に達すると完了状態をONにします。入力がOFFになると、現在値と完了状態を0に戻します。 | | | [[ja-jp_products:mpino_studio2:box_functions:timer:toff|TOFF]] | 入力がONになると完了状態をすぐにONにします。入力がOFFになってから設定時間が経過すると、完了状態をOFFにします。 | | | [[ja-jp_products:mpino_studio2:box_functions:timer:tpl|TPL]] | 入力がONに変わった時点で完了状態をONにします。入力がOFFになる時点と設定時間が終了する時点のうち、先に発生した時点でOFFにします。 | | | [[ja-jp_products:mpino_studio2:box_functions:timer:tmon|TMON]] | 入力が一度ONになると、設定時間の間は完了状態をONにします。その間は入力の変化と再入力を受け付けません。 | | | [[ja-jp_products:mpino_studio2:box_functions:timer:tmr|TMR]] | 入力がONの間は時間を積算します。入力がOFFになると現在値と完了状態を保持し、次にONになるとその値から積算を再開します。初期化にはラダーRESETコイルを使用します。 | | | [[ja-jp_products:mpino_studio2:box_functions:timer:taon|TAON]] | TONと同じオンディレイ動作を100 msティックで処理します。 | | | [[ja-jp_products:mpino_studio2:box_functions:timer:taoff|TAOFF]] | TOFFと同じオフディレイ動作を100 msティックで処理します。 | | | [[ja-jp_products:mpino_studio2:box_functions:timer:tapl|TAPL]] | TPLと同じ入力保持パルス動作を100 msティックで処理します。 | | | [[ja-jp_products:mpino_studio2:box_functions:timer:tamon|TAMON]] | TMONと同じワンショットパルス動作を100 msティックで処理します。 | | | [[ja-jp_products:mpino_studio2:box_functions:timer:tamr|TAMR]] | TMRと同じ積算動作を100 msティックで処理します。初期化にはラダーRESETコイルを使用します。 | | カウンターボックス関数 | [[ja-jp_products:mpino_studio2:box_functions:counter:ctu|CTU]] | 左側条件がOFFからONへ変化するたびに、現在値を1増やします。現在値が設定値以上になると完了状態をONにし、最大値で停止します。 | | | [[ja-jp_products:mpino_studio2:box_functions:counter:ctd|CTD]] | 現在値に設定値を読み込んだ後、左側条件の立ち上がりエッジごとに1減らします。現在値が0になると完了状態をONにし、0で停止します。 | | | [[ja-jp_products:mpino_studio2:box_functions:counter:ctud|CTUD]] | 左側条件がONの間、増加入力の立ち上がりエッジで1を加え、減少入力の立ち上がりエッジで1を引きます。両方が同じスキャンで立ち上がった場合、値は変化しません。 | | ビット・ラッチボックス関数 | [[ja-jp_products:mpino_studio2:box_functions:bit_latch:set|SET]] | 左側条件がONのとき、Mビットまたは出力に設定されたPビットへONを格納します。条件がOFFになった後もONを保持します。 | | | [[ja-jp_products:mpino_studio2:box_functions:bit_latch:rst|RST]] | 左側条件がONのとき、Mビットまたは出力に設定されたPビットへOFFを格納します。タイマーとカウンターの初期化には、ボックス関数RSTではなくラダーRESETコイルを使用します。 | | 算術ボックス関数 | [[ja-jp_products:mpino_studio2:box_functions:arithmetic:add|ADD]] | 2つの値を加算し、結果を対象に格納します。 | | | [[ja-jp_products:mpino_studio2:box_functions:arithmetic:sub|SUB]] | 1つ目の値から2つ目の値を減算し、結果を対象に格納します。 | | | [[ja-jp_products:mpino_studio2:box_functions:arithmetic:mul|MUL]] | 2つの値を乗算し、結果を対象に格納します。 | | | [[ja-jp_products:mpino_studio2:box_functions:arithmetic:div|DIV]] | 1つ目の値を2つ目の値で除算し、商を対象に格納します。整数同士の計算では小数部を格納しません。 | | | [[ja-jp_products:mpino_studio2:box_functions:arithmetic:mod|MOD]] | 1つ目の値を2つ目の値で除算し、余りを対象に格納します。 | | | [[ja-jp_products:mpino_studio2:box_functions:arithmetic:inc|INC]] | 対象の値を1増やし、同じアドレスに格納します。 | | | [[ja-jp_products:mpino_studio2:box_functions:arithmetic:dec|DEC]] | 対象の値を1減らし、同じアドレスに格納します。 | | | [[ja-jp_products:mpino_studio2:box_functions:arithmetic:scale|SCALE]] | 入力範囲の整数値を出力範囲の整数値へ線形変換し、対象に格納します。入力範囲外の値は近い境界値に制限し、IN_MINとIN_MAXが同じ場合はOUT_MINを格納します。 | | | [[ja-jp_products:mpino_studio2:box_functions:arithmetic:floor|FLOOR]] | ソース値以下で最大の整数を対象に格納します。たとえば12.8は12、-1.2は-2になります。 | | | [[ja-jp_products:mpino_studio2:box_functions:arithmetic:sqrt|SQRT]] | ソース値の平方根を対象に格納します。小数部を保持する場合はRメモリを対象に使用します。 | | 転送ボックス関数 | [[ja-jp_products:mpino_studio2:box_functions:transfer:mov|MOV]] | ソース値を1つ、対象にコピーします。 | | | [[ja-jp_products:mpino_studio2:box_functions:transfer:gmov|GMOV]] | 連続するD・C・T WORDのソース領域を、同じ順序で対象領域へコピーします。 | | | [[ja-jp_products:mpino_studio2:box_functions:transfer:fmov|FMOV]] | D・C・T WORDアドレス1つの値を読み取り、対象の連続WORD領域を同じ値で埋めます。 | | ビット演算ボックス関数 | [[ja-jp_products:mpino_studio2:box_functions:bit_operations:wand|WAND]] | 2つのWORDの各ビットをAND演算し、結果を対象に格納します。 | | | [[ja-jp_products:mpino_studio2:box_functions:bit_operations:wor|WOR]] | 2つのWORDの各ビットをOR演算し、結果を対象に格納します。 | | | [[ja-jp_products:mpino_studio2:box_functions:bit_operations:wxor|WXOR]] | 2つのWORDの各ビットをXOR演算し、結果を対象に格納します。 | | | [[ja-jp_products:mpino_studio2:box_functions:bit_operations:wnot|WNOT]] | ソースWORDの各ビットを反転し、結果を対象に格納します。 | | | [[ja-jp_products:mpino_studio2:box_functions:bit_operations:shl|SHL]] | WORDを左へシフトし、結果を対象に格納します。左へ出たビットを捨て、右の空きを0で埋めます。シフト数には0~15を使用します。 | | | [[ja-jp_products:mpino_studio2:box_functions:bit_operations:shr|SHR]] | D WORDを右へ論理シフトし、結果を対象に格納します。右へ出たビットを捨て、左の空きを0で埋めます。 | | | [[ja-jp_products:mpino_studio2:box_functions:bit_operations:rol|ROL]] | D・C・T WORDを左へローテートし、結果を対象に格納します。左へ出たビットは右端へ戻します。 | | | [[ja-jp_products:mpino_studio2:box_functions:bit_operations:ror|ROR]] | D・C・T WORDを右へローテートし、結果を対象に格納します。右へ出たビットは左端へ戻します。 | | 変換ボックス関数 | [[ja-jp_products:mpino_studio2:box_functions:conversion:inv|INV]] | ソースWORDの各ビットを反転し、結果を対象に格納します。変換カテゴリでWNOTと同じ演算を使用する場合に選択します。 | | | [[ja-jp_products:mpino_studio2:box_functions:conversion:neg|NEG]] | ソース値の符号を反転し、結果を対象に格納します。 | | | [[ja-jp_products:mpino_studio2:box_functions:conversion:h2d|H2D]] | 4桁のBCDとして格納されたソースWORDを10進整数として読み取り、対象に格納します。 | | | [[ja-jp_products:mpino_studio2:box_functions:conversion:d2h|D2H]] | 0~9999の10進整数を4桁のBCDに変換し、対象WORDに格納します。 | | ロジック制御ボックス関数 | [[ja-jp_products:mpino_studio2:box_functions:logic_control:jmp|JMP]] | 左側条件がONのとき、同じラダー内の後ろにあるラベルへ移動し、その間のラダー行を飛ばします。飛ばした出力と計算対象は以前の状態を保持します。 | | | [[ja-jp_products:mpino_studio2:box_functions:logic_control:jmpn|JMPN]] | 左側条件がOFFのとき、同じラダー内の後ろにあるラベルへ移動します。その他の動作と制限はJMPと同じです。 | | | [[ja-jp_products:mpino_studio2:box_functions:logic_control:mcs|MCS]] | 0~15のレベルでマスターコントロール区間を開始します。左側条件がOFFのとき、対応するMCSCLRまでの区間内のコイルをOFFとして処理します。 | | | [[ja-jp_products:mpino_studio2:box_functions:logic_control:mcsclr|MCSCLR]] | 指定したレベルのマスターコントロール区間と、その内側の区間を終了します。 | | 自由入力形式ボックス関数 | [[ja-jp_products:mpino_studio2:box_functions:free_input|自由入力形式ボックス関数]] | ''D0 = D0 + 1'' · ''R0 += 1.5'' · ''D0 = readSensor()'' | ===== 7. ビルドエラーの確認 ===== 不正な命令や引数はビルド時にエラーとして表示されます。メッセージのラダー名と行番号を確認し、該当するボックス関数を開き直します。 ^ 症状 ^ 確認項目 ^ | 命令が見つからない | 命令名のスペルと定型命令一覧を確認 | | 引数数エラー | 詳細ページの入力形式と空白を確認 | | アドレスまたは型エラー | Phase 2で対象メモリの種類とデータ形式を確認 | | 0除算の可能性 | ''DIV''、''MOD''、''SCALE''の除数または入力範囲を確認 | ===== 関連文書 ===== * [[ja-jp_products:mpino_studio2:monitoring|Phase 6・シリアル・ラダーモニタリング]] * [[ja-jp_products:mpino_studio2:code_editor|Phase 5・Arduino Codeの編集]] * [[ja-jp_products:mpino_studio2:ladder_editing|Phase 3・ラダー編集の基本]] * [[ja-jp_products:mpino_studio2:memory|Phase 2・メモリの理解]] * [[ja-jp_products:mpino_studio2|MPINO STUDIO 2ユーザーマニュアル]]