====== MP STUDIO 2 Phase 4 · ファンクション ====== ファンクションは、比較・演算・タイマー・カウンターのように複数のセルを占めるラダー命令です。ファンクションパネルから選んで挿入するか、ファンクションの挿入ウィンドウに命令を入力して挿入できます。 {{ :ja-jp_products:mp_studio:fn-execution.svg?1000 |図1. ファンクションが実行される流れ }} ファンクションブロックの左側の条件がONの間、ファンクションが実行され、ブロックの右側へ結果に応じた信号が伝わります。比較ファンクションは接点と同じように行の中に配置され、比較結果が真のときに導通します。 ===== ファンクションパネル ===== 記号レールの**ファンクション**ボタンを押すか''Alt+2''を押すと、ファンクションパネルが開きます。 {{ :ja-jp_products:mp_studio:fn-panel-marked.svg?300 |図2. ファンクションパネル(Timer分類を展開した状態) }} * **① ファンクションを検索:** 名前の一部を入力すると、一致するファンクションだけが表示されます。 * **② 分類の見出し:** クリックすると、分類を展開または折りたたみます。分類ごとに色が異なり、右側の数字は分類内のファンクション数です。 * **③ ファンクションの行:** ダブルクリックすると、カーソルのセルにファンクションが挿入されます。 * **④ Mark 一覧:** プログラムのブックマークの一覧です。 {{ :ja-jp_products:mp_studio:fn-panel-search.png?300 |図3. TONで検索したファンクションパネル }} ===== ファンクションの挿入ウィンドウ ===== ''Ctrl+E''、''Ctrl+Enter''、''[''のいずれかを押すか、**編集 → ファンクションの挿入**を選択すると、**ファンクションの挿入**ウィンドウが開きます。 - **① 命令**に、ファンクション名と引数をスペースで区切って入力します。例: ''MOVE D0 D1''、''ADD D0 20 D1''、''TON T0 1s'' - 名前を入力すると、**② 引数の順序と説明**(例: ''[TON] [IN] [SV]''、''TON: On Delay Timer''、動作条件、入力例)が表示されます。一致するファンクションがない場合は、**一致する命令がありません**と表示されます。 - **OK**を押すか''Enter''を押すと、カーソルのセルにファンクションが挿入されます。 {{ :ja-jp_products:mp_studio:fn-insert-box-marked.svg?540 |図4. 引数の説明が表示されたファンクションの挿入ウィンドウ }} ===== 引数の修正 ===== * ファンクションの**引数のセル**を選択して''Enter''を押すか、値を直接入力すると、その引数だけを修正できます。 * ファンクションの**名前のセル(先頭)**を選択して''Enter''を押すと、**ファンクションの修正**ウィンドウが開きます。このウィンドウでは、命令全体を1行で修正できます。 {{ :ja-jp_products:mp_studio:fn-edit-box.png?540 |図5. 命令全体を修正するファンクションの修正ウィンドウ }} 引数に入力したアドレスが、そのファンクションの受け付けるデータ型(ビット・バイト・ワード・ダブルワード・実数)と合わない場合は、セルが赤く表示されます。セルにマウスポインターを合わせると、理由が表示されます。 ===== タイマー ===== タイマーの設定値(SET VALUE)は10ms単位です。''TON T0 100''と''TON T0 1s''はどちらも1秒の設定で、ブロックには''1S''と表示されます。 {{ :ja-jp_products:mp_studio:fn-timer-rung-marked.svg?1100 |図6. P0が1秒間ONを保つとP33をONにするTON }} * **① ''P0''**: タイマーの開始条件 * **② ''TON T0 1s''**: 条件がONの間は''T0''の現在値が増え、設定値(1秒)に達すると''T0''がONになります。条件がOFFになると、現在値は0に戻ります。 * **③ ''T0''接点**: ''T0''がONになると導通し、''P33''をONにします。 * **④ ''P33''**: タイマー出力 ^ ファンクション ^ 動作 ^ | TON | On Delay Timer — 条件が設定時間以上ONのまま続くと、ONになります。条件がOFFになると、現在値が0になります。 | | TOFF | Off Delay Timer — 条件がOFFになった後も、設定時間の間はONを保持します。 | | TPL | Pulse Timer — 条件がONになると、設定時間の間ONになります。条件が先にOFFになると、一緒にOFFになります。 | | TMON | Pulse Extended Timer — 条件がONになると、設定時間の間ONになります。途中で条件がOFFになっても、設定時間まではONを保持します。 | | TMR | Accumulative Timer — 条件がONの時間を積算します。条件がOFFになっても現在値が残るため、リセットするには別のラングで消去する必要があります。 | ===== カウンター ===== ''CTU''の引数は、**COUNT**(カウンターアドレス)、**SET VALUE**(設定値)、**RESET**(リセットビット)の順です。例: ''CTU C0 5 P2'' * 左側の条件がOFFからONに変わるたびに、''C0''の現在値が1ずつ増えます。 * 現在値が設定値以上になると、''C0''がONになります。 * RESETに指定したビット(''P2'')がONのとき、現在値が0になります。 {{ :ja-jp_products:mp_studio:fn-counter-rung.png?1100 |図7. P1を5回押すとC0がONになり、P34をONにするCTU }} ''CTD''(DOWN Counter)の引数はCOUNT、SET VALUE、SETの順で、現在値が0になるとONになります。 ===== 比較と転送 ===== 比較ファンクション(''==''・''>''・''U<''など)は2つの値を比較し、真であれば導通します。たとえば''>= D0 100''は、''D0''が100以上のとき真になります(符号付き比較)。''MOVE''(ブロック名MOV)は、INの値をOUTへコピーします。 {{ :ja-jp_products:mp_studio:fn-compare-move.png?1100 |図8. D0が100以上のときD1にD0をコピーするラング }} ===== ファンクション一覧 ===== ファンクションパネルの16の分類とファンクションは次のとおりです。かっこ内は引数の順序です。 ^ 分類 ^ ファンクション ^ | Comparison | ''==''(等しい) · ''!=''(異なる) · ''>'' · ''<'' · ''>='' · ''<='' — 符号付き比較、''U>'' · ''U<'' · ''U>='' · ''U<='' — 符号なし比較 (IN1, IN2) | | Conversion | ''H2D''(16進→10進) · ''D2H''(10進→16進) · ''INV''(1の補数) · ''NEG''(2の補数) (IN, OUT) | | Math | ''ADD'' · ''SUB'' · ''MUL'' (IN1, IN2, OUT) · ''DIV'' (IN1, IN2, OUT, REM) · ''INC'' · ''DEC'' (IN) · ''SCALE'' (IN, IN_MAX, IN_MIN, OUT, OUT_MAX, OUT_MIN) · ''FLOOR'' · ''SQRT'' (IN, OUT) | | Counter | ''CTU'' (COUNT, SET VALUE, RESET) · ''CTD'' (COUNT, SET VALUE, SET) · ''CTUD'' (COUNT, CU, CD, SET VALUE, RESET) · ''HCNT'' (CHANNEL, OUT) · ''HRST'' (CH) · ''ENCODER'' (CHANNEL, OUT) · ''ENMOV'' (CHANNEL, IN) | | Timer | ''TON'' · ''TOFF'' · ''TPL'' · ''TMON'' · ''TMR'' (TIMER, SET VALUE) | | Logic Control | ''JMP'' · ''JMPN'' · ''LABEL'' (LABEL) · ''END'' | | Word Logic | ''WAND'' · ''WOR'' · ''WXOR'' (IN1, IN2, OUT) · ''SHL'' · ''SHR'' (IN, N, OUT) · ''SWAP'' (IN, OUT) | | Analog | ''ADC'' · ''ADC2''(4~20mA) · ''DAC'' (CHANNEL, MAX VALUE, MIN VALUE, OUT) · ''AFILTER'' (IN, WEIGHT, OUT) · ''NTEMP'' · ''PTEMP'' (CHANNEL, OUT) · ''PWM'' (PORT, DUTY, WIDTH) · ''FPWM'' (PORT, FREQ) · ''FDPWM'' (PORT, FREQ, DUTY) · ''NPWM'' (PORT, FREQ, N) · ''POFF'' (PORT) · ''PSR'' (OUT) · ''PID'' (PV, SV, KP, KI, KD, OUT MAX, OUT MIN, MV) · ''PID_PWM'' (PORT, PV, SV, KP, KI, KD, MV) | | MOVE | ''MOVE'' (IN, OUT) · ''GMOVE'' · ''FMOVE'' (IN, OUT, N) | | Data Processing | ''MAX'' · ''MIN'' · ''SUM'' · ''AVE'' · ''MUX'' · ''ENCO'' · ''DECO'' (IN, OUT, N) | | Program Control | ''MCS'' · ''MCSCLR'' (NUM) | | Serialport | ''PUT'' (CHANNEL, DATA, LENGTH) · ''GET'' (CHANNEL, LENGTH, OUT) · ''PUT_LEN'' · ''GET_LEN'' (CHANNEL, OUT) · ''SERID'' (CHANNEL, ID) · ''SERRATE'' (CHANNEL, RATE) · ''MNET'' (CH) · ''MNET_READ'' (RATE, ADD) · ''MBTRIG'' (NO) · ''UPTRIG'' (NO) | | I2C | ''ISTA'' (ADDRESS, READ) · ''ISTP'' · ''IWR'' (DATA) · ''IRD'' (OUT, ACK) · ''ISR'' (OUT) · ''IBR'' (IN) | | CLCD (Character LCD) | ''CINI'' (ADR, TYPE) · ''CLOC'' (ADR, X, Y) · ''CSTR'' (ADR, STRING) · ''CINT'' · ''CREAL'' (ADR, IN, DIGIT, ZERO, SIGN) · ''CHEX'' (ADR, IN, DIGIT, ZERO) · ''CCLS'' · ''CCON'' · ''CCOF'' (ADR) · ''CLON'' · ''CLOF'' · ''CPUT'' (ADR, ID, DEFINE) · ''CGET'' (ADR, ID) · ''CSCR'' (ADR, PAGE) | | 7Segment | ''FINI'' (CLK, DIO) · ''FINT'' (IN, POSITION, LENGTH, DOT, ZERO, SIGN) · ''FDATA'' (DATA, POSITION) · ''FSCR'' (DSP, PAGE) | | DS3231 (RTC) | ''DS3231_WR'' · ''DS3231_RD'' (YEAR, MONTH, DATE, DAY, HOUR, MINUTE, SECOND) | アナログ・パルス・温度のファンクションは、その機能を持つ機種または拡張モジュールでのみ使用できます。チャンネル番号の範囲は、選択した機種に従います。 ''MBTRIG''は[[:ja-jp_products:mp_studio:modbus_device_table|Modbus 機器テーブル]]で、''UPTRIG''は[[:ja-jp_products:mp_studio:user_protocol|ユーザープロトコル]]で、''CSCR''は[[:ja-jp_products:mp_studio:lcd_screen_editor|LCD 画面エディタ]]で、''FINI''・''FINT''・''FDATA''・''FSCR''は[[:ja-jp_products:mp_studio:seven_segment|7セグメント表示]]で詳しく説明します。 ===== 関連文書 ===== * [[:ja-jp_products:mp_studio:memory_symbols|Phase 5 · メモリとシンボル]] * [[:ja-jp_products:mp_studio:simulation|Phase 8 · シミュレーション]] [[:ja-jp_products:mp_studio|← MP STUDIO 2 ユーザーマニュアルに戻る]]