0% found this document useful (0 votes)
179 views198 pages

MP+STUDIO Manual V175

This document provides a manual for MP STUDIO software, which can be used to program PLCs from (주)아이로직스 like MPS and MPA using ladder logic. It describes the basic functions of MP STUDIO such as creating and editing ladder logic programs, setting device memory, downloading programs to PLCs, and monitoring PLC data. Safety precautions are also provided when using the PLCs and MP STUDIO software. Key features of MP STUDIO covered include creating and editing ladder logic and function blocks, setting device memory and communication ports, and downloading firmware updates.

Uploaded by

asdf
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
179 views198 pages

MP+STUDIO Manual V175

This document provides a manual for MP STUDIO software, which can be used to program PLCs from (주)아이로직스 like MPS and MPA using ladder logic. It describes the basic functions of MP STUDIO such as creating and editing ladder logic programs, setting device memory, downloading programs to PLCs, and monitoring PLC data. Safety precautions are also provided when using the PLCs and MP STUDIO software. Key features of MP STUDIO covered include creating and editing ladder logic and function blocks, setting device memory and communication ports, and downloading firmware updates.

Uploaded by

asdf
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 198

MP STUDIO MANUAL

MP STUDIO MANUAL
V1.7.5

MP STUDIO는 ㈜아이로직스에서 자체개발한 PLC(MPS와 MPA)에 LADDER LOGIC으로 프로그램할 수


있는 소프웨어입니다.

MPS 제품군은 케이스 마감 없이 PCB 형태와 딘레일에 체결이 가능하도록 가이드 및 클립으로
구성되어 있는 제품으로서 자사에서 제공하는 MP STUDIO 소프트웨어로 LADDER LOGIC으로 프로그램
할 수 있는 저렴한 PLC입니다. 양산성이 필요한 제품에 추천드립니다.

MPA 제품군은 케이스 마감 있는 형태로 딘레일에 체결이 가능합니다. MPS 제품군보다는 다소 가격이
높지만 케이스가 마감이 있고 노이즈 제거 기능을 강화하였고 디지털 입/출력의 다양성과 고성능의
아날로그 입력(15비트)과 아날로그 출력(16비트)을 사용할 수 있습니다.

[ 제품명 구분 방법 ]

- 1 -
MP STUDIO MANUAL

▣ 알림
본 사용설명서는 MPS, MPA 제품군을 프로그램하고, 디버깅할 수 있는 MP STUDIO를 사용하는
방법을 간략히 설명한 매뉴얼입니다.

저희가 취급하고 있는 제품군은 MPS, MPA와 MPINO, MPAINO가 있습니다.

MPS, MPA 제품군 MPINO, MPAINO 제품군


ARDUINO IDE
프로그램 작성 툴 MP STUDIO
MPINO STUDIO
ARDUINO IDE : ARDUINO C
프로그램 언어 LADDER LOGIC MPINO STUDIO :
ARDUINO C + LADDER LOGIC

개발자의 도움이 되고자 블로그를 운영하고 있습니다.


링크: https://blog.naver.com/ilogics

▣ 주의사항
본 사용설명서는 MP STUDIO의 기능변경으로 인하여, 내용이 변경될 수 있습니다.

⦁ 본 제품은 프로그램 다운로드 및 모니터링(디버깅)을 지원합니다. 반대로 제품으로부터 프로그램을


다시 PC로 업로드하는 기능을 지원하지 않습니다. 어떠한 방법으로도 업로드를 받을 수 없으니
프로그램의 최종버전을 잘 보관해주시기 바랍니다.

⦁ 폐사의 제품을 사용하다 발생한 손해 및 손실에 대하여 폐사는 민,형사적 법적 책임이 없음을
명시합니다. 폐사의 제품을 사용하기 전에 충분한 안전검사 및 테스트를 마치고 인적/물적 사고가
발생할 수 있는 장비에는 2차 안전장치를 설치하여 사용해주시기 바랍니다.

● 사용 전에 안전을 위한 주의사항의 반드시 읽고


정확하게 사용하여 주십시오.

● 사용설명서를 읽고 난 뒤에는 제품을 사용하는 사람이


항상 볼 수 있는 곳에 잘 보관하십시오.

- 2 -
MP STUDIO MANUAL

<INDEX>
1. 간단 사용법 ·························································································································································· 8
2. 메모리 ···································································································································································· 9
2.1. 데이터 메모리 ··········································································································································· 9
2.2. 사용자 정의 메모리 ··································································································································· 10
3. 비트 접점 ···························································································································································· 11
3.1. 접점 설명 ····················································································································································· 11
3.2. N.O접점 및 N.C접점 ································································································································· 12
3.3. 코일출력 ······················································································································································· 13
3.4. 반전접점 ······················································································································································· 14
3.5. 상승/하강 검출접점 ··································································································································· 15
3.6. 비교 접점 ··················································································································································· 16
3.7. 자기유지 회로 ············································································································································· 18
3.8. 특수 비트 메모리 ······································································································································· 19
3.9. 워드 메모리의 비트 접점 사용 ··············································································································· 20
4. MP STUDIO ···················································································································································· 21
4.1. 사용한 데이터 확인 ··································································································································· 22
4.2. 데이터 메모리 설정 ································································································································· 23
4.3. 통신포트 설정 ············································································································································· 24
4.4. ETHERNET 다운로드 및 모니터링 ·········································································································· 27
4.5. 심볼 설정 ····················································································································································· 28
4.6. 데이터 테이블 ············································································································································· 29
4.7. 프로그램 메모리 용량 ······························································································································· 31
4.8. 문자열 검색 ················································································································································· 32
4.9. 옵션 ······························································································································································· 33
4.10. 펌웨어 버젼확인 및 다운로드 ·············································································································· 35
4.11. 래더 접점 생성 ········································································································································ 35
4.12. 래더 펑션블럭 생성 ································································································································ 38
4.13. 래더 편집 기능 ········································································································································ 39
4.14. 모니터링 ···················································································································································· 43
4.15. 강제 I/O ····················································································································································· 44
4.15.1. FORCE ················································································································································· 44
4.15.2. LOAD ··················································································································································· 45
4.15.3. CLEAR ·················································································································································· 45
4.16. FORCE DATA (메모리에 값 쓰기) ········································································································ 46
4.17. EEPROM 초기화 ······································································································································· 47
4.18. EEPROM 사용법 (제품의 초기설정값 적용법) ·················································································· 47
5. 펑션 블럭 ···························································································································································· 48

- 3 -
MP STUDIO MANUAL

5.1. 비교 펑션블럭 ············································································································································· 56


5.2. 변환 펑션블럭 ············································································································································· 57
5.2.1. H2D (Hexadecimal To Decimal) ····································································································· 58
5.2.2. D2H (Decimal To (Hexadecimal ) ·································································································· 59
5.2.3. INV (반전 명령어) ······························································································································ 60
5.2.4. NEG (부호 반전 변환) ······················································································································· 61
5.3. 수학 펑션블럭 ············································································································································· 62
5.3.1. ADD ······················································································································································· 63
5.3.2. SUB ························································································································································ 64
5.3.3. MUL ······················································································································································· 65
5.3.4. DIV ························································································································································· 66
5.3.5. INC ························································································································································· 67
5.3.6. DEC_I ····················································································································································· 68
5.3.7. SCALE ···················································································································································· 69
5.4. 카운터 펑션블럭 ········································································································································· 70
5.4.1. CTU ························································································································································ 71
5.4.2. CTD ························································································································································ 73
5.4.3. CTUD ····················································································································································· 75
5.4.4. HCNT ····················································································································································· 77
5.4.5. HRST ······················································································································································ 78
5.4.6. ENCO ····················································································································································· 79
5.4.7. ENMOV ················································································································································· 80
5.5. 타이머 펑션블럭 ········································································································································· 81
5.5.1. TON (On Delay Timer) ····················································································································· 82
5.5.2. TOFF (OFF Delay Timer) ·················································································································· 83
5.5.3. TPL ( Pulse Timer ) ··························································································································· 84
5.5.4. TMON ( Monostable Timer ) ········································································································· 85
5.6. 로직 컨트롤 펑션블럭 ····························································································································· 86
5.6.1. JMP ························································································································································ 87
5.6.2. JMPN ····················································································································································· 88
5.7. 데이터 컨트롤 펑션블럭 (Data Control) ······························································································ 89
5.7.1. MAX ······················································································································································· 90
5.7.2. MIN ······················································································································································· 91
5.7.3. SUM ······················································································································································· 92
5.7.4. AVE ························································································································································ 93
5.7.5. MUX ······················································································································································ 94
5.8. 프로그램 컨트롤 펑션블럭 ······················································································································· 95
5.8.1. MCS ······················································································································································· 96

- 4 -
MP STUDIO MANUAL

5.8.2. MCSCLR ················································································································································ 97


5.9. 워드로직 펑션블럭 ····································································································································· 98
5.9.1. WAND ··················································································································································· 99
5.9.2. WOR ···················································································································································· 100
5.9.3. WXOR ················································································································································· 101
5.10. 아날로그 펑션블럭 ································································································································ 102
5.10.1. ADC (아날로그 입력 : DC 0~5V, DC 0~10V, 0~20mA) ······················································ 103
5.10.2. ADC2 (아날로그 입력 : 4~20mA, DC 1~5V) ·········································································· 104
5.10.3. DAC (아날로그 출력) ···················································································································· 105
5.10.4. NTEMP (NTC 써미스터 온도) ······································································································ 106
5.10.5. PWM (펄스 출력) ··························································································································· 107
5.10.6. FPWM ( 주파스 펄스출력 ) ········································································································· 108
5.10.7. NPWM (제한된 펄스개수 출력) ·································································································· 109
5.10.8. POFF (펄스출력 정지) ··················································································································· 111
5.11. 이동 펑션블럭 ( MOVE ) ···················································································································· 112
5.11.1. MOV ·················································································································································· 113
5.11.2. GMOV ··············································································································································· 114
5.11.3. FMOV ················································································································································ 115
5.12. 워드로직 펑션블럭 ································································································································ 116
5.12.1. SHL ···················································································································································· 117
5.12.2. SHR ··················································································································································· 118
5.13. 시리얼통신 펑션블럭 ···························································································································· 119
5.13.1. 시리얼 통신박식의 종류 ··············································································································· 119
5.13.2. 시리얼 통신의 설정 ······················································································································· 120
5.13.3. 시리얼 통신 모드 ··························································································································· 121
5.13.4. PUT (송신) ······································································································································· 122
5.13.5. GET (수신) ······································································································································· 123
5.13.6. PUTLEN (송신버퍼개수) ················································································································ 124
5.13.7. GETLEN (수신버퍼개수) ················································································································ 125
6. HMI 연결 / 외부기기 연결 ·························································································································· 126
6.1. MODBUS RTU ·········································································································································· 126
6.1.1. MODBUS 설정 ·································································································································· 126
6.1.2. MODBUS RTU 패킷 구성 ··············································································································· 126
6.1.3. 펑션코드 ············································································································································· 127
6.1.4. CRC ······················································································································································ 127
6.1.5. START ADDRESS ······························································································································ 127
6.1.6. HMI의 시작 어드레스 ····················································································································· 128
6.1.7. M2I의 HMI에서 사용할 경우 ········································································································· 129

- 5 -
MP STUDIO MANUAL

6.1.8. MODBUS의 패킷 ······························································································································ 130


6.2. COMFILE HMI ·········································································································································· 136
6.2.1. MP STUDIO 설정 ····························································································································· 136
6.2.2. COMFILE HMI 설정 ························································································································· 136
6.2.3. Example ·············································································································································· 138
6.3. CNET (XBC/LINK) ····································································································································· 145
6.3.1. XBC ······················································································································································ 145
6.3.2. LINK ····················································································································································· 145
6.3.3. M2I를 사용할 경우 ·························································································································· 146
6.3.4. EasyView를 사용할 경우 ················································································································· 154
7. I2C ···································································································································································· 166
7.1. ISTA ···························································································································································· 167
7.2. IWR ····························································································································································· 168
7.3. IRD ······························································································································································ 169
7.4. ISTP ····························································································································································· 170
7.5. ISR ······························································································································································· 171
7.6. I2C Example ············································································································································· 172
8. Library ······························································································································································· 175
8.1. DS3231 (Real Time Clock) ···················································································································· 175
8.1.1. DS3231_WR (DS3231 Write) ········································································································· 176
8.1.2. DS3231_RD (DS3231 Read) ··········································································································· 177
8.2. CLCD (Character LCD / PCF8574) ······································································································ 178
8.2.1. CLCD 주소 ········································································································································· 178
8.2.2. CINI (CLCD Initialize) ······················································································································ 179
8.2.3. CLOC (CLCD Location) ··················································································································· 180
8.2.4. CSTR (CLCD String) ························································································································· 181
8.2.5. CINT (CLCD Integer) ······················································································································· 182
8.2.6. CHEX (CLCD Hexadecimal) ············································································································ 184
8.2.7. CCLS (CLCD Clear) ·························································································································· 185
8.2.8. CCON (CLCD Cursor ON) ·············································································································· 186
8.2.9. CCOF (CLCD Cursor OFF) ·············································································································· 187
8.2.10. CLON (CLCD Light ON) ··············································································································· 188
8.2.11. CLOF (CLCD Light OFF) ··············································································································· 189
8.2.12. CPUT (CLCD PUT) ·························································································································· 190
8.2.13. CGET (CLCD GET) ·························································································································· 192
8.3. FND (7SEGMENT) ···································································································································· 193
8.3.1. FINI (FND Initialize) ························································································································· 194
8.3.2. FINT (FND Integer) ·························································································································· 195

- 6 -
MP STUDIO MANUAL

8.3.3. FDATA (FND DATA) ························································································································ 197


8.3.4. FND 시계표시 ··································································································································· 199

- 7 -
MP STUDIO MANUAL

1. 간단 사용법

① 디바이스를 선택합니다.

② 통신포트를 선택합니다. 통신포트는 윈도우의 장치관리자에서 확인할 수 있습니다.

③ NO접점:단축키(F2)를 눌러 입력접점 생성 후, “ENTER” 키를 눌러 입력창에 디지털입력 포트번호


"P0"을 입력합니다. 이후, COIL접점:단축키(F9)를 눌러 출력접점 생성 후, 디지털출력 포트번호
“P32"을 입력합니다. 디지털 입력포트 P0의 입력이 있을 때, 디지털 출력포트인 P32를 ON시키는
프로그램입니다.

④ NO접점:단축키(F2)를 눌러 입력접점 생성 후, 1초에 한번 ON되는 특수비트 “@100"을


입력합니다. 이후, 펑션블럭을 생성하기 위해 왼쪽에 위치한 펑션블럭 툴박스에서 Math에
위치한 "ADD Integer"를 더블클릭하거나 키보드의 " [ ”키를 누르고 “ADD"를 입력하여
펑션블럭을 생성 한후, IN1과 IN2에 각각 "D0", "1"을 입력하고 OUT에 "D0"를 입력합니다.
1초마다 D0의 값이 1씩 증가시키는 프로그램입니다.

⑤ 작성한 프로그램을 키보드 “Ctrl + T”를 입력하거나 단축 아이콘을 이용하여 다운로드 합니다.

⑥ 입/출력 및 메모리의 상태를 키보드 “Ctrl + M”을 입력하거나 단축아이콘을 이용하여


모니터링(디버깅) 합니다.

- 8 -
MP STUDIO MANUAL

2. 메모리
2.1. 데이터 메모리

▢ 데이터 메모리의 영역은 P, M, D, C, T로 구성되어 있습니다.


- P : PORT 메모리로서, MPS, MPA 제품군의 디지털 입력 및 출력를 제어합니다.
대부분 디지털입력은 P0~P31, 디지털출력은 P32~P63으로 구성되어 있습니다.
- M : BIT 메모리로서, M0 ~ M9, M10, M11...로 10진수 포인트명으로 사용합니다.
- D : WORD 메모리로서, D0 ~ D9, D10, D11...로 10진수 포인트명으로 사용합니다.
- C : 카운터 메모리로서, C0 ~ C9, D10, C11...로 10진수 포인트명으로 사용합니다.
- T : 타이머 메모리로서, T0 ~ T9, T10, T11...로 10진수 포인트명으로 사용합니다.

▢ 데이터 메모리 구조는 BIT, BYTE, WORD, DOUBLE WORD로 구성되어 있습니다.

- BIT는 0 또는 1을 표현할 수 있는 메모리의 최소 단위입니다.


- BYTE는 -128 ~ +127를 표현할 수 있으며, 8개의 BIT로 구성됩니다.
- WORD는 -32,768 ~ + 32,767를 표현할 수 있으며, 2개의 BYTE로 구성됩니다.
- DOUBLE WORD는 -2,147,483,648 ~ +2,147,483,647를 표현할 수 있으며, 2개의 WORD로 구
성됩니다. 더블워드는 워드 메모리에 D를 붙여 사용합니다.

③ M 메모리

④ D, C, T 메모리 (아래는 D메모리를 기준으로 표시하였습니다)

- 9 -
MP STUDIO MANUAL

2.2. 사용자 정의 메모리

▢ 사용자가 정의하는 메모리입니다. 별도의 창에서 정의하지 않고 프로그램에서 #, ##, ###을


접두어로 하여 원하는 이름을 사용하시면 됩니다.

▢ 데이터 타입은 아래와 같이 접두어에 의해 정의됩니다.


# : 비트
## : 워드
### : 더블워드

① #이름 : 비트 메모리 사용 예

< 그림2-2-1 #비트 메모리를 사용>

< 그림2-2-2 #비트 메모리를 상승검출접점에 사용 >

② ##이름 : 워드 메모리 사용 예

< 그림2-2-3 ##워드 메모리를 사용 >


▢ @100 N.O접점에 의해 1초에 한번씩 ADD_I 펑션에서 사용자 워드 메모리인 “##카운터”에
1씩 증가시킵니다. ##카운터가 5를 초과하면, 디지털출력포트인 P32:모터가 ON되어 모터가
동작하는 예입니다.

▢ 사용자 정의 메모리는 MP STUDIO 툴에서 데이터 메모리 설정창에서 사용할 수 있는 메모리


수를 확인 및 변경할 수 있습니다.

- 10 -
MP STUDIO MANUAL

3. 비트 접점

3.1. 접점 설명

아이콘 이름 설 명 단축키
N.O 접점 평상시에는 끊어져있다가, 접점값이
F2
(Normal Open) "HIGH" 일때, 연결이 되는 접점
N.C 접점 평상시에는 연결되어있다가. 접점값이
F3
(Normal Close) “HIGH" 일때, 연결이 끊어지는 접점

가로 연결선 가로 방향으로 접점을 연결해주는 선 F5

세로 연결선 세로 방향으로 접점을 연결해주는 선 F6

SET COIL 입력조건이 성립이 되면, "HIGH"를 출력 F7

RESET COIL 입력조건이 성립이 되면, “LOW"를 출력 F8

입력조건이 되면, “HIGH"를 출력하고, 조


COIL 건이 되지 않으면, "LOW"를 출력하는 코 F9

입력조건이 "LOW"일 경우, 연결이 된다.
NOT 접점 입력조건이 “HIGH"일 경우, 연결이 끊긴 F10
다.
입력조건이 “LOW"에서 ”HIGH"로 변할
Positive Edge 접점 F11
때, 한 스캔동안만 연결되고 끊기는 접점
입력조건이 “HIGH"에서 ”LOW"로 변할
Negative Edge 접점 F12
때, 한 스캔동안만 연결되고 끊기는 접점

- 11 -
MP STUDIO MANUAL

3.2. N.O접점 및 N.C접점

① N.O접점

▢ Normal Open 접점으로서, 평상시에는 열려있다가 접점비트가 ON되면 닫히는


접점입니다.

▢ 디지털 입력포트 P00가 ON이되면, 디지털 출력포트 P20이 ON되고 디지털 입력포트
P00가 OFF되면, 디지털 출력포트 P20이 OFF되는 프로그램을 모니터링하면 아래와
같습니다.

< P00 입력이 OFF 되었을 때 > < P00 입력이 ON 되었을 때 >

▢ 디지털 입력포트 P00 또는 P01이 ON 되었을 때, M0 비트메모리를 ON 시키고, M0


비트메모리가 ON이 되면, 디지털 출력포트 P20을 ON 시키는 프로그램을 모니터링
하면 아래와 같이 표시됩니다.

< P01 입력이 OFF 되었을 때 > < P01 입력이 ON 되었을 때 >

② N.C접점

▢ Normal Close 접점으로서, 평상시에는 닫혀있다가 접점비트가 ON되면 열리는


접점입니다.

디지털 입력포트 P00가 OFF되면, M0 비트메모리가 ON되고 디지털 입력포트 P00가


ON되면, M0 비트메모리가 OFF되는 프로그램을 모니터링하면 아래와 같습니다.

< P00 입력이 OFF 되었을 때 > < P00 입력이 ON 되었을 때 >

- 12 -
MP STUDIO MANUAL

3.3. 코일출력

① SET코일
▢ 코일이 ON되면, 접점비트를 ON시킵니다.

▢ 디지털 입력포트 P00가 ON이되면, 디지털 출력포트 P20이 ON되고 이후, 디지털
입력포트 P00가 OFF도, 디지털 출력포트 P20이 계속 ON되는 프로그램을
모니터링하면 아래와 같습니다.

< P00 입력이 ON 되었을 때 > < P00 입력이 OFF 되어도 출력유지 >

② RESET코일
▢ 코일이 ON되면, 접점비트를 OFF시킵니다.

▢ 디지털 입력포트 P00가 ON되면, 디지털 출력포트 P20을 ON시키고 이후, 디지털
입력포트 P01이 ON되면, 디지털 출력포트 P20을 OFF시키는 프로그램을
모니터링하면 아래와 같습니다.

< P00 입력이 ON 되었을 때 > < P01 입력이 ON 되었을 때 >

③ 코일
코일의 출력조건이 ON되면 출력비트를 ON시키고, 코일의 출력조건이 OFF되면
출력비트를 OFF시킵니다.

디지털 입력포트 P00가 ON이되면 디지털 출력포트 P20이 ON되고 , 디지털 입력포트
P00가 OFF되면 디지털 출력포트 P20이 OFF되는 프로그램을 모니터링하면 아래와
같습니다.

< P00 입력이 OFF 되었을 때 > < P00 입력이 ON 되었을 때 >

- 13 -
MP STUDIO MANUAL

3.4. 반전접점

▢ 입력된 상태를 반전시키는 접점입니다.

▢ 디지털 입력포트 P00가 ON이되면, 디지털 출력포트 P20이 OFF되고 디지털


입력포트 P00가 OFF되면, 디지털 출력포트 P20이 ON되는 프로그램을 모니터링하면
아래와 같습니다.

< P00 입력이 OFF 되었을 때 > < P00 입력이 ON 되었을 때 >

▢ 동작중일 때에는 그린램프을 ON시키고 동작중이 아닐 경우 옐로우램프가 켜지는


프로그램입니다.

< P00 입력이 ON 되었을 때 > < P01 입력이 ON 되었을 때 >

- 14 -
MP STUDIO MANUAL

3.5. 상승/하강 검출접점

① 상승 검출접점

▢ 입력된 상태가 ON이 되었을 때, 한 스캔(한 번)만 ON되는 접점

▢ 디지털입력 P0:스위치입력이 ON되었을 때, 한 번만 D0:카운트 워드메모리를 1


증가시킵니다. 상승 검출접점 #Edge1가 없다면, 디지털입력 P0:스위치입력이 ON되고
있는 동안 D0 워드메모리는 계속 1씩 증가하게 됩니다. 상승검출접점 #Edge1을
사용함으로서, 디지털입력 P0:스위치입력이 ON되고 있어도 상승검출접점 뒤에 있는
ADD 펑션블럭은 한번만 실행되어 D0:카운트 워드메모리는 1이 됩니다. 이후,
디지털입력 P0:스위치입력을 OFF시키고 다시 ON시켰을 때 D0:카운트는 2가 됩니다.

<그림3-5-1 P0 입력이 OFF 되었을 때 >

<그림3-5-2 P0 입력이 ON 되었을 때 >

▢ 검출접점은 비트 메모리 자원을 사용해야 합니다. 때문에, M비트 또는 사용자 비트


메모리를 입력해야 합니다. 위 프로그램에서는 사용자 비트 메모리를 사용하였습니다.
별도의 이름을 입력하지 않으면, 사용자 비트 메모리로 자동 입력됩니다.

② 하강 검출접점

▢ 입력된 상태가 ON이 되었다가 OFF 되었을 때, 한 스캔(한 번)만 ON 시키는


접점입니다.

▢ 디지털입력 P0:스위치입력이 ON되다가 OFF되었을 때 한 번만 D0:카운트


워드메모리를 1 증가시키는 프로그램입니다.

<그림3-5-3 P0 입력이 ON 되었을 때 >

- 15 -
MP STUDIO MANUAL

3.6. 비교 접점

▢ 메모리 값을 비교하여 참일 경우에 상태 값을 ON 시킵니다.


접점 명 펑션블럭 설 명
D0 > D1 HIGHER_I D0가 D1보다 클 경우, 접점 신호 ON
D0 < D1 LOWER_I D0가 D1보다 작을 경우, 접점 신호 ON
D0 >= D1
SHIGHER_I D0가 D1보다 크거나 같을 경우, 접점 신호 ON
D0 => D1
D0 <= D1
SLOWER_I D0가 D1보다 작거나 같을 경우, 접점 신호 ON
D0 =< D1
D0 == D1
EQUAL_I D0와 D1이 같을 경우, 접점 신호 ON
D0 = D1
D0 != D1
NEQUAL_I D0와 D1이 다를 경우, 접점 신호 ON
D0 <> D1

▢ N.O접점 또는 N.C접점에 비교문을 사용할 수 있습니다.

▢ 디지털입력 P0:스위치가 ON이 되면 D0 워드메모리에 6을 저장하고, P0:스위치가


OFF되면 D0 워드메모리 11을 저장합니다. 이후, D0 워드메모리값이 10보다 클 경우
디지털출력 P32:모터출력을 ON시키고 D0 워드메모리값이 10보다 작거나 같으면
P32:모터출력을 OFF시키는 프로그램입니다.

<그림 3-6-1 P0 입력이 ON 되었을 때 >

<그림 3-6-2 P0 입력이 OFF 되었을 때 >

- 16 -
MP STUDIO MANUAL

▢ 심볼 또는 사용자 워드 메모리 이름을 사용할 수도 있습니다. 심볼을 사용할 경우


아래와 같이 사용하시기 바랍니다.

<그림 3-6-3 비교접점에 심볼 사용 >

<그림 3-6-4 비교접점에 사용자 워드 메모리 사용 >

- 17 -
MP STUDIO MANUAL

3.7. 자기유지 회로

① 프로그램 작성

[ 전기회로로 보는 모터동작 회로 ] [ 래더언어로 보는 모터동작 프로그램 ]

▢ "START BUTTON"을 누르면, 모터가 동작합니다. 이후, “STOP BUTTON"을 누르면, 모터는
정지합니다. "MOTOR"의 N.O접점은 "MOTOR"코일과 동시에 ON됩니다.

② 동작순서

버튼을 누르지 않고 있으면, “MOTOR" 코일은 ON조건을


성립하지 않으므로 OFF되고 있다.

N.O접점인 "START BUTTON"을 누르면,"START BUTTON"은


ON되고 이후에 N.C접점인 “STOP BUTTON"은 버튼을 누르
지 않을 때는 연결된 접점이므로, ON된다. 따라서 ”MOTOR"
코일은 ON된다.
"START BUTTON"을 누르다가 띄우면, “START BUTTON"은
OFF된다. 하지만, "MOTOR" 코일이 ON되어, 동시에 ON된
”MOTOR" N.O접점이 ON되어 있어, "MO
TOR" 코일은 계속 ON되어진다.
N.C접점인 “STOP BUTTON"은 누르지 않을 때는 계속 ON
되어 있다. 이후, 정지하고 싶을 때, 누르면 이어진 선이 끊
기면서 ”MOTOR"코일을 OFF시키며, 동시에 "MOTOR" N.O
접점도 OFF되어진다.

- 18 -
MP STUDIO MANUAL

3.8. 특수 비트 메모리

▢ 특수접점 메모리는 N.O접점 또는 N.C접점에서만 사용할 수 있습니다.

 @BEGIN : MEGAPLC에 전원이 투입된 이후 첫 스캔동안만 OnN됩니다.

 @ON, TRUE : 항상 ON 상태의 특수 메모리입니다.

 @OFF, FALSE : 항상 OFF 상태의 특수 메모리입니다.

 @(n) : n의 시간의 간격으로 1스캔동안 ON됩니다. (n은 10ms 단위)


n시간의 종류는 최대 8개까지 사용할 수 있습니다.

1초마다 ADD 펑션블럭이 실행되어


D0의 값이 1씩 증가합니다.

[ 래더 프로그램 ] [ 작동 설명 ]

 @F(n) : n의 시간의 간격으로 ON/OFF를 반복합니다. (n은 10ms 단위)


n시간의 종류는 최대 8개까지 사용할 수 있습니다.

2초동안 P32코일이 ON, 2초동안


P32코일이 OFF 됨을 반복합니다.

[ 래더 프로그램 ] [ 작동 설명 ]

- 19 -
MP STUDIO MANUAL

3.9. 워드 메모리의 비트 접점 사용

▢ WP, WM, D 워드 메모리의 비트를 제어를 할 수 있습니다.

 워드 메모리의 접미어에 ” .0~15“를 사용하여 비트 메모리를 지정할 수 있습니다.

 WP0는 디지털입력포트 P0 ~ P15이며, WP0.1은 P1을 의미합니다.

 MW1은 내부 M메모리 M16 ~ M31이며, WM1.15는 M31을 의미합니다.

 워드 메모리 D10은 D10.0 ~ D10.15의 비트 메모리로 사용할 수 있습니다.

 워드 메모리 D0에 1을 저장하여 D0.0 비트 메모리가 ON되므로 출력 P32를 ON되는


프로그램입니다.

[ D 워드 메모리의 비트 제어 예 ]

- 20 -
MP STUDIO MANUAL

4. MP STUDIO

<그림 4-1 MP STUDIO >

▢ 단축 아이콘의 기능중 일부를 아래에 표시하였습니다.

<그림 4-2 단축아이콘 >


① 프로그램에서 사용한 데이터 메모리를 확인할 수 있는 기능입니다.

② 프로그램을 다운로드하기 전에, 반드시 확인해 주세요. 프로그램을 다운로드 하게 될


제품의 제품명을 선택하는 기능입니다.

③ 입/출력포트 또는 데이터 메모리의 심볼을 설정할 수 있는 기능입니다.

④ 작성한 프로그램을 MPS 제품군에 다운로드하는 기능입니다.

⑤ 프로그램을 다운로드하기 전에, 반드시 확인해 주세요. 컴퓨터와 MPS 제품군을 연결한
USB케이블의 다운로드 포트 및 MPS 제품군의 통신설정을 할 수 있는 기능입니다.

- 21 -
MP STUDIO MANUAL

4.1. 사용한 데이터 확인

▢ 프로그램 작성 창에서 사용하고 있는 데이터 메모리를 확인할 수 있습니다.

<그림 4-1-1 M비트 및 D워드 메모리 사용>

▢ 위와 같이 프로그램을 하였을 경우, M비트 메모리의 사용한 데이터 메모리가


아래처럼 표시됩니다.

<그림 4-1-2 M비트 메모리 사용한 데이터 확인 >

또한, D워드 메모리의 사용한 데이터 메모리가 아래처럼 표시됩니다.

<그림 4-1-3 D워드 메모리 사용한 데이터 확인 >

- 22 -
MP STUDIO MANUAL

4.2. 데이터 메모리 설정

▢ 데이터 메모리 영역 및 정전유지 영역을 설정할 수 있습니다.

① 데이터 메모리의 영역 크기를 조절할 수 있습니다. 위 그림의 M, D 데이터 메모리는 각각


512워드 영역으로 M0~M8191, D0 ~ D511, C0 ~ C512, T0 ~ T512를 사용할 수 있습니다.

② 사용자 정의 메모리 영역의 크기를 조절할 수 있습니다. 위 그림의 사용자 정의 메모리


영역은 128 워드로서, “##” 사용자 정의 워드 메모리를 128개 사용할 수 있습니다. “#”
사용자 정의 비트 메모리는 128 * 16비트 만큼 사용할 수 있습니다. ( 카운터와 타이머
펑션블럭은 2개의 사용자 비트 메모리를 사용합니다. 즉, 타이머 펑션블럭을 2개
사용했다면 4비트의 사용자 메모리를 자동으로 사용하게 됩니다.)

③ 통신포트의 송/수신 버퍼의 크기를 조절할 수 있습니다. 위 그림은 통신채널1~3의


버퍼를 각각 128 워드로 설정하였으며, 128 워드는 송신버퍼 64, 수신버퍼 64워드로
균등분배 되어 할당됩니다.

④ 정전유지 영역을 설정할 수 있습니다. 정전유지 영역으로 설정한 데이터 메모리는MPS


제품군의 전원이 차단되어도 EEPROM을 이용하여 데이터 메모리의 값을 기억하게 됩니다.

⑤ EEPROM의 수명은 최소 100,000번 이상 저장하게 되면 해당 섹션이 깨질 수 있습니다.


때문에, 너무 빈번한 저장을 하지 말아야 합니다. 그래서 10ms마다 변경되는 타이머의
값은 Interval을 설정하여 EEPROM에 저장하는 시간을 제한할 수 있습니다. Interval을
100으로 설정하면 1초에 한번 씩 정전유지 영역을 EEPROM에 저장합니다. 단, 정전유지
영역의 메모리 값의 변동이 없을 경우 Interval 시간이 되어도 저장하지 않습니다.

⑥ 디지털출력이 P20으로 시작되는 제품의 경우 “이전 I/O버전 사용”에 체크를 해야 합니다.


디지털출력 포트를 P32로 통일시키면서 디지털출력 포트의 숫자가 변경되었습니다. 때문에,
디지털출력 포트가 P20으로 시작하는 기존 제품을 사용할 경우 이 옵션을 체크해야 합니다.

⑦ 사용가능한 데이터 메모리의 영역 크기가 표시됩니다. 위 그림은 344 워드를 추가로


사용할 수 있습니다.

- 23 -
MP STUDIO MANUAL

4.3. 통신포트 설정

▢ 다운로드 및 외부 디바이스와의 통신을 위한 통신포트를 설정할 수 있습니다.

➀ 다운로드 포트

⚪ 다운로드 포트는 LADDER 작성창에서 작성한 프로그램을 다운로드하는 포트입니다.

⚪ CHANNEL은 사용자 컴퓨터의 시리얼포트(COM포트)중 작성한 프로그램을 전송할


포트를 선택합니다. 사용자 컴퓨터의 COM포트 번호는 윈도우 OS에서 자동으로
부여하게 되므로 정해지지 않았으므로 윈도우에서 장치관리자를 실행하여 하기와 같은
Silicon Labs의 CP210x 드라이버 우측에 명명된 COM포트 번호를 기입해야 합니다.

⚪ IP ADDRESS는 TCP/IP를 이용하여 다운로드할 경우 IP 정보를 입력합니다. TCP/IP를


이용하고자할 경우에는 CHANNEL에서 “ETHERNET”을 선택해야 합니다.

⚪ PORT는 TCP/IP를 이용하여 다운로드할 경우에 Client에서 사용하는 포트번호를


입력합니다. 내부 네트워크망이 아닌 외부 네트워크망에서 접속하기 위해서는 공유기에서
포트포워딩 설정을 해야 합니다.

- 24 -
MP STUDIO MANUAL

➁ 통신 포트1

⚪ 외부 제품과의 시리얼통신을 위한 통신입니다. 현재 자사의 모든 제품의 통신포트1은


RS-232 시리얼통신으로 사용되고 있습니다.

⚪ BAUDRATE는 외부 제품과 통신할 속도입니다. 외부 제품에서 설정한 BAUDRATE와


동일하게 선택해야 합니다. 보통 9600bps ~ 115200bps를 사용합니다. 단, DownLoad
Enable을 체크하여 다운로드 모드를 사용할 경우 BAUDRATE는 115200을 사용해야
합니다.

⚪ DATA BIT는 데이터 패킷의 바이트를 구성하는 비트의 개수입니다. 통상 8을


사용합니다. (외부 제품에서 설정한 DATA BIT와 동일해야 합니다)

⚪ STOP BIT는 데이터 패킷 마지막에 스톱비트를 발생하는 개수입니다. 통상 One을


선택합니다. (외부 제품에서 설정한 STOP BIT와 동일해야 합니다)

⚪ PARITY는 데이터 패킷에 오류가 있는지 검출하는 제어방식입니다. 통상 None을


선택합니다. (외부 제품에서 설정한 PARITY와 동일해야 합니다)

⚪ MODE는 통신포트에서 사용하고자하는 프로토콜을 선택합니다. 각각의 통신 프로토콜은


아래와 같은 특징이 있습니다.

- Normal : PUT, GET 펑션블럭을 통하여 사용자가 프로토콜을 정의할 수 있습니다.

- Modbus RTU : 산업에서 사용하는 범용 프로토콜로서 Modbus RTU Master를 지원하는


제품과 통신할 경우 사용할 수 있습니다. 자사의 제품은 Modbus RTU Slave를 지원합니다.

- Cubloc Modbus RTU : 자사에서 판매중인 HMI와 통신할 경우 사용할 수 있습니다.

- CNET (XBC/LINK) : LS산전의 CNET Master 프로토콜을 지원하는 외부 제품과 통신할


경우 사용할 수 있습니다. 자사의 제품은 CNET Slave를 지원합니다.

⚪ SLAVE ADDRESS는 외부 제품에서 판단할 자사 제품의 번호입니다. 1:1 통신할 경우


통상 1번을 사용하며, 1:N 통신할 경우 SLAVE ADDRESS는 1, 2, 3... 으로 각각
다르게 생성해야 합니다.

- 25 -
MP STUDIO MANUAL

⚪ Download Enable을 체크하면 통신포트를 통하여 LADDER에서 작성한 프로그램을


다운로드를 할 수 있습니다.
Normal, Modbus RTU, Cubloc Modbus RTU, CNET(XBC/LINK) 모드와 동시에
사용이 가능합니다. 예를 들어 CNET(XBC/LINK)으로 외부 제품과 통신하다 MP
STUDIO에서 프로그램을 다운로드 할 수 있습니다. 이 기능으로 이지뷰 HMI 제품으로
CNET(XBC/LINK)로 통신하다가 MP STUDIO에서 다운로드를 실행할 경우 LADDER
프로그램이 이지뷰 HMI 제품을 통하여 다운로드하는 기능을 사용할 수 있습니다.

➂ 통신 포트2

⚪ 외부 제품과의 시리얼통신을 위한 통신입니다. 현재 자사의 모든 제품의 통신포트2는


RS-485 시리얼통신으로 사용되고 있습니다.

➂ 통신 포트3

⚪ 외부 제품과의 시리얼통신을 위한 통신입니다. 현재 자사의 모든 제품의 통신포트3은


UART 시리얼통신으로 사용되고 있습니다.

※ Caution
⚪ 다운로드 포트를 제외한 통신포트 설정은 프로그램 다운로드를 실행하면 해당 정보가
제품에 설정되어 사용됩니다. 그러므로 통신포트를 설정만 한다고 적용되는 것이 아니라
통신포트 설정과 다운로드를 모두 실행해야 합니다.

⚪ 통신포트1~3을 Download Mode로 사용할 경우 해당포트를 통하여 LADDER 프로그램


다운로드 및 모니터링이 가능하지만 FORCE I/O 및 FORCE DATA(메모리에 값 쓰기)
기능을 사용할 수 없습니다.

- 26 -
MP STUDIO MANUAL

4.4. ETHERNET 다운로드 및 모니터링

▢ Ethernet을 통하여 다운로드 및 모니터링이 가능합니다.

⚪ MPS/MPA 전제품을 통신포트1(RS-232), 통신포트2(RS-485), 통신포트3(UART)을


통하여 LADDER 프로그램을 다운로드할 수 있습니다. (단, 통신포트설정에서 Download
Mode를 체크해야 합니다)

⚪ Ethernet을 통하여 다운로드하고자할 경우 Ethernet Converter를 사용하여 LADDER


프로그램 다운로드 및 디버깅이 가능합니다.

⚪ 통신포트설정에서 다운로드 포트의 CHANNEL을 “ETHERNET”으로 설정하고 IP 및


PORT번호를 입력해야 합니다. IP 및 PORT번호는 사용하는 Ethernet Conveter의
설정값을 사용합니다.

⚪ MP STUDIO에서 Connect 단축아이콘을 클릭하여 설정한 IP:PORT에 접속 합니다.

⚪ IP:PORT에 접속하게 되면 위와 같이 단축아이콘이 변경됩니다. 접속한 이후에 프로그램


다운로드 및 모니터링 기능을 Ethernet을 통하여 사용할 수 있습니다.

- 27 -
MP STUDIO MANUAL

4.5. 심볼 설정

▢ 데이터 메모리의 심볼을 설정할 수 있습니다.

▢ 심볼을 설정하면, 래더 프로그램 창에서 P0, D0와 같은 주소(Address)를 입력하지


않고 심볼을 입력하여 프로그램할 수 있으며, 래더 프로그램 창에 Address 와
Symbol이 표시됩니다.

▢ 메모리LADDER 작성창에서 심볼을 등록/변경하고자하는 메모리를 선택하고 키보드


“SHIFT + ENTER”를 누르면 해당 메모리의 정보가 기입되어 있는 심볼 설정창이
생성됩니다. 심볼 설정창에서 해당 메모리의 심볼을 변경을 쉽게 할 수 있습니다.

① 추가하고자 하는 Address, Symbol, Comment(옵션)을 기입하고 키보드의 “ENTER"를


누릅니다. 이때, Address에 입력된 메모리의 종류에 따라 P,M,D,C,T 탭에 자동분류됩니다.

② 메모리의 종류별로 구분하여 볼 수 있도록 제공하는 탭입니다. “M 메모리“ 탭을


선택하면 M메모리의 심볼만이 하단에 표시됩니다.

③ 등록되어 있는 심볼이 표시되며 더블클릭하여 수정할 수 있고, 맨 하단의 빈칸에 새로운


Address, Symbol, Comment(옵션)을 기입하여 새로운 심볼을 추가할 수 있습니다.

▢ 심볼은 아래와 같은 특징이 있습니다.


⚬ 대/소문자를 구분하지 않습니다.
⚬ 띄어쓰기가 허용됩니다.
⚬ 첫글자는 “@”로 시작할 수 없습니다.
⚬ “<”, “>”, “=” 와 같은 부등호를 사용할 수 없습니다.

- 28 -
MP STUDIO MANUAL

4.6. 데이터 테이블

▢ MP STUDIO에서 실행 -> 데이터 테이블을 실행하면 나타나는 테이블 입니다.

▢ 데이터 테이블은 데이터 메모리를 테이블로 작성하여 모니터링할 수 있습니다.

▢ 자주 확인해야 할 데이터 메모리 또는 프로그램이 길이서 한 화면에 보이지 않는


데이터 메모리를 테이블 화면으로 모니터링 할 수 있습니다.

▢ ADDRESS에 데이터 메모리를 입력하고 "M" 단축 아이콘을 누르거나 Ctrl+M


단축키를 사용하여 데이터 메모리의 값을 확인할 수 있습니다.

▢ DEL키를 누르면, 선택하고 있는 줄이 삭제됩니다.

- 29 -
MP STUDIO MANUAL

4.7. 프로그램 메모리 용량

▢ MPS-8A4R, MPS-8A4RS, MPS-8A4R 제품은 126KB의 프로그램 메모리가 내장되어


있습니다.

▢ MPS-16A8R, MPS-8A8R, MPS-16A8R8T 제품은 256KB의 프로그램 메모리가 내장되어


있습니다.

▢ MPA 제품군은 256KB의 프로그램 메모리가 내장되어 있습니다.

▢ 작성가능한 최대 프로그램 메모리의 용량과 프로그램 작성 창에서 사용한 프로그램


메모리 용량을 확인할 수 있습니다.

- 30 -
MP STUDIO MANUAL

4.8. 문자열 검색

▢ MP STUDIO에서 검색 -> 문자열 검색을 실행하거나 Ctrl + F키를 눌러 문자열


검색을 할 수 있습니다.

▢ 검색할 문자열을 “찾을 내용”의 박스에 입력하여 “다음 찾기”를 실행하면 문자를
검색하여 검색된 위치로 화면이 이동됩니다.

▢ “대/소문자 구분” 항목을 체크하면 검색할 문자열의 대문자 소문자를 구분하여


검색하게 됩니다.

▢ “단어 단위로” 항목을 체크하지 않을 경우 “Motor”를 검색하면 래더


프로그램창에 “Motor2”일 경우도 검색을 하지만, 체크할 경우 래더 프로그램창에
“Motor”인 경우만 검색하고 “Motor2”의 경우는 검색하지 않게 됩니다.

▢ “찾을 내용”과 “바꿀 내용”에 각각 문자열을 입력하고 “바꾸기”를 실행하면 래더


프로그램에서 문자열을 검색하면서 실행할때마다 문자열 하나씩 변경합니다.
“모두 바꾸기”를 실행하면 래더 프로그램에서 검색된 모든 문자열을 변경합니다.

▢ “위로 검색” 옵션은 문자열을 검색할 때 아래에서 위로 검색하겠다는 것입니다.


체크를 하지 않을 경우, 위에서 아래로 검색하게 됩니다.

- 31 -
MP STUDIO MANUAL

4.9. 옵션

▢ MP STUDIO에서 설정 -> 옵션을 실행합니다.

▢ 그리드 가로 크기
⦁ 래더 프로그램 그리드의 가로 크기를 설정할 수 있습니다.

▢ 그리드 세로 크기
⦁ 래더 프로그램 그리드의 세로 크기를 설정할 수 있습니다.

▢ 그리드 가로 개수
⦁ 래더 프로그램 그리드의 가로 개수를 설정할 수 있습니다.

▢ 헤더 글꼴
⦁ 래더 프로그램의 가로 행값이 표시되는 숫자의 글꼴을 설정할 수 있습니다.

- 32 -
MP STUDIO MANUAL

▢ 그리드 글꼴
⦁ 래더 프로그램에서 사용되는 글꼴을 설정할 수 있습니다.

▢ 그리드 배경 색상
⦁ 래더 프로그램의 배경 색상을 설정할 수 있습니다.

▢ 그리드 테두리 색상
⦁ 래더 프로그램의 그리드의 테두리 색상을 설정할 수 있습니다.

▢ 다이어그램 색상
⦁ 래더 프로그램의 접점과 펑션의 색상을 설정할 수 있습니다.

▢ 텍스트 색상
⦁ 래더 프로그램에서 사용되는 글꼴 및 모니터링을 실행하여 나타나는 변수값의
색상을 설정할 수 있습니다.

▢ 모니터링 색상
⦁ 래더 프로그램에서 모니터을 실행하여 표시되는 변수값의 색상을 설정할 수
있습니다.

▢ 커서 색상
⦁ 래더 프로그램에서 사용되는 커서의 색상을 설정할 수 있습니다.

▢ 선택한 그리드 색상
⦁ 래더 프로그램에서 커서 이외에 선택한 그리드의 색상을 설정할 수 있습니다.

▢ 헤더 텍스트 색상
⦁ 래더 프로그램의 가로 행값이 표시되는 숫자의 색상을 설정할 수 있습니다.

▢ 입력텍스트박스 설정
⦁ 래더 프로그램에서 Enter키를 누르면 나타나는 입력텍스트박스의 배경색상 및
글씨색상을 설정할 수 있습니다.

▢ 툴박스 색상
⦁ 펑션 블럭이 표시되는 툴박스의 배경색상 및 글씨색상을 설정할 수 있습니다.

- 33 -
MP STUDIO MANUAL

4.10. 펌웨어 버젼확인 및 다운로드

▢ 펌웨어 버젼확인
⦁ 제품에 전원을 투입하고 다운로드 케이블을 PC와 연결합니다.
⦁ MP STUDIO를 실행합니다.
⦁ 매뉴얼의 프로그램 다운로드 항목을 참고해서 다운로드 포트설정을 확인합니다.
⦁ 메뉴의 실행에서 “펌웨어 버전”을 실행합니다.

▢ 펌웨어 다운로드
⦁ 펌웨어는 MP STUDIO 버전에 맞게 프로그램 다운로드 실행 시 MP STUDIO 버전에
맞는 펌웨어를 확인하여 펌웨어 업데이트가 필요할 경우 펌웨어 다운로드 실행을
수행할지 묻는 팝업창이 생성됩니다. 하기의 펌웨어 다운로드는 필요할 경우에만
수동으로 수행하셔야 합니다.
⦁ 제품에 전원을 투입하고 다운로드 케이블을 PC와 연결합니다.
⦁ MP STUDIO를 실행합니다.
⦁ 매뉴얼의 프로그램 다운로드 항목을 참고해서 다운로드 포트설정을 확인합니다.
⦁ 메뉴의 실행에서 “펌웨어 다운로드”를 실행합니다.
⦁ 팝업된 탐색기에서 새로운 펌웨어 파일을 선택하여 다운로드를 실행합니다.

⦁ 펌웨어 버젼확인 및 다운로드에 실패할 경우 프로그램 다운로드 항목을 참고해서


포트 확인 및 케이블 확인을 해보시기 바랍니다.

- 34 -
MP STUDIO MANUAL

4.11. 래더 접점 생성

커서를 접점을 생성할 위치로 마우스


또는 키보드로 옮깁니다.

F2키 또는 단축아이콘 N.O접점


을 클릭하면 N.O접점이 생성됩니
다.

ENTER키를 누르고 주소값 또는


심볼을 입력한뒤 ENTER 또는 TAB키를
누릅니다.
커서를 한칸 오른쪽으로 옮기고
F5키를 누르면 가로 연결 접점이
생성됩니다.

F9키를 누르면 코일 접점이 생성


됩니다.
Enter키를 누르고 주소값 또는
심볼을 입력하고 ENTER 또는 TAB키를
누릅니다.

- 35 -
MP STUDIO MANUAL

커서를 세로 연결 접점을 만들 곳으로


옮깁니다.

F6키를 눌러 세로 연결 접점을
만듭니다. 커서의 오른쪽 하단이 세로
연결 접점의 시작 부분입니다.

자기유지접점을 만들면,
시작버튼을 누르면 모터가 계속
동작하는 프로그램이 완성됩니다.

- 36 -
MP STUDIO MANUAL

4.12. 래더 펑션블럭 생성

▢ 펑션블럭을 삽입할 위치로 커서를 옮기고 펑션블럭 툴박스에서 생성할 펑션블럭을


더블클릭 합니다.

▢ 또는 펑션블럭을 삽입할 위치에서 키보드의 "[" 키를 누르면 입력박스가 생성됩니다.


입력박스에서 펑션블럭의 이름을 입력하고 OK버튼을 누르면 해당 펑션블럭이 생성됩니다.

- 37 -
MP STUDIO MANUAL

4.13. 래더 편집 기능

▢ 그리드 삭제
⦁ 삭제하고자 하는 그리드에 커서를 옮기고 Del키를 눌러 삽입한 접점을 삭제할 수
있습니다. 만약, 선택한 그리드에 세로연결접점이 있다면 처음 Del키를 누르면 가로 접점이
삭제되고 두 번째 Del키를 누르면 세로접점이 삭제됩니다.

▢ 선택한 그리드 삭제
⦁ 마우스를 클릭한 상태에서 마우스를 움직이면 한 개 이상의 그리드를 선택할 수
있습니다. 또는, Shift키를 누른 상태에서 방향키로 여러 개의 그리드를 선택할 수
있습니다. 여러 개의 그리드를 선택하고 Del키를 누르면 선택된 그리드의 점점이 모두
삭제됩니다.

⦁ 선택한 그리드의 외곽 그리드에 접점이 두개 이상 존재한다면, 그리드 삭제 항목처럼


세로 접점은 두번의 Del키를 누를때 삭제 됩니다.

- 38 -
MP STUDIO MANUAL

▢ 그리드 이동
⦁커서로 이동시키고 싶은 그리드를 커서로 선택하거나 여러 개의 그리드를 선택하고, Ctrl
+ 방향키를 누르면 선택한 그리드가 방향키의 방향으로 한칸 이동 됩니다. 이때, 움직여진
방향의 선택되지 않은 그리드는 삭제 됩니다.

[ 오른쪽으로 그리드 이동 ]

▢ 라인 삭제
⦁ 삭제하고자 하는 라인의 그리드를 커서로 선택하고, Ctrl + D키를 누르면 선택한 라인의
열이 삭제 됩니다.

▢ 라인 삽입
⦁ 라인을 삽입하고자 하는 라인의 그리드를 커서로 선택하고, Ctrl + L키를 누르면 선택한
라인에 새로운 라인이 삽입 됩니다.

- 39 -
MP STUDIO MANUAL

▢ 그리드 삽입
⦁ 커서 기준으로 오른쪽을 한 칸씩 이동시키는 기능입니다. 그리드를 삽입할 그리드를 선택하고,
Ctrl + Insert키를 누르면 선택한 그리드의 오른쪽 접점들이 한칸씩 오른쪽으로 이동하게 됩니다

▢ 그리드 삭제
⦁ 그리드 삽입의 반대되는 기능입니다. 그리드를 선택한 후 Ctrl + Delete키를 누르면 선택한
그리드가 삭제 되고 선택한 그리드 오른쪽 접점들이 한칸씩 왼쪽으로 이동하게 됩니다.

▢ 그리드 복사
⦁ 복사할 그리드를 선택하고 Ctrl + C키를 누르면 버퍼에 선택한 내용이 복사가 됩니다.

▢ 그리드 잘라내기
⦁ 잘라내기할 그리드를 선택하고 Ctrl + X키를 누르면 버퍼에 선택한 내용이 복사가 되고,
선택한 내용은 삭제됩니다.

▢ 그리드 붙여넣기
⦁ 그리드 복사 또는 그리드 잘라내기를 하여 버퍼에 저장한 내용을 붙여넣을 그리드를
선택한 후에 Ctrl + V키를 누르면 됩니다. 이때, 여러 개의 그리드가 선택되어 있을 경우
왼쪽 상단이 붙여넣기의 시작점이 됩니다.

▢ 그리드 부분 선택
⦁ 그리드를 부분적으로 선택하여 삭제/ 복사/ 붙여넣기/ 이동을 할 수 있습니다. Ctrl키를
누르고 부분적으로 선택할 그리드릴 마우스의 왼쪽키로 선택을 합니다. 모두 선택을
하였으면 누르고 있던 Ctrl키를 뗍니다.

- 40 -
MP STUDIO MANUAL

▢ 실행취소
⦁ 래더를 편집하다 전에 프로그램 했던 내용을 복구하고 싶을때 Ctrl + Z키를 누르면
이전에 프로그램한 내용을 하나씩 복구합니다. 2번 항목에서 실행취소를 하게 되면, 1번
항목으로 복구가 됩니다.

▢ 재실행
⦁ 실행취소를 실행하여 복구했던 프로그램을 실행취소 하기 이전의 프로그램으로
복구합니다. 위에서 실행취소 하여 복구된 1번 항목에서 재실행을 하게 되면, 2번 항목으로
다시 복구됩니다.

▢ 코멘트
⦁ 변수값을 입력해야 하는 접점을 제외한 그리드에 Enter키를 입력 후 코멘트 앞부분에
“//”를 붙여 코멘트를 작성할 수 있습니다. Ex) //두번째 모터

- 41 -
MP STUDIO MANUAL

4.14. 모니터링

▢ 모니터링 단축아이콘 또는 Ctrl+M 키를 사용하여 모니터링 시스템을 사용할 수 있습니다.


모니터링을 이용하여 MPS, MPA 제품의 메모리 정보를 실시간으로 확인할 수 있습니다.

<그림 4-12-1 모니터링 >

▢ 빈 그리드에 메모리 주소를 입력하여 데이터 값을 확인할 수 있습니다.

<그림 4-12-2 빈공간에 모니터링 사용 >

- 42 -
MP STUDIO MANUAL

4.15. 강제 I/O

▢ MP STUDIO의 실행 -> 강제 I/O 메뉴에서 강제로 INPUT 및 OUTPUT을 제어할 수 있습니다.

▢ 디지털입력 접점을 PLC의 디지털입력포트에 전기적인 신호와 상관없이 ON/OFF 시킬 수


있습니다.

▢ 디지털출력 접점을 프로그램과 상관없이 ON/OFF 시킬 수 있습니다.

▢ 통신포트설정에서 다운로드 포트가 제어하고자 하는 PLC와 연결된 COM포트로 설정되어 있어야


합니다.

▢ 강제 I/O 설정은 PLC의 전원이 꺼졌다 켜져도 계속 유지됩니다.

4.15.1. FORCE

▢ 설정한 강제 I/O의 정보를 PLC로 전송합니다.

▢ 위 그림은 디지털입력:P0를 PLC의 디지털입력 포트의 입력과 상관없이 무조건 ON시키도록


체크하였으며, FORCE 버튼을 누르면 PLC에 적용됩니다.

▢ 반대로 OFF에 체크를 하고 FORCE 버튼을 누르면 P0는 무조건 OFF가 됩니다.

- 43 -
MP STUDIO MANUAL

▢ 위 그림은 디지털출력:P32를 LADDER LOGIC의 프로그램과 상관없이 무조건 ON 시키도록


체크하였으며, FORCE 버튼을 누르면 PLC에 적용됩니다.

4.15.2. LOAD

▢ PLC에 설정되어 있는 강제I/O 정보를 읽어와서 P0~P63 각각의 체크박스에 표시합니다.

4.15.3. CLEAR

▢ 현재 체크되어 있는 강제I/O 체크박스를 모두 해제시킵니다.

- 44 -
MP STUDIO MANUAL

4.16. FORCE DATA (메모리에 값 쓰기)

▢ 모니터링 상태에서 PLC의 메모리에 특정 값을 입력할 수 있습니다.

⚬ 모니터링 상태에서 변경하고자 하는 메모리를 선택하고 키보드 ALT + ENTER 입력 또는 마우스


우클릭하여 “메모리에 값 쓰기”를 선택합니다.

<그림 4-14-1 메모리에 값 쓰기 (모니터링 상태에서 마우스 우클릭) >

⚬ 변경하고자 하는 특정 값을 입력합니다.

<그림 4-14-2 메모리에 값 쓰기 (변경할 값 입력) >

⚬ 20을 입력하면 D0의 값이 20이 됩니다.

<그림 4-14-3 메모리에 값 쓰기 (입력한 값으로 변경된 D0 메모리) >

- 45 -
MP STUDIO MANUAL

4.17. EEPROM 초기화

▢ MP STUDIO의 실행 -> EEPROM 초기화 메뉴에서 EEPROM를 초기화 할 수 있습니다.


⚬ 비휘발성 메모리인 EEPROM(4k Byte)를 0으로 초기화 시킵니다.

⚬ 통신포트설정에서 다운로드 포트가 초기화 하고자자 하는 PLC와 연결된 COM포트로 설정되어


있어야 합니다.

⚬ EEPROM을 초기화 하는데 최대 약 35초가 걸리며, 그동안 오동작 방지를 위해 MP STUDIO는


다른 동작을 못합니다.

⚬ PLC의 EEPROM은 초기값이 0이 아닌 난수입니다. EEPROM을 사용하고자 할 경우, EEPROM


초기화를 실행하여 개발한 제품의 초기값을 0으로 만들 수 있습니다.

4.18. EEPROM 사용법 (제품의 초기설정값 적용법)

▢ EEPROM의 초기값을 0으로 만들지 않고 데이터 메모리 하나를 기준으로 그 값이 유저가 선택한
특정값(Ex. 100)이 아니면 초기값을 D메모리에 저장시키고 100이면 저장하지 않도록 하여
프로그램 다운로드할 때 한번만 EEPROM에 초기값을 집어 넣도록 하는 방법을 사용할 수 있습니다.

▢ MP STUDIO -> 설정 -> 데이터메모리에서 정전유지 D영역의 사용을 체크하고 범위를 0~2로 설정합니다.

⚬ LADDER LOGIC을 아래와 같이 D0가 100이 아닐 때 초기값을 D1에는 1, D2에는 2로 만들고


다시 D0를 100으로 만듭니다.

⚬ 위와 같이 할 경우, 처음에는 D0가 100이 아니여서 D1과 D2는 각각 1과 2가 되고 D0는


100이 됩니다. 이후, 전원이 재투입되어서 프로그램이 동작하게 되면 D0는 EEPROM에 의해
100이 읽혀지므로 D1과 D2의 초기값은 1과 2가 아니게 됩니다. D1과 D2의 값은 터치디스플레이
등에서 별도로 설정한 값이 읽히게 됩니다.

- 46 -
MP STUDIO MANUAL

5. 펑션 블럭

▢ 펑션블럭 실행 조건과 결과

<그림5-3 펑션블럭>

⚬ 비트연산 이외에 다양한 연산 및 기능을 펑션블럭을 통하여 사용할 수 있습니다.

⚬ 펑션블럭은 펑션블럭의 왼쪽의 접점상태가 ON이 될 때 실행되며, OFF일때는 실행하지


않습니다. 또한, 펑션블럭 실행결과를 펑션블럭의 오른쪽으로 ON또는 OFF로 출력됩니다.

⚬ 대부분의 펑션블럭은 실행조건의 접점상태가 실행결과의 접점상태로 출력되지만, 비교펑션,


타이머, 카운터 등은 실행결과가 실행출력됩니다. 또한, 실행중 오류가 발생할 경우, OFF로
실행출력합니다. 예를들어, 펄스출력 펑션블럭 (PWM)의 채널입력 매개변수에 D0(워드 메모리)를
입력해놓았는데, D0가 100일 경우 PWM 출력포트 범위(MPS-8A8R일 경우 0~6)를 넘었으므로
실행출력은 OFF로 출력됩니다.

⚬ 펑션블럭의 기능은 각각의 펑션블럭 설명 페이지에서 상세히 확인하실 수 있습니다.

⚬ 단축키는 “ [ ”입니다. P키 우측에 위치하는 키입니다.

⚬ 단축키를 입력하면 생성되는 입력박스에서 펑션블럭 이름만을 입력하거나 펑션블럭과


파라미터 모두를 입력하면 펑션블럭이 생성됩니다.

▢ 펑션블럭 이름과 매개변수 모두 입력했을 경우

<그림5-4 가로형 펑션블럭 입력박스> <그림5-5 가로형 펑션블럭>

⚬ 각각의 파라미터는 해당 파라미터 위에서 "ENTER"키를 눌러 파라미터값을 변경할 수


있습니다.

- 47 -
MP STUDIO MANUAL

▢ 펑션블럭 이름만 입력했을 경우

<그림5-6 가로형 펑션블럭 입력박스> <그림5-7 가로형 펑션블럭>

⚬ 각각의 파라미터는 해당 파라미터 위에서 "ENTER"키를 눌러 파리미터값을 입력해야 합니다.

- 48 -
MP STUDIO MANUAL

카테고리 펑션블럭명 펑션블럭 이미지 설 명


IN1과 IN2의 값이 같으면
=
실행출력이 ON
IN1과 IN2의 값이 같으면
<>
실행출력이 ON
IN1과 IN2의 값이 같으면
비교 >
실행출력이 ON
펑션블럭
IN1과 IN2의 값이 같으면
Compare <
실행출력이 ON
IN1과 IN2의 값이 같으면
>=
실행출력이 ON
IN1과 IN2의 값이 같으면
<=
실행출력이 ON

IN 값을 HEX에서 DEC로
H2D
변환하여 OUT에 저장
IN 값을 DEC에서 HEX로
변환 D2H
변환하여 OUT에 저장
펑션블럭
IN 값을 1의 보수를 취하여
Conversion INV
OUT에 저장
IN 값을 2의 보수를 취하여
NEG
OUT에 저장

IN1과 IN2의 합을 OUT에 저


ADD

IN1과 IN2의 차를 OUT에 저
SUB

IN1과 IN2의 곱을 OUT에 저
MUL

수학 IN1과 IN2를 나누어 몫을 OU
펑션블럭 DIV T에 저장, 나머지를 REM에 저
MATH 장
INC IN을 1 증가시킴
DEC IN을 1 감소시킴
IN_MIN~IN_MAX의 범위에서 I
N값을 OUT_MIN ~ OUT_MAX
SCALE
의 범위로 변경하여 OUT에 저

- 49 -
MP STUDIO MANUAL

실행조건이 ON 될 때마다 CO
UNT를 1씩 증가시켜 SET VAL
CTU
UE값 이상이 되면 실행출력
및 보조접점이 ON 된다.
실행조건이 ON될 때마다 CO
UNT를 1씩 감소시켜 0이 되
CTD
면 실행출력 및 보조접점이 O
N 된다
COUNT값이 CU접점이 ON될
카운터 때 1 증가, CD접점이 ON될
펑션블럭 CTUD 때 1 감소되며 SET VALUE 값
Counter 이상되면 실행출력 및 보조접
점이 ON된다
고속카운터 입력 채널의 카운
HCNT
트 값을 OUT에 저장한다
고속카운터 입력 채널의 카운
HRST
트 값을 0으로 초기화 한다
엔코더 CHANNEL의 값을 OUT
ENCO
에 저장
엔코더 CHANNEL의 값을 IN
ENMOV
값으로 설정

실행조건이 ON되었을 때,
타이머가 동작하여 SET VALU
TON
E 시간 후에 실행출력 및 보조
접점을 ON시킨다
실행조건이 OFF되었을 때,
타이머가 동작하여 SET VALU
TOFF
E 시간 후에 실행출력 및 보조
접점을 OFF시킨다
타이머
실행조건이 ON되었을 때,
Timer
타이머가 동작하여 SET VALU
TPL E 시간후 또는 실행조건이 OF
F되었을 때 실행출력 및 보조
점점을 OFF시킨다.
실행조건이 ON되었을 때,
타이머가 동작하여 SET VALU
TMON
E 시간후에 실행출력 및 보조
점점을 OFF시킨다.

- 50 -
MP STUDIO MANUAL

실행조건이 ON되면 LABEL 명


JMP
로직 컨트롤 으로 점프한다
Logic 실행조건이 OFF되면 LABEL 명
JMPN
Control 으로 점프한다
LABEL LABEL명 위치를 정의한다

IN부터 N개의 데이터에서 최


MAX
대값을 OUT에 저장
IN부터 N개의 데이터에서 최
데이터 MIN
소값을 OUT에 저장
컨트롤 IN부터 N개의 데이터의 합을
SUM
Data OUT에 저장
Control IN부터 N개의 데이터의 평균
AVE
값을 OUT에 저장
IN부터 N번째의 데이터의 값
MUX
을 OUT에 저장

실행조건이 ON되었을 때에만


프로그램
NUM이 일치하는 MCSCLR 펑
컨트롤 MCS
션블럭까지 COIL 출력제어권
Program
을 ON/OFF 시킨다
Control
MCSCLR MCS와 한쌍으로 사용한다

IN1과 IN2를 AND하여 OUT에


WAND
저장
워드로직 IN1과 IN2를 OR하여 OUT에
WOR
Word Logic 저장
IN1과 IN2를 XOR하여 OUT에
WXOR
저장

- 51 -
MP STUDIO MANUAL

CHANNEL포트로 입력된 전기
ADC 적인 신호를 MIN~MAX의 범
위로 SCALE하여 OUT에 저장
4~20mA, 1~5V측정용 ADC펑
ADC2

MIN~MAX 범위에서 OUT을
0~65535 범위로 SCALE하여 C
DAC
HANNEL포트로 전기적인 신호
로 출력
CHANNEL포트에 연결된 NTC
(서미스터) 온도센서의 저항값
아날로그 NTEMP
을 읽어 OUT에 저장
Analog
(253의 값은 25.3을 의미한다)
PORT(PWM출력포트)에 WIDT
PWM H 폭중 DUTY폭만큰 HIGH가
되는 PULSE를 발생시킨다
PORT(PWM출력포트)에 FEQ
FPWM
주파수의 PULSE를 발생시킨다
PORT(PWM출력포트)에 FREQ
NPWM 주파수로 N개의 펄스를 발생
시킨다
PORT(PWM출력포트)의 PULSE
POFF
출력을 정지시킨다

MOV IN을 OUT으로 복사한다


IN부터 N개의 데이터를 OUT
이동 GMOV
으로부터 N개로 복사
MOVE
IN을 OUT으로부터 N개에 복
FMOV

IN을 N번 왼쪽으로 비트를 쉬


SHL
쉬프트&회전 프트 한다
Shift&Rotate IN을 N번 오른쪽으로 비트를
SHR
쉬프트 한다

- 52 -
MP STUDIO MANUAL

CHANNEL 통신포트로 DATA


PUT 를 LENGTH 바이트 수만큼 전
송한다
CHANNEL 통신포트로부터 수
GET 신받은 데이터를 LENGTH 바
시리얼포트 이트 수만큼 OUT에 저장한다
Serialport CHANNEL 통신포트의 송신버
PUTLEN 퍼에 기록되어 있는 바이트의
수를 OUT에 저장한다
CHANNEL 통신포트의 수신버
GETLEN 퍼에 기록되어 있는 방이트의
수를 OUT에 저장한다

I2C를 시작하기 위한 펑션으로



ADDRESS 디바이스와 연결을
ISTA
시작한다. 이때, READ가 ON이
면 수신모드로 OFF이면 송신
모드로 시작된다
I2C ISTP I2C 통신을 정지한다
IWR DATA(바이트)를 전송한다
수신한 DATA(바이트)를 OUT
IRD 에 저장하고 ACK가 ON이면
ACK신호를 전송한다
I2C 통신의 상태값을 OUT에
ISR
저장한다

원격감시 및 제어를 위한 IOT


IOT IOT_STA 솔루션을 시작한다
(추후 서비스 예정)

DS3231 모듈에 시간을 설장한


DS3231_WR

DS3231(RTC)
DS3231 모듈에서 시간을 읽어
DS3231_RD
온다

- 53 -
MP STUDIO MANUAL

CLCD를 ADR주소로 설정한다


CINI
(TYPE은 0을 기입한다)
ADR 주소의 CLCD의 커서를
CLOC
X, Y좌표로 이동시킨다
ADR 주소의 CLCD에 STRING
CSTR
을 표시한다
ADR 주소의 CLCD에 IN값을
DIGIT 자릿수로 ZERO에 따라
CINT 숫자의 앞부분에 0을 함께 SIG
N에 따라 숫자의 부호를 함께
표시한다
ADR 주소의 CLCD에 IN값을
케릭터LCD HEX로 DIGIT 자리수로 ZERO
CHEX
에 따라 숫자의 앞부분에 0를
Character 함께 표시한다
ADR 주소의 CLCD의 화면을
LCD CCLS
클리어한다
(CLCD)
ADR 주소의 CLCD의 커서를
CCON
표시한다
ADR 주소의 CLCD의 커서를
CCOF
표시하지 않는다
ADR 주소의 CLCD의 백라이트
CLON
를 ON 시킨다
ADR 주소의 CLCD의 백라이트
CLOF
를 OFF 시킨다
ADR 주소의 CLCD의 ID 메모
CPUT
리에 DEFINE을 기록시킨다
ADR 주소의 CLCD의 ID 메모
CGET 리의 DEFINE값을 읽어와서 표
시한다

FND 7세그먼트를 CLK(Clock),


FINI
DIO(Data) 핀으로 설정한다
IN값을 POSITION에 LENGTH
길이만큼 ZERO에 따라 숫자의
FND 앞부분에 0를 함께 SIGN에 따
FINT
7세그먼트 라 숫자의 부호를 함께 표시하
고 DOT 위치에 소수점을 표시
한다
POSITION에 DATA를 표시한
FDATA

- 54 -
MP STUDIO MANUAL

5.1. 비교 펑션블럭

⚬ 비교 펑션블럭은 입력 파라미터 IN1과 IN2를 비교하여 결과를 ENO에 ON/OFF로


출력합니다.
___________________________________________________________________________________

⚬ 비교접점(비트접점)과 같은기능입니다.
펑션블럭 설 명
= IN1값과 IN2값이 같을 때, ENO가 ON됩니다.
<> IN1값과 IN2값이 다를 때, ENO가 ON됩니다.
> IN1값이 IN2값보다 클 때, ENO가 ON됩니다.
< IN1값이 IN2값보다 작을 때, ENO가 ON됩니다.
>= IN1값이 IN2값보다 크거나 같을 때, ENO가 ON됩니다.
<= IN1값이 IN2값보다 작거나 같을 때, ENO가 ON됩니다.

⚬ 비교 결과가 TRUE 이면, 실행출력이 ON이 되고 FALES이면 실행출력은 OFF가 됩니다.

▢ Example
⚬ IN1:D0(워드 메모리)값이 IN2:100과 같을 경우, P32 출력코일이 ON 되는 예제입니다.
비교 결과가 다를 경우, P32 코일은 OFF됩니다.
⚬ 펑션블럭은 “ [ "키를 이용하여 생성할 수 있습니다.

<그림5-1-1 = 펑션블럭>

⚬ 모니터링을 하면 아래와 같이 결과값을 보실 수 있습니다.

<그림5-1-2 = 펑션블럭 모니터링>

- 55 -
MP STUDIO MANUAL

5.2. 변환 펑션블럭

⚫ 메모리의 값을 변환하는 펑션블럭입니다.


___________________________________________________________________________________

⚫ 변환 펑션블럭의 종류
펑션블럭 설 명

H2D Hexadecimal값을 Decimal값으로 변환합니다.

D2H Decimal값을 Hexadecimal값으로 변환합니다.

INV 1의 보수값으로 변환합니다.

NEG 2의 보수값으로 변환합니다.

- 56 -
MP STUDIO MANUAL

5.2.1. H2D (Hexadecimal To Decimal)

⚫ Hexadecimal값을 Decimal값으로 변환합니다.


___________________________________________________________________________________

< IN >
⚫ 워드 및 더블워드를 입력합니다.

< OUT >


⚫ 워드 및 더블워드 메모리를 입력합니다.

▢ Example
⚫ IN:16#1234 16진수를 10진수 1234로 변환하여 OUT:D0에 저장하고, 코일:P23을
ON시킵니다.

<그림5-5-1 H2D 실행 모니터링>

- 57 -
MP STUDIO MANUAL

5.2.2. D2H (Decimal To (Hexadecimal )

⚫ Decimal값을 Hexadecimal값으로 변환합니다.


___________________________________________________________________________________

< IN >
⚫ 워드 및 더블워드를 입력합니다.

< OUT >


⚫ 워드 및 더블워드 메모리를 입력합니다.

▢ Example
⚫ IN:1234 10진수를 16진수 16#1234로 변환하여 OUT:D1에 저장하고, 코일:P23을
ON시킵니다.

<그림5-5-2 D2H 실행 모니터링>

- 58 -
MP STUDIO MANUAL

5.2.3. INV (반전 명령어)

⚫ IN 파라미터의 모든 비트를 반전하여 OUT에 저장합니다.


___________________________________________________________________________________

< IN >
⚫ 워드 및 더블워드를 입력합니다.

< OUT >


⚫ 워드 및 더블워드 메모리를 입력합니다.

▢ Example
⚫ IN:16#1234 16진수를 반전하여 16#EBCD로 변환하여 OUT:D0에 저장하고, 코일:P23을
ON시킵니다.

<그림5-5-3 INV 실행 모니터링>

- 59 -
MP STUDIO MANUAL

5.2.4. NEG (부호 반전 변환)

⚫ IN 파라미터의 모든 비트를 반전하고 1을 더하여 OUT에 저장합니다.


⚫ IN 파라미터의 값의 부호를 반전하여 OUT에 저장합니다.
___________________________________________________________________________________

< IN >
⚫ 워드 및 더블워드를 입력합니다.

< OUT >


⚫ 워드 및 더블워드 메모리를 입력합니다.

▢ Example
⚫ IN:1234의 부호를 반전시켜 D0에 저장합니다.

<그림5-5-4 NEG 실행 모니터링>

- 60 -
MP STUDIO MANUAL

5.3. 수학 펑션블럭

⚬ 수학 펑션블럭의 종류
펑션블럭 설 명
ADD IN1값과 IN2값을 덧셈하여 OUT으로 출력합니다.
SUB IN1값과 IN2값을 뺄셈하여 OUT으로 출력합니다.
MUL IN1값과 IN2값을 곱셈하여 OUT으로 출력합니다.
DIV IN1값과 IN2값을 나눗셈하여 OUT으로 출력합니다.
INC IN 값을 1 증가시킵니다.
DEC IN 값을 1 감소시킵니다.
IN_MIN~IN_MAX 범위에서 IN값을 OUT_MIN~OUT_MAX 범위로 변경
SCALE
하여 OUT으로 출력합니다.

- 61 -
MP STUDIO MANUAL

5.3.1. ADD

⚫ IN1과 IN2를 덧셈한 결과값을 OUT에 저장합니다.


___________________________________________________________________________________

▢ Example
⚫ 입력접점:P0가 ON되면, IN1:D0와 IN2:100을 덧셈하여 OUT:D1에 저장하고 P32 코일이
ON됩니다.

⚫ 펑션블럭은 키보드의 “ [ "키를 누른 후 ADD를 입력하여 생성할 수 있습니다.

<그림5-2-1 ADD 펑션블럭>

⚫ 모니터링을 하면 아래와 같이 결과값을 보실 수 있습니다.

<그림5-2-2 ADD 펑션블럭 모니터링>

⚫ 파라미터는 Signed 형식으로 양수와 음수 계산이 가능합니다.

⚫ IN1과 IN2의 파라미터의 메모리 타입은 OUT 파라미터에 의해 자동계산됩니다.


OUT 파라미터가 더블워드일 경우, IN1파라미터가 워드여도 자동으로 워드를 더블워드로
치환해서 계산하게 됩니다.

▢ Caution
⚫ IN1과 IN2의 메모리 타입은 OUT 메모리 타입보다 작으면 안됩니다.
OUT 메모리 타입이 워드일 경우, IN1과 IN2의 메모리 타입은 워드와 더블워드를 사용할 수
있습니다. OUT 메모리 타입보다 작은 바이트를 사용할 경우 음수 계산에서 오차가
발생합니다.

- 62 -
MP STUDIO MANUAL

5.3.2. SUB

⚫ IN1과 IN2를 뺄셈한 결과값을 OUT에 저장합니다.


___________________________________________________________________________________

▢ Example
⚫ 입력접점:P0가 ON되면, IN1:100과 IN2:30을 뺄셈하여 OUT:D0에 저장하고 P32 코일이
ON됩니다.

⚫ 펑션블럭은 키보드의 “ [ "키를 누른 후 SUB를 입력하여 생성할 수 있습니다.

<그림5-2-3 SUB 펑션블럭>

<그림5-2-4 SUB 펑션블럭 모니터링>

⚫ 파라미터는 Signed 형식으로 양수와 음수 계산이 가능합니다.

⚫ IN1과 IN2의 파라미터의 메모리 타입은 OUT 파라미터에 의해 자동계산됩니다.


OUT 파라미터가 더블워드일 경우, IN1파라미터가 워드여도 자동으로 워드를 더블워드로
치환해서 계산하게 됩니다.

▢ Caution
⚫ IN1과 IN2의 메모리 타입은 OUT 메모리 타입보다 작으면 안됩니다.
OUT 메모리 타입이 워드일 경우, IN1과 IN2의 메모리 타입은 워드와 더블워드를 사용할 수
있습니다. OUT 메모리 타입보다 작은 바이트를 사용할 경우 음수 계산에서 오차가
발생합니다.

- 63 -
MP STUDIO MANUAL

5.3.3. MUL

⚫ IN1과 IN2를 곱셈한 결과값을 OUT에 저장합니다.


___________________________________________________________________________________

▢ Example
⚫ 입력접점:P0가 ON되면, IN1:10과 IN2:20을 곱셈하여 OUT:D0에 출력되고 P32 코일이
ON됩니다.

⚫ 펑션블럭은 키보드의 “ [ "키를 누른 후 MUL을 입력하여 생성할 수 있습니다.

<그림5-2-5 MUL 펑션블럭>

<그림5-2-6 MUL 펑션블럭 모니터링>

⚫ 파라미터는 Signed 형식으로 양수와 음수 계산이 가능합니다.

⚫ IN1과 IN2의 파라미터의 메모리 타입은 OUT 파라미터에 의해 자동계산됩니다.


OUT 파라미터가 더블워드일 경우, IN1파라미터가 워드여도 자동으로 워드를 더블워드로
치환해서 계산하게 됩니다.

▢ Caution
⚫ IN1과 IN2의 메모리 타입은 OUT 메모리 타입보다 작으면 안됩니다.
OUT 메모리 타입이 워드일 경우, IN1과 IN2의 메모리 타입은 워드와 더블워드를 사용할 수
있습니다. OUT 메모리 타입보다 작은 바이트를 사용할 경우 음수 계산에서 오차가
발생합니다.

- 64 -
MP STUDIO MANUAL

5.3.4. DIV

⚫ IN1과 IN2를 나눗셈한 몫을 OUT에 저장하고, 나머지를 REM에 저장합니다.


___________________________________________________________________________________

▢ Example
⚫ 입력접점:P0가 ON되면, IN1:203와 IN2:2를 나눗셈하여 몫을 OUT에 저장하고 나머지를
REM에 저장합니다. 그리고, P32코일이 ON됩니다.

⚫ 펑션블럭은 키보드의 “ [ "키를 누른 후 DIV를 입력하여 생성할 수 있습니다.

<그림5-2-7 DIV 펑션블럭>

<그림5-2-8 DIV 펑션블럭 모니터링>

⚫ 파라미터는 Signed 형식으로 양수와 음수 계산이 가능합니다.

⚫ IN1과 IN2의 파라미터의 메모리 타입은 OUT 파라미터에 의해 자동계산됩니다.


OUT 파라미터가 더블워드일 경우, IN1파라미터가 워드여도 자동으로 워드를 더블워드로
치환해서 계산하게 됩니다.

▢ Caution
⚫ IN1과 IN2의 메모리 타입은 OUT 메모리 타입보다 작으면 안됩니다.
OUT 메모리 타입이 워드일 경우, IN1과 IN2의 메모리 타입은 워드와 더블워드를 사용할 수
있습니다. OUT 메모리 타입보다 작은 바이트를 사용할 경우 음수 계산에서 오차가
발생합니다.

- 65 -
MP STUDIO MANUAL

5.3.5. INC

⚫ IN 값을 1 증가시킵니다.
___________________________________________________________________________________

▢ Example
⚫ 입력접점:P0가 ON되면, IN:D0를 1증가시킵니다.그리고, P32 코일이 ON 됩니다.

⚫ Positive Edge접점이 없으면 INC_I 펑션블럭은 1초에 약 1000번 실행이 되어 D0는 1이


아닌 1000이 됩니다. 때문에, P0가 ON이 될 때 단 한번 INC_I 펑션블럭이 실행되도록
Positive Edge접점을 INC_I 펑션블럭 앞에 추가하였습니다.

⚫ 펑션블럭은 키보드의 “ [ "키를 누른 후 INC_I를 입력하여 생성할 수 있습니다.

<그림5-2-9 INC_I 펑션블럭 모니터링>

- 66 -
MP STUDIO MANUAL

5.3.6. DEC_I

⚫ IN 값을 1 감소시킵니다.
___________________________________________________________________________________

▢ Example

⚫ 입력접점:P0가 ON되면, IN:D0를 1감소시킵니다.그리고, P32 코일이 ON 됩니다.

⚫ Positive Edge접점이 없으면 DEC_I 펑션블럭은 1초에 약 1000번 실행이 되어 D0는 -1이
아닌 -1000이 됩니다. 때문에, P0가 ON이 될 때 단 한번 DEC_I 펑션블럭이 실행되도록
Positive Edge접점을 DEC_I 펑션블럭 앞에 추가하였습니다.

⚫ 펑션블럭은 키보드의 “ [ "키를 누른 후 DEC_I를 입력하여 생성할 수 있습니다.

<그림5-2-10 DEC_I 펑션블럭 모니터링>

- 67 -
MP STUDIO MANUAL

5.3.7. SCALE

⚫ IN_MIN~IN_MAX의 범위에서 IN값을 OUT_MIN ~ OUT_MAX의 범위로 변경하여


OUT에 저장합니다.
___________________________________________________________________________________

< IN > - Signed-


⚫ 스케일 변환할 값을 상수 또는 메모리 입력합니다.

< IN_MAX > -Signed-


⚫ 스케일 변환할 값의 최대값을 상수 또는 메모리 입력합니다.

< IN_MIN > -Signed-


⚫ 스케일 변환할 값의 최소값을 상수 또는 메모리 입력합니다.

< OUT > -Signed-


⚫ 스케일 변환한 값이 저장될 메모리를 입력합니다.

< OUT_MAX > -Signed-


⚫ 스케일 변환한 값의 최대값을 상수 또는 메모리 입력합니다.

< OUT_MIN > -Signed-


⚫ 스케일 변환한 값의 최소값을 상수 또는 메모리 입력합니다.

▢ Example

⚫ 0 ~ 100의 범위에서 50의 값을 0 ~ 1000의 범위로 SCALE 변환한 값인 500을 D0


워드 메로리에 저장합니다.

<그림5-3-7 SCALE 펑션블럭 모니터링>

- 68 -
MP STUDIO MANUAL

5.4. 카운터 펑션블럭

⚫ 업카운터(CTU), 다운카운터(CTD), 업다운카운터(CTUD)는 소프트웨어적으로 카운트 하는


펑션블럭입니다.

⚫ 고속카운터(HCNT)는 하드웨어적으로 카운트 하는 펑션블럭입니다. 10ms 이내의 고속으로


들어오는 입력신호를 카운트하기 위해서는 고속카운터를 사용해야 합니다.
고속카운터는 모든 제품에서 지원하는 기능이 아닙니다. 고속카운터를 지원하는 제품에서
사용할 수 있으며, 고속카운터는 고속카운터 포트에 입력되는 신호의 상승신호를 카운트하여
MCU에 저장하고 있으며 이를 HCNT 펑션블럭으로 읽어와 사용하는 펑션블럭입니다.

⚫ 엔코더(ENCO)는 엔코더에서 들어오는 신호 A와 B를 사용하여 엔코더 값을 연산합니다.


A펄스가 빠르게 들어올 경우 값이 증가하며 B펄스가 빠르게 들어올 경우 값은 감소합니다.
현재 ENCO 펑션블럭은 MPA에서만 사용가능하며 P0포트를 A, P1포트를 B로 사용합니다.
___________________________________________________________________________________

⚬ 카운터 펑션블럭의 종류
펑션블럭 설 명

CU 파라미터의 입력상태가 ON될 때, COUNT값이 1씩 가산됩니다.


CTU
COUNT값이 SET VALUE 이상이 되면, 출력접점이 ON됩니다.

CD 파라미터의 입력상태가 ON될 때, COUNT값이 1씩 감산됩니다.


CTD
COUNT값이 0이 되면, 출력접점이 ON됩니다.

CU 파라미터의 입력상태가 ON될 때, COUNT값이 1씩 가산됩니다.


CTUD CD 파라미터의 입력상태가 ON될 때, COUNT값이 1씩 감산됩니다.
COUNT값이 SET VALUE 이상이 되면, 출력접점이 ON됩니다.
고속카운터 레지스터리에 저장되어 있는 카운트값을 읽어와서 OUT 파라미터에
HCNT
저장합니다.

HRST 고속카운터 레지스터리의 값을 0으로 초기화 합니다.

ENCO 엔코더의 값을 읽어옵니다.

ENMOV 엔코더에 값을 설정합니다.

- 69 -
MP STUDIO MANUAL

5.4.1. CTU

⚫ 실행조건이 ON될때마다, COUNT값이 1씩 가산됩니다. COUNT값이 SET VALUE값 이상이


되면, COUNT 보조비트 메모리가 ON되고, 실행조건이 ON일 때에만 실행출력이 ON됩니다.
___________________________________________________________________________________

< COUNT > - unsigned -


⚫ 카운트 워드 메모리(C0, C1..) 또는 바이트(BC0, BC1,,), 더블워드(DC0..)을 입력합니다.
⚫ 실행조건이 ON될때마다 1씩 가산됩니다.

< SET VALUE > - unsigned -


⚫ 워드 또는 더블워드 메모리를 입력합니다. 업카운터의 목표값을 입력합니다.

< RESET >


⚫ 비트 메모리를 입력합니다.
⚫ RESET 비트가 ON되면, COUNT값이 0으로 초기화 되고, 보조비트 메모리를 OFF시킵니다.

< 보조비트 메모리 >


⚫ COUNT에 입력한 카운트 메모리와 같은 이름으로 보조비트 메모리를 사용합니다.
⚫ Normal Open 접점 또는 Normal Close 점점에 C0, C1.. 으로 사용하실 수 있습니다.
⚫ COUNT값이 SET VALUE값 이상일때, 보조비트 메모리가 ON됩니다.
⚫ RESET 비트가 ON되면, 보조비트 메모리가 OFF됩니다.

▢ Example
⚫ 입력스위치:P0가 ON되면, COUNT:C0가 1씩 가산됩니다. 입력스위치:P0가 10회 ON 되는
시점에서 COUNT:C0의 카운트값이 10이 됩니다. 이때, COUNT:C0값이 SET VALUE값 의
이상이 되어, 조건이 성립됩니다. 조건이 성립되고 있을 때, 보조비트 메모리:C0가 ON되어,
출럭코일2:P33이 ON됩니다. 또한, 조건입 성립되고 있을 때, CTU 펑션블럭의 실행조건이
ON일때, 실행출력이 ON되어 출력코일1:P32가 ON됩니다.

<그림5-3-2 CTU 펑션블럭 조건 미성립 모니터링>

- 70 -
MP STUDIO MANUAL

⚫ 위 모니터링은 입력스위치:P0가 한 번 ON되었을 때 카운트값이 1 증가하였습니다.


카운트값이 SET VALUE인 10에 도달하지 못했으므로 실행결과는 OFF, 출력코일1도
OFF됩니다. 또한, 2번째 줄에 있는 보조비트접점인 C0도 OFF되어 출력코일은 모두
OFF됩니다.

<그림5-3-3 CTU 펑션블럭 조건 성립 모니터링>

⚫ 위 모니터링은 입력스위치:P0 ON이 10번 되어 카운트값이 10으로 증가하였을 때의


모니터링입니다. 카운트값이 SET VALUE인 10에 도달하였으므로 실행출력은 ON되어
출력코일1도 ON됩니다. 2번째 줄에 있는 보조접점인 C0도 ON되어 출력코일은 모두
ON됩니다. 이때, 입력스위치:P0가 OFF되면 출력코일1:P32는 OFF되고 출력코일2:P33은
계속 ON됩니다. 출력코일2:P33은 카운트셋 조건이 미성립되거나 카운트리셋:P1이 ON되면
OFF됩니다.

⚫ RESET 파라미터에는 비트 메모리를 사용할 수 있으며, 사용한 비트 메모리의 상태가


ON이 되었을 때, COUNT값은 0으로 초기화 됩니다. RESET 비트가 계속 ON 상태이면
카운트는 계속 리셋이 되므로 RESET 비트는 펄스로 입력해주시기 바랍니다.

- 71 -
MP STUDIO MANUAL

5.4.2. CTD

⚫ 실행조건이 ON될때마다, COUNT값이 1씩 감산됩니다. COUNT값이 0으로 되면, COUNT


보조비트 메모리가가 ON되고, 실행조건이 ON일 때에만 실행출력이 ON됩니다.
___________________________________________________________________________________

< COUNT > - unsigned -


⚫ 카운트 워드 메모리(C0, C1..) 또는 바이트(BC0, BC1,,), 더블워드(DC0..)을 입력합니다.
⚫ 실행조건이 ON될때마다 1씩 감산됩니다.
⚫ 카운트 메로리의 초기값은 SET VALUE값이 상수일 경우에만, SET VALUE값이 됩니다.
SET VALUE가 변수일 경우에는, 초기에 SET 비트를 ON해야 합니다.

< SET VALUE > - unsigned -


⚫ 다운카운트의 초기값을 입력합니다.

< RESET >


⚫ 비트 메모리를 입력합니다. RESET 비트가 ON되면, COUNT값이 SET VALUE값으로
초기화 되고, 보조비트 메모리를 OFF시킵니다.

< 보조비트 메모리 >


⚫ COUNT값이 SET VALUE값에서 1씩 감소하여, 0이 되면 보조비트 메모리가 ON됩니다.
⚫ RESET 비트가 ON되면, 보조비트 메모리가 OFF됩니다.

▢ Example
⚫ 입력접점:P0가 ON되면, COUNT:C0가 1씩 감산됩니다. P0가 10회 ON이 되는 시점에서
COUNT:C0의 카운트값이 0이 됩니다. COUNT:C0가 0이 되면, 보조 비트접점인 C0가
ON이 되어 출력코이2:P33이 ON됩니다. 또한, 조건이 성립하고 있을 때, 입력스위치:P0가
ON되어 실행조건이 ON이 될 때, 실행출력이 ON되어 출력코일1:P32가 ON됩니다.

<그림5-3-6 CTD 펑션블럭 조건 미성립 모니터링>

- 72 -
MP STUDIO MANUAL

⚫ 위 모니터링은 입력스위치:P0가 한 번 ON되었을 때 카운트값이 1 감소하였습니다.


카운트값이 0에 도달하지 못했으므로 보조비트접점인 카운트값:C0는 OFF되어
출력코일2:P33이 OFF됩니다. 또한, 실행출력도 OFF로 출력코일1:P32도 OFF됩니다.

<그림5-3-7 CTD 펑션블럭 조건 성립 모니터링>

⚫ 위 모니터링은 입력스위치:P0가 10번 ON되어, COUNT:C0값이 0이 되었습니다.


COUNT:C0값이 0이 되면, 실행출력이 ON되고 보조비트 메모리 C0가 ON되어
출력코일2:P33이 ON됩니다. CTD 펑션블럭의 출력상태는 펑션블럭의 입력상태가 ON되고
조건이 성립되고 있을 때 ON됩니다. 따라서, 조건이 성립되고 입력스위치:P0가 ON되고 있을
때, 출력코일1:P32가 ON됩니다.

- 73 -
MP STUDIO MANUAL

5.4.3. CTUD

⚫ 실행조건이 ON되고, CU 파라미터의 비트가 ON될 때 COUNT값이 1씩 가산됩니다.


⚫ 실행조건이 ON되고, CD 파라미터의 비트가 ON될 때 COUNT값이 1씩 감산됩니다.
⚫ COUNT값이 SET VALUE값 이상이 되면 실행출력이 ON되고 보조접점이 ON됩니다.
___________________________________________________________________________________

< COUNT > - unsigned -


⚫ 카운트 워드 메모리(C0, C1..) 또는 바이트(BC0, BC1,,), 더블워드(DC0..)을 입력합니다.
⚫ COUNT값이 SET VALUE값 이상이 되면 실행출력이 ON되고 보조접점이 ON됩니다.
⚫ 실행조건이 OFF되면 COUNT값은 0으로 초기화 됩니다.

< CU > - Bit -


⚫ 실행조건이 ON되고, CU 파라미터의 비트가 ON될 때 COUNT값이 1씩 가산됩니다.
⚫ COUNT값은 SET VALUE값을 초과해도 CU 입력에 의해 1씩 가산됩니다.
⚫ COUNT값이 최대가 되면 더 이상 가산하지 않습니다. (Ex. Word는 65535 최대값)

< CD > - Bit -


⚫ 실행조건이 ON되고, CD 파라미터의 비트가 ON될 때 COUNT값이 1씩 감산됩니다.
⚫ COUNT값이 0가 되면 더 이상 감산하지 않습니다.

< SET VALUE > - unsigned -


⚫ 카운트 설정값을 상수 또는 메모리(바이트, 워드, 더블워드)를 입력합니다.
⚫ COUNT값이 SET VALUE값 이상이 되면 실행출력이 ON되고 보조접점이 ON됩니다.

< RESET > - Bit -


⚫ 비트 메모리(P0, M0 등)를 입력합니다.
⚫ RESET 비트가 ON되면, COUNT값이 0으로 초기화 되고, 보조비트 메모리를 OFF시킵니다.

< 보조비트 메모리 >


⚫ COUNT값이 SET VALUE값 이상이 되면, 보조비트 메모리가 ON됩니다.
⚫ 보조비트 메모리는 COUNT 파라미터의 메모리 이름을 그대로 사용해야 합니다.
Ex) C0(워드), BC1(바이트), DC4(더블워드)
⚫ RESET 비트가 ON되거나 실행조건이 OFF되면 보조비트 메모리가 OFF됩니다.

- 74 -
MP STUDIO MANUAL

▢ Example

⚫ 실행입력:P0가 ON상태에서, 카운트업:P1가 ON될 때 마다 COUNT:C0가 1씩 가산됩니다.


P1가 10회 ON이 되는 시점에서 COUNT:C0의 카운트값이 10이 됩니다. COUNT:C0가
10이 되면, 실행출력이 ON되어 출력코일1:P32가 ON되고 보조 비트접점인 C0가 ON 되어
출력코일2:P33이 ON됩니다. 이때, 실행입력:P0가 OFF되면 실행출력 및 보조비트접점이
OFF되어 출력코일은 모두 OFF되고 카운트값:C0는 0으로 초기화 됩니다.

<그림5-3-3-1 CTUD 펑션블럭 조건 미성립 모니터링>

⚫ 위 모니터링은 카운트업:P1가 한 번 ON되어 카운트값:C0가 1 증가하였습니다. 카운트값이


SET VALUE:10에 도달하지 못했으므로 출력상태 및 보조비트접점인 카운트값:C0는 OFF되어
출력코일은 모두 OFF됩니다.

<그림5-3-3-2 CTD 펑션블럭 조건 성립 모니터링>

⚫ 위 모니터링은 카운트업:P1가 10번 ON되어, 카운트값:C0가 10이 되었습니다.


COUNT값이 SET VALUE:10이 되면, 실행출력이 ON되어 출력코일1:P32가 ON되고
보조비트 메모리 C0가 ON되어 출력코일2:P33이 ON됩니다.

< Caution >


⚫ 실행조건이 OFF되면 COUNT, 보조비트접점, 실행출력, CU 및 CD의 상태기억 메모리
모두가 OFF됩니다.

- 75 -
MP STUDIO MANUAL

5.4.4. HCNT

⚫ 고속카운터에서 카운트된 값을 읽어와서 OUT에 저장합니다.


___________________________________________________________________________________

⚫ 고속카운터는 PLC의 고속카운터 포트에 입력되는 펄스를 상승엣지를 상승 카운트하여 각


채널별로 레지스터리에 저장하게 됩니다.

⚫ 레지스터리에 저장되어 있는 고속카운터값을 HCNT 펑션블럭을 사용하여 D0 등의


메모리로 저장하여 사용합니다.

⚫ HRST 펑션블럭으로 레지스터리에 저장되어 있는 카운트값을 0으로 초기화할 수 있습니다.

⚫ 고속카운터는 16비트 레지스터리를 사용하여 16비트(0~65535)의 범위로 제한됩니다.


추후 32비트 메모리로 업데이트 예정입니다.

⚫ 고속카운터는 프로그램에서 카운트하기 어려운 빠른 속도로 입력되는 펄스를 카운트하기


위해 사용하는 기능입니다. MP STUDIO에서 작상한 LADDER LOGIC의 프로그램과 별개로
하드웨어적으로 카운트 되어집니다.

< CHANNEL > - Unsigned -


⚫ 고속카운터의 채널번호를 입력합니다. 제품의 HCNT0은 채널0, HCNT1은 채널1 입니다.

< OUT > - Unsigned -


⚫ 카운트된 값을 저장할 워드 또는 더블워드 메모리를 입력합니다.

▢ Example
⚫ 입력스위치:P00가 ON이 되면, 고속카운터 CHANNEL:0번 채널에서 카운트된 값을
읽어와서 OUT:D0에 저장합니다. 실행조건이 그대로 실행출력되어 출력코일1:P20은
ON됩니다.

<그림5-3-10 HCNT 펑션블럭 모니터링>

- 76 -
MP STUDIO MANUAL

5.4.5. HRST

⚫ 고속카운터 CHANNEL에 저장되어 있는 카운트값을 0으로 초기화합니다.


___________________________________________________________________________________

⚫ 고속카운터는 제품의 고속카운터 포트에 입력되는 펄스를 카운트하여 저장하고 있습니다.


⚫ 고속카운터는 프로그램에서 카운트하기 어려운 빠른 속도로 입력되는 펄스를 카운트하기
위해 사용하는 기능입니다. MP STUDIO에서 작상한 LADDER LOGIC의 프로그램과 별개로
하드웨어적으로 카운트 되어 특수 메모리에 저장되어집니다.
⚫ HCNT 펑션블럭으로 특수 메모리에 저장되어 있는 카운트값을 읽어올 수 있습니다.

< CHANNEL >


⚫ 고속카운터의 채널번호를 입력합니다. 제품의 HCNT0은 0채널, HCNT1은 1채널입니다.

▢ Example
⚫ 입력스위치:P00가 ON이 되면, 고속카운터 CHANNEL:0번 채널에 저장되어 있는
카운트값을 0으로 초기화 합니다.

<그림5-3-11 HRST 실행 전 모니터링>

<그림5-3-12 HRST 실행 후 모니터링>

- 77 -
MP STUDIO MANUAL

5.4.6. ENCO

⚫ 엔코더 채널중 CHANNEL에 저장되어 있는 엔코더 값을 읽어옵니다.


___________________________________________________________________________________

⚫ 두 개의 펄스(A, B)를 사용하는 엔코더를 연결하여 엔코더값을 확인할 수 있습니다.

⚫ 두 개의 펄스(A, B)중 B펄스보다 A펄스가 위상이 앞서서 올 경우 정방향(CW)이므로


엔코더의 값은 펄스의 수만큼 증가합니다.

⚫ 두 개의 펄스(A, B)중 A펄스보다 B펄스가 위상이 앞서서 올 경우 역방향(CCW)이므로


엔코더의 값은 펄스의 수만큼 감소합니다.

⚫ 현재는 MPA 제품군에서만 사용이 가능합니다.

⚫ MPA의 P0를 펄스A의 입력으로 사용하고 P1을 펄스B의 입력으로 사용합니다.

⚫ DC5V의 펄스가 나오면서 풀업을 해야 하는 엔코더의 경우 풀업 저항을 약 1kΩ 사용을


권장 드립니다. 저항이 클 경우, 전압분배로 MPA 제품의 P0와 P1포트의 입력전압이 너무
낮아져서 동작이 안될 수 있습니다.

< CHANNEL >


⚫ 엔코더 채널번호를 입력합니다. 현재는 MPA 제품군에서 0번 채널만 허용합니다.

< OUT > - Signed -


⚫ 엔코더 값이 저장됩니다.

▢ Example
⚫ 항상 엔코더 CHANNEL:0번 채널에 저장되어 있는 엔코더값을 D0 워드메모리에
저장합니다.

<그림5-4-6-1 ENCO 펑션블럭 모니터링>

- 78 -
MP STUDIO MANUAL

5.4.7. ENMOV

⚫ 엔코더 채널중 CHANNEL의 엔코더 값을 설정합니다.


___________________________________________________________________________________

⚫ 현재는 MPA 제품군에서만 사용이 가능합니다.

< CHANNEL >


⚫ 엔코더 채널번호를 입력합니다. 현재는 MPA 제품군에서 0번 채널만 허용합니다.

< IN > - Signed -


⚫ 설정할 엔코더 값을 입력합니다.

▢ Example
⚫ 항상 엔코더 CHANNEL:0번 채널에 저장되어 있는 엔코더값을 D0 워드메모리에
저장합니다.

⚫ P2가 ON되면 엔코더 CHANNEL:0번 채널의 엔코더 값을 0으로 설정합니다.

<그림5-4-7-1 ENMOV 펑션블럭 실행 전 모니터링>

<그림5-4-7-2 ENMOV 펑션블럭 실행 후 모니터링>

- 79 -
MP STUDIO MANUAL

5.5. 타이머 펑션블럭

⚫ 동작지연, 동장유지, 일정시간동안만 동작 등의 기능을 타이머 펑션블럭을 이용하여 쉽게


프로그램할 수 있습니다.
___________________________________________________________________________________

⚫ 타이머 펑션블럭의 종류
펑션블럭 설 명

입력상태가 ON 되고부터 PT 파라미터 시간동안 Delay 후, 보조비트 메모리


TON
및 출력상태를 ON 시킵니다.

입력상태가 ON -> OFF되고부터 PT 파라미터 시간동안 보조비트 메모리 및


TOFF
출력상태를 ON 되도록 Delay 시킵니다.

입력상태가 ON이 계속 되고 있어도 보조비트 메모리 및 출력상태를 PT 파


라미터 시간동안만 ON시키고 이후, OFF시킵니다. PT 파라미터 시간에 도달
TPL
하지 않은 상태에서 입력상태가 OFF되면, 보조비트 메모리 및 출력상태를
OFF 시킵니다.
입력상태가 ON이 되면, 보조비트 메모리 및 출력상태를 PT 파라미터 시간
동안 ON시키고 이후, OFF 시킵니다. PT 파라미터 시간에 도달하지 않은 상
TMON
태에서 입력상태가 OFF되어도 보조비트 메모리 및 출력상태를 PT 시간동안
ON시키고 이후, OFF 시킵니다.

⚫ TIMER 기본 단위
TIMER의 기본 단위는 10ms로서, 10ms마다 1씩 증가합니다.

⚫ TIMER 파라미터는 T 메모리를 사용해야 합니다.


워드 메모리 : T0, T1, T2 ....
더블워드 메모리 : DT0, DT1, DT2....

⚫ TIMER 시간범위
워드 메모리 : 10ms ~ 10분
더블워드 메모리 : 10ms ~ 5965 시간

- 80 -
MP STUDIO MANUAL

5.5.1. TON (On Delay Timer)

⚫ SET VALUE 시간만큼 동작지연을 합니다. SET VALUE 시간에 도달하면, 타이머 보조비트
메모리 및 출력상태가 ON됩니다.
___________________________________________________________________________________

< TIMER >


⚫ 타이머 워드 메모리(T0, T1..)와 더블워드 메모리(DT0, DT1...)를 사용합니다.
⚫ 워드 메모리는 10분까지 설정이 가능합니다.
⚫ 더블워드 메모리는 5965시간까지 가능합니다.
⚫ 0부터 SET VALUE까지 10ms마다 1씩 상향 카운트 됩니다.

< SET VALUE > - Unsigned -


⚫ 워드 및 더블워드를 입력합니다.
⚫ SET VALUE의 값은 1이 10ms를 의미합니다. 즉, 100은 1초입니다.
⚫ SET VALUE에 단위를 기입하여 사용할 수 있습니다. Ex) 20ms , 2S, 3M, 1H
⚫ SET VALUE의 시간은 10ms 미만을 사용할 수 없습니다.

< 보조비트 메모리 >


⚫ SET VALUE의 시간만큼 동작지연을 한 이후, 타이머 보조비트 메모리가 ON됩니다.
⚫ T0의 타이머 보조비트 메모리는 T0이고, DT0의 타이머 보조비트 메모리는 DT0입니다.

▢ Example
⚫ 시작버튼:P00가 5초동안 ON되면, 모터:P20, 히터:P21이 ON됩니다.

<그림5-4-1 TON 타이머 진행중 모니터링> <그림5-4-2 TON 완료 모니터링>

⚫ 시작버튼:P00가 ON이 되면, 모터:P20이 ON됩니다. 모터:P20이 ON되면, TON


펑션블럭의 입력상태가 ON되어 PT:5S (5초)후에 T0:보조비트 메모리가 ON되어 모터:P20은
OFF되고 TON 펑션블럭의 출력상태가 ON되어 동작완료:M0가 SET됩니다.

<그림5-4-3 TON 타이머 진행중 모니터링> <그림5-4-4 TON 완료 모니터링>

- 81 -
MP STUDIO MANUAL

5.5.2. TOFF (OFF Delay Timer)

⚫ SET VALUE 시간만큼 동작연장을 합니다. 입력상태가 ON되면 출력상태 및 타이머


보조비트 메모리를 ON시킵니다. 이후, 입력상태가 OFF되도 SET VALUE 시간동안 출력상태
및 보조비트 메모리의 ON을 유지시키다 SET VALUE시간에 도달하면 OFF시킵니다.
___________________________________________________________________________________

< TIMER >


⚫ 타이머 워드 메모리(T0, T1..)와 더블워드 메모리(DT0, DT1...)를 사용합니다.
⚫ 워드 메모리는 10분까지 설정이 가능합니다.
⚫ 더블워드 메모리는 5965시간까지 가능합니다.
⚫ 10ms마다 SET VALUE에서 1씩 하향 카운트 됩니다.

< SET VALUE > - Unsigned -


⚫ 워드 및 더블워드를 입력합니다.
⚫ SET VALUE의 값은 1이 10ms를 의미합니다. 즉, 100은 1초입니다.
⚫ SET VALUE에 단위를 기입하여 사용할 수 있습니다. Ex) 20ms , 2S, 3M, 1H
⚫ SET VALUE의 시간은 10ms 미만을 사용할 수 없습니다.

< 보조비트 메모리 >


⚫ 입력상태가 ON될 때, 같이 ON이 됩니다. 이후, 입력상태가 OFF되면 SET VALUE
시간만큼 ON시간을 연장한 이후 OFF됩니다.
⚫ T0의 타이머 보조비트 메모리는 T0이고, DT0의 타이머 보조비트 메모리는 DT0입니다.

▢ Example
⚫시작버튼:P00이 ON되면, 모터:P20 및 히터:P21이 ON됩니다. 이후, 시작버튼:P00가
OFF되면, SET VALUE:1M (1분) 후에 모터:P20 및 히터:P21가 OFF됩니다.

<그림5-4-5 TOFF 타이머 입력상태 ON 모니터링> <그림5-4-6 TOFF 입력상태 OFF 모니터링>

- 82 -
MP STUDIO MANUAL

5.5.3. TPL ( Pulse Timer )

⚫ 펑션블럭의 입력상태가 ON되면 출력상태 및 타이머 보조비트 메모리를 SET VALUE


시간동안만 ON시킵니다. SET VALUE시간에 도달하기 전에 펑션블럭의 입력상태가
OFF되면 출력상태 및 보조비트 메모리는 OFF됩니다.
___________________________________________________________________________________

< TIMER >


⚫ 타이머 워드 메모리(T0, T1..)와 더블워드 메모리(DT0, DT1...)를 사용합니다.
⚫ 워드 메모리는 10분까지 설정이 가능합니다.
⚫ 더블워드 메모리는 5965시간까지 가능합니다.
⚫ 10ms마다 SET VALUE에서 1씩 상향 카운트 됩니다.

< SET VALUE > - Unsigned -


⚫ 워드 및 더블워드를 입력합니다.
⚫ SET VALUE의 값은 1이 10ms를 의미합니다. 즉, 100은 1초입니다.
⚫ SET VALUE에 단위를 기입하여 사용할 수 있습니다. Ex) 20ms , 2S, 3M, 1H
⚫ SET VALUE의 시간은 10ms 미만을 사용할 수 없습니다.

< 보조비트 메모리 >


⚫ 입력상태가 ON될 때, 같이 ON이 됩니다. 이후, 입력상태가 OFF되거나 SET VALUE
시간에 도달하면 OFF됩니다.
⚫ T0의 타이머 보조비트 메모리는 T0이고, DT0의 타이머 보조비트 메모리는 DT0입니다.

▢ Example
⚫시작버튼:P00이 ON되면, 모터:P20 및 히터:P21이 ON됩니다. 이후, SET VALUE:10S에
도달하면 시작버튼:P00가 ON이 되고 있어도 모터:P20 및 히터:P21가 OFF됩니다.

<그림5-4-7 TPL 타이머 진행중 모니터링> <그림5-4-8 TPL 타이머 진행완료 모니터링>

- 83 -
MP STUDIO MANUAL

5.5.4. TMON ( Monostable Timer )

⚫ 펑션블럭의 입력상태가 ON되면 출력상태 및 타이머 보조비트 메모리를 SET VALUE


시간동안만 ON시킵니다. SET VALUE시간에 도달하기 전에 펑션블럭의 입력상태가
OFF되도 출력상태 및 보조비트 메모리는 SET VALUE시간 후에 OFF됩니다.
___________________________________________________________________________________

< TIMER >


⚫ 타이머 워드 메모리(T0, T1..)와 더블워드 메모리(DT0, DT1...)를 사용합니다.
⚫ 워드 메모리는 10분까지 설정이 가능합니다.
⚫ 더블워드 메모리는 5965시간까지 가능합니다.
⚫ 10ms마다 SET VALUE에서 1씩 상향 카운트 됩니다.

< SET VALUE > - Unsigned -


⚫ 워드 및 더블워드를 입력합니다.
⚫ SET VALUE의 값은 1이 10ms를 의미합니다. 즉, 100은 1초입니다.
⚫ SET VALUE에 단위를 기입하여 사용할 수 있습니다. Ex) 20ms , 2S, 3M, 1H
⚫ SET VALUE의 시간은 10ms 미만을 사용할 수 없습니다.

< 보조비트 메모리 >


⚫ 입력상태가 ON될 때, 같이 ON이 됩니다. 이후, 입력상태가 OFF되거나 SET VALUE
시간에 도달하면 OFF됩니다.
⚫ T0의 타이머 보조비트 메모리는 T0이고, DT0의 타이머 보조비트 메모리는 DT0입니다.

▢ Example
⚫시작버튼:P00이 ON되면, 모터:P20 및 히터:P21이 ON됩니다. 이후, SET VALUE:10S에
도달하면 시작버튼:P00가 ON이 되고 있어도 모터:P20 및 히터:P21가 OFF됩니다.

<그림5-4-7 TPL 타이머 진행중 모니터링> <그림5-4-8 TPL 타이머 진행완료 모니터링>

- 84 -
MP STUDIO MANUAL

5.6. 로직 컨트롤 펑션블럭

⚫ 조건에 따른 프로그램의 실행을 컨트롤할 수 있는 펑션블럭입니다.


___________________________________________________________________________________

⚫ 로직 컨트롤 펑션블럭 종류
펑션블럭 설 명

JMP 입력상태가 ON일때, LABEL로 점프하여 프로그램을 실행합니다.

JMPN 입력상태가 OFF일때, LABEL로 점프하여 프로그램을 실행합니다.

LABEL JMP와 JMPN에서 점프할 대상인 LABEL입니다.

- 85 -
MP STUDIO MANUAL

5.6.1. JMP

⚫ 입력상태가 ON일 때, LABEL로 점프하여 프로그램을 실행합니다.


⚫ LABEL 펑션블럭과 함께 사용해야 합니다.
___________________________________________________________________________________

< LABEL >


⚫ 점프할 LABEL을 입력합니다.

▢ Example
⚫ 자동버튼:P00가 OFF일 경우, 자동동작조건:P01과 관계없이 수동모터ON:M0에 의해
모터:P20이 ON/OFF됩니다.
⚫ 자동버튼:P00가 ON일 경우, 자동동작조건:P01에 의해 모터:P20이 ON/OFF됩니다.
3번째줄은 JMP펑션블럭에 의해 점프되기 때문에 동작하지 않습니다.

<그림5-6-1 JMP 입력상태 OFF 모니터링> <그림5-6-1 JMP 입력상태 ON 모니터링>

⚫ JMP 펑션블럭의 입력상태와 관계없이, 펑션블럭의 뒤쪽 프로그램은 실행되지 않습니다.

- 86 -
MP STUDIO MANUAL

5.6.2. JMPN

⚫ 입력상태가 OFF일 때, LABEL로 점프하여 프로그램을 실행합니다.


⚫ LABEL 펑션블럭과 함께 사용해야 합니다.
___________________________________________________________________________________

< LABEL >


⚫ 점프할 LABEL을 입력합니다.

▢ Example

⚫ 수동버튼:P00가 ON일 경우, JMPN 펑션블럭의 입력상태가 ON이므로 3번째 줄을


점프하지 않습니다. 때문에, 자동동작조건:P01과 관계없이 수동모터ON:M0에 의해
모터:P20이 ON/OFF됩니다.

⚫ 자동버튼:P00가 OFF일 경우, JMPN펑션블럭의 입력상태가 OFF되므로 4번째 줄로


점프하여 3번째 줄을 실행하지 않습니다. 때문에, 자동동작조건:P01에 의해 모터:P20이
ON/OFF됩니다.

<그림5-6-3 JMPN 입력상태 ON 모니터링> <그림5-6-4 JMPN 입력상태 OFF 모니터링>

⚫ JMPN 펑션블럭의 입력상태가 ON일 경우, 펑션블럭의 뒤쪽 프로그램은 실행됩니다.


⚫ JMPN 펑션블럭의 입력상태가 OFF일 경우, 펑션블럭의 뒤쪽 프로그램은 점프되기 때문에
실행되지 않습니다.
⚫ LABEL 펑션블럭의 입력상태가 출력상태가 됩니다. 즉, 입력상태가 ON일 경우 펑션블럭
뒤쪽 프로그램은 실행됩니다.

- 87 -
MP STUDIO MANUAL

5.7. 데이터 컨트롤 펑션블럭 (Data Control)

⚫ 여러 데이터를 대상으로 연산을 수행하기 위한 펑션블럭


___________________________________________________________________________________

⚫ 데이터 컨트롤 펑션블럭 종류


펑션블럭 설 명

MAX 여러 데이터에서 최대값을 찾습니다.

MIN 여러 데이터에서 최소값을 찾습니다.

SUM 여러 데이터의 합을 구합니다.

AVE 여러 데이터의 평균값을 구합니다.

MUX 여러 데이터에서 한 개의 메모리를 선택하여 찾습니다.

- 88 -
MP STUDIO MANUAL

5.7.1. MAX

⚫ IN으로부터 N개의 데이터에서 최대값을 OUT에 저장합니다.


___________________________________________________________________________________

< IN > - Singed -


⚫ 최대값을 찾을 데이터의 시작 메모리를 입력합니다.

< OUT > - Signed -


⚫ 찾은 최대값이 저장될 메모리를 입력합니다.

< N > - Unsigned -


⚫ 찾을 메모리의 개수를 입력합니다.

▢ Example

⚫ IN:D0 워드메모리를 포함한 4개의 메모리인 D0, D1, D2, D3에서 최대값인 30이
OUT:D10에 저장됩니다.

<그림5-7-1-1 MAX 펑션블럭 모니터링>

- 89 -
MP STUDIO MANUAL

5.7.2. MIN

⚫ IN으로부터 N개의 데이터에서 최소값을 OUT에 저장합니다.


___________________________________________________________________________________

< IN > - Singed -


⚫ 최소값을 찾을 데이터의 시작 메모리를 입력합니다.

< OUT > - Signed -


⚫ 찾은 최소값이 저장될 메모리를 입력합니다.

< N > - Unsigned -


⚫ 찾을 메모리의 개수를 입력합니다.

▢ Example

⚫ IN:D0 워드메모리를 포함한 4개의 메모리인 D0, D1, D2, D3에서 최소값인 -1이
OUT:D10에 저장됩니다.

<그림5-7-2-1 MIN 펑션블럭 모니터링>

- 90 -
MP STUDIO MANUAL

5.7.3. SUM

⚫ IN으로부터 N개의 데이터의 합을 OUT에 저장합니다.


___________________________________________________________________________________

< IN > - Singed -


⚫ 합을 계산할 데이터의 시작 메모리를 입력합니다.

< OUT > - Signed -


⚫ 계산된 합이 저장될 메모리를 입력합니다.

< N > - Unsigned -


⚫ 합을 계산할 메모리의 개수를 입력합니다.

▢ Example

⚫ IN:D0 워드메모리를 포함한 4개의 메모리인 D0, D1, D2, D3의 합인 16이 OUT:D10에
저장됩니다.

<그림5-7-3-1 SUM 펑션블럭 모니터링>

- 91 -
MP STUDIO MANUAL

5.7.4. AVE

⚫ IN으로부터 N개의 데이터의 평균값을 OUT에 저장합니다.


___________________________________________________________________________________

< IN > - Singed -


⚫ 평균값을 계산할 데이터의 시작 메모리를 입력합니다.

< OUT > - Signed -


⚫ 계산된 평균값이 저장될 메모리를 입력합니다.

< N > - Unsigned -


⚫ 평균을 계산할 메모리의 개수를 입력합니다.

▢ Example

⚫ IN:D0 워드메모리를 포함한 4개의 메모리인 D0, D1, D2, D3의 평균값인 50이
OUT:D10에 저장됩니다.

<그림5-7-4-1 AVE 펑션블럭 모니터링>

- 92 -
MP STUDIO MANUAL

5.7.5. MUX

⚫ IN으로부터 N번째의 데이터 값을 OUT에 저장합니다.


___________________________________________________________________________________

< IN > - Singed -


⚫ 선택할 메모리의 시작 메모리를 입력합니다.

< OUT > - Signed -


⚫ 선택한 메모리 값이 저장될 메모리를 입력합니다.

< N > - Unsigned -


⚫ 선택할 메모리의 위치를 입력합니다.

▢ Example

⚫ IN:D0 워드메모리로부터 4번째 메모리인 D4의 값인 5000이 OUT:D10에 저장됩니다.

<그림5-7-5-1 MUX 펑션블럭 모니터링>

- 93 -
MP STUDIO MANUAL

5.8. 프로그램 컨트롤 펑션블럭

⚫ 여러줄의 프로그램을 컨트롤하기 위한 펑션블럭


___________________________________________________________________________________

⚫ 워드로직 펑션블럭 종류
펑션블럭 설 명

MCS 마스터 컨트롤을 실행합니다/

MCSCLR 마스터 컨트롤을 종료합니다.

- 94 -
MP STUDIO MANUAL

5.8.1. MCS
⚫ 입력상태가 ON일 때, 마스터 컨트롤 영역안의 프로그램을 실행합니다.
⚫ 입력상태가 OFF일 때, 마스터 컨트롤 영역안의 프로그램을 실행하지 않습니다. 단, 마스터
컨트롤 영역안의 코일은 OFF됩니다.
___________________________________________________________________________________

< NUM>
⚫ 마스터 컨트롤 번호를 상수로 0 ~ 7까지 사용할 수 있습니다.
⚫ NUM의 상수값은 0부터 1씩 증가해야 합니다.
___________________________________________________________________________________

⚫ MCS는 MCS와 MCSCLR안에 있는 프로그램을 컨트롤합니다. MCS 0 ~ MCSCLR 0를


사용할 경우, 영역안에 있는 프로그램은 MCS 펑션블럭의 입력상태가 ON일 때, 동작합니다.
단, 코일은 입력상태가 OFF일 때 OFF됩니다.

▢ Example
⚫ MCS0:P00가 OFF일 경우, 모터1:P20, 모터2:P21, 모터3:,P22는 무조건 모두 OFF됩니다.
⚫ MCS0:P00가 ON일 경우, 모터1:P20은 ON됩니다. 이때, MCS1:P01이 OFF일 경우,
모터2:P21, 모터3:P22는 무조건 모두 OFF됩니다.
⚫ MCS0:P00 및 MCS1:P01이 ON일 경우, 모터1:P20과 모터2:P21은 ON됩니다. 이때,
MCS2:P02이 OFF일 경우, 모터3:P22는 OFF됩니다.
⚫ MCS0:P00, MCS1:P01, MCS2:P02 모두 ON일 경우, 모든 코일은 ON됩니다.

<그림5-6-5 MCS 상태에 따른 컨트롤 동작>

- 95 -
MP STUDIO MANUAL

5.8.2. MCSCLR
⚫ NUM번의 마스터 컨트롤을 종료합니다.
___________________________________________________________________________________

< NUM>
⚫ MCS 펑션블럭의 NUM과 동일해야 하며, 해당 NUM번의 마스터 컨트롤을 종료합니다.
⚫ 마스터 컨트롤 번호를 상수로 0 ~ 7까지 사용할 수 있습니다.
⚫ MCS 0 ~7을 사용했을 때, MCSCLR 7은 7번의 마스터 컨트롤만 종료시킵니다.
⚫ MCS 0 ~7을 사용했을 때, MCSCLR 0은 0~7번의 마스터 컨트롤만 종료시킵니다. 즉,
낮은 수치의 NUM은 높은 수치의 NUM까지 모두 종료시킵니다.
___________________________________________________________________________________

- 96 -
MP STUDIO MANUAL

5.9. 워드로직 펑션블럭

⚫ 워드 및 더블워드 메모리의 논리연산을 실행하는 펑션블럭입니다.


___________________________________________________________________________________

⚫ 워드로직 펑션블럭 종류
펑션블럭 설 명

WAND AND 논리연산을 취합니다.

WOR OR 논리연산을 취합니다.

WXOR XOR(EXCLUSIVE OR) 논리연산을 취합니다.

- 97 -
MP STUDIO MANUAL

5.9.1. WAND

⚫ IN1과 IN2를 논리적 AND를 취하여 OUT에 저장합니다.


___________________________________________________________________________________

< IN1 >


⚫ 워드 및 더블워드를 입력합니다.

< IN2 >


⚫ 워드 및 더블워드를 입력합니다.

< OUT >


⚫ 워드 및 더블워드 메모리를 입력합니다.

▢ Example

⚫ 입력버튼:P00가 ON일 경우, IN1:2#1010101010101010과


IN2:2#1010010111110000을 논리적 AND를 취하여 AND출력값:D0에 저장합니다. D0는
2#1010000010100000의 값이 저장됩니다. 이후, 출력상태가 ON되어 램프:P20도
ON됩니다.

<그림5-7-1 WAND 펑션블럭 모니터링>

⚫ 논리적 AND는 두 수중 0이 하나라도 있으면 0이 됩니다. 즉, 두 수 모두 1일 경우에만


1이 되는 논리식입니다.
⚫ AND Masking 기법 : 선택적 리셋 기법으로, 대상물에 마스크 워드를 AND시켜
대상물에서 특정 비트들을 리셋 시키는 방법입니다.

- 98 -
MP STUDIO MANUAL

5.9.2. WOR

⚫ IN1과 IN2를 논리적 OR를 취하여 OUT에 저장합니다.


___________________________________________________________________________________

< IN1 >


⚫ 워드 및 더블워드를 입력합니다.

< IN2 >


⚫ 워드 및 더블워드를 입력합니다.

< OUT >


⚫ 워드 및 더블워드 메모리를 입력합니다.

▢ Example

⚫ 입력버튼:P00가 ON일 경우, IN1:2#1010101010101010과


IN2:2#1010010111110000을 논리적 OR를 취하여 OR출력값:D0에 저장합니다. D0는
2#1010111111111010의 값이 저장됩니다. 이후, 출력상태가 ON되어 램프:P20도
ON됩니다.

<그림5-7-2 WOR 펑션블럭 모니터링>

⚫ 논리적 OR는 두 수중 1이 하나라도 있으면 1이 됩니다. 즉, 두 수 모두 0일 경우에만 0이


되는 논리식입니다.
⚫ OR Masking 기법 : 선택적 세트 기법으로, 대상물에 마스크 워드를 OR시켜 대상물에서
특정 비트들을 세트 시키는 방법입니다.

- 99 -
MP STUDIO MANUAL

5.9.3. WXOR

⚫ IN1과 IN2를 논리적 XOR를 취하여 OUT에 저장합니다.


___________________________________________________________________________________

< IN1 >


⚫ 워드 및 더블워드를 입력합니다.

< IN2 >


⚫ 워드 및 더블워드를 입력합니다.

< OUT >


⚫ 워드 및 더블워드 메모리를 입력합니다.

▢ Example

⚫ 입력버튼:P00가 ON일 경우, IN1:2#1010101010101010과


IN2:2#1010010111110000을 논리적 XOR를 취하여 XOR출력값:D0에 저장합니다. D0는
2#0000111101011010의 값이 저장됩니다. 이후, 출력상태가 ON되어 램프:P20도
ON됩니다.

<그림5-7-3 WXOR 펑션블럭 모니터링>

⚫ XOR Masking 기법 : 선택적 반전 기법으로, 대상물에 마스크 워드를 XOR시켜


대상물에서 특정 비트들을 반전 시키는 방법입니다.

- 100 -
MP STUDIO MANUAL

5.10. 아날로그 펑션블럭

⚫ 제품의 아날로그 입력 및 출력과 고속펄스출력를 제어하기 위한 펑션블럭입니다.


___________________________________________________________________________________

⚫ 아날로그 펑션블럭 종류
펑션블럭 설 명
아날로그 입력포트에 입력된 아날로그 전기신호(DC 0~5V, DC 0~10V,
ADC
0~20mA)를 디지털신호로 변경합니다.
아날로그 입력포트에 입력된 아날로그 전기신호(DC 1~5V, 4~20mA)를
ADC2
디지털신호로 변경합니다.
아날로그 출력포트로 DAC 펑션블럭의 OUT값을 전기신호(DC 0~5V, DC
DAC
0~10V, 0~20mA)로 출력합니다.
온도센서 입력포트에 연결된 NTC 써미스터 β-3950 (10kΩ/20℃) 온도센서
NTEMP
의 온도값을 읽어옵니다.

PWM 고속펄스출력(PWM) 포트에 일정 폭의 펄스를 출력합니다.

FPWM 고속펄스출력(PWM) 포트에 일정 주파수로 펄스를 출력합니다.

NPWM 고속펄스출력(PWM) 포트에 일정 주파수로 일정 펄스 개수를 출력합니다.

POFF 고속펄스출력(PWM)을 정지시킵니다.

- 101 -
MP STUDIO MANUAL

5.10.1. ADC (아날로그 입력 : DC 0~5V, DC 0~10V, 0~20mA)

⚫ 아날로그 입력포트에 입력된 아날로그 전기신호를 디지털 수치로 변환합니다.


(Ex. DC 0~5V, DC 0~10V, 0~20mA)

⚫ 아날로그 입력포트 CHANNEL에 입력된 아날로그 전기신호를 MIN VALUE ~ MAX


VALUE의 범위의 디지털 수치로 변환합니다.
___________________________________________________________________________________

< CHANNEL > -Unsigned-


⚫ 아날로그 입력포트 번호를 상수 또는 메모리로 입력합니다.

< MAX VALUE > -Signed-


⚫ 변환되어 저장되는 디지털 수치의 최대값을 상수 또는 메모리로 입력합니다.

< MIN VALUE > -Signed-


⚫ 변환되어 저장되는 디지털 수치의 최소값을 상수 또는 메모리로 입력합니다.

< OUT > -Signed-


⚫ 디지털 수치로 변환된 값을 저장할 메모리를 입력합니다.

▢ Example

⚫ 입력버튼:P00가 ON일 때, 아날로그 입력포트 0채널에 입력된 아날로그 전기신호를


0~1000의 디지털 수치로 변경하여 아날로그값:D0에 저장합니다. 입력버튼:P00의 상태에
따라 ADC펑션블럭의 실행출력이 ON/OFF되어 램프:P20도 같이 ON/OFF 됩니다.

<그림5-8-1 ADC 펑션블럭 모니터링>

⚫ 0~10V D.C의 아날로그 입력포트일 경우, 아날로그값:D0는 4.78V가 아날로그 입력포트


0번 채널에 입력되었다는 의미입니다.

- 102 -
MP STUDIO MANUAL

5.10.2. ADC2 (아날로그 입력 : 4~20mA, DC 1~5V)

⚫ 아날로그 입력포트에 입력된 아날로그 전기신호를 디지털 수치로 변환합니다.


(Ex. 4~20mA, DC 1~5V)

⚫ 아날로그 입력포트 CHANNEL에 입력된 아날로그 전기신호를 MIN VALUE ~ MAX


VALUE의 범위의 디지털 수치로 변환합니다.
___________________________________________________________________________________

< CHANNEL > -Unsigned-


⚫ 아날로그 입력포트 번호를 상수 또는 메모리로 입력합니다.

< MAX VALUE > -Signed-


⚫ 변환되어 저장되는 디지털 수치의 최대값을 상수 또는 메모리로 입력합니다.

< MIN VALUE > -Signed-


⚫ 변환되어 저장되는 디지털 수치의 최소값을 상수 또는 메모리로 입력합니다.

< OUT > -Signed-


⚫ 디지털 수치로 변환된 값을 저장할 메모리를 입력합니다.

▢ Example

⚫ 입아날로그 입력포트 1채널에 입력된 아날로그 전기신호(4~20mA or 1~5V)를 0~1000의


디지털 수치로 변경하여 아날로그값:D0에 저장합니다. 이후, ADC2 펑션블럭의 실행출력이
ON되어 비교펑션블럭에 의해 아날로그값:D0가 500보다 크면 램프:P32가 ON이되고
500보다 작거나 같으면 램프:P32는 OFF가 됩니다.

<그림5-8-2 ADC2 펑션블럭 모니터링>

⚫ 4~20mA 아날로그 입력포트일 경우, 아날로그값:D0가 0일 경우 4mA 이하의 아날로그


신호가 입력되었다는 것입니다.
⚫ MIN VALUE가 100일 경우, 아날로그 신호가 4mA 이하일 경우 100이 아날로그값:D0에
저장됩니다.

- 103 -
MP STUDIO MANUAL

5.10.3. DAC (아날로그 출력)

⚫ 디지털 수치를 아날로그 출력포트에 아날로그 전기신호로 출력합니다.

⚫ 아날로그 출력포트 CHANNEL에 MIN VALUE ~ MAX VALUE의 범위에서 OUT값 만큼의
전기적신호를 출력합니다.
___________________________________________________________________________________

< CHANNEL > -Unsigned-


⚫ 아날로그 출력포트를 상수 또는 메모리로 입력합니다.

< MAX VALUE > -Signed-


⚫ 출력할 디지털 수치의 최대값을 상수 또는 메모리로 입력합니다.

< MIN VALUE > -Signed-


⚫ 출력할 디지털 수치의 최소값을 상수 또는 메모리로 입력합니다..

< OUT >


⚫ 디지털 수치의 최소값과 최대값 범위에서 출력할 디지털값을 상수 또는 메모리로
입력합니다.

▢ Example

⚫ 입력버튼:P00가 ON일 때, 아날로그 출력포트 0번 채널에 0 ~ 1000 범위에서 500만큼의


전기적인 신호를 출력합니다. 이때, 램프:P20도 ON됩니다.

<그림5-8-2 DAC 펑션블럭 모니터링>

⚫ 0~10V D.C의 아날로그 출력포트일 경우, 5V의 전기신호를 출력한다는 의미입니다.

- 104 -
MP STUDIO MANUAL

5.10.4. NTEMP (NTC 써미스터 온도)

⚫ 온도센서 입력포트에 연결된 NTC 써미스터 β-3950 (10kΩ/20℃) 온도센서의 온도값을


읽어옵니다.
___________________________________________________________________________________

< CHANNEL > -Unsigned-


⚫ 온도센서 입력채널을 상수 또는 메모리로 입력합니다.

< OUT > -Signed-


⚫ 온도값을 저장시킬 메모리를 입력합니다.

▢ Example

⚫ 온도센서 입력채널 0번에 연결된 NTC 써미스터 온도센서값을 D0에 저장합니다. 253은
25.3℃를 의미합니다.

<그림5-10-4-1 NPWM 펑션블럭 모니터링>

- 105 -
MP STUDIO MANUAL

5.10.5. PWM (펄스 출력)

⚫ 일정한 폭을 가진 고속펄스를 출력합니다.


⚫ 고속펄스포트(PWM)에 WIDTH길이에서 DUTY의 폭만큼 HIGH(ON)인 펄스를 연속적으로
출력합니다.
___________________________________________________________________________________

< PORT > -Unsigned-


⚫ 펄스를 출력할 포트번호를 상수 또는 메모리로 입력합니다.

< DUTY > -Unsigned-


⚫ 펄스의 HIGH(ON) 길이를 상수 또는 메모리로 입력합니다.
⚫ 0 ~ WIDTH 범위에서 값을 입력할 수 있습니다.

< WIDTH > -Unsigned-


⚫ 펄스의 전체 길이를 상수 또는 메모리로 입력합니다.
⚫ 0 ~ 65535 범위에서 값을 입력할 수 있습니다.

▢ Example

⚫ 입력버튼:P00가 ON이 되면, 고속펄스 0번포트에 길이가 2000이고 HIGH가 1000인


펄스를 연속적으로 출력합니다. 이때, 램프:P20도 ON됩니다. 펄스의 출력을 중지시키기
위해서는 PWMOFF 펑션블럭을 사용해야 합니다.

<그림5-8-3 PWM 펑션블럭 모니터링>

▢ Caution

⚫ PWM0~2 는 하나의 펄스발생 채널을 사용하고 있습니다.


⚫ PWM3~5 는 하나의 펄스발생 채널을 사용하고 있습니다.
⚫ FPWM 또는 NPWM을 쓰고 있을 경우, 동채널에 PWM 펑션블럭을 사용하면 안됩니다.

- 106 -
MP STUDIO MANUAL

5.10.6. FPWM ( 주파스 펄스출력 )

⚫ 일정한 주파수를 가진 고속펄스를 출력합니다.


⚫ 고속펄스포트(PWM)에 FREQ 주파수로 Duty비(펄스 폭)가 50%인 펄스를 연속적으로
출력합니다.
___________________________________________________________________________________

< PORT > -Unsigned-


⚫ 펄스를 출력할 포트번호를 상수 또는 메모리로 입력합니다.

< FREQ > -Unsigned-


⚫ 출력할 펄스의 주파수를 상수 또는 메모리로 입력합니다.
⚫ 주파수는 Hz 단위로 1은 1Hz, 1000은 1kHz, 1000000은 1Mhz입니다.
⚫ 0 ~ 1Mhz의 주파수를 사용할 수 있습니다.

▢ Example

⚫ 입력버튼:P00가 ON이 되면, 고속펄스 0번포트에 Duty비(펄스 폭)가 50%인 1000Hz


펄스를 연속적으로 출력합니다. 이때, 램프:P20도 ON됩니다. 펄스의 출력을 중지시키기
위해서는 PWMOFF 펑션블럭을 사용해야 합니다.

<그림5-8-4 FPWM 펑션블럭 모니터링>

▢ Caution

⚫ PWM0~2 는 하나의 펄스발생 채널을 사용하고 있습니다.


⚫ PWM3~5 는 하나의 펄스발생 채널을 사용하고 있습니다.
⚫ NPWM을 쓰고 있을 경우, 동채널의 다른 PWM포트에 FPWM 펑션블럭을 사용하면
안됩니다.
⚫ FPWM을 쓰고 있을 경우, 동채널의 다른 PWM포트에 FPWM 펑션블럭은 같은 주파수일
경우에만 사용할 수 있습니다. 만약, 사용할 경우 처음에 실행한 FPWM의 주파수는 후자에
실행한 FPWM 주파수로 출력됩니다.
⚫ PWM을 사용하고 있을 경우, 동채널의 다른 PWM포트에 FPWM 펑션블럭을 사용하면 동
채널의 PWM포트도 FPWM의 주파수로 출력되고 Duty비(펄스 폭)은 유지됩니다.

- 107 -
MP STUDIO MANUAL

5.10.7. NPWM (제한된 펄스개수 출력)

⚫ 일정한 주파수를 가진 고속펄스를 제한된 수만큼 출력합니다.


⚫ 고속펄스포트(PWM)에 FREQ 주파수로 Duty비(펄스 폭)가 50%인 펄스를 N개의 수만큼
출력합니다.
___________________________________________________________________________________

< PORT > -Unsigned-


⚫ 펄스를 출력할 포트번호를 상수 또는 메모리로 입력합니다.

< FREQ > -Unsigned-


⚫ 출력할 펄스의 주파수를 상수 또는 메모리로 입력합니다.
⚫ 주파수는 Hz 단위로 1은 1Hz, 1000은 1kHz입니다.
⚫ 0 ~ 60khz의 주파수를 사용할 수 있습니다. 30kHz를 넘지 않는 것을 권장드립니다.

▢ Example

⚫ 입력버튼:P00가 ON이 되면, 고속펄스 0번포트에 Duty비(펄스 폭)가 50%인 1000Hz


펄스를 4개 출력합니다. 이때, ADD 펑션블럭에 의해 OUT:D0는 1이 합산되어 1이 됩니다.
NPWM 펑션블럭 앞에 상승엣지접점:#edge에 의해 NPWM펑션블럭은 단 한번 실행됩니다.
펄스의 출력을 중지시키기 위해서는 PWMOFF 펑션블럭을 사용해야 합니다.

<그림5-8-5 NPWM 펑션블럭 모니터링>

<그림5-8-6 NPWM 출력된 오실로스코프 디스플레이>

- 108 -
MP STUDIO MANUAL

▢ Caution
⚫ 상승엣지접점을 사용해서 동작조건이 되었을 때, 한번만 실행되도록 해야 합니다. 그렇지
않을 경우, NPWM펑션블럭은 계속실행되어 N 개수를 초과한 펄스가 출력되게 됩니다.
⚫ PWM0~2 는 하나의 펄스발생 채널을 사용하고 있습니다.
⚫ PWM3~5 는 하나의 펄스발생 채널을 사용하고 있습니다.
⚫ NPWM을 쓰고 있을 경우, 동채널에 다른 PWM, FPWM, NPWM을 사용할 수 없습니다.
단, NPWM의 펄스출력이 모두 완료되었을 경우 다른포트를 사용할 수 있습니다.
Ex) NPWM 펑션블럭에 PWM1포트를 사용할 경우, 0번과 2번은 사용금지 포트가 됩니다.

- 109 -
MP STUDIO MANUAL

5.10.8. POFF (펄스출력 정지)

⚫ PORT의 고속펄스포트(PWM)을 정지시킵니다.


___________________________________________________________________________________

< PORT > -Unsigned-


⚫ 펄스출력을 정지할 포트번호를 상수 또는 메모리로 입력합니다.

▢ Example

⚫ 펄스시작:P00가 ON이 되면, 고속펄스 0번포트에 Duty비가 50%인 펄스가 출력됩니다.


펄스가 출력되는동안 @PWM0비트가 ON되어 펄스출력중:P20은 ON됩니다. 이후,
펄스정지:P01가 ON이 되면, 고속펄스 0번포트의 펄스출력은 정지됩니다.

<그림5-8-7 PWM과 POFF 펑션블럭 모니터링>

⚫ FPWM과 NPWM 펑션블럭에서 생성한 펄스도 정지됩니다.

- 110 -
MP STUDIO MANUAL

5.11. 이동 펑션블럭 ( MOVE )

⚫ 메모리 값을 복사하기 위한 펑션블럭입니다.


___________________________________________________________________________________

⚫ 아날로그 펑션블럭 종류
펑션블럭 설 명

MOV 한 개의 값 또는 메모리를 한 개의 메모리에 복사합니다.

GMOV 여러개의 메모리를 여러개의 메모리에 복사합니다.

FMOV 한 개의 값 또는 메모리를 여러개의 메모리에 복사합니다.

- 111 -
MP STUDIO MANUAL

5.11.1. MOV

⚫ IN의 값을 OUT에 복사합니다.


___________________________________________________________________________________

< IN >
⚫ 복사할 상수 및 메모리를 입력합니다.

< OUT >


⚫ 복사될 메모리를 입력합니다.

▢ Example

⚫ 입력버튼:P00가 ON일 경우, IN:1234를 OUT:D0에 복사하여 D0값이 1234가 됩니다.


이때, 펄스출력중:P20도 ON됩니다.

<그림5-7-4 MOV 펑션블럭 모니터링>

- 112 -
MP STUDIO MANUAL

5.11.2. GMOV

⚫ IN 파라미터 메모리부터 N개의 메모리 값을 OUT 파라미터 메모리로 N개의 메모리에


복사합니다.
___________________________________________________________________________________

< IN >
⚫ 복사할 메모리를 입력합니다.

< OUT >


⚫ 복사될 메모리를 입력합니다.

< N > -Unsigned-


⚫ 복사할 양을 상수 또는 메모리를 입력합니다.
⚫ OUT 파라미터 메모리의 값이 바이트일 경우, IN 파라미터를 바이트 단위로 읽어서 복사.
⚫ OUT 파라미터 메모리의 값이 워드일 경우, IN 파라미터를 워드 단위로 읽어서 복사.
⚫ OUT 파라미터 메모리의 값이 더블워드일 경우, IN 파라미터를 거블워드 단위로 읽어서
복사 합니다.

▢ Example
⚫ D0, D1, D2 워드 메모리에 각각 1, 123, 30000을 입력하고 GMOV 펑션블럭으로
D0부터 D10으로 3개의 워드를 복사했을 때 D10, D11, D12 워드 메모리는 각각 D0~D2와
동일하게 1, 123, 30000이 됩니다.

<그림5-7-2-1 GMOV 펑션블럭 모니터링>

- 113 -
MP STUDIO MANUAL

5.11.3. FMOV

⚫ IN 파라미터 메모리의 값을 OUT 파라미터 메모리로부터 N개의 메모리에 복사합니다.


___________________________________________________________________________________

< IN >
⚫ 복사할 상수값 또는 메모리를 입력합니다.

< OUT >


⚫ 복사될 메모리를 입력합니다.

< N > -Unsigned-


⚫ 복사될 메모리의 양을 입력합니다. (상수 또는 메모리)

▢ Example
⚫ D0 워드 메모리에 각각 1000을 입력하고 FMOV 펑션블럭으로 D0을 D10으로부터 3개의
워드에 복사했을 때 D10, D11, D12 워드 메모리는 모두 1000이 됩니다.

<그림5-7-3-1 FMOV 펑션블럭 모니터링>

- 114 -
MP STUDIO MANUAL

5.12. 워드로직 펑션블럭

⚫ 워드 및 더블워드 메모리의 논리연산을 실행하는 펑션블럭입니다.


___________________________________________________________________________________

⚫ 워드로직 펑션블럭 종류
펑션블럭 설 명

SHL 메모리의 비트를 왼쪽으로 이동시킵니다.

SHR 메모리의 비트를 오른쪽으로 이동시킵니다.

- 115 -
MP STUDIO MANUAL

5.12.1. SHL

⚫ IN의 비트를 N개만큼 왼쪽으로 이동시킵니다.


___________________________________________________________________________________

< IN >
⚫ 이동시킬 상수 또는 메모리를 입력합니다.
< OUT >
⚫ 이동시킨 값이 저장될 메모리를 입력합니다.

▢ Example
⚫ 입력버튼:P00가 ON일 경우, IN:2#00000001를 1비트 왼쪽으로 이동시킨
2#00000010을 OUT:BD0에 저장합니다. 이때, 펄스출력중:P20도 ON됩니다.

<그림5-7-5 SHL 펑션블럭 모니터링>

- 116 -
MP STUDIO MANUAL

5.12.2. SHR

⚫ IN의 비트를 N개만큼 오른쪽으로 이동시킵니다.


___________________________________________________________________________________

< IN >
⚫ 이동시킬 상수 또는 메모리를 입력합니다.

< OUT >


⚫ 이동시킨 값이 저장될 메모리를 입력합니다.

▢ Example
⚫ 입력버튼:P00가 ON일 경우, IN:2#00000100를 2비트 오른쪽으로 이동시킨
2#00000001을 OUT:BD0에 저장합니다. 이때, 펄스출력중:P20도 ON됩니다.

<그림5-7-6 SHR 펑션블럭 모니터링>

- 117 -
MP STUDIO MANUAL

5.13. 시리얼통신 펑션블럭

5.13.1. 시리얼 통신박식의 종류

⚫ 시리얼통신은 제품과 제품간의 인터페이스를 위하여 가장 보편적으로 사용되고 있습니다.


⚫ 시리얼통신은 UART, RS232, RS422, RS485 통신방식이 있습니다.
Specification UART RS232 RS422 RS485
최대 Driver 1 Driver 1 Driver 1 Driver 32 Driver
최대 Receiver 1 Receiver 1 Receiver 32 Receiver 32 Receiver
최대 통신거리 10m 이내 15m 이내 1km 이내 1km 이내
지원 전송방식 Full Duplex Full Duplex Full Duplex Half Duplex
최대 출력전압 0 ~ VCC(+5V) ±25V -0.25V ~ +6V -7V ~ +12V
최대 입력전압 0 ~ VCC(+5V) ±15V -7V ~ +7V -7V ~ +12V

⚫ UART는 TTL레벨의 통신방식으로 시리얼통신 방식중 가장 기본이 되는 통신입니다. 통신


전압이 가장 낮기 때문에, 각종 노이즈에 의해 통신의 문제가 발생할 수 있어서 산업에서는
많이 쓰지 않지만, UART 통신만을 제공하는 저렴한 센서 등의 제품들을 연결하기 위해서
필요한 통신방식입니다. UART 통신을 하는 제품과의 거리를 짧게하고 통신속도를 낮게
설정함으로 각종 노이즈 등의 영향을 줄이는 해결책이 있습니다.

⚫ RS232는 UART통신보다 통신전압을 높게하여 산업에서 발생하는 각종 노이즈 등에 의한


문제를 줄인 통신방식입니다. RS232는 제품과 1:1 통신을 해야하는 경우, 산업에서
보편적으로 가장 많이 사용하는 시리얼통신입니다.

⚫ RS485는 차동입력방식을 사용하여 산업에서 발생하는 각종 노이즈를 상쇄시켜 입력받는


방식입니다. 때문에, 통신거리가 길며 제품과 1:N 통신을 해야하는 경우, 산업에서
보편적으로 가장 많이 사용하는 시리얼통신입니다. 통신선이 2가닥으로 간단한 연결이
가능한 장점이 있습니다.

⚫ RS422는 RS485의 차동입력방식을 송신과 수신에 각각 사용함으로서, RS485에서


사용하지 못하는 전이중 방식(Full Duplex)을 사용할 수 있습니다. 하지만. 통신선이
4가닥으로 RS485보다 연결선이 복잡한 단점이 있습니다.

- 118 -
MP STUDIO MANUAL

5.13.2. 시리얼 통신의 설정

< BaudRate >


⚫ 시리얼통신의 속도를 말합니다. 1초당 송/수신하는 비트수를 의미합니다. 보편적으로 9600,
19200, 38400, 57600, 115200을 사용하며, 속도가 느릴수로 보다 안정적이고 먼 거리의 통신이
가능합니다.

< Data Bit >


⚫ 송/수신의 전송 패킷의 비트 수를 말합니다. 보편적으로 8 비트를 사용하지만, 경우에 따라
7비트와 9비로 설정하여 사용할 수 있습니다.

< Stop Bit >


⚫ 송신 패킷의 뒤에 Stop 비트를 전송하며, 1비트 혹은 2비트로 설정할 수 있습니다.
보편적으로 1비트를 사용하며, 예전에는 수신측에서 Stop 비트를 놓칠 수 있어 2비트로
사용하기도 하였습니다.

< Parity Bit >


⚫ 송신 패킷의 문제가 없는지 확인하기 위한 비트입니다. 홀수(Odd), 짝수(Even),
없음(None)으로 설정할 수 있습니다. 보편적으로 없음(None)을 선택합니다. 페리티 비트를
사용할 경우, 송신 패킷의 HIGH레벨 신호를 카운트하여 홀수(Odd) 또는 짝수(Even)일
경우 페리티 비트를 HIGH로 송신합니다. 보편적으로 페리티 비트로 오류를 검출할 수 있는

- 119 -
MP STUDIO MANUAL

5.13.3. 시리얼 통신 모드

⚫ 통신모드는 아래와 같이 3가지를 제공합니다.


① Normal : 정의되지 않은 통신으로 PUT, GET 펑션블럭으로 통신을 구성해야 합니다.
② Modbus RTU : 산업에서 보편적으로 사용하는 통신방식입니다.
③ Cubloc Modbus RTU : HMI(터치디스플레이)와 연결하기 위해 사용되는 통신방식입니다.

< Normal >


⚫ 사용자가 통신 프로토콜을 정의하여 PUT, GET 펑션블럭으로 프로그램할 수 있습니다.

< Modbus RTU >


⚫ 산업에서 보편적으로 사용하고 있는 범용 프로토콜입니다. 대부분의 시리얼 통신을
지원하는 센서, 인디게이터 등은 Modbus RTU Slave를 지원하고 있습니다.
⚫ Modbus는 Master 1대와 Slave 여러대를 연결할 수 있으며, Master는 보편적으로
HMI(터치디스플레이) 또는 PC가 됩니다.
⚫ Master에서 1대 또는 여러대의 Slave 제품에 쓰기 또는 읽기 명령을 내립니다. Slave에서
Master에게 먼저 송신하지 않고, 무조건 Master에서 SLave에 요청하면 Slave는 이에
응답을 하는 방식입니다.

< Cubloc Modbus RTU >


⚫ 저희가 판매하고 있는 HMI에서 사용하는 통신 프로토콜입니다. 기본은 Modbus와 같지만,
Modbus는 D0 메모리를 D0라고 하지 않고 저희 컨트롤러 제품에서 정의한 2000번지라고
합니다. 따라서, HMI에서 쉽게 D0의 데이터를 읽고 쓰게 하기 위해 2000번지라고 안하고
D0라고 정의할 수 있도록 미리 프로토콜을 맞추어 놓았습니다. 저희가 판매하는
ComfileHMI 제품을 구입하신 경우라면, Cubloc Modbus RTU를 선택해 주시기 바랍니다.

시리얼통신 펑션블럭의 종류
PUT : 시리얼통신의 송신버퍼에 데이터를 집어넣어 데이터를 전송합니다.
GET : 시리얼통신의 수신버퍼에서 데이터를 가져 옵니다.
PUT_LEN : 시리얼통신의 송신버퍼에 쓰여지 데이터의 길이를 가져 옵니다.
GET_LEN : 시리얼통신의 수신버퍼에 쓰여진 데이터의 길이를 가져 옵니다.

- 120 -
MP STUDIO MANUAL

5.13.4. PUT (송신)

⚫ 시리얼통신 CHANNEL에 DATA의 LEN 바이트 개수를 송신합니다.


___________________________________________________________________________________

< CHANNEL > -Unsigned-


⚫ 송신 채널의 상수 또는 메모리로 입력합니다.
8A4R(T)-R2 16A8R(T)-R2 8A4R(T) 8A8R 16A8R 16A8R8T
CHANNEL 1 RS232 RS232 RS232 RS232 RS232 RS232
CHANNEL 2 x x x RS485 RS485 RS485
CHANNEL 3 x x x UART UART UART

< DATA >


⚫ 송신 데이터를 상수 또는 메모리로 입력합니다.

< LENGTH > -Unsigned-


⚫ 송신할 데이터의 개수를 상수 또는 메모리로 입력합니다.

▢ Example
⚫ 송신시작:P00가 ON되면, 시리얼통신 1채널에 16진수 30을 2번 전송합니다.
전송패킷 : 0x30, 0x30

<그림5-9-1 PUT 펑션블럭>

⚫ 송신시작:P00가 ON되면, 시리얼통신 1채널에 BD0 및 BD1을 전송합니다.


전송패킷 : 0x30, 0x31

- 121 -
MP STUDIO MANUAL

<그림5-9-2 PUT 펑션블럭>

5.13.5. GET (수신)

⚫ 시리얼통신 CHANNEL에 DATA의 LEN 바이트 개수를 송신합니다.


___________________________________________________________________________________

< CHANNEL > -Unsigned-


⚫ 수신 채널의 상수 또는 메모리로 입력합니다.
8A4R(T)-R2 16A8R(T)-R2 8A4R(T) 8A8R 16A8R 16A8R8T
CHANNEL 1 RS232 RS232 RS232 RS232 RS232 RS232
CHANNEL 2 x x x RS485 RS485 RS485
CHANNEL 3 x x x UART UART UART

< LENGTH >


⚫ 수신한 데이터의 개수를 상수 또는 메모리로 입력합니다.

< OUT > -Unsigned-


⚫ 수신한 데이터를 저장할 메모리를 입력합니다.

▢ Example
⚫ 시리얼통신 1채널에 GETLEN 펑션블럭으로 수신한 패킷의 수를 D10에 저장합니다. 이후,
수신패킷:D10이 1개 이상 있으면, 1바이트를 D영역 바이트 메모리:BD0에 저장합니다.

<그림5-9-3 GET 펑션블럭 미수신 상태 모니터링>

⚫ 외부기기에서 시리얼통신 1채널에 0x30을 송신하면 아래와 같이 D영역 바이트


메모리:BD0에 0x30이 저장됩니다.

<그림5-9-4 GET 펑션블럭 수신 상태 모니터링>

- 122 -
MP STUDIO MANUAL

5.13.6. PUTLEN (송신버퍼개수)

⚫ 시리얼통신 CHANNEL의 송신버퍼에 남아있는 송신패킷의 수를 바이트 단위로 읽어옵니다.


___________________________________________________________________________________

< CHANNEL > -Unsigned-


⚫ 송신버퍼의 채널을 상수 또는 메모리로 입력합니다.
8A4R(T)-R2 16A8R(T)-R2 8A4R(T) 8A8R 16A8R 16A8R8T
CHANNEL 1 RS232 RS232 RS232 RS232 RS232 RS232
CHANNEL 2 x x x RS485 RS485 RS485
CHANNEL 3 x x x UART UART UART

< OUT > -Unsigned-


⚫ 송신버퍼에 남아있는 송신패킷의 수가 저장될 메모리를 입력합니다.

▢ Example
⚫ 송신버튼:P00가 ON일 때, PUTLEN 펑션블럭을 이용하여 송신버퍼에 있는 송신패킷을
바이트 단위로 읽어와 OUT:D0에 저장합니다. 이후, 송신버퍼의 패킷수인 D0가 0일 때, 즉,
송신버퍼가 비어있을때에만 PUT 펑션블럭을 이용하여 16진수 30을 시리얼통신 1채널로
2바이트 전송합니다.

<그림5-9-5 PUTLEN 펑션블럭을 이용하여 송신버퍼가 비어 있일때 PUT 펑션블럭 실행 >

⚫ 만약, PUTLEN 펑션블럭을 이용하지 않고 PUT 펑션블럭만을 이용하면 시리얼통신 1채널로


송신할 패킷이 송신버퍼에 계속 쌓입니다. 때문에, 향후 송신버퍼의 용량을 초과하여 송신한
패킷의 오류가 발생할 수 있습니다. 송신버퍼가 쌓이는 이유는 시리얼통신으로 보내는
속도보다 컨트롤러의 스캔타임(프로그램을 한번 실행하는 속도)이 더욱 빠르기 때문입니다.

⚫ 송신버튼:P00가 ON이고 송신버퍼에 아직 2개의 송신패킷이 남아 있을 경우, 아래와 같이


비교펑션블럭에 의해 PUT 펑션블럭을 실행하지 않습니다.

<그림5-9-6 PUTLEN 펑션블럭을 이용하여 송신버퍼가 비어 있지 않을 때 PUT 펑션블럭 중단 >

- 123 -
MP STUDIO MANUAL

5.13.7. GETLEN (수신버퍼개수)

⚫ 시리얼통신 CHANNEL의 수신버퍼에 남아있는 수신패킷의 수를 읽어옵니다.


___________________________________________________________________________________

< CHANNEL > -Unsigned-


⚫ 수신버퍼의 채널을 상수 또는 메모리로 입력합니다.
8A4R(T)-R2 16A8R(T)-R2 8A4R(T) 8A8R 16A8R 16A8R8T
CHANNEL 1 RS232 RS232 RS232 RS232 RS232 RS232
CHANNEL 2 x x x RS485 RS485 RS485
CHANNEL 3 x x x UART UART UART

< OUT > -Unsigned-


⚫ 수신버퍼에 남아있는 수신패킷의 수가 정자될 메모리를 입력합니다.

▢ Example
⚫ GETLEN 펑션블럭을 실행하여 시리얼통신 1채널의 수신버퍼에 남아있는 수신패킷의 수를
OUT:D0에 저장합니다. 이후, 수신패킷수:D0가 3패킷 이상이면 GET 펑션블럭을 실행하여
시리얼통신 1채널의 수신버퍼의 패킷을 D영역 바이트 메모리인 BD10부터.. BD11, BD12에
저장합니다. 만약, 수신버퍼에 남은 패킷이 4개일 경우, BD13까지 사용됩니다.

<그림5-9-7 GETLEN 펑션블럭을 이용하여 3패킷(바이트)을 GET 펑션블럭을 이용하여 수신 >

- 124 -
MP STUDIO MANUAL

6. HMI 연결 / 외부기기 연결

MP STUDIO(MPS제품군)은 시리얼 통신의 전채널에 하기와 같은 프로토콜을 지원합니다.


⦁ MODBUS RTU SLAVE
산업범용 프로토콜로서, MODBUS RTU MASTER를 지원하는 여러 산업장비와 연결이 가능합니다.
⦁ CUBLOC MODBUS RTU SLAVE
저희가 취급하고 있는 ComfileHMI 제품과 연결이 가능합니다.
⦁ LS산전 CNET (XBC/LINK)
LS산전의 MASTER-K PLC의 통신 프로토콜로서, CNET 프로토콜을 지원하는 여러 기업의 HMI 제품과
연결이 가능합니다.

6.1. MODBUS RTU


6.1.1. MODBUS 설정

MP STUDIO의 통신포트 설정에서 통신속도 등을 변경할 수 있습니다.

BAUDRATE : 통신속도 (초당 전송되는 비트로서 단위는 b/s입니다)


DATA BIT : 하나의 패킷에 전송되는 BIT의 개수이며, 보통 8 BIT를 사용합니다.
STOP BIT : 정지신호로 사용되는 BIT의 개수이며, 보통 ONE을 사용합니다.
PARITY BIT : 송/수신의 오류를 검출하기 위한 검사방법을 선택할 수 있습니다.
MODE : Modbus RTU를 선택하여 MPS 제품군을 Modbus RTU Slave 모드로 설정할 수 있습니다.
SLAVE ADDRESS : Modbus RTU Slave의 Address를 설정할 수 있습니다. Modbus Master에서 Slave에게
명령을 전송할 때, 해당 Slave Address의 MPS 제품군만 명령을 받아 동작하게 됩니다.

6.1.2. MODBUS RTU 패킷 구성

MODBUS는 MASTER에서 SLAVE에게 메모리정보를 달라고 요청하거나 메모리 값을 변경하라고 명령을 하는


형식으로서, 항상 MASTER가 SLAVE에게 명령을 전달하는 방식으로 통신을 진행합니다.

통신패킷의 구성은 슬레이브 어드레스, 펑션코드, 시작 어드레스, 길이, 데이터, CRC (에러검출)로 구성됩니다.
상세한 설명은 각각의 펑션코드 설명을 참조해주세요.

- 125 -
MP STUDIO MANUAL

6.1.3. 펑션코드

펑션코드는 Master에서 Slave에게 송신을 할 때, 명령의 종류를 구분지어 줍니다.

펑션코드 기 능 설 명
펑션코드 01 Read Coil Status 메모리를 Bit 단위로 읽음
펑션코드 02 Read Input Status 메모리를 Bit 단위로 읽음
펑션코드 03 Read Holding Registers 메모리를 Word 단위로 읽음
펑션코드 04 Read Input Registers 메모리를 Word 단위로 읽음
펑션코드 05 Force Single Coil 하나의 Bit의 메모리를 On/Off 시킴
펑션코드 06 Preset Single Registers 하나의 Word의 메모리를 변경시킴
펑션코드 15 Force Multiple Coils 여러 Bit의 메모리를 On/Off 시킴
펑션코드 16 Preset Multiple Registers 여러 Word의 메모리를 변경시킴
※ 펑션코드 1번과 2번 그리고 3번과 4번은 동일한 펑션코드입니다.

6.1.4. CRC

CRC는 Modbus 송/수신 패킷의 마지막 두 개의 바이트로서, 송/수신한 패킷이 제대로 전달 되었는지를 알기
위한 검증코드입니다. 계산 방식이 복잡하므로 아래 링크를 참조하시기 바랍니다.
www.lammertbies.nl/comm/info/crc-calculation.html

6.1.5. START ADDRESS

Start Address는 MPS 제품군의 메모리의 주소값을 의미합니다. 각각의 접점명은 아래의 표의 범위에서 시작
어드레스를 설정하여 사용할 수 있습니다.

접점명 Address ( 주 소 ) 설 명
P 0 ~ 997 입/출력 메모리
M 1,000 ~ 1,999 내부 M 메모리
D 2,000 ~ 2,999 내부 D 메모리
C 3,000 ~ 3,999 내부 C 메모리 (카운터)
T 4,000 ~ 4,999 내부 T 메모리 (타이머)

Start Address는 아래와 같이 계산하여 사용하셔야 합니다.

① Bit
※ P32 : P메모리 시작 어드레스(0) + 32 = 32 (HEX:20)
※ M88 : M메모리 시작 어드레스(1,000) + 88 = 1,088 (HEX:440)

② Word
※ D10 : D메모리 시작 어드레스(2,000) + 10 = 2,010 (HEX:7DA)
※ C5 : C메모리 시작 어드레스(3,000) + 5 = 3,005 (HEX:BBD)
※ T60 : T메모리 시작 어드레스 (4,000) + 60 = 4,060 (HEX:FDC
)

- 126 -
MP STUDIO MANUAL

③ MPS-8A8R의 P 메모리 주소는 하기와 같이 다른 방식으로 계산해야 합니다.


※ 주소 계산식 : 십의 자리수 * 8 + 일의 자리수
※ P23 : 십의 자리수(2) * 8 + 일의 자리수(3) = 2x8+3 = 19 (HEX:13)
※ P15 : 십의 자리수(1) * 8 + 일의 자리수(5) = 1x8+5 = 13 (HEX:D)

6.1.6. HMI의 시작 어드레스

HMI 또는 SCADA는 제품에 따라 1000번대, 10000번대 100000번대 주소체계를 사용하지만 MPS는 그와


상관없이 동작합니다. 그 이유는 1000번대의 제품은 어드레스에 1001을 기입했을 경우 실제로 MPS로 들어오는
어드레스 데이터값은 1001을 뺄셈한 0이 들어옵니다. HMI 제품에서 1001을 뺄셈하여 송신하게 됩니다.
2001을 기입하면 2001을 뺄셈하여 0이 송신됩니다. 3011을 기입하면 3001을 뺄셈하여 10이 송신됩니다.
10000번대 제품도 똑같이 10001을 기입하면 10001을 뺄셈하여 0을 송신합니다.

예를들어 아래와 같이 사용하시면 됩니다.


(10000번대 어드레스 사용하는 기기, HEX값 어드레스를 사용하는 기기)

① Bit Read
※ P10 : 00001(HEX) + (P메모리 시작 어드레스(0) + 10)(DEC) = 00001(HEX) + A(HEX) =
0000B(HEX)
※ M23 : 00001 + (M메모리 시작 어드레스(1,000) + 23)(DEC) = 00001(HEX) + 3FF(HEX) =
400(HEX)

② Bit Write
※ P32 : 10001(HEX) + (P메모리 시작 어드레스(0) + 32)(DEC) = 10001(HEX) + 20(HEX) =
10021(HEX)
※ M77 : 10001(HEX) + (M메모리 시작 어드레스(1,000) + 77)(DEC) = 10001(HEX) + 435(HEX) =
10436(HEX)

③ Word Read
※ D11 : 30001(HEX) + (D메모리 시작 어드레스(2,000) + 11)(DEC) = 30001(HEX) + 7DB(HEX) =
307DC(HEX)
※ C36 : 30001(HEX) + (C메모리 시작 어드레스(3,000) + 36)(DEC) = 30001(HEX) + BDC(HEX) =
30BDD(HEX)
④ Bit Write
※ D15 : 40001(HEX) + (D메모리 시작 어드레스(2,000) + 15)(DEC) = 40001(HEX) + 7DF(HEX) =
407E0(HEX)
※ C92 : 40001(HEX) + (C메모리 시작 어드레스(3,000) + 92)(DEC) = 40001(HEX) + C14(HEX) =
40C15(HEX)

- 127 -
MP STUDIO MANUAL

6.1.7. M2I의 HMI에서 사용할 경우


M2I에서 통신설정을 MODBUS RTU로 설정해야 하며 M2I에서 제공하고 있는 모드버스 주소는 아래와
같습니다.

Coil과 Discrete Input은 BIT 메모리로서 두 개를 구분 없이 사용하시면 됩니다.


Input Register와 Holding Register는 WORD 메모리로서 두 개를 구분 없이 사용하시면 됩니다.

Coil을 사용할 경우
M2I에서 기입한 어드레스에서 1을 뺀 값을 Start Address로 사용합니다.

Discrete Input을 사용할 경우


M2I에서 기입한 어드레스에서 100001을 뺀 값을 Start Address로 사용합니다.

Input Register를 사용할 경우


M2I에서 기입한 어드레스에서 300001을 뺀 값을 Start Address로 사용합니다.

Holding Register를 사용할 경우


M2I에서 기입한 어드레스에서 400001을 뺀 값을 Start Address로 사용합니다.

Start Address로 사용한다는 것은 실제 통신 패킷값을 의미합니다.

※ D9 : Input Register(400001) + D메모리 시작 어드레스(2000) + Byte(9) = 402010을 M2I에 기입해야


합니다.

- 128 -
MP STUDIO MANUAL

6.1.8. MODBUS의 패킷

펑션코드 01 : Read Coil Status


펑션코드 02 : Read Input Status

 메모리를 BIT단위로 읽는 펑션코드입니다.


 아래는 2번 슬레이브 제품에서 M15~M33을 읽어오는 예제입니다.

- Master에서 송신
패 킷 명 구 분 패 킷 (16진수)
슬레이브 어드레스 02
펑션코드 01
시작 어드레스 HIGH BYTE 03
시작 어드레스 LOW BYTE F7
길이 HIGH BYTE 00
길이 LOW BYTE 0F
CRC LOW BYTE CD
CRC HIGH BYTE 8B
* 길이는 16#07F8(10#2040)을 초과할 수 없습니다.

 어드레스 : M메모리 시작 어드레스(1000) + M15 = 1,015= 0x3F7


 길이 : 읽고자 하는 비트의 개수를 의미합니다.

- Slave로 부터 수신
패킷명 구분 패킷 (16진수)
슬레이브 어드레스 02
펑션코드 01
바이트 카운트 02
데이터 M15 ~ M22 01
데이터 M23 ~ M28 02
CRC LOW BYTE 7D
CRC HIGH BYTE AD

 Master에서 15개의 Bit를 요청하였기 때문에, Slave의 바이트 카운트는 2 Byte가 되며, 데이터 패킷의
응답이 M15와 M24가 High이고나머지는 Low의 응답입니다.
 아래에 수신된 데이터의 패킷을 Binary와 Hex로 표시하였습니다. 참조해주세요.

BIT M22 M21 M20 M19 M18 M17 M16 M15


BIN 0 0 0 0 0 0 0 1
HEX 0 1

BIT Dummy M29 M28 M27 M26 M25 M24 M23


BIN 0 0 0 0 0 0 1 0
HEX 0 2

- 129 -
MP STUDIO MANUAL

펑션코드 03 : Read Holding Registers


펑션코드 04 : Read Input Regigsters
 메모리를 Word단위로 읽는 펑션코드입니다.
 아래는 2번의 슬레이브 제품의 D32~D33를 읽어오는 예제입니다.

- Master에서 송신
패킷명 구분 패킷 (16진수)
슬레이브 어드레스 02
펑션코드 03
어드레스 HIGH BYTE 07
어드레스 LOW BYTE F0
길이 HIGH BYTE 00
길이 LOW BYTE 02
CRC LOW BYTE C5
CRC HIGH BYTE 7F
*길이는 16#007F(10#127)을 초과할 수 없습니다.

 어드레스 : D메모리 시작 어드레스(2000) + D32 = 2032 = 0x07F0


 길이 : 읽고자 하는 데이터의 워드 개수를 의미합니다.

- Slave로 부터 수신
패킷명 구분 패킷 (16진수)
슬레이브 어드레스 02
펑션코드 03
바이트 카운트 04
데이터1 (DW32) HIGH BYTE 12
데이터1 (DW32) LOW BYTE 34
데이터2 (DW34) HIGH BYTE 56
데이터2 (DW34 LOW BYTE 78
CRC LOW BYTE B2
CRC HIGH BYTE 07

 Master에서 2개의 Word를 요청하였기 때문에, Slave의 바이트 카운트는 4 Byte가 되며, 데이터는
D32부터 D34까지 순차적으로 16진수로 1234,5678의 값으로 응답되었습니다.
 아래는 데이터 패킷을 Binary와 Hex로 표시한 것입니다.

WORD D32
HEX 1(MSB) 2 3 4(LSB)
BIN 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0

WORD D33
HEX 5(MSB) 6 7 8(LSB)
BIN 0 1 0 1 0 1 1 0 0 1 1 1 1 0 0 0

- 130 -
MP STUDIO MANUAL

펑션코드 05 : Force Single Coil

 메모리중 하나의 Bit를 변경하기 위한 펑션코드입니다.


 아래는 2번의 슬레이브 제품의 P32 출력접점을 On시키는 예제입니다.

- Master에서 송신
패킷명 구분 패킷 (16진수)
슬레이브 어드레스 02
펑션코드 05
어드레스 HIGH BYTE 00
어드레스 LOW BYTE 20
데이터 HIGH BYTE FF
데이터 LOW BYTE 00
CRC LOW BYTE 8D
CRC HIGH BYTE C3

 어드레스 : P메모리 시작 어드레스(0) + P32 = 32 = 0x0020


 데이터 : 0xFF00는 HIGH로 변경하고 0x0000는 LOW로 변경시킵니다.

- Slave로 부터 수신
패킷명 구분 패킷 (16진수)
슬레이브 어드레스 02
펑션코드 05
어드레스 HIGH BYTE 00
어드레스 LOW BYTE 20
데이터 HIGH BYTE FF
데이터 LOW BYTE 00
CRC LOW BYTE 8D
CRC HIGH BYTE C3

 Master에서P32(16#0020) 메모리에 HIGH(16#FF00) 데이터를 Slave에게 송신을 하였습니다. Slave에서는


데이터가 16#FF00일 경우, Bit를 High로 16#0000은 Low로 인식합니다. Slave는 Master에서 받은 명령을
처리하고 받은 패킷과 똑같은 패킷을 응답합니다.

- 131 -
MP STUDIO MANUAL

펑션코드 06 : Preset Single Registers

 메모리중 하나의 Word를 변경하기 위한 펑션코드입니다.


 아래는 2번의 슬레이브 제품의 D16 메모리 값을 16#8520으로 변경하는 예제입니다.

- Master에서 송신
패킷명 구분 패킷 (16진수)
슬레이브 어드레스 02
펑션코드 06
어드레스 HIGH BYTE 07
어드레스 LOW BYTE E0
데이터 HIGH BYTE 85
데이터 LOW BYTE 20
CRC LOW BYTE EA
CRC HIGH BYTE 33

 어드레스 : D메모리 시작 어드레스(2,000) + D16 = 2,016 = 0x07E0 입니다.

- Slave로 부터 수신
패킷명 구분 패킷 (16진수)
슬레이브 어드레스 02
펑션코드 06
어드레스 HIGH BYTE 07
어드레스 LOW BYTE E0
데이터 HIGH BYTE 85
데이터 LOW BYTE 20
CRC LOW BYTE EA
CRC HIGH BYTE 33

 Master에서 16#07E0(10#2016) 주소값에 16#8520 값을 쓰도록 Slave에게 송신을 하였습니다. Slave는


Master에서 송신한 패킷을 처리하고 받은 패킷과 동일한 패킷을 Master에게 송신합니다.

- 132 -
MP STUDIO MANUAL

펑션코드 15 : Force Multiple Coils


 PLC의 내부메모리중 여러개의 Bit를 변경하기 위한 펑션코드입니다.
 아래는 02번의 슬레이브의 M27~M40의 BIT 값을 변경하는 예제입니다.

- Master에서 송신
패킷명 구분 패킷 (16진수)
슬레이브 어드레스 02
펑션코드 0F
어드레스 HIGH BYTE 04
어드레스 LOW BYTE 03
길이 HIGH BYTE 00
길이 LOW BYTE 10
바이트 카운트 02
데이터1 FIRST DATA 35
데이터2 SECOND DATA 8B
CRC LOW BYTE E4
CRC HIGH BYTE 14

 어드레스: M메모리 시작 어드레스(1,000) + M27 = 1,027 = 0x0403


 길이: M27~M40의 비트개수 = 16 = 0x10
 바이트 카운트: 16비트의 바이트개수 = 2
 아래는 변경할 패킷을 Binary와 Hex로 표시한 것입니다.

Bit M40 M39 M38 M37 M36 M35 M34 M33 M32 M31 M30 M29 M28 M27
Bin 1 1 0 1 0 1 1 0 0 0 1 0 1 1
Hex 3 5 8 B
Second Data First Data

- Slave로 부터 수신
패킷명 구분 패킷 (16진수)
슬레이브 어드레스 02
펑션코드 0F
어드레스 HIGH BYTE 04
어드레스 LOW BYTE 03
길이 HIGH BYTE 00
길이 LOW BYTE 10
CRC LOW BYTE A5
CRC HIGH BYTE 04

 Master에서 16#0403(10#1023) 주소값 부터 16#358B 값을 쓰도록 Slave에게 송신을 하였습니다 Slave는


Master에서 받은 패킷을 처리하고 받은 패킷중 일부를 회신합니다.

- 133 -
MP STUDIO MANUAL

펑션코드 16 : Preset Multiple Registers

 PLC의 내부메모리중 여러개의 Word를 변경하기 위한 펑션코드입니다.


 아래는 2번의 슬레이브 제품의 D22 ~ D24를 16진수 1234,5678,1245로 변경하는 예제입니다.

- Master에서 송신
패킷명 구 분 패킷 (16진수)
슬레이브 어드레스 02
펑션코드 10
어드레스 HIGH BYTE 07
어드레스 LOW BYTE E6
길이 HIGH BYTE 00
길이 LOW BYTE 03
바이트 카운트 06
데이터1 HIGH BYTE 12
데이터1 LOW BYTE 34
데이터2 HIGH BYTE 56
데이터2 LOW BYTE 78
데이터3 HIGH BYTE 12
데이터3 LOW BYTE 45
CRC LOW BYTE F3
CRC HIGH BYTE 0A

 어드레스: D메모리 시작 어드레스(2000) + D22 = 2022 = 0x07E6


 길이: D메모리 개수 = 3
 바이트 카운트 : 수신받을 바이트 개수 = 6

- Slave로 부터 수신
패킷명 구 분 패킷 (16진수)
슬레이브 어드레스 02
펑션코드 10
어드레스 HIGH BYTE 07
어드레스 LOW BYTE E6
길이 HIGH BYTE 00
길이 LOW BYTE 03
CRC LOW BYTE 60
CRC HIGH BYTE B8

 Master에서 16#07E6(10#2022) 주소값을 시작으로 3개의 Word에 순차적으로 16#1234,16#5678,


16#1245 값을 쓰도록 Slave에게 송신을 하였습니다 Slave는 Master에서 받은 패킷을 처리하고 받은 패킷중
일부를 회신합니다.

- 134 -
MP STUDIO MANUAL

6.2. COMFILE HMI


ComfileHMI는 저희 아이로직스 쇼핑몰에서 HMI 카테고리에서 판매하고 있는 HMI 제품입니다.

6.2.1. MP STUDIO 설정
MP STUDIO의 통신포트 설정에서 ComfileHMI와 연결하고자 하는 통신포트의 MODE를 Cubloc Modbus
RTU로 설정해야 합니다.

Baudrate : 통신속도입니다. ComfileHMI의 통신속도와 똑같이 설정해야 합니다.


Data Bit : 통신패킷의 비트 구성 수입니다. 기본은 8을 사용합니다.
Stop Bit : 통신패킷의 정지 비트 수입니다. 기본은 1을 사용합니다.
Parity : 통신패킷의 에러율검증을 위한 비트입니다. 기본은 사용하지 않음으로 None입니다.
Mode : Cubloc Modbus RTU를 선택합니다.
Slave Address : Comfile HMI에서 통신으로 요청할 MPS제품의 고유넘버입니다.
통신포트 설정 후에는 프로그램 다운로드를 실행해야 MPS제품의 통신포트 설정이 변경됩니다.

6.2.2. COMFILE HMI 설정


ComfileHMI에서 새 프로젝트를 생성할 때 외부장치 및 프로토콜을 제조사는 COMFILE, 모델명은 CUBLOC
MODBUS RTU를 선택하여 생성합니다.

- 135 -
MP STUDIO MANUAL

프로젝트를 생성한 이후라면 ComfileHMI에서 왼쪽에 위치해 있는 프로젝트 트리의 프로젝트 속성을 실행하여
아래와 같이 통신 방식을 변경하시기 바랍니다.

MP STUDIO에서 설정한 Baudrate, Data Bit, Stop Bit, Parity를 위에서 표기했던 화면속성 창에서 하단의
HMI에게 통신 설정 전달을 체크하면 나타나는 속성박스에 적용합니다.

통신설정을 마치면 화면을 추가하여 HMI의 화면구성 및 동작을 프로그램할 수 있습니다. ComfileHMI
사용설명서를 참조해 주시기 바랍니다.

- 136 -
MP STUDIO MANUAL

6.2.3. Example

Ⅰ. 제어버튼

우측의 제어버튼을 선택하고 그리고자 하는 화면의 위치에 Drag&Drop하여 제어버튼을 생성합니다.

제어버튼을 더블클릭하면 나타나는 제어버튼의 속성창의 기본설정에서 아래와 같이 목적지 종류를 비트주소를
선택하고 목적지 비트 주소 우측의 ..버튼을 클릭합니다. 하단의 기록할 내용에서 버튼을 눌렀을 때 MPS의
비트를 어떻게 변경할지 정할 수 있습니다. (On, Off, On->Off, Reverse)

- 137 -
MP STUDIO MANUAL

제어하고자 하는 MPS의 비트 메모리를 입력합니다.

위와 같이 설정하면 제어버튼을 눌렀을 때 MPS제품의 P32 비트를 ON 시킵니다.

- 138 -
MP STUDIO MANUAL

Ⅱ. 램프

comfileHMI에서 아래와 같이 우측의 램프를 선택하고 생성하고자 하는 위치에서 마우스로 Drag&Drop하여


램프를 생성합니다.

램프를 두 번 클릭하여 램프속성에서 아래와 같이 비트주소의 ... 버튼을 클릭합니다.

- 139 -
MP STUDIO MANUAL

MPS 제품의 비트주소가 ON이 되면 램프가 점등되게 하고자하는 비트를 기입합니다. 아래에서는
디지털입력 P0가 ON이 되면 램프가 켜집니다.

위와 같이 램프를 사용하여 MPS의 디지털입력 또는 특정비트의 On/Off를 표시할 수 있습니다.

Ⅲ. 숫자 표시기

ComfileHMI에서 아래와 같이 우측의 숫자를 클릭하고 숫자 표시기를 생성하고 하는 위치에서


마우스로 Drag&Drop합니다.

- 140 -
MP STUDIO MANUAL

숫자 표시기를 더블클릭하여 나타나는 속성창에서 아래와 같이 선택하고 워드주소의 ..버튼을


클릭합니다.

아래와 같이 원격 데이터 형식을 short(부호 있는 16비트 정수)로 선택하고 표시하고자 하는 워드


어드레스를 입력합니다. 그림에서는 D10을 표시하고 있습니다.

위와 같이 MPS의 워드 메모리값의 숫자를 표시할 수 있습니다. MPS에서 워드값을 읽어 소수점


처리하거나 수학적 연산이 필요할 경우에는 속성창에서 다양한 옵션을 제공하고 있으니 이를 활용해
주시기 바랍니다. 옵션 사용법은 ComfileHMI 사용설명서를 참조해 주시기 바랍니다.

- 141 -
MP STUDIO MANUAL

Ⅳ. 숫자 입력기

ComfileHMI에서 아래와 같이 우측의 숫자 입력기를 선택하고 숫자 입력기를 생성하고자 하는


위치에서 마우스를 Drag&Drop하여 숫자 입력기를 생성합니다.

숫자 입력기를 더블클릭하면 나타나는 속성창에서 아래와 같이 선택하고 목적지 워드 주소의 우측에


있는 ..버튼을 클릭합니다.

- 142 -
MP STUDIO MANUAL

입력하고 하는 MPS 제품의 메모리 정보를 입력합니다. 아래는 원격 데이터 형식을 WORD(부호
없는 16비트 정수)로 하고 메모리값을 D10일때를 표현하였습니다.

위와 같이 MPS 제품의 메모리값에다 특정 수치를 HMI를 통하여 입력할 수 있고 그 정보를 캡션


동기화 하여 HMI에 표시시킬 수 있습니다.

지금까지 간단한 예를 나타내보았습니다. 보다 자세한 사용방법과 통신설정에 대해서는


ComfileHMI 사용설명서를 참조해 주시기 바랍니다.

- 143 -
MP STUDIO MANUAL

6.3. CNET (XBC/LINK)

CNET은 LS산전에서 개발한 프로토콜로서 LS산전의 PLC와 HMI를 연결하기 위해 개발되었지만


여러 HMI 제조사들이 LS산전의 PLC와 연결할 수 있도록 CNET 프로토콜을 지원하고 있습니다.

따라서, CNET 프로토콜을 이용하여 LS산전의 HMI 또는 CNET을 지원하는 다양한 HMI와 연결이
가능합니다.

MPS의 RS232, RS485, UART 시리얼통신포트에 CNET (XBC/LINK) 슬레이브 프로토콜을


지원합니다.

6.3.1. XBC

LS산전은 초기에 Master-k와 Glofa PLC의 2가지 형식이 있었습니다.


Master-k는 미쯔비시 형식과 흡사하고 메모리타입이 M00, D0와 같은 방식이며,
Glofa는 지멘스 형식과 흡사하고 메모리타입이 %MX100, %DW0, %IX0.0.0과 같은 방식입니다.

현재는 Master-K PLC가 성능에 따라서 XGK/MBM/XBC PLC로 출시되었으며,


Glofa PLC는 성능에 따라서 XGI/XGR/XEC PLC로 출시되었습니다.

위의 메모리타입을 보시면 저희 MPS도 Master-K와 비슷한 방식의 메모리 타입이기 때문에


Master-K,XGK,XBM,XBC 타입의 CNET LINK를 지원합니다.

6.3.2. LINK

CNET은 LS산전의 CPU모듈에 직접 연결해서 사용하는 DIRECT와 통신채널에 연결해서 사용하는


LINK 타입이 있습니다.

DIRECT는 LS산전의 소프트웨어인 XG5000의 모니터링 용도로 개발된 통신으로서 CPU에


다이렉트로 연결할 수 있어 별도의 통신모듈 없이 사용할 수 있는 장점이 있었지만, 현재의
XGB제품들은 CPU모듈에 LINK타입의 CNET을 지원하므로 굳이 DIRECT를 사용하지 않아도 됩니다.

LINK는 LS산전의 PLC와 HMI를 연결하기 위하여 개발된 통신입니다. LS산전의 인지도가 높기
때문에 여러 HMI 브랜드 제품에서도 CNET LINK 타입을 지원하여 LS산전의 PLC 타제품의 HMI를
쉽게 연결하여 사용할 수 있습니다.

- 144 -
MP STUDIO MANUAL

6.3.3. M2I를 사용할 경우

M2I 기업의 HMI를 저희 MPS제품과 CNET으로 연결하기 위하여 M2I에서 제공하는 TOP Design을
사용하는 예를 설명하도록 하겠습니다.

Ⅰ. 아래와 같이 M2I HMI와 연결할 XBC PLC를 선택


프로젝트 생성 ⤏ Display 모델명 선택 ⤏ COM포트 클릭 ⤏ ADD버튼 클릭 ⤏ LS Industrial
Systems의 XGK/XBM/XBC Series 선택

Ⅱ. Interface를 Computer Link로 선택하고 Station Num을 MPS 제품의 슬레이브 넘버(1~255)를
선택합니다. MPS의 슬레이브 넘버는 MP STUDIO 통신포트 설정에서 확인 및 설정이 가능합니다.

- 145 -
MP STUDIO MANUAL

Ⅲ. MP STUDIO 통신포트 설정

MP STUDIO 통신포트 설정창에서 HMI와 연결하고자 하는 통신포트 채널의 BAUDRATE를 38400,


MODE를 CNET(XBC/LINK), SLAVE ADDRESS를 1로 변경합니다.

변경한 통신포트 설정은 프로그램 다운로드를 실행할 때 MPS제품에 적용됩니다.

Ⅳ. 비트 메모리 제어

오브젝트 탭에서 램프를 선택하고 마우스로 Drag&Drop하여 작화창의 원하는 위치에 램프


오브젝트를 생성합니다.

- 146 -
MP STUDIO MANUAL

램프를 더블클릭하여 나타나는 속성창에서 아래처럼 램프의 이미지를 변경합니다.

Basic탭에서 Address 입력창에 P32를 입력합니다.

- 147 -
MP STUDIO MANUAL

Effect&Action탭에서 ADD를 누르고 BIT를 선택하고 하위 ACTION탭에서 P32를 입력하고


Reverse를 선택합니다.

HMI를 동작시키면 최초에 램프는 OFF되어 있고, 램프를 클릭하면 램프가 점등되면서 MPS 제품의
P32(릴레이출력)가 ON됩니다. (MPS-8A4R 기준으로 P32는 릴레이 출력입니다.)

< 램프:P32가 소등된 상태 > < 클릭하여 램프:P32가 점등된 상태 >

- 148 -
MP STUDIO MANUAL

MPS-8A4R 제품은 아래와 같이 RS232를 PC와 연결하였으며 램프가 점등될 때 P32 출력 LED도
같이 점등됩니다.

- 149 -
MP STUDIO MANUAL

Ⅴ. 워드 메모리 제어
MPS제품의 D100 워드 메모리에는 50을 입력하고 D200 워드 메모리에는 -25를 입력해
보겠습니다.

M2I의 TOP Design 소프트웨어에서 Object탭의 Numeric을 작업창의 생성하고 하는 위치에


마우스로 Drag&Drop합니다.

Numeric을 더블클릭하여 속성창을 띄우고 아래처럼 Address에 D100을 입력합니다.

- 150 -
MP STUDIO MANUAL

Input탭의 Use Input 체크박스를 체크하고 Virture Keyboard의 Pop-up을 선택하여 숫자를
클릭하면 키패드가 생성되도록 설정합니다.

위와 같은 방식으로 Numeric 오브젝트를 하나 더 생성시키고 Data탭에서 Address를 D200으로


Type을 DEC로 선택합니다.

- 151 -
MP STUDIO MANUAL

HMI를 동작시키면 두 개의 Numeric 오브젝트는 0이 표시됩니다. 이후, D100의 Numeric에는


50을 입력하고 D200의 Numeric에는 -25를 클릭하여 키패드에 입력하면 두 개의 Numeric은 각각
50, -25로 표기됩니다.

<HMI 실행시 초기 D100,D200 값> <키패드를 입력하여 변경된 D100,D200 값>

또한, MPS제품의 D100과 D200의 워드 메모리에도 각각 50, -25가 입력되어 아래와 같이


모니터링으로 확인이 가능합니다.

M2I의 HMI를 CNET 프로토콜을 이용하여 저희 MPS 제품과 연결하는 예를 설명하였으며 CNET
프로토콜 타기업의 HMI도 연결이 가능합니다. 기업마다의 HMI 소프트웨어가 다르므로 연결하고자
하는 HMI의 제조사가 제공하는 매뉴얼을 참조바랍니다.

- 152 -
MP STUDIO MANUAL

6.3.4. EasyView를 사용할 경우

Ⅰ. EasyView 소프트웨어 및 모델명


- 본 매뉴얼에서는 EasyBuilder Pro V6.04.02.552를 사용하였습니다.
- 본 매뉴얼에서는 MT6071iP/MT807iP (800x480)을 사용하였습니다.

Ⅱ. EasyBuilder Pro 새 프로젝트 생성


- 새 프로젝트를 실행하여 사용하고자 하는 모델명을 선택합니다. 본 사용설명서에서는
MT6071iP/MT8071iP (800x480)를 기준으로 설명하였습니다.

<그림 1 - EasyBuilder Pro 모델명 선택 >

Ⅲ. EasyBuilder Pro 시스템 파라미터 설정


- 통신 프로토콜을 추가하기 위하여 시스템 파라미터 설정에서 “디바이스/서버 추가” 버튼을
클릭합니다.

- 153 -
MP STUDIO MANUAL

<그림 2 - EasyBuilder Pro 디바이스 추가 >

Ⅳ. EasyBuilder Pro 프로토콜 설정


- 하기와 같이 디바이스의 속성값을 변경합니다.
- 위치 : 로컬
- 디바이스 유형 : LS MASTER-K Cnet
- 인터페이스 : 사용하고자 하는 통신 방식을 선택
- COM : 9,600~115,200에서 사용하고자 하는 통신속도를 설정합니다. 본 매뉴얼에서는
38,400을 선택합니다. (통신거리가 길 경우 통신속도를 낮추어 통신 안정성을 높일
수 있습니다.)
- 디바이스 기본 국번 : 현재 설정하고 있는 디바이스의 국번을 1~31중에서 선택합니다. 본
매뉴얼에서는 1번을 선택합니다. (RS485 통신방식을 사용하여 여러대의 PLC와
연결할 경우, Ⅲ. EasyBuilder Pro 시스템 파라미터 설정의 “디바이스/서버 추가”
버튼을 사용하여 연결하고자 하는 PLC의 개수만큼 다비이스를 생성하여 사용해야
합니다.)

- 154 -
MP STUDIO MANUAL

<그림 3 - EasyBuilder Pro 디바이스 속성 설정 >

Ⅴ. EasyBuilder Pro 세트비트 생성


EasyBuilder Pro 작화 화면의 상단 메뉴의 오브젝트 -> 세트비트를 선택하고 읽기주소
파라미터를 변경합니다. 본 매뉴얼에서는 MPA-16A16RX 제품의 출력 릴레이 P32~P39를
제어하는 버튼을 생성하였습니다.
- 디바이스 : 위에서 생성한 디바이스를 선택합니다. RS485 통신방식을 사용하여 여러대의
PLC를 제어하기 위해서는 디바이스를 제어하고자 하는 PLC 이름을 선택해야 합니다.
- 주소 : 비트주소는 PW_Bit와 MW_Bit 만을 지원합니다. P32는 PW_Bit를 선택하고 32를
기입합니다.
- 설정 스타일 : 세트ON(터치시 PLC에 ON을 전달), 세트OFF(터치시 PLC에 OFF를 전달).
모멘터리(터치시 PLC에 ON을 전달하고 터치를 땠을 때 PLC에 OFF를 전달)

- 155 -
MP STUDIO MANUAL

<그림 4 - EasyBuilder Pro 세트비트 속성 설정 >

- MPA-16A16RX 제품의 16개의 릴레이접점 P32~P39를 각각 제어하기 위한 버튼을 하기와


같이 생성하였습니다.

<그림 5 - EasyBuilder Pro 세트비트(스위치) 생성 >

- 156 -
MP STUDIO MANUAL

- 하기와 같이 P34버튼을 터치시 릴레이출력 P34가 ON됩니다.

그림 6 - EasyBuilder Pro 세트비트(스위치) 제어 >

그림 6 - EasyBuilder Pro 세트비트(스위치) 제어 >

- 157 -
MP STUDIO MANUAL

Ⅵ. EasyBuilder Pro 비트램프 생성


EasyBuilder Pro 작화 화면의 상단 메뉴의 오브젝트 -> 비트램프를 선택하고 읽기주소
파라미터를 변경합니다. 본 매뉴얼에서는 MPA-16A16RX 제품의 출력 릴레이 P32~P39가
ON되면 각각 M10~M17이 ON되도록 MP STUDIO 프로그램을 하고 M0~M17의 상태를
표시하는 램프를 생성하였습니다.
- 디바이스 : 위에서 생성한 디바이스를 선택합니다. RS485 통신방식을 사용하여 여러대의
PLC를 제어하기 위해서는 디바이스를 제어하고자 하는 PLC 이름을 선택해야 합니다.
- 주소 : 비트주소는 PW_Bit와 MW_Bit 만을 지원합니다. M10은 MW_Bit를 선택하고
10을 기입합니다.

<그림 7 - MP STUDIO 프로그램 작성 및 EasyBuilder Pro 비트램프 생성 >

<그림 7 - MP STUDIO 프로그램 작성 및 EasyBuilder Pro 비트램프 생성 >

- 158 -
MP STUDIO MANUAL

- 총 8개(MW_Bit 10 ~ 17)의 램프를 버튼 하단에 생성하고 P35 버튼을 터치하면 아래와


같이 동작됩니다.

<그림 8 - MP STUDIO 프로그램 작성 및 EasyBuilder Pro 비트램프 동작 >

<그림 8 - MP STUDIO 프로그램 작성 및 EasyBuilder Pro 비트램프 동작 >

Ⅶ. EasyBuilder Pro 수치 생성
EasyBuilder Pro 작화 화면의 상단 메뉴의 오브젝트 -> 수치를 선택하고 읽기주소
파라미터를 변경합니다. 본 매뉴얼에서는 D56에 1234를 D67에 2345를 D123에 3456을
MP STUDIO로 프로그램을 작성&다운로드 하고 EasyBuilder Pro에 수치 오브젝트 3개를
만들었습니다.

- 159 -
MP STUDIO MANUAL

- 입력허가 : 디스플레이만을 할 경우 체크박스를 해제하고 입력까지 할 경우 체크를 합니다.


- 주소 : D56의 경우 DW를 선택하고 주소값에 56을 입력합니다.

<그림 9 - EasyBuilder Pro 세트비트(스위치) 생성 >

- 아래와 같이 MP STUDIO에서 D56,D67,D123에 각각 1234, 2345, 3456을 계속


저장하고 있어 EasyView에서도 그 수치가 모니터링 되고 있습니다.

<그림 10 - EasyBuilder Pro 수치 모니터링 확인 >

- 160 -
MP STUDIO MANUAL

입력허가를 그대로 유지하고 D0, D62,D134에 각각 4321, 5432, 6543을 EasyView에서


터치하여 입력하고 MP STUDIO에서 모니터링하여 값이 변경되는지 아래와 같이
확인하였습니다.

<그림 11 - EasyBuilder Pro 수치입력 및 MP STUDIO 수치 입력 모니터링 >

Ⅷ. 아날로그 입력값 표시
MP STUDIO에서 ADC 펑션블럭을 이용하여 프로그램하고 다운로드 합니다. 본
매뉴얼에서는 CHANNEL: 0, MAX: 30000, MIN: 0, OUT: D80을 하였습니다.
EasyBuilder Pro에서는 작화 화면의 상단 메뉴의 오브젝트 -> 수치를 선택하고 읽기주소
파라미터를 DW 80으로 입력후 오브젝트를 생성합니다. (PLC: MPA-16A16RX,
아날로그입력 0번채널은 0~5V 범위로 설정)
- 수치 오브젝트 속성에서 수치형식->표시형식 칸에 있는 소수점이상 값이 기본으로 4로
설정되어 있으므로 5자리까지 가능하도록 5로 변경해야 합니다.)

- 161 -
MP STUDIO MANUAL

<그림 12 - 아날로그 입력모듈 CH0에 캘리브레이터로 2.5V 입력 >

<그림 11 - EasyBuilder Pro 수치입력 및 MP STUDIO 수치 입력 모니터링 >

- 162 -
MP STUDIO MANUAL

Ⅸ. 온도 표시
MP STUDIO에서 NTEMP 펑션블럭을 이용하여 프로그램하고 다운로드 합니다. 본
매뉴얼에서는 CHANNEL: 1, OUT: D81으로 프로그램 하였습니다. EasyBuilder Pro에서는
작화 화면의 상단 메뉴의 오브젝트 -> 수치를 선택하고 읽기주소 파라미터를 DW 81으로
입력하고 수치형식 탭에서 소수점이상:3, 소수점이하1로 설정하여 오브젝트를 생성합니다.
(PLC: MPA-16A16RX, 아날로그입력 1번채널은 NTC 온도센서 입력으로 설정)

<그림 14 - MP STUDIO 프로그램에서 NTEMP펑션블럭으로 온도값 읽기 >

<그림 14 - EasyBuilder Pro 수치 오브젝트 생성 >

- 163 -
MP STUDIO MANUAL

<그림 15 - EasyBuilder Pro에서 온도 모니터링 >

<그림 16 - NTC 온도센서를 CH1에 연결하고 CH1의 딥스위치를 NTC로 설정 >

- 164 -
MP STUDIO MANUAL

7. I2C

I2C는 필립스(Philips)사에서 제안한 근거리용 표준 직렬통신 방식입니다. 2가닥의 통신선으로 하나의 마스터
장비가 여러개의 슬레이브와 반이중으로 통신을 할 수 있는 특징이 있습니다. 2가닥의 통신선은 아래와 같습니다.
⦁ SDA : Data Line
⦁ SCL : Clock Line
I2C는 마스터가 송신하는 SCL(CLock)을 기준으로 슬레이브는 동기식으로 동작합니다. 마스터가 SCL을 HIGH를
출력하고 SDA를 LOW로 출력하면, 슬레이브는 0으로 인식하고 SDA를 HIGH로 출력하면, 슬레이브는 1로
인식합니다.

S : Start, B1..Bn : Data, P : Stop

MPS 제품군의 I2C 특징은 아래와 같습니다.


⦁ 마스터모드만 제공합니다. 슬레이브모드가 필요할 경우, MPINO 제품군을 사용해 주시기 바랍니다.
⦁ 400kbps 속도로 통신합니다.

- 165 -
MP STUDIO MANUAL

7.1. ISTA
START 컨디션을 만듭니다.

<그림7-1 ISTA 펑션블럭>

Parameter Data Type


ISTA - 펑션블럭명으로서, I2C START의 약자입니다.

슬레이브 제품에서 I2C통신을 위해 지정한 슬레이브 주소를 입력합니다.


unsigned
ADDRESS 슬레이브 주소는 7비트로서, 1 ~ 127 사용이 가능합니다. 0은 슬레이브
byte
전체를 호출하기 위해 사용됩니다.

I2C는 송신모드와 수신모드가 있습니다. READ에 FALSE 또는 @OFF를


READ bit
입력하면 송신모드가 되고, TRUE 또는 @ON을 입력하면 수신모드가 됩니다.

- 166 -
MP STUDIO MANUAL

7.2. IWR
마스터인 MPS 제품에서 슬레이브 제품으로 1개의 바이트를 송신합니다.

<그림7-2 IWR 펑션블럭>

Parameter Data Type


IWR - 펑션블럭명으로서, I2C WRITE의 약자입니다.

unsigned
DATA 슬레이브 제품으로 송신할 바이트를 입력합니다.
byte

- 167 -
MP STUDIO MANUAL

7.3. IRD
마스터인 MPS 제품에서 슬레이브 제품으로 1개의 바이트를 수신합니다.

<그림7-3 IRD 펑션블럭>

Parameter Data Type


IRD - 펑션블럭명으로서, I2C READ의 약자입니다.

unsigned
OUT 슬레이브 제품으로 수신한 데이터를 저장할 메모리를 입력합니다.
byte

슬레이브 제품으로 수신을 받은 후에, 슬레이브 제품으로 ACK 신호를


ACK bit 송신할지를 결정합니다. FALSE 또는 @OFF 이면, ACK를 송신하지 않고 TRUE
또는 @ON이면, ACK를 송신합니다.

- 168 -
MP STUDIO MANUAL

7.4. ISTP
STOP 컨디션을 만듭니다.

<그림7-4 ISTP 펑션블럭>

Parameter Data Type


ISTP - 펑션블럭명으로서, I2C STOP의 약자입니다.

- 169 -
MP STUDIO MANUAL

7.5. ISR
마스터인 MPS 제품에서 STOP 컨디션을 만듭니다.

<그림7-5 ISR 펑션블럭>

Parameter Data Type


ISR - 펑션블럭명으로서, I2C STATUS REGISTER의 약자입니다.

unsigned
OUT I2C 상태값을 저장할 메모리를 입력합니다.
byte

- 170 -
MP STUDIO MANUAL

7.6. I2C Example


정밀하고 제품의 전원이 차단되어도 유지되는 시간을 사용하기 위해 DS3231 RTC와의 통신을 하는 예제입니다.
DS3231는 DS3231_WR과 DS3231_RD의 라이브러리 펑션블럭을 제공하고 있지만, DS3231 I.C가 I2C
통신방식이기 때문에, 여기서 예를 들어 설명하도록 하겠습니다.

<그림7-6-1 DS3231의 시간값 송신 프로토콜>

<그림7-6-2 MP STUDIO에서 초,분,시간을 읽기 위한 프로그램>

- 171 -
MP STUDIO MANUAL

① ISTA 펑션블럭 실행
STEP Data
START S 마스터에서 START 컨디션을 만듭니다.
SLAVE ISTA 펑션블럭의 ADDRESS에 104를 입력합니다.
1101000
ADDRESS DS3231 I.C는 슬레이브 주소가 104(1101000)로 정해져 있습니다.
<R/W> 0 ISTA 펑션블럭의 READ에 @OFF를 입력하여, 마스터를 송신모드를 만듭니다.
A 1 DS3231 I.C에서 ACK신호가 옵니다. ISTA 펑션블럭에서 알아서 처리합니다.

② IWR 펑션블럭 실행
STEP Data
WORD IWR 펑션블럭의 DATA에 0을 입력합니다. DS3231에서 읽어올 번지수를
0x00
ADDRESS 입력하는 것으로서 0x00은 초, 0x01은 분, 0x02는 시간입니다.
A 1 DS3231 I.C에서 ACK신호가 옵니다. ISTA 펑션블럭에서 알아서 처리합니다.

③ ISTA 펑션블럭 실행
STEP Data
SR - 마스터에서 REPEAT START 컨디션을 만듭니다.
SLAVE ISTA 펑션블럭의 ADDRESS에 104를 입력합니다.
1101000
ADDRESS DS3231 I.C는 슬레이브 주소가 104(1101000)로 정해져 있습니다.
<R/W> 1 ISTA 펑션블럭의 READ에 @ON을 입력하여, 마스터를 수신모드를 만듭니다.
A 1 DS3231 I.C에서 ACK신호가 옵니다. ISTA 펑션블럭에서 알아서 처리합니다.

④ IRD 펑션블럭 실행
STEP Data
DS3231 I.C로부터 초값이 수신되며, 수신된 초값을 IRD 펑션블럭의 OUT
DATA 초
파라메타에 기입된 메모리에 저장됩니다. 예제에서는 D0에 초가 저장됩니다.
마스터에서 데이터를 수신 받았으므로, 슬레이브에게 ACK를 송신해야 합니다.
ACK 1 ACK를 송신하면 슬레이브인 DS3231는 0x00(초) 레지스터리 번지에서 +1을
더한 0x01(분) 레지스터리 값을 마스터에게 송신합니다.

⑤ IRD 펑션블럭 실행
STEP Data
DS3231 I.C로부터 분값이 수신되며, 수신된 분값을 IRD 펑션블럭의 OUT
DATA 초
파라메타에 기입된 메모리에 저장됩니다. 예제에서는 D1에 분이 저장됩니다.
마스터에서 데이터를 수신 받았으므로, 슬레이브에게 ACK를 송신해야 합니다.
ACK 1 ACK를 송신하면 슬레이브인 DS3231는 0x01(분) 레지스터리 번지에서 +1을
더한 0x02(시간) 레지스터리 값을 마스터에게 송신합니다.

- 172 -
MP STUDIO MANUAL

⑥ IRD 펑션블럭 실행
STEP Data
DS3231 I.C로부터 시간값이 수신되며, 수신된 시간값을 IRD 펑션블럭의 OUT
DATA 초
파라메타에 기입된 메모리에 저장됩니다. 예제에서는 D2에 시간이 저장됩니다.
마스터에서 데이터를 수신 받았으므로, 슬레이브에게 ACK를 송신해야 합니다.
ACK를 송신하면 슬레이브인 DS3231는 0x02(시간) 레지스터리 번지에서 +1을
더한 0x03(요일) 레지스터리 값을 마스터에게 송신합니다. 예제에서는 다음
데이터를 수신하지 않고자 ACK를 0... 즉, @OFF를 입력하여 데이터 수신을
ACK 1 마칩니다. ※ 주의.. ACK를 1... 즉, @ON을 입력하고 다음 스텝인
ISTP를 실행하면, 슬레이브와 마스터의 SDA가 충돌이 일어나서
마스터인 MPS는 슬레이브 모드로 자동진입이 됩니다. 때문에 이후,
I2C를 사용하지 못합니다. (프로그램을 수정하고 전원을 재투입하면
정상동작합니다.)

⑦ ISTP 펑션블럭 실행
STEP Data
ISTP 마스터에서 STOP 컨디션을 만듭니다.

DS3231는 데이터의 형식이 16진수인 HEX값으로 동작됩니다. HEX를 10진수인 Decimal값으로 변경할려면,
H2D 펑션블럭을 Decimal을 Hex값으로 변경할려면 D2H 펑션블럭을 이용해주시기 바랍니다.

- 173 -
MP STUDIO MANUAL

8. Library

8.1. DS3231 (Real Time Clock)


MP STUDIO에서 1초마다 초를 증가시키고 60초가 되면 분이 증가시키는 방식으로 시계를 만들 수
있습니다. 하지만, MPS 제품의 전원이 차단되면 계산된 시간을 유지하지 못하고 전원이 차단되어 있
는 동안은 시간이 증가하지 않는 문제가 있습니다. 또한, MPS 제품의 타이머는 MPS 제품에 삽입되어
있는 오실레이터(14.7456Mhz)의 클럭에 의해 동작되는 것입니다. 하지만, 컨트롤러에 들어가는 클럭
의 주파수는 다소 오차범위가 많습니다. 때문에, MPS에서 시간을 만들면 오래 지날수록 시간에 오차
가 발생합니다.

이러한 문제를 DS3231를 사용하는 방법으로 해결할 수 있습니다. 이렇게 정밀한 시계 기능이 있는
것을 RTC(Real Time Clock)이라고 말하며, 여러 RTC중에서 DS3231는 매우 정밀한 RTC입니다.

DS3231의 오차율은 아래와 같습니다.


♦ Accuracy ±2ppm from 0°C to +40°C ♦ Accuracy ±3.5ppm from -40°C to +85°C

상온에서 분당 2개의 펄스의 오차율로서, 1년으로 계산하면 약32.4초의 오차가 발생할 수 있습니다.

DS3231는 I.C의 이름입니다. MPS는 DS3231를 기본으로 장착하지 않고, 모듈로서 연결할 수 있도
록 지원하고 있습니다.

<그림8-1 MPS-16A8R와 DS3231 모듈 연결>

<그림8-1-0 DS3231의 시간 레지스터리>

- 174 -
MP STUDIO MANUAL

8.1.1. DS3231_WR (DS3231 Write)


DS3232 I.C에 년,월,일,요일,시,분,초를 설정합니다. 모든 파라메타는 10진수를 사용합니다.

<그림8-1-1 DS3231_WR 펑션블럭>

Parameter Data Type


YEAR unsigned 0~99(년)을 입력할 수 있습니다. 2000년을 뺄셈한 값을 입력하시면 됩니다.
(년) byte 20은 2020을 의미합니다.
MONTH unsigned
1 ~ 12(월)을 입력할 수 있습니다.
(월) byte
DATE unsigned
1 ~ 31(일)을 입력할 수 있습니다.
(일) byte
DAY unsigned
1 ~ 7(요일)을 입력할 수 있습니다.
(요일) byte
HOUR unsigned
0 ~ 23(시)를 입력할 수 있습니다.
(시) byte
MINUTE unsigned
0 ~ 59(분)을 입력할 수 있습니다.
(분) byte
SECOND unsigned
0 ~ 59(초)를 입력할 수 있습니다.
(초) byte

- 175 -
MP STUDIO MANUAL

8.1.2. DS3231_RD (DS3231 Read)


DS3232 I.C에 년,월,일,요일,시,분,초를 읽어옵니다. 모든 파라메타는 10진수를 사용합니다.

<그림8-1-2 DS3231_RD 펑션블럭>


Parameter Data Type
YEAR unsigned 0~99(년)이 파라메타에 입력한 메모리에 저장됩니다. 저장된 메모리 값에서
(년) byte 2000년을 덧셈하여 사용하실 수 있습니다.
MONTH unsigned
1 ~ 12(월)이 파라메타에 입력한 메모리에 저장됩니다.
(월) byte
DATE unsigned
1 ~ 31(일)이 파라메타에 입력한 메모리에 저장됩니다.
(일) byte
DAY unsigned
1 ~ 7(요일)이 파라메타에 입력한 메모리에 저장됩니다.
(요일) byte
HOUR unsigned
0 ~ 23(시)이 파라메타에 입력한 메모리에 저장됩니다.
(시) byte
MINUTE unsigned
0 ~ 59(분)이 파라메타에 입력한 메모리에 저장됩니다.
(분) byte
SECOND unsigned
0 ~ 59(초)이 파라메타에 입력한 메모리에 저장됩니다.
(초) byte

- 176 -
MP STUDIO MANUAL

8.2. CLCD (Character LCD / PCF8574)


캐릭터 LCD는 DB0~DB7을 직접제어하는 방식으로 사용할 수 있지만, 직접제어하기 위해서는
MCU의 GPIO를 많이 사용해야 하므로 I2C 통신을 이용하여 제어할 수 있도록 모듈로 만들어진 것이
있습니다.

본 라이브러리를 통하여 저렴하고 많이 사용하고 있는 PCF8574 모듈을 캐릭터 LCD에 연결하여 I2C
통신으로 캐릭터 LCD를 제어할 수 있습니다.

<그림8-2-1 PCF8574 모듈 및 CLCD와의 연결>

 CLCD에 표현되는 문자의 선명도가 흐릴 경우, PCF8574에 있는 가변저항을 조절하여 선명도를


설정할 수 있습니다.

8.2.1. CLCD 주소
PCF8574 모듈의 기본주소는 0x27입니다. 2개 이상의 캐릭터 LCD를 사용할 경우, 같은 주소인 제품
2개를 사용할 수 없습니다. 한개의 캐릭터 LCD가 0x27이면, 다른 한개는 0x27 이외의 주소를 가져
야 합니다. 이렇게 주소를 변경하기 위해서는 PCF8574 모듈의 PCB 보드에 있는 A0, A1, A2의 패드
를 숏트시키는 것으로 변경할 수 있습니다.

PCF8574의 주소는 아래처럼 이루어져 있습니다.

<그림8-2-2 PCF8574 모듈의 어드레스 주소>

여기서 A0, A1, A2는 PCB보드에서 풀업(HIGH)이 되어 있어 1로 인식이 되어 있습니다.


따라서, A0의 패드 2개를 숏트 시키면, 0x27에서 1을 뺀 0x26이 주소가 됩니다.
A1의 패드 2개를 숏트 시키면, 0x27에서 2를 뺀 0x25가 주소가 됩니다.
A2의 패드 2개를 숏트시키면, 0x27에서 4를 뺀 0x23이 주소가 됩니다.
A0 패드 2개를 숏트 시키고 A1 패드 2개를 숏트 시키면, 0x27에서 1을 빼고 2를 뺀 0x24가 주소
가 됩니다.

- 177 -
MP STUDIO MANUAL

8.2.2. CINI (CLCD Initialize)


CLCD는 전원이 투입되면, 항상 초기화를 해주어야 합니다. 초기화를 하지 않을 경우, CLCD는 작동
하지 않습니다.

<그림8-2-2-1 CLCD 펑션블럭>

@begin 비트접점은 MPS의 전원투입시 최초 1회만 ON되는 특수 비트 메모리입니다. CLCD의 초기화는


전원투입시 1회만 실행되면 되므로 @begin을 사용하시기 바랍니다.

Parameter Data Type


ADR BYTE, WORD, DWORD 초기화할 CLCD의 주소값을 입력합니다.
TYPE BYTE, WORD, DWORD 초기화할 CLCD의 TYPE을 입력합니다.

여러 가지의 CLCD 형식이 있으므로, CLCD 형식에 맞는 TYPE을 기입해야 합니다.


현재는 TYPE을 구분하지 않습니다. 숫자 “0”을 기입해 주시기 바랍니다.

현재 사용할 수 있는 CLCD의 형태는 아래와 같습니다. ( 문자 x 행 )


① 16문자 x 1행
② 16문자 x 2행
③ 20문자 x 2행
④ 20문자 x 4행
⑤ 24문자 x 2행
⑥ 40문자 2행

16 x 4행의 CLCD는 사용할 수 없습니다. 사용하고자 할 경우, 저희 아이로직스로 연락해 주시기 바


랍니다.

- 178 -
MP STUDIO MANUAL

8.2.3. CLOC (CLCD Location)


CLCD에 글씨를 쓰기 전에 위치를 잡아주기 위해 사용합니다. CLOC의 X,Y좌표로 커서가 이동합니
다.

<그림8-2-3-1 CLOC 펑션블럭>

Parameter Data Type


ADR BYTE, WORD, DWORD 커서의 좌표를 이동할 CLCD의 주소값 입력
X BYTE, WORD, DWORD X좌표 입력
Y BYTE, WORD, DWORD Y좌표 입력

X, Y좌표는 0부터 시작하며, 캐릭터 LCD의 종류에 따라 좌표의 최대값은 변경됩니다.

⦁ 20 x 4 : X는 19, Y는 3이 최대값입니다.
⦁ 16 x 2 : X는 15, Y는 1이 최대값입니다.

X, Y좌표는 아래와 같이 X(가로), Y(세로)의 좌표를 의미합니다.


X
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Y

<그림8-2-3-2 CLCD 좌표>

X가 3이고, Y가 1인 좌표는 아래와 같습니다.

<그림8-2-3-3 CLCD X:3, Y:1 좌표>

- 179 -
MP STUDIO MANUAL

8.2.4. CSTR (CLCD String)


CLCD에 문자열을 표시합니다.
CSTR로 표현할 수 있는 문자는 ASCII코드로서 영문, 숫자, 특수문자로 한정되어 있습니다.
자세한 문자열은 아래의 표에서 확인할 수 있습니다.

<그림8-2-4-1 CSTR로 표현할 수 있는 문자열> <그림8-2-4-2 CSTR 펑션블럭>

Parameter Data Type


ADR BYTE, WORD, DWORD 문자열을 표시할 CLCD의 주소값 입력
STRING BYTE, WORD, DWORD 문자열 입력

아래에 문자열을 표현하는 예를 보시기 바랍니다.

<그림8-2-4-3 CSTR 예제>

MPS제품에 전원이 투입되면, 최초 1회만 CINI와 CCLS 펑션블럭을 실행하여, CLCD를 초기화 하고
화면을 클리어 시킵니다. 이후, 1초(@100)마다 CLOC와 CSTR의 펑션블럭을 실행하여, X좌표:4 와 Y
좌표:0에 "HELLOW" 문자열을 표현합니다.

아래에 16x2 CLCD에 표현된 문자열을 나타내었습니다.

<그림8-2-4-4 CLCD에 "HELLOW"를 표시>

- 180 -
MP STUDIO MANUAL

8.2.5. CINT (CLCD Integer)


CLCD에 숫자(10진수)를 표시합니다.

<그림8-2-5-1 CINT 펑션블럭>

Parameter Data Type


ADR BYTE, WORD, DWORD 숫자(10진수)를 표시할 CLCD의 주소값 입력
IN BYTE, WORD, DWORD 표시할 숫자(10진수)를 입력
DIGIT BYTE, WORD, DWORD 표시할 숫자(10진수)의 자릿수를 입력
ZERO BIT 표시할 숫자(10진수)의 앞자리 0의 표시 유/무
SIGN BIT 표시할 숫자(10진수)의 양(+), 음(-)의 부호표시 유/무

아래에 문자열을 표현하는 예1를 보시기 바랍니다. (ZERO : @on)

<그림8-2-5-2 CINT 예제1>

MPS제품에 전원이 투입되면, 최초 1회만 CINI와 CCLS 펑션블럭을 실행하여, CLCD를 초기화 하고
화면을 클리어 시킵니다. 이후, 1초(@100)마다 CLOC와 CINT의 펑션블럭을 실행하여, X좌표:4 와 Y
좌표:0에 1234를 5자리로 앞자리 0을 포함하여 표시합니다.

아래에 16x2 CLCD에 표현된 문자열을 나타내었습니다.

<그림8-2-5-3 CLCD에 01234를 표시>

- 181 -
MP STUDIO MANUAL

또한, 아래에 문자열을 표현하는 예2를 보시기 바랍니다. (ZERO : @off, SIGN : @on)

<그림8-2-5-4 CINT 예제2>

MPS제품에 전원이 투입되면, 최초 1회만 CINI와 CCLS 펑션블럭을 실행하여, CLCD를 초기화 하고
화면을 클리어 시킵니다. 이후, 1초(@100)마다 CLOC와 CINT의 펑션블럭을 실행하여, X좌표:4 와 Y
좌표:0에 1234를 5자리로 앞자리 0을 제외하고 양,음의 부호와 함께 표시합니다.

아래에 16x2 CLCD에 표현된 문자열을 나타내었습니다.

<그림8-2-5-5 CLCD에 + 1234를 표시>

- 182 -
MP STUDIO MANUAL

8.2.6. CHEX (CLCD Hexadecimal)


CLCD에 숫자(16진수)를 표시합니다.

<그림8-2-6-1 CHEX 펑션블럭>

Parameter Data Type


ADR BYTE, WORD, DWORD 숫자(10진수)를 표시할 CLCD의 주소값 입력
IN BYTE, WORD, DWORD 표시할 숫자(16진수)를 입력
DIGIT BYTE, WORD, DWORD 표시할 숫자(16진수)의 자릿수를 입력
ZERO BIT 표시할 숫자(16진수)의 앞자리 0의 표시 유/무

아래에 문자열을 표현하는 예1를 보시기 바랍니다. (ZERO : @off)

<그림8-2-6-2 CHEX 예제1>

MPS제품에 전원이 투입되면, 최초 1회만 CINI와 CCLS 펑션블럭을 실행하여, CLCD를 초기화 하고
화면을 클리어 시킵니다. 이후, 1초(@100)마다 CLOC와 CHEX의 펑션블럭을 실행하여, X좌표:2 와 Y
좌표:1에 16진수 1234를 5자리로 앞자리 0을 제외하여 표시합니다.

또한, ZERO를 @On으로 하면 앞자리 0을 포함하여 표시합니다.

아래에 16x2 CLCD에 표현된 문자열을 나타내었습니다.

<그림8-2-6-3 ZERO:@off일 경우> <그림8-2-6-4 ZERO:@on일 경우>

- 183 -
MP STUDIO MANUAL

8.2.7. CCLS (CLCD Clear)


CLCD의 화면에 표시되고 있는 문자를 모두 지웁니다.

<그림8-2-7-1 CCLS 펑션블럭>

Parameter Data Type


ADR BYTE, WORD, DWORD 화면을 클리어 하고자 하는 CLCD의 주소값 입력

CLCD에 서로 다른 길이의 문자열을 표현할 경우, 기존 문자열이 지원지지 않는 경우가 발생하므로,


주기적으로 CCLS 펑션블럭으로 화면을 클리어 시켜주는 것이 좋습니다.

아래와 같이 프로그램 되었을 경우, 기존 문자열과 새로운 문자열이 겹쳐지는 문제점이 생길 수 있습


니다.

<그림8-2-7-2 문자열 중첩>

MPS제품에 전원이 투입되면, 최초 1회만 CINI와 CCLS 펑션블럭을 실행하여, CLCD를 초기화 하고
화면을 클리어 시킵니다. 이후, 1초후에 한번만 CLOC와 CSTR 펑션블럭을 실행하여 X좌표:2와 Y좌
표:1에 “PRESS"를 표시합니다. 이후, 1초후에 한번만 CLOC와 CSTR 펑션블럭을 실행하여 X좌표:2와
Y좌표:1에 "TEMP"를 표시합니다.

위와 같이 동작했을 경우, 처음에 표시한 “PRESS”보다 뒤에 표시한 “TEMP‘의 문자길이가 작아서


CLCD는 ”PRESS" -> "TEMP“로 표시되지 않고 ”PRESS" -> "TEMPS"로 표시됩니다. "PRESS" 문자에
서 “TEMP"문자를 덮어씌우면 ”PRESS"의 마지막 글짜인 “S"는 덮어씌워지지 않게 되기 때문입니다.

따라서, 이러한 오류를 격지 않게 하기 위해서는 CLCD를 잘 활용하여 프로그램해야 합니다.

 캐릭터LCD의 특징으로 화면을 클릭어 시키면(CCLS 펑션블럭을 실행하면), 캐릭터 LCD의 커서 좌


표가 X좌표:0, Y좌표:0으로 초기화 됩니다. CCLS를 실행 후에는 CLOC 펑션블럭을 사용하여 커서 좌
표를 변경해 주시기 바랍니다.

- 184 -
MP STUDIO MANUAL

8.2.8. CCON (CLCD Cursor ON)


CLCD에 커서의 표시를 ON 시킵니다.

<그림8-2-8-1 CCON 펑션블럭 >

Parameter Data Type


ADR BYTE, WORD, DWORD 커서를 ON시키고자 하는 CLCD의 주소값 입력

커서는 CLCD의 전원이 투입되었을 때 OFF되어 있습니다. 커서를 ON시키고자 할 경우, CCON 펑션
블럭을 사용하여 커서를 표시할 수 있고, CCOF 펑션블럭을 사용하여 커서를 OFF시킬 수 있습니다.

커서는 CLCD의 전원이 투입되었을 때 X:0, Y:0 좌표에 표시됩니다. 이후, 문자열을 표시하면 표시한
문자열의 뒷 쪽에 커서가 표시됩니다. CLOC 펑션블럭을 사용하여 커서의 좌표를 이동시킬 수 있습니
다.

<그림8-2-8-2 커서의 초기위치 > <그림8-2-8-3 HELLOW 문자열 표시후 커서위치 >

<그림8-2-8-4 CLOC X좌표:2, Y좌표:1의 커서위치 > <그림8-2-8-5 CCLS 이후 커서위치 >

CCLS 펑션블럭을 사용하여 CLCD의 화면을 클리어 시키면 커서의 위치는 X좌표:0, Y좌표:0으로 초
기화 되므로 주의해야 합니다.

- 185 -
MP STUDIO MANUAL

8.2.9. CCOF (CLCD Cursor OFF)


CLCD에 커서의 표시를 OFF 시킵니다.

<그림8-2-9-1 CCOF 펑션블럭 >

Parameter Data Type


ADR BYTE, WORD, DWORD 커서를 OFF시키고자 하는 CLCD의 주소값 입력

커서는 CLCD의 전원이 투입되었을 때 OFF되어 있습니다. 커서를 ON시키고자 할 경우, CCON 펑션
블럭을 사용하여 커서를 표시할 수 있고, CCOF 펑션블럭을 사용하여 커서를 OFF시킬 수 있습니다.

- 186 -
MP STUDIO MANUAL

8.2.10. CLON (CLCD Light ON)


CLCD에 BackLight를 ON 시킵니다.

<그림8-2-10-1 CLON 펑션블럭 >

CLCD 초기화 평션블럭인 CINI 펑션블럭을 실행하면 CLCD의 백라이트는 ON이 됩니다. 이후, CLOF
펑션블럭으로 백라이트를 OFF 시킬 수 있습니다.

CLCD의 여러 명령어를 실행할 때 바로 전에 CLON 펑션블럭이 실행되었다면, 백라이트를 ON 시키


고 CLOF 펑션블럭이 실행되었다면, 백라이트를 OFF 시킵니다.

<그림8-2-10-2 CLON 및 CLOF 펑션블럭 사용 예 >

MPS제품에 전원이 투입되면, 최초 1회만 CINI와 CCLS 펑션블럭을 실행하여, CLCD를 초기화 하고
화면을 클리어 시킵니다. 이때, CLCD의 백라이트는 ON되어져 있습니다. 이후, 백라이트OFF:P1 디지
털입력이 ON되면 X:0, Y:1 좌표에 “BackLight Off!" 문자열이 표시되면서 백라이트는 OFF가 됩니다.
이후, 백라이트ON:P0 디지털입력이 ON되면 X:0,Y:1 좌표에 ”BackLight On!" 문자열이 표시되면서
백라이트는 ON이 됩니다.

- 187 -
MP STUDIO MANUAL

8.2.11. CLOF (CLCD Light OFF)


CLCD에 BackLight를 OFF 시킵니다.

<그림8-2-11-1 CLOF 펑션블럭 >

CLCD 초기화 평션블럭인 CINI 펑션블럭을 실행하면 CLCD의 백라이트는 ON이 됩니다. 이후, CLOF
펑션블럭으로 백라이트를 OFF 시킬 수 있습니다.

자세한 사항은 8.2.10. CLON 펑션블럭에서 설명하고 있습니다.

- 188 -
MP STUDIO MANUAL

8.2.12. CPUT (CLCD PUT)


캐릭터LCD는 정해진 ASCII 문자열(영문, 숫자, 특수문자)과 일어(카타카나)만을 LCD에 표시할 수 있
습니다. 이렇게 정해진 문자열 이외에 사용자가 정의하여 LCD에 표시할 수 있도록 캐릭터LCD는 8개
의 사용자 메모리를 내장하고 있습니다.

CPUT 펑션블럭은 5x8 도트로 구성된 하나의 문자를 CLCD의 사용자 메모리에 기록시킵니다.
CLCD에서 하나의 문자는 아래와 같이 5x8개의 도트로 구성되어 있습니다.

<그림8-2-12-1 CLCD의 문자 구성 >

이중 맨밑줄(BYTE[7])은 커서로 사용되어집니다. 때문에, 맨밑줄은 제외하면 5x7개의 도트로 구성하


는 것이 좋습니다.

위의 문자는 맨윗줄(BYTE[0])부터 1,2,3,4,5,6,7,8 값으로 표현할 수 있습니다.


한글로 “나”를 표현하고자 할 경우에도 아래와 같이 사용할 수 있습니다.

<그림8-2-12-2 CPUT 펑션블럭 >

Parameter Data Type


ADR BYTE, WORD, DWORD 사용자 문자를 기록시킬 CLCD의 주소값 입력
ID BYTE, WORD, DWORD 기록시킬 사용자 문자의 ID를 입력 (0 ~ 7)
DEFINE BYTE x 8 사용자 문자의 형태를 8개의 바이트로 입력

하나의 캐릭터LCD는 최대 8개의 사용자 문자를 사용할 수 있으므로 ID는 0~7을 입력할 수 있습니
다. 또한, 하나의 문자는 8개의 행을 바이트 형태로 표현을 해야 합니다. 때문에, DEFINE에는 8개의
바이트를 “ , ”로 구분하여 입력해야 합니다.

- 189 -
MP STUDIO MANUAL

왼쪽의 “나”는 윗줄(1행)부터 아래와 같이


계산됩니다.
0x00,
0x02,
0x12,
0x12,
0x13,
0x1A,
0x02,
0x00

<그림8-2-12-3 사용자 문자 “나” >

위와 같이 사용자 문자를 8개의 바이트로 만들어 주도록 지원해주는 프로그램이 여러 있습니다. 그중


하나의 주소를 소개합니다. ( https://maxpromer.github.io/LCD-Character-Creator/ )

 CPUT 펑션블럭이 실행된 후, 캐릭터 LCD의 커서가 X:0, Y:0 좌표로 초기화 됩니다. CPUT 펑션
블럭을 실행 후에는 CLOC 펑션블럭을 사용하여 커서 좌표를 변경해 주시기 바랍니다.

 CPUT 펑션블럭을 실행하여 캐릭터 LCD에 기록시킨 사용자 정의 문자는 캐릭터 LCD의 전원이 차
단되면 데이터가 상실됩니다.

- 190 -
MP STUDIO MANUAL

8.2.13. CGET (CLCD GET)


CPUT 펑션블럭을 통하여 기록시킨 사용자 문자를 LCD에 표시하는 펑션블럭입니다.

<그림8-2-13-1 CGET 펑션블럭 >

Parameter Data Type


ADR BYTE, WORD, DWORD 사용자 문자를 표시시킬 CLCD의 주소값 입력
ID BYTE, WORD, DWORD 표시할 사용자 문자의 ID를 입력 (0 ~ 7)

캐릭터LCD는 8개의 사용자 문자를 기록하고 표시할 수 있습니다. CPUT에서도 사용자가 정의한 5열
x8행으로 구성된 문자를 0 ~ 7 의 ID로 기록시키고, CGET으로 기록시킨 문자를 0 ~ 7의 ID로 불러
와서 LCD에 표시할 수 있습니다.

- 191 -
MP STUDIO MANUAL

8.3. FND (7SEGMENT)


FND (7SEGMENT)는 7개의 LED로 숫자를 표시할 수 있는 표시장치입니다. 하나의 숫자를 표시하기
위하여 7개의 LED를 제어해야 하므로 제어를 위한 신호선이 많이 필요한 단점이 있습니다. 현대에는
TM1637 I.C를 사용하여 2가닥의 제어선만을 사용하여 FND를 제어할 수 있습니다.

<그림8-3-1 FND 0.56" 시계기능 > <그림8-3-2 FND 0.36" 소수점기능 >

TM1637 I.C를 사용해도 하나의 I.C로 표현할 수 있는 수의 제한이 있어 시계기능을 위한 제품과 소


수점을 위한 제품으로 나누어져 있습니다.

- 192 -
MP STUDIO MANUAL

8.3.1. FINI (FND Initialize)


FND를 사용하기 위해서는 FINI 펑션블럭을 실행하여 최초 1회 초기화를 해야 합니다.

<그림8-3-1-1 FINI 펑션블럭 >

Parameter Data Type


CLK Unsigned BYTE(상수) CLOCK 통신라인으로 사용할 포트번호
DIO Unsigned BYTE(상수) DATA IN/OUT 통신라인으로 사용할 포트번호

MPS제품과 FND제품은 CLK와 DIO 2가닥의 통신선을 연결해야 하며, MPS제품에서 사용할 수 있는
통신포트 번호는 아래와 같습니다.
Products PORT
MPS-8A4R AI0 ~ AI7 0~5V 아날로그 입력포트에서만 사용이 가능합니다.
MPS-16A8R AI0 ~ AI3 0~5V 아날로그 입력포트에서만 사용이 가능합니다.
MPS-8A8R PWM0 ~ PWM5 PWM 출력포트에서만 사용이 가능합니다.
MPS-16A8R8T PWM0,1,3,4 PWM 출력포트에서만 사용이 가능합니다.
UART 통신프로트를 통하여 1개의 FND 사용이 가능합니다.
MPA
UART 통신포트 단, 주문시 옵션에서 FND 사용 선택 또는 유선으로 연락을 주셔야
모든제품
사용이 가능하도록 저항 1개를 제거하여 보내드립니다.
MPS-8A4R-R2, MPS-8A4T-R2, MPS-16A8R-R2, MPS-16A8T-R2 제품에서는 사용이 불가능합니다.

MPA 제품군은 CLK와 DIO에 입력한 숫자와 상관없이 UART 통신포트로 연결이 됩니다. 때문에, CLK와 DIO 파라미터에
아무 숫자나 입력하시고 사용해 주시기 바랍니다.

- 193 -
MP STUDIO MANUAL

8.3.2. FINT (FND Integer)


숫자를 표시하기 위한 펑션블럭입니다.

<그림8-3-2-1 FINT 펑션블럭 >

Parameter Data Type


IN Signed BYTE, WORD 표시할 숫자의 값
POSITION Unsigned BYTE 표시할 숫자의 일의 자리의 FND 위치 (1~4)
LENGTH Unsigned BYTE 표시할 숫자의 길이 (1~4)
DOT Unsigned BYTE 표시할 숫자중 점의 위치 (0:사용안함/1~4)
ZERO BIT 표시할 숫자의 앞에 위치한 0의 표시유무
SIGN BIT 표시할 숫자의 음기호 표시 유무

< IN >
입력한 숫자 및 메모리의 값으로 -999 ~ 9999까지 표현이 가능합니다.

< POSITION >


숫자의 일의 자리의 위치를 지정합니다. 1~4의 입력이 가능합니다.

<그림8-3-2-2 FND 위치값 >

IN이 14이고 POSITION이 4의 경우와 3의 경우를 아래 그림으로 확인해 주세요.

<그림8-3-2-3 Position이 4의 경우 > <그림8-3-2-4 Position이 3의 경우 >

- 194 -
MP STUDIO MANUAL

< LENGTH >


숫자의 길이를 지정합니다. IN이 1234이고 LENGTH가 4의 경우와 2의 경우를 아래 그림으로 확인
해 주세요.

<그림8-3-2-5 Length가 4의 경우 > <그림8-3-2-6 Length가 2의 경우 >

< DOT >


숫자의 소수점의 위치를 지정합니다. 소수점 표시를 하지 않을 경우 0을 기입해주세요. IN이 14이고
DOT이 0의 경우와 3의 경우를 아래 그림으로 확인해 주세요.

<그림8-3-2-7 DOT이 0의 경우 > <그림8-3-2-8 DOT이 3의 경우 >

< ZERO >


숫자의 앞에 위치한 0의 표시의 유무를 지정합니다. IN이 14이고 ZERO가 @OFF의 경우와 @ON의
경우를 아래 그림으로 확인해 주세요.

<그림8-3-2-9 ZERO가 @OFF 경우 > <그림8-3-2-10 ZERO가 @ON 경우 >

< SIGN >


숫자의 음기호 표시의 유무를 지정합니다. SIGN은 LENGTH의 수치와 무관하게 표시됩니다. IN이
-123이고 SIGN이 @ON이고 LENGTH가 3의 경우와 2의 경우를 아래 그림으로 확인해 주세요.

<그림8-3-2-11 LENGTH가 3의 경우 > <그림8-3-2-12 LENGTH가 2의 경우 >

SIGN이 @ON일 때 음수만이 -로 표시됩니다. 양수 +의 경우 FND에서 표현할 수 없기 때문입니다.

- 195 -
MP STUDIO MANUAL

8.3.3. FDATA (FND DATA)

FND의 7개의 세그먼트의 LED를 개별적으로 제어하여 원하는 모양을 표현할 수 있습니다.

<그림8-3-3-1 FDATA 펑션블럭 >

Parameter Data Type


DATA Unsigned BYTE 표시할 FND 값
POSITION Unsigned BYTE 표시할 숫자의 일의 자리의 FND 위치 (1~4)

< DATA >


FND의 7개의 LED를 제어하여 원하는 모양의 글씨를 만들어 사용할 수 있습니다. 또한 추가적인 1개
의 LED를 사용하여 점을 표현할 수 있습니다. 따라서, 총 8개의 LED의 제어가 가능합니다.

8개의 비트를 사용하여 각각의 LED를 1:1로 제어해야 할 수 있으며 각각의 비트가 제어하는 LED의
위치를 아래 그림에서 확인할 수 있습니다.

<그림8-3-3-2 FDATA 펑션블럭 >

2진수
FND 16진수
P G F E D C B A

A 0 1 1 1 0 1 1 1 0x77

b 0 1 1 1 1 1 0 0 0x7C

C 0 0 1 1 1 0 0 1 0x39

d 0 1 0 1 1 1 1 0 0x5E

E 0 1 1 1 1 0 0 1 0x79

F 0 1 1 1 0 0 0 1 0x71

- 196 -
MP STUDIO MANUAL

< POSITION >


DATA 파리미터에 입력한 값이표시될 FND의 위치를 지정합니다. 1부터 4까지 사용이 가능합니다.

<그림8-3-2-2 FND 위치값 >

- 197 -
MP STUDIO MANUAL

8.3.4. FND 시계표시

시계기능이 있는 FND의 경우 2번째에 시계의 도트 LED 2개가 위치에 있습니다. 때문에, FINT 펑션
블럭에서는 DOT에 2를 입력하면 항상 도트 LED가 아래와 같이 ON이 됩니다. 하지만, “시”와 “분을”
별도로 표기할 경우, “시”를 표시할 때 초침 LED를 On/Off해야하며 이때 “시”의 입장에서는 일의 자
리의 LED가 켜져야 하므로 4를 입력해야 합니다.

<그림8-3-3-3 FND 위치값 >

초침 LED를 1초 간격으로 점멸하기 위해서 DOT 파리미터를 워드 메모리를 입력해 주시기 바랍니다.
DS3231 RTC를 사용하여 시간을 읽어오고 읽어온 시간을 FND에 표시하는 예는 아래와 같습니다.

<그림8-3-3-4 FND 위치값 >

<1 Line> FND를 CLK를 A0포트로 DIO를 A1포트로 정의하고 초기화 합니다. (MPS-8A4R 기준)
<2 Line> DS3231 모듈에서 시간 파라미터를 읽어서 각각의 사용자 정의 메모리에 기록합니다.
<3 Line> 1초동안 사용자 정의 메모리 ##dot에 4를 기록하고 다시 1초동안 ##dot에 0을 기록하여
시계의 도트 LED를 1초마다 깜빡이게 합니다.
여기서 도트 LED는 POSITION:2에 위치하지만 4 Line에서 ##year를 입력하는 기준에서는
4번째의 FND에 위치하므로 4를 입력해야 합니다.
<4 Line> 1초마다 DS3231에서 읽어온 시간에서 ##year를 FND의 1~2번째에 표시하고 ##minute
를 3~4번째에 표시합니다.

<그림8-3-3-5 FND와 DS321를 사용하여 시간(17시40분)을 표시 >

- 198 -

You might also like