View
11
Download
1
Category
Preview:
Citation preview
1
BASIC과 LADDER LOGIC을 동시에 지원하는 산업용 콘트롤러
CUBLOC
레더로직 중심 사용설명서
사용설명서 VERSION 2.0
컴파일 테크놀로지 주식회사
www.comfile.co.kr
2
등록상표 WINDOWS는 Microsoft Corporation의 등록상표입니다.
CUBLOC은 Comfile Technology의 등록상표입니다.
기타 다른 상표는 해당회사의 등록상표입니다.
명칭 CUBLOC 은 모든 CUBLOC제품군을 통칭하는 이름입니다.
알림 본 설명서의 내용은 사전 통보 없이 변경될 수 있습니다. 본 제품의 기능은 성능 개선을 위하여 사전 통보 없
이 변경될 수 있습니다. 본 제품을 이용하여 만든 제품의 동작여부에 대해, 그리고 2차적인 피해에 대하여 폐
사에서는 어떠한 법적 책임도 지지 않으므로 주의하시기 바랍니다. 본 제품은 컴파일 테크놀로지의 고유 기술
을 사용하여 개발된 제품으로 저작권법에 의한 보호를 받고 있습니다. 따라서 본 제품 (제품에 대한 아이디어
및 설명서 및 기타 포함)의 어떠한 부분도 사전에 폐사와의 문서 동의 없이 복사되거나 변경, 재 생산할 수 없
으며 또한 다른 언어로도 번역될 수 없습니다.
주의사항 인쇄된 설명서는 인쇄된 시점에서는 최신 버전이지만, 인쇄된 후 시간이 경과된 뒤에 새로운 내용이 추가되거
나, 기존내용이 바뀔 가능성이 있습니다. 최신 버전의 설명서는 항상 인터넷 홈페이지 (www.comfile.co.kr)에
서 확인하시기 바랍니다.
본 제품 (CUBLOC및 CUTOUCH, MSB그리고, 부속장치 일체) 를 사용하시다가 생긴 손해 및 손실에 대하여
저희 컴파일 테크놀로지 주식회사는 어떠한 책임도 없음을 명시하는 바입니다. 본 제품을 사용하기 이전에 반
드시 본 사용설명서를 읽어본 뒤 사용하시기 바랍니다. 본 사용설명서를 충분히 읽어보지 않은 상태로 본 제
품을 사용하는 것으로 인해 발생된 피해에도 저희 회사에서는 어떠한 책임도 없음을 명시합니다.
Copyright 컴파일 테크놀로지㈜
3
머리말
CUBLOC은 베이직언어와 레더로직을 동시에 사용할 수 있는 산업용 임베디드 콘트롤러입니다.
CUBLOC은 여러가지 형태로 출시되고 있습니다.
1. CUBLOC 코어모듈 : PCB보드에 직접 장착할 수 있는 반도체형
2. 일체형 제품 : 바로 현장에 적용할 수 있는 형태의 제품 (MSB 시리즈 또는 CUSB시리즈)
3. CUTOUCH 제품 : 그래픽 LCD와 터치입력을 갖춘 제품
본 사용설명서는 “레더로직”에 대한 부분만을 다루고 있습니다.
따라서 “BASIC 언어”에 대한 설명은 “베이직 언어 중심 사용설명서”를 참조하시기 바랍니다.
이 두 권의 책은 CUBLOC 을 활용하는데 있어서 반드시 읽어야 되는 책입니다. 추가적으로 여러분이
사용하고자 하는 CUBLOC 제품 형태에 따른 설명서를 참고하시면 됩니다.
CUBLOC을 처음 접하시는 분은 “CUBLOC 초보여행”을 먼저 읽어보시기를 권해드립니다.
http://www.comfile.co.kr/download/cubloc/cbstartbook.pdf 이곳에 pdf파일로 공개되어 있습니다.
CB210을 위한 “CB210시작 가이드”도 준비되어 있습니다.
http://www.comfile.co.kr/download/cubloc/cb210_trip.pdf
컴파일 테크놀로지 주식회사
4
차 례
제 1 장 CUBLOC STUDIO ..................................................................................................................................................... 7
CUBLOC STUDIO 사용법 기초 .............................................................................................................................................. 8
화면 구성 ..................................................................................................................................................................................... 11
LADDER 작성법 ........................................................................................................................................................................ 12
LADDER 편집 ............................................................................................................................................................................ 13
사용할 수 없는 레더 표현 ..................................................................................................................................................... 19
모니터링 ....................................................................................................................................................................................... 20
WATCH POINT ........................................................................................................................................................................... 21
강제 I/O ........................................................................................................................................................................................ 22
MODIFY기능 ............................................................................................................................................................................. 23
메뉴 설명 ..................................................................................................................................................................................... 24
PLC셋업 마법사 ....................................................................................................................................................................... 26
릴레이 사용현황 보기 ............................................................................................................................................................. 28
와치윈도우 .................................................................................................................................................................................. 29
간접 번지 지정........................................................................................................................................................................... 30
D영역 비트단위 제어 ............................................................................................................................................................. 31
제 2 장 레더로직의 기초 .......................................................................................................................................................... 32
LADDER의 기초....................................................................................................................................................................... 33
레더 로직 다이어그램의 기본 구성 ................................................................................................................................... 35
릴레이 및 레지스터 표현 ....................................................................................................................................................... 36
특수릴레이 .................................................................................................................................................................................. 38
I/O포트의 사용 .......................................................................................................................................................................... 40
제 3 장 레더로직 기본명령어 ................................................................................................................................................. 43
CUBLOC LADDER 명령요약 ................................................................................................................................................ 44
LOAD,LOADN, OUT ................................................................................................................................................................. 46
NOT, AND,OR ............................................................................................................................................................................. 47
SETOUT, RSTOUT ..................................................................................................................................................................... 48
DF, DFN ........................................................................................................................................................................................ 49
TON, TAON ................................................................................................................................................................................. 50
TOFF, TAOFF .............................................................................................................................................................................. 51
TMON, TAMON ......................................................................................................................................................................... 52
CTU ................................................................................................................................................................................................ 53
CTD ................................................................................................................................................................................................ 53
RSTCNT ........................................................................................................................................................................................ 55
KCTU ............................................................................................................................................................................................. 56
KCTD ............................................................................................................................................................................................. 56
5
MCS, MCSCLR ............................................................................................................................................................................ 57
비교명령 ....................................................................................................................................................................................... 60
제 4 장 레더로직 응용명령어 ................................................................................................................................................. 61
응용명령어란 .............................................................................................................................................................................. 62
워드와 더블워드 저장방식 .................................................................................................................................................... 65
16진수 표기법 ........................................................................................................................................................................... 65
WMOV, DWMOV ...................................................................................................................................................................... 66
WXCHG, DWXCHG .................................................................................................................................................................. 67
FMOV ............................................................................................................................................................................................ 68
GMOV ........................................................................................................................................................................................... 69
WINC, DWINC WDEC, DWDEC ............................................................................................................................................ 70
WINV, DWINV ............................................................................................................................................................................ 71
WNEG, DWNEG ......................................................................................................................................................................... 72
WADD, DWADD ........................................................................................................................................................................ 73
WSUB, DWSUB .......................................................................................................................................................................... 74
WMUL ........................................................................................................................................................................................... 75
WDIV, DWDIV ............................................................................................................................................................................ 76
WOR, DWOR ............................................................................................................................................................................... 77
WXOR, DWXOR ........................................................................................................................................................................ 78
WAND, DWAND ........................................................................................................................................................................ 79
WCMP, DWCMP ........................................................................................................................................................................ 80
WROL,DWROL .......................................................................................................................................................................... 81
WROR,DWROR .......................................................................................................................................................................... 82
WRCL,DWRCL ........................................................................................................................................................................... 83
WRCR,DWRCR .......................................................................................................................................................................... 84
DEFCON ....................................................................................................................................................................................... 85
GOTO,LABEL ............................................................................................................................................................................. 86
NOP ................................................................................................................................................................................................ 86
LOOP ............................................................................................................................................................................................. 87
CALLS,SBRT,RET ..................................................................................................................................................................... 88
TND ................................................................................................................................................................................................ 89
DIST ............................................................................................................................................................................................... 90
UNIT .............................................................................................................................................................................................. 91
DECO ............................................................................................................................................................................................. 92
ENCO ............................................................................................................................................................................................. 93
BSHR DBSHR .............................................................................................................................................................................. 94
BSHL DBSHL .............................................................................................................................................................................. 95
WSHL ............................................................................................................................................................................................ 96
WSHR ............................................................................................................................................................................................ 97
WBCD ........................................................................................................................................................................................... 98
WBIN ............................................................................................................................................................................................. 99
WBCNT DWBCNT ................................................................................................................................................................... 100
제 5 장 레더로직 과 베이직 동시사용법 ..................................................................................................................... 101
6
베이직과의 데이터 공유....................................................................................................................................................... 102
A/D입력 ..................................................................................................................................................................................... 104
PWM출력 .................................................................................................................................................................................. 106
고속카운터 입력 ...................................................................................................................................................................... 107
키패드 입력 ............................................................................................................................................................................... 108
7 세그먼트 디스플레이 ......................................................................................................................................................... 109
LCD디스플레이 : 방법 1 ...................................................................................................................................................... 112
LCD디스플레이 : 방법 2 ...................................................................................................................................................... 114
LCD디스플레이 : 방법 3 ...................................................................................................................................................... 116
레더에서 사운드발생 ............................................................................................................................................................. 119
레더에서 복잡한 연산식 수행 ............................................................................................................................................ 121
LADDER 와 BASIC의 협동 ................................................................................................................................................ 124
방법 1: M릴레이로 AND하기 ............................................................................................................................................ 125
방법 2: 마스터 콘트롤로 제어하기 ................................................................................................................................... 128
방법 3: GOTO로 제어하기 ................................................................................................................................................... 130
방법 4: 레더전체를 ON/OFF를 제어하기 ....................................................................................................................... 131
제 6 장 어플리케이션 노트 ................................................................................................................................................. 132
노트 1. 자기유지 (래치)회로 ............................................................................................................................................... 133
노트 2. 인터록 회로 ................................................................................................................................................................ 136
노트 3. 스위칭 회로 ................................................................................................................................................................ 138
노트 4. 레더에서 온도읽기 .................................................................................................................................................. 140
7
제 1 장
CUBLOC
STUDIO
8
CUBLOC STUDIO 사용법 기초
화면 상단의 툴 바를 이용하여 기본적인 조작을 할 수 있습니다.
소스파일은 확장자 .CUL과 .CUB, 두 개의 파일로 저장됩니다. 따라서 파일을 따로 백업하거
나, 이동할 때 반드시 두 개 파일을 같이 옮겨야 합니다.
9
파일 오픈 시에는 위의 그림처럼 .CUL파일만 표시됩니다. (.CUB파일을 표시하지 않습니다. 하지만 실
제로는 같은 폴더에 들어 있습니다.) .CUL파일을 오픈하면 자동적으로 같은 이름의 CUB파일이 오픈됩
니다.
유저가 작성한 소스는 PC상에만 저장할 수 있습니다. “CUBLOC모듈”에 저장했다가 나중에 다시 불러
오는 “소스 업로드”기능은 지원하지 않으므로, 주의하시기 바랍니다. 소스를 잃어버렸을 경우, CUBLOC
모듈 에서 소스를 다시 불러올 수 있는 방법은 없으므로 소스프로그램의 보관 및 백업에 항상 신경
써 주시기 바랍니다.
메모
CUBLOC 모듈은 기본적으로 “코드 프로텍션”을 지원합니다. 다운로드 된 유저 프로그램을 읽어낼 수
없도록 설계되어 있습니다. 가령, 특수한 장비를 사용하여 반도체 칩 내부의 데이터를 읽어낸다 하더
라도, 암호화되어 알 수 없는 숫자들만 읽혀질 뿐입니다.
10
RUN을 누르면 (또는 단축키 CTRL-R) 저장-컴파일-다운로드-실행이 됩니다. LADDER와 BASIC모두
RUN 보턴 하나로 컴파일 에서 실행까지 한번에 수행됩니다. 번역도중 에러가 발생되면 에러멧세지가
표시되고, 에러가 발생한 곳으로 커서가 이동합니다.
BASIC은 다음과 같이 작성합니다. CUBLOC Text Editor는 일반적인 에디터와 동일한 사용방법을 가지
고 있으며 칼라링과 일부 특수 기능키를 지원합니다.
레더로직만 사용하는 경우에도 “최소한의 코드”는 작성해주어야 하므로, 텍스트 에디터를 사용하는 방
법에 대해서 알아야 합니다.
기능키 동작설명
CTRL-Z UNDO
CTRL-O OPEN
CTRL-S SAVE
*소스작성 중 자주 CTRL-S 키를 눌러 저장하는 습관을 들이는 것이 좋
습니다.
CTRL-C COPY
CTRL-X CUT
CTRL-V PASTE
CTRL-F FIND
CTRL-HOME 문서의 맨 처음으로
CTRL-END 문서의 맨 끝으로
11
화면 구성
상단에는 편집 모드를 변경하는 2가지 기본적인 탭이 있습니다.
BASIC 작성 레더로직 작성
BASIC을 누르면 BASIC을 작성할 수 있는 에디터가 표시되며, LADDER를 누르면 레더작성을 위한 에
디터가 표시됩니다.
12
LADDER 작성법
LADDER 의 가장 끝에는 반드시 END명령이 있어야 합니다. CUBLOC STUDIO는 END 명령이 위치한 곳
까지 번역하고, 저장합니다. END명령 이후에 작성된 부분은 저장되지 않으므로 주의하시기 바랍니다.
13
LADDER 편집
텍스트 수정
이미 작성되어 있는 TEXT부분을 수정하려면 해당위치에 커서를 놓은 뒤, ENTER키를 누르면, 해당부분
의 TEXT를 수정할 수 있습니다.
종 접속선의 추가 삭제
종 접속이 가능한곳에 위치하면 커서가 아래모양처럼 변합니다. 이때 F6키를 누르면 해당위치에 종접
속선이 표시됩니다.
F6을 누르면 이곳에 종접속선이 표시됩니다.
종 접속 선을 지우려면 해당위치에서 한번 더 F6키를 누르면 지워집니다.
횡 접속선의 추가 삭제
이미 표시되어 있는 곳에서 “-“키를 누르면 횡접속선만 지워집니다.
14
셀 단위 삭제
현재 커서가 위치한 곳에 있는 선과 텍스트내용을 모두 삭제하고 싶다면 “SPACE키”를 누릅니다.
라인의 삭제
지우고 싶은 라인에 커서를 위치시킨 뒤 CTRL-D 를 누르면 해당 라인이 삭제됩니다.
15
복구 (UNDO)
방금전에 수정한 사항을 원래대로 복구 시키려면, CTRL-Z를 누릅니다.
셀 단위 삽입과 삭제
현재 커서의 위치에서 DEL키를 누르면 셀이 삭제되고, 뒤에 있던 부분이 당겨지게 됩니다.
INS키를 누르면 빈칸이 삽입되고, 뒷부분은 밀려납니다.
16
라인 복사
같은 형태의 레더가 계속 반복될 경우 CTRL-A 를 누르면, 바로 윗줄의 라인과 똑 같은 모양의 라인이
생성됩니다. 단, 텍스트 내용은 복사되지 않습니다.
빈라인 삽입
CTRL+I를 누르면 커서위치 바로위에 빈 라인이 삽입됩니다.
코멘트 표시
LADDER프로그램 중 빈 공간에 “주석문 (COMMENT)”를 입력할 수 있습니다. 코멘트는 “어포스토로피”
(‘) 로 시작해야 하며, 반드시 빈 공간이나, 빈 줄에 표시해야 합니다. 코멘트 사이에 세미콜론을 넣으
면 행 바꿈이 되어 두 줄로 코멘트를 입력할 수 있습니다.
17
텍스트입력 도움창
1. 텍스트 입력시 도움창이 표시됩니다.
위 레더심볼에서 텍스트를 입력할 때, 릴레이 선택을 위한 도움
창이 표시됩니다.
P를 누르면 P릴레이중 별명(Alias)이 있는 접점이 표시됩니다. 이
중 하나를 고른뒤 TAB키를 누르면 해당 릴레이가 선택됩니다.
P 로 시작하는 별명도 함께 표시됩니다. 별명을 선택해도 해당
릴레이가 선택 됩니다.
별명이 할당되진 않았지만, 다른곳에서 사용한적이 있는 릴레이
는 used라고 표시됩니다. 단, 사용여부는 다운로드후 알 수 있으
므로, 레더작성시에 새롭게 사용된 릴레이는 표시되지 않습니다.
2. 명령어 입력시 도움창이 표시됩니다.
펑션심볼에 텍스트를 입력할때는 명령어 선택을 위한 도움창이
표시됩니다.
이중 하나의 명령어를 고른뒤 TAB를 누르면 해당 명령어가 선
택됩니다.
3. 명령어 사용 도움창이 표시됩니다.
명령어를 고르면, 해당 명령어의 사용법을
상단에 표시합니다.
18
레더의 블록 이동, 복사
레더의 일부분을 선택하여 따로 보관하거나, 이동 복사 등을 할 수 있습니다.
마우스를 이용하여 드레그-드롭한다면 원하는 영역을 선택할 수 있습니다. 선택된 영역은 반전되어 표
시됩니다. 이 상황에서 CTRL-C 를 누르면 선택된 영역이 버퍼로 복사됩니다. 화면에는 아무 변화도 일
어나지 않지만, 선택된 영역이 버퍼에 저장된 것입니다. CTRL-X를 누르면 복사한 뒤, 해당영역을 모두
클리어 합니다.
복사하고자 하는 지점으로 커서를 이동시킨 뒤 CTRL-V 를 누르면 버퍼에 있던 내용이 표시됩니다.
CTRL-V 는 넣을 공간을 확보한 뒤, 표시하고, CTRL-T 는 원래 있던 내용에 겹쳐서 표시됩니다. 따라서
빈자리를 확보하고 CTRL-V를 누르시기 바랍니다.
19
사용할 수 없는 레더 표현
1. 레더의 흐름이 역행되어서는 안됩니다.
2. 출력심볼의 뒷부분에 다른 레더를 그릴 수 없습니다.
3. 서로 반대인 상태가 동일 출력에 연결되어 있는 경우가 발생되어서는 안됩니다. 이 경우 레더번역
시 특별한 에러 멧세지가 발생되지 않으므로 주의하시기 바랍니다.
20
모니터링
CUBLOC STUDIO에서는 LADDER LOGIC의 동작상황을 실시간으로 보여주는 “모니터링”기능을 지원합
니다. 화면상단에 있는 툴 바에서 모니터링 ON/OFF 스위치를 누르면 모니터링 상태로 들어가거나, 빠
져 나올 수 있습니다. 또는 F2 키를 누르면 모니터링 상태로 들어갑니다.
다음은 모니터링중인 화면입니다. ON상태인 접점은 “녹색블록”이 표시되며, 타이머, 카운터 등은 현재
값을 표시합니다.
화면하단에는 I/O포트의 상태가 표시됩니다. ON된 접점은 파란색의 볼드체로 표시됩니다. 0부터 63까
지만 표시됩니다.
LADDER 모니터링 상태에서는 편집 및 저장이 불가능합니다. 그리고 LADDER 모니터링 상태에서 다운
로드 및 BASIC의 디버그 창 표시도 불가능합니다. 반드시 LADDER모니터링 상태를 끈 후에 다른 작업
을 하기 바랍니다.
21
WATCH POINT
특정 릴레이나 메모리의 내용을 보고 싶을 때에는 WATCH POINT를 이용합니다. LADDER중 빈 부분에
“어포스트로피”를 두 개 연달아 작성한 뒤 보고 싶은 릴레이번호를 적어줍니다. (따옴표가 아닌, 어포
스트로피 두 개입니다.) 다운로드 한 뒤, 모니터링 상태에서 와치포인트에 릴레이의 상태가 표시됩니다.
사용 예)
‘’D0 ‘’D12 ‘’T1
C, T, D는 16비트 값으로 표시 되며, 나머지 P, M, F는 접점형태로 표시됩니다. 그리고, END문 밑에 있
는 레더나 문장은 번역되지 않기 때문에 와치포인트는 END문 안에 있어야 합니다..
22
강제 I/O
온라인 모니터링시 P접점에 “강제 I/O설정” 기능을 사용할 수 있습니다.
하드웨어적인 입력이 들어오지 않더라도 강제 I/O 를 ON 으로
하면 입력이 들어오는것으로 처리합니다.
출력포트도 강제로 ON 또는 OFF 할 수 있습니다.
설정방법은 모니터링상태에서 해당접점을 더블클릭 또는 우클
릭하여, 팝업메뉴가 표시되도록 한뒤, ON또는 OFF를 선택하십
시오.
강제모드를 해제하면, 원래의 기능대로 레더를 수행하는 것입니다. 강제 I/O로 설정된 사항은 전원OFF
시 모두 해제됩니다
* P영역은 P0 부터 P63까지만 강제 I/O설정을 사용할 수 있습니다.
TIPS: 강제 I/O 활용법
강제 I/O 기능은 센서 고장으로 인해 운전에 장애가 발생할 경우에 사용하실 수 있습니다. 문제가 발
생한 포트를 강제로 ON또는 OFF로 설정해 주는것으로 PLC의 동작여부를 계속 확인하실 수 있습
니다.
또는 하드웨어 와이어링이나 입출력 조작없이 간단하게 테스트하는 용도로도 사용하실 수 있습니다.
23
MODIFY기능
온라인 모니터링 중 아래 그림에서 화살표로 표시한 부분과 같이, D영역값을 표시하고 있는 지점을 더
블클릭 (또는 우클릭)하면 MODIFY창이 표시됩니다.
또는 상단의 아이콘을 클릭하셔도 됩니다.
운영중 D영역의 내용을 임의대로 변경하실 수 있습니다. 레더의 다른부분에서 해당D영역을 갱신하고
있다면, 변경된값이 계속 유지되지 않습니다. 이 동작은 단 1회만 실행되며, 강제로 유지시켜주지는 않
습니다.
24
메뉴 설명 파일 (File) 메뉴
메뉴 설명
새로만들기 새로운 파일을 작성하기 위해 BASIC과 LADDER영역을 모두 클리어 합니다.
열기 저장해 놓은 CUBLOC 파일을 불러옵니다.
레더 IMPORT 저장해 놓은 CUBLOC 파일 중 LADDER 만 읽어서, 현재 LADDER 편집영역의 커
서가 있는 부분에 삽입시킵니다. 다른 파일에서 레더만 가져올 때 사용하는 메뉴
입니다.
저장하기 편집중인 내용을 파일로 저장합니다.
다른 이름으로 저장 다른 이름으로 저장합니다.
오브젝트만 저장 소스형태로 저장하지 않고, 오브젝트형태로 저장합니다. 오브젝트로 저장한 파일
은 소스로 변환되지 않으므로, 소스 유출을 방지할 수 있습니다. 오브젝트로 저장
한 파일은 아래 “오브젝트 다운로드”에 의해서 다운로드만 가능할 뿐, 편집할 수
없습니다.
LADDER인쇄 LADDER 영역에 있는 레더소스를 프린터로 출력합니다. 아래의 프린터 설정을 먼
저 하신 후 사용하시기 바랍니다.
BASIC인쇄 BASIC 소스를 프린터로 출력합니다. 프린터 설정을 한 뒤, 프린트하도록 되어 있
습니다.
프린터 설정 LADDER영역 프린트를 위한 프린터 설정 창을 띄웁니다.
오브젝트 다운로드 오브젝트 파일을 CUBLOC 모듈로 다운로드 합니다.
최근 편집파일 최근에 편집한 파일 4개를 보여줍니다. 이중 하나를 선택하면, 오픈됩니다.
끝내기 CUBLOC STUDIO를 종료합니다.
실행 (Run) 메뉴
메뉴 설명
실행 BASIC 과 LADDER 를 모두 컴파일하고, 에러가 없으면 CUBLOC 모듈로
다운로드 후 실행합니다.
다운로드 후 자동으로 실행하는 것을 원치 않을 경우, 설정(Setup)의
Studio Option에서 변경할 수 있습니다.
레더로직 RUN 레더로직을 실행상태로 만듭니다.
레더로직 STOP 레더로직을 정지상태로 만듭니다.
리셋 CUBLOC모듈을 리셋 시킵니다.
LADDER모니터링 시작/중지 LADDER모니터링을 시작또는 중지합니다.
BASIC디버그 터미널 BASIC 디버그 터미널을 표시합니다.
소스 중 DEBUG명령이 있다면, RUN후 자동으로 표시됩니다.
CUBLOC 플레쉬 메모리 지움 CUBLOC 플레쉬 메모리의 내용을 모두 클리어 합니다.
Write가능퓨즈 Off CUBLOC 을 ROM 상태로 만듭니다. ROM 상태를 해제하기 위해서는 펌웨
어 다운로드를 해주어야 합니다.
릴레이 사용현황 보기 (컴파일 후) 레더에서 사용한 릴레이를 보여줍니다.
문법체크 문법의 이상유무만 체크해 줍니다.
25
설정(Setup)메뉴
메뉴 설명
PLC 셋업 마법사 레더를 위한 베이직 소스 자동 생성 마법사
PC인터페이스 설정 PC 와의 인터페이스를 위한 RS232 COM PORT 를 선택하는 메뉴입니다.
COM 1 ~ 4중 하나를 선택합니다.
에디터 환경 설정 BASIC 텍스트 에디터의 환경을 설정하는 메뉴입니다.
레더로직 환경설정 CUBLOC Studio의 세부상황을 선택할 수 있는 메뉴입니다.
펌웨어 다운로드 CUBLOC CORE 의 펌웨어를 다운로드 합니다. 이 메뉴를 사용하지 않아도,
RUN 시에 STUDIO 에서 펌웨어 업그레이드 여부를 판단하여, 질문 창을 띄
워줍니다.
Studio 옵션 설정 창에 대한 자세한 설명입니다.
렁 사이의 간격을 조정합니다.
(레더의 크기는 윈도우 사이즈에 맞추어서 자동으로
조정됩니다.)
레더작성창의 바탕화면 색을 결정합니다.
모니터링 속도를 결정합니다.
다운로드후 자동으로 실행할것인지의 여부를 결정합
니다.
다운로드시 소스를 자동세이브 할 것인지 결정합니
다.
Write가능퓨즈 Off 기능에 대하여…
실행메뉴에 있는 “Write 가능퓨즈 Off”는 개발이 끝나고, 현장에 투입하기 전에 사용하십시오. 이 기능
은 CUBLOC을 ROM상태 즉, Read Only Memory로 바꾸어서, 외부 노이즈 충격등으로 인해 플레시메모
리가 파괴되는 것을 막아줍니다. 한번 ROM 상태로 만들면, 더 이상 다운로드를 하실 수 없습니다. 다
시 다운로드 가능한상태로 만드시려면, 펌웨어 다운로드를 한번 실행시켜 주십시오.
26
PLC셋업 마법사
CUBLOC에서 LADDER를 사용하기 위해서는 기본적인 BASIC 코드를 작성해 주어야 합니다. 간단한 소
스지만, BASIC를 잘 모르는 분에게는 부담스러운 일이 아닐 수 없습니다. 그래서 CUBLOC 스튜디오에
서는 “PLC 셋업 마법사”기능을 제공하고 있습니다. 설정메뉴에 “PLC셋업 마법사”를 선택하세요.
모델명 선택 레더에서 사용할 포트를 선택하고 입출력 방향 결정
별명 정의 영역
화면에서 볼 수 있듯이 디바이스명과 I/O 상태, 각종 기능의 사용여부를 단지 클릭해주기만 하면
BASIC 코드를 생성해 줍니다. Alias 는 M0=ABCD 와 같이 릴레이명과 별명만 한 줄에 하나씩 작성해
줍니다. Modbus를 사용한다면 use MODBUS on CH1을 체크하시고, 바로 아래에 있는 보레이트와 프
로토콜을 맞춰주기만 하면 됩니다.
27
생성중인 BASIC 코드의 상태는 상단 탭 [Output BASIC code review]를 누르면 볼 수 있습니다.
A/D와 PWM, COUNT와 같은 기능들은 특정 D영역으로 중계하는 방식으로 사용할 수 있습니다. 예를
들어 ADC0을 체크했다면, A/D채널 0의 변환 값이 D(10)영역에 저장되므로 사용자는 D10영역을 읽어
오기만 하면 A/D채널 0의 값을 알 수 있습니다.
PWM 의 경우, D29 에 특정 값을 써넣으면 이 값이 PWM3 번 채널에 자동적으로 출력됩니다. HIGH
COUNT1을 체크했다면 고속카운터 1의 내용을 D39에서 읽어볼 수 있습니다. 나중에 BASIC부분을 수
정한다면 D영역의 위치를 유저가 임의대로 변경할 수 도 있습니다.
작성이 모두 끝났으면 [Replace Basic Code]를 누르면 최종상태가 BASIC 영역으로 저장됩니다. 이전에
있던 베이직 소스는 모두 지워지게 되므로 주의하시기 바랍니다. 이전 소스상태를 저장할 것인지 물어
보는 박스가 표시됩니다. 이 때 YES를 선택하시면, 이전소스의 상태를 별도파일로 저장할 수 있습니다.
셋업상태를 별도의 파일로 저장해 두려면 화면 하단에 있는 [SAVE AS..]를 누르면 됩니다. 나중에
[LOAD…]를 누르면 다시 이전 상태를 불러올 수 있습니다. CUBLOC 동작을 위해서 셋업상태를 꼭 저
장해야 하는 것은 아닙니다. 어차피 BASIC상태로 변화된 소스 파일이 레더와 함께 저장되기 때문입니
다. 셋업파일을 따로 저장하는 것은 BASIC코드를 유저가 변경했을 경우, 다시 원래 상태로 되돌리거나
다른 프로그램을 만들 때 참고하고기 위해서 입니다.
28
릴레이 사용현황 보기
레더로직을 작성하다 보면, 특정릴레이를 사용했는지 궁금한 경우가 발생합니다. 이 메뉴를 사용하면
지금 현재 여러분이 작성한 레더로직에서 사용된 릴레이를 모두 볼 수 있습니다. 다운로드 한 뒤, 실행
메뉴-> 릴레이 사용현황 보기를 클릭하면 다음과 같은 윈도우가 표시됩니다.
이 목록을 참조하면 사용하지 않은 릴레이를 쉽게 알 수 있으므로, 소스 추가 및 수정에 도움이 됩니
다.
29
와치윈도우
화면 상단의 와치윈도우 아이콘을 클릭하면 왼쪽
과 같은 별도의 창이 표시됩니다.
D, T, C영역등을 한꺼번에 볼 수 있는 기능입니다.
PLC와 연결한 상태에서만 사용할 수 있습니다.
30
간접 번지 지정
WMOV명령을 사용해서, 간접 번지 지정 방식으로 데이터를 이동시키는 방법입니다.
123을 D0 레지스터가 가르키는 곳에 저장합니다. D0레지스터에 12가 들어있었다면 D12에 123이 저
장됩니다.
D0 레지스터가 가르키는 곳에서 값을 가지고 와서 D2에 저장합니다. D0레지스터에 12가 들어있었다
면 D12에 들어있는 값이 D2에 저장됩니다.
D영역내에서만 사용가능하며, 대상범위 초과시 F65 (ERROR) 특수릴레이가 ON되고 WMOV 명령어는
처리되지 않습니다.
간접번지지정은 WMOV명령에서만 사용가능합니다.
31
D영역 비트단위 제어
다음과 같은 표현을 쓰면 D영역을 비트단위로 제어하실 수 있습니다.
D영역의 번지 비트번호 (0부터 15)
D2.0 과 같이 표현하면 D2영역의 비트 0번을 대상으로 합니다.
위 예제를 보면 P0이 입력되었을 때, D2영역의 비트 0만 1로 만듭니다. 그 결과 D2는 1이 되었습니
다.
비트표현을 입력릴레이에도 사용가능합니다.
32
제 2 장
레더로직의 기초
33
LADDER의 기초
하나의 스위치와 하나의 램프가 있는 회로를 동작시키기 위해서는 다음과 같은 회로가 필요합니다.
이 회로에서 전원을 생략하고 그리면 아래 그림처럼 표현할 수 있습니다. 양쪽의 두 선이 전원 선입니
다.
이 회로를 LADDER LOGIC으로 표현하면 다음과 같습니다.
P0 P9
이처럼, LADDER 로직은 전기 회로를 알기 쉬운 기호로 표시한 것입니다. 회로를 구성하는 스위치, 램
프 등의 “기초소자”가 있고, 이 기초소자는 특정 포트나 메모리의 일부분에 연결되어 있습니다. 위의
그림에서 스위치는 P0포트에 연결하고 램프를 P1포트에 연결하는 상황을 가정한 것입니다.
이외에도 “타이머”,”카운터”등의 다양한 소자들과 이들을 서로 연결하는 방법으로 “AND”연결, “OR”연
결등이 등장합니다. 다음은 OR연결과 AND연결이 있는 레더도입니다.
34
P0
P3
P2 P9
이 회로에서 P0 과 P2 는 AND 연결이고, P0 과 P3 는 OR 연결이 된 것입니다. 이 레더도를 CUBLOC
STUDIO 상에서 표현하면 다음과 같습니다.
CUBLOC STUDIO에서는 오른쪽 모선이 생략되어 있습니다. 이 그림에서 P0, P1, P2로 이름 붙여진 곳
을 “릴레이”라고 합니다. PLC 에서의 “릴레이”는 우리들이 알고 있는 부품형태의 “릴레이”라기 보다는
메모리의 일부분이라고 할 수 있습니다.
35
레더 로직 다이어그램의 기본 구성
레더로직은 다음과 같은 레더 다이어 그램으로 표현합니다. 레더 다이어그램은 “모선, 입력접점, 출력
접점, 신호선”등으로 구성됩니다. (원래는 오른쪽에도 모선이 있지만, CUBLOC 에서는 오른쪽 모선을
생략하고 있습니다.)
A접점, B접점
A접점은 평상시 열려있다가 신호가 들어오면 닫히는 “Normal Open” 입력입니다. 이와 반대로 B접점
은 평상시 닫혀있다가 신호가 들어오면 열리는 “Normal Close”입력을 말합니다.
(A) Normal Open (B) Normal Close
기능 릴레이 심볼
기능 릴레이 (Function Relay)는 타이머,카운터,연산명령 등의 기능을 가지고 있는 릴레이 표현을 말합
니다.
Function Relay
36
릴레이 및 레지스터 표현
코어모듈: CB210, CB220, CB280, CB320, CB380, CB400
기타제품 : MSB시리즈, CUSB시리즈
명칭 범위 단위 기능
입출력 릴레이 P P0~P127 1 비트 외부 기기와의 인터페이스
내부릴레이 M M0~M511 1 비트 내부 상태의 보존
특수기능 릴레이 F F0~F127 1 비트 시스템 상태
타이머 T T0~T99 16 비트 (1워드) 타이머용
카운터 C C0~C49 16비트 (1워드) 카운터용
데이터 영역 D D0~99 16비트 (1워드) 데이터보관
P,M,F는 비트단위로 되어 있고, T,C,D는 워드단위로 되어 있습니다. 비트 영역은 릴레이라고 부르고, 워
드영역은 레지스터라고 부릅니다. P, M을 워드단위로 억세스 하려면 WP, WM을 사용합니다.
명칭 범위 단위 기능
WP WP0~7 16 비트 (1워드) P영역의 워드단위 억세스
WM WM0~WM31 16비트 (1워드) M영역의 워드단위 억세스
WP0는 P0~P15까지의 내용을 담고 있으며, P0이 가장아래쪽(LSB)에 P15가 가장 위쪽(MSB)에 위치합
니다. WMOV등과 같은 응용명령어 군에서 사용하면 편리합니다.
P0WP0
WP1
WP2
WP3
P15
P31 P16
P32
P48
P47
P63
37
코어모듈 : CB290, CB405, CB405RT
기타제품 : CT1721C
명칭 범위 단위 기능
입출력 릴레이 P P0~P127 1 비트 외부 기기와의 인터페이스
내부릴레이 M M0~M2047 1 비트 내부 상태의 보존
특수기능 릴레이 F F0~F127 1 비트 시스템 상태
타이머 T T0~T255 16 비트 (1워드) 타이머용
카운터 C C0~C255 16비트 (1워드) 카운터용
데이터 영역 D D0~D511 16비트 (1워드) 데이터보관
P,M,F는 비트단위로 되어 있고, T,C,D는 워드단위로 되어 있습니다. 비트 영역은 릴레이라고 부르고, 워
드영역은 레지스터라고 부릅니다. P, M을 워드단위로 억세스 하려면 WP, WM을 사용합니다.
명칭 범위 단위 기능
WP WP0~7 16 비트 (1워드) P영역의 워드단위 억세스
WM WM0~WM63 16비트 (1워드) M영역의 워드단위 억세스
WP0는 P0~P15까지의 내용을 담고 있으며, P0이 가장 아래쪽(LSB)에 P15가 가장 위쪽(MSB)에 위치합
니다. WMOV등과 같은 응용명령어 군에서 사용하면 편리합니다.
P0WP0
WP1
WP2
WP3
P15
P31 P16
P32
P48
P47
P63
38
특수릴레이
특수릴레이를 통하여 CUBLOC의 상태나 타이밍 정보, 시스템정보 등을 알 수 있습니다.
특수릴레이 설명 동작 별명 (Alias)
F0 상시 OFF F_OFF
F1 상시 ON F_ON
F2 최초에 1 SCAN만 ON
Start
1 Scan time
F_INIT
F3 파워온시 1 SCAN만 ON
F3이 먼저 ON된후, 바로뒤에 F2가 ON
됩니다.
Start
1 Scan time
F_POR
F4
F5
F6
F7
F8 10mS마다 1 SCAN만 On 1 Scan time
10mS
F9 100mS마다 1SCAN만 On 1 Scan time
100mS
F_100mS
F10 1초 마다 1 SCAN만 On 1 Scan time
1 Sec
F_1Sec
F11
F12
F13
F14
F15
F16 1스캔타임간격으로 ON/OFF를 반복 1 Scan time
2 scan
F_SCAN
F17 2스캔타임간격으로 ON/OFF를 반복
F18 4스캔타임간격으로 ON/OFF를 반복
F19 8스캔타임간격으로 ON/OFF를 반복
F20 16스캔타임간격으로 ON/OFF를 반복
F21 32스캔타임간격으로 ON/OFF를 반복
F22 64스캔타임간격으로 ON/OFF를 반복
F23 128스캔타임간격으로 ON/OFF를 반복
39
F24 10mS마다 ON/OFF를 반복 10 mS
20 mS
F_10MS
F25 20mS마다 ON/OFF를 반복 F_20MS
F26 40mS마다 ON/OFF를 반복 F_40MS
F27 80mS마다 ON/OFF를 반복 F_80MS
F28 160mS마다 ON/OFF를 반복 F_160MS
F29 320mS마다 ON/OFF를 반복 F_320MS
F30 640mS마다 ON/OFF를 반복 F_640MS
F31 1.28 초마다 ON/OFF를 반복 F_1.2S
F32 2.56 초마다 ON/OFF를 반복 F_2.5S
F33 5.12 초마다 ON/OFF를 반복 F_5.1S
F34 10.24 초마다 ON/OFF를 반복
F35 20.48 초마다 ON/OFF를 반복
F36 40.96 초마다 ON/OFF를 반복
F37 81.92 초마다 ON/OFF를 반복
F38 163.84 초마다 ON/OFF를 반복
F39 327.68 초마다 ON/OFF를 반복
F40 BASIC으로 INT 발생
:
F65 ERROR 간접번지 범위 벗어나면
1
F_ERR
F66 < WCMP, DWCMP 결과 F_<
F67 > WCMP, DWCMP 결과 F_>
F72 CARRY F_CARRY
F73 ZERO F_ZERO
F2,F3모두 초기화를 위한 레더수행에 사용할 수 있습니다.
*F3, F10, F72, F73 플레그는 CUBLOC STUDIO V3.3.1이후버젼에서 사용가능합니다.
* F40에 1을 써넣으면 BASIC으로 인터럽트를 발생시킬 수 있습니다.
40
I/O포트의 사용
CUBLOC의 I/O포트는 BASIC과 LADDER에서 모두 사용할 수 있는 “공용 자원”입니다. 특별한 정의를
하지 않는다면, 모든 I/O 포트는 BASIC쪽으로 할당됩니다. LADDER 에서 콘트롤 하려면 “Usepin” 명령
을 사용해서, “앞으로 이 I/O포트는 LADDER에서 사용할 것임”을 분명하게 선언해주어야 합니
다.
USEPIN 0,IN
USEPIN 1,OUT
0번포트를 입력으로 1 번포트를 출력으로 만들고, LADDER 에서 사용하는 포트로 셋팅합니다. USEPIN
으로 선언된 포트는 LADDER 에서 “리플레쉬”합니다. “리플레쉬”란 레더 시작 전에 I/O 상태를
읽어서 P영역에 저장한 뒤, 레더수행 뒤 P영역의 내용을 I/O포트로 다시 써넣는 작업을 말합니다.
INPUT REFLASH
LADDER SCAN
OUTPUT REFLASH
BASIC에서도 IN, OUT명령 등으로 I/O포트를 조작할 수 있는데, 이 것은 직접 I/O 포트에서 값을
읽거나, 써넣는 작업을 합니다. 따라서 LADDER에서 사용하는 I/O포트는 BASIC에서 사용하는 I/O
포트와 구분해서 관리할 필요가 있습니다.
USEPIN으로 선언된 포트는 LADDER에서만 사용할 수 있으며, 리플레쉬의 대상이 되므로, BASIC에서
는 억세스 할 수 없게 됩니다.
USEPIN 0,IN, START
USEPIN 1,OUT, RELAY
위와 같이 USEPIN 명령 뒷부분에 “별명”을 함께 지정할 수도 있습니다. 별명은 I/O 포트 및 릴레이를
쉽게 참조할 수 있도록 도와주는 또 하나의 이름입니다. P영역이 아닌 다른 영역은 ALIAS명령을 사용
해서 별명을 선언합니다.
41
별명의 사용
P0, P1, M0과 같은 “릴레이 번호”만을 사용해서 LADDER LOGIC을 작성할 경우, 나중에 판독하기 어려
운 상태가 됩니다. 실질적인 역할을 쉽게 알 수 있는 “별명”를 사용하면 보다 쉬운 LADDER LOGIC 을
작성 할 수 있습니다.
이를 위해서 BASIC부에서 이름을 정의해야 합니다. ALIAS라는 명령을 사용하여 릴레이 번호에 “별명”
을 할당하게 됩니다. 아래 BASIC소스는 위 LADDER LOGIC을 위한 최소한의 프로그램입니다.
ALIAS M0 = MAINMOTOR
ALIAS M2 = STATUS1
ALIAS M4 = MOTORSTOP
I/O영역인 P릴레이는 USEPIN명령에서 별명을 지정할 수도 있고, ALIAS명령을 사용하여 별도로 별명
을 지정할 수도 있습니다.
레더의 시작
CUBLOC은 BASIC부터 실행이 시작됩니다. BASIC에서 LADDER를 시작할 수 있도록 “SET LADDER ON”
명령을 써주어야 합니다. 이 명령이 실행되면 LADDER가 일정한 시간간격(스캔타임 : 10mS)으로 실행
됩니다.
SET LADDER ON
* BASIC에서 SET LADDER ON명령을 써주지 않으면 LADDER LOGIC이 있어도 실행되
지 않습니다.
42
Ladder실행을 위한 최소한의 BASIC프로그램
LADDER를 실행하기 위해서는 다음과 같이 “디바이스 선언”, “포트선언”, “LADDER실행 개시”등을 위한
최소한의 BASIC프로그램이 필요합니다. 실제로는 BASIC프로그램이라기 보다 선언문으로만 구성된 리
스트라고 볼 수 있습니다.
Const Device = CB280 '디바이스 모델을 선언
Usepin 0,In,START '레더에서 사용할 입출력 포트
Usepin 1,In,RESETKEY
Usepin 2,In,BKEY
Usepin 3,Out,MOTOR
Alias M0=RELAYSTATE '별명 선언
Alias M1=MAINSTATE
Set Ladder On '레더의 시작 지시
Do
Loop '무한루프
43
제 3 장
레더로직
기본명령어
44
CUBLOC LADDER 명령요약
기본명령어
명령어 Symbol 설명
LOAD
A접점 (Normal Open)의 시작
LOADN
B접점 (Normal Close)의 시작
OUT
연산 결과 출력
NOT
NOT이전의 연산결과를 반전
MCS 마스터 콘트롤 시작
MCSCLR 마스터 콘트롤 종료
DF
입력조건 상승 시 1 스캔타임만 ON출력
DFN
입력조건 하강 시 1 스캔타임만 ON출력
SETOUT 출력을 ON상태로 유지
RSTOUT 출력을 OFF상태로 유지
END 프로그램의 종료
45
타이머
명령어 Symbol 설명
TON
0.01초 단위 ON 타이머
TOFF
0.01초 단위 OFF 타이머
TAON
0.1초 단위 ON 타이머
TAOFF
0.1초 단위 OFF 타이머
TMON
0.01초 단위 트리거 ON 타이머
TAMON
0.1초 단위 트리거 ON 타이머
카운터
명령어 Symbol 설명
CTU
UP 카운터
CTD
DOWN 카운터
RSTCNT 카운터 클리어
KCTU
UP 카운터 (전원 ON시 초기화 하지 않음)
KCTD
DOWN 카운터 (전원 ON시 초기화 하지 않음)
46
LOAD,LOADN,
OUT
LOAD는 A접점의 시작, LOADN은 B접점의 시작입니다. OUT은 출력접점입니다.
LOAD
LOADN
OUT
LOAD, LOADN, OUT명령에 사용할 수 있는 릴레이를 정리한 표입니다.
가능영역 P M F C T D 상수
LOAD
LOADN
O O O O O
OUT O O
P릴레이는 I/O포트에 연결되어 있으므로, 포트로부터 입출력 되는 상황이 그대로 전달됩니다. M.F등
다른 릴레이는 메모리 내부에 저장되는 것이므로 외부 I/O포트에 전달되지 않습니다.
P0
P2
P1
P3
47
NOT,
AND,OR NOT Symbol
AND
OR
NOT 심볼을 만나면 직전까지의 연산결과를 반전시킵니다. 화면 상단의 NOT 심볼을 누르거나 슬레쉬
“/” 키를 누르면 커서위치에 NOT이 표시됩니다.
이 레더는 다음과 같이 써도 동일한 동작을 수행합니다. 즉 A접점과 NOT이 만나면 B접점과 같은 동
작을 수행합니다.
AND연산을 하려면 입력심볼을 나란히 위치시키면 됩니다. 두 개의 입력조건이 모두 “True”일때 연산
결과도 “True”가 됩니다.
OR 연산을 하려면 위아래로 입력심볼을 위치시킵니다. 두 개의 입력조건 중 하나라도 “True”가 되면
연산결과도 “True”가 됩니다.
48
SETOUT,
RSTOUT
SETOUT 은 입력이 있을 때 출력을 ON하고, ON상태를 계속 유지합니다. 반대로 RSTOUT은 입력이
있을 때 출력을 OFF한 뒤 OFF상태를 계속 유지합니다.
SETOUT, RSTOUT명령에서 사용할 수 있는 릴레이는 아래와 같습니다.
가능영역 P M F C T D 상수
SETOUT O O O
RSTOUT O O O
위의 레더 실행결과를 타임차트로 표시한 것입니다.
P0
P1
P5
49
DF, DFN
DF는 입력조건에서 상승에지 (OFF -> ON) 상황이 발생하면 출력접점을 1스캔시간 동안 ON 하는 명
령입니다. 반대로, DFN은 입력조건에서 하강에지 (ON -> OFF)상황이 발생하면 1스캔시간 동안 ON하
는 명령입니다.
DF
DFN
DF, DFN은 심볼만으로 동작됩니다. 별도로 릴레이를 할당할 필요가 없습니다. DF, DFN의 동작 파형은
다음과 같습니다.
P0
P1
P5
P6
1 SCAN
1 SCAN
50
TON, TAON TON [릴레이], 설정값
TAON [릴레이], 설정값 릴레이 : T 릴레이만 사용가능합니다.
설정값 : 1에서 65535까지의 상수값 또는 D레지스터 사용가능
입력 조건이 ON이 되면 타이머 값이 증가되어, 설정 치에 도달하면 출력접점이 ON됩니다. 시간 단위
가 틀린 두 종류의 ON TIMER가 있습니다.
타이머종류 분해능 최대치
TON 0.01초 655.35초
TAON 0.1초 6553.5초
TON, TAON명령에는 2개의 인수가 있습니다. 타이머번호는 T레지스터중 하나의 값을 지정하고, 설정
치로는 상수 및 데이터 레지스터등을 사용할 수 있습니다.
위의 LADDER에서 START입력이 들어오면 T0타이머가 증가됩니다. 0.01초마다 1씩 증가되어 증가치
가 100 (1초경과) 이 되면 T0접점이 ON 됩니다. TAON을 사용한 T1타이머의 경우에는 0.1초마다 1
씩 증가되어 10 초가 경과되면 T1 접점이 ON됩니다. 입력신호가 OFF되면 타이머는 초기값으로 설정
되고, 타이머 접점도 OFF됩니다.
START
T0
1sec
51
TOFF, TAOFF TOFF [릴레이], 설정값
TAOFF [릴레이], 설정값 릴레이 : T 릴레이만 사용가능합니다.
설정값 : 1에서 65535까지의 상수값 또는 D레지스터 사용가능
입력 조건이 ON이 되면 타이머접점은 바로 ON됩니다. 이후 입력이 OFF되면 타이머접점은 OFF되지
않고, 설정치 만큼의 시간이 경과된 뒤 OFF됩니다. 시간 단위가 틀린 두 종류의 OFF TIMER가 있습니
다.
타이머종류 분해능 최대치
TOFF 0.01초 655.35초
TAOFF 0.1초 6553.5초
TOFF, TAOFF명령에는 2개의 인수가 있습니다. 타이머번호는 T레지스터중 하나의 값을 지정하고, 설정
치로는 상수 및 데이터 레지스터등을 사용할 수 있습니다.
위의 LADDER 에서 START 입력이 들어오면 T0 접점은 바로 ON 됩니다. 이후 START 접점이 OFF 된 뒤
타이머가 증가됩니다. 0.01초마다 1씩 증가되어 증가치가 100 (1초경과) 이 되면 T0접점이 OFF 됩니
다. TAON을 사용한 T1타이머의 경우에는 0.1초마다 1씩 증가되어 10초가 경과되면 T1접점이 OFF
됩니다.
START
T0
1sec
52
TMON, TAMON TMON [릴레이], 설정값
TAMON [릴레이], 설정값 릴레이 : T 릴레이만 사용가능합니다.
설정값 : 1에서 65535까지의 상수값 또는 D레지스터 사용가능
입력 조건이 잠깐 ON 되도, 바로 타이머 출력 접점이 ON, 시간 경과후 OFF 되는 트리거 타이머 입니
다.
짧은 입력신호에도 일정시간 출력이 유지되야 하는 경우에 사용하십시오.
타이머종류 분해능 최대치
TMON 0.01초 655.35초
TAMON 0.1초 6553.5초
P0
T0
1sec
P0
T0
1sec
입력 신호가 계속 들어오는 경우에라도, 타이머는 정해진 시간만큼 경과된뒤 OFF됩니다.
P0
T0
1sec 1sec
이후 입력이 다시 들어온다면, 타이머는 동작됩니다.
P0
T0
1sec
타이머 동작구간에 중복입력이 되어도, 무시합니다.
53
CTU CTU [릴레이], 설정값
릴레이 : C 릴레이만 사용가능합니다.
설정값 : 1에서 65535까지의 상수값 또는 D레지스터 사용가능
업 카운터 명령입니다. 입력이 들어오면 카운터 값을 1 증가 시킵니다. 카운터 값이 설정치와 일치하
면 카운터 접점을 ON합니다. 리셋 입력이 들어오면 카운터 값은 0이 됩니다. 최대 65535까지만 사용
가능합니다. 설정치에 도달하고, 접점이 ON된 이후에는 입력시그널이 들어와도 무시합니다.
PULSE
RESET
C0
100 pulse
CTD CTD [릴레이], 설정값
릴레이 : C 릴레이만 사용가능합니다.
설정값 : 1에서 65535까지의 상수값 또는 D레지스터 사용가능
다운 카운터 명령입니다. 입력이 들어오면 카운터 값을 1 감소 시킵니다. 카운터 값이 0 이 되면 카운
터 접점을 ON합니다. 리셋 입력이 들어오면 카운터 값은 설정치로 초기화 됩니다.
PULSE
RESET
C1
100 pulse
CTU, CTD명령에서 설정치로 상수 및 데이터 영역(C,T,D)을 사용할 수 있습니다.
54
더블워드 카운터
CTU명령은 최대 65535까지만 카운트가 가능합니다. 만약 그 이상의 값을 카운트하고 싶다면, 다음처
럼 DWINC명령을 사용하시면 됩니다.
P0가 입력되면 D0,D1에 있는 더블워드값이 증가됩니다. 이 값이 100000 에 도달하면 M0가 ON됩니
다. 리셋시 또는 P1이 입력되면 D0,D1이 클리어됩니다.
55
RSTCNT RSTCNT [릴레이]
릴레이 : C 릴레이만 사용가능합니다.
레더도 실행결과
RSTCNT C0
C0 카운터 레지스터와 C0 카운터 릴
레이를 모두 클리어합니다.
카운터 상태를 보관하고있는 카운터 레지스터와 해당 카운터릴레이를 한번에 모두 클리어하는 명령입
니다.
P2입력이 들어오면 C0레지스터와 C0릴레이가 모두 클리어됩니다. 물론, P1입력이 들어와도 모두 클
리어됩니다.
56
KCTU
KEEP 이 가능한 업 카운터 명령입니다. 기본적인 사항은 CTU 명령과 동일합니다. 다만, 밧데리 백업이
지원되는 CUBLOC 사용시, 전원 OFF시 현재 상황을 기억하고 있다가, 전원 ON 후에도 지속적으로 카
운트를 수행하게 됩니다. 이에 반해 CTU명령은 전원ON시 초기값으로 자동 리셋 됩니다.
P0
P1
C0
100 pulse
Power off & on리셋신호를먼저
발생시켜주어야합니다
.
이 명령 사용시 최초의 카운터 값은 알 수 없는 값으로 셋팅되어 있을 수 있으므로, 카운터 리셋이 먼
저 수행될 수 있도록 레더를 구성해 주어야 합니다. 즉, 최초 카운터 값 리셋에 대한 부분은 유저프로
그램에서 담당해 주어야 합니다.
KCTD
KEEP 이 가능한 다운 카운터 명령입니다. 기본적인 사항은 CTD 명령과 동일하며, KCTU 처럼 전원 OFF
시 상황을 기억하고 있다가, 전원 ON후에도 지속적인 카운팅이 가능합니다.
57
MCS,
MCSCLR
레더를 블록단위로 나누어서 제어할 수 있는 명령입니다.
MCS (마스터 콘트롤)의 입력조건이 ON 하면 같은 번호를 가진 MCSCLR 까지 실행하고, 입력조건이
OFF이면 실행하지 않습니다. LADDER LOGIC중 특정블록을 ON하거나 OFF할 수 있는 명령입니다.
M0가 ON되면 MCS 0 ~MCSCLR 0 사이에 있는 LADDER LOGIC이 동작됩니다. M0가 OFF이면 동작되
지 않고, P5와 P6출력은 OFF상태가 됩니다.
MCS번호는 0에서 7까지 사용 가능합니다. 0 부터 사용해서, 1, 2, 3순으로 증가해야 하며, 0번 블록
안에 1번 블록이 있어야 하고, 1번 블록 안에 2번 블록이 있어야 합니다. 이런 식으로 7번 블록까지
사용할 수 있습니다. MCSCLR명령은 블록을 해제하는 명령입니다. 2번 블록을 해제 하면, 2번 블록은
물론, 3번 이후의 블록까지 모두 해제됩니다. 0번 블록을 해제하면 모든 MCS블록이 해제됩니다.
MCS입력조건이 OFF일 경우 해당 블록 안에 있는 모든 출력은 OFF되고, 타이머는 리셋 되며, 카운터
는 정지됩니다. MCS OFF시 상황을 표로 정리하면 다음과 같습니다.
명령어 MCS가 ON일 때 MCS가 OFF일 때
OUT 정상동작 무조건 OFF
SETOUT 정상동작 MCS가 OFF되기 전 상황을 유지
RSTOUT 정상동작 MCS가 OFF되기 전 상황을 유지
타이머 정상동작 초기값으로 리셋
카운터 정상동작 MCS가 OFF되기 전 상황을 유지
기타명령 정상동작 동작안함
58
다음은 MCS명령의 중첩 사용 예입니다. 낮은 번호 안에 큰 번호의 블록이 들어가도록 해야 합니다.
만약 중첩할 필요가 없다면, 0번만 연속적으로 사용하면 됩니다.
59
DEMO PROGRAM
다음은 마스터 콘트롤의 동작을 확인할 수 있는 샘플 프로그램입니다. 베이직 부분에는 아래 소스를
입력하세요.
Const Device = CB280
Usepin 0,In
Usepin 1,In
Usepin 2,Out
Set Ladder On
Do
Loop
MCS 0 블록 안에는 “플리커 프로그램”이 들어가
있습니다. P0 에 있는 스위치를 ON 상태로 해주
어야, P2에 연결된 LED가 점멸하는 것을 확인할
수 있습니다. 즉 P0이 MCS0번 블록을 제어하는
것입니다.
P0
P2
CB2805V
60
비교명령
두 개의 워드(16 비트), 또는 더블워드(32 비트)값을 비교해서 조건을 만족하면 접점을 ON 합니다. 총
12개의 비교명령이 있습니다.
비교명령 비교대상 동작설명
=, s1, s2 워드(16비트) S1 과 s2가 서로 같을 때 접점이 On됩니다.
<>, s1, s2 워드(16비트) S1 과 s2가 서로 다를 때 접점이 On 됩니다.
>, s1, s2 워드(16비트) S1 > s2일 때 접점이 On됩니다.
<, s1, s2 워드(16비트) S1 < s2일 때 접점이 On됩니다.
>=, s1, s2 워드(16비트) S1 >= s2일 때 접점이 On됩니다.
<=, s1, s2 워드(16비트) S1 <= s2일 때 접점이 On됩니다.
D=, s1, s2 더블워드(32비트) S1 과 s2가 서로 같을 때 접점이 On됩니다.
D<>, s1, s2 더블워드(32비트) S1 과 s2가 서로 다를 때 접점이 On 됩니다.
D>, s1, s2 더블워드(32비트) S1 > s2일 때 접점이 On됩니다.
D<, s1, s2 더블워드(32비트) S1 < s2일 때 접점이 On됩니다.
D>=, s1, s2 더블워드(32비트) S1 >= s2일 때 접점이 On됩니다.
D<=, s1, s2 더블워드(32비트) S1 <= s2일 때 접점이 On됩니다.
아래와 같이 여러 개의 조건을 AND, OR접속으로 사용할 수 있습니다.
D0 = T1이고 C0 >= 99 이면 M0이 ON됩니다. 또는 D1 < 100이고 C0 >= 99 이면 M0이 ON됩니다.
마치 베이직에서 IF D0 = T1 AND C0 >= 99 ….와 같은 식으로 AND, OR로 여러 개의 조건을 나열하는
것과 같습니다.
WM을 쓰시면 16개의 M릴레이를 한꺼번에 비교하실 수 있습니다. WM0은 M0부터 M15까지를 의
미합니다. 같은 방법으로 WP를 쓰시면 16개의 P릴레이를 한꺼번에 비교하실 수 있습니다.
61
제 4 장
레더로직
응용명령어
62
응용명령어란
응용명령어는 주로 데이터이동, 산술연산, 논리연산에 관련된 명령입니다. 레더로직으로도 간단한 연산
및 데이터 처리가 가능하도록 도와주는 기능입니다.
D영역에는 16비트 값을 저장할 수 있습니다. 주로 D영역에 있는 값을 서로 연산하거나, 이동할 때 응
용명령어를 사용합니다. 베이직에서 처리된 결과를 D영역에 저장해 두었다가, 응용명령어를 사용해서
타이머 값으로 사용할 수도 있습니다.
또는, 카운터 한 값을 응용명령으로 D영역에 카피한 뒤, 베이직에서 가져다가 쓸 수도 있습니다. 이처
럼 응용명령어는 레더의 기능을 더욱더 확장할 수 있도록 도와주는 명령입니다. 모든 응용명령어는 다
음과 같은 형식으로 사용합니다.
일정한 조건이 성립 되었을 때, Funtion Relay ( ) 위에 있는 명령어를 실행합니다. 위와
같이 한다면, M0 릴레이가 ON되었을 때, WMOV 255,D0 명령을 수행합니다.
위 명령에서의 문제점은 M0 릴레이가 ON 되어 있는 동안 계속해서 WMOV 명령을 수행하고 있다는
것입니다. M0 릴레이가 OFF 에서 ON으로 바뀔 때, 딱 한번만 WMOV 명령을 수행하도록 하기 위해
서 아래와 같이 레더를 구성해 줍니다.
이렇게 하면 M0 릴레이가 OFF -> ON되는 시점에, 한번만 WMOV 255,D0명령이 수행됩니다.
63
명령어 파라메터 설명
전 송 명 령 군
WMOV s,d 데이터 전송
WXCHG s,d 데이터 교환
FMOV s,d,n 데이터 채움 명령
GMOV s,d,n 그룹전송 명령
비 교 명 령
WCMP D1,d2 비교명령
증 감 명 령 군
WINC d 1 증가 명령
WDEC d 1 감소 명령
사 칙 연 산 명 령 군
WADD s1,s2,d 덧셈 명령
WSUB s1,s2,d 뺄셈 명령
WMUL s1,s2,d 곱셈 명령
WDIV s1,s2,d 나눗셈 명령
논 리 연 산 명 령 군
WAND s1,s2,d AND연산 명령
WOR s1,s2,d OR연산 명령
WXOR s1,s2,d XOR연산 명령
WINV d 반전명령
WNEG d 2의보수화 명령
회 전 명 령 군
WROL d 1비트 좌 회전 명령
WROR d 1비트 우 회전 명령
WRCL d 1비트 좌 회전 with CARRY 명령
WRCR d 1비트 우 회전 with CARRY 명령
64
명령어 파라메터 설명
쉬 프 트 명 령 군
BSHL d,n 비트단위 좌 쉬프트
BSHR d,n 비트단위 우 쉬프트
WSHL S,d 워드단위 좌 쉬프트
WSHR S,d 워드단위 우 쉬프트
분 기 명 령 군
Goto,Label GOTO label
LABEL label
점프 명령
라벨 정의 명령
Calls,Sbrt,Ret CALLS label
SBRT label
RET
서브루틴 콜 명령
서부루틴 정의
리턴 명령
TND Label 조건부 스캔종료 명령
LOOP Label, n 반복명령
변환 명령군
WBIN S,d BCD TO BINARY 변환
WBCD S,d BINARY TO BCD변환
조합/분산명령군
DIST S,d,n 16비트값을 4비트단위로 쪼개 d에 저장
UNIT S,d,n 4개의 워드에서 하위 4비트값만 모아 1워드로 만
듦
DECO S,d S의 하위 4비트를 디코드해서 d에저장
ENCO S,d 엔코드, DECO와 반대동작
기타 명령군
WBCNT S,d ON되어 있는 비트수를 카운트
DEFCON Name, value 상수선언
NOP 아무일도 안함
*편의상 더블워드 처리명령은 본 표에서 생략하였습니다.
65
워드와 더블워드 저장방식
더블워드는 2개의 워드로 구성되어 있습니다.
1 BYTE
1 WORD
DOUBLE WORD
C, T, D 영역의 경우 1워드단위로 되어 있어, 더블워드를 기억하기 위해서 2워드의 기억장소가 필요합
니다.
다음은 D0에 더블워드 값인 12345678H (16진수) 저장하는 경우입니다. D0에 하위워드인 5678H가 저
장되고, D1위치에 상위워드인 1234H가 저장됩니다.
D0D1D2D3D4
56781234
1워드는 최대 65,535까지 저장가능하며, 더블워드는 최대 4,294,967,295까지 저장가능
합니다.
16진수 표기법
LADDER에서는 다음과 같은 방법으로 16진수를 표기합니다.
16진수 표기방법 1 : 0XABCD
16진수 표기방법 2 : 0ABCDH
10진수는 100, 200, 123과 같은 식으로 표시합니다.
66
WMOV, DWMOV WMOV s, d
DWMOV s, d
s : 소스 (전송할 값), 상수값 또는 D,C,T레지스터
d : 목적지 (전송할 곳)
WMOV는 1워드전송명령으로, s에 들어있는 값 (또는 상수 값)을 d로 전송합니다. DWMOV는 더블워
드를 대상으로 하는 명령으로, 동작은 WMOV와 동일합니다.
레더도 실행결과
D0 100
D1
D2 1234H
D3 0
D4
M1입력이 들어오면 D0영역에 100을 저장합니다. M2입력이 들어오면 더블워드 값인 1234H를 D2영
역에 저장합니다.
DWMOV명령으로 D2영역에 값을 저장하면, D3영역까지 영향을 준다는 사실을 잊지 않도록 하세요!.
명령어 앞에 DW가 붙어있는 명령어는 Double Word명령이기에, 2개의 워드영역에 영향을 주게 됩니
다.
* DWMOV 1234, D0와 같이, 응용명령어에서 직접 기입하는 상수 값의 경우, 최대 2,147,418,111까지
사용할 수 있습니다. 다른 모든 응용명령어도 마찬가지 입니다.
67
WXCHG, DWXCHG WXCHG d1, d2
DWXCHG d1, d2
d1 : D,C,T레지스터
d2 : D,C,T레지스터
데이터 교환명령으로, d1에 들어있는 값과 d2에 들어있는 값을 서로 맞교환 합니다. WXCHG는 1워드
를 대상으로, DWXCHG는 더블워드를 대상으로 명령을 수행합니다.
레더도 실행결과
D0 123
D1 100
D2
D3
D4
68
FMOV FMOV s, d, n
s : 소스 (전송할 값), 상수값 또는 D,C,T레지스터
d : 목적지 (전송할 곳)의 첫번째 레지스터
n : 개수, (100이내의 상수값)
s의 값을 d에 저장합니다. 여기까지는 WMOV명령과 같습니다. FMOV는 n의 숫자만큼 계속해서 저
장합니다. 일정구간을 같은 값으로 채울 수 있습니다. 주로 초기화를 하거나, 메모리 클리어를 하는 목
적으로 사용합니다.
레더도 실행결과
D0 100
D1 100
D2 100
D3 100
D4 100
D5 100
69
GMOV GMOV s, d, n
s : 소스 (전송할 값)의 첫번째 레지스터
d : 목적지 (전송할 곳)의 첫번째 레지스터
n : 개수, (100이내의 상수값)
여러 개의 데이터를 한꺼번에 전송하는 그룹 전송 명령입니다. 메모리의 일부분을 다른 곳으로 카피할
수 있습니다. s의 값을 d로 지정된 개수 n만큼 복사합니다.
레더도 실행결과
D0 12
D1 34
D2 56
D3 78
D4 90
D5
D6
D7
D8
D9
D10 12
D11 34
D12 56
70
WINC, DWINC
WDEC, DWDEC WINC d
DWINC d
WDEC d
DWDEC d
d : 레지스터 (D,C,T레지스터 중 하나)
d에 있는 값을 1씩 증가 또는 감소하는 명령입니다. WINC는 1워드 증가, DWINC는 더블워드 증가,
WDEC는 1워드 감소, DWDEC는 더블워드 감소합니다.
레더도 실행결과
WINC실행전
D0 100
WINC실행후
D0 101
플레그 변화
캐리 플레그 (F72) 결과가 저장범위를 초과하면 ON 됩니다.
WINC의 경우 65535를 초과하면 ON 됩니다.
DWINC의 경우 4294967295를 초과하면 ON됩니다.
제로 플레그 (F73)
결과가 0이 되면 ON됩니다.
71
WINV, DWINV WINV d
DWINV d
d : 레지스터 (D,C,T레지스터 중 하나)
WINV는 d에 있는 16비트 값을 반전시킵니다.
DWINV는 d에 있는 32비트(더블워드) 값을 반전시킵니다.
레더도 실행결과
WINV실행전
D0 0AAH
WINV실행후
D0 0FF55H
플레그 변화
제로 플레그 (F73) 결과가 0이 되면 ON됩니다.
72
WNEG, DWNEG WNEG d
DWNEG d
d : 레지스터 (D,C,T레지스터 중 하나)
WNEG는 d에 있는 16비트 값을 부호를 반대로 변환합니다. 즉 , 2의 보수로 만듭니다.
DWNEG는 d에 있는 32비트 값을 부호를 반대로 변환합니다.
레더도 실행결과
WINV실행전
D0 0AAH
WINV실행후
D0 FF56H
컴퓨터에서는 음수를 2의보수로 표현합니다. 2의 보수하는 방법은 반전시킨후 1을 더합니다. -1의
경우 1을 반전시킨값 0FFFEH 에 더하기 1을 해서, 최종값이 0FFFFH가 됩니다.
플레그 변화
제로 플레그 (F73) 결과가 0이 되면 ON됩니다.
73
WADD,
DWADD WADD v1, v2, d
DWADD v1, v2, d
v1 : 값 1 (상수 또는 D,C,T레지스터)
v2 : 값 2 (상수 또는 D,C,T레지스터)
d : 저장할 곳 (D,C,T 레지스터)
값 1과 값 2를 더해서 d에 저장합니다. WADD는 워드연산, DWADD는 더블워드 연산을 수행합니다.
레더도 실행결과
D0 100
D1 105
D2
위 레더의 수행결과, D1에는 105가 저장됩니다.
플레그 변화
캐리 플레그 (F72) 결과가 저장범위를 초과하면 ON 됩니다.
제로 플레그 (F73) 결과가 0이 되면 ON됩니다.
74
WSUB,
DWSUB WSUB v1, v2, d
DWSUB v1, v2, d
v1 : 값 1 (상수 또는 D,C,T레지스터)
v2 : 값 2 (상수 또는 D,C,T레지스터)
d : 저장할 곳 (D,C,T 레지스터)
v1에서 v2를 뺀 뒤, 결과를 d에 저장합니다. WSUB는 워드연산, DWSUB는 더블워드 연산을 수행합니
다.
레더도 실행결과
D0 100
D1 95
D2
플레그 변화
캐리 플레그 (F72) 자리 빌림이 발생하면 ON 됩니다.
제로 플레그 (F73) 결과가 0이 되면 ON됩니다.
75
WMUL WMUL v1, v2, d
v1 : 값 1 (상수 또는 D,C,T레지스터)
v2 : 값 2 (상수 또는 D,C,T레지스터)
d : 저장할 곳 (D,C,T 레지스터)
v1과 v2를 곱해서 d에 저장합니다. WMUL는 워드끼리 연산한 뒤, 결과는 더블워드로 저장합니다.
레더도 실행결과
.
D0 1234H
D1 5A90H
D2 14BH
연산결과 D1에는 1234H * 1234H의 결과값인 14B5A90H 가 더블워드로 저장됩니다.
더블워드끼리 곱하는 명령어는 지원하지 않습니다.
플레그 변화
제로 플레그 (F73) 결과가 0이 되면 ON됩니다.
76
WDIV,
DWDIV WDIV v1, v2, d
DWDIV v1, v2, d
v1 : 값 1 (상수 또는 D,C,T레지스터)
v2 : 값 2 (상수 또는 D,C,T레지스터)
d : 저장할 곳 (D,C,T 레지스터)
S1에서 s2를 나눈 뒤, 몫을 d에 저장하고, 나머지는 d+1위치에 저장합니다. WDIV는 워드연산, DWDIV
는 더블워드 연산입니다.
레더도 실행결과
D0 1234H
D1
D2 3
D3
D4 611H
D5 1
더블워드 나눗셈의 경우 실행결과는 다음과 같습니다.
레더도 실행결과
D0 5678H
D1 1234H
D2 7
D3 0
D4 99C3H
D5 2
D6 1 (나머지
값)
D7 0
플레그 변화
제로 플레그 (F73) 결과가 0이 되면 ON됩니다.
77
WOR,
DWOR WOR v1, v2, d
DWOR v1, v2, d
v1 : 값 1 (상수 또는 D,C,T레지스터)
v2 : 값 2 (상수 또는 D,C,T레지스터)
d : 저장할 곳 (D,C,T 레지스터)
s1과 s2를 OR연산한 뒤 결과를 d에 저장합니다. WOR는 워드단위 연산, DWOR는 더블워드 단위 연
산을 수행합니다.
레더도 실행결과
.
D0 1200H
D1 34H
D2 1234H
플레그 변화
제로 플레그 (F73) 결과가 0이 되면 ON됩니다.
78
WXOR,
DWXOR WXOR v1, v2, d
DWXOR v1, v2, d
v1 : 값 1 (상수 또는 D,C,T레지스터)
v2 : 값 2 (상수 또는 D,C,T레지스터)
d : 저장할 곳 (D,C,T 레지스터)
s1과 s2를 XOR연산한 뒤 결과를 d에 저장합니다. WXOR는 워드단위 연산, DWXOR는 더블워드 단위
연산을 수행합니다.
레더도 실행결과
.
D0 1234H
D1 0FFH
D2 12CBH
특정비트를 반전시키고자 할 때, XOR연산을 사용합니다.
플레그 변화
제로 플레그 (F73) 결과가 0이 되면 ON됩니다.
79
WAND,
DWAND WAND v1, v2, d
DWAND v1, v2, d
v1 : 값 1 (상수 또는 D,C,T레지스터)
v2 : 값 2 (상수 또는 D,C,T레지스터)
d : 저장할 곳 (D,C,T 레지스터)
s1과 s2를 AND연산한 뒤 결과를 d에 저장합니다. WAND는 워드단위 연산, DWAND는 더블워드 단
위 연산을 수행합니다.
레더도 실행결과
.
D0 1234H
D1 0FFH
D2 34H
특정비트만 남기고자 할 때, AND연산을 사용합니다.
플레그 변화
제로 플레그 (F73) 결과가 0이 되면 ON됩니다.
80
WCMP,
DWCMP WCMP v1, v2
DWCMP v1, v2
v1 : 값 1 (상수 또는 D,C,T레지스터)
v2 : 값 2 (상수 또는 D,C,T레지스터)
s1과 s2를 비교한뒤 결과는 F릴레이의 플레그에 저장합니다.
레더도
플레그 변화
제로 플레그 (F73) 결과가 0이 되면 ON됩니다.
< 플레그 (F66)
S1 < S2 이면 ON됩니다.
> 플레그 (F67)
S1 > S2 이면 ON 됩니다.
81
WROL,DWROL WROL d
DWROL d
d : 대상 레지스터 (D,C,T레지스터중 하나)
지정된 번지 d의 내용은 좌로 1비트씩 회전합니다. WROL은 워드단위 좌회전명령이고, DWROL명령
은 더블워드 단위 좌회전명령입니다.
레더도
WROL의 동작을 그림으로 표현한 것입니다.
1
0
1
1
1
0
1
0
0
1
1
1
0
1
0
1 1
MSB
MSB
LSB
LSB
CARRY (F72)
CARRY (F72)
BEFORE
AFTER
Shift to the left
Shift to the left
BIT 15의 내용이 CARRY플레그에 저장됩니다.
82
WROR,DWROR WROR d
DWROR d
d : 대상 레지스터 (D,C,T레지스터중 하나)
지정된 번지 d의 내용은 우로 1비트씩 회전합니다. WROR은 워드단위 우회전명령이고, DWROR명령
은 더블워드 단위 우회전명령입니다.
레더도
WROR의 동작을 그림으로 표현한 것입니다.
MSB
MSB
LSB
LSB
BEFORE
AFTER
1
0
1
0
1
0
0
1
0
1
1
1
0
1
0
00
CARRY (F72)
CARRY (F72) Shift to the right
Shift to the right
BIT 0의 내용이 CARRY플레그에 저장됩니다.
83
WRCL,DWRCL WRCL d
DWRCL d
d : 대상 레지스터 (D,C,T레지스터중 하나)
지정된 번지 d의 내용은 좌로 1비트씩 회전합니다. WRCL은 워드단위 좌회전명령이고, DWRCL명령은
더블워드 단위 좌회전명령입니다.
레더도
WRCL 의 동작을 그림으로 표현한 것입니다.
MSB
MSB
LSB
LSB
BEFORE
AFTER
1 11 00 10 0 0
CARRY (F72)Shift to the left
Shift to the left
01 10 01 01 0 0
CARRY (F72)
BIT 15의 내용이 캐리플레그로 이동하고, BIT 0에는 0이 들어갑니다.
84
WRCR,DWRCR WRCR d
DWRCR d
d : 대상 레지스터 (D,C,T레지스터중 하나)
지정된 번지 d의 내용은 우로 1비트씩 회전합니다. WRCR은 워드단위 우회전명령이고, DWRCR명령
은 더블워드 단위 우회전명령입니다.
레더도
WRCR 의 동작을 그림으로 표현한 것입니다.
MSB
Shift to the right
Shift to the right
MSB
LSB
LSB
BEFORE
AFTER
1 11 00 10 0
0
0
0 00 11 11 0 0
CARRY (F72)
CARRY (F72)
BIT 0의 내용이 캐리플레그로 이동하고, BIT 15에는 0이 들어갑니다.
85
DEFCON DEFCON name, value
name : 상수명
value : 상수값
상수를 선언하는 명령입니다. 레더로직에서 자주 사용하는 상수값에 이름을 할당합니다.
이후 다른 명령에서 이 이름을 사용하면, 해당되는 값이 할당됩니다.
추후, 상수값을 변경할 때, 일일히 찾아다니면서 바꿔야하는 불편함없이, DEFCON 부분에서만 수정할
수 있습니다.
상수명으로는 명령어로 사용중인 이름을 쓰지 마십시오. 예를들어 DEFCON WMOV 100 과 같이 이미
명령어로 사용중인 WMOV를 상수명으로 사용할 수 없습니다.
86
GOTO,LABEL GOTO label
LABEL label
GOTO는 지정된 라벨로 점프하는 분기명령입니다. label은 라벨을 선언하기 위한 명령입니다.
START가 ON되면 SK_1으로 점프합니다. 아래와 같이 사용하면 조건 분기명령으로 사용할 수 있습니
다. D0=C0상황이 되면 SK_1으로 점프합니다.
NOP NOP
아무일도 수행하지 않는 명령입니다.
87
LOOP LOOP label, NumberRegister
lavel : 점프할 라벨명
NumberRegister : 반복횟수가 들어있는 D레지스터 (상수 사용 못함)
반복 수행 명령입니다. NumberRegister 에는 반복 횟수가 들어있는 D 영역 레지스터를 적어줍니다. 이
값이 0이 될 때까지 label로 JUMP합니다.
LOOP명령을 만나면 먼저 NumberRegister를 검사합니다. 이 값이 0이면 JUMP하지 않습니다.
1을 빼고, 그 결과가 0이면 역시 JUMP하지 않습니다. 0이 아니면 label로 JUMP합니다.
위의 예처럼, 최초에 0이던 D1의 값이 5번 반복 WINC명령을 수행한 결과 5가 되었습니다.
88
CALLS,SBRT,RET CALLS label
SBRT label
서브루틴과 관련된 명령군입니다. CALLS는 서브루틴을 콜하고, SBRT는 서브루틴의 시작위치를 알리는
선언문입니다. RET는 반드시 서브루틴의 맨 끝에 위치해야 합니다.
MAIN program
SUB routine
서브루틴을 작성할 때 주의사항이 있습니다. 메인 프로그램의 끝 지점에는 END가 아닌
RET명령을 사용해서 “메인 프로그램의 끝 지점”을 구분해 주어야 합니다.
RET명령에는 조건을 연결할 수 없습니다. RET명령은 무조건 복귀명령입니다.
LADDER프로그램의 가장 끝 지점에는 “END”를 작성해 주어야 합니다.
* 서브루틴안에 다른 서브루틴을 정의할 수 없습니다.
89
TND
TND 는 조건부 스캔종료명령입니다. 레더의 특정부분에서 임시로 스캔을 종료하고자 할 때 사용합니
다.
위의 레더는 P0의 입력이 ON이면 스캔을 종료하는 예제입니다.
서브루틴 강제종료에도 사용할 수 있습니다. 위의 예제에서 처럼 서브루틴 실행도중 서브루틴 탈출조
건 (P1)이 ON되면, 루틴을 벗어나는 명령으로 사용합니다. TND명령이 서브루틴안에서 사용되었을 경
우에는 스캔종료가 아니라 조건부 서브루틴 종료명령으로 동작하게 됩니다.
90
DIST DIST s, d, n
s : 소스 레지스터 (쪼개야할 값이 저장된 D 레지스터)
d : 목적지 (결과를 저장할 곳)의 첫번째 D레지스터
n : 개수, (1 부터 4 사이의 값)
16비트값을 4비트 단위로 쪼개서, d에 저장합니다.
레더도
*16진수모드로 모니터링 되고 있는 상황
N은 최대 4까지만 사용할 수 있습니다. (1부터 4)
위의 래더가 실행되면 D10 에 있는 1234H 가 4비트 단위로 쪼개져서, D12에 1이 들어가고, D13에 2
가 들어가고, …D15에 4가 들어갑니다.
D10 1 2 3 4
1
2
3
4
D12
D13
D14
D15
91
UNIT UNIT s, d, n
s : 소스 레지스터 (합쳐야 값이 저장된 첫번째 D 레지스터)
d : 목적지 (결과를 저장할 곳)의 D레지스터
n : 개수, (1 부터 4 사이의 값)
DIST와 반대동작을 하는 명령입니다. 하위 4비트만 있는 데이터 영역 (최대 4 워드)를 조합해서 1워드
로 만듭니다.
레더도
*16진수모드로 모니터링 되고 있는 상황
N은 최대 4까지만 사용할 수 있습니다. (1부터 4)
위의 래더가 실행되면 D12부터 D15에 들어있는 4워드를 조합하여 하나의 워드로 만든뒤 D11에 저
장됩니다. 앞에설명한 DIST로 분산시켰던 값들을 다시 조합시켜줍니다.
D11 1 2 3 4
1
2
3
4
D12
D13
D14
D15
92
DECO DECO s, d
s : 소스 레지스터 또는 상수값
d : 목적지 (결과를 저장할 곳)의 첫번째 D레지스터
s의 하위 4비트를 디코드해서 d에 저장합니다.
레더도
*16진수모드로 모니터링 되고 있는 상황
P0 접점이 ON 되면 D10 에 저장되어 있는 값의 하위 4 비트를 대상으로 합니다. 위의 레더에서는
1234H 이므로 4가 됩니다. 그러면 16비트중 비트 4를 1로 만든 값을 D12에 저장합니다. “비트 4번
을 1로 만들어라”로 이해하시면 됩니다.
BIT 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
1
D101 2 3 4
01
0001 0010 0011 0100
0000 0000 0001 0000D12
93
ENCO ENCO s, d
s : 소스 레지스터 또는 상수값
d : 목적지 (결과를 저장할 곳)의 첫번째 D레지스터
앞에서 설명된 DECO와 반대동작을 하는 명령어입니다. S값에서 비트 1이 위치 된 값을 수로 바꾸어
D에 저장합니다.
레더도
*16진수모드로 모니터링 되고 있는 상황
DECO명령으로 디코드된 값을 다시 ENCO 명령으로 엔코드하는 상황입니다.D12에 들어있는 값을 엔
코드한 최종결과는 D13에 저장됩니다. “비트 4번이 1로된 수를 만들어라.”로 이해하시면 됩니다.
D120 0 1 0
4
0000 0000 0000 0100
0000 0000 0001 0000
D13
여러 개의 비트가 ON되어 있는경우, 가장 왼쪽에 ON된 비트위치를 판단합니다. ON되어 있는 비트
가 하나도 없다면 결과는 0이 됩니다.
94
BSHR
DBSHR BSHR d, n
DBSHR d, n
d : 쉬프트 대상 레지스터 (D,C,T중 하나)
n : 반복 횟수
비트단위 Right 쉬프트 명령입니다. d에 저장된 값을 n비트만큼 오른쪽으로 쉬프트 합니다. 새로 삽입
되는 비트는 전부 0으로 합니다. BSHR에서 n값은 1부터 15까지 사용가능하고, DBSHR에서 n값은 1
부터 31까지 사용가능합니다.
레더도
*16진수모드로 모니터링 되고 있는 상황
F2에 의해 초기값으로 1234H 가 D10에 들어갑니다. 이후 P0입력이 ON 되면, BSHR 명령에 의해 D10
에 있는값이 4비트만큼 오른쪽으로 이동합니다. 결과는 123H가 됩니다.
DBSHR은 더블워드를 대상으로 합니다.
95
BSHL
DBSHL BSHL d, n
DBSHL d, n
d : 쉬프트 대상 레지스터 (D,C,T중 하나)
n : 반복 횟수
비트단위 Left 쉬프트 명령입니다. D에 저장된 값을 n비트만큼 왼쪽으로 쉬프트 합니다. 새로 삽입되
는 비트는 전부 0으로 합니다.
BSHL에서 n값은 1부터 15까지 사용가능하고, DBSHL에서 n값은 1부터 31까지 사용가능합니다.
레더도
*16진수모드로 모니터링 되고 있는 상황
F2에 의해 초기값으로 1234H 가 D10에 들어갑니다. 이후 P0입력이 ON 되면, BSHL 명령에 의해 D10
에 있는값이 4비트만큼 왼쪽으로 이동합니다. 결과는 2340H가 됩니다.
DBSHL은 더블워드를 대상으로 합니다.
96
WSHL WSHL start, end
start : 쉬프트 대상 첫번째 레지스터
end : 쉬프트 대상 마지막 레지스터
워드단위 LEFT 쉬프트 명령입니다. start에서 end까지를 1워드씩 왼쪽으로 쉬프트 합니다. 새로 삽입
되는 워드는 전부 0이됩니다.
레더도
*16진수모드로 모니터링 되고 있는 상황
5678 1234 DEF3 9ABC
1234 DEF3 9ABC 0000
D10 D11 D12 D13
D10 D11 D12 D13
97
WSHR WSHR start, end
start : 쉬프트 대상 첫번째 레지스터
end : 쉬프트 대상 마지막 레지스터
워드단위 RIGHT 쉬프트 명령입니다. start에서 end까지를 1워드씩 오른쪽으로 쉬프트 합니다. 새로 삽
입되는 워드는 전부 0이됩니다.
레더도
*16진수모드로 모니터링 되고 있는 상황
5678 1234 DEF3 9ABC
0000 5678 1234 DEF3
D10 D11 D12 D13
D10 D11 D12 D13
98
WBCD WBCD s, d
s : 변환할 값이 저장된 레지스터 (D,C,T중 하나) 또는 상수값
d : 결과를 저장할 레지스터 (D,C,T중 하나)
BINARY 값을 BCD코드로 변환하는 명령입니다.
레더도
*16진수모드로 모니터링 되고 있는 상황
D0 123404D2H
46601234H
D2
99
WBIN WBIN s, d
s : 변환할 값이 저장된 레지스터 (D,C,T중 하나) 또는 상수값
d : 결과를 저장할 레지스터 (D,C,T중 하나)
BCD코드를 BINARY 값으로 변환하는 명령입니다.
레더도
*16진수모드로 모니터링 되고 있는 상황
D2123404D2H
46601234H
D4
100
WBCNT
DWBCNT WBCNT s, d
DWBCNT s, d
s : 체크할 값이 저장된 레지스터 (D,C,T중 하나) 또는 상수값
d : 결과를 저장할 레지스터 (D,C,T중 하나)
워드 또는 더블 워드 데이터를 조사해서 1로 되어 있는 비트의 개수를 카운트해줍니다.
결과는 d로 지정된 레지스터에 저장됩니다.
레더도
*16진수모드로 모니터링 되고 있는 상황
WBCNT는 워드(16비트)내에서 비트 1의 숫자를 카운트합니다. DWBCNT는 더블워드 (32비트)내에서
비트 1의 숫자를 카운트합니다.
0
2
0AH = 0 10 00 10 000 00 00 0
BIT 15 BIT 0
101
제 5 장
레더로직 과
베이직 동시사용법
102
베이직과의 데이터 공유
레더의 기능을 확장하기 위해서는 베이직 명령어를 사용해야 합니다. 베이직 명령으로 처리한 결과를
레더 쪽으로 저장하거나, 반대로 레더 쪽에서 처리한 결과를 베이직 쪽으로 전달해 주어야 할 경우가
발생합니다.
“CUBLOC”에서는 이것을 처리하기 위해서, BASIC 에서 특정 배열변수를 사용하면 레더의 릴레이 영역
을 억세스 할 수 있도록 되어 있습니다.
레더 억세스용
시스템 배열
억세스 단위 LADDER의 해당영역
_P 비트 단위 _P(0) ~ P(127) P릴레이 영역
_M 비트 단위 _P(0) ~ P(511) M릴레이 영역
_WP 워드단위 _WP(0) ~ _WP(7) P영역을 워드단위로 억세스
_WM 워드단위 _WM(0) ~
_WM(31)
M영역을 워드단위로 억세스
_T 워드단위 _T(0) ~ _T(99) T영역 (타이머)
_C 워드단위 _C(0) ~ _C(49) C영역 (카운터)
_D 워드단위 _D(0) ~ _D(99) D영역 (데이터)
P와 M릴레이는 비트 단위로 억세스 되고, 나머지 C,T,D영역은 워드 단위로 억세스 됩니다. P와 M영
역을 워드단위로 억세스 하려면 _WP, _WD를 사용합니다. 예를 들어 _WP(0)은 P0부터 P15까지 를 1
워드로 합친 것을 의미합니다. 다음은 BASIC에서 LADDER데이터 영역을 억세스 하는 샘플 프로그램입
니다.
FOR I = 0 TO 99
_M(I) = 0
NEXT
이 프로그램은 M0부터 M99까지 0으로 클리어 하는 프로그램입니다.
예제 프로그램에서처럼 앞에 “레더억세스용 시스템 배열”을 사용하면, 레더의 릴레이 영역을 마음대로
억세스 할 수 있습니다.
103
_D(0) = 1234
_D(1) = 3456
_D(2) = 100
D영역에 어떤 값을 넣을 수도 있습니다.
IF _P(3) = 1 THEN _M(127) = 1
또는 IF문에서 릴레이 영역을 참조해서, 다른 릴레이영역에 값을 넣을 수도 있습니다.
반대로, 레더로직에서 베이직변수의 값을 고치거나, 참조할 수는 없습니다.
104
A/D입력
BASIC에서 ADIN명령어를 사용해서 A/D입력을 처리한 뒤, 결과값만 레더영역에 저장하도록 합니다.
Const Device = CB280
Set Ladder On
Input 24
Do
_D(0) = Adin(0)
Loop
DO 와 LOOP 사이에 있는 모든 명령어는 “CUBLOC”에 켜져 있는 한 계속 실행됩니다. ADIN 명령어는
A/D변환을 수행하는 명령입니다. _D(0) = Adin(0) 이라는 명령은 A/D 채널 0번에서 입력을 받아서 D0
영역에 저장하라는 것입니다. 따라서 레더가 실행되는 동안 A/D채널 0의 결과는 D0영역에 저장됩니
다.
와치포인트를 사용해서 간단하게 D0영역을 볼 수 있습니
다. 모니터링 상태를 ON 하면 와치포인트에서 지정한 D
영역 값이 위 그림처럼 표시됩니다. (F30특수릴레이는 A/D
입력과는 관계없이, 최소한의 레더구성을 위해 그려놓은
것입니다.)
왼쪽과 같이 볼륨을 사용해서, CB280모듈의 24번 포트와
연결한 뒤, 볼륨을 돌려보시기 바랍니다. 화면상의 와치포
인트 D0에 표시되는 값이 변하는 것을 볼 수 있습니다.
105
DEMO PROGRAM
다음은 A/D입력결과를 레더로직에 사용한 샘플 프로그램입니다. 베이직 부분에는 아래 소스를 입력하
세요.
Const Device = CB280
Set Ladder On
Input 24
Do
_D(0) = Adin(0)
Loop
24 번 포트에 연결된 볼륨을 돌리면, P2 에 연결
된 LED의 깜박이는 주기가 변경되는 것을 볼 수
있습니다.
모니터링 상태에서 관찰하면, A/D변환결과가 얼
마인지 알 수 있습니다. 값을 500 이내로 조정
하면, LED 의 움직임을 잘 관찰할 수 있습니다.
너무 큰 값으로 하면, LED의 주기가 너무 길어지
기 때문입니다.
106
PWM출력
레더에서 PWM출력을 제어할 수 있습니다. D2영역에 어떤 값을 저장하면, BASIC쪽에서 그 값을 PWM
채널 0으로 출력하도록 하는 방법을 사용합니다.
Const Device = CB280
Low 5
Set Ladder On
Do
Pwm 0,_D(2),65535
Delay 10
Loop
5 번 포트는 PWM0 번 채널입니다. 5 번포트에
LED를 연결해두면, PWM값에 따라서 LED의 밝
기가 변화하는 것을 볼 수 있습니다.
D2 영역에 60000 정도의 값을 넣어두면 LED 가
밝게 됩니다. 10000미만의 값을 넣으면 LED밝
기가 어두워집니다.
107
고속카운터 입력
BASIC 에서 측정한 고속카운터 입력을 D 영역에 저장해두면, 레더로직에서 그 값을 이용할 수 있습니
다.
다음은 CB280에서 고속카운터 채널 1을 D1영역에 저장하는 BASIC소스입니다.
Const Device = CB280
Input 15
Set Ladder On
Do
_D(1) = Count(1)
Delay 10
Loop
다음은 고속카운터 채널 0을 D2영역에 저장하는 BASIC소스입니다.
Const Device = CB280
Input 14
Set Count0 On
Set Ladder On
Do
_D(2) = Count(0)
Delay 10
Loop
고속카운터 채널 0을 사용하기 위해서는 프로그램 첫 머리에 SET COUNT0 ON 명령을 써주어야 합니
다. 고속카운터 채널 0을 사용하면 PWM 채널 0,1,2를 사용할 수 없습니다. 이 내용은 BASIC 사용설명
서에 자세하게 언급하고 있습니다.
D2에 있는 값을 다른 곳으로 가져가서, 레더로직의 연산 등에 사용할 수 있습니다.
108
키패드 입력
키패드의 입력은 BASIC 에서 처리하고 최종결과를 레더로직으로 전달하여 사용합니다. 이 프로그램은
P2에 연결된 LED의 깜박이는 주기를 키패드로부터 입력 받은 값으로 결정하도록 하는 프로그램입니
다. 아래그림처럼 회로를 구성하고 BASIC의 KEYPAD명령을 사용하여 키 입력을 받습니다.
Const Device = CB280
Dim B As Byte
Usepin 2,Out
Set Ladder On
Do
B = Keypad(1)
If B<255 Then
_D(0) = B * 10
End If
Loop
109
7 세그먼트 디스플레이
컴파일 테크놀로지에서 판매하는 7 세그먼트 디스플레이 모듈 (CSG시리즈)를 사용하여, 간단하게 7세
그먼트 디스플레이를 구현할 수 있습니다. 레더로직에서는 디스플레이 데이터만 BASIC으로 넘겨주고,
BASIC에서 이 데이터를 받아서 CSG모듈로 전송하는 방식으로 디스플레이를 구현합니다.
단순히 CSG모듈을 STUDY BOARD의 CSG소켓에 연결한 뒤, P2를 LED에 연결하기 위한 점퍼 선만 추
가한다면, 아래와 같은 회로연결이 완성되는 것입니다.
110
베이직에는 다음과 같은 소스를 작성해 주십시오.
CSG가 동작할 수 있도록 SET I2C선언을 하고, DO..LOOP 안에 CSGDEC명령을 써서 D10영역의 내용
을 출력합니다. 레더로직은 다음과 같이 작성하십시오. 이 프로그램을 실행시키면, LED 가 깜박거리고
T1의 내용을 CSG디스플레이로 확인할 수 있습니다.
111
D10영역을 CSG디스플레이를 위한 중계영역이라고 볼 수 있습니다. 이런 식으로 레더로직에서는 표시
하고 싶은 값을 D10영역에 저장하기만 하면 됩니다.
TIPS
CSG 모듈에 글자가 안나온다구? CSG모듈 뒤에 있는 딥 스위치를 조정하여 “슬레이브 어드레스”가 일
치하는 지 확인해보시기 바랍니다. 하나의 I2C 라인에 여러 개의 CSG 모듈을 연결할 수 있고, 각각의
CSG모듈을 구분하기 위해서 “슬레이브 어드레스”를 사용합니다.
DIP 스위치 상태 슬레이브 어드레스 1 2 3
ON
-
0
1 2 3
ON
1
1 2 3
ON
2
1 2 3
ON
3
베이직에서의 CSGDEC 0 ,_D(10) 에서 0번이 슬레이브 어드레스를 의미하는 숫자입니다. 위의 표를 보
시고, 딥스위치를 조정하시기 바랍니다.
112
LCD디스플레이 : 방법 1
LCD 는 7 세그먼트보다 디스플레이 영역이 크기 때문에, 위치지정에 관련된 부분을 고려해 주어야 합
니다. 가장 간단한 방법으로는 7세그먼트 디스플레이 모듈에서 사용한 방법으로 표시할 수 있습니다.
CUBLOC STUDY BOARD-1 와 CLCD 모듈을 이
그림처럼 연결한다면, 자동적으로 CUNET포트
와 CLCD가 연결됩니다.
CUNET 포트는 CLCD 모듈과 같은 디스플레이
소자를 연결하기 위한 포트입니다.
CB280 의 경우 P8, P9 와 연결되므로, 향후 이
포트는 레더 쪽에서 사용할 수 없습니다.
P2포트는 LED점멸 동작을 확인하기 위해 LED와 연결합니다. 그리고 다음 베이직 프로그램을 입력하
세요.
SET DISPLAY는 디스플레이 셋팅을 위한 선언문
입니다. 자세한 사용법은 BASIC사용설명서를 참
조하세요.
DO…LOOP 안에서 D10영역과 D11영역에 있는
값을 LCD상에 표시합니다.
LCD에 표시하기 위해 LOCATE명령으로, 표시위
치를 먼저 지정한 뒤, PRINT명령으로 해당 값을
표시하고 있습니다.
113
레더로직은 아래와 같이 입력하세요. T0은 D10영역으로 보내고, T1은 D11영역으로 보냅니다. F1특수
릴레이는 “상시ON”상태이므로, 계속 해서 동작하라는 뜻입니다.
CB220과 LCD와 연결을 위한 CUNET 회로입니다. P8, P9번포트에 CLCD모듈을 연결합니다.
114
LCD디스플레이 : 방법 2
LCD는 화면이 넓기 때문에, 어떤 위치에 글자를 표시하고 싶은지, 레더로직 쪽에서 결정할 수 있도록
하는 것이 편리합니다. 다음 방법을 사용하면, LCD상의 위치를 LADDER LOGIC에서 결정할 수 있습니
다.
우선 베이직 쪽에는 다음과 같은 소스를 입력하세요.
이 소스는 D10부터 89까지 읽어와 LCD에 표시
하는 프로그램입니다.
D10~D89 까지의 영역이 무조건 LCD 상에 표시
된다고 말할 수 있습니다.
그래서, 프로그램 시작 전에 이 영역을 SPACE
(ASCII 코드 &h20)으로 모두 채워줍니다.
이 프로그램은 20 by 4 LCD모듈을 사용하는 것
으로 가정하고 있기 때문에, LCD전체 영역을 커
버하기 위해서는 총 80개의 데이터 영역이 필요
합니다.
따라서 D10 부터 D89까지 사용하고 있습니다.
이 프로그램이 실행 중일 때, 레더로직에서는
LCD 표시코멘드에는 신경 쓸 필요 없이, 단순히
D10~D89 영역에 데이터만 기입해 주면, LCD 의
해당 위치에 표시됩니다.
115
LCD화면에 글자를 표시하기 위해서는 ASCII코드를 사용해 주어야 합니다. ASCII코드는 숫자와 특수문
자, 영문자를 코드로 변환하여 사용하는 일종의 규약입니다. 아래 레더로직을 입력한 뒤 실행하면, LCD
화면에는 “ABCDE”가 표시됩니다.
이 방법을 사용해서 화면 가득히 어떤 문자를 표시하려면 일일이 ASCII코드를 입력해 주어야 하는 번
거로움이 있습니다. 그래서, CUBLOC 스튜디오에서는WMOV ‘E’, D15와 같이 문자 하나를 “어포스트로
피”로 감싼 뒤 사용하면 해당 문자를 ASCII로 바꾸어 입력해 줍니다.
그래도, 여러 개의 문자를 표시하기에는 WMOV 명령어를 반복적으로 써주어야 하는 번거로움이 있습
니다. 이 방법은 LCD화면에 자주 변경하는 숫자 (예를 들면 수량카운트 또는 온도표시)등을 사용할 때
사용하십시오.
LCD화면에 어떤 문장을 표시하거나, 일정한 포맷으로 초기표시를 하고 싶다면 다음에 소개하는 “LCD
디스플레이 3” 방법을 사용하시기 바랍니다.
116
LCD디스플레이 : 방법 3
레더 쪽에서 간단한 명령만 내리면, LCD화면전체가 새로운 내용으로 바뀌는 방법입니다. 이 방법을 이
해하려면 ON LADDERINT (레더인터럽트)에 대해서 알아야 합니다. “레더 인터럽트”는 레더에서 베이직
으로 인터럽트를 발생시켜 주는 방법입니다.
CUBLOC은 레더와 베이직, 서로 다른 두 개의 논리적인 프로세서가 하나의 공간에서 들어있는 것입니
다. 레더 처리기 쪽에서 베이직 처리기 쪽으로 인터럽트를 발생시켜주는 것을 “레더 인터럽트”라고 합
니다.
예를 들어, TIMER가 발생시켜주는 인터럽트를 “타이머 인터럽트”라고 부릅니다. 마찬가지로 레더가 발
생시켜주는 인터럽트니까 “레더 인터럽트”라고 부릅니다.
레더로직에서 인터럽트를 발생시켜주는 것은 매우 간단합니다. “INTON”이라는 명령만 사용해 주면 됩
니다. INTON은 실제로 WMOV명령과 동일한 기능을 수행합니다. 여기에 한가지 더 일을 하는 것이 특
수릴레이 F40을 1로 만들어 주는 것입니다.
특수릴레이 F40은 레더인터럽트 플래그입니다. 이 릴레이가 ON상태이면 BASIC쪽에 LADDERINT가 발
생되는 것입니다.
WMOV 기능을 추가적으로 수행하는 것은 “인터럽트의 종류”를 파악하기 위해서입니다. 레더 이곳 저
곳에 INTON명령이 있는데, 각각 원하는 일이 있을 것입니다. 그것을 베이직 쪽에서 쉽게 파악하기 위
해서, 서로 약속된 데이터번지를 참조하고 그것에 맞는 일을 수행하기 위해서입니다.
P0입력이 들어오면, D0번지에 3을 저장합니다. 그리고 P1입력이 들어오면 D0번지에 2를 저장합니
다. BASIC에서 LADDERINT가 발생되면, D0번지에 있는 값을 조사해서, 어떤 원인으로 인터럽트가 발
생되었는지를 알 수 있는 것입니다. (D0번지에 2가 들어있다면 P1입력이 들어온 것이겠지요.)
117
BASIC 에서는 이 인터럽트를 받아서 처리해주는 소스를 작성해주어야 합니다. 기본적인 골격은 다음
과 같습니다.
ON LADDERINT GOSUB ABCD
SET LADDER ON
DO
LOOP
ABCD:
CLS
RETURN
인터럽트 발생시 메인루틴 수행을 멈추고, 인터럽트를 수행합니다. 위 소스의 경우 ABCD 루틴을 수행
합니다. ABCD루틴 끝에는 반드시 RETURN명령어를 두어, 인터럽트루틴의 끝을 알려주어야 합니다.
그럼, 간단한 명령 하나로 LCD전체화면을 새로운 내용으로 바뀌게 하는 방법에 대해서 알아보겠습니
다. 우선 레더 쪽에는 다음과 같은 내용으로 구성합니다.
P1
P0
CB280
5V
5V
P0과 P1 에는 스위치를 연결해 두십시오.각각의
스위치 입력이 있을 때, LCD 상에 다른 내용이
표시되도록 하겠습니다.
118
베이직에는 다음과 같은 소스를 작성합니다.
인터럽트가 발생되면 D0 번지의 내용
을 조사해서 1 이면 위의 내용을 표시
하고, 2 이면 아래의 내용을 표시합니
다.
LCD 구동을 위해서 소스의 첫 부분에
SET DISPLAY명령을 사용하였습니다.
PRINT 1은 LOCATE 0,0과 같은 기능을
합니다. PRINT 2는 LOCATE 0,1과 같은
기능을 합니다.
프로그램을 실행시키고, P0스위치를 누르면 LCD화면에 초기화면이 표시됩니다. P1스위치를 누르면, 다
른 형태의 초기화면이 표시됩니다.
119
레더에서 사운드발생
레더 쪽에서 간단한 명령만 내리면, 사운드가 발생되도록 해보겠습니다. 역시 ON LADDERINT인터럽트
를 이용한 방법입니다. 레더로직에서는 사운드를 발생하는 명령이 없지만, BASIC에서는 FREQOUT명령
을 이용하면 간단하게 소리를 만들어 낼 수 있습니다.
다음은 베이직 소스입니다. PWM 0번
채널을 이용해서 소리를 발생합니다.
LOW 5 명령으로 인해 5번 I/O포트가
LOW상태가 됩니다. (최초상태인 입력
상태에서 출력상태로 바꾸어 놓은 것
입니다.)
5번 I/O포트는 PWM 0번 채널입니다.
LADDERINT가 발생되면, D0영역을 조
사해서 1 이면 일정한 주파수를
FREQOUT명령을 사용해서 PWM 0번
채널에 출력합니다.
DELAY 명령으로 약간의 시간을 기다
린 뒤, PWM 0번 채널을 OFF합니다.
같은 방법으로 D0영역이 2일 경우에
대한 처리도 합니다.
이 프로그램을 동작 시키기 위한 회로도는 다음
과 같습니다. 5 번 포트에 PIEZO 를 연결하고, 0
번, 1번포트에는 스위치를 연결합니다.
120
레더로직은 다음과 같이 구성합니다.
121
레더에서 복잡한 연산식 수행
실수연산 또는 SIN, COS등의 삼각함수가 필요한 연산을 레더로직에서 수행하려면 어떻게 하면 될까요?
역시 ON LADDERINT를 이용하면 간단하게 처리할 수 있습니다. BASIC에서는 32비트 실수데이터형을
사용할 수 있고, SIN, COS, LOG와 같은 수학함수를 지원합니다.
바로 앞에서 사용한 회로를 사
용해서, P0나 P1에 연결된 스위
치를 누르면 어떤 연산을 수행
하도록 했습니다.
P0이 ON되면, D2에 있는 값의
LOG값을 D3에 저장합니다.
이때 주의할 점은 BASIC 에서는
실수 연산이 되지만, 레더 쪽에
서는 정수만 취급하므로, 소수점
이하가 잘려서 저장됩니다.
P1이 ON되면, 일정한 연산식을
수행한 뒤 결과값을 D3 에 저장
하도록 해 놓았습니다.
여기 있는 프로그램을 응용하여,
여러 가지 연산식을 LADDER
LOGIC 에서도 구현할 수 있습니
다.
DEBUG 명령을 리마크로 막아놓았습니다. 앞에 어포스트로피(‘)를 제거한다면, DEBUG 명령으로 실수결
과 값을 볼 수 있습니다. 물론 디버그 터미널에 표시됩니다. 이때 레더로직 쪽에서는 디버그 기능을 사
용할 수 없으므로, 확인이 다 끝나셨다면, 위 소스 프로그램처럼 DEBUG 명령어를 리마크 해놓으시기
바랍니다.
맨 앞에 SET DEBUG OFF 라는 명령을 추가하셔도, 소스 전체에 있는 DEBUG명령어는 번역되지 않습니
다.
122
레더로직은 다음과 같이 구성했습니다. 초기화 (F2 릴레이 사용)시에 D2에 연산에 필요한 초기값을 저
장합니다.
모니터링 상태에서 P0또는 P1스위치를 누르면, D3값의 변화상태를 직접 볼 수 있습니다. 이때 베이직
쪽에 있는 DEBUG명령어는 비 활성화 상태이어야 합니다.
123
레더 인터럽트의 메커니즘
레더로직에서 F40 특수릴레이에 1 을 써넣으면, 베이직 쪽에서 인터럽트가 발생한다는 것이 기본적인
LADDERINT 의 메커니즘입니다. 아래처럼 SETOUT 명령을 써서 F40 특수릴레이에 1 을 기입해도,
LADDERINT는 발생됩니다.
베이직 쪽에서 인터럽트 루틴을 수행하는 동안 F40 특수 릴레이는 1 인 상태를 계속 유지하다가,
BASIC쪽에서 RETURN명령어 바로전에 F40을 클리어 해주어야 합니다.
LADDERINT 수행 중 다른 LADDERINT는 실행될 수 없습니다.
만약 동시에 두개의 레더에서 LADDERINT발생 조건을 만족시켜서 F40을 동시에 1로 만들었다면, 아
래쪽에 있는 LADDERINT가 유효하게 됩니다. 다른 한쪽은 인터럽트 요구 시도자체가 무시되는 것입니
다. 이런 일을 미연에 방지하기 위해서는 F40릴레이를 인터럽트 발생의 입력조건에 AND시키는 방법
이 있습니다.
이렇게 하면 다른 한쪽의 LADDERINT가
수행 중일 때에는 아예 인터럽트 발생
요구를 하지 않게 됩니다.
124
LADDER 와 BASIC의 협동
CUBLOC을 사용해서, 개발에 들어가기에 앞서, 유저는 먼저 다음과 같은 고민을 하게 됩니다.
1. 레더만 사용해서 프로그램을 완성할 것인가…
2. 베이직만 사용해서 프로그램을 완성할 것인가…
3. 베이직과 레더를 모두 사용해서 프로그램을 완성할 것인가…
물론, 1,2,3번 중 어떤 것을 선택할 것인지는 유저 여러분이 결정해야 될 사항입니다. 프로젝트의 성격
을 잘 파악하신 뒤 결정하시기 바랍니다. 1번과 2번의 경우 특별한 문제가 없습니다만, 3번 “레더와
베이직을 모두사용”하는 경우에는 어떤 언어를 MAIN언어로 할 것인지를 또 생각해 보아야 합니다.
LADDER LOGIC이 메인이 되는 경우
레더로 전체 프로그램을 완성하고, AD입력이나 키패드 입력과 같은 기능을 BASIC에서 처리하는 경우
입니다. 레더는 레더 본연의 임무인 “시퀀스처리”에만 충실하고, 레더에서 처리할 수 없는 기능을
BASIC쪽에서 처리하게 됩니다.
BASIC이 메인 언어가 되는 경우
베이직으로 프로그램의 전체를 완성하고, 레더 로직으로는 부분적인 제어만을 수행하는 경우입니다.
이 경우 BASIC 에서 레더로직을 블록단위로 ON/OFF 해야 하는데, 이때, 마스터 콘트롤을 사용하면 간
단하게 일정한 단위의 블록을 ON 하거나 OFF할 수 있습니다.
If A=1 THEN _M(1) = 1
If B=1 THEN _M(1) = 0
P0
M1
P3
P2 P9
MCS 0
MCSCLR 0
이번 장에서는 BASIC 언어를 메인으로 쓰는 경우, 레더로직을 블록으로 구분하여, 블록 별로 ON 또는
OFF하는 방법에 대해서 설명하도록 하겠습니다.
125
방법 1: M릴레이로 AND 하기
LADDER LOGIC의 내용이 얼마 안 되는 경우에 사용할 수 있는 비교적 간단한 방법입니다. 설명을 쉽
게 하기 위해서 다음과 같은 회로와 레더로직을 구성하여 보겠습니다. LED1과 LED2가 서로 틀린 주기
로 깜박이게 됩니다.
만약, CUBLUC STUDY BOARD-1을 가진 분이라면, 아래와 같이 점퍼선을 연결하시면 됩니다.
베이직 쪽 소스는 다음과 같습니다.
Const Device = CB280
Usepin 0, In
Usepin 2, Out
Usepin 3, Out
Set Ladder On
126
다음 레더로직으로 실행시키면, LED1과 LED2가 서로 틀린 주기로 깜박이게 됩니다
여기에, 스위치를 누르면 첫 번째 플리커가 동작하고, 스위치를 OFF하면 두 번째 플리커가 동작하도록
해보겠습니다. 스위치의 입력은 BASIC쪽에서 담당하고, BASIC에서 LADDER의 일부분을 제어하는 방법
입니다.
127
베이직은 다음과 같이 소스를 고쳐서 입력합니
다.
포트 0의 입력상태를 보고, M0, M1릴레이의 상
태를 바꾸어 줌으로써, 레더로직의 특정부분을
ON하거나 OFF할 수 있습니다.
M0 릴레이가 ON 이 되어야, 첫 번째 플리커가
동작하게 됩니다.
M0릴레이가 AND조건으로 설정되어 있기 때문
입니다.
128
방법 2: 마스터 콘트롤로 제어하기
레더로직에는 마스터 콘트롤이라는 기능이 있습니다. 레더로직을 몇 개의 블록으로 나누어, 블록단위
로 ON하거나 OFF할 수 있는 기능입니다. 하나의 블록을 MCS와 MCSCLR명령으로 감싼 형태를 가지
고 있습니다.
방법 1 에서 사용한 회로도를 그대로 사용해서, 설명하도록 하겠습니다.
스위치를 누르면 첫 번째 플리커가 동작하고, 스
위치를 OFF하면 두 번째 플리커가 동작하는 기
능을 합니다.
앞에서 설명한 방법 1 과 동일한 동작을 하지만,
블록 안의 내용이 많을 경우에는 이 방법이 훨
씬 간편합니다.
129
“마스터 콘트롤”을 사용한 레더로직에 대한 설명입니다.
MCS펑션에 연결되어 있는 릴레이가 ON되어야, 해당 MCS블록 안에 있는 레더회로가 동작하게 됩니
다. 동작하지 않는 MCS블록 안에 있는 모든 출력은 OFF상태가 됩니다.
130
방법 3: GOTO로 제어하기
AND접속이나 마스터콘트롤은 동작하지 않는 회로에서 출력의 상태를 강제로 OFF해줍니다. 기계제어
에서는 출력의 ON/OFF상태를 확실하게 해두어야 하기 때문입니다.
만약, 특정블록을 아예 스캔 하지 않도록 하도록 하고 싶다면 어떻게 할까요? 이럴 때에는 레더로직에
서 GOTO 명령을 사용하면 됩니다.
이렇게 하면, 스위치가 ON 되었을 때, 첫 번째
플리커회로는 스캔 하지 않고, SKIP하게 됩니다.
앞에서 설명했던 AND 제어 또는 마스터콘트롤
제어방식과 차이점이 무엇일까요?
이 방법은 해당블록을 스캔 하지 않고, 건너 뛰
게 되므로, P2출력이 이전 상태를 계속 유지하게
됩니다.
AND제어나 마스터콘트롤에서는 P2출력을 강제
로 OFF하게 됩니다.
이것은 P2출력을 다른 블록에서 제어할 수 있다
는 것을 뜻하기도 합니다.
131
방법 4: 레더전체를 ON/OFF를 제어하기
아주 단순하게, 레더전체를 ON하거나 OFF하는 방법도 있습니다.
아래 레더로직은 P2에 연결된 LED를 깜박이게 하는 LED FLASH 프로그램입니다.
다음과 같이 베이직을 구성하면, 이 레더로직은 계속 동작하게 됩니다.
Const Device = CB280
Usepin 2,Out
Set Ladder On
Do
Loop
0 번 I/O 포트에 스위치를 연결하고, 다음과 같이 베이직 프로그램을 바꾸면, 0 번 포트가 HIGH 일 때
LADDER LOGIC이 동작하고, LOW일 때는 동작하지 않게 됩니다. 동작하지 않을 때, I/O포트의 상태는
이전상태를 계속 유지하게 됩니다. (아무도 제어하지 않는 상태가 됩니다.)
Const Device = CB280
Usepin 2,Out
Set Ladder On
Do
If In(0) = 1 Then
Set Ladder Off
Else
Set Ladder On
End If
Loop
132
제 6 장
어플리케이션 노트
133
노트 1. 자기유지 (래치)회로
레더로직 (또는 시퀀스 회로)를 배울 때, 가장 먼저 배우는 회로입니다. 이 실험을 위해 CUBLOC
STUDY BOARD-1을 사용했습니다. 다음과 같이 회로 (결선)을 구성하세요!
START 스위치를 누르면, 모터가 돌아가고, STOP 스위치를 누르면 모터가 정지하는 상황을 가정해 본
것입니다. 모터의 동작은 P2에 연결된 LED로 확인할 수 있습니다.
134
베이직 소스를 “PLC 마법사”로 작성해 보겠습니다. 아래 화면과 같이 PLC 마법사를 클릭한 뒤, 디바이
스를 CB280으로 바꾸고, P0, P1,P2를 활성화 시킨 뒤, 입출력상태를 조절하세요!
다 하셨으면, 맨 밑에 있는 Replace Basic Code를 누릅니다.
베이직 탭을 누르면 다음과 같은 베이직 소스가 자동 생성되어 있는 것을 볼 수 있습니다.
135
레더로직을 입력하신 뒤, RUN보턴을 누르면 실행됩니다.
P0스위치를 누르면 P2 LED에 불이 들어오고, P1스위치를 누르면, P2스위치에 불이 꺼집니다. 이것이
바로 자기유지 입니다. P2의 상태를 붙잡아 놓을 수 있다고 해서 “자기 유지”라고 합니다. 타이밍 차트
로 보면 더욱 쉽게 알 수 있습니다.
레더를 보면 출력으로 사용한 P2 릴레이를 입력에서 사용한 것을 볼 수 있습니다. 이처럼 레더로직에
서는 출력 릴레이를 입력으로 사용하는 것이 가능합니다. 출력 릴레이를 입력으로 사용할 경우, 출력
을 상태를 가지고 있게 됩니다. 출력 상태를 변화시키지는 못하지만, 출력상태가 무엇인지는 알 수 있
는 것입니다.
136
노트 2. 인터록 회로
한 회로가 동작 중일 때 다른 회로의 동작을 막아주는 회로를 “인터록”회로 라고 합니다. 이 것을 설
명하기 위해 2개의 자기유지 회로가 있는 레더로직을 만들어 보겠습니다.
다음 베이직 소스를 입력하세요.
4개의 입력과 2개의 출력을 위해 총 6개의 입
출력 포트에 대한 USEPIN 설정이 필요합니다.
레더로직은 똑 같은 2개의 “자기유지”회로를 구
성해 보았습니다. 이 프로그램을 실행시키면, 두
개의 자기유지가 동작됩니다.
137
이 회로에 약간의 수정만 더 하면, “인터록”회로를 구성할 수 있습니다.
이렇게 한다면, 어느 한쪽이 동작 중일 때 다른 한쪽은 동작할 수 없는 상태가 됩니다. 이처럼, 여러
개의 회로간에 서로조건을 추가하여 동작을 금지시키거나, 동작이 되도록 만드는 회로를 “인터록”회로
라고 부릅니다.
138
노트 3. 스위칭 회로
한 개의 보턴으로 한번 누르면 출력이 ON 되고, 한번 더 누르면 출력이 OFF 되는 회로입니다. 일종의
TOGGLE동작이라고 할 수 있습니다. 다음과 같이 회로를 구성하세요.
CUBLOC STUDY BOARD-1 이 있으신 분은 다음과 같이 결선하십시오.
한번 누르면 모터가 돌아가고, 한번
더 누르면 모터가 멈추는 상황을 생
각하시면 됩니다.
139
아래와 같은 레더로직을 작성하고, 실행시켜 보세요. P0 스위치를 누르면 LED 에 불이 들어오고, 다시
한 번 누르면 LED에 불이 꺼집니다.
이 동작을 타이밍 차트로 표현하면 다음과 같습니다.
140
노트 4. 레더에서 온도읽기
레더로직에서 온도센싱을 하기 위해서는 BASIC 프로그램의 도움이 필요합니다. BASIC 프로그램에서
A/D컨버터를 통해, 온도센서에서 값을 읽어 들인 후, 테이블 변환을 통해 실제 온도 값으로 환산하여,
D영역에 저장합니다.
그러면, 레더에서 D영역에 있는 값을 읽어서 원하는 처리를 하게 됩니다.
온도센서의 종류에는 열전쌍, PT100센서, NTC, PTC써미스터등 다양한 종류가 있습니다. 본 노트에서는
NTC서미스터를 이용한 온도센싱 방법에 대하여 소개하겠습니다.
NTC서미스터는 온도에 민감한 저항으로 만들어진 센서로 볼 수 있습니다. 온도에 따라 저항 값이 바
뀌기 때문에, 이를 이용하여 온도를 알아낼 수 있습니다. NTC서미스터 중 세라믹으로 되어 있는 타입
은 –20도~130도 정도의 온도를 검출해 낼 수 있습니다.
마치 다이오드처럼 생긴 NTC 서미스터가 있는데, 이 센서를 사용하면 –30 도~250 도까지 온도센싱이
가능합니다.
제조사의 홈페이지를 통하여 선택한 센서의 R-T변환 테이블 (저항-온도)를 구할 수 있습니다. 만약 여
러분이 온도센서를 파는 상점에 가셨다면 “다이오드 타입 10 K오옴, NTC서미스터”를 찾는다고 하면,
쉽게 구할 수 있을 것입니다.
온도 최저치 중간치 최대치
0 31260.0 32610.0 33987.7
1 29725.7 30993.7 32286.7
2 28275.6 29466.8 30680.6
3 26904.5 28023.9 29163.6
4 25607.8 26660.0 27730.3
5 24381.0 25370.2 26375.7
6 23220.0 24150.1 25094.9
7 22120.9 22995.7 23883.7
8 21080.1 21903.1 22737.7
9 20094.1 20868.5 21653.3
10 19159.9 19888.7 20626.7
11 18274.4 18960.5 19654.6
12 17434.8 18080.8 18733.8
13 16638.5 17246.9 17861.4
14 15883.1 16456.1 17034.4
15 15166.2 15706.0 16250.4
16 14485.7 14994.4 15506.9
17 13839.6 14318.9 14801.5
18 13225.9 13677.7 14132.2
19 12642.8 13068.7 13496.9
20 12088.7 12490.3 12893.6
21 11561.9 11940.6 12320.7
141
22 11061.0 11418.2 11776.4
23 10584.6 10921.6 11259.2
24 10131.3 10449.3 10767.5
25 9700.0 10000.0 10300.0
26 9281.3 9572.5 9864.0
차트를 보면 저항 값과 온도 값의 변환곡선이 일정치 않음을 알 수 있습니다. 저항 값을 일정한 계산
공식에 의해 온도 값으로 환산하기 쉽지 않기 때문에, 테이블에 의한 변환방식을 사용합니다. 온도센
싱을 위해서 다음과 같은 회로를 사용합니다. CUBLOC 코어모듈로 유입되는 과전압을 차단하기 위해서
제너다이오드를 반드시 사용해야 합니다.
NTC TH.
5.1V
ZENER
DIODE 0.47uF CUBLOC
A/D CHANNEL 0
1Kohm.
1%
회로에서 알 수 있듯이 온도센서와 1K저항 사이에서 분압된 전압 값을 A/D변환기로 읽어내는 방법을
온도센싱을 수행합니다. CUBLOC에는 10BIT A/D변환기가 내장되어 있어, 0~1024의 값으로 변환됩니
다. 이 값을 온도 값으로 변환하는 테이블을 작성하는 것이 본 어플리케이션 노트의 핵심입니다.
다음은 R-T 변환 테이블의 저항 값이 A/D 변환 후 어떤 값으로 변환되는지를 계산해 놓은 표입니다.
(일부 온도범위만 기재해 놓았습니다.)
온도 저항 값 전압 A/D변환 값
-30 175996.6 4.971750865 1018
-29 165473.9 4.969965259 1018
-28 155643.6 4.968080404 1017
-27 146456.3 4.966091647 1017
-26 137866.4 4.963994167 1017
-25 129831.7 4.961782976 1016
-24 122313.4 4.959452909 1016
-23 115275.4 4.956998627 1015
-22 108684.3 4.954414614 1015
-21 102509.3 4.951695171 1014
-9 52288.3 4.90617073 1005
-8 49549.7 4.901087406 1004
-7 46970.5 4.895769279 1003
-6 44540.6 4.890207868 1002
-5 42250.5 4.884394522 1000
-4 40091.5 4.878320427 999
-3 38055.4 4.871976604 998
-2 36134.4 4.865353924 996
-1 34321.5 4.858443112 995
0 32610.0 4.851234752 994
1 30993.7 4.8437193 992
2 29466.8 4.835887094 990
3 28023.9 4.827728362 989
4 26660.0 4.819233234 987
5 25370.2 4.810391755 985
6 24150.1 4.801193902 983
7 22995.7 4.79162959 981
8 21903.1 4.781688696 979
9 20868.5 4.771361072 977
142
10 19888.7 4.760636561 975
11 18960.5 4.749505017 973
12 18080.8 4.737956327 970
13 17246.9 4.725980424 968
14 16456.1 4.713567319 965
15 15706.0 4.700707114 963
16 14994.4 4.68739003 960
17 14318.9 4.673606431 957
18 13677.7 4.659346849 954
19 13068.7 4.644602011 951
20 12490.3 4.629362861 948
21 11940.6 4.613620595 945
22 11418.2 4.597366683 942
23 10921.6 4.580592903 938
24 10449.3 4.563291365 935
25 10000.0 4.545454545 931
26 9572.5 4.527075313 927
27 9165.6 4.508146964 923
28 8778.3 4.488663246 919
29 8409.4 4.468618396 915
30 8058.1 4.448007162 911
31 7723.3 4.426824842 907
32 7404.3 4.405067304 902
33 7100.2 4.382731022 898
34 6810.2 4.359813102 893
35 6533.7 4.336311306 888
36 6269.8 4.312224084 883
37 6018.0 4.287550592 878
38 5777.7 4.262290722 873
39 5548.3 4.236445118 868
50 3606.1 3.914475937 802
51 3472.1 3.881948015 795
52 3343.7 3.848917708 788
53 3220.8 3.815397329 781
54 3103.1 3.781399998 774
55 2990.2 3.746939622 767
56 2882.1 3.712030877 760
57 2778.4 3.676689176 753
58 2679.0 3.640930651 746
59 2583.6 3.604772114 738
81 1220.4 2.748157207 563
82 1181.9 2.7084025 555
83 1144.8 2.668747011 547
84 1109.0 2.629210536 538
85 1074.5 2.589812422 530
86 1041.3 2.550571543 522
87 1009.2 2.511506263 514
88 978.3 2.472634416 506
89 948.5 2.433973277 498
90 919.8 2.395539544 491
91 892.0 2.357349316 483
92 865.3 2.319418079 475
93 839.4 2.281760687 467
94 814.5 2.244391354 460
95 790.4 2.207323646 452
96 767.1 2.170570465 445
97 744.7 2.134144055 437
98 723.0 2.098055989 430
99 702.0 2.062317177 422
100 681.8 2.026937858 415
'
' NTC THERMISTOR READ TABLE
' 10K DIODE TYPE
' With Ladder Logic
143
Const Device = cb280
Const Integer TH_TABLE = (992,990,989,987,985,983,981,979,977,975,
973,970,968,965,963,960,957,954,951,948,
945,942,938,935,931,927,923,919,915,911,
907,902,898,893,888,883,878,873,868,862,
857,851,845,839,833,827,821,815,808,802,
795,788,781,774,767,760,753,746,738,731,
723,716,708,700,692,684,677,669,661,652,
644,636,628,620,612,604,596,587,579,571,
563,555,547,538,530,522,514,506,498,491,
483,475,467,460,452,445,437,430,422,415)
Dim a As Integer,b As Integer
Set Ladder on
Do
b = Tadin(0)
If b > 990 Or b < 400 Then
_D(10) = 65535 ‘범위를 벗어날 경우에는 &hffff를 저장
Else
For a=0 To 100
If b > TH_TABLE(a) Then Exit For
Next
_D(10) = a ‘ 결과값을 D10에 저장
End If
Delay 500 ‘ 0.5초마다 한번씩 갱신
Loop
A/D변환을 위해 TADIN 라이브러리를 사용하면, 자동적으로 10번의 A/D변환 결과의 평균치를 리턴하
기 때문에, 좀더 정밀한 측정이 가능합니다. 본 샘플프로그램은 0~100 도까지의 측정결과만을 표시합
니다. 좀더 넓은 범위의 온도센싱을 하려면 본 소스를 적절히 바꾸어 사용하시기 바랍니다.
R-T 온도 테이블에서 A/D 변환 값을 산출해 내는 공식은 다음과 같습니다. 먼저 서미스터의 저항 값
(THR)을 가지고 1K옴의 저항과 5V를 분압했을 때의 전압은 다음 공식으로 계산합니다.
V를 10비트 분해능의 A/D변환기를 넣으면 0~1024사이의 값으로 변환됩니다. 최종 결과값을 얻으려
면 V를 204.8과 곱해줍니다. 서미스터 제조회사에서 제공하는 R-T변환 테이블을 EXCEL에 입력한 뒤
위의 공식을 대입한다면, 쉽게 최종 결과값을 얻을 수 있습니다
144
레더에서는 단순히 D10영역의 값을 비교해서, 원하는 범위에 들어갔을 때, 출력을 ON /OFF할 수 있
습니다. 다음 레더를 실행시키면
모니터링 상태에서 D10의 값을 보면, 다음과 같습니다. (92도 이상일 때 M1이 ON됩니다.)
Recommended