슬라이드 1

Similar documents
Microsoft Word - PLC제어응용-2차시.doc

untitled

BY-FDP-4-70.hwp

ADP-2480

아이콘의 정의 본 사용자 설명서에서는 다음 아이콘을 사용합니다. 참고 참고는 발생할 수 있는 상황에 대처하는 방법을 알려 주거나 다른 기능과 함께 작동하는 방법에 대한 요령을 제공합니다. 상표 Brother 로고는 Brother Industries, Ltd.의 등록 상

<4D F736F F F696E74202D203137C0E55FBFACBDC0B9AEC1A6BCD6B7E7BCC72E707074>

슬라이드 제목 없음

제 2 장 기본 사용법

Install stm32cubemx and st-link utility

ISP and CodeVisionAVR C Compiler.hwp

API 매뉴얼

Microsoft PowerPoint - chap06-2pointer.ppt

Microsoft Power Point 2002

Microsoft Word - [00] 표지 앞_XGF-AC8A,AV8A_.doc

목차 윈도우드라이버 1. 매뉴얼안내 운영체제 (OS) 환경 윈도우드라이버준비 윈도우드라이버설치 Windows XP/Server 2003 에서설치 Serial 또는 Parallel 포트의경우.

비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2

Microsoft PowerPoint - ch07 - 포인터 pm0415

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A638C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

PowerPoint 프레젠테이션

IRISCard Anywhere 5

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

사용설명서를 읽기 전에 ios용 아이디스 모바일은 네트워크 연결을 통해 ios 플랫폼 기반의 모바일 기기(iOS 버전 6.0 이상의 ipod Touch, iphone 또는 ipad)에서 장치(DVR, 네트워크 비디오 서버 및 네트워크 카메라)에 접속하여 원격으로 영상을

OCW_C언어 기초

목차 제 1 장개요 제 2 장소프트웨어구조 제 3 장공통요소 I

RealDSP UT 프로그램 메뉴얼

PowerPoint 프레젠테이션

특징 찾아보기 열쇠 없이 문을 열 수 있어요! 비밀번호 및 RF카드로도 문을 열 수 있습니다. 또한 비밀번호가 외부인에게 알려질 위험에 대비, 통제번호까지 입력해 둘 수 있어 더욱 안심하고 사용할 수 있습니다. 나만의 비밀번호 및 RF카드를 가질 수 있어요! 다수의 가

Microsoft Word - src.doc

쓰리 핸드(삼침) 요일 및 2405 요일 시간, 및 요일 설정 1. 용두를 2의 위치로 당기고 반시계방향으로 돌려 전날로 를 설정합니다. 2. 용두를 시계방향으로 돌려 전날로 요일을 설정합니다. 3. 용두를 3의 위치로 당기고 오늘 와 요일이 표시될 때까지 시계방향으로

KMC.xlsm

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp");

6. 설치가시작되는동안 USB 드라이버가자동으로로드됩니다. USB 드라이버가성공적으로로드되면 Setup is starting( 설치가시작되는중 )... 화면이표시됩니다. 7. 화면지침에따라 Windows 7 설치를완료합니다. 방법 2: 수정된 Windows 7 ISO

메뉴얼41페이지-2

Microsoft PowerPoint - e pptx

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F >

사용설명서를 읽기 전에 안드로이드(Android)용 아이디스 모바일은 네트워크 연결을 통해 안드로이드 플랫폼 기반의 모바일 기기에서 장치 (DVR, NVR, 네트워크 비디오 서버, 네트워크 카메라) 에 접속하여 원격으로 영상을 감시할 수 있는 프로그램입니다. 장치의 사

<4D F736F F D D31312D30312D53572D30312DBBE7BFEBC0DABCB3B8EDBCAD5FBFDCBACEB9E8C6F7BFEB2E646F63>

System Recovery 사용자 매뉴얼

Studuino소프트웨어 설치

untitled

온습도 판넬미터(JTH-05) 사양서V1.0

Microsoft PowerPoint - chap04-연산자.pptx

<4D F736F F F696E74202D2032C0E55FC6AEB7B9C0CCB4D720C5B0C6AEB1B8BCBAC7B05F446F6E652E707074>

Microsoft Word - Armjtag_문서1.doc

tiawPlot ac 사용방법

Windows 8에서 BioStar 1 설치하기

API 매뉴얼

Smart IO_K_160427

PathEye 공식 블로그 다운로드 받으세요!! 지속적으로 업그래이드 됩니다. 여러분의 의견을 주시면 개발에 반영하겠 습니다.

SBR-100S User Manual

PowerPoint Template

LS XGT SERIES Connection Manual

1

03_원격제어반_IDAC-2W

2 PX-8000과 RM-8000/LM-8000등의 관련 제품은 시스템의 간편한 설치와 쉬운 운영에 대한 고급 기술을 제공합니다. 또한 뛰어난 확장성으로 사용자가 요구하는 시스템을 손쉽게 구현할 수 있습니다. 메인컨트롤러인 PX-8000의 BGM입력소스를 8개의 로컬지

목차 1. 시스템요구사항 암호및힌트설정 ( 윈도우 ) JetFlash Vault 시작하기 ( 윈도우 ) JetFlash Vault 옵션 ( 윈도우 )... 9 JetFlash Vault 설정... 9 JetFlash Vault

슬라이드 1

歯표지_통합_.PDF

Mango-IMX6Q mfgtool을 이용한 이미지 Write하기

T100MD+

Melsec (Q – Ethernet) 통신 테스트 레포트

PowerPoint Presentation

Windows Server 2012

C# Programming Guide - Types

네트워크 설정

금오공대 컴퓨터공학전공 강의자료

Poison null byte Excuse the ads! We need some help to keep our site up. List 1 Conditions 2 Exploit plan 2.1 chunksize(p)!= prev_size (next_chunk(p) 3

MF3010 MF Driver Installation Guide

Smart IO_K_121108

목 차 1. 드라이버 설치 설치환경 드라이버 설치 시 주의사항 USB 드라이버 파일 Windows XP에서 설치 Windows Vista / Windows 7에서 설치 Windows

경우 1) 80GB( 원본 ) => 2TB( 복사본 ), 원본 80GB 는 MBR 로디스크초기화하고 NTFS 로포맷한경우 복사본 HDD 도 MBR 로디스크초기화되고 80GB 만큼포맷되고나머지영역 (80GB~ 나머지부분 ) 은할당되지않음 으로나온다. A. Window P

MF Driver Installation Guide

<4D F736F F F696E74202D C61645FB3EDB8AEC7D5BCBA20B9D720C5F8BBE7BFEBB9FD2E BC8A3C8AF20B8F0B5E55D>

À̵¿·Îº¿ÀÇ ÀÎÅͳݱâ¹Ý ¿ø°ÝÁ¦¾î½Ã ½Ã°£Áö¿¬¿¡_.hwp

RVC Robot Vaccum Cleaner

안전을위한주의사항 제품을사용하기전에 제품을안전하고효율적으로사용하기위하여본사용설명서의내용을끝까지잘읽으신후에사용해주십시오. 안전을위한주의사항은제품을안전하고올바르게사용하여사고나위험을미리막기위한것이므로반드시지켜주시기바랍니다. 주의사항은 경고 와 주의 의 2가지로구분되어있으며,

CPX-E-SYS_BES_C_ _ k1

슬라이드 1

Microsoft PowerPoint - chap06-1Array.ppt

슬라이드 1


-. Data Field 의, 개수, data 등으로구성되며, 각 에따라구성이달라집니다. -. Data 모든 의 data는 2byte로구성됩니다. Data Type는 Integer, Float형에따라다르게처리됩니다. ( 부호가없는 data 0~65535 까지부호가있는

Microsoft Word - windows server 2003 수동설치_non pro support_.doc

Visual Basic 반복문

Microsoft Word - ③GLOFA-GM - 목차수정다시

이 장에서 사용되는 MATLAB 명령어들은 비교적 복잡하므로 MATLAB 창에서 명령어를 직접 입력하지 않고 확장자가 m 인 text 파일을 작성하여 실행을 한다


학습목차 2.1 다차원배열이란 차원배열의주소와값의참조

Microsoft Word - logic2005.doc

안전을위한주의사항 제품을사용하기전에 제품을안전하고효율적으로사용하기위하여본사용설명서의내용을끝까지잘읽으신후에사용해주십시오. 안전을위한주의사항은제품을안전하고올바르게사용하여사고나위험을미리막기위한것이므로반드시지켜주시기바랍니다. 주의사항은 경고 와 주의 의 2가지로구분되어있으며,

슬라이드 1

금오공대 컴퓨터공학전공 강의자료

설치 순서 Windows 98 SE/Me/2000/XP 1 PC를 켜고 Windows를 시작합니다. 아직 컴퓨터에 프린터를 연결하지 마십시오. 2 PC에 P-S100 CD-ROM(프 린터 드라이버)을 삽입합니다. 3 설치 프로그램을 시작합니다. q CD-ROM의 PS1

View Licenses and Services (customer)

실험 5

歯표지.PDF

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A634C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

강의 개요

2 Mitsubishi FX Series Computer Link MITSUBISHI FX SERIES COMPUTER LINK 시스템구성 시스템설정 사용예 사용예 사용예

Transcription:

LS 경영철학

목차 제1장 XGI PLC 개요제2장데이터메모리제3장기본 Function 제4장확장 Function 제5장응용 Function 제6장사용자정의 F/FB 제7장태스크프로그램제8장 SFC 언어제9장글로벌변수제10장 Analog 입력모듈제11장 Analog 출력모듈제12장프로그램예제부록1 펑션 / 펑션블록목록부록2 ARRAY 변수부록3 사용자데이터타입부록4 ST 언어 9 27 41 59 67 95 107 117 147 151 181 209 245 263 273 279 5

제 1 장 XGI PLC 개요

XGI PLC 개요 XGT 전용 MPU 최고수준의 CPU 처리속도 : 28ns/step 최대 131,072 점 I/O 제어대용량프로그램메모리 (1MB) 및데이터메모리 IEC 61131-3 표준프로그래밍언어 LD, SFC, ST (Structured Text) 지원사용자정의 FB (Function Block) 지원최대 256 루프 PID 및다양한프로세스제어명령 XGK 와동일한하드웨어구성 9

Speed Innovation Fast 업계최고속 CPU 처리속도 (0.028μs) 와향상된 Backplane Interface 를통해초고속 Processing Time을보장하며 USB 를통한고속업 / 다운로드는유지보수의편리성을극대화합니다. (1) 전용마이크로프로세서를채용하여연산의고속화를구현하였습니다. 시퀀스명령 : 0.028 s, MOV 명령 0.084 μs 실수연산 : 단장과배장정밀도의연산속도를획기적으로개선 구분 단장 0.602 μs 0.602 μs 1.106 μs 1.134 μs 배장 1.078 μs 1.078 μs 2.394 μs 2.66 μs (2) 베이스를통한모듈간데이터이동속도를나노급속도로개선하였습니다. 16 점입출력모듈데이터처리 : 0.20 s ~ 0.80 s 아날로그 1 채널데이터처리 : 0.20 s ~ 0.80 s 1 kbyte 통신모듈데이터처리 : 12.8 s 프로그램수행중 I/O 데이터자동리프레시로병렬처리 Size Innovation Compact 동급최소사이즈의 ( 모듈크기 27 * 98 * 90) 각구성품은 Compact 한 Panel 제작을통해 원가절감및다양한 Application 분야에의적용을가능하게합니다. 10

Network Innovation Flexible Fast Ethernet 및 Open Fieldbus 에기반한 System 은고신뢰도의고속전송을가능하게하고 다양한 Field Device interface 를통해 System 구성상의한계를극복합니다. 래더프로그램의작성없이파라미터설정으로네트워크개통가능 전용툴 (XG-PD) 로네트워크설정및운전상태모니터가능 다양한국제규격의 Open 네트워크를지원 사용의용이성과최적의성능을제공하는전용네트워크 기존제품 (MASTER-K,GLOFA-GM) 과의네트워크호환성제공 Software Innovation Comfortable XG5000 Package 는향상된사용자 Interface 와편리한조작성을바탕으로 Multi PLC Multi Programming 을지원하고다양한모니터링및강력한진단기능을제공합니다. 래더와텍스트 ( 니모닉 ) 방식의호환 심볼릭변수에의한프로그램의강화 GLOFA 프로그램의자동변환 트랜드모니터기능의강화 사용자이벤트기능 데이터트레이스기능 11

. Engineering & Programming Innovation Easy Master K Series 의명령어들을계승발전시킨명시적이고직관적인명령어체계와파라미 터를 이용한 Programless Setup 을통해쉽고사용자친화적인 Engineering 환경을제공합니다 운전중프로그램수정기능확장및안정성확보 운전중네트워크의설치및변경이가능 편리한모듈교환마법사 ( 사용자툴없이모듈교환가능 ) 시스템진단기능 입출력모듈스킵기능 고장마스크설정기능 다양한운전이력제공 아날로그모듈은정밀도와안정성을한층높였으며아래와같은편리성을제공합니다. 아날로그데이터전용 U 디바이스를제공하여프로그램의단순화 파라미터설정방식제공으로특수모듈의메모리 map 을몰라도설정가능 특수모듈모니터링기능제공으로편리성대폭증대 12

XGI CPU 종류 ( 모듈타입 ) 13

1) CPU - XGT CPU 각부분명칭및기능에대해설명합니다. Boot /Nor REMOTE M.XCHG RUN STOP RST D.CLR LED 스위치 USB 커넥터 RS-232C 커넥터 XGK-CPUH RUN/STOP REM ERR PS BAT CHK BATTERY 홀더 스위치스위치 Boot/Nor REMOTE M.XCHG 용도 항상 ON ( 사용자조작시 CPU 소손또는오동작의원인이됨 ) - ON: 리모트허용 - OFF: 리모트금지 * 리모트제어를하기위해서는 ON - ON: 런중모듈교체허용 - OFF: 런중모듈교체금지 * 런중모듈교체완료후반드시 OFF RUN/STOP - RUN: Local RUN (Front View) (Bottom View) - STOP: Local STOP 또는리모트모드 * 리모트제어를하기위해서는 STOP RS-232C 커넥터 : XG5000 접속용으로사용되며, XG5000 접속포트외 Modbus 서버기능을지원하는포트가내장되어있으며통신파라미터는 XG5000의기본파라미터에서설정합니다. - XG5000 접속용포트 : 2(Rx), 3(Tx), 5(SG) - Modbus 통신용포트 : 8(Rx), 7(Tx), 5(SG) RST D.CLR - 3 초미만 RST: PLC 리셋 - 3 초이상 RST: PLC Overall 리셋 - 3 초미만 D.CLR: 래치 1 클리어 - 3 초이상 D.CLR: 래치 2 클리어 * PLC 가 STOP 상태인상태에서만동작 RST 와 D.CLR 기능의차단과해제등은 XG5000 기본파라미터에서설정가능함 14

- LED 표시 RUN/STOP REMOTE ERR LED PS (Programmable Status) BAT - 녹색점등 : RUN 상태 - 적색점등 : STOP 상태 - 적색점멸 : 에러상태 상태 - 황색점등 : 리모트허용 (REMOTE 스위치 ON) - 소등 : 리모트금지 (REMOTE 스위치 OFF) - 적색점등 : 운전불가능한에러상태 - 소등 : 이상없음 - 적색점등 : * 사용자플래그 ON * 에러시운전속행설정으로에러상태에서운전중 * M.XCHG 스위치가 ON 상태에서모듈을빼거나다른모듈을장착한경우 - 소등 : 이상없음 - 적색점등 : 배터리전압이규정전압미만 - 소등 : 이상없음 CHK - 적색점등 : * M.XCHG 스위치가 ON 된경우 * 디버그모드 에서운전중인경우 * 강제 I/O 설정상태 * 고장마스크, SKIP 플래그가설정된경우 * 운전중경고장 (Warning) 이발생한경우 * 증설베이스전원이상 - 적색점멸 : 연산에러시운전속행설정이되어있는상태에서에러가발생 - 소등 : 표준설정으로운전중에표시 15

System 구성 1) 시스템구성 Battery CPU 모듈 USB 또는 RS-232C Cable XG5000(XG-PD, XG-TCON, XG-PM 포함 ) 전원모듈 (XGP-P ) 기본베이스 (XGB-M A) 증설케이블 (XGC-E ) 입출력모듈 (XGI- ) (XGQ- ) 특수모듈 (XGF- A) 증설베이스 ( 최대 7 단 ) (XGB-E A) 통신모듈 (XGL- ) 종단저항 *1) (XGT-TERA) 1 2 3 4 2 3 2 2 2 1 2 0 베이스번호설정스위치 *2) *1) 증설베이스사용시종단저항을반드시연결해야합니다 ( 기본베이스에는종단저항내장되어있음 ) *2) 증설베이스를 2 개이상사용할경우반드시베이스번호설정스위치를조정해주어야합니다. 16

2) 증설시스템 XGT PLC 에사용하는베이스는기본베이스 (XGB-M ㅁㅁ A) 와증설베이스 (XGB-E ㅁㅁ A) 로구분됩니다. 1 개의베이스는전원및 CPU 를 제외하고 4/6/8/12 개의모듈을장착할수있습니다. 기본베이스는전원모듈이취부되는슬롯의왼쪽에증설커넥터가 1 개있으며, 증설베이 스는두개의증설커넥터가있으므로외형으로도구분이됩니다. 증설베이스를사용할때증설단자보호커버를열면베이스번호설정용딥 스위치가 4 개있는데, 이스위치를이용하여베이스번호를설정해야하며최대증설거리 ( 증설케이블길이의합 ) 는 15m 입니다. 증설케이블의연결은기본베이스에서시작하여증설베이스의안쪽커넥터에연결합니다. 2 개이상의증설베이스를설치할경우증설베이스의안쪽커넥터는 CPU 방향으로연결하고, 바깥쪽커넥터는하부증설베이스에연결합니다. 증설베이스의증설커넥터를열면베이스번호설정스위치가있습니다. 이스위치를이용하여베이스번호를설정해주어야합니다. 증설베이스를설치할경우마지막베이스의바깥쪽증설커넥터에종단저항 (XGT-TERA) 를반드시설치해야합니다. 증설케이블길이의총합은 15m 이하로제한됩니다. CPU 모듈의형명에따라증설할수있는베이스수는다릅니다. (CPUU, CPUH: 7 단, CPUA, CPUS: 3 단, CPUE: 1 단 ) 증설케이블 XGC-E 기본베이스 XGB-M A ON OFF 1 2 3 4 베이스번호설정스위치 증설베이스 XGB-E A 2 3 2 2 2 1 2 0 증설용종단저항 XGT-TERA 증설베이스 XGB-E A 17

3) 모듈형명부여기준 디지털입력모듈 디지털출력모듈 XGI - XGQ - 전원종류 D2: DC24V A1: AC110V A2: AC220V 접점수 ( 바이트 ) 1: 8 점 (1 바이트 ) 2: 16 점 (2 바이트 ) 4: 32 점 (4 바이트 ) 8: 64 점 (8 바이트 ) 옵션 A: +/- 공통 (DC 입력 ) B: + 공통 (DC 입력 ) 출력소자 RY: Relay TR: Transistor SS: SSR 접점수 ( 바이트 ) 1: 8 점 (1 바이트 ) 2: 16 점 (2 바이트 ) 4: 32 점 (4 바이트 ) 8: 64 점 (8 바이트 ) 옵션 A: - 공통 (TR 출력 ) B: + 공통 (TR 출력 ) 서지킬러 (RY 출력 ) 예 ) XGI-A12A: AC110V 16 점입력모듈 XGI-D24A: DC24V 32 점입력모듈 XGI-D28B: DC24V 64 점입력모듈, + 공통 베이스 XGB - A 예 ) XGQ-RY2B: 릴레이출력 16 점, 서지킬러내장 XGQ-TR4A: Transistor 출력 32 점, - 공통 XGQ-TR8B: Transistor 출력 64 점, + 공통 증설케이블 XGC - E 베이스종류 M: 기본베이스 E: 증설베이스 장착모듈수 04: 4 모듈장착 06: 6 모듈장착 08: 8 모듈장착 12: 12 모듈장착 길이 041: 0.4m 061: 0.6m 121: 1.2m 301: 3m 501: 5m 102: 10m 152: 15m 통신모듈형명부여기준 XGL - XGT 시리즈공통모듈 XGT - 특수모듈 XGF - 모듈종류 예 ) XGL-C22A: Cnet 모듈 (RS-232C 2 채널 ) XGL-EFMT: Fast Ethernet 모듈 XGL-PMEA: Profibus-DP 통신모듈등 모듈종류 모듈종류 예 ) XGT-TERA: 증설베이스종단저항 예 ) XGF-AV8A: 아날로그입력모듈 XGT-DMMA: 빈슬롯방진용더미모듈 XGF-DV4A: 아날로그출력모듈 18

XGI CPU 종류 ( 블록타입 ) - XEC(H 타입 ) XG5000 V3.0 이상 19

- XEC( SU, E 타입 ) 20

XGI 규격 ( 모듈타입 ) 21

22

XGI 규격 ( 블록타입 ) 23

24

제 2 장데이터메모리

데이터메모리 CPU 모듈에는사용자가사용할수있는두가지종류의메모리가내장되어있습니다. 그중하나는사용자가시스템을구축하기위해작성한사용자프로그램을저장하는프로그램메모리이고, 다른하나는운전중데이터를저장하는디바이스영역을제공하는데이터메모리입니다. 변수란프로그램안에서사용하는데이터로서값을가지고있습니다. 변수는 PLC 의입력이나출력, 내부메모리등과같이변할수있는대상을가리킵니다. 변수의표현 [ex. %IXn1.n2.n3] 변수의표현에는 2 가지가있는데하나는식별자에의해변수에이름을부여하는것 ( 식별자에의한변수 ) 이고, 다른하나는데이터요소에 LC 의입 출력또는기억장소에대한물리적또는논리적인장소를직접적으로표현하는것 ( 직접변수 ) 입니다. 식별자에의한변수는다른변수들과구별하기위하여그이름이변수의유효영역 ( 변수가선언된프로그램구성요소영역 ) 안에서유일해야합니다. 직접변수의표현은퍼센트문자 (%) 를시작으로위치를나타내는접두어와데이터의크기를나타내는접두어그리고마침표로분리되는하나이상의부호없는정수의순으로표현할수있습니다. 그접두어들은다음에나타나있습니다. 위치접두어 번호접두어 의미 1 I 입력위치 (Input Location) 2 Q 출력위치 (Output Location) 3 M 내부메모리중 M영역위치 (Memory Location) 4 R 내부메모리중 R영역위치 (Memory Location) 5 W 내부메모리중 W영역위치 (Memory Location) 크기접두어 번호 접두어 의미 1 X 1 비트의크기 2 None 1 비트의크기 3 B 1 바이트 (8 비트 ) 의크기 4 W 1 워드 (16 비트 ) 의크기 5 D 1 더블워드 (32 비트 ) 의크기 6 L 1 롱워드 (64 비트 ) 의크기 27

데이터메모리 표현형식 번호 I, Q M, R, W n1 베이스번호 (0부터시작 ) [ 크기접두어 ] 에따른 n1번째데이터 (0부터시작 ) n2 슬롯번호 (0부터시작 ) n1번째데이터상의 n2번째비트 (0부터시작 ) : 생략가능 n3 [ 크기접두어 ] 에따른 n3번째데이터 (0부터시작 ) 사용하지않음 예 ) %QX3.1.4 또는 %Q3.1.4 3 번베이스의 1 번슬롯의 4 번출력 (1 비트 ) %IW2.4.1 2 번베이스의 4 번슬롯의워드단위로 1 번입력 (16 비트 ) %MD48 48 의위치에있는더블워드단위의메모리 %MW40.3 40 의위치에있는워드단위의메모리중 3 번비트 ( 내부메모리는베이스, 슬롯등의개념이없음 ) 접두어로는소문자가올수없습니다. 크기접두어를붙이지않으면그변수는 1 비트로처리합니다. 직접변수는선언하지않고사용할수있습니다. 28

데이터메모리 심볼릭 / 직접변수 (Symbolic & Direct Variable) 직접변수 : IEC 프로그래밍규정에따라표현되는메모리영역심볼릭변수 : 사용자에의해표현되고규정되는메모리영역 ( 자동할당영역 ) 항목표현종류 / 범위크기 통신 Data 공유 프로그램간공유 정전유지 직접변수 입력 출력 내부 CPUU/H %IX0.0.0 ~ 127.15.63 16KB %I.. CPUS %IX0.0.0 ~ 31.15.63 4KB - CPUU/H %QX0.0.0 ~ 127.15.63 16KB %Q.. CPUS %QX0.0.0 ~ 31.15.63 4KB CPUU/H %M %MW0 ~ 131,072 256KB 최대 128KB CPUS or %M. %MW0 ~ 32,767 64KB 최대 32KB 파일레지스터 *1) %R or %R. %W or %W. %RW0 ~ 32767 (Block 0) %RW0 ~ 32767 (Block 1) %WW0 ~ 65535 (Block 0+1) 128KB (2*64KB) 심볼릭변수 로컬 영문예 ) Valve, Switch Motor BOOL/SINT/USINT/INT/DIN T LINT. CPUU/H: 512KB CPUS: 128KB 글로벌 CPUU/H: 최대 256KB CPUS: 최대 64KB *1) %R 영역과 %W 영역은동일한영역이며, XGI-CPUS 의 %R 영역은 Block 0 번만존재합니다. 따라서 XGI-CPUS 에서 %W 영역은 %WW0 ~ 32,767 까지사용가능합니다. 29

직접변수 I/O Memory I/O 메모리구성및표현 %I.. 크기단위에따른접점번호 (0 ~ 63, 단위에따라가변 ) 슬롯번호 (0 ~ 15) 베이스번호 (0 ~127) 크기단위 (X: Bit, B: Byte, W: Word, D: Double Word, L: Long Word) 입력 / 출력 (%I: 입력, %Q: 출력 )) %IX0.0.16 %IX0.0.48 %QX0.1.0 %IX0.2.0 %IW0.0.0 %IW0.0.1 %IW0.0.2 %IB0.0.1 %IX0.0.15 %IB0.0.3 %IX0.0.31 %IB0.0.5 %IX0.0.47 %IB0.0.7 %IB0.0.0 %IX0.0.0 %IB0.0.2 %IX0.0.16 %IB0.0.4 %IX0.0.32 %IB0.0.6 %IX0.0.0 %IX0.0.1 %IX0.0.2 %IX0.0.3 %IX0.0.4 %IX0.0.5 %IX0.0.6 %IX0.0.7 %IX0.0.8 %IX0.0.9 %IX0.0.10 %IX0.0.11 %IX0.0.12 %IX0.0.13 %IX0.0.14 %IX0.0.15 CPU IN 64 Slot 0 OUT 64 Slot 1 IN 64 Slot 2 Slot 3 ~ 15 %IW0.0.3 %IX0.0.63 %IX0.0.48 %IX0.0.31 %IX0.0.63 %QX0.1.63 %IX0.2.63 30

직접변수 내부 Memory 내부메모리구성및표현 %M. 비트번호 ( 비트표현일때사용 ) 크기단위에따른주소 ( 단위에따라가변 ) 크기단위 (X: Bit, B: Byte, W: Word, D: Double Word, L: Long Word) Word %MB1 %MB0 %MW0 %MW0 %MW1 %MX15 (%MW0.15) %MB3 %MX1 (%MW0.1) %MB2 %MX0 (%MW0.0) %MW2 %MW3 %MW4 %MW1 %MW5 %MX31 (%MW1.15) %MB5 %MX17 (%MW1.1) %MB4 %MX16 (%MW1.0) %MW6 %MW7 %MW8 128Kword %MW2 %MX47 (%MW2.15) %MX33 (%MW2.1) %MX32 (%MW2.0) %MW9 %MW10 %MB7 %MB6 %MW3 %MX63 (%MW3.15) %MX49 (%MW3.1) %MX48 (%MW3.0) 31

Symbolic 변수 1. 프로그램구성요소 ( 즉프로그램, 펑션, 펑션블록 ) 는그구성요소에서사용할변수를선언할수있는선언부분을가지고있습니다. 2. 프로그램구성요소에서변수를사용하기위해서는우선사용할변수를선언해야합니다. 3. 변수의선언에서설정해야할사항은다음과같습니다. 변수선언 1) 변수종류 : 변수를어떻게선언할것인가를설정합니다. 변수종류 VAR VAR_RETAIN VAR_CONSTANT VAR_EXTERNAL 내용읽고쓸수있는일반적인변수정전유지변수읽기만할수있는변수 VAR_GLOBAL로선언된변수를사용하기위한선언 2) 데이터타입 : 변수의데이터타입을지정합니다. 3) 메모리할당 : 변수가차지할메모리를할당합니다. 자동 ---- 컴파일러가변수의위치를자동으로지정 ( 자동배치변수 ). 사용자정의 (AT) ---- 사용자가직접표현변수를사용하여강제로위치를지정 ( 직접변수 ). 기타 * VAR_EXTERNAL의선언시에는초기값을줄수없습니다. * 변수선언시 %I와 %Q로강제할당한변수에는초기값을줄수없습니다. *PLC의전원이끊긴후에도데이터의값을유지할필요가있는변수는정전유지 (Retention) 의기능이제공되는 VAR_RETAIN을써서선언할수있으며다음의규칙을따릅니다. 1) 정전유지변수는시스템의웜리스타트시그값이유지됩니다. 2) 시스템의콜드리스타트시에는사용자가정의한초기값이나기본초기값으로초기화됩니다 32

데이터의표현 데이터타입 기호 표현예 비고 10진수 (Decimal) None 1, 23, 4852, 9999, 32767 16진수 (Hexa Decimal) 16# 16#1234, 16#3A0F, 16#FF 문자열 (Character String) welcome to LSIS MOTOR RUNNING 시간 (Duration) T# T#10MS 10msec T#10S T#10M T#10H T#10D 10sec 10minute 10hours 10days T#1D2H34M56S789MS 1day 2hour 34 minute 56.789sec Date (RTC) D# D#2008-01-23 FEB 23, 2006 Time of Date (RTC) TOD# TOD#15:36:55.120 15 시 36 분 55.12 초 Date & Time (RTC) DT# DT#2008-01-23-15:36:55.120 FEB 23, 2008 15시 36분 55.12초 33

PLC 의플래시메모리 1) 플래시메모리운전모드 프로그램은특정한제어를실행하는데필요한모든기능요소로구성되며 CPU 모듈의내장 RAM 또는플래시메모리에프로그램이저장됩니다. 프로그램램 (RAM) 에있는데이터가손상되었을경우에플래시에백업 (Back-up) 되어있는프로그램으로운전하는것을말합니다. 플래시메모리운전모드설정 을선택하시면재기동또는기타모드에서운전모드가 RUN 으로바뀔때 CPU 모듈의프로그램메모리에옮겨진후운전을시작합니다 - 플래시메모리운전모드설정 온라인 플래시메모리설정 플래시메모리운전모드설정 을이용하여운전모드설정을체크한후확인을눌러주십시오. 확인을누르면 플래시메모리프로그램저장중 이라는창을띄우고프로그램을사용자프로그램영역에서플래시로복사를합니다. 34

- 플래시메모리운전방법 1) 기본설정은 플래시메모리운전모드해제 로되어있습니다. 2) 플래시메모리운전모드는 XG5000 에서한번설정을하면 XG5000 으로 Off 하지않는한계속 On 으로유지됩니다. 3) 플래시메모리운전모드변경은 RUN/STOP 모드와관계없이가능합니다. 4) 플래시메모리운전모드설정을 Off 한상태에서프로그램디버깅을완료된후플래시 운전모드설정 을할경우에는 XG5000 온라인메뉴에서플래시메모리운전모드설정을하면됩니다. 5) 플래시메모리운전모드 로설정된상태에서런중수정을할경우프로그램이플래시메모리에정상적으로쓰여진경우에만재기동시변경된프로그램이적용됩니다. 만일플래시메모리에프로그램저장이완료되기전 PLC 가재기동하는경우변경된프로그램이아닌이전에플래시메모리에저장되어있던프로그램으로동작을하므로주의하여주시길바랍니다. 6) 플래시메모리운전모드해제에서설정으로변경된경우에플래시메모리쓰기가완료가되어야플래시메모리운전모드가적용됩니다. 프로그램쓰기완료전에 PLC 가재기동하는경우에는 플래시메모리운전모드 가해제됩니다. - PLC 시스템을재기동또는운전모드를 RUN 으로변경하는경우플래시운전모드설정에따라아래와같이동작합니다. 35

2) 플래시데이터메모리 플래시메모리에데이터저장 - 플래시메모리에데이터를저장할때먼저저장할데이터를 R 영역 1 개블록에저장한후 EBWRITE 명령어를이용하여 R 영역 1 개블록전체를플래시메모리에저장합니다. - EBWRITE 명령어의실행은 1 스캔이상의시간이걸리므로 1 개의 EBWRITE 명령어실행후다시플래시메모리쓰기또는읽기를실행할때플래시메모리각블록별로제공되는 플래시메모리에러 플래그 (_RBLOCK_ER_FLAG) 와 플래시메모리쓰기중 플래그 (_RBLOCK_WR_FLAG) 가 OFF 상태임을확인하고플래시메모리쓰기또는읽기명령을실행해야합니다. Data 0 Data 1 Data 2 m번 R 블록 R0 R 1 R 2 n번플래시블록 0 1 2 최대 64KByte...... 1 스캔시간이내여러스캔... Data i... (B_NO m) R i... (R_NO m) (F_NO n) i... 예 ) 플래시메모리 12 번블록에쓰는중에는 _RBLOCK_WR_FLAG 의 12 번째비트가 ON 됩니다. 블록번호 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 _RBLOCK_RD_FLAG _RBLOCK_WR_FLAG 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 _RBLOCK_ER_FLAG 36

플래시메모리의데이터읽기 - 플래시메모리에 1 개블록에저장되어있는모든데이터를내부메모리중 R 영역으로읽어올때 EBREAD 명령어를사용합니다. - EBREAD 명령어의실행은 1 스캔시간이상의시간이소요되므로 EBREAD 명령어실행한후플래시메모리에서읽어온데이터를연산에사용하거나플래시메모리쓰기또는읽기명령어를실행할때플래시메모리각블록별로제공되는 플래시메모리에러 플래그 (_RBLOCK_ER_FLAG) 와 플래시메모리읽기중 플래그 (_RBLOCK_RD_FLAG) 가 OFF 상태임을확인하고명령을실행해야합니다. n 번플래시블록 m 번 R 블록 0 R0 64KByte 1 2 여러스캔 R1 R2...... 32767 R32767 (F_NO n) (R_NO m) 예 ) 플래시메모리 17 번블록을읽는중에는 _RBLOCK_RD_FLAG 의 17 번째비트가 ON 됩니다. 블록번호 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 _RBLOCK_RD_FLAG 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 _RBLOCK_WR_FLAG _RBLOCK_ER_FLAG 37

플래시메모리개별데이터읽기 - EMOV 명령어를사용하면플래시메모리에저장되어있는데이터를개별적으로읽어내부메모리에저장할수있습니다. - 개별데이터읽기명령어는 1 스캔시간이내에실행되고 플래시메모리읽기중 플래그 (_RBLOCK_RD_FLAG) 는동작하지않으며, 플래시메모리로부터읽어온데이터는내부메모리영역에관계없이저장할수있습니다. n번플래시블록 0 1 i 32767 1 스캔시간이내 Dst 1. 플래시메모리에있는 32 개의블록의데이터중원하는데이터하나를 MOVE 하는명령입니다. 2. 설정한 F_NO( 플래시넘버 ) 의블록에서 ADDR 위치의데이터를 DATA 에설정된타입에맞춰 MOVE 합니다. 이때 MOVE 된데이터는 DATA 변수에들어갑니다. 3. DATA 로선언한변수의타입과 ADDR 변수의타입이맞지않을경우, 에러는없으나의도하지않은데이터가 MOVE 되니, DATA 타입에맞춰 ADDR 값을설정해야합니다. 예를들어, 4BYTE(DWORD, UDINT, DINT, REAL... ) 형태의변수를 DATA 에선언했다면, ADDR 변수도 4BYTE 형변수를사용해야합니다. 4. F_NO 이 31 이상이거나, ADDR 값이 65,535 를초과할경우, _ERR, _LER 이 SET 됩니다. 38

제 3 장기본 Function

1. 전송펑션 - IN 의값을 OUT 으로이동 ( 복사 ) 합니다. - IN 과 OUT 의데이터타입 ( 사이즈 ) 은동일해야합니다. 41

- 입력조건 %MX100 이 ON 되면입력 %IX0.0.0 %IX0.0.7 의 8 점의입력상태를변수 Byte_Data 로전송한후, 전송된데이터를출력 %QX0.1.0 %QX0.1.7 의 8 점으로출력시키는프로그램 42

BOOL BYTE WORD DWORD LWORD SINT INT DINT LINT USINT UINT UDINT ULINT REAL LREAL TIME DATE TOD DT STRING BMOV 적용기종발생플래그 비트스트링의일부분을복사, 이동 XGI, XGR, XEC _ERR, _LER 펑션 설명 입력 EN : 1 일때펑션실행 IN1 : 조합할비트데이터를가진스트링데이터 BMOV IN2 : 조합할비트데이터를가진스트링데이터 BOOL *ANY_BIT *ANY_BIT INT INT INT EN IN1 IN2 IN1_P IN2_P N ENO OUT BOOL *ANY_BIT IN1_P : IN1지정데이터상의시작비트위치 IN2_P : IN2지정데이터상의시작비트위치 N : 조합할비트의수 출력 ENO : 에러없이실행되면 1을출력 OUT : 조합된비트스트링데이터출력 변수명 ANY 타입변수설명 IN1 IN2 OUT - EN 이 1 이되면 IN1 의비트스트링중 IN1_P 로지정된비트위치부터큰방향으로 N 개의비트를취하여, IN2 의비트스트링에서 IN2_P 로지정된비트위치부터큰방향으로대치한후 OUT 으로출력합니다. 43

- 실행조건 (%MX0) 이 On 되면 BMOV 펑션이실행됩니다. - 입력변수로선언된 SOURCE = 2#0101_1111_0000_1010, DESTINE = 2#0000_0000_0000_0000 이고, IN1_ P = 0, IN2_P = 8, N = 4 이므로연산결과는 2#0000_1010_0000_0000 이되고, 출력을 DESTINE 으로지정하였으므로 DESTINE = 2#0000_1010_0000_0000 으로바뀌게됩니다. 입력 (IN1) : SOURCE (WORD) = 16#5F0A (IN2) : DESTINE(WORD) = 16#0000 (IN1_ P) = 0 (IN2_P) = 8 (N) = 4 출력 (OUT) : DESTINE(WORD) = 16#0A00 0 1 0 1 1 1 1 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 (BMOV) 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 44

BOOL BYTE WORD DWORD LWORD SINT INT DINT LINT USINT UINT UDINT ULINT REAL LREAL TIME DATE TOD DT STRING 2. 논리연산펑션 AND 적용기종발생플래그 논리곱 XGI, XGR, XEC - 펑션 설명 입력 N : 1 일때펑션실행 IN1 : AND 될값 BOOL ANY_BIT ANY_BIT EN IN1 IN2 AND ENO OUT BOOL ANY_BIT 출력 IN2 : AND될값입력이 8개까지확장가능 ENO : EN값이그대로출력 OUT : AND된값 IN1, IN2, OUT 은모두같은타입이어야함. 변수명 ANY 타입변수설명 IN1 IN2 OUT - IN1 을 IN2 와비트별로 AND 해서 OUT 으로출력시킵니다. IN1 1111... 0000 & IN2 1010... 1010 OUT 1010... 0000 45

( 입력개수 ( 최대 ) : 8 개 ) ( 입력개수 : 2 개 ) - 실행조건 (%MX0) 이 On 하면펑션 AND 가실행됩니다. - IN1= %MB10 과 IN2 = ABC 값을 AND 시킨결과가 OUT = %QB0.1.0 에출력됩니다. 46

- IN1 을 IN2 와비트별로 OR 해서 OUT 으로출력시킵니다. IN1 1111... 0000 OR IN2 1010... 1010 OUT 1111... 1010 47

%MB10(BYTE) ABC(BYTE) %QB0.1.0(BYTE) - 실행조건 (%MX0) 이 On 하면 OR 펑션이실행됩니다. - %MB10 = 2#1100_1100 을 ABC = 2#1111_0000 와 OR 시킨결과가 %QB0.1.0 = 2#1111_1100 로출력됩니다. 48

- IN1 을 IN2 와비트별로 XOR 해서 OUT 으로출력시킵니다. IN1 1111... 0000 XOR IN2 1010... 1010 OUT 0101... 1010 49

- 실행조건 (%MX0) 이 On 하면 XOR( 배타적논리합 ) 펑션이실행됩니다. - 입력변수 %MB10 = 1100_1100, ABC = 1111_0000 이면, 두값을 XOR 시킨결과가출력변수 %QB0.0.0 = 0011_1100 로출력됩니다. 50

3. 사칙연산펑션 51

4. 비교펑션 52

5. 데이터변환펑션 (Ⅰ) 53

(BCD SINT 로변환 ) - 실행조건 (%MX0) 이 On 하면펑션 BCD_TO_*** 이실행됩니다. - BCD_VAL(BYTE 타입 ) = 16#22(2#0010_0010) 이면, 펑션의출력변수로선언된 OUT_VAL(SINT 타입 ) = 22(2#0001_0110) 가출력됩니다. (SINT BCD 로변환 ) - 실행조건 (%MX0) 이 On 하면 SINT_TO_BCD 펑션이실행됩니다. - IN_VAL(SINT 타입 ) = 16#22(2#0001_0110) 이면, 펑션의출력변수로선언된 BCD_VAL(BYTE 타입 ) = 16#22(2#0010_0010) 가출력됩니다. 54

6. 데이터변환펑션 (Ⅱ) 55

(INT WORD 로변환 ) - 입력조건 (%MX0) 이 On 하면 INT_TO_*** 펑션이실행됩니다. - 입력변수로선언된 IN_INT(INT 타입 ) = 512(16#200) 이면, 출력변수로선언된 OUT_WORD(WORD 타입 ) =16#200 이됩니다. (INT DWORD 로변환 ) (INT REAL 로변환 ) 56

제 4 장확장 Function

- 사용자프로그램수행도중특정한부분의프로그램처리 (FOR ~ NEXT, CALL, JUMP 명령등을사용 ) 를할때사용합니다. - LD 도구모음에서 [sf7] 을선택한후사용합니다. 59

1. JMP Lable - 분기명령으로 Lable 위치로점프합니다. 1) 2) - %MX0 가 OFF 된경우 1) 부분과 2) 부분의프로그램을모두수행합니다. - %MX0 가 ON 된경우 JMP 명령이실행되어 1) 부분은실행되지않고, 2) 부분만실행됩니다. 60

2. FOR/NEXT/BREAK - 루프명령으로 FOR ~ NEXT 구간을 N 회반복실행합니다. - BREAK 명령으로 FOR ~ NEXT 구간을빠져나옵니다. - N 은 65,535 까지설정가능합니다. - 가능한 NESTING 개수는 16 개입니다. - FOR ~ NEXT 구간의실행시간이 WDT 시간을초과하지않도록주의해야합니다. 61

3. CALL/SBRT/RET - 호출명령으로입력조건이성립하면해당서브루틴을프로그램을실행합니다. - 서브루틴안에서또다른서브루틴을호출할수있습니다. - 서브루틴프로그램은 END 명령뒤에위치합니다. - %MX0 가 ON 되면 FUNC_1 서브루틴프로그램을수행합니다. - RET 를만나면 FUNC_1 을 CALL 했던위치바로다음으로되돌아갑니다. 62

4. INIT_DONE - 초기화태스크종료명령 - 초기화태스크프로그램작성시에는반드시이명령어를사용해서초기화태스크프로그램을종료시켜야합니다. 그렇지않을경우, 초기화태스크프로그램을종료할수없게되고스캔프로그램으로진입할수없습니다. 5. END - 프로그램종료를표시합니다. - END 명령처리후프로그램의처음으로돌아가처리합니다. 63

제 5 장응용 Function

1. ARRAY 연산명령펑션 No. 펑션이름기능비고 1 ARY_MOVE Array Type 의데이터복사 (OUT <= IN) 2 ARY_CMP_*** 2 개의 Array 로입력된값을동일한값이있는지비교 3 ARY_SCH_*** Array 내에서입력된값과동일한값을찾아출력 - 4 ARY_FLL_*** 입력데이터값으로 Array 내부의선택영역을채움. 5 ARY_AVE_*** Array 내부의지정된영역에대하여평균값을구함 6 ARY_SFT_C_*** Array 의 Bit 들을정해진개수만큼지정된방향으로이동 - 7 ARY_ROT_C_*** Array 의 Bit 들을정해진개수만큼지정된방향으로회전 - 8 SHIFT_A_*** Array 블록중지정된범위의값들을지정된방향으로이동 - 9 ROTATE_A_*** Array 블록중지정된범위의값들을지정된방향으로회전 - 67

BOOL BYTE WORD DWORD LWORD SINT INT DINT LINT USINT UINT UDINT ULINT REAL LREAL TIME DATE TOD DT STRING ARY_MOVE 적용기종발생플래그 Array 복사 XGI, XGR, XEC _ERR, _LER 펑션 설명 입력 EN : 1 일때펑션실행 BOOL INT *ARRARY OF ANY INT INT ARY_MOVE EN ENO MOVE_NUM OUT IN IN_INDX OUT_INDX BOOL *ARRARY OF ANY 출력 MOVE_NUM: Move할어레이개수 IN : Move할어레이변수 (STRING Type은사용불가 ) N_INDX : 어레이변수의 Move할시작 Pointer 위치 OUT_INDX: 어레이변수의 Move될시작 Pointer 위치 ENO : 에러없이실행되면 1을출력 OUT : Move될어레이변수 (STRING Type은사용불가 ) ANY 타입변수설명 변수명 IN OUT - EN 이 1 이면, IN 어레이변수의데이터를 OUT 어레이변수에복사합니다. - IN 의 IN_INDX 번째값부터 MOVE_NUM 개수만큼데이터를복사하여, OUT 의 OUT_INDX 번째값부터붙여넣기를실행합니다. - MOVE 가가능하기위해서는 IN 과 OUT 의어레이데이터타입과 Size 가동일해야합니다. 단, IN 과 OUT 의어레이개수는다를수있습니다. 68

변수명변수타입어레이개수 ARY_SRC INT 10 ARY_DES WORD 15 연산결과아래와같이데이터가복사됩니다. ARY_SRC[5] ARY_DES[10] ARY_SRC[6] ARY_DES[11] ARY_SRC[7] ARY_DES[12] ARY_SRC[8] ARY_DES[13] ARY_SRC[9] ARY_DES[14] 69

BOOL BYTE WORD DWORD LWORD SINT INT DINT LINT USINT UINT UDINT ULINT REAL LREAL TIME DATE TOD DT STRING ARY_CMP 적용기종발생플래그 Array 비교 XGI, XGR, XEC _ERR, _LER 펑션 설명 BOOL *ARRAY OF ANY INT *ARRAY OF ANY INT INT ARY_CMP EN IN1 IN1_INDX IN2 IN2_INDX LEN ENO OUT BOOL BOOL 입력 출력 EN : 1일때펑션실행 IN1 : 비교할첫번째 Array IN1_INDX : 첫번째 Array에서비교할시작위치 IN2 : 비교할두번째 Array IN2_INDX : 두번째 Array에서비교할시작위치 LEN : 비교할원소의개수 ENO OUT : 에러없이실행되면 1을출력 : Array 비교값이동일하면 1을출력 ANY 타입변수설명 변수명 IN1 IN2 - ARY_CMP 펑션은 2 개의 Array 를입력받아서로동일한값을가지고있는지를비교합니다. - LEN 이마이너스일경우에는 Array 인덱스부터 (Array 인덱스 LEN ) 사이의원소들을비교합니다. - ARRAY OF ANY 에서 ANY 의 STRING 타입은제외 70

아래와같이 5 개의 ARRAY 데이터가같은경우출력 %QX0.1.0 이 ON 됩니다. IN_ARY1[5] = IN_ARY2[0] IN_ARY1[6] = IN_ARY2[1] IN_ARY1[7] = IN_ARY2[2] IN_ARY1[8] = IN_ARY2[3] IN_ARY1[9] = IN_ARY2[4] 71

BOOL BYTE WORD DWORD LWORD SINT INT DINT LINT USINT UINT UDINT ULINT REAL LREAL TIME DATE TOD DT STRING ARY_FLL 적용기종발생플래그 Array 내부영역채우기 XGI, XGR, XEC _ERR, _LER 펑션 설명 BOOL ANY *ARRAY OF ANY INT INT ARY_FLL EN ENO DATA OUT SRC SRC INDX LEN BOOL BOOL *ARRAY OF ANY 입력 EN : 1 일때펑션실행 DATA : Array 내를채울값 INDX : 값을채울 Array 내의처음위치 LEN : 값을채울 Array 원소의개수 출력 입출력 ENO : 에러없이실행되면 1 을출력 OUT : 동작이성공적으로끝나면 1 을출력 SRC : 값이채워질 Array ANY 타입변수설명 변수명 DATA SRC - 입력 DATA 값으로 Array 내부의선택영역을채웁니다. 72

IN_ARY (10 개의 INT 로구성된어레이 ) 0 1 2 3 4 5 6 7 8 9 23 31 34 34 34 34 45 98 85 32 Array 인덱스 2 번째부터 4 개의원소를채운다. - 입력조건 (%MX0) 이 On 되면, ARY_FLL 펑션이실행됩니다. - Array 인덱스 2 번째부터 4 개의원소를지정된값 34 로채웁니다. - 만약 LEN 을 9 로대체하면 Array 의전체개수를초과하므로에러가발생하여 _ERR 과 _LER 플래그가 On 되므로출력접점 %QX0.1.1 이 On 됩니다. 73

BOOL BYTE WORD DWORD LWORD SINT INT DINT LINT USINT UINT UDINT ULINT REAL LREAL TIME DATE TOD DT STRING ARY_AVE 적용기종발생플래그 Array 평균값구하기 XGI, XGR, XEC _ERR, _LER 펑션 설명 BOOL ARRAY OF ANY_NUM INT INT ARY_AVE EN IN INDX LEN ENO OUT BOOL ANY_NUM 입력 EN : 1일때펑션실행 IN : 평균을위한데이터 Array INDX : Array 내에서연산을시작할위치 LEN : 평균값을구할 Array 원소의개수 출력 ENO : 에러없이실행되면 1 을출력 OUT : 연산후의평균값을출력 ANY 타입변수설명 변수명 IN OUT - Array 내부의지정된영역에대하여평균값을구합니다. - 출력타입은입력 Array 타입과동일하게설정되어있습니다. 74

IN_ARY 10 개의 INT 로구성된어레이 0 1 2 3 4 5 6 7 8 9 11,245 23,454 8,764 9,563 18,764 7,765 29,215 21,004 10,048 18,081 9,563+18,764+7,765+29,215+21,004+10,048 6 = 16,044.83 = 16,045 - 입력조건 (%MX0) 이 On 되면, ARY_AVE 펑션의 INT 타입이실행됩니다. - ARRAY 내의값이위의그림과같을경우 Array 인덱스 3 번째로부터 6 개의원소에대한평균값을구합니다 - 평균값이 16,044.8 이지만출력타입이 INT 이므로반올림을수행하여 16,045 를출력합니다. 75

2. MK(Master-K) 펑션 No. 펑션이름기능 ( 단, n 은 8 까지가능 ) 비고 1 ENCO_B,W,D,L On 된비트위치를숫자로출력 2 DECO_B,W,D,L 지정된비트위치를 On 3 BSUM_B,W,D,L On 된비트개수를숫자로출력 4 SEG_WORD BCD 또는 HEX 값을 7 세그먼트디스플레이코드로변환 - 5 BMOV_B,W,D,L 비트스트링의일부분을복사, 이동 6 INC_B,W,D,L IN 데이터를하나증가 - 7 DEC_B,W,D,L IN 데이터를하나감소 - 76

BOOL BYTE WORD DWORD LWORD SINT INT DINT LINT USINT UINT UDINT ULINT REAL LREAL TIME DATE TOD DT STRING ENCO 적용기종발생플래그 On 된비트위치를숫자로출력 XGI, XGR, XEC _ERR, _LER 펑션 설명 ENCO 입력 EN : 1 일때펑션실행 BOOL *ANY_BIT EN IN ENO OUT BOOL INT IN : Encoding 할입력데이터 출력 ENO : 에러없이실행되면 1 을출력 OUT : Encoding 한결과데이터 변수명 ANY 타입변수설명 IN OUT - EN 이 1 이면, IN 의비트스트링데이터중, 1 로되어있는비트중최상위비트의위치를 OUT 으로출력합니다. - 입력에는 B(BYTE), W(WORD), D(DWORD), L(LWORD) 타입의데이터가접속가능합니다. 77

- 실행조건 (%MX0) 이 On 되면 ENCO 펑션이실행됩니다. - SWITCHS(WORD 타입 ) = 2#0000_1000_0000_0010(16#0801) 이라면, On 되어있는 2 비트의위치, 즉 11 과 1 중상위위치인 11 을출력하여 ON_POSITON(INT 타입 ) 에정수값 11 이저장됩니다. - 입력데이터중하나의비트도 1 이되어있지않은경우는 OUT 은 -1 이되고, _ERR, _LER 플래그가셋 (Set) 됩니다. 78

BOOL BYTE WORD DWORD LWORD SINT INT DINT LINT USINT UINT UDINT ULINT REAL LREAL TIME DATE TOD DT STRING DECO 적용 기종 발생플래그 지정된비트위치를 On XGI, XGR, XEC - 펑션 DEC0 입력 설명 EN : 1 일때펑션실행 IN : Decoding 할입력데이터 BOOL INT EN IN ENO OUT BOOL *ANY_BIT 출력 ENO : 에러없이실행되면 1 을출력 OUT : Decoding 한결과데이터 변수명 ANY 타입변수설명 IN OUT - EN 이 1 이면, IN 의값즉비트위치지정데이터에따라서출력의비트스트링데이터중지정된위치의비트만 1 로하여출력합니다. - 출력에는 BYTE, WORD, DWORD, LWORD 타입의데이터가접속가능합니다. 79

- 실행조건 (%MX0) 이 On 되면 DECO 펑션이실행됩니다. - 입력변수로선언된 ON_POSITON(INT 타입 ) = 5 라면, 출력의 5 번비트만 On 되므로, RELAYS(WORD 타입 ) = 2#0000_0000_0010_0000 이됩니다. 80

BOOL BYTE WORD DWORD LWORD SINT INT DINT LINT USINT UINT UDINT ULINT REAL LREAL TIME DATE TOD DT STRING BSUM 적용기종발생플래그 On 된비트개수를숫자로출력 XGI, XGR, XEC - 펑션 설명 BSUM 입력 EN : 1 일때펑션실행 IN : On 비트를검색할입력데이터 BOOL *ANY_BIT EN IN ENO OUT BOOL INT 출력 ENO : EN 값이그대로출력 OUT : On 된비트개수를합한결과데이터 ANY 타입변수설명 변수명 IN - EN 이 1 이면, IN 의비트스트링데이터중, 1 로되어있는비트의숫자를세어서 OUT 으로출력합니다. - 입력에는 BYTE, WORD, DWORD, LWORD 타입의데이터가접속가능합니다. 81

- 실행조건 (%MX0) 이 On 되면 BSUM 펑션이실행됩니다. - 입력변수로선언된 SWITCHS(WORD 타입 ) = 2#0000_0100_0010_1000 이라면, 출력변수 (On_COUNT) 는 On 되어있는비트의개수를출력합니다. 즉, 3 을출력하여 ON_COUNT(INT 타입 ) 에정수값 3 이저장됩니다. 82

BOOL BYTE WORD DWORD LWORD SINT INT DINT LINT USINT UINT UDINT ULINT REAL LREAL TIME DATE TOD DT STRING BMOV 적용기종발생플래그 비트스트링의일부분을복사, 이동 XGI, XGR, XEC _ERR, _LER 펑션 설명 입력 EN : 1 일때펑션실행 IN1 : 조합할비트데이터를가진스트링데이터 BMOV IN2 : 조합할비트데이터를가진스트링데이터 BOOL *ANY_BIT *ANY_BIT INT INT INT EN IN1 IN2 IN1_P IN2_P N ENO OUT BOOL *ANY_BIT IN1_P : IN1지정데이터상의시작비트위치 IN2_P : IN2지정데이터상의시작비트위치 N : 조합할비트의수 출력 ENO : 에러없이실행되면 1을출력 OUT : 조합된비트스트링데이터출력 변수명 ANY 타입변수설명 IN1 IN2 OUT - EN 이 1 이되면 IN1 의비트스트링중 IN1_P 로지정된비트위치부터큰방향으로 N 개의비트를취하여, IN2 의비트스트링에서 IN2_P 로지정된비트위치부터큰방향으로대치한후 OUT 으로출력합니다. 83

- 실행조건 (%MX0) 이 On 되면 BMOV 펑션이실행됩니다. - 입력변수로선언된 SOURCE = 2#0101_1111_0000_1010, DESTINE = 2#0000_0000_0000_0000 이고, IN1_ P = 0, IN2_P = 8, N = 4 이므로연산결과는 2#0000_1010_0000_0000 이되고, 출력을 DESTINE 으로지정하였으므로 DESTINE = 2#0000_1010_0000_0000 으로바뀌게됩니다. 입력 (IN1) : SOURCE (WORD) = 16#5F0A (IN2) : DESTINE(WORD) = 16#0000 (IN1_ P) = 0 (IN2_P) = 8 (N) = 4 출력 (OUT) : DESTINE(WORD) = 16#0A00 0 1 0 1 1 1 1 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 (BMOV) 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 84

3. 데이터교환펑션 No. 펑션이름기능비고 SWAP_BYTE BYTE 의상 하위 Nibble 을교환하여출력 - SWAP_WORD WORD 의상 하위 BYTE 를교환하여출력 1 SWAP_DWORD DWORD 의상 하위 WORD 를교환하여출력 - SWAP_LWORD LWORD 의상 하위 DWORD 를교환하여출력 - ARY_SWAP_BYTE Array 로입력된 BYTE 의상 하위 Nibble 을교환하여출력 - ARY_SWAP_WORD Array 로입력된 WORD 의상 하위 BYTE 를교환하여출력 - 2 ARY_SWAP_DWORD Array 로입력된 DWORD 의상 하위 WORD 를교환하여출력 - ARY_SWAP_LWORD Array 로입력된 LWORD 의상 하위 DWORD 를교환하여출력 - 85

BOOL BYTE WORD DWORD LWORD SINT INT DINT LINT USINT UINT UDINT ULINT REAL LREAL TIME DATE TOD DT STRING SWAP 적용기종발생플래그 데이터의상위하위바꾸기 XGI, XGR, XEC - 펑션 설명 SWAP BOOL EN ENO BOOL *ANY_BIT IN OUT *ANY_BIT 입력 EN : 1일때펑션실행 IN : 입력 출력 ENO : EN 값을그대로출력 OUT : Swap 된값 변수명 ANY 타입변수설명 IN OUT - 입력된변수를 2 개의크기로구분하여상위와하위를서로교환합니다. 86

- 실행조건 (%MX0) 이 On 되면, SWAP 펑션이실행됩니다. - 펑션의입력변수 INPUT(WORD 타입 ) = 16#AA55 일경우, 펑션의출력변수 RESULT(WORD 타입 ) = 16#55AA 가됩니다. 펑션입력타입동작설명 SWAP BYTE BYTE의상하위니블 (Nibble) 을서로교환하여출력합니다. SWAP WORD WORD의상하위 BYTE를서로교환하여출력합니다. SWAP DWORD DWORD의상하위 WORD를서로교환하여출력합니다. SWAP LWORD LWORD의상하위 DWORD를서로교환하여출력합니다. 87

4. 비트열펑션 ( 비트시프트펑션 ) No. 펑션이름기능비고 1 SHL 입력을 N 비트왼쪽으로이동 ( 오른쪽은 0 으로채움 ) 2 SHR 입력을 N 비트오른쪽으로이동 ( 왼쪽은 0 으로채움 ) - 3 SHIFT_C_*** 입력을 N 비트만큼지정된방향으로이동 (Carry 발생 ) - 4 ROL 입력을 N 비트왼쪽으로회전 - 5 ROR 입력을 N 비트오른쪽으로회전 6 ROTATE_C_*** 입력을 N 비트만큼지정된방향으로회전 (Carry 발생 ) - 88

BOOL BYTE WORD DWORD LWORD SINT INT DINT LINT USINT UINT UDINT ULINT REAL LREAL TIME DATE TOD DT STRING SHL 적용기종발생플래그 왼쪽으로이동 (Shift Left) XGI, XGR, XEC - 펑션 설명 입력 EN : 1 일때펑션실행 BOOL *ANY_BIT INT EN IN N SHL ENO OUT BOOL *ANY_BIT IN : 이동될비트열 N : 이동할비트수 출력 ENO : EN값이그대로출력 OUT : 이동된값 변수명 ANY 타입변수설명 IN OUT - 입력 IN 을 N 비트수만큼왼쪽으로이동합니다. - 입력 IN 의맨오른쪽에있는 N 개비트는 0 으로채워집니다. 1 0 1 0 0 0 1 1 1 0 0 0 1 1 0 0 N 개, 0 으로채워진다. 89

- 이동할데이터값을입력할변수를 IN_VALUE(2#1100_1100_1100_1100: 16#CCCC) 로설정한다. - 좌로이동한비트수 3 을지정입력 (N) 에쓴다. ( 변수지정후쓰기로가능 ) - 실행조건 (%MX0) 이 On 하면 SHL( 왼쪽으로이동 ) 펑션이실행되어입력변수로설정된데이터비트가좌로 3 비트이동하여, 출력변수로선언된 OUT_VALUE 에출력됩니다. 입력 (IN) : IN_VALUE(WORD) = 16#CCCC (N) : 3 출력 (OUT) : OUT_VALUE(WORD) = 16#6660 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 (ROL) 0 1 1 0 0 1 1 0 0 1 1 0 0 0 0 0 90

BOOL BYTE WORD DWORD LWORD SINT INT DINT LINT USINT UINT UDINT ULINT REAL LREAL TIME DATE TOD DT STRING ROR 적용기종발생플래그 오른쪽으로회전 (Rotate Right) XGI, XGR, XEC - 펑션 설명 입력 EN : 1 일때펑션실행 BOOL *ANY_BIT INT EN IN N ROR ENO OUT BOOL *ANY_BIT IN : 회전될값 N : 회전할비트수 출력 ENO : EN값이그대로출력 OUT : 회전된값 ANY 타입변수설명 변수명 IN OUT - 입력 IN 을 N 비트수만큼오른쪽으로회전시킵니다. 1 0 1 0 0 0 1 1 1 1 1 0 1 0 0 0 N 개 91

- 회전할데이터값을입력한변수를 IN_VALUE 로설정한다. - 우회전할비트수 3 을회전할비트수지정입력 (N) 에설정한다. - 실행조건 %MX0 이 On 하면 ROR( 오른쪽으로회전 ) 펑션이실행되어입력변수로설정된데이터비트가우로 3 비트만큼회전되어출력변수로선언된 OUT_VALUE 값에출력된다. 입력 (IN): IN_VALUE(WORD) = 16#E331 (N) : 3 출력 (OUT): OUT_VALUE(WORD) = 16#3C66 1 1 1 0 0 0 1 1 0 0 1 1 0 0 0 1 (ROR) 0 0 1 1 1 1 0 0 0 1 1 0 0 1 1 0 92

제 6 장사용자정의 F/FB

펑션 / 펑션블록 기본구조 펑션 & 펑션블록 구분펑션펑션블록 Power in (Enabling F/FB) Input items EN ENO IN1 OUT1 IN2 OUT2 IN3 OUT3 Power out or F/FB Execution Result Output/Result items 입력개수한개이상한개이상 출력개수한개한개이상 실행 1 스캔 1 스캔이상 명령어예 MOV/BCD ADD/SUB/MUL/DIV EQ/GT/GE/LT/LE etc TON (On-delay Timer) CTU (Counter) etc 접점연결주의사항 올바른회로구성 잘못된회로구성 %IX0.0.0 %QX0.1.0 %IX0.0.0 %QX0.1.0 %IX0.0.0 %QX0.1.0 %QX0.1.0 %IX0.0.0 %MW3 %MX0 %IX0.0.1 F/FB %QX0.1.1 %MW10 %MW3 %MX0 %IX0.0.1 F/FB %QX0.1.1 %MW10 %MW3 %MX0 %IX0.0.1 F/FB %QX0.1.1 %MW10 %MW3 %MX0 %IX0.0.1 F/FB %QX0.1.1 %MW10 95

사용자가직접펑션블록 ( 또는펑션 ) 을디자인하여동일한로직을재활용하거나, 노하우를보호할수있으며, 프로그램메모리를효과적으로활용할수있습니다. 예제 [c*c=a*a + B*B ] 다음은직각삼각형에서 a,b 두변이주어지면빗변 [C] 의길이를구하는펑션임 사용자정의펑션 / 펑션블록을마우스우측버튼을클릭하여항목추가 > 펑션을선택합니다.. 96

사용자펑션을아래와같이작성하고, 로컬변수를등록합니다. 스캔프로그램에서입력할변수인 A 와 B 는아래와같이 VAR_INPUT 로작성하고, 결과값인 PITA 는 VAR_RETURN 에등록합니다. 사용자펑션과관련된변수등록펑션작성전에변수를등록바람 사용자가작성하는펑션의내용 입력변수와출력변수는각각반드시하나이상이어야하고최대 64 개를넘을수없습니다. 97

스캔프로그램에서사용자펑션인 PITA 를사용하기위해 F10 을선택하고화면에클릭한후현재 PLC 이름인 <NewPlc> 를선택하면펑션리스트가나옵니다. 여기서 PITA 를선택함 기타기능 사용자펑션 / 펑션블록에비밀번호등록 사용자펑션 / 펑션을파일로저장 실행결과 기존에작성해둔펑션 / 펑션블록을가져오기 98

2. 사용자펑션블록 [FB] 사용자가직접펑션블록 ( 또는펑션 ) 을디자인하여동일한로직을재활용하거나, 노하우를보호할수있으며, 프로그램메모리를효과적으로활용할수있습니다. 예제 A,B 두값을입력하면덧셈값, 뺄셈값, 곱셈값, 나눗셈값등 4 개의결과물을반환해주는펑션블록이경우실행결과물이 2 개이상이므로펑션블록으로작성합니다. 사용자정의펑션 / 펑션블록을마우스우측버튼을클릭하여항목추가 > 펑션을선택합니다.. 99

펑션블록의내용및변수를등록하여펑션블록을작성함. 입출력변수를등록함과동시에작성되는펑션블록의모양을바로확인할수있음. 펑션블록용입출력변수등록 펑션블록의내용작성 100

실행결과 IN1=50, IN2=20 을입력한결과를펑션블록의우측에서확인할수있다. 프로그램에펑션블록등록.. 프로그램의실행결과확인.. 펑션블록의경우내부의실행결과를모니터할수있음 기타기능 사용자펑션 / 펑션블록에비밀번호등록 사용자펑션 / 펑션을파일로저장 기존에작성해둔펑션 / 펑션블록을가져오기등이펑션과동일하게적용됩니다. Tip 101

사용자펑션 / 펑션블록파일로저장하기 1 2 3 - 저장파일확장자는.fun 입니다. 102

Tip 파일로부터항목읽기 - 다음항목들은별도의파일로읽기 / 저장이가능합니다. - PLC, 프로그램, 사용자정의 F/FB, 사용자데이터타입은읽어온내용이프로젝트에삽입됩니다. - 글로벌 / 직접변수, 기본파라미터, I/O 파라미터등은기존항목에덮어씁니다. 항목 PLC 글로벌 / 직접변수 I/O 파라미터기본파라미터프로그램사용자펑션 / 펑션블록사용자데이터타입 파일확장자 plc gdv iop bsp pri fun udt 103

제 7 장태스크프로그램 (Task Program) Power ON 입력리프레시 스캔프로그램 1 스캔프로그램 2 스캔프로그램 3 조건 ON!! 조건 ON!! 초기화태스크 (INI) 정주기태스크 (Cyclic TIME) 내부접점태스크 (INTERNAL) 출력리프레시 End 처리

스캔프로그램과태스크프로그램 Power ON 초기화태스크 (INI) 입력리프레시 스캔프로그램 1 조건 ON!! 정주기태스크 (Cyclic TIME) 스캔프로그램 스캔프로그램 2 조건 ON!! 초기화프로그램 스캔프로그램 3 내부접점태스크 (INTERNAL) 정주기프로그램 출력리프레시 End 처리 내부접점프로그램 항목태스크수실행조건비고 프로그램 스캔프로그램 256 ( 태스크수 ) 매스캔 Each program is execute in the sequence of registration. 태스크프로그램 초기화 1 초기화때 정주기 32 정주기마다 내부접점 32 내부접점조건이만족될때만 107

1. 초기화태스크프로그램 태스크항목중초기화선택 항목추가 > 태스크선택 초기화프로그램에서항목추가선택 프로그램이름 초기화 1 로입력 108

프로그램을더블클릭 초기화프로그램을작성한후 PLC 에다운로드하여실행한결과 초기화프로그램은스캔프로그램보다우선하여동작하며완료조건은 _INIT_DONE 임. 109

2. 내부디바이스태스크프로그램 태스크항목중내부디바이스선택 항목추가 > 태스크선택 초기화프로그램에서항목추가선택 프로그램이름 내부 1 로입력 110

프로그램을더블클릭 내부디바이스태스크프로그램을작성한후 PLC 에다운로드하여실행한결과 내부디바이스태스크프로그램은스캔프로그램중의특정접점이특정조건 ( 상승, 하강, 전이, 온, 오프 ) 을만족할경우에만실행하는프로그램임. 111

3. 정주기태스크프로그램 태스크항목중정주기선택 항목추가 > 태스크선택 초기화프로그램에서항목추가선택 프로그램이름 정주기 1 초 로입력 112

프로그램을더블클릭 초기화프로그램을작성한후 PLC 에다운로드하여실행한결과 정주기프로그램은사용자가입력하는시간조건 ( 위의경우는 1000ms=1 초 ) 주기로 1 회씩수행하는프로그램임. 113

제 8 장 SFC 언어 (Sequential Function Chart) S1 초기스텝 T1 스텝 S2 S3 T2 N N MOTER_ON AFM_UP 액션이름 액션 선택분기 트랜지션 S4 T3 S9 T9 S11 T11 T4 T10 T12 THERE 점프 S5 T5 LIMIT1 트랜지션이름 병렬분기 S6 S10 S12 T6 S7 라벨 THERE T7 제한자 S8 SD GRAB_ON T8

1. 개요 SFC (Sequential Function Chart) S1 초기스텝 T1 SFC는종래의 PLC 언어를이용하여프로그램을실행처리순서에따라나누어플로차트형식으로전개하는 스텝 S2 S3 T2 N N MOTER_ON AFM_UP 액션이름액션선택분기 구조화표현방식언어이다. 트랜지션 S4 T3 S9 T9 S11 T11 T4 T10 T12 THERE 점프 SFC는응용프로그램을스텝과트랜지션으로분할하여서로연결하며, S5 T5 LIMIT1 트랜지션이름 병렬분기 각스텝은액션으로, 각트랜지션은트랜지션조건과연관된다. S6 S7 T6 S10 S12 T7 프로그램종류중프로그램블록과 라벨 THERE 제한자 펑션블록만이 SFC 를이용할수있다. S8 T8 SD GRAB_ON 117

2. 구조 1) 스텝 스텝에는액션이연결되며시퀀스제어의단위를나타낸다. 스텝이활성화상태이면부착되어있는액션의내용이실행된다. 초기스텝은최초로활성화되는스텝이며, 이행조건 (Transition Condition) 이성립되면, 현재스텝 (S1) 은비활성화상태로되고다음에연결된스텝 (S2) 이활성화상태로된다. S1 S2 T1 T2 초기스탭이행조건 (Transition Conditon) 스텝 2) 트랜지션 트랜지션은스텝간의이행조건을나타낸다. 이행조건은 PLC 언어인 LD/ST(Stuctured Text) 로표현되어야한다. 이행조건의결과는항상 BOOL 로되어야하며, 그변수의이름은 TRANS 혹은 GOTO_INIT 가된다. 이행조건이 1 일경우, 현재스텝은비활성화되며조건이 TRANS 인경우는다음스텝이활성화되며, 조건이 GOTO_INIT 인경우는초기스텝이활성화된다. 118

[TRAN1 의내용 ] TRANS 가 On 되면현재액션 (S1) 이비활성화되고다음액션 (S2) 가활성화상태가된다. GOTO_INIT 가 ON 되면현재액션 (S1) 이비활성화되고초기스텝인 S0 가활성화상태가된다. TRANS, GOTO_INIT 는내부적으로선언된변수이다. 모든트랜지션에서이행조건을 TRANS 혹은 GOTO_INIT 변수로출력되어야한다 119

3) 액션각스텝에사용할수있는액션의갯수는제한이없습니다.. 액션이없는스텝은대기액션으로, 다음의이행조건이 1 이될때까지대기상태가됩니다. 액션은 LD/SFC/ST 언어로구성되고, 스텝이활성화될동안액션의내용이실행됩니다. 액션제한자를이용하여액션의동작을정의할수있습니다. 액션이활성화되었다가비활성화상태로될때액션에서실행된접점출력은최종상태를유지합니다. 단, Post Scan 으로설정된경우는 0 으로됩니다. 단, S, R, 펑션, 펑션블록출력은비활성화되기전의상태를유지합니다.. [ACTION1 의내용 ] S1 T1 N S ACTION1 ACTION2 [ACTION2 의내용 ] 120

계속 >> (1) ACTION1 은 S1 이활성화된경우에만실행됩니다. (2) ACTION2 은 S1 이활성화된후다음스텝으로이행해도계속활성화상태로실행됩니다. R 제한자 ACTION2 가실행될때비활성화상태가됩니다. (3) 포스트스캔설정시액션이비활성화되는순간, 이액션을포스트스캔 (Post Scan) 한후다음스텝으로넘어갑니다. 포스트스캔액션이비활성화되는순간이액션을다시한번스캔합니다. 이때액션프로그램의처음에임의의접점 ( 값이 0 인접점 ) 이있는것으로간주하고스캔하기때문에접점으로이루어진프로그램의출력은 0 이됩니다. 펑션, 펑션블록, S, R 출력등은해당되지않습니다. [ 실습프로그램 1] 121

4) 액션제한자 (Action Qualifier) 액션이사용될때마다액션제한자가사용됩니다. 스텝에연관된액션은지정된제한자에따라실행시점과시간이정의됩니다. 액션제한자의종류는다음과같습니다 NO 제한자기능 동작특성 스텝활성화 1 N(Non-Stored) 스텝이활성화된동안만액션이실행됩니다. 2 S(Set) 스텝이활성화되면 R 제한자가실행될때까지 액션이실행됩니다 3 R(Overriding Reset) 이전에 S, SD, DS, SL 제한자로실행된액션의실행을중지시킵니다. 4 L(Time Limited) 스텝이활성화된후지정된시간까지, 또는스텝이 비활성화될때까지액션이실행됩니다. R 제한자수행 설정시간 5 D(Time Delayed) 스텝이활성화된후지정된시간이경과한후부터 비활성화될때까지액션이실행됩니다. 설정시간 122

계속 >> NO 제 8 한자기능 동작특성 스텝활성화 6 P(Pulse) 스텝이활성화된순간에만액션이실행됩니다. 1 스캔수행 7 SD (Stored & Time Delayed) 8 DS (Delayed & Stored) 9 SL (Stored & Timed Limited) 스텝이활성화된후지정된시간이경과한후 R 제한자가실행될때까지액션이실행됩니다. 단, 시간이경과하기전에 R 제한자가실행되면액션은실행되지않습니다. 스텝이활성화된후지정된시간이경과한후 R 제한자가실행될때까지액션이실행됩니다. 단, 시간이경과하기전에스텝이비활성화되거나 R 제한자가실행되면액션은실행되지않습니다. 스텝이활성화된후지정된시간까지, 또는 R 제한자가실행될때까지액션이실행됩니다. R 제한자수행 - 시간값은 T#1h2m3S, T#2m, T#10S 와같은표현식을사용하여입력합니다. 123

3. 프로그램작성예제및실습 1) 직렬연결 - 2 개의스텝은직접연결되지않고항상트랜지션에의해분리됩니다. - 2 개의트랜지션은직접연결되지않고항상스텝에의해분리됩니다. - 직렬로연결되어있는스텝간의이행은상위스텝이활성화된상태에서다음에연결된트랜지션의이행조건이 1 로되면하위스텝이활성화상태가됩니다 [ 프로그램초기실행화면 ] 초기스텝인 S0 의 ACTION1 이동작하고있습니다. S1 의액션인 ACTION2 는동작하지않음. 124

>> 프로그램실습 - 초기실행시 S0 스텝이자동으로초기스텝으로지정되며 ACTION1 을실행합니다. - 트랜지션 T1 이 ON 되면 S0 스텝을비활성화하고 S1 스텝이활성화됩니다. - 트랜지션 T2 가 ON 이되면 S1 스텝이비활성화되고, S0 스텝이활성화됩니다. - 드랜지션의조건이접접인경우는 *T1, *T2 와같이 * 가이름앞에붙습니다. [ 프로그램초기실행화면 ] T1 조건이 ON 됨에따라, 다음스텝인 S1 의액션인 ACTION2 가동작하며, S0 의 ACTION0 는비활성화된다. 125

2) 선택분기 - 선택분기로연결되어있으면상위스텝이활성화된상태에서다음에연결된 2 개이상의트랜지션중이행조건이 1 로된곳의다음스텝이활성화됩니다. 그다음은직렬연결과동일합니다. [ 선택분기작성순서 ] SFC 의선택분기를선택한후다음의순서에따라서선택분기를입력한다. 1 도구모음의선택분기를선택 2 분기의시작점스텝을클릭 3 분기의끝점트랜지션을클릭 4 분기의끝점트랜지션을클릭 126

>> 계속..1 5 도구모음의 스텝 선택후트랜지션클릭 6 도구모음의 화살표 선택후트랜지션더블클릭 7 다음과같이스텝과트랜지션을입력 8 각스텝에액션을입력 127

>> 계속..2 9 액션프로그램입력하기위해 ACT3 를마우스우측키로선택후프로그램열기 11 아래는완성된프로그램 10 다음과같이 ACT3 의프로그램을입력 128

>> 계속..3 [ 선택분기우선순위설정 ] 입력된선택분기의프로그램수행우선순위를설정할수있습니다. 1 SFC 의선택분기의시작위치로커서를이동한다. 2 메뉴 [ 편집 ] [ 선택분기우선순위설정 ] 을선택합니다. 3 선택분기의시작위치를마우스로차례로왼쪽클릭하여원하는우선순위로지정합니다. 129

4 선택분기의시작위치이외의영역을클릭하면편집이끝납니다. - 선택분기의우선순위는분기의수만큼지정할수있습니다. - 선택분기우선순위가지정되지않은경우는왼쪽에서오른쪽방향으로프로그램컴파일됩니다. 즉왼쪽부터프로그램수행됩니다. 130

[ 선택분기우선순위해제 ] 입력된선택분기우선순위를제거합니다. 1 분기우선순위가지정된선택분기의시작위치를선택합니다. 2 메뉴 [ 편집 ] [ 선택분기우선순위해제 ] 을선택합니다. 3 선택분기우선순위가해제됩니다. 131

3) 병렬분기 - 병렬분기로연결되어있으면상위스텝이활성화상태에서다음에연결되어있는트랜지션의이행조건이 1 로되면이트랜지션밑에연결된모든스텝이활성화상태로됩니다. 각분기의전개는직렬연결과동일합니다. 이때활성화상태인스텝은분기의수만큼존재하게됩니다. - 병렬분기에서합쳐질경우, 각분기의마지막스텝이모두활성화일경우에트랜지션의이행조건이 1 로되면다음에연결되어있는스텝이활성화상태로됩니다. [ 선택분기작성순서 ] SFC 의선택분기를선택한후다음의순서에따라서선택분기를입력한다. 1 도구모음의선택분기를선택 2 분기의시작점 트랜지션 을클릭 3 분기의끝점스텝을클릭 132

>> 계속..1 5 아래는완성된프로그램및실행화면 4 각스텝에액션을입력 - 트랜지션 (T4) 조건이 ON 이되어다음스텝이활성화된다. - 이때, 다음스텝 S7, S8 이병렬조거이므로 ACT3 과 ACT4 가동시에수행되게된다. 133

4) 점프 - SFC 마지막스텝이활성화상태로된후다음에연결되어있는트랜지션의이행조건이 1 로되면지정스텝이활성화상태로됩니다. - 점프를사용하면원하는곳으로전개를이어나갈수있습니다. - 점프는 SFC 프로그램끝또는선택분기끝에만올수있습니다. - 병렬분기안으로또는밖으로는점프할수없습니다. 단, 분기내에서의점프는가능 [ 선택분기작성순서 ] SFC 의선택분기를선택한후다음의순서에따라서선택분기를입력한다. 1 도구모음의 점프 를선택 2S7 의하단부분을클릭하고 LABEL 명입력 3 분기의끝점스텝을클릭 134

>> 계속..1 4 아래는완성된프로그램및실행화면 - 트랜지션 (T3) 조건이 ON 이되어 S7 이활성화중에트랜지션 T6 이 ON 되면이행조건에따라 LABEL1 으로점프한다. - 따라서. S10 스텝의 ACT6 이동작하게된다. 135

4. SFC 화면속성 - SFC 프로그램화면에보일내용및위치등의정보를변경할수있습니다. - 메뉴 [ 도구보기 ]-[ 옵션 ]-[SFC 화면속성 ] 항목을선택합니다. 136

1 설명문보이기 2 인쇄영역보이기 137

3 페이지번호보이기 4 스텝세로열너비 68 pixel( 기본 ) 100 pixel 138

5 액션세로열너비 6 분할창사용 100 pixel( 기본 ) 150 pixel ( 분할창사용중인화면 ) 139

7 분할창내용 ( 선택된액션, 트랜지션보기 : 액션선택함 ) ( 동일한 SFC 프로그램보기 ) 140

( 분할창내용고정보기 : 선택한위치와다르게이전에고정한내용보임 ) ( 분할창위치오른쪽화면 ) 141

( 분할창위치아래쪽화면 ) 142

5. 블록 / 액션 / 트랜지션목록보기 - SFC 프로그램내에서사용중인다른프로그램목록을확인, 이름및설명문등을수정할수있습니다. 1 메뉴 [ 보기 ]-[ 블록 / 액션 / 트랜지션목록 ] 항목을선택합니다. ( 액션목록 ) - 사용하지않는액션, 트랜지션은삭제해야합니다. ( 트랜지션션목록 ) 143

제 9 장글로벌변수

1. 글로벌변수선언 - 프로젝트에사용된전체프로그램에서사용할수있는변수를글로벌변수라고합니다. - 글로벌변수로선언된변수를로컬변수로사용하려면 VAR_EXTERNAL 또는 VAR_EXTERNAL_CONSTANT 로선언합니다. - 변수를선언하고변수목록을보여줍니다. 147

- 로컬변수는프로그램에서사용될변수를선언하거나, 선언된변수목록전체를변수위주로보여줍니다. - 글로벌변수에서선언된변수를사용할경우는 VAR_EXTERNAL, VAR_EXTERNAL_CONSTANT 로선언하여야합니다. 148

제 10 장 Analog 입력모듈

아날로그입력 1. XGT 아날로그입력모듈종류및특성 형명 규격 XGF-AV8A 전압 8 채널입력, 14bit AD 변환 (0 ~ 16,000), 채널간비절연 XGF-AC8A 전류 8 채널입력, 14bit AD 변환 (0 ~ 16,000), 채널간비절연 XGF-AD8A 채널별전압 / 전류선택 8 채널입력, 14bit AD 변환 (0 ~ 16,000), 채널간비절연 XGF-AD16A 채널별전압 / 전류선택 16 채널입력, 14bit AD 변환 (0 ~ 16,000), 채널간비절연 XGF-AD4S 채널별전압 / 전류선택 4 채널입력, 16bit AD 변환 (-32,000 ~ 32,000), 채널간절연 XGF-AW4S 채널별전압 / 전류선택 2 Wire 센서 4 채널입력, 16bit AD 변환 (-32,000 ~ 32,000), 채널간절연 XGF-AC4H 전류 4 채널입력, 16bit AD 변환 (-32,000 ~ 32,000), HART 통신 (Highway Addressable Remote Transducer) XGF-AH6A 채널별전압 / 전류선택 4 채널입력, 13bit AD 변환 (0 ~ 8,000), 채널간비절연 채널별전압 / 전류선택 2 채널출력, 13bit DA 변환 (0 ~ 8,000), 채널간비절연 151

아날로그입력 2. 규격 항목 입력범위 형명 XGF-AV8A XGF-AC8A XGF-AD4S XGF-AD8A XGF-AD16A 전압입력 DC 1 5 V DC 0 5 V DC 0 10 V DC -10 10 V 전류입력 DC 4 20 ma DC 0 ~ 20 ma 전압 DC 1 5 V DC 0 5 V DC 0 10 V DC -10 10 V 전류 DC 4 20 ma DC 0 ~ 20 ma 입력신호선택 I/O 파라미터설정딥스위치설정및 I/O 파라미터설정 입력저항 1 MΩ 이상 250 Ω 1 MΩ 이상 250 Ω 최대분해능 1/16,000 1/64,000 1/16,000 출력데이터 유부호정수 0 ~ 16000-0 ~ 16000 무부호정수 -8,000 ~ 8,000-32,000 ~ 32000-8,000 ~ 8,000 정규값 1,000 ~ 5,000 0 ~ 5,000 0 ~ 10,000-10,000 ~ 10,000 4,000 ~ 20,000 0 ~ 20,000 1,000 ~ 5,000 0 ~ 5,000 0 ~ 10,000-10,000 ~ 10,000 4,000 ~ 20,000 0 ~ 20,000 백분위 0 ~ 10,000 변환속도 250 μs / 채널 10ms/4 채널 250 μs / 채널 500 μs / 채널 절연채널간비절연채널간절연채널간비절연 부가기능 필터처리평균처리 : 회수, 시간 필터처리평균처리 : 회수, 시간, 이동, 가중경보 : 공정, 변화율 필터처리평균처리 : 회수, 시간 152

3. 각부의명칭과역할 RUN LED - 점등 : 모듈정상동작 - 점멸 : 모듈에러발생 - 소등 : DC 5V 단선, 모듈이상 (XGF-AW4S) (XGF-AD4S) (XGF-AD16A) (XGF-AC4H) 153

4. 입, 출력변환특성 XGF-AV8A 154

XGF-AC8A 155

5. XGT PLC 아날로그입력모듈배선 XGF-AV8A *2) *1) *2) *1) *1) 전선은 2 심트위스트실드선을사용하여주십시오. 전선의규격은 AWG 22 를권장합니다. *2) XGF-AV8A 의입력저항으로 1 MΩ (min.) 입니다. * XGF-AV8A 는채널간비절연타입이므로아래의그림과같이공통 COM 을사용할경우채널간영향을줄수있습니다. 156

XGF-AC8A *1) 전선은 2 심트위스트실드선을사용하여주십시오. 전선의규격은 AWG 22 를권장합니다. *2) XGF-AC8A 의입력저항으로 250 Ω (typ.) 입니다. XGF-AC8A 를이용한 2 Wire 센서 / 트랜스미터배선예 ( 전류 ) * 2 Wire 센서 / 트랜스미터를사용할경우 XGF-AW4S 사용을권장합니다. 157

XGF-AD4S( 채널간절연타입 ) - 전압입력 - 전류입력 158

XGF-AW4S( 채널간절연타입 ) - 전류입력 - 전압입력 159

- 2 Wire 트랜스미터 ( 전류입력 ) - 4 Wire 트랜스미터 ( 전류입력 ) 160

6. XGT PLC 아날로그입력모듈운전설정 1) 운전설정순서 시작 슬롯에장착 외부기기배선 I/O 파라미터사용? I/O 파라미터설정 변수자동등록 프로그램작성 끝 161

2) I/O 파라미터를이용한운전설정 I/O 파라미터수동등록 1 XG5000 프로젝트창에서 I/O 파라미터를더블클릭합니다. 2 I/O 파라미터설정창에서모듈이장착된슬롯의모듈열을선택하고특수모듈, 아날로그입력모듈을연후장착된모듈의형명을선택합니다. 162

온라인기능을이용한 I/O 파라미터자동등록 1 XG5000 온라인메뉴에서접속을눌러 XG5000 과 PLC 를접속합니다. 2 온라인메뉴의모드전환을눌러 PLC 를 STOP 모드로전환합니다. 163

3 XG5000 온라인메뉴에서 I/O 정보를선택합니다. 4 I/O 정보창에서 I/O 동기화버튼을선택합니다. I/O 동기화버튼을선택하면오른쪽의메시지가나타납니다. 메시지창에서 예 를선택하면 XG5000 에서읽어온 I/O 정보를 I/O 파라미터에저장합니다. 164

5 I/O 동기화가완료되면 I/O 동기화완료메시지가나타납니다. 6 I/O 파라미터를열어보면모듈이등록되었습니다. 165

운전파라미터설정 1 I/O 파라미터에서등록된모듈을더블클릭하면모듈운전파라미터설정창이나타납니다. 운전채널 : 각채널별로운전및정지를선택할수있습니다. 빠른변환을위해서는실제사용하는채널만운전으로선택합니다. 입력범위선택 : 각채널별로전압입력의경우 1 ~ 5V, 0 ~ 5V, 0 ~ 10V, -10 ~ 10V 를선택할수있습니다. 출력데이터타입 : 각채널별로 0 ~ 16,000, -8,000 ~ 8,000, 정규값, 0 ~ 10,000(%) 를선택할수있습니다. - 0 ~ 16,000: 입력범위최소아날로그신호를입력받았을때 0, 입력범위최대아날로그신호를입력받았을때 16,000 을 CPU 에저장합니다. - -8,000 ~ 8,000: 입력범위최소아날로그신호를입력받았을때 -8,000, 입력범위최대아날로그신호를입력받았을때 8,000 을 CPU 에저장합니다. - 정규값 : 입력범위선택에따라선택하는범위가달라집니다. 변환된데이터는소수점 3 자리를포함하는아날로그신호량으로해석할수있습니다. 예를들어입력범위가 0 ~ 10V 로선택되었을때정규값에서선택할수있는출력데이터범위는 0 ~ 10,000 이되며, 4.5V 의아날로그신호가입력되었을때 4,500 이 CPU 에저장됩니다. 이때 4,500 은 4.500V 로해석될수있습니다. 166

- 0 ~ 10,000(%): 소수점 2 자리가포함된입력범위의백분율데이터가 CPU 에저장됩니다. 예를들어입력범위가 0 ~ 10V 로선택되었을때 5V 가입력되면 5,000 이 CPU 에저장되고 50.00% 로해석할수있습니다. 필터처리 : 필터처리여부를선택합니다필터처리기능은노이즈또는입력값의급격한변동을필터 ( 지연 ) 처리함으로써안정된디지털출력값을얻을수있습니다. 필터상수는사용자프로그램또는 I/O 파라미터설정에의해채널마다지정가능합니다. 필터처리를했을때변환값은다음계산식으로계산됩니다. F[n] = (1 - α) x A[n] + α x F [n - 1], α: 필터상수 (%), F[n]: 필터처리된출력값, F[n-1]: 필터처리된이전출력값 필터상수 : 필터처리에사용될필터상수를지정합니다. 1 ~ 99(%) 까지설정가능합니다. 평균처리 : 평균처리허용여부를선택합니다. 평균처리를허용하면설정횟수또는설정시간동안 A/D 변환을실행하여누적된합에대한평균값을 CPU 에저장합니다. 평균방법 : 횟수평균또는시간평균을선택할수있습니다. - 횟수평균 : 평균값에설정된횟수동안 A/D 변환을실행한후평균값을계산하여 CPU 에저장합니다. - 시간평균 : 평균값에설정된시간동안 A/D 변환을실행한후평균값을계산하여 CPU 에저장합니다. 평균값 : 횟수평균처리할경우샘플링횟수 (2 ~ 64,000) 를입력하고, 시간평균처리할경우샘플링시간 (4 ~ 16,000(ms)) 를입력합니다. 167

특수모듈변수자동등록 XGT PLC에서특수모듈은데이터메모리중 U 또는 L영역을이용하여 CPU와데이터교환이이루어집니다. 특수모듈은그종류에따라사용하는영역이정해져있으며, 동일한특수모듈이여러개사용되더라도특수모듈이장착된베이스번호와슬롯번호로모듈이구분됩니다. 1 XG5000 편집메뉴에서특수 / 통신모듈변수자동등록을선택하면오른쪽과같은메시지가나타납니다. 메시지창에서 예 를선택하면 I/O 파라미터에등록된특수모듈에따라 U 디바이스에변수및설명문이자동으로등록됩니다. 168

2 XGI PLC 의경우 특수 / 통신모듈변수자동등록 을실행한 XG5000 프로젝트창에서글로벌 / 직접변수를선택하고글로벌 / 직접변수창에서글로벌변수를선택하면등록된변수및설명문을확인할수있습니다. 프로그램에서이변수를사용하기위해서는로컬변수로전달한후사용해야합니다. 169

3 XGI PLC 에서 U 디바이스는다음과같이표기됩니다. 비트데이터 %UX1.2.3 => %U X 1. 2. 3 워드데이터 %UW1.2.3 => %U W 1. 2. 3 비트번호슬롯번호베이스번호크기접두어 ( 비트 ) 메모리영역워드번호슬롯번호베이스번호크기접두어 ( 워드 ) 메모리영역 170

4 XGF-AD8A 의 U 디바이스 b: 모듈이장착된베이스번호, s: 모듈이장착된슬롯번호 디바이스 XGK XGI 타입 변수 설명문 Ubs.00.0 %UXb.s.0 BIT _bs_err 아날로그입력모듈 : 모듈에러 Ubs.00.F %UXb.s.15 BIT _bs_rdy 아날로그입력모듈 : 모듈 Ready Ubs.01.0 %UXb.s.16 BIT _bs_ch0_act 아날로그입력모듈 : 채널0 운전중 Ubs.01.1 %UXb.s.17 BIT _bs_ch1_act 아날로그입력모듈 : 채널1 운전중 Ubs.01.2 %UXb.s.18 BIT _bs_ch2_act 아날로그입력모듈 : 채널2 운전중 Ubs.01.3 %UXb.s.19 BIT _bs_ch3_act 아날로그입력모듈 : 채널3 운전중 Ubs.01.4 %UXb.s.20 BIT _bs_ch4_act 아날로그입력모듈 : 채널4 운전중 Ubs.01.5 %UXb.s.21 BIT _bs_ch5_act 아날로그입력모듈 : 채널5 운전중 Ubs.01.6 %UXb.s.22 BIT _bs_ch6_act 아날로그입력모듈 : 채널6 운전중 Ubs.01.7 %UXb.s.23 BIT _bs_ch7_act 아날로그입력모듈 : 채널7 운전중 Ubs.02 %UWb.s.2 WORD _bs_ch0_data 아날로그입력모듈 : 채널0 변환값 Ubs.03 %UWb.s.3 WORD _bs_ch1_data 아날로그입력모듈 : 채널1 변환값 Ubs.04 %UWb.s.4 WORD _bs_ch2_data 아날로그입력모듈 : 채널2 변환값 Ubs.05 %UWb.s.5 WORD _bs_ch3_data 아날로그입력모듈 : 채널3 변환값 Ubs.06 %UWb.s.6 WORD _bs_ch4_data 아날로그입력모듈 : 채널4 변환값 Ubs.07 %UWb.s.7 WORD _bs_ch5_data 아날로그입력모듈 : 채널5 변환값 Ubs.08 %UWb.s.8 WORD _bs_ch6_data 아날로그입력모듈 : 채널6 변환값 Ubs.09 %UWb.s.9 WORD _bs_ch7_data 아날로그입력모듈 : 채널7 변환값 171

>> 계속..1 b: 모듈이장착된베이스번호, s: 모듈이장착된슬롯번호 XGK 디바이스 XGI 타입변수설명문 Ubs.10.0 %UXb.s.160 BIT _bs_ch0_idd 아날로그입력모듈 : 채널0 입력단선검출 Ubs.10.1 %UXb.s.161 BIT _bs_ch1_idd 아날로그입력모듈 : 채널1 입력단선검출 Ubs.10.2 %UXb.s.162 BIT _bs_ch2_idd 아날로그입력모듈 : 채널2 입력단선검출 Ubs.10.3 %UXb.s.163 BIT _bs_ch3_idd 아날로그입력모듈 : 채널3 입력단선검출 Ubs.10.4 %UXb.s.164 BIT _bs_ch4_idd 아날로그입력모듈 : 채널4 입력단선검출 Ubs.10.5 %UXb.s.165 BIT _bs_ch5_idd 아날로그입력모듈 : 채널5 입력단선검출 Ubs.10.6 %UXb.s.166 BIT _bs_ch6_idd 아날로그입력모듈 : 채널6 입력단선검출 Ubs.10.7 %UXb.s.167 BIT _bs_ch7_idd 아날로그입력모듈 : 채널7 입력단선검출 Ubs.11.0 %UXb.s.176 BIT _bs_err_clr 아날로그입력모듈 : 에러클리어요청 Ubs.20.0 %UXb.s.320 BIT _bs_ch0_hoor 아날로그입력모듈 : 채널0 경보상한 Ubs.20.1 %UXb.s.321 BIT _bs_ch1_hoor 아날로그입력모듈 : 채널1 경보상한 Ubs.20.2 %UXb.s.322 BIT _bs_ch2_hoor 아날로그입력모듈 : 채널2 경보상한 Ubs.20.3 %UXb.s.323 BIT _bs_ch3_hoor 아날로그입력모듈 : 채널3 경보상한 Ubs.20.4 %UXb.s.324 BIT _bs_ch4_hoor 아날로그입력모듈 : 채널4 경보상한 Ubs.20.5 %UXb.s.325 BIT _bs_ch5_hoor 아날로그입력모듈 : 채널5 경보상한 Ubs.20.6 %UXb.s.326 BIT _bs_ch6_hoor 아날로그입력모듈 : 채널6 경보상한 Ubs.20.7 %UXb.s.327 BIT _bs_ch7_hoor 아날로그입력모듈 : 채널7 경보상한 172

>> 계속..2 b: 모듈이장착된베이스번호, s: 모듈이장착된슬롯번호 XGK 디바이스 XGI 타입변수설명문 Ubs.21.0 %UXb.s.336 BIT _bs_ch0_loor 아날로그입력모듈 : 채널0 경보하한 U0bs21.1 %UXb.s.337 BIT _bs_ch1_loor 아날로그입력모듈 : 채널1 경보하한 Ubs.21.2 %UXb.s.338 BIT _bs_ch2_loor 아날로그입력모듈 : 채널2 경보하한 Ubs.21.3 %UXb.s.339 BIT _bs_ch3_loor 아날로그입력모듈 : 채널3 경보하한 Ubs.21.4 %UXb.s.340 BIT _bs_ch4_loor 아날로그입력모듈 : 채널4 경보하한 Ubs.21.5 %UXb.s.341 BIT _bs_ch5_loor 아날로그입력모듈 : 채널5 경보하한 Ubs.21.6 %UXb.s.342 BIT _bs_ch6_loor 아날로그입력모듈 : 채널6 경보하한 Ubs.21.7 %UXb.s.343 BIT _bs_ch7_loor 아날로그입력모듈 : 채널7 경보하한 173

3) 프로그램작성 아날로그입력프로그램편집 (XGI) 174

아날로그입력프로그램 (XGI) 0 번채널로입력되는 0 ~ 10V 의아날로그입력신호를 0 ~ 16,000 으로 AD 변환하여 PID 0 번루프 PV( 현재값 ) 영역에저장합니다. 1 I/O 파라미터설정 2 PLC 프로그램작성 (1) 175

3 PLC 프로그램작성 (2) A/D 채널동작플래그 = ON 채널 0 이운전중 _02_CH0_ACT: 슬롯번호 2, 채널 0 _02_CH1_ACT: 슬롯번호 2, 채널 1 _02_CH2_ACT: 슬롯번호 2, 채널 2 _02_CH3_ACT: 슬롯번호 2, 채널 3 A/D 변환결과값 = 8006 12mA 에해당하는값 _02_CH0_DATA: 슬롯번호 2, 채널 0 _02_CH1_DATA: 슬롯번호 2, 채널 1 _02_CH2_DATA: 슬롯번호 2, 채널 2 _02_CH3_DATA: 슬롯번호 2, 채널 3 176

4 PLC 프로그램작성 (3) A/D 변환값을 PID 연산의 PV 로입력 177

5 PLC 프로그램작성 (4) 178

제 11 장 Analog 출력모듈

1. XGT 아날로그출력모듈종류및특성 형명 규격 XGF-DV4A 전압 4 채널출력, 14bit DA 변환 (0 ~ 16,000), 채널간비절연 XGF-DV8A 전압 8 채널출력, 14bit DA 변환 (0 ~ 16,000), 채널간비절연 XGF-DC4A 전류 4 채널출력, 14bit DA 변환 (0 ~ 16,000), 채널간비절연 XGF-DC8A 전류 8 채널출력, 14bit DA 변환 (0 ~ 16,000), 채널간비절연 XGF-DV4S 전압 4 채널출력, 14bit DA 변환 (0 ~ 16,000), 채널간절연 XGF-DC4S 전류 4 채널출력, 14bit DA 변환 (0 ~ 16,000), 채널간절연 XGF-DC4H 전류 4 채널출력, 14bit DA 변환 (0 ~ 16,000), HART 통신 (Highway Addressable Remote Transducer) XGF-AH6A 채널별전압 / 전류선택 4 채널입력, 13bit AD 변환 (0 ~ 8,000), 채널간비절연 채널별전압 / 전류선택 2 채널출력, 13bit DA 변환 (0 ~ 8,000), 채널간비절연 181

아날로그출력 2. 규격 XGF-DC4A XGF-DC8A XGF-DC4S XGF-DV4A XGF-DV8A XGF-DV4S 아날로그출력범위 DC 4 ~ 20 ma DC 0 ~ 20 ma DC 1 ~ 5V DC 0 ~ 5V DC 0 ~ 10V DC -10 ~ 10V 부하저항 600Ω 이하 550Ω 이하 600Ω 이하 1 kω이상 최대분해능 1/16,000 디지털입력 무부호정수 0 ~ 16,000 유부호정수 -8,000 ~ 8,000 정규값 4,000 ~ 20,000 0 ~ 20,000 1,000 ~ 5,000 0 ~ 5,000 0 ~ 10,000-10,000 ~ 10,000 백분위 0 ~ 10,000 변환속도 250 μs / 채널 10ms/4 채널 절연채널간비절연채널간절연채널간비절연채널간절연 부가기능 비상출력 비상출력변화율제어출력제한 비상출력 비상출력변화율제어출력제한 182

3. 각부의명칭과역할 RUN LED - 점등 : 모듈정상동작 - 점멸 : 모듈에러발생 - 소등 : DC 5V 단선, 모듈이상 (XGF-DC8A) (XGF-DV4S) (XGF-AH6A) (XGF-DC4H) 183

4. 입, 출력변환특성 XGF-DV4A 184

XGF-DC4A 185

5. XGT PLC 아날로그출력모듈배선 XGF-DV4A 0 1 CH3 6 7 186

XGF-DC4A 0 1 CH3 6 7 187

6. XGT PLC 아날로그출력모듈운전설정 1) 운전설정순서 시작 슬롯에장착 외부기기배선 I/O 파라미터사용? I/O 파라미터설정 변수자동등록 프로그램작성 끝 188

2) I/O 파라미터를이용한운전설정 I/O 파라미터수동등록 1 XG5000 프로젝트창에서 I/O 파라미터를더블클릭합니다. 2 I/O 파라미터설정창에서모듈이장착된슬롯의모듈열을선택하고특수모듈, 아날로그출력모듈을연후장착된모듈의형명을선택합니다. 189

온라인기능을이용한 I/O 파라미터자동등록 1 XG5000 온라인메뉴에서접속을눌러 XG5000 과 PLC 를접속합니다. 2 온라인메뉴의모드전환을눌러 PLC 를 STOP 모드로전환합니다. 190

3 XG5000 온라인메뉴에서 I/O 정보를선택합니다. 4 I/O 정보창에서 I/O 동기화버튼을선택합니다. I/O 동기화버튼을선택하면오른쪽의메시지가나타납니다. 메시지창에서 예 를선택하면 XG5000 에서읽어온 I/O 정보를 I/O 파라미터에저장합니다. 191

5 I/O 동기화가완료되면 I/O 동기화완료메시지가나타납니다. 4 I/O 파라미터를열어보면모듈이등록되었습니다. 192

운전파라미터설정 1 I/O 파라미터에서등록된모듈을더블클릭하면모듈운전파라미터설정창이나타납니다. 운전채널 : 각채널별로운전및정지를선택할수있습니다. 빠른변환을위해서는실제사용하는채널만운전으로선택합니다. 출력범위선택 : 각채널별로전압출력의경우 1 ~ 5V, 0 ~ 5V, 0 ~ 10V, -10 ~ 10V 를선택할수있습니다. 입력데이터타입 : 각채널별로 0 ~ 16,000, -8,000 ~ 8,000, 정규값, 0 ~ 10,000(%) 를선택할수있습니다. - 0 ~ 16,000: 출력범위최소아날로그신호를출력하고자할때 0, 출력범위최대아날로그신호를출력하고자할때 16,000 을 CPU 에서모듈로전송합니다. - -8,000 ~ 8,000: 출력범위최소아날로그신호를출력하고자할때 -8,000, 출력범위최대아날로그신호를출력하고자할때 8,000 을 CPU 에서모듈로전송합니다. - 정규값 : 출력범위선택에따라선택하는범위가달라집니다. 소수점 3 자리를포함하는아날로그출력신호량을 CPU 에서모듈로전송합니다. 예를들어출력범위가 0 ~ 10V 로선택되었을때정규값에서선택할수있는입력데이터범위는 0 ~ 10,000 이되며, 4.5V 를출력하고자할때 CPU 에서 4,500 을모듈로전송합니다. 이때 4,500 은 4.500V 로해석될수있습니다. 193

- 0 ~ 10,000(%): 소수점 2 자리가포함된출력범위의백분율데이터가 CPU 에서모듈로전송됩니다. 예를들어출력범위가 0 ~ 10V 로선택되었을때 5V 를출력하고자한다면 CPU 에서 5,000 을모듈로전송해주어야합니다. 이때, 5,000 은 50.00% 로해석할수있습니다. 채널출력상태설정 : 아날로그출력은 CPU 에서모듈로출력데이터를전송한뒤출력상태설정비트를 ON 시켜주어야아날로그신호를출력합니다. 채널출력상태는출력설정상태설정비트가 OFF 되었을때출력데이터를설정합니다. - 이전값 : 채널출력상태설정비트가 ON 되었을때마지막으로출력했던값을출력합니다. - 최소값 : 출력범위의최소값을출력합니다. - 중간값 : 출력범위의중간값을출력합니다. - 최대값 : 출력범위의최대값을출력합니다. 194

특수모듈변수자동등록 XGT PLC에서특수모듈은데이터메모리중 U 또는 L영역을이용하여 CPU와데이터교환이이루어집니다. 특수모듈은그종류에따라사용하는영역이정해져있으며, 동일한특수모듈이여러개사용되더라도특수모듈이장착된베이스번호와슬롯번호로모듈이구분됩니다. 1 XG5000 편집메뉴에서특수 / 통신모듈변수자동등록을선택하면오른쪽과같은메시지가나타납니다. 메시지창에서 예 를선택하면 I/O 파라미터에등록된특수모듈에따라 U 디바이스에변수및설명문이자동으로등록됩니다. 195

2 XGI PLC 의경우 특수 / 통신모듈변수자동등록 을실행한 XG5000 프로젝트창에서글로벌 / 직접변수를선택하고글로벌 / 직접변수창에서글로벌변수를선택하면등록된변수및설명문을확인할수있습니다. 프로그램에서이변수를사용하기위해서는로컬변수로전달한후사용해야합니다. 196

3 XGI PLC 에서 U 디바이스는다음과같이표기됩니다. 비트데이터 %UX1.2.3 => %U X 1. 2. 3 워드데이터 %UW1.2.3 => %U W 1. 2. 3 비트번호슬롯번호베이스번호크기접두어 ( 비트 ) 메모리영역워드번호슬롯번호베이스번호크기접두어 ( 워드 ) 메모리영역 197

4 XGF-DV4A 의 U 디바이스 b: 모듈이장착된베이스번호, s: 모듈이장착된슬롯번호 XGK 디바이스 XGI 타입변수설명문 Ubs.00.0 %UXb.s.0 BIT _bs_ch0_err 아날로그출력모듈 : 채널0 에러 Ubs.00.1 %UXb.s.1 BIT _bs_ch1_err 아날로그출력모듈 : 채널1 에러 Ubs.00.2 %UXb.s.2 BIT _bs_ch2_err 아날로그출력모듈 : 채널2 에러 Ubs.00.3 %UXb.s.3 BIT _bs_ch3_err 아날로그출력모듈 : 채널3 에러 Ubs.00.F %UXb.s.15 BIT _bs_rdy 아날로그출력모듈 : 모듈 Ready Ubs.01.0 %UXb.s.16 BIT _bs_ch0_act 아날로그출력모듈 : 채널0 운전중 Ubs.01.1 %UXb.s.17 BIT _bs_ch1_act 아날로그출력모듈 : 채널1 운전중 Ubs.01.2 %UXb.s.18 BIT _bs_ch2_act 아날로그출력모듈 : 채널2 운전중 Ubs.01.3 %UXb.s.19 BIT _bs_ch3_act 아날로그출력모듈 : 채널3 운전중 Ubs.02.0 %UXb.s.32 BIT _bs_ch0_outen 아날로그출력모듈 : 채널0 출력상태설정 Ubs.02.1 %UXb.s.33 BIT _bs_ch1_outen 아날로그출력모듈 : 채널1 출력상태설정 Ubs.02.2 %UXb.s.34 BIT _bs_ch2_outen 아날로그출력모듈 : 채널2 출력상태설정 Ubs.02.3 %UXb.s.35 BIT _bs_ch3_outen 아날로그출력모듈 : 채널3 출력상태설정 Ubs.03 %UWb.s.3 WORD _bs_ch0_data 아날로그출력모듈 : 채널0 입력값 Ubs.04 %UWb.s.4 WORD _bs_ch1_data 아날로그출력모듈 : 채널1 입력값 Ubs.05 %UWb.s.5 WORD _bs_ch2_data 아날로그출력모듈 : 채널2 입력값 Ubs.06 %UWb.s.6 WORD _bs_ch3_data 아날로그출력모듈 : 채널3 입력값 198

3) 프로그램작성 아날로그출력프로그램편집 (XGI) 1 프로그램에서변수를입력할때변수선택창이나타납니다. 변수종류에서글로벌변수를선택하고, 특수모듈의경우글로벌변수보기항목에서특수모듈이장착된베이스및슬롯번호, 모듈종류를선택하면선택된모듈이사용하는 U 디바이스에등록된변수및설명문이나타납니다. 표에서변수및설명문을확인하여사용하고자하는변수를선택합니다. 199

2 응용명령편집시명령어입력후 변수 / 디바이스입력 버튼을선택하면변수 / 디바이스입력창이나타납니다. 변수 / 디바이스창에서변수 / 설명을선택하면등록된변수가표시됩니다. 표에서변수및설명문을확인하여사용하고자하는변수를선택합니다. ( 이경우디바이스타이틀을더블클릭하여디바이스오름차순으로정렬이되면사용하기편리합니다.) 200

아날로그출력프로그램편집 (XGI) 1 프로그램에서변수를입력할때변수선택창이나타납니다. 변수종류에서글로벌변수를선택하고, 특수모듈의경우글로벌변수보기항목에서특수모듈이장착된베이스및슬롯번호, 모듈종류를선택하면선택된모듈이사용하는 U 디바이스에등록된변수및설명문이나타납니다. 표에서변수및설명문을확인하여사용하고자하는변수를선택합니다. 201

아날로그입력프로그램 (XGI) 1 I/O 파라미터설정 2 PLC 프로그램작성 (1) 202

3 PLC 프로그램작성 (2) D/A 변환 Enable 플래그 변환시작요청플래그 _03_CH0_OUTEN: 슬롯번호 3, 채널 0 _03_CH1_OUTEN: 슬롯번호 3, 채널 1 _03_CH2_OUTEN: 슬롯번호 3, 채널 2 _03_CH3_OUTEN: 슬롯번호 3, 채널 3 D/A 변환입력값 = 2048 아날로그출력값 : 6mA _03_CH0_DATA: 슬롯번호 3, 채널 0 _03_CH1_DATA: 슬롯번호 3, 채널 1 _03_CH2_DATA: 슬롯번호 3, 채널 2 _03_CH3_DATA: 슬롯번호 3, 채널 3 D/A 채널상태플래그 = ON 채널 0 이운전중 _03_CH0_ACT : 슬롯번호 3, 채널 0 _03_CH1_ACT : 슬롯번호 3, 채널 1 _03_CH2_ACT : 슬롯번호 3, 채널 2 _03_CH3_ACT : 슬롯번호 3, 채널 3 203

4 PLC 프로그램작성 (3) 204

주의사항 아날로그출력모듈의경우아래그림과같이모듈하단부에 DC24V 를인가해야전압혹은전류출력동작이가능합니다. 1 2 3 4 5 6 7 8 DC24V 10 12 14 16 18 9 11 13 15 17 노이즈필터 DC+24V GND 외부전원 205

제 12 장프로그램예제 207

208

제 12 장프로그램예제 12.1 십진숫자입력프로그램 10 진 Key(Ten Key) 의조작에의하여지정한변수에원하는숫자를써넣는프로그램입니다. 입출력구성 1 2 3 4 5 6 7 8 0 정정 9 확인 숫자 0 : %IX0.0.0 숫자 1 : %IX0.0.1 숫자 2 : %IX0.0.2 숫자 3 : %IX0.0.3 숫자 4 : %IX0.0.4 숫자 5 : %IX0.0.5 숫자 6 : %IX0.0.6 숫자 7 : %IX0.0.7 숫자 8 : %IX0.0.8 숫자 9 : %IX0.0.9 정정 : %IX0.0.14 확인 : %IX0.0.15 209

프로그램작성 로컬변수 L1 의 AND 및 NE 펑션 %IW0.0.0 의 16Bit 중하위 10Bit 를마스킹하여변수 키 _ 정보 에쓰고, 키 _ 정보 중 On Bit 가있으면변수누름 _ 검출이 On 됨. L5 의 ENCO_W( 또는 ENCO_WORD) 및 INT_TO_BCD 펑션 키 _ 정보 중 On Bit 의수치값를구하여변수 정수값 에저장하고, 이를 BCD 값으로변환해변수 BCD 값 에저장. L8 의 SHL 및 OR 펑션 표시기 의 Bit 열을 4 Bit 만큼왼쪽으로이동함. 표시기 + BCD 값 = 표시기 210

L13 의 WORD_BCD_TO_INT 및 MOVE 확인키로표시기의값을버퍼에저장하고, 키입력오류시정정키로초기화한다. 12.2 사용자펑션블록만들기 12.2.1 사용자펑션블록작성예 이전에작성한 10 진숫자입력프로그램 ( 텐키입력프로그램 ) 을사용자펑션블록으로만들어활용하는예입니다. (1) 기작성한 10 진숫자입력프로그램 (Tenkey 프로그램 ) 을엽니다. 211

(2) 프로젝트에서 사용자펑션 / 펑선블록 의마우스우측버튼을클릭하여 항목추가 - 펑선블록 을 선택합니다. (3) 사용자펑션 / 펑선블록 대화상자에서사용자펑션블록이름을입력합니다. 212

사용자펑션 / 펑선블록 에비밀번호를등록할수있습니다. 비밀번호를등록하면제삼자는소스프로그램을볼수없습니다. (4) 사용자펑션 / 펑선블록 대화상자하단의확인버튼을클릭하면, 사용자펑션 / 펑선블록 항목아래에 입력한이름으로된새로운항목 ( 로컬변수및프로그램 ) 이생성됩니다. 213

(5) 스캔프로그램의 Tenkey/ 프로그램을복사하여 사용자펑션 / 펑선블록 의텐키 / 프로그램에붙여넣습니다, 스캔프로그램의 Tenkey/ 로컬변수들은 사용자펑션 / 펑선블록 의텐키 / 로컬변수에모두 내부데이터 ( 메모리할당불랭크 ) 로표시됩니다. 214

아울러, 사용자펑션 / 펑선블록 의텐키 / 프로그램이표시됩니다. (6) 사용자펑션 / 펑선블록 의텐키 / 로컬변수에서입력변수 (VAR_INPUT) 및출력변수 (VAR_OUTPUT) 를 등록합니다. 입력변수 (VAR_INPUT) 및출력변수 (VAR_OUTPUT) 를등록함과동시에작성되는펑션블록의 모양을바로확인할수있습니다. 215

(7) 사용자펑션 / 펑선블록 의로컬변수편집과프로그램편집이끝나면, 스캔프로그램에서펑션 / 펑션블록 툴바명령을선택해서 ( 단축키 F10) 편집을끝낸사용자펑션 / 펑션블록이등록되어있는지확인합니다. (8) 작성한 텐키 사용자펑션블록을사용하기위해스캔프로그램의 Tenkey/ 프로그램에서이전의 소스프로그램을비실행문으로설정하고, 텐키 사용자펑션블록을사용한프로그램을편집합니다. 216

(9) 텐키 사용자펑션블록을사용한프로그램의실행결과를확인합니다. (10) 향후, 재사용을위해실행결과를확인한 텐키 사용자정의펑션블록을파일로저장합니다. 217

(11) 향후, 재사용을위해실행결과를확인한 텐키 사용자정의펑션블록을파일로저장합니다. 저장파일확장자는 *.fun 입니다.( 텐키.fun) 218

(12-1) 임의프로젝트에서 텐키 사용자정의펑션블록을재사용하기위해, 사용자펑션 / 펑선블록 에서 마우스우측버튼을클릭하여 파일로부터항목읽기 - 펑선 / 펑션블록 을클릭합니다. 저장된사용자펑션블록 ( 텐키.fun) 열기를합니다. 219

(12-2) 임의프로젝트에서재사용실습을합니다. 프로그램편집 프로그램실행결과확인 220

12.3 PLC 운전중카운터설정값변경프로그램 프로그램편집 221

프로그램실행결과확인 (1) 디지털스위치로카운터설정값 100 설정후, 카운터설정값 _ 변경 PB(%IX0.0.0) 를 ON OFF (2) 카운터현재값 100 이상이면카운터출력 _ 확인램프 (%QX0.1.0) 점등확인 (3) 디지털스위치로카운터설정값 120 으로재설정후, 위의 (1),(2) 실습을반복 222

12.4 분수대자동제어프로그램 분수대동작순서표 M1- 캔들, M2- 안개, M3- 소돔 1, M4- 소돔 2, M5- 대돔, M6- 센터 동작순서 M6 M5 M4 M3 M2 M1 시간 동작 1 10 초 동작 2 10 초 동작 3 10 초 동작 4 10 초 동작 5 5 초 동작 6 5 초 동작 7 10 초 동작조건 공통사항 1 출력 M1( 캔들 ), M2( 안개 ), M3( 소돔1), M4( 소돔2), M5( 대돔 ) 및 M6( 센터 ) 를동작시키기위한각개별입력SW에대해 %IX0.0.0~%IX0.0.5 로입력을할당한다. 2 자동 / 수동선택SW는 %IX0.0.8 로입력을할당한다. 3 M1( 캔들 )~M6( 센터 ) 는 %QX0.1.0~%QX0.1.5 로출력을할당한다. 4 M1( 캔들 )~M6( 센터 ) 의 6개모터출력에대한 7단계동작을헥사 (hex) 코드화한다. 수동동작 1 자동 / 수동선택 SW(%IX0.0.8) 가 OFF 시동작한다. 2 각개별입력 SW 에의하여동작한다. 223

자동동작 1 자동 / 수동선택 SW(%IX0.0.8) 가 ON 시동작한다. 2 각개별입력 SW 가 ON 된경우만동작한다. 3 모터출력 7 단계동작이 60 초주기로반복된다. 4 출력 M1( 캔들 ) ~ M6( 센터 ) 을전부동작시킬경우, 개별입력 SW(%IX0.0.0 ~ %IX0.0.5) 를 전부 ON 한다. 요구사항 가. M1( 캔들 ) ~ M6( 센터 ) 의 6개모터출력에대한 7단계동작을순서대로헥사 (hex) 코드화하면 16#0003, 16#000F, 16#001D, 16#003D, 16#0031, 16#0023 및 16#003F 임을확인한다. 나. M1( 캔들 ) ~ M6( 센터 ) 을동작시키기위해서는그것에대응된각개별입력SW(%IX0.0.0 ~ %IX0.0.5) 가 ON되어있어야함에유의한다.(AND 조건 ) 로컬변수 224

변수 동작상태 배열초기값설정 프로그램 225

226

227

12.5 다수의조명 ON/OFF 제어프로그램 12.5.1 직접어드레스지정 228

12.5.2 배열사용예 229

12.6 SFC 프로그램 12.6.1 직렬연결프로그램예 (1) 프로그램편집 S0 의 (N) 깜빡이 _ 출력 0 : 초기에 S0 이활성화되어램프 0 을점멸시킴. S1 의 (N) 깜빡이 _ 출력 1 : S1 이활성화되면램프 1 을점멸시킴. S1 의 (S) 셋 _ 출력 2 : 램프 2 를 S1~S2 에서 ON 으로유지시킴. S2 의 (N) 깜빡이 _ 출력 3 : S2 가활성화되면램프 3 을점멸시킴. S3 의 (R) 셋 _ 출력 2 : 램프 2 를 S3 에서리셋시킴. 230

(2) 프로그램모니터링 231

12.6.2 선택분기프로그램예 (1) 프로그램편집 (2) 프로그램모니터링 스텝 S1 이활성화되면램프 %Q0.1.2 가점등됩니다. 분기된 T2 나 T5 중먼저 ON 된해당스텝이활성화됩니다. 232

12.6.3 병렬분기프로그램예 (1) 프로그램편집 233

234

235

(2) 프로그램모니터링 초기에스텝 0 이활성화되어액션 : 데모 1 프로그램이실행됩니다. 236

액션제한자 D(Time Delyed) 에의해 S1 이활성화된후 5 초후부터액션데모 2 가실행됩니다. S2 가활성화되면액션데모 3, 액션데모 4 및액션 : 데모 5 가동시에실행됩니다. 237

S3 이활성화되면액션 데모 6 이실행우측표시기의수치를 1 초마다 1 만큼증가 S3 이비활성화되면액션 데모 6 은멈추며 S0 이다시활성화되어액션 데모 1 이재실행. S3 이재활성화되면액션 : 데모 6 이재실행되고우측표시기의수치는이전값부터다시증가. 238

12.7 아날로그프로그램 (1) 프로그램편집 239

I/O 파라미터 (2) 프로그램모니터링 아날로그입력전압 DC+5V 인가시, 디지털출력값 ( 변환값 ) 8000 240

디지털입력값 8000 입력시, 아날로그출력전압 DC+5V 디지털입력값 16000 입력시, 아날로그출력전압 DC+10V 241

부록 1 : 펑션 / 펑션블록목록

1. 기본펑션 1.1 타입변환펑션 타입변환펑션그룹 ARY_ASC_TO_*** SINT_TO_*** BOOL_TO_*** ARY_BYTE_TO_*** INT_TO_*** BYTE_TO_*** ARY_BCD_TO_*** DINT_TO_*** WORD_TO_*** ASC_TO_*** DINT_TO_*** DWORD_TO_*** BCD_TO_*** LINT_TO_*** DWORD_TO_*** BCD_TO_ASC USINT_TO_*** LWORD_TO_*** BYTE_TO_ASC UINT_TO_*** STRING_TO_*** TRUNC UINT_TO_*** TIME_TO_*** REAL_TO_*** UDINT_TO_*** DATE_TO_*** LREAL_TO_*** ULINT_TO_*** TOD_TO_*** LREAL_TO_*** BOOL_TO_*** DT_TO_*** - - ***_TO_BCD - 출력데이터타입에대한상세한내용은 XGI 명령어집을참고바랍니다. 245

1.2 수치연산펑션 - 하나의입력을갖는수치연산펑션 No. 펑션이름 기 능 비고 일반펑션 1 ABS 절대값연산 (Absolute Value) - 2 SQRT 제곱근연산 (Square Root) - 로그펑션 3 LN 자연대수연산 (Natural Logarithm) - 4 LOG 상용대수연산 (Common Logarithm Base To 10) - 5 EXP 자연지수연산 (Natural Exponential) - 삼각펑션 6 SIN 사인값연산 (Sine) - 7 COS 코사인값연산 (Cosine) - 8 TAN 탄젠트값연산 (Tangent) - 9 ASIN 아크사인값연산 (Arc Sine) - 10 ACOS 아크코사인값연산 (Arc Cosine) - 11 ATAN 아크탄젠트값연산 (Arc Tangent) - 각도펑션 12 RAD_REAL 13 RAD_LREAL 각도의단위를 ( ) 에서라디안 (Radian) 으로변환 - 14 DEG_REAL 15 DEG_LREAL 라디안 (Radian) 값을각도 ( ) 로변환 - 246

- 기본수치연산펑션 No. 펑션이름기능비고 입력개수를확장할수있는연산펑션 ( 단, n 은 8 까지가능 ) 1 ADD 더하기 (OUT <= IN1 + IN2 +... + INn) - 2 MUL 곱하기 OUT <= IN1 * IN2 *... * INn) - 입력개수가일정한연산펑션 3 SUB 빼기 (OUT <= IN1 - IN2) - 4 DIV 나누기 (OUT <= IN1 / IN2) - 5 MOD 나머지구하기 (OUT <= IN1 Modulo IN2) - 6 EXPT 지수연산 (OUT <= IN1 IN2 ) - 7 MOVE 데이터복사 (OUT <= IN) - 입력데이터값교환 8 XCHG_*** 입력데이터값을서로교환 - 247

1.3 비트열펑션 - 비트시프트펑션 No. 펑션이름 기 능 비고 1 SHL 입력을 N 비트왼쪽으로이동 ( 오른쪽은 0으로채움 ) - 2 SHR 입력을 N 비트오른쪽으로이동 ( 왼쪽은 0으로채움 ) - 3 SHIFT_C_*** 입력을 N 비트만큼지정된방향으로이동 (Carry 발생 ) - 4 ROL 입력을 N 비트왼쪽으로회전 - 5 ROR 입력을 N 비트오른쪽으로회전 - 6 ROTATE_C_*** 입력을 N 비트만큼지정된방향으로회전 (Carry 발생 ) - - 비트연산펑션 No. 펑션이름 기 능 ( 단, n은 8까지가능 ) 비고 1 AND 논리곱 (OUT <= IN1 AND IN2 AND... AND INn) - 2 OR 논리합 (OUT <= IN1 OR IN2 OR... OR INn) - 3 XOR 배타적논리합 (OUT <= IN1 XOR IN2 XOR... XOR INn) - 4 NOT 논리반전 (OUT <= NOT IN1) - 5 XNR 배타적논리곱 (OUT <= IN1 XNR IN2 XNR... XNR INn) - 248

1.4 선택펑션 No. 펑션이름 기 능 ( 단, n은 8까지가능 ) 비고 1 SEL 입력 IN0와 IN1중에선택하여출력 - 2 MAX 입력 IN1,...INn중에최대값출력 - 3 MIN 입력 IN1,...INn중에최소값출력 - 4 LIMIT 상, 하한제한값출력 - 5 MUX 입력 IN0,... INn 중 K번째입력을출력 - 1.5 데이터교환펑션 No. 펑션이름기능비고 SWAP_BYTE BYTE 의상 하위 Nibble 을교환하여출력 - 1 SWAP_WORD WORD 의상 하위 BYTE 를교환하여출력 - SWAP_DWORD DWORD 의상 하위 WORD 를교환하여출력 - SWAP_LWORD LWORD 의상 하위 DWORD 를교환하여출력 - ARY_SWAP_BYTE Array 로입력된 BYTE 의상 하위 Nibble 을교환하여출력 - 2 ARY_SWAP_WORD Array 로입력된 WORD 의상 하위 BYTE 를교환하여출력 - ARY_SWAP_DWORD Array 로입력된 DWORD 의상 하위 WORD 를교환하여출력 - ARY_SWAP_LWORD Array 로입력된 LWORD 의상 하위 DWORD 를교환하여출력 - 249

1.6 비교펑션 No. 펑션이름기능 ( 단, n 은 8 까지가능 ) 비고 1 GT 크다 비교 OUT <= (IN1>IN2) & (IN2>IN3) &... & (INn-1 > INn) - 2 GE 크거나작다 비교 OUT <= (IN1>=IN2) & (IN2>=IN3) &... & (INn-1 >= INn) - 3 EQ 같다 비교 OUT <= (IN1=IN2) & (IN2=IN3) &... & (INn-1 = INn) - 4 LE 작거나같다 비교 OUT <= (IN1<=IN2) & (IN2<=IN3) &... & (INn-1 <= INn) - 5 LT 작다 비교 OUT <= (IN1<IN2) & (IN2<IN3) &... & (INn-1 < INn) - 6 NE 같지않다 비교 OUT <= (IN1<>IN2) & (IN2<>IN3) &... & (INn-1 <> INn) - 250

1.7 문자열펑션 No. 펑션이름기능비고 1 LEN 입력문자열의길이구하기 - 2 LEFT 입력문자열을왼쪽으로부터 L 만큼출력 - 3 RIGHT 입력문자열을오른쪽으로부터 L 만큼출력 - 4 MID 입력문자열의 P 번째부터 L 만큼출력 - 5 CONCAT 입력문자열을붙여출력 - 6 INSERT 첫번째입력문자열의 P 번째문자뒤에두번째입력문자열을삽입하여출력 - 7 DELETE 입력문자열의 P 번째문자부터 L 개문자를삭제하여출력 - 8 REPLACE 첫번째입력문자열의 P 번째문자부터 L 개문자를두번째입력문자열로대 치하여출력 - 9 FIND 첫번째입력문자열중에두번째입력문자열패턴과동일한부분을찾아시작 문자위치를출력 - 251

1.8 날짜시각펑션 No. 펑션이름기능비고 1 ADD_TIME 시간, 시각및날짜시각에시간더하기 - SUB_TIME 시간, 시각및날짜시각에시간빼기 - 2 SUB_DATE 날짜에서날짜를빼서시간산출하기 - SUB_TOD 시각에서시각을빼서시간산출하기 - SUB_DT 날짜시각에서날짜시각을빼서시간산출하기 - 3 MUL_TIME 시간에숫자곱하기 - 4 DIV_TIME 시간에숫자나누기 - 5 CONCAT_TIME 날짜와시각을붙여서날짜시각만들기 - 1.9 파일관련펑션 No. 펑션이름 기 능 비고 1 RSET 파일레지스터블록번호설정 - 2 EBCMP 블록비교 - 3 EMOV 설정한플래쉬영역으로부터데이터읽기 - 4 EERRST 플래시메모리관련에러플래그클리어 - 252

1.10 시스템제어펑션 No. 펑션이름기능비고 1 DI 태스크프로그램기동불허 - 2 EI 태스크프로그램기동허가 - 3 STOP 프로그램에의한운전정지 - 4 ESTOP 프로그램에의한비상운전정지 - 5 DIREC_IN 입력데이터즉시갱신 - 6 DIREC_O 출력모듈데이터즉시갱신 - 7 WDT_RST Watch_Dog 타이머갱신 - 8 MCS Master Control - 9 MCSCLR Master Control Clear - 10 FALS 자가진단 ( 고장표시 ) - 11 OUTOFF 전출력 Off - 253

1.11 데이터조작명령펑션 No. 펑션이름 기 능 비고 1 MEQ_*** 입력값을 Masking 한후이값들을비교 - 2 DIS_*** 입력값들을지정된 Bit 개수단위로출력 - 3 UNI_*** Array로입력된값을지정된 Bit수만큼결합 - 4 BIT_BYTE 8개의 Bit들을 BYTE로모음 - 5 BYTE_BIT BYTE를 8개의 Bit로나눔 - 6 BYTE_WORD 2개의 BYTE들을 WORD로모음 - 7 WORD_BYTE WORD를 2개의 BYTE로나눔 - 8 WORD_DWORD 2개의 WORD들을 DWORD로모음 - 9 DWORD_WORD DWORD를 2개의 WORD로나눔 - 10 DWORD_LWORD 2개의 DWORD들을 LWORD로모음 - 11 LWORD_DWORD LWORD를 2개의 DWORD로나눔 - 12 GET_CHAR 지정된문자열로부터한문자 (Character) 를추출 - 13 PUT_CHAR 지정된문자를지정된문자열에쓰기 - 14 STRING_BYTE 지정된문자열을 BYTE Array로변환 - 15 BYTE_STRING BYTE Array를지정된문자열로변환 - 254

1.12 스택연산명령펑션 No. 펑션이름기능비고 1 FIFO_*** 선입선출명령 - 2 LIFO_*** 후입선출명령 - 1.13 MK(Master-K) 펑션 No. 펑션이름기능 ( 단, n 은 8 까지가능 ) 비고 1 ENCO_B,W,D,L On 된비트위치를숫자로출력 - 2 DECO_B,W,D,L 지정된비트위치를 On - 3 BSUM_B,W,D,L On 된비트개수를숫자로출력 - 4 SEG_WORD BCD 또는 HEX 값을 7 세그먼트디스플레이코드로변환 - 5 BMOV_B,W,D,L 비트스트링의일부분을복사, 이동 - 6 INC_B,W,D,L IN 데이터를하나증가 - 7 DEC_B,W,D,L IN 데이터를하나감소 - 255

1.14 Array 연산명령펑션 No. 펑션이름기능비고 1 ARY_MOVE Array Type 의데이터복사 (OUT <= IN) - 2 ARY_CMP_*** 2 개의 Array 로입력된값을동일한값이있는지비교 - 3 ARY_SCH_*** Array 내에서입력된값과동일한값을찾아출력 - 4 ARY_FLL_*** 입력데이터값으로 Array 내부의선택영역을채움. - 5 ARY_AVE_*** Array 내부의지정된영역에대하여평균값을구함 - 6 ARY_SFT_C_*** Array 의 Bit 들을정해진개수만큼지정된방향으로이동 - 7 ARY_ROT_C_*** Array 의 Bit 들을정해진개수만큼지정된방향으로회전 - 8 SHIFT_A_*** Array 블록중지정된범위의값들을지정된방향으로이동 - 9 ROTATE_A_*** Array 블록중지정된범위의값들을지정된방향으로회전 - 256

2. 기본펑션블록 2.1 바이스테이블펑션블록 No. 펑션블록이름 기 능 비고 1 SR 세트우선쌍안정출력 - 2 RS 리셋우선쌍안정출력 - 3 SEMA 시스템자원제어용 Semaphore - 2.2 에지검출펑션블록 No. 펑션블록이름 기 능 비고 1 R_TRIG 상승에지검출 (Rising Edge Detector) - 2 F_TRIG 하강에지검출 (Falling Edge Detector) - 3 FF 입력조건상승시출력반전 - 2.3 카운터 No. 펑션블록이름기능비고 1 CTU_*** 2 CTD_*** 가산카운터 (Up Counter) INT,DINT,LINT,UINT,UDINT,ULINT 감산카운터 (Down Counter) INT,DINT,LINT,UINT,UDINT,ULINT - - 3 CTUD_*** 가감산카운터 (Up Down Counter) INT,DINT,LINT,UINT,UDINT,ULINT - 4 CTR 링카운터 (Ring Counter) - 257

2.4 타이머 No. 펑션블록이름 기 능 비고 1 TP 펄스타이머 (Pulse Timer) - 2 TON On 딜레이타이머 (On-Delay Timer) - 3 TOF Off 딜레이타이머 (Off-Delay Timer) - 4 TMR 적산타이머 (Integrating Timer) - 5 TP_RST 펄스타이머의출력 Off가가능한노스테이블타이머 - 6 TRTG 리트리거블타이머 (Retriggerable Timer) - 7 TOF_RST 동작중출력 Off가가능한 Off 딜레이타이머 (Off-Delay Timer) - 8 TON_UINT 정수설정 On 딜레이타이머 (On-Delay Timer) - 9 TOF_UINT 정수설정 Off 딜레이타이머 (Off-Delay Timer) - 10 TP_UINT 정수설정펄스타이머 (Pulse Timer) - 11 TMR_UINT 정수설정적산타이머 (Integrating Timer) - 12 TMR_FLK 점멸기능타이머 - 13 TRTG_UINT 정수설정리트리거블타이머 - 2.5 파일관련펑션블록 No. 펑션블록이름기능비고 1 EBREAD R 영역데이터를플래시영역에서읽어오기 - 1 EBWRITE R 영역데이터를플래시영역에쓰기 - 258

2.6 기타펑션블록 No. 펑션블록이름 기 능 비고 1 SCON 순차스텝및스텝점프 - 2 DUTY 지정된 Scan마다 On/Off 반복 - 3 RTC_SET 시간데이터쓰기 - 2.7 통신펑션블록 2.8 특수펑션블록 2.9 모션제어펑션블록 2.10 위치결정펑션블록 (APM) 2.11 위치결정펑션블록 (XPM) 3. 확장펑션블록 No. 펑션이름 기 능 비고 1 FOR - FOR ~ NEXT 구간을 n번실행 2 NEXT - 3 BREAK FOR ~ NEXT 구간을빠져나옴 - 4 CALL SBRT 루틴호출 - 5 SBRT CALL에의해호출될루틴지정 - 6 RET RETURN - 7 JMP LABLE 위치로점프 - 8 INIT_DONE 초기화태스크종료 - 9 END 프로그램의종료 - 259

부록 2 : ARRAY 변수

Array 변수란? Array( 배열 ) 변수란동일한데이터형 (WORD, INT, BOOL 등 ) 으로된데이터가순서대로나열된것을말합니다. 이배열을사용하면서로연관된많은정보를편리하게저장할수있습니다. 변수를어레이변수로설정하게되면데이터가저장될메모리공간에연속적으로할당되어데이터를처리하는데 있어서엑세스시간 ( 데이터를읽거나쓰는데걸리는시간 ) 을줄일수있으므로고속제어를실현할수있습니다. 어레이변수의데이터를처리할때는어레이변수이름으로사용하여여러개의데이터를동시에처리할수있으므로 경우에따라서는원소번호를지정함으로써각각의원소를처리할수있습니다. 예 ) 시스템플래그 _RTC_TIME(0..7) 의구조 NO 변수 타입 설명문 1 _RTC_TIME[0] BYTE 현재시각 [ 년도 ] 2 _RTC_TIME[1] BYTE 현재시각 [ 월 ] 3 _RTC_TIME[2] BYTE 현재시각 [ 일 ] 4 _RTC_TIME[3] BYTE 현재시각 [ 시 ] 5 _RTC_TIME[4] BYTE 현재시각 [ 분 ] 6 _RTC_TIME[5] BYTE 현재시각 [ 초 ] 7 _RTC_TIME[6] BYTE 현재시각 [ 요일 ] 8 _RTC_TIME[7] BYTE 현재시각 [ 년대 ] 263

1. Array 변수선언 (1 차수 ) 변수선언창에서 1 테이터타입에서 ARRAY 를선택합니다. 2 배열선택창에서원소갯수및테이터타입을설정합니다. 264 264

3 메모리할당을합니다.( 자동할당도가능합니다 ) 4 초기값설정을합니다.( 선택사항 ) 265

2. Array 변수선언 (2 차수 ) 변수선언창에서 1 테이터타입에서 ARRAY 를선택합니다. 2 배열선택창에서원소갯수및테이터타입을설정합니다. 266

3 메모리할당과초기값설정을합니다.( 선택사항 ) 총 22 개 Array 변수선언됨 (2 X 11) - 2 차수 Array 변수표현어레이변수명 [1 차수원소번호,2 차수원소번호 ] 예 ) 렌즈가공위치 [0,10] 267

3. Array 변수선언 (3 차수 ) 변수선언창에서 1 테이터타입에서 ARRAY 를선택합니다. 2 배열선택창에서원소갯수및테이터타입을설정합니다. 268

3 메모리할당과초기값설정을합니다.( 선택사항 ) 총 75 개 Array 변수선언됨 (5 X 5 X 5) - 3 차수 Array 변수표현어레이변수명 [1 차수원소번호,2 차수원소번호, 3 차수원소번호 ] 예 ) 렌즈가공위치 [0,3,4]] 269

부록 3 : 사용자데이터타입

사용자데이터타입설정 - C 언어에서와같이구조화된사용자데이터타입을설정합니다. - 어레이변수와달리여러가지데이터타입이혼성된구조화데이터를설정할수있습니다 1 프로젝트창에서사용자데이터타입을선택한다. 2 데이터타입이름과설명문을작성합니다 273

2 작성된이름으로구조화된데이터변수를선언합니다. 3 변수설정창에서변수를추가하고, 변수타입에서 STRUCT 를선택합니다. 4 사용자데이터타입을선택합니다. 274

5 메모리할당과초기화설정은사용자데이터타입항목설정창에서설정합니다. 클릭 6 사용자정의데이터타입표현방법. - XGK.CPU 종류 사용자정의데이터변수명로컬변수명 275

부록 4 : ST 언어 (Structured Text)

1. 개요 ST (Structured Text) Text 언어를사용하여 PLC 의프로그램을표현. 일반범용 Text 편집기활용가능 PC의프로그램언어방식으로접근. 전산프로그래머접근용이 복잡한알고리즘구현용이함. Data Processing 처리시유리함, 프로그램간단해짐. 다양한 Open Source ( 호환성 ) 279

2. 구조 1) 프로그램형태및구성 1 2 (1) 프로젝트창 (a) ST 프로그램추가 (2) ST 편집창 (a) 텍스트언어를사용 (b) LD의변수편집창을이용하여변수추가및수정 : XGI/XGR 동일 3 (3) ST 모니터창 (a) ST 에서사용한변수를모니터링하는창 (b) 현재값변경창을이용현재값변경 4 (4) 로컬변수 (a) ST 프로그램과관련된모든변수관리 (b) 래치여부설정, 자동할당영역보기, 변수편집, 설명문추가가능 280

2) 연산자종류및주요내용 - 표현식은연산자와피연산자로구성 - 피연산자 : 정의된문자 ( 숫자, 문자, 문자열, 시간문자 ), 변수, 함수등 (1) 연산자의우선순위 번호연산기호우선순위 1 괄호로묶음 ( 표현식 ) 가장높음 2 함수계산 함수식별자 예 ) ADD(X, Y) 3 부정보수 4 지수 ** 5 곱셈나눗셈나머지 6 더하기빼기 - NOT * / MOD 7 비교 <, >, <=, >= 8 동등 ( 일치 ) 부등 ( 불일치 ) + - = <> 9 부울논리곱 &, AND 10 부울배타적논리합 XOR 11 부울논리합 OR 가장낮음 (a) 연산자우선순위순서대로수행예 ) A+B*C : B 와 C 를곱하고 A 를더함. (b) 동일한우선순위를가진연산자들은표현식의왼쪽에서오른쪽으로수행예 ) A+B-C : A 와 B 를더하고 C 를뺌. (c) 연산자가 2 개의피연산자를가질때왼쪽끝의피연산자가먼저수행예 ) SIN(A)*COS(B) : SIN(A) 실행하고 COS(B) 실행한후곱함. (d) 잘못된연산의경우 1) 0 의값으로나눌경우예 ) A/B : B 가 0 일경우 2) 피연산자가연산을위한정확한데이터타입이아닌경우예 ) ADD(1,2,3) : 숫자의데이터타입을결정할수없는경우 3) 연산결과가데이터타입값의범위를벋어난경우예 ) B*C : B, C 가 UINT 타입, 결과가 65,535 이상일경우 281

3) 연산자종류및주요내용 (a) 비실행문 ( 설명문 ) 1) // : 1 라인비실행문, 해당라인의끝까지비실행 2) (* abcd *) : 블록비실행문, 사이의내용비실행 (b) / ( 나눗셈 ) 1) 변수의타입이정수형, 실수형에따라다르게계산 2) 정수형 -> 소수점이하부분버림실수형 -> 실수값출력 (C) MOD ( 나머지 ) 1) 연산자왼쪽의값을연산자오른쪽의값으로나누었을때의나머지를결과로출력 2) 실수형 (ANY_REAL) 타입연산불가 (d) ** ( 지수 ) 1) 연산자왼쪽의값을연산자오른쪽의승수만큼곱함 2) 실수형 (ANY_REAL) 타입연산만가능 (e) <> ( 부등 ) 1) 두피연산자가같지않은지비교 2) 같지않으면출력은 1, 같으면출력은 0 이됨 282

4) 명령문종류및주요내용 - 명령문들은세미콜론 (;) 에의해마침 (1) 할당문 ( := ) (a) 할당문은왼쪽에변수, 그뒤를할당문연산자 ( := ), 마지막으로연산할표현식으로구성 (b) 펑션이름을할당문연산자왼쪽에위치시킴으로써펑션의리턴값을대입가능 (2) 선택문 (a) IF문 1) 관련부울표현식이 1의값 ( 참 ) 일경우에명령문그룹실행 2) 조건이거짓일때, ELSE가있을경우 ELSE를따르는명령문그룹실행 3) 만약 ELSEIF 조건이참인경우 ELSEIF를따르는명령문그룹실행 (b) CASE 문 1) INT 형의변수를계산하는표현식과명령문그룹리스트로구성 2) 선택자의어떤값도해당되지않으면 ELSE를뒤따르는명령문그룹이수행, ELSE가없다면어떠한명령문도수행되지않음 283

(3) 반복문 - 명령문의그룹이반복적으로수행 (a) FOR 문 1) 반복횟수가미리결정되어있는경우사용 2) 제어변수, 초기값과최종값은같은정수형 (SINT, INT, DINT) 으로나타내며반복되는문장에의해바뀌지않음 3) BY를사용하여증가값을조절가능 ( 생략시 1씩증가 ) (b) WHILE, REPEAT 문 1) 관련부울표현식이거짓일때까지반복수행 2) REPEAT 문은 UNTIL 까지최소한번은수행 (c) EXIT 문 1) 종료조건이만족되기전에반복을중단하는데사용가능 2) 중첩반복구조내에사용될경우해당 EXIT는위치한가장안쪽루프에적용 284

3. 프로그램작성 프로그램언어항목에서 ST 를선택한다. 우측과같이프로그램작성화면이나온다. 285

1) 예제프로그램 #1 아래와같이 ST 언어를이용하여프로그램을작성한다. 아래와같이프로그램에서사용되는로컬변수를작성한다. 286

PLC 에다운로드한후실행한후결과를확인한다.. 287

2) 예제프로그램 #2 우측과같이 ST 언어를이용하여 프로그램을작성한다. 아래와같이로컬변수를작성한다. 288

PLC 에다운로드한후실행한후결과를확인한다.. A,B 값을변경하면서연산결과인 NROOTS 값의변화를확인한다. 289

3) 예제프로그램 #3 우측과같이 ST 언어를이용하여 프로그램을작성한다. 아래와같이로컬변수를작성한다. 290

PLC 에다운로드한후실행한후결과를확인한다.. VAL1 의값을변경하면서 Result 값의변화를확인한다. VAL2 의값을변경하면서 RESULT2 값의변화를확인한다. 291

4) 예제프로그램 #4 우측과같이 ST 언어를이용하여 프로그램을작성한다. 아래와같이로컬변수를작성한다. 292

PLC 에다운로드한후실행한후결과를확인한다.. 2 행의 BY2 의 2->1 로변경하면기존결과와어떻게다른지확인한다. 293

5) 예제프로그램 #5 우측과같이 ST 언어를이용하여 프로그램을작성한다. 아래와같이로컬변수를작성한다. 294

PLC 에다운로드한후실행한후결과를확인한다.. 295

6) 예제프로그램 #6 아래와같이 ST 언어를이용하여프로그램을작성한다. 아래와같이로컬변수를작성한다. 296

PLC 에다운로드한후실행한후결과를확인한다.. value1 과 value2 의값을변경하면서결과값인 OutValue 값을확인한다. 297

7) 예제프로그램 #7 우측과같이 ST 언어를이용하여 프로그램을작성한다. 아래와같이로컬변수를작성한다. 298