====== MP STUDIO 2 Phase 4 · 펑션 ====== **한국어** | [[:en-us_products:mp_studio:functions|English]] 펑션은 비교ㆍ연산ㆍ타이머ㆍ카운터처럼 여러 칸을 차지하는 래더 명령입니다. 펑션 판에서 골라 넣거나, 펑션 삽입 창에 명령을 입력해 넣을 수 있습니다. {{ :products:mp_studio:fn-execution.svg?1000 |그림 1. 펑션이 실행되는 흐름 }} 펑션 블록 왼쪽의 조건이 ON인 동안 펑션이 실행되고, 블록 오른쪽으로 결과에 따른 전력이 이어집니다. 비교 펑션은 접점처럼 행 안에 배치되어, 비교 결과가 참일 때 전력을 통과시킵니다. ===== 펑션 판 ===== 기호 레일의 **펑션** 단추를 누르거나 ''Alt+2''를 누르면 펑션 판이 열립니다. {{ :products:mp_studio:fn-panel-marked.svg?300 |그림 2. 펑션 판(Timer 분류를 펼친 모습) }} * **① 펑션 검색:** 이름 일부를 입력하면 일치하는 펑션만 표시됩니다. * **② 분류 머리:** 누르면 분류를 펼치거나 접습니다. 분류마다 색이 다르고, 오른쪽 숫자는 분류 안의 펑션 수입니다. * **③ 펑션 줄:** 더블클릭하면 커서 칸에 펑션이 삽입됩니다. * **④ Mark 목록:** 프로그램의 북마크 목록입니다. {{ :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'', 동작 조건, 입력 예)이 표시됩니다. 맞는 펑션이 없으면 **맞는 명령이 없습니다**가 표시됩니다. - **확인**을 누르거나 ''Enter''를 누르면 커서 칸에 펑션이 삽입됩니다. {{ :products:mp_studio:fn-insert-box-marked.svg?540 |그림 4. 인자 설명이 표시된 펑션 삽입 창 }} ===== 인자 고치기 ===== * 펑션의 **인자 칸**을 선택하고 ''Enter''를 누르거나 값을 바로 입력하면 그 인자만 고칠 수 있습니다. * 펑션의 **이름 칸(머리)**을 선택하고 ''Enter''를 누르면 **펑션 고치기** 창이 열리고, 명령 전체를 한 줄로 고칠 수 있습니다. {{ :products:mp_studio:fn-edit-box.png?540 |그림 5. 명령 전체를 고치는 펑션 고치기 창 }} 인자에 넣은 주소가 그 펑션이 받는 자료형(비트ㆍ바이트ㆍ워드ㆍ더블워드ㆍ실수)과 맞지 않으면 칸이 붉게 표시됩니다. 칸에 마우스를 올리면 이유가 표시됩니다. ===== 타이머 ===== 타이머의 설정값(SET VALUE)은 10ms 단위입니다. ''TON T0 100''과 ''TON T0 1s''는 같은 1초 설정이며, 블록에는 ''1S''로 표시됩니다. {{ :products:mp_studio:fn-timer-rung-marked.svg?1100 |그림 6. P0가 1초 유지되면 P33을 켜는 TON }} * **① ''P0''**: 타이머 시작 조건 * **② ''TON T0 1s''**: 조건이 ON인 동안 ''T0''의 현재값이 늘어나고, 설정값(1초)에 도달하면 ''T0''이 ON됩니다. 조건이 OFF되면 현재값은 0으로 돌아갑니다. * **③ ''T0'' 접점**: 타이머가 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이 됩니다. {{ :products:mp_studio:fn-counter-rung.png?1100 |그림 7. P1을 다섯 번 누르면 C0이 ON되어 P34를 켜는 CTU }} ''CTD''(DOWN Counter)는 인자가 COUNT, SET VALUE, SET 순서이며, 현재값이 0이 되면 ON됩니다. ===== 비교와 전송 ===== 비교 펑션(''==''ㆍ''>''ㆍ''U<'' 등)은 두 값을 비교해 참이면 전력을 통과시킵니다. 예를 들어 ''>= D0 100''은 ''D0''이 100 이상일 때 참입니다(부호 있는 비교). ''MOVE''(블록 이름 MOV)는 IN의 값을 OUT으로 복사합니다. {{ :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) | | 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) | | 7Segment | ''FINI'' (CLK, DIO) · ''FINT'' (IN, POSITION, LENGTH, DOT, ZERO, SIGN) · ''FDATA'' (DATA, POSITION) | | DS3231 (RTC) | ''DS3231_WR'' · ''DS3231_RD'' (YEAR, MONTH, DATE, DAY, HOUR, MINUTE, SECOND) | 아날로그ㆍ펄스ㆍ온도 펑션은 그 기능이 있는 기종이나 확장 모듈에서만 사용할 수 있습니다. 채널 번호의 범위는 선택한 기종을 따릅니다. ===== 관련 문서 ===== * [[products:mp_studio:memory_symbols|Phase 5 · 메모리와 심볼]] * [[products:mp_studio:simulation|Phase 8 · 시뮬레이션]] [[products:mp_studio|← MP STUDIO 2 사용설명서로 돌아가기]]