MP STUDIO 2 · 펑션 · V1.4.0부터
비트 제어 펑션은 비트를 뒤집거나 한 칸씩 밀거나 한 번에 끄거나 켜는 FFㆍBSFTㆍBRSTㆍBSETN과, 켜짐 시간과 꺼짐 시간을 따로 정해 깜빡이는 타이머 TFLK의 다섯 펑션입니다(V1.4.0부터). 누름 단추 하나로 출력을 켜고 끄기, 컨베이어 위 제품의 위치와 불량 추적, 경광등 깜빡임처럼 여러 렁이 필요하던 회로를 펑션 하나로 작성할 수 있습니다.
| 펑션 | 분류 | 실행 | 지원 판 |
|---|---|---|---|
| 5개 | 비트 논리ㆍ타이머 | ON될 때ㆍON인 동안ㆍ주기 | V1.4.0부터 |
FF는 조건이 ON되는 순간에만 비트를 뒤집으므로 누름 단추 접점에 상승 엣지 접점 없이 바로 이을 수 있습니다.BSFT는 조건이 ON될 때마다 비트 N개를 한 칸씩 밀고 빈자리에 새 값을 넣습니다.BRSTㆍBSETN은 시작 비트부터 N개를 모두 끄거나 켭니다.TFLK는 ON 시간 동안 켜고 OFF 시간 동안 끄기를 되풀이합니다.이 페이지에서
FFㆍBSFTㆍBRSTㆍBSETN은 펑션 패널의 비트 논리 분류에, TFLK는 타이머 분류에 있습니다. 넣는 방법은 다른 펑션과 같습니다. 펑션 패널에서 줄을 더블클릭하거나, 펑션 삽입 창(Ctrl+E)에 FF P32처럼 한 줄로 입력해주시기 바랍니다. 펑션 패널의 검색 칸에 비트ㆍ플립ㆍ시프트ㆍ플리커를 입력해도 찾을 수 있습니다.
| 펑션 | 펑션 패널의 이름 | 블록의 칸(왼쪽부터) |
|---|---|---|
FF | FF: 플립플롭 (비트 토글) | OUT |
BSFT | BSFT: 비트 시프트 레지스터 | BITㆍNㆍINㆍDIR |
BRST | BRST: 비트 범위 리셋 | BITㆍN |
BSETN | BSETN: 비트 범위 셋 | BITㆍN |
TFLK | TFLK: 플리커 타이머 (ON/OFF) | TIMERㆍONㆍOFF |
펑션 삽입 창에서 TFLK의 인자 순서는 [TFLK] [IN] [ON] [OFF]로 표시되며, 첫 인자(타이머 주소)는 블록의 TIMER 칸에 들어갑니다.
다섯 펑션은 모두 블록 왼쪽의 조건으로 동작합니다. 동작하는 때는 펑션마다 다릅니다.
| 펑션 | 동작하는 때 |
|---|---|
FFㆍBSFT | 조건이 OFF에서 ON으로 바뀌는 스캔에 한 번(상승 엣지 접점과 같은 때) |
BRSTㆍBSETN | 조건이 ON인 스캔마다 |
TFLK | 조건이 ON인 동안 ON 시간과 OFF 시간을 되풀이 |
FFㆍBSFTㆍBRSTㆍBSETN은 블록 왼쪽의 조건을 그대로 블록 오른쪽으로 넘기므로, 뒤에 코일을 이어 쓸 수 있습니다. TFLK의 블록 오른쪽은 깜빡임 출력입니다.FFㆍBSFT는 직전 조건을 블록마다 따로 기억합니다.FF는 한 번 뒤집고 BSFT는 한 칸 밉니다.MCS 구간 안에 두면 구간이 꺼진 동안 조건이 OFF인 것으로 동작하며, 블록 오른쪽도 꺼집니다(다른 펑션 블록은 MCS와 상관없이 실행됩니다). 구간이 다시 켜질 때 조건이 ON이면 OFF에서 ON으로 바뀐 것으로 봅니다.
FF는 조건이 OFF에서 ON으로 바뀌는 스캔에만 OUT 비트를 뒤집습니다(0이면 1, 1이면 0). 조건을 ON으로 유지하는 동안에는 다시 뒤집지 않습니다. 예를 들어 P0 접점 뒤의 FF P32는 P0을 누를 때마다 P32를 켜고 끕니다.
PㆍM 비트, D10.5 같은 D 워드 안의 비트, #이름 사용자 비트를 쓸 수 있습니다.FF 둘로 뒤집을 수 있습니다. P0과 P1 뒤에 각각 FF P32를 두면 어느 단추를 눌러도 P32가 바뀝니다. 두 조건이 같은 스캔에 함께 ON되면 두 번 뒤집혀 그대로입니다.같은 비트의 코일이 FF 결과를 덮어씀
FF의 OUT 비트를 보통 코일에도 쓰면 코일이 스캔마다 그 비트를 다시 써서FF가 뒤집은 값이 남지 않습니다. OUT 비트는 SET 코일처럼 이중코일 검사 대상이 아니므로 검사에서도 표시되지 않습니다.FF의 OUT 비트는 보통 코일과 함께 쓰지 않아야 합니다.
BSFT는 조건이 OFF에서 ON으로 바뀔 때마다 BIT부터 N개의 비트를 한 칸씩 밀고, 비게 된 자리에 IN의 값을 넣습니다. 미는 방향은 DIR로 정합니다. 컨베이어 위 제품의 불량 추적과 배출, 순차 점등, 공정 이력처럼 위치를 따라 값을 옮기는 회로에 사용합니다.
| DIR | 미는 방향 | IN이 들어가는 자리 | 밀려나 버려지는 값 |
|---|---|---|---|
| 0 | 번호가 커지는 쪽 | BIT | BIT+N-1의 값 |
| 1 | 번호가 작아지는 쪽 | BIT+N-1 | BIT의 값 |
예를 들어 BSFT M200 8 P2 0은 조건이 ON으로 바뀔 때마다 M200~M206의 값을 한 칸 뒤(M201~M207)로 옮기고 M200에 그때의 P2 값을 넣습니다. M207에 있던 값은 버려집니다.
PㆍM 비트와 D10.0 같은 D 워드 안의 비트를 쓸 수 있습니다. D 워드 안의 비트는 D10.15 다음이 D11.0으로 이어집니다.D0ㆍBD0 같은 바이트ㆍ워드 주소를 씁니다.M5ㆍP1 같은 비트를 씁니다.INㆍDIR이 비트이면 조건이 ON으로 바뀐 그 스캔의 값을 읽습니다.
M200~M207에 밀려온 값이 표시됩니다.M207이 켜져 P33이 켜졌습니다.
BRST는 BIT부터 N개의 비트를 모두 0으로, BSETN은 모두 1로 씁니다. 조건이 ON인 스캔마다 쓰며, 같은 값을 거듭 써도 문제가 없습니다. BIT와 N에 쓸 수 있는 것은 BSFT와 같습니다.
| 예 | 동작 |
|---|---|
BRST M200 8 | M200~M207을 모두 끕니다. |
BSETN D20.0 8 | D20의 0~7번 비트를 모두 켭니다. |
BRST M0 D0 | M0부터 D0의 값만큼 비트를 끕니다. |
TFLK는 조건이 ON되면 켜짐부터 시작해 ON 시간 동안 켜고 OFF 시간 동안 끄기를 되풀이합니다. 출력은 블록 오른쪽으로 이어지는 전력이며, TIMER 칸 타이머의 접점(예: T5)도 같은 값으로 켜지고 꺼지므로 다른 렁에서 같은 깜빡임을 쓸 수 있습니다.
T5 현재값: 한 주기 안에서 지난 시간입니다.20 = 0.2초)과 꺼짐 시간(180 = 1.8초)입니다.P34: TFLK의 출력입니다.T5 접점: TFLK의 출력과 같은 값으로 P35를 켜고 끕니다.
ON과 OFF는 TON의 설정값(SET VALUE)과 같은 단위입니다. 숫자만 적으면 10 ms 단위이고(20은 0.2초), 200MSㆍ2Sㆍ1Mㆍ1H처럼 단위를 붙이면 그 시간입니다. 5MS처럼 10 ms보다 짧은 값은 10배인 50 ms로 들어가며 칸에 주황색 경고가 표시됩니다. BD0ㆍD0ㆍDD0 같은 바이트ㆍ워드ㆍ더블워드 주소도 쓸 수 있습니다.
타이머 기준을 1 ms로 바꾼 프로젝트에서는 숫자가 1 ms 단위입니다. 타이머 기준을 바꿀 때 표시되는 타이머 기준 바꾸기 창에서는 숫자로 적은 TFLK의 ONㆍOFF도 설정값으로 함께 세어지며, 값도 고치기(같은 시간 유지)를 고르면 바꾼 기준에 맞게 함께 고쳐집니다.
TIMER 칸에는 TON과 같이 BT5(바이트)ㆍT5(워드)ㆍDT5(더블워드)를 쓸 수 있으며, 타이머의 크기에 따라 한 주기(ON 시간+OFF 시간)의 최대가 정해집니다. 타이머 번호는 다른 타이머 펑션과 겹치지 않아야 하며, 겹치면 컴파일할 때 «타이머 메모리는 중복해서 사용할 수 없습니다.»가 표시됩니다.
| TIMER 칸 | 한 주기의 최대(타이머 기준 10 ms) | 한 주기의 최대(타이머 기준 1 ms) |
|---|---|---|
BT | 2.55초 | 0.255초 |
T | 655.35초 | 65.535초 |
DT | 약 497일 | 약 49.7일 |
아래 입력은 칸이 붉게 표시되고 컴파일되지 않습니다. 칸을 선택하면 인스펙터에, 칸에 마우스를 올리면 툴팁에 이유가 표시됩니다.
| 칸 | 컴파일되지 않는 입력 |
|---|---|
FF의 OUT | @BEGIN처럼 장비가 매 스캔 세우는 시스템 비트, T0ㆍD10 같은 워드 주소, D0>3 같은 비교식 |
BSFTㆍBRSTㆍBSETN의 BIT | #이름 사용자 비트, @ 시스템 비트, TㆍCㆍD 워드 주소, 비교식 |
BSFTㆍBRSTㆍBSETN의 N | 0 이하의 상수, 영역 끝을 넘는 개수(예: M 영역이 M2047까지일 때 BSETN M2040 9), DD0 같은 더블워드 주소 |
BSFT의 INㆍDIR | 0ㆍ1이 아닌 상수(2ㆍ-1 등), BD0ㆍD0 같은 바이트ㆍ워드 주소 |
TFLK의 ONㆍOFF | 음수, 더한 값이 타이머에 담기지 않는 상수(예: TIMER가 T1일 때 40000과 40000) |
TFLK의 TIMER | ON에 쓴 값보다 좁은 타이머(예: ON이 DD0이거나 70000일 때 T1) |
다섯 펑션의 칸에는 인덱스 주소(D100[D0])를 쓸 수 없습니다.
예를 들어 TFLK T6 40000 40000을 넣으면 OFF 칸이 붉게 표시되고 «TFLK의 켜짐 시간과 꺼짐 시간의 합(80000)이 타이머 T6이(가) 담을 수 있는 65535을(를) 넘어 컴파일되지 않습니다. 시간을 줄이거나 더 넓은 타이머(DT)를 쓰세요.»가 표시됩니다.
N에 D10 같은 주소를 적으면 개수는 실행 중에 정해집니다. 실행할 때 N이 0 이하이거나, BIT부터 N개의 비트가 그 영역(MㆍD는 데이터 메모리에서 정한 크기, P는 실제 입출력 단자 수가 아니라 기종에 따라 P55 또는 P127까지인 P 영역 전체) 끝을 넘으면 장비는 다음과 같이 동작합니다.
@IXERR가 켜집니다.BSFT는 조건이 ON으로 바뀌는 스캔이 아니면) 범위를 검사하지 않으므로 @IXERR가 켜지지 않습니다.
TFLK의 ONㆍOFF에 주소를 적은 경우에는 실행할 때 한 주기가 위 표의 최대를 넘으면 @IXERR가 켜지고, 출력이 꺼진 채 현재값이 0으로 머뭅니다.
@IXERR는 인덱스 주소가 범위를 벗어날 때 켜지는 것과 같은 비트이며, 저절로 꺼지지 않습니다. 끄는 방법도 인덱스 주소와 같습니다. 모니터링ㆍ시뮬레이션 중의 알림(«인덱스가 범위를 벗어났습니다 — …»)은 인덱스 주소를 쓰지 않은 프로그램에서는 @IXERR가 래더 화면이나 데이터 테이블에 있을 때만 표시되므로, 비트 제어 펑션의 범위 밖은 래더에 @IXERR 접점을 두어 확인해주시기 바랍니다.
D10: 값이 0이라 BRST M300 D10을 건너뛰었습니다.@IXERR 렁: @IXERR가 켜져 뒤의 코일 M1이 켜졌습니다.다섯 펑션은 시뮬레이션에서도 장비와 같이 동작합니다.
FFㆍBSFTㆍBRSTㆍBSETN은 조건이 ON이면 블록이 통전 색으로 표시됩니다. 주소를 적은 칸에는 그 주소의 현재값이 표시되고, 상수 칸에는 표시되지 않습니다.TFLK의 TIMER 칸에는 타이머의 현재값이 표시됩니다. 켜짐 시간에는 블록과 출력이 통전 색으로, 꺼짐 시간에는 TON이 시간을 세는 동안처럼 출력 없이 표시됩니다.MㆍD 영역).
세 예제는 MPA-8A8R(T)의 새 프로젝트(데이터 메모리 기본값)에 차례로 작성해 시뮬레이션으로 확인할 수 있습니다.
P0을 누를 때마다 P32의 램프를 켜고 끄는 예제입니다.
P0에 LAMP_BTN, P32에 LAMP를 등록해주시기 바랍니다.| 렁 | 입력 | 펑션 | 하는 일 |
|---|---|---|---|
| 0 | P0 | FF P32 | P0을 누를 때마다 P32를 뒤집습니다. |
실행 → 시뮬레이션을 시작하고 시뮬레이션 막대의 P0 칩을 켰다 끄기를 되풀이해주시기 바랍니다. P0을 켤 때마다 P32가 켜지고 꺼지기를 번갈아 하며(그림 3), P0을 켜 둔 동안에는 바뀌지 않습니다.
컨베이어가 한 칸 움직일 때마다 불량 감지 결과를 M200~M207로 밀어, 불량품이 여덟째 칸(M207)인 배출 위치에 닿으면 P33으로 배출하는 예제입니다.
P1에 MOVE_PULSE, P2에 NG_SENSOR, P3에 CLEAR_BTN, M200에 TRACK, P33에 EJECT를 등록해주시기 바랍니다.| 렁 | 입력 | 펑션ㆍ코일 | 하는 일 |
|---|---|---|---|
| 1 | P1 | BSFT M200 8 P2 0 | 한 칸 움직일 때마다 P2의 값을 M200에 넣고 M200~M207을 한 칸씩 밉니다. |
| 2 | M207 | 코일 P33 | 배출 위치에 닿은 불량품을 배출합니다. |
| 3 | P3 | BRST M200 8 | 추적 기록을 모두 지웁니다. |
시뮬레이션 중 데이터 테이블에 M200~M207을 등록하고, P2를 켠 채 P1을 한 번 켰다 꺼주시기 바랍니다. 이어서 P2를 끄고 P1을 일곱 번 더 켰다 끄면 처음의 불량이 M207에 닿아 P33이 켜집니다. 그림 4는 첫째와 셋째가 불량품일 때의 모습입니다. P3을 켜면 M200~M207이 모두 꺼지며, 렁 2가 렁 3보다 앞에 있으므로 P33은 다음 스캔에 꺼집니다.
경보 입력 P4가 ON인 동안 경광등 P34를 0.2초 켜고 1.8초 끄기를 되풀이하는 예제입니다(타이머 기준 10 ms).
P4에 ALARM, P34에 BEACON을 등록해주시기 바랍니다.| 렁 | 입력 | 펑션ㆍ코일 | 하는 일 |
|---|---|---|---|
| 4 | P4 | TFLK T5 20 180 뒤에 코일 P34 | 0.2초 켜고 1.8초 끕니다. TFLK T5 200MS 1800MS로 적어도 같습니다. |
| 5 | T5 | 코일 P35 | 같은 깜빡임을 P35에도 냅니다. |
시뮬레이션 중 P4를 켜면 P34와 P35가 2초마다 0.2초씩 켜지고, T5의 현재값은 0에서 199까지 늘어난 뒤 0으로 돌아갑니다(그림 5). P4를 끄면 곧바로 꺼지고 T5는 0이 됩니다.
FFㆍBSFT가 직전 조건을 기억하는 비트는 자동으로 마련되며, 심볼 테이블ㆍ데이터 테이블ㆍ사용한 데이터에 나타나지 않습니다.V1.3.0 이하에서 열 수 없음
비트 제어 펑션을 하나라도 쓴.mpx프로젝트는 V1.3.0 이하의 앱에서 열 수 없습니다.