You are on page 1of 454

Hans Berger

STEP7의 LAD와
FBD로 프로그래밍

SIMATIC S7-300/400
PLC (프로그래머블 로직 컨트롤러)

4차 개정판
STEP7 의 LAD 와 FBD 로 프로그래밍
STEP7 의 LAD 와
FBD 로 프로그래밍
PLC ( 프로그래머블 로직 컨트롤러 )
SIMATIC S 7- 300 / 400

저자 Hans Berger

4 차 개정판 , 2008 년

Siemens Industry Automation and Drive Technologies


지멘스 Industry Automation and Drive Technologies 에서 발행한 도서 목록 상세정보는
인터넷 (www.siemens.co.kr/automation) 에서 확인할 수 있습니다 .

프로그래밍 예제는 LAD와 FBD의 연산기능을 설명하고 S7 PLC사용자에게 유용한 프로그래밍 팁을


제공합니다.
책에서 설명된 프로그램 예제는 완벽한 솔루션이 아니며 향후 출시될 STEP7 신버전과 S7-300/400
신제품에서는 사용할 수 없을 지도 모릅니다. 사용자는 관련 안전 규정을 반드시 준수해야 합니다.
저자와 출판사는 책의 모든 문장과 그림을 주의 깊게 확인했지만 오류가 있을 수 도 있습니다. 출판사
와 저자는 프로그래밍 예제의 사용에 따라 발생된 손해에 대해 법적 준거를 막론하고 어떠한 책임도
지지 않습니다.

책에 관한 독자의 의견은 언제든지 환영합니다.


Siemens Industry Automation and Drive Technologies
서울특별시 강남구 역삼동 726
아세아 타워 빌딩 10층 (우)135-719
이메일 : marketingad.kr@siemens.com
인터넷 : www.siemens.co.kr/automation

ISBN 978-3-89578-297-8
4차 개정판, 2008년

발행인 : Siemens Industry Automation and Drive Technologies


ⓒ2008 by Siemens Ltd. Seoul

이 출판물과 그 안의 모든 내용은 저작권 보호를 받습니다. 판권 소유.


출판사의 동의 없이 저작권법의 규정을 위반하고 이 출판물을 이용하는 행위는 금지되어 있으며 법적
처벌을 받게 됩니다. 특히 복사, 번역, 영인화 또는 기타 가공을 비롯하여 전자 장치를 이용하여 저장
하거나 처리하는 행위, 또한 본문을 발췌하여 사용하는 행위가 여기에 해당합니다.
서문

서문

SIMATIC 자동화시스템은 필드레벨에서 공정 시 세가지 언어중 하나의 방식으로 볼 수 있으며


제어까지 모든 하위시스템을 단일 구조로 연결합 수시로 전환이 가능합니다. 이STEP 7에서 제공
니다. 통합자동화 (TIA)개념은 하드웨어 구성과 하는 다양한 기능은 STEP 7의 사용을 보다 편리
프로그래밍, 데이터관리, 통신 등을 통합하여 보 하게 합니다.
다 완벽한 자동화 시스템 구현을 가능하게 합니
이 설명서에서는 S7-300/400을 위한 LAD 및
다. 정교한 통신 메커니즘은 PLC와 HMI시스템,
FBD 프로그래밍 언어 사용법을 설명합니다. 이
분산 I/O 간의 조화로운 상호작용을 가능하게 합
해를 돕기 위해서 S7-300/400 자동화 시스템에
니다.
관한 설명과 통신, 프로그램 작성에 필요한 다양
SIMATIC의 기본 도구인 STEP 7은 전체 통합 한 정보를 제공합니다. 논리 연산이나 스토리지
자동화(TIA)를 위한 가교의 역할을 합니다. STEP 함수와 같은 이진 제어의 ‘기본 기능’ 에 대한

7은 SIMATIC S7, SIMATIC C7 및 SIMATIC 설명은 초보자에게 특히 유용합니다. 디지털 함

WinAC 자동화 시스템의 구성 및 프로그래밍에 수에서는 디지털 값의 결합 원리, 즉 기본 연산,


비교 또는 데이터 유형 변환 등에 관해 설명합니
사용됩니다. Microsoft Windows를 운영 체제로
다.
채택함에 따라 사무 환경에 널리 이용되는 사용
자 데스크탑으로 PC를 표준화할 수 있게 되었습 이 설명서에서는 LAD와 FBD를 이용하여 프로
니다. 그램 처리(프로그램 흐름)를 제어하고 구조적 프
로그램을 설계하는 방법을 보여 줍니다. 주기적
STEP7은 DIN EN 6.1131-3 규격을 (따르는
인 처리를 위한 메인 프로그램과 초기 가동, 하드
STL(구문 목록-어셈블러와 유사한 언어), LAD(
웨어 오류 및 장애 발생시 처리용 프로그램, 이벤
래더로직-릴레이 로직 다이어어그램과 유사한
트 처리용 프로그램 등을 구조적으로 설계할 수
표현방식), FBD (기능 블록 다이어그램)와 옵션
도 있습니다. 이 책에는 LAD와 FBD를 위한 시스
패키지인 S7-SCL (구조적 제어 언어- 파스칼과
템 함수 및 함수 집합에 대한 개괄적 설명이 제공
유사한 상위레벨 언어)을 블록프로그래밍을 위한
됩니다. 본문에서는 STEP 7 프로그래밍 소프트
언어로 제공합니다. S7-GRAPH(순차제어)와
웨어 버전 5.4 서비스 팩 3에 대해 설명합니다.
S7-HiGraph(상태전환 다이어그램을 이용한 프
로그래밍), CFC(FBD와 유사) 등의 옵션 언어를
사용하여 프로그램을 작성할 수도 있습니다. 사
Erlangen, 2008년 5월
용자는 LAD와 FBD, STL 중에서 하나의 방식으
로 로직을 작성할 수 있습니다. 작성된 로직은 다 Hans Berger

5
이 책의 구성

S7-300/400 프로그래밍 컨텍터 제어 시스템과 숫자 및 디지털 피연산자 처리


가능 로직 컨트롤러 개요 비교 가능한 PLC함수

서문 기본 함수 디지털 함수

1 SIMATIC S7-300/400 4 2진 논리 연산 9 비교 함수
프로그래밍 가능 컨트롤러
AND, OR 및 Exclusive OR 함수 INT, DINT 및 REAL 등의
프로그래밍 가능 컨트롤러의 데이터 유형에 따른 비교
네스팅 함수
구조 (S7-300/400의 하드웨어
구성 요소)
메모리 영역 10 산술 연산
5 메모리 함수
분산 I/O (프로피버스 DP)
INT, DINT 및 REAL 수를
통신 (서브넷) 할당, 설정 및 리셋 이용한 4-함수 계산
모듈 주소 미드라인 출력
주소 영역 에지 평가
컨베이어 벨트 제어 시스템 예제
11 산술 함수

2 STEP 7 프로그래밍 삼각 함수
소프트웨어 ARC 연산
6 이동 함수
제곱, 제곱근
프로젝트 수정
로드 및 전송 함수 추출, 지수화, 로그
스테이션 구성
데이터 전송용
네트워크 구성 시스템 함수
심볼 편집기
LAD/FBD 프로그램 편집기 12 변환 함수

온라인 모드 데이터 유형 변환
LAD 및 FBD 프로그램 테스트 7 타이머
여집합 형성
다섯 가지 특성을 가진
SIMATIC 타이머 시작,
리셋 및 스캔
3 SIMATIC S7 IEC 타이머 함수 13 시프트 함수
프로그램
전환 및 회전
프로그램 처리
블록 유형
8 카운터
코드 블록 및
14 워드 로직
데이터 블록 프로그래밍 SIMATIC 카운터
변수 주소 지정, 업 카운팅, 다운 카운팅, 카운터 AND, OR 또는
상수 표현식, 설정, 리셋 및 스캔 Exclusive OR 워드 로직
데이터 유형 설명 IEC 카운터 함수 연산 처리

6
프로그램 실행 제어 사용자 프로그램 처리 LAD 및 FBD 보완,
블록 함수 블록 라이브러리, 함수 개요

프로그램 흐름 제어 프로그램 처리 부록

15 상태 비트 20 메인 프로그램 24 그래픽 프로그래밍 보완

이진 플래그, 디지털 플래그 프로그램 구조 블록 보호


상태 비트 설정 및 평가 스캔 사이클 제어 KNOW_HOW_PROTECT
EN/ENO 메커니즘 (응답 시간, 시작 정보, 간접 주소 지정,
백그라운드 스캔) 포인터: 일반 사항
프로그램 함수 ‘메시지 프레임 예제’ 에 대한
프로피버스 및 프로피넷 통신 간단한 설명
16 점프 함수
GD 통신
무조건 점프
S7 및 S7
RLO = ‘1’ 경우 점프
기본 통신 25 블록 라이브러리
RLO = ‘0’ 경우 점프
조직 블록
21 인터럽트 처리 시스템 함수 블록
하드웨어 인터럽트 IEC 함수 블록
17 마스터 컨트롤 릴레이(MCR)
워치독 인터럽트 S5-S7 변환 블록
MCR 종속성, 실제 시간 인터럽트
TI/S7 변환 블록
MCR 영역, 시간 지연 인터럽트
DPV1 인터럽트 PID 컨트롤 블록
MCR 구역
멀티프로세서 인터럽트 통신 블록
인터럽트 이벤트 처리

18 블록 함수
22 재가동 특성 26 함수 세트 LAD
블록 호출,
블록 끝 콜드 리스타트, 웜 리스타트, 기본 함수
임시 및 정지 로컬 데이터, 로컬 핫 리스타트 디지털 함수
인스턴스 STOP, HOLD, 메모리 리셋 프로그램 흐름 제어
데이터 피연산자 액세스 모듈 파라미터화
데이터 블록 열기

23 오류 처리 27 함수 세트 FBD
19 블록 파라미터
동기 오류 기본 함수
형식 파라미터, 실제 파라미터 비동기 에러 디지털 함수
선언 및 할당, ‘파라미터 전달’ 시스템 진단 프로그램 흐름 제어

7
프로그래밍 예제 살펴보기

이 책에서는 다양한 형식으로 LAD 및 FBD 프로 이 두 라이브러리에는 기본적인 그래픽 표현을 보


그래밍 언어의 사용 예를 보여 줍니다. 모든 프로그 여주는 8개 프로그램이 들어 있습니다. 구체적인 예
래밍 예제를 출판사 웹사이트(www.publicis.de/ 제 2개는 함수, 함수 블록과 로컬 인스턴스의 프로
books)에서 다운로드할 수 있습니다. 라이브러리에 그래밍(컨베이어 예제) 및 데이터 처리(메시지 프레
는 LAD_Book 및 FBD_Book 등 두 가지가 있습니다.
임 예제) 예를 보여 줍니다. 모든 예제에는 심볼과
코멘트가 포함되어 있습니다.

LAD_Book 라이브러리
데이터 유형 프로그램 처리
정의 및 애플리케이션 예제 SFC 호출 예제
FB 101 기본 데이터 유형 FB 120 20장: 메인 프로그램
FB 102 복합 데이터 유형 FB 121 21장: 인터럽트 처리
FB 103 파라미터 유형 FB 122 22장: 시동 특성
FB 123 23장: 오류 처리
기본 함수 컨베이어 예제
LAD 표현식 예제 기본 함수 및 로컬 인스턴스 예제
FB 104 4장: 직렬 및 병렬 회로 FC 11 벨트 제어
FB 105 5장: 메모리 기능 FC 12 카운터 제어
FB 106 6장: 이동 연산 FB 20 피드
FB 107 7장: 타이머 기능 FB 21 컨베이어 벨트
FB 108 8장: 카운터 기능 FB 22 카운터 요소
디지털 함수 메시지 프레임 예제
LAD 표현식 예제 데이터 처리 예제
FB 109 9장: 비교 함수 UDT 51 프레임 헤더의 데이터 구조
FB 110 10장: 산술연산 UDT 52 메시지의 데이터 구조
FB 111 11장: 산술 함수 FB 51 메시지 프레임 생성
FB 112 12장: 변환 함수 FB 52 메시지 프레임 저장
FB 113 13장: 시프트 함수 FC 51 시간 확인
FB 114 14장: 워드 로직 FC 52 간접 주소 지정 방식을 이용한 데이터 영역 복사
프로그램 흐름 제어 일반 예제
LAD 표현식 예제
FB 115 15장: 상태 비트 FC 41 범위 모니터
FB 116 16장: 점프 함수 FC 42 제한 값 감지
FB 117 17장: 마스터 컨트롤 릴레이 FC 43 복합 이익 계산
FB 118 18장: 블록 함수 FC 44 더블 워드 방식의 엣지신호 판단
FB 119 19장: 블록 파라미터

8
공급되는 라이브러리는 압축파일로 되어 있습니 프로그램을 사용해 보려면 하드웨어 구성에 맞는
다. 라이브러리를 사용하기 전에 압축을 풀어야 합 프로젝트를 설정한 후 심볼 테이블을 포함한 프로그
니다. SIMATIC Manager에서 파일(FILE)→ 압축풀기 램을 라이브러리에서 프로젝트로 복사합니다. 이제
(DEARCHIVE) 메뉴 항목을 선택한 후 지침에 따라 수행 예제 프로그램을 호출하여 사용 목적에 맞게 조정한
합니다(다운로드 파일 중에서 README.TXT 참조). 후 온라인으로 테스트할 수 있습니다.

FBD_Book 라이브러리
데이터 형식 프로그램 처리
정의 및 애플리케이션 예제 SFC 호출 예제
FB 101 기본 데이터 유형 FB 120 20장: 기본 프로그램
FB 102 복합 데이터 유형 FB 121 21장: 인터럽트 처리
FB 103 파라미터 유형 FB 122 22장: 초기 가동 특성
FB 123 23장: 오류 처리
기본 함수 컨베이어 예제
FBD 표현식 예제 기본 함수 및 로컬 인스턴스 예제
FB 104 4장: 직렬 및 병렬 회로 FC 11 벨트 제어
FB 105 5장: 메모리 기능 FC 12 카운터 제어
FB 106 6장: 이동 연산 FB 20 피드
FB 107 7장: 타이머 기능 FB 21 컨베이어 벨트
FB 108 8장: 카운터 기능 FB 22 카운터 요소
디지털 함수 메시지 프레임 예제
FBD 표현식 예제 데이터 처리 예제
FB 109 9장: 비교 함수 UDT 51 프레임 헤더의 데이터 구조
FB 110 10장: 산술연산 UDT 52 메시지의 데이터 구조
FB 111 11장: 산술 함수 FB 51 메시지 프레임 생성
FB 112 12장: 변환 함수 FB 52 메시지 프레임 저장
FB 113 13장: 시프트 함수 FC 51 실제 시간 검사
FB 114 14장: 워드 로직 FC 52 간접 주소 지정 방식을 이용한 데이터
영역 복사
프로그램 흐름 제어 일반 예제
FBD 표현식 예제
FB 115 15장: 상태 비트 FC 41 범위 모니터
FB 116 16장: 점프 함수 FC 42 제한 값 감지
FB 117 17장: 마스터 컨트롤 릴레이 FC 43 복합 이익 계산
FB 118 18장: 블록 함수 FC 44 더블 워드 방식의 에지 평가
FB 119 19장: 블록 파라미터

9
STEP 7을 이용한 자동화

STEP 7을 이용한 자동화

이 두 페이지에서는 STEP 7 프
로그래밍 소프트웨어의 기본 사용
절차를 보여 줍니다.

SIMATIC Manager를 시작하고


새 프로젝트를 설정하거나 기존 프
로젝트를 엽니다. 자동화 작업을
위한 모든 데이터는 개체 형태로
프로젝트에 저장됩니다. 프로젝트
를 설정할 때는 최소한의 CPU를
가진 필수 스테이션을 설치하여 누
적 데이터를 보관할 컨테이너를 만
들어야 합니다. 그러면 사용자 프
로그램용 컨테이너도 생성됩니다.
프로젝트에서 프로그램 컨테이너
를 직접 만들 수도 있습니다.

다음 단계에서는 하드웨어를 구
성하고, 가능하다면 통신 연결도
설정합니다. 그런 다음 프로그램
을 생성하여 테스트합니다.

자동화 데이터 생성에는 정해진


순서가 따로 없고 일반적인 지침이
있을 뿐입니다. 즉, 개체(데이터)
를 처리하려는 경우에는 개체가 있
어야 하며, 개체를 삽입하려는 경
우에는 관련 컨테이너를 사용할 수
있어야 한다는 것입니다.

언제든지 프로젝트 처리 도중에


개입하여 필요한 작업을 수행하고
SIMATIC Manager를 다시 시작할
때 아무 위치에서나 하던 작업을
계속할 수 있습니다.

10
STEP 7을 이용한 자동화

11
목차

목차

프로그래밍 예제 살펴보기 . . . . . 8 2 STEP 7 프로그래밍 소프트웨어49


2.1 STEP 7 기본 패키지 . . . . 49
2.1.1 설치 . . . . . . . . . . . . . . . . 49
소개 . . . . . . . . . . . . . . .18
2.1.2 오토메이션 라이선스 매니저 . 50
1 SIMATIC S7-300/400 2.1.3 SIMATIC Manager . . . . . . . 50
프로그래머블 컨트롤러 . . .19 2.1.4 프로젝트 및 라이브러리 . . . . 53
2.1.5 다중 프로젝트 . . . . . . . . . . 54
1.1 프로그래머블 컨트롤러의
2.1.6 온라인 도움말 . . . . . . . . . . 54
구조 . . . . . . . . . . . 19
2.2 프로젝트 편집 . . . . . . . 54
1.1.1 구성요소 . . . . . . . . . . . . . 19
1.1.2 S7-300 스테이션 . . . . . . . . 19 2.2.1 프로젝트 생성 . . . . . . . . . . 55
1.1.3 S7-400 스테이션 . . . . . . . . 21 2.2.2 관리, 재조직, 아카이브 저장 . 56
1.1.4 SIMATIC 이중화 . . . . . . . . . 22 2.2.3 프로젝트 버전 . . . . . . . . . . 57
1.1.5 안전 관련 SIMATIC . . . . . . . 23 2.2.4 다중 프로젝트의 생성 및 편집 57
1.1.6 CPU 메모리 영역 . . . . . . . . 24 2.3 스테이션 구성 . . . . . . . 58
1.2 분산 I/O . . . . . . . . . 28 2.3.1 모듈 배열 . . . . . . . . . . . . . 60
1.2.1 PROFIBUS DP. . . . . . . . . . 28 2.3.2 모듈의 주소 지정 . . . . . . . . 60
1.2.2 프로피넷 IO . . . . . . . . . . . 30 2.3.3 모듈의 파라미터 지정 . . . . . 61
1.2.3 액추에이터/센서 인터페이스 . 31 2.3.4 MPI를 이용한 모듈의
1.2.4 게이트웨이 . . . . . . . . . . . . 32 네트워크 구축 . . . . . . . . . . 61
2.3.5 모듈 모니터링 및 수정 . . . . . 62
1.3 통신 . . . . . . . . . . . 35
2.4 네트워크 구성 . . . . . . . 62
1.3.1 소개 . . . . . . . . . . . . . . . . 35
1.3.2 서브넷 . . . . . . . . . . . . . . . 36 2.4.1 네트워크 보기의 구성 . . . . . 63
1.3.3 통신 서비스 . . . . . . . . . . . 40 2.4.2 네트워크 구성 도구를
1.3.4 연결 . . . . . . . . . . . . . . . . 42 이용한 분산 I/O 구성. . . . . . 64
2.4.3 연결 구성 . . . . . . . . . . . . . 65
1.4 모듈 주소. . . . . . . . . 42 2.4.4 게이트웨이 . . . . . . . . . . . . 68
1.4.1 신호 경로 . . . . . . . . . . . . . 42 2.4.5 연결 데이터 로드 . . . . . . . . 69
1.4.2 슬롯 주소 . . . . . . . . . . . . . 42 2.4.6 다중 프로젝트에서
1.4.3 논리 주소 . . . . . . . . . . . . . 43 프로젝트 일치 . . . . . . . . . . 69
1.4.4 모듈 시작 주소. . . . . . . . . . 44 2.5 S7 프로그램 생성 . . . . . 71
1.4.5 진단 주소 . . . . . . . . . . . . . 44
1.4.6 버스 노드의 주소 . . . . . . . . 44 2.5.1 소개 . . . . . . . . . . . . . . . . 71
2.5.2 심볼 테이블 . . . . . . . . . . . 72
1.5 주소 영역. . . . . . . . . 45 2.5.3 프로그램 편집기. . . . . . . . . 73
1.5.1 사용자 데이터 영역 . . . . . . . 45 2.5.4 재결선 . . . . . . . . . . . . . . . 77
1.5.2 프로세스 이미지. . . . . . . . . 46 2.5.5 주소 우선 순위 . . . . . . . . . 78
1.5.3 일관된 사용자 데이터 . . . . . 47 2.5.6 참조 데이터 . . . . . . . . . . . 78
1.5.4 비트 메모리 . . . . . . . . . . . 47 2.5.7 언어 설정 . . . . . . . . . . . . . 80

12
목차

2.6 온라인 모드 . . . . . . . . 81 3.5.5 복합 데이터 형식 . . . . . . . 127


2.6.1 PLC 연결 . . . . . . . . . . . . . 82 3.5.6 파라미터 유형 . . . . . . . . . 130
2.6.2 사용자 프로그램 보호 . . . . . 82 3.5.7 사용자 데이터 형식. . . . . . 130
2.6.3 CPU 정보 . . . . . . . . . . . . . 83
2.6.4 사용자 프로그램을 CPU에
로드 . . . . . . . . . . . . . . . . 84 기본 함수 . . . . . . . . . . . .132
2.6.5 블록 처리 . . . . . . . . . . . . . 84 4 이진 논리 연산. . . . . . .133
2.7 프로그램 테스트 . . . . . . 87 4.1 직렬 및 병렬 회로(LAD) . . 133
2.7.1 하드웨어 진단 . . . . . . . . . . 87 4.1.1 NO 접점 및 NC 접점 . . . . . 133
2.7.2 정지 모드로 전환 원인 파악 . 87 4.1.2 직렬 회로 . . . . . . . . . . . . 134
2.7.3 변수 모니터링 및 수정 . . . . . 88 4.1.3 병렬 회로 . . . . . . . . . . . . 135
2.7.4 변수 강제 출력. . . . . . . . . . 90 4.1.4 이진 논리 연산 조합 . . . . . 135
2.7.5 주변 출력장치의 활성화 . . . . 91 4.1.5 논리 연산 결과 부정 . . . . . 136
2.7.6 테스트 및 프로세스 작업 . . . 91
2.7.7 프로그램 상태 . . . . . . . . . . 92 4.2 이진 논리 연산(FBD) . . . 137
2.7.8 데이터 주소의 4.2.1 기본 이진 논리 연산 . . . . . 137
모니터링 및 수정 . . . . . . . . 93 4.2.2 이진 논리 연산 조합 . . . . . 140
4.2.3 논리 연산 결과 부정 . . . . . 141
3 SIMATIC S7 프로그램. . . . 95
4.3 센서 유형 고려 . . . . . . 142
3.1 프로그램 처리 . . . . . . . 95
3.1.1 프로그램 처리 방법 . . . . . . . 95 5 메모리 기능 . . . . . . . .144
3.1.2 우선 순위 등급. . . . . . . . . . 96 5.1 LAD 코일 . . . . . . . . 144
3.1.3 프로그램 처리를 위한 지정 . . 97
5.1.1 단일 코일 . . . . . . . . . . . . 144
3.2 블록 . . . . . . . . . . . 99 5.1.2 셋 코일 및 리셋 코일 . . . . . 144
3.2.1 블록 유형 . . . . . . . . . . . . 100 5.1.3 메모리 연산 박스 . . . . . . . 146
3.2.2 블록 구조 . . . . . . . . . . . . 101 5.2 FBD 연산 박스 . . . . . . 149
3.2.3 블록 속성 . . . . . . . . . . . . 102
5.2.1 할당 . . . . . . . . . . . . . . . 149
3.2.4 블록 인터페이스. . . . . . . . 105
5.2.2 셋 연산 박스 및
3.3 코드 블록 프로그래밍 . . . 106 리셋 연산 박스 . . . . . . . . 149
3.3.1 블록 열기 . . . . . . . . . . . . 106 5.2.3 메모리 연산 박스 . . . . . . . 151
3.3.2 블록 창 . . . . . . . . . . . . . 107 5.3 미드라인 출력 . . . . . . 153
3.3.3 개요 창 . . . . . . . . . . . . . 109
5.3.1 LAD의 미드라인 출력 . . . . 154
3.3.4 프로그램 작성 네트워크 . . . 109
5.3.2 FBD의 미드라인 출력 . . . . 154
3.3.5 주소 지정 . . . . . . . . . . . . 110
3.3.6 LAD 구성요소 편집 . . . . . . 111 5.4 엣지신호 판단 . . . . . . 154
3.3.7 FBD 구성요소 편집 . . . . . . 113 5.4.1 엣지신호 판단 작동 원리 . . 154
3.4 데이터 블록(DB) 프로그래밍 115 5.4.2 LAD의 엣지신호 판단 . . . . 156
5.4.3 FBD의 엣지신호 판단 . . . . 157
3.4.1 데이터 블록(DB) 생성 . . . . 115
3.4.2 데이터 블록(DB) 유형 . . . . 116 5.5 이진 계수기 . . . . . . . 158
3.4.3 블록 창 및 보기 . . . . . . . . 116 5.5.1 LAD의 해결책 . . . . . . . . . 158
3.5 변수, 상수 및 데이터 형식 . 118 5.5.2 FBD의 해결책 . . . . . . . . . 158
3.5.1 변수와 관련된 일반 사항 . . 118 5.6 컨베이어 제어 시스템의 예 . 160
3.5.2 변수 주소 지정. . . . . . . . . 119
3.5.3 데이터 형식의 개요 . . . . . . 121 6 이동 연산 . . . . . . . . .165
3.5.4 기본 데이터 형식 . . . . . . . 122 6.1 일반. . . . . . . . . . . 165

13
목차

6.2 MOVE 연산 박스. . . . . . 165 8.5 IEC 카운터 . . . . . . . 192


6.2.1 MOVE 연산 박스 처리 . . . . 165 8.5.1 상향 카운터 SFB 0 CTU. . . 192
6.2.2 피연산자 이동 . . . . . . . . . 168 8.5.2 하향 카운터 SFB 1 CTD. . . 192
6.2.3 상수 이동 . . . . . . . . . . . . 169 8.5.3 상향/하향 카운터
6.3 데이터 전송용 시스템 함수 . 169 SFB 2 CTUD. . . . . . . . . . 192

6.3.1 ANY 포인터 . . . . . . . . . . 170 8.6 카운터 요소 예. . . . . . 193


6.3.2 데이터 영역 복사 . . . . . . . 170
6.3.3 인터럽트 불가
데이터 영역 복사 . . . . . . . 171 디지털 함수 . . . . . . . . . . 198
6.3.4 데이터 영역 채우기 . . . . . . 171 9 비교 연산 . . . . . . . . 199
6.3.5 로드 메모리에서 읽기 . . . . 171
6.3.6 로드 메모리에 쓰기 . . . . . . 172 9.1 비교 연산 처리. . . . . . 199
9.2 비교 연산 설명. . . . . . 201
7 타이머 . . . . . . . . . . 175
7.1 타이머 프로그래밍 . . . . . 175 10 연산 함수 . . . . . . . . 203

7.1.1 일반적인 타이머 표시 . . . . 175 10.1 연산 함수 처리. . . . . . 203


7.1.2 타이머 시작 . . . . . . . . . . 176 10.2 데이터 형식 INT 계산 . . . 205
7.1.3 지속 시간 지정. . . . . . . . . 176 10.3 데이터 형식 DINT 계산 . . 206
7.1.4 타이머 재설정 . . . . . . . . . 178
7.1.5 타이머 검사 . . . . . . . . . . 178 10.4 데이터 형식 REAL 계산 . . 206
7.1.6 타이머 연산 순서 . . . . . . . 179 11 산술 연산 . . . . . . . . 208
7.1.7 Rung에 타이머
연산 박스 사용(LAD) . . . . . 179 11.1 산술 연산 처리. . . . . . 208
7.1.8 논리 회로에 타이머 11.2 삼각 함수 . . . . . . . . 210
연산 박스 사용(FBD) . . . . . 179
11.3 ARC 연산 . . . . . . . . 210
7.2 펄스 타이머. . . . . . . . 180
11.4 기타 산술 연산. . . . . . 210
7.3 확장 펄스 타이머 . . . . . 181
12 변환 기능 . . . . . . . . 213
7.4 온-딜레이 타이머 . . . . . 182
12.1 변환 기능 처리. . . . . . 213
7.5 정전 유지 온-딜레이 타이머. 183
12.2 INT 및 DINT 수의 변환 . . 215
7.6 오프-딜레이 타이머 . . . . 184
12.3 BCD 수 변환 . . . . . . 216
7.7 IEC 타이머 . . . . . . . . 185
12.4 REAL 수 변환 . . . . . . 216
7.7.1 펄스 타이머 SFB 3 TP . . . . 185
7.7.2 온-딜레이 타이머 12.5 기타 변환 함수. . . . . . 218
SFB 4 TON. . . . . . . . . . . 185
13 시프트 연산 . . . . . . . 219
7.7.3 오프-딜레이 타이머
SFB 5 TOF . . . . . . . . . . . 186 13.1 시프트 연산 처리. . . . . 219

8 카운터 . . . . . . . . . . 187 13.2 시프트 . . . . . . . . . 221

8.1 카운터 프로그래밍 . . . . . 187 13.3 회전 . . . . . . . . . . 222

8.2 카운터 설정 및 재설정 . . . 190 14 워드 논리 . . . . . . . . 224


8.3 카운팅 . . . . . . . . . . 190 14.1 워드 논리 연산 처리 . . . 224
8.4 카운터 검사. . . . . . . . 191 14.2 워드 논리 연산 설명 . . . 226

14
목차

프로그램 흐름 제어 . . . . . . . 227 데이터 블록(DB) 생성. . . . 260


18.3.3 데이터 블록(DB) 삭제 . . . . 261
15 상태 비트 . . . . . . . . 228 18.3.4 데이터 블록(DB) 테스트. . . 261
15.1 상태 비트 설명 . . . . . . 228
19 블록 파라미터 . . . . . . .262
15.2 상태 비트 설정 . . . . . . 229 19.1 블록 파라미터 일반 사항 . . 262
15.3 상태 비트 평가 . . . . . . 231
19.1.1 블록 파라미터 정의. . . . . . 262
15.4 이진 결과 사용 . . . . . . 231 19.1.2 블록 파라미터 처리. . . . . . 262
15.4.1 이진 결과 BR 설정 . . . . . . 231 19.1.3 블록 파라미터 선언. . . . . . 262
15.4.2 메인 Rung, 19.1.4 함수 값 선언 . . . . . . . . . . 263
EN/ENO 동작원리 . . . . . . 233 19.1.5 블록 파라미터 초기화 . . . . 264
15.4.3 사용자 작성 블록의 ENO . . 233 19.2 형식 파라미터 . . . . . . 264
16 Jump 연산 . . . . . . . 235 19.3 실제 파라미터 . . . . . . 267
16.1 프로세서 처리 . . . . . . 235 19.4 블록 파라미터 ‘전달’ . . 270
16.2 무조건 점프 . . . . . . . 236 19.5 예. . . . . . . . . . . . 271
16.3 RLO = ‘1’ 인 경우 점프 . 236 19.5.1 컨베이어 벨트 예 . . . . . . . 271
19.5.2 카운터 요소 예 . . . . . . . . 271
16.4 RLO = ‘0’ 인 경우 점프 . 236 19.5.3 공급 예 . . . . . . . . . . . . . 272
17 마스터 제어 릴레이 . . . . 239
17.1 MCR 종속성 . . . . . . . 239 프로그램 처리 . . . . . . . . . .280
17.2 MCR 영역 . . . . . . . . 240
20 메인 프로그램 . . . . . . .281
17.3 MCR 구역 . . . . . . . . 240
20.1 프로그램 조직 . . . . . . 281
17.4 I/O 비트 SET/RESET . . . 241
20.1.1 프로그램 구조 . . . . . . . . . 281
18 블록 함수 . . . . . . . . 244 20.1.2 프로그램 조직 . . . . . . . . . 282
18.1 프로그래밍 블록의 기능 . . 244 20.2 스캔 사이클 제어 . . . . . 283
18.1.1 블록 호출: 일반 . . . . . . . . 245 20.2.1 프로세스 이미지 업데이트 . 283
18.1.2 호출 연산 박스. . . . . . . . . 246 20.2.2 스캔 사이클 모니터링 시간 . 285
18.1.3 CALL 코일/연산 박스 . . . . 248 20.2.3 최소 스캔 사이클 시간,
18.1.4 블록 종료 함수. . . . . . . . . 249 백그라운드 스캔 . . . . . . . 286
18.1.5 임시 로컬 데이터 . . . . . . . 249 20.2.4 응답 시간 . . . . . . . . . . . . 286
18.1.6 정적 로컬 데이터 . . . . . . . 250 20.2.5 시작 정보 . . . . . . . . . . . . 288
18.2 데이터 블록(DB)의 기능 . . 254 20.3 프로그램 함수 . . . . . . 289
18.2.1 2개의 데이터 블록(DB) 20.3.1 실제 시간 . . . . . . . . . . . . 289
레지스터 . . . . . . . . . . . . 254 20.3.2 시스템 클록 읽기 . . . . . . . 292
18.2.2 데이터 피연산자 액세스 . . . 255 20.3.3 런타임 미터 . . . . . . . . . . 293
18.2.3 데이터 블록(DB) 열기 . . . . 256 20.3.4 CPU 메모리 압축 . . . . . . . 293
18.2.4 데이터 주소 지정의 특이 사항257 20.3.5 대기와 중지 . . . . . . . . . . 294
18.3 데이터 블록(DB)용 시스템 함수 . 20.3.6 멀티프로세싱 모드 . . . . . . 294
258 20.3.7 OB 프로그램 런타임의 결정 295
20.3.8 프로그램 보호 변경. . . . . . 298
18.3.1 작업 메모리에
데이터 블록(DB) 생성. . . . 259 20.4 분산 I/O를 통한 통신 . . . 299
18.3.2 로드 메모리에 20.4.1 프로피버스 DP 주소 지정 . . 299

15
목차

20.4.2 프로피버스 DP 구성 . . . . . 304 21 인터럽트 처리 . . . . . . 372


20.4.3 프로피버스 DP용 특별 함수. 311 21.1 일반 사항 . . . . . . . . 372
20.4.4 프로피넷 IO 주소 지정 . . . . 317
20.4.5 프로피넷 IO의 구성 . . . . . . 319 21.2 인터럽트 시간 . . . . . . 373
20.4.6 프로피넷 IO의 특수 함수 . . 322 21.2.1 인터럽트 시간의 처리 . . . . 374
20.4.7 분산 I/O용 시스템 블록 . . . 327 21.2.2 STEP 7에서 인터럽트 시간의 구성
20.5 글로벌 데이터 통신 . . . . 334 375
21.2.3 인터럽트 시간용 시스템 함수 375
20.5.1 기본 사항 . . . . . . . . . . . . 334
20.5.2 GD 통신의 구성 . . . . . . . . 336 21.3 인터럽트 지연시간 . . . . 377
20.5.3 데이터 전송용 함수 . . . . . . 338 21.3.1 인터럽트 지연시간의 처리 . 377
20.6 S7 기본 통신 . . . . . . . 339 21.3.2 STEP 7에서
인터럽트 지연시간의 구성 . 378
20.6.1 스테이션 내부 S7 기본 통신 339 21.3.3 인터럽트 지연시간용
20.6.2 스테이션 내부 S7 기본 통신용 시스템 함수 . . . . . . . . . . 379
시스템 함수 . . . . . . . . . . 340
20.6.3 스테이션 외부 S7 기본 통신. 341 21.4 워치독 인터럽트 . . . . . 380
20.6.4 스테이션 외부 S7 기본 통신용 21.4.1 워치독 인터럽트의 처리 . . . 380
시스템 함수 . . . . . . . . . . . 342 21.4.2 STEP 7에서
20.7 S7 통신 . . . . . . . . . 345 워치독 인터럽트의 구성 . . . 381
20.7.1 기본 사항 . . . . . . . . . . . . 345 21.5 하드웨어 인터럽트 . . . . 382
20.7.2 양방향 데이터 교환 . . . . . . 347 21.5.1 하드웨어 인터럽트의 생성 . 382
20.7.3 일방향 데이터 교환 . . . . . . 349 21.5.2 하드웨어 인터럽트의 실행 . 383
20.7.4 인쇄 데이터의 전송 . . . . . . 349 21.5.3 STEP 7에서 하드웨어
20.7.5 제어 함수 . . . . . . . . . . . . 350 인터럽트의 구성. . . . . . . . 383
20.7.6 모니터링 함수 . . . . . . . . . 351
21.6 DPV1 인터럽트 . . . . . 385
20.8 IE 통신. . . . . . . . . . 354
21.7 멀티프로세서 인터럽트 . . 385
20.8.1 기본 사항 . . . . . . . . . . . . 354
21.8 동기 사이클 인터럽트 . . . 387
20.8.2 연결의 생성과 해제 . . . . . . 357
20.8.3 TCP 네이티브 또는 ISO-on-TCP 21.8.1 동기 사이클 인터럽트의 처리 387
를 사용한 데이터 전송 . . . . 358 21.8.2 프로세스 이미지의
20.8.4 UDP를 사용한 데이터 전송 . 360 등시성 업데이트. . . . . . . . 388
21.8.3 STEP 7에서 동기 사이클
20.9 S7-300C를 사용하는
인터럽트의 구성. . . . . . . . 388
일대일 통신. . . . . . . . 361
21.9 인터럽트 이벤트의 처리 . . 389
20.9.1 기본 사항 . . . . . . . . . . . . 361
20.9.2 ASCII 드라이버와 21.9.1 인터럽트 활성화 및 비활성화 389
3964(R) 프로시저 . . . . . . . 362 21.9.2 인터럽트의 지연과 활성화 . 390
20.9.3 RK512 컴퓨터 커플링 . . . . 364 21.9.3 추가 인터럽트 정보의 판독 . 390
20.10 실행 모드에서 22 시동 특성 . . . . . . . . 393
하드웨어 구성(CiR) . . . . 367
22.1 일반 사항 . . . . . . . . 393
20.10.1구성 변경을 위한 준비 . . . . 368
20.10.2구성 변경 . . . . . . . . . . . . 369 22.1.1 작동 모드 . . . . . . . . . . . . 393
20.10.3구성 로드 . . . . . . . . . . . . 369 22.1.2 HOLD 모드 . . . . . . . . . . . 393
20.10.4CiR 동기화 시간. . . . . . . . 370 22.1.3 출력 모듈의 비활성화 . . . . 394
20.10.5프로그램 실행에 미치는 영향370 22.1.4 조직 블록 재가동 . . . . . . . 394
20.10.6CiR 프로세스의 제어 . . . . . 370 22.2 시동 . . . . . . . . . . 395

16
목차

22.2.1 정지 모드 . . . . . . . . . . . . 395 24.2 간접 주소 지정 . . . . . . 427


22.2.2 메모리 초기화 . . . . . . . . . 396
24.2.1 포인터: 일반 사항. . . . . . . 427
22.2.3 공장 설정의 복구 . . . . . . . 396
24.2.2 영역 포인터 . . . . . . . . . . 427
22.2.4 정전 유지 . . . . . . . . . . . . 396
22.2.5 파라미터화 재가동 . . . . . . 397 24.2.3 DB 포인터 . . . . . . . . . . . 429
24.2.4 ANY 포인터 . . . . . . . . . . 429
22.3 재가동의 종류 . . . . . . 397
24.2.5 ‘변수’ ANY 포인터 . . . . . 430
22.3.1 START-UP 모드 . . . . . . . 397
22.3.2 콜드 리스타트 . . . . . . . . . 398 24.3 ‘메시지 프레임 예제’ 에
22.3.3 웜 리스타트 . . . . . . . . . . 398 대한 간단한 설명 . . . . . 430
22.3.4 핫 리스타트 . . . . . . . . . . 400
25 블록 라이브러리 . . . . . .434
22.4 모듈 주소 설정 . . . . . . 401
25.1 조직 블록 . . . . . . . . 434
22.5 모듈 파라미터화 . . . . . 404
25.2 시스템 함수 블록 . . . . . 435
22.5.1 모듈 파라미터화에
대한 일반 사항. . . . . . . . . 404 25.3 IEC 함수 블록 . . . . . . 438
22.5.2 모듈 파라미터 지정을 위한 25.4 S5-S7 변환 블록 . . . . . 439
시스템 블록 . . . . . . . . . . 406
22.5.3 데이터 기록 전송용 블록 . . 408 25.5 TI-S7 변환 블록 . . . . . 441

23 오류 처리 . . . . . . . . 411 25.6 PID 컨트롤 블록 . . . . . 441

23.1 동기 에러 . . . . . . . . 411 25.7 통신 블록 . . . . . . . . 441


23.2 동기 에러 처리 . . . . . . 413 25.8 기타 블록 . . . . . . . . 442
23.2.1 오류 필터 . . . . . . . . . . . . 414 25.9 SIMATIC_NET_CP. . . . . 442
23.2.2 동기 에러 마스킹 . . . . . . . 414
25.10 이중화 IO (V1) . . . . . . 443
23.2.3 동기 에러 마스킹 해제 . . . . 414
23.2.4 오류 레지스터 읽기 . . . . . . 415 25.11 이중화 IO CGP . . . . . . 443
23.2.5 대체값 입력 . . . . . . . . . . 415
26 함수 세트 LAD. . . . . . .444
23.3 비동기 에러 . . . . . . . 416
26.1 기본 함수 . . . . . . . . 444
23.4 시스템 진단 . . . . . . . 418
23.4.1 진단 이벤트 및 진단 버퍼 . . 418 26.2 디지털 함수 . . . . . . . 445
23.4.2 진단 버퍼에 진단 버퍼 . . . . 419 26.3 프로그램 흐름 제어 . . . . 447
23.4.3 진단 인터럽트 검사 . . . . . . 420
23.4.4 시스템 상태 리스트 읽기 . . 420 27 함수 세트 FBD. . . . . . .448
23.5 웹 서버 . . . . . . . . . 423 27.1 기본 함수 . . . . . . . . 448
23.5.1 웹 서버 활성화. . . . . . . . . 423 27.2 디지털 함수 . . . . . . . 449
23.5.2 웹 정보 읽기 . . . . . . . . . . 423
27.3 프로그램 흐름 제어 . . . . 451
23.5.3 웹 정보 . . . . . . . . . . . . . 423

부록 . . . . . . . . . . . . . 425 색인 . . . . . . . . . . . . . .452

24 그래픽 프로그래밍 보완 . . 426


24.1 블록 보호 . . . . . . . . 426 약어 . . . . . . . . . . . . . .459

17
소개

소개

이 절에서는 SIMATIC S7-300/400을 개괄적으로 1장에서는 S7-300/400 프로그래머블 컨트롤러


설명합니다. 의 하드웨어에 대해 개괄적으로 설명하며, 2장은
STEP 7 프로그래밍 소프트웨어에 대해 설명합니
S7-300/400 프로그래머블 컨트롤러는 모듈 방식
다. 본문의 설명은 STEP 7 버전 5.4 SP3의 기능 범
으로 설계되었습니다. 구성되는 모듈은 특별한 설
위를 기준으로 합니다.
정이나 파라미터 할당 없이 CPU 근처에 중앙 집중
식 또는 분산 배치가 가능합니다. SIMATIC S7 시스 3 “SIMATIC S7 프로그램” 은 S7 프로그램에서
템에서는 분산 I/O가 시스템에 통합됩니다. 메모리 가장 중요한 요소를 소개하는 역할을 하며 프로그래
영역이 다양한 CPU는 사용자 프로그램을 처리하는 밍 언어 LAD 및 FBD를 구성하는 개별 블록의 프로
기본적인 하드웨어입니다. 로드 메모리는 완전한 그래밍을 보여 줍니다. LAD와 FBD의 함수와 연산
사용자 프로그램들을 포함하며, 지정한 시간에 실 에 대해서는 이어지는 장에서 설명합니다. 모든 설
행되어야 할 프로그램의 일부는 빠른 처리를 위해 명에는 간단한 예제가 첨부되어 있습니다.
짧은 액세스 시간이 필수인 작업 메모리에 포함됩니
다.

STEP 7은 S7-300/400용 프로그래밍 소프트웨


어이며, SIMATIC Manager는 자동화 도구입니다.
SIMATIC Manager는 Microsoft의 Windows 운영체
제를 기반으로 하는 애플리케이션이며 프로젝트 설
정에 필요한 모든 함수를 포함합니다. 필요한 경우
SIMATIC Manager는 스테이션 구성, 모듈 초기화 1 SIMATIC S7-300/400
및 프로그램 작성과 테스트를 위해 추가 도구를 시 프로그래머블 컨트롤러
작합니다. 프로그래머블 컨트롤러의 구조, 분산 I/O, 통
신, 모듈 주소, 피연산자 영역
자동화 솔루션은 STEP 7 프로그래밍 언어로 구축
2 STEP 7 프로그래밍 소프트웨어
할 수 있습니다. SIMATIC S7 프로그램은 구조화되
SIMATIC Manager, 프로젝트 처리, 스테이션
어 있으며 네트워크 또는 렁으로 이루어진 정의된
구성, 네트워크 구성, 프로그램 작성(심볼 테
함수를 포함한 블록으로 구성됩니다. 여러 우선 순
이블, 프로그램 편집기), 온라인 전환, 프로그
위 등급을 통해 현재 실행 중인 사용자 프로그램에
램 테스트
서 단계적 인터럽트를 실행할 수 있습니다. STEP 7
은 이진 변수(BOOL 데이터 형식)부터 디지털 변수 3 SIMATIC S7 프로그램
(연산 작업의 INT 또는 REAL 데이터 형식) 그리고 우선 순위 등급으로 처리하는 프로그램, 프로
배열이나 구조(여러 형식의 변수를 조합해 하나의 그램 블록, 변수 주소 지정, LAD 및 FBD로 블
변수를 생성)와 같은 복합 데이터 형식까지 다양한 록 프로그래밍, 변수와 상수, 데이터 형식(개
데이터 형식의 변수를 사용합니다. 요)

18
1 SIMATIC S7-300/400 프로그래머블 컨트롤러

1 SIMATIC S7-300/400 프로그래머블 컨트롤러

1.1 프로그래머블 컨트롤러의 을 사용하여 중앙 랙에 확장랙을 연결할 수 있습니


구조 다.(그림 1.1 참조). 또한 스테이션에는 분산 I/O도
연결할 수 있습니다(1.2.1 “PROFIBUS DP” 참조).
1.1.1 구성요소 랙은 I/O 버스(또는 P 버스) 및 통신 버스(또는 K
SIMATIC S7-300/400은 다음 구성요소를 포함하 버스)를 이용해 모듈을 연결합니다. I/O 버스는 입력
는 모듈식 프로그래머블 컨트롤러입니다. 과 출력 신호를 고속으로 교환할 수 있으며, 통신 버
Z 랙 스는 대량의 데이터를 교환할 수 있습니다. 통신 버
모듈을 장착하고 서로 연결합니다. 스는 CPU 및 프로그래밍 기기 인터페이스(MPI)를
특수 모듈과 통신 모듈에 연결합니다.
Z 전원 공급 장치(PS)
내부 공급 전압을 제공합니다.
Z 중앙 처리 장치(CPU) 1.1.2 S7-300 스테이션
사용자 프로그램을 저장하고 처리합니다.
중앙 집중식 구성
Z 인터페이스 모듈(IM)
랙을 서로 연결합니다. S7-300 컨트롤러에서는 중앙 랙에 최대 8개의
I/O 모듈을 장착할 수 있습니다. 이런 1층 구성으로
Z 입출력 모듈(SM)
충분하지 않은 경우, CPU 313 이상 버전이 탑재된
시스템의 신호를 내부 신호 수준으로 변경하거
컨트롤러에서 다음 두 가지 구성이 가능합니다.
나 디지털과 아날로그 신호를 통해 액추에이터
를 제어합니다. Z 랙 간의 거리 1m 이내에서 IM 365를 이용하여 2
층 구성
Z 특수 모듈(FM)
복잡하거나 시간이 중요한 프로세스를 CPU와 Z 랙 간의 거리 10m 이내에서 IM 360과 IM 361을
독립적으로 실행합니다. 이용하여 최대 4개까지 확장.

Z 통신 모듈(CP) 랙 하나에 최대 8개/12개의 모듈(인터페이스 모


종속 네트워크(서브넷)에 연결을 구축합니다. 듈의 버전에 따라 다양)을 장착할 수 있습니다. 장착

Z 서브넷 가능한 모듈의 개수는 랙당 최대 허용 전류(1.2 A)

프로그래머블 컨트롤러를 서로 연결하거나 다 에 따라 제한될 수 있습니다.

른 디바이스에 연결합니다. 모듈은 P 버스와 K 버스의 기능을 결합한 백플레


프로그래머블 컨트롤러(또는 스테이션)를 여러 인 버스를 통해 서로 연결됩니다.
개의 랙으로 구성하여 버스 케이블로 연결할 수 있
습니다. 전원 공급 장치, CPU 및 I/O 모듈(SM, FM, 로컬 버스 세그먼트
CP)은 중앙 랙에 장착합니다. 중앙 랙에 I/O 모듈을 FM 356 애플리케이션 모듈을 사용한다는 점이
장착할 공간이 부족하거나 일부 또는 모든 I/O 모듈 구성의 특징입니다. FM 356은 모듈의 백플레인 버
을 중앙 랙에서 분리하려는 경우, 인터페이스 모듈 스를 ‘분할’ 하고 분할한 ‘로컬 버스 세그먼트’

19
1 SIMATIC S7-300/400 프로그래머블 컨트롤러

그림 1.1 S7-300/400의 하드웨어 구성

20
1.1 프로그래머블 컨트롤러의 구조

에 포함된 나머지 모듈을 제어할 수 있습니다. 모듈 는 STEP 7을 사용하여 구성, 파라미터 설정, 프로그
개수 및 전력 소비와 관련해 위에 언급한 제한은 로 래밍할 수 있습니다. 기술 개체와 모션 제어 구성요
컬 버스 세그먼트에도 적용됩니다. 소는 설치 후 SIMATIC Manager에 통합된 옵션 S7-
Technology 패키지를 필요로 합니다.
표준 CPU 테크놀로지 CPU는 DP 마스터 또는 DP 슬레이브
표준 CPU는 메모리 용량과 처리 속도가 다른 여 로 사용할 수 있는 프로피버스 DP 인터페이스를 포
러 버전에서 이용할 수 있습니다. 표준 CPU의 범위 함합니다. 이 CPU는 시리즈 기계 장비 제조, 특수
는 처리 속도 요구사항이 보통인 일반용 ‘초소형’ 기계 장비 제조 및 공장 건설에서 범분야적 자동화
CPU 312부터 광범위한 자동화 작업에 적합한 대형 작업에 사용합니다.
프로그램 메모리와 고속 처리 성능을 갖춘 CPU
319-3 PN/DP에 이르기까지 다양합니다. 관련 인터
고장안전(F) CPU
페이스가 탑재된 일부 CPU는 프로피버스 및 프로피
3xxF CPU는 안전 요구사항이 높은 생산 공장에
넷을 통해 분산 I/O의 중앙 제어에 사용할 수 있습니
사용합니다. 관련 프로피버스 및 프로피넷 인터페
다. 마이크로 메모리 카드(MMC)는 새롭게 도입된
이스는 PROFIsafe 버스 프로필을 이용해 안전 관련
모든 S7-300-CPU와 같은 표준 CPU의 구동에 필
분산 I/O를 구동할 수 있습니다(1.1.5 “안전 관련
요합니다. 마이크로 메모리 카드는 이전의 메모리
SIMATIC” 에서 “S7 Distributed Safety” 참조). 정
카드에 비해 새로워진 응용 가능성을 제공합니다
상 용도의 표준 모듈은 안전 관련 작동에도 사용할
(1.1.6 “CPU 메모리 영역” 참조).
수 있습니다.
현재 단종된 CPU 318은 CPU 317 및 319로 대체
할 수 있습니다.
SIPLUS S7-300
SIPLUS 제품군은 가혹 환경에서도 사용할 수 있
초소형 CPU
는 S7-300 기반의 CPU와 모듈을 제공합니다. 수평
3xxC CPU를 사용하면 초소형 프로그래머블 컨
으로 설치하면 온도 범위를 -25 ° C ~ +60 ° C로 확
트롤러를 구성할 수 있습니다. 버전에 따라 다르지
장할 수 있습니다. 또한 진동과 충격에 저항성이 높
만 기본 구성요소는 다음과 같습니다.
으며 습도, 응축 및 동결에 대한 높은 요구사항을 만
Z 통합 I/O 족합니다. 관련 모듈에 대한 기술 자료를 참조하십
디지털 및 아날로그 입력/출력 시오. SIPLUS 제품군 중 선택한 유형은 EN 50155
Z 통합 기술 함수 ‘철도 - 철도 차량에 사용되는 전자 장비(Railway
카운팅, 측정, 제어, 위치 지정 applications - Electronic equipment used on
Z 통합 통신 인터페이스 rolling stock)’ 에 따라 철도 차량에 이용할 수 있습
프로피버스 DP 마스터 또는 슬레이브, 일대일 니다.
연결(PtP)
기술 함수는 CPU에 내장된 I/O를 사용하는 시스 1.1.3 S7-400 스테이션
템 블록입니다.
중앙 집중식 구성
테크놀로지 CPU S7-400용 컨트롤러 랙은 UR1(슬롯 18개), UR2(
3xxT CPU는 개방 루프 제어 함수와 간단한 모션 슬롯 9개) 및 CR3(슬롯 4개) 버전에서 이용할 수 있
제어 함수를 조합합니다. 개방 루프 제어 구성요소 습니다. UR1 및 UR2 버전은 확장 랙으로도 사용할
는 표준 CPU와 동일하게 설계되었습니다. 이 CPU 수 있습니다. 또한 전원 공급 장치와 CPU는 랙에서

21
1 SIMATIC S7-300/400 프로그래머블 컨트롤러

모듈당 2개 이상의 슬롯을 사용합니다. 필요하다면 SIMATIC S5 모듈 연결


확장 랙을 사용하여 이용 가능한 슬롯의 개수를 늘
IM 463-2 인터페이스 모듈을 이용하면 S5 확장
릴 수 있습니다. UR1과 ER1은 슬롯을 18개까지,
유닛(EG 183U, EG 185U, EG 186U, ER 701-2, ER
UR2와 ER2는 슬롯을 9개까지 늘릴 수 있습니다.
701-3)을 S7-400에 연결하고 확장 유닛을 중앙 집
IM 460-1 및 IM 461-1 인터페이스 모듈은 5V 공 중식으로 확장할 수 있습니다. S5 확장 유닛에서 IM
급 전압을 포함해 중앙 랙에서 최대 1.5m 거리로 인 314는 링크를 처리합니다. 그러므로 S5 확장 유닛
터페이스당 1개의 확장 랙을 사용할 수 있습니다. 에 허용되는 아날로그와 디지털 모듈을 모두 사용할
또한 IM 460-1 및 IM 461-1 인터페이스 모듈을 사 수 있습니다. S7-400에는 최대 4개의 IM 463-2 인
용하면 최대 5m 이내에서 확장 랙을 4개까지 운영 터페이스 모듈을 탑재할 수 있으며, IM 463-2의 인
할 수 있습니다. 결과적으로 IM 460-3과 IM 461-3 터페이스 2개 각각에 대해 최대 4개의 S5 확장 유닛
또는 IM 460-4와 461-4 인터페이스 모듈을 사용하 을 분산 구성으로 연결할 수 있습니다.
는 경우 100m 또는 600m 거리 사이에서 확장 랙을
4개까지 운영할 수 있습니다.
1.1.4 SIMATIC 이중화
중앙 랙에는 확장 랙을 21개까지 연결할 수 있습
니다. 랙을 구분하려면 수신 IM의 코딩 스위치에 랙 기계와 프로세스에 대한 결함 허용 요구 수준이
번호를 지정합니다. 높은 애플리케이션에 대해 SIMATIC S7 결함 허용
자동화 시스템의 두 가지 설계, 즉 소프트웨어 이중
백플레인 버스는 병렬 P 버스와 직렬 K 버스로 구
성됩니다. 확장 랙 ER1과 ER2는 하드웨어 인터럽트 화 및 S7-400H/FH를 이용할 수 있습니다.

를 생성하지 않는 ‘간단한’ 입출력 모듈용으로 설


계되었으며 P 버스를 통한 24V 전압 공급, 예비 전 소프트웨어 이중화
압 및 K 버스 연결이 필요 없습니다. K 버스는 랙
SIMATIC S7-300/400 표준 구성요소를 이용하
UR1, UR2, CR2에서 1-6번까지 중앙 랙 또는 확장
랙으로 사용됩니다. 면, 프로세스를 제어하는 마스터 스테이션 및 마스
터 스테이션의 제어 실패 시 제어 권한을 넘겨받는
스탠바이 스테이션으로 소프트웨어 기반 이중화 시
분할 랙
스템을 구축할 수 있습니다.
분할 랙 CR2는 특수한 장치입니다. 분할 랙에는
공급 전원을 공유하지만 기능적으로 분리되는 2개 스탠바이 스테이션으로의 제어 권한 이전은 프로
의 CPU를 장착할 수 있습니다. 2개의 CPU는 K 버 그래머블 컨트롤러의 구성에 따라 몇 초가 걸릴 수
스를 통해 서로 데이터를 교환할 수 있지만 입출력 도 있기 때문에, 소프트웨어 이중화를 통한 결함 허
모듈 전용 P 버스는 완전히 분리되어 있습니다. 용은 저속 프로세스에 적합합니다. 이전 과정에서
는 프로세스 신호가 ‘정지’ 합니다. 그 다음에 스
탠바이 스테이션은 마스터 스테이션에서 마지막으
멀티프로세서 모드
로 유효했던 데이터로 작동을 계속합니다.
S7-400에서 적절한 랙에 장착한 특별히 설계된
최대 4개의 CPU를 멀티프로세서 모드로 사용할 수 입/출력 모듈의 이중화는 분산 I/O(이중화 프로피
있습니다. 이 스테이션을 구성하는 각 모듈은 주소 버스 DP용 IM 153-3 인터페이스 모듈을 포함한
와 인터럽트를 통해 하나의 CPU에만 할당됩니다. ET200M)를 통해 구현합니다. 옵션인 ‘Software
상세 정보는 20.3.6 “멀티프로세싱 모드” 및 Redundancy’ 소프트웨어를 구성에 이용할 수 있
21.7 “멀티프로세서 인터럽트” 을 참조하십시오. 습니다.

22
1.1 프로그래머블 컨트롤러의 구조

SIMATIC 이중화 S7-400H 니다. 이에 따라 표준 데이터 텔레그램에서 안전 함


SIMATIC S7-400H는 중앙 랙 2개로 이중화를 구 수의 사용자 데이터를 전송할 수 있습니다.
성하는 결함 허용 프로그래머블 컨트롤러이며, 각 SIMATIC S7은 ‘안전 통합’ 을 구현할 수 있는
중앙 랙은 H CPU 1개와 광 케이블을 통해 데이터를 두 가지 시스템인 S7 Distributed Safety 및 S7 F/FH
비교하는 동기화 모듈 1개를 포함합니다. 두 컨트롤 Systems를 제공합니다.
러 모두 ‘핫 스탠바이’ 모드로 작동하며, 결함이
발생하면 자동 무충돌 전환을 통해 결함 없는 컨트 S7 Distributed Safety
롤러만 작동을 계속합니다. 슬롯이 2x9개인 UR2-H S7 Distributed Safety는 주로 장치산업에서 기계
마운팅 랙을 이용하면 하나의 마운팅 랙에 결함 허 와 사람을 보호하는 기계 제어 용도의 페일세이프
용 시스템을 구축할 수 있습니다. 자동화 시스템입니다.
I/O는 정상 가용성(단일 채널, 단면 구성) 또는 향 현재 이용 가능한 F-CPU는 S7-300용 CPU인
상된 가용성(ET200M을 통한 단일 채널 전환 구성) 315F-2DP 및 317F-2DP, S7-400용 CPU인
을 제공합니다. 통신은 단일 버스 또는 이중화 버스 416F-2, ET200S용 기본 모듈 IM151-F/CPU 등입
를 통해 이루어집니다.
니다. F-모듈 및 F-하위 모듈은 안전 관련 프로필
사용자 프로그램은 비 이중화 컨트롤러용 프로그 PROFISafe를 포함한 프로피버스 DP를 사용하여
램과 동일하며, 이중화 함수는 하드웨어에서만 처 S7-400에 연결됩니다. S7-300에서는 컨트롤러 랙
리하므로 사용자에게 보이지 않습니다. 구성에 필 에 F-모듈을 추가할 수 있습니다.
요한 소프트웨어 패키지는 STEP 7 V5.3 이상 버전
페일세이프 시스템의 구성과 프로그래밍에는 옵
에 포함됩니다. 이미 제공된 표준 라이브러리 이중
션인 S7 Distributed Safety 패키지를 포함한 STEP
화 IO는 이중화 I/O를 지원하는 블록을 포함합니다. 7이 필요합니다. 프로그램의 안전 관련 영역은 기본
언어에 비해 연산 세트와 소수의 데이터 형식이 제
1.1.5 안전 관련 SIMATIC 한된 F-LAD 또는 F-FBD를 사용하여 프로그램합니
페일세이프 자동화 시스템은 전원이 꺼져도 안전 다. 안전 프로그램에서 결함을 감지하면 F-CPU는
상태를 유지할 수 있도록 프로세스를 제어합니다. 정지 상태로 전환됩니다.
이 시스템은 안전 요구사항이 높은 공장에 사용합니 또한 옵션 패키지는 페일세이프 블록과 템플릿이
다. SIMATIC S7로 충족시킬 수 있는 안전 요구사항 있는 안전 프로그램용 블록 라이브러리를 포함합니
은 다음과 같습니다. IEC 61508에 따른 안전 무결성 다.
수준 SIL 1 - SIL 3, DIN V 19250(DIN V VDE 0801)
에 따른 요구사항 범주 AK 1 - AK 6, EN 954-1에 S7 F/FH Systems
따른 범주 1 - 4. S7 F/FH Systems는 장치산업의 주요 애플리케
안전 관련 사용자 프로그램의 안전 함수는 요구사 이션을 포함하는 S7-400 기반의 페일세이프 자동
항에 맞게 설계된 CPU(F-CPU) 및 페일세이프 입/ 화 시스템입니다.
출력(F-모듈 및 F-하위 모듈, “페일세이프 I/O” S7 F/FH Systems는 S7-400 자동화 시스템을 기
참조)에 적절히 위치합니다. 반으로 합니다. F-모듈 및 F-하위 모듈은 프로피버
안전 관련 공장 구성요소용 F-CPU 및 F-모듈을 스 DP와 안전 관련 프로필 PROFISafe를 이용해
포함한 안전 기술은 표준 애플리케이션 외에도 S7- S7-400에 연결됩니다.
300/400 PLC에 통합할 수 있습니다. S7-400F에서 페일세이프 사용자 프로그램을 표
프로피버스 DP를 이용한 안전 관련 통신은 특별 준 사용자 프로그램에 통합할 수 있습니다. S7-
히 개발된 프로피버스 프로필 PROFIsafe를 사용합 400FH는 페일세이프 기능 외에 향상된 가용성을 제

23
1 SIMATIC S7-300/400 프로그래머블 컨트롤러

공합니다. 감지한 결함으로 인해 마스터 CPU가 정 315F-2DP와 함께 중앙 집중식으로 사용합니


지 상태로 전환하는 경우, 전환은 핫 스탠바이 모드 다.
에서 CPU에 피드백 없이 이루어집니다
Z 페일세이프 전원 및 전자 모듈은 ET200M 분산
(1.1.4 “SIMATIC 이중화” 참조).
I/O 스테이션에 사용하며, 이를 위해 IM 151-F/
구성은 STEP 7 버전 5.1 이상의 표준 애플리케이 CPU 기본 모듈을 페일세이프 CPU로 이용할 수
션을 이용해 수행합니다. 그리고 페일세이프 입출 있습니다.
력 모듈의 파라미터화 및 안전 관련 프로그램 구성
Z 페일세이프 프로피버스 DP 표준 슬레이브는 S7
요소의 프로그래밍을 위한 옵션 패키지 ‘S7 F
Distributed Safety와 함께 사용할 수도 있습니다.
Systems’ , 옵션 패키지 ‘CFC’ , V5.0 SP3 이상
버전, 옵션 패키지 ‘S7-SCL’ V5.0 이상 버전, 결
함 허용 기능을 위한 옵션 패키지 ‘S7 H Systems’ 1.1.6 CPU 메모리 영역
V5.1 이상 버전이 필요합니다. 그림 1.2는 사용자 프로그램에 중요한 프로그래
제공된 F-라이브러리의 특수 함수 블록은 연속 밍 기기, CPU 및 입출력 모듈의 메모리 영역을 보여
함수 차트(CFC)를 이용해 호출 및 상호 연결이 가능 줍니다.
합니다. 또한 안전 함수 프로그래밍 기능 외에 오류 프로그래밍 기기는 오프라인 데이터를 포함합니
감지 및 응답 기능도 포함합니다. 결함과 실패가 발 다. 오프라인 데이터는 사용자 프로그램(프로그램
생하면 페일세이프 시스템은 안전 상태로 고정되거 코드 및 사용자 데이터), 시스템 데이터(예: 하드웨
나 전환됩니다. 안전 프로그램에서 결함을 감지하 어, 네트워크 및 상호 연결 구성), 심볼 테이블과 주
면 공장의 페일세이프 구성요소는 꺼지는 반면에 나 석 같은 프로젝트 고유 데이터로 구성됩니다.
머지 부분은 계속 작동합니다.
온라인 데이터는 사용자 프로그램과 CPU의 시스
각 CPU에는 S7-400F/FH의 사용을 위한 F-런타 템 데이터로 구성되며 로드 메모리와 작업 메모리
임 라이선스가 존재해야 합니다. 페일세이프 입출 영역에 저장됩니다. 또한 시스템 메모리와 백업 메
력 모듈(F-모듈)은 안전 작동에 필요하며 ET200M 모리가 추가로 존재합니다.
분산 I/O 스테이션에서 작동합니다.
I/O 모듈은 입력과 출력의 신호 상태 메모리를 포
함합니다.
페일세이프 I/O
CPU에는 플러그인 메모리 하위 모듈용 슬롯이
페일세이프 입출력 모듈(F-모듈)은 페일세이프
있습니다. 로드 메모리 또는 그 일부는 플러그인 메
시스템의 안전 작동에 필요합니다. 페일세이프 기
모리 하위 모듈에 위치합니다( “CPU 메모리의 물
능은 통합 안전 함수 및 센서와 액추에이터의 적절
리적 설계” 참조). 메모리 하위 모듈은 메모리 카드
한 배선을 통해 이루어집니다.
(S7-400 CPU) 또는 마이크로 메모리 카드(S7-300
또한 F-모듈은 진단 요구사항이 증가한 표준 애 CPU 및 파생된 ET200 CPU)로 설계되었습니다. 메
플리케이션에도 사용할 수 있습니다. F-모듈은 S7 모리 하위 모듈을 이용하여 CPU 운영체제의 펌웨어
F/FH systems의 표준 및 안전 작동에서 가용성을 를 업데이트할 수도 있습니다.
높이기 위해 이중화 모드로 운영할 수 있습니다. 페
일세이프 I/O는 다음과 같이 다양하게 이용할 수 있 메모리 카드
습니다.
S7-400 CPU의 메모리 모듈은 메모리 카드(MC)
Z S7-300 설계의 페일세이프 입출력 모듈은 입니다. 메모리 카드의 두 가지 유형은 RAM 카드와
ET200M 분산 I/O 스테이션에 사용하거나 CPU 플래시 EPROM 카드입니다.

24
1.1 프로그래머블 컨트롤러의 구조

그림 1.2 CPU 메모리 영역

로드 메모리만 확장할 경우에는 RAM 카드를 사 입한 상태에서 온라인으로 프로그램을 로드할 수도


용합니다. RAM 카드를 이용하면 전체 사용자 프로 있습니다.
그램을 온라인에서 수정할 수 있습니다. 예를 들어,
RAM 카드는 대형 프로그램의 테스트와 시작에 필 마이크로 메모리 카드
요합니다. 전원을 끄면 RAM 메모리 카드의 내용은 신형 S7-300 CPU의 메모리 하위 모듈은 마이크
지워집니다. 로 메모리 카드(MMC)입니다. MMC의 데이터는 전
구성 데이터와 모듈 파라미터를 포함한 사용자 프 원이 꺼져도 지워지지 않으며 RAM처럼 읽기, 쓰기,
로그램을 예비 배터리가 없는 상태에서도 테스트하 삭제가 가능합니다. 따라서 배터리 없이 데이터 백
고 시작한 후 전원 차단 시 보호하려면 플래시 업이 가능합니다.
EPROM 카드를 사용해야 합니다. 이 경우 오프라인 전체 로드 메모리가 MMC에 존재하므로 MMC는
상태에서 프로그래밍 기기에 삽입한 플래시 작동에 항상 필요합니다. MMC는 사용자 프로그램
EPROM 카드로 전체 프로그램을 로드합니다. 관련 이나 펌웨어 업데이트를 위한 휴대형 메모리 매체로
CPU의 경우에는, 플래시 EPROM 카드를 CPU에 삽 사용할 수 있습니다. 특수한 시스템 함수를 이용하

25
1 SIMATIC S7-300/400 프로그래머블 컨트롤러

면 MMC에서 레서피를 읽거나 MMC에서 측정값 아 며, 프로그램과 데이터 메모리는 다시 정전 유지와


카이브를 생성하고 생성한 아카이브에 데이터를 저 비 정전 유지 메모리로 구분할 수 있습니다.
장하는 등과 같이 사용자 프로그램에서 MMC의 데
사용자 프로그램을 프로그래밍 기기에 업로드할
이터 블록(DB)을 읽거나 MMC에 데이터 블록(DB)
경우, 블록은 로드 메모리에서 가져오며 작업 메모
을 쓸 수 있습니다.
리에 있는 데이터 피연산자의 실제값으로 보완됩니
다. 이에 대한 추가 정보는 2.6.4 “사용자 프로그램
로드 메모리 을 CPU에 로드” 및 2.6.5 “블록 처리” 를 참조하
구성 데이터(시스템 데이터)를 포함한 전체 사용 십시오.
자 프로그램은 로드 메모리에 저장됩니다. 사용자
프로그램은 항상 프로그래밍 기기에서 로드 메모리 시스템 메모리
로 전달되고 다시 로드 메모리에서 작업 메모리로
시스템 메모리는 프로그램에 액세스하는 주소(변
전달됩니다. 로드 메모리의 프로그램은 제어 프로
수)를 포함합니다. 주소는 주소의 CPU 고유 번호를
그램으로 처리되지 않습니다.
포함하는 영역(주소 영역)에 결합됩니다. 예를 들
CPU에 마이크로 메모리 카드가 없는 경우, CPU 면, 주소는 순간 접촉 스위치와 리미트 스위치의 신
에 통합된 메모리 또는 플러그인 메모리 카드를 로 호 상태를 스캔하는 데 사용되는 입력일 수도 있고
드 메모리로 사용합니다. RAM이나 ROM도 로드 메 접촉기와 램프의 제어에 사용되는 출력일 수도 있습
모리로 사용할 수 있습니다. 니다.

로드 메모리가 통합 RAM이나 RAM 메모리 카드 CPU의 시스템 메모리에 포함되는 주소 영역은


로 구성되는 경우, 사용자 프로그램의 정전 유지를 다음과 같습니다.
보장하려면 예비 배터리가 필요합니다. 로드 메모
Z 입력(I)
리를 통합 EEPROM, 플러그인 플래시 EPROM 메모
입력은 디지털 입력 모듈의 이미지( ‘프로세스
리 카드 또는 마이크로 메모리 카드로 구현한 경우
이미지’ )입니다.
에는 CPU를 예비 배터리 없이 사용할 수 있습니다.
Z 출력(Q)
STEP 7 V5.1 이상 버전부터는 적절하게 설계된
출력은 디지털 출력 모듈의 이미지( ‘프로세스
CPU를 이용하면, 완전한 프로젝트 데이터를 로드
이미지’ )입니다.
메모리에 압축 아카이브 파일로 저장할 수 있습니다
(2.2.2 “관리, 재조직, 아카이브 저장” 참조). Z 비트 메모리(M)
모든 지점에서 전체 프로그램에 액세스할 수 있
는 정보를 저장합니다.
작업 메모리
Z 타이머(T)
작업 메모리는 CPU에 완전히 통합된 고속 RAM
타이머는 대기 및 모니터링 시간의 구현에 사용
의 형태로 설계되었습니다. CPU의 운영체제는 ‘실
되는 위치입니다.
행과 관련된’ 프로그램 코드와 사용자 데이터를 작
업 메모리에 복사합니다. ‘관련’ 이라는 용어는 기 Z 카운터(Z)
존 개체의 특성이며 특정 코드 블록을 반드시 호출 카운터는 상향 카운팅과 다운 카운팅에 사용할
및 실행해야 함을 의미하지는 않습니다. ‘실제’ 수 있는 소프트웨어 수준 위치입니다.
제어 프로그램은 작업 메모리에서 실행됩니다.
Z 임시 로컬 데이터(L)
제품에 따라서 작업 메모리를 상관 영역으로 설계 블록 처리 과정에서 동적 중간 버퍼로 사용되는
하거나 프로그램과 데이터 메모리로 구분할 수 있으 위치입니다. 임시 로컬 데이터는 CPU가 프로그

26
1.1 프로그래머블 컨트롤러의 구조

램 실행 과정에서 동적으로 사용하는 L 스택에 마이크로 메모리 카드가 삽입된 CPU는 통합 로


위치합니다. 드 메모리를 포함하지 않습니다. 마이크로 메모리
카드는 작동을 위해 반드시 삽입해야 합니다. 마이
괄호 안의 문자는 프로그램 작성 시 여러 주소에
사용되는 약어입니다. 각 변수에 심볼을 할당한 후 크로 메모리 카드의 로드 메모리는 RAM 및 ROM 구
주소 식별자 대신에 심볼을 사용할 수도 있습니다. 성요소가 포함된 것처럼 반응합니다. 프로그램은
대개 RAM으로 전송되어 완전한 테스트를 마친 다
또한 시스템 메모리는 통신 작업용 버퍼와 시스템
음에 메뉴 명령을 통해 ROM에 씌어집니다. 사용자
메시지용 버퍼(진단 버퍼)를 포함합니다. 이런 데이
프로그램의 정전 유지 기능은 마이크로 메모리 카드
터 버퍼의 크기뿐 아니라 프로세스 이미지와 L 스택
의 크기는 특정 CPU에서 파라미터로 지정할 수 있 를 통해 이루어집니다.
습니다.
CPU 317에서 작업 메모리의 일부는 정전 유지 데
이터 블록(DB)에 사용할 수 있습니다. 작업 메모리
CPU 메모리의 물리적 설계 의 나머지 부분으로서 데이터 정전 유지 기능이 없
로드 메모리의 물리적 설계는 CPU 유형에 따라 는 메모리는 프로그램 코드와 비 정전 유지 데이터
다릅니다(그림 1.3 참조). 에 사용할 수 있습니다.

그림 1.3 CPU 메모리의 물리적 설계

27
1 SIMATIC S7-300/400 프로그래머블 컨트롤러

S7-400 CPU에 통합된 RAM 로드 메모리는 소형 DP 마스터 시스템


프로그램 및 로드 메모리가 플래시 EPROM 메모리 프로피버스 DP는 대개 DP 마스터 1개가 여러 DP
카드인 경우 개별 블록의 수정에 적합하도록 설계되 슬레이브를 제어하는 ‘단일 마스터 시스템’ 으로
었습니다. 완전한 제어 프로그램이 통합 로드 메모 작동합니다. DP 마스터는 임시로 이용 가능한 프로
리보다 크면 테스트에서 RAM 메모리 카드가 필요 그래밍 기기(진단과 서비스 디바이스)를 제외하고
합니다. 테스트를 마친 프로그램은 프로그래밍 기 버스에서 유일한 마스터입니다. DP 마스터 및 DP
기를 통해 CPU에 삽입한 플래시 EPROM 메모리 카 마스터에 할당된 DP 슬레이브는 DP 마스터 시스템
드로 전송됩니다. 을 구성합니다(그림 1.4 참조).

S7-400 CPU의 작업 메모리는 두 부분으로 나뉘 또한 프로피버스 서브넷 하나에 여러 DP 마스터


는데, 한 부분은 프로그램 코드를 저장하고, 다른 부 시스템을 설치할 수 있습니다(멀티 마스터 시스템).
분은 사용자 데이터를 저장합니다. S7-400 CPU의 그러나 DP 마스터가 '연결된' DP 슬레이브를 초기
시스템 메모리와 작업 메모리는 하나의 물리적 단위 화하면 액세스 권한이 다음 DP 마스터로 넘어가기
를 구성합니다. 예를 들어, 프로세스 이미지의 크기 때문에, DP 마스터 시스템이 여러 개이면 매 경우
가 변하면 작업 메모리의 크기도 영향을 받습니다. 응답 시간이 증가하게 됩니다.
DP 마스터 시스템에 연결된 DP 슬레이브가 소수
인 경우에는 응답 시간을 줄일 수 있습니다. S7 스
1.2 분산 I/O 테이션 1개에서 여러 DP 마스터를 운영할 수 있으
므로, 한 스테이션의 DP 슬레이브를 여러 DP 마스
분산 I/O는 프로피버스 DP 또는 프로피넷 IO를 통 터 시스템으로 분산시킬 수 있습니다. 멀티프로세
해 연결된 모듈을 의미합니다. 데이터 전송 시 프로 서 모드에서는 모든 CPU가 고유한 DP 마스터 시스
피버스 DP는 프로피버스 서브넷을, 프로피넷 IO는 템을 갖습니다.
산업용 이더넷 서브넷을 사용합니다(추가 정보는
1.3.2 “서브넷” 참조). DP 마스터
DP 마스터는 프로피버스 네트워크에서 능동 노
드입니다. DP 마스터는 ‘연결된’ DP 슬레이브와
1.2.1 PROFIBUS DP
데이터를 주기적으로 교환합니다. DP 마스터가 될
프로피버스 DP는 중앙 프로그래머블 컨트롤러의
수 있는 디바이스는 다음과 같습니다.
‘인터페이스 모듈’ 과 필드 디바이스 사이에서 주
Z 통합 DP 마스터 인터페이스 또는 플러그인 인터
로 이진 프로세스 데이터의 전송을 위해 표준화된
페이스 하위 모듈을 포함한 CPU(예: CPU 315-
인터페이스를 제공합니다. ‘인터페이스 모듈’ 은
2DP, CPU 417)
DP 마스터라 부르며, 필드 디바이스는 DP 슬레이브
라 부릅니다. Z CPU에 연결된 인터페이스 모듈(예: IM 467)
Z CPU에 연결된 CP(예: CP 342-5, CP 443-5)
DP 마스터 및 DP 마스터가 제어하는 모든 DP 슬
레이브가 DP 마스터 시스템을 구성합니다. 스테이 그리고 프로세스 작업에서 데이터 교환을 위한
션은 세그먼트 1개당 32개까지, 전체 네트워크에서 ‘1급 마스터’ 및 서비스와 진단을 위한 ‘2급 마
는 127개까지 구성 가능합니다. DP 마스터는 연결 스터’ (예: 프로그래밍 기기)가 있습니다.
된 모든 DP 슬레이브를 제어할 수 있습니다. 또한
프로그래밍 기기는 프로피버스 DP 네트워크뿐 아니 DP 슬레이브
라 HMI 디바이스, ET200 디바이스, SIMATIC S5 DP DP 슬레이브는 프로피버스에서 수동 노드입니
슬레이브에도 연결할 수 있습니다. 다. SIMATIC S7에서는 다음과 같이 구별됩니다.

28
1.2 분산 I/O

그림 1.4 RS485 세그먼트에서 프로피버스 DP 마스터 시스템의 구성요소

Z 초소형 DP 슬레이브 치, CPU 대신 IM 153 인터페이스 모듈을 포함하며


DP 마스터에 대해 단일 모듈처럼 동작합니다. 최대 8개의 입출력 모듈(SM) 또는 특수 모듈(FM)을
이용합니다. 데이터 전송률은 9.6 kbit/s - 12 Mbit/
Z 모듈식 DP 슬레이브
s입니다.
여러 모듈(하위 모듈)을 포함합니다.
DP 마스터가 S7-400 스테이션인 경우에는
Z 지능형 DP 슬레이브
ET200M을 활성 버스 모듈 로 설계할 수도 있습니
연결된 하위 수준 모듈을 제어하는 제어 프로그
다. 따라서 전원이 켜진 상태에서도 S7-300 입력/
램을 포함합니다.
출력 모듈을 장착하고 분리할 수 있습니다. 나머지
모듈은 중단 없이 계속 작동합니다. 모듈은 더 이상
초소형 프로피버스 DP 슬레이브
전원을 끄고 장착할 필요가 없습니다.
DP 슬레이브의 예로는 ET200B(디지털 입력/출
력 모듈이나 아날로그 입력/출력 모듈을 포함한 버 ET200M은 이중화 버스의 슬레이브처럼 IM 153-
전, 보호 등급 IP 20, 최대 데이터 전송률 12 Mbit/ 3 인터페이스 모듈과 함께 사용할 수 있습니다. IM
s), ET200C(견고한 구조 IP 66/67, 디지털 입력/출 153-3에는 2개의 연결부가 있는데, 하나는 마스터
력 및 아날로그 입력/출력의 다양한 버전, 데이터 전 스테이션의 DP 마스터용이며 다른 하나는 스탠바이
송률 1.5 또는 12 Mbit/s), ET200L-SC(디지털 입력 스테이션의 DP 마스터용입니다.
/출력 모듈 및 아날로그 입력/출력 모듈을 자유롭게
조합할 수 있는 독립적 모듈 구조, 보호 등급 IP 20, 지능형 프로피버스 DP 슬레이브
데이터 전송률 1.5 Mbit/s) 등이 포함됩니다. DP/
지능형 DP 슬레이브의 예는 통합 DP 슬레이브 인
AS-i 링크와 같은 버스 게이트웨이는 프로피버스
터페이스를 포함한 CPU 또는 CP 342-5 통신 프로
DP에서 초소형 슬레이브처럼 동작합니다.
세서가 탑재된 S7-300 스테이션입니다. 마찬가지
로 IM 154-8 PN/DP CPU 인터페이스를 포함한
모듈식 프로피버스 DP 슬레이브 ET200pro 스테이션 또는 IM 151-7 CPU 인터페이
ET200M은 모듈식 DP 슬레이브의 예입니다. 설 스 모듈을 포함한 ET200S 스테이션도 지능형 DP
계는 S7-300 스테이션처럼 DIN 레일, 전원 공급 장 슬레이브로 사용할 수 있습니다.

29
1 SIMATIC S7-300/400 프로그래머블 컨트롤러

RS 485 리피터 로 표시할 수도 있습니다. 라인 진단은 시스템 함수


RS 485 리피터는 프로피버스 서브네트워크에서 SFC 103 DP_TOPOL을 통해 사용자 프로그램에서
버스 세그먼트 2개를 결합합니다. 그러므로 스테이 시작하고 SFC 59 RD_REC 또는 SFB 52 RDREC를
션의 개수를 늘리고 서브네트워크를 확장할 수 있습 이용해 판독합니다. 진단 리피터에서 클록을 설정
니다. 하려면, 시스템 함수 SFC 1 READ_CLK를 이용해
CPU 시간을 판독하고 판독 결과는 SFC 58 WR_
리피터는 신호 재생 및 전기적 절연을 제공합니
REC 또는 SFB 53 WRREC를 이용해 전송합니다.
다. 리피터는 프로피버스 PA에서 45.45kbit/s를 포
함해 최대 12Mbit/s의 전송률로 작동할 수 있습니 진단 리피터는 STEP 7을 이용해 구성하고 파라미
다. 터를 지정합니다. GSD 파일은 SIMATIC 이외 마스
터에서 사용할 수 있습니다.
RS 485는 구성에 사용하지 않으며 버스 파라미터
를 계산할 때만 필요합니다.
1.2.2 프로피넷 IO
진단 리피터 PROFIBUS IO는 중앙 프로그래머블 컨트롤러의
진단 리피터를 이용하면 런타임 동안 토폴로지를 ‘인터페이스 모듈’ 과 산업용 이더넷을 이용하는
측정하고 프로피버스 세그먼트(RS 485 구리 케이 필드 디바이스 사이에서 주로 이진 프로세스 데이터
블)에서 약식 진단을 수행할 수 있습니다. 진단 리피 의 전송을 위해 표준화된 인터페이스를 제공합니다.
터는 신호 재생 및 연결된 세그먼트의 전기적 절연 ‘인터페이스 모듈’ 은 IO 컨트롤러라고 부르며, 필
을 제공합니다. 모든 경우에서 최대 세그먼트 길이 드 디바이스는 IO 디바이스라고 부릅니다. IO 컨트
는 100m이며, 전송률은 9.6kbit/s - 12Mbit/s입니 롤러 및 IO 컨트롤러에서 제어하는 모든 IO 디바이
다. 스는 프로피넷 IO 시스템을 구성합니다.

진단 리피터에는 3개의 버스 세그먼트용 연결부


가 있습니다. DP 마스터의 케이블은 버스 세그먼트 프로피넷 IO 시스템
DP1의 입력 단자에 연결합니다. 나머지 2개 연결부 프로피넷 IO 시스템은 중앙 스테이션의 IO 컨트롤
인 DP2와 DP3는 연결된 버스 세그먼트의 토폴로지 러 및 IO 컨트롤러에 할당된 IO 디바이스(필드 디바
와 라인 상태를 진단하기 위한 테스트 회로를 포함 이스)로 구성됩니다. IO 컨트롤러와 디바이스를 연
합니다. 진단 리피터는 최대 9개까지 직렬로 연결할 결하는 산업용 이더넷 서브넷은 다른 스테이션과 애
수 있습니다. 플리케이션에서 공유할 수도 있습니다(그림 1.5 참
진단 리피터는 마스터 시스템에서 DP 슬레이브 조).
처럼 취급됩니다. 결함이 발생한 경우, 진단 리피터
는 측정한 진단 데이터를 DP 마스터로 전송합니다. IO 컨트롤러
전송하는 데이터는 버스 세그먼트의 토폴로지(스테
IO 컨트롤러는 프로피넷에서 능동 스테이션입니
이션과 케이블 길이), 세그먼트 진단 버퍼의 내용(결
다. IO 컨트롤러는 ‘연결된’ IO 디바이스와 데이
함 정보, 위치, 원인을 포함한 최근의 10개 이벤트),
터를 주기적으로 교환합니다. IO 컨트롤러가 될 수
통계 데이터(버스 시스템의 품질 설명) 등입니다. 또
있는 디바이스는 다음과 같습니다.
한 진단 리피터는 등시성 전송 모드의 모니터링 기
능을 제공합니다. Z 통합 프로피넷 인터페이스를 포함한 CPU
(예: CPU 317-2PN/DP)
진단 데이터는 가져오기가 가능하며 STEP 7
V5.2 이상 버전의 프로그래밍 기기를 통해 그래픽으 Z CPU에 연결된 CP 모듈(예: CP 343-1)

30
1.2 분산 I/O

그림 1.5 프로피넷 IO 시스템의 구성요소

IO 디바이스 있습니다. 이런 연결에서는 안전 센서를 연결하는


IO 디바이스는 프로피넷에서 수동 스테이션입니 안전한 AS-i 슬레이브 및 안전한 입력과 파라미터
다. SIMATIC S7에서 ET200M, ET200S, 지정 가능 로직을 조합해 안전한 종료를 보장하는
ET200pro와 같은 모듈식 I/O 디바이스는 IO 디바 안전 모니터가 필요합니다.
이스가 될 수 있습니다. 또한 게이트웨이 PN/PN
커플러, IE/PB 링크, IE/AS-i 링크 등도 IO 디바이 AS-i 마스터
스가 될 수 있습니다.
표준 AS-i 마스터는 최대 5ms의 사이클 시간으
로 표준 AS-i 슬레이브를 31개까지 제어할 수 있습
IO 수퍼바이저 니다. 확장 AS-i 마스터의 경우, 개수는 최대 10ms
IO 수퍼바이저는 파라미터 지정, 시작, 진단, 인 의 사이클 시간으로 확장 주소 영역에서 AS-i 슬레
간-기계 연결(예: 프로그래밍 기기 또는 HMI 장치) 이브를 62개까지 늘릴 수 있습니다. 확장 주소 영역
을 위한 디바이스입니다. 의 슬레이브는 한 쌍의 주소 1개를 사용합니다. 표
준 슬레이브가 확장 마스터에 연결된 경우, 표준 슬
1.2.3 액추에이터/센서 인터페이스 레이브는 각각 하나의 주소를 사용합니다.
액추에이터/센서 인터페이스(AS-i)는 국제 표준 AS-i 마스터 CP 343-2는 S7-300 스테이션 또는
EN 50295에 따른 자동화 설비의 최저 프로세스 레 ET200M 스테이션에서 사용합니다. 지원하는 AS-i
벨을 위한 네트워크 구축 시스템입니다. AS-i 마스 슬레이브는 다음과 같습니다.
터는 제어 신호와 공급 전압을 전달하는 2선 AS-i
Z 표준 슬레이브
케이블을 통해 최대 62개의 AS-i 슬레이브를 제어
합니다(그림 1.6참조). Z 확장 주소 지정 모드의 슬레이브(A/B 슬레이브)

AS-i 세그먼트 1개의 길이는 100m까지 가능하 Z 슬레이브 프로필 7.3 또는 7.4의 아날로그 슬레
며 리피터와 연장 플러그를 조합하면 600m까지 연 이브
장할 수 있습니다. 표준 모드에서 CP 343-2는 I/O 모듈처럼 동작합
‘작업에서 AS-I 인터페이스 안전’ 및 EN 954-1 니다. 아날로그 주소 영역 128부터는 16개의 입력
의 Category 4 또는 IEC 61508의 SIL3에 따라 비상 바이트 및 16개의 출력 바이트를 사용합니다. CP
차단 스위치, 도어 접촉 스위치, 안전 조명 배열과 343-2에서는 최대 31개의 표준 슬레이브 또는 62개
같은 안전 센서를 AS-i 네트워크에 직접 연결할 수 의 A/B 슬레이브(확장 주소 영역의 슬레이브)를 사

31
1 SIMATIC S7-300/400 프로그래머블 컨트롤러

그림 1.6 AS-i 버스 시스템을 SIMATIC S7에 연결

용할 수 있습니다. AS-i 슬레이브의 파라미터는 CP 슬레이브’ 는 데이터 기록을 통해 주소가 지정됩니


에 저장된 기본값으로 지정됩니다. 다. 또한 AS-i A/B 슬레이브는 아날로그 값을 수집
확장 모드에서는 AS-i 마스터 규격에 따른 완전 하고 전송할 수 있습니다.
한 범위의 함수를 이용할 수 있습니다. 제공한 FC
블록을 사용하면 표준 모드(작동하는 동안 파라미
1.2.4 게이트웨이
터 전송, 원하는/실제 구성에 대한 검사, 테스트, 진
게이트웨이는 여러 서브넷의 디바이스 사이에서
단) 외에 사용자 프로그램에서도 마스터를 호출할
데이터를 교환하고 구성과 파라미터 지정 정보를 서
수 있습니다.
브넷 경계 밖으로 전달할 수 있습니다(그림 1.7 참
조).
AS-i 슬레이브
AS-i ASIC를 포함한 버스 기반 센서와 액추에이
터 또는 AS-i 모듈이 AS-i 슬레이브가 될 수 있습니 2개의 프로피버스 서브넷 연결
다. AS-i ASIC를 포함한 센서와 액추에이터는 수동 DP/DP 커플러(버전 2)는 DP 마스터 사이의 데이
모듈에 연결합니다. 재래식 센서와 액추에이터는 터 교환이 가능하도록 2개의 프로피버스 서브넷을
능동 모듈에 연결할 수 있습니다. 서로 연결합니다. 2개의 서브넷은 분리되며
AS-I 슬레이브는 표준 슬레이브 1개가 최대 31개 12Mbit/s까지 다양한 데이터 전송률로 운영할 수 있
의 가능한 주소 중 1개를 사용하는 표준 버전으로 이 습니다. 2개의 서브넷에서 DP/DP 커플러는 노드 주
용할 수 있습니다. 사용자 프로그램은 표준 슬레이 소를 자유롭게 선택할 수 있는 DP 슬레이브처럼 관
브를 이진 입력과 출력으로 취급합니다. 련 DP 마스터에 할당됩니다.

확장 주소 지정 모드의 AS-i 슬레이브(A/B 슬레 전송 메모리는 최대 크기가 244바이트의 입력과


이브)는 한 쌍의 주소 1개를 사용하므로 마스터 1개 출력 데이터이며 최대 16개 영역으로 분할할 수 있
에 최대 62개의 슬레이브를 연결할 수 있습니다. B. 습니다. 한 서브넷의 입력 영역은 다른 서브넷의 출
‘A 슬레이브’ 는 표준 슬레이브로 간주되며, ‘B 력 영역과 일치해야 합니다. 128바이트까지는 일관

32
1.2 분산 I/O

그림 1.7 게이트웨이

성 있게 전송할 수 있습니다. 한쪽의 입력 데이터가 드 디바이스는 31.25kbit/s의 데이터 전송률로 프로


전송에 실패해도 다른 쪽의 출력 데이터는 최신 값 피버스 PA 세그먼트를 구성합니다. 모든 프로피버
을 유지합니다. 스 PA 세그먼트는 공유 프로피버스 PA 버스 시스템
DP/DP 커플러는 STEP 7을 이용해 구성하고 파 을 구성합니다.
라미터를 지정합니다. GSD 파일은 지멘스 이외의
DP/PA 커플러는 두 가지 버전인 최대 400 mA 출
마스터에서 사용할 수 있습니다.
력 전류의 Ex 이외 버전 및 최대 100mA 출력 전류
의 Ex 버전으로 이용할 수 있습니다.
프로피버스 DP를 프로피버스 PA에 연결
프로피버스 PA(프로세스 자동화)는 화학산업의 DP/PA 링크를 이용하면 9.6kbit/s - 12Mbit/s의
본질 안전 영역(Ex 영역 Zone 1)뿐 아니라 식품과 데이터 전송률로 PA 필드 디바이스를 프로피버스
음료 산업의 본질 안전 이외 영역에 사용하는 프로 DP에 연결할 수 있습니다. DP/PA 링크는 IM 157 인
세스 설계용 버스 시스템입니다. 터페이스 모듈 1개 및 SIMATIC S7 버스 커넥터를 통
해 서로 연결되는 최대 5개의 DP/PA 커플러로 구성
프로피버스 PA의 프로토콜은 표준 EN 50170,
됩니다. 그리고 프로피버스 DP 슬레이브 1개에 모
Volume 2(프로피버스 DP)를 기준으로 하며, 전송
든 프로피버스 PA 세그먼트가 연결된 버스 시스템
기술은 IEC 1158-2를 기반으로 합니다.
의 맵을 보여 줍니다. PA 필드 디바이스는 DP/PA
프로피버스 DP와 프로피버스 PA를 연결하는 두
링크 하나에 31개까지 연결할 수 있습니다.
가지 방법은 다음과 같습니다.
Z 프로피버스 DP를 45.45kbit/s로 운영할 수 있는 SIMATIC PDM(프로세스 디바이스 관리자, 이전
DP/PA 커플러 의 SIPROM)은 프로피버스 PA 또는 HART 기능을 갖
춘 지능형 필드 디바이스의 파라미터 지정, 시작 및
Z 프로피버스 DP의 데이터 전송률을 프로피버스
진단을 위한 공급자 호환 도구입니다. 디바이스 기술
PA의 데이터 전송률로 전환하는 DP/PA 링크
언어(DDL)는 하이웨이 주소 지정 가능 원격 변환기
DP/PA 커플러를 이용하면 PA 필드 디바이스를
(HART)의 파라미터 지정에 이용할 수 있습니다.
프로피버스 DP에 연결할 수 있습니다. 프로피버스
DP에서 DP/PA 커플러는 45.45kbit/s로 작동하는 STEP 7 V5.1 SP3부터는 하드웨어 구성 도구를
DP 슬레이브입니다. DP/PA 커플러 1개에는 최대 이용하여 제어 기술 모듈의 파라미터를 지정하므로
31개의 PA 필드 디바이스를 연결할 수 있습니다. 필 더 이상 SIMATIC PDM을 사용할 필요가 없습니다.

33
1 SIMATIC S7-300/400 프로그래머블 컨트롤러

프로피버스 DP를 AS-I 인터페이스에 연결 PN/PN Coupler는 DIN 레일에 설치한 120mm 너
DP/AS-Interface 링크를 이용하면 프로피버스 비의 모듈입니다. 서브넷은 RJ45 커넥터를 이용해
DP를 AS-I 인터페이스에 연결할 수 있습니다. 프로 연결합니다. 각 서브넷에서는 내부 전환 기능이 있
피버스 DP에서 DP/AS-I 인터페이스 링크는 전송률 는 2개의 연결부를 이용할 수 있습니다.
이 최대 12Mbit/s이고 보호 등급이 IP 20인 모듈식
관련 IO 컨트롤러의 관점에서 볼 때 PN/PN
DP 슬레이브입니다. AS-I 인터페이스에서는 AS-i
Coupler는 해당 프로피넷 IO 시스템의 IO 디바이스
슬레이브를 제어하는 AS-i 마스터입니다. 이 링크
입니다. 두 IO 디바이스는 입력과 출력 데이터가 각
는 DP/AS-i Link 20E 및 DP/AS-i Link Advanced 버
각 256바이트이며 최대 16개 영역으로 분할할 수 있
전으로 이용할 수 있습니다. 제어할 수 있는 AS-i 슬
는 데이터 전송 영역을 통해 연결됩니다. 한 서브넷
레이브는 다음과 같습니다.
의 입력 영역은 다른 서브넷의 출력 영역과 일치해
Z 표준 슬레이브인 AS-i 아날로그 슬레이브 야 합니다.
Z 확장 주소 지정 모드의 슬레이브(A/B 슬레이브)
PN/DP Coupler는 STEP 7을 이용해 구성하고 파
Z AS-i 규격 V3.0(DP/AS-i Link Advanced)에 따 라미터를 지정합니다. GSDML 파일은 다른 구성 도
라 데이터를 전송하는 슬레이브 구에서도 사용할 수 있습니다.

프로피버스 DP를 직렬 인터페이스에 연결


프로피넷 IO를 프로피버스 DP에 연결
프로피버스 DP/RS 232C 링크는 RS 232C(V.24)
인터페이스와 프로피버스 DP 사이의 변환기입니 산업용 이더넷 서브넷과 프로피버스는 IE/PB 링
다. RS 232C 인터페이스를 포함한 디바이스는 DP/ 크 PNIO를 이용해 연결할 수 있습니다. 프로피넷 IO
RS 232C 링크를 이용해 프로피버스 DP에 연결할 를 사용하는 경우, IE/PB 링크 PNIO는 프로피버스
수 있습니다. DP/RS 232C 링크는 절차 3964R 및 에서 DP 슬레이브의 프록시 역할을 대신합니다. IO
무료 ASCII 프로토콜을 지원합니다. 컨트롤러는 IE/PB 링크를 사용해 IO 디바이스처럼
DP 슬레이브에 액세스할 수 있습니다. 표준 모드의
프로피버스 DP/RS 232C 링크는 일대일 연결을
경우, IE/PB 링크는 PG/OP 통신 및 서브넷 간의 S7
통해 디바이스에 연결됩니다. 프로피버스 DP 프로
라우팅에서 확인할 수 있습니다.
토콜로의 변환은 프로피버스 DP/RS 232C 링크에
서 이루어집니다. 데이터는 양방향으로 일관성 있 IE/PB 링크 PNIO는 너비가 S7-300의 2배인 모듈
게 전송됩니다. 메시지 프레임당 최대 224바이트의 입니다. IE/PB 링크는 8-접점 RJ45 소켓을 통해 산
사용자 데이터를 전송할 수 있습니다.
업용 이더넷에 연결되며, 9-접점 SUB-D 소켓을 통
프로피버스 DP에서 데이터 전송률은 12Mbit/s까 해 프로피버스에 연결됩니다.
지 가능하며, RS 232C는 패리티 없음, 짝수 또는 홀
IE/PB 링크는 DP 마스터 시스템이 연결된 IO 디
수 패리티, 8 데이터 비트, 1 정지 비트에서 최대
바이스처럼 STEP 7을 이용해 구성합니다. 전원을
38.4kbit/s로 작동할 수 있습니다.
켜면 하위 DP 슬레이브에도 IO 컨트롤러의 구성 데
이터가 제공됩니다.
2개의 프로피넷 서브넷 연결
PN/PN Coupler를 이용하면 IO 컨트롤러 사이의 IE/PB 링크 다음의 프로피버스 DP에는 한계가 존
데이터 교환이 가능하도록 2개의 이더넷 서브넷을 재한다는 점에 유의하십시오. 예를 들어, DP/PA 링
서로 연결할 수 있습니다. 서브넷은 전기적으로 절 크를 연결할 수 없고, DP 세그먼트는 CIR 기능이 없
연됩니다. 으며, 등시성 전송 모드는 구성할 수 없습니다.

34
1.3 통신

프로피넷 IO를 AS-I 인터페이스에 연결 1.3.1 소개


IE/AS-i 링크를 이용하면 프로피넷 IO를 AS-I 인 가장 중요한 기본 통신 개체는 데이터 교환을 원
터페이스에 연결할 수 있습니다. 프로피넷 IO에서
하는 SIMATIC 스테이션 또는 지멘스 이외 디바이스
IE/AS-i 링크는 IO 디바이스입니다. AS-I 인터페이
입니다. 이 경우에는 통신 기능이 있는 모듈이 필요
스에서는 AS-i 슬레이브를 제어하는 AS-i 마스터입
합니다. SIMATIC S7에서 모든 CPU는 통신을 처리
니다. IO 컨트롤러는 AS-i 슬레이브의 개별 이진 값
할 수 있는 MPI 인터페이스를 포함합니다.
과 아날로그 값에 직접 액세스할 수 있습니다.

프로피넷에 연결은 내부 전환 기능이 있는 2개의 또한 빠른 처리 속도와 다양한 프로토콜로 데이터


RJ45 커넥터를 통해 이루어집니다. AS-I 인터페이 를 교환할 수 있는 통신 모듈(CP)이 있습니다. 이런
스 버스는 4핀 플러그인 나사식 접점에 연결됩니다. 모듈은 네트워크를 통해 연결해야 합니다. 네트워
크는 통신 노드 사이의 하드웨어 연결입니다.
IE/AS-i 링크는 각 경우에 AS-i 슬레이브를 62개
까지 연결하고 통합 아날로그 값을 전송할 수 있는 데이터는 특정 조정 절차( ‘프로토콜’ )를 기준
단일 마스터와 이중 마스터 버전(AS-I 인터페이스 으로 한 구체적인 실행 계획( ‘통신 서비스’ )에 따
규격 V3.0 준수)으로 이용할 수 있습니다. 제어할 수 른 ‘연결’ 을 통해 교환됩니다. 예를 들어, S7 연
있는 AS-i 슬레이브는 다음과 같습니다.
결은 통신 기능이 있는 S7 모듈 사이의 표준입니다.
Z 표준 슬레이브인 AS-i 아날로그 슬레이브
그림 1.8은 S7 연결을 이용하는 경우 두 스테이션
Z 확장 주소 지정 모드의 슬레이브(A/B 슬레이브)
간의 통신에 관련되는 개체를 보여 줍니다. 왼쪽 스
Z AS-i 규격 V3.0에 따라 데이터를 전송하는 슬레 테이션의 사용자 프로그램은 데이터 블록(DB)에 전
이브 송될 데이터를 포함합니다. 예로 제시한 통신 함수
IE/AS-i 링크는 STEP 7을 이용해 구성하고 파라 는 시스템 함수 블록(SFB)입니다. 파라미터 RD의
미터를 지정합니다. GSDML 파일은 다른 구성 도구 포인터를 전송할 데이터에 할당하고, 전송은 프로
에 사용할 수 있습니다. 그램에서 시작합니다. 통신 함수에는 연결에서 지
정한 연결 ID가 추가로 할당됩니다. 연결은 CPU 시
스템 메모리의 연결 리소스를 사용합니다. 예를 들
면, 데이터는 모듈의 버스 인터페이스를 통해 다른
1.3 통신
스테이션의 CP 모듈로 전송됩니다. 연결 리소스는
프로그래밍 가능 모듈 사이의 데이터 교환인 통신 CP 모듈 및 CPU에서 사용합니다. 연결 ID 및 구성
은 SIMATIC S7의 필수 구성요소입니다. 거의 모든 된 연결 경로 때문에 수신 스테이션의 통신 함수는
통신 함수는 운영체제를 통해 처리됩니다. 데이터 수신 스테이션으로 주소가 지정된 데이터를 ‘인
는 추가 하드웨어 없이 CPU 2개를 연결하는 1개의 식’ 하고 파라미터 RD의 포인터를 이용해 사용자
케이블만으로 교환할 수 있습니다. CP 모듈을 사용 프로그램의 데이터 블록(DB)에 인식한 데이터를 씁
하는 경우, 강력한 네트워크 링크 및 지멘스 이외 시 니다.
스템에 연결되는 설비를 구축할 수 있습니다.

SIMATIC NET은 SIMATIC 통신에서 포괄적인 용


네트워크
어입니다. SIMATIC NET은 프로그래머블 컨트롤러
사이 및 프로그래머블 컨트롤러와 HMI 디바이스 사 네트워크는 통신을 위한 여러 디바이스 사이의 연
이의 정보 교환을 의미합니다. 성능 요구사항에 따 결입니다. 네트워크는 서로 연결된 하나 이상의 동
라 이용할 수 있는 통신 경로는 다양합니다. 일하거나 다른 서브넷으로 구성됩니다.

35
1 SIMATIC S7-300/400 프로그래머블 컨트롤러

그림 1.8 SIMATIC S7 스테이션 2개 사이의 데이터 교환

서브넷 SIMATIC에서 인식할 수 있는 연결 유형은 다음과


서브넷에서 모든 통신 노드는 통일된 물리적 특성 같습니다. S7 연결, S7 연결(결함 허용), 일대일 연
및 데이터 전송률과 같은 전송 파라미터를 적용한 결, FMS와 FDL 연결, ISO 전송 연결, ISO-on-TCP
하드웨어 연결을 통해 연결되며, 공통 통신 절차를 와 TCP 연결, UDP 연결, 이메일 연결.
통해 데이터를 교환합니다. SIMATIC은 MPI, 프로피
버스, 산업용 이더넷, 일대일 연결(PTP)을 서브넷으 통신 함수
로 인식합니다.
통신 함수는 통신 서비스에 대한 사용자 프로그램
의 인터페이스입니다. SIMATIC S7 내부 통신에서
통신 서비스 통신 함수는 CPU의 운영체제에 통합되며 시스템 블
통신 서비스는 통신 노드 사이의 데이터 교환 방 록을 통해 호출됩니다. 로드할 수 있는 블록은 통신
법 및 데이터 처리 방법을 결정합니다. 통신 서비스 모듈을 통해 지멘스 이외 디바이스와 통신하는 데
는 특히 통신 노드 사이의 조정 절차를 규정한 통신 이용할 수 있습니다.
협약을 기반으로 합니다.
SIMATIC에서 가장 많이 사용하는 서비스는 PG 통신 개체의 개요
통신, OP 통신, S7 기본 통신, S7 통신, 글로벌 데
표 1.1은 서브넷, 통신 기능이 있는 모듈 및 통신
이터 통신, PtP 통신, S5 호환 통신(SEND/RECEIVE
서비스 사이의 관계를 보여 줍니다. 제시한 통신 서
인터페이스) 등입니다.
비스 외에 PG/OP 통신도 MPI, 프로피버스, 산업용
이더넷 서브넷을 통해 가능합니다.
연결
연결은 통신 노드 2개 사이의 통신 관계를 정의합
니다. 연결은 특정 통신 서비스를 실행하기 위해 2 1.3.2 서브넷
개의 노드를 논리적으로 할당하는 것을 말하며, 연 서브넷은 물리적 특성과 통신 절차가 동일한 통신
결 유형(동적, 정적) 및 구성 방법과 같은 특수한 속 경로입니다. 서브넷은 SIMATIC Manager에서 통신
성을 포함합니다. 을 위한 중심 개체입니다.

36
1.3 통신

서브넷은 다음과 같이 성능 요구사항에 따라 다릅 삽입해 최대 1100m까지 늘리거나 광회선 모듈을


니다. 이용해 100km 이상으로 연장할 수 있습니다. 데이
Z MPI 터 전송률은 보통 187.5kbit/s입니다.
소규모 데이터를 교환하는 소수 SIMATIC 디바 MPI 서브넷에서는 글로벌 데이터 통신, 스테이션
이스를 네트워크로 구성하기 위한 저렴한 방법 외부 S7 기본 통신 또는 S7 통신을 이용해 CPU 사
Z 프로피버스 이의 데이터 교환이 가능합니다. 추가 모듈은 필요
중소 규모 데이터를 고속 교환하며 주로 분산 I/ 없습니다.
O에서 사용
Z 산업용 이더넷 프로피버스
대규모 데이터의 고속 교환을 위한 컴퓨터와 프 프로피버스는 ‘Process Field Bus’ 의 약어이
로그래머블 컨트롤러 사이의 통신에 사용하며 며 범용 자동화(프로피버스 DP 및 프로피버스 FMS)
분산 I/O(프로피넷 IO)에서도 사용 를 위한 IEC 61158/EN 50170과 프로세스 자동화(
Z 일대일(PTP) 프로피버스 PA)를 위한 IEC 61158-2를 준수하는
특수 프로토콜을 이용한 두 통신 파트너 사이의 공급자별 표준입니다.
직렬 연결 프로피버스 네트워크의 최대 노드 수는 127개이
STEP 7 V5부터는 프로그래밍이나 파라미터 지정 며, 최대 32개 노드를 가진 세그먼트로 분할할 수 있
의 목적으로 프로그래밍 기기를 사용하여 서브넷을 습니다. 노드 유형은 능동과 수동으로 나뉩니다. 능
통해 SIMATIC S7 스테이션에 연결할 수 있습니다. 동 노드는 지정한 시간 동안 버스에 액세스 권한을
서브넷 사이의 게이트웨이는 ‘라우팅 기능’ 을 가 가지며 데이터 프레임을 전송할 수도 있습니다 지정
진 S7 스테이션에 위치해야 합니다. 한 시간이 지나면 액세스 권한은 다음 노드로 전달
됩니다( ‘토큰 전달’ 액세스 절차). 수동 노드(슬레
MPI 이브)가 능동 노드(마스터)에 할당된 경우, 마스터
SIMATIC S7의 모든 CPU는 ‘다중 포인트 기능 는 액세스 권한을 가지며 할당된 슬레이브와 데이터
이 있는 인터페이스’ (다중 포인트 인터페이스 또는 교환을 실행합니다. 수동 노드는 액세스 권한이 없
MPI)를 포함합니다. 그러므로 CPU, HMI 디바이스 습니다.
및 프로그래밍 기기가 서로 데이터를 교환할 수 있 또한 프로피버스 네트워크는 다양한 전송률을 가
는 서브넷을 구축할 수 있습니다. 데이터 교환은 지 진 전기 회로, 광 통신망, 무선 네트워크로서 물리적
멘스 전용 프로토콜을 통해 처리됩니다. 으로 설계할 수 있습니다. 세그먼트의 길이는 전송
MPI 네트워크에서 최대 노드 수는 32개입니다. 률에 따라 달라집니다. 전기 회로는 선형 또는 트리
각 노드는 지정한 시간 동안 버스에 액세스 권한을 형 토폴로지로 구성할 수 있습니다. 전기 회로에는
가지며 데이터 프레임을 전송할 수도 있습니다. 지 차폐 2연선 케이블을 사용합니다(RS485 인터페이
정한 시간이 지나면 액세스 권한은 다음 노드로 전 스). 전송률은 9.6kbit/s - 12Mbit/s 범위에서 단계
달됩니다( ‘토큰 전달’ 액세스 절차). 적으로 조정할 수 있습니다(프로피버스 PA는 31.25
kbit/s).
전송 매체인 MPI는 차폐 연선 케이블이나 유리 또
는 플라스틱 광섬유 케이블을 사용합니다. 인터페 광 통신망에는 플라스틱, PCF 또는 유리 광섬유
이스가 전기적으로 절연되지 않은 버스 세그먼트에 케이블을 사용합니다. 광 통신망은 장거리에 적합
서 최대 케이블 길이는 전송률에 따라 최대 50m이 하고 전기적 절연을 제공하며 전자파 장해가 거의
며, 인터페이스가 전기적으로 절연된 경우에는 최 없습니다. 전송률은 9.6kbit/s - 12Mbit/s 범위에서
대 1000m입니다. 케이블 길이는 RS485 리피터를 단계적으로 조정할 수 있습니다. 광 회선 모듈

37
1 SIMATIC S7-300/400 프로그래머블 컨트롤러

표 1.1 통신 개체
서브넷 모듈 통신 서비스, 연결 구성, 인터페이스
MPI 모든 CPU 글로벌 데이터 통신 GD 테이블
스테이션 내부 S7 기본 통신 SFC 호출
S7 통신 커넥션 테이블,
FB/SFB 호출
프로피 DP 인터페이스를 프로피버스 DP 하드웨어 구성, SFB/SFC 호출,
버스 포함한 CPU (DP 마스터 또는 DP 슬레이브) 입력/출력
스테이션 내부 S7 기본 통신 SFC 호출
IM 467 프로피버스 DP(DP 마스터) 하드웨어 구성, SFB/SFC 호출,
입력/출력
스테이션 내부 S7 기본 통신 SFC 호출
CP 342-5 CP 342-5: 프로피버스 DP V0 하드웨어 구성, SFB/SFC 호출,
CP 443-5 Extended CP 433-5 Ext.: 프로피버스 DP V1 입력/출력
(DP 마스터 또는 DP 슬레이브)
스테이션 내부 S7 기본 통신 SFC 호출
S7 통신 커넥션 테이블,
FB/SFB 호출
S5 호환 통신 NCM, 커넥션 테이블,
SEND/RECEIVE
CP 343-5 스테이션 내부 S7 기본 통신 SFC 호출
CP 443-5 Basic S7 통신 커넥션 테이블,
FB/SFB 호출
S5 호환 통신 NCM, 커넥션 테이블,
SEND/RECEIVE
프로피버스 FMS NCM, 커넥션 테이블,
FMS 인터페이스
산업용 PN 인터페이스를 프로피넷 IO 하드웨어 구성, SFB/SFC 호출,
이더넷 포함한 CPU (IO 컨트롤러) 입력/출력
IE 통신 FB 호출
CP 343-1 Lean S7 통신 커넥션 테이블,
CP 343-1 FB/SFB 호출
CP 443-1 S5 호환 통신 NCM, 커넥션 테이블,
전송 프로토콜 TCP/IP 및 UDP, SEND/RECEIVE
CP 443-1 적용 ISO
CP 343-1 IT S7 통신 커넥션 테이블, FB/SFB 호출
CP 443-1 Advanced S5 호환 통신 NCM, 커넥션 테이블,
CP 443-1 IT 전송 프로토콜 TCP/IP 및 UDP, SEND/RECEIVE
CP 443-1 적용 ISO
IT 통신 NCM, 커넥션 테이블,
(HTTP, FTP, 이메일) SEND/RECEIVE
CP 343-1 PN S7 통신 커넥션 테이블, FB/SFB 호출
S5 호환 통신 NCM, 커넥션 테이블,
전송 프로토콜 TCP 및 UDP, SEND/RECEIVE
NCM은 STEP 7 V5.2 이상 버전에 통합된 CP 모듈용 구성 소프트웨어입니다.

38
1.3 통신

(OLM)을 이용하면 선형, 링형, 별형 토폴로지로 설 하나의 파트너에만 연결됩니다. 여러 노드 사이의


계할 수 있습니다. 또한 OLM은 혼합 설계 시 전기 통신을 구현할 수 있도록 노드들은 다중 연결이 가
회로와 광 통신망 사이의 연결을 제공합니다. 비용 능한 ‘분배기’ (스위치 또는 허브)에 연결됩니다.
최적화 설계는 통합 인터페이스와 광 버스 터미널
스위치는 신호를 재생하고, 신호의 우선 순위를
(OBT)을 이용한 선형 구조입니다.
정하며, 신호를 연결된 디바이스에만 분배하는 능
프로피버스 적외선 링크 모듈(ILM)을 이용하면 동 버스 구성요소입니다. 허브는 연결 시 최저 데이
하나 또는 복수 프로피버스 슬레이브나 세그먼트를 터 전송률로 조정되어 우선 순위 없이 모든 신호를
프로피버스 슬레이브에 무선으로 연결할 수 있습니 연결된 모든 디바이스에 전달합니다.
다. 최대 전송률은 1.5Mbit/s이고 최대 범위는 15m
이므로 움직이는 부품과 통신이 가능합니다. 네트워크는 선형, 별형, 트리형, 링형 토폴로지로
구성할 수 있습니다. 데이터 전송률은 10Mbit/s,
분산 I/O의 연결은 프로피버스 서브네트워크를
100Mbit/s(고속 이더넷), 1000Mbit/s(프로피넷이
통해 구현하며 관련 프로피버스 DP 통신 서비스를
아닌 기가비트 이더넷)입니다.
포함합니다. 사용자는 통합 또는 플러그인 DP 마스
터를 포함한 CPU나 관련 CP를 사용할 수 있습니다. 산업용 이더넷은 전기 회로, 광 통신망, 무선 네트
또한 스테이션 내부 S7 기본 통신이나 S7 통신도 사 워크로서 물리적으로 설계할 수 있습니다. 전기 케
용할 수 있습니다. 이블 연결의 구현에는 RJ45 연결용 FC
TP(FastConnect Twisted Pairs) 또는 sub-D 연결용
데이터는 관련 CP를 사용하여 프로피버스 FMS
ITP(Industrial Twisted Pairs)를 이용할 수 있습니다.
및 프로피버스 FDL에 전송할 수 있습니다. 그리고
광섬유(FO) 케이블 연결은 유리 섬유, PCF 또는
사용자 프로그램의 인터페이스로 이용할 수 있는 로
POF로 구성할 수 있습니다. 산업용 이더넷은 전기
드 가능 블록(FMS 인터페이스 또는 SEND/
적 절연을 제공하고 전자파 영향을 받지 않으며 장
RECEIVE 인터페이스)이 있습니다.
거리에 적합합니다. 무선 전송은 2.4GHz 및 5GHz
의 주파수를 사용하며 최대 54Mbit/s(국가 승인에
산업용 이더넷
따라 다름)의 데이터 전송률을 제공합니다.
산업용 이더넷은 국제 표준 IEEE 802.3/802.3u
에 정의된 산업 영역에 초점을 맞춰 컴퓨터와 프로 산업용 이더넷을 이용하면 S7 함수를 통해 S7과
그래머블 컨트롤러를 연결하는 서브넷입니다. 표준 IE 통신으로 데이터를 교환할 수 있습니다. 또한 적
IEEE 802.11 a/b/g/h는 무선 근거리 통신망(WLAN) 절히 설계된 모듈을 사용하면 ISO 전송 연결, ISO-
및 산업용 무선 LAN(IWLAN)에 대한 연결을 정의합 on-TCP 연결, TCP, UDP, 이메일 연결도 구축할 수
니다. 있습니다.

산업용 이더넷을 이용해 연결할 수 있는 스테이션


의 개수는 무제한이며, 세그먼트당 허용되는 스테 프로피넷
이션은 최대 1024개입니다. 각 노드는 액세스 전에 프로피넷은 프로피버스 International(PNO)의 공
다른 노드에서 현재 전송하고 있는지를 확인합니 개 산업용 이더넷 표준입니다. 프로피넷은 산업 자
다. 다른 노드에서 전송하고 있으면 액세스를 시도 동화 요구사항을 고려해 데이터 전송용 물리적 매체
하기 전에 임의의 시간 동안 기다립니다(CSMA/CD 로 산업용 이더넷 서브넷을 사용합니다. 예를 들어,
액세스 절차). 모든 노드는 동등한 액세스 권한을 갖 프로피넷은 필드 디바이스와 통신에 실시간(RT) 응
습니다. 답을 제공하며 모션 컨트롤 애플리케이션을 위한 등
산업용 이더넷에서 물리적 연결은 통신 노드 사이 시성 실시간(IRT) 전송을 제공합니다. 산업용 이더
의 일대일 연결로 구성됩니다. 각 노드는 정확하게 넷은 TCP/IP 및 IT 표준을 준수합니다.

39
1 SIMATIC S7-300/400 프로그래머블 컨트롤러

지멘스에서 프로피넷을 적용하는 두 가지 자동화 를 이용해 600m까지 가능합니다. 데이터 전송률은


개념은 다음과 같습니다. 167kbit/s로 설정됩니다.
Z 구성요소 기반 자동화(CBA)는 분산 시스템의 마스터는 주기적 스캔을 통해 슬레이브를 62개까
구성요소인 제어 장치 간의 통신에 프로피넷을 지 제어하므로 일정한 응답 시간을 보장합니다.
사용합니다. 구성 도구는 SIMATIC iMap입니다.
Z 프로피넷 IO는 필드 디바이스(분산 I/O)와 데이 1.3.3 통신 서비스
터 송수신에 프로피넷을 사용합니다. 구성 도
서브넷에서 데이터 교환은 선택한 연결에 따라 다
구는 SIMATIC STEP 7입니다.
양한 통신 서비스에 의해 제어됩니다. 통신 서비스
는 CPU 또는 CP 모듈에서 제공합니다. 필드 디바이
일대일 연결 스(프로피버스 DP, 프로피버스 PA 및 프로피넷 IO,
일대일 연결(PTP)에서는 직렬 링크를 통해 데이 1.2.1 “PROFIBUS DP” 및 1.2.2 “프로피넷 IO”
터를 교환할 수 있습니다. 일대일 연결은 SIMATIC 참조)와 통신 외에 사용한 모듈에 따라 아래에 나열
Manager에서 서브넷으로 처리되며 서브넷과 비슷 한 통신 서비스를 이용할 수 있습니다.
하게 구성됩니다.
전송 매체는 인터페이스에 따라 할당되는 전기 케 PG 통신
이블입니다. RS 232C(V.24), 20mA TTY 및 RS PG 통신은 엔지니어링 스테이션과 SIMATIC 스테
422/485는 인터페이스로 이용할 수 있습니다. 데이 이션 사이의 데이터 교환에 사용합니다. 예를 들면,
터 전송률은 20mA 인터페이스에서 300bits/s - 온라인 모드의 프로그래밍 기기에서 ‘Monitor
19.2kbit/s이거나 RS 232C 및 RS 422/485에서 variables’ 또는 ‘Read diagnostics buffer’ 함수
76.8kbit/s입니다. 케이블 길이는 물리적 인터페이 를 실행하거나 사용자 프로그램을 로드하는 데 사용
스와 데이터 전송률에 따라 달라지며 RS 232C에서 합니다. PG 통신에 필요한 통신 함수는 SIMATIC 모
10m, 9.6kbit/s의 20mA 인터페이스에서 1000m, 듈의 운영체제에 통합됩니다. PG 통신은 MPI, 프로
19.2kbit/s의 RS 422/485에서 1200m입니다. 피버스 및 산업용 이더넷 서브넷에서 실행할 수 있
3964 (R), RK 512, 프린터 드라이버 및 ASCII 드 습니다. 또한 PG 통신은 S7 라우팅을 통해 서브넷
라이버는 프로토콜(절차)로 이용할 수 있으며, 이외에서도 사용할 수 있습니다.
ASCII 드라이버는 사용자 지정 절차로 정의할 수 있
습니다. OP 통신
OP 통신은 작업자 스테이션과 SIMATIC 스테이션
AS-Interface 사이의 데이터 교환에 사용합니다. 예를 들어, HMI
AS-Interface(액추에이터/센서 인터페이스, AS- 디바이스에서 운영과 모니터링 또는 변수의 읽기와
i)는 AS-I 인터페이스 규격 IEC TG 178에 따라 적절 쓰기에 사용합니다. OP 통신에 필요한 통신 함수는
하게 설계된 이진 센서와 액추에이터를 연결합니 SIMATIC 모듈의 운영체제에 통합됩니다. OP 통신
다. AS-I 인터페이스는 SIMATIC Manager에서 서브 은 MPI, 프로피버스, 산업용 이더넷 서브넷에서 실
넷으로 나타나지 않으며, AS-I 마스터만 하드웨어 행할 수 있습니다.
구성 또는 네트워크 구성 도구로 구성할 수 있습니
다. S7 기본 통신
전송 매체는 액추에이터와 센서에 데이터와 전력 S7 기본 통신은 동일한 SIMATIC 스테이션( ‘스
(전원 공급 장치 필요)을 공급하는 비차폐 연선 케이 테이션 내부’ )에서 CPU와 모듈 사이 또는 다른
블입니다. 네트워크 범위는 리피터와 확장 플러그 SIMATIC 스테이션( ‘스테이션 외부’ )에서 CPU와

40
1.3 통신

모듈 사이에 소량의 데이터를 교환하는 이벤트 제어 PtP 통신


서비스입니다. 연결은 필요에 따라 동적으로 구축
PtP 통신(일대일 연결)은 SIMATIC 스테이션과 프
됩니다. S7 기본 통신에 필요한 통신 함수는 CPU의
린터 사이와 같은 직렬 인터페이스를 통해 데이터를
운영체제에 통합되므로, 시스템 함수 SFC를 이용해
전송합니다. 필요한 통신 함수는 시스템 함수 블록
사용자 프로그램에서 데이터를 전송할 수 있습니
(SFB)처럼 운영체제에 통합됩니다. 데이터는 다양
다. 스테이션 내부 S7 기본 통신은 프로피버스에서
한 전송 절차를 통해 교환할 수 있습니다.
실행하고, 스테이션 외부 S7 기본 통신은 MPI에서
실행합니다.
S5 호환 통신

S7 통신 S5 호환 통신은 SIMATIC 스테이션과 SIMATIC 이


외 스테이션 사이에 데이터를 교환하는 이벤트 제어
S7 통신은 제어 및 모니터링 함수를 이용해 CPU
서비스입니다. 연결은 정적으로 이루어지며 STEP
모듈 사이에 대량의 데이터를 교환하는 이벤트 제어
7을 이용해 프로그래밍됩니다. 통신 함수는 대개 사
서비스입니다. 연결은 정적으로 이루어지며 STEP
용자 프로그램에서 전송을 제어할 수 있는 로드 가
7을 이용해 프로그래밍됩니다. S7 통신에 필요한
능 함수 FC입니다. 데이터는 SEND/RECEIVE 인터
통신 함수는 CPU의 운영체제 통합되는 시스템 함수
페이스를 통해 송수신되며 FETCH/WRITE 인터페
블록(SFB)이거나 로드할 수 있는 함수 블록(FB)입
이스를 통해 가져오고 쓸 수 있습니다(S7은 수동 파
니다. S7 통신은 MPI, 프로피버스, 산업용 이더넷
트너). S5 호환 통신은 TCP, ISO on TCP, ISO 전송,
서브넷에서 실행할 수 있습니다.
UD 연결을 이용한 산업용 이더넷이나 FDL을 이용
한 프로피버스로 구현할 수 있습니다.
IE 통신
‘산업용 이더넷을 통한 개방 통신’ (줄여서 IE 통 표준 통신
신)을 이용하면 이더넷 서브넷에 연결된 디바이스 2
표준 통신은 데이터 전송을 위해 표준화된 공급자
개 사이에서 데이터 전송이 가능합니다. 통신은
별 프로토콜을 사용합니다.
RFC 793에 따른 TCP 네이티브 프로토콜, RFC
1006에 따른 ISO-on-TCP 프로토콜, RFC 768에 프로피버스 FMS (Fieldbus Message Specifica-
따른 UDP 프로토콜을 이용해 구현할 수 있습니다. tion)는 EN 50170 Volume 2에 따라 구조화된 변수
통신 함수는 STEP 7 표준 라이브러리의 통신 블록 (FMS 변수)를 프로그램에 따라 디바이스별로 전송
에 포함된 로드 가능 함수 블록(FB)입니다. 함수 블 하는 서비스를 제공합니다. 데이터는 프로피버스
록은 메인 프로그램에 호출되며 연결 생성과 삭제뿐 서브넷에서 정적 FMS 연결을 이용해 교환합니다.
아니라 데이터 전송을 제어합니다. 통신 함수는 사용자 프로그램에서 전송을 제어하는
로드 가능 함수 블록(FB)입니다.
글로벌 데이터 통신 SIMATIC 스테이션은 IT 통신 모듈을 이용하여 IT
글로벌 데이터 통신을 이용하면 사용자 프로그램 통신에 연결됩니다. 산업용 이더넷을 통한 전송은
에서 추가 프로그래밍 오버헤드 없이 여러 CPU 사 PG/OP/S7 통신과 ISO, TCP/IP 및 UPD 전송 프로
이에 소량의 데이터를 교환할 수 있습니다. 전송은 토콜을 이용한 S5 호환 통신(SEND/RECEIVE)으로
주기적일 수도 있고 이벤트 중심일 수도 있습니다. 구성됩니다. 또한 이메일용 SMTP(Simple Mail
필요한 통신 함수는 CPU의 운영체제에 통합됩니 Transfer Protocol), 웹 브라우저를 통한 액세스용
다. 글로벌 데이터 통신은 MPI 버스 또는 K 버스에 HTTP(Hyper Text Transfer Protocol), 다양한 운영
서만 가능합니다. 체제에서 디바이스와 데이터 교환을 프로그램 방식

41
1 SIMATIC S7-300/400 프로그래머블 컨트롤러

으로 제어하는 FTP(File Transfer Protocol)도 사용 S7 기본 통신에서는 ‘구성되지 않은 연결’ 을


할 수 있습니다. 위한 임시 연결 리소스도 필요합니다.

1.3.4 연결
1.4 모듈 주소
연결은 선택한 통신 서비스에 따라 동적이거나 정
적입니다. 동적 연결은 구성되지 않으며, 연결의 생
성이나 삭제는 이벤트 중심( ‘구성되지 않은 연결 1.4.1 신호 경로
을 통한 통신’ )으로 이루어집니다. 통신 파트너 하 기계나 공장을 연결할 때는 프로그래머블 컨트롤
나에는 구성되지 않은 연결 하나만 가능합니다. 러에서 어떤 신호를 어디에 연결할지 결정해야 합니
다(그림 1.9 참조).
정적 연결은 커넥션 테이블에서 구성되고, 시작
시 생성되며, 전체 프로그램 실행에서 유지됩니다 예를 들어, 입력 신호로 ‘Switch motor on’ 에
( ‘구성된 연결을 통한 통신’ ). 통신 파트너 하나 해당하는 순간 접촉 스위치 +HP01-S10의 신호는
에는 여러 연결을 병렬로 구축할 수 있습니다. 네트 특정 터미널에 연결된 입력 모듈로 전달됩니다. 이
워크 구성에서 원하는 통신 서비스는 ‘통신 유형’ 터미널은 I/O 주소라 부르는 ‘주소’ 를 포함합니
을 이용해 선택할 수 있습니다(2.4 “네트워크 구 다(예: 바이트 5, 비트 2).
성” 참조).
모든 프로그램의 실행을 시작하기 전에 CPU는
연결은 글로벌 데이터 통신과 프로피버스 DP 또 ‘입력’ 주소(예: I 5.2)로 액세스하는 프로세스 입
는 S7 함수의 경우 S7 기본 통신에서 네트워크 구성 력 이미지에 신호를 자동으로 복사합니다. ‘I 5.2’
도구로 구성할 필요가 없습니다. 글로벌 데이터 통 는 절대 주소를 의미합니다.
신에 필요한 통신 파트너는 글로벌 데이터 테이블에
이제 이런 입력에는 ‘Switch motor on’ 과 같이
서 정의합니다. 프로피버스 DP와 S7 기본 통신의
입력 신호에 해당하는 영숫자 심볼을 심볼 테이블의
경우에는 노드 주소를 통해 파트너를 정의합니다.
절대 주소에 할당해 이름을 지정할 수 있습니다.
‘Switch motor on’ 은 심볼 주소입니다.
연결 리소스
각 연결에서는 연결 끝점이나 CP 모듈 전이점에
1.4.2 슬롯 주소
서 참여하는 통신 파트너에 연결 리소스가 필요합니
모든 슬롯은 프로그래머블 컨트롤러(S7 스테이
다. 예를 들어, S7 함수가 CPU의 버스 인터페이스
션)에서 고정 주소를 갖습니다. 이 슬롯 주소는 마운
를 통해 실행되면 연결은 CPU에 할당됩니다. 그리
팅 랙 번호와 슬롯 번호로 구성됩니다. 모듈은 슬롯
고 CP의 MPI 인터페이스를 사용하는 S7 함수는 CP
주소( ‘물리적 주소’ )로만 설명합니다.
에서 하나의 연결 및 CPU에서 하나의 연결을 사용
합니다. 모듈이 인터페이스 카드를 포함하는 경우, 각 인
터페이스 카드에도 하위 모듈 주소가 할당됩니다.
각 CPU에서 가능한 연결 개수는 서로 다릅니다.
시스템에서 이진 신호와 아날로그 신호 및 직렬 연
그리고 연결 리소스의 사용과 관련해 제한과 규칙이
결은 이런 방식으로 각자 고유한 주소를 갖습니다.
존재합니다. 예를 들어, 모든 연결 리소스를 모든 연
결 유형에 사용할 수 있는 것은 아닙니다. 하나의 연 이에 따라 분산 I/O 모듈도 ‘물리적 주소’ 를 갖
결은 프로그래밍 기기를 위해 예약되고 다른 하나의 습니다. 이 경우에 DP 마스터 시스템이나 프로피넷
연결은 OP를 위해 예약되며, 이 연결들은 다른 목적 IO 시스템의 번호 및 스테이션 번호가 랙 번호를 대
에 사용할 수 없습니다. 신하게 됩니다.

42
1.4 모듈 주소

그림 1.9
모듈 주소, 절대 주소 및 심볼 주소 사이의 상관 관계 (프로그램에서 스캔을 위한 센서 신호 경로)

모듈의 물리적 위치에서 S7 스테이션의 하드웨어 세스하는 데 사용합니다. 논리 주소의 범위는 0에서
구성에는 STEP 7의 ‘하드웨어 구성’ 도구를 사용 시작하고 CPU에 지정된 상한값에서 끝납니다.
합니다. 또한 하드웨어 구성 도구는 모듈 시작 주소
디지털 모듈에서 개별 신호(개별 비트)는 바이트
를 설정하고 모듈의 파라미터를 지정할 수 있습니다
라 불리는 8개 묶음으로 합쳐집니다. 모듈에는 1, 2,
(2.3 “스테이션 구성” 참조).
4 바이트가 존재합니다. 이 바이트는 상대 주소 0,
1, 2, 3을 갖고, 바이트의 주소 지정은 모듈 시작 주
소에서 시작합니다. 예: 4바이트이며 시작 주소가 8
1.4.3 논리 주소
인 디지털 모듈에서 개별 바이트의 주소는 8, 9, 10,
논리 주소는 절대 주소에 해당합니다. 논리 주소 11로 지정됩니다. 아날로그 모듈에서 개별 아날로
는 사용자 데이터 주소라고도 부르며 프로세스 이미 그 신호(전압, 전류)는 채널이라 부르며, 각 채널은
지(입력 I 및 출력 Q)를 통해 또는 모듈에서 직접(주 2바이트를 필요로 합니다.설계에 따라 아날로그 모
변 입력장치 PI 및 주변 출력장치 PQ) 사용자 프로 듈에는 4, 8, 16, 32 바이트의 주소 범위에 해당하
그램에 있는 입력/출력 모듈의 사용자 데이터에 액 는 2, 4, 8, 16 채널이 존재합니다.

43
1 SIMATIC S7-300/400 프로그래머블 컨트롤러

논리 주소는 하드웨어 구성 도구를 이용해 사용한 1.4.5 진단 주소


모듈의 각 바이트에 할당합니다. 주소는 대개 0부터 적절하게 장착된 모듈은 프로그램에서 평가하는
할당하지만 변경할 수 있습니다. 개별 모듈의 논리 진단 데이터를 제공할 수 있습니다. 중앙 모듈이 사
주소는 중첩되지 않아야 합니다. 논리 주소는 입력 용자 데이터 주소(모듈 시작 주소)를 포함하면, 진단
과 출력 모듈에서 별도로 정의하므로, 입력 바이트 데이터의 판독 시 사용자 데이터 주소를 통해 모듈
와 출력 바이트의 번호가 같을 수 있습니다. 에 액세스합니다. 모듈이 사용자 데이터 주소(공급
전원)를 포함하지 않거나 분산 I/O의 일부이면 진단
또한 분산 I/O의 사용자 데이터 주소도 논리 주소 목적의 진단 주소가 존재합니다.
를 이용해 바이트로 지정됩니다. CPU(또는 더 정확
진단 주소는 항상 I/O 입력 영역의 주소이며 1바
하게는 P 버스)의 모든 사용자 데이터를 명확하게
이트를 사용합니다. 진단 주소의 사용자 데이터 길
할당하려면, 분산 I/O의 논리 주소가 중앙 모듈의 논
이는 0입니다. 진단 주소가 프로세스 이미지 안에
리 주소와 중첩되지 않아야 합니다. 있으면, 프로세스 이미지의 업데이트 시 진단 주소
는 CPU에서 고려하지 않습니다.
일반적으로 디지털 모듈은 신호 상태가 자동으로
업데이트되고 주소 영역 ‘Input’ 과 ‘Output’ 을 STEP 7은 최고 I/O 주소부터 내림차순으로 진단
이용해 주소를 지정할 수 있도록 프로세스 이미지의 주소를 자동으로 할당합니다. 진단 주소는 하드웨
주소에 따라 할당합니다. 아날로그 모듈, FM 모듈, 어 구성 함수를 사용하여 변경할 수 있습니다.
CP 모듈에는 프로세스 이미지에 포함되지 않는 주 진단 데이터는 특수 시스템 함수로만 판독할 수
소가 할당됩니다. 있으며 로드 구문으로 주소에 액세스해도 판독할 수
없습니다(20.4 “분산 I/O를 통한 통신” 참조).

1.4.4 모듈 시작 주소
1.4.6 버스 노드의 주소
모듈 시작 주소는 모듈에서 가장 작은 논리(사용
자 데이터) 주소이며, 모듈의 상대 바이트 0으로 지 MPI
정됩니다. 후속 모듈 바이트들은 주소와 함께 순차 MPI 네트워크에서 노드가 되는 모듈(CPU, FM,
적으로 할당됩니다. CP)도 MPI 주소를 갖습니다. MPI 주소는 프로그래
밍 기기와 HMI 장치에 연결하거나 글로벌 데이터 통
입력과 출력 범위를 포함하는 혼합 모듈의 경우, 신을 위해 결정합니다.
하위 범위 시작 주소는 모듈 시작 주소로 정의합니
구형 S7-300 CPU인 경우, 동일한 스테이션에서
다. 입력과 출력 범위의 시작 주소가 동일한 경우에
작동하는 FM과 CP 모듈은 CPU의 MPI 주소에서 파
는 입력 주소를 사용합니다.
생된 MPI 주소를 수신한다는 점에 유의하십시오. 신

CPU의 주소 영역에서 사용자 데이터 주소의 위 형 S7-300 CPU인 경우, 동일한 스테이션에서 FM
과 CP 모듈의 MPI 주소는 CPU의 MPI 주소와 별도
치는 하드웨어 구성 도구를 이용하여 모듈 시작 주
로 결정할 수 있습니다.
소를 정의해 결정합니다. 또한 최저 논리 주소는 분
산 I/O 모듈 및 지능형 DP 슬레이브의 전송 메모리
에 있는 가상 슬롯에서도 모듈 시작 주소가 됩니다.
프로피버스 DP
프로피버스에서 각각의 DP 스테이션(DP 마스터,
대부분의 경우에 모듈 시작 주소는 모듈을 식별하 DP 슬레이브, 프로그래밍 기기)도 버스에서 주소를
는 데 사용합니다. 모듈 시작 주소는 모듈 식별을 제 명확하게 지정할 수 있는 노드 주소(스테이션 번호)
외하고 특별한 의미는 없습니다. 를 갖습니다.

44
1.5 주소 영역

프로피넷 IO 경우에 디지털 또는 아날로그 입력/출력 신호이며,


산업용 이더넷의 스테이션은 세계에서 유일하게 특수 모듈과 통신 모듈의 경우에는 제어 또는 상태
공장 설정 MAC 주소를 갖습니다. IP 주소는 버스에 정보입니다. 사용자 데이터의 크기는 모듈에 따라
서 식별을 위해 추가로 필요하며 IO 컨트롤러에서 다릅니다. 이 영역에서 모듈은 1, 2, 4 이상의 바이
구성됩니다. IO 디바이스의 IP 주소는 IO 컨트롤러 트를 사용합니다. 할당은 항상 상대 바이트 0에서
의 IP 주소에서 파생됩니다. IO 컨트롤러(인터페이 시작합니다. 바이트 0의 주소는 모듈 시작 주소이며
스) 및 각 IO 디바이스에는 디바이스명이 추가로 할 하드웨어 구성 테이블에서 지정합니다.
당됩니다. IO 디바이스의 주소는 디바이스 번호(스
사용자 데이터는 I/O 주소 영역으로 표현되며, I/
테이션 번호)를 통해 사용자 프로그램에서 지정됩
O 주소 영역은 전송 방향에 따라 주변 입력장치(PI)
니다.
와 주변 출력장치(PQ)로 나뉩니다. 사용자 데이터
가 프로세스 이미지 영역 안에 있으면 CPU는 프로
세스 이미지의 업데이트 시 전송을 자동으로 처리합
1.5 주소 영역 니다.

모든 프로그래머블 컨트롤러에서 이용할 수 있는


주소 영역은 다음과 같습니다. 주변 입력장치

Z 주변 입력/출력장치 입력 모듈의 사용자 데이터 영역에서 판독할 때는


주변 입력장치(PI) 주소 영역을 사용합니다. PI 주소
Z 프로세스 입력 및 출력 이미지
영역의 일부는 프로세스 이미지에 할당됩니다. 프
Z 비트 메모리 영역 로세스 이미지에 할당되는 부분은 항상 I/O 주소 0
Z 타이머와 카운터 기능 에서 시작하며, 이 영역의 길이는 CPU에 따라 다릅
(7 “타이머” 및 8 “카운터” 참조) 니다.
Z L 스택(18.1.5 “임시 로컬 데이터” 참조) Direct I/O Read 작업에서는 인터페이스가 프로
주소 영역에는 사용자 프로그램에 따라 코드 및 세스 입력 이미지에 할당되지 않는 모듈(예: 아날로
블록-로컬 변수를 포함한 데이터 블록(DB)이 추가 그 입력 모듈)에 액세스할 수 있습니다. 또한 프로세
됩니다. 스 입력 이미지에 할당되는 모듈의 신호 상태는
Direct Read 작업으로 판독할 수 있습니다. 그 다음
에 입력 비트의 순간 신호 상태를 스캔합니다. 프로
1.5.1 사용자 데이터 영역
세스 입력 이미지는 프로그램 스캔의 시작 시 업데
SIMATIC S7에서 각 모듈은 두 가지 주소 영역을
이트되기 때문에, 신호 상태는 프로세스 이미지의
갖습니다. 즉, Load와 Transfer 구문으로 주소를 직
관련 입력과 다를 수 있다는 점에 유의하십시오.
접 지정할 수 있는 사용자 데이터 영역 및 데이터 기
록을 전송하는 시스템 데이터 영역을 포함할 수 있 주변 입력장치는 주변 출력장치와 동일한 절대 주
습니다. 소를 사용할 수 있습니다.

모듈에 액세스할 때는 모듈이 중앙 집중식 구성으


로 랙에 장착되어 있든 분산 I/O로 사용되든 차이가 주변 출력장치
없습니다. 모든 모듈은 동일한 논리 주소 공간을 사 출력 모듈에서 값을 사용자 데이터 영역에 쓸 때
용합니다. 는 주변 출력장치(PQ) 주소 영역을 사용합니다. PQ
모듈의 사용자 데이터 속성은 모듈 유형에 따라 주소 영역의 일부는 프로세스 이미지에 할당됩니
달라집니다. 사용자 데이터 속성은 입출력 모듈의 다. 프로세스 이미지에 할당되는 부분은 항상 I/O 주

45
1 SIMATIC S7-300/400 프로그래머블 컨트롤러

소 0에서 시작하며, 이 영역의 길이는 CPU에 따라 입력


다릅니다. 입력은 디지털 입력 모듈에서 해당 비트의 이미지
Direct I/O Write 작업에서는 인터페이스가 프로세 입니다. 입력 스캔은 입력 모듈 자체에서 비트의 스
스 출력 이미지에 할당되지 않는 모듈(예: 아날로그 캔과 동일합니다. 모든 프로그램 사이클에서 프로
출력 모듈)에 액세스할 수 있습니다. 또한 프로세스 그램을 실행하기 전에 CPU의 운영체제는 신호 상태
출력 이미지에서 제어하는 모듈의 신호 상태도 직접 를 모듈에서 프로세스 입력 이미지로 복사합니다.
영향을 받을 수 있습니다. 그 다음에 출력 비트의 신 프로세스 입력 이미지의 이점은 다음과 같습니다.
호 상태는 즉시 변경됩니다. Direct I/O Write 작업도 Z 입력은 비트별로 스캔과 링크가 가능합니다(I/O
프로세스 출력 이미지에서 관련 모듈의 신호 상태를 비트에 직접 주소를 지정할 수는 없습니다).
업데이트한다는 점에 유의하십시오! 그러므로 프로
Z 입력의 스캔은 입력 모듈에 액세스보다 훨씬 빠
세스 출력 이미지와 출력 모듈의 신호 상태는 차이
릅니다. 예를 들면, I/O 버스에서 과도 복구 시간
가 없습니다.
을 방지하며 시스템 메모리 응답 시간은 모듈 응
주변 출력장치는 주변 입력장치와 동일한 절대 주 답 시간보다 짧습니다. 그러므로 프로그램이 훨
소를 사용할 수 있습니다. 씬 빠르게 실행됩니다.
Z 입력의 신호 상태는 전체 프로그램 사이클에서
1.5.2 프로세스 이미지 동일하므로 프로그램 사이클 내내 데이터 일관
성을 유지합니다. 입력 모듈의 비트가 변경되면
프로세스 이미지는 디지털 입력과 출력 모듈의 이
다음 프로그램 사이클의 시작 시 신호 상태의 변
미지를 포함하므로 프로세스 입력과 출력 이미지로
화가 입력으로 전송됩니다.
나뉩니다. 프로세스 입력 이미지는 입력(I) 주소 영
역을 통해 액세스하며, 프로세스 출력 이미지는 출 Z 또한 입력은 RAM에 위치하기 때문에 설정과 재
력(Q) 주소 영역을 통해 액세스합니다. 일반적으로 설정이 가능합니다. 디지털 입력 모듈은 읽기만
기계 또는 프로세스는 입력과 출력을 통해 제어합니 가능합니다. 입력은 디버깅 또는 시작 과정에서
다. 센서 상태를 시뮬레이션하도록 설정할 수 있으
므로 프로그램 테스트가 간소화됩니다.
프로세스 이미지는 자동적으로 또는 사용자 프로
그램을 통해 업데이트되는 종속 프로세스 이미지로 그러나 이런 이점이 있는 대신에 프로그램 응답
분할될 수 있습니다. 상세 정보는 20.2.1 “프로세 시간이 증가합니다(20.2.4 “응답 시간” 참조).
스 이미지 업데이트” 를 참조하십시오.
출력
S7-300 CPU 및 10/98 이후 S7-400 CPU의 경
출력은 디지털 출력 모듈에서 해당 비트의 이미지
우, 모듈에서 사용하지 않는 프로세스 이미지의 주
입니다. 출력 설정은 출력 모듈 자체에서 비트의 설
소는 비트 메모리 영역과 비슷한 추가 메모리 영역
정과 동일합니다. CPU의 운영체제는 신호 상태를
으로 사용할 수 있습니다. 이런 방식은 프로세스 입
프로세스 출력 이미지에서 모듈로 복사합니다.
력과 출력 이미지에도 적용됩니다.
프로세스 출력 이미지의 이점은 다음과 같습니다.
적절하게 탑재된 CPU인 CPU 417에서 프로세스
이미지의 크기는 파라미터로 지정할 수 있습니다. Z 출력은 비트별로 설정과 재설정이 가능합니다
프로세스 이미지를 확대하면 작업 메모리의 크기가 (I/O 비트에 직접 주소를 지정할 수는 없습니다).
줄어듭니다. 프로세스 이미지의 크기를 변경하면 Z 출력 설정은 출력 모듈에 액세스보다 훨씬 빠릅
CPU는 콜드 스타트와 동일한 효과로 작업 메모리의 니다. 예를 들어, I/O 버스에서 과도 복구 시간이
초기화를 실행합니다. 방지되며 시스템 메모리 응답 시간은 모듈 응답

46
1.5 주소 영역

시간보다 짧습니다. 그러므로 프로그램이 훨씬 일관성). 이런 일관성은 프로피넷 IO에서 IO 컨트롤


빠르게 실행됩니다. 러와 IO 디바이스 사이의 데이터 전송에서도 비슷합
Z 프로그램 사이클 동안 출력에서 다중 신호 상태 니다.
변화는 출력 모듈의 비트에 영향을 주지 않습니 분산 I/O의 스테이션을 3이나 4 이상의 바이
다. 프로그램 사이클의 마지막에서 모듈로 전송 트로 구성할 때는 일관된 사용자 데이터 영역을 지
되는 것은 출력의 신호 상태입니다. 정할 수 있습니다. 이 영역은 시스템 함수 SFC 14
Z 출력은 RAM에 위치하기 때문에 출력도 스캔할 DPRD_DAT 및 SFC 15 DPWR_DAT를 이용해 파라
수 있습니다. 출력은 디지털 출력 모듈에 쓸 수 미터 지정 대상 영역(예: 작업 메모리나 프로세스 이
있지만 읽을 수는 없습니다. 출력의 스캔과 링크 미지의 데이터 영역)으로 일관성 있게 전송됩니다.
에서는 스캔할 출력 비트를 추가로 저장할 필요
프로세스 이미지의 ‘정상’ 업데이트에서는 더
가 없습니다.
블 워드가 각각 전송된 다음에 인터럽트가 발생할
그러나 이런 이점이 있는 대신에 프로그램 응답 수 있다는 점에 유의하십시오. 예외적으로 신형
시간이 증가합니다. 20.2.4 “응답 시간” 은 프로그 CPU의 경우에는 사용자 데이터 블록(DB)을 하드웨
래머블 컨트롤러의 응답 시간에 대해 설명합니다. 어 구성 도구를 이용해 일관되게 구성한 경우 부분
프로세스 이미지를 이용하여 분산 I/O에서 사용자

1.5.3 일관된 사용자 데이터 데이터 블록(DB)이 전송됩니다. 또한 직접 액세스


를 이용하면 프로세스 이미지의 데이터 블록(DB)에
데이터 일관성이란 데이터를 블록으로 처리할 수
영향을 줄 수 있지만 데이터 일관성이 없어질 수도
있다는 의미입니다. 데이터 블록(DB) 전송에 대한
있습니다.
인터럽트는 금지되어야 하며, 전송하는 동안 수신
측에서 데이터 소스나 대상의 변경도 허용되지 않습 CPU 고유 데이터는 운영체제를 통해 글로벌 데
니다. 예를 들어, 4바이트를 개별적으로 전송하는 이터 통신, S7 기본 통신, S7 통신으로 데이터를 전
경우 각 바이트 사이에서 우선 순위가 높은 프로그 송하기 위한 최대 크기의 일정한 영역에 적용됩니다
램에 의해 전송 프로그램이 인터럽트될 수 있으며, (CP 매뉴얼에서 기술 규격 참조).
인터럽트가 발생한 프로그램이 소스 또는 대상 영역
진단 데이터와 파라미터는 항상 데이터 기록에 일
의 데이터를 변경할 수 있습니다.
관되게 전송됩니다(예: SFC 13 DPMRM_DG 또는
사용자 데이터에 직접 액세스(로딩과 전송)하는 SFB 54 RALRM를 이용한 진단 데이터나 SFB 52
경우 데이터는 바이트, 워드, 더블 워드 단위로 읽고 RDREC와 SFB 53 WRREC를 통해 모듈과 송수신되
씁니다. LAD/FBD를 포함한 MOVE 연산 박스 및 는 파라미터 데이터).
SCL을 사용한 기본 데이터 형식으로 변수 할당을 기
준으로 하는 로드와 전송 지시는 인터럽트 허용으로
간주합니다. 시스템 메모리와 작업 메모리 사이에 1.5.4 비트 메모리
인터럽트 없이 4바이트 이상의 데이터 블록(DB)을 비트 메모리라는 영역은 컨트롤러의 ‘보조 접촉
전송하려는 경우 시스템 함수 SFC 81 UBLKMOV를 기’ 로 간주될 수 있는 항목을 포함합니다. 비트 메
사용합니다. 모리는 주로 이진 신호 상태를 저장하는 데 사용됩
지능형 DP 슬레이브의 전송 영역이 몇 개의 일관 니다. 이 영역의 비트는 출력으로 처리될 수 있지만
된 블록으로 나뉘더라도 DP 슬레이브와 DP 마스터 구체적으로 표현되지는 않습니다. 비트 메모리는
사이의 데이터 전송은 완벽한 슬레이브를 위해 일관 CPU의 시스템 메모리 영역에 위치하므로 언제든지
성을 유지합니다. 노드 간 통신에서 데이터 일관성 이용할 수 있습니다. 비트 메모리에서 비트의 개수
은 직접 액세스의 경우와 동일합니다(1, 2, 4 바이트 는 CPU에 따라 다릅니다.

47
1 SIMATIC S7-300/400 프로그래머블 컨트롤러

비트 메모리는 블록 경계를 벗어난 유효한 중간 치독 인터럽트(시간 제어 프로그램 실행) 또는 간단


결과를 저장하는 데 사용되며 하나 이상의 블록에서 히 클록 메모리를 이용해 구현할 수 있습니다.
처리됩니다. 글로벌 데이터 블록의 데이터 외에 중 클록 메모리는 1:1의 표시 대 공간 비율로 신호 상
간 결과의 저장에 이용할 수 있는 데이터는 다음과 태가 주기적으로 변하는 비트로 구성됩니다. 비트
같습니다. 는 바이트로 합쳐지며 고정 주파수에 해당합니다
Z 모든 블록에서 이용할 수 있지만 현재 블록의 호 (그림 1.10 참조). 클록 메모리 비트의 개수는 CPU
출에서만 유효한 임시 로컬 데이터 의 파라미터 지정 시 지정할 수 있습니다. 클록 메모
Z 함수 블록에서만 이용할 수 있으며 다중 블록 호 리의 업데이트는 메인 프로그램의 실행과 비동기적
출에서 유효한 정적 로컬 데이터 으로 이루어진다는 점에 유의하십시오.

정전 유지 비트 메모리
비트 메모리 일부는 비트 메모리의 비트가 정전
상태에서도 신호 상태를 유지하는 ‘정전 유지’ 로
지정할 수 있습니다. 정전 유지 기능은 항상 메모리
바이트 0에서 시작하고 지정한 위치에서 끝납니다.
정전 유지 기능은 CPU의 파라미터를 지정할 때 설
정합니다. 추가 정보는 22.2.4 “정전 유지” 을 참조
하십시오.

클록 메모리
그림 1.10 클록 메모리 바이트의 내용
컨트롤러의 많은 절차에는 주기적 신호가 필요합
니다. 주기적 신호는 타이머(클록 펄스 발생기), 워

48
2 STEP 7 프로그래밍 소프트웨어

2 STEP 7 프로그래밍 소프트웨어

2.1 STEP 7 기본 패키지 프로젝트 데이터를 포함한 드라이브에는 메모리


용량이 충분해야 합니다. 프로젝트 복사와 같은 특
이 장에서는 STEP 7 기본 패키지인 버전 5.4 SP3 정 작업에서는 메모리 요구량이 증가할 수 있습니
에 대해 설명합니다. 1장에서는 프로그래머블 컨트 다. 스왑아웃 파일을 위한 공간이 부족하면 프로그
롤러의 속성을 개괄적으로 설명하는 반면, 이 장에
램 충돌과 같은 오류가 발생할 수 있습니다.
서는 프로그래머블 컨트롤러 속성의 설정 방법을 안
Windows 스왑아웃 파일을 포함하는 드라이브에는
내합니다.
프로젝트 데이터를 저장하지 않는 것이 좋습니다.
기본 패키지에는 STL(Statement List), 래더 다이
어그램(LAD), 펑션 블록 다이어그램(FBD) 프로그 설치를 위해 CD의 SETUP 프로그램을 사용하거

래밍 언어가 포함됩니다. 기본 패키지 외에 S7- 나, STEP 7이 이미 프로그래밍 기기에 설치된 경우


SCL(구조적 제어 언어), S7-GRAPH(순서 계획), 도 있습니다. CD에는 STEP 7 외에도 오토메이션 라
S7-HiGraph(상태 전이도)와 같은 옵션 패키지도 이 이선스 매니저(2.1.2 “오토메이션 라이선스 매니
용할 수 있습니다. 저” 참조)및 Acrobat Reader로 읽을 수 있는 STEP
7 전자 매뉴얼이 포함됩니다.

2.1.1 설치 MPI 인터페이스는 프로그래머블 컨트롤러에 온


STEP 7 V5.4는 MS Windows 2000 Professional 라인 연결 시 필요합니다. 프로그래밍 기기에는 다
SP4, MS Windows XP Professional SP2, 워크스테 중 포인트 인터페이스가 내장되어 있지만, PC는
이션 컴퓨터용 MS Windows Server 2003 SP2 MPI 모듈로 바꾸어야 합니다. PC 메모리 카드나 마
Standard Edition, MS Windows Vista 32-Bit 이크로 메모리 카드를 사용하려면 프로머
Ultimate 및 Business에서 실행되는 32비트 애플리 (prommer)가 필요합니다.
케이션입니다. 모든 운영체제에는 MS Internet
STEP 7 V5에는 중앙 서버에 저장한 프로젝트를
Explorer V6.0 이상이 필요합니다. STEP 7을 설치
하려면 관리자 권한이 필요하고, STEP 7을 사용하 여러 워크스테이션에서 동시에 편집할 수 있는 다중
려면 최소한 기본 사용자로 등록해야 합니다. 사용자 기능이 있습니다. ‘SIMATIC Workstation’
프로그램을 사용하려면 Windows 제어판에서 설정
STEP 7의 처리 속도를 높이거나 모듈이 수백 개
이 필요합니다. 나타난 대화상자에서는 프로토콜을
인 대형 프로젝트를 처리하려면 최신 처리 성능을
이용해 워크스테이션을 단일 사용자 시스템이나 다
가진 프로그래밍 기기나 PC를 사용해야 합니다.
중 사용자 시스템으로 지정할 수 있습니다.
STEP 7 V5.4는 설치 범위와 설치한 언어에 따라
약 650 - 900MB의 하드 디스크 용량을 차지합니 STEP 7을 제거하려면 설치 프로그램을 이용하거
다. 또한 스왑아웃(swap-out) 파일도 필요하며, 스 나 Windows 제어판에서 ‘Software’ 프로그램을
왑아웃 파일의 크기는 메인 메모리의 2배 이상이어 이용해 MS Windows와 동일한 방식으로 제거합니
야 합니다. 다.

49
2 STEP 7 프로그래밍 소프트웨어

2.1.2 오토메이션 라이선스 매니저 말 기능에 제공된 라이선스 키의 취급 정보를 준수


STEP 7을 사용하려면 라이선스(사용 권한)가 필 하십시오.
요합니다. 라이선스는 라이선스 인증서와 전자 라
이선스 키로 구성됩니다. 라이선스 키는 라이선스 2.1.3 SIMATIC Manager
키 디스크나 USB 스틱에 들어 있습니다. SIMATIC Manager는 STEP 7의 메인 도구이며
라이선스 키는 라이선스 키 디스크, USB 스틱, 로 Windows 화면에 표시되는 아이콘은 아래와 같습니
컬이나 네트워크로 연결된 하드 디스크에서 확인할 다.
수 있습니다. 라이선스 키는 하드 디스크에 있고 이
에 대한 쓰기 액세스 권한을 갖고 있는 경우에만 유
효합니다. 라이선스 키는 오토메이션 라이선스 매
니저를 이용해 전송하고 관리합니다. STEP 7을 사
용하려면 오토메이션 라이선스 매니저를 설치해야
합니다. 오토메이션 라이선스 매니저는 STEP 7과
함께 또는 단독으로 설치할 수 있습니다. SIMATIC Manager는 위의 아이콘을 더블 클릭하
여 시작합니다.
라이선스 인증서에 정의된 라이선스 키의 유형은
다음과 같습니다. 처음 시작하면 프로젝트 마법사가 나타납니다.
프로젝트 마법사는 새 프로젝트의 간단한 생성에 사
Z 단일 라이선스
용할 수 있습니다. 필요에 따라 메뉴 명령 파일 →
이 라이선스는 시간 제한이 없으며 컴퓨터 1대
‘새 프로젝트 마법사 ’ 를 통해 호출할 수 있으므로,
에서만 사용할 수 있습니다.
SIMATIC Manager 시작 시 마법사 표시 체크박스를
Z 부동 라이선스 사용하여 프로젝트 마법사를 비활성화시킬 수 있습
이 라이선스는 시간 제한이 없으며 네트워크를 니다.
통해 구입할 수 있습니다. 프로그래밍은 ‘프로젝트’ 를 열거나 생성해 시
Z 평가판 라이선스 작합니다. 제공된 예제 프로젝트를 사용하면 익숙
이 라이선스의 사용 기한은 14일 또는 처음 사용 해지는 데 도움이 됩니다.
한 날부터 특정 기간까지입니다. 이 라이선스는 파일 → 열기 를 선택해 예제 프로젝트 ZEn01_
테스트와 유효성 검사에 사용할 수 있습니다. 09_STEP7_Zebra 를 열면 분할된 프로젝트 창이 나
타납니다. 왼쪽에는 열려 있는 개체의 구조(개체 계
Z 라이선스 업그레이드
층)가 보이고, 오른쪽에는 선택한 개체가 보입니다.
이 라이선스를 이용하면 인증/라이선스 키를 이
왼쪽 창에서 + 기호가 있는 연산 박스를 클릭하면 구
전 버전에서 현재 버전으로 업데이트할 수 있습
조의 추가 레벨이 나타나고, 창의 왼쪽 영역에서 개
니다.
체를 선택하면 오른쪽 영역에 내용이 나타납니다
STEP 7을 설치할 때 하드 디스크에 적절한 라이 (그림 2.1 참조).
선스 키가 없으면 라이선스 키를 입력하라는 메시지
SIMATIC Manager에서는 STEP 7 환경의 개체로
가 나타납니다. 라이선스 키는 나중에 등록할 수도
작업합니다. 이런 ‘논리’ 개체들은 공장의 ‘실
있습니다.
제’ 개체에 해당합니다. 프로젝트는 전체 공장을 포
라이선스 키는 하드 디스크에서 특별하게 식별되 함하며, 스테이션은 프로그래머블 컨트롤러에 해당
는 블록에 저장됩니다. 라이선스 키의 우발적 손상 합니다. 프로젝트는 MPI 서브넷을 통해 서로 연결된
을 방지하려면 오토메이션 라이선스 매니저의 도움 스테이션을 여러 개 포함할 수 있습니다. 스테이션

50
2.1 STEP 7 기본 패키지

그림 2.1 SIMATIC Manager의 예

은 CPU를 포함하며, CPU는 프로그램(여기서는 S7 니다. 제목 표시줄과 창 제목은 구별하기 쉽도록 오


프로그램)을 포함합니다. 이 프로그램은 개체 블록 프라인 창과 다른 색상으로 설정할 수 있습니다. 색
과 같은 여러 개체를 담은 ‘컨테이너’ 이며, 특히 상을 다르게 설정하려면 옵션 → 사용자 정의를 선택
컴파일된 블록을 포함합니다. 하고 ‘보기’ 탭에서 항목을 수정합니다.

STEP 7 개체는 트리 구조를 통해 서로 연결됩니 옵션 → 사용자 정의를 선택하고 세션 언어, 아카이


다. 그림 2.2는 오프라인 보기에서 S7 애플리케이 브 프로그램, 프로젝트와 라이브러리의 저장 위치
션의 STEP 7 기본 패키지로 작업할 때 트리 구조의 와 같은 SIMATIC Manager의 기본 설정을 변경하고
가장 중요한 부분인 ‘기본 분기’ 를 보여 줍니다. 아카이브 프로그램을 구성합니다.
볼드체로 표시된 개체는 다른 개체의 컨테이너입니
다. 편집 순서

그림의 모든 개체는 오프라인 보기에서 이용할 수 다음은 일반적인 개체 편집을 위한 정보입니다.


있습니다. 이 개체들은 모두 프로그래밍 기기의 하 개체를 선택하려면 한 번 클릭하여 강조 표시합니
드 디스크에 있습니다. 프로그래밍 기기가 CPU(대 다(프로젝트 창의 양쪽에서 가능).
개 PLC 대상 시스템)에서 온라인 상태이면, 보기 →
개체 이름을 지정하려면 선택한 개체의 이름을 클
온라인을 선택해 온라인 보기로 전환할 수 있습니
릭(이름 주위에 프레임이 나타나고 창에서 이름을
다. 이 옵션은 대상 디바이스의 개체를 포함하는 다
변경할 수 있음)하거나 편집 → 개체 속성 메뉴 항목을
른 프로젝트 창을 표시합니다. 그림에서 이탤릭체
선택하고 대화상자에서 이름을 변경합니다. CPU와
로 표시된 개체는 더 이상 포함하지 않습니다.
같은 일부 개체에서는 관련 도구(애플리케이션, 여
현재 작업의 오프라인이나 온라인 여부는 열려 있 기서는 하드웨어 구성 도구)로 이름만 변경할 수 있
는 프로젝트 창의 제목 표시줄에서 확인할 수 있습 습니다.

51
2 STEP 7 프로그래밍 소프트웨어

그림 2.2 STEP 7 프로젝트에서 개체 계층

52
2.1 STEP 7 기본 패키지

개체를 열려면 열려는 개체를 더블 클릭합니다. 디버깅이 불가능한 온라인 연결을 제외하고, 라이
개체가 다른 개체의 컨테이너이면 SIMATIC 브러리에서 프로그램 또는 프로그램 영역의 생성은
Manager는 창의 오른쪽 영역에 개체의 내용을 표시 개체 생성과 동일합니다.
합니다. 개체가 최저 계층 레벨에 있으면 SIMATIC STEP 7 V5는 다음과 같은 프로그램을 포함한 표
Manager는 적절한 개체 편집 도구를 시작합니다. 준 라이브러리를 제공합니다.
예를 들어, 블록을 더블 클릭하면 편집기가 시작되
Z 시스템 함수 블록
므로 블록을 편집할 수 있습니다.
CPU에 통합된 오프라인 프로그래밍을 위한 시
이 책에서는 창 상단의 표준 메뉴 표시줄에 포함 스템 블록의 호출 인터페이스를 포함합니다.
된 메뉴 항목들을 연산자 순서로 설명합니다. 연산
Z S5-S7 변환 프로그램
자 인터페이스에 익숙한 프로그래머는 도구 모음의
S5/S7 변환기에 로드할 수 있는 함수를 포함합
아이콘을 사용합니다. 오른쪽 마우스 버튼 을 사용
니다(프로그램 변환 시 S5 표준 함수 블록을 대
하면 효과적입니다. 개체에서 오른쪽 마우스 버튼
체).
을 한 번 클릭하면 현재 편집 옵션을 보여주는 메뉴
가 나타납니다. Z T1-S7 변환 블록
T1-S7 변환기의 추가 로드 가능 함수와 함수 블
록을 포함합니다.
2.1.4 프로젝트 및 라이브러리
Z IEC 함수 블록
STEP 7에서 개체 계층 상단에 기본적으로 나타나
복합 데이터 형식 DATE_AND_TIME 및 STRING
는 개체는 프로젝트와 라이브러리입니다. STEP 7
의 변수 편집을 위한 로드 가능 함수를 포함합니
V5.2를 시작하면 프로젝트와 라이브러리를 다중 프
다.
로젝트로 조합할 수 있습니다(2.1.5 “다중 프로젝
트” 참조). Z 통신 블록
CP 모듈 제어를 위한 로드 가능 함수를 포함합
프로젝트는 자동화 작업에 필요한 데이터와 프로
니다.
그램을 시스템에 저장하는 데 사용됩니다. 기본적
인 항목은 다음과 같습니다. Z 기타 블록
타임스탬프와 시간 동기화용 블록을 포함합니
Z 하드웨어 구성 데이터
다.
Z 모듈의 파라미터 지정 데이터
Z PID 제어 블록
Z 네트워크를 통한 통신용 구성 데이터 폐쇄 루프 컨트롤을 위한 로드 가능 함수 블록을
Z 프로그램(코드와 데이터, 심볼, 소스) 포함합니다.
프로젝트의 개체는 계층 구조로 배열됩니다. 특 Z 조직 블록
정 개체에 포함된 모든 하위 개체를 편집하려면 먼 조직 블록용 템플릿을 포함합니다(시작 정보를
저 프로젝트를 열어야 합니다. 개체 편집 방법은 다 위한 변수 선언 필요).
음 절에서 설명합니다. 이러한 라이브러리의 개요는 25 “블록 라이브러
라이브러리는 재사용 가능한 프로그램 구성요소 리” 에서 확인할 수 있습니다. 예를 들어, 표준 블록
를 저장하는 데 사용합니다. 라이브러리는 계층적 을 포함한 S7 모듈을 구입하면 관련 설치 프로그램
으로 구성됩니다. 라이브러리는 STEP 7 프로그램 은 표준 블록을 하드 디스크에서 라이브러리로 설치
을 포함할 수 있으며, STEP 7 프로그램은 사용자 프 합니다. 설치된 블록은 라이브러리에서 프로젝트로
로그램(컴파일된 블록의 컨테이너), 소스 프로그램 복사할 수 있습니다. 라이브러리는 파일 → 열기를 선
의 컨테이너 및 심볼 테이블을 포함할 수 있습니다. 택해 열고 프로젝트와 동일한 방식으로 편집할 수

53
2 STEP 7 프로그래밍 소프트웨어

있습니다. 또한 자신만의 라이브러리를 생성할 수 2.1.6 온라인 도움말


도 있습니다. SIMATIC Manager의 온라인 도움말은 프로그래

파일 → 새로 만들기 메뉴 항목을 선택하면 개체 계


밍 세션 동안 필요한 정보를 제공하므로 인쇄된 설

층의 상단에 새 개체(프로젝트, 라이브러리)가 생성 명서를 참조할 필요가 없습니다. 도움말 메뉴를 선

됩니다. SIMATIC Manager에서 프로젝트나 라이브 택하면 정보가 필요한 주제를 선택할 수 있습니다.

러리를 생성하는 디렉터리 구조의 위치는 옵션 → 사 예를 들어, 온라인 도움말 옵션 ‘시작하기’ 는

용자 정의 메뉴 항목을 선택하거나 ‘새 대화상자’ SIMATIC Manager의 사용법에 대한 개요를 제공합

에서 지정해야 합니다. 니다.


도움말 → 내용을 선택하면 모든 애플리케이션에
삽입 메뉴는 프로그램에 새 블록을 추가하는 경우
서 중앙 STEP 7 도움말 기능을 시작합니다. 온라인
처럼 기존 개체에 새 개체를 추가하는 데 사용합니
도움말에는 기본적인 지식이 모두 들어 있습니다.
다. 그러나 삽입 메뉴를 사용하기 전에 먼저
시작 페이지의 메뉴 표시줄에서 ‘Home’ 심볼을
SIMATIC Manager 창의 왼쪽 영역에서 새 개체를 삽
클릭하면 STEP 7의 시작, 구성과 프로그래밍, 테스
입할 개체 컨테이너를 선택해야 합니다.
트와 문제 해결, 인터넷에서 SIMATIC과 같은 STEP
개체 컨테이너와 개체는 편집 → 복사 및 편집 → 붙 7의 중심 주제에 대한 개요가 나타납니다.
여넣기를 선택하거나, Windows에서와 같이 한쪽 창
도움말 → 컨텍스트별 도움말 F1은 상황에 맞는 도움
에서 선택한 개체를 마우스로 끌어 다른 창에 놓는
말을 제공하며, F1을 누르면 마우스로 선택한 개체
방식으로 복사합니다. SIMATIC Manager에서는 개
또는 현재 오류 메시지와 관련된 정보를 확인할 수
체나 개체 컨테이너를 삭제하면 복구할 수 없습니다.
있습니다.
심볼 표시줄에는 화살표와 물음표를 포함한 버튼
2.1.5 다중 프로젝트 이 있습니다. 이 버튼을 클릭하면 물음표가 마우스
다중 프로젝트에서 프로젝트와 라이브러리는 엔 포인터에 추가됩니다. 물음표가 추가된 ‘도움말’
티티에 통합됩니다. 다중 프로젝트에서는 프로젝트 마우스 포인터로 화면에서 심볼이나 메뉴 명령과 같
간의 S7 연결과 같은 통신 연결을 처리할 수 있습니 은 개체를 클릭하면 관련된 온라인 도움말을 확인할
다. 다중 프로젝트는 거의 단일 프로젝트처럼 취급 수 있습니다.
할 수 있습니다. 제한 사항: 직접 데이터 교환( ‘노
드 간 통신’ )이나 글로벌 데이터 통신을 통해 서로
연결된 스테이션은 동일한 프로젝트에 존재해야 합 2.2 프로젝트 편집
니다.
프로젝트를 설정할 때는 생성된 데이터를 위한
다중 프로젝트에서는 다양한 직원의 개별 프로젝
‘컨테이너’ 를 만든 후 데이터를 생성하여 이 컨테
트를 문제 없이 동시에 처리할 수 있습니다. 각 프로
이너를 채웁니다. 일반적으로 사용자는 관련 하드
젝트는 네트워크로 연결된 환경에서 서로 다른 디렉
웨어를 사용하여 프로젝트를 생성하고, 하드웨어
터리에 존재할 수 있습니다. 서브네트워크 및 연결
또는 최소한 CPU를 구성하며, 사용자 프로그램용
의 일치와 같은 크로스 프로젝트 기능은 다중 프로
컨테이너를 다시 수신합니다. 그러나 하드웨어를
젝트의 처리 시 중앙에서 수행됩니다. 서버 중앙 저
전혀 이용하지 않고 프로젝트 컨테이너에 S7 프로
장소의 경우, 운영체제로는 MS Windows 2000
그램을 직접 삽입할 수도 있습니다. 주소 수정, CPU
Server 및 MS Windows Server 2003만 가능합니다.
설정, 연결 구성과 같은 모듈의 초기화는 하드웨어
또한 개별 프로젝트를 더 작게 세분화할 경우에는 구성 도구를 통해서만 가능하다는 점에 유의하십시
다중 프로젝트를 만드는 편이 유리합니다. 오.

54
2.2 프로젝트 편집

전체 프로젝트 편집 과정에서는 SIMATIC 모듈 카탈로그가 화면에 표시되지 않으면, 보기 →


Manager를 사용하길 강력히 권장합니다. Windows 카탈로그를 선택해 모듈 카탈로그를 불러옵니다.
탐색기를 이용하여 프로젝트 구조 안에서 파일이나 ‘SIMATIC 300’ 및 ‘RACK 300’ 의 경우, 마
디렉터리를 생성, 복사 또는 삭제하거나 이름을 변 우스로 레일을 선택하고 클릭한 상태로 스테이션 창
경(!)하면 SIMATIC Manager에 문제가 발생할 수 있 에서 위쪽 영역의 아무 위치에든 끌어다 놓아(드래
습니다. 그&드롭) 구성을 시작합니다. 이렇게 하면 레일의
슬롯을 표시하는 테이블이 나타납니다.
2.2.1 프로젝트 생성 다음으로 모듈 카탈로그에서 필요한 모듈을 선택
하고, 위에 설명한 절차를 이용해 선택한 모듈을 적
프로젝트 마법사 절한 슬롯으로 드래그&드롭합니다. 프로젝트 구조
STEP 7 마법사는 새 프로젝트 생성에 유용합니 를 추가로 편집하려면 스테이션에는 슬롯 2의 CPU
다. 사용한 CPU를 지정하면 마법사는 S7 스테이션 314처럼 하나 이상의 CPU가 필요합니다. 다른 모
과 선택한 CPU뿐 아니라 S7 프로그램 컨테이너, 소 듈은 나중에 추가할 수 있습니다. 하드웨어 구성의
스 컨테이너 및 선택한 조직 블록을 포함한 블록 컨 편집에 대해서는 2.3 “스테이션 구성” 에서 자세하
테이너를 이용하여 프로젝트를 생성합니다. 프로젝 게 설명합니다.
트 마법사는 파일 → ‘새 프로젝트’ 마법사를 이용해
스테이션을 저장하고 컴파일한 후 종료하고
시작합니다. SIMATIC Manager로 돌아갑니다. 하드웨어 구성 도
구 외에 개방 스테이션에서도 CPU를 표시할 수 있
S7 스테이션을 이용한 프로젝트 생성 습니다.
이 절은 프로젝트를 ‘수동’ 으로 생성할 경우에
SIMATIC Manager는 CPU 구성 시 모든 개체를
필요한 작업을 개괄적으로 설명합니다. 개체 편집
포함한 S7 프로그램도 생성합니다. 이제 프로젝트
을 위한 작업자 입력에 대한 일반 정보는
구조가 완성되었습니다.
2.1.3 “SIMATIC Manager” 를 참조하십시오.
S7 프로그램의 내용 보기
새 프로젝트 생성
CPU를 열면 프로젝트 창의 오른쪽 영역에 S7 프
파일 → 새로 만들기를 선택하고 대화상자에 이름
로그램 및 연결 테이블의 심볼이 표시됩니다.
을 입력한 다음 필요한 경우 유형과 저장 위치를 변
S7 프로그램을 열면 창의 오른쪽 영역에 컴파일
경하고 ‘확인’ 또는 ‘뒤로’ 를 클릭합니다.
된 사용자 프로그램(컴파일된 블록)의 심볼, 소스 프
프로젝트에 새 스테이션 삽입 로그램용 컨테이너 및 심볼 테이블이 표시됩니다.

프로젝트를 선택하고, 삽입 → 스테이션 → SIMATIC 사용자 프로그램(블록)을 열면 창의 오른쪽 영역


300 스테이션(여기서는 S7-300)을 선택해 스테이션 에 컴파일된 구성 데이터(시스템 데이터)의 기호 및
을 삽입합니다. 메인 프로그램(OB 1)의 비어 있는 조직 블록이 표시
됩니다.
스테이션 구성
프로젝트 창의 왼쪽 영역에서 프로젝트 옆의 + 기 사용자 프로그램 개체의 편집
호를 클릭하고 스테이션을 선택하면 창 오른쪽 영역 이제 개체 계층의 최저 레벨에 왔습니다. OB 1을
에 하드웨어 개체가 표시됩니다. 하드웨어를 더블 처음 열면 개체 속성 창이 표시되고 조직 블록에서
클릭해 하드웨어 구성 도구를 시작하고 하드웨어 구 프로그램을 편집하는 데 필요한 편집기가 열립니
성 테이블을 편집합니다. 다. 삽입→ 블록→ ...(블록은 강조 표시)을 열고 목록

55
2 STEP 7 프로그래밍 소프트웨어

에서 필요한 블록 유형을 선택해 추가 편집이 필요 알려진 모든 ‘기본 개체’ 의 목록을 유지합니다.


한 다른 비어 있는 블록을 추가합니다. 예제 프로젝트와 표준 라이브러리는 STEP 7과 함께
열기를 실행하면 시스템 데이터 개체는 이용 가능 설치하고, 사용자 프로젝트, 다중 프로젝트 및 사용
한 시스템 데이터 블록(DB)의 목록을 보여 줍니다. 자 라이브러리는 사용자가 직접 설치합니다.
컴파일된 구성 데이터가 수신됩니다. 이 시스템 데 파일 → 관리를 선택하면 이름과 경로가 지정된 알
이터 블록(DB)은 컨테이너 스테이션에서 하드웨어 려진 모든 프로젝트와 라이브러리의 목록이 표시됩
개체를 통해 편집합니다. 이런 방법으로 PLC → 다운 니다. 더 이상 표시하지 않을 프로젝트나 라이브러
로드를 선택하여 시스템 데이터를 CPU로 전송하고 리는 목록에서 삭제( ‘숨김’ )할 수 있고, 목록에
CPU의 파라미터를 지정할 수 있습니다. 새 프로젝트와 라이브러리를 추가( ‘표시’ )할 수
개체 컨테이너 소스는 비어 있는 상태입니다. 소 도 있습니다.
스를 선택하고 삽입 → S7 소프트웨어 → STL 소스를 이
파일 → 재조직을 선택하면 삭제로 생긴 공백이 제
용해 비어 있는 소스 텍스트 파일을 삽입하거나 삽
거되고 조각 모음 프로그램에서 하드 디스크의 데이
입 → 외부 소스를 이용해 ASCII 형식 또는 다른 편집
터 메모리를 최적화하는 방식과 비슷하게 데이터 메
방법으로 생성한 소스 텍스트 파일을 소스 컨테이너
모리가 최적화됩니다. 재조직은 데이터 재배치에
로 전송할 수 있습니다.
따라 시간이 걸릴 수도 있습니다.

S7 스테이션 없이 프로젝트 생성 또한 프로젝트나 라이브러리는 파일 → 아카이브를


선택해 보관할 수 있습니다. 이 경우에 SIMATIC
원한다면 먼저 스테이션을 구성하지 않고도 프로
Manager는 선택한 개체(모든 하위 디렉터리와 파일
그램을 생성할 수 있습니다. 스테이션 없이 프로젝
을 포함한 프로젝트나 라이브러리 디렉터리)를 압
트를 생성하려면 프로그램용 컨테이너를 직접 생성
축 형식으로 아카이브 파일에 저장합니다.
해야 합니다. 프로젝트를 선택하고 삽입 → 프로그램
→ S7-프로그램을 선택해 S7 프로그램을 생성합니 STEP 7 V5.4 SP3부터는 프로젝트와 라이브러리
다. 이렇게 생성한 S7 프로그램에서는 개체 컨테이 를 아카이브에 저장하고 삭제할 수 있는 아카이브
너 소스 및 블록이 생성됩니다. 블록은 비어 있는 프로그램 PKZip V8.6 CLI를 제공합니다. 아카이브
OB 1을 포함합니다. 프로그램 ARJ.exe는 MS Windows Vista에 적합하
지 않습니다. 또한 ARJ 아카이브는 PKZip V8.6 CLI
라이브러리 생성 를 이용해 열 수 있습니다.
프로그램을 한 번 이상 사용할 경우에는 라이브러
프로젝트와 라이브러리는 아카이브(압축) 상태
리 아래에 프로그램을 생성할 수도 있습니다. 이 방
로 편집할 수 없습니다. 아카이브 개체는 파일 → 검
법을 이용하면 표준 프로그램을 항상 이용할 수 있
색 을 선택해 압축을 푼 후 편집할 수 있습니다. 검
으며 전체나 일부를 현재 프로그램에 복사할 수 있
색한 개체는 프로젝트나 라이브러리 관리 시스템
습니다.
에 자동으로 저장됩니다.
라이브러리에서 온라인 연결은 불가능하므로
‘아카이브’ 탭에서 아카이브 저장과 검색을 설
STEP 7 프로그램의 디버깅은 프로젝트 안에서만 가
정할 때는 옵션→사용자 정의를 선택합니다. 이런 과
능하다는 점에 유의하십시오.
정은 대상 디렉터리의 아카이브 저장과 검색 설정
또는 ‘아카이브 경로의 자동 생성’ 에 사용할 수
2.2.2 관리, 재조직, 아카이브 저장 있으며, 아카이브 파일의 이름은 프로젝트 이름에
SIMATIC Manager는 사용자 프로젝트, 라이브러 서 자동 생성되므로 아카이브 저장에서는 추가 지정
리, 예제 프로젝트 및 다중 프로젝트에 따라 정렬된 이 필요 없습니다.

56
2.2 프로젝트 편집

CPU에서 프로젝트를 아카이브에 저장 버전 2 프로젝트는 STEP 7의 버전 V2, V3, V4,

적절하게 설계된 CPU에서는 프로젝트를 CPU의 V5.0을 이용해 생성하고 편집할 수 있습니다(그

로드 메모리인 메모리 카드에 아카이브(압축) 형식 림 2.3 참조). STEP 7 V5.1은 버전 3 프로젝트만 생

으로 저장할 수 있습니다. 심볼이나 소스 파일과 같 성하고 편집할 수 있습니다.

이 사용자 프로그램의 완전한 실행에 필요한 모든 STEP 7 Version 5.3까지는 파일 → 버전 1 프로젝트


프로젝트 데이터는 아카이브 형식으로 기계나 공장 열기를 선택해 V1 프로젝트를 V2 프로젝트로 변환
에서 바로 저장할 수 있습니다. 프로그램의 수정이 할 수 있습니다. 파일 → 열기 를 선택하면 V2 프로젝
나 보완이 필요한 경우에는 저장된 데이터를 하드 디 트를 열고 V2 프로젝트를 V3 프로젝트로 변환할 수
스크에 로드하고 사용자 프로그램을 수정한 다음 수 있습니다. 그러나 V2 프로젝트를 생성하거나 프로
정한 프로젝트 데이터를 CPU에 다시 저장합니다. 젝트를 V2 프로젝트로 저장하는 것은 불가능합니
다.
프로젝트 데이터를 메모리 카드 또는 CPU에 삽
입한 마이크로 메모리 카드에 로드할 때는 프로젝트
를 열고 CPU를 표시한 다음, PLC → 메모리 카드로 저
2.2.4 다중 프로젝트의 생성 및 편집
장을 선택합니다. 반대로 저장한 데이터를 프로그래
파일 → 새로 만들기를 이용하면 대화상자에서 ‘다
밍 기기로 다시 전송할 때는 PLC → 메모리 카드에서
중 프로젝트’ 를 유형으로 선택해 SIMATIC
검색을 선택합니다. CPU에 삽입한 메모리 카드에
Manager에서 새 다중 프로젝트를 생성할 수 있습니
쓸 때는 시스템 데이터와 사용자 프로그램을 포함한
다. 다중 프로젝트를 선택하고 파일 → 다중 프로젝트
로드 메모리의 전체 내용이 CPU에 씌어집니다.
→ 다중 프로젝트 생성을 이용하면 다중 프로젝트에서
하드 디스크에서 프로젝트를 생성하지 않고 CPU 새 프로젝트나 라이브러리를 생성할 수 있습니다.
에 저장된 프로젝트 데이터를 다시 가져오려면, PLC 새로 생성한 프로젝트나 라이브러리는 앞 장에서 설
→ 액세스 가능 노드 표시를 통해 관련 CPU를 선택합 명한 대로 처리할 수 있습니다. 파일 → 다중 프로젝트
니다. 메모리 카드를 프로그래밍 기기의 모듈 소켓 → 다중 프로젝트에 삽입을 선택하면 기존의 프로젝트
에 끼우려면 전송 전에 파일 → S7 메모리 카드 → 열기 와 라이브러리를 다중 프로젝트에 통합할 수 있습니
를 통해 메모리 카드를 선택합니다. 다.

또한 프로젝트와 라이브러리를 다중 프로젝트에


2.2.3 프로젝트 버전 서 다시 제거하고, 프로젝트와 라이브러리를 표시
하며, 파일 → 다중 프로젝트 → 다중 프로젝트에서 제거
STEP 7 V5에서 이용할 수 있는 SIMATIC 프로젝
를 선택할 수 있습니다. 이 과정에서 프로젝트나 라
트의 버전은 세 가지입니다. STEP 7 V1은 버전 1 프
이브러리는 삭제되지 않습니다.
로젝트를 생성하고, STEP 7 V2는 버전 2 프로젝트
를 생성하며, STEP 7 V3/V4/V5.0는 버전 2와 3 프 파일 → 다중 프로젝트 → 프로젝트 조정을 선택하면
로젝트를 생성하고 편집하는 데 사용할 수 있습니 크로스 프로젝트 연결의 일치를 도와주고 서브넷을
다. STEP 7의 버전 V5.1부터는 V3 프로젝트와 라이 조합하는 마법사를 시작할 수 있습니다(2.4.6 “다
브러리를 생성 및 편집할 수 있습니다. 중 프로젝트에서 프로젝트 일치” 참조).

버전 1 프로젝트는 파일 → 열기 버전 1 프로젝트 파일 → 다중 프로젝트 → 마스터 데이터 라이브러리로


를 선택해 버전 2 프로젝트로 변환할 수 있습니다. 정의를 선택하면 다중 프로젝트의 라이브러리 중 1
프로그램을 포함한 프로젝트 구조, 컴파일된 버전 1 개를 ‘마스터 데이터 라이브러리’ 로 구분할 수 있
블록, STL 소스 프로그램, 심볼 테이블 및 하드웨어 습니다. 예를 들어, 마스터 데이터 라이브러리는 다
구성은 바뀌지 않습니다. 중 프로젝트에서 프로젝트의 공통 블록을 포함합니

57
2 STEP 7 프로그래밍 소프트웨어

그림 2.3 프로젝트를 여러 버전으로 편집

다. 이 라이브러리는 하나의 단일 S7 프로그램만 포 고 오프라인으로 수행합니다. 하드웨어 구성 도구


함해야 합니다. 는 모듈의 주소와 파라미터 지정에도 사용할 수 있
습니다. 하드웨어 구성은 계획 단계에서 생성할 수
또한 메뉴 명령 파일 → 다른 이름으로 저장, 파일 →
도 있고, 하드웨어가 설치될 때까지 기다릴 수도 있
재조직, 파일 → 관리 및 파일 → 아카이브도 다중 프로
습니다.
젝트에서 사용할 수 있으며, 단일 프로젝트처럼 작
용합니다(2.2.2 “관리, 재조직, 아카이브 저장” 참 하드웨어 구성 도구는 스테이션을 선택하고 편집
조). 마찬가지로, 아카이브에 저장된 다중 프로젝트 → 개체 열기 를 이용하거나 열려 있는 컨테이너
는 아카이브 저장이 가능한 CPU의 로드 메모리에 SIMATIC 300/400 스테이션에서 하드웨어 개체를
전송할 수 있습니다. 그러나 구성요소가 네트워크 더블 클릭하여 시작합니다. 하드웨어 구성의 기본
드라이브에 분산된 다중 프로젝트를 아카이브에 저 설정은 옵션 → 사용자 정의를 선택해 수행합니다.
장하는 경우에는 제한이 있습니다. 구성을 완료하고 스테이션 → 일관성 검사를 선택하
면 항목의 오류 여부를 확인할 수 있습니다. 스테이
션 → 저장을 선택하면 하드 디스크에서 프로젝트의
모든 파라미터 할당 데이터가 하드웨어 구성 테이블
2.3 스테이션 구성
에 저장됩니다.
프로그래머블 컨트롤러의 구성에는 하드웨어 구 스테이션 → 저장 및 컴파일을 선택하면 하드웨어 구
성 도구를 사용합니다. 구성은 CPU에 연결하지 않 성 테이블이 저장 및 컴파일되며 시스템 데이터 개

58
2.3 스테이션 구성

그림 2.4 하드웨어 구성 도구에서 스테이션 창의 예

체의 컴파일된 데이터가 오프라인 컨테이너 블록에 를 시스템 데이터에 저장합니다. 시스템 구성이 같
저장됩니다. 컴파일을 완료한 후 구성 데이터는 으면 검사 합계도 동일하므로 온라인과 오프라인 구
PLC → 다운로드를 선택해 CPU로 전송할 수 있습니 성을 쉽게 비교할 수 있습니다.
다. 온라인 컨테이너 블록의 시스템 데이터 개체는 검사 합계는 시스템 데이터 개체의 속성입니다.
CPU의 현재 구성 데이터를 나타냅니다. PLC → 업로 검사 합계를 판독하려면 S7 프로그램에서 블록 컨
드를 선택하면 이 데이터를 하드 디스크로 ‘반환’ 테이너를 열고, 시스템 데이터 개체를 선택한 다음,
할 수 있습니다. 편집 → 개체 열기를 선택해 시스템 데이터 개체를 엽
하드웨어 구성 데이터는 스테이션 → 내보내기를 니다.
선택해 내보냅니다. STEP 7은 모듈의 구성 데이터 또한 사용자 프로그램도 적절한 검사 합계를 포함
와 파라미터 지정 데이터를 포함하는 ASCII 형식의 합니다. 사용자 프로그램의 검사 합계는 블록의 속
파일을 생성합니다. 사용자는 ‘판독 가능한’ 영문 성에서 시스템 데이터의 검사 합계와 함께 확인할
자 데이터를 포함한 텍스트 형식이나 16진수 데이 수 있습니다. 블록 컨테이너를 선택하고 ‘검사 합
터를 포함한 압축 형식 중에서 선택할 수 있습니다. 계’ 탭에서 편집 → 개체 속성을 선택합니다.
또한 이런 형식으로 구조화된 ASCII 파일을 들여올
수 있습니다. 스테이션 창
열기를 실행하면 하드웨어 구성 도구는 스테이션
검사 합계 창과 하드웨어 카탈로그를 표시합니다(그림 2.4 참
하드웨어 구성 도구는 정확하게 컴파일된 스테이 조). 스테이션 창은 확대 또는 최대화할 수 있어 편
션을 통해 검사 합계를 생성하고 생성한 검사 합계 집이 용이합니다. 여러 마운팅 랙을 사용하는 경우,

59
2 STEP 7 프로그래밍 소프트웨어

위쪽 영역에는 인터페이스 모듈을 통해 서로 연결된 하드웨어 구성 테이블


S7 스테이션이 테이블(마운팅 랙당 1개) 형식으로 하드웨어 구성 도구는 S7 스테이션(마운팅 랙),
표시됩니다. 분산 I/O를 연결하면 DP 마스터 시스템 DP 스테이션 또는 IO 디바이스를 각각 나타내는 테
또는 프로피넷 IO 시스템의 구성이 지정되며, DP 스 이블을 사용하여 동작합니다. 하드웨어 구성 테이
테이션과 IO 디바이스는 심볼 형식으로 표시됩니 블은 모듈이 배열된 슬롯이나 주소와 주문 번호 같
다. 스테이션 창의 아래쪽 영역에는 위쪽 영역에서 은 모듈의 속성을 보여 줍니다. 모듈 라인을 더블 클
선택한 랙이나 DP 슬레이브의 상세 보기를 제공하 릭하면 모듈의 속성 창이 열리고 모듈의 파라미터를
는 하드웨어 구성 테이블이 표시됩니다. 지정할 수 있습니다.

하드웨어 카탈로그 2.3.1 모듈 배열


‘SIMATIC 300’ 및 ‘RACK 300’ 의 경우, 마
하드웨어 카탈로그는 보기 → 카탈로그를 선택해
우스로 모듈 카탈로그에서 레일을 클릭하고 스테이
숨기거나 표시할 수 있습니다. 하드웨어 카탈로그
션 창 위쪽 영역의 아무 위치에나 끌어다 놓아(드래
는 STEP 7에 알려진 이용 가능한 모든 마운팅 랙,
그&드롭) 구성을 시작합니다. 중앙 랙의 비어 있는
모듈 및 인터페이스 하위 모듈을 포함합니다. 옵션
하드웨어 구성 테이블은 표시되지 않습니다. 다음
→ 카탈로그 프로필 편집을 선택하면 선택한 구조에서
으로 모듈 카탈로그에서 필요한 모듈을 선택하고,
작업할 모듈만 표시하는 자신만의 하드웨어 카탈로 위에 설명한 방식으로 선택한 모듈을 적절한 슬롯으
그로 편집할 수 있습니다. 제목 표시줄을 더블 클릭 로 드래그&드롭합니다. 드래그&드롭이 가능한 슬
하여 스테이션 창의 오른쪽 가장자리에 하드웨어 카 롯은 배경이 녹색입니다. ‘No Parking’ 심볼은 선
탈로그를 삽입하거나 다시 해제할 수 있습니다. 택한 모듈을 대상 슬롯에 옮길 수 없다는 의미입니
다.

하드웨어 업데이트 설치 또한 삽입할 슬롯을 표시한 후 삽입 → 개체 삽입을


선택할 수도 있습니다. 하드웨어 구성 도구는 팝업
옵션 → HW 업데이트 설치를 선택하면 하드웨어 카
창에서 슬롯을 삽입할 수 있는 모든 모듈을 보여주
탈로그의 구성요소를 업데이트할 수 있습니다. 나
므로, 팝업 창에서 원하는 모듈을 선택할 수 있습니
타나는 대화상자에서는 인터넷에서 업데이트를 다
다.
운로드할지 CD에서 복사할지 여부를 선택합니다.
1층 S7-300 스테이션의 경우에 슬롯 3은 확장 랙
인터넷 주소를 입력하고 경로를 저장합니다. ‘설
의 인터페이스 모듈을 설치할 수 있도록 비어 있습
치’ 버튼을 클릭하면 하드웨어 구성 도구는 데이터
니다.
를 하드웨어 카탈로그로 전송합니다.
카탈로그에서 선택한 랙을 끌어 스테이션 창에 놓
으면 다른 랙의 하드웨어 구성 테이블을 생성할 수
제품 지원 정보
있습니다. S7-400 시스템에서 서로 연결되지 않은
도움말 → 제품 지원 정보를 선택하면 선택한 모듈 랙(더 정확히 말하면 관련된 수신 인터페이스 모듈)
의 인터넷 정보를 표시할 수 있습니다. 이 기능을 사 에는 Send IM의 속성 창에서 ‘링크’ 탭을 통해 인
용하려면 먼저 옵션 →사용자 정의를 선택해 활성화 터페이스가 할당됩니다(모듈을 선택한 다음 편집 →
한 후 유효한 인터넷 주소를 설정해야 합니다. 선택 개체 속성 선택).

한 모듈은 하드웨어 카탈로그에 있을 수도 있고 이 분산 I/O 스테이션의 정렬에 대해서는 20.4 “분


미 구성한 랙에 있을 수도 있습니다. 산 I/O를 통한 통신” 에서 설명합니다.

60
2.3 스테이션 구성

2.3.2 모듈의 주소 지정 을 클릭하면 심볼이 심볼 테이블로 전송됩니다. ‘확


모듈을 정렬할 때 하드웨어 구성 도구는 모듈 시 인’ 버튼을 클릭하여 대화상자를 종료합니다.
작 주소를 자동으로 할당합니다. 이 주소는 ‘주소’
탭에 있는 관련 모듈의 개체 속성을 통해 스테이션
2.3.3 모듈의 파라미터 지정
창의 아래쪽 영역에서 확인할 수 있습니다. S7-300
모듈의 파라미터를 지정할 때는 모듈의 속성을 정
모듈의 ‘주소’ 탭에서 ‘시스템 기본값’ 옵션의
의합니다. 모듈의 파라미터 지정은 기본 파라미터
선택을 취소하면 모듈 주소를 변경할 수 있습니다.
를 변경할 때만 필요합니다. 파라미터는 모듈이 하
모듈 주소를 변경할 때는 S7-300 및 S7-400 시스
드웨어 구성 테이블에 나타날 때만 지정할 수 있습
템의 주소 지정 규칙뿐 아니라 개별 모듈의 주소 지
니다.
정 용량을 준수하십시오.
입력과 출력의 시작 주소를 이론적으로 다르게 사 구성 테이블에서 모듈을 더블 클릭하거나, 모듈

용할 수 있는 모듈이 있습니다. 그러나 제품 매뉴얼 을 선택한 다음 편집 → 개체 속성을 선택합니다. 이

에서 특별히 유의할 정보가 있습니다. 즉, 대부분의 모듈에 지정할 수 있는 파라미터가 포함된 여러 탭

함수와 통신 모듈은 입력과 출력에서 시작 주소가 이 대화상자에 표시됩니다. 이 방법을 이용해 CPU

동일해야 한다는 것니다. 의 파라미터를 지정할 때 사용자 프로그램의 실행


특성을 지정하게 됩니다.
S7-400에서 모듈 시작 주소를 할당할 때는 종속
프로세스 이미지에도 할당할 수 있습니다. 중앙 랙 일부 모듈에서는 시스템 함수를 이용하여 사용자
에서 CPU가 1개 이상이면 멀티프로세서 모드가 자 프로그램을 통해 런타임에서 파라미터를 설정할 수
동으로 설정되며 모듈은 CPU에 할당해야 합니다. 있습니다(22.5.2 “모듈 파라미터 지정을 위한 시
스템 블록” 참조).
보기 → 주소 개요를 이용하면 선택한 CPU에서 현
재 사용 중인 모든 모듈 주소를 포함한 창이 나타납
니다. 2.3.4 MPI를 이용한 모듈의 네트워크 구축
MPI 버스 또는 통신 버스의 모듈은 MPI 주소를 갖 모듈 속성을 이용해 MPI 종속 노드(서브넷)를 정
습니다. MPI 주소는 변경할 수도 있습니다. 그러나 의합니다. 하드웨어 구성 테이블에서 CPU를 선택
새 MPI 주소는 구성 데이터를 CPU에 전송한 후 즉 하거나 CPU에 삽입된 MPI 인터페이스 카드를 선택
시 반영된다는 점에 유의하십시오. 하고 편집 → 개체 속성을 선택하여 엽니다. 나타난 대
화상자는 ‘일반’ 탭의 ‘인터페이스’ 상자에 있
사용자 데이터 주소의 심볼 는 ‘속성’ 버튼을 포함합니다. ‘속성’ 버튼을
하드웨어 구성 도구에서는 전송할 입력과 출력 심 클릭하면 ‘파라미터’ 탭을 포함한 다른 대화상자
볼(이름)을 심볼 테이블에 할당할 수 있습니다. 가 나타나며, 이 대화상자에서 적절한 서브넷을 찾
을 수 있습니다.
디지털과 아날로그 모듈을 정렬하고 주소를 지정
한 후에 스테이션 데이터를 저장합니다. 그 다음에 또한 선택한 CPU에는 지정된 MPI 주소를 설정할
모듈(라인)을 선택하고 편집 → 심볼을 선택합니다. 수도 있습니다. MPI 연결을 포함한 구형 S7-300
그런 다음 나타나는 창에서는 심볼, 데이터 형식 및 CPU, FM, CP는 CPU에서 파생된 MPI 주소를 자동
주석을 각 채널의 절대 주소에 할당할 수 있습니다( 으로 수신합니다.
디지털 모듈에서는 비트별로, 아날로그 모듈에서는 최상위 MPI 주소는 서브넷에 할당된 최상위 MPI
워드별로). 주소와 같거나 더 높아야 합니다. FM과 CP는 자동
‘심볼 추가’ 버튼은 심볼이 없는 절대 주소 대신 할당된다는 점을 고려하십시오! 서브넷에서 모든 노
에 절대 주소를 심볼로 입력합니다. ‘적용’ 버튼 드의 값은 동일해야 합니다.

61
2 STEP 7 프로그래밍 소프트웨어

팁: 동일한 CPU 유형을 가진 스테이션이 여러 개 기타 입력과 출력에 대한 모니터링 및 수정 방법


인 경우, 스테이션의 CPU마다 다른 이름(식별자)을 은 2.7.3 “변수 모니터링 및 수정” 및 2.7.4 “변수
할당합니다. CPU에는 ‘CPUxxx(1)’ 이라는 이름 강제 출력” 을 참조하십시오.
이 기본적으로 할당되므로 서브넷에서는 MPI 주소
로만 CPU를 구별할 수 있습니다. 이름을 직접 할당
하지 않으려면 기본 식별자를 ‘CPU xxx(1)’ 에서
2.4 네트워크 구성
‘CPUxxx(n)’ 으로 변경하십시오. 여기서 ‘n’ 은
MPI 주소입니다. SIMATIC과의 통신을 위한 기본 요건은 S7 스테
이션의 네트워크 구축입니다. 필요한 개체는 서브
MPI 주소를 할당할 때는 서비스나 유지보수 목적
넷 및 스테이션에서 통신 기능이 있는 모듈입니다.
으로 나중에 프로그래밍 기기나 오퍼레이터 패널
새 서브넷과 스테이션은 SIMATIC Manager를 사용
(OP)을 MPI 네트워크에 연결할 가능성도 고려해야
하여 프로젝트 계층에서 생성할 수 있습니다. 그런
합니다. 영구적으로 설치한 프로그래밍 기기나 OP
다음 하드웨어 구성 도구를 이용해 통신 기능이 있
는 MPI 네트워크에 직접 연결해야 합니다. 짧은 지
는 모듈(CPU와 CP)을 추가합니다. 동시에 추가한
선을 통한 플러그인 디바이스에는 두터운 나사형 조
모듈의 통신 인터페이스를 서브넷에 할당합니다.
인트 소켓이 달린 MPI 커넥터를 사용합니다. 팁: 주
다음으로 커넥션 테이블에서 네트워크 구성 도구를
소 0은 서비스 프로그래밍 기기, 주소 1은 서비스
이용해 추가한 모듈 사이의 통신 관계(연결)를 정의
OP, 주소 2는 교체용 CPU를 위해 비워둡니다. 이것
합니다.
은 기본 주소에 해당합니다.
네트워크 구성 도구를 이용하면 구성한 네트워크
와 노드의 그래픽 표현 및 문서화가 가능합니다. 또
2.3.5 모듈 모니터링 및 수정 한 네트워크 구성 도구를 이용하면 필요한 모든 서
하드웨어 구성 도구를 이용하면 사용자 프로그램 브넷과 스테이션도 생성할 수 있습니다. 그 다음에
없이 기계나 설비의 배선을 검사할 수 있습니다. 배 스테이션을 서브넷에 할당하고, 통신 기능이 있는
선 검사 시 전제 조건은 프로그래밍 기기가 스테이 모듈의 노드 속성에 대한 파라미터를 지정합니다.
션에 온라인으로 연결되고 구성이 CPU에 저장, 컴 네트워크 구성 도구를 이용해 통신 관계를 정의하
파일 및 로드되어야 한다는 점입니다. 이제 모든 디 는 과정은 다음과 같습니다.
지털 및 아날로그 모듈의 주소를 지정할 수 있습니
Z 프로젝트 컨테이너에서 표준으로 생성한 MPI 서
다. 모듈을 선택하고 PLC → 모니터링/수정을 이용해
브넷을 엽니다(서브넷을 더 이상 이용할 수 없으
모니터링과 수정 작동 모드 및 트리거 조건을 설정
면 삽입 → 서브넷을 선택해 새 서브넷을 생성합
합니다.
니다.
‘상태 값’ 버튼을 클릭하면 신호 상태 또는 모듈 Z 네트워크 구성 도구를 이용해 필요한 스테이션
채널의 값이 표시됩니다. ‘값 수정’ 버튼은 ‘값 및 필요한 경우 추가 서브넷을 생성합니다.
수정’ 열에 지정한 값을 모듈에 씁니다.
Z 스테이션을 열고 통신 기능이 있는 모듈을 스테
‘I/O 표시’ 체크박스를 클릭하면 입력/출력(프 이션에 제공합니다.
로세스 이미지) 대신에 주변 입력/출력장치(모듈 메
Z 모듈을 관련 서브넷과 연결합니다.
모리)가 표시됩니다. ‘주변 출력장치 활성화’ 체
Z 필요한 경우 네트워크 파라미터를 활용합니다.
크박스를 클릭하면 CPU가 정지 모드인 경우에 출력
모듈의 출력 비활성화가 취소됩니다(2.7.5 “주변 Z 필요하다면 커넥션 테이블에서 통신 연결을 정
출력장치의 활성화” 참조). 의합니다.

62
2.4 네트워크 구성

또한 네트워크 구성 도구에서 글로벌 데이터 통신 시작합니다. 서브넷은 네트워크 창에서 수평선으로


을 구성할 수도 있습니다. MPI 서브넷을 선택하고 표현됩니다. 허용되지 않는 위치인 경우 마우스 포
옵션 → 글로벌 데이터 정의를 선택합니다(20.5 “글로 인터 위에 ‘금지’ 표시가 나타납니다.
벌 데이터 통신” 참조).
먼저 서브넷에 연결하지 않고 원하는 스테이션에
네트워크 → 저장을 선택하면 미완성 네트워크 구 서 동일한 방식으로 진행합니다. 스테이션은 여전
성이 저장됩니다. 네트워크 구성의 일관성은 네트워 히 ‘비어 있는’ 상태입니다. 스테이션을 더블 클
크 → 일관성 검사를 선택해 검사할 수 있습니다. 네 릭하면 스테이션 또는 하나 이상의 모듈을 네트워크
트워크 구성 도구는 네트워크 → 저장 및 컴파일을 선 연결로 구성할 수 있는 하드웨어 구성 도구가 열립
택해 종료합니다. 니다. 스테이션을 저장하고 네트워크 구성 도구로
돌아갑니다.
네트워크 창 통신 기능이 있는 모듈의 인터페이스는 네트워크
네트워크 구성을 시작하려면 프로젝트를 생성해 구성 도구에서 모듈 보기 아래에 작은 연산 박스로
야 합니다. SIMATIC Manager는 프로젝트와 함께 표현됩니다. 이 연산 박스를 클릭하고 관련 서브넷
MPI 서브넷을 자동으로 생성합니다. 으로 끕니다. 서브넷 연결은 수직선으로 표현됩니
MPI 서브넷이나 다른 서브넷을 더블 클릭하면 네 다.
트워크 구성을 시작할 수 있습니다. CPU 컨테이너 다른 모든 노드도 동일한 방식으로 진행합니다.
에서 연결 개체를 열어도 네트워크 구성을 시작할
수 있습니다. 생성한 서브넷과 스테이션은 네트워크 창에서 이
동이 가능합니다. 또한 이런 방식을 통해 하드웨어
네트워크 구성 창에서 위쪽 영역에는 구성된 연결
구성도 시각적으로 표현할 수 있습니다. 특정 환경
을 통해 프로젝트에서 이전에 생성한 모든 서브넷과
에서 보기 → 서브넷 길이 축소를 선택해 표현된 서브
스테이션(노드)이 표시됩니다(그림 2.5 참조).
넷 길이를 줄이면 서브넷을 더 명확하고 간결하게
네트워크 구성 창의 위쪽 영역에서 ‘통신 기능’ 배열할 수 있습니다.
이 있는 모듈(예: S7-400 CPU)을 선택하면 아래쪽
영역에 커넥션 테이블이 표시됩니다.
통신 속성 설정
두 번째 창에는 이용 가능한 SIMATIC 스테이션, 그래픽 보기를 생성한 후 서브넷의 파라미터를 지
서브넷 및 DP 스테이션의 선택 항목을 포함한 네트 정합니다. 먼저 서브넷을 선택하고 편집 → 개체 속성
워크 개체 카탈로그가 표시됩니다. 카탈로그는 보기 을 선택합니다. 나타나는 속성 창의 ‘일반’ 탭에
→ 카탈로그를 선택해 표시하거나 숨길 수 있으며, 제 는 S7 서브넷 ID가 추가됩니다. S7 서브넷 ID는 16
목 표시줄을 더블 클릭하면 네트워크 창의 오른쪽 진수 2개, 프로젝트 번호 및 서브넷 번호로 구성됩
가장자리에 카탈로그를 ‘삽입’ 할 수 있습니다. 보 니다. 적절한 프로젝트를 포함하지 않은 프로그래
기 → 확대, 보기 → 축소, 보기 → 확대/축소 비율…을 선 밍 기기를 서브넷을 통해 다른 노드에 온라인으로
택하면 그래픽 선명도를 조절할 수 있습니다. 연결하려면 이런 S7 서브넷 ID가 필요합니다. 데이
터 전송률이나 최상위 노드 주소와 같은 네트워크
속성은 ‘네트워크 속성’ 탭에서 설정합니다.
2.4.1 네트워크 보기의 구성
노드의 네트워크 연결을 선택할 때는 편집 → 개체
구성요소의 선택 및 배열 속성을 선택해 노드의 네트워크 속성(노드 주소 및
네트워크 구성은 마우스로 카탈로그에서 서브넷 노드가 연결된 서브넷)을 정의하거나 새 서브넷을
을 선택하고 클릭한 상태로 네트워크 창으로 끌어 생성할 수 있습니다.

63
2 STEP 7 프로그래밍 소프트웨어

그림 2.5 네트워크 구성 예제

스테이션 속성을 선택할 수 있는 ‘인터페이스’ 프로피버스 DP


탭에서는 노드 주소 및 사용한 서브넷 유형을 포함 DP 마스터 시스템의 구성에 필요한 항목은 다음
해 통신 기능이 있는 모든 모듈의 개요를 확인할 수 과 같습니다.
있습니다.
Z 프로피버스 서브넷(이용할 수 없는 경우에는 프
노드의 모듈 속성도 마찬가지 방법으로 하드웨어 로피버스 서브넷을 네트워크 개체 카탈로그에
구성 도구와 동일한 작업자 입력을 통해 정의합니다. 서 네트워크 창으로 드래그합니다.)
Z 스테이션의 DP 마스터(이용할 수 없는 경우에는
2.4.2 네트워크 구성 도구를 이용한 분산 I/ 스테이션을 네트워크 개체 카탈로그에서 네트
O 구성 워크 창으로 드래그하여 연 다음, 하드웨어 구성
프로피버스 DP 또는 프로피넷 IO를 포함한 분산 도구를 이용해 CPU에 통합되거나 독립 모듈인
I/O도 네트워크 구성 도구를 이용해 구성할 수 있습 DP 마스터를 선택합니다)
니다. 네트워크 보기에서 보기 → DP 슬레이브/IO 디바
Z DP 마스터와 프로피버스 서브넷 연결(하드웨어
이스 포함을 선택하면 DP 슬레이브와 IO 디바이스를
구성 도구에서 서브넷을 선택하거나 네트워크
표시하거나 숨길 수 있습니다.
구성 도구에서 DP 마스터에 네트워크 연결을 클
릭하고 프로피버스 네트워크로 드래그합니다.)
네트워크 창에서 슬레이브를 할당할 DP 마스터
를 선택합니다. ‘프로피버스 DP’ 아래의 네트워

64
2.4 네트워크 구성

크 개체 카탈로그 및 관련된 하위 카탈로그에서 DP 네트워크 창에서 IO 디바이스가 할당된 IO 컨트롤


슬레이브를 찾고 네트워크 창으로 드래그하여 나타 러를 선택합니다. ‘프로피버스 DP’ 아래의 네트
난 속성 창으로 가져옵니다. 워크 개체 카탈로그 및 관련된 하위 카탈로그에서
DP 슬레이브의 파라미터는 DP 슬레이브를 선택 IO 디바이스를 찾고 네트워크 창으로 드래그하여 나
하고 편집 → 개체 열기를 이용해 지정합니다. 하드웨 타난 속성 창으로 가져옵니다.
어 구성이 시작됩니다. 이제 사용자 데이터 주소를 IO 디바이스의 파라미터는 IO 디바이스를 선택하
설정할 수도 있고, 모듈식 슬레이브의 경우에는 I/O 고 편집 → 개체 열기를 선택해 지정합니다. 하드웨어
모듈을 선택할 수도 있습니다(2.3 “스테이션 구 구성이 시작됩니다. 이제 사용자 데이터 주소 또는
성” 참조). I/O 모듈을 설정할 수 있습니다(2.3 “스테이션 구
지능형 DP 슬레이브가 이미 생성된 경우에는 서 성” 참조).
브넷에 지능형 DP 슬레이브를 연결할 수 있습니다 보기 → 강조 표시 →프로피넷 IO 시스템을 선택해 프
(20.4.2 “프로피버스 DP 구성” 참조). 하드웨어 구 로피넷 IO 시스템의 노드 할당을 강조합니다. 먼저
성 도구에서와 같이 네트워크 개체 카탈로그에서 IO 컨트롤러나 IO 디바이스를 선택합니다. 보기 → 재
‘이미 생성된 스테이션’ 아래에 있는 지능형 DP 슬 배열을 선택하면 IO 디바이스가 IO 컨트롤러에 시각
레이브의 유형을 찾고 선택한 DP 마스터와 함께 네 적으로 할당됩니다.
트워크 창으로 드래그하여 나타난 속성 창으로 가져
옵니다.
2.4.3 연결 구성
보기 → 강조 표시 → 마스터 시스템,을 선택해 DP 마
연결은 두 디바이스 사이의 통신 관계를 의미합니
스터 시스템의 노드 할당을 강조합니다. 먼저 DP 마
다. 다음과 같은 경우 연결을 구성해야 합니다.
스터 시스템의 마스터나 슬레이브를 선택합니다.
보기 → 재배열을 선택하면 DP 슬레이브가 DP 마스 Z SIMATIC S7 디바이스 2개 사이에 S7 통신( ‘구
터에 시각적으로 할당됩니다. 성된 연결을 통한 통신’ )을 구축하려는 경우

Z 통신 파트너가 SIMATIC S7 디바이스가 아닌 경


프로피넷 IO 우
프로피넷 IO 시스템의 구성에 필요한 항목은 다음
참고: 프로그래밍이나 디버깅에서 프로그래밍 기
과 같습니다.
기부터 MPI 네트워크까지 직접 온라인 연결을 위한
Z 산업용 이더넷 서브넷(이용할 수 없는 경우에는 구성된 연결은 필요하지 않습니다. 다른 서브넷에
산업용 이더넷 서브넷을 네트워크 개체 카탈로 정렬된 다른 노드를 프로그래밍 기기에 연결하려면
그에서 네트워크 창으로 드래그합니다.) 프로그래밍 기기의 연결을 구성해야 합니다. 네트
Z 스테이션의 IO 컨트롤러(이용할 수 없는 경우에 워크 개체 카탈로그에서 스테이션 아래의 PG/PC
는 스테이션을 네트워크 개체 카탈로그에서 네 개체를 더블 클릭하여 선택하고, 네트워크 창에서
트워크 창으로 드래그하여 연 다음, 하드웨어 구 PG/PC를 더블 클릭하여 연 다음 인터페이스를 선
성 도구를 이용해 CPU에 통합되거나 독립 모듈 택하고 서브넷에 할당합니다.
인 IO 컨트롤러를 선택합니다.)
Z IO 컨트롤러와 산업용 이더넷 서브넷 연결(하드 커넥션 테이블
웨어 구성 도구에서 서브넷을 클릭하거나 네트 통신 연결은 커넥션 테이블에서 구성됩니다. 이
워크 구성 도구에서 IO 컨트롤러에 네트워크 연 를 위해서는 서로 데이터를 교환할 모든 스테이션을
결을 클릭하고 산업용 이더넷 네트워크로 드래 포함한 프로젝트를 생성하고, 통신 기능이 있는 모
그합니다.) 듈을 서브넷에 할당해야 합니다.

65
2 STEP 7 프로그래밍 소프트웨어

CPU 컨테이너에서 연결 개체는 커넥션 테이블을 S7-300 CPU는 S7 연결에서 ‘수동’ 파트너로만
의미합니다. 프로젝트 컨테이너에서 서브넷의 더블 사용할 수 있습니다.7
클릭과 동일한 방식으로 연결을 더블 클릭해 네트워
‘새 연결’ 창의 ‘스테이션’ 및 ‘모듈’ 대화
크 구성 도구를 시작합니다.
상자에서 통신 파트너를 선택합니다
연결을 구성하기 위해 네트워크 구성 도구에서 (그림 2.6 참조). 스테이션과 모듈은 이미 존재해야
S7-400 CPU를 선택합니다. 네트워크 창의 아래쪽 합니다. 또한 ‘새 연결’ 창에서 연결 유형을 선택
영역에는 커넥션 테이블이 표시됩니다 합니다.
(표 2.1 참조). 커넥션 테이블이 표시되지 않으면,
마우스 포인터를 창의 아래 가장자리에 놓고 모양이 연결 속성을 추가로 설정하려면 ‘삽입 전: 속성
변하면 창의 아래쪽 가장자리를 위로 드래그합니 표시’ 체크박스를 클릭합니다.
다. 삽입 → 새 연결을 선택하거나 비어 있는 라인을 커넥션 테이블은 구성된 연결의 모든 데이터를 포
더블 클릭하여 새 통신 연결을 입력합니다. 함합니다. 더 명확하게 표시하려면 보기 → 열 너비 최
‘능동’ CPU마다 연결을 생성합니다. S7-300 적화 및 보기 → 디스플레이 열을 선택하고 원하는 정
CPU에서는 커넥션 테이블을 생성할 수 없습니다. 보를 선택합니다.

표 2.1 커넥션 테이블의 예


로컬 ID 파트너 ID 파트너 유형 활성 연결 파트너 작동 모드
메시지 전송
1 1 스테이션 416 / CPU416(5) S7 연결 예 아니오
2 2 스테이션 416 / CPU416(5) S7 연결 예 아니오
3 스테이션 315 / CPU315(7) S7 연결 예 아니오
4 1 스테이션 417 / CPU414(4) S7 연결 예 아니오

연결 ID Z 로드할 수 있는 S7 통신을 포함한 S7 연결을 위


한 값 범위(S7-300):
가능한 연결 개수는 CPU마다 다릅니다. STEP 7
000116진수 - 008F16진수
은 모든 연결 및 파트너의 연결 ID를 정의합니다. 프
로그램에서 통신 블록을 사용할 때는 이런 지정이 Z PtP 연결을 위한 값 범위:

필요합니다. 100016진수 - 140016진수


파트너 ID는 파트너 CPU의 커넥션 테이블로 이동
현재 열려 있는 모듈의 연결 ID인 로컬 ID는 수정 한 후 로컬 ID를 수정해 변경합니다. 연결 라인을 선
할 수 있습니다. 통신 블록이 이미 프로그램되어 있 택하고 편집 → 개체 속성을 선택합니다. STEP 7에
고 연결을 위해 지정한 로컬 ID를 사용하려는 경우 파트너 ID를 입력하지 않으면 단방향 연결만 가능합
에는 로컬 ID를 수정해야 합니다. 니다(다음 참조).

새 로컬 ID는 16진수로 입력합니다. 새 로컬 ID


파트너
는 연결 유형에 따라 다음과 같은 값 범위 이내에
파트너 열은 연결 파트너를 표시합니다. 파트너
있어야 하며 할당되지 않은 상태여야 합니다.
디바이스의 이름을 지정하지 않고 연결 리소스를 보
Z S7 연결을 위한 값 범위: 전하려면 대화상자에서 스테이션 아래에 ‘미지정
000116진수 - 0FFF16진수 (unspecified)’ 이라고 입력합니다.

66
2.4 네트워크 구성

그림 2.6 통신 연결 구성

단방향 연결 통신은 한 파트너에서만 초기화할 수 연결 유형


있습니다(예: S7-400과 S7-300 CPU 사이의 S7 통
STEP 7 기본 패키지는 네트워크 구성에서 다음과
신). S7-300-CPU에서 S7 통신 함수를 사용하지 않
같은 연결 유형을 제공합니다.
더라도 S7-400 CPU는 SFB 14 GET 및 SFB 15
PUT을 이용해 데이터를 교환할 수 있습니다. S7- PtP 연결은 서브넷 PTP(3964(R) 및 RK 512 절
300에서는 S7 통신용 사용자 프로그램이 실행되지 차)의 S7 통신에 사용합니다. PtP(일대일) 연결은
않고 운영체제에서 데이터 교환을 처리합니다. 두 파트너 사이의 직렬 연결입니다. PtP 연결은 관
련 인터페이스나 CP를 포함한 SIMATIC S7 디바이
단방향 연결은 ‘능동’ CPU의 커넥션 테이블에
스 2개 또는 SIMATIC S7 디바이스와 프린터나 바코
서 구성됩니다. 그 다음에 STEP 7만 ‘로컬 ID’ 를
드 판독기 같은 지멘스 이외 디바이스 사이에 적용
할당합니다. 또한 단방향 연결은 로컬 스테이션에
할 수 있습니다.
만 로드합니다.
양방향 연결에서는 두 파트너의 원활한 통신이 가 S7 연결은 서브넷인 MPI, 프로피버스 및 산업용
능합니다(예: 통신 함수 SFB 8 SEND 및 SFB 9 이더넷의 S7 통신에 사용합니다. S7 연결은
BRCV를 이용한 2개의 S7-400 CPU). SIMATIC S7 디바이스들 간의 연결이며 프로그래밍
기기와 HMI 디바이스를 포함할 수 있습니다. 데이
양방향 연결은 두 파트너 중 하나에서 한 번만 구
터는 S7 연결을 통해 교환되며, 그렇지 않은 경우에
성합니다. 그러면 STEP 7은 ‘로컬 ID’ 및 ‘파트
는 프로그래밍과 제어 기능이 실행됩니다.
너 ID’ 를 할당하고 두 스테이션의 연결 데이터를 생
성합니다. 각 파트너를 로드하려면 자체 커넥션 테 결함 허용 S7 연결은 서브넷인 프로피버스와 산
이블을 사용해야 합니다. 업용 이더넷의 S7 통신에 사용합니다. 결함 허용 S7

67
2 STEP 7 프로그래밍 소프트웨어

연결은 SIMATIC S7 이중화 디바이스 사이에 적용하 프로젝트 간 연결


며 적절하게 탑재된 PC에 구축할 수 있습니다. 서로 다른 SIMATIC 프로젝트에 속하는 두 S7 모
STEP 7의 일부인 소프트웨어 ‘구성요소 듈 사이에 데이터를 교환하려면 두 프로젝트의 로컬
SIMATIC NCM’ 은 CP 파라미터 지정에 이용할 수 스테이션에 있는 커넥션 테이블에서 연결 파트너에
있습니다. 선택할 수 있는 연결 유형은 FMS 연결, 대해 ‘미지정(unspecified)’ 이라고 입력합니다.
FDL 연결, ISO 전송 연결, ISO-on-TCP 연결, TCP 연결 데이터가 두 프로젝트에서 일치하는지 확인
연결, UDP 연결, 이메일 연결 등입니다. 합니다. STEP 7은 이 기능을 수행하지 않습니다. 저
장 및 컴파일 후 연결 데이터를 각 프로젝트의 로컬
능동 연결 구축 스테이션에 로드합니다.

실제 데이터를 전송하기 전에 연결을 구축(초기 프로젝트가 나중에 다중 프로젝트의 일부가 되고


화)해야 합니다. 연결 파트너에 이 기능이 있으면 연 연결 파트너가 다중 프로젝트의 프로젝트에 포함되
결할 디바이스를 지정합니다. 연결을 구성하려면 는 경우, ‘알 수 없는 프로젝트’ 를 연결 파트너로
연결 속성 창에서 ‘능동 연결 구축’ 체크박스를 선택하고 속성 창에서 명확한 연결 이름(참조)을 입
클릭합니다(연결을 선택하고 편집 → 개체 속성을 선 력합니다.
택).
S7 이외 스테이션에 연결
작동 상태 메시지의 전송 프로젝트 안에서 연결 파트너로 지정할 수 있는
S7 이외 스테이션은 다음과 같습니다.
양방향 연결이 구성된 연결 파트너들은 작동 상태
메시지를 교환할 수 있습니다. 로컬 노드에서 작동 Z 기타 스테이션(지멘스 이외 디바이스 및 다른 프
상태 메시지를 전송하려면 연결 속성 창에서 관련 로젝트에 속한 S7 스테이션)
체크박스를 클릭합니다. 파트너 CPU의 사용자 프 Z 프로그래밍 기기/PC
로그램에서는 SFB 23 USTATUS를 통해 작동 상태
Z SIMATIC S5 스테이션
메시지를 수신할 수 있습니다.
연결 구성의 전제 조건으로, S7 이외 스테이션은
프로젝트 컨테이너에 개체로서 존재하고 스테이션
연결 경로
속성의 관련 서브넷에 연결되어야 합니다(예: 네트
연결 경로를 보여주는 연결 속성 창은 연결의 끝 워크 구성 도구에서 스테이션을 선택하고, 편집 →
점 및 연결이 구성된 서브넷을 표시합니다. 선택할 개체 속성을 선택한 다음 ‘인터페이스’ 탭에서 스
수 있는 서브넷이 여러 개인 경우, STEP 7은 산업용 테이션을 원하는 서브넷과 연결합니다).
이더넷 -> 산업용 이더넷/ TCP-IP -> MPI -> 프로
피버스의 순서로 서브넷을 선택합니다.
2.4.4 게이트웨이
연결이 구성된 스테이션과 CPU는 연결의 끝점으
프로그래밍 기기가 서브넷에 연결된 경우, 프로
로 표시됩니다. 통신 기능이 있는 모듈은 랙과 슬롯
그래밍 기기는 이 서브넷을 통해 기타 모든 노드에
번호가 지정된 ‘인터페이스’ 아래에 나열됩니다.
연결할 수 있습니다. 예를 들면, MPI 네트워크에 연
CPU 2개가 동일한 랙에 장착된 경우(예: 멀티프로
결된 모든 S7 스테이션은 하나의 연결 지점에서 프
세서 모드의 S7-400 CPU), 디스플레이 박스에
로그래밍과 디버깅할 수 있습니다. 또한 프로피버
‘PLC 내부’ 가 표시됩니다.
스 서브넷과 같은 다른 서브넷이 S7 스테이션에 연
그런 다음에 ‘서브넷’ 과 ‘주소’ 아래에 노드 결되어 있는 경우, 프로그래밍 기기는 다른 서브넷
의 MPI 주소 또는 프로피버스 주소가 표시됩니다. 을 통해서도 S7 스테이션에 연결할 수 있습니다. 이

68
2.4 네트워크 구성

를 위해서 서브넷 전환이 가능한 스테이션에는 전송 PLC → 현재 프로젝트로 다운로드 → ...를 선택해 연
된 메시지 프레임을 전달하는 라우팅 기능이 있어야 결과 구성 데이터를 액세스 가능한 모듈에 전송합니
합니다. 다. 선택한 개체와 메뉴 명령에 따라 다음의 연결을
네트워크 구성을 컴파일하면 필요한 모든 정보를 선택할 수 있습니다.
포함한 라우팅 테이블이 서브넷 전환 가능 스테이션 → 선택한 스테이션 사이
에 대해 자동으로 생성됩니다. 액세스 가능한 모든
→ 선택한 스테이션과 파트너 스테이션 사이
통신 파트너는 S7 프로젝트 내부의 설비 네트워크
에 구성되며 서브넷과 서브넷 전환을 통해 도달할 → 서브넷의 스테이션 사이

수 있는 스테이션의 ‘정보’ 를 제공해야 합니다. → 선택한 연결 사이


한 연결 지점에서 프로그래밍 기기가 서브넷의 모 → 연결과 게이트웨이 사이
든 노드에 도달할 수 있도록 설정하려면 연결 지점
프로그래밍 가능 모듈의 모든 연결을 삭제하려면
을 구성해야 합니다. 관련 서브넷의 네트워크 구성
비어 있는 커넥션 테이블을 관련 모듈에 로드합니다.
에서 네트워크 개체 카탈로그의 PG/PC 스테이션인
‘자리 표시자’ 를 입력합니다. 프로그래밍 기기에 컴파일된 연결 데이터도 블록 컨테이너에서 시스
연결하려는 모든 서브넷의 PG/PC 스테이션을 구성 템 데이터 의 구성요소입니다. 시스템 데이터를 전
합니다. 송한 후 CPU를 이어서 시작하는 경우에도 연결 데
이터는 통신 기능이 있는 모듈에 효과적으로 전송됩
작동하는 동안 프로그래밍 기기를 서브넷에 연결
니다.
하고 PLC → PG/PC 할당을 선택합니다. 이렇게 하면
서브넷에서 구성한 설정이 프로그래밍 기기의 인터 MPI를 통한 온라인 작동에서는 프로그래밍 기기
페이스에 적용됩니다. 프로그래밍 기기를 서브넷에 에 추가 하드웨어가 필요 없습니다. PC를 네트워크
서 분리하기 전에 PLC → PG/PC 할당 취소를 선택합 에 연결하거나 프로그래밍 기기를 이더넷 또는 프로
니다. 피버스 네트워크에 연결하려면 관련 인터페이스 모

정확한 프로젝트를 포함하지 않는 프로그래밍 기 듈이 필요합니다. 모듈의 파라미터는 Windows 제

기를 연결하려면 네트워크 액세스용 S7 서브넷 ID 어판에서 ‘PG/PC 인터페이스 설정’ 애플리케이

가 필요합니다. S7 서브넷 ID는 프로젝트 번호와 서 션을 사용하여 지정합니다.

브넷 번호로 구성됩니다. 서브넷을 선택하고 ‘일


반’ 탭에서 편집 → 개체 속성을 선택하면 네트워크 2.4.6 다중 프로젝트에서 프로젝트 일치
구성에서 서브넷 ID를 확인할 수 있습니다.
네트워크 구성 도구에서 다중 프로젝트를 열면 창
에는 다중 프로젝트에 포함된 프로젝트가 표시됩니
2.4.5 연결 데이터 로드 다. 또한 다중 프로젝트에 포함된 프로젝트를 열고
연결을 활성화하려면 커넥션 테이블을 PLC에 로 보기 → 다중 프로젝트를 선택해도 창이 나타납니다.
드한 후 저장과 컴파일을 수행해야 합니다(모든 ‘능 나타난 창은 다중 프로젝트에 포함된 프로젝트 및
동’ CPU의 모든 커넥션 테이블). 이미 조합된 크로스 프로젝트 서브넷을 표시합니
다. 추가 처리가 필요한 프로젝트는 더블 클릭하여
전제 조건: 네트워크 창에서 커넥션 테이블이 보
선택합니다(그림 2.7 참조).
여야 합니다. 프로그래밍 기기는 연결 데이터가 통
신 기능이 있는 모듈에 로드되는 서브넷의 노드입니 프로젝트는 대개 개별 스테이션 사이의 통신 연결
다. 모든 서브넷 노드에는 독특한 노드 주소가 할당 을 포함합니다. 프로젝트가 다중 프로젝트에 통합
됩니다. 연결 데이터가 전송될 모듈은 정지 모드에 되거나 기존 프로젝트가 다중 프로젝트에 포함되면
있어야 합니다. 연결을 조합 및 일치시킬 수 있습니다.

69
2 STEP 7 프로그래밍 소프트웨어

다중 프로젝트에 속한 열려 있는 프로젝트에서 보 에서는 프로젝트를 수정할 수 없습니다. 보기 → 크


기 → 크로스 프로젝트 네트워크 보기를 선택하면 다중 로스 프로젝트 네트워크 보기를 다시 선택하면 다중 프
프로젝트의 모든 스테이션 개요 및 현재 연결을 확 로젝트 보기가 종료됩니다.
인할 수 있습니다. 크로스 프로젝트 네트워크 보기

그림 2.7 네트워크 구성 도구의 다중 프로젝트

서브넷 조합 워크 구성 도구에서 편집 → 서브네트워크 병합/병합 취


먼저 MPI, 프로피버스, 산업용 이더넷 서브넷을 소 → ..를 선택하면 대화 창이 나타납니다.
조합합니다. 조합할 서브넷은 서브넷 ID가 동일해야 서브넷 유형을 선택하고 ‘실행’ 버튼을 클릭하
합니다. 선택한 서브넷의 ID는 편집 → 개체 속성을 이 면 다중 프로젝트에서 선택한 유형의 서브넷이 나타
용해 네트워크 구성 도구에서 설정할 수 있습니다. 납니다. 이제 프로젝트의 개별 서브넷을 선택하고
파일 → 다중 프로젝트 → 프로젝트 조정을 선택하면 크로스 프로젝트 서브넷에 조합할 수 있습니다. 크
SIMATIC Manager에서 일치를 지원할 열려 있는 다 로스 프로젝트 서브넷에서 서브넷을 제거할 때도 위
중 프로젝트의 마법사를 호출할 수 있습니다. 네트 와 동일한 대화 창을 사용할 수 있습니다.

70
2.5 S7 프로그램 생성

동일한 유형의 여러 크로스 프로젝트 서브넷은 하 네트워크 → 크로스 프로젝트 일관성 검사를 선택하
나의 다중 프로젝트에서 생성할 수 있습니다. 크로 면 다중 프로젝트에서 네트워크 구성의 오류 여부를
스 프로젝트 서브넷의 속성은 첫 번째로 추가된 서 테스트할 수 있습니다.
브넷이나 ‘선택’ 버튼으로 선택한 서브넷에 의해
결정됩니다. 설정을 적용하려면 ‘확인’ 또는 ‘적
용’ 을 클릭합니다. 크로스 프로젝트 서브넷의 일부
2.5 S7 프로그램 생성
인 서브넷은 SIMATIC Manager에서 다른 심볼로 구
별됩니다.
2.5.1 소개
사용자 프로그램은 S7 프로그램 개체 아래에 생
연결 조합
성됩니다. 이 개체는 CPU의 프로젝트 계층에 할당
단일 프로젝트에서 다른 프로젝트에 속한 파트너 하거나 CPU와 별도로 생성할 수 있습니다. S7 프로
와 연결은 다중 프로젝트에 조합할 수 있습니다. 그램은 심볼 개체 및 소스 와 블록 컨테이너를 포함
‘새 연결 삽입’ 창에서 단일 프로젝트의 연결을 구 합니다(그림 2.8 참조).
성할 때 ‘알 수 없는 프로젝트’ 파트너를 선택하
면, ‘속성 - S7 연결’ 창에서 연결 이름(참조)을
입력할 수 있습니다. 연결 이름이 동일한 서로 다른
프로젝트에서 연결은 자동으로 조합될 수 있습니다.

SIMATIC Manager에서는 ‘연결 조합’ 과 ‘실


행’ 버튼의 클릭 시 나타나는 프로젝트 일치용 마법
사를 통해 조합이 이루어집니다. 그런 다음 이름(참
조)이 동일한 연결이 조합됩니다. 그림 2.8 프로그래밍 개체

네트워크 구성 도구에서 ‘미지정’ 파트너로 연 증분 프로그램 생성 시에는 프로그램을 블록별로

결을 조합할 수도 있습니다. 편집 → 연결 병합을 선 직접 입력합니다. 항목에 대한 구문 검사가 즉시 이

택하면 구성된 모든 연결을 포함한 대화상자가 나타 루어집니다. 동시에 블록은 저장된 후 블록 컨테이
너에 보관되는 방식으로 컴파일됩니다. 증분 프로
납니다. ‘연결 파트너 없이 연결’ 및 ‘가능한 연
그래밍 시 블록은 작업 도중이라도 CPU에서 온라인
결 파트너’ 창 각각에서 하나의 연결을 선택하고
상태로 편집할 수도 있습니다. 증분 프로그래밍은
‘할당’ 을 클릭합니다. 할당된 연결은 하단의 ‘할
모든 기본 언어에서 가능합니다.
당된 연결’ 창에 나열됩니다. 그 다음에 ‘병합’
을 클릭해 연결을 조합합니다. 연결에는 현재 열려 소스 기반 프로그램을 생성하는 경우에는 하나 이
있는 프로젝트의 로컬 모듈 속성이 할당됩니다. 조 상의 프로그램 소스를 작성하여 소스 컨테이너에 저
합할 때는 연결 속성을 수정할 수 있습니다. 장할 수 있습니다. 프로그램 소스는 하나 이상의 블
록이나 전체 프로그램용 프로그램 구문을 포함할 수
있는 ASCII 텍스트 파일입니다. 소스를 컴파일하고
크로스 프로젝트 연결의 구성
블록 컨테이너의 컴파일된 블록을 가져옵니다. 소
서브넷을 조합한 후에는 크로스 프로젝트 연결을 스 기반 프로그램 생성은 STL 및 SCL에서 사용합니
구성할 수 있습니다. 구성 절차는 연결 파트너에서 다. LAD나 FBD에서는 소스 기반 프로그래밍을 사
프로젝트를 지정한다는 점을 제외하고 프로젝트 내 용할 수 없지만, LAD나 FBD로 생성한 프로그램을
부 연결과 동일합니다. 소스 파일로 저장할 수는 있습니다.

71
2 STEP 7 프로그래밍 소프트웨어

신호 상태나 주소 값은 프로그램에서 처리합니 Z 코드 블록 OB, FB, FC, SFC, SFB, 데이터 블록


다. 예를 들어, 주소는 I1.0으로 입력합니다(절대 주 (DB)
소 지정). 심볼 개체 아래의 심볼 테이블을 이용하면 Z 사용자 데이터 형식 UDT
심볼( ‘Switch motor on’ 과 같은 영숫자 이름)을
Z 변수 테이블 VAT
주소에 할당하고 할당한 이름으로 주소에 액세스할
수 있습니다(심볼 주소 지정). 심볼 테이블을 변경한 데이터 블록(DB)의 데이터 주소는 로컬 주소에
후 후속 저장 시 이미 컴파일된 블록에서 절대 주소 포함됩니다. 관련된 심볼은 글로벌 데이터 블록
또는 심볼의 우선 순위는 오프라인 블록 개체 컨테 (DB)인 경우에 데이터 블록(DB)의 선언 영역에서
이너의 속성에서 지정합니다(주소 우선 순위). 정의하고 인스턴스 데이터 블록(DB)인 경우에 함수
블록의 선언 영역에서 정의합니다.
S7 프로그램 생성 시 SIMATIC Manager는 빈 심
2.5.2 심볼 테이블
볼 테이블인 심볼도 생성합니다. 심볼 테이블을 열
제어 프로그램에서는 입력, 출력, 타이머, 블록을 어 글로벌 심볼을 정의하고 정의한 글로벌 심볼을
주소로 사용합니다. 사용자는 절대 주소(예: I1.0) 절대 주소에 할당할 수 있습니다(그림 2.9 참조). S7
또는 심볼 주소(예: 시작 신호)를 할당할 수 있습니 프로그램에서 심볼 테이블은 1개만 가능합니다.
다. 심볼 주소 지정에서는 절대 주소 대신에 이름을
데이터 형식은 심볼 정의의 일부입니다. 데이터
사용합니다. 의미 있는 이름을 사용하면 프로그램
형식은 심볼이 아닌 데이터의 특정 속성(기본적으
을 식별하기가 훨씬 쉽습니다.
로 데이터 내용의 표현)을 정의합니다. 예를 들어,
심볼 주소 지정에서는 로컬 심볼과 글로벌 심볼을 데이터 형식 BOOL은 이진 변수를 의미하며 데이터
구별합니다. 로컬 심볼은 심볼이 정의된 블록에서 형식 INT는 내용이 16비트 정수인 디지털 변수를 의
만 사용됩니다. 동일한 로컬 심볼은 여러 블록에서 미합니다. 데이터 형식에 대한 자세한 설명은
다양한 목적으로 사용할 수 있습니다. 글로벌 심볼 3.5 “변수, 상수 및 데이터 형식” 을 참조하십시오.
은 전체 프로그램에서 사용하며 모든 블록에서 의미 증분 프로그래밍에서는 프로그램을 입력하기 전
가 동일합니다. 글로벌 심볼은 심볼 테이블에서 정 에 심볼 테이블을 생성합니다. 또한 프로그램을 입
의합니다(S7 프로그램 컨테이너에서 심볼 개체). 력하는 동안 개별 심볼을 추가하거나 수정할 수 있
글로벌 심볼은 알파벳 문자로 시작하고 최대 24 습니다. 소스 기반 프로그래밍의 경우, 프로그램 소
개의 알파벳 문자를 사용할 수 있습니다. 또한 글로 스를 컴파일할 때는 완전한 심볼 테이블을 이용할
벌 심볼은 스페이스, 특수 문자, 움라우트와 같은 국 수 있어야 합니다.
가 특정 문자를 포함할 수 있습니다. 예외는 문자
00hex, FFhex, 역콤마(") 등입니다. 프로그래밍할 때 들여오기, 내보내기
특수 문자가 있는 심볼은 역콤마로 감싸야 합니다. 심볼 테이블은 들여오거나 내보낼 수 있습니다.
컴파일된 블록에서 프로그램 편집기는 역콤마로 감 ‘내보낸’ 테이블이란 심볼 테이블의 내용으로 생
싼 모든 글로벌 심볼을 표시합니다. 심볼 주석의 길 성한 파일을 의미합니다. 내보내기에서는 전체 심
이는 최대 80자까지 가능합니다. 볼 테이블, 필터로 제한한 하위 세트 또는 선택한 라
심볼 테이블에서 이름을 할당할 수 있는 주소와 인만 선택할 수 있습니다. 데이터 형식에서는 순수
개체는 다음과 같습니다. 한 ASCII 텍스트(확장자 *.asc), 순차 할당 목록
(*.seq), 시스템 데이터 형식(Microsoft Access의
Z 입력 I, 출력 Q, 주변 입력장치 PI, 주변 출력장
*.sdf), 데이터 교환 형식(Microsoft Excel의 *.dif)
치 PQ
을 선택할 수 있습니다. 내보낸 파일은 적절한 편집
Z 메모리 비트 M, 타이머 연산 T, 카운터 기능 C 기로 편집할 수 있습니다. 또한 위에 제시한 형식 중

72
2.5 S7 프로그램 생성

그림 2.9 심볼 테이블의 예

하나에서 이용할 수 있는 심볼 테이블을 들여올 수 2.5.3 프로그램 편집기


있습니다.
STEP 7 기본 패키지는 사용자 프로그램을 생성할
수 있도록 LAD, FBD, STL 프로그래밍 언어용 프로
특수 개체 속성
그램 편집기를 포함합니다. LAD 및 FBD는 실행 가
심볼 테이블에서 각 심볼의 속성은 편집 → 특수 개 능 블록을 직접 입력해 점증적으로 프로그래밍할 수
체 속성 → ...을 선택해 설정합니다. 사용할 수 있는 있습니다. 그림 2.10은 이러한 프로그램의 예를 보
속성 또는 특성은 다음과 같습니다. 여 줍니다.
Z S7-PDIAG를 이용한 프로세스 모니터링
글로벌 주소에 심볼 주소 지정을 사용하는 경우,
Z WinCC를 이용한 모니터링용 HMI 함수
증분 프로그래밍에서 심볼은 이미 절대 주소에 할당
Z 메시지 구성 되어 있어야 합니다. 그러나 프로그램을 입력하는
Z NCM 소프트웨어를 이용한 통신 구성 동안 새 심볼을 입력하거나 심볼을 수정할 수 있습
니다.
Z 프로그램 편집기에서 입력과 비트 메모리를 통
한 접점 제어 LAD/FBD 블록은 ‘컴파일 복구’ 가 가능합니
보기 → 열 R, O, M, C, CC를 선택하면 설정이 표시 다. 예를 들어, 판독 가능한 블록은 오프라인 데이터
됩니다. 옵션 → 사용자 정의를 선택하면 특수 개체 속 베이스 없이 MC7 코드에서 생성할 수 있으므로 관
성의 복사 여부를 지정하고 심볼의 들여오기 방법을 련 프로젝트가 없어도 프로그래밍 기기를 이용해
정의할 수 있습니다. CPU에서 블록을 판독할 수 있습니다. 또한 STL 프

73
2 STEP 7 프로그래밍 소프트웨어

그림 2.10 LAD/FBD 편집기로 프로그램 작성

로그램 소스는 모든 컴파일된 블록에서 생성할 수 SIMATIC Manager에서 블록을 열면 프로그램 편집


있습니다. 기가 나타납니다.

프로그램 편집기의 속성은 옵션 → 사용자 정의를


프로그램 편집기 시작
조직 블록 OB 1의 자동 생성된 심볼을 더블 클릭 선택해 사용자 정의할 수 있습니다. ‘편집기’ 탭
하거나 Windows 작업 표시줄에서 시작 → SIMATIC → 에서는 생성 언어, 주석의 사전 선택, 심볼과 같이
STEP 7 → LAD, STL, FBD S7 블록 프로그래밍을 선택해 생성하고 표시할 새 블록의 속성을 선택합니다.

74
2.5 S7 프로그램 생성

프로그램 편집기 창 Z 7: 비교
프로그램 편집기 창에 표시할 수 있는 추가 창은 이전에 실행한 블록 비교의 결과를 포함합니다
블록 창인 상세 정보와 개요 창 및 AS 레지스터 창 ( “블록 비교” 참조).
입니다(그림 2.11 참조). 개요 및 상세 정보 창은 각각의 제목 표시줄을 더
블록 창은 블록을 열면 자동으로 표시되며 상단에 블 클릭해 편집기 창의 가장자리에서 삽입하거나 분
블록 인터페이스, 즉 블록 파라미터와 정적 및 동적 리할 수 있습니다.
로컬 데이터를 포함합니다. 블록은 하단의 프로그 PLC 레지스터 내용 창은 CPU 레지스터(누산기,
램 영역에서 프로그래밍이 가능합니다. 블록 창과 주소 레지스터, DB 레지스터)의 내용을 표시합니다.
그 내용은 3.3.2 “블록 창” 를 참조하십시오.
개요 창은 프로그램 구성요소 및 호출 구조를 표 증분 프로그래밍
시합니다. 개요 창이 보이지 않는 경우, 개요 창은 증분 프로그램에서는 오프라인과 온라인 블록 컨
보기 → 개요를 선택해 화면에 표시합니다. 테이너의 블록을 편집할 수 있습니다. 편집기는 네
트워크가 종료되자마자 증분 모드의 항목을 검사합
상세 정보 창은 보기 → 상세 정보를 선택해 표시하
니다. 블록을 종료하면 즉시 컴파일이 실행되므로
거나 숨길 수 있습니다. 상세 정보 창에 포함되는 탭
오류가 없는 블록만 저장할 수 있습니다.
은 다음과 같습니다.
옵션 → 사용자 정의의 ‘블록’ 탭에서 블록 저장
Z 1: 오류
시 참조 데이터의 자동 업데이트를 설정합니다.
컴파일 후 프로그램 편집기를 통해 블록에서 발
견한 오류를 포함합니다. ‘소스’ 탭에서 옵션 블록은 프로그래밍 기기의 장치의 데이터베이스
→ 사용자 정의를 선택하면 경고를 표시할지 여부 에서 오프라인 상태로 편집할 수도 있고, ‘프로그
도 설정할 수 있습니다. 래머블 컨트롤러’ 또는 ‘PLC’ 라 부르는 CPU에
서 온라인 상태로 편집할 수도 있습니다. SIMATIC
Z 2: 정보
Manager는 편집을 위해 오프라인과 온라인 창을 제
현재 선택한 주소의 정보를 포함합니다.
공합니다. 오프라인과 온라인은 제목 표시줄의 제
Z 3: 크로스 레퍼런스 목으로 구별합니다.
현재 네트워크에 존재하는 주소의 참조를 포함
오프라인 창의 경우 블록은 PG 데이터베이스에
합니다(2.5.6 “참조 데이터” 참조).
서 바로 편집합니다. 편집기가 열려 있으면 파일 →
Z 4: 주소 정보 저장을 선택해 오프라인 데이터베이스에 수정한 블
현재 네트워크에 존재하는 주소의 심볼 정보를 록을 저장하고 PLC → 다운로드를 선택해 저장한 블
포함합니다(2.5.2 “심볼 테이블” 참조). 기존 록을 CPU에 전송할 수 있습니다. 열려 있는 블록을
심볼과 새 심볼을 편집하고 주소 상태를 관찰할 다른 번호로 또는 다른 프로젝트 안에 저장하거나
수 있습니다. 라이브러리 또는 다른 CPU에 전송하려면 메뉴 명령
Z 5: 수정 파일 → 다른 이름으로 저장을 이용합니다.
제어할 주소를 입력할 수 있는 빈 변수 테이블을 프로그램 편집기에서 메뉴 명령 파일 → 읽기 전용
포함합니다(2.7.3 “변수 모니터링 및 수정” 참 으로 저장...을 선택하면 현재 열려 있거나 저장된 블
조). 록의 쓰기 보호 복사본을 다른 블록 컨테이너에 저
Z 6: 진단 장할 수 있습니다.
S7-PDIAG 옵션 패키지를 이용한 프로세스 진 CPU에서 블록을 편집하려면 해당 블록을 온라인
단을 위한 기존 모니터링 함수의 목록을 포함합 창에서 엽니다. 이렇게 하면 편집이 가능하도록 블
니다. 록이 CPU에서 프로그래밍 기기로 전송됩니다. PLC

75
2 STEP 7 프로그래밍 소프트웨어

그림 2.11 편집기 창의 예

→ 다운로드를 선택하면 편집한 블록을 CPU에 다시 컴파일 복구


쓸 수 있습니다. CPU가 RUN 모드에 있으면 CPU는 프로그램 편집기가 컴파일된 블록을 열면 프로그
편집한 블록을 후속 프로그램 스캔 사이클에서 처리 램 편집기는 LAD/FBD 표현식으로 ‘컴파일 복구’
합니다. 온라인 상태에서 편집한 블록을 오프라인 를 수행합니다. 프로그램 편집기는 심볼, 주석 및 점
데이터베이스에 저장하려면 파일 → 저장을 선택합 프 라벨을 표시하기 위해 PG 데이터 관리에서 실행
니다. 과 관련이 없는 프로그램 구성 구성요소를 사용합니
다. 컴파일 복구 시 PG 데이터 관리에서 정보를 유실
증분 프로그래밍에서는 모든 프로그래밍 기능을
하면 프로그램 편집기는 대체 심볼을 사용합니다.
실행할 수 있습니다. 그러나 한 가지 예외로, 블록
LAD 또는 FBD에서 컴파일을 복구할 수 없는 네트
보호(KNOW_HOW_PROTECT)는 프로그램 소스 파
워크는 STL에 표시됩니다.
일을 통해서만 가능합니다(상세 정보는 24.1 “블록
보호” 참조).
소스 파일의 업데이트 또는 생성
2.6.4 “사용자 프로그램을 CPU에 로드” 및 ‘소스’ 탭에서 옵션 → 사용자 정의를 선택하면 점
2.6.5 “블록 처리” 는 온라인 프로그래밍의 추가 증적으로 생성한 블록을 저장할 때 프로그램 소스
정보를 포함합니다. LAD/FBD 블록의 입력 방법은 파일이 업데이트되거나 파일이 존재하지 않으면 생
3.3 “코드 블록 프로그래밍” 및 3.4 “데이터 블록 성하는 ‘소스 자동 생성’ 옵션을 선택할 수 있습
(DB) 프로그래밍” 을 참조하십시오. 니다.

76
2.5 S7 프로그램 생성

새 소스 파일의 이름은 절대 주소나 심볼 주소에 (CPU) 또는 하나의 프로젝트와 하나의 대상 시스템


서 파생할 수 있습니다. 주소는 절대 형식 또는 심볼 에 존재할 수 있습니다.
형식으로 소스 파일에 전송할 수 있습니다. 프로그램 편집기에서 옵션 → 온라인/오프라인 파트
‘실행’ 버튼을 클릭하고 나타나는 대화상자에서 너 비교를 선택해 열려 있는 블록과 CPU나 프로젝트
프로그램 소스 파일을 생성하려는 블록을 선택합니 에 있는 동일한 블록을 비교합니다. 결과는 ‘7: 비
다. 교’ 탭에서 편집기 창의 상세 정보 영역에 표시됩니
다. 비교
파일 → 소스 생성을 선택하면 컴파일된 블록에서
ASCII 소스 파일을 생성할 수 있습니다. 먼저 S7 프 SIMATIC Manager에서 블록 개체 또는 비교할 블
로그램 개체 아래에 소스 컨테이너를 삽입합니다. 록에만 표시하고 옵션 → 블록 비교를 선택합니다. 비
소스를 생성하려면 먼저 나타난 대화상자에서 소스 교는 오프라인과 온라인 데이터 관리(ONLINE/
의 저장 위치와 이름을 입력하고 블록을 선택합니다. offline) 또는 두 프로젝트(Path1/Path2) 사이에서
수행합니다. 변수와 사용자 데이터 형식(UDT)의 테
SIMATIC Manager에서 편집 → 소스 내보내기를 선
이블도 포함할 수 있는 완전한 프로그램을 비교할
택하면 프로젝트에서 소스 파일을 내보낼 수 있습니
때는 시스템 데이터를 통합할 수 있습니다. ‘실행
다. 그 다음에 예를 들어 다른 텍스트 편집기를 이용
코드 비교’ 를 사용하면 사용할 때 블록의 프로그램
하여 내보낸 ASCII 파일을 추가로 처리할 수 있습니
코드는 물론 생성 언어가 다른 블록도 비교됩니다.
다. 또한 삽입 → 외부 소스를 선택하면 소스 파일을
소스 컨테이너에 다시 들여올 수 있습니다. 비교는 블록의 모든 데이터를 물론, 프로그램 코
드의 타임스탬프와 인터페이스도 포함합니다. 프로
LAD 또는 FBD로 생성한 블록에서 소스 파일을 생
그램 코드가 블록 속성과는 별개로 동일한지 알고
성한 경우, LAD 또는 FBD 블록은 이 소스 파일에서
싶은 경우, 블록의 검사 합계를 비교합니다. 블록의
다시 생성할 수 있습니다. 소스 파일은 SIMATIC
검사 합계를 비교하려면 블록 비교의 결과 창에서
Manager에서 더블 클릭해 연 다음 프로그램 편집기
‘상세 정보’ 버튼을 선택합니다.
에서 파일 → 컴파일을 선택해 컴파일합니다. STL 블
록이 블록 컨테이너에 생성됩니다. STL 블록을 열고
보기 → LAD 또는 보기 → FBD를 선택해 STL 블록을 일 2.5.4 재결선
반 표현식으로 전환합니다. 블록은 저장 후에도 이 재결선 기능을 이용하면 개별적으로 컴파일된 블
속성을 유지합니다. 록 또는 전체 사용자 프로그램에서 주소를 교체할
소스 파일을 만들 때 ‘주소 심볼 ’ 설정을 선택 수 있습니다. 예를 들어, 입력 비트 I 0.0 - I 0.7는
한 경우에는 소스 파일을 컴파일하기 위한 완전한 입력 비트 I 16.0 - I 16.7로 교체할 수 있습니다. 허
심볼 테이블이 필요합니다. 심볼 테이블에서 절대 용되는 주소는 입력, 출력, 메모리 비트, 타이머, 카
주소는 이런 방식으로 지정할 수 있으며, 컴파일 후 운터뿐 아니라 함수 FC 및 함수 블록 FB입니다.
에는 입력과 출력이 다른 프로그램이 생성됩니다. SIMATIC Manager에서 연결을 변경할 개체를 선
이렇게 하면 프로그램을 다른 하드웨어 구성에 활용 택합니다. 이때는 단일 블록을 선택하거나 Ctrl 키를
할 수 있습니다. 이런 목적에서 하드웨어 주소 지정 누른 채 마우스로 클릭하여 블록 그룹을 선택하거나
과 별개인 소스 파일은 라이브러리에 저장하는 것이 전체 블록 사용자 프로그램을 선택합니다. 옵션 →
좋습니다. 재결선 을 선택하면 교체할 기존 주소와 새 주소를
입력할 수 있는 테이블로 이동합니다. ‘확인’ 을
블록 비교 클릭하면 SIMATIC Manager는 주소를 교체합니다.
두 블록의 차이는 블록 비교를 통해 알아낼 수 있 블록의 ‘재결선’ 할 때는 먼저 블록의 번호를
습니다. 블록은 여러 프로젝트, 다양한 대상 시스템 변경하고 해당하는 호출을 변경하는 재결선을 실행

77
2 STEP 7 프로그래밍 소프트웨어

합니다. 함수 블록의 ‘재결선’ 하는 경우, 인스턴 I 1.0 "Limit_switch_up"


스 데이터 블록(DB)은 재결선된 함수 블록에 자동으
로 할당되며 데이터 블록(DB) 번호는 바뀌지 않습니 심볼 테이블에서 입력 I 1.0와 I 1.1의 할당은 다
다. 음과 같이 변경됩니다.

재결선 후 정보 파일은 변경된 블록 및 변경 횟수 I 1.0 "Limit_switch_down"


를 보여 줍니다. I 1.1 "Limit_switch_up"
이미 컴파일된 블록을 판독한 다음, 프로그램은
재결선 후 참조 데이터는 더 이상 최신이 아니므
다음을 포함합니다.
로 다시 생성해야 합니다.
I 1.1 "Limit_switch_up"
‘재결선’ 은 컴파일된 블록에서만 가능하며, 존
위의 항목은 ‘심볼 우선’ 으로 설정한 경우이
재하는 경우 프로그램 소스는 수정되지 않는다는 점
며, ‘절대값 우선’ 으로 설정하면 프로그램은 다
에 유의하십시오.
음을 포함합니다.
또 다른 연결 변경 방법은 다음과 같습니다.
I 1.0 "Limit_switch_down"
Z 컴파일된 블록에서는 주소 우선 순위 기능을 사 심볼 테이블의 변경 후 절대 주소와 심볼 사이에
용할 수도 있습니다. 할당이 존재하지 않는 경우, ‘절대값 우선’ 으로
Z 심볼 주소 지정이 가능한 프로그램 소스 파일이 설정하면 심볼이 표시되더라도 심볼이 유실될 수 있
존재하는 경우, 심볼 테이블에서 절대 주소를 변 기 때문에 구문은 절대 주소를 포함하며 ‘심볼 우
경합니다. 컴파일 후에는 ‘연결되지 않은’ 프 선’ 으로 설정하면 필수적인 절대 주소가 유실되기
로그램이 생깁니다. 때문에 오류로 간주되어 거부됩니다.
‘심볼 우선’ 으로 설정하면 심볼 테이블이 변경
되더라도 심볼 주소 지정의 증분 프로그래밍 블록은
2.5.5 주소 우선 순위
심볼을 유지합니다. 이런 방식으로 이미 프로그램
‘주소 우선 순위’ 탭에 있는 오프라인 블록 개체
한 블록은 주소 할당을 변경해 ‘재결선’ 할 수 있
컨테이너의 속성 창에서는 심볼 테이블을 변경한 후
습니다.
또는 글로벌 데이터 블록(DB)을 선언 또는 할당한
후 표시되어 다시 저장된 기존 블록의 경우 절대 주 이미 컴파일된 블록은 절대 주소 명령구문으로 작
소 또는 심볼 중 어떤 것이 우선 순위를 갖도록 할지 성된 실행 가능한 MC7 코드를 포함하기 때문에 이
설정할 수 있습니다. ‘재결선’ 은 자동으로 이루어지지 않는다는 점에
유의하십시오. 변경은 관련 블록을 열고 다시 저장
기본값은 이전 STEP 7 버전과 마찬가지로 ‘절
한 후 관련 메시지가 나타난 후에 이루어집니다.
대값 우선’ 입니다. ‘절대값 우선’ 으로 설정하면
심볼 테이블 변경 시 절대 주소가 유지되고 심볼은 완전한 블록 폴더에서 변경을 진행하려면, 표시
이에 따라 변경됩니다. ‘심볼 우선’ 으로 설정하 된 블록 개체에서 편집 → 블록 일관성 검사를 선택합
면 절대 주소가 바뀌고 심볼은 유지됩니다. 니다.

예:
심볼 테이블은 다음을 포함합니다. 2.5.6 참조 데이터
SIMATIC Manager는 프로그램 자체의 보완으로
I 1.0 "Limit_switch_up"
I 1.1 "Limit_switch_up" 써 수정이나 테스트에서 기초로 사용할 수 있는 참
조 데이터를 보여 줍니다. 참조 데이터는 다음을 포
이미 컴파일된 블록의 프로그램에서 입력 I 1.0이 함합니다.
스캔됩니다. Z 크로스 레퍼런스

78
2.5 S7 프로그램 생성

Z 할당(입력, 출력, 비트 메모리, 타이머, 카운터) 할당


Z 프로그램 구조 I/Q/M 참조 목록은 주소 영역 I, Q, M의 어떤 비트
가 프로그램에 할당되었는지를 보여 줍니다. 각 라
Z 사용하지 않는 심볼
인에는 비트로 분할된 1바이트가 나타납니다. 또한
Z 심볼이 없는 주소
바이트, 워드 또는 더블 워드를 통한 액세스 방식도
참조 데이터를 생성하려면 블록 개체를 선택하고 나타납니다. T/C 참조 목록은 프로그램에 사용된 타
메뉴 명령 옵션 → 참조 데이터 → 표시를 선택합니다. 이머와 카운터를 보여 줍니다. 타이머나 카운터는
참조 데이터의 표시는 보기 → 필터를 선택해 작업 창 라인에 표시됩니다.
마다 특별하게 변경할 수 있습니다. 또한 창 → 정렬
이점: 목록은 특정 주소 영역의 부적절한 할당 여
저장을 선택하면 향후 편집을 위해 설정을 저장할 수
부 또는 이용 가능한 주소를 보여 줍니다.
있습니다. 또한 동시에 여러 목록을 표시하고 확인
할 수 있습니다(그림 2.12 참조).
프로그램 구조
프로그램 편집기에서 옵션 → 사용자 정의를 선택
하고, ‘블록’ 탭에서 프로그램 소스 파일을 컴파 프로그램 구조는 사용자 프로그램에서 블록의 호
일하거나 점증적으로 작성한 블록을 저장할 때 참조 출 계층을 보여 줍니다. 호출 계층의 시작 개체는 선
데이터의 업데이트 여부를 지정합니다. 택 목록에서 결정할 수 있습니다. 보기 → 필터를 선
택하면 프로그램 구조에서 두 가지 보기 중 하나를
참조 데이터는 데이터를 오프라인으로 관리할 때
선택할 수 있습니다.
만 이용할 수 있다는 점에 유의하십시오. 또한 오프
라인 참조 데이터는 온라인으로 연 블록에서 함수를 호출 구조는 블록 호출의 모든 네스팅 레벨을 보
호출하더라도 표시할 수 있습니다. 여 줍니다. 네스팅 레벨의 표시는 ‘+’ 및 ‘-’ 상
자로 제어합니다. 임시 로컬 데이터의 요구사항은
하나의 블록 또는 관련 블록까지 포함한 전체 경로
크로스 레퍼런스
에 대해 표시됩니다. 블록을 선택하고 편집 → 이동
크로스 레퍼런스 목록은 사용자 프로그램에서 주
→ 위치를 이용해 블록 호출로 변경하거나 편집 → 이
소와 블록의 사용을 보여 줍니다. 크로스 레퍼런스
동 → 블록 주소를 이용해 블록을 엽니다.
목록은 절대 주소, 심볼(있는 경우), 주소가 사용된
블록, 주소의 사용 방법(읽기와 쓰기) 및 주소의 사 종속 구조로 표시는 두 가지 호출 레벨을 보여 줍
용 위치를 포함합니다. 테이블을 열 내용으로 정렬 니다. 블록은 왼쪽의 블록 위치를 호출할 때 나타납
하려면 열 헤더를 클릭합니다. 니다(들여쓰기).

표시한 위치에서 편집 → 이동 → 위치를 선택하거 이점: 어떤 블록이 사용되었습니까? 프로그램한


나 표시한 위치에서 더블 클릭하면 프로그램 편집기 블록이 모두 호출되었습니까? 블록의 임시 로컬 데
를 시작하고 프로그램된 환경에 주소를 표시할 수 이터 요구사항은 무엇입니까? 우선 순위 등급당(조
있습니다. 직 블록당) 지정된 로컬 데이터 요구사항은 충분합
크로스 레퍼런스 목록은 보기 → 필터(예: 비트 메 니까?
모리)를 통해 선택한 주소를 보여 줍니다. 그 다음에
STEP 7은 크로스 레퍼런스 목록을 열 때마다 ‘표 사용하지 않는 심볼
준’ 으로 저장된 필터를 사용합니다. 이 목록은 심볼 테이블에 할당되었지만 프로그램
이점: 크로스 레퍼런스는 참조된 주소가 스캔 또 에서 사용하지 않는 모든 주소를 보여 줍니다. 목록
는 재설정되었는지 여부를 보여 줍니다. 또한 주소 은 심볼, 주소, 데이터 형식, 심볼 테이블의 주석을
가 사용된 블록(1개 이상)을 보여 줍니다. 표시합니다.

79
2 STEP 7 프로그래밍 소프트웨어

그림 2.12 참조 데이터(크로스 레퍼런스, 할당, 프로그램 구조)의 예

이점: 프로그램 작성 시 목록의 주소를 실수로 잊 운영체제 언어의 설정


었습니까? 또는 목록의 주소가 남거나 실제로 필요 Windows 제어판을 사용해 Windows에서 사용할
하지 않습니까? 문자 세트를 선택할 수 있습니다. 다중 언어 버전
(MUI 버전)에서 사용할 수 있는 문자 세트 및 STEP
심볼이 없는 주소 7에서 사용 시 제한은 해당 Readme 파일이나 STEP
7 도움말의 ‘프로젝트 설정 및 편집’ 에서 확인할
이 목록은 프로그램에서 심볼을 할당하지 않고 사
수 있습니다.
용하는 모든 주소를 보여 줍니다. 목록은 심볼이 없
는 주소와 사용 빈도를 표시합니다.
프로젝트 언어
이점: 주소를 실수(우연이나 입력 실수)로 사용했
프로젝트 언어는 프로젝트 생성 시 Windows 제
습니까?
어판에서 설정하는 언어입니다. SIMATIC Manager
에서 편집 → 개체 속성을 이용하면 선택한 프로젝트
2.5.7 언어 설정 나 라이브러리를 생성하는 데 사용된 언어를 확인할
수 있습니다. ‘정의되지 않음’ 은 다중 프로젝트
STEP 7은 다음과 같은 언어로 작업하는 몇 가지
에서 프로젝트나 라이브러리 언어를 중립적으로 사
방법을 제공합니다.
용할 수 있다는 의미입니다. 프로젝트나 라이브러
Z 운영체제 언어 (문자 세트) 리 언어는 항상 중립적입니다. 언어 중립적 프로젝
Z STEP 7 언어 트나 라이브러리에서는 ASCII 문자 세트의 문자만
사용할 수 있습니다(2Ahex - 7Fhex). 추가 정보는
Z 주석과 표시 텍스트용 언어
STEP 7 도움말의 ‘프로젝트 설정 및 편집’ 을 참
언어는 독립적으로 설정합니다. 조하십시오.

80
2.5 S7 프로그램 생성

STEP 7 언어 파일은 내보낸 텍스트 유형 및 발생한 오류에 관한

메뉴 이름과 오류 메시지 등을 정의하는 SIMATIC 정보를 제공합니다.

Manager의 세션 언어는 STEP 7 언어라고 부릅니다.


Microsoft Excel에서 더블 클릭하지 않고 파일 →
SIMATIC Manager의 STEP 7 언어는 ‘언어’ 탭에
열기를 선택한 후 나타난 대화상자를 통해 내보내기
서 옵션 →사용자 정의를 선택해 설정합니다. STEP 7
파일(들)을 엽니다. 내보낸 텍스트는 첫 번째 열에
에 설치된 언어는 ‘국가 언어’ 선택 옵션으로 표시
표시되며, 두 번째 열의 텍스트는 변환할 수 있습니
됩니다. ‘국가 언어’ 탭에서는 STEP 7에서 피연산
다.
자와 연산을 사용하는 언어인 프로그래밍 니모닉을
설정할 수도 있습니다. 영어의 AND 입력에 해당하는 옵션 → 다국어 텍스트 관리 → 들여오기를 선택하면
‘A I ’ 또는 독일어의 ‘U E’ 가 여기에 속합니다.
변환한 텍스트를 프로젝트로 다시 가져올 수 있습니
다. 로그 파일은 들여온 텍스트 및 발생한 오류에 관
다국어 주석과 표시 텍스트 한 정보를 제공합니다
주석과 표시 텍스트는 다국어가 가능합니다. 텍
들여오기 파일의 이름은 파일에 포함된 텍스트 유
스트는 영어와 같은 기본 언어로 입력하고 프로그램
형과 직접 관련이 있기 때문에 변경하지 않아야 합
은 독일어 버전으로 생성할 수 있습니다. 이렇게 하
니다.
려면 원하는 텍스트나 텍스트 유형을 내보냅니다.
내보내기 파일은 Microsoft Excel에서 편집할 수 있
는 *.csv 파일입니다. 변환은 텍스트별로 입력할 수 언어 선택 및 삭제
있습니다. 작업을 마친 변환 테이블은 프로젝트로 옵션 → 다국어 텍스트 관리 → 언어 변경을 선택하면
다시 들여옵니다. 이제 서로 다른 언어를 전환할 수 SIMATIC Manager에 들여온 모든 언어를 변경할 수
있습니다. 다른 언어도 이런 방식으로 변환할 수 있
있습니다. 언어 변경은 들여온 텍스트와 관련 있는
습니다.
개체(블록, 심볼 테이블)에서 실행합니다. 이런 정
SIMATIC Manager에서 옵션 → 디스플레이 장치 언 보는 로그 파일에 포함됩니다. 옵션 → 다국어 텍스트
어를 이용하면 프로젝트에 이용 가능한 언어를 선택 관리 → 주석 관리용 설정을 선택하면 블록의 복사 시
하고 디스플레이 터미널의 표준 언어를 설정할 수 있 다국어 주석의 들여오기 같은 추가 설정이 가능합니
습니다. 다. 옵션 → 다국어 텍스트 관리 → 언어 삭제를 선택하
면 들여온 언어를 다시 삭제할 수 있습니다.
텍스트 내보내기 및 들여오기
표 2.2 변환한 텍스트 유형(선택)
SIMATIC Manager에서 변환하려는 주석을 포함
한 개체(심볼 테이블, 블록 컨테이너, 복수의 블록 텍스트 유형 의미
또는 단일 블록)를 선택합니다. 옵션 → 다국어 텍스트 BlockTitle 블록 제목
BlockComment 블록 주석
관리 → 내보내기를 선택합니다. 나타난 대화 창에서
NetworkTitle 네트워크 제목
내보내기 파일의 저장 위치와 대상 언어를 입력합니
NetworkComment 네트워크 주석
다. 변환하려는 텍스트 유형을 선택합니다(표 2.2
LineComment STL 라인 주석
참조).
InterfaceComment 다음 항목의 주석
코드 블록의 선언 테이블
텍스트 유형마다 별도의 파일이 생성됩니다(예: 데이터 블록(DB)
심볼 테이블의 주석은 SymbolComment.csv 파일). 사용자 데이터 형식 UDT
기존의 내보내기 파일은 확장할 수 있습니다. 로그 SymbolComment 심볼 주석

81
2 STEP 7 프로그래밍 소프트웨어

2.6 온라인 모드 프로그래밍 기기는 모듈 독립 프로그램이 있고 설


정한 프로젝트가 없어도 언제나 CPU에서 온라인으
사용자는 보통 ‘엔지니어링 시스템’ (ES)으로 로 작동할 수 있습니다.
불리는 프로그래밍 기기에서 하드웨어 구성과 사용 설정한 프로젝트가 없으면 PLC → 액세스 가능 노드
자 프로그램을 생성합니다. S7 프로그램은 프로그 표시를 선택해 CPU에 연결을 구축합니다. 연결을
래밍 기기에서 컴파일된 형태 및 오프라인 상태로 구축하면 프로젝트 창에 ‘액세스 가능 노드’ –
하드 디스크에 저장됩니다. ‘모듈(MPI=n)’ – ‘온라인 사용자 프로그램(블
프로그램을 CPU에 전송하려면 프로그래밍 기기 록)’ 의 구조가 표시됩니다. 모듈 개체를 선택하면,
를 CPU에 연결해야 합니다. 먼저 ‘온라인’ 연결 작동 상태 변경 및 모듈 상태 검사와 같은 온라인 기
을 구축합니다. 온라인 연결은 CPU와 예를 들어 진 능을 이용할 수 있습니다. 블록 개체를 선택하면
단 기능을 수행할 수 있는 할당된 모듈의 작동 상태 CPU의 사용자 메모리에 블록이 표시됩니다. 표시
를 확인하는 데 사용할 수 있습니다. 된 개별 블록은 편집(수정, 삭제, 삽입)할 수 있습니
다.

시스템 데이터는 프로그래밍 기기의 데이터 관리


2.6.1 PLC 연결
시스템에 관련 프로젝트가 없어도 기존 구성에 기초
프로그래밍 기기의 MPI 인터페이스와 CPU의 해 작업을 계속할 목적으로 연결된 CPU에서 다시
MPI 인터페이스 간 연결은 온라인 연결의 기계적 전 가져올 수 있습니다. SIMATIC Manager에서 새 프
제 조건입니다. 연결되어 있는 유일한 프로그래밍 로젝트를 생성하고, 생성한 프로젝트를 선택한 다
가능 모듈이 CPU뿐이면 CPU가 유일한 연결이 됩 음 PLC → 스테이션을 PG에 업로드를 이용합니다. 나
니다. MPI 서브넷에 CPU가 여럿이면 각 CPU에는 타난 대화상자에서 원하는 CPU를 지정하면 온라인
고유한 노드 번호(MPI 주소)를 할당해야 합니다. 시스템 데이터가 하드 디스크에 로드됩니다.
MPI 주소는 CPU를 초기화할 때 설정합니다. 모든
프로젝트 창에 CPU 독립 프로그램이 있으면 관련
CPU를 하나의 네트워크로 연결하기 전에 프로그래
된 온라인 프로젝트 창을 생성합니다. 여러 CPU가
밍 기기를 한 번에 하나의 CPU에만 연결하고 시스
MPI에 연결되어 있고 액세스가 가능한 경우, 선택한
템 데이터 개체를 오프라인 사용자 프로그램 블록에
온라인 S7 프로그램에서 편집 → 개체 속성을 이용하
서 또는 메뉴 명령 PLC → 다운로드를 이용해 하드웨
고 ‘모듈 주소’ 탭에서 마운팅 랙 과 CPU의 슬롯
어 구성 편집기로 직접 전송합니다. 이런 방식으로
번호를 설정합니다.
CPU의 특수 MPI 주소( ‘이름 지정')와 함께 기타
속성들을 할당합니다. 온라인 창에서 S7 프로그램 을 선택하면 연결된
CPU의 모든 온라인 기능을 이용할 수 있습니다. 블
MPI 네트워크에서 CPU의 MPI 주소는 새 MPI 주 록 은 CPU의 사용자 메모리에 있는 블록을 보여 줍
소를 포함하는 새로운 파라미터 데이터 기록을 CPU 니다. 오프라인 프로그램의 블록이 온라인 프로그
로 전송해 언제라도 변경할 수 있습니다. 참고: 새 램의 블록과 일치하면, 프로그래밍 기기의 데이터
MPI 주소는 즉시 반영됩니다. 프로그래밍 기기가 새 관리 시스템에 있는 정보(심볼 주소, 주석)로 사용자
주소로 즉시 조정하는 동안 사용자는 글로벌 데이터 메모리의 블록을 편집할 수 있습니다.
통신 등의 다른 애플리케이션에 새 MPI 주소를 적용
보기 → 온라인을 이용해 CPU 할당 프로그램을 온
해야 합니다.
라인 모드로 전환하면 CPU 독립 프로그램처럼 프로
MPI 파라미터는 메모리를 재설정해도 CPU에 유 그램을 수정할 수 있습니다. 또한 SIMATIC 스테이
지됩니다. 그러므로 CPU의 주소는 메모리를 재설 션을 구성해 CPU 파라미터와 주소를 설정하고 모듈
정한 후에도 지정할 수 있습니다. 의 파라미터를 지정할 수 있습니다.

82
2.6 온라인 모드

2.6.2 사용자 프로그램 보호 보호 레벨 3: 읽기/쓰기 보호


적절하게 탑재된 CPU에서는 사용자 프로그램 액 키 잠금 스위치의 위치와 상관없이 사용자 프로그
세스를 암호로 보호할 수 있습니다. 암호를 아는 사 램에 액세스가 불가능합니다. 예외: 진단 버퍼 판독
람은 사용자 프로그램에 무제한 액세스가 가능합니 및 테이블에서 변수 모니터링은 모든 보호 레벨에서
다. 암호를 모르는 사람에 대해서는 세 가지 보호 레 가능합니다.
벨을 정의할 수 있습니다. 보호 레벨은 CPU의 파라
미터 지정 시 하드웨어 구성 도구의 ‘보호’ 탭에 암호 보호
서 설정합니다. 보호 레벨 2나 3 또는 ‘암호로 분리 가능’ 옵션
의 보호 레벨 2를 선택하면 암호를 정의하라는 메시
암호를 이용한 액세스 권한은 SIMATIC Manager
지가 나타납니다. 암호는 최대 8개 문자까지 사용할
를 종료하거나 PLC → 액세스 권한 → 취소를 이용해
수 있습니다.
암호 보호를 취소할 때까지 유지됩니다.
암호로 보호된 사용자 프로그램에 액세스를 시도
하면 암호를 입력하라는 메시지가 나타납니다. 보
보호 레벨 1: 모드 선택 스위치
호된 CPU에 액세스하기 전에 PLC → 액세스 권한 →
보호 레벨 1은 암호 없이 기본값으로 설정됩니다. 설정을 통해 암호를 입력할 수도 있습니다. 먼저 관
CPU에 키 잠금 스위치가 있으면 보호 레벨 1은 련 CPU나 S7 프로그램을 선택합니다.
CPU 전면에서 모드 선택 스위치로 사용자 프로그램 ‘암호 입력’ 대화상자에서 ‘보호된 모든 모듈
의 보호를 설정하는 데 사용합니다. RUN-P 및 정지 에서 기본값으로 암호를 사용’ 옵션을 선택하면 동
위치에서는 사용자 프로그램에 무제한 액세스가 가 일한 암호로 보호된 모든 모듈에 액세스 가능합니다.
능하고, RUN 위치에서는 프로그래밍 기기를 통한
암호 액세스 인증은 마지막 S7 애플리케이션을
읽기 액세스만 가능합니다. 이런 위치에서 키 잠금
종료할 때까지 유지됩니다.
스위치를 분리하면 모드는 스위치를 통해 변경할 수
없습니다. 암호를 아는 사람은 보호 레벨 설정과 키 잠금 위
치에 상관없이 CPU의 사용자 프로그램에 무제한 액
CPU와 키 잠금 스위치에 쉽게 액세스할 수 없거
세스가 가능합니다.
나 CPU와 키 잠금 스위치가 멀리 떨어져 있으면,
‘암호로 분리 가능’ 옵션을 선택하고 키 잠금 스위
치를 RUN 위치로 돌려 암호를 우회할 수 있습니다. 2.6.3 CPU 정보
온라인 모드에서 이용할 수 있는 CPU 정보는 다
모드 선택 스위치가 토클 스위치이면 보호 레벨 1
음과 같습니다. 온라인 모드에서 프로젝트 없이 모
은 사용자 프로그램에 대한 액세스를 제한하지 않습
듈을 선택하거나 온라인 프로젝트 창에서 S7 프로
니다.
그램을 선택하면 메뉴 명령이 나타납니다.
시스템 함수 SFC 109 PROTECT를 이용하면 보 Z PLC → 진단/설정
호 레벨 1에서 프로그램을 통해 쓰기 보호 기능(보
Z → 하드웨어 진단
호 레벨 2)을 켜거나 끌 수 있습니다(20.3.8 “프로
(2.7.1 “하드웨어 진단” 참조)
그램 보호 변경” 참조).
Z → 모듈 정보
일반 정보(버전), 진단 버퍼, 메모리(작업과 로
보호 레벨 2: 쓰기 보호 드 메모리의 현재 맵, 압축), 사이클 시간(최근,
보호 레벨 2에서는 키 잠금 스위치의 위치와 상관 최장, 최단 프로그램 사이클의 길이), 타이밍 시
없이 사용자 프로그램의 읽기만 가능합니다. 스템(CPU 클록, 클록 동기화 및 런타임 미터의

83
2 STEP 7 프로그래밍 소프트웨어

속성), 성능 데이터(이용 가능한 조직 블록과 시 메모리 카드 또는 마이크로 메모리 카드로 CPU


스템 블록, 주소 영역의 크기), 통신(데이터 전송 에 통합된 RAM 로드 메모리에서는 CPU를 정지 상
률과 통신 링크), 정지 상태의 스택(B 스택, I 스 태로 전환하고 메모리를 재설정한 다음 사용자 프로
택, L 스택) 그램을 전송하는 방법을 통해 완전한 사용자 프로그
램을 전송합니다. 또한 구성 데이터도 전송됩니다.
Z → 작동 모드
현재 작동 모드의 표시(예: 실행 또는 정지), 작 구성 데이터(CPU 속성, 구성된 연결, GD 통신,
동 모드의 변경 모듈 파라미터 등)만 변경하려면, 시스템 데이터 개
체만 CPU에 로드합니다(개체를 선택하고 메뉴 명
Z → 삭제/재설정
령 PLC → 다운로드를 이용해 선택한 개체를 전송합
정지 모드에서 CPU 재설정
니다). CPU의 파라미터는 즉시 반영되며, CPU는
Z → 실제 시간 설정 시작 동안 나머지 모듈의 파라미터를 해당 모듈로
내부 CPU 클록의 설정 및 시차(향상된 대화상자 전송합니다.
에서 설정 가능) 전체 구성은 시스템 데이터 개체와 함께 PLC에

Z PLC → CPU 메시지 로드됩니다. 글로벌 데이터 통신과 같은 애플리케

SFC 52 WR_USMSG, SFC 18 ALARM_S, SFC 이션에서 PLC → 다운로드를 선택하면 애플리케이션

17 ALARM_SQ, SFC 108 ALARM_D, SFC 107 에서 편집한 데이터만 전송됩니다.

ALARM_DQ를 이용해 비동기 시스템 오류 및 프 참고: 압축된 아카이브 파일을 로드하려면 PLC →
로그램에 생성된 사용자 정의 메시지 보고 메모리 카드에 저장을 선택합니다(2.2.2 “관리, 재조
직, 아카이브 저장” 참조). 아카이브 파일의 프로젝
Z PLC → 값 강제 적용 표시,
트는 프로그래밍 기기로 또는 CPU에서 바로 편집할
PLC → 변수 모니터링/수정
수 없습니다.
2.7.3 “변수 모니터링 및 수정” 및 2.7.4 “변
수 강제 출력” 참조)
2.6.5 블록 처리

2.6.4 사용자 프로그램을 CPU에 로드 블록 전송


사용자 프로그램(컴파일된 블록과 구성 데이터) RAM 로드 메모리에서는 전체 프로그램을 온라인
을 CPU에 전송하면 CPU의 로드 메모리에 로드됩 으로 전송하는 것 외에 개별 블록을 수정, 삭제 또는
니다. 물리적으로 로드 메모리는 CPU, 메모리 카드 다시 로드할 수 있습니다.
또는 마이크로 메모리 카드에 통합된 메모리일 수 개별 블록을 CPU에 전송하려면 오프라인 창에서
있습니다(1.1.6 “CPU 메모리 영역” 참조). 개별 블록을 선택한 후 PLC → 다운로드를 선택합니
마이크로 메모리 카드 또는 플래시 EPROM 메모 다. 오프라인과 온라인 창이 동시에 열려 있는 경우
리 카드는 프로그래밍 기기에 삽입해 데이터 매체로 에는 마우스를 이용하여 한쪽 창에서 다른 창으로
사용할 수 있습니다. 전원을 끈 상태에서 카드를 드래그&드롭하여 블록을 옮길 수 있습니다.
CPU에 삽입합니다. 전원을 켜고 메모리를 재설정 작동하는 동안 개별 블록을 전송할 때는 특별한
하면 카드의 관련 데이터는 CPU의 작업 메모리로 주의가 필요합니다. CPU 메모리에서 이용할 수 없
전송됩니다. 적절하게 탑재된 CPU를 이용하는 경 는 블록들을 하나의 블록으로 호출하려면 ‘하위 수
우에는, 플래시 EPROM 메모리 카드 또는 마이크로 준’ 의 블록부터 로드해야 합니다. 이런 방식은 로
메모리 카드를 CPU에 삽입한 후 전체 프로그램에서 드한 블록에 주소가 사용되는 데이터 블록(DB)에서
만 덮어쓰기가 가능합니다. 도 마찬가지입니다. 마지막으로 ‘최고 수준’ 블록

84
2.6 온라인 모드

을 로드합니다. 그 다음에 블록을 호출하면 호출한 하드 디스크에 오프라인으로 저장하는 것이 좋습니


블록은 후속 프로그램 사이클에서 즉시 실행됩니다. 다.

온라인 작업에서도 적용되는 사항은 다음과 같습


온라인에서 블록의 수정이나 삭제 니다. PG 데이터 관리의 오프라인 사용자 프로그램
온라인 사용자 프로그램(CPU에 존재)에서는 오 에서 현재 블록은 파일 → 저장을 선택해 저장합니다.
프라인 사용자 프로그램과 동일한 방식으로 STL을 블록은 PLC → 다운로드를 선택해 사용자 메모리와
이용해 블록을 점증적으로 편집할 수 있습니다. 프 CPU에 다시 씁니다.
로그래밍 기기가 CPU에 온라인으로 연결된 경우에
는 로드 메모리에서 블록의 판독, 수정, 삭제가 가능 압축
합니다. 새 블록이나 수정한 블록을 CPU에 로드하면,
CPU는 블록을 로드 메모리에 배치하고 관련 데이터
로드 메모리의 RAM 구성요소가 완전한 사용자
를 작업 메모리로 전송합니다. 번호가 동일한 블록
프로그램과 수정된 블록을 수용할 정도로 충분히 큰
이 이미 존재하면, ‘기존 블록’ 은 유효하지 않음
경우에는 블록을 제한 없이 편집할 수 있습니다.
으로 선언되고(확인 메시지가 나타남) 새 블록은 메
사용자 프로그램이 플래시 EPROM 메모리 카드 모리의 ‘마지막에 추가’ 됩니다. 삭제된 블록은 유
에 저장된 경우, 블록은 로드 메모리의 RAM 구성요 효하지 않음으로 선언될 뿐 메모리에서 실제로 제거
소가 수정된 블록을 수용할 정도로 충분히 큰 경우 되지는 않습니다.
에만 편집할 수 있습니다. 런타임 동안 RAM에서 수
이렇게 되면 사용자 메모리에 공백이 생기고 이용
정한 블록은 유효하지만 FEPROM에서 수정한 블록
가능한 메모리 용량이 점점 줄어듭니다. 이런 문제
은 유효하지 않습니다. 원래 블록은 전체를 재설정
는 압축 기능을 통해서만 해소할 수 있습니다. RUN
하거나 버퍼에 저장하지 않은 상태에서 전원을 켠
모드에서 압축하면 현재 실행되고 있는 블록은 재배
후 FEPROM에서 작업 메모리로 다시 로드해야 합니
치되지 않으며, 공백이 없는 압축은 정지 모드에서
다.
만 가능합니다.
초소형 CPU에 마이크로 메모리 카드를 사용한 ‘메모리’ 탭에서 메뉴 명령 PLC → 진단/설정 →
경우, 로드 메모리의 모든 블록은 전원이 꺼져도 유 모듈 정보를 선택하면 현재 메모리 할당을 백분율로
지됩니다. 개별 블록은 온라인에서 수정할 수 있으 표시할 수 있습니다. 또한 나타나는 대화상자에는
며, 수정한 블록은 전체를 재설정하거나 버퍼에 저 공백 예방을 위한 압축 버튼이 있습니다.
장하지 않고 전원을 켜도 유지됩니다. 삭제한 블록
이벤트 중심 압축은 호출 SFC 25 COMPRESS를
은 더 이상 존재하지 않습니다.
이용해 프로그램마다 초기화할 수 있습니다.
증분 프로그래밍 모드에서, 블록은 프로그래밍
기기의 오프라인 데이터 관리 및 CPU의 온라인 데
오프라인/온라인 데이터 블록(DB)
이터 관리에서 개별적으로 수정할 수 있습니다. 그
프로그래밍하는 동안 사용자는 기본값과 초기값
러나 온라인과 오프라인 데이터 관리가 일치하지 않
으로 데이터 블록(DB)에 데이터 주소를 할당합니다
으면 편집기에서 오프라인 데이터베이스의 추가 정
(3.4 “데이터 블록(DB) 프로그래밍” 참조). 데이터
보를 표시할 수 없으므로 심볼 식별자, 점프 라벨,
블록(DB)을 CPU에 로드하면 초기값은 로드 메모리
주석, 사용자 데이터 형식이 유실될 수 있습니다.
로 전송되고 다시 작업 메모리로 전송되어 실제 값
온라인에서 수정한 블록은 데이터 불일치(호출한 으로 변경됩니다. 프로그램에서 데이터 주소의 값
블록의 인터페이스가 호출 블록의 프로그램보다 뒤 이 변경되면 작업 메모리의 실제 값도 변경됩니다(
에 있을 때 ‘타임스탬프 충돌’ )를 방지하기 위해 그림 2.13 참조).

85
2 STEP 7 프로그래밍 소프트웨어

Initial value

Initial value

그림 2.13 사용자 메모리에 데이터 저장

작업 메모리에 생성된 실제 값은 온라인 데이터 메모리 카드를 사용하면, 로드 메모리에 이미 존재


블록(DB)을 열고 파일 → 저장을 선택하여 프로그램 하는 초기값은 새로운 실제 값으로 작업 메모리에
편집기의 오프라인 데이터 관리로 전송해 프로그램 들어갑니다.
한(로드한) 데이터 블록(DB)에서 오프라인 데이터 플래시 EPROM 메모리 카드나 마이크로 메모리
관리로 업로드할 수 있습니다. 업로드 후 오프라인 카드의 사용 시 로드 메모리에 실제 값을 들여오려
데이터 관리에 저장한 변수 이름과 데이터 형식은 면, 데이터 블록(DB)을 CPU에서 프로그래밍 기기
유지됩니다. SIMATIC Manager에서 온라인 데이터 로 로드했다가 다시 프로그래밍 기기에서 CPU로 로
블록(DB)을 업로드할 때 PLC → PG로 업로드를 선택 드합니다. 마이크로 메모리 카드가 삽입된 CPU는
하거나 데이터 블록(DB)을 온라인 창에서 오프라인 실제 값을 로드 메모리에 직접 쓸 수 있는 시스템 함
데이터 관리의 오프라인 창으로 드래그하면 변수 이 수 SFC 84 WRIT_DBL을 제공합니다. 마이크로 메
름이나 데이터 형식과 같은 주소 설명은 유실됩니다. 모리 카드가 삽입된 CPU에서는 PLC → RAM에서
데이터 블록(DB)을 CPU에서 오프라인 데이터 관 ROM으로 복사를 선택해 작업 메모리의 전체 내용을

리로 다시 업로드하면, 작업 메모리의 실제 값은 오 로드 메모리의 ROM 구성요소로 전송할 수 있습니


프라인 데이터 관리에 초기값으로 들어갑니다. 이 다.
과정에서는 로드 메모리의 초기값이 바뀌지 않습니 연결 안 함 속성이 지정된 데이터 블록(DB)은 작
다. 전체를 재설정하거나 버퍼에 저장하지 않고 전 업 메모리로 전송되지 않고 로드 메모리에 유지됩니
원을 켠 후 플래시 EPROM 메모리 카드나 마이크로 다. 이 속성을 가진 데이터 블록(DB)은 SFC 20

86
2.7 프로그램 테스트

BLKMOV 또는 해당 CPU에 포함된 SFC 83 READ_ Jump 연산을 이용해 디버깅할 블록이나 프로그램
DBL에서만 판독할 수 있습니다. 영역을 선택할 수 있습니다.

증분 프로그래밍 모드에서는 CPU의 작업 메모리 S7 PLCSIM 옵션 소프트웨어를 이용하면 프로그


에서 직접 데이터 블록(DB)을 생성할 수 있습니다. 래밍 기기에서 CPU를 시뮬레이션하여 추가 하드웨
또한 데이터 블록(DB)은 생성한 후 즉시 오프라인으 어 없이 프로그램을 디버깅할 수 있습니다.
로 저장하는 것이 좋습니다.

시스템 함수 SFC 22 CREAT_DB, SFC 85 CREA_ 2.7.1 하드웨어 진단


DB, SFC 82 CREA_DBL 등을 이용하면 런타임 동 고장이 발생한 경우, ‘하드웨어 진단’ 기능을
안 데이터 블록(DB)을 생성할 수 있지만 변수 이름 이용해 고장 모듈의 진단 정보를 가져올 수 있습니
과 데이터 형식 같은 주소 설명은 유실됩니다. 프로 다. 프로그래밍 기기를 MPI 버스에 연결하고
그래밍 기기로 판독할 때는 프로그램 편집기에서 할 SIMATIC Manager를 시작합니다.
당한 이름과 인덱스를 포함한 BYTE 필드가 표시됩 설비 구성과 관련된 프로젝트가 프로그래밍 기기
니다. 이런 데이터 블록(DB)을 오프라인 데이터 관 데이터베이스에 있으면, 보기 → 온라인을 선택해 온
리로 전송하면 관련된 선언도 함께 들어갑니다. 데 라인 프로젝트 창을 엽니다. 다른 방법으로는
이터 블록(DB)이 연결 안 함 속성을 포함하면, 로드 SIMATIC Manager에서 PLC → 액세스 가능 노드 표시
메모리의 초기값은 오프라인 데이터 관리에 새로운 를 이용하고 CPU를 선택합니다.
초기값으로 들어갑니다. ‘연결 안 함’ 속성이 없
PLC → 진단/설정 → 하드웨어 진단 (SIMATIC
으면 작업 메모리의 초기값이 오프라인 데이터 관리
Manager에서 옵션 → 사용자 정의를 선택한 후 ‘보
에 새로운 초기값으로 들어갑니다. 오프라인 데이
기’ 탭에서 기본값)을 선택하면 고장 모듈의 간단
터 관리에 전송할 때는 오프라인 프로그램의 검사
개요를 표시할 수 있습니다. 간단 개요의 선택을 취
합계가 바뀝니다.
소하면 모든 모듈의 상세 진단 정보가 나타납니다.

하드웨어 구성 도구에서는 보기 → 온라인을 이용


해 온라인 보기를 선택합니다. 이제 PLC → 모듈 정보
2.7 프로그램 테스트 를 이용하여 선택한 모듈의 기존 진단 정보를 표시
할 수 있습니다.
CPU에 연결을 구축하고 사용자 프로그램을 로드
한 후에는 프로그램을 전체적으로 또는 개별 블록과
같이 일부만 테스트(디버깅)할 수 있습니다. 시뮬레 2.7.2 정지 모드로 전환 원인 파악
이터 모듈과 같은 디바이스를 사용하여 신호 및 값 오류로 인해 CPU가 정지 모드로 전환되면 그 원
을 포함한 변수를 초기화하고, 프로그램에서 반환 인을 확인하기 위해 먼저 할 일은 진단 버퍼를 출력
한 정보를 평가합니다. 오류로 인해 CPU가 정지 상 하는 것입니다. CPU는 정지 모드로 전환 원인 및 정
태로 전환되면, 주로 CPU 정보에서 오류 원인을 찾 지 모드 유발 오류를 포함한 모든 메시지를 진단 버
을 수 있습니다. 퍼에 저장합니다.

확장 프로그램의 디버깅은 영역 단위로 이루어집 진단 버퍼를 출력하려면 PG를 온라인으로 전환


니다. 예를 들어, 블록 1개의 디버깅만 원하면 해당 하고 S7 프로그램을 선택한 다음 PLC → 진단/설정 →
블록을 CPU에 로드하고 OB 1에서 호출합니다. 프 모듈 정보 메뉴 명령을 이용해 ‘진단 버퍼’ 탭을 선
로그램 디버깅이 ‘처음부터 끝까지’ 영역 단위로 택합니다. 숫자 1을 포함한 최근 이벤트가 정지 모
가능하도록 OB 1이 구성되어 있는 경우에는, 디버 드로 전환 원인입니다(예: ‘프로그래밍 오류 OB가
깅이 필요 없는 호출이나 프로그램 영역을 건너뛰는 로드되지 않아 발생한 정지’ ). 정지 모드 유발 오류

87
2 STEP 7 프로그래밍 소프트웨어

그림 2.14 변수 테이블의 예

는 나타나는 메시지에 설명됩니다(예: ‘FC가 로드 스택에서 선택한 블록의 임시 로컬 데이터를 보여


되지 않았습니다.’ ). 메시지 번호를 더블 클릭하면 줍니다.
다음 하위 디스플레이 필드의 추가 주석을 화면에
표시할 수 있습니다. 메시지가 블록의 프로그래밍
2.7.3 변수 모니터링 및 수정
오류와 관련이 있으면, ‘블록 열기’ 버튼을 클릭
사용자 프로그램의 디버깅에서 유용한 한 가지 방
해 해당 블록을 열고 편집할 수 있습니다.
법은 VAT 변수 테이블을 사용한 변수 모니터링 및
정지 모드로 전환 원인이 프로그래밍 오류이면 수정입니다. 신호 상태 또는 기본 데이터 형식의 변
‘스택’ 탭에서 주변 상황을 확인할 수 있습니다. 수 값을 표시할 수 있습니다. 사용자 프로그램에 액

‘스택’ 탭을 열면 B 스택(블록 스택)이 보이고, B 세스하면 신호 상태의 변경이나 새로운 값의 할당처


럼 변수를 수정할 수도 있습니다.
스택은 인터럽트 지점을 포함한 블록까지 종료되지
않은 모든 블록의 호출 경로를 보여 줍니다. ‘스 데이터 블록(DB)의 쓰기 보호 기능이 꺼진 경우(
택’ 버튼을 클릭하면 인터럽트 스택이 표시됩니다. 블록 속성 AS에서 DB의 쓰기 보호가 비활성화된 경
인터럽트 스택은 오류가 발생한 순간의 인터럽트 지 우)에는 데이터 주소만 수정할 수 있다는 점에 유의
점에서 CPU 레지스터의 내용(누산기, 주소 레지스 하십시오.
터, 데이터 블록 레지스터, 상태 워드)을 보여 줍니 연결 안 함 블록 속성이 설정된 데이터 블록(DB)
다. L 스택(로컬 데이터 스택)은 마우스로 클릭해 B 은 마이크로 메모리 카드의 로드 메모리에 위치하기

88
2.7 프로그램 테스트

때문에, 이런 데이터 블록(DB)의 피연산자는 모니 트리거 조건


터링할 수 없습니다. 데이터 블록(DB)을 온라인 상 모니터링과 수정을 위한 트리거 지점과 조건을 개
태에서 열면 한 번 업데이트가 됩니다. 별적으로 설정하려면, 변수 테이블에서 변수 → 트리
거를 선택합니다. 트리거 지점은 CPU가 시스템 메
주의: 변수 수정으로 인해 위험한 상태가 발생하
모리의 값을 읽거나 시스템 메모리에 값을 쓰는 지
지 않도록 주의해야 합니다!
점입니다. 읽기와 쓰기는 한 번 또는 주기적으로 지
정할 수 있습니다.
변수 테이블 생성
모니터링과 수정의 트리거 조건이 동일한 경우에
변수의 모니터링과 수정을 위해서는 변수 및 관련 는 모니터링을 수정보다 먼저 수행합니다. 수정에
데이터 형식을 포함한 VAT 변수 테이블을 생성해야 서 트리거 지점 ‘사이클 시작’ 을 선택하면, 변수
합니다. 변수 테이블은 최대 255개(VAT 1 - VAT 는 프로세스 입력 이미지의 업데이트 후 및 OB 1의
255)까지 생성하고 이름을 할당할 수 있습니다. 변 호출 전에 수정됩니다. 모니터링에서 트리거 지점
수 테이블의 최대 크기는 1024행이며, 행당 최대 ‘사이클 끝’ 을 선택하면, 상태 값은 OB 1의 종료
255개 문자를 포함할 수 있습니다(그림 2.14 참조). 후 및 프로세스 출력 이미지의 출력 전에 표시됩니
다.
오프라인 상태에서 VAT를 생성하려면 사용자 프
로그램 블록 을 선택하고 삽입 → S7 블록 → 변수 테이
블을 이용하고, 온라인 상태에서 이름이 없는 VAT를 변수 모니터링
생성하려면 S7 프로그램 을 선택하고 PLC → 변수 모 모니터링 기능은 메뉴 명령 변수 → 모니터링을 이
니터링/수정을 이용합니다. 용해 선택합니다. VAT의 변수는 지정한 트리거 조
건에 따라 업데이트됩니다. 영구적 모니터링을 이
사용자는 변수에 절대 주소 또는 심볼 주소를 지
용하면 값의 변화를 화면에서 추적할 수 있습니다.
정하며 변수를 표시하고 수정할 데이터 형식(디스
값은 ‘디스플레이 형식’ 열에서 설정한 데이터 형
플레이 형식)을 선택할 수 있습니다(보기 → 디스플레
식으로 표시됩니다. ESC 키를 누르면 영구적 모니
이 형식 선택을 선택하거나 ‘디스플레이 형식’ 에
터링 기능이 종료됩니다.
서 오른쪽 마우스 버튼을 클릭합니다).
변수 → 값 수정 활성화를 선택하면 지정한 트리거
주석 행은 테이블의 특정 영역에 헤더를 넣는 데
조건에 상관없이 모니터링 값을 즉시 한 번만 업데
사용합니다. 또한 표시할 열을 지정할 수도 있습니
이트합니다.
다. 사용자는 자유롭게 변수나 디스플레이 형식을
변경하고 행을 추가하거나 삭제할 수 있습니다. 변
수 테이블을 블록 개체 컨테이너에 저장하려면 테이 변수 수정
블 → 저장을 선택합니다. 지정한 값을 트리거 조건에 따라 CPU에 전송하
려면, 변수 → 수정을 선택합니다. 값은 수정하려는
변수를 포함한 행에만 입력합니다. 값의 주석은
온라인 연결 구축
“//” 를 사용하거나 변수 → 주석으로 값 수정을 선
오프라인 상태에서 생성한 변수 테이블을 온라인 택해 확장할 수 있습니다. 그러나 이 값은 수정되지
상태로 전환하려면 PLC → 연결 → ... 온라인을 선택 않습니다. 값은 ‘디스플레이 형식’ 열에서 설정한
합니다. VAT는 개별적으로 온라인 상태로 전환해야 데이터 형식으로 정의해야 합니다. 수정 기능의 시
하며, 연결을 삭제하려면 PLC → 연결 해제를 선택합 작 시 보이는 값만 수정됩니다. ESC 키를 누르면 영
니다. 구적 수정 기능이 종료됩니다.

89
2 STEP 7 프로그래밍 소프트웨어

변수 → 수정 값 활성화를 선택하면 지정한 트리거 강제 출력 기능이 활성화되어 있으면 다음이 발생


조건에 상관없이 수정 값을 즉시 한 번만 전송합니 합니다.
다. Z 강제 출력 주소에 대한 모든 읽기 액세스는 사용
자 프로그램을 이용하는 경우(예: 로드) 및 시스
2.7.4 변수 강제 출력 템 프로그램을 이용하는 경우(예: 프로세스 이미
적절하게 탑재된 CPU를 이용하면 특정 변수에 지의 업데이트) 모두 항상 강제 출력 값을 생성
고정된 값을 지정할 수 있습니다. 사용자 프로그램 합니다.
은 더 이상 이 값을 변경( ‘강제 출력’ )할 수 없습 Z S7-400에서 강제 출력 주소에 대한 모든 쓰기
니다. 강제 출력은 CPU 작동 상태에서 가능하며 즉 액세스는 사용자 프로그램을 이용하는 경우(예:
시 반영됩니다. 전송) 및 시스템 프로그램을 이용하는 경우(예:
주의: 변수 강제 출력으로 인해 위험한 상태가 발 SFC 이용) 모두 강제 출력 값을 생성하지 않습
생하지 않도록 주의해야 합니다! 니다. S7-300에서 사용자 프로그램은 강제 출
력 값을 덮어쓸 수 있습니다.
강제 출력의 시작점은 변수 테이블(VAT)입니다.
VAT를 생성하고 강제 출력할 주소를 입력한 다음 S7-300에서 강제 출력은 주기적 수정에 해당합
CPU에 연결을 구축합니다. 강제 출력 값을 포함한 니다. 프로세스 입력 이미지가 업데이트된 후 CPU
창은 변수 → 강제 출력 값 표시를 선택해 열 수 있습니 는 입력에 강제 출력 값을 덮어씁니다. 프로세스 출
다. 력 이미지를 출력하기 전에 CPU는 출력에 강제 출
력 값을 덮어씁니다.
CPU에서 이미 활성화된 강제 출력 값은 강제 출
력 창에서 볼드체로 표시됩니다. 이제 변수 테이블 참고: 강제 출력은 강제 출력 창 또는 변수 테이블
에서 일부 또는 전체 주소를 강제 출력 창으로 전송 을 닫거나 CPU에 연결을 차단해도 종료되지 않습니
하거나 새 주소를 입력할 수 있습니다. 강제 출력 창 다! 강제 출력 작업은 변수 → 강제 출력 중단을 통해
의 내용을 VAT에 저장하려면 테이블 → 다른 이름으로 서만 삭제할 수 있습니다.
저장을 선택합니다. 또한 강제 출력은 메모리 초기화나 CPU에 예비
강제 출력 값을 사용할 수 있는 주소 영역은 다음 배터리가 없는 경우에 전원 차단을 통해 삭제할 수
과 같습니다. 있습니다. 강제 출력을 종료하면 사용자 프로그램
이나 시스템 프로그램을 통해 덮어쓸 때까지 주소는
Z 입력 I(프로세스 이미지)
강제 출력 값을 유지합니다.
[S7-300 및 S7-400]
강제 출력은 CPU에 할당한 I/O에서만 효과가 있
Z 출력 Q(프로세스 이미지)
[S7-300 및 S7-400] 습니다. 재시작 후 강제 출력 주변 입력/출력장치가
더 이상 할당되지 않으면(예: 파라미터 재지정의 결
Z 주변 입력장치 PI
과), 관련 주변 입력/출력장치에서는 더 이상 강제
[S7-400]
출력을 진행할 수 없습니다.
Z 주변 출력장치 PQ
[S7-400]
오류 처리
Z 메모리 비트 M 읽기에서 액세스 너비가 강제 출력 너비보다 크면
[S7-400] (예: 워드에서 강제 출력 바이트), 주소 값에서 강제
강제 출력 작업을 시작하려면 변수 → 강제 출력을 출력이 없는 구성요소는 정상으로 읽힙니다. 그러
선택합니다. CPU는 강제 출력 값을 수용하며 강제 나 동기화 오류(액세스 또는 영역 길이 오류)가 발생
출력 주소의 변경을 더 이상 허용하지 않습니다. 하면 사용자 프로그램이나 CPU에서 지정한 ‘오류

90
2.7 프로그램 테스트

대체 값’ 이 읽히거나 CPU가 정지 모드로 전환됩니 2.7.5 주변 출력장치의 활성화


다. 정지 모드에서 출력 모듈은 대개 OD 신호를 통해
쓰기에서 액세스 너비가 강제 출력 너비보다 크면 비활성화됩니다. 주변 출력장치의 활성화 기능을
(예: 워드에서 강제 출력 바이트) 주소 값에서 강제 이용하면 OD 신호를 비활성화시켜 CPU 정지 모드
출력이 없는 구성요소는 정상으로 씌어집니다. 쓰 에서도 출력 모듈을 수정할 수 있습니다. 수정은 변
기 액세스에서 오류가 발생하면 주소의 강제 출력 수 테이블을 통해 수행합니다. CPU에 할당한 주변
구성요소는 그대로 유지됩니다(예: 동기화 오류에 출력장치만 수정됩니다. 가능한 용도: 정지 모드에
서 쓰기 보호를 취소하지 않음). 서 사용자 프로그램 없이 출력의 배선 테스트

강제 출력된 주변 입력장치를 로드하면 강제 출력 주의: 주변 출력장치의 활성화로 인해 위험한 상


값이 생성됩니다. 액세스 너비가 강제 출력 너비와 태가 발생하지 않도록 주의해야 합니다!
일치하면 연결에 실패하거나 아직 연결하지 않은 입 변수 테이블을 생성하고 주변 출력장치(PQ)를 입
력 모듈을 강제 출력 값으로 ‘대체’ 할 수 있습니다. 력한 후 값을 수정합니다. 변수 테이블을 온라인 상
태로 전환하려면 PLC → 연결 → ...을 선택하고 필요
강제 출력 주변 입력장치 PI에 속하는 프로세스
한 경우 PLC → 작동 모드를 선택하고 ‘정지’ 를 이
이미지의 입력 I는 강제 출력이 반영되지 않고 사전
용해 CPU 작동을 중지합니다.
에 할당되지 않으며 덮어쓸 수 있습니다. 프로세스
이미지를 업데이트하면 입력 모듈은 주변 입력장치 변수 → 주변 출력장치 활성화를 선택해 OD 신호를
의 강제 출력 값을 수신합니다. 비활성화합니다. 이제 모듈은 신호 상태 ‘0’ 또는
대체 값이나 강제 출력 값을 가집니다. 주변 출력장
주변 출력장치 PQ가 강제 출력 상태이면 프로세
치는 변수 → 수정 값 활성화를 선택해 수정합니다. 수
스 이미지에서 관련 출력 Q는 업데이트되지 않으며
정 값은 변경하고 다시 수정할 수 있습니다.
강제 출력이 반영되지 않습니다(강제 출력은 모듈
출력에 ‘외부적’ 으로만 반영됩니다). 출력 Q는 이 기능은 다시 변수 → 주변 출력장치 활성화를 선
유지되며 덮어쓸 수 있습니다. 출력을 읽으면 강제 택하거나 ESC 키를 눌러 비활성화시킬 수 있습니
출력 값이 아닌 씌어진 값이 생성됩니다. 출력 모듈 다. 그 다음에 OD 신호를 다시 활성화시키고, 모듈
이 강제 출력 상태이고 출력 모듈의 연결이 실패하 출력을 ‘0’ 으로 설정한 다음, 대체 값이나 강제
거나 취소되면 재연결 시 출력 모듈은 강제 출력 값 출력값을 다시 설정합니다.
을 즉시 수신합니다. ‘주변 출력 장치 활성화’ 가 활성화되어 있는 동
주변 출력장치가 강제 출력 상태이더라도 출력 모 안 정지 모드를 종료하면, 모든 주변 입력장치가 삭
듈은 신호 상태 ‘0’ 이나 OD 신호의 대체 값(정 제되며 OD 신호는 RESTART 모드로 전환할 때 활
지, HOLD, RESTART 모드에서 출력 모듈의 비활성 성화되었다가 RUN 모드로 전환할 때 비활성화됩니
화)을 출력합니다(예외: OD 평가가 없는 아날로그 다.
모듈은 강제 출력 값을 계속 출력합니다). OD 신호
를 비활성화시키면 강제 출력 값은 다시 반영됩니 2.7.6 테스트 및 프로세스 작업
다. 프로그램 상태 정보를 기록하려면 프로그램 사이
정지 모드에서 PQ 활성화 기능을 활성화시키면, 클에서 추가 실행 시간이 필요합니다. 이런 이유로
강제 출력 값은 OD 신호의 비활성화로 인해 정지 모 디버깅을 위해 두 가지 작동 모드인 테스트 모드와
드에서도 반영됩니다. PQ 활성화 기능을 종료하면 프로세스 모드를 선택할 수 있습니다. 테스트 모드
모듈은 다시 안전 상태(신호 상태 ‘0’ 이나 대체 에서는 모든 디버깅 기능을 제한 없이 사용할 수 있
값)로 설정됩니다. 강제 출력 값은 RUN 모드로 전환 습니다. 예를 들어, 시스템에 연결하면 사이클 실행
해야 다시 반영됩니다. 시간이 크게 증가할 수 있지만 디버깅 기능을 선택

91
2 STEP 7 프로그래밍 소프트웨어

하면 시스템에 연결하지 않고 블록을 디버깅할 수 가를 최소로 유지하도록 주의해야 합니다. 사이클


있습니다. 프로세스 모드에서는 사이클 시간의 증

그림 2.15 LAD/FBD 프로그램 상태

시간이 증가하면 프로그램 루프의 상태 표시가 복귀 2.7.7 프로그램 상태


점에서 중단되는 등의 디버깅 제한이 발생합니다. 프로그램 상태 기능을 이용하면 프로그램 편집기
디버깅 및 단계적 프로그램 실행은 프로세스 작업에 에서 사용자 프로그램의 추가 테스트 방법을 확인할
서 수행할 수 없습니다. 수 있습니다. 프로그램 편집기는 이진 신호 흐름과
S7-300 CPU의 테스트 모드는 공장에서 설정합 디지털 값을 네트워크로 보여 줍니다.
니다. S7-300 CPU의 테스트나 프로세스 모드는 하 디버깅하려는 프로그램이 포함된 블록은 CPU의
드웨어 구성 도구의 ‘보호’ 탭에서 설정할 수 있 사용자 메모리에 있으며, 이 블록은 프로그램 편집
습니다. 테스트나 프로세스 모드를 설정한 후, 구성 기에서 이 블록을 호출하여 편집할 수 있습니다. 열
은 다시 컴파일하여 CPU로 다운로드해야 합니다. 려면 SIMATIC Manager의 온라인 창에서 해당 블록
을 더블 클릭합니다. 편집기를 시작하면 블록에 포
S7-400 CPU의 프로세스 모드는 공장에서 설정
함된 프로그램이 표시됩니다.
합니다. 작동 모드는 프로그램 편집기를 사용하여
온라인 상태에서 변경할 수 있습니다. 디버깅 →작업 디버깅하려는 네트워크를 선택합니다. 프로그램
메뉴 명령은 설정된 작동 모드를 표시하고 온라인 상태 기능은 디버깅 → 모니터링을 선택해 활성화합
변경 기능을 제공합니다. 니다. 이제 블록 창에서 이진 신호 흐름을 보면서 변

92
2.7 프로그램 테스트

경 사항을 추적할 수 있습니다(그림 2.15 참조). 프 이진 입력과 비트 메모리의 심볼 및 주소는 마우


로그램 편집기에서의 표현 방법(예: 색상)은 ‘LAD/ 스로 클릭할 수 있는 버튼으로 표시됩니다. 액세스
FBD’ 탭에서 옵션 → 사용자 정의를 선택해 정의합니 할 때 NO 접점으로 프로그램한 주소 또는 신호 상태
다. 프로그램 상태 기능을 비활성화하려면 디버깅 → ‘1’ 로 스캔한 주소는 주소 상태 ‘1’ 을 전달하
모니터링을 다시 선택합니다. 고, NC 접점으로 프로그램한 주소 또는 신호 상태
‘0’ 으로 스캔한 주소는 주소 상태 ‘0’ 을 전달
트리거 조건을 설정하려면 디버깅 모드로 전환한
합니다. Ctrl/Strg 키와 마우스를 사용하면 접점 컨트
후 디버깅 → 호출 환경을 선택합니다(2.7.6 “테스트
롤 시 여러 주소를 선택하고 선택한 주소에 동시에
및 프로세스 작업” 참조). 디버깅할 블록을 프로그
액세스할 수 있습니다. 피연산자 선택도 동일한 방
램에서 한 번 이상 호출하려면 트리거 조건을 설정
식으로 취소합니다.
해야 합니다. 상태 기록은 참조 데이터에서 또는 수
동으로 호출 경로를 지정하거나 디버깅할 블록의 호
출 시 열려 있는 데이터 블록(DB)에 따라 생성해 시 2.7.8 데이터 주소의 모니터링 및 수정
작할 수 있습니다. 호출 환경을 설정하지 않으면 맨 디버깅할 변수가 데이터 블록(DB)에 존재하면 해
처음 호출 시 블록을 모니터링해야 합니다. 당 변수를 직접 확인하고 수정할 수 있습니다.
SIMATIC Manager에서 데이터 블록(DB)을 선택하
주소 수정 고, 편집 → 개체 열기를 선택합니다. STEP 7 V5.2 이
주소는 프로그램 상태 기능에서 수정할 수 있습니 후 버전에서는 데이터 블록을 열 때 프로그램 편집
다. 주소가 BOOL 데이터 형식인 경우, 주소에 표시 기를 사용할지 또는 ‘데이터 블록에 파라미터 할
하고 디버깅 → 주소를 0으로 수정 또는 디버깅 → 주소 당’ 애플리케이션을 사용할지 여부를 기본적으로
를 1로 수정을 선택합니다. 다른 데이터 형식을 이용 묻습니다.
하는 경우에는 디버깅 → 주소 수정을 선택하고 나타 프로그램 편집기에서 데이터 보기를 활성화하려
난 대화상자에서 표시한 주소에 수정한 값을 입력합 면 보기 → 데이터 보기를 선택하고 디버깅 → 모니터링
니다. 을 선택합니다. 이제 작업 메모리에서 실제 값을 확
인하고 필요한 경우 설정(수정)할 수 있습니다. PLC
접점에서 작업 → 다운로드를 이용해 수정한 실제 값을 작업 메모리
로 다운로드하거나 파일 → 저장을 이용해 수정한 실
프로그램 상태 기능에서는 버튼을 이용해 사용자
제 값을 오프라인 데이터 관리로 가져옵니다.(먼저
프로그램에서 직접 이진 입력과 비트 메모리를 수정
디버깅 → 모니터링을 꺼야 합니다.)
할 수 있습니다. 이 기능을 위한 전제 조건은 다음과
같습니다. ‘데이터 블록(DB)에 파라미터 할당’ 을 이용하
면 CPU의 작업 메모리에서 실제 값을 직접 확인하
Z 심볼 테이블에서 입력과 비트 메모리에 CC(접
고 수정할 수 있습니다. 또한 디버깅 → 모니터링을 선
점 컨트롤) 속성을 할당합니다(2.5.2 “심볼 테
택해도 CPU의 작업 메모리에서 실제 값을 확인하고
이블” 에서 “특수 개체 속성” 참조).
수정할 수 있습니다. PLC → 파라미터 설정 데이터 다
Z ‘일반’ 탭에서 옵션 → 사용자 정의를 선택하고 운로드를 이용하면 완전한 데이터 블록(DB)이 아닌
프로그램 편집기에서 접점 컨트롤을 활성화합 작업 메모리에 실제 값 쓰기만 가능합니다. 데이터
니다. 블록(DB) → 저장을 이용하면 데이터 블록(DB)을 오
프라인 데이터 관리로 가져올 수 있습니다.
Z 디버깅 → 모니터링 및 추가로 디버깅 → 접점 컨트
롤을 선택해 프로그램 상태를 온라인으로 전환 ‘데이터 블록(DB)에 파라미터 할당’ 애플리케
합니다. 이션의 이점은 파라미터 지정 보기에서 데이터 블록

93
2 STEP 7 프로그래밍 소프트웨어

(DB)을 표시하고 파라미터를 지정할 수 있다는 점입 록 FB 58 TCONT_CP에서 인스턴스 데이터 블록


니다. 전제 조건: 시스템 속성 S7-techparam(기술 (DB)의 예제를 이용한 파라미터 지정 보기와 데이터
함수)을 설정하고, 옵션 패키지에서 파라미터 지정 보기 사이의 비교를 보여 줍니다. 파라미터 지정 데
데스크탑을 이용할 수 있어야 합니다. 그림 2.16은 스크탑은 STEP 7과 함께 제공됩니다.
표준 라이브러리 PID 제어 블록의 컨트롤러 함수 블

그림 2.16 파라미터 지정 보기와 데이터 보기 비교

94
3 SIMATIC S7 프로그램

3 SIMATIC S7 프로그램

이 장에서는 다양한 우선 순위 등급(프로그램 실 벤트는 자동화 시스템 시작, 인터럽트 또는 프로그


행 유형)부터 사용자 프로그램의 구성요소(블록)을 램 오류 감지 등이 될 수 있습니다(그림 3.1 참조).
거쳐 변수와 데이터 형식까지 SIMATIC S7-300/ 이벤트에 할당된 프로그램은 여러 이벤트의 발생 시
400 CPU의 사용자 프로그램 구조를 설명합니다. 프로그램 처리 순서(상호 인터럽트 허용)를 결정하
이 장은 LAD와 FBD를 이용한 블록 프로그래밍의 는 우선 순위 등급으로 나뉩니다.
설명에 초점을 맞춥니다. 다음에는 데이터 형식에 최저 순위 프로그램은 CPU에서 주기적으로 처리
대해 설명합니다. 하는 메인 프로그램입니다. 기타 모든 이벤트는 어
기술과 기능 조건을 선택할 때는 설계 단계에서 떤 위치라도 메인 프로그램에 인터럽트가 가능합니
사용자 프로그램의 구조를 정의해야 합니다. 이런 다. 그 다음에 CPU는 관련된 인터럽트 서비스 루틴
정의는 프로그램의 생성, 테스트, 시작에서 중요합 이나 오류 처리 루틴을 실행하며 메인 프로그램으로
니다. 그러므로 효과적인 프로그래밍을 위해서는 반환합니다.
프로그램 구조에 특별한 주의가 필요합니다.
이벤트마다 특정한 조직 블록(OB)이 할당됩니
다. 조직 블록은 사용자 프로그램에서 우선 순위 등
급을 표현합니다. 이벤트가 발생한 경우에 CPU는
3.1 프로그램 처리 할당된 조직 블록을 호출합니다. 조직 블록은 사용
자가 작성할 수 있는 사용자 프로그램의 일부입니
CPU의 전체 프로그램은 운영체제와 사용자 프로
다.
그램으로 구성됩니다.
CPU는 메인 프로그램의 처리를 시작하기 전에
운영체제는 시스템 리소스 및 시스템 리소스를 이
시작 루틴을 실행합니다. 시작 루틴은 메인 전원의
용한 프로세스를 제어하는 모든 명령어와 선언의 집
켜기, CPU 전면 패널에서 모드 선택 스위치의 활성
합이며 전원 차단, 우선 순위 등급의 활성화 등에 대
화, 프로그래밍 기기를 통해 시작할 수 있습니다. 콜
비해 구성요소를 백업 데이터로 포함합니다. 운영
드 리스타트 또는 웜 리스타트의 경우에 시작 루틴
체제는 사용자의 쓰기 액세스가 불가능한 CPU의 구
의 실행 후 프로그램 처리는 항상 메인 프로그램의
성요소입니다. 그러나 운영체제는 프로그램을 업데
처음 실행 시 시작합니다. S7-400 시스템은 인터럽
이트할 때 메모리 카드에서 다시 로드할 수 있습니
트가 발생한 지점에서 프로그램 스캔을 다시 시작할
다.
수 있습니다(핫 리스타트).
사용자 프로그램은 정의한 제어 작업에 따라 설비
메인 프로그램은 CPU가 항상 처리하는 조직 블
(프로세스)에 영향을 주는 신호 처리를 위한 모든 명
록 OB 1에 있습니다. 사용자 프로그램의 시작은 OB
령어와 선언의 집합입니다.
1의 첫 번째 네트워크에서 발생합니다. OB 1이 마
지막 프로그램을 처리한 후에 CPU는 운영체제로 복
3.1.1 프로그램 처리 방법 귀하고, 프로세스 이미지의 업데이트와 같은 다양
사용자 프로그램은 특정 이벤트에 따라 CPU에서 한 운영체제 기능의 실행을 호출한 후에 CPU는 OB
처리하는 프로그램 영역으로 구성됩니다. 이런 이 1을 다시 한 번 호출합니다.

95
3 SIMATIC S7 프로그램

그림 3.1 사용자 프로그램의 처리 방법

프로그램에 끼어들 수 있는 이벤트는 인터럽트 및 유형과 번호가 다릅니다. 모든 CPU가 모든 STEP 7


오류입니다. 인터럽트는 프로세스(하드웨어 인터럽 이벤트를 처리할 수 있는 것은 아닙니다.
트) 또는 CPU(워치독 인터럽트, 인터럽트 시간 등)
에서 발생할 수 있습니다. 오류는 동기와 비동기 에
러로 구분합니다. 3.1.2 우선 순위 등급

비동기 에러는 확장 장치에 전원 공급이 중단된 표 3.1은 이용 가능한 SIMATIC S7 조직 블록을


경우에 프로그램 스캔과 상관없는 오류이거나 모듈 우선 순위에 따라 나열합니다. 일부 우선 순위는
교체 시 생성된 인터럽트입니다. CPU의 파라미터 설정에서 변경할 수 있습니다. 테
동기 에러는 존재하지 않는 주소에 액세스 하려는 이블은 최저와 최고 우선 순위 등급을 보여주고, 낮
프로그램 처리로 인한 오류이거나 데이터 형식 변환 은/높은 범위는 CPU에 따라 다르며, 특정 CPU는
오류입니다. CPU 종류에 따라 이벤트 처리용 OB의 이런 개요 영역을 사용합니다.

96
3.1 프로그램 처리

조직 블록 OB 90(백그라운드 처리)은 조직 블록 Z 사이클/클록 메모리


OB 1 대신에 실행하며, OB 1과 마찬가지로 기타 모 프로세스 이미지의 주기적 업데이트 활성화/비
든 인터럽트와 오류에 의해 중단될 수 있습니다. 활성화, 사이클 모니터링 시간과 최소 사이클 시
간의 지정, 통신에서 백분율로 표현한 사이클 시
시작 루틴은 조직 블록 OB 100(웜 리스타트), OB
간, 클록 메모리의 바이트 수, 프로세스 이미지
101(핫 리스타트), OB 102(콜드 리스타트)에 포함
의 크기
될 수 있으며 우선 순위 27입니다. 시작 루틴에서 발
생하는 비동기 에러는 우선 순위 등급 28입니다. 진 Z 정전 유지 메모리
단 인터럽트는 비동기 에러로 간주합니다. 정전 유지 메모리 바이트, 타이머, 카운터의 개
수, 데이터 블록(DB)에서 정전 유지 영역 지정
CPU의 파라미터를 지정할 때는 사용하려는 우선
순위 등급을 결정합니다. 사용하지 않는 우선 순위 Z 메모리
등급(조직 블록)은 우선 순위를 0으로 할당해야 합 우선 순위 등급(조직 블록)에서 임시 로컬 데이
니다. 터의 최대 수, L 스택의 최대 크기, 통신 작업의
개수
관련 조직 블록에서 사용한 모든 우선 순위 등급
Z 인터럽트
은 프로그래밍해야 합니다. 프로그래밍되지 않으면
하드웨어 인터럽트, 인터럽트 지연시간, 비동기
CPU는 OB 85 ‘프로그램 처리 오류’ 를 호출하거
에러, DPV1 인터럽트의 우선 순위 지정, 프로세
나 정지모드로 전환됩니다.
스 및 인터럽트 지연시간을 통한 부분 프로세스
선택한 우선 순위 등급에서 임시 로컬 데이터(L 이미지 할당
스택)의 용량은 충분해야 합니다(18.1.5 “임시 로
Z 인터럽트 시간
컬 데이터” 참조).
우선 순위 지정, 부분 프로세스 이미지의 할당,
시작 시간과 주기성 지정
3.1.3 프로그램 처리를 위한 지정 Z 주기적 인터럽트
CPU의 운영체제는 대개 기본 파라미터를 사용합 우선 순위, 사이클 시간, 단계별 대기 허용 시간
니다. 기본 파라미터는 특별한 요구사항에 맞게 시 (phase offset)의 지정 및 부분 프로세스 이미지
스템을 사용자 정의하기 위해 CPU에서 하드웨어 개 의 할당
체의 파라미터를 지정할 때 변경할 수 있습니다. 파 Z 동기식 사이클 인터럽트
라미터는 언제든지 변경할 수 있습니다. 우선 순위 지정, DP 마스터 시스템과 부분 프로
모든 CPU는 고유한 파라미터 설정 번호를 가집 세스 이미지의 할당
니다. 모든 STEP 7 파라미터 및 이 파라미터의 가장 Z 진단/클록
중요한 설정에 대한 개요는 다음과 같습니다. 시스템 진단 지정, 클록 동기화 유형 및 간격, 보
정 계수
Z 일반
CPU 이름, 설비 식별자, 위치 ID, MPI 인터페이 Z 보호
스의 설정(DP와 조합되지 않은 경우), 주석 보호 레벨 지정, 암호 정의, 프로세스 또는 디버
깅 모드 설정
Z 시작
시작 유형 지정(콜드 리스타트, 웜 리스타트, 핫 Z 멀티 컴퓨팅
리스타트), 준비 신호나 모듈 파라미터 지정에 CPU 번호 지정
대한 모니터링, 웜 리스타트 전에 경과할 수 있 Z 통합 함수
는 최대 시간 통합 함수의 활성화 및 파라미터 지정

97
3 SIMATIC S7 프로그램

Z 통신 시작 시 CPU는 기본값 대신에 사용자 파라미터


연결 리소스 정의 를 사용하며, 사용자 파라미터는 변경 전까지 유효
Z 웹 합니다.
웹 서버의 활성화, 언어 선택

표 3.1 SIMATIC S7 조직 블록
조직 블록 호출 우선 순위
기본값 수정 가능
자유 사이클 운영체제를 통해 주기적으로 1 아니오
OB 1
TOD 인터럽트 지정한 실제 시간에서 또는 정기 간격으로 2 0, 2 - 24
OB 10 - OB 17 (예: 매월)
인터럽트 지연시간 프로그래밍 가능 시간 이후 사용자 프로그램을 통한 3-6 0, 2 - 24
OB 20 - OB 23 제어
워치독 인터럽트 프로그래밍 가능 간격에 따라 정기적으로 7 - 15 0, 2 - 24
OB 30 - OB 38 (예: 100ms마다)
프로세스 인터럽트 I/O 모듈의 인터럽트 신호에서 16 - 23 0, 2 - 24
OB 40 - OB 47
DPV1 인터럽트 프로피버스 DPV1 슬레이브에서 발생된 상태, 업데 2 0, 2 - 24
OB 55 - OB 57 이트 및 공급자 알람으로
멀티프로세서 인터럽트 멀티프로세서 모드에서 사용자 프로그램을 통한 이 25 아니오
OB 60 벤트 중심
동기식 사이클 인터럽트 DP 마스터의 동기식 사이클 인터럽트를 통해 25 0, 2 - 26
OB 61 - OB 64 (DP 사이클과 동기화)
기술 동기 인터럽트 CPU 317에서 기술 데이터 블록의 업데이트 후 동 25 아니오
OB 65 기식으로
이중화 에러 인터럽트
OB 70, I/O 오류로 인해 이중화가 손실된 경우, 25 2 - 26
CPU 이중화 에러의 경우
OB 72, 통신 이중화 에러의 경우 28 2 - 28
OB 73 25 2 - 26
비동기 에러 인터럽트 프로그램 실행과 관련이 없는 오류의 경우(예: 시간
OB 80 오류, SE 오류, 진단 인터럽트, 모듈 탈착/장착 인 26 2) 아니오
OB 81 - OB 84, 86, 87 터럽트, 랙/스테이션 연결 실패, 처리 중단) 25 2) 2 - 26
OB 85 25 2) 24 - 26
OB 88 28 아니오
백그라운드 처리 아직 도달하지 않은 최소 사이클 시간 29 1) 아니오
OB 90
시작 루틴 프로그래머블 컨트롤러의 시작 시 27 아니오
OB 100, OB 101, OB 102
동기 에러 프로그램 실행과 연결된 오류의 경우(예: I/O 액세 오류가 발생한
OB 121, OB 122 스 오류) OB의 우선 순위
1) 텍스트 참조
2)
시작 시: 28

98
3.2 블록

프로그램 길이, 메모리 요구사항 시스템 함수를 통해 생성된 데이터 블록(DB)을


컴파일된 블록의 메모리 요구사항은 블록 속성에 쓰거나 삭제해도 검사 합계는 변경되지 않습니다.
나열됩니다. SIMATIC Manager에서 블록을 선택하 검사 합계는 프로그래밍한(로드한) 데이터 블록
고 ‘일반 파트’ 2 탭에서 편집 → 개체 속성을 이용 (DB)을 삭제하거나 로드 메모리의 초기값을 시스템
하면 선택한 블록의 로드와 작업 메모리 요구사항을 함수 SFC 84 WRIT_DBL로 수정한 경우에 변경됩니
확인할 수 있습니다. 다.

사용자 프로그램의 길이는 오프라인 블록 컨테이


너의 속성에 나열됩니다(블록을 선택하고 편집 → 개 모듈 ID
체 속성 선택). ‘블록’ 탭에는 ‘작업 메모리에서 혁신적인 S7-CPU, 프로피버스 DPV1 슬레이브,
데이터 크기’ 및 ‘로드 메모리에서 데이터 크기’ 프로피넷 IO 디바이스는 식별과 유지보수 기능(I&M
가 표시됩니다. 기능)을 제공할 수 있습니다. 예를 들어, 스테이션에
상위 레벨 항목 명칭과 위치 ID를 부여하고 나중에
로드 메모리의 값에서는 구성 데이터(시스템 데
프로그램에서 평가할 수 있습니다. 상위 레벨 항목
이터 블록(DB))가 유실된다는 점에 유의하십시오.
명칭은 설비 부품을 기능에 따라 식별하는 데 사용
SIMATIC Manager에서 블록은 컨테이너를 열면 상
합니다. 위치 ID는 항목 명칭의 일부이며 예를 들면
세 정보 보기로 표시(테이블로 표시)되며, 메모리 요
공정 설비에서 SIMATIC 디바이스의 정확한 위치를
구사항은 시스템 데이터 개체를 선택하면 창 오른쪽
설명합니다.
하단의 상태 표시줄에 나타납니다.
I&M 데이터를 입력하려면, 하드웨어 구성 도구에
프로그래밍 기기를 온라인 상태로 전환하고
서 모듈을 선택하고 편집 → 개체 속성을 선택합니다.
SIMATIC Manager에서 PLC → 진단/설정 → 모듈 정보
적절하게 설계된 모듈인 경우 ‘일반’ 탭이나 ‘식
를 선택하면 ‘메모리’ 탭에 CPU 메모리의 현재
별’ 탭에서 상위 레벨 항목 명칭과 위치 ID를 입력
사용률이 표시됩니다.
할 수 있습니다. 온라인 모드에서 모듈을 선택하고
PLC→ 모듈 ID 다운로드 또는 PLC → 모듈 ID를 PG로 업
검사 합계 로드를 선택하면 오프라인 데이터 관리와 모듈 사이
프로그램 편집기는 사용자 프로그램의 모든 블록 에 I&M 데이터를 교환할 수 있습니다.
에 대한 검사 합계를 생성하고 생성한 검사 합계를
I&M 데이터를 분석하려면 시스템 상태 목록 ID
블록 컨테이너의 개체 속성에 저장합니다. 프로그
16#011C, 상위 레벨 항목 명칭의 Index 16#0003,
램이 동일하면 검사 합계도 동일하며, 프로그램이
위치 ID의 Index 16#000B를 통해 시스템 상태 리스
변경되면 검사 합계도 바뀝니다. 또한 검사 합계는
트를 판독하는 SFC 51 RDSYSST를 사용합니다.
시스템 데이터에서도 생성됩니다. 블록 컨테이너를
선택하고 편집 → 개체 속성을 이용하면 SIMATIC
Manager에서 검사 합계를 확인할 수 있습니다.
3.2 블록
사용자 프로그램의 검사 합계는 프로그램 코드 및
데이터 블록(DB)의 기본값과 초기값에서 생성됩니 프로그램은 읽고 이해하기 쉬운 영역으로 원하는
다. 작업 메모리에 데이터 주소 쓰기(실제 값)는 검 만큼 분할할 수 있습니다. STEP 7 프로그래밍 언어
사 합계를 변경하지 않습니다. 검사 합계는 데이터 는 필요한 함수를 제공하므로 이런 분할을 지원합니
블록(DB)을 오프라인 데이터 관리로 업로드할 때만 다. 각 프로그램 영역은 독립적이며 기술 또는 기능
변경되며, 이때 실제 값은 초기값으로 바뀝니다. 이 을 기준으로 분할해야 합니다. 분할한 프로그램 영
런 방식은 시스템 함수를 통해 생성된 데이터 블록 역은 ‘블록’ 이라 부릅니다. 블록은 기능, 구조,
(DB)에도 적용됩니다. 목적에 따라 정의한 사용자 프로그램의 영역입니다.

99
3 SIMATIC S7 프로그램

3.2.1 블록 유형 수 블록의 변수는 호출 함수 블록의 인스턴스 데이


STEP 7에서 다양한 작업에 제공하는 블록의 유형 터 블록(DB)에 저장할 수도 있으며, 이런 경우는
은 다음과 같습니다. ‘로컬 인스턴스’ 라고 부릅니다.

Z 사용자 블록
사용자 프로그램 및 사용자 데이터를 포함하는
함수(FC)
블록 함수는 자주 반복되거나 복잡한 자동화 기능을 프

Z 시스템 블록 로그래밍하는 데 사용합니다. 함수는 파라미터 지

시스템 프로그램 및 시스템 데이터를 포함하는 정이 가능하며 값(함수 값)을 호출 블록에 반환합니

블록 다. 함수 값은 옵션이며, 함수는 함수 값 이외에 다


른 출력 파라미터도 포함할 수 있습니다. 함수는 정
Z 표준 블록
보를 저장하지 않으며 할당된 데이터 블록(DB)이 없
FM용 드라이버나 CP용 드라이버와 같이 즉시
습니다.
적용이 가능한 턴키형 블록

데이터 블록(DB)
사용자 블록
데이터 블록(DB)은 사용자 프로그램의 데이터를
광범위하고 복잡한 프로그램은 블록으로 ‘구조
포함합니다. 데이터 블록(DB)의 프로그래밍에서는
화’ (분할)하는 것이 좋으며, 부분적으로는 이런 구
데이터 저장 형식(저장할 블록, 저장 순서, 데이터
조화가 반드시 필요합니다. 용도에 따라 선택할 수
저장 유형)을 결정할 수 있습니다. 데이터 블록(DB)
있는 블록의 유형은 다음과 같습니다.
을 사용하는 두 가지 방법은 글로벌 데이터 블록
조직 블록(OB) (DB)과 인스턴스 데이터 블록(DB)입니다. 글로벌
조직 블록은 운영체제와 사용자 프로그램 사이의 데이터 블록(DB)은 사용자 프로그램에서 ‘free’
인터페이스 역할을 합니다. CPU의 운영체제는 하 데이터 블록이며 코드 블록에 할당되지 않습니다.
드웨어나 인터럽트 지연시간처럼 특정 이벤트가 발 그러나 인스턴스 데이터 블록(DB)은 함수 블록에 할
생한 경우에 조직 블록을 호출합니다. 메인 프로그 당되며 할당된 함수 블록의 로컬 데이터 부분을 저
램은 조직 블록 OB 1 안에 있습니다. 기타 조직 블 장합니다.
록의 경우에는 처리를 위해 호출한 이벤트에 따라 블록 유형당 블록 번호 및 블록 길이는 CPU에 따
영구적으로 번호가 할당됩니다. 라 다릅니다. 조직 블록의 번호 및 해당 블록 번호는
고정되며 CPU의 운영체제에서 할당합니다. 사용자
함수 블록(FB)
는 지정한 범위 내에서 다른 블록 유형의 블록 번호
함수 블록은 블록 파라미터를 통해 호출을 프로그
를 할당할 수 있습니다. 또한 심볼 테이블을 통해 모
래밍할 수 있는 프로그램의 일부입니다. 함수 블록
든 블록에 이름(심볼)을 할당하고 할당한 이름을 통
은 데이터 블록(DB)에 위치한 가변 메모리를 포함합
해 각 블록을 참조할 수도 있습니다.
니다. 이런 데이터 블록(DB)은 함수 블록 또는 더 정
확히 말해 함수 블록 호출에 영구적으로 할당됩니
다. 또한 데이터 구조는 같지만 값이 다른 데이터 블 시스템 블록
록(DB)을 각 함수 블록 호출에 할당할 수도 있습니 시스템 블록은 운영체제의 구성요소입니다. 시스
다. 이렇게 영구적으로 할당된 데이터 블록(DB)은 템 블록은 시스템 함수(SFC) 또는 시스템 함수 블록
인스턴스 데이터 블록(DB)이라 부르며, 함수 블록 (SFB)과 같은 프로그램이나 시스템 데이터 블록
호출과 인스턴스 데이터 블록(DB)의 조합은 호출 인 (SDB)과 같은 데이터를 포함할 수 있습니다. 시스템
스턴스 또는 줄여서 ‘인스턴스’ 라고 부릅니다. 함 블록을 이용하면 내부 CPU 클록의 조작이나 다양한

100
3.2 블록

표 3.2 시스템 데이터 블록의 번호 범위


SDB 번호 의미, 내용
0 운영체제의 응답 및 CPU 내부 기본 설정을 제어하며 CPU에 전송 시 SDB 2를 덮어쓰는
CPU 파라미터
1 논리적, 물리적 주소의 할당, 모듈의 주소 공간 등과 같은 중앙 I/O에서 모듈 주소 지정
(사전 설정 구성)
2 CPU 파라미터
(구성을 전송하지 않은 경우에 CPU 운영체제의 기본 설정은 전체적으로 재설정 후 반영)
3-7 전송한 구성 데이터의 일관성을 저장하는 기타 CPU와 모듈 파라미터
20 - 89 논리 주소와 물리적 주소의 할당, 모듈의 주소 공간 등과 같은 분산 I/O에서 모듈 주소 지정
(사전 설정 구성)
90 - 99 결함 허용 및 페일세이프 시스템의 구성 데이터
100 - 149 CPU에 할당된 중앙 모듈 및 분산 모듈의 파라미터
150 - 152 인터페이스 하위 모듈의 파라미터
153 - 189 분산 모듈의 파라미터
200 - 998 통신 구성용 파라미터(예: 글로벌 데이터 통신, 심볼 기반 메시지, 연결 구성)
999 연결의 라우팅용 구성 데이터
1000 이상 분산 I/O의 파라미터, CP와 FM 모듈의 파라미터,
H/F와 TD/OP 시스템의 파라미터

통신 기능과 같이 중요한 시스템 기능에 액세스할 표준 블록


수 있습니다. 또한 사용자가 생성한 함수 및 함수 블록 외에
SFC와 SFB는 호출할 수 있지만 수정이나 프로그 ‘표준 블록’ 이라 부르는 즉시 적용이 가능한 블록
래밍은 불가능합니다. 블록 자체는 사용자 메모리 도 이용할 수 있습니다. 표준 블록은 저장 매체에 존
에 보존되지 않으며, SFB의 블록 호출과 인스턴스 재하거나 STEP 7 패키지의 일부로 제공한 라이브러
데이터 블록(DB)만 사용자 메모리에 보존됩니다. 리에 포함될 수 있습니다(예: IEC 함수 또는 S5/S7
SDB는 자동화 시스템의 구성이나 모듈의 파라미 변환기용 함수).
터 지정과 같은 정보를 포함합니다. STEP 7은 이런 표준 라이브러리에 포함된 표준 블록의 개요는
블록들을 생성하고 관리합니다. 그러나 스테이션 25 “블록 라이브러리” 를 참조하십시오.
구성 시 내용은 사용자가 결정해야 합니다. 일반적
으로 SDB는 로드 메모리에 위치합니다. SDB를 열
수는 없지만 모듈의 파라미터 지정 시 특별한 시스 3.2.2 블록 구조
템 블록을 이용해 프로그램에서 판독할 수는 있습니 코드 블록을 구성하는 기본적인 세 부분은 다음과
다. 같습니다(그림 3.2 참조).
하드웨어 구성 도구(오프라인 컨테이너) 또는
Z 블록 헤더
CPU(온라인 컨테이너)에서 생성한 현재 시스템 데
블록 이름과 같은 블록 속성을 포함
이터 블록의 목록을 표시하려면 블록 컨테이너에서
시스템 블록 개체를 더블 클릭합니다. 표 3.2는 시 Z 선언 영역
스템 데이터 블록에서 번호 체계의 개요를 보여 줍 블록-로컬 변수의 선언(정의)
니다. Z 프로그램 영역
프로그램 및 프로그램 주석을 포함

101
3 SIMATIC S7 프로그램

그림 3.2 블록의 구조

데이터 블록(DB)을 구성하는 세 부분은 다음과 증분 프로그래밍에서는 선언 영역과 초기화 영역


같습니다. 이 합쳐집니다. 데이터 주소와 해당 데이터 형식은
‘선언 보기’ 에서 정의하고, 데이터 주소는 ‘데이
Z 블록 속성을 포함하는 블록 헤더
터 보기’ 에서 개별적으로 초기화할 수 있습니다.
Z 블록-로컬 변수의 정의를 포함하는 선언 영역(
데이터 주소는 데이터 형식 지정을 포함)
3.2.3 블록 속성
Z 개별 데이터 주소에서 초기값을 지정할 수 있는 블록 속성 또는 특성은 블록 헤더에 포함됩니다.
초기화 영역 사용자는 SIMATIC Manager에서 블록을 선택하고

102
3.2 블록

그림 3.3 블록의 구조

메뉴 명령 편집 → 개체 속성을 이용하거나 프로그램 안 인스턴스 데이터를 무제한 적용할 수 있다는 점


편집기에서 파일 → 속성을 선택해 블록 속성을 확인 이며, 이런 이점은 STL로 프로그램을 작성할 때만
하고 수정할 수 있습니다(그림 3.3 참조). 중요합니다.

또한 이 탭은 블록 생성 시 설정한 블록의 생성 언
‘일반 - 파트 1’ 탭
어 및 블록과 프로젝트의 메모리 위치를 보여 줍니
이름 아래에 있는 탭은 블록 유형과 번호가 있는 다.
블록의 절대 주소뿐 아니라 심볼 테이블의 심볼 이
름과 주석을 포함합니다. 프로그램 편집기는 블록의 생성시간과 마지막 수
정 시간을 타임스탬프로 저장합니다. 두 가지 타임
함수 블록의 경우, 이름 옆의 표시는 블록이 멀티
스탬프는 프로그램 코드와 인터페이스의 블록 파라
인스턴스 기능을 갖고 있는지 여부를 나타냅니다.
미터 및 정적 로컬 데이터입니다. 인터페이스의 수
일반 용도인 멀티 인스턴스 기능을 활성화시키면,
정 일자는 호출 블록에서 프로그램 코드의 수정 일
블록을 로컬 인스턴스로 호출하고 블록에 포함된 멀
자와 같거나 빨라야 한다는 점에 유의하십시오. 그
티 인스턴스 기능의 함수 블록도 로컬 인스턴스로
렇지 않으면 호출 블록을 출력하는 동안 프로그램
호출할 수 있습니다. 함수 블록을 생성할 때는 멀티
편집기에 ‘타임스탬프 충돌’ 에러 메시지가 나타
인스턴스 기능 의 선택을 취소할 수 있습니다. 소스
납니다.
기반 프로그램 입력에서 선택 취소 키워드는
CODE_VERSION1입니다. ‘멀티 인스턴스 기능이 표시되는 주석은 블록 제목과 블록을 프로그래밍
없는’ 함수 블록의 이점은 간접 주소를 지정하는 동 할 때 입력한 블록 주석으로 구성됩니다.

103
3 SIMATIC S7 프로그램

‘일반 - 파트 2’ 탭 된 데이터(실제 값)에 적용됩니다. 로드 메모리의 데


이 탭에 표시되는 이름(헤더)은 블록 이름이며 심 이터(초기값)는 데이터 블록(DB)에 쓰기 보호가 설
볼 주소와 일치하지 않습니다. 여러 블록은 동일한 정되어 있더라도 덮어쓸 수 있습니다. 쓰기 보호는
이름을 가질 수 있습니다. 그룹을 이용하면 블록 그 블록 보호와 혼동하지 않아야 합니다. 블록 보호가
룹에 공통 속성을 할당할 수 있습니다. 프로그램 라 설정된 데이터 블록(DB)은 사용자 프로그램에서 읽
이브러리 카탈로그의 대화 창에서 블록을 선택하면 기와 쓰기가 가능하지만 프로그래밍이나 작업자 모
블록 삽입 시 블록 이름과 그룹이 표시됩니다. 블록 니터링 장치로 볼 수는 없습니다. 속성 PLC에서 DB
생성자의 이름은 작성자를 사용해 입력합니다. 이 의 쓰기 보호는 표준 방식으로 비활성화시키고 프로
름, 그룹 및 작성자는 문자부터 시작하고 최대 8글 그램 편집기를 이용해 아무 때나 변경할 수 있습니
자를 포함할 수 있습니다. 문자, 숫자, 밑줄은 사용 다. 소스 기반 프로그램 입력에서 쓰기 보호를 활성
할 수 있습니다. 버전은 0부터 15까지 두 자리 숫자 화시키는 키워드는 READ_ONLY입니다.
로 입력합니다. 지멘스에서 제공하는 모든 표준 블록의 블록 헤더
길이 데이터는 블록의 메모리 할당을 바이트로 표 는 표준 블록 속성을 포함합니다.
시합니다. 데이터 블록(DB)에는 연결 안 함 속성을 할당할
수 있습니다. ‘연결 안 함’ 이 설정된 데이터 블록
Z 로컬 데이터: 로컬 데이터 스택(임시 로컬 데이
(DB)은 로드 메모리에만 존재하며 처리와 관련이 없
터)에 할당
습니다. ‘연결 안 함’ 이 설정된 데이터 블록(DB)
Z MC 7: 블록의 크기(코드만)
의 데이터는 작업 메모리에 없기 때문에 직접 액세
Z 로드 메모리 요구사항 스가 불가능합니다. 로드 메모리의 데이터는 시스
Z 작업 메모리 요구사항 템 함수를 이용해 판독할 수 있고, 로드 메모리가 마
이크로 메모리 카드인 경우에는 데이터 쓰기도 가능
처리와 관련이 없는 데이터도 블록에 저장되기 때
합니다. 연결 안 함 속성이 설정된 데이터 블록(DB)
문에, 블록은 로드 메모리에서 더 많은 공간을 사용
은 액세스 횟수가 적은 데이터 기록(레서피 또는 아
합니다.
카이브)에 적합합니다. ‘연결 안 함’ 속성은 표준
노하우 보호 속성은 블록 보호에 사용합니다. 노 방식으로 비활성화시키고 프로그램 편집기를 이용
하우 보호 속성이 설정되어 있는 블록의 프로그램은 해 아무 때나 변경할 수 있습니다. 소스 기반 프로그
보기, 인쇄, 수정할 수 없습니다. 편집기는 블록 파 램 입력에서 ‘연결 안 함’ 속성을 활성화시키는
라미터가 지정된 블록 헤더와 선언 테이블만 표시합 키워드는 UNLINKED입니다.
니다. 노하우 보호 속성은 블록의 소스 기반 입력 과 보존 안 함 속성을 활성화시키면, 전원이 꺼지고/
정에서 키워드 KNOW_HOW_PROTECT로 할당할 켜지는 경우에 데이터 블록(DB)은 초기값을 로드 메
수 있습니다. 블록에 노하우 보호 속성이 설정되어 모리에서 작업 메모리로 전송하며 콜드 리스타트처
있으면 아무도 블록의 컴파일 버전을 볼 수 없으며 럼 실행 모드와 정지 모드 사이를 전환합니다. 보존
심지어는 관리자도 볼 수 없습니다(소스 파일은 안 안 함 속성을 비활성화시키면, 데이터 블록(DB)은
전한 장소에 보관해야 합니다!). 정전 유지 기능이 있으므로 전원이 꺼지고/켜지는
PLC에서 DB의 쓰기 보호 속성은 데이터 블록 경우에 실제 값을 유지하며 웜 리스타트처럼 실행
(DB)에서만 가능합니다. 그러므로 쓰기 보호가 설 모드와 정지 모드 사이를 전환합니다. ‘보존 안
정된 데이터 블록(DB)은 프로그램에서 읽기만 가능 함’ 속성은 표준 방식으로 비활성화시키고 프로그
합니다. 쓰기 보호가 설정된 데이터 블록(DB)에서 램 편집기를 이용해 아무 때나 변경할 수 있습니다.
데이터의 덮어쓰기를 시도하면 오류 메시지가 나타 소스 기반 프로그램 입력에서 ‘보존 안 함’ 속성
납니다. 쓰기 보호는 작업 메모리에서 처리와 관련 을 활성화시키는 키워드는 NON_RETAIN입니다.

104
3.2 블록

메뉴 명령 파일 → 읽기 전용으로 저장을 선택해 참 의 통합보다 이전에 이루어졌어야 합니다. 파라미


조용으로 프로그램 편집기에 저장한 블록은 블록 읽 터 번호가 변경되거나 데이터 형식 또는 기본값이
기 전용 속성이 설정된 블록만 수신합니다. 읽기 전 변경되면, 프로그램 편집기는 인터페이스 타임스탬
용 속성의 블록은 모든 코드 블록, 데이터 블록, 사 프를 업데이트합니다.
용자 정의 데이터 형식일 수 있습니다. 읽기 전용 속
성은 프로그램 편집기에서만 설정할 수 있으며, 소 타임스탬프 충돌
스 기반 프로그램 입력에서 읽기 전용 속성을 위한
타임스탬프 충돌은 호출한 블록에서 인터페이스
키워드는 없습니다.
의 타임스탬프가 호출 블록의 코드보다 늦을 때 발
생합니다. 이미 컴파일된 블록을 다시 열면 타임스
‘호출’ 탭 탬프 충돌이 표시됩니다. 그 다음에 프로그램 편집
‘호출’ 탭은 코드와 인터페이스의 타임스탬프를 기는 올바르지 않은 블록 호출을 적색으로 표시합니
포함하며 호출 블록에 호출된 모든 블록의 목록을 다. 타임스탬프 충돌은 다른 블록에 이미 호출된 블
보여 줍니다. 인스턴스 데이터 블록(DB)의 경우, 록의 인터페이스를 수정하는 경우, 다른 프로그램
‘호출’ 탭에는 각각 코드와 인터페이스의 타임스 의 블록을 새 프로그램에 조합하는 경우 또는 전체
탬프를 포함한 기본 함수 블록 및 인스턴스 데이터 프로그램의 영역을 소스 파일로 다시 컴파일하는 경
블록(DB)에 호출된 로컬 인스턴스(함수 블록)가 표 우에 발생할 수 있습니다.
시됩니다.
그러나 대개 ‘타임스탬프 충돌’ 로 설명되는 인
터페이스 충돌의 원인은 여러 가지일 수 있습니다.
‘속성’ 탭 인터페이스 충돌은 호출하거나 참조한 블록이 호출
블록은 시스템 속성을 포함할 수 있습니다. 시스 블록보다 늦은 경우에도 발생합니다. 타임스탬프
템 속성은 SIMATIC PCS7 제어 시스템에서 애플리 충돌의 발생 사례는 다음을 포함됩니다.
케이션 사이의 기능을 제어하고 조정합니다.
Z 호출한 블록의 인터페이스가 호출 블록의 코드
보다 늦은 경우
3.2.4 블록 인터페이스 Z 인터페이스 초기화가 블록 인터페이스와 일치
선언 테이블은 일부 프로그램의 블록 인터페이스 하지 않는 경우
를 포함합니다. 블록 인터페이스는 블록 파라미터( Z 함수 블록이 인스턴스 데이터 블록(DB)보다 늦
입력, 출력, 입력/출력 파라미터) 및 함수 블록의 경 은 경우(인스턴스 데이터 블록(DB)은 함수 블록
우 정적 로컬 데이터로 구성됩니다. 인터페이스에 의 인터페이스 설명에서 생성되므로 함수 블록
서는 블록 인터페이스에 기본적으로 속하지 않는 임 과 같거나 늦어야 합니다)
시 로컬 데이터도 처리합니다. 블록 인터페이스는
Z 로컬 인스턴스가 호출 인스턴스보다 늦은 경우(
블록을 프로그래밍할 때 인터페이스 창에서 정의하
함수 블록에 영향)
며 블록을 호출할 때 변수로 초기화합니다(19 “블
록 파라미터” 참조). Z 사용자 데이터 형식 UDT가 변수를 UDT로 선언
한 블록(데이터 블록(DB)이나 다른 UDT를 포함
프로그램 편집기는 호출한 블록에서 블록 파라미
한 블록일 수 있음)보다 늦은 경우
터 초기화가 호출한 블록의 인터페이스와 일치하는
지를 검사합니다. 프로그램 편집기에서는 이런 검
사를 위해 타임스탬프를 사용합니다. 호출한 블록 무효 블록 호출의 수정
의 인터페이스는 호출 블록의 코드보다 이전이어야 프로그램 편집기는 무효 블록 호출을 찾고 수정하
합니다. 다시 말해, 마지막 인터페이스 수정은 블록 는 다양한 방법을 지원합니다. 완전한 프로그램에

105
3 SIMATIC S7 프로그램

서 블록 일관성의 검사 방법은 다음 절( “블록 일관 호출하거나 참조한 블록의 종속성은 트리 다이어


성 검사” )을 참조하십시오. 그램 형식으로 표시됩니다(그림 3.4 참조). 사용자
무효 블록 호출에 커서를 놓고 블록을 열었을 때 는 다음의 두 가지 표현 중 하나를 선택할 수 있습니
무효로 변한 블록 호출은 메뉴 명령 편집 → 블록 호 다.
출 → 업데이트를 선택해 검사할 수 있습니다. 블록 참조 트리 보기는 종속성을 프로그램 구조와 비슷
호출은 블록 파라미터의 삽입, 삭제, 이동 후 또는 한 방식으로 표시합니다. 왼쪽에는 호출 블록이 표
이름과 유형의 변경 시 무효로 변할 수 있습니다. 시되고, 오른쪽에는 왼쪽의 블록에 호출된 블록이
편집 → 블록 호출 → 멀티 인스턴스 호출로 변경 및 편 나타납니다. 예: 인스턴스 DB 20/FB 20은 OB 1에
집 → 블록 호출 → FB/DB 호출로 변경을 선택하면, 호 호출되고, 로컬 인스턴스 FB 21과 FB 22는 FB 20
출을 함수 블록에서 로컬 인스턴스 호출이나 데이터 에 호출됩니다.
블록(DB) 호출로 전송할 수 있습니다. 블록 호출을 종속 트리 보기를 선택하면 호출하거나 참조한 모
수정한 후에는 관련된 인스턴스 데이터 블록(DB)을 든 블록부터 시작해 종속성을 표시합니다. 종속성
다시 생성해야 합니다. 은 왼쪽 열에 표시되고, 호출 블록은 표시된 종속성
메뉴 명령 파일 → 액세스 검사 및 업데이트를 선택 의 오른쪽에 나열됩니다. 예: FB 22는 OB 1에 호출
하는 방법도 있습니다. 그러면 열린 블록에 있는 무 된 인스턴스 DB 20/FB 20의 데이터를 저장합니다.
효 블록 호출이 업데이트되거나 수정할 수 있도록 또한 FB 22는 고유한 DB 29를 포함하며 FB 20에
표시됩니다. 로컬 인스턴스로 호출됩니다.

결정한 정보는 심볼을 통해 축약 형식으로 표시됩


블록 일관성 검사 니다. 예를 들어, 느낌표는 개체에 타임스탬프 충돌
타임스탬프 충돌을 포함하는 블록을 열었을 때 타 이 발생했음을 의미합니다. 적색 배경에 흰색 십자
임스탬프 충돌은 프로그램 편집기에만 표시됩니다. 는 관련 블록이 다시 컴파일되었음을 의미합니다.
전체 프로그램을 검사하려는 경우, SIMATIC
트리 다이어그램이나 출력 창에서 선택한 블록은
Manager에서 ‘블록 일관성 검사’ 기능을 사용할
편집 → 개체 열기를 이용해 편집할 수 있습니다(예:
수 있습니다. ‘블록 일관성 검사’ 기능은 대부분
올바르지 않은 호출의 수정).
의 인터페이스 충돌을 찾아내고 편집이 필요한 프로
그램 위치를 사용자에게 알려줍니다.
일관성 검사를 진행하려면 SIMATIC Manager에
서 블록 컨테이너를 선택하고 편집 → 블록 일관성 검
3.3 코드 블록 프로그래밍
사를 이용합니다. 프로그램이 STEP 7의 이전 버전
2.5 “S7 프로그램 생성” 은 프로그램 생성 및 프
으로 컴파일되어 창에 호출 트리가 표시되지 않으
로그램 편집기 사용의 개요를 포함합니다.
면, 창에서 프로그램 → 컴파일을 선택합니다.
블록 일관성 검사를 마친 후에 인스턴스 데이터
블록(DB)과 UDT에서 생성한 데이터 블록(DB)은 컴 3.3.1 블록 열기
파일된 프로그램에 초기값으로 다시 할당된다는 점 블록 프로그래밍은 블록을 열어 시작합니다. 기
에 유의하십시오. 존 블록은 SIMATIC Manager의 프로젝트 창에서 블
록을 더블 클릭하거나 프로그램 편집기에서 파일 →
프로그램 편집기는 출력 창에 일관성 검사의 진행
열기를 선택해 엽니다.
상태와 결과를 표시합니다(보기 → 오류 및 경고). 일
관성 검사는 라이브러리의 프로그램에서 사용할 수 더블 클릭을 통해 블록 컨테이너에서 컴파일된 블
없습니다. 록을 열면, 증분 프로그래밍을 시작할 수 있습니다.

106
3.3 코드 블록 프로그래밍

그림 3.4 ‘블록 일관성 검사’ 종속성 표현의 예

이런 방식은 오프라인과 온라인 프로그래밍에서 동 에서 개체 이름 아래에 원하는 블록을 입력할 수


일합니다. 있습니다. 대화상자를 닫은 후에는 블록의 내용

블록이 존재하지 않으면 다음과 같은 방식으로 블 을 프로그래밍할 수 있습니다. 프로그램 편집기


록을 생성할 수 있습니다. 는 옵션 → 사용자 정의를 선택해 ‘블록 생성’
탭에서 설정한 언어를 사용합니다.
Z SIMATIC Manager의 경우, 프로젝트 창의 왼쪽
영역에서 블록 개체를 선택하고 삽입 → S7 블록 사용자는 블록 생성 시 블록 헤더의 정보를 입력

→ ...을 이용해 새 블록을 생성합니다. 블록의 속 하거나 블록을 열고 메뉴 명령 파일 → 속성을 선택해

성 창이 나타납니다. ‘일반 - 파트 1’ 탭에서 프로그램 편집기에서 나중에 블록 속성을 입력할 수

이름 아래의 블록 번호 및 언어 ‘LAD’ 또는 있습니다.

‘FBD’ 를 선택합니다. 나머지 속성은 나중에


입력할 수 있습니다. 3.3.2 블록 창
Z 프로그램 편집기의 경우, 메뉴 명령 파일 → 새로 프로그램 편집기는 열려 있는 코드 블록의 변수
만들기를 선택해 대화상자를 표시하고 대화상자 선언 테이블(블록 파라미터와 로컬 데이터) 및 프로

107
3 SIMATIC S7 프로그램

그림 3.5 열려 있는 LAD 블록의 예

그램 창(코드와 주석)을 보여 줍니다. 프로그램 구성 있는 것은 아닙니다. 변수 유형을 사용하지 않는 경


요소는 개요 창에 추가로 표시할 수 없습니다 우 해당 행은 비어 있습니다.
(그림 3.5 참조).
변수 선언은 이름, 데이터 형식, 해당하는 경우 기
본값, 변수 주석(옵션)으로 구성됩니다. 모든 변수
변수 선언 테이블 에 기본값을 할당할 수 있는 것은 아닙니다(예: 임시
변수 선언 테이블은 프로그램 창 위의 창에 표시 로컬 데이터에는 기본값을 할당할 수 없습니다). 함
됩니다. 변수 선언 테이블이 보이지 않으면, 마우스 수와 함수 블록의 기본값에 대한 상세 정보는
포인터를 프로그램 창의 위쪽 경계선에 놓고 마우스 19 “블록 파라미터” 를 참조하십시오.
포인터의 형태가 변할 때 왼쪽 마우스 버튼을 클릭
코드 블록에서 선언 순서는 이전 페이지의 테이블
해 프로그램 창을 아래로 내립니다. 왼쪽에는 변수
처럼 고정되는 반면, 변수 유형의 순서는 변경이 가
유형의 개요가 보이고, 오른쪽에는 블록-로컬 변수
능합니다. 이진 변수를 8개나 16개 블록으로 묶고
를 정의하는 변수 선언 테이블이 표시됩니다(표 3.3
BYTE 변수를 쌍으로 묶으면 메모리 공간을 절약할
참조).
수 있습니다. 프로그램 편집기는 새로운 BOOL 또는
변수를 선언하려면 왼쪽 영역에서 변수 유형을 선 BYTE 변수를 바이트 경계에 저장하고 다른 데이터
택하고 오른쪽의 테이블에 입력합니다. 모든 변수 형식의 변수를 워드 경계(주소에서도 바이트부터
유형을 모든 종류의 코드 블록으로 프로그래밍할 수 시작)에 저장합니다.

108
3.3 코드 블록 프로그래밍

프로그램 창 리를 나열합니다. 블록이나 블록 유형에서 마우스


프로그램 창에는 프로그램 편집기의 기본 설정에 오른쪽 버튼을 클릭하면 유형과 번호 또는 블록 그
따라 블록 제목과 주석용 필드뿐 아니라 첫 번째 네 룹으로 블록의 정렬 여부를 선택할 수 있습니다.
트워크인 경우에 네트워크 제목과 주석용 필드 및
프로그램 항목용 필드가 표시됩니다. 코드 블록의 호출 구조
프로그램 영역에서 주석과 심볼의 표시는 메뉴 명령
호출 구조는 현재 사용자 프로그램에서 블록 계층
보기 → 표시 방법을 선택해 제어합니다. 표시 크기는
을 보여 줍니다. 또한 현재 열려 있는 블록과 사용한
보기 → 확대, 보기 → 축소, 보기 → 확대/축소 비율을 선
블록의 호출 환경도 표시합니다.
택해 변경할 수 있습니다.

3.3.4 프로그램 작성 네트워크


3.3.3 개요 창
LAD/FBD 프로그램은 현재 경로나 논리 연산을
개요 창은 프로그램 구성요소 카탈로그 및 호출
표현하는 네트워크로 나눌 수 있습니다. 프로그램
구조를 포함합니다.
편집기는 네트워크에 1부터 시작하는 번호를 자동
개요 창이 보이지 않으면 보기 → 개요 또는 삽입 → 으로 지정합니다. 각 블록은 최대 999개의 네트워크
프로그램 구성요소를 선택해 개요 창을 표시합니다. 를 수용할 수 있습니다. 각 네트워크에는 네트워크
개요는 별도의 창에 표시됩니다. 개요 창은 편집 제목과 네트워크 주석을 지정할 수 있습니다. 편집
기 창의 가장자리에 ‘삽입’ 할 수 있으며 개요 창 과정에서는 메뉴 명령 편집 → 이동 → ...을 선택해 각
의 제목 표시줄을 더블 클릭하면 분리할 수 있습니 네트워크를 직접 선택할 수 있습니다.
다. 프로그램 코드를 입력하려면 네트워크 주석 창의
아래를 한 번 클릭하거나 ‘주석으로 표시’ 를 설
프로그램 라이브러리 카탈로그 정한 경우에 네트워크 주석의 빗금친 영역 아래를
프로그램 라이브러리 카탈로그는 이용 가능한 그 한 번 클릭합니다. 그러면 프레임이 있는 빈 창이 나
래픽 구성요소를 제공해 LAD 및 FBD에서 프로그래 타납니다. 프로그램 입력은 나타난 창의 어디서나
밍을 지원합니다(그림 3.5 참조). 모든 프로그램 요 시작할 수 있습니다. 다음 장에서는 LAD 현재 경로
소는 마우스를 이용해 프로그램 창으로 끌 수 있습 또는 FBD 논리 연산이 어떻게 보이는지를 설명합니
니다. 다.

또한 프로그램 라이브러리 카탈로그는 오프라인 새 네트워크는 삽입 → 네트워크를 선택해 프로그


블록 컨테이너에 이미 위치한 블록뿐 아니라 이미 램합니다. 그 다음에 프로그램 편집기는 현재 선택
프로그램된 멀티 인스턴스와 이용 가능한 라이브러 한 네트워크 뒤에 빈 네트워크를 삽입합니다.

표 3.3 선언 영역에서 변수 유형
변수 유형 선언 가능한 블록 유형
입력 파라미터 IN - FC FB
출력 파라미터 OUT - FC FB
입력-출력 파라미터 IN_OUT - FC FB
정적 로컬 데이터 STAT - - FB
임시 로컬 데이터 TEMP OB FC FB
함수 값 RETURN - FC -

109
3 SIMATIC S7 프로그램

네트워크 템플릿을 저장하려면 1개 이상의 S7 프


로그램과 소스 컨테이너를 포함하는 라이브러리를
생성해야 합니다.

블록에서 ‘범용’ 템플릿으로 사용하려는 네트


워크를 프로그램합니다. 그 다음에 변경할 주소를
임시 문자 %00 - %99로 교체합니다. 또한 네트워
크 제목과 주석도 이런 방식으로 변경할 수 있습니
다.

블록은 임시 문자 형태로 저장할 수 없기 때문에


주소를 대체하는 임시 문자는 적색으로 표시됩니
다. 네트워크 템플릿(들)을 저장한 후 임시 문자 블
록은 거부(블록을 저장하지 않고 종료)될 수 있기 때
문에 적색 표시는 중요하지 않습니다.

임시 문자를 입력한 후 왼쪽 상단에서 네트워크


제목 앞의 네트워크 번호를 클릭해 네트워크에 표시
합니다. 또한 여러 네트워크를 하나의 템플릿으로
조합할 수도 있습니다. 이때는 Ctrl 키를 누른 채 조
합할 네트워크 번호를 클릭합니다.

이제 편집 → 네트워크 템플릿 생성을 선택합니다.


나타난 대화상자에서는 네트워크와 모든 임시 문자

그림 3.6 에 의미 있는 주석을 할당할 수 있습니다. 나타난 대


LAD 및 FBD의 프로그램 라이브러리 카탈로그 화상자에서 네트워크 템플릿에 이름을 할당하고 저
장 위치(라이브러리의 소스 컨테이너)를 지정합니
다.
블록은 특별한 구문이 필요 없이 간단히 항목 입
력을 중지해 종료합니다. 그러나 최근(빈) 네트워크 네트워크 템플릿을 사용하려면, 프로그램 라이브
는 블록의 끝을 확인하기 쉬운 ‘블록 끝’ 제목으 러리 카탈로그에서 관련 라이브러리를 열고 더블 클
로 프로그래밍할 수 있습니다(특히 예외적으로 긴 릭하거나 프로그램 편집기 창으로 끌어 원하는 네트
블록에 유용). 워크 템플릿을 선택합니다. 자동으로 나타난 대화
상자에서 임시 문자를 유효 항목으로 교체합니다.
프로그램 편집기에서는 SIMATIC Manager로 돌
네트워크 템플릿은 선택한 네트워크 뒤에 삽입됩니
아가지 않아도 새 블록을 생성하거나 기존 블록을
다.
열고 편집할 수 있습니다.

네트워크 템플릿 3.3.5 주소 지정

다른 프로그램에서 재사용하기 위해 라이브러리 입력과 출력 또는 비트 메모리와 같이 프로그램에


에 블록을 저장하는 것처럼 다른 블록에 계속 복사 서 사용한 주소는 절대 모드 또는 심볼 모드에서 지
하기 위해 네트워크 템플릿을 저장합니다. 정합니다.

110
3.3 코드 블록 프로그래밍

절대 주소 지정 프로그램 편집기에서 컴파일된 블록을 열면 LAD


절대 주소 지정은 주소와 블록 파라미터를 주소 또는 FBD 표현으로 ‘컴파일 복구’ 를 수행합니다.
ID 및 비트/바이트 주소로 참조합니다. 네트워크에 컴파일이 복구되면 오프라인 데이터 관리에서 실행
주소와 파라미터 대신 적색 물음표 3개가 존재하면, 이외 프로그램 영역을 사용해 심볼, 주석 및 점프 라
적색 물음표 3개는 유효한 주소로 교체해야 합니다. 벨을 표현합니다. 오프라인 데이터 관리 시스템의
검은 점 3개가 존재하면 교체는 선택사항입니다. 정보가 유실되면 프로그램 편집기는 대체 심볼을 사
용합니다.
프로그램 편집기는 주소와 파라미터의 데이터 형
식이 정확한지를 검사합니다. 일부 데이터 형식 검
사는 프로그램 편집기에서 옵션 → 사용자 정의를 이 3.3.6 LAD 구성요소 편집
용하고 ‘LAD/FBD’ 탭에서 ‘주소의 유형 검사’
옵션을 선택해 비활성화시킬 수 있습니다. 프로그래밍 개요
프로그램은 직렬이나 병렬로 배열된 개별 LAD 구
심볼 주소 지정 성요소들로 구성됩니다. 현재 경로 또는 단계의 프
증분 프로그래밍에서 글로벌 피연산자에 심볼 이 로그래밍은 왼쪽 레일에서 시작합니다. 이 단계에
름을 사용하려면, 심볼 이름은 심볼 테이블에서 절 서 구성요소를 삽입할 위치를 선택한 후 다음을 이
대 주소에 할당되어 있어야 합니다. 프로그램 편집 용해 원하는 프로그램 구성요소를 선택합니다.
기에서 프로그램을 입력하는 동안 옵션 → 심볼 테이 Z 해당 기능 키(예: 정상 개방(NO) 접점은 F2)
블을 선택해 편집할 심볼 테이블을 호출하고 심볼을
Z 기능 표시줄에서 해당 버튼
변경하거나 새 심볼을 입력할 수 있습니다.
Z 프로그램 라이브러리 카탈로그에서 삽입 → 프로
심볼 주소의 표시는 보기 → 표시 방법 → 심볼 표시
그램 구성요소 또는 보기 → 개요를 선택
를 선택해 활성화시킵니다. 메뉴 명령 보기 → 표시 방
법 → 심볼 정보를 선택하면 각 네트워크에 사용한 심 단계는 코일이나 연산 박스로 종결됩니다.
볼의 심볼 대 절대 주소 할당 목록이 표시됩니다. 대부분의 프로그램 구성요소에는 메모리 위치(변
심볼을 입력하는 동안에는 삽입 → 심볼(또는 마우 수)를 할당해야 합니다. 메모리 위치를 할당할 때 가
스 오른쪽 버튼을 클릭하고 심볼 삽입)을 선택해 심 장 쉬운 방법은 먼저 모든 프로그램 구성요소를 배
볼 테이블에서 모든 심볼의 목록을 확인하고 마우스 열하고 각각에 라벨을 부착하는 것입니다.
를 클릭해 심볼 중 하나를 전송할 수 있습니다. 보기
→ 표시 방법 → 심볼 선택을 선택하면 목록이 자동으 접점
로 표시됩니다.
입력과 같은 이진 주소는 접점을 이용해 스캔합니
심볼이 심볼 테이블에 표시되지 않으면, 편집 → 다. 스캔한 신호 상태는 직렬이나 병렬 레이아웃의
심볼을 선택해 절대 주소에 심볼을 할당하고 심볼 주 접점 배열에 따라 조합됩니다.
석도 할당할 수 있습니다. 그 다음에 ‘확인’ 을 클
스캔한 이진 주소의 신호 상태가 ‘1’ (접점 활
릭하면 심볼은 심볼 테이블로 전송됩니다.
성화)이면 ‘전류 흐름’ 은 정상 개방 접점을 통과
또한 심볼은 상세 정보 창의 레지스터 ‘4: 주소 하고, 스캔한 이진 주소의 신호 상태가 ‘0’ (접점
정보’ 에서도 편집할 수 있습니다. 심볼과 심볼 주 비활성화)이면 ‘전류 흐름’ 은 정상 폐쇄 접점을
석의 열이 표시되지 않으면, 심볼과 심볼 주석은 주 통과합니다. 또한 상태 비트를 스캔하거나 논리 연
소 테이블에서 마우스 오른쪽 버튼을 클릭하고 디스 산의 결과를 부정으로 전환(NOT 접점)할 수 있습니
플레이 열(표시/숨김)을 선택해 가져옵니다. 다.

111
3 SIMATIC S7 프로그램

그림 3.7 LAD 프로그램 구성요소의 예

그림 3.8 ‘3차원’ 으로 표현한 LAD 네트워크의 예

코일 머와 카운터의 제어, 파라미터 없이 블록 호출, 프로


코일은 출력과 같은 이진 주소를 제어하는 데 사 그램에서 점프 실행 등에 사용할 수 있습니다.
용합니다. 기본 코일은 전류가 코일에서 흐를 때 이
진 주소를 설정하며 전류가 흐르지 않으면 이진 주 연산 박스
소를 재설정합니다. 연산 박스는 복합 함수를 포함한 LAD 구성요소를
또한 특수 기능을 제공하는 Set 및 Reset 코일과 의미합니다. STEP 7은 두 가지 유형의 ‘표준 연산
같은 추가 라벨의 코일도 존재합니다. 코일은 타이 박스’ 를 제공합니다. 하나는 메모리 기능, 타이머

112
3.3 코드 블록 프로그래밍

와 카운터 기능, 비교 연산 박스와 같이 EN/ENO 동 처리된 경우에 ‘전원’ 은 코일로 흐를 수 있습니


작원리가 없으며, 다른 하나는 MOVE, 연산과 산술 다(15.4 “이진 결과 사용” 참조).
연산, 데이터 형식 변환과 같이 EN/ENO 동작원리
가 있습니다. 코드 블록(FC, FB, SFC, SFB)을 호출
3.3.7 FBD 구성요소 편집
하면 LAD는 호출을 EN/ENO 동작원리가 있는 연산
박스로 표현합니다. 또한 LAD는 프로그래밍 시 원
프로그래밍 개요
하는 함수를 입력할 수 있는 ‘빈 연산 박스’ 를 제
프로그램은 이진 신호 흐름을 통해 서로 연결되어
공합니다.
논리 연산이나 네트워크를 형성하는 개별 프로그램
구성요소로 구성됩니다. 논리 연산의 프로그래밍은
레이아웃 제한 논리 연산의 왼쪽에서 프로그래밍 구성요소를 선택
LAD 편집기는 ‘기본 단계’ 원리에 따라 네트워 해 시작합니다.
크를 설정합니다. 이것은 왼쪽 파워 레일에서 직접
Z 기능 키 이용
시작하고 코일이나 연산 박스로 종결해야 하는 최상
(예: AND 연산은 F2)
위 분기입니다. 모든 LAD 구성요소는 이 단계에 위
치할 수 있습니다. 왼쪽 파워 레일에서 시작하지 않 Z 메뉴 이용

는 병렬 분기의 경우 때로 프로그램 구성요소의 선 삽입 → FBD 언어 요소 → AND 연산 박스 또는

택에 제한이 존재합니다. Z 프로그램 라이브러리 카탈로그 이용


삽입 → 프로그램 구성요소 또는 보기 → 개요를 선
추가 제한은 LAD 구성요소가 ‘비어 있는’ 병렬

분기로 ‘단락’ 될 수 없으며 ‘전원’ 이 오른쪽
에서 왼쪽으로 요소를 통해 흐를 수 없다(병렬 분기 가장 간단한 이진 논리 연산은 할당 연산 박스로
는 열려 있는 분기로 종결해야 함)는 점입니다. 특수 종결합니다.
LAD 구성요소의 레이아웃에 적용되는 추가 규칙에 대부분의 프로그램 구성요소에는 메모리 위치(변
대해서는 관련 장을 참조하십시오. 수)를 할당해야 합니다. 메모리 위치를 할당할 때 가
연산 박스를 프로그램 구성요소로 사용하면 다음 장 쉬운 방법은 먼저 모든 프로그램 구성요소를 배
이 가능합니다. 열하고 각각에 라벨을 부착하는 것입니다.

Z 네트워크당 단일 연산 박스의 프로그램이 가능


합니다. 이진 함수
입력과 같은 이진 주소를 스캔하고 이진 함수
Z 왼쪽 파워 레일부터 시작하는 분기에서 연산 박
AND, OR 및 exclusive OR을 이용해 스캔한 신호 상
스를 T 분기로 배열할 수 있습니다.
태를 조합합니다. 또한 연산 박스의 이진 입력도 입
Z 한 연산 박스의 ENO 출력을 후속 연산 박스의 력에서 이진 주소를 스캔합니다.
ENO 입력으로 전환해 연산 박스를 직렬로 배열
주소 스캔은 주소의 상태 ‘0’ 에 스캔 결과 ‘1’
할 수 있습니다.
을 얻을 수 있도록 부정으로 전환할 수 있습니다. 또
Z ENO 출력을 통해 왼쪽 파워 레일의 분기에서 연 한 상태 비트나 논리 연산에서 논리 연산의 결과도
산 박스를 병렬로 전환할 수 있습니다. 스캔할 수 있습니다.
ENO 출력의 신호 상태는 연산 박스 배열로 평가
할 수 있습니다. ENO 출력을 코일로 종결하면, 모든 기본 연산 박스
연산 박스가 직렬 연결에서 오류 없이 처리된 경우 사용자는 기본 연산 박스를 포함한 출력과 같은
또는 연산 박스 중 하나가 병렬 연결에서 오류 없이 이진 주소를 제어합니다. 기본 연산 박스는 대개 출

113
3 SIMATIC S7 프로그램

그림 3.9 FBD 프로그램 구성요소의 예

그림 3.10 ‘3차원’ 으로 표현한 FBD 네트워크 예

력을 1개만 포함하며 추가 라벨을 포함할 수 있습니 복합 연산 박스


다. 복합 연산 박스는 복합 함수를 포함한 프로그램
그리고 이진 주소의 제어, 엣지신호 판단, 타이머 구성요소를 의미합니다. STEP 7은 두 가지 버전의
와 카운터 주소의 제어, 파라미터 없이 블록 호출, ‘표준 연산 박스’ 를 제공합니다.
프로그램에서 점프 실행 등을 위한 기본 연산 박스 Z 하나는 메모리 기능, 타이머와 카운터, 비교 연
가 존재합니다. 산 박스와 같이 EN/ENO 동작원리가 없으며
Z 다른 하나는 MOVE, 연산 함수와 산술 연산, 데
이터 형식 변환과 같이 EN/ENO 동작원리가 있
습니다

114
3.4 데이터 블록(DB) 프로그래밍

코드 블록(FC, FB, SFC, SFB)을 호출하면 FBD 연산은 연산 박스 중 하나가 오류 없이 처리된 경우


도 호출을 EN/ENO 동작원리가 있는 연산 박스로 표 입니다.
현합니다.
또한 FBD는 프로그래밍 시 원하는 함수를 입력할
수 있는 ‘빈 연산 박스’ 를 제공합니다. 3.4 데이터 블록(DB) 프로그래밍

레이아웃 제한 2.5 “S7 프로그램 생성” 은 프로그램 생성 및 프


FBD 편집기는 왼쪽에서 오른쪽으로 및 위에서 아 로그램 편집기 사용에 대해 소개합니다. 데이터 블
래로 네트워크를 설정합니다. 왼쪽부터 시작하여 록(DB)은 LAD 및 FBD와 동일한 방식으로 프로그램
입력은 함수로 이어지고, 출력은 오른쪽에서 종결 합니다.
됩니다.
논리 연산은 항상 ‘종결 함수’ 를 포함합니다. 3.4.1 데이터 블록(DB) 생성
가장 간단한 형태는 논리 연산의 결과를 이진 주소
블록 프로그래밍은 SIMATIC Manager의 프로젝
에 할당하는 것입니다.
트 창에서 해당 블록을 더블 클릭하거나 프로그램
논리 연산의 T 분기를 이용하면 논리 연산에서 편집기에서 파일 → 열기를 선택해 블록을 열고 시작
‘종결 함수’ 를 추가로 프로그래밍할 수 있습니다( 합니다. 블록이 존재하지 않으면 다음과 같이 블록
‘다중 출력’ ). 그러나 T 분기 다음에 프로그래밍 을 생성합니다.
가능 요소의 선택은 제한됩니다. 예를 들면, 엣지신
호 판단 및 연산 박스 호출은 T 분기 다음에 배열할 Z SIMATIC Manager에서: 프로젝트 창의 왼쪽 영

수 없습니다. 특수 FBD 구성요소의 레이아웃에 적 역에서 블록 개체를 선택하고 삽입 → S7 블록 →

용되는 추가 규칙에 대해서는 관련 장을 참조하십시 데이터 블록(DB)을 이용해 새 데이터 블록(DB)을

오. 생성합니다. 블록의 속성 창이 나타납니다. ‘일


반 - 파트 1’ 탭에서 데이터 블록(DB)의 이름과
연산 박스를 프로그램 구성요소로 사용하면 다음
유형을 지정합니다(3.4.2 “데이터 블록(DB) 유
이 가능합니다.
형” 참조). ‘인스턴스 DB’ 및 ‘DB 유형’ 은
Z 네트워크당 단일 연산 박스의 프로그램이 가능 블록 컨테이너에 함수 블록 (FB), 시스템 함수
합니다. 블록 (SFB) 또는 사용자 데이터 형식 UDT가 존
Z 왼쪽 파워 레일부터 시작하는 분기에서 연산 박 재하는 경우에만 선택할 수 있습니다. 나머지 블
스를 T 분기로 배열할 수 있습니다. 록 속성은 나중에 입력할 수도 있습니다.

Z 한 연산 박스의 ENO 출력을 후속 연산 박스의 Z 프로그램 편집기에서: 파일 → 새로 만들기를 선택


ENO 입력으로 전환해 연산 박스를 직렬로 배열 하면 ‘개체 이름’ 아래에 원하는 블록을 입력
할 수 있습니다. 할 수 있는 대화상자가 나타납니다. 나타난 ‘새
Z ENO 출력을 통해 AND 또는 OR 연산 박스가 가 데이터 블록(DB)’ 대화 창에서는 데이터 블록
능합니다. (DB) 유형을 지정합니다(3.4.2 “데이터 블록
(DB) 유형” 참조). 대화상자를 닫은 후에는 블
직렬로 전환된 연산 박스에서는 연산 박스 처리를
록의 내용을 프로그래밍할 수 있습니다.
그룹으로 제어할 수 있습니다(15.4 “이진 결과 사
용” 참조). 연산 박스의 오류 메시지는 ENO 출력을 사용자는 블록을 생성하는 방식으로 블록 헤더를
조합해 평가합니다. ENO 출력의 AND 연산은 모든 입력하거나 블록 속성을 나중에 추가할 수 있습니
상자가 오류 없이 처리된 경우이며, ENO 출력의 OR 다. 프로그램 편집기에서 블록 헤더에 추가할 속성

115
3 SIMATIC S7 프로그램

은 블록이 열려 있는 동안 파일 → 속성을 선택해 프 지를 묻는 메시지가 나타납니다. 파라미터 보기에


로그래밍할 수 있습니다. 서는 기술적으로 묶인 데이터 값을 보여주며 더 편
리한 파라미터 지정이 가능합니다(2.7.8 “데이터
주소의 모니터링 및 수정” 참조). 이제부터 데이터
3.4.2 데이터 블록(DB) 유형
보기를 설명합니다.
새 데이터 블록(DB)을 생성할 때는 데이터 블록
프로그램 편집기는 데이터 블록(DB)의 프로그래
유형을 지정해야 합니다. SIMATIC Manager를 이용
밍(생성)을 위한 두 가지 보기를 제공합니다.
해 생성할 때는 속성 창의 선택 상자에서 유형을 선
택하고, 프로그램 편집기를 이용해 생성할 때는 ‘새 Z 선언 보기는 글로벌 데이터 블록(DB)의 데이터
데이터 블록’ 창에서 제공된 옵션 중 하나를 클릭합 구조 및 기본값을 정의하는 데 사용합니다.
니다. Z 온라인 값은 데이터 보기에서 처리할 수 있습니

데이터 블록(DB)의 생성과 용도에 따른 세 가지 다.

유형의 데이터 블록(DB)은 다음과 같습니다. 각각의 보기는 절대 데이터 주소를 포함한 테이블
을 이름과 데이터 형식, 초기값 및 주석의 순서로 보
Z ‘데이터 블록(DB)’ 또는 ‘공유 DB’
여 줍니다(그림 3.11 참조). 데이터 보기는 실제 값
Z 글로벌 데이터 블록(DB)으로 생성되며 데이터
이 표시된 추가 열을 포함합니다.
블록(DB)의 프로그래밍 시 데이터 주소를 선언
데이터 블록(DB)을 오프라인 데이터 관리에서 열
합니다.
면 프로그래밍 기기에서 데이터를 편집할 수 있는
Z ‘사용자 정의 데이터 형식을 참조하는 데이터 오프라인 창이 나타납니다. CPU의 사용자 메모리
블록’ 또는 ‘DB 유형’ 에 있는 데이터 블록(DB)을 열면, 프로그램 편집기
Z 사용자 데이터 형식의 데이터 블록(DB)으로 생 는 CPU에서 데이터 값을 편집할 수 있는 온라인 창
성되며 해당 사용자 데이터 형식 UDT의 프로그 을 표시합니다.
래밍 시 선언한 데이터 구조를 사용합니다.

Z ‘함수 블록을 참조하는 데이터 블록(DB)’ 또는 오프라인 창


‘인스턴스 DB’ 글로벌 데이터 블록(DB)의 입력에는 선언 보기를
사용합니다. 데이터 주소는 이 보기에서 선언합니
Z 인스턴스 데이터 블록(DB)으로 생성되며 관련
다. 선언 보기에서는 데이터 주소의 순서를 정의하
함수 블록의 프로그래밍 시 선언한 데이터 구조
고, 각 데이터 주소에 이름과 데이터 형식을 할당하
를 전송합니다.
며, 주석을 추가로 입력할 수 있습니다. 각 데이터
데이터 블록(DB)을 사용자 데이터 형식에 기초해 주소에는 기본값이 할당됩니다. 기본값은 데이터
생성할 때는 기초한 UDT도 정의합니다(예: UDT는 형식에 따라 최소값인 0일 수도 있고 비어 있을 수
블록 컨테이너에 생성되어 있어야 합니다). 함수 블 도 있습니다. 기본값은 초기값 열에서 수정할 수 있
록을 할당한 데이터 블록(DB)도 마찬가지 방식으로 습니다.
생성합니다.
데이터 주소와 기본값은 사용자 데이터 형식이나
함수 블록에서 파생한 데이터 블록(DB)에 정의되어
3.4.3 블록 창 및 보기 있습니다. 데이터 주소와 기본값은 사용자 데이터
구조가 사용자 데이터 형식이나 시스템 함수 블록 형식의 선언이나 함수 블록의 선언에서 생성됩니다.
에 기초한 데이터 블록(DB)을 열 때는 표준 설정으 데이터 보기는 실제 값 열을 추가로 보여 줍니다.
로 프로그램 편집기를 사용할지 또는 ‘데이터 블 초기값 열의 기본값은 표준 설정에서 실제 값 열에
록(DB)의 파라미터 지정’ 애플리케이션을 사용할 입력됩니다. 데이터 보기에서는 로드 메모리에 다

116
3.4 데이터 블록(DB) 프로그래밍

그림 3.11 열려 있는 데이터 블록(선언 보기)의 예

른 초기값을 입력하고 작업 메모리에 실제 값을 입 선언 보기에서 초기값 열은 오프라인 데이터 관리


력할 수 있습니다(그림 3.12 참조). 의 초기값이나 CPU 프로그램과 관련된 오프라인 프
로젝트를 이용할 수 없는 경우에 로드 메모리의 초
데이터 블록(DB) 각각에 기본값을 개별적으로 할
기값을 보여 줍니다. 데이터 보기에서 실제 값 열은
당하는 기능은 사용자 데이터 형식이나 함수 블록에
작업 메모리의 실제 값을 표시합니다. 편집 → 데이터
서 파생한 데이터 블록(DB)에 특히 중요합니다. 예
블록(DB) 초기화를 선택하면 편집기에서 모든 실제
를 들어, 함수 블록의 여러 인스턴스 데이터 블록
값을 초기값으로 다시 변경할 수 있습니다.
(DB)을 생성하면 모든 데이터 블록(DB)은 함수 블
록에서 설정한 기본값을 가집니다. 데이터 보기에 PLC → 다운로드를 선택해 다시 쓰면 실제 값 열의
서는 이제 상황마다 다양한 데이터 주소에 다른 값 값은 작업 메모리에 씌어집니다. 그러므로 프로그
을 개별적으로 할당할 수 있습니다. 래밍 기기를 사용하면 프로그램 실행 과정에서 데이
터 주소의 값에 영향을 줄 수 있습니다. 초기값 열의
온라인 창 값은 거부됩니다.

일반적으로 사용자 메모리의 실제 데이터 값은 온 파일 → 저장을 선택해 다시 쓰면 오프라인 데이터


라인 창을 이용해 확인합니다. 그러나 온라인 창은 관리에서 초기값 열의 값은 기본값으로 씌어지고 실
데이터 블록(DB)의 생성에도 이용할 수 있습니다. 제 값 열의 값은 초기값으로 씌어집니다.

117
3 SIMATIC S7 프로그램

그림 3.12 증분 프로그래밍에서 데이터 저장

이름과 같이 데이터 주소와 관련된 완전한 정보는 데이터 형식 BOOL의 비트는 이진 주소(또는 이
오프라인 데이터 관리에만 표시된다는 점에 유의하 진 피연산자)라 부릅니다. 1, 2 또는 4 바이트로 구
십시오. 또한 데이터 일관성이 유지되도록 CPU의 성되는 주소나 관련 데이터 형식을 포함한 변수는
사용자 메모리에서 생성한 데이터 블록(DB)은 오프 디지털 피연산자라 부릅니다.
라인 데이터 관리에 쓰는 것이 좋습니다(2.6.5 “블 블록 안에 선언한 변수는 블록-로컬 변수라 부릅
록 처리” 의 ‘오프라인/온라인 데이터 블록’ 참조). 니다. 블록-로컬 변수는 블록 파라미터, 정적 및 임
시 로컬 데이터, 심지어 글로벌 데이터 블록(DB)의
데이터 주소를 포함합니다. 블록-로컬 변수가 기본
데이터 형식이면 블록-로컬 변수에 피연산자(예: 정
3.5 변수, 상수 및 데이터 형식
적 로컬 데이터는 DI 피연산자, 임시 로컬 데이터는
L 피연산자, 글로벌 데이터 블록(DB)의 데이터는
3.5.1 변수와 관련된 일반 사항 DB 피연산자)로 액세스할 수도 있습니다.
변수는 특정 형식의 값입니다(그림 3.13 참조). 그러나 로컬 변수는 구조나 배열 같은 복합 데이
기본 변수는 주소(입력 5.2) 및 데이터 형식(이진 값 터 형식일 수도 있습니다. 복합 데이터 형식의 변수
을 사용하는 BOOL)으로 구성됩니다. 주소는 주소 는 비트가 32개 이상 필요하므로 누산기에 더 이상
식별자(입력은 I) 및 절대 저장 위치(바이트 5, 비트 로드할 수 없습니다. 같은 이유로 복합 데이터 형식
2는 5.2)로 구성됩니다. 또한 주소나 변수는 심볼 테 의 변수는 ‘일반’ STL 구문으로 주소를 지정할 수
이블에서 주소에 이름(심볼)을 할당해 심볼로 참조 없습니다. IEC 함수처럼 복합 데이터 형식의 변수를
할 수도 있습니다. 처리하는 특수 함수는 STEP 7에서 표준 라이브러리

118
3.5 변수, 상수 및 데이터 형식

로 제공됩니다(복합 데이터 형식의 변수는 데이터 입력이나 출력의 절대 주소는 모듈 시작 주소로부


형식이 동일한 블록 파라미터 안에 생성할 수 있습 터 계산하며, 모듈 시작 주소는 하드웨어 구성 테이
니다). 블 및 모듈의 신호 연결 유형에서 설정합니다. 신호
유형은 이진 신호와 아날로그 신호로 나뉩니다.
복합 데이터 형식의 변수가 기본 데이터 형식의
요소를 포함하는 경우, 기본 데이터 형식의 요소는
이진 신호
별도의 변수이더라도 처리할 수 있습니다(예: 30
이진 신호는 1비트의 정보를 포함합니다. 이진 신
호는 다시 디지털 입력과 출력으로 나뉩니다. 리미
트 스위치와 순간 접촉 스위치 등은입력에 해당되며
LED램프, 컨택터 등의 제어 신호는 출력에 해당됩
니다.

아날로그 신호
아날로그 신호는 16비트의 정보를 포함합니다.
아날로그 신호는 컨트롤러에서 워드(2바이트)로 맵
을 표현하는 ‘채널’ 에 해당합니다(다음 페이지 참
그림 3.13 변수의 구조 조). 저항온도계의 전압과 같은 아날로그 입력 신호
는 아날로그 입력 모듈로 전송되어 디지털화를 거친
다음 컨트롤러에서 16개의 정보 비트로 이용할 수
INT 값으로 구성된 배열의 요소는 누산기에 로드하
있습니다. 반대로 16비트의 정보는 정보를 아날로
고 처리할 수 있습니다).
그 값(전류)으로 변환하는 아날로그 출력 모듈을 통
상수는 변수를 고정 값으로 사전 설정하는 데 사 해 표시기를 제어할 수 있습니다.
용합니다. 상수에는 데이터 형식에 따라 특정 접두
또한 신호의 정보 너비는 신호를 저장하고 처리하
어가 붙습니다.
는 변수의 정보 너비와 일치합니다. 정보 너비와 해
석(예: 위치별 무게)은 함께 변수의 데이터 형식을
3.5.2 변수 주소 지정 구성합니다. 이진 신호는 데이터 형식 BOOL의 변수
에 저장되고, 아날로그 신호는 데이터 형식 INT의 변
변수 주소를 지정할 때는 절대와 심볼 주소 지정
수에 저장됩니다.
을 선택할 수 있습니다.
변수 주소 지정에서 유일한 결정 인자는 정보 너
Z 절대 주소 지정은 각각의 주소 영역에서 0부터
비입니다. STEP 7에서 절대 주소로 지정할 수 있는
시작하는 숫자 주소를 사용합니다.
네 가지 너비는 다음과 같습니다.
Z 심볼 주소 지정은 영숫자 이름을 사용하며, 영숫
Z 1비트 데이터 형식 BOOL
자 이름은 글로벌 주소용 심볼 테이블이나 블록
-로컬 주소용 선언 영역에서 사용자가 직접 정 Z 8비트 데이터 형식 BYTE 또는 8비트의 다른
의합니다. 데이터 형식

Z 16비트 데이터 형식 WORD 또는 16비트의 다


변수의 절대 주소 지정 른 데이터 형식

기본 데이터 형식의 변수는 절대 주소를 통해 참 Z 32비트 데이터 형식 DWORD 또는 32비트의


조할 수 있습니다. 다른 데이터 형식

119
3 SIMATIC S7 프로그램

데이터 형식 BOOL의 변수는 주소 식별자, 바이 ID 8 입력 더블 워드 번호 8은


트 번호 및 소수점으로 분리된 비트 번호를 통해 참 바이트 8, 9, 10 및 11을 포함합니다.
조합니다. 바이트 번호는 각각의 주소 영역에서 0부 QD 24 출력 더블 워드 번호 24는
터 시작합니다. 최대값은 CPU마다 다릅니다. 비트 바이트 24, 25, 26 및 27을 포함합니다.
번호는 0부터 7까지입니다.
데이터 영역의 주소는 데이터 블록(DB)을 포함합
예:
니다. 예:
I 1.0 바이트 번호 1에서 입력 비트 번호 0
DB 10.DBX 2.0
Q 16.4 바이트 번호 16에서 출력 비트 번호 4 데이터 블록(DB) 10에서 데이터 비트 2.0

데이터 형식 BYTE의 변수는 절대 주소로 주소 식 DB 11.DBB 14


별자 및 변수를 포함한 바이트 번호를 가집니다. 주 데이터 블록(DB) 11에서 데이터 바이트 14
DB 20.DBW 20
데이터 블록(DB) 20에서 데이터 워드 20
DB 22.DBD 10
데이터 블록 DB 22에서 데이터 더블 워드 10
데이터 영역 주소 지정의 추가 정보는
18.2.2 “데이터 피연산자 액세스” 에서 확인할 수
있습니다.
그림 3.14
워드 및 더블 워드에서 바이트 내용
변수의 심볼 주소 지정
심볼 주소 지정은 절대 주소 대신에 이름(심볼)을
사용합니다. 이런 이름은 사용자가 직접 선택합니
소 식별자에는 B를 추가합니다. 예: 다. 이름은 문자로 시작해야 하며 최대 24개 문자까
지 가능합니다. 키워드는 심볼로 사용할 수 없습니
IB 2 입력 바이트 번호 2
다.
QB 18 출력 바이트 번호 18 심볼을 입력할 때는 대문자와 소문자를 구별하지
데이터 형식 WORD의 변수는 2개의 바이트(워 않습니다. 출력 과정에서 편집기는 심볼 선언에서
드)로 구성됩니다. 이 변수는 절대 주소로 주소 식별 정의한 표기법을 적용합니다.
자 및 변수를 포함한 워드의 하위 바이트 번호를 가 이름이나 심볼은 절대 주소에 할당해야 합니다.
집니다. 주소 식별자에는 W를 추가합니다. 예: 심볼 유형은 글로벌 심볼과 블록-로컬 심볼로 나뉩
IW 4 입력 워드 번호 4는 니다.
바이트 4와 5을 포함합니다.
글로벌 심볼
QW 20 출력 워드 번호 20은
심볼 테이블의 이름은 다음과 같은 개체에 할당할
바이트 20과 21을 포함합니다.
수 있습니다.
데이터 형식 DWORD의 변수는 4개의 바이트(더
Z 데이터 블록(DB) 및 코드 블록
블 워드)로 구성됩니다. 이 변수는 절대 주소로 주소
식별자 및 변수를 포함한 워드의 하위 바이트 번호 Z 입력, 출력, 주변 입력장치 및 주변 출력장치
를 가집니다. 주소 식별자에는 D를 추가합니다. 예: Z 메모리 비트, 타이머 및 카운터

120
3.5 변수, 상수 및 데이터 형식

Z 사용자 데이터 형식 LAD/FBD 블록에서 생성한 소스 텍스트 파일을


컴파일하는 경우, 절대 주소에 심볼 이름의 완전한
Z 변수 테이블
할당은 컴파일 과정에서만 이용할 수 있습니다.
또한 글로벌 심볼은 스페이스, 특수 문자, 움라우
배열에서 개별 구성요소에는 배열 이름과 첨자(
트와 같은 국가 특정 문자를 포함할 수 있습니다. 이
예: 첫 번째 구성요소는 MSERIES[1])를 통해 액세
런 규칙의 예외는 문자 0016진수와 FF16진수 및 따옴
스합니다. LAD와 FBD에서 인덱스는 상수 INT 값입
표(")입니다. 특수 문자를 포함한 심볼은 프로그램
니다.
에서 따옴표로 감싸야 합니다. 컴파일된 블록에서
구조에서 하위 식별자 각각은 소수점을 통해 분리
STL 편집기는 항상 글로벌 심볼을 따옴표로 감싸서
됩니다(예: FRAME.HEADER.CNUM). 사용자 데이
표시합니다.
터 형식의 구성요소는 구조와 마찬가지로 주소를 지
글로벌 심볼은 프로그램 전체에서 사용할 수 있으 정합니다.
며, 글로벌 심볼 각각은 프로그램에서 독특해야 합
니다. 데이터 주소
글로벌 심볼의 편집, 들여오기, 내보내기는 데이터의 심볼 주소 지정은 데이터 블록을 포함하
2.5.2 “심볼 테이블” 을 참조하십시오. 는 완전한 주소 지정을 사용합니다. 예: 심볼 주소
MVALUES를 포함한 데이터 블록(DB)은 변수
MVALUE1, MVALUE2 및 MTIME을 포함합니다. 이
블록-로컬 심볼
변수의 주소는 다음과 같이 지정할 수 있습니다.
블록-로컬 심볼의 이름은 관련 블록의 선언 영역
"MVALUES".MVALUE_1
에서 지정합니다. 이런 이름은 문자, 숫자, 밑줄(움
"MVALUES".MVALUE_2
라우트 제외)만 포함할 수 있습니다.
"MVALUES".MTIME
로컬 심볼은 블록 안에서만 유효합니다. 동일한 데이터 주소 지정의 추가 정보는 18.2.2 “데이터
심볼(변수 이름)은 다른 블록의 다른 컨텍스트에 사 피연산자 액세스” 를 참조하십시오.
용할 수 있습니다. 편집기는 앞에 ‘#’ 이 추가된
로컬 심볼을 보여 줍니다. 편집기가 주소에서 로컬
3.5.3 데이터 형식의 개요
심볼을 구별할 수 없으면 입력 과정에서 심볼 앞에
데이터 형식은 변수 내용의 표현에 필요한 데이터
‘#’ 문자를 추가해야 합니다.
의 특성 및 허용 범위를 규정합니다. STEP 7은 사용
로컬 심볼은 프로그래밍 기기 데이터베이스(오프 자 데이터 형식에 조합할 수 있는 사전 정의된 데이
라인 블록 컨테이너)에서만 이용할 수 있습니다. 로 터 형식을 제공합니다.
컬 심볼이 컴파일 복구에서 유실되면 편집기는 대체
데이터 형식은 글로벌 형식으로 이용하며 모든 블
심볼을 삽입합니다.
록에 사용할 수 있습니다. LAD와 FBD는 동일한 데
이터 형식을 사용합니다.
심볼 이름 사용 구조와 용도에 따라 STEP 7의 데이터 형식은 다
편집기로 프로그래밍 과정에서 심볼 이름을 사용 음과 같이 분류됩니다.
하려면 심볼 이름은 절대 주소에 할당되어 있어야 Z 기본 데이터 형식
합니다. 또한 사용자는 프로그램 입력 과정에서 심
Z 복합 데이터 형식
볼 테이블에 새 심볼 이름을 입력할 수 있습니다. 프
로그램 입력은 새 심볼 이름으로 계속 진행할 수 있 Z 사용자 데이터 형식
습니다. Z 파라미터 유형

121
3 SIMATIC S7 프로그램

표 3.4 데이터 형식의 분류


기본 데이터 형식 복합 데이터 형식 사용자 데이터 형식 파라미터 데이터 형식
BOOL, BYTE, CHAR, DT, STRING, UDT, TIMER, COUNTER,
WORD, INT, DATE, ARRAY, STRUCT 글로벌 데이터 블록(DB), BLOCK_DB,
DWORD, DINT, REAL, 인스턴스 BLOCK_SDB,
S5TIME, TIME, TOD BLOCK_FC,
BLOCK_FB,
POINTER, ANY
단 하나의 더블 워드(32비 1개 이상의 더블 워드(DT, 이름을 할당할 수 있는 구 블록 파라미터
트)로 구성된 데이터 형식 STRING) 또는 여러 구성 조나 데이터 영역
요소로 구성될 수 있는 데
이터 형식
절대 및 심볼 주소 지정에 심볼로 주소가 지정된 변수의 맵만 구성 가능 블록 파라미터의 맵만 구성
서 참조한 피연산자의 맵 가능(심볼 주소 지정만)
구성 가능
모든 주소 영역에서 허용 데이터 블록(DB)(글로벌 데이터와 인스턴스 데이터로) 블록 파라미터와 관련해
에서, 임시 로컬 데이터로 및 블록 파라미터로 허용 허용

표 3.4는 네 가지 데이터 형식의 속성을 보여 줍 기본 데이터 형식의 선언


니다. 표 3.5는 기본 데이터 형식에서 변수 선언의 예를
모든 데이터 형식의 선언 및 사용 예는 출판사 웹 보여 줍니다. 이름 은 블록-로컬 변수의 식별자이며
사이트에서 다운로드 받을 수 있는 ‘LAD_Book’ 최대 24개의 문자, 영숫자, 밑줄만 사용할 수 있습
및 ‘FBD_Book’ 라이브러리의 ‘Data Types’ 니다. 관련된 데이터 형식은 유형 열에 입력합니다.
프로그램에서 확인할 수 있습니다(page 8 참조). 임시 로컬 데이터와 함수의 블록 파라미터를 제외
한 초기값 은 변수에 할당할 수 있습니다. 초기값을
변수에 할당하기 위해서는 데이터 형식에 적합한 구
3.5.4 기본 데이터 형식
문을 사용해야 합니다. 주석은 선택사항입니다.
기본 데이터 형식은 비트, 바이트, 워드 또는 더블
워드를 사용할 수 있습니다. BOOL, BYTE, WORD, DWORD, CHAR
표 3.6은 기본 데이터 형식을 보여 줍니다. 많은 데이터 형식 BOOL의 변수는 비트 값(예: 입력 I
데이터 형식에는 동일하게 사용할 수 있는 두 가지 1.0)을 의미합니다. 데이터 형식 BYTE, WORD 및
상수 표현(예: TIME# 또는 T#)이 존재합니다. 테이 DWORD의 변수는 각각 8, 16 및 32 비트로 구성된
블은 데이터 형식의 최소값을 위쪽에, 최대값을 아 비트 문자열입니다. 개별 비트는 평가할 수 없습니
래쪽에 표시합니다. 다.

표 3.5 기본 데이터 형식에서 선언 및 초기값의 예


이름 형식: 초기값 주석
자동 BOOL FALSE 초기값은 신호 상태 ‘0’
Manual_off BOOL TRUE 초기값은 신호 상태 ‘1’
Measured_value DINT L#0 DINT 변수의 초기값
메모리 WORD W#16#FFFF WORD 변수의 초기값
Waiting_time S5TIME S5T#20s S5 시간 변수의 초기값

122
3.5 변수, 상수 및 데이터 형식

표 3.6 기본 데이터 형식의 개요


데이터 형식(너비) 설명 상수 표기법의 예
BOOL (1비트) 비트 FALSE
TRUE
BYTE (8비트) 8비트 16진수 B#16#00, 16#00
B#16#FF, 16#FF
CHAR (8비트) 문자 1개(ASCII) 인쇄 가능 문자(예: ‘A’ )
WORD (16비트) 16비트 16진수 W#16#0000, 16#0000
W#16#FFFF, 16#FFFF
16비트 이진수 2#0000_0000_0000_0000
2#1111_1111_1111_1111
카운트 값, C#000
30진 BCD C#999
2개의 8-비트 무부호 B#(0,0)
(unsigned) B#(255,255)
십진수
DWORD (32비트) 32비트 16진수 DW#16#0000_0000, 16#0000_0000
DW#16#FFFF_FFFF, 16#FFFF_FFFF
32비트 이진수 2#0000_0000_..._0000_0000
2#1111_1111_..._1111_1111
4개의 8-비트 무부호 B#(0,0,0,0)
(unsigned) B#(255,255,255,255)
십진수
INT (16비트) 고정 소수점 수 -32 768
+32 767
DINT (32비트) 고정 소수점 수 L#2 147 483 648 1)
L#+2 147 483 647 1)
REAL (32비트) 부동 소수점 수 +1.234567E+02 2)
지수 표현에서
123.4567 2)
십진수로서
S5TIME (16비트) SIMATIC 형식의 시간 값 S5T#0ms
S5TIME#2h46m30s
TIME (32비트) IEC 형식의 시간 값 T#-24d20h31m23s647ms
TIME#24d20h31m23s647ms
T#-24.855134d
TIME#24.855134d
DATE (16비트) 날짜 D#1990-01-01
DATE#2168-12-31
TIME_OF_DAY(32비트) 실제 시간 TOD#00:00:00
TIME_OF_DAY#23:59:59.999
1)
고정 소수점 수가 INT 숫자 범위를 벗어나면 ‘L#’ 을 생략할 수 있습니다.
2) 값 범위는 텍스트를 참조하십시오.

123
3 SIMATIC S7 프로그램

이런 데이터 형식의 특수 형태는 카운터 기능과 표 3.7 CHAR의 특수 문자


관련해 사용하는 BCD 숫자와 개수뿐 아니라 ASCII CHAR 16진수 설명
문자를 의미하는 데이터 형식 CHAR입니다. $$ 2416진수 달러 부호
$' 2716진수 작은 따옴표
BCD 숫자 $L 또는 $l 0A16진수 줄 바꿈(LF)
BCD 숫자에는 특별한 식별자가 없습니다. BCD $P 또는 $p 0C16진수 새 페이지(FF)
숫자는 데이터 형식 16#(16진수)로 입력하고 0 - 9 $R 또는 $r 0D16진수 커서를 맨 앞으로 옮김(CR)

의 숫자만 사용합니다. $T 또는 $t 0916진수 도표 작성

BCD 숫자는 시간 값과 개수의 코드화 처리 및 변 INT


환 기능과 관련해 발생합니다. 데이터 형식
데이터 형식 INT의 변수는 정수(16비트 고정 소수
S5TIME#는 타이머를 시작하는 시간 값의 지정에 사
점 수)로 저장됩니다. 데이터 형식 INT에는 특별한
용하고(다음 참조), 데이터 형식 16# 또는 C#는 개
식별자가 없습니다.
수 값의 지정에 사용합니다. C# 개수 값은 000 -
데이터 형식 INT의 변수는 워드 1개를 사용합니
999 사이의 BCD 숫자입니다(부호는 항상 0).
다. 비트 0 - 14의 신호 상태는 번호의 숫자 위치를
일반적으로 BCD 숫자는 부호를 포함하지 않습니 의미하며, 비트 15의 신호 상태는 부호(S)를 의미합
다. 변환 기능과 관련해 BCD 숫자의 부호는 BCD 숫 니다. 신호 상태 ‘0’ 은 양수를 의미하며, 신호 상
자를 제외한 맨 왼쪽(최상위) 자리에 저장됩니다. 태 ‘1’ 은 음수를 의미합니다. 음수는 2의 보수로
BCD 숫자가 16비트 워드이면 부호는 비트 위치 표현됩니다. 허용되는 숫자 범위는
15에만 관련이 있는 최상위 자리를 차지합니다. 신 +32 767(7FFF16진수)부터
호 상태 ‘0’ 은 BCD 숫자가 양수임을 의미합니다.
-32 768(800016진수)까지입니다.
신호 상태 ‘1’ 은 음수를 의미합니다. 부호는 개
별 자리의 내용에 영향을 주지 않습니다. 이런 할당
은 32비트 워드에도 적용됩니다. DINT
데이터 형식 DINT의 변수는 정수(32비트 고정 소
이용 가능한 값 범위는 16비트 BCD 숫자의 경우
수점 수)로 저장됩니다. 정수는 32 767을 초과하거
0부터 ± 999까지이며, 32비트 BCD 숫자의 경우 0
나 -32 768 미만일 때 또는 숫자가 유형 식별자 L#
부터 ± 9 999 999까지입니다.
보다 앞에 올 때 DINT 변수로 저장됩니다.

CHAR 데이터 형식 DINT의 변수는 하나의 더블 워드를


데이터 형식 CHAR(문자)의 변수는 1바이트를 사 사용합니다. 비트 0 - 30의 신호 상태는 번호의 숫
용합니다. 데이터 형식 CHAR은 ASCII 형식의 문자 자 위치를 의미하며, 부호는 비트 31에 저장됩니다.
1개를 의미합니다. 예: “A” . 비트 31은 양수에서 ‘0’ 이며 음수에서 ‘1’ 입
니다. 음수는 2의 보수로 저장됩니다. 숫자 범위는
사용자는 작은 따옴표로 감싼 모든 인쇄 가능 문
자를 사용할 수 있습니다. 일부 특수 문자는 표 3.7 +2 147 483 647(7FFF FFFF16진수)부터
에 제시한 표기법을 사용해야 합니다. 예: '$$' 는 -2 147 483 648(8000 000016진수)까지입니다.
ASCII 코드에서 달러 부호를 의미합니다.

MOVE 함수를 이용하면 변수에 ASCII 문자를 쓸 REAL


때 데이터 형식 CHAR의 특수 형태로서 작은 따옴표 데이터 형식 REAL의 변수는 분수를 의미하며 32
로 감싼 2개 또는 4개의 ASCII 문자를 사용할 수 있 비트 부동 소수점 수로 저장됩니다. 정수는 소수점
습니다. 과 0을 추가할 때 REAL 변수로 저장됩니다.

124
3.5 변수, 상수 및 데이터 형식

그림 3.15 기본 데이터 형식의 변수 구조

125
3 SIMATIC S7 프로그램

지수 표현에서는 관련 숫자 7개와 부호 1개를 포 데이터 형식 REAL의 변수는 내부적으로 세 가지


함한 정수나 분수 앞에 ‘e’ 또는 ‘E’ 가 올 수 구성요소인 부호, 2를 밑으로 하는 8비트 지수 및
있습니다. ‘e’ 또는 ‘E’ 다음의 숫자는 10을 밑 23비트 가수로 구성됩니다. 부호는 ‘0’ (양수)이
으로 하는 지수를 의미합니다. STEP 7은 REAL 변 나 ‘1’ (음수)의 값을 가질 수 있습니다. 지수를 저
수의 변환을 부동 소수점 수의 내부 표현으로 처리 장하기 전에는 0 - 255의 값 범위가 나타나도록 지
합니다.
수에 상수 값(편차 +127)이 추가됩니다. 가수는 실
REAL 변수는 부동 소수점 연산으로 표현될 수 있 수의 분수 부분을 의미합니다. 가수의 정수 부분은
는 수( ‘정형화된’ 부동 소수점 수)와 고정 소수점 정형화된 부동 소수점 수인 경우에 항상 1이거나 비
연산으로 표현될 수 있는 수( ‘비정형화된’ 부동 정형화된 부동 소수점 수인 경우에 항상 0이기 때문
소수점 수)로 나뉩니다. 에 저장되지 않습니다. 표 3.8은 부동 소수점 수의
정형화된 부동 소수점 수의 값 범위는 다음과 같 내부 범위를 제시합니다.
습니다.

-3.402 823 4 10+38부터 -1.175 494 4 10-38까지 S5TIME


±0
+1.175 494 4 10-38 부터 +3.402 823 4 10+38 데이터 형식 S5TIME의 변수는 기본 언어 STL,
LAD 및 FBD에서 SIMATIC 타이머를 설정하는 데 사
비정형화된 부동 소수점 수의 값 범위는 다음과
용합니다. 이 변수는 1 + 30진의 16비트 워드 1개를
같습니다.
사용합니다.
-1.175 494 4 10-38부터 -1.401 298 4 10-45까지
및 시간은 시간, 분, 초, 1/1000초 단위로 지정합니
+1.401 298 4 10-45 부터 +1.175 494 4 10-38 다. STEP 7은 변환을 내부 표현으로 처리합니다. 내

S7-300 CPU는 비정형화된 부동 소수점 수로 계 부 표현은 BCD 숫자가 000 - 999 범위 안에 있음을
산할 수 없습니다. 비정형화된 수의 비트 패턴은 0 의미합니다. 시간 간격은 다음의 값을 가질 수 있습
으로 해석됩니다. 결과가 해당 범위 안에 포함되면 니다. 10ms(0000), 100ms(0001), 1s(0010) 및
0으로 표현되고 상태 비트 OV와 OS가 설정(초과)됩 10s(0011). 지속 시간은 시간 간격과 시간 값의 곱
니다. 입니다.

표 3.8 부동 소수점 수의 범위 한계
부호 지수 가수 설명
0 255 0이 아님 유효한 부동 소수점 수가 아님
0 255 0 + 무한대
0 1 ... 254 임의 양수인 정형화된 부동 소수점 수
0 0 0이 아님 양수인 비정형화된 부동 소수점 수
0 0 0 +0
1 0 0 -0
1 0 0이 아님 음수인 비정형화된 부동 소수점 수
1 1 ... 254 임의 음수인 정형화된 부동 소수점 수
1 255 0 - 무한대
1 255 0이 아님 유효한 부동 소수점 수가 아님

126
3.5 변수, 상수 및 데이터 형식

예: TIME_OF_DAY#00:00:00 (= 0000_000016진수)
S5TIME#500ms (= 005016진수) TOD#23:59:59.999 (= 0526_5BFF16진수)
S5T#2h46m30s (= 399916진수)

3.5.5 복합 데이터 형식
DATE
데이터 형식 DATE의 변수는 워드 1개 안에 부호 STEP 7에서 정의하는 네 가지 복합 데이터 형식
가 없는 고정 소수점 수로 저장됩니다. 변수의 내용 은 다음과 같습니다.
은 1990년 1월 1일부터 계산한 날짜에 해당합니다. Z DATE_AND_TIME
이 변수의 표현은 하이픈으로 분리된 연, 월, 일을 날짜와 시간(BCD 코드화)
보여 줍니다. 예:
Z STRING
DATE#1990-01-01 (= 000016진수) 최대 254문자로 된 문자열
D#2168-12-31 (= FF6216진수)
Z ARRAY
동일한 유형의 변수를 조합한 배열 변수
TIME
데이터 형식 TIME의 변수는 더블 워드 1개를 사 Z STRUCT
용합니다. 이 변수의 표현은 일(d), 시간(h), 분(m), 다른 유형의 변수를 조합한 구조 변수
초(s) 및 1/1000초(ms)에 대한 정보를 포함하며, 이 데이터 형식은 사용자가 정의한 데이터 형식
정보의 개별 항목은 생략될 수 있습니다. 변수의 내 STRING(문자열)의 길이뿐 아니라 데이터 형식
용은 1/1000초(ms) 단위로 해석되며 부호가 있는 ARRAY와 STRUCT(구조)의 조합과 크기로 사전에
32비트 고정 소수점 수로 저장됩니다. 예: 설정됩니다.
TIME#24d20h31m23s647ms 복합 데이터 형식의 변수는 글로벌 데이터 블록
(= 7FFF_FFFF16진수) (DB)인 인스턴스 블록에서만 임시 로컬 데이터나 블
TIME#0ms (= 0000_000016진수) 록 파라미터로 선언할 수 있습니다.
T#-24d20h31m23s648ms TIME#0.0h
복합 데이터 형식의 변수는 블록 파라미터에서만
(= 0000_000016진수)
완전한 변수로 적용할 수 있습니다.
TIME에서는 ‘소수점 표현’ 도 가능합니다(예:
TIME#2.25h 또는 T#2.25h). 예: 데이터 형식 DT와 STRING의 변수를 처리하는
IEC 함수가 존재합니다(예: 날짜의 추출 및 DATE 표
TIME#0.0h (= 0000_000016진수)
현으로 변환이나 문자열 2개를 변수 1개로 조합). 이
TIME#24.855134d (= 7FFF_FFFF16진수)
IEC 함수는 IEC 함수 블록 프로그램의 표준 라이브
러리에 존재하는 로드할 수 있는 표준 FC 블록입니
TIME_OF_DAY 다.
데이터 형식 TIME_OF_DAY의 변수는 더블 워드
1개를 사용합니다. 이 변수는 시작 날짜(0:00 시각)
DATE_AND_TIME
부터 계산한 1/1000초를 부호가 없는 고정 소수점
데이터 형식 DATE_AND_TIME은 날짜와 실제 시
수 형식으로 포함합니다. 이 변수의 표현은 콜론으
간으로 구성되는 시간을 의미합니다. 또한 DATE_
로 분리된 시간, 분, 초에 대한 정보를 포함합니다.
AND_TIME 대신에 약어 DT를 사용할 수도 있습니다.
초 다음에 오는 1/1000초는 소수점을 통해 초와 분
리되며 생략될 수 있습니다. DT 변수의 개별 구성요소는 ASCII 코드로 변환됩
예: 니다(그림 3.16 참조).

127
3 SIMATIC S7 프로그램

표 3.9 DT 및 STRING 변수의 선언 예


이름 형식 초기값 주석
Date1 DT DT#1990-01-01- DT 변수 최소값
00:00:00
Date2 DATE_AND_TIME DATE_AND_TIME# DT 변수 최대값
2089-12-31-
23:59:59.999
First_name STRING[10] 'Jack' STRING 변수, 지정한 10개 문자 중 4개
Last_name STRING[14] 'Daniels' STRING 변수, 지정한 7개 문자 모두
NewLine STRING[2] '$R$L' STRING 변수, 지정한 특수 문자
BlankString STRING[16] '' STRING 변수, 지정 없음

STRING 기본값이나 사전 할당 값이 선언한 최대 길이보다


데이터 형식 STRING은 최대 254개 문자로 구성 짧으면, 나머지 문자 위치는 보존되지 않습니다. 데
된 문자열을 의미합니다. 문자의 최대 허용 개수는 이터 형식 STRING의 변수를 후처리할 때는 현재 보
키워드 STRING 뒤의 대괄호 안에 지정합니다. 존된 문자 위치만 처리합니다. 또한 ‘빈 문자열’
을 기본값으로 정의할 수도 있습니다. 그림 3.16은
이런 지정은 생략할 수도 있습니다. 그 다음에 편
STRING 변수의 구조를 보여 줍니다.
집기는 254바이트의 길이를 사용합니다. 함수 FC
의 경우, 편집기에서는 길이를 지정할 수 없거나
254바이트의 표준 길이가 필요합니다. 데이터 형식 ARRAY
STRING의 변수는 메모리에서 선언한 최대 길이보 데이터 형식 ARRAY는 동일한 데이터 형식의 요
다 2바이트가 더 많은 길이를 사용합니다. 소가 고정 숫자로 구성된 배열이나 필드를 의미합니
다.
사전 할당은 하나의 역콤마로 감싼 ASCII 코드 문
자 또는 일부 문자에서 접두어인 달러 부호(데이터 필드 인덱스의 범위는 데이터 형식 뒤의 대괄호
형식 CHAR 참조)로 수행합니다. 안에 지정합니다. 왼쪽의 초기값은 오른쪽의 최종

그림 3.16 DT 및 STRING 변수의 구조

128
3.5 변수, 상수 및 데이터 형식

표 3.10 배열 선언의 예
이름 유형 초기값 주석
측정값 ARRAY[1.0.24] 0.4, 1.5, 11 (2.6, 3.0) 24개 REAL 구성요소의 배열 변수
REAL
TOD ARRAY[-10..10] 21 (TOD#08:30:00) 21개 구성요소의 TOD 배열
TIME_OF_DAY
결과 ARRAY[1.0.240.1.. 96 (L#0) 96개 구성요소의 2차원 배열
4]
DINT
문자 ARRAY[1..2,3..4] 2 ( “a” ), 2 ( “b” ) 4개 구성요소의 2차원 배열
CHAR

값과 같거나 작아야 합니다. 두 가지 인덱스는 - 의 데이터 형식이 개별 필드 구성요소와 동일한 경


32,768부터 +32,767까지 범위의 INT 숫자입니다. 우에는 블록 파라미터에서 개별 필드 구성요소를 지
필드는 최대 6개의 차원을 포함할 수 있으며, 각 차 정할 수 있습니다.
원의 한계는 콤마로 분리됩니다. 개별 필드 구성요소가 기본 데이터 형식인 경우,
개별 필드 구성요소의 데이터 형식은 데이터 형식 개별 필드 구성요소는 ‘일반’ LAD 또는 FBD 함
ARRAY 아래의 라인에 위치합니다. ARRAY를 제외 수로 처리할 수 있습니다.
한 모든 데이터 형식이 허용되며, 사용자 데이터 형 필드 구성요소에는 필드 이름과 대괄호의 인덱스
식도 허용됩니다. 로 액세스합니다. 인덱스는 LAD와 FBD에서 고정된
값이며 런타임에서 수정할 수 없습니다(변수 인덱
사전 할당
스 지정 불가능).
선언 단계에서는 함수의 블록 파라미터, 함수 블
록의 입력/출력 파라미터, 임시 변수가 아닌 개별 필 다차원 필드 또는 배열
드 구성요소에 값을 사전 할당할 수 있습니다. 사전
필드는 최대 6개의 차원을 포함할 수 있습니다.
할당 값의 데이터 형식은 필드의 데이터 형식과 일
다차원 필드는 1차원 필드와 비슷합니다. 선언 단계
치해야 합니다.
에서 차원의 범위는 대괄호 안에 작성하며 각 차원
모든 필드 구성요소를 사전 할당할 필요는 없습니 은 콤마로 분리됩니다.
다. 사전 할당 값의 개수가 필드 구성요소의 개수보
다 적으면 첫 번째 구성요소만 사전 할당됩니다. 사 변수의 구조
전 할당 값의 개수는 필드 구성요소의 개수보다 많 ARRAY 변수는 항상 워드 경계(짝수 주소의 바이
지 않아야 합니다. 사전 할당 값은 콤마로 분리됩니 트)에서 시작합니다. ARRAY 변수는 다음 워드 경계
다. 동일한 값을 이용한 다중 사전 할당은 선행 반복 까지 메모리를 사용합니다.
인수를 이용해 둥근 괄호 안에 지정됩니다.
데이터 형식 BOOL의 구성요소는 최하위 비트에
적용 서 시작하며, 데이터 형식 BYTE 및 CHAR의 구성요
완전한 변수인 필드는 구조가 동일한 데이터 형식 소는 오른쪽 바이트에서 시작합니다. 개별 구성요
ARRAY의 블록 파라미터 또는 데이터 형식 ANY의 소는 순서대로 나열됩니다.
블록 파라미터에서 적용할 수 있습니다. 예를 들면, 다차원 필드에서 구성요소는 첫 번째 차원부터 시
필드 변수의 내용은 시스템 함수 SFC 20 BLKMOV 작해 라인 순서(차원 순서)로 저장됩니다. 비트와 바
를 이용해 복사할 수 있습니다. 또한 블록 파라미터 이트 구성요소의 새 차원은 항상 새 바이트에서 시

129
3 SIMATIC S7 프로그램

표 3.11 구조 선언의 예
이름 유형 초기값 주석
MotCont STRUCT 4개 구성요소의 기본 구조 변수
On BOOL FALSE 유형 BOOL의 변수 MotCont.On
Off BOOL TRUE 유형 BOOL의 변수 MotCont.Off
지연 S5TIME S5TIME#5s 유형 S5TIME의 변수 MotCont.Delay
maxSpeed INT 5000 유형 INT의 변수 MotCont.maxSpeed
END_STRUCT

작하며, 데이터 형식이 다른 구성요소의 새 차원은 구조 구성요소에는 구조 이름 및 점으로 분리된


항상 새 워드(후속 짝수 바이트)에서 시작합니다. 구성요소 이름으로 액세스합니다.

변수의 구조
STRUCT
STRUCT 변수는 항상 워드 경계(짝수 주소의 바
데이터 형식 STRUCT는 각각 다른 데이터 형식일
이트)에서 시작합니다. STRUCT 변수 다음의 개별
수 있는 구성요소가 고정 숫자로 구성된 데이터 구
구성요소는 선언한 순서대로 메모리에 위치합니다.
조를 의미합니다.
STRUCT 변수는 다음 워드 경계까지 메모리를 사용
개별 구조 구성요소 및 라인 아래의 데이터 형식
합니다.
은 변수 이름과 키워드 STRUCT를 이용해 지정합니
데이터 형식 BOOL의 구성요소는 최하위 비트에
다. 다른 구조를 포함한 모든 데이터 형식도 사용할
서 시작하며, 데이터 형식 BYTE 및 CHAR의 구성요
수 있습니다.
소는 오른쪽 바이트에서 시작합니다. 데이터 형식
사전 할당 이 다른 구성요소는 워드 경계에서 시작합니다.
선언 단계에서는 함수의 블록 파라미터, 함수 블 네스팅 구조는 다른 구조의 구성요소를 포함합니
록의 입력/출력 파라미터, 임시 변수가 아닌 개별 구 다. 네스팅 깊이는 최대 6개 구조까지 가능합니다.
조 구성요소에 값을 사전 할당할 수 있습니다. 사전 기본 데이터 형식인 모든 구성요소에는 ‘일반’
할당 값의 데이터 형식은 구성요소의 데이터 형식과 LAD 또는 FBD 함수를 이용해 개별적으로 액세스할
일치해야 합니다. 수 있습니다. 개별 이름은 점으로 분리됩니다.

적용
3.5.6 파라미터 유형
완전한 변수는 구조가 동일한 데이터 형식
STRUCT의 블록 파라미터 또는 데이터 형식 ANY의 파라미터 유형은 블록 파라미터의 데이터 형식입

블록 파라미터에서 적용할 수 있습니다. 예를 들면, 니다(표 3.12 참조). 테이블에서 길이 지정은 함수

STRUCT 변수의 내용은 시스템 함수 SFC 20 블록에서 블록 파라미터의 메모리 요구사항을 참조

BLKMOV를 이용해 복사할 수 있습니다. 또한 블록 합니다. 또한 심볼 테이블의 TIMER 및 COUNTER는

파라미터의 데이터 형식이 개별 구조 구성요소와 동 타이머와 카운터 데이터 형식으로 사용할 수도 있습

일한 경우에는 블록 파라미터에서 개별 구조 구성요 니다.

소를 지정할 수 있습니다.
개별 구조 구성요소가 기본 데이터 형식인 경우, 3.5.7 사용자 데이터 형식
개별 구조 구성요소는 ‘일반’ LAD 또는 FBD 함 사용자 데이터 형식(UDT)은 글로벌 유효성의 구
수로 처리할 수 있습니다. 조(모든 데이터 형식의 구성요소 조합)를 의미합니

130
3.5 변수, 상수 및 데이터 형식

표 3.12 파라미터 유형의 개요


파라미터 유형 설명 실제 주소의 예
TIMER 타이머 16비트 T 15 또는 심볼
COUNTER 카운터 16비트 Z 16 또는 심볼
BLOCK_FC 함수 16비트 FC 17 또는 심볼
BLOCK_FB 함수 블록 16비트 FB 18 또는 심볼
BLOCK_DB 데이터 블록(DB) 16비트 DB 19 또는 심볼
BLOCK_SDB 시스템 데이터 블록 16비트 (제공 예정)
POINTER DB 포인터 48비트 포인터인 경우: P#M10.0 또는 P#DB20.DBX22.2
주소인 경우: MW 20 또는 I 1.0 또는 심볼
ANY ANY 포인터 80비트 범위: P#DB10.DBX0.0 WORD 20
또는 모든 완전한 변수

다. 데이터 구조가 사용자 프로그램에서 자주 발생 데이터 형식을 이용해 새 UDT를 생성합니다. 그


하거나 데이터 구조에 이름을 할당하려는 경우에는 러면 데이터 형식의 속성 창이 나타납니다. ‘일
사용자 데이터 형식을 사용할 수 있습니다. 반 - 파트 1’ 탭에서 ‘이름’ 아래에 숫자(절

UDT는 한 번 선언하면 모든 블록에서 사용할 수 대 주소 UDTn)을 입력합니다. 다른 블록 속성은


있는 글로벌 유효성을 포함합니다. UDT에는 심볼 나중에 입력할 수도 있습니다.
로 액세스할 수 있으며, 절대 주소는 심볼 테이블에
Z 프로그램 편집기에서: 파일 → 새로 만들기를 선택
서 할당합니다. 심볼 테이블에서 UDT의 데이터 형
하면 ‘개체 이름’ 아래에 원하는 데이터 형식
식은 절대 주소와 일치합니다.
(절대 주소 UDTn)을 입력할 수 있는 대화상자가
UDT에서 정의한 데이터 구조를 변수에 적용하려 나타납니다.
면 ‘일반’ 데이터 형식처럼 선언에서 변수에 UDT
를 할당합니다. UDT에는 절대 주소(UDT 0 - UDT 데이터 형식을 생성한 후 즉시 블록 헤더에 입력
65,535) 또는 심볼 주소를 지정할 수 있습니다. 하거나 속성을 나중에 입력할 수 있습니다. 데이터
형식을 열면 파일 → 속성을 선택해 프로그램 편집기
또한 전체 데이터 형식에도 UDT를 정의할 수 있
에서 후속 확장을 프로그래밍할 수 있습니다.
습니다. 데이터 블록(DB)을 프로그래밍할 때 이
UDT는 데이터 구조로 데이터 블록(DB)에 할당합니 SIMATIC Manager에서 데이터 형식 UDTn을 더
다.
블 클릭하면 데이터 블록(DB)의 선언 테이블과 똑같
사용자 데이터 형식의 사용법은 24.3 “ ‘메시지 은 선언 테이블이 나타납니다. UDT는 이름, 유형,
프레임 예제’ 에 대한 간단한 설명” 에서 ‘메시지 초기값 및 주석의 개별 라인에서 데이터 블록과 동
프레임 데이터’ 의 예를 참조하십시오. 일한 방식으로 프로그램됩니다. 유일한 차이는 데
이터 보기로 전환할 수 없다는 점입니다. UDT에서
UDT 생성 는 모든 변수를 생성할 수 없으며 데이터 형식의 수
집 모음만 가능합니다. 이런 이유로 UDT에는 실제
사용자 데이터 형식은 SIMATIC Manager 또는 프
로그램 편집기를 이용해 생성할 수 있습니다. 값이 존재할 수 없습니다.

Z SIMATIC Manager에서: 프로젝트 창의 왼쪽 영 UDT에서 프로그래밍한 초기값은 선언 시 변수로


역에서 블록 개체를 선택하고, 삽입 → S7 블록 → 전송됩니다.

131
기본 함수

기본 함수

이 절에서는 LAD 및 FBD 프로그래밍 언어의 ‘기 5 “메모리 기능” 에서는 이진 논리 연산과 메모


본 기능’ 이라 할 수 있는 함수에 대해 다룹니다. 이 리 기능 프로그래밍의 예를, 8 “카운터” 에서는 타
함수를 사용해 컨택터 또는 릴레이 컨트롤 기반에서 이머와 카운터의 예를 소개합니다. 두 예는 모두 블
PLC를 프로그래밍할 수 있습니다. 록 파라미터를 사용하지 않는 FC 함수로 되어 있습
니다. 19 “블록 파라미터” 에는 같은 예가 블록 파
LAD(래더 다이어그램)에서는 접점을 직렬 및 병
라미터를 사용하는 함수 블록(FB)으로 제시되어 있
렬 회로로 정렬하여 이진 신호 상태를 조합합니다.
습니다.
펑션 블록 다이어그램(FBD)에서는 불린 함수 AND
와 OR을 전자 스위칭 시스템과 비슷한 연산 박스로
표시합니다.

메모리 기능은 프로그램의 다른 부분에서 RLO를


스캔하거나 추가 처리를 할 수 있도록 RLO를 저장
합니다.

이동 연산은 개별 피연산자 및 변수의 값을 교환


하거나 데이터 영역 전체를 복사하는 데 사용됩니
다.
4 이진 논리 연산
PLC에서는 컨택터 컨트롤 시스템의 타이밍 릴레 직렬 및 병렬 회로(LAD), AND, OR 및
이 대신 타이머가 있습니다. CPU에 통합되어 있는 EXCLUSIVE OR 연산(FBD) / 부정 / 센서 유
이 타이머를 이용해 대기 시간이나 모니터링 시간 형 고려
등을 프로그래밍할 수 있습니다.
5 메모리 기능

마지막으로 카운터는 0 ~ 999 범위에서 카운트 LAD 코일 / FBD 연산 박스 / 미드라인 출력 /

업 또는 카운트다운을 할 수 있습니다. 엣지신호 판단 / 컨베이어 벨트 예

6 이동 연산
이 절에서는 입력, 출력 및 메모리 비트에 해당하
MOVE 연산 박스, 데이터 이동을 위한 시스템
는 피연산자 영역을 위한 함수에 대해 설명합니다.
함수
입력과 출력은 프로세스 또는 플랜트로 연결되는 링
크에 해당합니다. 메모리 비트는 이진 상태를 저장 7 타이머

하는 보조 컨택터에 해당합니다. 다음 절에서는 그 5개 종류의 타이머 시작, 타이머 재설정 및 스

외 이진 논리도 적용할 수 있는 피연산자 영역에 대 캔 / IEC 타이머

해 다룹니다. 이 피연산자 영역은 기본적으로 글로 8 카운터


벌 데이터 블록(DB)의 데이터 비트나 임시 및 정적 카운터 설정 / 상향 카운팅 및 하향 카운팅 /
로컬 데이터 비트입니다. 카운터 재설정 및 스캔 / IEC 카운터 / 공급 예

132
4 이진 논리 연산

4 이진 논리 연산

4.1 직렬 및 병렬 회로(LAD) 4.1.1 NO 접점 및 NC 접점


비트 로직 조합을 래더 다이어그램으로 설명하기
접점을 직렬 및 병렬로 연결해 이진 신호 상태를 위해 ‘접점 폐쇄’ , ‘전력 흐름’ , ‘코일 작동’
LAD에 조합합니다. 직렬 연결은 AND 연산에 해당 등을 가능한 한 아래와 같은 그래픽으로 표시합니
하며 병렬 연결은 OR 연산에 해당합니다. 접점은 다 다. ‘전력’ 이 래더 다이어그램의 한 지점에서 흐
음과 같은 이진 피연산자의 신호 상태를 검사하는 르고 있는 경우 비트 로직 조합이 이 지점까지 적용
데 사용됩니다. 되고 논리 연산 결과(RLO)는 ‘1’ 이 됩니다. ‘전
Z 입출력 비트, 메모리 비트 력’ 이 단일 코일 안에서 흐르고 있는 경우 이 코일
Z 타이머 및 카운터 이 작동되고 관련된 이진 피연산자는 신호 상태
‘1’ 을 전달합니다.
Z 글로벌 데이터 비트
LAD는 비트 피연산자 스캔을 위해 NO 접점과 NC
Z 임시 로컬 데이터 비트
접점, 이렇게 두 종류의 접점을 사용합니다.
Z 정적 로컬 데이터 비트
Z 상태 비트(계산 결과 평가)
접점에서 절대 또는 심볼 주소를 이용해 피연산자
를 참조할 수 있습니다. LAD는 신호 상태 ‘1’ 을
스캔하는 NO 접점과 신호 상태 ‘0’ 을 스캔하는
NC 접점만 사용합니다.
래더의 각 Rung은 단일 접점으로 구성하거나 서 정상 개방 접점(NO 접점)
로 연결된 여러 개의 접점으로 구성할 수 있습니다. 정상 개방 접점은 신호 상태 ‘1’ 을 스캔합니다.
Rung은 코일 등을 이용하여 반드시 종결시켜야 합 스캔한 이진 피연산자의 신호 상태가 ‘1’ 인 경우
니다. 코일은 Rung의 RLO( ‘전력 흐름’ )를 사용 NO 접점이 활성화되어 접점이 폐쇄되고 ‘전력이
해 이진 피연산자를 제어합니다. 흐릅니다’ .
이 장에 설명된 예는 ‘LAD_Book’ 라이브러리 그림 4.1의 왼쪽 예에서는 센서 S1이 입력 I 1.0
의 ‘기본 함수’ 프로그램에 함수 블록 FB 104로 에 연결되어 있고 NO 접점이 신호 상태를 스캔합니
나와 있습니다. 이 라이브러리는 출판사의 웹 사이 다. 센서 S1이 개방되면 입력 I 1.0이 ‘0’ 이 되고
트에서 다운로드할 수 있습니다(8 페이지 참조). NO 접점을 통해 전력이 흐르지 않습니다. 따라서 출
증분 프로그래밍의 경우 프로그램 라이브러리 카 력 Q 4.0에 의해 제어되는 컨택터 K1이 켜지지 않습
탈로그의 ‘비트 로직’ 아래에 이진 논리 연산을 니다.
위한 구성요소가 있습니다. 프로그램 라이브러리 센서 S1이 활성화되면 입력 I 1.0의 신호 상태가
카탈로그를 보려면 보기 → 개요 를 선택하고 [Ctrl- ‘1’ 이 됩니다. 전력이 왼쪽 파워 레일에서 NO 접
K]를 누르거나 삽입→ 프로그램 구성요소를 선택하십 점을 통과해 코일로 흘러 들어가고 출력 Q 4.0에 연
시오. 결된 컨택터 K1이 활성화됩니다.

133
4 이진 논리 연산

그림 4.1 NO 접점 및 NC 접점

NO 접점은 입력에서 신호 상태 ‘1’ 을 스캔하 4.1.2 직렬 회로


고 폐쇄됩니다. 입력에 있는 센서가 NO 또는 NC 접
직렬 회로에서는 2 ~ 3개의 접점이 직렬로 연결
점인지 여부는 관계가 없습니다.
됩니다. 모든 접점이 폐쇄된 경우 직렬 회로를 통해
전력이 흐릅니다.
정상 폐쇄 접점(NC 접점)
그림 4.2는 전형적인 직렬 회로를 보여 줍니다.
이진 피연산자의 신호 상태가 ‘0’ 인 경우 NC
네트워크 1의 직렬 회로는 3개의 접점을 갖고 있으
접점을 통해 전력이 흐릅니다. 신호 상태가 ‘1’ 인
며 어떤 이진 피연산자든 스캔할 수 있습니다. 3개
경우 NC 접점이 ‘개방’ 되고 전력 흐름이 인터럽
의 접점 모두 NO 접점입니다. 연결된 피연산자의 신
트됩니다.
호 상태가 모두 ‘1’ 인 경우, 즉 NO 접점이 모두
그림 4.1의 오른쪽 예에서 센서 S2가 폐쇄되지 않 활성화된 경우 전력이 Rung을 통해 코일로 흐릅니
은 경우(입력 I 1.1의 신호 상태는 ‘0’ ) NC 접점 다. 코일에 의해 제어되는 피연산자는 ‘1’ 로 설
을 통해 전력이 흐릅니다. 또한 코일에 전력이 흐르 정됩니다. 그 외 모든 경우에서는 전력이 흐르지 않
면서 출력 Q4.1에 있는 컨택터 K2가 작동됩니다. 고 피연산자 Coil1이 ‘0’ 으로 재설정됩니다.

센서 S2가 활성화되면 입력 I 1.1의 신호 상태는 네트워크 2는 1개의 NC 접점이 포함된 직렬 회로


‘1’ 이 되고 NC 접점이 개방됩니다. 전력 흐름이 를 보여 줍니다. 연결된 피연산자의 신호 상태가
인터럽트되고 컨택터 K2가 릴리즈됩니다.
‘0’ 인 경우, 즉 NC 접점이 활성화되지 않은 경우

NC 접점은 입력의 신호 상태가 ‘0’ 임을 확인 NC 접점을 통해 전력이 흐릅니다. 따라서 이 예에서


하고 폐쇄 상태를 유지합니다. 입력에 있는 센서가 는 피연산자 Contact4의 신호 상태가 ‘1’ 이고
NO 또는 NC 접점인지 여부는 관계가 없습니다( Contact5의 신호 상태가 ‘0’ 인 경우에만 직렬 회
4.3 “센서 유형 고려” 참조). 로를 통해 전력이 흐르게 됩니다.

134
4.1 직렬 및 병렬 회로(LAD)

그림 4.2 직렬 및 병렬 회로

4.1.3 병렬 회로 NC 접점을 통해 전력이 흐릅니다. 따라서 이 예에서

2 ~ 3개의 접점이 서로 아래 위로 배열된 경우 이 피연산자 Contact4의 신호 상태가 ‘1’ 이거나 피

를 병렬 회로라 부릅니다. 이 접점 중 하나가 폐쇄되 연산자 Contact5의 신호 상태가 ‘0’ 인 경우 직렬

면 병렬 회로를 통해 전력이 흐릅니다. 회로를 통해 전력이 흐르게 됩니다.

LAD에서 Rung 중간에 분기를 프로그래밍할 수도


그림 4.2는 전형적인 병렬 회로를 보여 줍니다.
있습니다(예는 그림 4.3의 네트워크 8 참조). 왼쪽
네트워크 3의 병렬 회로는 3개의 접점을 갖고 있으
파워 레일에서 시작하지 않는 분기를 병렬로 연결합
며 어떤 이진 피연산자든 스캔할 수 있습니다. 3개
니다. LAD 프로그램 구성요소의 사용은 이 병렬 분
의 접점 모두 NO 접점입니다. 피연산자 중 하나의
기에 국한됩니다. 자세한 내용은 관련 장을 참조하
신호 상태가 ‘1’ 인 경우 Rung을 통해 코일로 전
십시오.
력이 흐릅니다. 코일에 의해 제어되는 피연산자는
‘1’ 로 설정됩니다. 스캔한 모든 피연산자의 신호 ‘개방’ 병렬 회로는 ‘T-분기’ 라고 부릅니다.
상태가 ‘0’ 인 경우 전력이 흐르지 않고 피연산자
Coil3은 ‘0’ 으로 재설정됩니다.
4.1.4 이진 논리 연산 조합
네트워크 4는 1개의 NC 접점이 포함된 병렬 회로 여러 개의 직렬 회로를 병렬로 배열하거나 여러
를 보여 줍니다. 연결된 피연산자가 ‘0’ 인 경우 개의 병렬 회로를 직렬로 배열하는 등의 방식으로

135
4 이진 논리 연산

그림 4.3 직렬 및 병렬 회로 조합

직렬 회로와 병렬 회로를 조합할 수 있습니다. 원래 병렬 회로를 직렬로 연결


부터 복잡한 구조를 가진 직렬 회로와 병렬 회로라 접점 대신 병렬 회로를 직렬로 배열할 수 있습니
하더라도 조합이 가능합니다(그림 4.3 참조). 다. 그림 4.3에 두 가지 예가 나와 있습니다. 네트워
크 7의 경우 Contact1 과 Contact3 중 하나와
직렬 회로를 병렬로 연결 Contact2와 Contact4 중 하나가 폐쇄된 경우 코일
접점 대신 직렬 회로를 서로 아래 위에 병렬로 배 로 전력이 흐릅니다. 그 아래 네트워크 8의 경우
열할 수 있습니다. 그림 4.3에 두 가지 예가 나와 있 Contact5와 Contact0이 폐쇄되고 Contact6 또는
습니다. 네트워크 5의 경우 Contact1과 Contact2가 Contact7이 폐쇄된 경우에만 전력이 흐릅니다.
폐쇄되거나 Contact3과 Contact4가 폐쇄된 경우 코
일로 전력이 흐릅니다. 네트워크 6의 경우 아래쪽
4.1.5 논리 연산 결과 부정
Rung에서 Contact5 와 Contact6 중 하나와
NOT 접점은 논리 연산 결과(RLO)를 부정합니다.
Contact7과 Contact0 중 하나가 폐쇄된 경우 전력
NOT 접점은 예를 들어, 직렬 회로의 결과를 부정해
이 흐릅니다.
코일을 작동시키는 데 사용합니다(그림 4.5, 네트워
크 9 참조). NOT 접점에 전력이 없는 경우, 즉
Contact1 또는 Contact2가 개방 상태인 경우에만

136
4.2 이진 논리 연산(FBD)

그림 4.4 NOT 접점 예

코일로 전력이 흐릅니다(그림 오른쪽의 펄스 다이 모든 이진 피연산자에 절대 주소나 심볼 주소를


어그램 참조). 지정할 수 있습니다. 이진 피연산자를 스캔할 때 또
는 이진 논리 회로 내에서 부정 심볼(원으로 표시)을
네트워크 10에도 동일하게 적용됩니다. 이 예에
사용하여 논리 연산 결과를 부정할 수 있습니다.
서는 NOT 접점이 병렬 회로 다음에 삽입되어 있습
니다. 이 경우 두 접점 중 폐쇄된 접점이 없는 경우 FBD에서는 네트워크 당 1개의 이진 논리 회로를
Coil10이 설정됩니다. 프로그래밍합니다. 이 논리 회로는 1개의 함수나 서
로 연결된 여러 개의 함수로 구성할 수 있습니다. 논
다른 접점 대신 NOT 접점을 왼쪽 파워 레일에서
리 회로 또는 논리 연산은 할당 구문 등을 사용하여
시작하는 분기에 삽입할 수 있습니다. Rung 중간에
반드시 종결시켜야 합니다. 할당은 논리 연산 결과
서 시작되는 병렬 분기에는 NOT 접점을 삽입할 수
를 사용해 이진 피연산자를 제어합니다.
없습니다.
이 장에 설명된 예는 ‘FBD_Book’ 라이브러리
의 ‘기본 함수’ 프로그램에 함수 블록 FB 104로
나와 있습니다. 이 라이브러리는 출판사의 웹 사이
4.2 이진 논리 연산(FBD) 트에서 다운로드할 수 있습니다(8 페이지 참조).

FBD에서 이진 신호 상태에 대한 논리 연산은 증분 프로그래밍의 경우 프로그램 라이브러리 카


AND, OR 및 EXCLUSIVE OR 연산 형식을 취합니 탈로그의 ‘비트 로직’ 아래에 이진 논리 연산 구
다. 이 함수의 입력에 신호 상태를 스캔하여 조합할 성요소가 있습니다. 프로그램 라이브러리 카탈로그
피연산자를 지정합니다. 다음과 같은 피연산자를 를 보려면 보기 → 개요를 선택하고 [Ctrl-K]를 누르
스캔할 수 있습니다. 거나 삽입 → 프로그램 구성요소를 선택하십시오.

Z 입출력 비트, 메모리 비트 (이 절의 설명 참조)


4.2.1 기본 이진 논리 연산
Z 타이머 및 카운터
FBD는 이진 함수인 AND, OR 및 EXCLUSIVE OR
Z 글로벌 데이터 비트 을 사용합니다. 모든 함수는 이론적으로는 여러 개
Z 임시 로컬 데이터 비트 의 함수 입력을 가질 수 있습니다. 입력이 함수 구성
요소에 직접 연결된 경우 스캔한 피연산자의 신호
Z 정적 로컬 데이터 비트
상태를 논리 연산에 그대로 사용합니다. 입력에 부
Z 상태 비트(계산 결과 평가) 정 문자(원 표시)가 있는 경우 논리 연산을 실행하기

137
4 이진 논리 연산

그림 4.5 신호 상태 ‘1’ 및 ‘0’ 스캔

전에 스캔한 피연산자의 신호 상태를 부정합니다( ‘1’ 에 대한 스캔은 스캔한 이진 피연산자의 신


아래 참조). 호 상태가 ‘1’ 인 경우 스캔 결과를 ‘1’ 로 출력
하고, 이진 피연산자의 신호 상태가 ‘0’ 인 경우
스캔 결과를 ‘0’ 으로 출력합니다. ‘0’ 에 대한
스캔은 스캔 결과를 부정합니다. 즉 스캔한 이진 피
연산자의 상태가 ‘0’ 인 경우 스캔 결과는 ‘1’
이 됩니다. 이진 함수는 연산 박스에 ‘직접’ 적용
된 이 스캔 결과를 조합합니다. 기능적 측면만 고려
한다면 이 두 가지 이진 피연산자 스캔 방법은 NO
접점과 NC 접점을 동일하게 처리할 수 있습니다.
이진 함수의 개수와 각 이진 함수의 범위는 이론
적으로는 제한이 없습니다. 하지만 실제로는 블록 예를 들어, NO 접점이 활성화되지 않은 경우 입
의 길이나 CPU의 메인 메모리 용량에 따라 제한됩 력 모듈에 ‘0’ 이 적용됩니다(그림 4.5 참조). 신
니다. 호 상태 ‘1’ 에 대한 스캔은 이 상태를 함수 상자
로 전달합니다. NC 접점에서 동일한 결과를 얻고 싶
다면 NC 접점의 입력에 신호 상태 ‘0’ 에 대한 스
신호 상태 스캔 및 할당
캔을 수행해야 합니다(부정에 대한 원을 포함해야
이진 함수는 신호 상태에 대한 논리 연산을 수행 함). NC 접점이 활성화되지 않아 입력 모듈에 신호
하기 전에 함수 입력에 있는 이진 피연산자를 스캔 상태 ‘1’ 이 적용된 경우 연산 박스에서 이 신호
합니다. 피연산자를 대상으로 ‘1’ 또는 ‘0’ 에 상태가 ‘0’ 으로 변환됩니다.
대한 스캔을 수행할 수 있습니다. ‘1’ 에 대한 스
캔인 경우 함수 입력이 그대로 연산 박스에 전달됩 NO 접점과 NC 접점을 활성화한 경우 연산 박스

니다. 함수 입력에 부정 문자가 있으면 ‘0’ 에 대 는 두 경우 모두 신호 상태를 ‘1’ 로 표시합니다.


한 스캔입니다. 자세한 내용은 4.3 “센서 유형 고려” 를 참조하십
시오.

이진 함수의 출력은 반드시 연결해야 합니다. 가


장 간단한 방법은 출력을 할당 연산 박스에 연결시
키는 것입니다(5 “메모리 기능” 참조). 이 논리 연
산 결과를 이용해 타이머를 시작하거나 디지털 연산

138
4.2 이진 논리 연산(FBD)

을 실행하고 블록을 호출할 수도 있습니다. 자세한 OR 연산


내용은 다음 장을 참조하십시오.
OR 연산은 2개의 이진 상태를 조합하여 두 상태,
이진 연산의 신호 상태를 추가적인 논리 연산을 즉 두 스캔 결과 중 하나가 ‘1’ 인 경우 ‘1’ 의
수행하지 않고 다른 이진 피연산자에 직접 할당하고 RLO를 반환합니다. OR 연산에 여러 개의 입력이 있
자 하는 경우, 예를 들어, 입력을 출력에 직접 연결 는 경우 그 중 한 입력의 스캔 결과만 ‘1’ 이면 논
하려는 경우 OR이나 EXCLUSIVE OR을 사용할 수도 리 연산 결과(RLO)가 ‘1’ 이 됩니다. 모든 입력의
있지만 보통 AND 연산을 주로 사용합니다. 스캔 결과가 ‘0’ 인 경우 OR 연산은 RLO ‘0’
을 반환합니다.

그림 4.6은 OR 연산의 예를 보여 줍니다. 네트워


크 3의 경우 OR 연산에 3개의 입력이 있습니다. 각
입력은 어떤 이진 피연산자와도 연결될 수 있습니
다. 모든 피연산자에 신호 상태 ‘1’ 에 대한 스캔
AND 연산을 선택하기만 하면 다른 함수 입력은 을 수행하여 피연산자의 신호 상태가 직접 OR이 되
모두 제거되고 1개만 연결됩니다. 게 합니다. 스캔한 피연산자 중 1개 이상의 신호 상
태가 ‘1’ 인 경우 다음 구문이 피연산자 Output1
AND 연산 을 ‘1’ 로 설정합니다. 스캔한 모든 피연산자의 신
AND 연산은 2개의 이진 상태를 서로 조합하여 두 호 상태가 ‘0’ 인 경우 OR 조건이 충족되지 않고
상태, 즉 두 스캔 결과가 모두 ‘1’ 인 경우 RLO를 피연산자 Output1은 ‘0’ 으로 재설정됩니다.
‘1’ 로 출력합니다. AND 연산에 여러 개의 입력이 네트워크 4는 부정 입력이 포함된 OR 연산을 보
있는 경우 모든 입력의 스캔 결과가 ‘1’ 이어야 최 여 줍니다. 부정은 원으로 표시됩니다. 피연산자가
종 RLO가 ‘1’ 이 됩니다. 그렇지 않은 경우 AND ‘0’ 인 경우 부정된 피연산자의 스캔 결과는 ‘1’
연산은 함수 출력에 RLO를 ‘0’ 으로 출력합니다. 입니다. 따라서 이 예에서는 피연산자 Input4의 신
그림 4.6은 AND 연산의 예를 보여 줍니다. 네트 호 상태가 ‘1’ 이거나 피연산자 Input5의 신호 상
워크 1의 경우 AND 연산에 3개의 입력이 있습니다. 태가 ‘0’ 이면 OR 조건이 충족됩니다.
각 입력은 어떤 이진 피연산자와도 연결될 수 있습
니다. 모든 피연산자에 신호 상태 ‘1’ 에 대한 스
EXCLUSIVE OR 연산
캔을 수행하여 피연산자의 신호 상태가 직접 AND가
되게 합니다. 스캔한 모든 피연산자의 신호 상태가 EXCLUSIVE OR 연산은 2개의 이진 상태를 서로
‘1’ 인 경우 AND 함수는 할당 연산 박스(다음 장 조합하여 두 상태, 즉 두 스캔 결과가 같지 않을 때
참조)를 통해 피연산자 Output1을 ‘1’ 로 설정합 는 RLO를 ‘1’ 로, 같을 때는 RLO를 ‘0’ 으로 반
니다. 그 외 모든 경우에서는 AND 조건이 충족되지 환합니다.
않기 때문에 피연산자 Output1이 ‘0’ 으로 재설정 그림 4.6은 EXCLUSIVE OR 함수의 예를 보여 줍
됩니다. 니다. 네트워크 5의 경우 2개의 입력 모두에 신호 상
네트워크 2는 부정 입력이 포함된 AND 연산을 보 태 ‘1’ 에 대한 스캔을 수행하여 그 결과를
여 줍니다. 입력의 부정은 원으로 표시됩니다. 피연 EXCLUSIVE OR 연산에 전달합니다. 스캔한 두 피연
산자가 ‘0’ 인 경우 부정된 피연산자의 스캔 결과 산자 중 하나만 ‘1’ 이어도 EXCLUSIVE OR 조건
는 ‘1’ 입니다. 따라서 이 예에서는 피연산자 이 충족되고 피연산자 Output1이 ‘1’ 로 설정됩니
Input4가 ‘1’ 이고 피연산자 Input5가 ‘0’ 일 때 다. 두 피연산자 모두 ‘1’ 또는 ‘0’ 인 경우 피
AND 조건이 충족됩니다. 연산자 Output1은 ‘0’ 으로 재설정됩니다.

139
4 이진 논리 연산

그림 4.6 이진 함수의 예

네트워크 6는 부정 입력이 포함된 EXCLUSIVE 지면 EXCLUSIVE OR 조건이 충족됩니다(직접 스캔


OR 함수를 보여 줍니다. 부정은 원으로 표시됩니 인 경우).
다. 피연산자가 ‘0’ 인 경우 부정된 피연산자의 스
캔 결과는 ‘1’ 입니다. 따라서 이 예에서는 두 입
력 피연산자가 동일한 신호 상태를 갖는 경우 4.2.2 이진 논리 연산 조합
EXCLUSIVE OR 조건이 충족됩니다. 이진 함수는 서로 쉽게 조합이 가능합니다. 예를
EXCLUSIVE OR 함수가 2개 이상의 입력을 갖도 들어, 여러 개의 AND 연산을 1개의 OR 연산으로 조
록 프로그래밍할 수 있습니다. 이 경우 스캔한 피연 합하거나 2개의 OR 연산을 1개의 EXCLUSIVE OR
산자 중 홀수의 피연산자가 ‘1’ 의 스캔 결과를 가 연산으로 조합할 수 있습니다. 논리 연산 1개당(네

140
4.2 이진 논리 연산(FBD)

Network 9
x_front
x_back
Limit switch
y_front error
y_back

Network 10
Input1
Input2
Input3 Output8
Input4

Network 11
Input5
Input6 Output9
Input7

그림 4.7 이진 논리 연산 조합의 예

트워크 1개당) 함수의 개수는 이론적으로는 무제한 4.2.3 논리 연산 결과 부정


입니다.
함수 심볼의 입력이나 출력에 원이 표시되어 있으
논리 연산에 ‘T-분기’ 를 사용하면 선택의 폭 면 논리 연산 결과를 부정합니다. 부정은 다음과 같
이 더 넓어져 논리 연산 1개당 1개 이상의 출력을 프 이 사용할 수 있습니다.
로그래밍할 수 있습니다(5.2 “FBD 연산 박스” 참
조). Z 이진 피연산자 스캔에 사용. 신호 상태 ‘0’ 에
대해 스캔하는 것과 동일합니다(위 설명 참조).
한 이진 함수의 출력을 다른 이진 함수의 입력에
연결시켜 복합 이진 논리 연산을 구현할 수 있습니 Z 2개의 이진 함수 사이에 사용. 논리 연산 결과를
다. 그림 4.7에 다양한 예가 제시되어 있습니다. 부정하는 것과 동일합니다.

네트워크 9: X축과 Y축 종단에서 리미트 스위치 Z 이진 함수의 출력에 사용. 예를 들어, 조건이 충
를 모니터링하는 경우입니다. 이 리미트 스위치는 족되지 않아 RLO가 ‘0’ 인 경우 이진 피연산
쌍으로 활성화할 수 없으며, 이를 시도할 경우 리미 자를 설정 또는 재설정하고자 할 때 사용합니다.
트 스위치 오류가 보고됩니다.
T-분기 바로 다음에는 부정을 사용하지 못할 수
네트워크 10: ARBITRARY 함수 입력을 이진 함수
있습니다.
와 연결시킬 수 있습니다. 예를 들어, AND 연산의
두 번째 입력 앞에 EXCLUSIVE OR 함수를 위치시킬 그림 4.8 은 부정된 입력이 있는 AND 연산인
수 있습니다. NAND 연산과 부정된 출력이 있는 OR 연산인 NOR
연산을 보여 줍니다. 모든 입력의 신호 상태가 ‘1’
네트워크 11: 부정 심볼을 사용하여 이진 함수 간
에도 RLO를 부정할 수 있습니다. 예를 들어, OR 연 인 경우 NAND 연산의 RLO는 ‘0’ 이 됩니다. NOR
산의 RLO를 부정하여 이를 AND 연산의 입력으로 함수는 입력 중 신호 상태가 ‘1’ 인 입력이 없는
사용할 수 있습니다. 경우에만 ‘1’ 의 RLO를 반환합니다.

141
4 이진 논리 연산

그림 4.8 NAND 및 NOR 함수

4.3 센서 유형 고려 롤러에 2개의 NO 접점이 연결되어 있고 두 번째 예


에서는 1개의 NO 접점과 1개의 NC 접점이 연결되
사용자 프로그램에서 센서를 스캔할 때는 센서가 어 있습니다. 두 경우 모두 출력에 연결된 컨택터가
NO 접점인지 NC 접점인지 여부를 반드시 고려해야 센서 활성화 여부를 선택합니다. NO 접점이 활성화
합니다. 센서 유형에 따라 센서가 활성화되었을 때 되면 입력의 신호 상태는 ‘1’ 이 됩니다. 이 경우
해당 입력의 신호 상태가 달라집니다. NO 접점인 경 NO 접점으로 신호 상태를 스캔하면 센서가 활성화
우 ‘1’ , NC 접점인 경우 ‘0’ 이 됩니다. CPU 되었을 때 전력이 흐릅니다. NO 접점 2개가 모두 활
는 입력을 제어하는 접점이 NO 접점인지 NC 접점 성화된 경우 전력은 Rung을 통해 코일로 흐르고 컨
인지 확인할 수 없습니다. CPU는 신호 상태가 ‘1’ 택터가 선택합니다.
인지 ‘0’ 인지만 감지할 수 있습니다.
NC 접점이 활성화되면 입력의 신호 상태는 ‘0’
이 됩니다. 이 경우 센서가 활성화되었을 때 전력이
LAD 프로그래밍 흐르게 하려면 NC 접점으로 결과를 스캔해야 합니
센서가 활성화되었을 때 ‘1’ 의 스캔 결과를 출 다. 따라서 두 번째 예의 경우 NO 접점과 NC 접점
력하여 이 결과를 추가적으로 조합할 수 있도록 프 이 직렬로 연결되어 있어야 두 센서가 활성화되었을
로그램을 구성하려면 센서 유형에 따라 입력도 다르 때 컨택터가 선택할 수 있습니다.
게 스캔해야 합니다. 이 용도로 NO 접점과 NC 접점
을 사용할 수 있습니다. NO 접점은 스캔한 입력이 FBD 프로그래밍
‘1’ 일 때 ‘1’ 을 반환합니다. NC 접점은 스캔한
센서가 활성화되었을 때 ‘1’ 의 스캔 결과를 출
입력이 ‘0’ 일 때 ‘1’ 을 반환합니다. 이런 방식
력하여 이 결과를 추가적으로 조합할 수 있도록 프
으로 ‘0’ 일 때 동작을 트리거하는 입력(0일 때 활
로그램을 구성하려면 센서 유형에 따라 입력도 다르
성화 입력)을 직접 스캔하고 그에 따라 스캔 결과를
게 스캔해야 합니다. NO 접점은 활성화되었을 때 신
다시 게이트로 제어할 수도 있습니다.
호 상태 ‘1’ 을 출력합니다. 센서가 활성화되었을
그림 4.9는 센서 유형에 따른 프로그래밍의 예를 때 스캔 결과가 ‘1’ 이 되게 하려면 이 신호 상태
보여 줍니다. 첫 번째 예에서는 프로그래머블 컨트 를 직접 스캔합니다. NC 접점은 활성화되었을 때 신

142
4.3 센서 유형 고려

그림 4.9 센서 유형 고려(LAD)

호 상태 ‘0’ 을 반환합니다. 따라서 NC 접점이 활 를 선택하게 됩니다. NO 접점이 활성화되면 입력의


성화되었을 때 스캔 결과가 ‘1’ 이 되게 하려면 부 신호 상태는 ‘1’ 이 됩니다. 센서가 활성화되었을
정을 한 다음 스캔해야 합니다. 이런 방식으로 신호 때 스캔 결과가 ‘1’ 이 되게 하려면 이 신호 상태
상태가 ‘0’ 일 때 동작을 트리거하는 입력(0일 때 를 직접 스캔합니다. 2개의 NO 접점이 모두 활성화
활성화 입력)을 스캔하고 스캔 결과를 추가적으로 되면 AND 조건이 충족되고 컨택터가 선택합니다.
조합할 수도 있습니다. NC 접점이 활성화되면 입력의 신호 상태는 ‘0’
그림 4.10은 센서 유형에 따른 프로그래밍의 예 이 됩니다. ‘1’ 의 스캔 결과를 얻으려면 스캔할
를 보여 줍니다. 첫 번째 예에서는 2개의 NO 접점이 때 입력을 부정해야 합니다. 두 번째 예에서 두 센서
PLC에 연결되어 있고 두 번째 예에서는 1개의 NO 가 모두 활성화되었을 때 컨택터가 선택하게 하려면
접점과 1개의 NC 접점이 연결되어 있습니다. 두 경 1개의 직접 입력과 1개의 부정 입력을 조건으로 하
우 모두 출력에 연결된 컨택터가 센서 활성화 여부 는 AND 연산을 사용해야 합니다.

그림 4.10 센서 유형 고려(FBD)

143
5 메모리 기능

5 메모리 기능

5.1 LAD 코일 [Ctrl-K]를 누르거나 삽입 → 프로그램 구성요소를 선


택하십시오.
LAD(래더 다이어그램)에서는 CPU에 생성된 논
리 연산 결과에 따라 이진 피연산자의 신호 상태에
영향을 주기 위해 직렬 및 병렬 회로와 함께 메모리 5.1.1 단일 코일
기능을 사용합니다. Rung의 종결자인 단일 코일은 코일에 위치한 피
연산자에 전력 흐름을 직접 할당합니다. 단일 코일
다음과 같은 메모리 기능을 사용할 수 있습니다.
의 함수는 마스터 제어 릴레이(MCR)에 따라 달라집
Z 단일 코일. RLO의 할당으로 사용. 니다. MCR이 활성화된 경우 코일 위에 위치한 이진
Z S 코일과 R 코일. 개별 프로그래밍된 메모리 기 함수에 신호 상태 ‘0’ 이 할당됩니다.
능으로 사용.

Z RS 연산 박스와 SR 연산 박스. 메모리 기능으로


사용.
코일에 전력이 흐르면 피연산자가 설정됩니다.
Z 미드라인 출력. 중간 버퍼로 사용.
코일에 전력이 흐르지 않으면 피연산자가 재설정됩
Z P 코일과 N 코일. 전력 흐름의 엣지신호 판단에 니다(그림 5.1, 네트워크 1 참조). 코일 앞에 NOT 접
사용. 점이 있는 경우 함수가 역전됩니다 (네트워크 2 참
Z POS 연산 박스와 NEG 연산 박스. 피연산자 엣 조).
지신호 판단에 사용. T-분기를 이용하여 코일을 병렬로 배열하면 동시
미드라인 출력과 엣지신호 판단에 대한 자세한 설 에 여러 개의 코일에 전력이 흐르게 할 수 있습니다
명은 다음 장을 참조하십시오. (네트워크 3 참조). 이 코일 위에 지정된 모든 피연
산자도 동일하게 응답합니다. 최대 16개의 코일을
이 장에 설명된 메모리 기능은 모든 이진 함수와
병렬로 연결할 수 있습니다.
함께 사용할 수 있습니다. 임시 로컬 데이터 비트를
엣지 메모리 비트로 사용할 때는 약간의 제한이 있 또한 T-분기 다음과 코일 앞에 접점을 직렬 및 병
습니다. 렬 회로로 추가 배열할 수 있습니다 (네트워크 4 참
조).
이 장에 설명된 예는 ‘LAD_Book’ 라이브러리
의 ‘기본 함수’ 프로그램에 함수 블록 FB 105로 단일 코일에 대한 더 많은 예를 보려면 4.1 “직렬

나와 있습니다. 이 라이브러리는 출판사의 웹 사이 및 병렬 회로(LAD)” 를 참조하십시오.

트에서 다운로드할 수 있습니다(8 페이지 참조).

증분 프로그래밍의 경우 프로그램 라이브러리 카 5.1.2 셋 코일 및 리셋 코일


탈로그의 ‘비트 로직’ 아래에 메모리 기능을 위한 셋 코일과 리셋 코일 역시 Rung을 종결시킵니다.
프로그램 구성요소가 있습니다. 프로그램 라이브러 이 두 유형의 코일은 코일에 전력이 흐를 때만 활성
리 카탈로그를 보려면 보기 → 개요 를 선택하고 화됩니다.

144
5.1 LAD 코일

그림 5.1 단일 코일, 셋 코일, 리셋 코일

셋 코일에 전력이 흐르면 코일 위에 있는 피연산


자의 신호 상태가 ‘1’ 로 설정됩니다. 리셋 코일
에 전력이 흐르면 코일 위에 있는 피연산자의 신호
상태가 ‘0’ 으로 재설정됩니다. 셋 코일이나 리셋
코일에 전력이 흐르지 않는 경우 이진 피연산자는
전혀 영향을 받지 않습니다(그림 5.1, 네트워크 5
및 6 참조).

145
5 메모리 기능

셋 코일과 리셋 코일의 함수는 마스터 제어 릴레


이(MCR)에 따라 달라집니다. MCR이 활성화된 경
우 코일 위의 이진 피연산자는 영향을 받지 않습니
다.

셋 코일 또는 리셋 코일과 함께 사용되는 피연산


자는 보통 시작 시점에서 재설정됩니다(전체 재가
동). 특수하게 신호 상태가 유지되는 경우도 있습니
다. 재설정 또는 유지 여부는 시작 모드(예: 웜 리스
타트), 사용된 피연산자(예: 정적 로컬 데이터) 및
셋 입력의 신호 상태가 ‘1’ 이고 리셋 입력의 신
CPU 설정(예: 정전 유지 특성)에 따라 달라집니다.
호 상태가 ‘0’ 인 경우 메모리 기능이 설정됩니다.

여러 개의 셋 코일과 리셋 코일을 조합하거나 같 보다 정확히 말하면 메모리 연산 박스 위의 이진 피


연산자가 설정됩니다. 리셋 입력에 ‘1’ , 셋 입력
은 Rung 안에 단일 코일과 함께 배열할 수 있습니다
에 ‘0’ 이 있는 경우 메모리 함수가 재설정됩니다.
(네트워크 7 참조). 프로그래밍의 명확성을 확보하
두 입력 모두에서 신호 상태가 ‘0’ 인 경우 메모
기 위해, 피연산자에 영향을 미치는 셋 코일과 리셋
리 기능에 영향을 미치지 않습니다. 두 입력이 동시
코일은 쌍으로 그룹화하고 각각의 경우에 코일 쌍을 에 ‘1’ 인 경우 2개의 메모리 기능이 다르게 응답
한 번만 사용하는 것이 좋습니다. 또한 여기에 단일 합니다. SR 메모리 기능은 재설정되고 RS 연산
코일까지 추가하여 피연산자를 제어하는 것은 삼가 (SET)은 설정됩니다.
야 합니다. 메모리 연산 박스의 함수는 마스터 제어 릴레이
(MCR)에 따라 달라집니다. MCR이 활성화된 경우
단일 코드를 사용하는 경우 분기 다음과 셋 및 리
메모리 연산 박스 위의 이진 피연산자는 더 이상 영
셋 코일 앞에 접점을 배열할 수 있습니다.
향을 받지 않습니다.
메모리 함수와 함께 사용되는 피연산자는 보통 시
5.1.3 메모리 연산 박스 작 시점에서 재설정됩니다(전체 재가동). 특수하게
메모리 연산 박스의 신호 상태가 유지되는 경우도
셋 코일과 리셋 코일의 함수는 메모리 기능의 연
있습니다. 재설정 또는 유지 여부는 시작 모드(예:
산 박스 안에 요약되어 있습니다. 공통 이진 피연산 웜 리스타트), 사용된 피연산자(예: 정적 로컬 데이
자는 연산 박스 위에 위치합니다. 아래 예에서 연산 터) 및 CPU 설정(예: 정전 유지 특성)에 따라 달라집
박스의 입력 S는 셋 코일, 입력 R은 리셋 코일에 해 니다.
당합니다. 메모리 기능에 할당된 이진 피연산자의
신호 상태는 메모리 기능의 출력 Q에 있습니다. SR 연산(RESET)
SR 메모리 연산 박스에서는 리셋 입력이 우선 순
메모리 함수에는 SR 연산 박스(재설정된 우선 순
위를 갖습니다. 재설정된 우선 순위란 셋 입력과 리
위)와 RS 연산 박스(설정된 우선 순위), 이렇게 두 셋 입력에 전기가 ‘동시에’ 흐르는 경우 메모리
가지 버전이 있습니다. 두 연산 박스는 라벨에서도 기능이 재설정되거나 재설정 상태를 유지한다는 의
차이가 나지만 S와 R 입력의 배열에서도 서로 차이 미입니다. 따라서 리셋 입력이 셋 입력보다 우선합
가 납니다. 니다(그림 5.2, 네트워크 8 참조).

146
5.1 LAD 코일

구문은 차례대로 실행되기 때문에 셋 입력이 먼저 이 있었음에도 불구하고 셋 입력에 여전히 결함 메


처리됩니다. 따라서 CPU는 처음에 메모리 피연산 시지가 존재해 메모리 기능을 계속 설정하는 경우
자를 먼저 설정하고 리셋 입력을 처리할 때 메모리 설정된 입력을 우선해 결함 메시지 버퍼를 구현합니
피연산자를 다시 재설정합니다. 메모리 피연산자는 다.
프로그램의 나머지 부분이 처리되는 동안 재설정 상
태를 유지합니다.
Rung에 메모리 기능 사용
메모리 피연산자가 출력인 경우 프로세스 이미지
Rung 내에 메모리 연산 박스를 위치시킬 수도 있
출력 테이블 상에서만 이처럼 간략한 설정이 이루어
습니다. 접점의 입력과 출력을 직렬 및 병렬로 연결
지고 관련 출력 모듈 상의 (외부) 출력은 영향을 받
시킬 수 있습니다(그림 5.2 네트워크 10 참조). 메모
지 않습니다. CPU는 프로그램 사이클이 끝날 때까
리 연산 박스의 두 번째 입력을 비활성화 상태로 남
지 프로세스 이미지 출력 테이블을 출력 모듈로 전
겨둘 수도 있습니다. 1개의 Rung에 여러 개의 메모
송하지 않습니다.
리 연산 박스를 연결할 수도 있습니다. 메모리 연산
리셋 우선 순위를 가진 메모리 기능이 ‘정상’ 박스는 직렬 또는 병렬로 배열할 수 있습니다(네트
적인 형식의 메모리 기능입니다. 리셋 상태(신호 상 워크 11참조).
태 ‘0’ )이 보통 더 안전하고 위험이 적은 상태이
T-분기 다음이나 왼쪽 파워 레일에서 시작하는
기 때문입니다.
분기 안에 메모리 기능을 위치시킬 수 있습니다.

RS 연산(SET)
래치를 사용한 메모리 기능
RS 메모리 연산 박스에서는 셋 입력이 우선 순위
를 갖습니다. 설정된 우선 순위란 셋 입력과 리셋 입 릴레이 논리 다이어그램에서는 보통 제어할 출력
력에 전기가 ‘동시에’ 흐르는 경우 메모리 기능이 을 래치하여 메모리 기능을 구현합니다. 래더 논리
설정되거나 설정 상태를 유지한다는 의미입니다. 를 프로그래밍할 때도 이 방법을 사용할 수 있습니
따라서 셋 입력이 리셋 입력보다 우선합니다(그 다. 하지만 메모리 연산 박스와 비교했을 때 메모리
림 5.2 네트워크 9 참조). 기능은 즉각 인식되지 않는다는 단점이 있습니다.

명령문은 순차적으로 실행되기 때문에 CPU는 먼 그림 5.2의 네트워크 12와 13은 설정된 우선 순
저 처리된 리셋 입력이 포함된 메모리 피연산자를 위와 재설정된 우선 순위, 이 두 메모리 기능에 래치
재설정하고 셋 입력을 처리할 때 메모리 피연산자를 를 사용한 예를 보여 줍니다. 래치의 원리는 간단합
다시 설정합니다. 메모리 피연산자는 프로그램의 니다. 코일로 제어되는 이진 피연산자를 스캔하고
나머지 부분이 처리되는 동안 설정 상태를 유지합니 이 스캔( ‘코일의 접점’ )을 셋 조건에 병렬로 연결
다. 합니다. Contact1이 폐쇄되면 Coil14가 작동하여
Contact1과 병렬인 접점을 폐쇄합니다. Contact1
메모리 피연산자가 출력인 경우 프로세스 이미지
이 다시 개방되어도 Coil14는 작동 상태를 유지합니
출력 테이블 상에서만 이처럼 간략한 재설정이 이루
다. Contact2가 개방되면 Coil14는 작동을 멈춥니
어지고 관련 출력 모듈 상의 (외부) 출력은 영향을
다. Contact1과 Contact2 모두에 신호 상태 ‘1’
받지 않습니다. CPU는 프로그램 사이클이 끝날 때
이 존재하는 경우 코일에 전력이 흐르지 않습니다(
까지 프로세스 이미지 출력 테이블을 출력 모듈로
재설정된 우선 순위). 네트워크 13은 이와는 다른 예
전송하지 않습니다.
를 보여 줍니다. Contact3과 Contact4 모두에 신호
메모리 기능에서 설정된 입력이 우선하는 것은 예 상태 ‘1’ 이 존재하는 경우 코일로 전력이 흐릅니
외적인 경우입니다. 예를 들어, 리셋 입력에서 승인 다(설정된 우선 순위).

147
5 메모리 기능

그림 5.2 메모리 기능(LAD)

148
5.2 FBD 연산 박스

5.2 FBD 연산 박스 5.2.1 할당


할당 연산 박스는 Rung의 종결자로서 논리 연산
FBD에서는 CPU에 생성된 논리 연산 결과(RLO) 결과를 개방된 인접 연산 박스에 직접 할당합니다.
에 따라 이진 피연산자의 신호 상태에 영향을 주기 할당 연산 박스의 입력에서 RLO가 ‘1’ 인 경우 이
위해 이진 논리 연산과 함께 메모리 기능을 사용합 진 피연산자가 설정됩니다. RLO가 ‘0’ 인 경우 피
니다. 연산자는 재설정됩니다. 할당 연산 박스의 함수는
마스터 제어 릴레이(MCR)에 따라 달라집니다.
FBD에서 사용 가능한 메모리 기능은 다음과 같습
MCR이 활성화된 경우 상자 위에 위치한 이진 피연
니다.
산자에 신호 상태 ‘0’ 이 할당됩니다.
Z 할당 연산 박스. 동적 제어에 사용.

Z 셋 및 리셋 연산 박스. 개별 프로그래밍된 메모
리 함수로 사용.
그림 5.3은 할당 연산 박스의 다양한 사용 예를
Z RS 연산 박스와 SR 연산 박스. 완전한 메모리 함 보여 줍니다.
수로 사용.
네트워크 1: 피연산자 Output1은 피연산자
Z 미드라인 출력 연산 박스. 중간 버퍼로 사용. Input1의 신호 상태를 그대로 가져옵니다.

네트워크 2: 부정을 사용하여 할당 연산 박스의


Z P 연산 박스와 N 연산 박스. 논리 연산 결과의 엣
함수를 역전시킬 수 있습니다.
지신호 판단에 사용.
네트워크 3: T-분기를 삽입하고 관련 피연산자를
Z POS 연산 박스와 NEG 연산 박스. 피연산자 엣
서로 아래 위로 배열하여 RLO를 동시에 여러 개의
지신호 판단에 사용.
연산 박스로 보낼 수 있습니다( ‘다중 출력’ ). 연
미드라인 출력 연산 박스와 엣지신호 판단 연산 산 박스 위의 모든 피연산자도 동일하게 응답합니
박스에 대한 자세한 설명은 다음 장을 참조하십시 다.
오. 네트워크 4: T-분기와 종결 연산 박스 사이에 이

이 장에 설명된 메모리 기능은 모든 이진 함수와 진 함수를 삽입하는 방식으로 연산 박스를 추가하여

함께 사용할 수 있습니다. 임시 로컬 데이터 비트를 논리 연산을 확장할 수 있습니다.

엣지 메모리 비트로 사용할 때는 약간의 제한이 있 할당 연산 박스에 대한 더 많은 예를 보려면


습니다. 4.2 “이진 논리 연산(FBD)” 을 참조하십시오.

이 장에 설명된 예는 ‘FBD_Book’ 라이브러리


의 ‘기본 함수’ 프로그램에 함수 블록 FB 105로 5.2.2 셋 연산 박스 및 리셋 연산 박스
나와 있습니다. 이 라이브러리는 출판사의 웹 사이 셋 연산 박스와 리셋 연산 박스 역시 논리 연산을
트에서 다운로드할 수 있습니다(8 페이지 참조). 종결시킵니다. 이 연산 박스들은 연산 박스에 전달
된 논리 연산 결과가 ‘1’ 인 경우 활성화됩니다.
증분 프로그래밍의 경우 프로그램 라이브러리 카
탈로그의 ‘비트 로직’ 아래에 메모리 기능을 위한
프로그램 구성요소가 있습니다. 프로그램 라이브러
리 카탈로그를 보려면 보기 → 개요 를 선택하고
[Ctrl-K]를 누르거나 삽입 → 프로그램 구성요소를 선
택하십시오.

149
5 메모리 기능

그림 5.3 할당, 셋 및 리셋(FBD)

셋 연산 박스에 전달된 RLO가 ‘1’ 인 경우 연 그림 5.3은 셋 및 리셋 연산 박스의 다양한 실행


산 박스 위의 피연산자에 신호 상태 ‘1’ 이 설정 예를 보여 줍니다.
됩니다. 리셋 연산 박스에 전달된 RLO가 ‘1’ 인 네트워크 5: 피연산자 Input1이 ‘1’ 인 경우 피
경우 연산 박스 위의 피연산자에 신호 상태 ‘0’ 이 연산자 Output7이 설정됩니다. Input1의 신호 상태
설정됩니다. 셋 또는 리셋 연산 박스에 전달된 RLO 가 ‘0’ 으로 돌아가도 Output7은 계속 설정 상태
가 ‘0’ 인 경우 이진 피연산자는 영향을 받지 않 를 유지합니다.
습니다. 셋 및 리셋 연산 박스의 함수는 마스터 제어
네트워크 6: 피연산자 Input2가 ‘1’ 인 경우 피
릴레이(MCR)에 따라 달라집니다. MCR이 활성화된
연산자 Output7이 재설정됩니다. Input2의 신호 상
경우 연산 박스 위의 이진 피연산자는 영향을 받지
않습니다.

150
5.2 FBD 연산 박스

태가 ‘0’ 으로 돌아가도 Output7은 계속 재설정 메모리 함수에는 SR 연산 박스(재설정된 우선 순


상태를 유지합니다. 위)와 RS 연산 박스(설정된 우선 순위), 이렇게 두
가지 버전이 있습니다. 두 연산 박스는 라벨에서도
네트워크 7: T-분기 다음에 여러 개의 셋 연산 박
차이가 나지만 S와 R 입력의 배열에서도 서로 차이
스와 리셋 연산 박스를 조합하거나 할당 연산 박스
가 납니다.
와 함께 같은 연산 박스 안에 배열할 수 있습니다.
할당 연산 박스와 마찬가지로 T-분기 다음과 셋 및 셋 입력이 ‘1’ 이고 리셋 입력이 ‘0’ 인 경우
리셋 연산 박스 앞에 이진 함수를 프로그래밍할 수 메모리 함수가 설정됩니다. 보다 정확히 말하면 메
있습니다. 모리 연산 박스 위의 이진 피연산자가 설정됩니다.

프로그래밍의 명확성을 확보하기 위해서는 피연 리셋 입력이 ‘1’ 이고 셋 입력이 ‘0’ 인 경우 메

산자에 영향을 미치는 셋 연산 박스와 리셋 연산 박 모리 함수가 재설정됩니다. 두 입력 모두에서 신호

스는 쌍으로 그룹화하고 각각의 경우에 코일 쌍을 상태가 ‘0’ 인 경우 메모리 함수에 영향을 미치지
않습니다. 두 입력의 신호 상태가 동시에 ‘1’ 인
한 번만 사용하는 것이 좋습니다. 또한 할당 연산 박
스로 피연산자를 제어하는 것은 삼가야 합니다. 경우 2개의 메모리 함수가 다르게 응답합니다. SR
연산(RESET)은 재설정되고 RS 메모리 기능은 설정
셋 또는 리셋 연산 박스와 함께 사용되는 피연산 됩니다.
자는 보통 시작 시점에서 재설정됩니다(콜드 리스
타트 또는 웜 리스타트). 특수하게 신호 상태가 유지 메모리 연산 박스의 함수는 마스터 제어 릴레이
되는 경우도 있습니다. 재설정 또는 유지 여부는 시 (MCR)에 따라 달라집니다. MCR이 활성화된 경우
작 모드(예: 인스턴스 핫 리스타트), 사용된 피연산 메모리 연산 박스 위의 이진 피연산자는 더 이상 영
자(예: 정적 로컬 데이터) 및 CPU 설정(예: 정전 유 향을 받지 않습니다.
지 특성)에 따라 달라집니다. 메모리 기능과 함께 사용되는 피연산자는 보통 시
작 시점에서 재설정됩니다(콜드 리스타트 또는 웜
리스타트). 특수하게 메모리 연산 박스의 신호 상태
5.2.3 메모리 연산 박스
가 유지되는 경우도 있습니다. 재설정 또는 유지 여
셋 연산 박스와 리셋 연산 박스의 함수는 메모리
부는 시작 모드(예: 인스턴스 핫 리스타트), 사용된
함수의 연산 박스 안에 요약되어 있습니다. 공통 이
피연산자(예: 정적 로컬 데이터) 및 CPU 설정(예: 정
진 피연산자는 연산 박스 위에 위치합니다. 아래 예
전 유지 특성)에 따라 달라집니다.
에서 연산 박스의 입력 S는 셋 연산 박스, 입력 R은
리셋 연산 박스에 해당합니다. 메모리 함수에 할당
된 이진 피연산자의 신호 상태는 메모리 함수의 출 SR 연산(RESET)
력 Q에 있습니다. SR 메모리 연산 박스에서는 리셋 입력이 우선 순
위를 갖습니다. 재설정된 우선 순위란 셋 입력과 리
셋 입력에서 RLO가 ‘동시에’ ‘1’ 인 경우 메모
리 기능이 재설정되거나 재설정 상태를 유지한다는
의미입니다. 따라서 리셋 입력이 셋 입력보다 우선
합니다(그림 5.4, 네트워크 8 참조).

구문은 차례대로 실행되기 때문에 셋 입력이 먼저


처리됩니다. 따라서 CPU는 처음에 메모리 피연산
자를 먼저 설정하고 리셋 입력을 처리할 때 메모리
피연산자를 다시 재설정합니다. 메모리 피연산자는

151
5 메모리 기능

그림 5.4 메모리 기능(FBD)

프로그램의 나머지 부분이 처리되는 동안 재설정 상 지 프로세스 이미지 출력 테이블을 출력 모듈로 전


태를 유지합니다. 송하지 않습니다.

메모리 피연산자가 출력인 경우 프로세스 이미지 재설정을 우선하는 메모리 기능이 ‘정상’ 적인
출력 테이블 상에서만 이처럼 간략한 설정이 이루어 형식의 메모리 기능입니다. 리셋 상태(신호 상태
지고 관련 출력 모듈 상의 (외부) 출력은 영향을 받 ‘0’ )가 보통 더 안전하고 위험이 적은 상태이기 때
지 않습니다. CPU는 프로그램 사이클이 끝날 때까 문입니다.

152
5.3 미드라인 출력

RS 연산(SET) 5.3 미드라인 출력


RS 메모리 연산 박스에서는 셋 입력이 우선 순위
미드라인 출력은 LAD(래더 다이어그램)이나
를 갖습니다. 설정된 우선 순위란 셋 입력과 리셋 입
FBD(펑션 블록 다이어그램)에 있는 중간 이진 버퍼
력에서 RLO가 ‘동시에’ ‘1’ 인 경우 메모리 기
입니다. 미드라인 출력에서 유효한 RLO는 미드라인
능이 설정되거나 설정 상태를 유지한다는 의미입니 출력 위의 피연산자에 저장됩니다. 이 피연산자는
다. 따라서 셋 입력이 리셋 입력보다 우선합니다(그 프로그램의 다른 지점에서 다시 스캔되기 때문에 미
림 5.4, 네트워크 9 참조). 드라인 출력에서 유효한 RLO를 프로그램의 다른 지
점에서 후처리할 수도 있습니다.
구문은 차례대로 실행되기 때문에 리셋 입력이 먼
저 처리됩니다. 따라서 CPU는 처음에 메모리 피연 이진 결과의 중간 저장소로 다음과 같은 이진 피
산자를 먼저 재설정하고 셋 입력을 처리할 때 메모 연산자를 사용할 수 있습니다.
리 피연산자를 다시 설정합니다. 메모리 피연산자 Z 블록 내에서만 중간 결과가 필요한 경우 임시 로
는 프로그램의 나머지 부분이 처리되는 동안 설정 컬 데이터 비트를 사용할 수 있습니다. 모든 코
상태를 유지합니다. 드 블록은 임시 로컬 데이터를 갖고 있습니다.

메모리 피연산자가 출력인 경우 프로세스 이미지 Z 정적 로컬 데이터 비트는 함수 블록 내에서만 사


출력 테이블 상에서만 이처럼 간략한 재설정이 이루 용할 수 있습니다. 이 비트는 블록 외부에서라도
어지고 관련 출력 모듈 상의 (외부) 출력은 영향을 신호 상태가 다시 사용될 때까지 신호 상태를 저
받지 않습니다. CPU는 프로그램 사이클이 끝날 때 장합니다.

까지 프로세스 이미지 출력 테이블을 출력 모듈로 Z 메모리 비트는 CPU별로 지정된 수만큼 글로벌
전송하지 않습니다. 비트로 사용할 수 있습니다. 하지만 프로그램의
명확성을 위해 가능하면 메모리 비트를 다용도
설정된 입력이 우선하는 것은 예외적인 경우입니
로, 즉 동일한 메모리 비트를 여러 태스크에 사
다. 예를 들어, 리셋 입력에서 승인이 있었음에도 불
용하지 않도록 합니다.
구하고 셋 입력에 여전히 결함 메시지가 존재해 메
모리 기능을 계속 설정하는 경우 설정된 입력을 우 Z 글로벌 데이터 블록 내의 데이터 비트는 프로그
램 전체에 걸쳐 사용할 수 있습니다. 하지만 이
선해 결함 메시지 버퍼를 구현합니다.
데이터 비트를 사용하려면 관련 데이터 블록
(DB)이 먼저 개방되어 있어야 합니다. 대량 주소
논리 연산에 메모리 기능 사용 지정을 통해 개방이 암시된 경우라도 마찬가지
입니다.
메모리 연산 박스를 논리 연산 내에 위치시킬 수
도 있습니다. 이진 함수는 입력과 출력 모두에 프로 미드라인 출력의 함수는 마스터 제어 릴레이에 따
그래밍이 가능합니다(그림 5.4, 네트워크 10 및 11 라 달라집니다. MCR이 활성화된 경우 미드라인 출
참조). 메모리 연산 박스의 두 번째 입력을 연결되지 력에 인접한 이진 피연산자에 신호 상태 ‘0’ 이 할
않은 상태로 남겨둘 수도 있습니다. 1개의 논리 연 당됩니다. 미드라인 출력에 이어 RLO도 ‘0’ 이 됩
산 안에 여러 개의 메모리 연산 박스를 서로 연결시 니다. 따라서 더 이상 ‘전력 흐름’ 이 없습니다.

킬 수도 있습니다. 메모리 연산 박스는 서로 앞뒤로 주의: STEP 5에서 사용하는 ‘임시 저장 메모리’
배열하거나 T-분기 다음에 서로 아래 위로 배열할 를 모든 블록에서 사용 가능한 임시 로컬 데이터로
수 있습니다. 대체할 수 있습니다.

153
5 메모리 기능

5.3.1 LAD의 미드라인 출력 연산에 여러 개의 미드라인 출력을 프로그래밍할 수


Rung 내에 있는 단일 코일이 미드라인 출력이 됩 있습니다. 미드라인 출력 연산 박스가 논리 연산을
니다. Rung의 이 지점에 전류가 흐르면, 즉 이 지점 종결시켜서는 안됩니다. 이 용도로는 할당 연산 박
에서 유효한 RLO는 미드라인 출력 위의 이진 피연 스를 사용합니다.
산자에 저장됩니다. 미드라인 출력 자체는 전력 흐
름에 전혀 영향을 주지 않습니다.
프로그램 내의 다른 지점에서 NO 및 NC 접점으
로 미드라인 출력 위의 이진 피연산자를 스캔할 수 그림 5.5의 네트워크 12와 13은 중간 결과가 어
있습니다. 1개의 Rung에 여러 개의 미드라인 출력 떻게 미드라인 출력에 저장되는지 보여 줍니다.
을 프로그래밍할 수 있습니다. Input1, Input2, Input3 및 Input4로 구성된 회로에서
나온 RLO는 미드라인 출력 Midl_out1에 저장됩니
다. 논리 연산의 조건이 충족된 경우와 Input5의 신
호 상태가 ‘1’ 인 경우 Output16이 활성화됩니다.
미드라인 출력을 왼쪽 파워 레일에서 시작되는 분 저장된 RLO는 다음 네트워크에서 두 가지 방식으로
기 안에 위치시킬 수 있습니다. 하지만 파워 레일에 사용됩니다. 첫째, 논리 연산의 조건이 충족되어 비
직접 연결시킬 수는 없습니다. 미드라인 출력은 T- 트 로직 조합이 Input6으로 만들어졌는지 확인하기
분기를 따라갈 수는 있지만 Rung을 종결시키지 않 위한 검사를 수행합니다. 둘째, 논리 연산의 조건이
을 수 있습니다. 이 용도로는 단일 코드를 사용합니 충족되지 않아 비트 로직 조합이 Input7로 만들어졌
다. 는지 확인하기 위한 검사를 수행합니다.

그림 5.5의 예는 중간 결과가 미드라인 출력에 어


떻게 저장되는지 보여 줍니다. Contact1,
Contact2, Contact4 및 Contact5로 구성된 회로에 5.4 엣지신호 판단
서 나온 RLO는 미드라인 출력 Midl_out1에 저장됩
니다. 논리 연산의 조건이 충족되어 미드라인 출력 5.4.1 엣지신호 판단 작동 원리
에 전력이 흐르는 경우와 Contact3이 폐쇄된 경우 엣지신호 판단을 사용하여 신호 상태의 변화, 즉
Coil16이 작동됩니다. 저장된 RLO는 다음 네트워크 신호 엣지를 감지할 수 있습니다. 신호가 ‘0’ 에
에서 두 가지 방식으로 사용됩니다. 첫째, 논리 연산 서 ‘1’ 로 바뀌면 포지티브(상승) 엣지입니다. 신
의 조건이 충족되어 비트 로직 조합이 Contact6으 호가 반대로 바뀌면 네거티브(하강) 엣지입니다.
로 만들어졌는지 확인하기 위한 검사를 수행합니
회로 다이어그램의 경우 펄스 접점 요소가 엣지신
다. 둘째, 논리 연산의 조건이 충족되지 않아 비트
호 판단에 해당합니다. 릴레이가 켜졌을 때 펄스 접
로직 조합이 Contact7로 만들어졌는지 확인하기 위
점 요소가 펄스를 방출하는 경우 포지티브 엣지에
한 검사를 수행합니다.
해당합니다. 릴레이가 꺼졌을 때 펄스 접점 요소가
펄스를 방출하는 경우 네거티브 엣지에 해당합니
5.3.2 FBD의 미드라인 출력 다.
논리 연산 내의 할당 연산 박스가 미드라인 출력 신호 엣지(신호 상태의 변화) 감지 기능은 프로그
이 됩니다. 이 지점까지 유효한 RLO는 미드라인 출 램에 구현되어 있습니다. CPU는 현재 RLO(예: 입력
력 연산 박스 위의 미드라인 출력에 저장됩니다. 검사의 결과)를 저장된 RLO와 비교합니다. 두 신호
프로그램 내의 다른 지점에서 미드라인 출력 위의 상태가 다를 경우 신호 엣지가 존재한다는 뜻입니
이진 피연산자를 검사할 수 있습니다. 1개의 논리 다.

154
5.4 엣지신호 판단

그림 5.5 미드라인 출력

저장된 RLO는 ‘엣지 메모리 비트’ 에 있습니 는데 그 동안 신호 상태에 변화가 없었다면 엣지 메


다. 반드시 메모리 비트여야 할 필요는 없습니다. 하 모리 비트의 신호 상태는 현재 RLO의 신호 상태와
지만 다음 프로그램 사이클에서 엣지신호 판단이 다 동일하고 CPU도 더 이상 엣지를 감지하지 않습니
시 발견되었을 때 신호 상태를 확인할 수 있고 프로 다.
그램의 다른 부분에서 사용되지 않는 피연산자여야 엣지신호 판단 후 감지된 엣지는 RLO로 표시합니
합니다. 메모리 비트, 글로벌 데이터 블록(DB) 내의 다. 신호 엣지가 감지된 경우 CPU는 엣지 평가 후
데이터 비트, 함수 블록 내의 정적 로컬 데이터 비트 RLO를 ‘1’ 로 설정하고 따라서 전력이 흐르게 됩
는 모두 피연산자로 사용할 수 있습니다. 니다. 신호 엣지가 없는 경우 RLO는 ‘0’ 이 됩니다.
엣지 메모리 비트는 CPU가 마지막으로 엣지 신 엣지신호 판단 후 신호 상태가 ‘1’ 이라면 ‘엣
호 판단 처리에 사용한 ‘기존’ RLO를 저장합니 지가 감지’ 되었다는 의미입니다. 신호 상태 ‘1’
다. 신호 엣지가 존재하는 경우, 즉 현재 RLO가 엣 은 아주 잠깐 동안 존재하는데 보통 한 프로그램 사
지 메모리 비트의 신호 상태와 다른 경우 CPU는 현 이클 동안 존재합니다. 다음 사이클에서 엣지가 감
재 RLO를 ‘새’ RLO의 ‘값’ 에 할당하여 엣지 지되지 않은 경우(엣지신호 판단의 ‘입력 RLO’ 가
메모리 비트의 신호 상태를 수정합니다. 엣지신호 변하지 않은 경우) CPU가 엣지신호 판단 후 RLO를
판단은 보통 다음 프로그램 사이클에서 다시 수행되 다시 ‘0’ 으로 설정하기 때문입니다.

155
5 메모리 기능

CPU가 켜져 있는 경우 엣지신호 판단의 성능 특 록(DB) 내의 데이터 비트, 임시 및 정적 로컬 데이터


성을 확인해야 합니다. 엣지가 감지되지 않은 경우 비트가 있습니다.
CPU가 켜졌을 때 엣지신호 판단 이전의 RLO가 엣
지 메모리 비트의 신호 상태와 동일해야 합니다. 특 전력 흐름의 엣지신호 판단
정 상황에서는 필요한 성능과 사용하는 피연산자에 전력 흐름의 엣지신호 판단이 포지티브(상승) 엣
따라 시동 루틴에서 엣지 메모리 비트를 재설정해야 지인 경우 P, 네거티브(하강) 엣지인 경우 N라고 적
합니다. 힌 코일로 표시됩니다. 코일 위에 이진 피연산자인
엣지 메모리 비트가 있습니다. 여기에 선행된 엣지
신호 판단의 ‘기존’ RLO가 저장되어 있습니다. 이
5.4.2 LAD의 엣지신호 판단
엣지신호 판단은 ‘전력이 흐름’ 에서 ‘전력이 흐
LAD 프로그래밍 언어는 4개의 다른 엣지신호 판
르지 않음’ 으로, 혹은 그 반대의 전력 흐름 변화를
단 요소를 제공합니다(그림 5.6 참조).
감지합니다.
아래 그림 5.9의 예에서 네트워크 16은 포지티
브 및 네거티브 엣지신호 판단을 보여 줍니다.
Contact1 및 Contact3으로 구성된 병렬 회로의
조건이 충족된 경우 엣지신호 판단은 EmemBit1
을 사용해 짧은 펄스를 방출합니다. Contact2가
폐쇄된 경우 Memory7이 설정됩니다. Contact4
및 Contact5로 구성된 직렬 회로가 전력 흐름을
인터럽트한 경우 EmemBit2 가 펄스를 방출해
Memory7을 다시 재설정합니다.
코일을 사용하여 T-분기 다음이나 왼쪽 파워 레
일에서 시작하는 분기 안에 엣지신호 판단을 프로그
래밍할 수 있습니다. 하지만 왼쪽 파워 레일에 직접
연결시킬 수는 없습니다.

그림 5.6 LAD의 엣지신호 판단 요소


피연산자의 엣지신호 판단
LAD는 피연산자의 엣지신호 판단에 연산 박스를
엣지신호 판단 후 RLO를 직접 처리할 수 있습 사용합니다. 이 연산 박스 위에 신호 상태 변화 평가
니다. 예를 들어, RLO를 셋 코일에 저장한 후 다 의 대상이 될 피연산자가 있습니다. 선행된 프로그
운스트림 접점과 조합하거나 ‘펄스 메모리 비 램 사이클의 결과인 ‘기존’ 신호 상태를 저장하는
트’ 라 불리는 이진 피연산자에 저장할 수 있습니 엣지 메모리 비트는 입력 M_BIT에 있습니다.
다. 프로그램의 다른 부분에서 엣지신호 판단의 라벨 미지정 입력과 출력 Q를 사용해 Rung에
RLO를 처리할 때 이 펄스 메모리 비트를 사용합니 접점 대신 엣지신호 판단을 ‘삽입’ 합니다. 라
다. 회로 다이어그램의 펄스 접점 요소와 마찬가지 벨 미지정 입력에 전력이 흐르는 경우 출력 Q는
로 펄스 메모리 비트는 감지된 엣지에 대해 소위 말 엣지에서 펄스를 방출합니다. 이 입력에 전력이
하는 중간 버퍼가 됩니다. 임펄스 메모리 비트로 적 흐르지 않는 경우 출력 Q는 항상 재설정됩니다.
합한 피연산자로는 메모리 비트, 글로벌 데이터 블 이 엣지신호 판단은 어떤 접점이든 대신할 수 있
습니다. 왼쪽 파워 레일에서 시작하지 않는 병렬 분기에도 배열할 수 있습니다.

156
5.4 엣지신호 판단

그림 5.9의 네트워크 17은 피연산자의 엣지신호


판단 예를 보여 줍니다. 피연산자 Contact1의 신호
상태가 ‘0’ 에서 ‘1’ 로 바뀐 경우, 즉 포지티브
엣지인 경우 상위 분기의 엣지신호 판단이 펄스를
방출합니다. 이 펄스는 Memory0을 설정합니다. 엣
지신호 판단은 항상 라벨 미지정 입력을 왼쪽 파워
레일에 직접 연결해야 활성화됩니다. 전력 엣지신
호 판단은 Contact2에 의해 활성화됩니다. 이 입력
의 신호 상태 ‘1’ 로 엣지신호 판단이 활성화된 경
우 이진 피연산자 Contact3의 신호 상태가 ‘1’ 에
서 ‘0’ 으로 바뀌었을 때, 즉 네거티브 엣지일 때
펄스를 방출합니다.

5.4.3 FBD의 엣지신호 판단 그림 5.7 FBD의 엣지신호 판단 구성요소


FBD 프로그래밍 언어는 4개의 다른 엣지신호 판
단 요소를 제공합니다(그림 5.7 참조). 그림 5.9의 네트워크 14는 포지티브 및 네거티브
엣지신호 판단후 RLO를 직접 처리할 수 있습니 엣지신호 판단의 예를 보여 줍니다. Input1 및
다. 예를 들어, 셋 연산 박스에 저장한 다음 후속 이 Input3으로 구성된 OR 연산이 충족된 경우 엣지신
진 함수와 조합하거나 ‘펄스 메모리 비트’ 라 불 호 판단은 EmemBit1을 사용해 짧은 펄스를 방출합
리는 이진 피연산자에 할당할 수 있습니다. 프로그 니다. 이 예에서 Input2가 ‘1’ 인 경우 Memory1
램의 다른 부분에서 엣지신호 판단의 RLO를 처리할 이 설정됩니다. Input4 및 Input5로 구성된 AND 연
때 이 펄스 메모리 비트를 사용합니다. 펄스 메모리 산이 더 이상 충족되지 않는 경우 EmemBit2가 방출
비트는 감지된 엣지에 대해 소위 말하는 중간 버퍼 한 펄스에 의해 Memory1이 다시 재설정됩니다.
가 됩니다. 펄스 메모리 비트로 적합한 피연산자로
는 메모리 비트, 글로벌 데이터 블록(DB) 내의 데이
피연산자의 엣지신호 판단
터 비트, 임시 및 정적 로컬 데이터 비트가 있습니
다. 피연산자의 엣지신호 판단은 이진 논리 연산의 시
작 지점에 위치합니다. 연산 박스 위에 신호 상태 변
엣지신호 판단은 T-분기 다음에 위치시킬 수 없
화 평가의 대상이 될 피연산자가 있습니다. 마지막
습니다.
프로그램 사이클의 결과인 ‘기존’ 신호 상태를 저
장하는 엣지 메모리 비트는 입력 M_BIT에 있습니
RLO의 엣지신호 판단
다. CPU가 피연산자의 신호 상태 변화를 감지하면
RLO의 엣지신호 판단은 포지티브(상승 엣지)인
출력 Q가 ‘1’ 이 됩니다.
경우 P, 네거티브(하강 엣지)인 경우 N이라고 적힌
연산 박스로 표시됩니다. 연산 박스 위에 이진 피연 그림 5.9의 네트워크 15는 피연산자의 엣지신호
산자인 엣지 메모리 비트가 있습니다. 여기에 선행 판단 예를 보여 줍니다.포지티브 엣지신호 판단
된 엣지신호 판단의 ‘기존’ RLO가 저장되어 있습 POS는 피연산자 Input1이 ‘0’ 에서 ‘1’ 로 바뀐
니다. RLO의 엣지신호 판단은 논리 회로 내에서 경우, 즉 포지티브 엣지인 경우 펄스를 방출합니다.
RLO가 ‘1’ 에서 ‘0’ 으로, 혹은 그 반대로 바뀌 네거티브 엣지신호 판단 NEG는 피연산자 nput3이
는 RLO 변화를 감지합니다. ‘1’ 에서 ‘0’ 으로 바뀐 경우, 즉 네거티브 엣지

157
5 메모리 기능

인 경우 펄스를 방출합니다.이 펄스는 피연산자 두 번째 해결책은 회로 다이어그램에서 흔히 사용


nput2가 ‘1’ 인 경우 Memory2를 설정합니다. 하는 래치 함수를 사용하는 방법입니다(네트워크
20 및 21 참조). 원리는 첫 번째 해결책과 동일합니
다. 단, 리셋 조건이 ‘0일 때 활성화’ 라는 점에서
차이가 있는데 이는 래치에서는 일반적인 조건입니
5.5 이진 계수기
다.

이진 계수기는 1개의 입력과 1개의 출력을 갖습


니다. 이진 계수기의 입력에서 신호가 바뀌는 경우,
5.5.2 FBD의 해결책
예를 들어 ‘0’ 에서 ‘1’ 이 되는 경우 출력의 신
호 상태도 변경됩니다(그림 5.8 참조). 예로 든 포지 이 문제를 해결하는 방법은 여러 가지가 있습니
티브 엣지인 경우 이 새 신호 상태는 다음에 신호 상 다. 아래에 그 중 두 가지를 소개합니다.
태 변화가 있을 때까지 유지됩니다. 신호 상태에 변
첫 번째 해결책은 메모리 함수를 사용하는 방법입
화가 있는 경우에만 출력의 신호 상태도 다시 변경
니다(그림 5.11, 네트워크 16 및 17 참조). 피연산
됩니다. 따라서 이진 계수기의 출력에는 입력 주파
자 Input 의 신호 상태가 ‘1’ 인 경우 피연산자
수의 절반만 표시됩니다.
Output이 설정됩니다(피연산자 Memory는 계속 재
설정 상태를 유지합니다). 피연산자 Input의 신호 상
태가 ‘0’ 으로 바뀌면 Memory 도 설정됩니다.
Output은 이제 ‘1’ 이 됩니다. 다음에 Input이 ‘1’
이면 Output이 다시 재설정됩니다. Memory는 이제
그림 5.8 이진 계수기의 펄스 다이어그램
‘1’ 이 됩니다. Input이 다시 ‘0’ 이 되면 Memory
가 재설정됩니다. Output 역시 재설정되기 때문입
니다. 2회의 입력 펄스와 1회의 출력 펄스가 방출되
5.5.1 LAD의 해결책
면 다시 기본 상태가 되는 것입니다.
이 문제를 해결하는 방법은 여러 가지가 있습니
다. 아래에 그 중 두 가지를 소개합니다. 두 번째 해결책은 피연산자 입력의 엣지신호 판단
을 사용하는 방법입니다(그림 5.11, 네트워크 18 ~
첫 번째 해결책은 메모리 함수를 사용하는 방법입 20 참조). Input0에서 엣지가 감지되지 않은 경우 엣
니다(그림 5.10, 네트워크 18 및 19 참조). 피연산 지신호 판단 후 RLO가 ‘0’ 이 되고 점프 명령 JCN
자 Input_1의 신호 상태가 ‘1’ 인 경우 피연산자 이 실행됩니다. Jump 연산에 대한 자세한 설명은
Output_1이 설정됩니다(피연산자 Memory_1은 계 16 “Jump 연산” 를 참조하십시오.
속 재설정 상태를 유지합니다). 피연산자 Input_1의
신호 상태가 ‘0’ 으로 바뀌면 Memory_1도 설정 네트워크 20의 예를 보면 점프 라벨이 ‘bin’ 으
됩니다. Output_1은 이제 ‘1’ 이 됩니다. 다음에 로 되어 있습니다. 엣지가 감지되지 않은 경우 이 지
Input_1이 ‘1’ 이 되면 Output_1 은 다시 재설정 점에서 프로그램 스캔이 다시 시작됩니다. 실제 이
됩니다. Memory_1은 이제 ‘1’ 이 됩니다. Input_ 진 계수기는 네트워크 19에 있습니다. Output0 이
1이 다시 ‘0’ 이 되면 Memory_1이 재설정됩니다. ‘0’ 인 경우 설정되고, ‘1’ 인 경우 재설정됩니
Output_1 역시 재설정되기 때문입니다. 2회의 입력 다. 이 네트워크는 Input0에서 엣지가 감지된 경우
펄스와 1회의 출력 펄스가 방출되면 다시 기본 상태 에만 처리됩니다. 기본적으로 Input0에서 엣지가 감
가 되는 것입니다. 지될 때마다 Output0은 신호 상태를 변경합니다.

158
5.5 이진 계수기

그림 5.9 엣지신호 판단

159
5 메모리 기능

그림 5.10 이진 계수기 예(LAD)

5.6 컨베이어 제어 시스템의 예 Z 컨베이어 벨트의 끝에 있는 ‘벨트 종단’ 센서


(예: 광센서)가 부품을 감지합니다. 이 지점에서
다음 예는 기능면에서 극단적으로 단순화시킨 컨 벨트 모터가 꺼지고 ‘ready_rem’ (제거 준비
베이어 벨트 컨트롤 시스템을 이용해 이진 논리 연 완료) 신호를 트리거합니다.
산과 메모리 기능을 입력, 출력 및 메모리 비트와 함
께 사용하는 방법을 설명합니다. Z ‘continue’ 신호가 전송된 경우 ‘벨트 끝’ 센
서(벨트 종단 센서)가 더 이상 부품을 감지할 수
없을 때까지 부품이 운반됩니다.
기능 설명
컨베이어 벨트로 벨트 당 1개의 크레이트나 팔렛 이 예는 입력, 출력 및 메모리 비트로 프로그래밍
분량의 부품을 운반합니다. 기본 기능은 다음과 같 한 것이며 위치에 관계 없이 어떤 블록에나 프로그
습니다. 래밍이 가능합니다. 이 예에서는 함수 값이 없는 함
수를 블록으로 선택하였습니다.
Z 벨트가 비면 컨트롤러는 ‘readyload’ (로딩 준
비 완료) 신호를 보내 더 많은 부품을 요청합니
다. 신호, 심볼
Z ‘Start’ 신호가 전송되면 벨트가 작동을 시작해 다음과 같은 몇 가지 신호를 추가해 컨베이어 벨
부품을 운반합니다. 트 컨트롤 시스템의 기능을 보완할 수 있습니다.

160
5.6 컨베이어 제어 시스템의 예

그림 5.11 이진 계수기 예(FBD)

Z Basic_st 여기서는 심볼 주소 지정을 사용합니다. 즉, 피연


컨트롤러를 기본 상태로 설정합니다. 산자에 이름을 할당하고 프로그램을 작성할 때 이
이름을 사용합니다. 프로그램을 시작하기 입력, 출
Z Man_on
력, 메모리 비트 및 블록이 포함된 심볼 테이블을 만
조건에 관계 없이 벨트를 켭니다.
듭니다(표 5.1 참조).
Z /Stop
‘0’ 신호가 존재하는 동안 컨베이어를 중지합 LAD용 프로그램
니다(NC 접점이 ‘0일 때 활성화’ 센서인 경 예는 함수 블록 안에 있습니다. 이 함수 블록을 프
우 ). 로그램 라이브러리 카탈로그 ‘FC 블록’ 에서 선
택한 후 조직 블록 OB 1으로 호출해 CPU에서 처리
Z Light_barrier1
합니다.
부품이 벨트 종단에 도달했습니다.
여기서는 메모리 연산 박스를 사용해 예를 프로그
Z /Mfault1 래밍했습니다. 19 “블록 파라미터” 에는 같은 예가
벨트 모터(예: 모터 보호 스위치)의 결함 신호. 0 래치로 프로그래밍되어 있습니다. 이 장에 설명된
일 때 활성화’ 신호로 설계되어 단선 등이 발생 프로그램을 블록 파라미터를 사용하는 함수 블록으
할 때 결함 신호를 출력합니다. 로 만들 수 있습니다. 또한 이 함수 블록은 필요한

161
5 메모리 기능

만큼 자주 호출해 여러 컨베이어 벨트에 사용할 수 19 “블록 파라미터” 에는 같은 예가 래치로 프로


있습니다. 그래밍되어 있습니다. 이 장에 설명된 프로그램을
프로그래밍을 할 때 특수 문자를 포함하지 않는 블록 파라미터를 사용하는 함수 블록으로 만들 수
글로벌 심볼은 따옴표 없이 사용할 수 있습니다. 심 있습니다. 또한 이 함수 블록은 필요한 만큼 자주 호
볼에 특수 문자(예: 움라우트, 공백)가 포함된 경우 출해 여러 컨베이어 벨트에 사용할 수 있습니다.
따옴표를 붙여야 합니다. 컴파일된 블록의 경우 편
집기는 모든 글로벌 심볼에 따옴표를 붙여 표시합니 프로그래밍을 할 때 특수 문자를 포함하지 않는
다. 글로벌 심볼은 따옴표 없이 사용할 수 있습니다. 심

그림 5.12는 ‘LAD_Book’ 라이브러리의 ‘컨 볼에 특수 문자(예: 움라우트, 공백)가 포함된 경우


베이어 예’ 에 있는 컨베이어 제어 시스템의 프로그 따옴표를 붙여야 합니다. 컴파일된 블록의 경우 편
램(함수 블록 FC 11)을 그림으로 나타낸 것입니다. 집기는 모든 글로벌 심볼에 따옴표를 붙여 표시합니
이 라이브러리는 출판사의 웹 사이트에서 다운로드 다.
할 수 있습니다(8 페이지 참조).
그림 5.13은 ‘FBD_Book’ 라이브러리의 ‘컨

FBD용 프로그램 베이어 예’ 프로그램에 있는 컨베이어 제어 시스템

예는 함수 안에 있습니다. 이 함수를 프로그램 라 의 회로 다이어그램(함수 블록 FC 11)을 보여 줍니


이브러리 카탈로그 ‘FC 블록’ 에서 조직 블록 OB 다. 이 라이브러리는 출판사의 웹 사이트에서 다운
1으로 호출해 CPU에서 처리합니다. 로드할 수 있습니다(8 페이지 참조).

표 5.1 ‘컨베이어 벨트 컨트롤 시스템’ 예의 심볼 테이블


심볼 주소 데이터 형식 주석
Belt_control FC 11 FC 11 벨트 컨트롤 시스템
Basic_st I 0.0 BOOL 컨트롤러를 기본 상태로 설정
Man_on I 0.1 BOOL 컨베이어 벨트 모터 켬
/Stop I 0.2 BOOL 컨베이어 벨트 모터 중지(0일 때 활성화)
Start I 0.3 BOOL 컨베이어 벨트 시작
계속 I 0.4 BOOL 부품이 제거되었음을 승인
Light_barrier1 I 1.0 BOOL 컨베이어 벨트 1의 ‘벨트 종단' 센서 신호(광센서)
/Mfault1 I 2.0 BOOL 모터 보호 스위치 벨트 1, 0일 때 활성화
Readyload Q 4.0 BOOL 벨트에 새 부품 로드(로드 준비 완료)
Ready_rem Q 4.1 BOOL 벨트에서 부품 제거(제거 준비 완료)
Belt_mot1_on Q 5.0 BOOL 벨트 1의 벨트 모터 켬
로드 M 2.0 BOOL 부품 로딩 명령
제거 M 2.1 BOOL 부품 제거 명령
EM_Rem_N M 2.2 BOOL ‘제거’ 의 네거티브 에지용 에지 메모리 비트
EM_Rem_P M 2.3 BOOL ‘제거’ 의 포지티브 에지용 에지 메모리 비트
EM_Loa_N M 2.4 BOOL ‘로딩’ 의 네거티브 에지용 에지 메모리 비트
EM_Loa_P M 2.5 BOOL ‘로딩’ 의 포지티브 에지용 에지 메모리 비트

162
5.6 컨베이어 제어 시스템의 예

그림 5.12 샘플 컨베이어 제어 시스템(LAD)

163
5 메모리 기능

그림 5.13 샘플 컨베이어 제어 시스템(FBD)

164
6 이동 연산

6 이동 연산

LAD와 FBD 프로그래밍 언어는 다음과 같은 이동 산기 1로 정보를 이동하는 것을 ‘로딩’ , 누산기 1


연산을 제공합니다. 에서 메모리로 정보를 이동하는 것을 ‘전송’ 이라
Z MOVE 연산 박스 고 부릅니다. MOVE 연산 박스는 2개의 전송 경로를
기본 데이터 형식의 피연산자와 변수를 복사합 모두 갖고 있습니다. 입력 IN에 있는 정보를 누산기
니다. 1로 이동(로딩)한 후 곧바로 누산기 1에서 출력 위
치의 피연산자로 이 정보를 이동(전송)합니다.
Z SFC 20 BLKMOV
데이터 영역을 복사합니다.
Z SFC 21 FILL
데이터 영역을 채웁니다. 6.2 MOVE 연산 박스
Z SFC 81 UBLKMOV
인터럽트 불가 데이터 영역을 복사합니다. 6.2.1 MOVE 연산 박스 처리

Z SFC 83 READ_DBL
표시
데이터 영역을 로드 메모리에서 읽어 옵니다.
MOVE 연산 박스는 활성화 입력 EN과 활성화 출
Z SFC 84 WRIT_DBL
력 ENO와 더불어 1개의 입력 IN과 1개의 출력 OUT
데이터 영역을 로드 메모리에 씁니다.
을 갖고 있습니다. 입력 IN과 출력 OUT에 BOOL을
SFC는 시스템 함수 블록 프로그램의 표준 라이브 제외한 모든 기본 데이터 형식의 디지털 피연산자와
러리인 표준 라이브러리에서 가져온 시스템 함수입 디지털 변수를 적용할 수 있습니다. 입력 IN과 출력
니다. OUT의 변수는 서로 다른 데이터 형식을 가질 수 있
습니다.

데이터 형식의 비트에 대한 자세한 설명은


6.1 일반 3.5 “변수, 상수 및 데이터 형식” 을 참조하십시오.

이동 연산은 시스템 메모리, 사용자 메모리, 모듈 증분 프로그래밍의 경우 프로그램 라이브러리 카


의 사용자 데이터 영역 간에 정보를 복사하는 데 사 탈로그의 ‘이동’ 아래에 MOVE 연산 박스가 있습
용됩니다(그림 6.1 참조). 정보는 중간 저장소 기능 니다. 프로그램 라이브러리 카탈로그를 보려면 보기
을 하는 CPU 내부 레지스터를 통해 전송됩니다. 이 → 개요를 선택하고 [Ctrl-K]를 누르거나 삽입 → 프
레지스터를 누산기 1이라 부릅니다. 메모리에서 누 로그램 구성요소를 선택하십시오.

165
6 이동 연산

그림 6.1 로딩 및 전송용 메모리 영역

부터 출력의 피연산자 너비에 맞는 부분만큼만 이동


시킵니다.
그림 6.2는 이를 그림으로 보여 줍니다. 입력에서
바이트 또는 워드를 오른쪽 정렬하여 누산기 1로 로
딩한 다음 나머지 부분을 0으로 채웁니다. 출력
OUT에 있는 바이트 또는 워드를 오른쪽 정렬하여
누산기 1에서 제거합니다.

함수
MOVE 연산 박스는 입력 IN의 피연산자 정보를 출
다양한 피연산자 너비 력 OUT의 피연산자로 이동합니다. MOVE 연산 박
MOVE 연산 박스의 입력 및 출력에 있는 피연산 스는 활성화 입력이 ‘1’ 또는 사용 중이 아닌 경
자 너비는 바이트, 워드, 더블 워드 등으로 다양할 우와 마스터 제어 릴레이(MCR)가 작동 중이 아닌
수 있습니다. 입력의 피연산자가 출력의 피연산자 경우에만 정보를 이동합니다.
보다 ‘더 작은’ 경우 입력의 피연산자를 오른쪽 EN = ‘1’ 이고 MCR이 작동된 경우 출력 OUT
정렬시켜 출력의 피연산자 쪽으로 이동시킨 후 왼쪽 에 0이 씌어집니다. 활성화 입력이 ‘0’ 인 경우 출
을 0으로 채웁니다. 입력의 피연산자가 출력의 피연 력 OUT의 피연산자는 영향을 받지 않습니다.
산자보다 ‘더 큰’ 경우 입력의 피연산자의 오른쪽 MOVE는 오류를 보고하지 않습니다.

166
6.2 MOVE 연산 박스

그림 6.2 다양한 너비의 피연산자 이동

IF EN == ‘1’ 또는 연결되지 않은 경우 Rung에 MOVE 연산 박스 사용(LAD)


THEN ELSE 입력 EN 이전과 출력 ENO 다음에 접점을 직렬 및
ENO := ‘1’ 병렬로 배열할 수 있습니다.
IF MCR이 활성화된 경우
MOVE 연산 박스는 왼쪽 파워 레일에 직접 연결
THEN ELSE
된 분기 내에 위치해야 합니다. 이 분기는 입력 EN
OUT := 0 OUT := IN ENO := ‘0’
앞에 접점을 가질 수 있으며 최상위 분기가 아니어
도 됩니다. 왼쪽 파워 레일에 직접 연결하면 MOVE

연산 박스를 병렬로 연결할 수 있습니다. 연산 박스
입력 워드 IW 0의 내용이 메모리 워드 MW 60으
를 병렬로 연결할 때는 Rung을 종결시키기 위한 코
로 이동됩니다.
일이 필요합니다. 오류 평가를 제공하지 않는 경우
코일에 임시 로컬 데이터 비트와 같은 ‘임시’ 피
연산자를 할당합니다.
MOVE 연산 박스를 직렬로 연결할 수도 있습니
다. 직렬로 연결하면 선행 연산 박스의 ENO 출력이
후속 연산 박스의 EN 입력으로 연결됩니다.
1개의 Rung 안에 여러 개의 MOVE 연산 박스를
정렬한 경우(왼쪽 파워 레일에 병렬로, 그 다음에는
계속 직렬로 연결) 먼저 최상위 분기에 있는 연산 박
스부터 왼쪽에서 오른쪽 순으로 처리합니다. 그런
다음 병렬 분기에 있는 연산 박스를 왼쪽에서 오른
쪽 순으로 처리하는 식으로 처리가 계속됩니다.

167
6 이동 연산

이동 연산의 예는 ‘LAD_Book’ 라이브러리의 S7-300이 설치된 모든 CPU와 S7-400이 설치된


‘기본 함수’ 프로그램(FB 106)을 참조하십시오. 신형 CPU는 출력 바이트가 출력 모듈이 아닌 경우
이 라이브러리는 출판사의 웹 사이트에서 다운로드 프로세스 이미지에서 로딩하거나 출력의 프로세스
할 수 있습니다(8 페이지 참조). 이미지로 전송할 수 있습니다.

논리 회로에 MOVE 연산 박스 사용(FBD) I/O에서 이동


MOVE 연산 박스를 특정 조건에 따라 처리하고 싶 PIB n 주변 입력장치 바이트 로딩
다면 입력 EN 앞에 이진 논리 회로를 프로그래밍하 PIW n 주변 입력장치 워드 로딩
면 됩니다. 출력 ENO를 다른 함수의 이진 입력과 연 PID n 주변 입력장치 더블 워드 전송
결시킬 수 있습니다. 예를 들어, MOVE 연산 박스를 PQB n 주변 입력장치 바이트로 전송
직렬로 배열하면 선행 연산 박스의 출력 ENO를 후 PQW n 주변 출력장치 워드로 전송
속 연산 박스의 입력 EN에 연결시킬 수 있습니다. PQD n 주변 장치로 출력 더블 워드로 전송
EN과 ENO를 연결시킬 필요는 없습니다. I/O 영역 내에서 이동할 때 이동 방향에 따라 다른
이동 연산의 예는 ‘LAD_Book’ 라이브러리의 피연산자에 액세스할 수 있습니다. MOVE 연산 박
‘기본 함수’ 프로그램(FB 106)을 참조하십시오. 스의 IN 입력에 I/O 입력(PI)을, OUT 출력에 I/O 출
이 라이브러리는 출판사의 웹 사이트에서 다운로드 력(PQ)을 지정합니다.
할 수 있습니다(8 페이지 참조). I/O에서 메모리로 이동(로딩)할 때는 입력 모듈이
주변 입력장치(PI)로 액세스됩니다. 사용 가능한 모
듈만 주소를 지정할 수 있습니다. I/O 모듈에서 직접
6.2.2 피연산자 이동
로딩하는 경우 동일한 주소를 가진 모듈의 입력에서
이 장에 설명된 피연산자뿐만 아니라 타이머나 카 로딩할 때와 다른 값이 이동될 수 있습니다. CPU가
운터 값도 이동할 수 있습니다(7 “타이머” 및 프로세스 이미지를 업데이트했을 때 입력의 신호 상
8 “카운터” 참조). 데이터 피연산자 사용에 대한 설 태가 프로그램 사이클 시작 시점의 값과 일치하는
명은 18.2 “데이터 블록(DB)의 기능” 를 참조하십 경우 I/O 모듈에서 직접 로딩한 값이 현재 값이 됩니
시오. 다.
주변 출력장치(PQ)는 I/O로 전송하는 데 사용됩
입력 이동 니다. I/O 모듈이 사용 중인 주소만 액세스가 가능합
IB n 입력 바이트 이동 니다. 프로세스 이미지 테이블이 포함된 I/O 모듈로
IW n 입력 워드 이동 전송하면 전송과 동시에 해당 프로세스 이미지 출력
ID n 입력 더블 워드 이동 테이블이 업데이트되기 때문에 동일한 주소로 지정
S7-300이 설치된 모든 CPU와 S7-400이 설치된 된 출력과 주변 장치 출력 간에는 차이가 없습니다.
신형 CPU는 입력 바이트가 입력 모듈이 아닌 경우
프로세스 이미지에서 로딩하거나 입력의 프로세스 비트 메모리 이동
이미지로 전송할 수 있습니다. MB n 메모리 바이트 이동
MW n 메모리 워드 이동
출력 이동 MD n 메모리 더블 워드 이동
QB n 출력 바이트 이동 비트 메모리 전체가 CPU 내에 있기 때문에 비트
QW n 출력 워드 이동 메모리 주소 영역으로 이동하거나 비트 메모리 주소
QD n 출력 더블 워드 이동 영역에서 이동하는 것이 언제든지 가능합니다.

168
6.3 데이터 전송용 시스템 함수

CPU 유형에 따라 비트 메모리 영역의 크기에 차이 6.3 데이터 전송용 시스템 함수


가 있습니다.
데이터 전송에는 다음과 같은 시스템 함수를 사용
할 수 있습니다.
임시 로컬 데이터 이동
Z SFC 20 BLKMOV
LB n 로컬 데이터 바이트 이동
데이터 영역을 복사합니다.
LW n 로컬 데이터 워드 이동
LD n 로컬 데이터 더블 워드 이동 Z SFC 21 FILL
데이터 영역을 채웁니다.
언제든지 L 스택에서 이동하거나 L 스택으로 이
동할 수 있습니다. 자세한 내용은 18.1.5 “임시 로 Z SFC 81 UBLKMOV
컬 데이터” 를 참조하십시오. 인터럽트 불가 데이터 영역 복사.

Z SFC 83 READ_DBL
로드 메모리에서 읽어옵니다.
6.2.3 상수 이동
Z SFC 84 WRIT_DBL
MOVE 연산 박스의 입력 IN에 한해 상수 값을 지
로드 메모리에 씁니다.
정할 수 있습니다.

SFC 20, 21 및 81의 ANY 파라미터


기본 데이터 형식의 상수 이동
이 시스템 함수는 각각 2개의 데이터 형식 ANY 파
고정 값, 즉 상수를 피연산자로 전송할 수 있습니 라미터를 갖고 있습니다(표 6.1 참조). 원칙적으로
다. 명확성을 높이기 위해 상수는 여러 가지 형식 중 모든 피연산자, 변수 또는 절대 주소가 포함된 영역
하나로 전송할 수 있습니다. 다양한 상수 형식에 대 을 연결할 수 있습니다.
한 설명은 3.5.4 “기본 데이터 형식” 을 참조하십
조합 데이터 형식의 변수를 사용하는 경우 ‘완
시오. 기본 데이터 형식의 상수는 모두 MOVE 연산
전한’ 변수여야 합니다. 변수의 구성요소(예: 개별
박스를 사용해 이동할 수 있습니다. 예:
필드 또는 구조 구성요소)는 변수로 사용할 수 없습
B#16#F1 2자리 16진수 이동 니다. 절대 주소가 포함된 영역을 정의하는 데 ANY
비교 포인터를 사용할 수 있습니다(6.3.1 “ANY 포인터”
참조).
-1000 INT 수 이동
5.0 REAL 수 이동
SFC 83 및 84의 ANY 파라미터
S5T#2s S5 타이머 이동
시스템 함수 SFC 83 READ_DBL과 SFC 84
TOD#8:30 실제 시간 이동
WRIT_DBL은 로드 메모리와 작업 메모리에 있는 데
이터 블록(DB) 간에 데이터를 전송합니다. 데이터
포인터 이동 블록(DB) 전체나 데이터 블록(DB)의 일부를 실제
포인터는 표준 블록에서 주소 계산에 사용되는 특 블록 파라미터 SRCBLK와 DSTBLK로 사용할 수 있
수한 형식의 상수입니다. MOVE 연산 박스를 사용 습니다. 심볼 주소 지정의 경우 한 데이터 블록(DB)
하여 피연산자에 이 포인터를 저장할 수 있습니다. 내에 존재하는 ‘완전한’ 변수만 허용됩니다. 개별
필드나 구조 구성요소는 사용할 수 없습니다. 절대
P#1.0 영역 내부 포인터 이동
주소가 포함된 영역을 지정하려면 ANY 포인터를 사
P#M2.1 영역 교차 포인터 이동 용합니다.

169
6 이동 연산

표 6.1 SFC 20, 21 및 81의 파라미터


SFC 파라미터 선언 데이터 형식 내용, 설명
20 SRCBLK INPUT ANY 복사할 데이터가 있는 소스 영역
RET_VAL RETURN INT 오류 정보
DSTBLK OUTPUT ANY 데이터를 복사해 넣을 대상
21 BVAL INPUT ANY 복사할 소스 영역
RET_VAL RETURN INT 오류 정보
BLK OUTPUT ANY 소스 영역을 복사해 넣을 대상(다중 복사 포함)
81 SRCBLK INPUT ANY 복사할 데이터가 있는 소스 영역
RET_VAL RETURN INT 오류 정보
DSTBLK OUTPUT ANY 데이터를 복사해 넣을 대상

6.3.1 ANY 포인터 분식으로 대상 영역(파라미터 DSTBLK)에 복사합니


ANY 포인터는 절대 주소가 포함된 피연산자 영역 다.
을 ANY 유형의 블록 파라미터로 지정할 때 필요합 다음과 같은 실제 파라미터를 할당할 수 있습니
니다. ANY 포인터의 일반적인 형식은 다음과 같습 다.
니다.
Z 입력(I), 출력(Q), 비트 메모리(M) 및 데이터 블
P#[데이터 블록(DB)]피연산자 유형 개수 록(DB)용 피연산자 영역의 변수. 글로벌 데이터
예: 블록(DB) 및 인스턴스 데이터 블록(DB)의 변수
P#M16.0 BYTE 8 가 이에 해당합니다.
MB 16에서 시작해 8 바이트 영역 Z 임시 로컬 데이터의 변수. 데이터 형식 ANY는
P#DB11.DBX30.0 INT 12 특수 상황에 한해 사용합니다.
DBB 30에서 시작해 DB 11 내의 12 워드 영역 Z 절대 주소가 포함된 데이터 영역. ANY 포인터
P#I18.0 WORD 1 지정이 필요합니다.
입력 워드 IW 18 SFC 20은 타이머나 카운터 복사, 모듈(피연산자
P#I1.0 BOOL 1 영역 P)에서 혹은 모듈로 정보 복사, 시스템 데이터
입력 I 1.0 블록(SDB) 복사에는 사용할 수 없습니다.
ANY 포인터의 피연산자 주소는 항상 비트 주소여 입력 및 출력의 경우 주소가 실제로 입력 또는 출
야 합니다. 력 모듈을 참조하는지 여부에 관계 없이 지정된 영
변수를 선언하지 않은 데이터 영역에 액세스할 때 역이 복사됩니다. CPU에 SFC 83 READ_DBL이 없
는 상수 ANY 포인터를 지정할 수 있습니다. 원칙적 는 경우 로드 메모리에 있는 데이터 블록(DB)의 변
으로 ANY 파라미터에 상수나 피연산자를 할당할 수 수나 영역을 소스 영역으로 지정할 수 있습니다.
있습니다. 예를 들어, 'P#I1.0 BOOL 1'은 ‘I 1.0’ 소스 영역과 대상 영역은 중첩되면 안됩니다. 소
이나 관련 심볼 주소와 똑같습니다. 스 영역과 대상 영역의 길이가 다른 경우 두 영역 중
더 짧은 쪽의 길이까지만 전송됩니다.
6.3.2 데이터 영역 복사 예(그림 6.3, 네트워크 4): 메모리 바이트 MB 64
시스템 함수 SFC 20 BLKMOV는 소스 영역의 내 부터 시작해 16 바이트가 DBB 0에서 시작되는 데이
용(파라미터 SLCBLK)을 오름차순 주소 방향, 즉 증 터 블록(DB) 124에 복사됩니다.

170
6.3 데이터 전송용 시스템 함수

6.3.3 인터럽트 불가 데이터 영역 복사 Z 절대 주소가 포함된 데이터 영역. ANY 포인터


시스템 함수 SFC 81 UBLKMOV는 소스 영역의 내 지정이 필요합니다.
용(파라미터 SRCBLK)을 오름차순 주소 방향, 즉 증 Z ANY 데이터 형식의 임시 로컬 데이터의 변수.
분식으로 대상 영역(파라미터 DSTBLK)에 복사합니 특수 상황에 한해 사용합니다.
다. 이 복사 함수는 인터럽트가 불가능하기 때문에
SFC 21은 타이머나 카운터 복사, 모듈(피연산자
인터럽트에 대한 응답 시간이 증가할 수 있습니다.
영역 P)에서 혹은 모듈로의 정보 복사, 시스템 데이
최대 512 바이트까지 복사할 수 있습니다.
터 블록(SDB) 복사에는 사용할 수 없습니다.
다음과 같은 실제 파라미터를 할당할 수 있습니
입력 및 출력의 경우 주소가 실제로 입력 또는 출
다.
력 모듈을 참조하는지 여부에 관계 없이 지정된 영
Z 입력(I), 출력(Q), 비트 메모리(M) 및 데이터 블 역이 복사됩니다.
록(DB)용 피연산자 영역의 변수. 글로벌 데이터
소스 영역과 대상 영역은 중첩되면 안됩니다. 대
블록(DB)이나 인스턴스 데이터 블록(DB)의 변
상 영역은 항상 영역 전체가 덮어쓰기 되어야 합니
수가 이에 해당합니다.
다. 소스 영역이 대상 영역보다 긴 경우나 대상 영역
Z 임시 로컬 데이터의 변수. 데이터 형식 ANY는 의 길이가 소스 영역 길이의 정수 배수가 아닌 경우
특수 상황에 한해 사용합니다. 에도 마찬가지입니다.
Z 절대 주소가 포함된 데이터 영역. ANY 포인터
예(그림 6.3, 네트워크 5): 메모리 바이트 MB 80
지정이 필요합니다.
의 내용이 DBB 16에서 시작되는 데이터 블록(DB)
SFC 81은 타이머나 카운터 복사, 모듈(피연산자 124에 16회 복사됩니다.
영역 P)에서 혹은 모듈로의 정보 복사, 시스템 데이
터 블록(DB)(키워드 링크 안 됨으로 프로그래밍된
6.3.5 로드 메모리에서 읽기
데이터 블록(DB)) 복사에는 사용할 수 없습니다.
시스템 함수 SFC 83 READ_DBL은 로드 메모리
입력 및 출력의 경우 주소가 실제로 입력 또는 출
에 있는 데이터 블록(DB)에서 데이터를 읽어와 작업
력 모듈을 참조하는지 여부에 관계 없이 지정된 영
메모리에 있는 데이터 블록(DB)에 이 데이터를 씁니
역이 복사됩니다.
다. 읽어온 데이터 블록(DB)의 내용은 바뀌지 않습
소스 영역과 대상 영역은 중첩되면 안됩니다. 니다. 블록 파라미터는 표 6.2에 설명되어 있습니
소스 영역과 대상 영역의 길이가 다른 경우 두 영 다.
역 중 더 짧은 쪽의 길이까지만 전송됩니다.
시스템 함수 SFC 83 READ_DBL은 비동기식 모
드로 실행됩니다. 신호 상태 ‘1’ 로 파라미터 REQ
6.3.4 데이터 영역 채우기 에 읽기 프로세스를 트리거합니다. BUSY 파라미터
시스템 함수 SFC 21 FILL은 메모리 영역(대상 영 가 신호 상태 ‘0’ 으로 돌아가면 읽고 쓴 데이터
역)을 모두 덮어쓰기하는 데 필요한 횟수만큼 지정 영역에만 다시 액세스할 수 있습니다.
된 값(소스 영역)을 대상 영역에 복사합니다. 전송은 데이터 블록(DB)은 CPU의 사용자 메모리에 보통
오름차순 주소 방향, 즉 증분식으로 실행됩니다. 다 두 번 존재하게 됩니다. 한 번은 로드 메모리에, 또
음과 같은 실제 파라미터를 할당할 수 있습니다. 한 번은 프로세스의 일부로 작업 메모리에 존재하게
Z 입력(I), 출력(Q), 비트 메모리(M) 및 데이터 블 됩니다. 데이터 블록(DB)이 링크 안 됨 특성을 가진
록(DB)용 피연산자 영역의 변수. 글로벌 데이터 경우 로드 메모리에만 존재합니다(그림 6.4 참조).
블록(DB) 및 인스턴스 데이터 블록(DB)의 변수 SFC 83 READ_DBL은 로드 메모리에서 값을 읽기
가 이에 해당합니다. 만 합니다. 데이터 피연산자의 초기값은 로드 메모

171
6 이동 연산

그림 6.3 SFC 20 BLKMOV 및 SFC 21 FILL 예

리에 존재하며 작업 메모리의 실제 값과 다를 수 있 지 바이트는 바뀌지 않습니다. 소스 영역이 대상 영


습니다(2.6.5 “블록 처리” 의 ‘데이터 블록 오프 역보다 큰 경우 대상 영역의 크기만큼 모두 쓰여지
라인/온라인’ 참조). 고 소스 영역의 나머지 바이트는 무시됩니다.
데이터 블록(DB) 전체(예: DB 100, ‘Recipe
1’ ), 데이터 블록(DB)의 변수 또는 절대 주소가 포
함된 데이터 영역을 파라미터 SRCBLK와 DSTBLK 6.3.6 로드 메모리에 쓰기
에서 ANY 포인터(예: P#DB100.DBX16.0 BYTE 시스템 함수 SFC 84 WRIT_DBL은 작업 메모리에
64)로 지정할 수 있습니다. 있는 데이터 블록(DB)에서 데이터를 읽어와 로드 메
소스 영역이 대상 영역보다 작은 경우 소스 영역 모리에 있는 데이터 블록(DB)에 이 데이터를 씁니
전체가 대상 영역에 씌어집니다. 대상 영역의 나머 다. 읽어온 데이터 블록(DB)의 내용은 바뀌지 않습

172
6.3 데이터 전송용 시스템 함수

니다. 블록 파라미터는 표 6.2에 설명되어 있습니 데이터 블록(DB) 전체(예: DB 200, ‘Archive
다. 1’ ), 데이터 블록(DB)의 변수 또는 절대 주소가 포
함된 데이터 영역을 파라미터 SRCBLK와 DSTBLK
시스템 함수 SFC 84 WRIT_DBL은 비동기식 모드
에서 ANY 포인터(예: P#DB200.DBX0.0 WORD 4)
로 실행됩니다. 신호 상태 ‘1’ 로 파라미터 REQ
로 지정할 수 있습니다.
에 읽기 프로세스를 트리거합니다. BUSY 파라미터
가 신호 상태 ‘0’ 으로 돌아가면 읽고 쓴 데이터 소스 영역이 대상 영역보다 작은 경우 소스 영역
영역에만 다시 액세스할 수 있습니다. 전체가 대상 영역에 씌어집니다. 대상 영역의 나머
지 바이트는 바뀌지 않습니다. 소스 영역이 대상 영
데이터 블록(DB)은 CPU의 사용자 메모리에 보통
역보다 큰 경우 대상 영역의 크기만큼 모두 쓰여지
두 번 존재하게 됩니다. 한 번은 로드 메모리에, 또
고 소스 영역의 나머지 바이트는 무시됩니다.
한 번은 프로세스의 일부로 작업 메모리에 존재하게
됩니다. 데이터 블록(DB)이 링크 안 됨 특성을 가진 주의: 초기값이 변경되어 로드 메모리의 데이터
경우 로드 메모리에만 존재합니다(그림 6.4 참조). 블록(DB)에 쓰기를 하는 경우 사용자 프로그램의 검
SFC 84 WRIT_DBL은 작업 메모리에서 값을 읽기만 사 합계가 변경됩니다.
합니다. 데이터 피연산자의 초기값은 작업 메모리 로드 메모리는 물리적인 이유 때문에 보통 쓰기
에 존재하며 로드 메모리의 실제 값과 다를 수 있습 연산 횟수를 제한합니다. 너무 자주 쓰기(예: 주기적
니다(2.6.5 “블록 처리” 의 ‘데이터 블록 오프라 쓰기)를 하면 로드 메모리의 서비스 수명이 감소합
인/온라인’ 참조). 니다.

표 6.2 SFC 83 및 84의 파라미터


SFC 파라미터 선언 데이터 형식 내용, 설명
83 REQ INPUT BOOL 신호 상태 ‘1’ 로 읽기를 트리거합니다.
SRCBLK INPUT ANY 로드 메모리에서 읽어 올 데이터 영역
RET_VAL RETURN INT 오류 정보
BUSY OUTPUT BOOL 신호 상태 ‘1’ 표시. 읽기가 아직 끝나지 않았습니다.
DSTBLK OUTPUT ANY 작업 메모리에 쓰여질 데이터 영역
84 REQ INPUT BOOL 신호 상태 ‘1’ 로 쓰기를 트리거합니다.
SRCBLK INPUT ANY 작업 메모리에서 읽어 올 데이터 영역
RET_VAL RETURN INT 오류 정보
BUSY OUTPUT BOOL 신호 상태 ‘1’ 표시. 쓰기가 아직 끝나지 않았습니다.
DSTBLK OUTPUT ANY 로드 메모리에 쓸 데이터 영역

173
6 이동 연산

稊嵢勾岞愓͑沫獞庂͑斲殯穞櫲͑旣昷夢͑‫׎‬沂愞‫͑׏‬塶決瘶͑
挚嵣汆͑ʹ΁Ά汞͑斲殯沖͑彚微庲櫖͑奖͑憎͑浺沲穯城埪͑͟
溏͑͝嵢姢͑彚微庲櫖͑欮洊穞冒͑浺沲穞彶͑͝‫׎‬熞庲歆͑分凊͑
沎垚‫͑׏‬塶決瘶垚͑稊嵢勾岮͑沗壟櫖͑斲殯夞垚͑沗櫋͑
彚微庲櫖͑浺沲穯城埪͟

稊嵢勾岞愓͑沫獞櫖昢͑廇畲͑橎͑央͑暓昷汊͑斲殯穞櫲͑
稊嵢勾岞愓͑沫獞櫖昢͑廇畲͑橎͑央 ͑暓昷汊͑斲殯穞櫲͑
旣昷夢͑塶決瘶͑挚嵣汆͑ʹ΁Ά汞͑嵢姢͑彚微庲櫖廒͑
浺沲穯城埪͑͟沗櫋͑彚微庲͑击儊汊͑焮滆穞滆͑橐枻城埪͟

΄ͷʹ͑ͩͣ͑ʹ΃ͶͲΐ͵ͳͽ汊͑斲殯穞櫲͑旣昷夢͑塶決瘶͑挚嵣汆͑
嵢姢͑彚微庲櫖͑浺沲穞彶͑͝廇畲͑橎͑央
嵢姢͑彚微庲櫖͑浺沲穞彶͑͝ 廇畲͑橎͑央͑暓昷決͑
͑暓昷決͑
筢昷筚夞滆͑橐汆͑凃殶櫖垚͑沗櫋͑彚微庲櫖壊͑
浺沲穯城埪͑͟沗櫋͑彚微庲櫖͑浺沲穞垚͑塶決瘶͑挚嵣汆͑
旎͑塶決瘶͑挚嵣汞͑旣昷͑匶渆決͑夞垚͑癢稒廅沋城埪͟

΄ͷʹ͑ͣͣ͑ʹ΃ͶͲ΅ΐ͵ͳ͑嬖垚͑΄ͷʹ͑ͩͦ͑ʹ΃ͶͲΐ͵ͳ庂͑
斲殯穞櫲͑旣昷夢͑塶決瘶͑挚嵣汆͑ʹ΁Ά汞͑沗櫋͑
彚微庲櫖廒͑浺沲穯城埪͟

그림 6.4 사용자 메모리의 데이터 블록(DB)

174
7 타이머

7 타이머

타이머를 사용하면 소프트웨어로 대기 및 모니터 타이머 연산 박스는 함수 입력 및 함수 출력 형식


링 시간, 간격 측정, 펄스 생성 등의 시간 순서를 결 으로 타이머 연산을 일관되게 표시합니다(그림 7.1
정할 수 있습니다. 참조). 연산 박스 위에는 타이머의 절대 또는 심볼
다음과 같은 유형의 타이머를 사용할 수 있습니 주소가 있습니다. 타이머 안에 있는 헤더는 타이머
다. 모드를 나타냅니다. S_PULSE란 ‘펄스 타이머 시
작’ 을 의미합니다. S 및 TW 입력에 대한 할당은 필
Z 펄스 타이머
수지만 다른 입력과 출력에 대한 할당은 선택입니
Z 확장 펄스 타이머 다.
Z 온-딜레이 타이머
Z 정전 유지 온-딜레이 타이머
Z 오프-딜레이 타이머
타이머는 완전한 연산 박스 형식으로 프로그래밍
하거나 개별 프로그램 구성요소를 사용해 프로그래
밍할 수 있습니다. 타이머를 시작할 때 원하는 타이
머 유형과 타이머 지속 시간을 지정합니다. 나중에
타이머를 재설정할 수도 있습니다. 타이머의 상태(
‘타이머 실행 중’ )를 쿼리하거나 현재 시간 값을
쿼리하여 타이머를 검사할 수 있습니다. 시간 값은
이진수나 BCD 코드 형식으로 타이머에서 가져올 수
있습니다. 이름 데이터 형식 설명
S BOOL 스타트 입력
TV S5TIME 지속 시간 지정
7.1 타이머 프로그래밍 R BOOL 리셋 입력
BI WORD 현재 이진 시간 값
BCD WORD 현재 BCD 시간 값
7.1.1 일반적인 타이머 표시
RP BOOL 타이머 상태
타이머에서 다음과 같은 작업을 수행할 수 있습니
그림 7.1 연산 박스로 표시된 타이머
다.
Z 지정된 시간에 타이머를 시작합니다.
LAD의 개별 프로그램 구성요소
Z 타이머를 재설정합니다.
개별 프로그램 구성요소를 사용해 타이머를 프로
Z (이진) 시간 상태를 검사합니다.
그래밍할 수도 있습니다(그림 7.2 참조). 이 경우 코
Z 이진 (디지털) 타이머 값을 검사합니다. 일을 통해 타이머가 시작됩니다. 코일 안에 타이머
Z BCD (디지털) 타이머 값을 검사합니다. 모드(SP = 펄스 타이머 시작)가 있고 코일 아래에 타

175
7 타이머

그림 7.2 타이머의 개별 구성요소(LAD)

이머 지속 시간을 정의하는 S5TIME 형식의 값이 있 7.1.2 타이머 시작


습니다. 타이머를 재설정하려면 리셋 코일을 사용 스타트 입력 또는 스타트 코일/연산 박스 앞에서
하고, 타이머 상태를 검사하려면 NO 또는 NC 접점 논리 연산 결과(RLO)가 변경되면 타이머가 시작됩
을 사용합니다. MOVE 연산 박스를 이용해 현재 시 니다. 타이머를 시작하려면 이러한 신호 변화가 반
간 값을 이진수로 워드 피연산자에 저장할 수 있습 드시 필요합니다. 오프-딜레이 타이머의 경우, RLO
니다. 가 ‘1’ 에서 ‘0’ 으로 변경되어야 합니다. 그 외
다른 모든 타이머는 RLO가 ‘0’ 에서 ‘1’ 로 변
경되었을 때 시작됩니다.
FBD의 개별 프로그램 구성요소
다섯 가지 모드 중 하나로 타이머를 시작할 수 있
개별 프로그램 구성요소를 사용해 타이머를 프로 습니다(그림 7.4 참조). 하지만 특정 타이머를 한 가
그래밍할 수도 있습니다(그림 7.3 참조). 이 경우 타 지 이상의 모드로 사용할 이유가 없습니다.
이머 모드(SP = 펄스 타이머 시작)가 포함된 간단한
연산 박스를 통해 타이머가 시작됩니다. 연산 박스
아래에 타이머 지속 시간을 정의하는 S5TIME 형식 7.1.3 지속 시간 지정
의 값이 있습니다. 타이머를 재설정하려면 리셋 연 타이머는 코일/연산 박스 아래의 값이나 입력 TV

산 박스를 사용합니다. 타이머 상태를 직접 스캔하 의 값을 지속 시간으로 사용합니다. 지속 시간은 상

거나 이진 입력 중 하나를 이용해 부정 형식으로 스 수, 워드 피연산자 또는 S5TIME 유형의 변수로 지정

캔할 수 있습니다. MOVE 연산 박스를 이용해 현재 할 수 있습니다.

시간 값을 이진수로 워드 피연산자에 저장할 수 있


지속 시간을 상수로 지정
습니다.
S5TIME#10s 지속 시간 10초
증분 프로그래밍의 경우 프로그램 라이브러리 카 S5T#1m10ms 지속 시간 1분 + 10밀리초
탈로그의 ‘타이머’ 아래에 타이머가 있습니다. 프 지속 시간은 시, 분, 초, 밀리초 단위로 지정됩니
로그램 라이브러리 카탈로그를 보려면보기 → 개요 다. 지속 시간은 S5TIME#10ms에서
를 선택하고 [Ctrl-K]를 누르거나 삽입→ 프로그램 구 S5TIME#2h46min30s 사이(9990s에 해당)로 지정
성요소를 선택하십시오. 합니다. 중간 값은 10ms 단위로 반내림합니다.

176
7.1 타이머 프로그래밍

그림 7.3 타이머의 개별 구성요소(FBD)

S5TIME# 또는 S5T#을 사용하여 지속 시간을 상수 지속 시간 = 2001hex 시간 기준 1s


로 지정할 수 있습니다. 지속 시간 = 1010hex 시간 기준 100ms
지속 시간 = 0100hex 시간 기준 10ms
지속 시간을 피연산자 또는 변수로 지정
이 예에서는 마지막 형식이 가장 적합합니다.
MW 20 지속 시간이 포함된
워드 피연산자 타이머를 시작할 때 CPU는 프로그래밍된 시간
‘Time1’ S5TIME 데이터 형식의 변수 값을 사용합니다. 운영체제는 고정된 간격으로, 사
워드 피연산자 형식의 값은 S5TIME 데이터 형식 용자 프로그램과는 독립적으로 타이머를 업데이트
과 일치해야 합니다( ‘시간 값의 지속 시간 구조’ 합니다. 다시 말해 시간 기준에 따라 모든 활성 타이
참조). 머의 시간 값을 감소시킨다는 뜻입니다. 타이머가 0
이 되면 실행이 완료된 것입니다. 실행이 완료되면
CPU는 타이머 상태를 설정합니다. 타이머 모드, 즉
시간 값의 지속 시간 구조
‘유형’ 에 따라 신호 상태를 ‘0’ 또는 ‘1’ 로
지속 시간은 내부적으로 시간 값과 시간 기준으로
설정하고 타이머가 다시 시작될 때까지 모든 동작을
구성됩니다. 즉, 지속 시간 = 시간 값 시간 기준입니
중단시킵니다. 타이머를 시작할 때 지속 시간을 0(0
다. 지속 시간은 타이머가 활성 상태( ‘타이머 실행
ms 또는 W#16#0000)으로 지정한 경우 CPU가 타
중’ )로 있는 시간을 말합니다. 시간 값은 타이머가
이머를 처리하고 시간이 완전히 경과된 것을 인식할
실행되는 사이클의 수를 말합니다. 시간 기준은
때까지 타이머가 계속 활성 상태로 남습니다.
CPU가 시간 값을 변경할 간격을 정의합니다(그
림 7.5 참조). 타이머는 프로그램 스캔과 비동기식으로 업데이
지속 시간을 바로 워드 피연산자 형식으로 지정할 트됩니다. 따라서 사이클 시작 시 시간 상태와 사이
수도 있습니다. 시간 기준이 작으면 작을수록 실제 클 종료 시 시간 상태가 다를 수 있습니다. 프로그램
지속 시간이 더 정확해 집니다. 예를 들어, 지속 시 의 단 한 지점에서, 제시된 순서대로 타이머를 사용
간을 1초로 하고 싶다면 다음 형식 중 하나로 지속 하면(아래 참조) 비동기식 업데이트가 오작동 발생
시간을 지정하면 됩니다. 을 방지할 수 있습니다.

177
7 타이머

그림 7.4 타이머의 동작 특성

그림 7.5 지속 시간의 비트 설명

7.1.4 타이머 재설정 7.1.5 타이머 검사


LAD:리셋 입력 또는 리셋 코일에 전력이 흐르면,
즉 RLO가 ‘1’ 이면 타이머가 재설정됩니다. 타이 타이머 상태 검사(LAD)
머가 재설정 상태를 유지하는 동안에는 NO 접점으 타이머 상태는 타이머 연산 박스의 출력 Q에서 확
로 스캔을 하면 ‘0’ 이 반환되고 NC 접점으로 스 인합니다. 또한 NO 접점(출력 Q에 해당)이나 NC 접
캔하면 ‘1’ 이 반환됩니다. 점을 이용하여 타이머 상태를 검사할 수 있습니다.
NO 접점이나 출력 Q를 이용한 타이머 검사는 타이
FBD:리셋 입력에 ‘1’ 이 존재하면 타이머가 재
머 유형에 따라 결과가 달라집니다(아래의 타이머
설정됩니다. 타이머가 재설정 상태를 유지하는 동
유형 설명 참조). 입력의 경우와 마찬가지로 NC 접
안에는 타이머 상태를 직접 스캔하면 ‘0’ 이 반환
점을 이용한 검사는 NO 접점을 이용한 검사와 정확
되고 부정 스캔하면 ‘1’ 이 반환됩니다.
히 반대되는 검사 결과를 출력합니다. 타이머 연산
타이머가 재설정되면 타이머와 시간 기준이 0으
박스에 반드시 출력 Q를 사용할 필요는 없습니다.
로 설정됩니다. 타이머 연산 박스의 R 입력은 연결
할 필요가 없습니다.
타이머 상태 검사(FBD)
타이머 상태는 타이머 연산 박스의 출력 Q에서 확
인합니다. 또한 이진 함수 입력(출력 Q에 해당)을 이

178
7.1 타이머 프로그래밍

용해 타이머 상태를 검사할 수 있습니다. 타이머 검 Z 타이머를 시작합니다.


사 결과는 타이머의 유형에 따라 달라집니다(아래 Z 타이머를 재설정합니다.
타이머 유형 설명 참조). 타이머 연산 박스에 반드시
Z 시간 값 또는 지속 시간을 검사합니다.
출력 Q를 사용할 필요는 없습니다.
Z 타이머 상태를 검사합니다.

시간 값 검사 프로그래밍을 할 때 불필요한 요소는 생략합니


다. 위의 순서를 그대로 따라 타이머가 시작과 ‘동
출력 BI와 BCD는 타이머의 시간 값을 이진(BI) 또
시에’ 재설정된 경우 타이머가 시작은 되지만 곧바
는 이진화 십진수(BCD) 형식으로 제공합니다. 이
로 재설정됩니다. 따라서 그 다음 타이머 검사에서
값은 검사 시점의 값입니다. 타이머가 활성인 경우
타이머가 시작되었다는 사실을 감지하지 못할 수 있
시간 값은 설정 값에서 0으로 카운트다운됩니다. 시
습니다.
간 값은 지정된 피연산자에 저장됩니다(MOVE 연산
박스를 이용해 전송). 타이머 연산 박스에 반드시 이
출력을 사용할 필요는 없습니다. 7.1.7 Rung에 타이머 연산 박스 사용(LAD)
스타트 입력과 리셋 입력 앞은 물론 출력 Q 다음
시간 값 직접 검사 에 접점을 직렬 및 병렬로 배열할 수 있습니다.
시간 값은 이진화 십진수로 표시할 수 있고 타이
타이머 연산 박스 자체는 T-분기 다음이나 왼쪽
머에서 이 형식으로 검색할 수 있습니다. 이 과정에
파워 레일과 직접 연결된 분기 안에 위치시킵니다.
서 시간 기준이 유실되고 ‘0’ 으로 바뀝니다. 검
이 분기는 스타트 입력 앞에 접점을 가질 수 있으며
색한 값은 INT 형식의 양수로 표시됩니다. 주의: 검
최상위 분기가 아니어도 됩니다.
사 대상은 지속 시간이 아니라 시간 값입니다. 또한
타이머의 표시 및 배열에 대한 더 많은 예를 보려
MOVE 연산 박스를 이용하여 시간 값을 직접 검사하
면 ‘LAD_Book’ 라이브러리의 ‘기본 함수’ 프
도록 프로그래밍할 수 있습니다.
로그램(FB 107)을 참조하십시오. 이 라이브러리는
출판사의 웹 사이트에서 다운로드할 수 있습니다
코드를 적용한 시간 값 검사
(8 페이지 참조).
또한 타이머에서 ‘코드’ 를 적용해 이진 시간
값을 검색할 있습니다. 시간 값과 시간 기준 모두 이
진화 십진수로 제공됩니다. BCD 값은 시간 값 지정 7.1.8 논리 회로에 타이머 연산 박스 사용
과 동일한 방식으로 구성됩니다(위 설명 참조). (FBD)
스타트 입력과 리셋 입력 앞은 물론 출력 Q 다음
에 이진 함수와 메모리 기능을 프로그래밍할 수 있
7.1.6 타이머 연산 순서 습니다.
타이머를 프로그래밍할 때 타이머에 모든 연산을 타이머 연산 박스와 타이머 시작 및 재설정을 위
다 포함시킬 필요는 없습니다. 특정 기능을 수행하 한 개별 구성요소 역시 T-분기 다음에 프로그래밍
는 데 필요한 연산만 포함시키면 됩니다. 보통 타이 할 수 있습니다.
머 시작과 타이머 설정 검사를 위한 연산은 기본적
타이머의 표시 및 배열에 대한 더 많은 예를 보려
으로 필요합니다.
면 ‘FBD_Book’ 라이브러리의 ‘기본 함수’ 프
이 장에서 설명한 대로 타이머가 작동하도록 하려 로그램(FB 107)을 참조하십시오. 이 라이브러리는
면 다음 순서에 따라 개별 프로그램 구성요소를 프 출판사의 웹 사이트에서 다운로드할 수 있습니다
로그래밍합니다. (8 페이지 참조).

179
7 타이머

7.2 펄스 타이머 조기에 인터럽트되지 않았다면 얼마나 더 오


래 실행되었을지 보여 줍니다.

펄스 타이머 시작

그림 7.6의 다이어그램은 타이머가 펄스 타이머 펄스 타이머 재설정


로 시작된 경우와 재설정된 경우 타이머의 특성을 펄스 시간의 재설정은 정적 효과를 가지며 타이머
보여 줍니다. 개별 구성요소를 프로그래밍할 때 시작보다 우선합니다(그림 7.6 참조).
7.1.6 “타이머 연산 순서” 의 순서(시작, 재설정, 검
사 순서)를 따른 경우 타이머가 이 다이어그램처럼 d 활성 타이머의 리셋 입력에서 신호 상태가
실행됩니다. ‘1’ 이면 해당 타이머를 재설정합니다. 그런
다음 출력 Q가 ‘0’ 이 됩니다. 시간 값과 시
a 타이머의 스타트 입력의 신호 상태가 ‘0’ 에
간 기준 역시 0으로 설정됩니다. 셋 입력의 신
서 ‘1’ 로 바뀐 경우, 즉 포지티브 엣지인 경
호 상태는 여전히 ‘1’ 인데 리셋 입력의 신
우 타이머가 시작됩니다. 스타트 입력의 신호
호 상태가 ‘1’ 에서 ‘0’ 으로 바뀌는 경우
상태가 ‘1’ 인 동안은 프로그래밍된 지속 시
타이머는 영향을 받지 않습니다.
간만큼 타이머가 실행됩니다. 타이머가 실행
되는 동안 출력 Q는 신호 상태 ‘1’ 을 출력 f 비활성 타이머의 리셋 입력에서 신호 상태가
합니다. ‘1’ 이면 전혀 영향을 주지 않습니다.

시작 값을 시작 지점으로 지정한 경우 시간 기 g 리셋 신호가 여전히 존재하는 상태에서 스타


준에 따라 시간 값을 0이 될 때까지 카운트다 트 입력의 신호 상태가 ‘0’ 에서 ‘1’ 로
운합니다.
바뀐 경우, 즉 포지티브 엣지인 경우 타이머가
s 시간이 완전히 경과되기 전에 타이머의 스타 시작되지만 곧바로 재설정됩니다(다이어그램
트 입력의 신호 상태가 ‘0’ 에서 ‘1’ 로 에 선으로 표시). 재설정 다음에 타이머 상태
바뀐 경우 타이머가 중지됩니다. 그런 다음 출 검사를 프로그래밍한 경우 타이머가 잠깐 시
력 Q가 ‘0’ 이 됩니다. 시간 값은 타이머가 작되어도 검사에 영향을 미치지 않습니다.

그림 7.6 펄스 타이머 시작 및 재설정 시 동작 특성

180
7.3 확장 펄스 타이머

7.3 확장 펄스 타이머 밍된 시간 값으로 재가동됩니다(타이머가


‘다시 트리거’ 됩니다). 타이머는 지정된 시
확장 펄스 타이머 시작 간이 경과하지 않더라도 몇 번이든 재가동될
수 있습니다.
그림 7.7의 다이어그램은 타이머가 시작된 후와
타이머가 재설정되었을 때 타이머의 동작 특성을 보
여 줍니다. 개별 구성요소를 프로그래밍할 때 확장 펄스 타이머 재설정
7.1.6 “타이머 연산 순서” 의 순서(시작, 재설정, 검 확장 펄스 타이머의 재설정은 정적 효과를 가지며
사 순서)를 따른 경우 타이머가 이 다이어그램처럼 타이머 시작보다 우선합니다(그림 7.7 참조).
실행됩니다.
fg 타이머가 실행 중인 상태에서 타이머 리셋 입
as 타이머의 스타트 입력의 신호 상태가 ‘0’ 에 력의 신호 상태가 ‘1’ 이 되면 해당 타이머
서 ‘1’ 로 바뀐 경우, 즉 포지티브 엣지인 경 를 재설정합니다. 타이머가 재설정되면 신호
우 타이머가 시작됩니다. 타이머는 스타트 입 상태 ‘1’ (타이머 상태)에 대한 검사는 검사
력의 신호 상태가 다시 ‘0’ 으로 바뀐다 해 결과 ‘0’ 을 반환합니다. 시간 값과 시간 기
도 프로그래밍된 지속 시간만큼 실행됩니다. 준 역시 0으로 재설정됩니다.
신호 상태 ‘1’ (타이머 상태)에 대한 검사는
h 비활성 타이머의 리셋 입력에서 신호 상태가
타이머가 실행되는 동안에는 검사 결과 ‘1’
‘1’ 이면 전혀 영향을 주지 않습니다.
을 반환합니다.
g 리셋 신호가 여전히 존재하는 상태에서 스타
시작 값을 시작 지점으로 지정한 경우 시간 기
트 입력의 신호 상태가 ‘0’ 에서 ‘1’ 로
준에 따라 0이 될 때까지 시간 값을 카운트다
바뀐 경우, 즉 포지티브 엣지인 경우 타이머가
운합니다.
시작되지만 곧바로 재설정됩니다(다이어그램
d 타이머가 실행 중인 상태에서 스타트 입력의 에 선으로 표시). 재설정 다음에 타이머 상태
신호 상태가 ‘0’ 에서 ‘1’ 로 바뀐 경우, 검사를 프로그래밍한 경우 타이머가 잠깐 시
즉 포지티브 엣지인 경우 타이머는 프로그래 작되어도 검사에 영향을 미치지 않습니다.

그림 7.7 확장 펄스 타이머 시작 및 재설정 시 동작 특성

181
7 타이머

7.4 온-딜레이 타이머 ‘1’ 을 반환합니다. 시간 값은 아직 남아있는


시간을 보여 줍니다.

온-딜레이 타이머 시작
온-딜레이 타이머 재설정
그림 7.8의 다이어그램은 타이머가 시작된 후와
타이머가 재설정되었을 때 타이머의 동작 특성을 보 온-딜레이 타이머의 재설정은 정적 효과를 가지
여 줍니다. 개별 구성요소를 프로그래밍할 때 며 타이머 시작보다 우선합니다(그림 7.8 참조).
7.1.6 “타이머 연산 순서” 의 순서(시작, 재설정, 검
df 리셋 입력에서 신호 상태가 ‘1’ 이면 타이
사 순서)를 따른 경우 타이머가 이 다이어그램처럼
머가 실행 중인지 여부에 관계 없이 해당 타이
실행됩니다.
머를 재설정합니다. 신호 상태 ‘1’ (타이머
a 타이머의 스타트 입력의 신호 상태가 ‘0’ 에 상태)에 대한 검사는 검사 결과 ‘0’ 을 반환

서 ‘1’ 로 바뀐 경우, 즉 포지티브 에지인 경 합니다. 타이머가 실행 중이 아니고 신호 상태


‘1’ 이 스타트 입력에 여전히 존재하는 경우
우 타이머가 시작됩니다. 타이머는 프로그래
에도 마찬가지입니다. 시간 값과 시간 기준 역
밍된 지속 시간 동안 실행됩니다. 지정된 시간
시 0으로 설정됩니다.
이 경과하고 신호 상태 ‘1’ 이 스타트 입력
에 여전히 존재하는 경우, 즉 온-딜레이인 경 스타트 입력에 신호 상태 ‘1’ 이 여전히 존
우 신호 상태 ‘1’ 에 대한 검사는 검사 결과 재하는 상태에서 리셋 입력의 신호 상태가
‘1’ 을 반환합니다. ‘1’ 에서 ‘0’ 으로 바뀌는 경우 타이머는
영향을 받지 않습니다.
시작 값을 시작 지점으로 지정한 경우 시간 기
준에 따라 0이 될 때까지 시간 값을 카운트다 g 리셋 신호가 존재하는 상태에서 스타트 입력
운합니다. 의 신호 상태가 ‘0’ 에서 ‘1’ 로 바뀐 경
우, 즉 포지티브 엣지인 경우 타이머가 시작되
s 타이머가 실행 중인 상태에서 스타트 입력의 지만 곧바로 재설정됩니다(다이어그램에 선
신호 상태가 ‘1’ 에서 ‘0’ 으로 바뀌면 타 으로 표시). 재설정 다음에 타이머 상태 검사
이머가 중지됩니다. 이 경우 신호 상태 ‘1’ 를 프로그래밍한 경우 타이머가 잠깐 시작되
(타이머 상태)에 대한 검사는 항상 검사 결과 어도 검사에 영향을 미치지 않습니다.

그림 7.8 온-딜레이 타이머 시작 및 재설정 시 동작 특성

182
7.5 정전 유지 온-딜레이 타이머

7.5 정전 유지 온-딜레이 타이머 즉 포지티브 엣지인 경우 타이머는 프로그래


밍된 시간 값으로 재가동됩니다(타이머가
정전 유지 온-딜레이 타이머 시작 ‘다시 트리거’ 됩니다). 타이머는 지정된 시
그림 7.9의 다이어그램은 타이머가 시작된 후와 간이 경과하지 않더라도 몇 번이든 재가동될
타이머가 재설정되었을 때 타이머의 동작 특성을 보 수 있습니다.
여 줍니다. 개별 구성요소를 프로그래밍할 때
7.1.6 “타이머 연산 순서” 의 순서(시작, 재설정, 검 정전 유지 온-딜레이 타이머 재설정
사 순서)를 따른 경우 타이머가 이 다이어그램처럼
정전 유지 온-딜레이 타이머의 재설정은 정적 효
실행됩니다.
과를 가지며 타이머 시작보다 우선합니다(그림 7.9
as 타이머의 스타트 입력의 신호 상태가 ‘0’ 에 참조).
서 ‘1’ 로 바뀐 경우, 즉 포지티브 엣지인 경
우 타이머가 시작됩니다. 타이머는 스타트 입 fg 리셋 입력에서 신호 상태가 ‘1’ 이면 스타
력의 신호 상태가 다시 ‘0’ 으로 바뀐다 해 트 입력의 신호 상태에 관계 없이 해당 타이머
도 프로그래밍된 지속 시간 동안 실행됩니다. 를 재설정합니다. 신호 상태 ‘1’ (타이머 상
시간이 완전히 경과하면 신호 상태 ‘1’ (타 태)에 대한 검사는 검사 결과 ‘0’ 을 반환합
이머 상태)에 대한 검사는 스타트 입력의 신호 니다. 시간 값과 시간 기준 역시 0으로 설정됩
상태에 관계 없이 검사 결과 ‘1’ 을 반환합 니다.
니다. 타이머가 재설정되기 전에는 스타트 입 h 리셋 신호가 존재하는 상태에서 스타트 입력
력의 신호 상태와 관계 없이 검사 결과 ‘0’ 의 신호 상태가 ‘0’ 에서 ‘1’ 로 바뀐 경
이 반환되지 않습니다. 시작 값을 시작 지점으 우, 즉 포지티브 엣지인 경우 타이머가 시작되
로 지정한 경우 시간 기준에 따라 0이 될 때까 지만 곧바로 재설정됩니다(다이어그램에 선
지 시간 값을 카운트다운합니다. 으로 표시). 재설정 다음에 타이머 상태 검사
d 타이머가 실행 중인 상태에서 스타트 입력의 를 프로그래밍한 경우 타이머가 잠깐 시작되
신호 상태가 ‘0’ 에서 ‘1’ 로 바뀐 경우, 어도 검사에 영향을 미치지 않습니다.

그림 7.9 정전 유지 온-딜레이 타이머 시작 및 재설정 시 동작 특성

183
7 타이머

7.6 오프-딜레이 타이머 니다. 스타트 입력에 네거티브 엣지가 있는 경


우에만 타이머가 재가동됩니다.

오프-딜레이 타이머 시작

그림 7.10의 다이어그램은 타이머가 시작된 후와 오프-딜레이 타이머 재설정

타이머가 재설정되었을 때 타이머의 동작 특성을 보 오프-딜레이 타이머의 재설정은 정적 효과를 가


여 줍니다. 개별 구성요소를 프로그래밍할 때 지며 타이머 시작보다 우선합니다(그림 7.10 참조).
7.1.6 “타이머 연산 순서” 의 순서(시작, 재설정, 검
f 타이머가 실행 중인 상태에서 타이머의 리셋
사 순서)를 따른 경우 타이머가 이 다이어그램처럼
입력에서 신호 상태가 ‘1’ 이면 해당 타이
실행됩니다.
머를 재설정합니다. 신호 상태 ‘1’ (타이머
ad 타이머의 스타트 입력의 신호 상태가 ‘1’ 에 상태)에 대한 검사 결과는 ‘0’ 이 됩니다. 시

서 ‘0’ 으로 바뀐 경우, 즉 네거티브 에지인 간 값과 시간 기준 역시 0으로 설정됩니다.

경우 타이머가 시작됩니다. 타이머는 프로그 gh 스타트 입력과 리셋 입력의 신호 상태가 ‘1’


래밍된 지속 시간 동안 실행됩니다. 신호 상태 이면 타이머의 이진 출력을 재설정합니다. 신
‘1’ (타이머 상태)에 대한 검사는 스타트 입 호 상태 ‘1’ (타이머 상태)에 대한 검사는 검
력의 신호 상태가 ‘1’ 이거나 타이머가 실 사 결과 ‘0’ 을 반환합니다. 리셋 입력의 신
행 중인 경우, 즉 오프-딜레이인 경우 검사 결 호 상태가 다시 ‘0’ 으로 바뀌면 타이머의
과 ‘1’ 을 반환합니다. 출력은 다시 ‘1’ 이 됩니다.

시작 값을 시작 지점으로 지정한 경우 시간 기 j 리셋 신호가 존재하는 상태에서 스타트 입력


준에 따라 0이 될 때까지 시간 값을 카운트다 의 신호 상태가 ‘1’ 에서 ‘0’ 으로 바뀐

운합니다. 경우, 즉 네거티브 엣지인 경우 타이머가 시작


되지만 곧바로 재설정됩니다(다이어그램에
s 타이머가 실행 중인 상태에서 스타트 입력의 선으로 표시). 신호 상태 ‘1’ (타이머 상태)
신호 상태가 ‘0’ 에서 ‘1’ 로 바뀐 경우, 에 대한 검사는 검사 결과 ‘0’ 을 반환합니
즉 포지티브 엣지인 경우 타이머가 재설정됩 다.

그림 7.10 오프-딜레이 타이머 시작 및 재설정 시 동작 특성

184
7.7 IEC 타이머

7.7 IEC 타이머 표 7.1 IEC 타이머의 파라미터


이름 선언 데이터 형식 설명
IEC 타이머는 CPU의 운영체제에 시스템 함수 블 IN INPUT BOOL 스타트 입력
록(STB)으로 통합되어 있습니다. PT INPUT TIME 펄스 길이 또는 딜
레이 지속 시간
일부 CPU에서는 다음과 같은 타이머를 사용할
RP OUTPUT BOOL 타이머 상태
수 있습니다.
ET OUTPUT TIME 경과 시간
Z SFB 3 TP
펄스 타이머
Z SFB 4 TON 되면 출력 ET는 PT가 경과하는 순간 T#0s가 됩니
온-딜레이 타이머 다.

Z SFB 5 TOF 타이머를 다시 초기화하려면 PT = T#0s로 지정


오프-딜레이 타이머 해 타이머를 시작하면 됩니다.
그림 7.11은 이러한 타이머의 동작 특성을 보여 타이머 SFB 3 TP는 시작 모드와 실행 모드에서
줍니다. 활성이 됩니다. 이 타이머는 콜드 스타트가 실행되
이 SFB는 인스턴스 데이터 블록(DB)을 이용해 호 면 재설정(초기화)됩니다.
출하거나 함수 블록 내에서 로컬 인스턴스로 사용됩
니다. 오프라인 프로그래밍을 위한 인터페이스에
7.7.2 온-딜레이 타이머 SFB 4 TON
대한 설명은 표준 라이브러리인 표준 라이브러리의
프로그램 시스템 함수 블록을 참조하십시오. IEC 타이머 SFB 4 TON은 표 7.1에 나열된 파라
미터를 갖습니다.
호출의 예는 ‘LAD_Book’ 과 ‘FBD_Book’ 라
이브러리에 있는 ‘기본 함수’ 프로그램의 함수 블 스타트 입력의 RLO가 ‘0’ 에서 ‘1’ 로 바뀌
록 FB 107을 참조하십시오. 이 라이브러리는 출판 면 타이머가 시작됩니다. 타이머는 프로그래밍된
사의 웹 사이트에서 다운로드할 수 있습니다(8 페이 지속 시간 동안 실행됩니다. 출력 Q는 시간이 경과
지 참조). 하고 스타트 입력의 신호 상태가 ‘1’ 를 유지하는
동안에는 신호 상태 ‘1’ 을 표시합니다. 시간이 완
전히 경과하기 전에 스타트 입력의 RLO가 ‘1’ 에
7.7.1 펄스 타이머 SFB 3 TP
서 ‘0’ 으로 바뀌면 타이머가 재설정됩니다. 그 다
IEC 타이머 SFB 3 TP는 표 7.1에 나열된 파라미 음 포지티브 엣지가 타이머를 재가동합니다.
터를 갖고 있습니다.
출력 ET는 타이머에 지속 시간을 제공합니다. 이
타이머의 스타트 입력의 RLO가 ‘0’ 에서 ‘1’
지속 시간은 T#0s에 시작해 설정된 지속 시간 PT에
로 바뀌면 타이머가 시작됩니다. 이후 스타트 입력
종료됩니다. PT가 경과하면 입력 IN이 다시 ‘0’
의 RLO 변경 여부에 관계 없이 타이머는 프로그래
이 될 때까지 ET는 경과 시간으로 설정된 상태를 유
밍된 지속 시간만큼 실행됩니다. 타이머가 실행되
지합니다. PT가 경과하기 전에 입력 IN이 ‘0’ 이
는 동안 출력 Q의 신호 상태는 ‘1’ 을 유지합니다.
되면 출력 ET는 즉시 T#0s가 됩니다.
출력 ET는 출력 Q에 지속 시간을 제공합니다. 이
타이머를 다시 초기화하려면 PT = T#0s로 지정
지속 시간은 T#0s에 시작해 설정된 지속 시간 PT에
해 타이머를 시작하면 됩니다.
종료됩니다. PT가 경과하면 입력 IN이 다시 ‘0’
이 될 때까지 ET는 경과 시간으로 설정된 상태를 유 SFB 4 TON은 시작 모드와 실행 모드에서 활성이
지합니다. PT가 경과하기 전에 입력 IN이 ‘0’ 이 됩니다. 이 타이머는 콜드 스타트 시 재설정됩니다.

185
7 타이머

그림 7.11 IEC 타이머의 동작 특성

7.7.3 오프-딜레이 타이머 SFB 5 TOF 출력 ET는 타이머에 지속 시간을 제공합니다. 이


IEC 타이머 SFB 5 TOF는 표 7.1에 나열된 파라 지속 시간은 T#0s에 시작해 설정된 지속 시간 PT에
미터를 갖습니다. 종료됩니다. PT가 경과하면 입력 IN이 다시 ‘1’
이 될 때까지 ET는 경과 시간으로 설정된 상태를 유
타이머의 스타트 입력의 RLO가 ‘0’ 에서 ‘1’
지합니다. PT가 경과하기 전에 입력 IN이 ‘1’ 이
로 바뀌면 출력 Q의 신호 상태가 ‘1’ 이 됩니다.
되면 출력 ET는 즉시 T#0s가 됩니다.
스타트 입력의 RLO가 다시 ‘0’ 으로 바뀌면 타이
머가 시작됩니다. 출력 Q는 타이머가 실행되는 동안 타이머를 다시 초기화하려면 PT = T#0s로 지정
신호 상태 ‘1’ 을 유지합니다. 시간이 완전히 경 해 타이머를 시작하면 됩니다.
과하면 출력 Q가 재설정됩니다. 시간이 완전히 경과 SFB 5 TOF는 시작 모드와 실행 모드에서 활성이
하기 전에 스타트 입력의 RLO가 다시 ‘1’ 로 바뀌 됩니다. 이 타이머는 콜드 스타트 시 재설정됩니다.
면 타이머가 재설정되고 출력 Q는 ‘1’ 을 유지합
니다.

186
8 카운터

8 카운터

카운터를 사용해 CPU에서 카운팅 작업을 수행할


수 있습니다. 카운터는 카운트업과 다운을 모두 수
행할 수 있습니다. 카운팅은 30진(000 ~ 999) 범위
이상까지 가능합니다. 카운터는 CPU의 시스템 메
모리에 있고 카운터의 수는 CPU에 따라 다릅니다.
카운터는 완전한 연산 박스 형식으로 프로그래밍
하거나 개별 프로그램 구성요소를 사용해 프로그래
밍할 수 있습니다. 카운트에 구체적인 초기값으로
설정하거나 이를 재설정할 수 있으며 카운트업과 다
운을 모두 할 수 있습니다. 카운터 상태(0 또는 0이
아닌 카운트 값) 또는 현재 카운트를 검사해 카운터
를 스캔합니다. 현재 카운트는 이진 또는 이진화 십
진 형식으로 검색할 수 있습니다.

이름 데이터 형식 설명
8.1 카운터 프로그래밍 CU BOOL 상향 카운트 입력
CD BOOL 하향 카운트 입력
카운터에서 다음과 같은 작업을 수행할 수 있습니 S BOOL 셋 입력
다. PV WORD 사전 설정 값
R BOOL 리셋 입력
Z 카운터 설정. 카운트 값을 지정.
CV WORD 이진 형식의 현재 값
Z 카운트업 CV_BCD WORD BCD 형식의 현재 값
Z 카운트다운 RP BOOL 카운터 상태

Z 카운터 리셋 그림 8.1 연산 박스로 카운터 표시

Z (이진) 카운터 상태 검사
하향 카운터’ 라는 뜻입니다. 첫 번째 입력(예의 경
Z 이진 (디지털) 카운트 검사
우 CU)이 필수이기 때문에 이 입력에 대한 할당 역
Z 이진화 십진 (디지털) 카운트 검사 시 필수입니다. 다른 모든 입력과 출력에 대한 할당
은 옵션입니다.
카운터를 연산 박스로 표시
카운터 연산 박스에는 모든 카운팅 연산이 함수 카운터 연산 박스에는 상향/하향 카운터(S_
입력과 함수 출력 형식으로 일관되게 표시되어 있습 CUD), 업 전용 카운터(S_CU), 다운 전용 카운터(S_
니다(그림 8.2 참조). 연산 박스 안의 헤더는 카운터 CD), 이렇게 세 가지 버전이 있습니다. 세 버전의 기
유형을 나타냅니다. 예를 들어, S_CUD는 ‘상향/ 능 상의 차이점은 아래에 설명되어 있습니다 세 버

187
8 카운터

그림 8.2 카운터의 개별 구성요소(LAD)

전의 기능 상의 차이점은 아래에 설명되어 있습니 MOVE 연산 박스를 사용하여 현재 카운트를 이진


다. 형식으로 전송할 수 있습니다.

증분 프로그래밍의 경우 프로그램 라이브러리 카


탈로그의 ‘카운터’ 아래에 카운터가 있습니다. 프 Rung에 카운터 연산 박스 사용(LAD)
로그램 라이브러리 카탈로그를 보려면 보기 → 개요 카운터 입력, 스타트 입력 및 리셋 입력 앞은 물론
를 선택하고 [Ctrl-K]를 누르거나 삽입→ 프로그램 구 출력 Q 다음에 접점을 직렬 및 병렬로 배열할 수 있
성요소를 선택하십시오. 습니다.

카운터 연산 박스는 T-분기 다음이나 왼쪽 파워


개별 구성요소를 사용해 카운터 표시(LAD) 레일에 직접 연결된 분기 안에 위치시킬 수 있습니
개별 구성요소를 사용해 카운터를 프로그래밍할 다. 이 분기는 입력 앞에 접점을 가질 수 있으며 최
수도 있습니다(그림 8.2 참조). 상위 분기가 아니어도 됩니다.

그런 다음 코일을 통해 설정과 카운팅을 합니다. 카운터의 표시 및 배열에 대한 더 많은 예를 보려


카운터 셋 코일에는 카운팅 연산(SC = 카운터 설정) 면 ‘LAD_Book’ 라이브러리의 ‘기본 함수’ 프
이 포함되어 있습니다. 코일 아래에는 카운터 설정 로그램(FB 108)을 참조하십시오. 이 라이브러리는
에 사용될 카운트 값이 WORD 형식으로 표시됩니 출판사의 웹 사이트에서 다운로드할 수 있습니다
다. (8 페이지 참조).

카운팅 코일에서 CU는 카운트업을, CD는 카운트


다운을 의미합니다. 카운터를 재설정하려면 리셋 개별 구성요소를 사용해 카운터 표시(FBD)
코일을 사용하고, 카운터의 상태를 검사하려면 NO 개별 구성요소를 사용해 카운터를 프로그래밍할
또는 NC 접점을 사용합니다. 수도 있습니다(그림 8.3 참조).

188
8.1 카운터 프로그래밍

그림 8.3 카운터의 개별 구성요소(FBD)

그런 다음 기본 연산 박스를 통해 설정과 카운팅 카운터 연산 박스와 카운팅, 카운터 설정 및 카운


을 수행합니다. 카운터 셋 연산 박스에는 카운팅 연 터 재설정을 위한 개별 구성요소는 T-분기 다음에
산(SC = 카운터 설정)이 포함되어 있습니다. 입력 위치시킬 수 있습니다.
PV에 카운터 설정에 사용될 카운트 값이 WORD 형
카운터의 표시 및 배열에 대한 더 많은 예를 보려
식으로 표시됩니다.
면 ‘FBD_Book’ 라이브러리의 ‘기본 함수’ 프
카운팅 연산 박스에서 CU는 카운트업을, CD는 로그램(FB 108)을 참조하십시오. 이 라이브러리는
카운트다운을 의미합니다. 카운터를 재설정하려면 출판사의 웹 사이트에서 다운로드할 수 있습니다
리셋 연산 박스를 사용하고, 카운터의 상태를 검사 (8 페이지 참조).
하려면 직접 또는 부정 이진 함수 입력을 사용합니
다. 카운팅 연산의 순서
카운터를 프로그래밍할 때 해당 카운터에서 사용
MOVE 연산 박스를 사용하여 현재 카운트를 이진
가능한 연산을 모두 사용할 필요는 없습니다. 원하
형식으로 전송할 수 있습니다.
는 기능을 수행하는 데 필요한 연산만 사용하면 됩
니다.
논리 회로에 카운터 연산 박스 사용(FBD)
예를 들어, 하향 카운터를 프로그래밍하는 경우
카운터 입력, 스타트 입력 및 리셋 입력 앞은 물론 카운터를 초기 카운터로 설정하고 하향 카운팅과 카
출력 Q 다음에 이진 함수와 메모리 기능을 배열할 운팅 상태 검사를 수행하는 데 필요한 연산만 프로
수 있습니다. 그래밍하면 됩니다.

189
8 카운터

카운터가 이 장에 설명된 대로 작동하게 하려면 다. 카운트 값은 상수, 워드 피연산자 또는 WORD


다음 순서에 따라 개별 프로그램 구성요소를 프로그 유형의 변수로 지정할 수 있습니다.
래밍합니다.
카운트 값을 상수로 지정
Z 카운트(업 또는 다운 / 순서 무관)
C#100 카운트 값 100
Z 카운터 설정 W#16#0100 카운트 값 100
Z 카운터 리셋 카운트 값은 000 ~ 999 사이의 30진수로 이루어
Z 카운트 검사 집니다. 카운터는 음수 값을 처리하지 못하기 때문
에 양수의 BCD 값만 사용할 수 있습니다. C# 또는
Z 카운터 상태 검사
W#16#을 사용하여 상수를 식별할 수 있습니다(반
필요하지 않은 개별 구성요소는 생략하면 됩니 드시 10진수와 함께 사용).
다. 위의 순서대로 연산을 프로그래밍하여 카운터
의 카운팅, 설정 및 재설정이 ‘동시에’ 실행되면 카운트 값을 피연산자 또는 변수로 지정
그 다음 순서인 리셋 연산에 의해 카운트가 재설정 MW 56 카운트 값을 포함한
되기 전에 먼저 카운트를 적절히 변경합니다. 따라 워드 피연산자
서 후속 검사는 카운트를 0으로, 카운트 상태를 “Count value1” WORD 유형의 변수
‘0’ 으로 표시하게 됩니다.

위의 순서대로 연산을 프로그래밍하여 카운팅과 카운터 재설정(LAD)


설정이 ‘동시에’ 실행되면 프로그래밍된 카운트 카운터는 리셋 입력이나 리셋 코일에 전력이 흐르
값으로 설정되기 전에 먼저 카운트를 적절히 변경합 는 경우(RLO ‘1’ 이 존재하는 경우) 재설정됩니
니다. 카운트는 사이클의 나머지 시간 동안 프로그 다. 이때 NO 접접을 사용해 카운터를 검사하면 검사
래밍된 카운트 값을 유지합니다. 결과 ‘0’ 이, NC 접접을 사용해 카운터를 검사하
상향 카운팅과 하향 카운팅의 경우 연산의 순서는 면 검사 결과 ‘1’ 이 반환됩니다. 카운터를 재설
중요하지 않습니다. 정하면 카운트가 ‘0’ 으로 설정됩니다. 카운터 연
산 박스의 입력 R은 연결할 필요가 없습니다.

카운터 재설정(FBD)
8.2 카운터 설정 및 재설정
리셋 입력에 ‘1’ 이 존재하면 카운터가 재설정
카운터 설정 됩니다. 그런 다음 카운터 상태를 직접 스캔하면
‘0’ 이 반환되고 부정 스캔하면 ‘1’ 이 반환됩니
셋 입력 S 이전이나 셋 코일 또는 셋 연산 박스 이
다. 카운터를 재설정하면 카운트가 ‘0’ 으로 설정
전에 RLO가 ‘0’ 에서 ‘1’ 로 변경되면 카운터
됩니다. 카운터 연산 박스의 입력 R은 연결할 필요
가 설정됩니다. 카운터를 설정하려면 반드시 포지
가 없습니다.
티브 엣지가 존재해야 합니다.

‘카운터 설정’ 은 카운터가 시작 값으로 설정된


다는 뜻입니다. 시작 값은 0 ~ 999 사이입니다.
8.3 카운팅
카운트 값 지정 카운터의 카운팅 주기는 프로그램 실행 시간에 따
카운터가 설정될 때 입력 PV의 값이나 셋 코일 또 라 결정됩니다. CPU가 카운트를 하기 위해서는 입
는 셋 연산 박스 아래의 값을 카운트 값으로 취합니 력 펄스 상태의 변화를 감지해야 합니다. 다시 말해

190
8.4 카운터 검사

최소한 프로그램 사이클 동안 입력 펄스 또는 스페 향 카운트 입력만, S_CD는 하향 카운트 입력만 갖


이스가 존재해야 합니다. 따라서 프로그램 실행 시 고 있습니다.
간이 길면 길수록 카운팅 주기가 짧아집니다.
카운터 연산 박스의 첫 번째 입력은 항상 연결시
켜야 합니다. 두 번째 입력(S_CD)을 S_CUD에 연결
상향 카운팅 시키지 않으면 이 연산 박스는 S_CU와 같은 특성을
상향 카운트 입력 CU 이전이나 상향 카운트 코일 갖게 됩니다.
/연산 박스에서 RLO가 ‘0’ 에서 ‘1’ 로 변경되
면 카운터가 상향 카운팅을 실행합니다. 상향 카운
팅을 위해서는 반드시 포지티브 엣지가 존재해야 합 8.4 카운터 검사
니다.

상향 카운팅에서 각 포지티브 엣지는 범위 최대값 카운터 상태 검사(LAD)


인 999에 도달할 때까지 1 단위로 카운트를 증가시 카운터 상태는 카운터 연산 박스의 출력 Q에 있습
킵니다. 따라서 포지티브 엣지가 추가 발생해도 더 니다. NO 접점 또는 NC 접점을 사용해 카운터 상태
이상 상향 카운팅에 영향을 미치지 않습니다. 자리 를 검사할 수도 있습니다(출력 Q에서 확인하는 것과
올림이 되지 않기 때문입니다. 결과는 동일합니다).

현재 카운트가 0보다 크면 출력 Q는 ‘1’ 이 되


하향 카운팅 고 출력에서 전력이 흘러 나갑니다. 현재 카운트가
하향 카운트 입력 CD 이전이나 하향 카운트 코일 0과 같으면 출력 Q가 ‘0’ 이 됩니다. 출력 Q를 반
/연산 박스에서 RLO가 ‘0’ 에서 ‘1’ 로 변경되 드시 카운터 연산 박스에 연결할 필요는 없습니다.
면 카운터가 하향 카운팅을 실행합니다. 하향 카운
팅을 위해서는 반드시 포지티브 엣지가 존재해야 합 카운터 상태 검사(FBD)
니다. 카운터 상태는 카운터 연산 박스의 출력 Q에 있습
하향 카운팅에서 각 포지티브 엣지는 범위 최소값 니다. 이진 함수 입력이나 부정 형식을 이용해 카운
인 0에 도달할 때까지 1 단위로 카운트를 감소시킵 터 상태를 직접 검사할 수도 있습니다(출력 Q에서
니다. 따라서 포지티브 엣지가 추가 발생해도 더 이 확인하는 것과 결과는 동일합니다).
상 하향 카운팅에 영향을 미치지 않습니다. 네거티 현재 카운트가 0보다 크면 출력 Q가 ‘1’ 이 됩
브 카운트가 없기 때문입니다. 니다. 현재 카운트가 0과 같으면 출력 Q가 ‘0’ 이
됩니다. 출력 Q를 반드시 카운터 상자에 연결할 필
다양한 카운터 연산 박스 요는 없습니다.
편집기는 세 종류의 카운터 연산 박스를 제공합니
다. 카운트 값 검사(LAD 및 FBD)
S_CUD 상향/하향 카운터 출력 CV와 CV_BCD는 이진(CV) 또는 이진화 십
진(BCD) 형식으로 카운터의 현재 카운트를 제공합
S_CU 상향 카운터
니다. 이 연산으로 사용 가능해진 카운트 값은 검사
S_CD 하향 카운터 가 수행되는 시점의 값입니다.

이 카운터 연산 박스들은 카운터 입력의 유형과 이 카운트 값은 지정된 피연산자에 저장됩니다


수에서 차이가 날 뿐입니다. S_CUD는 두 카운팅 방 (MOVE 연산 박스를 이용해 전송). 이 출력은 카운
향 모두에 대한 입력을 갖고 있는 반면 S_CU는 상 터 연산 박스에서 전환할 필요가 없습니다.

191
8 카운터

카운트 직접 검사 가 ‘0’ 에서 ‘1’ 로 변경되면, 즉 포지티브 엣지


카운트는 이진수로 표시할 수 있고 이진 형식으로 가 발생하면 현재 카운트가 1 단위로 증가하고 출력
카운터에서 가져올 수 있습니다. 가져온 값은 INT 형 CV에 표시됩니다. 첫 번째 호출 시(리셋 입력 R의
식의 양수로 표시됩니다. MOVE 연산 박스를 사용 신호 상태 ‘0’ ) 카운트는 입력 PV의 기본값과 일
하여 카운트를 직접 검사하도록 프로그래밍할 수 있 치합니다. 카운트가 최대값인 32767에 도달한 이후
습니다. 에는 더 이상 증가하지 않고 CU도 적용되지 않습니
다.
코드를 적용한 카운트 검사
리셋 입력 R의 신호 상태가 ‘1’ 이 되면 카운트
코드를 적용해 카운터의 이진 카운트를 가져올 수
값이 0으로 재설정됩니다. 입력 R이 ‘1’ 을 유지
도 있습니다. 이진화 십진(BCD) 값은 카운트 지정
하는 동안에는 CU의 포지티브 엣지가 적용되지 않
과 동일한 방식으로 구성됩니다(위 설명 참조).
습니다. CV의 값이 PV의 값보다 크거나 같으면 출
력 Q가 ‘1’ 이 됩니다.

SFB 0 CTU는 시작 모드와 실행 모드에서 실행됩


8.5 IEC 카운터
니다. 이 타이머는 콜드 스타트 시 재설정됩니다.
IEC 카운터는 시스템 함수 블록(SFB)으로 CPU
운영체제에 통합되어 있습니다. 해당 CPU에서는
다음과 같은 카운터를 사용할 수 있습니다.
8.5.2 하향 카운터 SFB 1 CTD
IEC 타이머 SFB 1 CTD는 표 8.1에 나열된 파라
Z SFB 0 CTU
미터를 갖습니다. 하향 카운트 입력 CD의 신호 상태
상향 카운터
가 ‘0’ 에서 ‘1’ 로 변경되면, 즉 포지티브 엣지
Z SFB 1 CTD
가 발생하면 현재 카운트가 1 단위로 감소하고 출력
하향 카운터
CV에 표시됩니다. 첫 번째 호출 시(로드 입력 LOAD
Z SFB 2 CTUD 의 신호 상태 ‘0’ ) 카운트는 입력 PV의 기본값과
상향/하향 카운터 일치합니다. 현재 카운트가 최소값인 -32768에 도
이 SFB는 인스턴스 데이터 블록(DB)을 이용해 호 달한 이후에는 더 이상 감소하지 않고 CD도 적용되
출하거나 함수 블록에서 로컬 인스턴스로 사용할 수 지 않습니다.
있습니다.
카운트는 로드 입력 LOAD가 ‘1’ 이 되면 기본
오프라인 프로그래밍을 위한 인터페이스에 대한 값 PV로 설정됩니다. 입력 LOAD가 ‘1’ 을 유지하
설명은 표준 라이브러리인 표준 라이브러리의 시스 는 동안에는 입력 CD의 포지티브 엣지가 적용되지
템 함수 블록 프로그램을 참조하십시오. 않습니다.
호출의 예는 ‘LAD_Book’ 과 ‘FBD_Book’ 라 CV의 값이 0보다 작거나 같으면 출력 Q가 ‘1’
이브러리에 있는 ‘기본 함수’ 프로그램의 함수 블 이 됩니다.
록 FB 108을 참조하십시오. 이 라이브러리는 출판
SFB 1 CTD는 시작 모드와 실행 모드에서 실행됩
사의 웹 사이트에서 다운로드할 수 있습니다(8 페이
니다. 이 타이머는 콜드 스타트 시 재설정됩니다.
지 참조).

8.5.1 상향 카운터 SFB 0 CTU 8.5.3 상향/하향 카운터 SFB 2 CTUD


IEC 타이머 SFB 0 CTU는 표 8.1에 나열된 파라 IEC 타이머 SFB 2 CTUD는 표 8.1에 나열된 파라
미터를 갖습니다. 상향 카운트 입력 CU의 신호 상태 미터를 갖습니다.

192
8.6 카운터 요소 예

업 카운트 입력 CU의 신호 상태가 ‘0’ 에서 나 프로그래밍이 가능합니다. 이 예에서는 블록 파


‘1’ 로 변경되면, 즉 포지티브 엣지가 발생하면 카 라미터가 없는 함수를 사용하고 타이머와 카운터를
운트가 1 단위로 증가하고 출력 CV에 표시됩니다. 완전한 연산 박스로 표시합니다. 19 “블록 파라미
다운 카운트 입력 CD의 신호 상태가 ‘0’ 에서 터” 에는 같은 예가 블록 파라미터를 사용하는 함수
‘1’ 로 변경되면, 즉 포지티브 엣지가 발생하면 카 블록(FB)으로 제시되어 있습니다.
운트가 1 단위로 감소하고 출력 CV에 표시됩니다.
두 입력이 모두 포지티브 엣지를 표시하면 현재 카
기능 설명
운트가 변경되지 않습니다.
부품은 컨베이어 벨트를 통해 전송됩니다. 광센
현재 카운트가 최대값인 32767에 도달한 이후에
서가 부품을 감지하고 카운트합니다. 설정된 수까
는 상향 카운트 입력인 CU에 포지티브 엣지가 존재
지 카운트되면 카운터는 Finished 신호를 보냅니다.
해도 카운트는 더 이상 증가하지 않습니다. 즉, CU
카운터에는 모니터링 회로가 탑재되어 있습니다.
가 더 이상 적용되지 않습니다. 현재 카운트가 최소
지정된 시간 동안 광센서의 신호 상태가 바뀌지 않
값인 -32768에 도달한 이후에는 다운 카운트 입력
으면 모니터가 신호를 보냅니다.
인 CD에 포지티브 에지가 존재해도 카운트는 더 이
상 감소하지 않습니다. 즉, CD가 더 이상 적용되지 Set 입력은 카운터에 시작 값(카운트할 숫자)을
않습니다. 전달합니다. 광센서에 포지티브 엣지가 있으면 카
운터는 1 단위로 카운트다운을 합니다. 카운트가 0
카운트는 로드 입력 LOAD가 ‘1’ 이 되면 기본
에 도달하면 카운터는 Finished 신호를 보냅니다.
값 PV로 설정됩니다. 로드 입력 LOAD가 ‘1’ 을
이를 위해서는 부품이 하나씩 서로 간격을 두고 벨
유지하는 동안에는 2개의 카운트 입력에 포지티브
트에 배열되어야 합니다.
에지가 존재해도 적용되지 않습니다.

리셋 입력 R이 ‘1’ 이면 카운트가 0으로 재설정 또한 Set 입력은 Active 신호를 설정합니다. 컨트


됩니다. 입력 R이 ‘1’ 인 동안은 2개의 카운트 입 롤러는 활성 상태인 경우에만 광센서의 신호 상태
력에 포지티브 신호 엣지가 존재하고 로드 입력 변화를 모니터링합니다. 카운팅이 종료되고 마지막
LOAD의 신호 상태가 ‘1’ 이어도 영향을 미치지 에 카운트된 부품이 광센서를 통과하면 Active가 재
않습니다. 설정됩니다.

CV의 값이 PV의 값보다 크거나 같으면 출력 QU 활성 상태에서 광센서에 포지티브 엣지가 표시되
가 ‘1’ 이 됩니다. 면 타이머가 시작됩니다. 이 타이머는 Duration1(
‘Dura1’ )의 시간 값을 가지는 정전 유지 펄스 타
CV의 값이 0보다 작거나 같으면 출력 QD가 ‘1’
이머입니다. 다음 사이클에서 타이머의 스타트 입
이 됩니다.
력이 ‘0’ 으로 처리되면 타이머가 계속 실행됩니
SFB 2 CTUD는 시작 모드와 실행 모드에서 실행 다. 새 포지티브 엣지가 발생하면 타이머가 ‘다시
됩니다. 이 타이머는 콜드 스타트 시 재설정됩니다. 트리거’ , 즉 재가동됩니다. 광센서가 네거티브 엣
지를 표시하면 타이머를 재가동하는 다음 포지티브
엣지가 생성됩니다. 시간 값을 Duration2
8.6 카운터 요소 예 ( ‘Dura2’ )로 하는 타이머가 시작됩니다. 광센서
가 Dura1을 초과하는 시간 동안 모니터링을 하거나
이 예는 타이머와 카운터 사용법을 보여 줍니다. Dura2를 초과하는 시간 동안 유휴 상태가 되면 타이
타이머나 카운터는 입력, 출력 및 메모리 비트로 프 머가 종료되고 Fault를 표시합니다. 타이머가 처음
로그래밍하기 때문에 위치에 관계 없이 어떤 블록에 활성화될 때 시간 값 Dura2를 갖고 시작됩니다.

193
8 카운터

표 8.1 IEC 카운터의 파라미터


이름 SFB에 존재 선언 데이터 형식 설명
CU 0 - 2 INPUT BOOL 상향 카운트 입력
CD - 1 2 INPUT BOOL 하향 카운트 입력
R 0 - 2 INPUT BOOL 리셋 입력
LOAD - 1 2 INPUT BOOL 로드 입력
PV 0 1 2 INPUT INT 사전 설정 값
Q 0 1 - OUTPUT BOOL 카운터 상태
QU - - 2 OUTPUT BOOL 상향 카운터 상태
QD - - 2 OUTPUT BOOL 하향 카운터 상태
CV 0 1 2 OUTPUT INT 현재 카운트 값

신호, 심볼 프로그램
Set 신호는 카운터와 모니터를 활성화합니다. 광
프로그램은 함수 내에 위치합니다. 이 함수 블록
센서는 카운터, Active 상태, 시간 값 선택, 포지티브
을 프로그램 라이브러리 카탈로그 ‘FC 블록’ 에
및 네거티브 엣지를 통한 모니터링 시작(다시 트리
서 선택한 후 조직 블록 OB 1으로 호출해 CPU에서
거)을 제어합니다.
처리합니다 .
종종 광센서의 포지티브 및 네거티브 엣지신호를
판단할 필요가 있으며 임시 로컬 데이터를 ‘임시 프로그래밍을 할 때 특수 문자를 포함하지 않은
저장’ 메모리로 사용합니다. 임시 로컬 데이터는 블 글로벌 심볼은 따옴표 없이 사용할 수 있습니다. 심
록-로컬 변수입니다. 이 데이터는 심볼 테이블이 아 볼에 특수 문자(예: 움라우트, 공백)가 포함된 경우
닌 블록 내에서 선언됩니다. 이 예에서 엣지신호 판 따옴표를 붙여야 합니다. 컴파일된 블록의 경우 편
단에 사용되는 펄스 메모리 비트는 임시 로컬 데이 집기는 모든 글로벌 심볼에 따옴표를 붙여 표시합니
터에 저장됩니다. (후속 사이클에서도 신호 상태를 다.
필요로 하기 때문에 엣지 메모리 비트는 임시 로컬
데이터에 저장해서는 안됩니다.) 그림 8.4과 그림 8.5는 카운터 요소의 프로그램(
여기서는 심볼 주소 지정을 사용합니다. 즉, 피연 함수 FC 12)을 보여 줍니다. 이 프로그램은 ‘LAD_
산자에 이름을 할당하고 프로그램을 작성할 때 이 Book’ 과 ‘FBD_Book’ 라이브러리의 ‘컨베이
이름을 사용합니다. 프로그램을 시작하기 전에 입 어 예’ 프로그램에 있습니다. 이 라이브러리는 출판
력, 출력, 메모리 비트, 타이머, 카운터 및 블록이 포 사의 웹 사이트에서 다운로드할 수 있습니다(8 페이
함된 심볼 테이블을 만듭니다(표 8.2 참조). 지 참조).

194
8.6 카운터 요소 예

표 8.2 카운터 요소 예의 심볼 테이블


심볼 주소 데이터 형식 주석
Counter_control FC 12 FC 12 카운터 요소 및 모니터 컨트롤
Acknowl I 0.6 BOOL 결함 승인
Set I 0.7 BOOL 카운터 설정, 모니터 활성화
Lbarr1 I 1.0 BOOL ‘벨트 종단(End_of_belt)’ 센서 신호 컨베이어 벨트 1
Finished Q 4.2 BOOL 도착한 부품 수
Fault Q 4.3 BOOL 모니터에 표시됩니다.
Active M 3.0 BOOL 카운터와 모니터가 활성 상태입니다.
EM_LB_P M 3.1 BOOL 광센서의 포지티브 엣지용 엣지 메모리 비트
EM_LB_N M 3.2 BOOL 광센서의 네거티브 엣지용 엣지 메모리 비트
EM_Ac_P M 3.3 BOOL ‘모니터 활성’ 의 포지티브 에지용 에지 메모리 비트
EM_ST_P M 3.4 BOOL ‘설정’ 의 포지티브 에지용 에지 메모리 비트
수량 MW 4 WORD 부품 수
Dura1 MW 6 S5TIME 광센서의 모니터링 시간 포함
Dura2 MW 8 S5TIME 광센서의 모니터링 시간 포함되지 않음
계수 C1 COUNTER 카운터 요소 기능
모니터링 T1 TIMER 모니터 타이머 연산

195
8 카운터

그림 8.4 카운터 요소 프로그래밍 예(LAD)

196
8.6 카운터 요소 예

그림 8.5 카운터 요소 프로그래밍 예(FBD)

197
디지털 함수

디지털 함수

디지털 함수는 주로 INT, DINT, REAL과 같은 데


이터 형식의 디지털 값을 처리하여 PLC의 기능을
확장합니다.

비교 연산은 2개의 값을 비교하여 이진 결과를 만


듭니다. 비교 연산은 INT, DINT 및 REAL 데이터 형
식에 사용할 수 있습니다.

연산 함수는 프로그램에서 계산을 수행하는 데 사


용합니다. INT, DINT 및 REAL 데이터 형식의 기본
연산 함수는 모두 사용할 수 있습니다.
09 비교 연산
같음, 같지 않음, 더 큼, 같거나 큼, 더 작음,
산술 연산은 계산 범위를 기본 연산 함수 이상으 같거나 작음 비교
로 확장시켜 삼각 함수 등도 포함시킵니다.
10 연산 함수
INT, DINT 및 REAL 데이터 형식의 기본 연산
계산 수행 전과 후 변환 기능를 이용하여 디지털 함수
값을 원하는 데이터 형식으로 바꿀 수 있습니다.
11 산술 함수
삼각 함수 / 역삼각 함수 / 제곱, 제곱근 추출,
시프트 연산은 변수의 내용을 왼쪽 또는 오른쪽으
지수승 및 로그
로 시프트하여 정렬할 수 있도록 합니다.
12 변환 함수
INT/DINT에서 BCD로 변환하거나 그 반대로
워드 로직은 개별 비트를 지정한 후 이 비트를
변환 / DINT에서 REAL로 변환하거나 다른 반
‘1’ 또는 ‘0’ 으로 설정하는 방식으로 디지털 값
올림 형식을 이용해 그 반대로 변환 / 1의 보
을 마스킹합니다.
수, 부정 및 절대값 생성

13 시프트 함수
디지털 논리 연산은 주로 데이터 블록에 저장된
워드 및 더블 워드 단위로 왼쪽 및 오른쪽으로
값을 이용합니다. 데이터 블록은 글로벌 데이터 블
시프트 / 올바른 사인 비트와 함께 시프트 / 왼
록(DB)이나 정적 로컬 데이터를 사용하는 경우 인스
쪽 및 오른쪽으로 회전
턴스 데이터 블록(DB)일 수 있습니다. 18.2 “데이
터 블록(DB)의 기능” 는 데이터 블록(DB) 처리 방 14 워드 논리
법을 설명하고 데이터 피연산자의 주소 지정 방법을 AND, OR, EXCLUSIVE OR / 워드 및 더블 워
제공합니다. 드 조합

198
9 비교 연산

9 비교 연산

비교 연산은 INT, DINT 또는 REAL 데이터 형식의 합니다. 예를 들어 CMP ==I면 2개의 INT 수가 같음
디지털 변수 2개를 비교하여 같음, 같지 않음, 더 인지 비교한다는 뜻입니다.
큼, 같거나 큼, 더 작음 또는 같거나 작음인지 확인
Rung에 접점 대신 비교 연산자를 배열할 수 있습
합니다. 그런 다음 비교 결과를 이진 값으로 제공합
니다. 라벨 미지정 입력과 라벨 미지정 출력은 다른
니다(표 9.1 참조).
(이진) 프로그램 구성요소와 연결됩니다.

비교할 값은 입력 IN1 및 IN2에 있고 비교 결과는


출력에 있습니다. 성공한 비교는 폐쇄 접점과 같습
9.1 비교 연산 처리
니다. 즉, 비교 연산자를 통해 ‘전력’ 이 흐르게 됩
니다. 비교가 성공하지 못하면 접점이 개방됩니다.
비교 연산자의 출력은 항상 서로 연결되어 있어야
합니다.

표시(FBD)
비교 연산 박스는 2개의 입력 IN1 및 IN2와 1개의
라벨 미지정 이진 출력을 갖습니다. 연산 박스 안의
‘헤더’ 는 수행되는 비교의 유형을 표시합니다. 예
를 들어 CMP ==I이면 2개의 INT 수가 같음인지 비
교한다는 뜻입니다.

표시(LAD) 비교할 값은 입력 IN1 및 IN2에 있고 비교 결과는


비교 연산 박스는 (라벨 미지정) 이진 입력과 더불 출력에 있습니다. 비교가 성공한 경우 비교 연산자
어 2개의 입력 IN1 및 IN2와 1개의 (라벨 미지정) 이 출력은 신호 상태 ‘1’ 을 표시합니다. 실패한 경
진 출력을 갖습니다. 연산 박스 안의 ‘헤더’ 는 비 우 ‘0’ 을 표시합니다. 비교 연산자의 출력은 항
교 연산(비교 CMP)과 수행되는 비교의 유형을 표시 상 서로 연결되어 있어야 합니다.

표 9.1 비교 연산 개요
비교 연산 데이터 형식별 비교
INT DINT REAL
같음인지 비교 CMP ==I CMP ==D CMP ==R
같지 않음인지 비교 CMP <>I CMP <>D CMP <>R
더 큼인지 비교 CMP >I CMP >D CMP >R
같거나 큼인지 비교 CMP >=I CMP >=D CMP >=R
더 작음인지 비교 CMP <I CMP <D CMP <R
같거나 작음인지 비교 CMP <=I CMP <=D CMP <=R

199
9 비교 연산

데이터 형식 예

비교 연산에서 입력의 데이터 형식은 해당 함수에 그림 9.1은 데이터 형식별 예를 제공합니다. 비교


따라 달라집니다. 예를 들어 REAL 수가 더 큼인지 연산은 절대 주소가 포함된 피연산자를 사용할 때
비교하는 비교 연산 CMP >R의 경우 입력은 REAL 데이터 형식이 선언되지 않은 경우라 해도 지정된
유형이 됩니다. 변수는 입력과 데이터 형식이 동일 특성에 따라 비교를 수행합니다.
해야 합니다. 절대 주소가 포함된 피연산자를 사용 증분 프로그래밍의 경우 프로그램 라이브러리 카
하는 경우 피연산자 너비가 데이터 형식과 일치해야 탈로그의 ‘비교 연산자’ 아래에 비교 연산이 있습
합니다. 예를 들어 데이터 형식이 INT인 경우 워드 니다. 프로그램 라이브러리 카탈로그를 보려면 보기
피연산자를 사용할 수 있습니다. → 개요를 선택하고 [Ctrl -K]를 누르거나 삽입 → 프
로그램 구성요소를 선택하십시오.
데이터 형식을 위한 비트 할당은 3.5.4 “기본 데
이터 형식” 을 참조하십시오.
Rung에 비교 연산 사용(LAD)
2개의 REAL 수 중 1개가 유효하지 않으면 REAL
Rung에 접점 대신 비교 연산을 사용할 수 있습니
수 비교는 참이 아닙니다. 또한 상태 비트 OS와 OV
다.
가 설정됩니다. 비교 연산이 나머지 상태 비트를 어
떻게 설정하는지는 15 “상태 비트” 에 설명되어 있 비교 연산 앞뒤에 접점을 직렬 및 병렬로 연결할
습니다. 수 있습니다. 비교 연산 박스 자체를 직렬 또는 병렬

彚微庲͑毒姢͑;Έ͑ͪͣ儆͑ͣ͢͡刂͑償求彺͑彚微庲͑捊瞾͑;͑ͪͪ͟͡決͑庲晑夞彶͑͝
ͣ͢͡刂͑償滆͑橐求彺͑庲晑夞滆͑橐枻城埪͟

‫ʹ׎‬ΠΞΡ·ΒΝΝ‫͑׏‬懆朞儆͑‫ʹ׎‬ΠΞΡ·ΒΝͣ‫׏‬懺埪͑沗求彺͑塶決瘶͑挚嵣͑‫׎‬͸ΝΠΓΒΝΐ͵ͳ‫׏‬汞͑
‫ʹ׎‬ΠΞΡ΃ΖΤΦΟΥ‫͑׏‬懆朞儆͑昪洛夞彶͑͝勾崍滆͑橐汆͑凃殶櫖垚͑庲晑夯城埪͟

͔ͲΔΥ·ΒΝ͑懆朞儆͔͑ʹΒΝΚΓΣΒ͑懆朞懺埪͑畲其喞͑償求彺͔͑΃ΖΔΒΝΚ儆͑昪洛夞彶͑͝
勾崍滆͑橐汆͑凃殶櫖垚͑昪洛夞滆͑橐枻城埪͟

그림 9.1 비교 연산 예

200
9.2 비교 연산 설명

로 연결할 수도 있습니다. 비교 연산이 직렬로 연결 있으면 비교가 성공하고 비교 연산자 출력에 ‘전


된 경우 두 비교가 모두 성공해야만 Rung에 전력이 력’ 이 흐르거나 RLO가 ‘1’ 이 됩니다.
흐릅니다. 비교가 병렬로 연결된 경우 비교 중 하나
REAL 비교인 경우 두 입력 변수 모두 또는 그 중
만 성공해도 병렬 회로에 전력이 흐릅니다.
하나가 유효하지 않으면 비교는 실패합니다. 또한
비교 연산의 표시 및 정렬에 대한 더 많은 예를 보 상태 비트 OV와 OS가 설정됩니다.
려면 'LAD_Book' 라이브러리의 '디지털 함수' 프로
그램(함수 블록 FB 109)을 참조하십시오. 이 라이브 더 큼인지 비교
러리는 출판사의 웹 사이트에서 다운로드할 수 있습 ‘더 큼인지 비교’ 는 비교 연산에 지정된 데이터
니다(8 페이지 참조). 형식에 따라 입력 변수의 내용을 해석하고 입력 IN1
의 값이 IN2의 값보다 더 큰지 검사합니다. IN1의 값
논리 회로에 비교 연산 사용(FBD) 이 IN2의 값보다 더 크면 비교가 성공하고 비교 연
산자 출력에 ‘전력’ 이 흐르거나 RLO가 ‘1’ 이
비교 연산은 프로그램 구성요소의 이진 입력 중
됩니다.
어디에나 위치시킬 수 있습니다. 그런 다음 비교 결
과를 다른 이진 함수와 조합할 수 있습니다. REAL 비교인 경우 두 입력 변수 모두 또는 그 중
하나가 유효하지 않으면 비교는 실패합니다. 또한
비교 연산의 표시 및 정렬에 대한 더 많은 예를 보
상태 비트 OV와 OS가 설정됩니다.
려면 'FBD_Book' 라이브러리의 '디지털 함수' 프로
그램(함수 블록 FB 109)을 참조하십시오. 이 라이브
러리는 출판사의 웹 사이트에서 다운로드할 수 있습 같거나 큼인지 비교
니다(8 페이지 참조). ‘같거나 큼인지 비교’ 는 비교 연산에 지정된 데
이터 형식에 따라 입력 변수의 내용을 해석하고 입
력 IN1의 값이 입력 IN2의 값보다 크거나 같은지 검
사합니다. IN1의 값이 IN2의 값보다 크거나 같으면
9.2 비교 연산 설명
비교가 성공하고 비교 연산자 출력에 ‘전력’ 이 흐
르거나 RLO가 ‘1’ 이 됩니다.
같음인지 비교
REAL 비교인 경우 두 입력 변수 모두 또는 그 중
‘같음인지 비교’ 는 비교 연산에 지정된 데이터
하나가 유효하지 않으면 비교는 실패합니다. 또한
형식에 따라 입력 변수의 내용을 해석하고 두 값이
상태 비트 OV와 OS가 설정됩니다.
같은지 검사합니다. 두 변수가 같은 값을 갖고 있으
면 비교 조건이 충족되고 비교 연산자 출력에 ‘전
더 작음인지 비교
력’ 이 흐르거나 RLO가 ‘1’ 이 됩니다.
‘더 작음인지 비교’ 는 비교 연산에 지정된 데이
REAL 비교인 경우 두 입력 변수 모두 또는 그 중 터 형식에 따라 입력 변수의 내용을 해석하고 입력
하나가 유효하지 않으면 비교는 실패합니다. 또한 IN1의 값이 입력 IN2의 값보다 더 작은지 검사합니
상태 비트 OV와 OS가 설정됩니다. 다. IN1의 값이 IN2의 값보다 더 작으면 비교가 성공
하고 비교 연산자 출력에 ‘전력’ 이 흐르거나 RLO
같지 않음인지 비교 가 ‘1’ 이 됩니다.

‘같지 않음인지 비교’ 는 비교 연산에 지정된 데 REAL 비교인 경우 두 입력 변수 모두 또는 그 중


이터 형식에 따라 입력 변수의 내용을 해석하고 두 하나가 유효하지 않으면 비교는 실패합니다. 또한
값이 다른지 검사합니다. 두 변수가 다른 값을 갖고 상태 비트 OV와 OS가 설정됩니다.

201
9 비교 연산

같거나 작음인지 비교 면 비교가 성공하고 비교 연산자 출력에 ‘전력’ 이

‘같거나 작음인지 비교’ 는 비교 연산에 지정된 흐르거나 RLO가 ‘1’ 이 됩니다.

데이터 형식에 따라 입력 변수의 내용을 해석하고 REAL 비교인 경우 두 입력 변수 모두 또는 그 중


입력 IN1의 값이 입력 IN2의 값보다 작거나 같은지 하나가 유효하지 않으면 비교는 실패합니다. 또한
검사합니다. IN1의 값이 IN2의 값보다 작거나 같으 상태 비트 OV와 OS가 설정됩니다.

202
10 연산 함수

10 연산 함수

연산 함수는 더하기, 빼기, 곱하기, 나누기와 같 된 연산 함수를 표시합니다. 예를 들어 ADD_I는 INT


은 기본 연산 함수에 따라 두 값을 조합합니다. 연산 수를 더한다는 뜻입니다.
함수는 INT, DINT 및 REAL 유형의 변수에 사용할 수
조합될 값은 IN1 및 IN2 입력에 있고 계산 결과는
있습니다(표 10.1 참조).
출력 OUT에 있습니다. 입력과 출력은 연산 함수에
따라 다른 데이터 형식을 갖습니다. 예를 들어 연산
함수 ADD_R(REAL 수의 더하기)의 경우 입력과 출
10.1 연산 함수 처리 력의 데이터 형식이 REAL입니다. 적용된 변수는 입
력 또는 출력과 데이터 형식이 동일해야 합니다. 절
표시 대 주소가 포함된 피연산자를 사용하는 경우 피연산
자 너비가 데이터 형식과 일치해야 합니다. 예를 들
어 데이터 형식이 INT인 경우 워드 피연산자를 사용
할 수 있습니다.

각 데이터 형식의 개별 비트에 대한 설명은


3.5.4 “기본 데이터 형식” 을 참조하십시오.

기능

연산 함수는 활성화 입력에 ‘1’ 이 존재하거나


입력 EN에 ‘전력’ 이 흐를 때 실행됩니다. 계산 중
오류가 발생하면 활성화 출력은 ‘0’ 으로 설정됩
연산 박스는 활성화 입력 EN과 활성화 출력 ENO 니다. 오류가 발생하지 않으면 ‘1’ 로 설정됩니다.
와 더불어 2개의 입력 IN1과 IN2, 1개의 출력 OUT 함수의 실행이 활성화되지 않은 경우(EN = ‘0’ )
을 갖고 있습니다. 연산 박스 안의 ‘헤더’ 는 실행 계산이 되지 않고 ENO 역시 ‘0’ 이 됩니다.

표 10.1 연산 함수 개요
연산 함수 데이터 형식 사용
INT DINT REAL
더하기 ADD_I ADD_DI ADD_R
빼기 SUB_I SUB_DI SUB_R
곱하기 MUL_I MUL_DI MUL_R
결과가 몫인 나누기 DIV_I DIV_DI DIV_R
결과가 나머지인 나누기 - MOD_DI -

203
10 연산 함수

IF EN == ‘1’ 또는 연결되지 않은 경우 Z REAL 계산에 유효하지 않은 REAL 수가 있습니


THEN ELSE 다.
OUT := IN1 Cfct IN2
연산 함수가 각종 상태 비트를 어떻게 설정하는지
IF 오류가 발생한 경우
는 15 “상태 비트” , 에 설명되어 있습니다.
THEN ELSE
ENO := ‘0’ ENO := ‘1’ ENO := ‘0’
Cfct를 계산 함수로 사용 예
마스터 제어 릴레이(MCR)가 활성화된 상태에서 그림 10.1는 각 데이터 형식의 예를 보여 줍니다
연산 함수를 처리하면(EN = ‘1’ ) 출력 OUT은 0 . 연산 함수는 절대 주소가 포함된 피연산자를 사용
으로 설정됩니다. MCR은 출력 ENO에 영향을 미치 할 때 데이터 형식이 선언되지 않은 경우라 해도 지
지 않습니다. 정된 특성에 따라 계산을 수행합니다.
연산 함수 실행 중 다음과 같은 오류가 발생할 수
증분 프로그래밍의 경우 프로그램 라이브러리 카
있습니다.
탈로그의 ‘정수 함수’ (INT 및 DINT 계산) 또는
Z INT 및 DINT 계산에서 범위를 벗어났습니다(초 ‘부동 소수점 함수’ (REAL 계산) 아래에 산술 연산
과). 이 있습니다. 프로그램 라이브러리 카탈로그를 보
Z REAL 계산에서 언더흐름 및 초과가 발생했습니 려면 보기 → 개요를 선택하고 [Ctrl -K]를 누르거나
다. 삽입→ 프로그램 구성요소를 선택하십시오.

彚微庲͑毒姢͑;Έ͑͢͡͡汞͑儘汊͑ͣͦ͡求嵢͑喞圊処͑͝
洛朞͑冶刂垚͑彚微庲͑毒姢͑;Έ͑ͣ͢͡櫖͑洆沫夯城埪͟

‫Ͳ׎‬ΣΚΥΙ·ΒΝΝ‫͑׏‬愕͑‫Ͳ׎‬ΣΚΥΙ·ΒΝͣ‫͑׏‬懆朞汞͑儘汊͑塚穞処͑͝
冶刂垚͑‫Ͳ׎‬ΣΚΥΙ΃ΖΤΦΝΥ‫͑׏‬懆朞櫖͑洆沫夯城埪͑͟微姦͑懆朞垚͑塶決瘶͑挚嵣櫖͑洆沫夯城埪͟

͔ͲΔΥ·ΒΝ͑愕͑΍ͷΒΔΥΠΣ庂͑凷穞処͑͝勾͑冶刂垚͔͑͑͵ΚΤΡΝΒΪ͑懆朞嵢͑洊埲夯城埪͟

그림 10.1 산술 연산 예

204
10.2 데이터 형식 INT 계산

Rung에 연산 함수 사용(LAD) 의 입력 EN에 연결시킬 수 있습니다. 선행 연산 박


입력 EN 이전과 출력 ENO 다음에 접점을 직렬 및 스의 계산 결과를 후속 연산 박스의 입력값으로 사
병렬로 연결할 수 있습니다. 용하고자 하는 경우 임시 로컬 데이터 영역의 변수
가 편리한 중간 버퍼 역할을 합니다.
연산 박스 자체는 T-분기 다음이나 왼쪽 회선에
직접 연결되는 분기 안에 위치시킬 수 있습니다. 이 EN과 ENO는 연결시킬 필요가 없습니다.

분기는 입력 EN 앞에 접점을 가질 수 있으며 최상위 연산 함수의 표시 및 정렬에 대한 더 많은 예를 보


분기가 아니어도 됩니다. 려면 ‘FBD_Book’ 라이브러리의 ‘디지털 함수’
프로그램 (FB 110)을 참조하십시오. 이 라이브러리
왼쪽 회선에 직접 연결된 경우 연산 박스를 병렬
는 출판사의 웹 사이트에서 다운로드할 수 있습니다
로 연결할 수 있습니다. 연산 박스를 병렬로 연결할
(8 페이지 참조).
때는 Rung을 종결시키기 위한 코일이 필요합니다.
오류 평가를 제공하지 않는 경우 임시 로컬 데이터
비트와 같은 ‘더미’ 피연산자를 코일에 할당합니
다. 10.2 데이터 형식 INT 계산
연산 박스는 직렬로 연결할 수 있습니다. 선행 연
INT 더하기
산 박스의 출력 ENO가 후속 연산 박스의 입력 EN에
함수 ADD_I는 입력 IN1과 IN2의 값을 INT 데이터
연결된 경우 선행 연산 박스가 오류 없이 완료된 경
형식의 숫자로 해석합니다. 이 함수는 두 수를 더한
우에만 후속 연산 박스가 처리됩니다. 선행 연산 박
후 그 합을 출력 OUT에 저장합니다.
스의 결과를 후속 연산 박스의 입력값으로 사용하고
자 하는 경우 임시 로컬 데이터 영역의 변수가 편리 계산을 실행한 다음 상태 비트 CC0과 CC1은 합
한 중간 버퍼 역할을 합니다. 이 음수, 0 또는 양수인지 표시합니다. 상태 비트 OV
와 OS는 범위 위반을 표시합니다.
1개의 Rung 안에 여러 개의 연산 박스를 정렬한
경우(왼쪽 회선에 병렬로, 그 다음에는 계속 직렬로
연결) 먼저 최상위 분기에 있는 연산 박스를 왼쪽에 INT 빼기
서 오른쪽 순으로 처리합니다. 그런 다음 두 번째 분 함수 SUB_I는 입력 IN1과 IN2의 값을 INT 데이터
기에 있는 연산 박스를 왼쪽에서 오른쪽 순으로 처 형식의 숫자로 해석합니다. 이 함수는 입력 IN1의 값
리하는 식으로 처리가 계속됩니다. 에서 입력 IN2의 값을 뺀 후 그 차를 출력 OUT에 저
장합니다.
연산 함수의 표시 및 정렬에 대한 더 많은 예를 보
려면 ‘LAD_Book’ 라이브러리의 ‘디지털 함수’ 계산을 실행한 다음 상태 비트 CC0과 CC1은 차
프로그램(FB 110)을 참조하십시오. 이 라이브러리 가 음수, 0 또는 양수인지 표시합니다. 상태 비트 OV
는 출판사의 웹 사이트에서 다운로드할 수 있습니다 와 OS는 범위 위반을 표시합니다.
(8 페이지 참조).
INT 곱하기
논리 회로에 연산 함수 사용(FBD) 함수 MUL_I는 입력 IN1과 IN2의 값을 INT 데이터

연산 박스를 특정 조건에 따라 처리하고 싶다면 형식의 숫자로 해석합니다. 이 함수는 두 수를 곱한

입력 EN 앞에 이진 논리 연산을 배열하면 됩니다. 후 그 곱을 출력 OUT에 저장합니다.

출력 ENO를 다른 함수의 이진 입력과 서로 연결시 계산을 실행한 다음 상태 비트 CC0과 CC1은 곱


킬 수 있습니다. 예를 들어 연산 박스를 직렬로 배열 이 음수, 0 또는 양수인지 표시합니다. 상태 비트 OV
하면 선행 연산 박스의 출력 ENO를 후속 연산 박스 와 OS는 INT 범위 위반을 표시합니다.

205
10 연산 함수

INT 나누기 계산을 실행한 다음 상태 비트 CC0과 CC1은 곱


함수 DIV_I는 입력 IN1과 IN2의 값을 INT 데이터 이 음수, 0 또는 양수인지 표시합니다. 상태 비트 OV
형식의 숫자로 해석합니다. 이 함수는 입력 IN1의 값 와 OS는 범위 위반을 표시합니다.
(분자)을 입력 IN2의 값(분모)으로 나눈 후 그 몫을
출력 OUT에 저장합니다. 나누기 결과는 정수입니 결과가 몫인 DINT 나누기
다. 분자가 0과 같고 분모가 0이 아닌 경우, 또는 분 함수 DIV_DI는 입력 IN1과 IN2의 값을 DINT 데이
자의 절대값이 분모의 절대값보다 작은 경우 몫은 0 터 형식의 숫자로 해석합니다. 이 함수는 입력 IN1
이 됩니다. 분모가 음수인 경우 몫은 음수가 됩니다. 의 값(분자)을 입력 IN2의 값(분모)으로 나눈 후 그
몫을 출력 OUT에 저장합니다. 나누기 결과는 정수
계산을 실행한 다음 상태 비트 CC0과 CC1은 몫
입니다. 분자가 0과 같고 분모가 0이 아닌 경우, 또
이 음수, 0 또는 양수인지 표시합니다. 상태 비트 OV
는 분자의 절대값이 분모의 절대값보다 작은 경우
와 OS는 범위 위반을 표시합니다. 0으로 나누기를
몫은 0이 됩니다. 분모가 음수인 경우 몫은 음수가
하면 몫이 0이 되고 상태 비트 CC0, CC1, OV 및 OS
됩니다.
가 ‘1’ 로 설정됩니다.
계산을 실행한 다음 상태 비트 CC0과 CC1은 몫
이 음수, 0 또는 양수인지 표시합니다. 상태 비트 OV
와 OS는 범위 위반을 표시합니다. 0으로 나누기를
10.3 데이터 형식 DINT 계산
하면 몫이 0이 되고 상태 비트 CC0, CC1, OV 및 OS
가 ‘1’ 로 설정됩니다.
DINT 더하기
함수 ADD_DI는 입력 IN1과 IN2의 값을 DINT 데
결과가 나머지인 DINT 나누기
이터 형식의 숫자로 해석합니다. 이 함수는 두 수를
함수 MOD_DI는 입력 IN1과 IN2의 값을 DINT 데
더한 후 그 합을 출력 OUT에 저장합니다.
이터 형식의 숫자로 해석합니다. 이 함수는 입력 IN1
계산을 실행한 다음 상태 비트 CC0과 CC1은 합 의 값(분자)을 입력 IN2의 값(분모)으로 나눈 후 그
이 음수, 0 또는 양수인지 표시합니다. 상태 비트 OV 몫의 나머지를 출력 OUT에 저장합니다. 나머지는
와 OS는 범위 위반을 표시합니다. 나누기를 하고 남은 수입니다. 따라서 나머지는 소
수 자리를 갖지 않습니다. 분자가 음수인 경우 나머
DINT 빼기 지 역시 음수가 됩니다.

함수 SUB_DI는 입력 IN1과 IN2의 값을 DINT 데이 계산을 실행한 다음 상태 비트 CC0과 CC1은 나


터 형식의 숫자로 해석합니다. 이 함수는 입력 IN1 머지가 음수, 0 또는 양수인지 표시합니다. 상태 비
의 값에서 입력 IN2의 값을 뺀 후 그 차를 출력 OUT 트 OV와 OS는 범위 위반을 표시합니다. 0으로 나누
에 저장합니다. 기를 하면 나머지가 0이 되고 상태 비트 CC0, CC1,
OV 및 OS가 ‘1’ 로 설정됩니다.
계산을 실행한 다음 상태 비트 CC0과 CC1은 차
가 음수, 0 또는 양수인지 표시합니다. 상태 비트 OV
와 OS는 범위 위반을 표시합니다.
10.4 데이터 형식 REAL 계산
DINT 곱하기 REAL 수는 내부적으로 2개의 숫자 범위를 적용하
함수 MUL_DI는 입력 IN1과 IN2의 값을 DINT 데이 는 부동 소수점 실수로 표시됩니다. 하나는 완전 정
터 형식의 숫자로 해석합니다. 이 함수는 두 수를 곱 밀도를 갖는 범위( ‘정규화된’ 부동 소수점 실수)
한 후 그 곱을 출력 OUT에 저장합니다. 이고 다른 하나는 제한적 정밀도를 갖는 범위( ‘비

206
10.4 데이터 형식 REAL 계산

정규화된’ 부동 소수점 실수)입니다. 자세한 내용 를 빼려고 하는 경우 SUB_R은 출력 OUT에 유효하


은 3.5.4 “기본 데이터 형식” 을 참조하십시오. 지 않은 값을 반환하고 상태 비트 CC0, CC1, OV 및
S7-400 CPU는 이 두 범위 모두에서 계산하는 반면 OS를 ‘1’ 로 설정합니다.
S7-300 CPU는 완전 정밀도 범위에서만 계산합니
다. S7-300 CPU가 수행한 계산의 결과가 제한적 REAL 곱하기
정밀도 범위에 속하는 경우 계산 결과가 0으로 반환
함수 MUL_R은 입력 IN1과 IN2의 값을 REAL 데이
되고 범위 위반이 보고됩니다..
터 형식의 숫자로 해석합니다. 이 함수는 두 수를 곱
한 후 그 곱을 출력 OUT에 저장합니다.
REAL 더하기
계산을 실행한 다음 상태 비트 CC0과 CC1은 곱
함수 ADD_R은 입력 IN1과 IN2의 값을 REAL 데이
이 음수, 0 또는 양수인지 표시합니다. 상태 비트 OV
터 형식의 숫자로 해석합니다. 이 함수는 두 수를 더
와 OS는 범위 위반을 표시합니다.
한 후 그 합을 출력 OUT에 저장합니다.
계산을 실행한 다음 상태 비트 CC0과 CC1은 합 규칙을 벗어난 계산인 경우, 예를 들어 두 입력값
이 음수, 0 또는 양수인지 표시합니다. 상태 비트 OV 중 하나가 유효하지 않은 REAL 수이거나 ∞와 0을
와 OS는 범위 위반을 표시합니다. 곱하려고 하는 경우 MUL_R은 출력 OUT에 유효하
지 않은 값을 반환하고 상태 비트 CC0, CC1, OV 및
규칙을 벗어난 계산인 경우, 예를 들어 두 입력값
OS를 ‘1’ 로 설정합니다.
중 하나가 유효하지 않은 REAL 수이거나 +∞와 -∞
를 더하려고 하는 경우 ADD_R은 출력 OUT에 유효
하지 않은 값을 반환하고 상태 비트 CC0, CC1, OV REAL 나누기
및 OS를 ‘1’ 로 설정합니다. 함수 DIV_R은 입력 IN1과 IN2의 값을 REAL 데이
터 형식의 숫자로 해석합니다. 이 함수는 입력 IN1
REAL 빼기 의 수(분자)를 입력 IN2의 수(분모)로 나눈 후 그 몫
함수 SUB_R은 입력 IN1과 IN2의 값을 REAL 데이 을 출력 OUT에 저장합니다.
터 형식의 숫자로 해석합니다. 이 함수는 입력 IN1 계산을 실행한 다음 상태 비트 CC0과 CC1은 몫
의 수에서 입력 IN2의 수를 뺀 후 그 차를 출력 OUT 이 음수, 0 또는 양수인지 표시합니다. 상태 비트
에 저장합니다. CC0과 CC1은 범위 위반을 표시합니다.
계산을 실행한 다음 상태 비트 CC0과 CC1은 차 규칙을 벗어난 계산인 경우, 예를 들어 두 입력값
가 음수, 0 또는 양수인지 표시합니다. 상태 비트 OV 중 하나가 유효하지 않은 REAL 수이거나 ∞를 ∞으
와 OS는 범위 위반을 표시합니다. 로, 또는 0을 0으로 나누려고 하는 경우 DIV_R은 출
규칙을 벗어난 계산인 경우, 예를 들어 두 입력값 력 OUT에 유효하지 않은 값을 반환하고 상태 비트
중 하나가 유효하지 않은 REAL 수이거나 +∞와 -∞ CC0, CC1, OV 및 OS를 ‘1’ 로 설정합니다.

207
11 산술 연산

11 산술 연산

LAD와 FBD에서는 다음과 같은 산술 연산을 사용 함수


할 수 있습니다. 산술 연산은 활성화 입력에 ‘1’ 이 존재하거나
Z 사인, 코사인, 탄젠트 입력 EN에 ‘전력’ 이 흐를 때 실행됩니다. 계산 중
오류가 발생하면 활성화 입력은 ‘0’ 으로 설정됩
Z 아크 사인, 아크 코사인, 아크 탄젠트
니다. 오류가 발생하지 않으면 ‘1’ 로 설정됩니다.
Z 제곱, 제곱근 추출
함수의 실행이 활성화되지 않은 경우(EN = ‘0’ )
Z e를 밑으로 하는 지수 함수 계산이 되지 않고 ENO 역시 ‘0’ 이 됩니다.
자연 로그
IF EN == ‘1’ 또는 연결되지 않은 경우
모든 산술 연산은 REAL 수를 처리합니다. THEN ELSE
OUT := Mfct (IN)
IF 오류가 발생한 경우
THEN ELSE
11.1 산술 연산 처리
ENO := ‘0’ ENO := ‘1’ ENO := ‘0’
Mfct를 산술 연산으로 사용
표시
산술 연산 박스는 활성화 입력 EN과 활성화 출력 마스터 컨트롤 릴레이(MCR)가 활성화된 상태에
ENO와 더불어 1개의 입력 IN과 1개의 출력 OUT을 서 산술 함수를 처리하면(EN = ‘1’ ) 출력 OUT은
갖습니다. 연산 박스 안의 ‘헤더’ 는 실행된 산술 0으로 설정됩니다. MCR은 ENO에 영향을 미치지
연산을 표시합니다. 예를 들어 SIN은 사인 함수를 않습니다.
의미합니다.
산술 연산 수행 중 다음과 같은 오류가 발생할 수
있습니다.
Z 범위를 벗어났습니다(언더흐름 및 오버흐름).
Z 입력값으로 유효한 REAL 수가 없습니다.
산술 연산이 상태 비트를 어떻게 설정하는지는
15 “상태 비트” 에 설명되어 있습니다.


입력값은 입력 IN에 있고 산술 연산의 결과는 출 그림 11.1은 산술 연산의 세 가지 예를 보여 줍니
력 OUT에 있습니다. 입력과 출력의 데이터 형식은 다. 산술 연산은 절대 주소가 포함된 피연산자를 사
모두 REAL입니다. 절대 주소로 참조되는 피연산자 용할 때 데이터 형식이 선언되지 않은 경우라 해도
는 더블 워드 피연산자여야 합니다. REAL 조건에 따라 계산을 수행합니다.
REAL 형식의 비트에 대한 설명은 3.5.4 “기본 데 증분 프로그래밍의 경우 프로그램 라이브러리 카
이터 형식” 을 참조하십시오. 탈로그의 ‘부동 소수점 함수’ 아래에 산술 연산이

208
11.1 산술 연산 처리

彚微庲͑塚挚͑毒姢͑;͵͑͢͢͡汞͑儘櫖垚͑岂娚橎͑埮氊汞͑儇壊儆͑磲穮夯城埪͑͟
決͑儇壊汞͑斲汾͙ΤΚΟΖ͚͑儘決͑旣昷夞檺͑彚微庲͑塚挚͑毒姢͑;͵͑ͥ͢͡櫖͑洆沫夯城埪͟

‫;׎‬ΒΥΙ·ΒΝΦΖ͢‫͑׏‬懆朞汞͑儘櫖͑堆穢͑洢凷匂決͑旣昷夞檺͑‫;׎‬ΒΥΙ΃ΠΠΥ‫͑׏‬懆朞櫖͑洆沫夯城埪͟

͔΃ΖΤΦΝΥ͑懆朞櫖垚͑Ζ歆͔͑ͶΩΡΠΟΖΟΥ汞͑彷朞儆͑磲穮夯城埪͟

그림 11.1 산술 연산 예

있습니다. 프로그램 라이브러리 카탈로그를 보려면 산 박스의 결과를 후속 연산 박스의 입력값으로 사


보기 → 개요를 선택하고 [Ctrl -K]를 누르거나 삽입 용하고자 하는 경우 임시 로컬 데이터 영역의 변수
→ 프로그램 구성요소를 선택하십시오. 가 편리한 중간 버퍼 역할을 합니다.

1개의 Rung 안에 여러 개의 산술 연산 박스를 정


Rung에 산술 연산 사용(LAD) 렬한 경우(왼쪽 회선에 병렬로, 그 다음에는 계속 직
입력 EN 이전과 출력 ENO 다음에 접점을 직렬 및 렬로 연결) 먼저 최상위 분기에 있는 연산 박스를 왼
병렬로 연결할 수 있습니다. 쪽에서 오른쪽 순으로 처리합니다. 그런 다음 두 번
산술 연산 박스 자체는 T-분기 다음이나 왼쪽 회 째 분기에 있는 연산 박스를 왼쪽에서 오른쪽 순으
선에 직접 연결되는 분기 안에 위치시킬 수 있습니 로 처리하는 식으로 처리가 계속됩니다.
다. 이 분기는 입력 EN 앞에 접점을 가질 수 있으며 산술 연산의 표시 및 정렬에 대한 더 많은 예를 보
최상위 분기가 아니어도 됩니다. 려면 ‘LAD_Book’ 라이브러리의 ‘디지털 함수’
왼쪽 회선에 직접 연결된 경우 산술 연산 박스를 프로그램(FB 111)을 참조하십시오. 이 라이브러리
병렬로 연결할 수 있습니다. 연산 박스를 병렬로 연 는 출판사의 웹 사이트에서 다운로드할 수 있습니다
결할 때는 Rung을 종결시키기 위한 코일이 필요합 (8 페이지 참조).
니다. 오류 평가를 제공하지 않는 경우 임시 로컬 데
이터 비트와 같은 ‘더미’ 피연산자를 코일에 할당 논리 회로에 산술 연산 사용(FBD)
합니다. 산술 연산 박스를 특정 조건에 따라 처리하고 싶
산술 연산 박스는 직렬로 연결할 수 있습니다. 선 다면 입력 EN 앞에 이진 논리 연산을 프로그래밍하
행 연산 박스의 출력 ENO가 후속 연산 박스의 입력 면 됩니다. 출력 ENO를 다른 함수의 이진 입력과 연
EN에 연결된 경우 선행 연산 박스가 오류 없이 완료 결시킬 수 있습니다. 예를 들어 산술 연산을 직렬로
된 경우에만 후속 연산 박스가 처리됩니다. 선행 연 배열하면 선행 상자의 출력 ENO를 후속 상자의 입

209
11 산술 연산

력 EN과 연결시킬 수 있습니다. 선행 연산 박스의 11.3 ARC 연산


계산 결과를 후속 연산 박스의 입력값으로 사용하고
자 하는 경우 임시 로컬 데이터 영역의 변수가 훌륭 ARC 연산(역삼각 함수)은 다음과 같습니다.
한 중간 버퍼 역할을 합니다. ASIN 아크 사인

EN과 ENO는 연결시킬 필요가 없습니다. ACOS 아크 코사인


ATAN 아크 탄젠트
산술연산의 표시 및 정렬에 대한 더 많은 예를 보
ARC 연산은 삼각 함수의 역함수입니다. ARC 연
려면 ‘FBD_Book’ 라이브러리의 ‘디지털 함수’
산은 입력 IN에서 특정 범위 내의 값을 취해 각을 라
프로그램(FB 111)을 참조하십시오. 이 라이브러리
디안 단위로 반환합니다(표 11.1 참조).
는 출판사의 웹 사이트에서 다운로드할 수 있습니다
(8 페이지 참조). 허용 값 범위가 입력 IN의 값을 초과하는 경우
ARC 연산은 유효하지 않은 REAL 수를 반환하고
ENO는 ‘0’ 이 되며 상태 비트 CC0, CC1, OV 및
OS를 ‘1’ 로 설정합니다.
11.2 삼각 함수

삼각 함수는 아래와 같습니다.


11.4 기타 산술 연산
SIN 사인
COS 코사인 다음과 같은 산술 연산도 사용할 수 있습니다.
TAN 탄젠트
SQR 수의 제곱 계산
삼각 함수는 라디안으로 표시된 각을 입력의 SQRT 수의 제곱근 계산
REAL 수로 취합니다. EXP e를 밑으로 하는 지수 계산

각의 크기는 표시하는 데는 보통 두 가지 단위가 LN 자연 로그 구하기 (e를 밑으로 하는 로그)

사용됩니다. 0 ° ~360 ° 사이의 도( ° 로 표시하는


방법과 0~2π(여기서 π = +3.141593e+00) 사이의 제곱 계산
라디안으로 표시하는 방법이 있습니다. 두 단위는 SQR 함수는 입력 IN의 값을 제곱하여 그 결과를
서로 비례해서 변환이 가능합니다. 예를 들어 각도 출력 OUT에 저장합니다.
90 ° 를 라디안으로 계산하면 π/2 또는
예: ‘제곱근 계산’ 을 참조하십시오.
+1.570796e+00이 됩니다. 값이 2π
(+6.283185e+00)보다 큰 경우 2π 또는 2π의 배수
제곱근 계산
를 삼각 함수의 입력값이 2π보다 작아질 때까지 뺍
SQRT 함수는 입력 IN에 있는 값의 제곱근을 추출
니다.
하여 그 결과를 출력 OUT에 저장합니다. 입력 IN의
예 (그림 11.2 또는 그림 11.3, 네트워크 4): 유휴 값이 0보다 작은 경우 SQRT는 상태 비트 CC0,
전력 계산 Ps = U · I · sin(ϕ) CC1, OV 및 OS를 ‘1’ 로 설정하고 유효하지 않
은 REAL 수를 반환합니다. 입력 IN의 값이 -0(마이
표 11.1 ARC 연산의 범위
너스 0)인 경우 -0이 반환됩니다.
함수 허용 범위 반환 값 2 2
예: c = a +b
ASIN -1 - +1 -π/2 ~ +π/2
ACOS -1 - +1 0~π 그림 11.2 또는 그림 11.3의 네트워크 5: 먼저 변
ATAN 전체 범위 -π/2 ~ +π/2 수 a와 b의 제곱을 구한 다음 두 제곱값을 더합니다.

210
11.4 기타 산술 연산

그림 11.2 산술 연산 예(LAD)

이 합에서 제곱근을 추출합니다. 임시 로컬 데이터 자연 로그 구하기


가 중간 메모리로 사용됩니다. LN 함수는 입력 N의 숫자에서 e를 밑으로 하는 자
(a 또는 b를 로컬 변수로 선언한 경우 편집기가 로 연 로그(= 2.718282e+00)를 구해 출력 OUT에 저장
컬 변수로 인식할 수 있도록 a 또는 b 앞에 #을 붙여 합니다. 입력 IN의 값이 0과 같거나 작은 경우 LN은
야 합니다. a 또는 b가 글로벌 변수인 경우 양쪽에 상태 비트 CC0, CC1, OV 및 OS를 ‘1’ 로 설정하
따옴표를 붙여야 합니다.) 고 유효하지 않은 REAL 수를 반환합니다.
자연 로그는 지수 함수의 역함수입니다. y = ex인
e를 밑으로 하는 지수 계산 경우 x = ln y가 됩니다.

EXP 함수는 e를 밑으로 하는 지수값(= 로그를 구하려면 다음 공식을 사용하십시오.


2.718282e+00)과 입력 IN의 값(eIN)을 계산하여 그 log n a
log b a = ---------------
log n b
결과를 출력 OUT에 저장합니다.
여기서 밑인 b 또는 n에는 어떤 수든 대입할 수 있
다음 공식을 사용하여 어떤 지수값이든 계산할 수 습니다. n = e로 지정하면 자연 로그를 사용해 모든
있습니다. 밑에 대한 로그를 구할 수 있습니다.
ln a-
ab = eb ln a log b a = --------
ln b

211
11 산술 연산

그림 11.3 산술 연산 예(FBD)

10을 밑으로 하는 특수한 경우 다음 공식을 사용


합니다.
ln a
lg a = ------------- = 0.4342945 · ln a
ln 10

212
12 변환 기능

12 변환 기능

변환 기능은 변수의 데이터 형식을 변환합니다.


그림 12.1에 이 장에서 설명한 데이터 형식 변환이
간략히 정리되어 있습니다.

12.1 변환 기능 처리

표시

변환 연산 박스는 활성화 입력 EN과 활성화 출력


ENO와 더불어 1개의 입력 IN과 1개의 출력 OUT을
갖고 있습니다. 연산 박스안의 ‘헤더’ 는 실행된 변
환 기능을 표시합니다. 예를 들어 I_BCD는 INT를
BCD로 변환한다는 뜻입니다. 그림 12.1 변환 기능 개요

데이터 형식의 비트에 대한 설명은 3.5.4 “기본


데이터 형식” 을 참조하십시오.

함수

변환 기능은 활성화 입력에 ‘1’ 이 존재하거나


입력 EN에 전류가 흐를 때 실행됩니다. 변환 중 오
류가 발생하면 활성화 출력 ENO는 ‘0’ 으로 설정
변환할 값은 입력 IN에 있고 변환의 결과는 출력 됩니다. 오류가 발생하지 않으면 ‘1’ 로 설정됩니
OUT에 있습니다. 입력과 출력의 데이터 형식은 각 다. 함수의 실행이 활성화되지 않은 경우(EN =
변환 기능에 따라 달라집니다. 예를 들어 DINT를 ‘0’ ) 변환이 되지 않고 ENO 역시 ‘0’ 이 됩니다.
REAL로 변환하는 변환 기능 DI_R의 경우 입력의 데
IF EN == ‘1’ 또는 연결되지 않은 경우
이터 형식은 DINT, 출력의 데이터 형식은 REAL입니
THEN ELSE
다. 적용된 변수는 입력 또는 출력과 데이터 형식이 OUT := Confct (IN)
동일해야 합니다. 절대 주소가 포함된 피연산자를 IF 오류가 발생한 경우
사용하는 경우 피연산자의 크기가 데이터 형식과 일 THEN ELSE
치해야 합니다. 예를 들어 데이터 형식이 INT인 경 ENO := ‘0’ ENO := ‘1’ ENO := ‘0’
우 워드 피연산자를 사용할 수 있습니다. Confct를 변환 기능으로 사용

213
12 변환 기능

彚微庲͑塚挚͑毒姢͑;͵͑ͣ͢͡汞͑儘決͑ͺͿ΅͑朞嵢͑空昣夞檺͑彚微庲͑塚挚͑毒姢͑;͵͑ͣͣ͢櫖͑
ͳʹ͵͑朞嵢͑洆沫夯城埪͟

‫ʹ׎‬ΠΟΧΖΣΥ͵ͺͿ΅‫͑׏‬懆朞汞͑儘決͑͵ͺͿ΅͑朞嵢͑空昣夞檺͑‫ʹ׎‬ΠΟΧΖΣΥ΃ͶͲͽ‫͑׏‬懆朞櫖͑柪朞嵢͑
洆沫夯城埪͟

洎堆儘決͔͑͵ΚΤΡΝΒΪ͑懆朞櫖昢͑旣昷夯城埪͟

그림 12.2 변환 기능의 예

마스터 제어 릴레이(MCR)가 활성인 상태에서 변 증분 프로그래밍의 경우 프로그램 라이브러리 카


환 기능을 처리하면(EN = ‘1’ ) 출력 OUT은 0으 탈로그의 ‘비교 연산자’ 아래에 변환 기능이 있습
로 설정됩니다. MCR은 출력 ENO에 영향을 미치지 니다. 프로그램 라이브러리 카탈로그를 보려면 보기
않습니다. → 개요를 선택하고 [Ctrl -K]를 누르거나 삽입 → 프
로그램 구성요소를 선택하십시오.
모든 변환 기능이 오류를 보고하는 것은 아닙니
다. I_BCD와 DI_BCD의 경우 허용 숫자 범위를 초과
했을 때, FLOOR, CEIL, ROUND, TRUNC의 경우 유 Rung에 변환 기능 사용(LAD)
효하지 않은 REAL 수가 지정되었을 때만 오류가 발 입력 EN 이전과 출력 ENO 다음에 접점을 직렬 및
생합니다. 병렬로 연결할 수 있습니다.

BCD_I 또는 BCD_DI 변환의 입력값에 유사 4분할 변환 연산 박스 자체는 T-분기 다음이나 왼쪽 회


이 포함된 경우 프로그램 실행이 인터럽트되며 프로 선에 직접 연결되는 분기 안에 위치시킬 수 있습니
그래밍 오류로 조직 블록 OB 121이 호출됩니다. 다. 이 분기는 입력 EN 앞에 접점을 가질 수 있으며
최상위 분기가 아니어도 됩니다.
변환 기능이 상태 비트를 어떻게 설정하는지는
왼쪽 회선에 직접 연결된 경우 변환 연산 박스를
15 “상태 비트” 에 설명되어 있습니다.
병렬로 연결할 수 있습니다. 연산 박스를 병렬로 연
그림 12.2는 각 데이터 형식의 예를 보여 줍니다. 결할 때는 Rung을 종결시키기 위한 코일이 필요합
변환 기능은 절대 주소가 포함된 피연산자를 사용할 니다. 오류 평가를 제공하지 않는 경우 임시 로컬 데
때 데이터 형식이 선언되지 않은 경우라 해도 지정 이터 비트와 같은 ‘더미’ 피연산자를 코일에 할당
된 조건에 따라 변환을 수행합니다. 합니다.

214
12.2 INT 및 DINT 수의 변환

변환 연산 박스는 직렬로 연결할 수 있습니다. 선 12.2 INT 및 DINT 수의 변환


행 연산 박스의 출력 ENO가 후속 연산 박스의 입력
EN에 연결된 경우 선행 연산 박스가 오류 없이 완료 표 12.1는 INT 및 DINT 수를 위한 변환 기능을 보
된 경우에만 후속 연산 박스가 처리됩니다. 선행 연 여 줍니다. 연산 박스의 입력과 출력에는 지정된 데
산 박스의 결과를 후속 연산 박스의 입력값으로 사 이터 형식의 변수나 크기가 일치하는 절대 주소가
용하고자 하는 경우 임시 로컬 데이터 영역의 변수 포함된 피연산자를 적용해야 합니다(예: 데이터 형
가 편리한 중간 버퍼 역할을 합니다. 식이 INT인 경우 워드 피연산자).

1개의 Rung 안에 여러 개의 변환 연산 박스를 정


렬한 경우(왼쪽 회선에 병렬로, 그 다음에는 계속 직 INT에서 DINT로 변환
렬로 연결) 먼저 최상위 분기에 있는 연산 박스를 왼 함수 I_DI는 입력 IN의 값을 INT 데이터 형식의 숫
쪽에서 오른쪽 순으로 처리합니다. 그런 다음 두 번 자로 해석하고 이 값을 출력 OUT의 하위 워드로 전
째 분기에 있는 연산 박스를 왼쪽에서 오른쪽 순으 송합니다. 입력의 비트 15(사인 비트) 신호 상태가
로 처리하는 식으로 처리가 계속됩니다. 출력 OUT에 있는 상위 워드의 비트 16~31로 전송
됩니다.
변환 기능의 표시 및 정렬에 대한 더 많은 예를 보
려면 ‘LAD_Book’ 라이브러리의 ‘디지털 함수’ INT에서 DINT로의 변환은 오류를 보고하지 않습
프로그램(FB 111)을 참조하십시오. 이 라이브러리 니다.
는 출판사의 웹 사이트에서 다운로드할 수 있습니다
(8 페이지 참조).
INT에서 BCD로 변환

함수 I_BCD는 입력 IN의 값을 INT 데이터 형식의


논리 회로에 변환 기능 사용(FBD)
숫자로 해석하고 출력 OUT에서 이 값을 30진 BCD
변환 연산 박스를 특정 조건에 따라 처리하고 싶 수로 변환합니다. 오른쪽 정렬된 30진수는 10진수
다면 입력 EN 앞에 이진 논리 연산을 배열하면 됩니 의 절대값입니다. 부호는 비트 12~15에 표시됩니
다. 출력 ENO를 다른 함수의 이진 입력과 연결시킬 다. 모든 비트가 ‘0’ 이면 부호가 플러스이고, 모
수 있습니다. 예를 들어 변환 연산 박스를 직렬로 배 든 비트가 ‘1’ 이면 부호가 마이너스입니다.
열하면 선행 연산 박스의 출력 ENO를 후속 연산 박
INT 수가 너무 커서(> 999) BCD로 변환할 수 없
스의 입력 EN에 연결시킬 수 있습니다. 선행 연산
는 경우 I_BCD 함수는 상태 비트 OV와 OS를 설정
박스의 결과를 후속 연산 박스의 입력값으로 사용하
합니다. 변환은 실행되지 않습니다.
고자 하는 경우 임시 로컬 데이터 영역의 변수가 훌
륭한 중간 버퍼 역할을 합니다.
DINT에서 BCD로 변환
EN과 ENO는 연결시킬 필요가 없습니다.
함수 DI_BCD는 입력 IN의 값을 DINT 데이터 형식
변환 기능의 표시 및 정렬에 대한 더 많은 예를 보 의 숫자로 해석하고 출력 OUT에서 이 값을 70진
려면 ‘FBD_Book’ 라이브러리 의 ‘디지털 함수’ BCD 수로 변환합니다. 오른쪽 정렬된 70진수는 10
프로그램(FB 111)을 참조하십시오. 이 라이브러리 진수의 절대값입니다. 부호는 비트 28~31에 표시
는 출판사의 웹 사이트에서 다운로드할 수 있습니다 됩니다. 모든 비트가 ‘0’ 이면 부호가 플러스이고,
(8 페이지 참조). 모든 비트가 ‘1’ 이면 부호가 마이너스입니다.

215
12 변환 기능

DINT 수가 너무 커서(> 9 999 999) BCD로 변환 BCD에서 INT로 변환


할 수 없는 경우 상태 비트 OV와 OS가 설정됩니다.
함수 BCD_I는 입력 IN의 값을 30진 BCD 수로 해
변환은 실행되지 않습니다.
석하고 출력 OUT에서 이 값을 INT 수로 변환합니
다. 오른쪽 정렬된 30진수는 10진수의 절대값입니
다. 부호는 비트 12~15에 표시됩니다. 모든 비트가
표 12.1 INT 및 DINT 수의 변환
‘0’ 이면 부호가 플러스이고, 모든 비트가 ‘1’ 이
데이터 형식 변환 연산 박스 파라미터의 데이터
유형 면 부호가 마이너스입니다. 이 변환에서는 비트 15
IN OUT 만 고려합니다.
INT에서 DINT로 I_DI INT DINT
BCD 수에 유사 4분할(숫자 값 10~15 또는 16진
INT에서 BCD로 I_BCD INT WORD
수인 경우 A~F)이 포함된 경우 CPU는 프로그래밍
DINT에서 BCD로 DI_BCD DINT DWORD
오류(동기화 오류)를 표시하고 조직 블록 OB 121를
DINT에서 REAL로 DI_R DINT REAL
호출합니다. 이 블록을 사용할 수 없는 경우 CPU는
정지로 전환됩니다.
DINT에서 REAL로 변환
함수 BCD_I는 상태 비트를 설정하지 않습니다.
함수 DI_R은 입력 IN의 값을 DINT 데이터 형식의
숫자로 해석하고 출력 OUT에서 이 값을 REAL 수로
BCD에서 DINT로 변환
변환합니다.
함수 BCD_DI는 입력 IN의 값을 70진 BCD 수로
DINT 형식의 숫자는 REAL 형식의 숫자보다 정밀 해석하고 출력 OUT에서 이 값을 DINT 수로 변환합
도가 더 높기 때문에 변환 중에 반올림이 실행됩니 니다. 오른쪽 정렬된 70진수는 10진수의 절대값입
다. REAL 수는 그 다음 정수로 반올림됩니다 니다. 부호는 비트 28~31에 표시됩니다. 이 비트가
(ROUND 함수에 따라 반올림). ‘0’ 이면 부호가 플러스이고, 이 비트가 ‘1’ 이
면 부호가 마이너스입니다. 이 변환에서는 31비트
DI_R 함수는 오류를 보고하지 않습니다.
만 고려합니다.

BCD 수에 유사 4분할(숫자 값 10~15 또는 16진


수인 경우 A~F)이 포함된 경우 CPU는 프로그래밍
12.3 BCD 수 변환 오류(동기화 오류)를 표시하고 조직 블록 OB 121를
호출합니다. 이 블록을 사용할 수 없는 경우 CPU는
표 12.2는 BCD 수를 변환하는 함수를 보여 줍니
정지로 전환됩니다.
다. 연산 박스의 입력과 출력에는 지정된 데이터 형
식의 변수나 크기가 일치하는 절대 주소가 포함된 함수 BCD_I는 상태 비트를 설정하지 않습니다.
피연산자를 적용해야 합니다(예: 데이터 형식이 INT
인 경우 워드 피연산자).

표 12.2 BCD 수 변환 12.4 REAL 수 변환


데이터 형식 변환 연산 박스 파라미터의 데이터
유형 REAL 형식의 숫자를 DINT 형식으로 변환(분수
IN OUT 값을 정수로 변환)하는 함수는 몇 가지가 있습니다(
BCD에서 INT로 BCD_I WORD INT 표 12.3 참조). 각 함수는 반올림 측면에서 차이가
BCD에서 DINT로 BCD_DI DWORD DINT 있습니다. 연산 박스의 입력과 출력에는 지정된 데

216
12.4 REAL 수 변환

이터 형식의 변수나 크기가 일치하는 절대 주소가 하지 않는 경우 CEIL은 상태 비트 OV 및 OS를 설정


포함된 피연산자를 적용해야 합니다. 합니다. 변환은 실행되지 않습니다.

표 12.3 REAL 수를 DINT 수로 변환


반올림이 포함된 연산 박스 파라미터의 데이터 그 아래의 정수로 반올림
데이터 형식 변환 유형
함수 FLOOR는 입력 IN의 값을 REAL 형식의 숫자
IN OUT
그 아래의 정수로 CEIL REAL DINT
로 해석하고 출력 OUT에서 이 값을 DINT 형식의 숫
반올림 자로 변환합니다. FLOOR는 변환된 숫자보다 작거
그 아래의 정수로 FLOOR REAL DINT 나 같은 정수를 반환합니다.
반올림
그 다음 정수로 반 ROUND REAL DINT 입력 IN의 값이 DINT 형식의 수에 허용된 범위보
올림
다 크거나 작은 경우, 또는 REAL 형식의 수와 일치
반올림 안함 TRUNC REAL DINT
하지 않는 경우 FLOOR는 상태 비트 OV 및 OS를 설
정합니다. 변환은 실행되지 않습니다.
그 위의 정수로 반올림

함수 CEIL은 입력 IN의 값을 REAL 형식의 숫자로 그 다음 정수로 반올림


해석하고 출력 OUT에서 이 값을 DINT 형식의 숫자
함수 ROUND는 입력 IN의 값을 REAL 형식의 숫
로 변환합니다. CEIL은 변환된 숫자보다 크거나 같
자로 해석하고 출력 OUT에서 이 값을 DINT 형식의
은 정수를 반환합니다.
숫자로 변환합니다. ROUND는 그 다음 정수를 반환
입력 IN의 값이 DINT 형식의 수에 허용된 범위보 합니다. 결과가 정확히 홀수와 짝수 중간인 우선적
다 크거나 작은 경우, 또는 REAL 형식의 수와 일치 으로 짝수로 반올림 합니다.

표 12.4 REAL 수 변환의 반올림 모드


입력값 결과
REAL DW#16# ROUND CEIL FLOOR TRUNC
1.0000001 3F80 0001 1 2 1 1
1.00000000 3F80 0000 1 1 1 1
0.99999995 3F7F FFFF 1 1 0 0
0.50000005 3F00 0001 1 1 0 0
0.50000000 3F00 0000 0 1 0 0
0.49999996 3EFF FFFF 0 1 0 0
5.877476E-39 0080 0000 0 1 0 0
0.0 0000 0000 0 0 0 0
-5.877476E-39 8080 0000 0 0 -1 0
-0.49999996 BEFF FFFF 0 0 -1 0
-0.50000000 BF00 0000 0 0 -1 0
-0.50000005 BF00 0001 -1 0 -1 0
-0.99999995 BF7F FFFF -1 0 -1 0
-1.00000000 BF80 0000 -1 -1 -1 -1
-1.0000001 BF80 0001 -1 -1 -2 -1

217
12 변환 기능

입력 IN의 값이 DINT 형식의 수에 허용된 범위보 1로 바꾸거나 1을 0으로 바꿉니다. INV_DI 함수는
다 크거나 작은 경우, 또는 REAL 형식의 수와 일치 오류를 보고하지 않습니다.
하지 않는 경우 ROUND는 상태 비트 OV 및 OS를 설
정합니다. 변환은 실행되지 않습니다. 부정 INT
함수 NEG_I는 입력 IN의 값을 INT 수로 해석하고
반올림 안함 2의 보수를 생성해 신호 비트를 변경한 후 이 변환
함수 TRUNC는 입력 IN의 값을 REAL 형식의 숫 된 값을 출력 OUT에 씁니다. NEG_I는 -1로 곱하는
자로 해석하고 출력 OUT에서 이 값을 DINT 형식의 것과 같습니다. 함수 NEG_I는 상태 비트 CC0, CC1,
숫자로 변환합니다. TRUNC는 변환된 숫자의 정수 OV 및 OS를 설정합니다.
부를 반환합니다. 소수부는 ‘잘라냅니다’ .
표 12.5 기타 변환 기능
입력 IN의 값이 DINT 형식의 수에 허용된 범위보
변환 연산 박스 파라미터의 데이터
다 크거나 작은 경우, 또는 REAL 형식의 수와 일치 유형
하지 않는 경우 TRUNC는 상태 비트 OV 및 OS를 설 IN OUT
정합니다. 변환은 실행되지 않습니다. 1의 보수 INT INV_I INT INT
1의 보수 DINT INV_DI DINT DINT
REAL에서 DINT로의 변환 요약 INT 수의 부정 NEG_I INT INT
표 12.4는 REAL을 DINT로 변환하는 여러 함수의 DINT 수의 부정 NEG_DI DINT DINT

변환 결과를 보여 줍니다. 예에서는 범위를 -1 ~ +1 REAL 수의 부정 NEG_R REAL REAL


REAL 수의 절대값 ABS REAL REAL
로 선택했습니다.

부정 DINT
함수 NEG_DI는 입력 IN의 값을 DINT 수로 해석하
12.5 기타 변환 함수
고 2의 보수를 생성해 신호 비트를 변경한 후 이 변
그 외 1의 보수 생성, 부정 및 REAL 수의 절대값 환된 값을 출력 OUT에 씁니다. NEG_DI는 -1로 곱
생성과 같은 변환 기능을 사용할 수 있습니다( 하는 것과 같습니다. 함수 NEG_DI는 상태 비트
표 12.5 참조). 연산 박스의 입력과 출력에는 지정 CC0, CC1, OV 및 OS를 설정합니다.
된 데이터 형식의 변수나 크기가 일치하는 절대 주
소가 포함된 피연산자를 적용해야 합니다. 예를 들 부정 REAL
어 데이터 형식이 DINT인 경우 더블 워드 피연산자 함수 NEG_R은 입력 IN의 값을 REAL 수로 해석하
를 적용합니다. 고 이 수를 -1로 곱하여 그 곱을 출력 OUT에 씁니
다. NEG_R은 유효하지 않은 REAL 수에 대해서도
1의 보수 INT 가수의 신호 비트를 변경합니다. NEG_R은 오류를
함수 INV_I는 입력 IN의 값을 비트 단위로 부정하 보고하지 않습니다.
여 그 결과를 출력 OUT에 씁니다. INV_I는 0을 1로
바꾸거나 1을 0으로 바꿉니다. INV_I 함수는 오류를 절대값 생성 REAL
보고하지 않습니다. ABS 함수는 입력 IN의 값을 REAL 수로 해석하고
이 수의 절대값을 생성하여 출력 OUT에 절대값을
1의 보수 DINT 씁니다. ABS는 유효하지 않은 REAL 수에 대해서도
함수 INV_DI는 입력 IN의 값을 비트 단위로 부정 가수의 신호 비트를 ‘0’ 으로 설정합니다. ABS는
하여 그 결과를 출력 OUT에 씁니다. INV_DI는 0을 오류를 보고하지 않습니다.

218
13 시프트 연산

13 시프트 연산

시프트 연산은 변수의 내용을 왼쪽 또는 오른쪽으 표 13.1 시프트 연산 개요


로 비트 단위로 시프트합니다. 시프트된 비트는 유 시프트 연산 워드 변수 더블 워드 변수
실되거나 변수의 반대쪽을 채우는 데 사용됩니다. 왼쪽으로 시프트 SHL_W SHL_DW
표 13.1에 시프트 연산이 간략히 정리되어 있습니 오른쪽으로 시프트 SHR_W SHR_DW
다. 부호를 포함한 시트프 SHR_I SHR_DI
왼쪽으로 회전 - ROL_DW
오른쪽으로 회전 - ROR_DW

13.1 시프트 연산 처리 기가 데이터 형식과 일치해야 합니다. 예를 들어 데


이터 형식이 INT인 경우 워드 피연산자를 사용할 수
표시
있습니다. 모든 시프트 연산에서 입력 N의 데이터
시프트 연산 박스는 1개의 활성화 입력 EN과 1개
형식은 WORD입니다.
의 활성화 출력 ENO와 더불어 2개의 입력 IN과 N,
1개의 출력 OUT을 갖고 있습니다. 연산 박스 안의 각 데이터 형식에 대한 설명은 3.5.4 “기본 데이
‘헤더’ 는 실행된 시프트 연산을 표시합니다. 예를 터 형식” 을 참조하십시오.
들어 SHL_W는 워드 변수를 왼쪽으로 시프트한다는
의미입니다. 함수
시프트 연산은 활성화 입력에 ‘1’ 이 존재하거
나 입력 EN에 ‘전력’ 이 흐를 때 실행됩니다. ENO
는 ‘1’ 이 됩니다. 함수의 실행이 활성화되지 않
은 경우(EN = ‘0’ ) 시프트가 실행되지 않고 ENO
역시 ‘0’ 이 됩니다.
IF EN == ‘1’ 또는 연결되지 않은 경우
THEN ELSE
OUT := Sfct (IN, N)
ENO := ‘1’ ENO := ‘0’
Sfct를 시프트 연산으로 사용
시프트된 값은 입력 IN에, 시프트한 자리 수는 입
력 N에, 결과는 출력 OUT에 있습니다. 입력과 출력
마스터 제어 릴레이(MCR)가 활성화된 상태에서
은 시프트 연산에 따라 다른 데이터 형식을 갖습니
시프트 연산을 처리하면(EN = ‘1’ ) 출력 OUT은
다. 예를 들어 시프트 연산 SHR_DW(더블 워드 변수
0으로 설정됩니다. MCR은 출력 ENO에 영향을 미
를 오른쪽으로 시프트)의 경우 입력과 출력의 데이
치지 않습니다.
터 형식이 DWORD입니다. 적용된 변수는 입력 또는
출력과 데이터 형식이 동일해야 합니다. 절대 주소 시프트 연산이 상태 비트를 어떻게 설정하는지는
가 포함된 피연산자를 사용하는 경우 피연산자의 크 15 “상태 비트” 에 설명되어 있습니다.

219
13 시프트 연산

彚微庲͑毒姢͑;Έ͑ͤ͢͡汞͑儘決͑殂濃求嵢͑ͥ埮凊͑決壟夢͑篊͑彚微庲͑毒姢͑;Έ͑ͤͣ͢櫖͑
洆沫夯城埪͟

‫΄׎‬ΙΚΗΥ΀Ο‫͑׏‬懆朞汞͑儘決͑‫΄׎‬ΙΚΗΥ΁ΠΤ‫͑׏‬氊獞廒疂͑欪幾濃求嵢͑決壟夢͑篊͑‫΄׎‬ΙΚΗΥ΀ΗΗ‫׏‬櫖͑
洆沫夯城埪͟

͔ͲΔΥ·ΒΝ͑懆朞儆͑抆笾歆͑穮叞͑欪幾濃求嵢͑ͣ埮凊͑決壟夢͑篊͔͑͵ΚΤΡΝΒΪ͑懆朞櫖͑
洊埲夯城埪͟

그림 13.1 시프트 연산 예

예 왼쪽 회선에 직접 연결된 경우 시프트 연산 박스


그림 13.1은 다양한 시프트 함수의 예를 보여 줍 를 병렬로 연결할 수 있습니다. 연산 박스를 병렬로
니다. 연결할 때는 Rung을 종결시키기 위한 코일이 필요
합니다. 오류 평가를 제공하지 않는 경우 임시 로컬
증분 프로그래밍의 경우 프로그램 라이브러리 카
데이터 비트와 같은 ‘더미’ 피연산자를 코일에 할
탈로그의 ‘시프트/회전’ 아래에 시프트 연산이 있
당합니다.
습니다. 프로그램 라이브러리 카탈로그를 보려면 보
시프트 연산 박스는 직렬로 연결할 수 있습니다.
기 → 개요를 선택하고 [Ctrl -K]를 누르거나 삽입 →
선행 연산 박스의 출력 ENO가 후속 연산 박스의 입
프로그램 구성요소를 선택하십시오.
력 EN에 연결된 경우 다음 연산 박스는 항상 처리됩
니다. 선행 연산 박스의 결과를 후속 연산 박스의 입
Rung에 시프트 연산 사용(LAD)
력값으로 사용하고자 하는 경우 임시 로컬 데이터
입력 EN 이전과 출력 ENO 다음에 접점을 직렬 및 영역의 변수를 이용하여 쉽게 중간 버퍼를 만들 수
병렬로 연결할 수 있습니다. 있습니다.
시프트 연산 박스 자체는 T-분기 다음이나 왼쪽 1개의 Rung 안에 여러 개의 연산 박스를 정렬한
회선에 직접 연결되는 분기 안에 위치시킬 수 있습 경우(왼쪽 회선에 병렬로, 그 다음에는 계속 직렬로
니다. 이 분기는 입력 EN 앞에 접점을 가질 수 있으 연결) 먼저 최상위 분기에 있는 연산 박스를 왼쪽에
며 최상위 분기가 아니어도 됩니다. 서 오른쪽 순으로 처리합니다. 그런 다음 두 번째 분

220
13.2 시프트

기에 있는 연산 박스를 왼쪽에서 오른쪽 순으로 처 15보다 크면 SHL_W 함수 실행 후 출력 변수에 0이


리하는 식으로 처리가 계속됩니다 포함됩니다.

시프트 연산의 표시 및 정렬에 대한 더 많은 예를


보려면 ‘LAD_Book’ 라이브러리의 ‘디지털 함 더블 워드 변수를 왼쪽으로 시프트
수’ 프로그램(FB 111)을 참조하십시오. 이 라이브 시프트 함수 SHL_DW는 입력 IN에 있는 DWORD
러리는 출판사의 웹 사이트에서 다운로드할 수 있습 변수의 내용을 입력 N의 시프트 수에 지정된 자릿수
니다(8 페이지 참조). 만큼 왼쪽으로 비트 단위로 시프트합니다. 시프트
로 인해 공백이 된 비트 자리는 0으로 채웁니다. 시
Rung에 시프트 연산 사용(FBD) 프트 결과는 출력 OUT의 DWORD 변수에 저장됩니
시프트 연산 박스를 특정 조건에 따라 처리하고 다.
싶다면 입력 EN 앞에 이진 논리 연산을 배열하면 됩 입력 N의 시프트 수는 비트 자릿수를 지정합니
니다. 출력 ENO를 다른 함수의 이진 입력과 연결시 다. 이 자릿수만큼 변수의 내용이 시프트됩니다. 시
킬 수 있습니다. 예를 들어 시프트 연산 박스를 직렬 프트 수는 상수 또는 변수일 수 있습니다. 시프트 수
로 배열하면 선행 연산 박스의 출력 EBO를 후속 연 가 0이면 함수가 실행되지 않습니다. 시프트 수가
산 박스의 출력 EN에 연결시킬 수 있습니다. 선행 31보다 크면 SHL_DW 함수 실행 후 출력 변수에 0
연산 박스의 결과를 후속 연산 박스의 입력값으로 이 포함됩니다.
사용하고자 하는 경우 임시 로컬 데이터 영역의 변
수가 편리한 중간 버퍼 역할을 합니다.
워드 변수를 오른쪽으로 시프트
EN과 ENO는 연결시킬 필요가 없습니다.
시프트 함수 SHR_W는 입력 IN에 있는 WORD 변
시프트 연산의 표시 및 정렬에 대한 더 많은 예를 수의 내용을 입력 N의 시프트 수에 지정된 자릿수만
보려면 ‘FBD_Book’ 라이브러리의 ‘디지털 함 큼 오른쪽으로 비트 단위로 시프트합니다. 시프트
수’ 프로그램(FB 111)을 참조하십시오. 이 라이브 로 인해 공백이 된 비트 자리는 0으로 채웁니다. 시
러리는 출판사의 웹 사이트에서 다운로드할 수 있습 프트 결과는 출력 OUT의 WORD 변수에 저장됩니
니다8 페이지 참조). 다.

입력 N의 시프트 수는 비트 자릿수를 지정합니


다. 이 자릿수만큼 변수의 내용이 시프트됩니다. 시
13.2 시프트 프트 수는 상수 또는 변수일 수 있습니다. 시프트 수
가 0이면 함수가 실행되지 않습니다. 시프트 수가
워드 변수를 왼쪽으로 시프트 15보다 크면 SHR_W 함수 실행 후 출력 변수에 0이
시프트 함수 SHL_W는 입력 IN에 있는 WORD 변 포함됩니다.
수의 내용을 입력 N의 시프트 수에 지정된 자릿수만
큼 왼쪽으로 비트 단위로 시프트합니다. 시프트로 더블 워드 변수를 오른쪽으로 시프트
인해 공백이 된 비트 자리는 0으로 채웁니다. 시프
시프트 연산 SHR_DW는 입력 IN에 있는 DWORD
트 결과는 출력 OUT의 WORD 변수에 저장됩니다.
변수의 내용을 입력 N의 시프트 수에 지정된 자릿수
입력 N의 시프트 수는 비트 자릿수를 지정합니 만큼 오른쪽으로 비트 단위로 시프트합니다. 시프
다. 이 자릿수만큼 변수의 내용이 시프트됩니다. 시 트로 인해 공백이 된 비트 자리는 0으로 채웁니다.
프트 수는 상수 또는 변수일 수 있습니다. 시프트 수 시프트 결과는 출력 OUT의 DWORD 변수에 저장됩
가 0이면 함수가 실행되지 않습니다. 시프트 수가 니다.

221
13 시프트 연산

입력 N의 시프트 수는 비트 자릿수를 지정합니 가 0이면 함수가 실행되지 않습니다. 시프트 수가


다. 이 자릿수만큼 변수의 내용이 시프트됩니다. 시 31보다 크면 SHR_DI 함수 실행 후 출력 변수의 모
프트 수는 상수 또는 변수일 수 있습니다. 시프트 수 든 비트 자리에 0이 들어갑니다.
가 0이면 함수가 실행되지 않습니다. 시프트 수가 데이터 형식이 DINT인 숫자의 경우 오른쪽으로
31보다 크면 SHR_DW 함수 실행 후 출력 변수에 0 시프트는 2를 밑으로 하는 지수로 나누기 하는 것과
이 포함됩니다. 같습니다. 지수가 시프트 수가 됩니다. 이러한 나누
기의 결과는 내림한 정수로 표시됩니다.
부호를 포함한 워드 변수 시프트
시프트 연산 SHR_I는 입력 IN에 있는 INT 변수의
내용을 입력 N의 시프트 수에 지정된 자릿수만큼 오
13.3 회전
른쪽으로 비트 단위로 시프트합니다. 시프트로 인
해 공백이 된 비트 자리는 비트 31의 신호 상태(INT 더블 워드 변수를 왼쪽으로 회전
수의 사인 비트)로 채웁니다. 즉, 숫자가 양수이면
시프트 연산 ROL_DW는 입력 IN에 있는 DWORD
‘0’ 을, 숫자가 음수이면 ‘1’ 로 공백을 채웁니
변수의 내용을 입력 N의 시프트 수에 지정된 자릿수
다. 시프트 결과는 출력 OUT의 INT 변수에 저장됩
만큼 왼쪽으로 비트 단위로 시프트합니다. 시프트
니다.
로 인해 공백이 된 비트 자리는 시프트된 비트 자리
입력 N의 시프트 수는 비트 자릿수를 지정합니 로 채웁니다. 시프트 결과는 출력 OUT의 DWORD
다. 이 자릿수만큼 변수의 내용이 시프트됩니다. 시 변수에 저장됩니다.
프트 수는 상수 또는 변수일 수 있습니다. 시프트 수
입력 N의 시프트 수는 비트 자릿수를 지정합니
가 0이면 함수가 실행되지 않습니다. 시프트 수가
다. 이 자릿수만큼 변수의 내용이 시프트됩니다. 시
15보다 크면 SHR_I 함수 실행 후 출력 변수의 모든
프트 수는 상수 또는 변수일 수 있습니다. 시프트 수
비트 자리에 0이 들어갑니다.
가 0이면 함수가 실행되지 않습니다. 시프트 수가
데이터 형식이 INT인 숫자의 경우 오른쪽으로 시 32면 입력 변수의 내용이 유지되고 상태 비트가 설
프트는 2를 밑으로 하는 지수로 나누기하는 것과 같 정됩니다. 시프트 수가 33이면 1개 자리가 시프트되
습니다. 지수가 시프트 수가 됩니다. 이러한 나누기 고 시프트 수가 34면 2개 자리가 시프트됩니다. 즉,
의 결과는 내림한 정수로 표시됩니다. 시프트는 모듈로 32 연산으로 실행됩니다.

부호를 포함한 더블 워드 변수 시프트 더블 워드 변수를 오른쪽으로 회전


시프트 연산 SHR_DI는 입력 IN에 있는 DINT 변수 시프트 연산 ROR_DW는 입력 IN에 있는 DWORD
의 내용을 입력 N의 시프트 수에 지정된 자릿수만큼 변수의 내용을 입력 N의 시프트 수에 지정된 자릿수
오른쪽으로 비트 단위로 시프트합니다. 시프트로 만큼 오른쪽으로 비트 단위로 시프트합니다. 시프
인해 공백이 된 비트 자리는 비트 15의 신호 상태 트로 인해 공백이 된 비트 자리는 시프트된 비트 자
(DINT 수의 사인 비트)로 채웁니다. 즉, 숫자가 양수 리로 채웁니다. 시프트 결과는 출력 OUT의
이면 ‘0’ 을, 숫자가 음수이면 ‘1’ 로 공백을 채 DWORD 변수에 저장됩니다.
웁니다. 시프트 결과는 출력 OUT의 DINT 변수에 저
입력 N의 시프트 수는 비트 자릿수를 지정합니
장됩니다.
다. 이 자릿수만큼 변수의 내용이 시프트됩니다. 시
입력 N의 시프트 수는 비트 자릿수를 지정합니 프트 수는 상수 또는 변수일 수 있습니다. 시프트 수
다. 이 자릿수만큼 변수의 내용이 시프트됩니다. 시 가 0이면 함수가 실행되지 않습니다. 시프트 수가
프트 수는 상수 또는 변수일 수 있습니다. 시프트 수 32면 입력 변수의 내용이 유지되고 상태 비트가 설

222
13.3 회전

정됩니다. 시프트 수가 33이면 1개 자리가 시프트되


고 시프트 수가 34면 2개 자리가 시프트됩니다. 즉,
시프트는 모듈로 32 연산으로 실행됩니다.

223
14 워드 논리

14 워드 논리

워드 논리 연산은 AND, OR 또는 EXCLUSIVE OR 표 14.1 워드 논리 연산 개요


에 따라 2개의 변수 값을 비트 단위로 조합합니다. 워드 논리 연산 사용 변수
이 논리 연산은 워드나 더블 워드에 적용할 수 있습 워드 변수 더블 워드변수
니다. 사용할 수 있는 워드 논리 연산 목록은 AND WAND_W WAND_DW
표 14.1을 참조하십시오. OR WOR_W WOR_DW
EXCLUSIVE OR WXOR_W WXOR_DW

함수
14.1 워드 논리 연산 처리
워드 논리 함수는 활성화 입력에 ‘1’ 이 존재하
표시 거나 입력 EN에 전력이 흐를 때 실행됩니다. 연산의

워드 논리 연산 박스는 활성화 입력 EN 및 활성화 실행이 활성화되지 않은 경우(EN = ‘0’ ) 연산이

출력 ENO와 더불어 2개의 입력 IN1과 IN2, 1개의 출 처리되지 않고 ENO 역시 ‘0’ 이 됩니다.

력 OUT을 갖고 있습니다. 연산 박스 안의 ‘헤더’ IF EN == ‘1’ 또는 연결되지 않은 경우


는 실행된 워드 논리 연산을 표시합니다. 예를 들어 THEN ELSE
WAND_W는 워드를 AND한다는 뜻입니다. OUT := IN1 Wlog IN2
ENO := ‘1’ ENO := ‘0’
Wlog를 워드 논리로 사용

마스터 제어 릴레이(MCR)가 활성인 상태에서 워


드 논리 연산을 실행하면(EN = ‘1’ ) 출력 OUT이
0으로 설정됩니다. MCR은 출력 ENO에 영향을 미
치지 않습니다.
워드 논리 연산은 비트 단위로 결과를 생성합니
다. 입력 IN1의 비트 0은 입력 IN2의 비트 0과 조합
되고 그 결과는 출력 OUT의 비트 0에 저장됩니다.
조합될 값은 입력 IN1 및 IN2에 있고 연산 결과는 비트 1, 비트 2 등도 동일한 방식으로 처리하며 비
출력 OUT에 있습니다. 입력과 출력은 연산에 따라 트 15 ~ 31까지 처리가 가능합니다. 표 14.2 는 단
다른 데이터 형식을 갖습니다. 워드(16비트) 연산의 일 비트의 결과 형식을 보여 줍니다.
경우 데이터 형식은 WORD, 더블 워드(32비트) 연 워드 논리 연산이 상태 비트를 어떻게 설정하는지
산의 경우 데이터 형식은 DWORD입니다. 적용된 변 는 15 “상태 비트” 에 설명되어 있습니다.
수는 입력 또는 출력과 데이터 형식이 동일해야 합
니다. 예
다양한 데이터 형식의 비트에 대한 설명은 그림 14.1는 각 워드 논리 연산의 예를 보여 줍니
3.5.4 “기본 데이터 형식” 을 참조하십시오. 다.

224
14.1 워드 논리 연산 처리

표 14.2 워드 논리 연산의 결과 형식 워드 논리 연산 박스 자체는 T-분기 다음이나 왼


입력 IN1의 내용 0 0 1 1 쪽 회선에 직접 연결되는 분기 안에 위치시킬 수 있
입력 IN2의 내용 0 1 0 1 습니다. 이 분기는 입력 EN 앞에 접점을 가질 수 있
AND를 사용한 결과 0 0 0 1 으며 최상위 분기가 아니어도 됩니다.
OR을 사용한 결과 0 1 1 1
EXCLUSIVE OR을 사용한 결과 0 1 1 0 왼쪽 회선에 직접 연결된 경우 워드 논리 연산 박
스를 병렬로 연결할 수 있습니다. 연산 박스를 병렬
증분 프로그래밍의 경우 프로그램 라이브러리 카 로 연결할 때는 Rung을 종결시키기 위한 코일이 필
탈로그의 ‘워드 논리’ 아래에 워드 논리 함수가 요합니다. 오류 평가를 제공하지 않는 경우 임시 로
있습니다. 프로그램 라이브러리 카탈로그를 보려면 컬 데이터 비트와 같은 ‘더미’ 피연산자를 코일에
할당합니다.
보기 → 개요를 선택하고 [Ctrl -K]를 누르거나 삽입
→ 프로그램 구성요소를 선택하십시오. 워드 논리 연산 박스는 직렬로 연결할 수 있습니
다. 선행 연산 박스의 출력 ENO가 후속 연산 박스의
입력 EN에 연결된 경우 후속 연산 박스는 항상 처리
Rung에 워드 논리 사용(LAD)
됩니다. 선행 연산 박스의 결과를 후속 연산 박스의
입력 EN 이전과 출력 ENO 다음에 접점을 직렬 및 입력값으로 사용하고자 하는 경우 임시 로컬 데이터
병렬로 배열할 수 있습니다. 영역의 변수가 편리한 중간 버퍼 역할을 합니다.

彚微庲͑毒姢͑;Έ͑ͥ͢͡汞͑旇氊͑捊瞾͑ͥ儢儆͑‫׏͡׎‬求嵢͑昪洛夞彶͑͝
冶刂垚͑彚微庲͑毒姢͑;Έ͑ͥͣ͢櫖͑洆沫夯城埪͟

‫׎‬ΈͽΠΘΚΔ·ΒΝΝ‫͑׏‬愕͑‫׎‬ΈͽΠΘΚΔ·ΒΝͣ‫͑׏‬懆朞垚͑捊瞾櫖͑堆空͑΀΃͑穮朞儆͑洇殯夢͑捊瞾決彶͑͝
冶刂垚͑‫׎‬ΈͽΠΘΚΔ΃ΖΤΝΥ‫׏‬櫖͑洆沫夯城埪͟

͔ͺΟΡΦΥ͑愕͔͑;ΒΤΜ͑懆朞庂͑ͶΩΔΝΦΤΚΧΖ͞΀΃刂͑浶穯穞櫲͑旣昷夢͑儘汆͔͑ͳΦΗΗΖΣ͑懆朞櫖͑
洆沫夯城埪͟

그림 14.1 워드 논리 연산의 예

225
14 워드 논리

1개의 Rung 안에 여러 개의 워드 논리 연산 박스 값의 해당 비트가 ‘1’ 인 경우에만 결과 워드 OUT


를 정렬한 경우(왼쪽 회선에 병렬로, 그 다음에는 계 의 비트가 ‘1’ 이 됩니다.
속 직렬로 연결) 먼저 최상위 분기에 있는 연산 박스
입력 IN2에서 ‘0’ 인 비트는 입력 IN1에서 해당
부터 왼쪽에서 오른쪽 순으로 처리합니다. 그런 다
비트가 갖는 값에 관계 없이 결과 비트를 ‘0’ 으
음 두 번째 분기에 있는 연산 박스를 왼쪽에서 오른
로 설정하기 때문에 이런 비트는 ‘마스킹’ 되었다
쪽 순으로 처리하는 식으로 처리가 계속됩니다.
고 합니다. 마스킹은 (디지털) AND 연산에 주로 사
워드 논리 연산의 표시 및 정렬에 대한 더 많은 예
용됩니다.
를 보려면 ‘LAD_Book’ 라이브러리의 ‘디지털
함수’ 프로그램 (FB 111)을 참조하십시오. 이 라이
브러리는 출판사의 웹 사이트에서 다운로드할 수 있 OR 연산
습니다(8 페이지 참조).
OR은 OR 조건에 따라 IN1 입력값의 개별 비트를
IN2 입력값의 해당 비트와 조합합니다. 조합할 두 값
논리 회로에 워드 논리 사용(FBD) 의 해당 비트가 ‘0’ 인 경우에만 결과 워드 OUT
워드 논리 연산 박스를 특정 조건에 따라 처리하 의 비트가 ‘0’ 이 됩니다.
고 싶다면 입력 EN 앞에 이진 논리 연산을 배열하면
됩니다. 출력 ENO를 다른 함수의 이진 입력과 연결 입력 IN2에서 ‘1’ 인 비트는 입력 IN1에서 해당
시킬 수 있습니다. 예를 들어 워드 논리 연산 박스를 비트가 갖는 값에 관계 없이 결과 비트를 ‘1’ 으
직렬로 배열하면 선행 연산 박스의 출력 ENO를 후 로 설정하기 때문에 이런 비트는 ‘마스킹’ 되었다
속 연산 박스의 입력 EN에 연결시킬 수 있습니다. 고 합니다. 마스킹은 (디지털) OR 연산에 주로 사용
선행 연산 박스의 결과를 후속 연산 박스의 입력값 됩니다.
으로 사용하고자 하는 경우 임시 로컬 데이터 영역
의 변수가 편리한 중간 버퍼 역할을 합니다.
EXCLUSIVE OR 연산
EN과 ENO는 연결시킬 필요가 없습니다.
EXCLUSIVE OR은 EXCLUSIVE OR 조건에 따라
논리 함수의 표시 및 정렬에 대한 더 많은 예를 보
IN1 입력값의 개별 비트를 IN2 입력값의 해당 비트
려면 라 ‘FBD_Book’ 이브러리의 ‘디지털 함수’
와 조합합니다. 조합할 두 값 중 하나만 해당 비트가
프로그램(FB 111)을 참조하십시오. 이 라이브러리
‘1’ 인 경우에 한해 결과 워드 OUT의 비트가 ‘1’
는 출판사의 웹 사이트에서 다운로드할 수 있습니다
이 됩니다. 입력 IN2의 비트가 ‘1’ 인 경우 결과
(8 페이지 참조).
값은 IN1의 동일한 위치에 해당하는 비트와 반대 값
이 됩니다.

14.2 워드 논리 연산 설명 디지털 EXCLUSIVE OR 연산을 실행하기 전에


IN1과 IN2의 신호 상태가 반대였던 비트만 결과가
AND 연산 ‘1’ 이 됩니다. 상태 신호가 반대인 비트를 찾거나
AND는 AND 조건에 따라 IN1 입력값의 개별 비트 개별 비트의 신호 상태를 ‘부정’ 하는 데 사용됩
를 IN2 입력값의 해당 비트와 조합합니다. 조합할 두 니다.

226
프로그램 흐름 제어

프로그램 흐름 제어

LAD와 FBD에서는 프로그램 흐름을 제어할 수 있


는 다양한 옵션을 제공합니다. 블록 내에서 선형 프
로그램 실행을 종료할 수 있고 프로그래밍 가능 블
록을 호출하여 구조형 프로그램을 구성할 수도 있습
니다. 런타임에서 계산된 값과 프로세스 파라미터,
플랜트 상태에 따라 다양한 방식으로 프로그램을 실
행할 수 있습니다.

상태 비트는 연산 또는 산술 연산 결과와 계산 중
범위 위반과 같은 오류에 대한 정보를 제공합니다.
접점을 사용해 상태 비트의 신호 상태를 프로그램에
직접 결합시킬 수 있습니다.

Jump 명령어를 사용해 조건이나 무조건적으로


15 상태 비트
분기할 수 있습니다.
상태 비트 RLO, BR, CCO, CC1 및 초과 / 상
태 비트 설정 및 평가 / 이진 결과 사용 / EN
그 외 마스터 제어 릴레이(MCR)를 사용해 프로그 및 ENO

램 실행에 영향을 미칠 수도 있습니다. LAD와 FBD 16 Jump 연산


는 릴레이 제어에 편리하게 개발되었습니다. 무조건 점프 / RLO에 따라 점프.

17 마스터 제어 릴레이
블록 함수를 사용해 프로그램을 구성할 수 있습니 MCR 종속성 / MCR 범위 / MCR 구역.
다. 블록 파라미터를 정의해 함수와 함수 블록을 여
18 블록 함수
러 번 사용할 수 있습니다.
블록 유형, 블록 호출, 블록 종료 / 상태 로컬
데이터 / 데이터 블록(DB) 레지스터, 데이터
19 “블록 파라미터” 에는 5 “메모리 기능” 에 설 피연산자 사용 / 데이터 블록 처리.

명된 예가 제시되어 있고, 8 “카운터” 에는 블록 파 19 블록 파라미터


라미터를 사용하여 함수 블록으로 프로그래밍한 예 파라미터 선언 / 형식 파라미터 및 실제 파라
가 있습니다. 공급’ 예에서는 이 함수 블록을 로컬 미터 / 파라미터를 호출된 블록으로 전달 /
인스턴스라고도 부릅니다. 예: 컨베이어 벨트, 부품 카운터 및 공급.

227
15 상태 비트

15 상태 비트

상태 비트는 이진 ‘플래그’ , 즉 조건 코드 비트 정합니다. LAD에서 첫 번째 검사는 네트워크의 첫


입니다. CPU는 상태 비트를 이용해 이진 논리 연산 번째 접점에 해당하고, FBD에서 첫 번째 검사는 이
을 제어하고 디지털 처리 중에 이 논리 연산을 설정 진연산의 상위 접점에 해당합니다.
합니다. 상태 비트를 검사하거나 특정 비트에 따라
비트 로직 스텝은 이진 값 할당(예: 단일 코일 할
실행할 수 있습니다. 상태 비트는 상태 워드라 불리
당 또는 할당)이나 조건 점프 또는 블록 변경으로 끝
는 하나의 워드로 조합할 수 있습니다. 하지만 LAD
납니다. 이때 /FC = ‘0’ 으로 설정됩니다.
나 FBD에서는 이 상태 워드에 액세스할 수 없습니
다.
논리 연산 결과(RLO)
RLO 상태 비트는 이진 논리 연산에서 중간 버퍼
15.1 상태 비트 설명 역할을 합니다. 첫 번째 검사에서 CPU는 검사 결과
를 RLO에 저장하고 이값은 후속검사에서 저장된
표 15.1은 사용 가능한 상태 비트를 보여 줍니다. RLO와 조합해 그 결과를 다시 RLO에 저장합니다.
CPU는 이진 플래그를 사용하여 이진 함수를 제어합
니다. 디지털 플래그는 주로 연산 및 산술 연산의 결 저장 코일/연산 박스를 사용해 RLO를 이진 결과
과를 표시합니다. BR에 저장할 수 있습니다. 메모리 기능, 타이머 및
카운터는 RLO를 사용해 제어하고 특정 Jump 연산

첫 번째 검사 이 실행됩니다. LAD에서 RLO는 Rung 내의 전력 흐

/FC 상태 비트는 논리 제어 시스템 내에서 이진 름과 일치합니다(RLO = ‘1’ 은 해당 rung의 결과

논리를 제어합니다. 비트 로직 단계는 항상 /FC = 값이 1이라는 뜻입니다).

‘0’ 인 상태에서 이진 검사 명령인 첫 번째 검사부


터 시작합니다. 첫 번째 검사는 /FC = ‘1’ 로 설 상태
상태 비트 STA는 검사된 이진 피연산자의 신호
표 15.1 상태 비트
상태와 일치합니다. 메모리 기능에서 STA의 값은
이진 플래그
쓰여진 값과 일치합니다. RLO = ‘0’ 또는 MCR이
/FC 첫 번째 검사
활성화되어 쓰기 연산이 실행되지 않은 경우 STA의
RLO 논리 연산 결과
값은 주소가 지정되거나 수정되지 않은 이진 피연산
STA 상태
OR 상태 비트 OR
자의 값과 일치합니다.
BR 이진 결과 엣지신호 판단 FP와 FN의 경우 엣지신호 판단 이
디지털 플래그
전의 RLO 값이 STA에 저장됩니다. 다른 모든 이진
OS 저장된 초과
함수는 STA = ‘1’ 로 설정합니다.
OV 초과
CC0 조건 코드(상태) 비트 0 STA 상태 비트는 LAD 또는 FBD의 결과값에 영향
CC1 조건 코드(상태) 비트 1 을 미치지 않습니다.

228
15.2 상태 비트 설정

상태 비트 OR 비트 BR을 사용자가 직접 설정, 재설정 또는 검사할


수 있습니다.
상태 비트 OR은 완료된 직렬 회로 또는 완료된
AND 조건의 결과를 저장하고 이후 처리되는 병렬
회로 또는 OR 연산에 결과가 이미 결정되었다고 표
시합니다. 다른 모든 이진 함수는 상태 비트 OR을 15.2 상태 비트 설정
재설정합니다.

표 15.2에 설명된 것처럼 디지털 함수는 상태 비


초과 트 CC0, CC1, OV 및 OS에 영향을 미칩니다. 연산
박스를 실행한 후 곧바로 이 상태 비트를 검사할 수
상태 비트 OV는 범위 위반이나 유효하지 않은
있습니다.
REAL 수의 사용 여부를 표시합니다. 상태 비트 OV
에 영향을 미치는 함수로는 연산 및 산술 연산, 일부
변환 기능, REAL 비교 연산이 있습니다. INT 및 DINT 계산의 상태 비트

상태 비트 OV는 직접 검사할 수 있습니다. INT와 DINT 데이터 형식의 연산 함수는 모든 디지


털 상태 비트를 설정합니다. 결과가 0이면 CC0과
CC1이 ‘0’ 으로 설정됩니다. CC0 = ‘0’ 과 CC1
저장된 초과
= ‘1’ 은 결과가 양수, CC0 = ‘1’ 과 CC1 =
상태 비트 OS는 셋 OV 상태 비트를 저장합니다. ‘0’ 은 결과가 음수라는 뜻입니다. 범위 위반은 OV
CPU는 상태 비트 OV를 설정할 때마다 상태 비트 와 OS를 설정합니다(주의: 초과의 경우 CC0과 CC1
OS도 같이 설정합니다. 하지만 다음 연산이 정상적 의 의미가 다릅니다). 0으로 나누기를 하면 모든 디
으로 실행되어 OV를 재설정할 때까지 OS는 설정 상 지털 상태 비트가 ‘1’ 로 설정됩니다.
태를 유지합니다. 따라서 나중에 프로그램의 다른
지점에서 범위 위반이나 유효하지 않은 REAL 수가
REAL 계산의 상태 비트
포함된 연산 사용 여부를 평가할 수 있습니다.
REAL 데이터 형식의 연산 함수와 산술 연산은 모
상태 비트 OS는 직접 검사할 수 있습니다. 블록
든 디지털 상태 비트를 설정합니다. 결과가 0이면
변경은 상태 비트 OS를 재설정합니다.
CC0과 CC1이 ‘0’ 으로 설정됩니다. CC0 = ‘0’
과 CC1 = ‘1’ 은 결과가 양수, CC0 = ‘1’ 과
상태 비트 CC0 및 CC1(조건 코드 비트) CC1 = ‘0’ 은 결과가 음수라는 뜻입니다. 범위 위

상태 비트 CC0과 CC1은 비교, 연산 또는 산술 연 반은 OV와 OS를 설정합니다(주의: 초과의 경우

산, 워드 논리 연산의 결과나 시프트 연산이 시프트 CC0과 CC1의 의미가 다릅니다). 모든 디지털 상태

한 비트에 대한 정보를 제공합니다. 비트가 ‘1’ 로 설정된 경우 유효하지 않은 REAL


수라는 뜻입니다.
CC0과 CC1의 모든 조합은 직접 검사할 수 있습
니다(아래 참조). REAL 수의 정밀도를 낮추어 표시할 때 REAL 수
가 ‘비정규화’ 되었다고 합니다. 이때 지수는 0이
되고 비정규화 REAL 수의 절대값은 1.175 494 ×
이진 결과
10-38 보다 작습니다. S7-300 CPU는 비정규화
LAD와 FBD는 상태 비트 BR을 사용하여 연산 박 REAL 수를 0으로 취급합니다(3.5.4 “기본 데이터
스의 EN/ENO 동작원리를 구현합니다. 또한 상태 형식” 참조).

229
15 상태 비트

표 15.2 상태 비트 설정
INT 계산 DINT 계산
결과: CC0 CC1 OV OS 결과: CC0 CC1 OV OS
< -32 768 0 1 1 1 < -2 147 483 648 0 1 1 1
(ADD_I, SUB_I) (ADD_DI, SUB_DI)
< -32 768 (MUL_I) 1 0 1 1 < -2 147 483 648 1 0 1 1
(MUL_DI)
-32,768 부터 -1 1 0 0 - -2,147,483,648 부터 -1 1 0 0 -
0 0 0 0 - 0 0 0 0 -
+1 부터 +32,767 0 1 0 - +1 부터 +2 147 483 647 0 1 0 -
> +32 767 1 0 1 1 > +2 147 483 647 1 0 1 1
(ADD_I, SUB_I) (ADD_DI, SUB_DI)
> +32 767 (MUL_I) 0 1 1 1 > +2 147 483 647 (MUL_DI) 0 1 1 1
32 768 (DIV_I) 0 1 1 1 2 147 483 648 (DIV_DI) 0 1 1 1
(-) 65 536 0 0 1 1 (-) 4 294 967 296 0 0 1 1
0으로 나누기 1 1 1 1 0으로 나누기 1 1 1 1
(DIV_DI, MOD_DI)

REAL 계산 비교
결과: CC0 CC1 OV OS 결과: CC0 CC1 OV OS
+ 정규화 0 1 0 - 같음 0 0 0 -
± 비정규화 0 0 1 1 더큼 0 1 0 -
±0 0 0 0 - 더 작음 1 0 0 -
- 정규화 1 0 0 - 유효하지 않은 REAL 수 1 1 1 1
+ 무한대 0 1 1 1
(0으로 나누기)
- 무한대 1 0 1 1
(0으로 나누기)
± 유효하지 않은 REAL 수 1 1 1 1

변환 NEG_I 변환 NEG_D
결과: CC0 CC1 OV OS 결과: CC0 CC1 OV OS
+1 부터 +32,767 0 1 0 - +1 부터 +2 147 483 647 0 1 0 -
0 0 0 0 - 0 0 0 0 -
-1 부터 -32,767 1 0 0 - -1 부터 -2,147,483,647 1 0 0 -
(-) 32 768 1 0 1 1 (-) 2 147 483 648 1 0 1 1

시프트 연산 워드 논리
시트프된 비트: CC0 CC1 OV OS 결과: CC0 CC1 OV OS
‘0’ 0 0 0 - 0 0 0 0 -
‘1’ 0 1 0 - 0이 아님 0 1 0 -
시프트 수 0 사용 - - - -

230
15.3 상태 비트 평가

변환 기능의 상태 비트 웹 사이트에서 다운로드할 수 있습니다(8 페이지 참


변환 기능의 경우 2의 보수가 모든 디지털 상태 조).
비트에 영향을 미칩니다. 또한 오류(예: 범위 위반, FBD: 디지털 상태 비트와 이진 결과를 직접 또는
유효하지 않은 REAL 수)가 발생하는 경우 다음과 같 부정(Negated)으로 검사할 수 있습니다. 그림 15.1
은 변환 기능이 상태 비트 OV와 OS를 SET합니다. 은 신호 상태 ‘1’ 에 대한 직접 검사를 실행한 경
우입니다. 신호 상태 ‘0’ 에 대한 검사는 부정된
Z I_BCD 및 Dl_BCD:
검사 결과를 반환합니다. 상태 비트 평가에 대한 검
INT와 DINT를 BCD로 변환
사는 이진 피연산자에 대한 ‘일반’ 검사와 동일한
Z CEIL, FLOOR, ROUND, TRUNC: 방식으로 처리됩니다. 상태 비트 평가의 예는
REAL을 DINT로 변환 ‘FBD_Book’ 라이브러리의 ‘프로그램 흐름 제
어’ 프로그램 (FB 115)을 참조하십시오. 이 라이브
비교 연산의 상태 비트 러리는 출판사의 웹 사이트에서 다운로드할 수 있습
비교 연산은 상태 비트 CC0과 CC1을 SET합니 니다(8 페이지 참조).
다. 플래그는 실행된 비교 연산과는 독립적으로 이 라이브러리는 출판사의 웹 사이트에서 다운로
SET됩니다. 드할 수 있습니다(8 페이지 참조).
증분 프로그래밍의 경우 프로그램 라이브러리 카
시프트 연산의 상태 비트 탈로그의 ‘상태 비트’ 아래에 이 검사가 있습니

시프트 연산의 경우 시프트되는 마지막 비트의 신 다. 프로그램 라이브러리 카탈로그를 보려면 보기

호 상태가 상태 비트 CC1로 전송됩니다. CC0과 OV → 개요를 선택하고 [Ctrl -K]를 누르거나 삽입 → 프

는 RESET됩니다. 로그램 구성요소를 선택하십시오.

워드 논리의 상태 비트
15.4 이진 결과 사용
워드 논리 연산 결과가 0인 경우(모든 비트가
‘0’ 인 경우) CC1이 RESET됩니다. 결과에 ‘1’
인 비트가 1개 이상 있는 경우 CC1이 SET됩니다. 15.4.1 이진 결과 BR 설정
CC0과 OV는 RESET됩니다.

15.3 상태 비트 평가

LAD: 정상 개방(NO) 및 정상 폐쇄(NC) 접점을 사


용해 디지털 상태 비트와 이진 결과를 검사할 수 있 Rung에 저장 코일 사용(LAD)
습니다. 그림 15.1은 정상 개방 접점을 사용한 검사 저장 코일을 사용해 RLO를 이진 결과에 저장합니
를 보여 줍니다. 정상 폐쇄 접점을 사용한 검사는 결 다. 저장 코일에 전력이 흐르면 BR이 SET됩니다. 그
과값이 반대로 나옵니다. 상태 비트 평가를 위한 NO 렇지 않으면 BR이 RESET됩니다. 저장 코일은 이진
및 NC 접점을 ‘일반’ 접점과 동일하게 처리할 수 피연산자가 없는 ‘단일’ 코일과 동일한 방식으로
있습니다. 상태 비트 평가의 예는 ‘LAD_Book’ 라 프로그래밍합니다.
이브러리의 ‘프로그램 흐름 제어’ 프로그램(FB 주의: 저장 코일은 논리 연산을 종결시키지 않습
115)을 참조하십시오. 이 라이브러리는 출판사의 니다(상태 비트 /FC가 ‘0’ 으로 설정되지 않습니

231
15 상태 비트

그림 15.1 상태 비트 평가

다). 다시 말해 저장 코일보다 먼저 실행되는 논리연 BR이 재설정됩니다. 저장 연산 박스는 이진 피연산


산이 다음 네트워크의 논리연산이 됩니다. 자가 없는 할당 연산 박스와 동일한 방식으로 프로

저장 코일은 T-분기와 연결해 프로그래밍할 수 그래밍합니다.

없습니다. 주의: 저장 연산 박스는 논리 연산을 종결시키지


않습니다. (즉, 상태 비트 /FC가 ‘0’ 으로 설정되
논리 회로에 저장 연산 박스 사용(FBD) 지 않습니다.) 따라서 후속 네트워크는 ‘개방’ 논
저장 연산 박스를 사용해 RLO를 이진 결과에 저 리 연산으로 시작됩니다.
장합니다. 저장 연산 박스 이전에 실행된 RLO가 저장 연산 박스는 T-분기 다음에 위치할 수 없습
‘1’ 인 경우 BR이 설정됩니다. 그렇지 않은 경우 니다.

232
15.4 이진 결과 사용

이진 결과 제어 림 15.3 참조). 이렇게 하면 예를 들어 연산중에 오

LAD와 FBD는 출력 ENO를 제어하기 위해 이진 류가 발생하면 전체 체인이 ‘비활성화’ 되거나 체

결과에도 영향을 미칩니다(그림 15.2 참조). 활성 인의 나머지 연산이 더 이상 실행되지 않습니다. 아


화 출력 ENO가 연결된 경우 ENO의 신호 상태는 BR 래 예에서 입력 I 1.0의 신호 상태가 ‘0’ 이면 어
의 신호 상태와 동일합니다. ‘BR이 함수에 해당’ 떤 연산도 실행되지 않습니다.
할 때와 같은 특정 상황에서는 실행된 LAD 또는
입력 EN과 출력 ENO는 블록 파라미터가 아니라
FBD 함수가 다음과 같이 이진 결과를 설정합니다.
프로그램 편집기가 모든 연산 박스, 함수 및 함수 블
Z BR := ‘1’ 록의 앞과 뒤에 자체적으로 생성하는 구문 시퀀스입
MOVE, 시프트 연산 및 워드 논리 연산의 경우 니다. 프로그램 편집기는 이진 결과를 사용해 블록
이 처리되는 동안 EN의 신호 상태를 저장하거나 연
Z BR := OV
산 박스의 오류 플래그를 검사합니다.
연산 및 산술 연산의 경우

Z BR := OV 또는 ‘1’
변환 기능의 경우 15.4.3 사용자 작성 블록의 ENO

Z BR := 호출된 블록의 BR(블록 호출의 경우) 프로그램 편집기는 사용자가 작성한 블록의 호출
에 활성화 입력 EN과 활성화 출력 ENO를 제공합니
다. 활성화 입력 EN을 사용해 조건적으로 블록을 호
15.4.2 메인 Rung, EN/ENO 동작원리 출할 수 있습니다. 예를 들어 출력 ENO를 사용해 그
LAD와 FBD로 프로그램할 때 대부분의 연산 박스 룹 오류를 표시할 수 있습니다(블록이 정상적으로
가 활성화 입력 EN 1개와 활성화출력 ENO 1개를 갖 처리된 경우 신호 상태는 ‘1’ 이 되고, 블록 처리
습니다. 활성화 입력이 ‘1’ 이면 연산이 실행됩니 중에 오류가 발생하면 신호 상태는 ‘0’ 이 됩니
다. 연산이 정상 실행되면 활성화 출력의 신호 상태 다). 또한 모든 시스템 블록은 BR을 통해 그룹 오류
역시 ‘1’ 이 됩니다. 연산 중에 오류(예: 연산 함 를 표시합니다.
수 실행 중 초과)가 발생하는 경우 ENO가 ‘0’ 으
로 설정됩니다. EN의 신호 상태가 ‘0’ 인 경우 이진 결과 BR을 사용해 출력 ENO를 제어합니다.
ENO 역시 ‘0’ 으로 설정됩니다. 출력 ENO는 블록 종료 시 BR의 신호 상태와 동일한
신호 상태를 갖습니다.
EN과 ENO의 이러한 특성을 이용하여 여러 개의
연산 박스를 체인 형식으로 연결할 수 있습니다. 즉, 예를 들어 블록 시작 시 BR이 ‘1’ 로 설정되어
ENO를 후속 연산의 EN과 연결시킬 수 있습니다(그 있었습니다. 그런데 블록 처리 중에 결과가 고정 범

그림 15.2 이진 결과 설정에 대한 일반 사항
ENO가 켜져 있습니까?
예 아니요
EN이 켜져 있습니까? EN이 켜져 있습니까?
예 아니요 예 아니요
EN = ‘1’ 입니까 EN = ‘1’ 입니까?
예 아니요 예 아니요
BR이 함수에 해 BR := ‘0’ BR이 함수에 해 BR := ‘1’ BR := ‘0’ BR이 영향을 받
당합니다. 당합니다. 지 않습니다.

233
15 상태 비트

위를 초과하여 더 이상 처리를 진행할 수 없다는 등 경우 신호 상태를 ‘0’ 으로 설정하는 조건이 있어


의 오류가 발생하면 저장 코일/연산 박스를 사용하 야 합니다).
여 이진 결과를 ‘0’ 으로 설정하고 블록을 종료시 주의: RET 코일/연산 박스를 통해 블록을 종료하
키는 블록 종단으로 점프시킵니다(오류가 발생한 게 되면 RET 코일/연산 박스는 BR을 ‘1’ 로 설정
합니다.

그림 15.3 EN과 ENO의 직렬 연결 예

234
16 Jump 연산

16 Jump 연산

Jump 연산을 사용하여 프로그램의 선형 흐름을 입니다. 연산 박스 안의 점프 라벨은 Jump 연산이


인터럽트하고 블록의 다른 지점에서 프로그램 실행 완료된 후 처리할 네트워크를 지정합니다. 점프 라
을 계속할 수 있습니다. 프로그램 분기는 무조건적 벨이 표시된 연산 박스는 네트워크의 시작 지점에
또는 RLO에 따라 실행시킬 수 있습니다. 위치해야 합니다(프로그램 라이브러리 카탈로그의
‘LABEL’ 참조).
증분 프로그래밍의 경우 프로그램 라이브러리 카
16.1 프로세서 처리 탈로그의 ‘JUMP’ 아래에 있는 Jump 연산이 있
습니다. 프로그램 라이브러리 카탈로그를 보려면 보
표시 기 → 개요를 선택하고 [Ctrl -K]를 누르거나 삽입 →
프로그램 구성요소를 선택하십시오.

함수
점프는 항상 실행(절대 또는 무조건 점프)하거나
논리 연산 결과(RLO)에 따라 실행(조건적 점프)할
수 있습니다. RLO에 따라 점프하는 경우 RLO가
‘1’ 일 때 점프를 실행할지 RLO가 ‘0’ 일 때 점
프를 실행할지 결정할 수 있습니다.
앞으로 점프와 뒤로 점프를 모두 실행할 수 있습
니다(앞으로 점프란 프로그램 처리 방향이나 네트
워크 번호 오름차순 방향으로 점프한다는 뜻입니
다). 점프는 블록 내에서만 실행할 수 있습니다. 따
라서 점프 대상은 반드시 Jump 연산과 같은 블록 안
에 있어야 합니다. 마스터 제어 릴레이(MCR)를 사
용하는 경우 점프 라벨이 Jump 연산과 같은 MCR
구역이나 MCR 영역 안에 있어야 합니다.
Jump 연산은 코일(LAD)이나 연산 박스(FBD) 형 점프 대상은 명확하게 지정해야 합니다. 한 블록
식의 Jump 연산과 점프 후 처리를 계속할 프로그램 안에서 같은 이름의 점프 라벨은 한 번만 할당해야
위치를 지정하는 점프 라벨로 구성됩니다. 점프 라 합니다. 여러 위치에서 동일한 점프 대상으로 점프
벨이 Jump 연산 위에 위치합니다. 할 수 있습니다.
점프는 T-분기와 연결해 프로그래밍할 수 없습니 프로그램 편집기는 점프 라벨의 이름을 프로그래
다. 밍 기기의 데이터 매체 상에 있는 관련 블록의 실행
점프 라벨은 최대 4자로 구성되며 글자, 숫자 및 불가 영역에 저장합니다. 점프의 너비(점프 치환)만
밑줄(_)을 사용할 수 있습니다. 라벨의 시작은 글자 CPU의 작업 메모리에 컴파일 블록으로 저장됩니

235
16 Jump 연산

다. 프로그램이 온라인을 통해 CPU의 블록을 수정 산 박스에 선행 논리 연산이 있습니다. 이 코일보


한 경우 원래 라벨 이름이 유지될 수 있도록 이 수정 다 선행되는 논리 연산은 어떤 식으로든 구현할 수
내용을 프로그래밍 기기의 데이터 매체에 반드시 업 있습니다. RLO = ‘1’ 인 경우, 즉 선행 논리 연
데이트해야 합니다. 업데이트를 하지 않거나 블록 산이 완료된 경우 CPU는 프로그램의 선형 흐름을
이 CPU에서 프로그래밍 기기로 전송된 경우 실행 인터럽트하고 점프 라벨이 지정한 네트워크에서
불가 블록 영역이 덮어쓰기 또는 삭제됩니다. 이 경 프로그램 실행을 계속합니다. 선행 논리 연산이 완
우 프로그램 편집기는 디스플레이나 인쇄본 상에 점 료되지 못한 경우 CPU는 다음 네트워크에서 프로
프 라벨을 위한 치환 심볼(M001, M002 등)을 생성 그램 실행을 계속합니다.
합니다.
예(그림 16.1 및 그림 16.2 참조): 네트워크 1에
서 비교 조건이 충족된 경우 네트워크 4에서 프로그
램 실행이 계속됩니다. 네트워크 1에서 비교 조건이
16.2 무조건 점프 충족되지 않은 경우 다음 네트워크인 네트워크 2가
처리됩니다.
무조건 점프, 즉 항상 실행되는 점프의 Jump 연
산은 JMP입니다. LAD의 경우 함수의 코일이 왼쪽
회선에 연결되며, FBD의 경우 연산 박스에 선행 논
리 연산이 없습니다. 프로그램에서 JMP연산이 발견 16.4 RLO = ‘0’ 인 경우 점프
되면 언제나 함수가 실행됩니다. CPU는 프로그램
의 선형 흐름을 인터럽트하고 점프 라벨이 지정한 RLO = ‘0’ 인 경우 조건적으로 점프하는 Jump

네트워크에서 프로그램 실행을 계속합니다. 연산은 JMPN입니다. LAD의 경우 함수의 코일이 왼


쪽 회선에 직접 연결되지 않으며, FBD의 경우 연산
예(그림 16.1 및 그림 16.2 참조): 네트워크 3의
박스에 선행 논리 연산이 있습니다. 이 코일보다 선
경우 점프 라벨 M2로 무조건 점프하도록 설정되어
행되는 논리 연산은 어떤 식으로든 구현할 수 있습
있습니다. CPU는 네트워크 3을 처리한 후 네트워크
니다. RLO = ‘0’ 인 경우, 즉 선행 논리 연산이 완
5의 점프 라벨 M2에서 프로그램 실행을 계속합니
료되지 못한 경우 CPU는 프로그램의 선형 흐름을
다. 네트워크 4를 처리하려면 프로그램의 다른 위치
인터럽트하고 점프 라벨이 지정한 네트워크에서 프
에서 점프를 해야 합니다.
로그램 실행을 계속합니다. 선행 논리 연산이 완료
된 경우 CPU는 다음 네트워크에서 프로그램 실행을
계속합니다.
16.3 RLO = ‘1’ 인 경우 점프
예(그림 16.1 및 그림 16.2 참조): 네트워크 4의
RLO = ‘1’ 인 경우 조건적으로 점프하는 Jump 가산기가 오류를 표시한 경우 네트워크 6으로 점
연산은 JMP입니다. LAD의 경우 함수의 코일이 왼 프(점프 라벨 M3)가 실행됩니다. 에러가 없으면 네
쪽 회선에 직접 연결되지 않으며, FBD의 경우 연 트워크 4 다음에 네트워크 5가 처리됩니다.

236
16.4 RLO = ‘0’ 인 경우 점프

그림 16.1 Jump 연산 예(LAD)

237
16 Jump 연산

그림 16.2 Jump 연산 예(FBD)

238
17 마스터 제어 릴레이

17 마스터 제어 릴레이

접점 컨트롤 시스템의 하나인 마스터 제어 릴레이 아닙니다. 마스터 제어 릴레이의 전환은 메모리 기
는 1개 이상의 Rung으로 구성된 제어시스템 영역을 능의 전환과 같다고 생각해야 합니다.
활성화 또는 비활성화합니다. MCRA 및 MCRD를 사용해 프로그램에서 MCR 종
비활성화된 Rung은 속성을 적용할 영역을 지정합니다. 지정한 영역 내
에서 MCR<과 MCR>을 사용해 MCR 종속성을 활성
Z 모든 비 정전 유지 컨택터의 작동을 중지하고
화/비활성화할 구역을 1개 이상 정의합니다. MCR
Z 정전 유지 컨택터의 상태를 유지합니다. 구역을 네스팅할 수도 있습니다. MCR 구역 직전에
선행된 논리 연산 결과(RLO)에 따라 해당 구역 내에
마스터 제어 릴레이(MCR)가 활성화되기 전에는
서 MCR 종속성이 활성화 또는 비활성화됩니다.
컨택터의 상태를 다시 변경할 수 없습니다.

17.1 MCR 종속성

MCR 종속성은 코일과 연산 박스에 영향을 미칩


니다. MCR 종속성이 활성화된 경우(마스터 제어 릴
레이가 비활성화된 경우)

Z 단일 코일/할당 박스와 미드라인 출력은 이진 피


연산자의 신호 상태를 ‘0’ 으로 설정합니다.
미드라인 출력에 이어 RLO도 ‘0’ 이 되기 때
문에 전력이 더 이상 흐르지 않게 됩니다.

Z SET및 RESET 코일/연산 박스는 이진 피연산자


의 신호 상태를 ‘고정’ 시켜 더 이상 영향을 미
치지 않습니다.

Z SR 및 RS 연산 박스는 이진 피연산자의 신호 상
태를 ‘고정’ 시켜 더 이상 영향을 미치지 않습
니다.

Z 전송 연산은 디지털 피연산자에 0을 씁니다. 디


지털 데이터 형식의 연산 박스에 포함된 모든 함
수 출력은 피연산자 또는 변수에 0을 씁니다.

피연산자에 직접 영향을 미칠 뿐 아니라 미드라인


주의: '소프트웨어’ 인 마스터 제어 릴레이의 비 출력과 T-분기에 이어 RLO도 ‘0’ 이 됩니다. 따
활성화가 비상 정지나 안전 장치를 대신하는 것은 라서 전력이 더 이상 흐르지 않습니다.

239
17 마스터 제어 릴레이

일부 LAD 및 FBD 함수는 전송 구문을 사용합니 다. 블록이 종료되면 호출된 블록을 종료시킨 MCR
다(사용자는 이 구문을 볼 수 없습니다). MCR 종속 종속성과 관계 없이 블록이 호출되기 전 상태로
성이 활성화되면 전송 구문이 0의 값을 쓰기 때문에 MCR 종속성이 설정됩니다.
해당 함수의 실행을 더 이상 보장할 수 없습니다.
다음의 프로그램 영역은 MCR 종속성에서 제외시
켜야 합니다. 그렇지 않으면 CPU가 정지되거나 정 17.3 MCR 구역
의되지 않은 런타임 동작이 일어날 수 있습니다.
Z 블록 파라미터를 이용한 블록 호출 LAD: MCR 구역 시작 지점에 MCR< 코일을, MCR
구역 종료 지점에 MCR> 코일을 배치해 MCR 구역
Z 파라미터 유형(예: BLOCK_DB)의 블록 파라미
을 정의합니다. MCR< 코일은 선행 논리 연산을 필
터 접근
요로 합니다. MCR> 코일은 왼쪽 회선에 직접 연결
Z 복합 데이터 형식, UDT의 구성요소나 블록 파라 됩니다. 두 코일 모두 Rung을 종결시킵니다. MCR
미터 접근 구역 안에서는 MCR< 코일 이전의 RLO를 이용해
마스터 제어 릴레이를 비활성화하는 경우와 마찬 MCR 종속성을 제어합니다. 코일에 전력이 흐르면
가지로 구역을 개방하기 직전 RLO가 ‘0’ 인 경우 MCR 종속성이 비활성화됩니다( ‘정상’ 처리). 코
MCR 종속성을 활성화할 수 있습니다. RLO ‘1’ 일에 전력이 흐르지 않으면 MCR 종속성이 활성화
로 MCR 구역을 개방한 경우(마스터 제어 릴레이가 됩니다.
활성화된 상태) 이 MCR 구역에서는 MCR 종속성 없
FBD: MCR 구역 시작 지점에 MCR< 연산 박스를,
이 처리가 실행됩니다. MCR 종속성은 MCR 구역 내
MCR 구역 종료 지점에 MCR> 연산 박스를 배치해
에서만 적용됩니다.
MCR 구역을 정의합니다. MCR< 연산 박스는 선행
증분 프로그래밍의 경우 프로그램 라이브러리 카 논리 연산을 필요로 합니다. MCR> 연산 박스는 네
탈로그의 ‘프로그램 컨트롤’ 아래에 MCR 함수가 트워크 내에서 독립적으로 실행됩니다. MCR 구역
있습니다. 프로그램 라이브러리 카탈로그를 보려면 안에서는 MCR< 연산 박스 이전의 RLO를 이용해
보기 → 개요를 선택하고 [Ctrl -K]를 누르거나 삽입 MCR 종속성을 제어합니다. RLO가 ‘1’ 인 경우
→ 프로그램 구성요소를 선택하십시오. MCR 종속성이 비활성화됩니다( ‘정상’ 처리).
RLO가 ‘0’ 인 경우 MCR 종속성이 활성화됩니다.

한 MCR 구역을 다른 MCR 구역 안에서 열 수 있


17.2 MCR 영역 습니다. MCR 구역의 네스팅 깊이는 8입니다. 즉,

마스터 제어 릴레이의 고유 기능을 사용하려면 MCR 구역을 닫기 전에 최대 8번까지 열 수 있다는

MCRA(MCR 영역 시작)과 MCRD(MCR 영역 종료) 뜻입니다(그림 17.2 참조).

를 사용하여 MCR 영역을 정의합니다. MCR 종속성 MCR 구역을 여는 것과 동시에 RLO를 이용해 네
은 MCR 영역 내에서 활성이 되지만 아직 사용할 수 스팅된 MCR 구역의 MCR 종속성을 제어합니다. 하
는 없습니다(그림 17.1 참조). 지만 ‘상위’ MCR 구역에서 MCR 종속성이 활성
MCRA 코일/연산 박스와 MCRD 코일/연산 박스 화된 경우 ‘하위’ MCR 구역에서 MCR 종속성을
는 언제나 별도의 네트워크에서 독립적으로 실행됩 비활성화할 수 없습니다. 최초 MCR 구역의 마스터
니다. 제어 릴레이가 네스팅된 모든 MCR 구역의 MCR 종
속성을 제어합니다.
MCR 영역에서 블록을 호출한 경우 호출된 블록
에서 MCR 종속성이 비활성화됩니다. MCR 영역은 MCR 구역 내에서 블록을 호출해도 MCR 구역의
MCRA 코일/연산 박스로만 다시 시작할 수 있습니 네스팅 깊이는 바뀌지 않습니다. 호출된 블록의 프

240
17.4 I/O 비트 SET/RESET

그림 17.1 블록 변경 시 MCR 영역

로그램은 블록 호출 당시 열려 있던 MCR 구역에 계 있습니다. 단, 이를 위해서는 제어할 비트가 프로세


속 존재하고 이 구역에서 제어됩니다. 단, MCR 영 스 이미지 출력 테이블 내에 존재하거나 제어할 I/O
역을 열어 호출된 블록에서 MCR 종속성을 다시 활 영역에 대한 프로세스 이미지 출력 테이블이 정의되
성화해야 합니다. 어 있어야 합니다.
그림 17.3에서는 메모리 비트 M 10.0과 M 11.0 I/O 비트를 SET하려면 시스템 함수 SFC 79 SET
이 MCR 종속성을 제어합니다. 메모리 비트 M 을, RESET은 SFC 80 RSET을 사용할 수 있습니다(
10.0을 이용해 두 구역 모두에서메모리 비트 M 표 17.2 참조). MCR 구역에서 이 시스템 함수를 호
11.0의 신호 상태와 관계 없이 MCR 종속성을 활 출합니다. 시스템 함수는 MCR 종속성이 활성화된
성화할 수 있습니다(신호 상태 ‘0’ ). M 10.0이 경우에만 실행됩니다. MCR 종속성이 비활성화된
‘1’ 이면 구역 1의 MCR 종속성이 비활성화됩니 경우 이 SFC를 호출해도 실행되지 않습니다.
다. 이 경우 구역 2의 MCR 종속성을 메모리 비트
또한 I/O 비트를 SET/RESET하면 프로세스 이미
M 11.0로 제어할 수 있습니다(표 17.1 참조).
지 출력 테이블도 동시에 업데이트됩니다. I/O는 바
이트 단위로 영향을 받습니다. 첫 번째와 마지막 바
이트의SFC로 선택하지 않은 비트는 현재 프로세스
17.4 I/O 비트 SET/RESET 이미지에 있는 신호 상태를 그대로 유지합니다.

MCR 종속성이 활성화된 경우라 해도 시스템 함 마스터 제어 릴레이와 시스템 함수 SFC 79 및


수를 이용해 I/O 영역의 비트를 SET/RESET 할 수 SFC 80에 대한 예는 ‘LAD_Book’ 과 ‘FBD_

241
17 마스터 제어 릴레이

;ʹ΃͑割櫳͑͑͢愕͑;ʹ΃͑
割櫳͑ͣ櫖昢͑;ʹ΃͑涋暓昷͑洊筞

;ʹ΃͑割櫳͑͢櫖昢͑;ʹ΃͑
涋暓昷決͑焮埮夞垚͑凃殶櫖廒͑
;ʹ΃͑割櫳͑ͣ櫖昢͑
;ʹ΃͑涋暓昷͑焮埮

그림 17.2 네스팅된 MCR 구역의 MCR 종속성

Book’ 라이브러리의 ‘프로그램 흐름 제어’ 프로 러리는 출판사의 웹 사이트에서 다운로드할 수 있습


그램(함수 블록 FB 117)을 참조하십시오. 이 라이브 니다(8 페이지 참조).

표 17.1 네스팅된 MCR 구역의 MCR 종속성(예)


M 10.0 M 11.0 구역 1 구역 2
‘1’ ‘1’ MCR 종속성 없음
‘1’ ‘0’ MCR 종속성 없음 MCR 종속성 활성화
‘0’ ‘1’ or ‘0’ MCR 종속성 활성화

표 17.2 I/O 비트 제어를 위한 SFC 파라미터


SFC 파라미터 선언 데이터 형식 할당, 설명
79 N INPUT INT 설정할 비트의 수
RET_VAL OUTPUT INT 오류 정보
SA OUTPUT POINTER SET할 첫 번째 비트를 표시하는 포인터
80 N INPUT INT RESET할 비트의 수
RET_VAL OUTPUT INT 오류 정보
SA OUTPUT POINTER RESET할 첫 번째 비트를 표시하는 포인터

242
17.4 I/O 비트 SET/RESET

그림 17.3 블록 변경 시 MCR 구역

243
18 블록 함수

18 블록 함수

이 장에서는 코드 블록을 호출하고 종료하는 방법 활성화하는 선행 논리 연산이 허용됩니다. 블록 종


과 데이터 블록(DB)의 피연산자를 사용하는 방법을 료 함수 RET는 항상 선행 논리 연산을 필요로 합니
배웁니다. 다음 장에서는 블록 파라미터 사용에 대 다.
해 알아봅니다.
블록 변경과 더불어 호출 연산 박스 역시 블록 파
라미터의 전송을 포함할 수 있습니다. 함수 블록이
호출될 때 인스턴스 데이터 블록(DB)도 열립니다.
18.1 프로그래밍 블록의 기능 CALL 코일/연산 박스는 또 다른 블록을 변경하는 것
일 뿐이며 함수와 시스템 함수 내에서만 의미가 있
프로그래밍 블록의 기능은 블록 호출 및 종결을 고 허용이 됩니다.
위한 명령을 포함합니다(그림 18.1 참조). 호출 박
스를 이용해 코드 블록을 호출합니다. 블록 파라미 한 블록이 종결된 후 호출 함수가 이어지면 CPU
터가 없는 함수 또는 시스템 함수인 경우 CALL 코일 는 이 호출을 실행한 블록(호출 블록)에서 프로그램
이나 CALL 연산 박스를 이용해 호출할 수도 있습니 실행을 계속합니다. 조직 블록이 종결된 경우 CPU
다. 두 경우 모두 조건적 호출(조건에 따라 호출)을 는 운영체제 상의 기본 설정 상태로 돌아갑니다.

그림 18.1 프로그래밍 블록의 기능

244
18.1 프로그래밍 블록의 기능

증분 프로그램의 경우 프로그램 라이브러리 카탈 18.1.1 블록 호출: 일반


로그의 ‘프로그램 컨트롤’ 아래에 CALL 코일/연
코드 블록을 처리하려면 먼저 ‘호출’ 을 해야
산 박스 및 RET 코일/연산 박스가 있습니다. 프로그 합니다. 그림 18.2는 조직 블록 OB1에 함수 FC 10
램 라이브러리 카탈로그를 보려면 보기 → 개요를 선 을 호출한 예를 보여 줍니다.
택하고 [Ctrl - K]를 누르거나 삽입 → 프로그램 구성
요소를 선택하십시오. ‘FC/FB/SFC/SFB 블록’ , 블록 호출은 호출된 블록의 주소가 포함된 호출
‘멀티 인스턴스’ , 또는 ‘라이브러리’ 에서 블록 연산 박스(예에서는 FC 10), 활성화 입력 EN, 활성
을 선택한 후 호출 연산 박스를 이용해 프로그램에 화 출력 ENO, 블록 파라미터로 구성됩니다. 호출 함
블록 호출을 삽입합니다. 수가 처리되면 CPU는 호출된 블록에서 프로그램 실
행을 계속합니다. 블록은 블록 끝까지, 또는 블록 종
료 함수가 나올 때까지 처리됩니다. CPU는 호출 블
록(예에서는 OB 1)으로 돌아가 호출 연산 박스 다음
에 있는 이 호출 블록을 계속 처리합니다.

笊沲͑懆朞庂͑挚嵣͑砒岂惾瘶櫖͑
穦埿穢͑旇痢嵢͑挚嵣͑笾犢

挚嵣͑砒岂惾瘶͑熞庲垚͑柪洢͑懆朞庂͑島痆沊求嵢͑
熞庲穞垚͑冉刂͑償枻城埪͟

笊沲͑懆朞庂͑挚嵣͑砒岂惾瘶櫖͑
穦埿穢͑旇痢嵢͑挚嵣͑笾犢

挚嵣͑砒岂惾瘶͑熞庲垚͑柪洢͑懆朞庂͑島痆沊求嵢͑
熞庲穞垚͑冉刂͑償枻城埪͟

그림 18.2 블록 호출 예

245
18 블록 함수

CPU가 호출 블록으로 돌아갈 경로를 찾는 데 필 Z LAD의 경우 접점 또는 Rung,


요한 정보는 블록 스택(B 스택)에 저장되어 있습니 Z FBD의 경우 이진 변수 또는 이진 논리 연산.
다. 새 블록 호출이 실행될 때마다 새 스택 구성요소
불린 출력 파라미터는 더 이상 조합이 불가능합니
가 생성됩니다. 이 스택 구성요소에는 복귀 주소, 데
다.
이터 블록(DB) 레지스터 내용 및 호출 블록의 로컬
LAD:여러 개의 호출 연산 박스를 EN 또는 ENO를
데이터 스택 주소가 포함되어 있습니다. 오류가 발
통해 서로 연결시켜 직렬로 배열할 수 있습니다. 왼
생해 CPU가 정지 상태가 된 경우 프로그래밍 기기
쪽 회선에 직접 연결된 경우 병렬 Rung에만 호출 연
를 사용해 오류 발생 당시 어느 블록까지 처리가 되
산 박스를 삽입할 수 있습니다.
었는지 B 스택의 내용에서 확인할 수 있습니다.
FBD:한 연산 박스의 출력 ENO를 다음 연산 박스
호출된 블록에서 또는 호출된 블록으로 데이터를
의 입력 EN에 연결시키는 방식으로 여러 개의 호출
전송해 처리할 수 있습니다. 이 데이터는 블록 파라
연산 박스를 직렬로 연결할 수 있습니다. 연결된 여
미터를 통해 전송됩니다. 또한 호출 연산 박스를 이
러 연산 박스들의 출력 ENO를 AND 또는 OR과 조
용해 블록 파라미터가 없는 블록도 호출할 수 있습
합할 수 있습니다.
니다.
블록이 호출되면 MCR 종속성이 비활성화됩니
다. 블록 호출 이전 MCR의 활성화 또는 비활성화 여
IF EN == ‘1’ 또는 연결되지 않은 경우
부에 관계 없이 호출된 함수에서는 MCR이 비활성
THEN ELSE
호출된 블록이 처리됩니다. 호출된 블록이 화됩니다. 블록이 종료되면 MCR 종속성은 블록 호
IF 호출된 블록이 처리되지 않습 출 이전과 동일한 설정 상태로 돌아갑니다.
BR = ‘1’ 니다.
블록 파라미터에 따라 블록 변경 시 데이터 블록
THEN ELSE
(DB) 레지스터의 내용을 수정할 수 있습니다. 호출
ENO := ‘1’ ENO := ‘0’ ENO := ‘0’
된 블록이 함수 블록인 경우 이 블록에서는 항상 DI
레지스터를 통해 인스턴스 블록이 열립니다. 호출

18.1.2 호출 연산 박스 블록이 함수 블록인 경우 블록 호출 후에 DI 레지스


터의 내용(인스턴스 데이터 블록(DB))이 그대로 유
호출 연산 박스는 FB, FC, STB 및 SFC를 호출하
지됩니다. DB 레지스터의 내용은 특히 전달된 블록
는 데 사용됩니다. (조직 블록은 이벤트 구동 방식이
파라미터에 따라 달라집니다.
며 운영체제에 의해 시작되기 때문에 호출할 수 없
습니다.)
함수 블록 호출
입력 EN을 이용해 블록 호출이 조건에 따라 실행 함수 블록을 호출하려면 프로그램 라이브러리 카
되게 할 수 있습니다. 입력 EN이 왼쪽 회선에 직접 탈로그의 ‘FB 블록’ 에서 해당 함수 블록을 선택
연결된 경우 호출은 절대적이며 항상 실행됩니다. 합니다. 단, 사용자 프로그램에 이미 존재하는 함수
EN보다 선행되는 논리 연산이 있는 경우 블록 호출 블록만 호출할 수 있습니다. 호출에 해당하는 인스
은 이 선행 논리 연산이 완료된 경우에만 실행됩니 턴스 데이터 블록을 연산 박스 위에 씁니다. 함수 블
다. 출력 ENO는 호출된 블록이 종료될 때의 이진 결 록과 인스턴스 데이터 블록(DB) 모두 절대 또는 심
과 BR과 동일한 신호 상태를 갖습니다. 볼 주소를 가질 수 있습니다.
호출된 블록의 파라미터를 호출에 해당하는 절대 함수 블록의 경우 호출 시 모든 블록 파라미터를
또는 심볼 피연산자로 라벨링합니다. 파라미터의 초기화할 필요는 없습니다. 초기화되지 않은 블록
데이터 형식이 BOOL인 경우 다음 중 하나를 이 파 파라미터는 기존 값을 유지합니다. 하지만 포인터
라미터 앞에 놓습니다. 로 저장된 블록 파라미터는 처음 호출할 때만이라도

246
18.1 프로그래밍 블록의 기능

초기화를 해야 합니다. 그래야만 의미 있는 값이 입 사용자가 직접 작성한 함수와 동일한 방식으로 시


력됩니다(19.3 “실제 파라미터” 참조). 스템 함수를 호출합니다

또한 ‘멀티 인스턴스 용량을 가진 함수 블록’ 시스템 블록은 CPU 운영체제 내에만 존재합니
을 다른 ‘멀티 인스턴스 용량을 가진 함수 블록’ 다. 오프라인 프로그래밍 중에 시스템 블록을 호출
내에 로컬 인스턴스로 호출할 수도 있습니다. 이 경 하려면 프로그램 편집기에 호출 인터페이스에 대한
우 호출된 함수 블록은 호출 함수 블록의 인스턴스 내용이 있어야만 파라미터를 초기화할 수 있습니
데이터 블록(DB)을 자신의 로컬 데이터 저장소로 사 다. 이 인터페이스 내용은 표준 라이브러리의 시스
용합니다. 함수 블록을 호출하기 전에 호출 함수 블 템 함수 블록 아래에 있습니다. 사용자가 시스템 블
록(현재 프로그래밍 중인 블록)의 정적 로컬 데이터 록을 호출하면 프로그램 편집기는 여기서 인터페이
에 로컬 인스턴스를 선언합니다. 프로그램 라이브 스 내용을 오프라인 블록 컨테이너로 복사합니다.
러리 카탈로그의 ‘멀티 인스턴스’ 에서 사용 가능 복사된 인터페이스 내용은 ‘일반’ 블록 개체로 표
한 로컬 인스턴스 중 하나를 선택하면 선택된 로컬 시됩니다.
인스턴스가 호출됩니다. 인스턴스 데이터 블록은
프로그램 라이브러리 카탈로그의 `SFC 블록’ 또
지정할 필요가 없습니다(18.1.6 “정적 로컬 데이
는 ‘SFB 블록’ 아래 현재 사용자 프로그램에서 사
터” 참조).
용 가능한 시스템 블록이 제공되어 있습니다. 예를
들어 프로그램 라이브러리 카탈로그에서 시스템 블
함수 호출 록을 마우스로 선택한 후 현재 처리 중인 블록으로
함수를 호출하려면 프로그램 라이브러리 카탈로 드래그하면 선택한 시스템 블록이 이 블록에 호출됩
그의 ‘FB 블록’ 에서 원하는 함수 블록을 선택합 니다. 호출과 동시에 이 블록(정확히 말하면 인터페
니다. 함수는 절대 또는 심볼 주소를 가질 수 있습니 이스 내용)이 블록 컨테이너에 복사됩니다.
다.

함수를 호출할 때 사용 가능한 모든 파라미터를 순서대로 블록 호출(FBD)


초기화해야 합니다. FBD에서 블록 연산 박스를 순서대로 연결해 이진
신호를 한 연산 박스에서 다른 상자로 ‘계속 전달’
함수 값이 있는 함수 호출은 함수 값이 없는 함수
되게 하려면 프로그램 편집기가 이진 논리 연산을
호출과 동일한 방식으로 실행됩니다. 단지 전자의
처리하는 순서를 그대로 따라야 합니다. 이진 피연
경우 함수 값에 해당하는 첫 번째 출력 파라미터가
산자와 논리 연산은 처음에 ‘마지막’ 블록 연산
RET_VAL이라는 이름을 갖는다는 점만 다릅니다.
박스부터 시작해 연산 박스 입력 이전까지 처리됩니
다. 중간 이진 결과는 임시 로컬 데이터에 저장됩니
시스템 블록 호출 다(표시는 되지 않습니다). 그런 다음 프로그램 편집
CPU의 운영체제에 사용자가 이용할 수 있는 시 기가 ‘첫 번째’ 연산 박스부터 시작해 연산 박스
스템 함수(SFC)와 시스템 함수 블록(SFB)이 포함되 자체와 연산 박스의 이진 출력을 순서대로 처리합니
어 있습니다. 시스템 블록의 개수와 유형은 CPU에 다.
따라 다릅니다. 모든 시스템 블록은 호출 연산 박스
그림 18.3은 처리 순서를 보여 줍니다. 3개의 입
를 이용해 호출할 수 있습니다.
력이 있는 OR 연산 박스가 오른쪽 블록보다 먼저 처
시스템 함수 블록은 사용자가 직접 작성한 함수 리됩니다. 그 다음 2개의 입력이 있는 OR 연산 박
블록과 동일한 방식으로 호출합니다. 즉, SFB와 동 스, 왼쪽 블록 호출(Pump1의 컨트롤), 마지막으로
일한 데이터 형식의 작업 메모리에 관련 인스턴스 오른쪽 블록 호출(Pump2)이 처리됩니다. 따라서 임
데이터 블록(DB)을 설정하면 됩니다. 시 로컬 변수 #t_P1_Fault가 신호 상태가 지정되지

247
18 블록 함수

그림 18.3 순서대로 블록 호출(FBD)

않은 OR 연산 박스에서 먼저 스캔된 후 첫 번째 블 FBD:CALL 연산 박스보다 선행되는 논리 연산이


록 호출의 이진 출력에 설정될 수 있습니다. 이 경우 있으면 이 선행 논리 연산이 완료된 경우, 즉 CALL
논리 연산 결과는 거짓이 될 수 있습니다. 연산 박스에 RLO = ‘1’ 이 존재하는 경우에만 호
출이 실행됩니다. 선행 논리 연산이 완료되지 못한
해결책: 신호 전달에 글로벌 변수(예: 비트 메모리
경우 호출이 실행되지 않고 곧바로 그 다음 네트워
또는 데이터 비트)를 사용하거나 블록 호출을 두 네
크가 처리됩니다.
트워크에 분할시킵니다(예에서는 첫 번째 블록의
출력에서 발생한 상태 변화가 그 다음 프로그램 사 블록 변경이 수행된 경우 상태 비트 OS가 재설정
이클에서 두 번째 블록의 입력에만 적용됩니다). 됩니다. 상태 비트 CC0, CC1 및 OV는 영향을 받지
않습니다.

블록이 호출되면 MCR 종속성이 비활성화됩니


18.1.3 CALL 코일/연산 박스
다. 블록 호출 이전 MCR의 활성화 또는 비활성화 여
CALL 코일/연산 박스를 이용해 함수와 시스템 함
부에 관계 없이 호출된 함수에서는 MCR이 비활성
수를 호출할 수 있습니다. 단, 호출된 함수에 블록 화됩니다. 블록이 종료되면 MCR 종속성은 블록 호
파라미터가 없어야 합니다. 블록이 너무 길거나 명 출 이전과 동일한 설정 상태로 돌아갑니다.
확하지 않은 경우 블록을 여러 영역으로 ‘세분화’
하여 영역을 차례로 호출하는 방식의 CALL 코일/연 CALL 코일/연산 박스를 이용해 블록을 호출하면

산 박스를 사용할 수 있습니다. 네트워크당 1개의 데이터 블록(DB) 레지스터가 B 스택에 저장됩니다.
호출된 블록이 종료되면 블록 종료가 레지스터의 내
단일 CALL 코일/연산 박스만 허용됩니다.
용을 복구합니다. 블록 호출이 실행되면 블록 호출
LAD:CALL 코일이 왼쪽 회선에 직접 연결되어 있 이전의 글로벌 데이터 블록(DB)과 인스턴스 데이터
는 경우 호출이 항상 실행됩니다(무조건 호출). 블록(DB)도 열립니다. 블록 호출 이전에 열렸던 데
CALL 코일보다 선행되는 논리 연산이 있으면 이 선 이터 블록(DB)이 없었던 경우(예: OB 1에 인스턴스
행 논리 연산이 완료된 경우, 즉 CALL 코일에 전력 데이터 블록(DB)이 없었던 경우) 블록 호출 이후에
이 흐르는 경우에만 호출이 실행됩니다. 선행 논리 도 데이터 블록(DB)이 열리지 않습니다. 호출된 블
연산이 완료되지 못한 경우 호출이 실행되지 않고 록에 어떤 데이터 블록(DB)이 열려있든 마찬가지입
그 다음 네트워크가 처리됩니다. 니다.

248
18.1 프로그래밍 블록의 기능

18.1.4 블록 종료 함수 임시 로컬 데이터를 사용할 수 있게 합니다. 블록이


블록 종료 함수 RET를 이용해 블록의 처리를 조 호출되면 L 스택의 값이 사실상 동시화됩니다. 로컬
기에 종결시킬 수 있습니다. 데이터를 정확하게 사용하려면 데이터를 읽기 전에
먼저 써야 합니다. 블록이 종결되면 L 스택은 호출
된 다음 블록에 할당됩니다.

블록이 필요로 하는 임시 로컬 데이터 바이트의


수는 블록 헤더에 표시되어 있습니다. 이 블록 헤더
는 블록이 호출될 때 L 스택에 몇 바이트를 남겨 두
블록 종료 함수는 코일이나 연산 박스로 표시되며 어야 할지 운영체제에 알려줍니다. 사용자 역시 블
선행 논리 연산이 있어야 합니다. RET 코일/연산 박 록 헤더의 항목을 확인해 블록이 필요로 하는 로컬
스는 네트워크 내에 독립적으로 존재해야 합니다. 데이터 바이트가 얼마인지 알 수 있습니다. 블록 헤
더를 보려면 편집기의 경우 블록 열기에서 파일 → 속
선행 논리 연산이 완료되면 블록이 종료됩니다.
성을 불러옵니다. SIMATIC 관리자의 경우 편집 → 개
블록 호출이 실행되었던 이전 처리 블록으로 복귀하
체 속성를 선택한 후 ‘일반 - 파트 2’ 탭을 확인합
는 점프가 실행됩니다. 조직 블록이 종결되면 CPU
는 시스템 프로그램 상의 기본 설정 상태로 돌아갑 니다.

니다.
임시 로컬 데이터 선언
선행 논리 연산이 완료되지 않은 경우 블록 내의
다음 네트워크가 처리됩니다. 코드 블록의 선언 영역에 임시 로컬 데이터를 선
언합니다.

IF 선행 논리 연산 == ‘1’ Z 증분 프로그래밍의 경우 ‘temp’ 아래,


THEN ELSE
Z 소스 기반 프로그래밍의 경우 VAR_TEMP와
블록을 종료합니다. 다음 네트워크가 처리됩
니다. END_VAR 사이에 선언합니다.
BR := ‘1’ BR := ‘0’ 그림 18.5는 임시 로컬 데이터 선언의 예를 보여
줍니다. 변수 difference는 임시 로컬 데이터에 위치
RET 코일/연산 박스는 논리 연산의 완료 여부와 하며 데이터 형식이 INT입니다. 변수 buffer는 데이
관계 없이 RLO(전력이 흐르는지 여부)를 동시에 이 터 형식이 REAL입니다.
진 결과 BR에 저장합니다. 이 이진 결과는 호출 연 임시 로컬 데이터는 데이터 형식에 따라 해당 선
산 박스의 출력 ENO를 제어하는 데 중요한 역할을 언의 L 스택 순서에 저장됩니다.
합니다(15 “상태 비트” 참조).

임시 로컬 데이터의 심볼 주소 지정
18.1.5 임시 로컬 데이터 임시 로컬 데이터는 그 심볼 이름을 이용해 참조
임시 로컬 데이터는 블록 처리 중에 발생하는 결 합니다. 심볼 이름은 블록 로컬 심볼에 대한 규칙에
과를 버퍼하는 데 사용합니다. 임시 로컬 데이터는 따라 할당합니다.
블록 처리 중에만 사용할 수 있습니다. 버퍼된 데이 비트 메모리에 허용된 모든 연산은 임시 로컬 데
터는 블록이 처리된 후에는 유실됩니다. 이터에도 허용됩니다. 주의: 임시 로컬 데이터 비트
임시 로컬 데이터는 시스템 메모리의 로컬 데이터 는 관련 블록을 벗어나면 신호 상태를 유지하지 않
스택(L 스택)에 존재하는 피연산자입니다. CPU의 기 때문에 엣지 메모리 비트로 사용하기에는 부적합
운영체제는 코드 블록이 호출될 때 이 코드 블록에 합니다.

249
18 블록 함수

특정 블록의 임시 로컬 데이터는 해당 블록 내에 위한 루틴을 프로그래밍하는 경우 이 오류 조직 블


서만 주소를 지정할 수 있습니다. 단, 호출 블록의 록의 시작 정보를 저장할 최소 20 바이트의 공간을
임시 로컬 데이터는 예외적으로 블록 파라미터를 통 추가로 확보해 두어야 합니다. 이 오류 조직 블록 역
해 액세스할 수 있습니다. 시 같은 우선 순위 등급에 속하기 때문입니다.

조직 블록을 프로그래밍할 때 해당 조직 블록의


L 스택의 크기 시작 정보를 선언합니다. 시작 정보는 필수입니다.
L 스택의 전체 크기는 CPU마다 다릅니다. 우선 표준 라이브러리의 조직 블록 아래에 영문으로 작성
순위 등급, 즉 조직 블록의 프로그램에서 사용 가능 된 샘플 선언이 있습니다. 시작 정보가 필요하지 않
한 임시 로컬 데이터 바이트의 수 역시 사전에 결정 은 경우 처음 20 바이트를 다른 것(예: 배열)으로 선
되어 있습니다. S7-300의 경우 임시 로컬 데이터 바 언하면 됩니다(그림 18.5 참조).
이트의 수가 고정되어 있습니다. 예를 들어 CPU
314의 경우 우선 순위 등급당 510 바이트를 사용할
임시 로컬 데이터의 절대 주소 지정
수 있습니다. S7-400의 경우 CPU를 초기화할 때
임시 로컬 데이터는 보통 그 심볼 이름으로 참조
필요한 임시 로컬 데이터 바이트의 수를 지정할 수
합니다. 절대 주소를 사용하는 것은 예외에 해당합
있습니다. 이 임시 로컬 데이터 바이트는 관련 조직
니다. 데이터가 어떻게 L 스택에 저장되는지 이해하
블록에 호출된 블록과 이 블록을 호출한 블록이 공
게 되면 정적 로컬 데이터의 주소를 사용자가 직접
유해야 합니다.
계산할 수 있습니다. 또한 컴파일된 블록의 변수 선
주의: 프로그래밍 인터페이스에는 표시되지 않지 언 테이블에서 주소를 찾을 수도 있습니다.
만 프로그램 편집기 역시 블록 파라미터 전달 등의
임시 로컬 데이터의 피연산자 식별자는 L입니다.
목적으로 임시 로컬 데이터를 사용합니다.
비트는 L, 바이트는 LB, 워드는 LW, 더블 워드는 LD
그림 18.4 로 주소가 지정됩니다.
조직 블록 내 임시 로컬 데이터 선언의 예
예: 절대 주소 지정을 위해 임시 로컬 데이터 16
선언 이름 데이터 형식 주소
바이트를 확보하고 이 바이트의 값을 바이트와 비트
TEMP SINFO ARRAY[1.0.20] 0.0
단위로 참조하고자 합니다. 이를 위해서 먼저 주소
BYTE *1.0
지정이 0에서 시작되도록 로컬 데이터 영역의 시작
LByte ARRAY[1.0.16] 20.0
지점에 배열을 생성합니다. 조직 블록인 경우 이 배
BYTE *1.0
열 선언을 시작 정보의 선언 바로 뒤에 위치시킵니
다. 이 경우 주소 지정이 20에서 시작됩니다.
시작 정보
조직 블록이 호출되면 CPU의 운영체제는 임시
데이터 형식 ANY
로컬 데이터에 있는 시작 정보를 전달합니다. 시작
예외적인 경우이긴 하지만 임시 로컬 데이터의 변
정보는 조직 블록당 20바이트로 구성되며 모든 조
수를 데이터 형식 ANY로 선언할 수 있습니다. 이 기
직 블록의 시작 정보가 거의 동일합니다. 각종 조직
능은 런타임 중에 ANY 포인터를 수정할 때 사용합
블록의 시작 정보에 대한 자세한 설명은 20 “메인
니다(24.2.5 “ ‘변수’ ANY 포인터” 참조).
프로그램” , 21 “인터럽트 처리” , 22 “시동 특성”
및 23 “오류 처리” 를 참조하십시오.
사용 중인 모든 우선 순위 클래스에는 항상 시작 18.1.6 정적 로컬 데이터
정보를 위한 20 바이트의 여유 공간이 있어야 합니 정적 로컬 데이터는 함수 블록이 인스턴스 데이터
다. 동기화 오류(프로그래밍 및 액세스 오류) 평가를 블록(DB)에 저장하는 피연산자입니다.

250
18.1 프로그래밍 블록의 기능

그림 18.5 함수 블록 내 로컬 데이터 선언의 예


선언 이름 데이터 형식 주소 초기값 주석
IN Man_on BOOL 0.0 FALSE 입력 파라미터
OUT Switch_on BOOL 2.0 FALSE 출력 파라미터
IN_OUT Length INT 4.0 0 I/O 파라미터
STAT Total INT 6.0 0 정적 로컬 데이터
Setpoint DINT 8.0 L#0
TEMP Difference INT 0.0 임시 로컬 데이터
Buffer REAL 2.0

정적 로컬 데이터는 함수 블록의 ‘메모리’ 역할 글로벌 데이터 블록(DB)에서 데이터 피연산자의


을 합니다. 정적 로컬 데이터는 글로벌 데이터 블록 주소를 지정할 수 있는 모든 연산은 정적 로컬 데이
(DB)에서 데이터 피연산자가 그러하듯 프로그램에 터의 주소도 지정할 수 있습니다.
의해 함수 블록의 값이 바뀔 때까지 그 값을 그대로
예: 함수 블록 Totalizer가 정적 로컬 데이터에 저
유지합니다.
장된 값에 입력값을 더하고 그 합을 정적 로컬 데이
정적 로컬 데이터 바이트의 수는 변수의 데이터 터에 저장합니다. 다음 호출에서 이 합에 다시 입력
형식과 CPU별 데이터 블록(DB)의 길이에 따라 제 값이 더해지는 식으로 계속 반복됩니다(위의 그림
한됩니다.  18.6 참조).

Total은 함수 블록 Totalizer의 인스턴스 데이터 블


정적 로컬 데이터 선언 록(DB)인 데이터 블록(DB) TotalizerData에 있는 변
함수 블록의 선언 영역에 정적 로컬 데이터를 선 수입니다(사용자가 심볼 테이블에 모든 블록의 이
언합니다. 름을 직접 정의할 수 있습니다. 단, 이름을 정의할
때는 관련 규칙을 반드시 지켜야 합니다). 인스턴스
Z 증분 프로그래밍의 경우 ‘stat’ 아래,
데이터 블록(DB)은 함수 블록의 데이터 구조를 갖습
Z 소스 기반 프로그래밍의 경우 VAR과 END_VAR 니다. 이 예의 경우 In 과 Total이라는 이름의 2개의
사이에 선언합니다. INT 변수를 갖습니다.

18.1.5 “임시 로컬 데이터” 의 그림 18.5는 함수


블록에 변수를 선언한 예를 보여 줍니다. 블록 파라 함수 블록 외부에서 정적 데이터에 액세스
미터가 제일 먼저, 그 다음 정적 로컬 데이터, 마지
원칙적으로 정적 로컬 데이터는 함수 블록 자체에
막으로 임시 로컬 데이터 순서로 선언됩니다.
서만 처리됩니다. 하지만 정적 로컬 데이터는 데이
정적 로컬 데이터는 선언 순서와 데이터 형식에 터 블록(DB)에 저장되기 때문에 글로벌 데이터 블록
따라 블록 파라미터 다음의 인스턴스 데이터 블록 (DB)에서 변수를 이용할 때와 마찬가지로 데이터 블
(DB)에 저장됩니다. 록(DB) 이름.피연산자 이름으로 언제나 정적 로컬
데이터에 액세스할 수 있습니다.

정적 로컬 데이터의 심볼 주소 지정 아래 예에서는 데이터 블록(DB)의 이름은


정적 로컬 데이터는 그 심볼 이름으로 참조합니 TotalizerData로, 데이터 피연산자의 이름은 Total로
다. 심볼 이름은 블록 로컬 심볼에 대한 규칙에 따라 지정했습니다. 다음과 같은 액세스 명령을 사용할
할당합니다. 수 있습니다.

251
18 블록 함수

塶決瘶͑懺匶櫖昢͑塶決瘶͑挚嵣汆͑儢懊͑懆朞庂͑
微奖͑懺櫲渂惆嵢͑嵢珲͑汾枪瘺枪汞͑懆朞垚͑
洊熺͑決床求嵢͑祢柢夯城埪͟

壟柢櫖͑空埿夞垚͑洎堆͑渂暒壊͑祢柢夯城埪͟

그림 18.6 정적 로컬 데이터 및 로컬 인스턴스 예

252
18.1 프로그래밍 블록의 기능

함수 블록 FB 6, FB 7 및 FB 8에 로컬 인스턴스
를 사용한 예는 ‘LAD_Book’ 과 ‘FBD_Book’
라이브러리의 ‘프로그램 흐름 컨트롤’ 프로그램
을 참조하십시오. 이 라이브러리는 출판사의 웹 사
이트에서 다운로드할 수 있습니다.(8 페이지 참조).
19.5.3 “공급 예” 의 ‘공급’ 예에서 로컬 인스턴
스의 또 다른 사용법을 확인할 수 있습니다.

정적 로컬 데이터의 절대 주소 지정
로컬 인스턴스
원칙적으로 정적 로컬 데이터에는 심볼 주소가 지
함수 블록을 호출할 때 보통 해당 호출을 위한
정됩니다. 절대 주소 지정은 예외에 해당합니다. 함
인스턴스 데이터 블록(DB)을 지정합니다. 함수 블
수 블록 내에서는 인스턴스 데이터 블록(DB)이 DI
록은 지정된 인스턴스 데이터 블록에 블록 파라미
레지스터를 통해 열립니다. 따라서 정적 로컬 데이
터와 정적 로컬 데이터를 저장합니다.
터는 물론 블록 파라미터까지 포함하고 있는 이 데
STEP 7 V2를 시작할 때 ‘멀티 인스턴스'를 생 이터 블록(DB)의 피연산자는 DI를 피연산자 식별자
성할 수 있습니다. 다시 말해 함수 블록을 다른 함 로 갖게 됩니다. 비트는 DIX, 바이트는 DIB, 워드는
수 블록 내에 로컬 인스턴스로 호출할 수 있습니 DIW, 더블 워드는 DID로 주소가 지정됩니다.
다 . 호출된 함수 블록의 정적 로컬 데이터 및 블록
데이터 블록(DB)에 어떻게 데이터가 저장되는지
파라미터는 호출 블록의 정적 로컬 데이터의 하위
이해하게 되면 정적 로컬 데이터의 절대 주소를 사
세트가 됩니다. 이를 위해서는 호출 함수 블록과
용자가 직접 계산할 수 있습니다. 또한 컴파일된 블
호출된 함수 블록이 블록 버전 2, 즉 두 블록 모두
록의 변수 선언 테이블에서 주소를 찾을 수도 있습
‘멀티 인스턴스 용량’ 을 갖고 있어야 합니다. '멀
니다. 단, 주의해야 할 점이 있습니다. 테이블에 나
티 인스턴스 용량’ 이 있으면 최대 깊이 8까지 함
열된 주소는 인스턴스의 시작과 관련이 있는 주소입
수 블록 호출을 ‘네스팅’ 할 수 있습니다.
니다. 이 주소는 데이터 블록(DB)으로 함수 블록을
예(아래 그림 18.6 참조): 함수 블록 Evaluation의 호출할 때만 적용됩니다. 함수 블록을 로컬 인스턴
정적 로컬 데이터에 함수 블록 Totalizer에 대응하며 스로 호출하면 로컬 인스턴스의 로컬 데이터가 호출
그 데이터 구조를 갖는 변수 Memory를 선언합니다. 함수 블록의 인스턴스 데이터 블록(DB) 한가운데 위
Memory의 데이터는 정적 로컬 데이터에 ‘블록 로 치하게 됩니다. 절대 주소는 예를 들어 모든 로컬 인
컬’ 로 저장되기 때문에 이제 데이터 블록(DB)을 지 스턴스를 저장하고 있는 컴파일된 인스턴스 데이터
정하지 않고 변수 Memory 를 통해 함수 블록 블록(DB)에서 확인할 수 있습니다. 개별 로컬 데이
Totalizer를 호출할 수 있습니다(Memory는 함수 블 터 피연산자의 주소에 대한 설명을 보려면 선택 보
록 Totalizer의 로컬 인스턴스입니다). 기 → 데이터 보기를 선택하십시오.
구조 구성요소에 액세스할 때와 마찬가지로 구 여기 소개된 예를 기준으로 할 때 데이터 블록
조 이름(Memory)과 구성요소 이름(Total)을 지정 (DB)을 이용해 함수 블록 Totalizer를 호출한 경우
하여 함수 블록 Evaluation의 프로그램에 있는 함수 블록 Totalizer의 변수 Total은 DIW 2로 주소가
Memory의 정적 로컬 데이터에 액세스합니다. 지정됩니다(데이터 블록 TotalizerData의 피연산자
따라서 인스턴스 데이터 블록(DB) 참조). 함수 블록 Evaluation에서 로컬 인스턴스로
EvaluationData에 변수 Memory.In과 Memory.Total 함수 블록(DB) Totalizer를 호출한 경우 변수 Total
이 포함됩니다. 이 변수는 EvaluationData.Memory. 은 DIW 6으로 주소가 지정됩니다(데이터 블록(DB)
Total과 같은 글로벌 변수로 지정할 수도 있습니다. EvaluationData의 피연산자 참조).

253
18 블록 함수

18.2 데이터 블록(DB)의 기능 (DB)의 번호가 포함되어 있습니다. 현재 데이터 블


록(DB)이란 현재 처리 중인 피연산자가 속한 데이터
프로그램 데이터는 데이터 블록(DB)에 저장합니 블록(DB)을 말합니다. 데이터 블록(DB) 피연산자에
다. 원칙적으로는 비트 메모리 영역에 데이터를 저 액세스하기 전에 해당 피연산자가 포함된 데이터 블
장할 수도 있습니다. 하지만 데이터 블록(DB)을 이 록(DB)을 먼저 열어야 합니다. 전체 주소를 지정해
용하면 데이터 용량, 데이터 구조 및 데이터 형식 측 데이터 피연산자에 액세스하는 경우(아래와 같이
면에서 유연성이 훨씬 뛰어납니다. 이 장에서는 다 데이터 블록(DB) 지정을 이용) 데이터 블록(DB)을
음에 대해 설명합니다. 열거나 데이터 블록(DB) 레지스터의 내용을 고려할
Z 데이터 피연산자 사용 방법 필요가 없습니다. 프로그램 편집기는 사용자의 지
정에 따라 필요한 명령을 생성합니다.
Z 데이터 블록(DB) 호출 방법
프로그램 편집기는 글로벌 데이터 블록(DB)에 액
Z 런타임 중에 데이터 블록(DB) 생성, 삭제 및 테
세스할 때는 주로 첫 번째 데이터 블록(DB) 레지스
스트 방법
터를 사용하고, 인스턴스 데이터 블록(DB)에 액세
데이터 블록(DB)은 두 가지 버전으로 사용할 수 스할 때는 두 번째 데이터 블록(DB) 레지스터를 사
있습니다. 첫째는 어떤 코드 블록에도 할당되지 않 용합니다. 이런 이유 때문에 이 두 레지스터에 ‘글
는 글로벌 데이터 블록(DB)이고, 둘째는 함수 블록 로벌 데이터 블록(DB) 레지스터’ (줄여서 DB 레지
에 할당되는 인스턴스 데이터 블록(DB)입니다. 글 스터)와 ‘인스턴스 데이터 블록 (DB) 레지스터’ (
로벌 데이터 블록(DB) 의 데이터는 모든 코드 블록 줄여서 DI 레지스터)라는 이름이 붙었습니다. CPU
이 이용할 수 있는 ‘자유’ 데이터입니다. 글로벌 가 이 두 레지스터를 처리하는 방식에는 전혀 차이
데이터 블록의 용량과 구조는 글로벌 데이터 블록 가 없습니다. 각 데이터 블록(DB)은 두 레지스터 중
(DB)을 프로그래밍을 통해 사용자가 직접 결정할 수 하나를 통해 열거나 두 레지스터를 통해 동시에 열
있습니다. 인스턴스 데이터 블록(DB) 은 관련된 함 수 있습니다.
수 블록이 사용하는 데이터만 저장합니다. 따라서
이 함수 블록이 ‘자신의’ 인스턴스 데이터 블록 핵심부터 먼저 말하자면 LAD나 FBD를 사용하는
(DB) 내 데이터 구조와 저장 위치를 결정합니다. 경우 DB 레지스터에만 영향을 줄 수 있습니다. OPN
코일/연산 박스가 있는 데이터 블록(DB)(아래 참조)
데이터 블록(DB)의 개수와 길이는 CPU에 따라
을 여는 경우 항상 DB 레지스터를 통해 이 블록을
다릅니다. 데이터 블록(DB)은 1부터 번호를 매깁니
열어야 합니다. LAD와 FBD의 경우 인스턴스 데이
다. 따라서 DB 0이란 데이터 블록(DB)은 없습니다.
터 블록(DB)은 항상 DI 레지스터를 통해 열립니다.
각 데이터 블록은 글로벌 데이터 블록(DB) 또는 인
블록이 호출될 때 호출 연산 박스가 인스턴스 데이
스턴스 데이터 블록(DB)으로 사용할 수 있습니다.
터 블록(DB)을 엽니다.
먼저 프로그램에서 사용할 데이터 블록(DB) 을
생성해야 합니다. 코드 블록 등을 프로그래밍하거 데이터 워드를 로드할 때는 열린 2개의 데이터 블
나 런타임 중에 시스템 함수 SFC 22 CREAT_DB를 록(DB) 중 어디에 데이터 워드가 있는지 지정해야
사용해 데이터 블록(DB) 을 ‘설정’ 합니다. 합니다. 데이터 블록(DB)이 DB 레지스터를 통해 열
린 경우 이 데이터 블록(DB)에 있는 데이터 워드는
DBW라고 부릅니다. 데이터 블록이 DI 레지스터를
18.2.1 2개의 데이터 블록(DB) 레지스터 통해 열린 경우 이 데이터 블록(DB)에 있는 데이터
S7-CPU마다 2개의 데이터 블록(DB) 레지스터 워드는 DIW라고 부릅니다. 나머지 데이터 피연산자
가 있습니다. 이 레지스터에는 현재 데이터 블록 도 이에 따라 이름을 붙입니다(표 18.1 참조).

254
18.2 데이터 블록(DB)의 기능

표 18.1 데이터 피연산자 정). 따라서 데이터 피연산자가 항상 고유 주소를 갖


데이터 피연산자 데이터 블록(DB)이 열린 경로 습니다.
DB 레지스터 DI 레지스터 데이터 피연산자의 심볼 주소는 다음과 같이 2단
데이터 비트 DBX y.x DIX y.x 계로 결정합니다.
데이터 바이트 DBB y DIB y
1) 심볼 테이블에서 데이터 블록(DB) 할당
데이터 워드 DBW y DIW y
데이터 더블 워드 DBD y DID y 데이터 블록(DB)은 프로그램 내에서 고유 주
x = 비트 주소, y = 바이트 주소 소를 갖는 글로벌 데이터입니다. 심볼 테이블
에서 데이터 블록(DB)(예: DB 51)의 절대 주
소에 심볼(예: Motor1)을 할당합니다.
18.2.2 데이터 피연산자 액세스
다음과 같은 방법으로 피연산자에 액세스할 수 있 2) 데이터 블록(DB)에서 데이터 피연산자 할당
습니다. 데이터 블록 프로그래밍 중에 데이터 피연산
자의 이름(및 데이터 형식)을 정의할 수 있습
Z 전체 주소 지정으로 심볼 주소 지정
니다. 이 이름은 관련된 블록 내에서만 적용되
Z 전체 주소 지정으로 절대 주소 지정 는 ‘블록 로컬’ 이름입니다. 따라서 동일한
Z 부분 주소 지정으로 절대 주소 지정 이름을 다른 블록의 다른 변수에 사용할 수 있
습니다.
심볼 주소로 글로벌 데이터 블록(DB)에 있는 데
이터 피연산자에 액세스하려면 시스템에 대한 최소
한의 지식이 요구됩니다. 절대 주소로 액세스하거 데이터 피연산자에 전체 주소가 포함된
액세스
나 두 데이터 블록 레지스터를 모두 사용하려면 아
래 주의사항을 준수해야 합니다. 전체 주소가 포함된 액세스인 경우 데이터 블록
(DB)을 데이터 피연산자와 함께 지정합니다. 이 주
소 지정 방법은 심볼 또는 절대 주소 모두 가능합니
데이터 피연산자의 심볼 주소 지정
다.
데이터 피연산자는 가능한 한 심볼 주소로 지정할
MOTOR1.ACTVAL
것을 권장합니다. 심볼 주소 지정하면
DB 51.DBW 20
Z 프로그램을 더 쉽게 읽고 이해할 수 있습니다(의 MOTOR1은 사용자가 심볼 테이블에서 데이터 블
미 있는 용어를 심볼로 사용하는 경우). 록(DB)에 할당한 심볼 주소입니다. ACTVAL은 데이
Z 프로그래밍 중에 쓰기 오류를 줄일 수 있습니다. 터 블록(DB)을 프로그래밍할 때 정의한 데이터 피연
프로그램 편집기는 심볼 테이블과 프로그램에 산자입니다. 심볼 이름 MOTOR1.ACTVAL은 데이터
사용된 용어를 비교합니다. 심볼 주소를 사용하 피연산자를 DB 51.DBW 20로 지정한 것과 마찬가
면 절대 주소를 사용할 때 발생할 수 있는 DBB 지로 고유의 이름이 됩니다.
156 및 DBB 165와 같은 ‘숫자 전환 오류’ 가 전체 주소가 포함된 데이터 액세스는 글로벌 데이
발생하지 않습니다. 터 블록(DB) 레지스터(DB 레지스터)를 통해서만 가
Z 또한 심볼 주소 지정은 시스템 코드 레벨의 프로 능합니다. 전체 주소가 포함된 데이터 피연산자인
그래밍 지식을 요구하지 않습니다. 즉, CPU가 경우 프로그램 편집기는 먼저 DB 레지스터를 통해
현재 어떤 데이터 블록(DB)을 열어두고 있는지 데이터 블록(DB)을 연 다음 데이터 피연산자에 액세
등을 알아야 할 필요가 없습니다. 스합니다.

심볼 주소 지정은 전체 주소를 지정해 액세스합니 주소가 포함된 데이터 피연산자의 데이터 형식에
다(데이터 블록(DB)과 데이터 피연산자를 함께 지 허용된 모든 함수에 전체 주소가 포함된 액세스를

255
18 블록 함수

이용할 수 있습니다. 블록 파라미터의 경우도 마찬 이용해도 DI 레지스터를 통해서는 데이터 블록을 열


가지입니다. 예를 들어 전체 주소가 포함된 데이터 수 없습니다. (DI 레지스터는 현재 인스턴스 데이터
피연산자를 실제 파라미터로 지정할 수 있습니다. 블록(DB)을 열 때 호출 연산 박스를 이용합니다.)

증분 프로그래밍의 경우 프로그램 라이브러리 카


데이터 피연산자의 절대 주소 지정 탈로그의 ‘DB 호출’ 아래에 OPN 코일/연산 박스
데이터 피연산자의 절대 주소 지정을 위해서는 설 가 있습니다.
정 당시 프로그램 편집기가 데이터 피연산자를 배치
한 주소를 알아야 합니다. 데이터 블록(DB)을 프로 개방 데이터 블록(DB)은 런타임 중에 반드시 작

그래밍하고 컴파일 한 후 주소를 출력하면 필요한 업 메모리 내에 있어야 합니다.


주소를 찾을 수 있습니다. 주소 열에 관련 변수가 시
OPN 코일/연산 박스 다음에 배치된 네트워크에
작된 절대 주소가 표시됩니다. 이 절차는 모든 데이
서 부분 주소 지정을 사용하면 개방 데이터 블록 내
터 블록(DB)에 적용할 수 있습니다. 글로벌 데이터
에 위치한 데이터 피연산자에만 액세스할 수 있습니
블록(DB)으로 사용하는 데이터 블록(DB)과 인스턴
다. 한 데이터 블록(DB)에서 다른 데이터 블록(DB)
스 데이터 블록(DB)으로 사용하는 데이터 블록(DB)
으로 복사하려면 중간 버퍼를 통해 임시 로컬 데이
모두에 이 절차를 적용합니다(로컬 인스턴스의 경
터로 들어가거나 전체 주소가 포함된 데이터 피연산
우 18.2.4 “데이터 주소 지정의 특이 사항” 참조).
자를 이용합니다(두 번째 방법을 권장). 주의: 전체
이 방법으로 프로그램 편집기가 함수 블록의 블록
주소가 포함된 데이터 피연산자는 ‘자신의’ 데이
파라미터와 정적 로컬 데이터를 어디에 저장했는지
터 블록(DB)으로 DB 레지스터를 덮어쓰기 합니다.
도 알 수 있습니다.

데이터 피연산자는 비트 메모리와 같은 바이트 단 예: 데이터 블록 DB 13의 데이터 워드 DBW 10의


위로 주소를 지정합니다. 데이터 피연산자에 사용 값을 데이터 블록 DB 14의 데이터 워드 DBW 16으
되는 함수 역시 비트 메모리와 함께 사용되는 함수 로 전송하도록 설정되어 있습니다. MOVE 연산 박
와 같은 함수입니다. 스를 사용하면 부분 주소가 포함된 데이터 피연산자
를 현재 열려 있는 데이터 블록(DB) 내에 복사만 할
수 있습니다. 데이터 블록 간 복사를 위해서는 로컬
18.2.3 데이터 블록(DB) 열기 데이터 워드와 같은 중간 버퍼가 필요합니다
DB 레지스터를 통해 데이터 블록(DB)을 열 때는 (그림 18.7 참조). 이런 경우 전체 주소 지정을 권장
OPN 코일(LAD) 또는 OPN 연산 박스(FBD)를 이용 합니다.
합니다.
한 데이터 블록(DB)을 열면 다른 데이터 블록
(DB)이 열릴 때까지 이 데이터 블록이 ‘유효’ 합
니다. 일부 경우에는 프로그램 편집기를 통해 이 데
이터 블록(DB)을 볼 수 없는 경우도 있습니다. 호출
연산 박스로 블록을 변경한 경우가 이에 해당합니다
(18.2.4 “데이터 주소 지정의 특이 사항” 참조).

OPN 코일/연산 박스는 왼쪽 회선에 직접 연결되 CALL 코일/연산 박스를 이용해 블록 변경을 수행
어 있고 Rung에서 독립적으로 실행됩니다. 지정된 한 경우 데이터 블록(DB) 레지스터의 내용이 보존됩
데이터 블록(DB)은 항상 DB 레지스터를 통해 열립 니다. 호출 블록으로 복귀하는 즉시 블록 변경은 레
니다. LAD 또는 FBD의 경우 OPN 코일/연산 박스를 지스터의 기존 내용을 복구합니다.

256
18.2 데이터 블록(DB)의 기능

그림 18.7 부분 및 전체 주소가 포함된 데이터 피연산자 예

18.2.4 데이터 주소 지정의 특이 사항 이터 형식의 입/출력 파라미터에 액세스하면 DB 레


지스터의 내용이 변경됩니다.
DB 레지스터의 내용 변경
프로그램 편집기는 다음 함수를 이용해 2개의 DB 호출 연산 박스로 함수 블록 호출
레지스터의 내용을 변경할 수 있는 명령을 추가로 호출 연산 박스는 실제 함수 블록 호출 전에 데이
생성합니다. 터 블록(DB) 레지스터를 스와핑하여 현재 인스턴스
데이터 블록(DB)의 번호를 DB 레지스터에 저장한
데이터 피연산자의 전체 주소 지정 후 호출된 함수 블록을 위한 인스턴스 데이터 블록
데이터 피연산자에 전체 주소가 지정될 때마다 프 (DB)을 엽니다. 이렇게 하면 호출된 함수 블록과 관
로그램 편집기는 먼저 데이터 블록(DB)을 연 다음 련된 인스턴스 데이터 블록(DB)이 항상 열리게 됩니
데이터 피연산자에 액세스합니다. DB 레지스터는 다. 호출 연산 박스는 실제 함수 블록 호출 후에 데
매번 덮어쓰기 됩니다. 블록 파라미터에 전체 주소 이터 블록(DB) 레지스터를 다시 스와핑하여 현재 인
가 포함된 데이터 피연산자를 제공할 때도 동일하게 스턴스 데이터 블록(DB)을 호출 함수 블록에서 다시
적용됩니다. 사용할 수 있게 만듭니다. 이런 식으로 호출 연산 박
스는 DB 레지스터의 내용을 변경합니다.
블록 파라미터 액세스
다음 블록 파라미터에 액세스하면 DB 레지스터 함수 블록에 DI 레지스터 사용
의 내용이 변경됩니다. 함수인 경우 복합 데이터 형 함수 블록에서 DI 레지스터는 현재 인스턴스 데이
식의 모든 블록 파라미터, 함수 블록인 경우 복합 데 터 블록(DB)의 번호를 항상 포함합니다. 블록 파라

257
18 블록 함수

미터 또는 정적 로컬 데이터는 모두 DI 레지스터를 Data.ActValue DB1.DBW 10


통해 액세스합니다. 함수 블록의 선언 테이블에 명 여기서 Data는 데이터 블록 DB 1의 심볼 주소입
시된 로컬 데이터의 주소는 인스턴스 데이터 블록 니다. 이제 데이터 워드 DBW 10 바로 앞에 심볼 주
(DB)으로 함수 블록을 열었을 때만 적용됩니다. 이 소가 MaxCurrent인 데이터 워드를 추가합니다. 코
경우 데이터 피연산자는 바이트 0에서 시작합니다. 드 블록을 다음에 열거나 저장하면 다음과 같은 결
과를 얻게 됩니다.
함수 블록을 로컬 인스턴스로 호출하면 함수 블록
의 데이터가 호출 데이터 블록(DB)의 인스턴스 데이 ‘심볼 주소가 우선 순위를 갖습니다’ 인 경우:
터 블록(DB) ‘가운데’ 위치하게 됩니다. 데이터 Data.MaxCurrent DB1.DBW 10
보기 형식으로 인스턴스 데이터 블록(DB)을 출력하 ‘심볼 주소가 우선순위를 갖습니다’ 인 경우:
면 이 데이터에 로컬 데이터의 절대 주소가 포함되 Data.ActValue DB1.DBW 12
어 있습니다. 개별 변수도 호출된 로컬 인스턴스의 글로벌 데이터 블록(DB)에 있는 데이터 피연산자
변수를 포함해 이름 및 주소와 함께 표시됩니다. 에 액세스할 때도 심볼 테이블에 심볼 주소가 입력
나중에 로컬 인스턴스로 사용하고자 하는 함수 블 되어 있는 글로벌 피연산자(인스턴스 입력용)에 액
록을 프로그래밍하는 경우 프로그래밍 당시에는 변 세스할 때와 동일하게 적용됩니다. 자세한 내용은
수의 절대 주소를 몰라도 괜찮습니다. 프로그램 편 2.5.5 “주소 우선 순위” 를 참조하십시오.
집기가 심볼 프로그래밍을 할 때와 마찬가지로 이 주의: 이미 컴파일된 블록에는 절대 주소 명령구
경우에도 주소 레지스터 AR2의 내용이 변수 주소에 문으로 작성된 실행 가능한 MC7 코드가 포함되어
추가됩니다. 단, STL 프로그래밍 언어를 사용하는 있기 때문에 이 ‘재결선’ 이 자동으로 실행되지 않
경우에만 가능합니다. 습니다. 관련 블록을 열어 다시 저장한 후 해당 메시
지를 사용해 변경을 실행해야 블록이 변경됩니다.
나중에 데이터 블록(DB)의 내용 변경 블록 폴더 전체를 수정하려면 편집 → 선택된 블록
‘블록’ 의 레지스터에 있는 오프라인 개체 컨테 개체와 블록 일치 여부 검사를 선택하십시오.
이너 블록의 속성 창에서 데이터 피연산자의 심볼
주소와 절대 주소 중 이후 디스플레이에서 우선 순
위를 가지는 주소를 결정하고 이미 저장되어 있는
18.3 데이터 블록(DB)용 시스템 함수
코드 블록용 데이터 블록(DB)의 내용이 변경되었을
때 저장할지 여부를 지정할 수 있습니다. 데이터 블록(DB) 처리에 사용되는 시스템 함수는
기존 STEP 7 버전과 마찬가지로 기본값은 ‘절 모두 3개입니다. 이 함수의 파라미터는 표 18.2에
대 주소가 우선 순위를 갖습니다’ 입니다. 다시 말 설명되어 있습니다.
해 선언에 변경 사항이 있는 경우 절대 주소는 프로 Z SFC 22 CREAT_DB
그램에 그대로 보존되고 심볼 주소만 그에 따라 변 작업 메모리에 데이터 블록(DB)을 만듭니다.
경된다는 의미입니다. ‘심볼 주소가 우선 순위를
Z SFC 85 CREA_DB
갖습니다’ 를 기본값으로 선택하면 절대 주소가 변
작업 메모리에 데이터 블록(DB)을 만듭니다.
경되고 심볼 주소는 그대로 보존됩니다.
Z SFC 82 CREA_DBL
예: 데이터 블록 DB 1의 데이터 워드 DBW 10가
로드 메모리에 데이터 블록(DB)을 만듭니다.
ActValue라는 심볼 주소를 갖고 있다고 가정합니
다. 프로그램에서 이 데이터 워드의 주소는 다음과 Z SFC 23 DEL_DB
같이 지정됩니다. 데이터 블록(DB)을 삭제합니다.

258
18.3 데이터 블록(DB)용 시스템 함수

표 18.2 데이터 블록(DB) 처리를 위한 SFC


SFC 이름 선언 데이터 형식 할당, 설명
22 LOW_LIMIT INPUT WORD 생성할 데이터 블록(DB)의 최소 번호
UP_LIMIT INPUT WORD 생성할 데이터 블록(DB)의 최대 번호
COUNT INPUT WORD 데이터 블록(DB)의 길이(짝수의 바이트 단위)
RET_VAL RETURN INT 오류 정보
DB_NUMBER OUTPUT WORD 생성된 데이터 블록(DB)의 번호
85 LOW_LIMIT INPUT WORD 생성할 데이터 블록(DB)의 최소 번호
UP_LIMIT INPUT WORD 생성할 데이터 블록(DB)의 최대 번호
COUNT INPUT WORD 데이터 블록(DB)의 길이(짝수의 바이트 단위)
ATTRIB INPUT BYTE 블록 특성:
B#16#00 보존
B#16#04 보존 안 함
RET_VAL RETURN INT 오류 정보
DB_NUMBER OUTPUT WORD 생성된 데이터 블록(DB)의 번호
82 REQ INPUT BOOL 신호 상태 ‘1’ 로 생성을 트리거합니다.
LOW_LIMIT INPUT WORD 생성할 데이터 블록(DB)의 최소 번호
UP_LIMIT INPUT WORD 생성할 데이터 블록(DB)의 최대 번호
COUNT INPUT WORD 데이터 블록(DB)의 길이(짝수의 바이트 단위)
ATTRIB INPUT BYTE 생성된 데이터 블록(DB)의 특성
SRCBLK INPUT ANY 생성된 데이터 블록(DB)을 초기화시킬 작업 메모리의
데이터 영역
RET_VAL RETURN INT 오류 정보
BUSY OUTPUT BOOL TRUE이면 생성을 완료하지 못했습니다.
DB_NUM OUTPUT WORD 생성된 데이터 블록(DB)의 번호
23 DB_NUMBER INPUT WORD 삭제할 데이터 블록(DB)의 번호
RET_VAL RETURN INT 오류 정보
24 DB_NUMBER INPUT WORD 테스트할 데이터 블록(DB)의 번호
RET_VAL RETURN INT 오류 정보
DB_LENGTH OUTPUT WORD 데이터 블록(DB)의 길이(바이트 단위)
WRITE_PROT OUTPUT BOOL TRUE = 쓰기 보호 설정됨

Z SFC 24 TEST_DB 지정합니다. 이 두 파라미터에 지정된 번호는 번호


데이터 블록(DB)을 테스트합니다. 범위 내의 번호여야 합니다. 두 값이 같은 경우 이
값을 번호로 갖는 데이터 블록(DB)이 생성됩니다.
사용자 프로그램에 이미 존재하는 데이터 블록(DB)
18.3.1 작업 메모리에 데이터 블록(DB) 생
성 번호는 다시 할당할 수 없습니다. 해당 데이터 블록
(DB)이 로드 메모리에만 존재하는 경우라 해도 할당
시스템 함수 SFC 22 CREAT_DB와 SFC 85
할 수 없습니다.
CREA_DB는 작업 메모리에 데이터 블록(DB)을 만
듭니다. 시스템 함수는 입력 파라미터 LOW_LIMIT 출력 파라미터 DB_NUMBER는 실제로 생성된 데
과 UP_LIMIT으로 지정한 번호 범위 내에서 미사용 이터 블록(DB)의 번호를 제공합니다. 입력 파라미
번호 중 가장 낮은 번호를 데이터 블록(DB) 번호로 터 COUNT를 이용해 생성될 데이터 블록(DB)의 길

259
18 블록 함수

이를 지정합니다. 이 길이는 데이터 바이트의 수와 다. 두 값이 같은 경우 이 값을 번호로 갖는 데이터


일치하며 짝수여야 합니다. 블록(DB)이 생성됩니다. 사용자 프로그램에 이미
존재하는 데이터 블록(DB) 번호는 다시 할당할 수
데이터 블록(DB)을 만드는 것은 데이터 블록(DB)
없습니다. 해당 데이터 블록(DB)이 작업 메모리에
을 호출하는 것과는 다릅니다. 현재 데이터 블록
만 존재하는 경우라 해도 할당할 수 없습니다.
(DB)이 여전히 유효합니다. 이 시스템 함수를 사용
해 만든 데이터 블록(DB)은 랜덤 데이터를 갖습니 출력 파라미터 DB_NUM은 실제로 생성된 데이터
다. 의미 있는 데이터를 갖게 하려면 데이터를 읽기 블록(DB)의 번호를 제공합니다. 입력 파라미터
전에 시스템 함수로 만든 데이터 블록(DB)에 데이터 COUNT를 이용해 생성될 데이터 블록(DB)의 길이
를 먼저 써야만 합니다. 를 지정합니다. 이 길이는 데이터 바이트의 수와 일
치하며 짝수여야 합니다.
SFC 22 CREAT_DB와 85 CREA_DB로 만든 데이
터 블록(DB)은 작업 메모리에만 존재합니다. CPU 생성된 데이터 블록에 기본값으로 할당된 데이터
가 정전 유지 작업 메모리와 비정전 유지 작업 메모 영역은 입력 파라미터 SRCBLK에서 지정한 영역입
리를 구분하는 경우 SFC 22 CREAT_DB는 정전 유 니다. 이 예에서는 데이터 블록(DB) 전체(예: DB
지 데이터 블록(DB)을 만들고, SFC 85 CREA_DB는 160 또는 Archive 1)또는 데이터 블록(DB)의 변수를
ATTRIB 파라미터가 지정한 대로 데이터 블록(DB) 데이터 영역으로 지정할 수 있습니다. 또는 절대 주
을 만듭니다. ‘정전 유지’ 데이터 블록(DB)이란 소가 포함된 데이터 영역을 ANY 포인터(예:
웜 리스타트/핫 리스타트 발생 시 내용이 보존되는 P#DB160.DBX16.0 BYTE 64)로 지정할 수도 있습
데이터 블록(DB)을 말합니다(22.2.4 “정전 유지” 니다. 소스는 작업 메모리 내의 데이터 영역에 있어
참조). 야 합니다.

시스템 함수 SFC 85 CREA_DB는 SFC 22 소스 영역이 대상 영역보다 작은 경우 소스 영역


CREAT_DB를 대체합니다. 전체가 대상 영역에 씌어집니다. 대상 영역의 나머
지 바이트는 0으로 채워집니다. 소스 영역이 대상
SFC 22 CREAT_DB와 SFC 85 CREA_DB로 만든
영역보다 큰 경우 대상 영역이 완전히 쓰여지고 소
데이터 블록(DB)은 사용자 프로그램의 검사 합계가
스 영역의 나머지 바이트는 무시됩니다.
다시 쓰여지거나 삭제되어도 수정하지 않습니다.
SFC로 만든 데이터 블록(DB)을 오프라인 데이터 관 ATTRIB 파라미터를 이용해 생성된 데이터 블록
리로 가져오면 검사 합계에 영향을 미칩니다. 에 다음과 같은 특성을 할당할 수 있습니다.

오류가 발생하면 데이터 블록이 생성되지 않습니 Z Bit 0 = ‘1’


다. 파라미터 DB_NUMBER에 0이 할당되고 RET_ 데이터 블록(DB)은 링크 안 됨 특성을 갖습니
VAL이 오류 번호를 출력합니다. 다 . 데이터 블록(DB)을 오프라인 데이터 관리로
전송해 CPU에 다시 로드한 후에도 데이터 블록
(DB)은 로드 메모리에만 존재합니다.
18.3.2 로드 메모리에 데이터 블록(DB) 생
성 Z Bit 1 = ‘1’
데이터 블록(DB)은 DB가 PLC에서 쓰기 보호 설
시스템 함수 SFC 82 CREA_DBL는 로드 메모리
정됨 특성을 갖습니다. 이 데이터 블록(DB)의 값
에 데이터 블록(DB)을 생성합니다. 시스템 함수는
은 읽기만 가능합니다.
입력 파라미터 LOW_LIMIT과 UP_LIMIT으로 지정한
번호 범위 내에서 미사용 번호 중 가장 낮은 번호를 Z Bit 2 = ‘1’
데이터 블록(DB) 번호로 지정합니다. 이 두 파라미 데이터 블록(DB)은 보존 안함(Non_Retain) 특
터에 지정된 번호는 번호 범위 내의 번호여야 합니 성을 갖습니다.

260
18.3 데이터 블록(DB)용 시스템 함수

다른 비트는 현재 사용되지 않습니다. 블록 특성 키워드 링크 안 됨으로 생성된 데이터 블록(DB)


에 대한 자세한 내용은 3.2.3 “블록 속성” 을 참조 과 플래시 EPROM 메모리 카드 상의 데이터 블록
하십시오. (DB)은 시스템 함수 SFC 23으로 삭제할 수 없습니
시스템 함수 SFC 82 CREA_DBL은 비동기 모드 다.
로 실행됩니다. 입력 파라미터 REQ의 신호 상태
오류가 발생하면 데이터 블록(DB)이 삭제되지 않
‘1’ 로 생성 프로세스를 트리거합니다. 출력 파라
고 함수 값으로 오류 번호가 반환됩니다.
미터 BUSY의 신호 상태가 ‘0’ 으로 돌아가면 읽
고 썼던 데이터 영역에만 다시 액세스할 수 있습니
다. 18.3.4 데이터 블록(DB) 테스트
생성 프로세스는 관련 데이터 블록(DB)을 호출하
시스템 함수 SFC 24 TEST_DB는 사용자가 입력
지 않습니다. 따라서 현재 데이터 블록(DB)이 여전
파라미터 DB_NUMBER에 번호를 지정한 데이터 블
히 유효한 데이터 블록(DB)입니다.
록(DB)에 대한 정보를 제공합니다. 출력 파라미터
오류가 발생하면 데이터 블록이 생성되지 않습니 DB_LENGTH는 기존 바이트의 수를 표시하고, 출력
다. 출력 파라미터에 미지정 값이 할당되고 함수 값 파라미터 WRITE_PROT는 데이터 블록이 쓰기 보호
은 오류 메시지를 출력합니다. 설정된 상태인지 여부를 표시합니다.

테스트한 데이터 블록(DB)이 로드 메모리에만 존


18.3.3 데이터 블록(DB) 삭제
재하는 경우 RET_VAL이 오류를 표시합니다. 하지
시스템 함수 SFC 23 DEL_DB는 입력 파라미터
만 파라미터 DB_LENGTH와 WRITE_PROT는 정확
DB_NUMBER에 번호가 지정된 데이터 블록(DB)을
한 할당 정보를 갖습니다.
RAM(작업 및 로드 메모리)에서 삭제합니다. 삭제할
데이터 블록(DB)은 열린 상태가 아니어야 합니다. 지정된 데이터 블록(DB)이 CPU의 작업 메모리에
데이터 블록(DB)이 열려 있으면 CPU가 정지 상태 존재하지 않는 경우 RET_VAL은 W#16#80B1를 반
가 됩니다. 환합니다.

261
19 블록 파라미터

19 블록 파라미터

이 장에서는 블록 파라미터 사용법을 설명합니 19.1.2 블록 파라미터 처리


다. 사용자는 다음과 같은 내용을 배우게 됩니다. 가산기 프로그램에서 블록 파라미터의 이름은 가

Z 블록 파라미터 선언 방법 장 최근의 실제 변수를 위한 플레이스 홀더가 됩니


다. 블록 파라미터는 심볼 주소가 포함된 변수와 같
Z 블록 파라미터 사용 방법 은 방식으로 사용합니다. 블록 파라미터는 프로그
Z 블록 파라미터 초기화 방법 램 내에서 ‘형식 파라미터’ 로 불립니다.

Z 블록 파라미터 ‘전달’ 방법 ‘가산기’ 함수는 프로그램에 여러 번 호출할 수


있습니다. 호출할 때마다 블록 파라미터 내의 가산
블록 파라미터는 호출 블록과 호출된 블록 간의
기에 다른 값을 전송합니다(그림 19.2 참조). 이 값
전송 인터페이스를 의미합니다. 모든 함수와 함수
은 상수, 피연산자 또는 변수일 수 있으며 ‘실제 파
블록에 블록 파라미터를 제공할 수 있습니다.
라미터’ 라고 불립니다.
런타임 중에 CPU는 형식 파라미터를 실제 파라
미터로 대체합니다. 제시된 예의 경우 첫 번째 호출
19.1 블록 파라미터 일반 사항 에서 메모리 워드 MW 30, MW 32 및 MW 34의 내
용을 추가하고 결과를 메모리 워드 MW 40에 저장
19.1.1 블록 파라미터 정의 합니다. 두 번째 호출에서 실제 파라미터를 가진 동
일한 블록이 데이터 블록 DB 13의 DBW 30, DBW
블록 파라미터가 있으면 처리 명령을 하나의 블록
32 및 DBW 34를 추가하고 결과를 데이터 블록 DB
안에 파라미터화하여 블록 함수를 생성할 수 있습니
14의 데이터 워드 DBW 40에 저장합니다.
다. 예: 프로그램에서 여러 번 사용할 수 있는 다양
한 변수가 포함된 가산기 형식으로 블록을 작성하고
자 합니다. 이 변수를 블록 파라미터 형식으로 전송 19.1.3 블록 파라미터 선언
합니다. 이 예에서는 3개의 입력 파라미터와 1개의 블록을 프로그래밍할 때 블록의 선언 영역에 블록
출력 파라미터를 전송합니다(그림 19.1 참조). 가 파라미터를 정의합니다. 그림 19.3은 함수 FC와 함
산기는 내부에 값을 저장할 필요가 없기 때문에 블 수 블록 FB의 선언 테이블을 보여 줍니다. 블록 파
록 유형으로는 함수가 적합합니다. 라미터(IN, OUT, IN_OUT) 외에 임시 로컬 데이터
블록 프로그램에서 값을 검사 또는 로드만 하는 (TEMP), 함수 FC의 함수 값(RETURN), 함수 블록의
경우 블록 파라미터를 입력 파라미터로 정의합니 정적 로컬 데이터(STAT)를 선언합니다. 블록은 사
다. 블록 파라미터를 설명만 하는 경우(할당, 셋, 리 용자 프로그램에 호출되지도 않고 인스턴스 데이터
셋, 전송) 출력 파라미터를 사용합니다. 블록 파라미 블록(DB)도 갖지 않는 조직 블록 OB의 경우 임시 로
터를 검사하고 덮어쓰기도 하려면 항상 입/출력 파 컬 데이터(TEMP)만 존재합니다.
라미터를 사용해야 합니다. 프로그램 편집기는 블 기본값은 옵션입니다. 블록 파라미터가 값으로
록 파라미터의 사용에 대해서는 검사하지 않습니 저장되는 경우에만 함수 블록에 기본값을 사용할 수
다. 있습니다. 이 규칙은 기본 데이터 형식의 모든 블록

262
19.1 블록 파라미터 일반 사항

그림 19.1 블록 파라미터 예

파라미터와 복합 데이터 형식의 입력 및 출력 파라 록 영역이 덮어쓰기 또는 삭제됩니다. 이 경우 프로


미터에 적용됩니다. 파라미터에 주석을 붙일 수도 그램 편집기는 디스플레이나 인쇄본에 표시하기 위
있습니다. 한 대체 심볼을 생성합니다.

블록 파라미터 이름의 길이는 최대 24자입니다.


이름에는 글자(독일어 움라우트와 같은 국가별 특 19.1.4 함수 값 선언
수 문자 제외), 숫자 및 밑줄(_)만 사용해야 합니다. 함수에서 함수 값은 특수 처리되는 출력 파라미터
대문자와 소문자는 구분하지 않습니다. 이름은 키 입니다. 함수 값은 RET_VAL(또는 ret_val)라는 이름
워드가 아니어야 합니다. 을 가지며 첫 번째 출력 파라미터로 정의됩니다. 선
블록 파라미터의 데이터 형식으로는 모든 기본, 언 테이블(선언 RETURN, 이름 RET_VAL)에 데이터
복합 및 사용자 정의 데이터 형식과 파라미터 유형 형식을 지정하고 필요한 경우 주석을 명시해 함수
이 허용됩니다(3.5 “변수, 상수 및 데이터 형식” 참 값을 선언합니다.
조). 함수 값의 데이터 형식으로는 모든 기본 데이터

STEP 7은 블록 파라미터의 이름을 프로그래밍 기 형식은 물론 DATE_AND_TIME, STRING,

기의 저장 매체 상에 있는 블록의 실행 불가 영역에 POINTER, ANY와 같은 데이터 형식과 사용자 정의

저장합니다. CPU의 작업 메모리(컴파일된 블록 형 데이터 형식인 UDT가 허용됩니다. 데이터 형식

식)는 선언 유형과 데이터 형식만 저장합니다. 때문 ARRAY와 STRUCT는 허용되지 않습니다.

에 프로그램이 온라인을 통해 CPU의 블록을 수정한 함수 값은 첫 번째 출력 파라미터이긴 하지만


경우 원래 이름이 유지되게 하려면 이 수정 내용을 LAD나 FBD 프로그래밍 언어에서는 특별한 역할을
프로그래밍 기기의 데이터 매체에 반드시 업데이트 하지 않습니다. 함수 값은 블록 유형 FUNCTION을
해야 합니다. 업데이트를 하지 않거나 블록이 CPU ‘순수’ 함수로 사용할 수 있는 SCL 프로그래밍 언
에서 프로그래밍 기기로 전송된 경우 실행 불가 블 어에서만 의미를 갖습니다. 이 예에서는 함수 FC가

263
19 블록 파라미터

인쇄본에서 피연산자를 대신할 수 있으며 따라서 함


수 값이 함수 FC의 값을 의미합니다.

19.1.5 블록 파라미터 초기화


블록 파라미터로 블록을 호출하는 경우 실제 파라
미터로 블록 파라미터를 초기화합니다. 실제 파라
미터는 상수, 절대 주소가 포함된 피연산자, 전체 주
소가 포함된 데이터 피연산자 또는 심볼 주소가 포
함된 변수일 수 있습니다. 실제 파라미터의 데이터
형식은 블록 파라미터의 데이터 형식과 동일해야 합
니다.

블록을 호출할 때마다 함수의 블록 파라미터를 모


두 초기화해야 합니다. 함수 블록의 경우 블록 파라
미터를 개별적으로 초기화하거나 블록 파라미터를
모두 초기화하는 옵션 중 하나를 선택할 수 있습니
다.

19.2 형식 파라미터

이 장에서는 블록 내의 블록 파라미터에 액세스하


는 방법을 배웁니다. 표 19.1은 기본 데이터 형식,
배열 또는 구조의 구성요소 유형, 타이머 및 카운터
유형의 블록 파라미터에 제한 없이 액세스가 가능하
다는 것을 보여 줍니다. 19.4 “블록 파라미터 ‘전
달’ ” .

LAD 또는 FBD는 복합 데이터 형식의 파라미터와


POINTER 및 ANY 파라미터 유형의 파라미터에 대한
액세스를 지원하지 않습니다. 하지만 이러한 파라
미터가 포함된 블록이나 시스템 블록은 관련 변수로
초기화할 수 있습니다. 초기화의 예는 ‘LAD_
Book’ 및 ‘FBD_Book’ 라이브러리의 ‘데이터
형식’ 프로그램을 참조하십시오. 이 라이브러리는
출판사의 웹 사이트에서 다운로드할 수 있습니다
(8 페이지 참조).

BOOL 데이터 형식의 블록 파라미터


BOOL 데이터 형식의 블록 파라미터는 개별 이진
그림 19.2 블록 파라미터로 블록 호출
변수이거나 배열 및 구조의 이진 구성요소일 수 있

264
19.2 형식 파라미터

그림 19.3 함수 FC와 함수 블록 FB의 빈 선언 테이블

습니다. 접점이나 이진 연산 박스 입력으로 입력 파 ARRAY 및 STRUCT 데이터 형식의


라미터와 입/출력 파라미터를 검사할 수 있고, 이진 블록 파라미터

연산 박스 출력으로 출력 파라미터와 입/출력 파라 ARRAY 및 STRUCT 데이터 형식의 블록 파라미


미터에 영향을 줄 수 있습니다. CPU는 블록 파라미 터는 구성요소 단위로 직접 액세스할 수 있습니다.
터로 지정된 실제 파라미터를 사용한 후 관련 장에 다시 말해 관련 연산을 이용해 개별 이진 또는 디지

설명된 대로 함수를 처리합니다. 털 구성요소에 액세스할 수 있습니다.

완전한 변수(배열 전체 또는 구조 전체)는 액세스


디지털 데이터 형식의 블록 파라미터 가 불가능하며 복합 또는 사용자 정의 데이터 형식
의 개별 구성요소도 액세스가 불가능합니다. 대신
디지털 데이터 형식의 블록 파라미터는 8, 16 또
함수 블록의 경우 ARRAY 및 STRUCT 유형의 입력
는 32비트를 차지합니다(BOOL을 제외한 모든 기본 및 출력 파라미터를 호출된 블록의 파라미터에 ‘전
데이터 형식). 이 블록 파라미터는 개별 디지털 변수 달’ 할 수 있습니다.
이거나 배열 및 구조의 디지털 구성요소일 수 있습
니다. 입력 및 입/출력 파라미터는 디지털 연산 박스
사용자 정의 데이터 형식의 블록 파라미터
입력에 적용하고 출력 및 입/출력 파라미터는 디지
털 연산 박스 출력에 씁니다. 사용자 정의 데이터 형식의 블록 파라미터는
STRUCT 데이터 형식의 블록 파라미터와 동일한 방
MOVE 연산 박스를 이용해 유형이나 크기가 다른 식으로 처리합니다.
블록 파라미터의 값을 서로 교환할 수 있습니다
UDT 데이터 형식의 블록 파라미터는 구성 요소
(6 “이동 연산” 참조).
단위로 직접 액세스할 수 있습니다. 다시 말해 관련
연산을 이용해 개별 이진 또는 디지털 구성요소에
DT 및 STRING 데이터 형식의 액세스할 수 있습니다.
블록 파라미터
완전한 변수는 액세스가 불가능하며 복합 또는 사
DT 및 STRING 유형의 블록 파라미터는 직접 액 용자 정의 데이터 형식의 개별 구성요소도 액세스가
세스할 수 없습니다. 대신 함수 블록의 경우 DT 및 불가능합니다. 대신 함수 블록의 경우 UDT 유형의
STRING 유형의 입력 및 출력 파라미터를 호출된 블 입력 및 출력 파라미터를 호출된 블록의 파라미터에
록의 파라미터에 ‘전달’ 할 수 있습니다. ‘전달’ 할 수 있습니다.

265
19 블록 파라미터

표 19.1 블록 파라미터 액세스(일반)


데이터 형식 허용 대상 블록 내 액세스
IN I_O OUT 허용
기본 데이터 형식
BOOL x x x 예
BYTE, WORD, DWORD, CHAR, INT, x x x 예
DINT, REAL, S5TIME, TIME, TOD, DATE
복합 데이터 형식
DT, STRING x x x 아니오
ARRAY, STRUCT
개별 이진 구성요소 x x x 예
개별 디지털 구성요소 x x x 예
완전한 변수 x x x 아니오
파라미터 유형
TIMER x - - 예
블록 파라미터 x - - 예
BLOCK_FC, BLOCK_FB x - - 예
블록 파라미터 x - - 예
BLOCK_SDB x - - 아니오
POINTER, ANY x x x1) 아니오
1)
FC 함수 전용

TIMER 데이터 형식의 블록 파라미터 (DB)을 열 때 CPU는 항상 글로벌 데이터 블록(DB)


TIME 데이터 형식의 블록 파라미터는 7 “타이 레지스터(DB 레지스터)를 사용합니다.
머” 에 설명된 모든 함수와 함께 사용할 수 있습니
다). 타이머가 시작되면 시간 값 역시 S5TIME 데이 BLOCK_FB 데이터 형식의 블록 파라미터
터 형식의 블록 파라미터가 될 수 있습니다. BLOCK_FC 데이터 형식의 블록 파라미터를 통해
FC 함수를 전송할 수 있습니다. CALL 코일/연산 박
BLOCK_FB 데이터 형식의 블록 파라미터 스로 이 함수를 호출합니다. 현재 함수 블록을 프로
COUNTER 데이터 형식의 블록 파라미터는 그래밍 중인 경우 CALL 코일/연산 박스는 형식 파
8 “카운터” 에 설명된 모든 함수와 함께 사용할 수 라미터와 함께 사용할 수 있고 선행 논리 연산이 있
있습니다. 카운터를 설정할 때 카운터 값 역시 거나 없어도 사용할 수 있습니다. 함수의 경우 형식
WORD 데이터 형식의 블록 파라미터가 될 수 있습 파라미터가 적용된 CALL 코일/연산 박스를 사용하
니다. 면 선행 논리 연산이 허용되지 않습니다(절대 호출
만 허용)

BLOCK_FB 데이터 형식의 블록 파라미터 블록 파라미터를 통해 전송된 FC 함수에는 블록


BLOCK_DB 데이터 형식의 블록 파라미터를 통해 파라미터가 없어야 합니다.
데이터 블록(DB)을 전송할 수 있습니다. 형식 파라
미터로 OPN 코일/연산 박스를 라벨링한 다음 이 BLOCK_FB 데이터 형식의 블록 파라미터
OPN 코일/연산 박스를 이용해 데이터 블록(DB)을 BLOCK_FB 데이터 형식의 블록 파라미터를 통해
호출합니다. 블록 파라미터를 통해 데이터 블록 FB 함수 블록을 전송할 수 있습니다. BLOCK_FB 데

266
19.3 실제 파라미터

이터 형식의 블록 파라미터는 LAD 또는 FBD 함수 함수를 호출하는 경우 실제 파라미터로 모든 블록


로 직접 액세스할 수 없습니다. 파라미터를 초기화해야 합니다.
블록 파라미터를 통해 전송된 FB 함수 블록에는
함수 블록을 호출하는 경우 실제 파라미터로 블록
블록 파라미터가 없어야 합니다.
파라미터를 초기화할 필요가 없습니다. 블록 파라
미터를 지정하지 않는 경우 인스턴스 데이터 블록
POINTER 및 ANY 데이터 형식의 (DB)에 저장된 (기존) 값이 실제 파라미터로 사용됩
블록 파라미터
니다. 저장된 값은 기본값이거나 이전 호출에서 획
POINTER 및 ANY 데이터 형식의 블록 파라미터
득된 실제 파라미터 값일 수 있습니다. 복합 데이터
는 LAD 또는 FBD 함수로 직접 액세스할 수 없습니
형식의 입/출력 파라미터에는 기본값이 할당되지
다.
않으며 파라미터 유형도 할당되지 않습니다. 따라
서 적어도 첫 번째 호출에서는 이 블록 파라미터에
실제 파라미터를 제공해야 합니다.
19.3 실제 파라미터
함수 블록의 블록 파라미터에 액세스하기 위해 직
블록을 호출할 때 블록의 연산 수행에 사용되는 접 액세스를 사용할 수 있습니다. 함수 블록의 블록
상수, 피연산자, 또는 변수로 블록 파라미터를 초기 파라미터는 데이터 블록(DB) 안에 있기 때문에 데이
화합니다. 이 파라미터를 실제 파라미터라고 합니 터 피연산자처럼 처리할 수 있습니다. 예: 인스턴스
다. 프로그램에서 블록을 여러 번 호출하면 보통 호 데이터 블록(DB) Station_1을 가진 함수 블록이 이
출할 때마다 다른 실제 파라미터를 사용하게 됩니 름이 Up인 이진 출력 파라미터를 제어합니다. 함수
다. 블록을 호출해 처리한 후 출력 파라미터를 초기화하
실제 파라미터의 데이터 형식은 블록 파라미터의 지 않고 심볼 주소 Station_1.Up 아래의 파라미터를
데이터 형식과 일치해야 합니다. BOOL 유형의 블록 검사할 수 있습니다.
파라미터에는 이진 실제 파라미터(예: 메모리 비트)
만 적용할 수 있습니다. ARRAY 유형의 블록 파라미
기본 데이터 형식의 블록 파라미터 초기화
터는 동일한 차원의 배열 변수로만 초기화할 수 있
습니다. 표 19.2는 데이터 형식에 따라 실제 파라미 표 19.3에 나열된 실제 파라미터는 기본 데이터
터로 사용할 수 있는 피연산자를 요약한 것입니다. 형식의 실제 파라미터로 사용할 수 있습니다.

표 19.2 실제 파라미터로 초기화


블록 파라미터의 데이터 형식 허용된 실제 파라미터
기본 데이터 형식 Z 단순 피연산자, 전체 주소가 포함된 데이터 피연산자, 상수
Z 기본 데이터 형식의 배열 또는 구조의 구성요소
Z 호출 블록의 블록 파라미터
Z 기본 데이터 형식의 호출 블록의 블록 파라미터 구성요소
복합 데이터 형식 Z 호출 블록의 변수 또는 블록 파라미터
TIMER, COUNTER 및 BLOCK_xx Z 타이머, 카운터 및 블록
POINTER Z 단순 피연산자, 전체 주소가 포함된 데이터 피연산자
Z 범위 포인터 또는 DB 포인터
ANY Z 모든 데이터 형식의 변수
Z ANY 포인터

267
19 블록 파라미터

입력, 출력 및 비트 메모리 피연산자에 절대 주소 램 편집기가 실제 블록 호출을 하기 전에 모든 실제


나 심볼 주소를 할당할 수 있습니다. 입력 피연산자 이진 피연산자의 신호 상태를 임시 로컬 데이터로
는 입력 파라미터에만, 출력 피연산자는 출력 파라 전송하기 때문입니다. 이런 이유로 LAD 및 FBD에
미터에만 사용해야 합니다(단, 필수 조건은 아닙니 서는 논리 연산으로 이진 블록 입력을 초기화할 수
다). 비트 메모리 피연산자는 모든 선언 유형에 적합 있습니다. 블록 호출 전 복사 중에 데이터 블록(DB)
합니다. 주변 입력장치는 입력 파라미터에, 주변 출
을 데이터 비트에 할당하면 할당이 유실됩니다. 부
력장치는 출력 파라미터에만 적용해야 합니다.
분 주소가 포함된 데이터 비트가 차지한 블록 파라
LAD와 FBD에서는 불린 상수인 TRUE와 FALSE 미터에 액세스하기 전에 호출된 블록의 프로그램에
를 사용해 블록 파라미터, 정적 로컬 데이터 또는 데
서 ‘올바른’ 데이터 블록(DB)을 열어도 기존에 생
이터 피연산자의 선언에 기본값을 설정합니다. 이
성된 신호 상태 복사본만 스캔됩니다.
상수로 블록 파라미터를 초기화할 수는 없습니다.
또한 이 상수는 접점(LAD)이나 함수 입력(FBD)에서 이진 입/출력 파라미터와 출력 파라미터에도 동
생성할 수 없습니다. TRUE 또는 FALSE로 블록 파 일하게 적용됩니다. 여기서도 부분 주소가 포함된
라미터를 초기화하고자 하는 경우 신호 상태 ‘1’ 데이터 비트를 이용한 할당은 허용되지 않습니다.
또는 ‘0’ 이 영구 할당되어야 하고 불린 상수 대 프로그램 편집기는 이런 할당을 거부하지는 않지만
신 사용할 변수가 필요합니다. 이러한 변수로 가장 대부분의 경우 함수에 오류가 발생합니다.
적합한 것은 비트 메모리입니다. 다음 예는 비트 메
모리의 스타트업 신호 상태에 영구적으로 ‘1’ 또 디지털 파라미터에 부분 주소가 포함된 데이터 피
는 ‘0’ 로 할당하는 방법을 보여 줍니다. 그림 19.4 연산자를 사용할 때 주의해야 할 점이 있습니다. 호
를 참조하십시오. 출된 블록에 있는 블록 파라미터에 액세스할 때 현
부분 주소가 포함된 데이터 비트는 LAD 및 FBD 재 열려 있는 데이터 블록(DB) 역시 ‘올바른’ 데
에서 실제 파라미터로 사용할 수 없습니다. 프로그 이터 블록(DB)이 된다는 점입니다. 블록 호출 중이

표 19.3 기본 데이터 형식의 실제 파라미터


피연산자 허용 대상 이진 피연산자 또는 디지털 피연산자 또는
IN I_O OUT 심볼 이름 심볼 이름
입력(프로세스 이미지) x x x I y.x EB y, EW y, ED y
출력(프로세스 이미지) x x x Q y.x AB y, AW y, AD y
비트 메모리 x x x M y.x MB y, MW y, MD y
주변 입력장치 x - - - PEB y, PEW y, PED y
주변 출력장치 - - x - PAB y, PAW y, PAD y
글로벌 데이터
부분 주소 지정 x x x - DBB y, DBW y, DBD y
전체 주소 지정 x x x DB z.DBX y.x DB z.DBB y 등
임시 로컬 데이터 x x x L y.x LB y, LW y, LD y
정적 로컬 데이터 x x x DIX y.x DIB y, DIW y, DID y
상수 x - - - 모든 디지털 상수
ARRAY 또는 STRUCT 구성요 x x x 완전한 구성요소 이름 완전한 구성요소 이름

x = 비트 수, y = 바이트 주소, z = 데이터 블록 번호

268
19.3 실제 파라미터

거나 이전에 블록 파라미터에 액세스했던 경우와 같 복합 데이터 형식의 블록 파라미터 초기화


은 특정 상황에서 편집기는 데이터 블록(DB)을 가시
모든 블록 파라미터는 복합 유형일 수 있습니다.
적으로 변경하지 않기 때문에 부분 주소가 포함된
변수의 유형이 동일하면 실제 피연산자로 사용할 수
디지털 데이터 피연산자 사용을 권장하지 않습니
있습니다.
다. 대신 전체 주소가 포함된 데이터 피연산자를 사
용합니다. DT 또는 STRNG 유형의 블록 파라미터인 경우
DT 또는 STRNG 유형의 개별 변수나 배열 또는 구
임시 로컬 데이터는 보통 심볼 주소로 지정합니
조의 구성요소로 초기화할 수 있습니다.
다. 임시 로컬 데이터는 호출 블록의 L 스택에 위치
하며 호출 블록 내에서 선언됩니다. STRING 변수는 다양한 길이를 가질 수 있습니다.
함수 블록의 입력 또는 출력 파라미터를 선언할 때
STRING 길이를 지정한 경우 편집기는 인스턴스 데
이터 블록(DB) 내에 지정된 공간을 남겨 둡니다. 길
이를 지정하지 않은 경우 STRING 변수를 위해 256
바이트를 남겨 둡니다. 사용자는 선언에 SRING 변
수의 최대 길이를 지정합니다. 실제 파라미터와 형
식 파라미터를 위한 SRING 변수의 최대 길이가 동
일해야 합니다. 예외: FC 함수의 경우 STRING 변수
를 선언할 때 길이 없음 또는 표준 길이 254 바이트
를 지정합니다. 여기서는 모든 길이의 STRING 변수
그림 19.4 고정 신호 상태로 초기화
를 실제 파라미터로 사용할 수 있습니다.

ARRAY 또는 STRUCT 유형의 블록 파라미터인


호출 블록이 함수 블록인 경우 이 블록의 정적 로
경우 이 블록 파라미터와 완전히 똑 같은 구조를 가
컬 데이터를 실제 파라미터로 사용할 수 있습니다
진 변수로 초기화할 수 있습니다.
(19.4 “블록 파라미터 ‘전달’ ” 참조). 정적 데이
터는 보통 심볼 주소로 지정합니다. DI 피연산자를
통해 정적 데이터에 절대 주소를 할당하고 싶다면 사용자 정의 데이터 형식의
18.2.4 “데이터 주소 지정의 특이 사항” 의 설명을 블록 파라미터 초기화
참조하십시오. 복합 또는 확장 데이터 구조인 경우 사용자 정의
데이터 형식(UDT)의 사용을 권장합니다. 먼저 UDT
BOOL 유형의 블록 파라미터인 경우 상수 TRUE
(신호 상태 ‘1’ ) 또는 FALSE(신호 상태 ‘0’ )를 를 정의한 후 이 UDT를 이용해 데이터 블록(DB) 내

적용할 수 있습니다. 또한 디지털 데이터 형식의 블 에 변수를 생성하거나 블록 파라미터를 선언합니


록 파라미터인 경우 데이터 형식이 일치하는 모든 다. 이렇게 하면 블록 파라미터를 초기화할 때 이 변
상수를 적용할 수 있습니다. 상수로 초기화는 입력 수를 이용할 수 있습니다. 이 경우 역시 실제 파라미
파라미터인 경우에만 허용됩니다. 터(변수)가 블록 파라미터와 데이터 형식(UDT)이
동일해야 합니다.
기본 데이터 형식의 블록 파라미터인 경우 블록
파라미터와 데이터 형식이 동일한 배열 및 구조의 블록 파라미터와 같은 UDT 유형의 완전한 데이터
구성요소를 이용해 초기화할 수 있습니다. 블록(DB)은 실제 파라미터로 사용할 수 없습니다.

269
19 블록 파라미터

TIMER, COUNTER 및 BLOCK_xx 유형의 형 번호’ 형식으로 상수를 지정하고 절대 주소가 포


블록 파라미터 초기화 함된 영역을 정의할 수 있습니다.
TIMER 유형의 블록 파라미터는 타이머로, ANY 유형의 출력 파라미터는 함수 블록에는 사용
COUNTER 유형의 블록 파라미터는 카운터로 초기 할 수 없습니다.
화합니다. BLOCK_FC 또는 BLOCK_FB 파라미터
유형의 블록 파라미터에는 자체 파라미터가 없는 블
록만 적용할 수 있습니다. BLOCK_DB는 데이터 블
19.4 블록 파라미터 ‘전달’
록(DB)으로 초기화합니다.

TIMER, COUNTER 및 BLOCK_xx 유형의 블록 파 블록 파라미터 ‘전달’ 은 블록 파라미터에 액세


라미터는 입력 파라미터여야 합니다. 스하고 이를 초기화하는 특수한 방식입니다. 호출
블록의 블록 파라미터는 호출된 블록의 파라미터로
‘전달’ 됩니다. 따라서 호출 블록의 형식 파라미터
POINTER 유형의 블록 파라미터 초기화
가 호출된 블록의 실제 파라미터가 됩니다.
POINTER 파라미터 유형의 블록 파라미터에는 포
일반적인 경우와 마찬가지로 이 경우에도 실제 파
인터(상수)와 피연산자를 사용할 수 있습니다. 허용
라미터는 형식 파라미터와 동일한 유형이어야 합니
되는 포인터는 범위 포인터(32 비트 포인터) 또는
다. 즉, 관련된 블록 파라미터는 데이터 형식 측면에
DB 포인터(48 비트 포인터)입니다. 피연산자는 기
서 모두 일치해야 합니다. 또한 호출 블록의 입력 파
본 데이터 형식의 피연산자이며 전체 주소가 포함된
라미터는 호출된 블록의 입력 파라미터에만 적용할
데이터 피연산자일 수도 있습니다.
수 있고, 마찬가지로 출력 파라미터는 출력 파라미
POINTER 유형의 출력 파라미터는 함수 블록에는 터에만 적용할 수 있습니다. 호출 블록의 입/출력 파
사용할 수 없습니다. 라미터는 호출된 블록의 모든 선언 유형에 적용할
수 있습니다.
ANY 유형의 블록 파라미터 초기화 데이터 형식에 따라 제한이 있을 수 있는데 함수
ANY 파라미터 유형의 블록 파라미터에는 모든 데 의 블록 파라미터와 함수 블록의 파라미터가 저장
이터 형식의 변수를 사용할 수 있습니다. 호출된 블 측면에서 차이가 있기 때문입니다. 기본 데이터 형
록 내에서 프로그래밍을 하여 어떤 변수(피연산자 식의 블록 파라미터는 이전 문단에서 설명한 대로
또는 데이터 형식)를 블록 파라미터에 적용해야 하 제한 없이 계속 전달할 수 있습니다. 복합 유형의 입
는지, 어떤 변수가 적합한지 결정합니다. 또한 ANY 력 및 출력 파라미터는 호출 블록이 함수 블록인 경
포인터 'P#[데이터 블록(DB).]피연산자 데이터유 우에만 전달할 수 있습니다.

표 19.4 블록 파라미터 전달 시 허용되는 조합


호출 블록 (호출된 블록 FC가 FC를 호출 FB가 FC를 호출 FC가 FB를 호출 FB가 FB를 호출
선언 유형 E C P E C P E C P E C P
입력 (입력 x - - x x - x - x x x x
출력 (출력 x - - x x - x - - x x -
입/출력 (입력 x - - x - - x - - x - -
입/출력 (출력 x - - x - - x - - x - -
입/출력 (입/출력 x - - x - - x - - x - -
E = 기본 데이터 형식
C = 복합 데이터 형식
P = 파라미터 유형 TIMER, COUNTER 및 BLOCK_xx

270
19.5 예

호출 블록이 함수 블록인 경우 파라미터 유형이


TIMER, COUNTER 및 BLOCK_xx인 블록 파라미터
는 한 입력 파라미터에서 다른 입력 파라미터로만
전달될 수 있습니다. 이 내용은 표 19.4에 요약되어
있습니다.

19.5 예

19.5.1 컨베이어 벨트 예

이 예는 블록 파라미터를 통해 신호 상태를 전송
하는 방법을 보여 줍니다. 이를 위해 5 “메모리 기
능” 에 설명된 컨베이어 벨트 컨트롤 시스템의 함수 그림 19.5 컨베이어 벨트 예의 함수 블록
를 사용합니다. 컨베이어 벨트 컨트롤 시스템을 하
나의 함수 블록으로 프로그래밍합니다. 여러 개의 실행된 프로그래밍 예는 ‘LAD_Book’ 또는
컨베이어 벨트를 사용하는 경우 함수 블록을 반복적 ‘FBD_Book’ 라이브러리의 ‘컨베이어 예’ 프로
으로 호출할 수 있도록 모든 입력 및 출력은 블록 파 그램을 참조하십시오. 이 라이브러리는 출판사의
라미터를 통과하도록 경로를 지정합니다. 그림 웹 사이트에서 다운로드할 수 있습니다(8 페이지 참
 19.5 에는 함수 블록의 입력 및 출력 파라미터와 사 조). 소개된 예는 입력 파라미터, 출력 파라미터 및
용되는 정적 및 임시 로컬 데이터가 표시되어 있습 정적 로컬 데이터를 이용해 함수 블록 FB 21을 프로
니다. 그래밍한 것입니다. 어떤 데이터 블록(DB)이든 인
스턴스 블록으로 사용할 수 있습니다. 예에서는 DB
이 예에서 파라미터 배분은 아주 간단합니다. 입
21을 Belt_data1에, DB 22를 Belt_data2에 사용했
력이었던 모든 이진 피연산자는 입력 파라미터가 되
습니다. 심볼 테이블에서 이 데이터 블록은 함수 블
고 모든 출력은 출력 파라미터가 됩니다. 모든 메모
록과 데이터 형식이 같습니다(예에서는 Conveyor_
리 비트는 정적 로컬 데이터가 됩니다. 변수의 이름
belt가 FB 21의 심볼인 경우 FB 21).
이 약간 바뀌었다는 것도 알 수 있는데 블록 로컬 변
수에는 글자, 숫자 및 밑줄(_)만 허용되기 때문입니 함수 블록을 호출할 때 심볼 테이블의 입력 및 출
다. 력을 실제 파라미터로 사용할 수 있습니다. 이 글로
벌 심볼에 특수 문자가 포함된 경우 프로그램 내에
함수 블록 Conveyor_Belt로 2개의 컨베이터 벨트 서는 이 심볼에 따옴표를 붙여야 합니다. 심볼 테이
를 제어할 수 있습니다. 이를 위해서는 함수 블록을 블은 이 장에 소개된 3개의 예를 위해 작성된 것입
2번 호출해야 합니다. 첫 번째는 컨베이어 벨트 1의 니다(이 장 마지막에 있는 표 19.6 참조).
입력과 출력을, 두번째는 컨베이어 벨트 2의 입력과
출력을 이용해 호출합니다. 함수 블록을 호출할 때
마다 획득한 컨베이어 벨트 관련 데이터를 저장하기 19.5.2 카운터 요소 예
위한 인스턴스 데이터 블록(DB)이 필요합니다. 컨 이 예는 기본 데이터 형식의 블록 파라미터를 처
베이어 벨트 1의 데이터 블록은 BeltData1, 컨베이 리하는 방법을 보여 줍니다. 8 “카운터” 에 소개된
어 벨트 2의 데이터 블록(DB)은 BeltData2라고 부 ‘카운터 요소’ 예의 기능을 기준으로 합니다. 여기
릅니다. 서는 같은 기능을 블록 파라미터나 정적 로컬 데이

271
19 블록 파라미터

터로 선언된 글로벌 변수를 이용해 함수 블록으로 19.5.3 공급 예


구현합니다. 여기서는 개별 구성요소를 통해 타이 앞서 두 예에서 설명한 함수는 로컬 인스턴스라
머와 카운터를 제어합니다. 고 부를 수도 있습니다. 이 예에서는 4개의 컨베이
타이머와 카운터는 TIMER 및 COUNTER 유형의 어 벨트를 제어하고 전달된 부품을 카운트하는
블록 파라미터를 통해 전송됩니다. 이 블록 파라미 Feed라는 함수 블록을 프로그래밍합니다. 이 함수
터는 입력 파라미터여야 합니다. 카운터의 초기값 블록에서 FB Conveyor Belt를 4번 호출하고 FB
(Quantity)과 타이머의 초기값(Dura1 및 Dura2) 역 Parts_counter를 1번 호출합니다. 호출할 때마다
시 블록 파라미터로 형식으로 전송할 수 있습니다. 호출의 자체 인스턴스 데이터 블록(DB)을 사용하
이 예에서 블록 파라미터의 데이터 형식은 실제 파 는 것은 아닙니다. 하지만 호출된 FB는 함수 블록
라미터의 데이터 형식과 일치합니다. Feed의 인스턴스 데이터 블록(DB)에 데이터를 저
장합니다.
엣지 메모리 비트는 정적 로컬 데이터에 저장되
고, 펄스 메모리 비트는 임시 로컬 데이터에 저장 그림 19.7은 개별 컨베이어 벨트 컨트롤이 서로

됩니다. 어떻게 연결되어 있는지 보여 줍니다(FB Parts_


counter는 여기에 표시되어 있지 않습니다). 시작 신
샘플 프로그램은 ‘LAD_Book’ 또는 ‘FBD_ 호는 벨트 1을 위한 컨트롤러의 Start 입력과 연결되
Book’ 라이브러리의 ‘컨베이어 예’ 프로그램을 고 ready_rem 출력은 벨트 2의 Start 입력과 연결되
참조하십시오. 이 라이브러리는 출판사의 웹 사이 는 식으로 해서 마지막에는 벨트 4의 ready_rem 출
트에서 다운로드할 수 있습니다(8 페이지 참조). 샘 력이 Feed의 Remove 출력에 연결됩니다. 같은 신
플 프로그램에는 함수 블록 FB 22 Parts_counter와 호 순서가 역방향에도 적용되어 Remove 에서
해당 인스턴스 데이터 블록(DB) CountDat가 포함 Continue를 거쳐 Readyload와 Load로 연결됩니다.
되어 있습니다. 이 함수 블록을 호출할 때 심볼 테이
Belt_mot, Lbarr와 /Mfault는 별도의 컨베이어 벨
블의 입력, 출력, 타이머 및 카운터(이전 예의
트 신호입니다. Reset, Startup 및 Stop은 Basic_st,
표 19.6 참조)를 실제 파라미터로 사용할 수 있습니
Man_on 및 Stop을 통해 모든 컨베이어 벨트를 제어
다.
합니다.

함수 블록 Feed를 위한 다음 프로그램도 같은 방
식으로 설계되어 있습니다. 이 함수 블록의 입력 및
출력 파라미터는 그림 19.7의 파라미터를 사용할
수 있습니다. 또한 여기서는 파트 카운터의 디지털
값 Quantity, Dura1 및 Dura2 를 입력 파라미터로 설
계했습니다. 사용자 정의 데이터 형식의 데이터를
선언하는 것과 동일한 방식으로, 즉 이름과 데이터
형식으로 개별 컨베이어 벨트 컨트롤의 데이터와 카
운터 요소의 데이터를 정적 로컬 데이터에 선언합니
다. 변수 Belt1은 함수 블록 Conveyor Belt의 데이터
구조를 수신하고 변수 Belt2 등도 마찬가지입니다.
변수 Check은 함수 블록 Parts_Counter의 데이터
구조를 수신합니다.

함수 블록 내의 프로그램은 먼저 모든 컨베이어
그림 19.6 카운터 요소 예의 함수 블록 벨트에 공통되는 신호를 초기화합니다. 여기서 로

272
19.5 예

그림 19.7 공급 프로그래밍 예

컬 인스턴스라 불리는 함수 블록의 블록 파라미터가 어합니다. Stop 및 Reset 신호도 같은 방식으로 처


현재 블록에서 정적 로컬 데이터이며 그렇게 처리할 리합니다. 이제 컨베이어 벨트 컨트롤이 공통 신호
수 있다는 사실을 이용합니다. 현재 함수 블록의 블 로 초기화됩니다. (물론 이 입력 파라미터를 함수 블
록을 호출할 때 초기화할 수도 있습니다.)
록 파라미터 Man_on이 단일 할당으로 4개 컨베이
어 벨트 컨트롤 모두의 Man_on 입력 파라미터를 제

표 19.5 FB Feed의 선언 영역
선언 이름 데이터 형식 주소 초기 값 주석
IN Start BOOL 0.0 FALSE 컨베이어 벨트를 시작합니다.
Removed BOOL 0.1 FALSE 부품이 벨트에서 제거되었습니다.
Man_start BOOL 0.2 FALSE 컨베이어 벨트를 수동으로 시작합니다.
Stop BOOL 0.3 FALSE 컨베이어 벨트를 중지합니다.
Reset BOOL 0.4 FALSE 컨트롤을 기본 상태로 설정합니다.
계수 COUNTER 2.0 카운터 요소
수량 WORD 4.0 W#16#200 부품 수
Tim TIMER 6.0 모니터 타이머
Dura1 S5TIME 8.0 S5T#5S 부품 모니터링 시간
Dura2 S5TIME 10.0 S5T#10S 간격 모니터링 시간
OUT 로드 BOOL 12.0 FALSE 벨트에 새 부품을 로드합니다.
제거 BOOL 12.1 FALSE 벨트에서 부품을 제거합니다.
IN_OUT
STAT Belt1 Conveyor_belt 14.0 벨트 1의 컨트롤
Belt2 Conveyor_belt 20.0 벨트 2의 컨트롤
Belt3 Conveyor_belt 26.0 벨트 3의 컨트롤
Belt4 Conveyor_belt 32.0 벨트 4의 컨트롤
Check Parts_counter 38.0 카운팅 및 모니터링 컨트롤
TEMP

273
19 블록 파라미터

컨베이어 벨트 컨트롤의 함수 블록을 다음에 호출 FB Parts_counter는 컨베이어 벨트 컨트롤의 신


하면 컨베이터 벨트별 개별 신호를 위한 블록 파라 호와는 밀접한 관련이 없지만 로컬 인스턴스라고 불
미터와 Feed의 블록 파라미터와의 연결만 표시됩니 립니다. Feed의 인스턴스 데이터 블록(DB)은 FB 데
다. 개별 신호는 광센서, 벨트 모터에 대한 명령 및 이터를 저장합니다.
모터 결함입니다. (여기서는 함수 블록을 호출할 때
Feed의 입력 파라미터 Quantity, Dura1 및 Dura2
모든 블록 파라미터를 초기화할 필요는 없다는 사실
는 단 1회만 설정하면 됩니다. 기본값(이 예의 경우)
을 이용했습니다.) 할당을 이용해 개별 벨트 컨트롤
을 이용하거나 OB 100의 재가동 루틴(예: 이 3개 파
러를 연결하도록 프로그래밍합니다.
라미터가 글로벌 데이터로 처리되는 경우 직접 할
당)을 이용해 설정하면 됩니다.

274
19.5 예

표 19.6 컨베이어 벨트, 카운터 요소 및 공급 예의 심볼 테이블


심볼 주소 데이터 형식 주석
Conveyor_belt FB 21 FB 21 컨베이어 벨트 컨트롤
Belt_data1 DB 21 FB 21 컨베이어 벨트 1의 데이터
Belt_data2 DB 22 FB 21 컨베이어 벨트 2의 데이터
Parts_counter FB 22 FB 22 카운터 제어 및 모니터링
CounterDat DB 29 FB 22 카운터 요소 데이터
Feed FB 20 FB 20 여러 개의 벨트로 공급합니다.
FeedDat DB 20 FB 20 Feed 데이터
Cycle OB 1 OB 1 메인 프로그램, 주기적 실행
Basic_st I 0.0 BOOL 컨트롤러를 기본 상태로 설정합니다.
Man_on I 0.1 BOOL 컨베이어 벨트 모터를 켭니다.
/Stop I 0.2 BOOL 컨베이어 벨트 모터를 중지합니다(0일 때 활성화).
Start I 0.3 BOOL 컨베이어 벨트 시작
계속 I 0.4 BOOL 부품이 제거되었음을 승인합니다.
Acknowl I 0.6 BOOL 결함 승인
Set I 0.7 BOOL 카운터 설정, 모니터 활성화
Lbarr1 I 1.0 BOOL 컨베이어 벨트 1의 ‘벨트 종단' 센서 신호(광센서)
Lbarr2 I 1.1 BOOL 컨베이어 벨트 2의 ‘벨트 종단' 센서 신호(광센서)
Lbarr3 I 1.2 BOOL 컨베이어 벨트 3의 ‘벨트 종단' 센서 신호(광센서)
Lbarr4 I 1.3 BOOL 컨베이어 벨트 4의 ‘벨트 종단' 센서 신호(광센서)
/Mfault1 I 2.0 BOOL 모터 보호 스위치 컨베이어 벨트 1(0일 때 활성화)
/Mfault2 I 2.1 BOOL 모터 보호 스위치 컨베이어 벨트 2(0일 때 활성화)
/Mfault3 I 2.2 BOOL 모터 보호 스위치 컨베이어 벨트 3(0일 때 활성화)
/Mfault4 I 2.3 BOOL 모터 보호 스위치 컨베이어 벨트 4(0일 때 활성화)
Readyload Q 4.0 BOOL 벨트에 새 부품을 로드합니다.
Ready_rem Q 4.1 BOOL 벨트에서 부품을 제거합니다.
Finished Q 4.2 BOOL 도착한 부품 수
Fault Q 4.3 BOOL 모니터에 표시됩니다.
Belt_mot1 Q 5.0 BOOL 컨베이어 벨트 1의 벨트 모터를 켭니다.
Belt_mot2 Q 5.1 BOOL 컨베이어 벨트 2의 벨트 모터를 켭니다.
Belt_mot3 Q 5.2 BOOL 컨베이어 벨트 3의 벨트 모터를 켭니다.
Belt_mot4 Q 5.3 BOOL 컨베이어 벨트 4의 벨트 모터를 켭니다.
수량 MW 4 WORD 부품 수
Dura1 MW 6 S5TIME 광센서의 모니터링 시간 포함
Dura2 MW 8 S5TIME 광센서의 모니터링 시간 포함되지 않음
계수 C1 COUNTER 카운터 요소
모니터링 T1 TIMER 모니터 타이머

275
19 블록 파라미터

그림 19.8 공급 프로그램 예(LAD)

앞장에서 계속

276
19.5 예

계속:

그림19.8
공급 프로그램 예(LAD)

277
19 블록 파라미터

그림 19.9 공급 프로그램 예(FBD)

앞장에서 계속

278
19.5 예

계속:

그림 19.9 공급 프로그램 예(FBD)

279
프로그램 처리

프로그램 처리

본 단원에서는 다양한 프로그램 처리 방법에 대해


설명합니다.

메인 프로그램은 주기적으로 실행됩니다. 각 프


로그램이 실행된 후, CPU는 프로그램의 시작으로
돌아가서 다시 실행합니다. 이것이 PLC 프로그램을
처리하는 ‘표준’ 방법입니다.

많은 시스템 함수는 버스 시스템을 통한 실시간


클록 제어 또는 통신 제어와 같은 시스템 서비스를
지원합니다. CPU 파라미터화 작업의 정적인 설정
과는 달리, 시스템 함수는 프로그램을 실행할 때 동
적으로 사용할 수 있습니다.

인터럽트 작업을 위해 메인 프로그램은 일시적으


로 중단될 수 있습니다. 다양한 종류의 인터럽트(인
터럽트 시간, 인터럽트 지연시간, 워치독 인터럽트,
하드웨어 인터럽트, DPV1 인터럽트, 동기 사이클
인터럽트, 멀티프로세서 인터럽트)는 처리 우선 순 20 메인 프로그램
위를 사용자가 어느 정도 결정할 수 있는 우선 순위 프로그램 구조; 스캔 사이클 제어; 응답 시간;
등급으로 분류됩니다. 인터럽트 작업을 통해 사용 프로그램 함수; 멀티 컴퓨팅 작업; 시스템 함
자는 제어 프로세스 신호에 신속하게 반응하거나, 수와 데이터 교환; 시작 정보
메인 프로그램의 처리 시간에 상관 없이 주기적 제 21 인터럽트 처리
어 절차를 수행할 수 있습니다. 인터럽트 시간; 인터럽트 지연시간; 워치독 인
메인 프로그램을 시작하기 전에 CPU는 시동 프 터럽트; 하드웨어 인터럽트; DPV1 인터럽트;
로그램을 개시하며, 시동 프로그램에서 사용자는 멀티프로세서 인터럽트; 동기 사이클 인터럽
프로그램 처리에 대한 조건을 지정하거나 변수에 대 트; 인터럽트 이벤트 처리
한 기본값을 정의하거나 모듈을 파라미터화할 수 있 22 시동 특성
습니다. 시동, 메모리 초기화; 정전 유지; 콜드 리스타
오류 처리도 프로그램 프로세싱의 일부입니다. 트; 웜 리스타트; 모듈 주소 확정; 모듈 파라미
STEP 7은 명령문을 처리하는 동안 발생하는 동기 터화
에러와 프로그램 프로세싱에 상관 없이 탐지할 수 23 오류 처리
있는 비동기 에러를 구분합니다. 두 가지 오류 모두 동기 에러(프로그래밍 오류, 액세스 오류); 동
에 대해 사용자의 필요에 따라 오류 루틴을 수정할 기 에러 이벤트 처리; 비동기 에러; 시스템 진
수 있습니다. 단

280
20 메인 프로그램

20 메인 프로그램

메인 프로그램은 주기적으로 스캔되는 사용자 프 램의 구조는 자동화 작업의 구분과 일치하게 됩니


로그램인데, 여기서 주기적 스캔은 PLC에서 프로그 다.
램이 실행되는 ‘정상적인’ 방법입니다. 대부분의 세분된 사용자 프로그램은 구성하는데 더 용이하
제어 시스템은 이러한 형태로만 프로그램을 실행합 고, 부분 별로 프로그래밍할 수 있습니다. 이때, 사
니다. 이벤트 구동 프로그램 스캐닝(event-driven 용자 프로그램이 매우 큰 경우에 여러 명이 프로그
program scanning)을 사용하는 경우, 이것은 대부 래밍할 수도 있습니다. 마지막으로, 프로그램을 세
분 메인 프로그램에 부가적인 것입니다. 분하여 디버깅, 수행 및 유지 보수를 간단하게 하는
메인 프로그램은 조직 블록 OB1 안에서 호출된 것도 무시하지 못할 중요한 요소입니다.
후 가장 낮은 우선 순위로 실행됩니다. 따라서 메인 사용자 프로그램의 구조화는 그 크기와 기능에 따
프로그램은 다른 모든 종류의 프로그램에 의해 인터 라 달라집니다. 다음과 같이 명확히 다른 세 가지 방
럽트될 수 있습니다. 사용자 프로그램은 실행모드 법으로 구조화할 수 있습니다.
로 실행되는데, 이 모드는 CPU 프론트 패널에서 모
선형 프로그램에서 전체 메인 프로그램은 조직 블
드 선택 스위치로 설정합니다. 토글 스위치를 모드
록 OB 1 안에 있습니다. 각 작업 시점의 경로는 다
선택 스위치로 사용할 경우 실행 모드를 선택할 수
른 네트워크에 구축됩니다. STEP 7은 네트워크를
있으며, 키 작동 스위치를 사용할 경우 실행 모드와
순서대로 번호를 매깁니다. 편집할 때와 디버깅할
RUN-P 모드가 있습니다. RUN-P 모드에서는 프로
때, 모든 네트워크를 그 번호로 바로 참조할 수 있습
그래밍 기기를 사용하여 CPU를 프로그래밍할 수 있
니다.
습니다. 실행 모드에서는 정식 승인 절차 없이 작동
모드를 변경할 수 없도록 키를 제거할 수 있습니다. 파티션된 프로그램은 기본적으로 블록으로 나누
모드 선택 스위치가 실행 모드에 있을 때, 프로그램 어진 선형 프로그램입니다. 프로그램을 세분하는
은 읽기 전용입니다. 이유는 조직 블록 OB 1에 비해 너무 길기 때문이거
나 읽기 쉽게 만들기 위해서 입니다. 이때, 블록은
순서대로 호출됩니다. 또한 다른 블록에 있는 프로
그램도 조직 블록 OB 1의 프로그램과 마찬가지로
20.1 프로그램 조직 세분할 수 있습니다. 이러한 방법으로 동일한 블록
안에서 처리하기 위해 프로세스와 관련된 함수를 호
20.1.1 프로그램 구조 출할 수 있습니다. 이러한 프로그램 구조의 장점은
복잡한 자동화 작업을 분석한다는 것은 제어할 프 선형 프로그램이더라도 간단하게 블록 호출을 생략
로세스의 구조에 따라 작업을 더 작은 작업이나 함 하거나 추가함으로써 부분 별로 디버그하고 실행할
수로 세분하는 것입니다. 그 다음에 사용자는 함수 수 있다는 것입니다.
를 정하고 프로세스 또는 다른 작업에 대한 인터페 구조화된 프로그램은 개념이 특히 광범위하거나,
이스 신호를 규정함으로써 세분된 개별 작업을 정의 프로그램 함수를 재사용하거나, 복잡한 문제를 해
합니다. 개별 작업으로 세분하는 작업은 프로그램 결해야 할 때 사용합니다. 구조화는 독립적인 함수
으로 수행할 수 있습니다. 이러한 방법으로 프로그 를 이루거나, 특정한 기능을 제공하거나, 다른 블록

281
20 메인 프로그램

과 되도록 적은 수의 신호를 교환하는 부분(블록)으 적으로 호출해도(선형 블록 호출) 네스팅 깊이에 영


로 프로그램을 세분하는 것을 의미합니다. 각 프로 향을 미치지 않습니다.
그램 부분을 프로세스에 관련된 특정한 함수로 지정
함으로써 프로그래밍할 때 함수만 간단하게 호출하 실제 프로그램 조직
여 읽기 쉬운 블록을 만들 수 있습니다. 조직 블록 OB 1에서는 자신의 프로그램을 대략
프로그래밍 언어 LAD와 FBD는 독립적인 프로그 적으로 조직하는 방식으로 메인 프로그램에서 블
램 부분인 ‘블록’ 을 만들 수 있는 함수들을 사용 록을 호출해야 합니다. 프로그램은 프로세스 기반
하여 구조화된 프로그래밍을 지원합니다. 3.2 “블 (process-related) 또는 함수 기반(function-
록” 에서는 여러 종류의 블록과 그것들의 용도에 대 related)으로 조직할 수 있습니다.
해 설명합니다. 18 “블록 함수” 에서는 블록을 호 아래에서 설명하는 것은 초보자에게 프로그램을
출하고 종료하는 함수들에 대해 자세하게 설명합니 구조화하고 제어 작업을 구현하는 것에 대한 아이디
다. 블록은 호출 인터페이스를 통해 처리할 신호와 어를 제공하기 위한 것으로써 대략적이고 매우 일반
데이터(블록 파라미터)를 받고, 그 결과를 동일한 인 적인 관점만 제공합니다. 고급 프로그래머는 보통
터페이스를 통해 전달합니다. 파라미터를 전달하는 충분한 경험을 지니고 있으므로 특정한 제어 작업에
옵션은 19 “블록 파라미터” 에서 자세하게 설명합 맞게 프로그램을 조직할 수 있습니다.
니다.
프로세스 기반 프로그램 구조는 제어할 플랜트의
구조에 매우 유사하게 만듭니다. 개별 프로그램 부
20.1.2 프로그램 조직 분은 제어할 플랜트 또는 프로세스의 개별적인 부분
프로그램 조직은 사용자가 만든 블록을 CPU에서 에 해당합니다. 리미트 스위치와 오퍼레이터 패널
처리할지 여부와 처리 순서를 결정하는 작업입니 의 스캐닝, 그리고 플랜트의 다양한 부분에 있는 엑
다. 프로그램을 조직하기 위해, 상위 블록에서 호출 츄에이터와 디스플레이 장치의 제어는 이러한 대략
하려는 블록 순서대로 프로그래밍합니다. 이때, 블 적인 구조에 따릅니다. 비트 비트 메모리 또는 글로
록을 호출하는 순서를 정하여 플랜트 제어에서 프로 벌 데이터는 플랜트의 다른 부분 간의 신호 교환에
세스 또는 함수와 관련된 부분을 반영해야 합니다. 사용합니다.
함수 기반 프로그램 구조는 실행할 제어 함수에
네스팅 깊이 기반합니다. 초기에 이러한 프로그램 구조화 방법
네스팅의 최대 범위는 조직 블록 안의 프로그램인 은 제어할 플랜트를 전혀 고려하지 않습니다. 대략
경우에 우선 순위 등급에 적용되고, CPU에 따라 달 적인 구조로 정의된 제어 함수를 더 세분하면, 하위
라집니다. 예를 들면, CPU 314에서 네스팅 깊이는 블록에서 플랜트 구조가 분명하게 드러납니다.
8인데, 이 경우에 하나의 조직 블록(네스팅 깊이 1) 실제 작업에서는 위의 두 가지 개념의 구조를 혼
으로 시작하여 ‘수평’ 방향으로 7 개의 블록을 추 합하여 사용합니다. 그에 대한 한 가지 예가 그
가할 수 있습니다(이를 ‘네스팅’ 이라고 함). 이때 림 20.1에 나와있습니다. 함수 구조는 작동 모드 프
블록을 더 호출하면, CPU는 “블록 초과” 오류를 로그램과 플랜트 범위를 벗어나는 데이터 처리 프로
내면서 정지 모드로 갑니다. 네스팅 깊이를 계산할 그램에 나타납니다. 프로세스 기반 프로그램은 공
때는 시스템 함수 블록(SFB) 호출과 시스템 함수 급 컨베이어 1, 공급 컨베이어 2, 프로세스 및 디스
(SFC) 호출을 꼭 포함해야 합니다. 차징 컨베이어에 해당하는 부분입니다.
데이터 블록(DB) 호출은 실제로 데이터 영역을 이 예에서는 또한 서로 다른 종류의 블록도 사용
열거나 선택하는 것일 뿐이므로, 블록의 네스팅 깊 합니다. 메인 프로그램은 OB 1 안에 있습니다. 작동
이에 영향을 미치지도 않고 여러 개의 블록을 연속 모드, 다양한 플랜트 장비 부분, 데이터 처리를 위한

282
20.2 스캔 사이클 제어

로컬 인스턴스이므로, 로컬 데이터는 인스턴스 데


이터 블록(DB) 20 안에 있습니다. FB 29의 데이터
획득 프로그램도 마찬가지입니다.
DB 50을 사용하는 FB 50의 데이터 처리 프로그
램은 FB 29과 기타 블록을 사용하여 얻은 데이터를
처리하는데, 이 데이터는 글로벌 데이터 블록(DB)
60에 있습니다. 함수 FC 51은 전송을 위해 이러한
데이터를 준비합니다. 여기서 DB 51을 사용하여
FB 51가 전송 작업을 제어하는데, 이 FB 51에서 시
스템 함수 SFB 8, SFB 9, SFB 62을 호출합니다. 이
때, SFB도 인스턴스 데이터를 ‘상위’ 데이터 블
록( DB) 51에 저장합니다.

20.2 스캔 사이클 제어

20.2.1 프로세스 이미지 업데이트


프로세스 이미지는 CPU 내부 시스템 메모리의
일부입니다(1.1.6 “CPU 메모리 영역” 참조). 프로
세스 이미지는 I/O 주소 0에서 시작하고, CPU에서
규정한 상한에서 끝납니다. 적절한 CPU를 사용하
는 경우 사용자가 이 상한을 정의할 수 있습니다.
일반적으로 모든 디지털 모듈은 프로세스 이미지
주소 영역에 있지만, 모든 아날로그 모듈은 이 영역
그림 20.1 프로그램 구조화의 예 밖에 주소를 가집니다. CPU에서 주소 할당이 자유
로운 경우, 하드웨어 구성 테이블을 사용하여 어떠
블록은 이 메인 프로그램 안에서 호출합니다. 이 예
한 모듈의 주소도 프로세스 이미지 위 또는 그 영역
에 나오는 블록은 인스턴스 데이터 블록(DB)에 데이
밖으로 지정할 수 있습니다.
터를 저장하는 함수 블록입니다. 공급 컨베이어 1과
프로세스 이미지는 프로세스 이미지 입력 테이블
공급 컨베이어 2는 동일한 구조입니다. FB 20은 제
(입력 I)과 프로세스 이미지 출력 테이블(출력 Q)로
어용으로써, DB 20를 공급 컨베이어 1용 인스턴스
구성됩니다.
데이터 블록(DB)으로 가지고 DB 21을 공급 컨베이
어 2용 인스턴스 데이터 블록(DB)으로 가지고 있습 CPU가 재가동한 후 OB 1를 처음 실행하기 전에,
니다. 운영체제는 프로세스 이미지 출력 테이블의 신호 상
태를 출력 모듈에 전달하고, 입력 모듈의 신호 상태
컨베이어 제어 프로그램에서 함수 FC 20은 인터 를 프로세스 이미지 입력 테이블에 적용합니다. 그
락을 처리하고, 입력 또는 메모리 비트를 스캔하고, 다음에 OB 1이 실행되어 입력 데이터들을 서로 결
FB 20의 로컬 데이터를 제어합니다. 함수 블록 FB 합하고 출력을 제어합니다. OB 1이 종료된 후, 새로
101은 컨베이어 벨트용 제어 프로그램을 포함하고, 운 사이클이 프로세스 이미지의 업데이트와 함께 시
각 벨트에 대해 한번만 호출합니다. 이러한 호출은 작됩니다(그림 20.2 참조).

283
20 메인 프로그램

그림 20.2 프로세스 이미지 업데이트

프로세스 이미지를 자동 업데이트하는 도중에 오 서브프로세스 1에서 30까지 중의 하나에 할당하


류가 발생하면, 예를 들어 모듈에 더 이상 액세스할 지 않은 모든 모듈은 OB 1 프로세스 이미지(OB1-
수 없는 경우, 조직 블록 OB 85 “프로그램 실행 에 PI)라고도 부르는 서브프로세스 이미지 0에 저장됩
러” 가 호출됩니다. OB 85를 사용할 수 없는 경우, 니다. 이러한 서브프로세스 이미지 0는 주기적으로
CPU는 정지 상태로 갑니다. 실행될 때마다 CPU의 운영체제에 의해 자동적으로
업데이트됩니다. 또한 사용자는 자동 업데이트 기
능이 비활성화되도록 CPU를 프로그래밍할 수 있습
서브프로세스 이미지 니다.
적절한 CPU를 사용하는 경우, 프로세스 이미지 적절한 CPU를 사용하는 경우, 사용자는 서브프
는 최대 30 개의 서브프로세스 이미지로 세분할 수 로세스 이미지를 인터럽트 조직 블록에 할당하여 이
있습니다. 주소를 지정할 때 모듈의 주소로 지정할 들 OB를 호출할 때 자동적으로 이미지를 업데이트
서브프로세스 이미지를 정의함으로써 입출력 모듈 할 수 있습니다.
을 파라미터화하는 동안 프로세스 이미지를 세분할 시스템 함수 SFC 26 UPDAT_PI와 SFC 27
수 있습니다. 이러한 세분 작업은 프로세스 이미지 UPDAT_PO는 사용자 프로그램에서 서브프로그램
입력 테이블과 프로세스 이미지 출력 테이블에 따라 이미지를 업데이트하는데 사용할 수 있습니다. 동
수행할 수 있습니다. 기 사이클 인터럽트를 위한 조직 블록에서는 시스템

284
20.2 스캔 사이클 제어

함수 SFC 126 SYNC_PI와 SFC 127 SYNC_PO를 사 스캔 사이클 모니터링 시간에는 OB 1에 대한 전


용합니다(21.8.2 “프로세스 이미지의 등시성 업데 체 스캔 시간을 포함합니다. 여기에는 또한 현재 사
이트” 참조). 이클에서 메인 프로그램을 인터럽트할 수 있는 더
높은 우선 순위 등급에 대한 스캔 시간도 포함합니
다. 또한 GD 통신 또는 CPU에 대한 PG 액세스(블
SFC 26 UPDAT_PI
SFC 27 UPDAT_PO 록 상태!)와 같이 운영체제에서 수행하는 통신 프로
세스도 메인 프로그램의 런타임을 증가시킵니다.
시스템 함수 SFC 26 UPDAT_PI는 입력의 서브프
이러한 런타임의 증가는 CPU를 파라미터화하는 방
로세스 이미지를 업데이트하고, 시스템 함수 SFC
법에 따라 부분적으로 줄일 수 있습니다( ‘사이클/
27 UPDAT_PO는 출력의 서브프로세스 이미지를 업
클록 메모리 비트’ 탭에서 ‘통신으로부터 주기적
데이트합니다. 표 20.1에는 이들 SFC의 파라미터
로드’ 선택).
가 나와있습니다. 또한 사용자는 이러한 SFC를 사
용하여 서브프로세스 이미지 0을 업데이트할 수 있
습니다. 사이클 통계

사용자는 이들 SFC를 언제 어디서나 호출하여 개 프로그래밍 기기로부터 작동 중인 CPU까지 온라


별 서브프로세스 이미지를 업데이트할 수 있습니 인으로 연결되어 있다면, PLC → 모듈 정보를 선택하
다. 예를 들면, 우선 순위 등급(프로그램 실행 레벨) 여 다양한 탭을 포함한 대화 상자를 호출하십시오.
에 대한 서브프로세스 이미지를 정의한 후, 우선 순 여기서 ‘사이클 시간’ 탭은 최단 및 최장 사이클
위 등급을 처리할 때 관련 조직 블록의 시작과 끝에 시간뿐만 아니라 현재 사이클 시간도 보여 줍니다.
서 서브프로세스 이미지를 업데이트할 수 있습니 그리고 파라미터화된 최소 사이클 지속 시간과 스캔
다. 사이클 모니터링 시간도 나타납니다.

프로세스 이미지의 업데이트는 더 높은 우선 순위 마지막 사이클 시간과 PLC를 마지막으로 시동한

등급을 호출하여 인터럽트할 수 있습니다. 프로세 이후 최대 및 최소 사이클 시간은 OB 1의 시작 정보

스 이미지를 업데이트하는 동안 오류가 발생하면, 에 있는 임시 로컬 데이터에서 읽을 수 있습니다.

예를 들어 모듈에 더 이상 액세스할 수 없는 경우,


이러한 오류는 SFC의 함수 값을 사용하여 보고됩니 SFC 43 RE_TRIGR
다. 스캔 사이클 모니터링 시간의 재가동
SFC 43 RE_TRIGR는 스캔 사이클 모니터링 시간
을 재가동합니다. 즉, 타이머는 CPU 파라미터화를
20.2.2 스캔 사이클 모니터링 시간 통해 설정된 새로운 값으로 재가동됩니다. SFC 43
조직 블록 OB1에서 프로그램 스캔은 소위 “스 에는 파라미터가 없습니다.
캔 사이클 모니터” 또는 “스캔 사이클 워치독” 에
의해 모니터링됩니다. 스캔 사이클 모니터링 시간
운영체제 런타임
의 기본값은 150ms입니다. 사용자는 CPU를 파라
스캔 타임은 또한 운영체제 런타임도 포함합니
미터화하여 이 값을 1ms에서 6s까지 변경할 수 있
다. 운영체제 런타임은 다음과 같이 구성됩니다.
습니다.
Z 주기적 스캐닝( ‘비로드 사이클’ )에 대한 시스
메인 프로그램에서 지정된 스캔 사이클 모니터링
템 제어(고정치)
시간보다 더 오래 스캔하면, CPU에서 OB 80( ‘타
이밍 오류’ )을 호출합니다. OB 80가 프로그래밍되 Z 프로세스 이미지의 업데이트(업데이트할 바이
지 않은 경우, CPU는 정지 상태로 갑니다. 트 수에 의존)

285
20 메인 프로그램

Z 타이머의 업데이트(업데이트할 타이머 개수에 됩니다. 각 명령문 뒤에 OB 90을 인터럽트할 수 있


의존) 지만, OB 90에서 호출한 모든 시스템 블록은 모두
전체적으로 먼저 스캔됩니다.
Z 통신 부하
‘슬라이스’ 의 길이는 OB 1의 현재 스캔 타임에
CPU에 대한 통신 함수에는 시스템 함수를 사용
의존합니다. OB 1의 스캔 시간이 최소 스캔 타임에
한 사용자 프로그램 블록의 전송이나 CPU 모듈 간
가까울수록, OB 90을 실행하기 위한 시간은 더 줄
의 데이터 교환을 포함합니다. 이러한 함수에 CPU
어듭니다. 프로그램 스캔 시간은 OB 90에서 모니터
를 사용하는 시간은 CPU를 파라미터화하여 제한할
링하지 않습니다.
수 있습니다.

운영체제 런타임 시의 모든 값은 해당 CPU의 속 OB 90은 실행 모드에서만 스캔됩니다. OB 90은


성입니다. OB 1과 마찬가지로 인터럽트와 오류 이벤트에 의해
중단될 수 있습니다. 그리고 임시 로컬 데이터(바이
트 1)의 시작 정보도 어떤 이벤트가 OB 90을 처음부
20.2.3 최소 스캔 사이클 시간, 터 실행시키는지 알려줍니다.
백그라운드 스캔
Z B#16#91
적절한 CPU를 사용하는 경우, 최소 스캔 사이클
CPU 재가동 후
시간을 지정할 수 있습니다. 인터럽트를 포함하여
메인 프로그램이 시간이 덜 걸린다면, CPU는 OB 1 Z B#16#92
을 재호출하여 다음 사이클을 시작하기 전에 지정된 OB 90에서 처리된 블록이 삭제되거나 교체된
최소 스캔 타임이 경과할 때까지 대기합니다. 후

최소 스캔 사이클 시간의 기본값은 0ms인데, 즉 Z B#16#93


이 기능을 사용하지 않도록 설정된 경우입니다. 실행 모드에서 OB 90을 로드한 후
CPU를 파라미터화할 때 ‘사이클/클록 메모리 비
Z B#16#95
트’ 탭에서 최소 스캔 타임을 1ms에서 6s까지 설정
OB 90에서 프로그램을 스캔하고 새로운 백그라
할 수 있습니다.
운드 사이클이 시작한 후

백그라운드 스캔 OB 90
실제 사이클이 완료한 때부터 최소 사이클 시간이 20.2.4 응답 시간
지날 때까지 CPU는 조직 블록 OB 90 ‘백그라운 OB 1에서 프로세스 이미지의 신호 상태에 따라
드 스캔’ 을 실행합니다(그림 20.3 참조). OB 90은 사용자 프로그램이 실행되면, 응답 시간은 프로그
‘슬라이스 별로’ 실행됩니다. 운영체제에서 OB 1 램 실행 시간(스캔 타임)에 의존합니다. 응답 시간은
을 호출할 때 OB 90은 인터럽트됩니다. 그 다음에 다음 예에서 설명하듯이 한 스캔 주기와 두 스캔 주
OB 1이 종료하면 OB 90은 인터럽트 지점에서 재개 기 사이에 있습니다.

표 20.1 프로세스 이미지를 업데이트하기 위한 SFC 파라미터


파라미터 이름 SFC 선언 데이터 형식 내용, 설명
PART 26 27 INPUT BYTE 서브프로세스 이미지의 개수(0에서 15)
RET_VAL 26 27 RETURN INT 오류 정보
FLADDR 26 27 OUTPUT WORD 액세스 오류 발생시: 오류를 일으킨 첫 번째 바
이트의 주소

286
20.2 스캔 사이클 제어

그림 20.3 최소 사이클 지속 시간과 백그라운드 스캔

예를 들어, 리미트 스위치가 작동하면 신호 상태 됩니다. 이러한 프로시저에는 인터럽트의 수행, 타


는 ‘0’ 에서 ‘1’ 로 바뀝니다. PLC는 이후 프로 이머 업데이트와 같이 운영체제에서 수행하는 함
세스 이미지를 업데이트하는 동안 이러한 변화를 탐 수, MPI 인터페이스 제어, 프로세스 이미지 업데이
지하고, 리미트 스위치에 할당된 입력을 ‘1’ 로 설 트 등이 포함됩니다.
정합니다. 프로그램은 예를 들어 해당 모터를 끄기
위해 출력을 재설정함으로써 이러한 변화를 계산합 따라서, 입력 신호의 변화에 대한 응답 시간은 한
니다. 재설정된 출력의 새로운 신호 상태는 프로그 사이클에서 두 사이클 사이에 있을 수 있습니다. 이
램 스캔이 종료할 때 전달되고, 그 다음에서야 해당 응답 시간에는 입력 모듈에 대한 지연, 컨택터의 스
비트는 디지털 출력 모듈에서 재설정됩니다. 위칭 시간 등이 추가됩니다.

최상의 경우에 프로세스 이미지는 리미트 스위치 어떤 경우에는 이벤트 구동 기반으로 프로그램 부
의 신호가 변한 직후에 업데이트됩니다(그림 20.4
분을 호출(프로세스 인터럽트)하거나 I/O 주소를 직
참조). 이 경우 이에 대한 출력이 나오는데 단 한 사
접 지정하여 응답 시간을 줄일 수 있습니다.
이클만 걸립니다. 최악의 경우에 프로세스 이미지
는 리미트 스위치 신호가 변하기 바로 전에 업데이 프로그램 구성요소가 항상 동일한 시간 간격으로
트됩니다. 이 경우 PLC가 신호 변화를 탐지하고 입 처리되면(예: 주기적 인터럽트 프로그램), 프로세스
력을 설정하는 동안 대략 한 주기 동안 대기해야 합 제어에서 일정한 응답 시간 또는 동일한 시간 간격
니다. 즉, 다음 주기 후에야 프로그램이 응답할 수 을 달성할 수 있습니다. 프로피버스 DP 마스터 시스
있습니다. 템의 처리 사이클과 등시에 프로그램을 처리할 경우
이를 고려하였을 때, 사용자 프로그램의 실행 시 에도 응답 시간을 계산할 수 있습니다(21.8 “동기
간에는 한 프로그램 사이클의 모든 프로시저가 포함 사이클 인터럽트” 참조).

287
20 메인 프로그램

稊嵢显枪͑決惾滆嵢汞͑ 犢崫͑柦笾͑懆凃
滇洗͑洊埲刂͑穮叞͑
時昢͑柦笾͑懆凃

稊嵢显枪͑決惾滆嵢汞͑ 稊嵢显枪͑ 犢崫͑柦笾͑懆凃


滇洗͑洊埲刂͑穮叞͑時昢͑柦笾͑懆凃 決惾滆嵢͑洊埲

그림 20.4 PLC의 응답 시간

20.2.5 시작 정보 위해 임시 로컬 데이터의 처음 20 바이트를 예컨대


CPU의 운영체제는 모든 조직 블록과 마찬가지로 20 바이트 배열 형태로 예비해 두어야 합니다.
조직 블록 OB 1에도 임시 로컬 데이터의 처음 20 바
SIMATIC S7에서 모든 이벤트 메시지는 이벤트
이트에 시작 정보를 포워딩합니다. 사용자가 직접
시작 정보에 대한 선언을 하거나 표준 라이브러리의 클래스에 의해 지정된 고정 구조를 가집니다. 예를
조직 블록 아래에 있는 정보를 사용할 수 있습니다. 들면, OB 1의 시작 정보는 이벤트 B#16#11을 표준
OB 호출로 보고합니다. 다음 바이트의 내용으로부
표 20.2에는 OB 1의 시작 정보, 기본 심볼 표시,
데이터 형식이 나와있습니다. 사용자는 언제라도 터 시동 후 메인 프로그램이 첫 번째 사이클인지, 그
표기법을 바꿀 수 있고 원하는 이름을 선택할 수 있 리고 예를 들어 주기적 프로그램에서 초기화 루틴을
습니다. 시작 정보를 사용하지 않더라도 이 목적을 호출하고 있는지 알 수 있습니다.

표 20.2 OB 1의 시작 정보
바이트 변수 이름 데이터 형식 설명 내용
0 OB1_EV_CLASS BYTE 이벤트 클래스 B#16#11 = 표준 OB 호출
1 OB1_SCAN_1 BYTE 시작 정보 B#16#01 = 완전한 재가동 후 첫 번
째 사이클
B#16#02 = 윔 리스타트 후 첫 번째
사이클
B#16#03 = 매 2회 사이클마다
B#16#04 = 콜드 리스타트 후 첫 번
째 사이클
2 OB1_PRIORITY BYTE 우선 순위 B#16#01
3 OB1_OB_NUMBR BYTE OB 번호 B#16#01
4 OB1_RESERVED_1 BYTE 예약됨 -
5 OB1_RESERVED_2 BYTE 예약됨 -
6..7 OB1_PREV_CYCLE INT 이전 스캔 타임 ms 단위
8..9 OB1_MIN_CYCLE INT 최소 스캔 타임 ms 단위
10..11 OB1_MAX_CYCLE INT 최대 스캔 타임 ms 단위
12..19 OB1_DATE_TIME DT 이벤트 발생 OB의 호출 시간(주기적)

288
20.3 프로그램 함수

메인 프로그램의 우선 순위와 OB 번호는 고정되 대한 시작 정보의 처음 12 바이트를 포함합니다.


어 있습니다. 세 개의 INT 값으로 시작 정보는 마지 두 경우 모두 타임스탬프가 없습니다.
막 스캔 타임 그리고 마지막 시동 후 최소 및 최대 사
SFC 6 RD_SINFO는 메인 프로그램의 모든 위치
이클 시간에 대한 정보를 제공합니다. 시작 정보에 에서뿐만 아니라, 모든 우선 순위 등급에서 호출할
서 마지막 값은 DATE_AND_TIME 형식으로써 우선 수 있고, 오류 조직 블록 또는 시동 루틴에서도 호출
순위 제어 프로그램이 OB 1 호출 이벤트를 수신한 할 수 있습니다. 예를 들어 SFC 6 RD_SINFO를 인
시간을 나타냅니다. 터럽트 조직 블록에서 호출하면 TOP_SI는 인터럽트
OB의 시작 정보를 포함합니다. 재가동할 때 이를 호
조직 블록의 시작 정보는 임시 로컬 데이터로 구
출하는 경우, TOP_SI와 START_UP_SI는 동일한 내
성되어 있기 때문에 해당 조직 블록에서만 직접 읽
용을 가집니다.
어올 수 있다는 것에 유의하십시오. 더 낮은 우선 순
위를 가진 블록의 시작 정보를 알고 싶으면, 프로그
램의 해당 위치에서 시스템 함수 SFC RD_SINFO를
호출하십시오. 20.3 프로그램 함수

하드웨어 구성 도구로 CPU를 파라미터화하는 이


SFC 6 RD_SINFO 외에, 사용자는 또한 통합 시스템 함수를 사용하여
시작 정보 읽기
런타임 시 다수의 프로그램 함수를 선택할 수 있습
시스템 함수 SFC 6 RD_SINFO는 현재 조직 블록 니다.
(호출 트리의 상단에 있는 OB)과 마지막으로 실행
된 시동 OB에 대한 시작 정보를 우선 순위가 더 낮
20.3.1 실제 시간
은 호출에도 사용할 수 있도록 합니다(표 20.3 참
각 SIMATIC CPU는 STEP 7 또는 시스템 함수를
조).
사용하여 설정하고 스캔할 수 있는 클록을 가지고
출력 파라미터 TOP_SI는 현재 OB에 대한 시작 있습니다. 실제 시간은 사용자 프로그램에서
정보의 처음 12 바이트를 포함하고, 출력 파라미터 DATE_AND_TIME 형식으로 나타나는데, 이것은 날
START_UP_SI는 마지막으로 실행된 시동 OB에 짜, 시간, 요일로 구성됩니다.

표 20.3 SFC 6 RD_SINFO에 대한 파라미터


SFC 파라미터 이름 선언 데이터 형식 내용, 설명
6 RET_VAL RETURN INT 오류 정보
TOP_SI OUTPUT STRUCT START_UP_SI와 동일한 구조를 가진 현재 OB에 대
한 시작 정보
START_UP_SI OUTPUT STRUCT 마지막으로 시작한 OB에 대한 시작 정보
.EV_CLASS BYTE 이벤트 ID와 이벤트 클래스
.EV_NUM BYTE 이벤트 번호
.PRIORITY BYTE 실행 우선 순위(실행 레벨 번호)
.NUM BYTE OB 번호
.TYP2_3 BYTE 보충 정보 2_3의 ID
.TYP1 BYTE 보충 정보 1의 ID
.ZI1 WORD 보충 정보 1
.ZI2_3 DWORD 보충 정보 2_3

289
20 메인 프로그램

펌웨어 버전 3 이상의 새로운 CPU에는 시간 상태 하여 PDT 파라미터로 정의된 값으로 클록을 설정할
도 포함됩니다. 이때, 서머 타임/정상 시간 구분뿐 수 있습니다. SFC 0 SET_CLK는 서머 타임/정상 시
만 아니라 추가적으로 시간대 차이도 설정할 수 있 간 구분을 사용하여 CPU를 겨울 시간으로 설정합니
습니다.
다. SFC 100 SET_CLKS를 사용하면, SUMMER 파
다음과 같은 시스템 함수를 사용하여 CPU 클록
라미터로 표시 시간제가 정상 시간인지( ‘0’ ) 또
에 액세스할 수 있습니다.
는 서머 타임인지( ‘1’ ) 정의할 수 있습니다.
Z SFC 0 SET_CLK
날짜와 시간을 설정합니다. 현재 시간은 SFC 1 READ_CLK를 사용하여 읽어

Z SFC 1 READ_CLK 와 CDT 파라미터에 출력합니다. 시간을 설정하고


날짜와 시간을 읽습니다. 읽을 때 DATE_AND_TIME 형식을 가지므로 날짜와
Z SFC 48 SNC_RTCB 시간을 포함합니다.
CPU 클록을 동기화합니다.
Z SFC 100 SET_CLKS 모듈 시간, 로컬 시간
실제 시간, 날짜, 시간 상태를 설정합니다.
CPU에 나타나는 시간은 모듈 시간입니다. 모듈
표 20.4에서 시스템 함수 파라미터 목록을 볼 수
시간은 런타임 미터, 인터럽트 시간의 시작, 진단 버
있습니다.
퍼와 OB 시작 정보에서 타임스탬프 입력과 같이

실제 시간의 설정과 읽기 CPU를 제어하는 모든 시간 프로세스에서 중요합니


MODE = B#16#01 또는 B#16#03을 사용하여 다. CPU 클록용 시스템 함수를 사용하면 모듈 시간
SFC 0 SET_CLK 또는 SFC 100 SET_CLKS를 호출 을 설정하고 읽을 수 있습니다.

표 20.4 CPU 클록에 대한 SFC 파라미터


SFC 파라미터 이름 선언 데이터 형식 내용, 설명
0 PDT INPUT DT 날짜와 시간(신규)
RET_VAL RETURN INT 오류 정보
1 RET_VAL RETURN INT 오류 정보
CDT OUTPUT DT 날짜와 시간(현재)
48 RET_VAL RETURN INT 오류 정보
100 MODE INPUT BYTE 작동 모드
B#16#01: 시간만 설정합니다.
B#16#02: 시간 상태만 설정합니다.
B#16#03: 시간과 시간 상태를 설정합니다.
PDT INPUT DT 정의된 시간
CORR INPUT INT -24에서 +26까지 0.5 시간 간격으로 표시된
기본 시간으로부터 차이
SUMMER INPUT BOOL 서머 타임/정상 시간 구분
( ‘1’ = 서머 타임)
ANN_1 INPUT BOOL 계절 전환 표시 ‘1’ 은 서머 타임에서 정상
시간으로 바뀐다는 것을 표시하거나 그 반대
로 바뀌는 것을 표시합니다.
RET_VAL RETURN INT 오류 정보

290
20.3 프로그램 함수

그에 따라 설계된 CPU는 추가적으로 ‘시간 상 시간 동기화


태’ 를 저장합니다. 시간 상태는 모듈 시간에 추가 서브넷에서 서로 데이터를 교환하는 여러 개의
했을 때 로컬 시간이 되는 수정치를 포함합니다. 이 SIMATIC 스테이션을 가진 자동화 네트워크에서 모
수정치는 30분의 간격으로 설정하고, 음의 값이 될 든 CPU의 클록을 동기화할 수 있습니다. 사용자는
수도 있습니다(SFC 100 SET_CLKS의 CORR 파라 한 CPU의 클록을 ‘마스터 클록’ 으로 파라미터화
미터). 하고 동기화를 수행해야 하는 시간 간격을 설정합니
다. 그리고 동기화해야 하는 블록을 ‘슬레이브 클
로컬 시간은 시간대를 표시하는데 사용할 수 있습
록’ 으로 파라미터화합니다.
니다.
동기화는 통신 버스(백플레인 버스) 상의 S7 스테
이션 안이나 MPI 버스 상의 스테이션 간에서 수행할
시간 상태
수 있습니다. 이 절차는 마스터 클록을 처음으로 설
시간 상태는 STEP 7 또는 SFC 100 SET_CLKS를 정할 때 파라미터화된 간격으로 자동 수행됩니다.
사용하여 CPU를 파라미터화할 때 설정됩니다. 실 SFC 0 SET_CLK 또는 SFC 100 SET_CLKS으로 마
제 시간과 시간 상태는 시스템 상태 목록을 통해 스터 클록을 설정하면, 서브네트워크에 있는 다른
SFC 51 RDSYSST를 사용하여 읽을 수 있습니다 모든 클록은 이 값으로 자동적으로 동기화됩니다.
(SSL_ID = INDEX W#16#0008를 가진 마스터 클록에서 SFC 48 SNC_RTCB를 호출하
W#16#0132). 상태 변수에는 다음이 포함됩니다. 면, 자동 간격에 상관 없이 모든 슬레이브 블록을 동
Z 비트 2에서 비트 6을 차지한 수정치 기화할 수 있습니다.
(30분 간격) 마스터 클록에 실제 시간 상태가 없다면 슬레이브
클록은 정상 시간으로 동기화됩니다. 수정 인자는 0
Z 수정치의 부호(비트 7)
이고, 이때 로컬 시간은 모듈 시간에 해당합니다.
Z 서머 타임/정상 시간 구분 마스터 클록에 실제 시간 상태가 있다면, 전체 시
(비트 14) 간 상태가 시간과 함께 전송됩니다. 따라서, 시간 네
트워크에서 모든 CPU에 동일한 시간대의 동일한 로
Z 표시 시간제(비트 15)
컬 시간이 사용되게 됩니다.
서머 타임/정상 시간 구분은 모듈 시간과 수정치
로부터 계산한 로컬 시간이 서머 타임('1')인지 정상 STEP 7을 사용한 시간 설정
시간( ‘0’ )인지 나타냅니다.
CPU 파라미터를 설정할 때, 사용자는 ‘진단/클
표시 시간제 비트가 상태 ‘1’ 이면, 시간제가 바 록’ 탭에 있는 속성 창에서 동기화 모드(마스터, 슬
뀔 때 서머 타임에서 정상 시간으로 전환됩니다. 레이브 또는 없음)와 동기화 간격을 설정할 수 있습
니다. 여기서 설정된 수정치는 클록 정확도를 설정
시간 상태 정보를 사용하면 사용자 프로그램에서 하는데 사용합니다.
프로세스를 제어하기 위해 모듈 시간에서 로컬 시간
프로그래밍 기기가 CPU에 온라인으로 연결되었
을 생성할 수 있습니다.
을 때, STEP 7을 사용하여 시간과 시간 상태를 설정
로드 가능한 표준 블록을 사용하여 사용자 프로그 할 수 있습니다. PLC → 진단/사용자 정의 → 실제 시간
램에서 로컬 시간의 서머 타임/정상 시간 전환, 특히 설정을 순서대로 선택합니다. 이때 나타나는 대화
로컬 시간에 따른 인터럽트 시간의 시작을 처리할 상자에서 모듈 시간과의 차이로 로컬 시간을 설정할
수 있습니다. 자세한 내용은 “로드 가능한 실제 시 수 있고, 서머 타임/정상 시간을 정의할 수 있습니
간 블록” 을 참조하십시오. 다. 시간 상태는 ‘상태’ 상자에 나타납니다.

291
20 메인 프로그램

로드 가능한 실제 시간 블록 20.3.2 시스템 클록 읽기


표준 라이브러리에 있는 기타 블록 프로그램은 사
CPU의 시스템 클록은 시동 시에 작동하기 시작
용자 프로그램에서 서머 타임/정상 시간 전환과 로
합니다. 시스템 클록은 CPU가 재가동 루틴을 실행
컬 시간을 처리하기 위한 로드 가능한 블록을 포함
합니다. 하거나 실행 모드에 있는 동안 계속 작동합니다.
CPU가 정지또는 대기상태로 가면, 현재 시스템 시
Z FC 60 LOC_TIME
로컬 시간을 결정합니다. 간은 ‘정지된’ 상태가 됩니다.

Z FC 61 BT_LT S7-400 CPU에서 핫 리스타트를 시작하면, 시스


모듈 시간을 로컬 시간으로 변환합니다. 템 클록은 시작 시간으로 저장된 값을 사용하여 다
Z FC 62 LT_BT 시 작동합니다. 콜드 리스타트 또는 웜 리스타트는
로컬 시간을 모듈 시간으로 변환합니다. 시스템 시간을 재설정합니다.
Z FC 63 S_LTINT
인터럽트 시간을 로컬 시간으로 설정합니다. 시스템 시간은 TIME 데이터 형식이지만,

Z FB 60 SET_SW TIME#0ms에서
서머 타임/정상 시간을 전환합니다. TIME#24d20h31m23s647ms까지의 양의 값만 가
Z FB 61 SET_SW_S 집니다.
시간 상태를 사용하여 서머 타임/정상 시간을
전환합니다. 초과가 발생하는 경우, 클록은 0에서 다시 시작합

Z UDT 60 WS_RULES 니다. 신형 CPU는 매 ms마다 시스템 클록을 업데


서머 타임/정상 시간 전환을 위한 규칙 이트하고, 구형 S7-300-CPU는 매 10ms마다 업데
(예: 전환용 시간) 이트합니다.

표 20.5 런타임 미터용 SFC 파라미터


SFC 파라미터 선언 데이터 형식 내용, 설명
2 NR INPUT BYTE 런타임 미터의 번호(B#16#00에서 B#16#07까지)
PV INPUT INT 런타임 미터에 대한 새로운 수치
RET_VAL RETURN INT 오류 정보
3 NR INPUT BYTE 런타임 미터의 번호(B#16#00에서 B#16#07까지)
S INPUT BOOL 런타임 미터 시작( ‘1’ ) 또는 중지( ‘0’ )
RET_VAL RETURN INT 오류 정보
4 NR INPUT BYTE 런타임 미터의 번호(B#16#00에서 B#16#07까지)
RET_VAL RETURN INT 오류 정보
CQ OUTPUT BOOL 런타임 미터 작동 중( ‘1’ ) 또는 중지됨( ‘0’ )
CV OUTPUT INT 런타임 미터의 현재 수치
101 NR INPUT BYTE 런타임 미터의 번호(B#16#00에서 B#16#0F까지)
MODE INPUT BYTE 순서 코드(텍스트 참조)
PV INPUT DINT 런타임 미터에 대한 새로운 수치
RET_VAL RETURN INT 오류 정보
CQ OUTPUT BOOL 런타임 미터 작동 중( ‘1’ ) 또는 중지됨( ‘0’ )
CV OUTPUT DINT 런타임 미터의 현재 수치

292
20.3 프로그램 함수

SFC 64 TIME_TCK Z SFC 101 RTM


시스템 시간 읽기 32 비트 런타임 미터를 조정합니다.
시스템 함수 SFC 64 TIME_TCK를 사용하여 현재 표 20.5에는 위와 같은 시스템 함수에 대한 파라
시스템 시간을 읽을 수 있습니다. RET_VAL 파라미 미터가 나와있습니다.
터는 TIME 데이터 형식의 시스템 시간을 포함합니
NR 파라미터는 런타임 미터의 개수를 표시하고,
다.
데이터 형식은 BYTE입니다. NR 파라미터는 기본
예를 들면, 시스템 클록을 사용하여 현재 CPU 런 데이터 형식을 가진 모든 입력 파라미터와 마찬가지
타임을 읽거나 두 개의 SFC 64 호출 간의 시간 차이 로 상수 또는 변수를 사용하여 초기화할 수 있습니
를 계산하여 시간을 계산할 수 있습니다. TIME 형식 다. PV 파라미터(INT 데이터 형식)은 런타임 미터를
의 두 값 간의 시간 차이는 DINT 빼기를 사용하여 계 초기값으로 설정하는데 사용합니다. SFC 3의 S 파
산합니다. 라미터는 선택한 런타임 미터를 시작(신호 상태
‘1’ ) 또는 중지(신호 상태 ‘0’ )합니다. CQ는 스
캔했을 때 런타임 미터가 작동 중인지(신호 상태
20.3.3 런타임 미터
‘1’ ) 또는 중지되었는지(신호 상태 ‘0’ )를 표시
CPU에서 런타임 미터는 시간을 카운트합니다. 합니다. CV 파라미터는 INT 형식으로 시간을 기록
CPU 런타임을 정하거나 CPU에 연결된 디바이스의 합니다.
런타임을 확인하는 작업에 런타임 미터를 사용할 수
SFC 101의 MODE 파라미터를 지정하면 32 비트
있습니다.
런타임 미터를 다음과 같이 제어할 수 있습니다.
또한 런타임 미터 상의 수치는 콜드 리스타트, 백
B#16#00 현재 미터값을 읽습니다.
업 전압 장애, 메모리 초기화 후에도 유지됩니다.
B#16#01 마지막 미터값에서 시작합니다.
런타임 미터의 값 범위와 CPU 당 개수는 CPU에
B#16#02 런타임 미터를 중지합니다.
따라 다릅니다. 런타임 미터의 값 범위는 16 비트
(215- 1 시간) 또는 32 비트(231- 1 시간)입니다. B#16#04 PV에 지정된 값으로 설정합니다.

CPU가 정지 또는 대기 상태일 때, 런타임 미터도 작 B#16#05 PV에 지정된 값으로 설정하고 시작


동을 멈춥니다. CPU가 재가동되면 런타임 미터도 합니다.
재가동해야 합니다. B#16#06 PV에 지정된 값으로 설정하고 중지
런타임 미터가 최대 지속 시간에 도달하면 작동을 합니다.
중지하고 초과를 보고합니다. 런타임 미터는 SFC 또한 32 비트 런타임 미터를 제어하기 위해 16 비
호출을 통해서만 새로운 값으로 설정하거나 0으로 트 런타임 미터용 SFC를 사용할 수 있습니다. 이때,
재설정할 수 있습니다 32 비트 런타임 미터는 16 비트 값 범위에 따라 반
응합니다.
다음 시스템 함수는 런타임 미터를 제어하는데 사
용합니다.

Z SFC 2 SET_RTM 20.3.4 CPU 메모리 압축


16 비트 런타임 미터를 설정합니다. 온라인으로 블록을 수정하는 동안 자주 발생하는
여러 차례에 걸친 블록의 삭제와 리로딩으로 인해
Z SFC 3 CTRL_RTM
CPU의 작업 메모리와 RAM 로드 메모리에 간격
16 비트 런타임 미터를 시작하거나 중지합니다.
(gap)이 발생할 수 있습니다. 이 간격은 사용 가능
Z SFC 4 READ_RTM 한 메모리 공간을 감소시킵니다. “Compress” 함
16 비트 런타임 미터를 읽습니다. 수를 호출하면 블록을 서로 붙여주어 이 간격을 메

293
20 메인 프로그램

우는 CPU 프로그램을 시작합니다. “Compress” 시스템 함수 SFC 46 STP는 프로그램 스캔을 종


함수는 CPU에 연결된 프로그래밍 기기를 통하거나 료시키고, CPU는 정지 상태로 갑니다. SFC 46 STP
시스템 함수 SFC 25 COMPRESS를 호출하여 시작 에는 파라미터가 없습니다.
할 수 있습니다. SFC 25에 대한 파라미터는 표 20.6
에 수록되어 있습니다.
20.3.6 멀티프로세싱 모드
압축 과정은 여러 프로그램 사이클에 분산됩니
다. 이 SFC는 BUSY = ‘1’ 을 반환하여 압축이 진 S7-400에서는 멀티프로세싱이 가능합니다. 동
행 중임을 나타내고, DONE = ‘1’ 을 반환하여 압 일한 P 버스와 K 버스 상에 있는 랙 하나에 적절하
축을 완료하였음을 나타냅니다. 외부에서 시작된 게 설계된 CPU를 4 개까지 작동할 수 있습니다.
압축이 진행 중이거나, “Delete Block” 함수가 실
하드웨어 구성 도구로 중앙 랙에 두 개 이상의
행 중이거나, PG 함수가 시프트할 블록에 액세스 중
CPU를 설치한 경우, S7-400 스테이션은 자동으로
일 때(예: Block Status 함수) 이 SFC는 압축 작업을
멀티프로세서 모드가 됩니다. 임의의 슬롯에 CPU
수행할 수 없습니다.
를 꽂을 수 있습니다. CPU를 꽂았을 때 해당 CPU에
특정한 CPU의 최대 길이 블록은 압축하지 못하 번호가 올림차순으로 자동 지정됩니다. 또한 이 번
므로 간격이 CPU 메모리에 여전히 남게 된다는 점 호를 ‘멀티 컴퓨팅’ 탭에서 직접 지정할 수도 있
에 유의하십시오. CPU가 정지 상태에 있는 동안 PG 습니다.
를 통해 시작한 Compress 함수만 모든 간격을 제거
하나의 CPU만 변경했을 때에도 모든 CPU의 구
할 수 있습니다.
성 데이터를 PLC에 로드해야 합니다.

CPU에 파라미터를 할당한 후, 스테이션의 각 모


20.3.5 대기와 중지
듈을 CPU에 할당해야 합니다. 이러한 작업은 ‘주
시스템 함수 SFC 47 WAIT는 지정된 시간 동안 프
소’ 탭의 ‘CPU 할당’ 에서 모듈을 파라미터화해
로그램 스캔을 중단합니다.
서 이루어집니다(그림 20.5 참조).
SFC 47 WAIT에는 ms(ms) 단위로 대기 시간을 지
모듈의 주소 영역을 할당하는 동시에, 또한 이
정할 수 있는 INT 데이터 형식의 입력 파라미터 WT
CPU에 모듈 인터럽트를 할당합니다. 보기 → 필터 →
가 있습니다.
CPU NO. X-MODULES를 사용하여 하드웨어 구성 테이
최대 대기 시간은 32767ms입니다. 최소 대기 시 블에서 CPU에 할당된 모듈을 강조할 수 있습니다.
간은 시스템 함수의 실행 시간에 해당하는데, 이것
은 CPU마다 다릅니다. 멀티프로세싱 네트워크에 있는 모든 CPU는 동일
한 작동 모드를 가집니다. 이것은 다음을 의미합니
SFC 47은 우선 순위가 더 높은 이벤트로 인터럽
다.
트할 수 있습니다. S7-300에서는 이로 인해 우선 순
위가 더 높은 인터럽트 루틴의 스캔 시간만큼 대기 Z 모든 CPU는 동일한 재가동 모드로 파라미터화
시간이 늘어납니다. 해야 한다.

표 20.6 SFC 25 COMPRESS에 대한 파라미터


SFC 파라미터 선언 데이터 형식 내용, 설명
25 RET_VAL RETURN INT 오류 정보
BUSY OUTPUT BOOL 압축 진행 중( ‘1’ )
DONE OUTPUT BOOL 압축 완료( ‘1’ )

294
20.3 프로그램 함수

그림 20.5 멀티프로세서 모드에서 모듈 할당

Z 모든 CPU는 동시에 RUN 상태로 간다. 20.3.7 OB 프로그램 런타임의 결정


Z 하나의 CPU에서 싱글 스텝 모드로 디버그할 때 시스템 함수 SFC 78 OB_RT는 여러 시간 간격에
모든 CPU가 HOLD 상태로 간다.
걸쳐서 개별 조직 블록의 런타임을 결정합니다. 이
Z 하나의 CPU가 정지 상태로 가는 동시에 다른 모 를 통해 사용자 프로그램의 시간 로드(활용도)를 결
든 CPU도 정지 상태로 간다.
정할 수 있습니다.
스테이션의 랙 하나가 고장나면, 각 CPU에서 조
직 블록 OB 85을 호출합니다. 위와 같은 목적을 위해 만들어진 CPU의 운영체

이들 CPU에서 사용자 프로그램은 서로 독립적으 제는 개별 조직 블록의 런타임을 기록하고 SFC 78


로 실행하며 동기화되어 있지 않습니다. OB_RT를 통해 이를 읽을 수 있도록 합니다. 런타임

SFC 35 MP_ALM은 모든 CPU에서 동시에 조직 의 정확도는 CPU에 따라 달라지고, 그 시간은 ms


블록 OB 60 ‘멀티 프로세서 인터럽트’ 를 시작합 단위로 정해집니다. 요청된 시간에 대한 값이 없으
니다(21.7 “멀티프로세서 인터럽트” 참조). 면, -1(DW#16#FFFF FFFF)이 반환됩니다.

표 20.7 SFC 78의 파라미터


SFC 파라미터 선언 데이터 형식 내용, 설명
78 OB_NR INPUT INT 타이머를 스캔해야 하는 OB의 번호
RET_VAL RETURN INT 오류 정보 또는 OB_NR=0일 때 OB의 번호
PRIO OUTPUT INT 스캔된 OB의 우선 순위 등급
LAST_RT OUTPUT DINT 마지막으로 완료된 실행의 런타임
LAST_ET OUTPUT DINT 마지막으로 완료된 실행에서 OB 요청과 처리
종료 사이의 시간
CUR_T OUTPUT DINT OB 요청의 기간(상대 시간)
CUR_RT OUTPUT DINT OB의 이전 실행 런타임
CUR_ET OUTPUT DINT OB 요청과 SFC 78에 의한 스캔 사이의 시간
NEXT_ET OUTPUT DINT 다음 OB 요청과 SFC 78에 의한 스캔 후의 시간

295
20 메인 프로그램

그림 20.6 측정할 조직 블록 외부에서 SFC 78 호출

시간 측정 원리 그림 20.6에는 측정할 OB 외부에서 SFC 78을 호


출하는 예가 나와있습니다. 정지-실행 전환 후 초기
CPU의 운영체제에서 타이머는 0ms에서 231-
값은 -1입니다(예 a).
1ms까지 상대 시간으로 작동합니다. CPU가 정지
모드에서 실행 모드로 전환될 때 타이머가 시작되 LAST_RT는 마지막으로 실행 완료한 OB의 런타
고, 상한까지 간 다음 다시 0에서 시작합니다. 임을 ms 단위로 나타낸 것입니다(예 s에서 예 h).
‘넷(net)’ 런타임이 출력됩니다. 우선 순위 등급이
OB 시작 이벤트, OB 실행의 시작과 끝, 우선 순
높은 OB에 의한 인터럽트 시간은 LAST_RT에 포함
위가 높은 OB에 의한 인터럽트는 운영체제에서 캡
되지 않습니다(f).
처됩니다. SFC78을 호출할 때 마지막으로 실행 완
료한 OB의 날짜는 저장됩니다. LAST_ET는 측정할 OB의 마지막 실행에서 시작
요청과 처리 종료 간의 시간 길이를 ms 단위로 나타
측정할 OB 외부에서 SFC 호출 낸 것입니다 (예 s에서 예 h까지). 더 높은 우선 순
위 등급에 의한 인터럽트 시간은 LAST_ET에 포함됩
SFC를 적용할 때, 호출한 OB의 프로그램 내부 호
니다(f).
출과 외부 호출은 분명하게 구분됩니다. OB 1에서
SFC 78을 호출하고 파라미터 OB_NR에 30이라는 CUR_T는 OB의 시작 요청 시간의 상대 시간(운영
값을 할당합니다. 그리고 OB 30에서 마지막으로 캡 체제에서 카운터의 상태)을 ms 단위로 나타낸 것입
처한 시간을 읽습니다. 동기 에러 OB를 번호 121과 니다. 초기화 후 CUR_T(a)는 -1을 포함합니다.
122로 지정할 수는 없습니다. 왜냐하면, 이 번호들 OB 실행이 완료되면, CUR_T는 0으로 설정됩니다.
은 오류 발생 OB의 우선 순위 등급에 속하므로 그 이 예에서 SFC 78을 OB 외부에서 호출하므로 이 파
OB의 프로그램에 속하기 때문입니다. 라미터의 출력은 0이 됩니다.

296
20.3 프로그램 함수

그림 20.7 측정할 조직 블록 내부에서 SFC 78 호출

CUR_RT는 SFC 78을 호출할 때까지 OB의 유효 CPU의 경우, NEXT_RT는 계산되지 않고 그 값은 항
실행 시간을 ms 단위로 나타냅니다. 초기화 후 상 -1입니다.
CUR_RT(a)는 -1을 포함합니다. OB 실행을 완료
한 후 CUR_RT 값은 LAST_RT로 전달되고 CUR_RT
측정할 OB의 프로그램에서 SFC 호출
는 0으로 설정됩니다. 위의 예에서 SFC는 OB 외부
에서 호출하므로 이 값은 항상 0입니다. SFC 78은 측정할 OB의 프로그램에서도 호출할
수 있습니다. 이때, 파라미터 OB_NR은 0으로 초기
CUR_ET는 OB 시작 요청부터 SFC 78 호출까지
화되고, 파라미터 RET_VAL은 실행에서 오류가 없
시간 길이를 ms 단위로 나타낸 것입니다. OB 실행
을 때 현재 OB 번호를 반환합니다. 그리고 OB에서
을 완료한 후, CUR_ET 값은 LAST_ET로 전달되고
SFC 78을 호출하는 횟수를 판독합니다. 번호 121
CUR_ET는 0으로 설정됩니다. 위의 예에서 SFC는
과 122를 가진 동기 에러 OB 중의 하나에서 호출할
OB 외부에서 호출하므로 이 값은 항상 0입니다.
때, 이것이 오류를 일으키는 OB 데이터입니다.
NEXT_RT는 아직 처리되지 않은 시작 요청이 있
는 경우 다음 OB 시작 요청부터 SFC 호출까지 시간 그림 20.7에는 측정할 OB의 프로그램에서 SFC
길이를 ms 단위로 나타낸 것입니다. 현재 제공된 78을 호출하는 예가 나와있습니다. 이 함수는 OB

표 20.8 SFC 109 PROTECT의 파라미터


SFC 파라미터 선언 데이터 형식 내용, 설명
109 MODE INPUT WORD 작업 ID:
W#16#0000 보호 레벨 1
W#16#0001 보호 레벨 2
RET_VAL RETURN INT 오류 정보

297
20 메인 프로그램

프로그램 또는 여기서 호출한 블록 중의 하나 안에 20.3.8 프로그램 보호 변경


있습니다. 정지-실행 전환 후 초기값은 -1입니다. CPU에서 사용자 프로그램에 대한 액세스는 세
가지 보호 레벨로 보호할 수 있습니다(2.6.2 “사용
LAST_RT는 마지막으로 실행 완료한 OB의 런타
자 프로그램 보호” 참조). 시스템 함수 SFC 109
임을 ms 단위로 나타낸 것입니다(예 k, l, A). 측
PROTECT를 사용하면 보호 레벨 1과 2 간의 전환이
정할 OB에서 SFC를 다시 호출하면, -1이 출력됩니
가능합니다. 표 20.8에서 이 시스템 함수의 파라미
다(예 ;). ‘넷(net)’ 런타임이 출력되고, 더 높은
터를 볼 수 있습니다.
우선 순위 등급에 의한 인터럽트 회수는 LAST_RT에
하드웨어 구성 도구에서 보호 레벨을 1로 설정했
포함되지 않습니다(예 l).
을 경우에만 SFC 109 PROTECT의 호출이 유효합
LAST_ET는 측정할 OB에서 마지막 실행의 종료 니다. 보호 레벨 2 또는 3으로 설정한 경우 또는 ‘암
와 요청 간의 시간 길이를 ms 단위로 나타냅니다(예 호로 취소 가능’ 옵션과 연계하여 보호 레벨 1에서
k, l). 또한 이것은 측정할 OB에서 SFC 78을 처 암호를 입력한 경우는 유효하지 않습니다.
음 호출할 때에도 적용됩니다(l). 측정할 OB에서 다음과 같은 경우에 SFC 109 PROTECT로 설정
SFC를 다시 호출하면, -1이 출력됩니다(예 ;). 한 보호 레벨은 변하지 않습니다.
LAST_ET는 또한 더 높은 우선 순위 등급에 의한 인
Z 프로그램 오류, SFC 46 STP 호출, 작동자 개입
터럽트 횟수도 포함합니다(l).
때문에 CPU가 정지 상태로 가는 경우

다음 예에서와 같이 OB 안에서 SFC 78을 호출할 Z CPU가 배터리로 작동하고 주 전원 공급 장치가


때 CUR_T는 OB의 시작 요청 시간의 상대 시간(운 회복된 경우
영체제에서 카운터 상태)을 ms 단위로 나타냅니다. Z 재가동하는 경우(S7-400).
OB 실행이 완료되면, CUR_T는 0으로 설정됩니다.
다른 모든 경우에, 보호 레벨 1은 작동 모드를 전
CUR_RT는 SFC 78을 호출할 때까지 OB의 유효 환할 때 설정됩니다. 모든 선택 스위치를 정지 상태
실행 시간을 ms 단위로 나타냅니다. OB의 실행을 로 전환하더라도, 보호 레벨 1이 (재)설정됩니다.
완료한 후, CUR_RT 값은 LAST_RT로 전달되고, CPU를 선택하고 PLC → 진단/설정 → 작동 모드 순
CUR_RT는 0으로 설정됩니다. 더 높은 우선 순위 등 서대로 선택하여 SIMATIC 관리자에서 현재 보호 레
급에 의한 인터럽트 횟수는 CUR_RT에 포함되지 않 벨을 온라인으로 정할 수 있습니다. 프로그램에서
습니다(l, ;). 인덱스 W#16#0004를 가진 시스템 상태 리스트
W#16#0232를 통해 SFC 51 RDSYSST를 사용하여
CUR_ET는 OB 시작 요청부터 SFC 78 호출까지
보호 레벨을 스캔할 수 있습니다.
시간 길이를 ms 단위로 나타낸 것입니다. OB 실행
키 락 스위치를 모드 선택 스위치로 가진 CPU인
을 완료한 후, CUR_ET 값은 LAST_ET로 전달되고
경우, RUN 위치에서 키를 제거하여 작동 시 프로그
CUR_ET는 0으로 설정됩니다. CUR_ET는 또한 현
래밍 기기로 읽기 권한만 허용할 수 있습니다. 토글
재 측정할 OB를 인터럽트하는 우선 순위가 더 높은
모드 선택 스위치인 경우에 이것은 가능하지 않습니
OB의 런타임도 포함합니다.
다. 이 경우에 재가동 조직 블록에서 SFC 109
NEXT_RT는 아직 처리되지 않은 시작 요청이 있 PROTECT를 호출하여 보호 레벨 2를 활성화할 수
는 경우 다음 OB 시작 요청부터 SFC 호출까지 시간 있는데, 이것은 CPU를 켤 때 쓰기 방지(읽기 전용)
길이를 ms 단위로 나타낸 것입니다. 현재 제공된 를 설정하는 것입니다.
CPU의 경우, NEXT_RT는 계산하지 않으며 그 값은 SFC 109 PROTECT를 사용하면, 모드 선택 스위
항상 -1입니다. 치를 안 쓰고도 작동 중에 보호 레벨을 바꿀 수 있습

298
20.4 분산 I/O를 통한 통신

니다. 예를 들면, SFC 109 PROTECT를 사용하여 터 기록의 비주기적 전송이나 새로운 유형의 인터럽
프로그램 부분을 리로드하기 위해 이진 변수의 신호 트에서 비롯되는 진단 및 파라미터화 기능 향상과
상태에 따라 보호 레벨을 1(MODE = W#16#0000) 같이 IEC 61131에 따른 새로운 속성을 보여주는 DP
로 (재)설정할 수 있습니다. 그 다음 MODE = 슬레이브를 추가적으로 사용할 수 있습니다. 새로
W#16#0001로 설정하여 쓰기 방지를 재활성화합니 운 인터럽트 조직 블록은 물론 데이터 기록의 전송
다. 을 위한 새로운 시스템 함수도 이러한 새로운
‘DPV1 슬레이브’ 용입니다.

중앙 모듈과 마찬가지로, DP 슬레이브는 CPU의


20.4 분산 I/O를 통한 통신 I/O 영역( ‘논리 주소 영역’ )의 주소를 차지합니
다. DP 슬레이브의 주소는 DP 마스터에게 ‘투명’
분산 I/O는 프로피버스 DP 또는 프로피넷 IO 상에
합니다. CPU가 DP 슬레이브의 주소를 ‘본다’ 는
연결된 모듈로 간주됩니다.
것은 중앙 모듈의 주소와 중복되지 않아야 한다는
프로피버스 DP에서, DP 마스터는 프로피버스 서 것을 의미합니다. 심지어, CPU에 할당된 다른 DP
브네트워크를 통해 할당된 DP 슬레이브와 통신합니 마스터 시스템에 있는 DP 슬레이브의 주소와도 중
다. 프로피넷 IO에서 산업용 이더넷 서브네트워크를 복되지 않아야 합니다.
통해 할당된 IO 디바이스와 데이터를 교환하는 것은
모든 DP 슬레이브에는 노드 주소 이외에 세 가지
IO 컨트롤러입니다.
주소, 즉 물리적 주소, 모듈 시작 주소, 그리고 최소
데이터 전송은 ‘자동적으로’ 실행되므로 사용 한 한 개의 진단 주소를 가집니다(그림 20.8 참조).
자가 개입할 필요가 없습니다. 중앙 모듈을 사용하
는 것과 유사한 방법으로 하드웨어 구성 도구를 사
노드 주소
용하여 분산 I/O를 구성하고 주소를 지정할 수 있습
니다. 사용자 프로그램에서, 중앙 모듈의 입력과 출 PROFBIBUS 서브네트워크에 있는 모든 노드는
력처럼 분산 I/O의 스테이션에서 입력과 출력의 주 고유한 주소, 즉 서브네트워크에 있는 다른 노드와
소를 지정할 수 있습니다. 구별할 수 있는 해당 서브 네트워크의 노드 주소(스
테이션 번호)를 가집니다. 이 노드 주소로 프로피버
스에 있는 스테이션(DP 마스터 또는 DP 슬레이브)
20.4.1 프로피버스 DP 주소 지정 에 액세스합니다.
프로피버스 DP를 사용하는 분산 모듈(스테이션,
활성 버스 노드들의 주소 간에는 최소한 1의 간격
DP 슬레이브)은 중앙 모듈을 CPU에 할당하고 제어
이 있어야 함에 유의하십시오. 예를 들어, 교차 트래
하는 방법과 유사한 방법으로 DP 마스터에 할당됩
니다. 모든 DP 슬레이브를 가진 DP 마스터는 DP 마 픽에 DP 마스터와 노드가 있는 경우가 그렇습니다.

스터 시스템이라고 부릅니다. S7 스테이션에는 여 노드 주소를 자동으로 할당할 때 STEP 7은 이 점을


고려합니다.
러 개의 DP 마스터 시스템이 존재할 수 있습니다.

새로운 DP 마스터는 DPV1과 S7-호환이라는 두


가지 작동 모드를 처리할 수 있습니다. ‘S7 호환’ 물리적 주소
모드는 이전의 모드입니다. ‘S7 호환’ 모드를 사 모듈 슬롯은 물리적 주소로 구별합니다. 중앙 모
용하면 EN 50170에 따라 모든 DP 표준 슬레이브를 듈의 물리적 주소에는 랙과 슬롯의 번호가 포함됩니
작동할 수 있고, DP 마스터에 이미 인터럽트를 보낼 다. 프로피버스 DP에서 물리적 주소는 DP 마스터
수 있는 Siemens의 ‘DP S7 슬레이브’ 를 추가적 시스템의 번호, 스테이션 번호, 슬롯 번호를 포함합
으로 작동할 수 있습니다. DPV1 모드인 경우, 데이 니다.

299
20 메인 프로그램

枲嵵͑͡汆͑洊熺͑枪癒決晞汊͑喞痆嗋城埪͟

枲嵵͑ͣ櫖垚͑憊枪͑汾瘶碞決枪
͙汾瘶碞決枪͑微姎͑ͺ;͚儆͑磲穮夯城埪͟

柦笾͑微姎汆͑枲嵵͑ͥ抆瘶͑斲殯夯城埪͟

그림 20.8 DP 마스터 시스템의 주소

DP 슬레이브의 슬롯 번호는 그 유형에 따라 달라 전송 메모리에 존재하고, 이 데이터 영역은 입출력


집니다. GSD 파일을 사용하여 슬롯 번호를 통합하 모듈에 해당합니다. 전송 메모리의 가상 슬롯은 마
는 경우, GSD 파일의 항목은 I/O 모듈이 시작하는 스터와 슬레이브 CPU 모두에서 ‘볼’ 수 있습니다.
슬롯을 결정합니다. DP 표준 슬레이브인 경우, I/O
가상 슬롯을 정의함으로써 인터페이스 모듈 또는
모듈용 슬롯은 1에서 시작합니다. S7 슬레이브의
스테이션의 진단 및 인터럽트 이벤트를 직접 지정할
슬롯 번호 지정은 S7-300 스테이션의 슬롯에 기초
수 있습니다(자세한 내용은 “진단 주소” 참조). 시
합니다. 이 경우에 슬롯 1(전원 공급 장치)과 3(확장
스템 함수 SFC 5 GADR_LGC와 SFC 49 LGC_
인터페이스 모듈)은 계속 비어 있습니다. 슬롯
GADR은 물리적 주소를 논리 주소로 변환하거나 그
2(CPU)는 모듈식 DP 슬레이브의 인터페이스 모듈(
반대로 변환하는데 유용하고, 시스템 함수 SFC 70
헤더 모듈)에 해당합니다. 입출력 모듈(SM)은 슬롯
GEO_LOG와 SFC 71 LOG_GEO는 프로피넷 IO에
4에서 시작합니다. 그리고, ‘가상’ 슬롯 0(실제로
적당합니다.
존재하지 않음)이 있는데, 이것은 완전한 스테이션
을 표시합니다. 버전 3 이후의 EN 50170에 따라 GSD 파일을 통
해 하드웨어 구성에 포함된 DP 슬레이브(DPV1)는
지능형 DP 슬레이브도 마찬가지입니다. 이 경우 슬롯 1부터 사용자 데이터를 저장할 수 있다는 것에
에 전송 메모리는 DP 마스터에 대한 인터페이스입 유의하십시오.
니다. 하드웨어 구성 도구로 수행하는 전송 메모리
구성 작업은 모듈 또는 슬롯에 해당하는 영역을 생
논리 주소,
성합니다. 이러한 슬롯은 실제로 존재하지 않으므 모듈 시작 주소
로, ‘가상’ 슬롯이라고 부릅니다.
스테이션의 사용자 데이터에 액세스하려면 논리
가상 슬롯 0은 DP 스테이션을 표시하고, 가상 슬 주소를 사용합니다. 사용자 데이터의 각 바이트는
롯 2는 버스 인터페이스를 표시하며, 이 경우에 슬 논리 주소로 분명하게 구별됩니다. 논리 주소는 절
레이브 CPU는 DP 슬레이브의 ‘헤더 모듈’ 입니 대 주소에 해당하고, 심볼(이름)이 할당되는 심볼 주
다. 가상 슬롯 4 이후에서는 사용자 데이터 영역이 소 지정 방식이므로 읽기가 더 용이합니다.

300
20.4 분산 I/O를 통한 통신

모듈 또는 스테이션에서 최소 논리 주소는 모듈 하드웨어 구성 도구를 사용하여 DP 마스터 시스템


시작 주소입니다(1.4 “모듈 주소” 참조). 에 연결하는 순서대로 할당합니다.

사용자 프로그램에서는 시스템 블록을 사용하여


진단 주소 진단 주소를 스캔합니다. 시스템 함수 SFC 13
진단 데이터를 제공할 수 있고 자체 내에 사용자 DPNRM_DG는 일반적인 DP 표준 슬레이브를 가진
데이터 주소가 없는 모듈과 스테이션은 진단 주소로 경우에 사용할 수 있습니다. SFC 59 RD_REC는 DP
구별합니다. 진단 주소는 논리 주소 볼륨에서 I/O 입 S7 슬레이브에 사용하여 진단 데이터를 가진 데이
력의 1 바이트를 차지합니다. 기본 설정에서, STEP 터 기록 DS1을 읽습니다. DPV1 슬레이브는 시스템
7은 CPU의 I/O 영역에서 제일 높은 주소로 시작하 함수 블록 SFB 52 RDREC으로 읽을 수 있는 좀더
는 진단 주소를 할당합니다. 사용자는 진단 주소를 포괄적인 진단 데이터를 제공할 수 있습니다. 이 모
변경할 수 있습니다. 하드웨어 구성 도구의 주소 개 듈은 사용자 데이터의 논리 모듈 시작 주소에 의하
요에서는 진단 주소를 별표로 구별합니다. 거나 진단 주소에 의해 주소 지정됩니다.

지능형 DP 슬레이브의 전송 메모리에서 사용자


데이터 영역 또는 입출력 모듈은 진단 데이터를 스 지능형 DP 슬레이브의 전송 메모리
캔하기 위한 논리 주소를 가지고 있습니다. 완전한 컴팩트 DP 슬레이브와 모듈식 DP 슬레이브인 경
스테이션은 가상 슬롯 0에 할당된 하나의 진단 주소 우, 입력과 출력의 주소는 마스터 CPU의 주소 볼륨
를 통해 진단 데이터를 제공합니다. 모듈식 DP 슬레 에서 중앙 모듈의 주소와 함께 위치합니다. 지능형
이브와 지능형 DP 슬레이브의 경우, 버스 인터페이 슬레이브인 경우, 마스터 CPU는 DP 슬레이브의 입
스는 슬롯 2의 진단 주소를 통해 진단 데이터를 제 력/출력 모듈에 직접 액세스할 수 없습니다. 그러므
공합니다. 로 모든 지능형 슬레이브의 전송 메모리는 사용하는
그림 20.9는 DP 마스터 시스템에서 진단 주소의 CPU에 의존하는 크기를 가집니다. 전송 메모리는
예를 보여 줍니다. 컴팩트 DP 슬레이브는 완전한 스 서로 다른 길이와 데이터 일관성을 가진 여러 영역
테이션에 대해 하나의 진단 주소를 가지고, 모듈식 으로 구분할 수 있습니다. 이때, 개별 영역은 최하단
DP 슬레이브는 스테이션에 대해 하나의 진단 주소 주소가 모듈 시작 주소인 모듈처럼 작동합니다. 마
와 인터페이스 모듈에 대해 하나의 진단 주소를 가 스터 CPU의 기준에서, 지능형 DP 슬레이브는 구분
집니다. 지능형 DP 슬레이브인 경우, DP 인터페이 에 따라 컴팩트 DP 슬레이브 또는 모듈식 DP 슬레
스에 대해서도 하나의 진단 주소를 가집니다. 이브로 보입니다(그림 20.10 참조).

진단 주소는 높은 I/O 주소부터 시작하여 내림차 슬레이브를 구성할 때, 전송 메모리의 개별 영역


순으로 할당됩니다. 예를 들면, CPU 317-2PN/DP 을 ‘모듈 시작 주소’ 와 영역 길이를 가진 입력 또
의 DP 인터페이스에는 진단 주소 8191이 할당되고, 는 출력으로 구성할 수 있습니다. 예외적으로 CP
PN 인터페이스에는 진단 주소 8190이 할당되고(그 342-5DP가 지능형 슬레이브에 대한 DP 인터페이
림 20.9에는 안 보임), 전송 메모리의 가상 슬롯 0과 스를 제공하면, 전송 메모리의 구분은 DP 마스터 시
2에는 진단 주소 8189와 8188이 할당됩니다. 마스 스템에 연결할 때에만 구성됩니다. 전송 메모리의
터 CPU도 마찬가지입니다. 진단 주소는 DP 인터페 주소는 지능형 DP 슬레이브의 중앙 모듈의 주소와
이스인 경우에는 16383으로 시작되고, MPI/DP 인 중복되면 안됩니다. 프로세스 이미지에 주소가 존
터페이스(보이지 않음)에는 16382, 첫 번째 지능형 재하면, 그 영역은 입력 및 출력과 같이 사용자 프로
DP 슬레이브의 가상 슬롯 0와 2에는 16381과 그램으로 처리할 수 있습니다. 존재하지 않으면 주
16380, 두 번째 DP 슬레이브에는 16379와 16378 변 입력장치 및 출력장치처럼 처리할 수 있습니다.
이 지정되는 식입니다. DP 슬레이브의 진단 주소는 슬레이브 CPU가 부분 프로세스 이미지를 가지고 있

301
20 메인 프로그램

儇͑憊枪͑汾瘶碞決枪櫖垚͑滊埮͑渂暒儆͑沎求彶͑͝ 儇͑憊枪͑汾瘶碞決枪櫖垚͑滊埮͑渂暒儆͑沎求彶͑͝
決͑渂暒垚͑‫׎‬渂暒‫͑׏‬痳櫖昢͑汾瘶碞決枪汞͑儢熺͑暓昷櫖͑ 決͑渂暒垚͑‫׎‬渂暒‫͑׏‬痳櫖昢͑汾瘶碞決枪汞͑儢熺͑暓昷櫖͑
昪洛夯城埪͙廎枪瘶͑ʹ΁Ά櫖昢͑‫͑׏΁͵׎‬窏͑塚挚͑畺庳͚͟ 昪洛夯城埪͙枲崎決挒͑ʹ΁Ά櫖昢͑‫͑׏΁͵׎‬窏͑塚挚͑畺庳͚͟

枪癒決晞͑愕͑熱͑憎滾͑憊枪͑汾瘶碞決枪櫖垚͑滊埮͑ 枪癒決晞͑愕͑熱͑憎滾͑憊枪͑汾瘶碞決枪櫖垚͑滊埮͑
渂暒儆͑沎求彶͑͝決͑渂暒垚͑‫׎‬沂愞‫͑׏‬痳櫖昢͑枪癒決晞汞͑ 渂暒儆͑沎求彶͑͝決͑渂暒垚͑‫׎‬微姢‫͑׏‬痳櫖昢͑枪癒決晞汞͑
儢熺͑暓昷櫖͑昪洛夯城埪͙͵΁͑廎枪瘶汞͑穞姢毮檺͑ 儢熺͑暓昷櫖͑昪洛夯城埪͙枲崎決挒͑ʹ΁Ά櫖昢͑‫͑׏΁͵׎‬窏͑
割昷櫖昢͑͵΁͑枲崎決挒͑枪癒決晞͑塚挚͑畺庳͚͟ 塚挚͑畺庳͚͟

그림 20.9 DP 마스터 시스템의 진단 주소

302
20.4 분산 I/O를 통한 통신

廎枪瘶͑ʹ΁Ά͑懺匶櫖昢͑彚微庲͑洊暧 枲崎決挒͑ʹ΁Ά͑懺匶櫖昢͑彚微庲͑洊暧

그림 20.10 지능형 DP 슬레이브의 전송 메모리

으면, 사용자는 부분 프로세스 이미지를 각 영역에 데이터 일관성


할당할 수 있습니다. 데이터 일관성은 한 블록의 사용자 데이터를 모두
함께 처리한다는 것을 의미합니다. GSD 파일의 구
DP 마스터 시스템에 연결할 때, 마스터 CPU의 기
성 정보의 결과로써 또는 지능형 슬레이브의 전송
준에서 ‘모듈 시작 주소’ 그리고 전송 방향에 따
메모리에서처럼 하드웨어 구성 도구에 의한 구성을
라 마스터 엔드에서 구성을 보충할 수 있습니다.
통해, DP 슬레이브는 일관성 있는 데이터 영역을 보
CPU 슬레이브 측 입력을 마스터 측 출력에 할당하
여줄 수 있습니다. DP 슬레이브의 개체 속성의 ‘구
거나 그 반대로 할당할 수 있습니다. 프로세스 이미 성’ 탭에서 데이터 일관성을 ‘단위’ (바이트 또는
지에 주소가 존재하면, 그 영역은 입력 및 출력과 같 워드) 또는 ‘전체’ (구성된 영역)로 설정할 수 있
이 사용자 프로그램으로 처리할 수 있습니다. 존재 습니다. 이러한 데이터는 예컨대 부분 프로세스 이
하지 않으면 주변 입력장치 및 출력장치처럼 처리할 미지를 업데이트하는 동안 운영체제에서 고려합니
수 있습니다. 마스터 CPU가 부분 프로세스 이미지 다(1.5.3 “일관된 사용자 데이터” 참조).
를 가지고 있으면, 사용자는 부분 프로세스 이미지
사용자는 프로그램에서 전송된 데이터의 일관성
를 각 영역에 할당할 수 있습니다. 마스터 CPU의 기
을 확보해야 합니다. 데이터 영역이 1, 2 또는 4 바
준에서 볼 때, 전송 메모리의 주소는 중앙화된 S7 스 이트인 경우, 로드와 전송 명령을 사용하거나
테이션에 있는 다른 모듈의 주소와 중복되면 안되 MOVE 상자를 사용하여 데이터를 바이트, 워드 또
고, 중앙 모듈의 주소와 중복되거나 마스터 CPU에 는 더블워드로 전송합니다. 3 바이트 이상의 길이를
할당된 다른 DP 마스터 시스템의 주소와도 중복되 가진 영역인 경우, 시스템 함수 SFC 14 DPRD_DAT
면 안됩니다. 와 SFC 15 DP_WR_DAT를 사용하여 사용자 메모리
와 전송 메모리 간에 데이터를 전송합니다. 전송 메
사용자는 지능형 DP 슬레이브를 구성하는 동안 모리의 주소가 프로세스 이미지 안에 있으면 SFC의
이 슬레이브의 기준에서 진단 주소를 정의할 수 있 RECORD 파라미터에서 입력 I 또는 출력 Q용 주소
습니다. 지능형 DP 슬레이브를 DP 마스터 시스템에 영역을 사용하고, 그렇지 않을 경우 주변 입력장치
연결하는 동안 마스터 CPU의 기준에서 진단 주소를 PI 또는 주변 출력장치 PQ용 주소 영역을 사용합니
결정합니다. 다. 데이터에 액세스하기 위해 슬레이브 CPU의 사

303
20 메인 프로그램

용자 프로그램과 마스터 CPU의 사용자 프로그램에 다. 이전에 만든 프로피버스 서브네트워크를


서 시스템 함수를 사용합니다. DP 인터페이스에 할당함으로써 DP 마스터
신형 CPU인 경우, 시스템 함수를 사용하여 전달 시스템이 만들어집니다. 또한 ‘Mode’ 탭
하는 구성된 데이터 영역은 프로세스 이미지에 전부 에서 DPV1와 S7-호환이라는 두 가지 DP 모
존재하므로, 로드 명령과 전송 명령 또는 MOVE 상 드를 정의할 수 있습니다. 그리고 나중에 나
자를 사용하여 액세스할 수 있습니다. 이때, 프로세 머지 모듈을 구성할 수 있습니다. 그 다음에
스에서 데이터 일관성을 해칠 수 있음에 유의하십시 스테이션을 저장하고 컴파일합니다.
오. 5) 지능형 DP 슬레이브를 위한 S7 스테이션을
슬레이브 CPU의 사용자 프로그램에서 시작하여, 만들었다면, 하드웨어 구성 도구로 이 스테이
SFC 7 DP_PRAL을 사용하여 전송 메모리의 주소 영 션을 열고 이 모듈을 원하는 DP 인터페이스(
역에 대한 프로세스 인터럽트를 트리거하거나, SFB 예: 통합 DP 인터페이스를 가진 S7-300 CPU
75 SALRM을 사용하여 마스터 CPU에서 진단 또는 또는 ET200pro 기본 모듈 IM 154-8/CPU)에
프로세스 인터럽트를 트리거할 수 있습니다. ‘플러그인’ 합니다. DP 인터페이스를 ‘DP
슬레이브’ 로 설정한 경우, 이전에 만든 프로
피버스 서브네트워크를 DP 인터페이스에 할
20.4.2 프로피버스 DP 구성
당하고 DP 슬레이브(전송 메모리)의 기준에
서 사용자 데이터 인터페이스를 구성합니다.
일반 절차
그리고 나중에 나머지 모듈을 구성할 수 있습
근본적으로 중앙 모듈과 동일한 방법으로 프로피
니다. 그 다음에 스테이션을 저장하고 컴파일
버스 DP에서 분산 I/O를 구성합니다. 마운팅 랙에서
합니다.
모듈을 배열하는 대신, DP 스테이션(프로피버스 노
드)을 DP 마스터 시스템에 할당합니다. 여기에 필요 지능형 DP 슬레이브를 위한 나머지 스테이션
한 작업으로 다음과 같은 순서를 권장합니다. 에 동일한 방법으로 진행합니다.
1) SIMATIC 관리자를 사용하여 새로운 프로젝트 6) DP 마스터 시스템을 가진 마스터 스테이션을
를 만들거나 기존 프로젝트를 엽니다. 열고, 마우스로 프로피버스 노드(컴팩트 DP
2) SIMATIC 관리자를 사용하여 프로젝트에서 프 슬레이브와 모듈식 DP 슬레이브)를 하드웨어
로피버스 서브네트워크를 만들고, 필요하면 카탈로그에서 DP 마스터 시스템으로 드래그
버스 프로필을 설정합니다. 합니다. 노드 주소를 할당한 후 필요하면 모듈
3) SIMATIC 관리자를 사용하여 프로젝트에서 시작 주소와 진단 주소를 설정합니다.
DP 마스터(예: S7-400 스테이션)를 수용할 7) 지능형 DP 슬레이브를 만들었다면, 하드웨어
마스터 스테이션을 만듭니다. 카탈로그의 ‘프로피버스 DP’ 와 ‘이미 구
시스템에 지능형 DP 슬레이브가 있을 경우, 성된 스테이션’ 항목에서 마우스로 해당 아
예를 들어 S7-300 스테이션과 같은 관련 슬 이콘을 DP 마스터 시스템으로 드래그합니다.
레이브 스테이션도 만듭니다.
아이콘을 열고 이미 구성된 DP 슬레이브를 할
마스터 스테이션을 열어서 하드웨어 구성 도 당( ‘연결’ )한 후, 노드 주소를 할당하고 DP
구를 시작합니다. 마스터 기준에서(또는 중앙 마스터 CPU의 기
4) 하드웨어 구성 도구로 마스터 스테이션에서 준에서) 사용자 데이터 인터페이스를 구성합
DP 마스터를 찾습니다. DP 마스터는 예컨대 니다. 모든 지능형 DP 슬레이브에 대해 동일
DP 인터페이스를 가진 CPU가 될 수 있습니 한 방법으로 진행합니다.

304
20.4 분산 I/O를 통한 통신

8) 그 다음에 모든 스테이션을 저장하고 컴파일 → 마스터 시스템을 선택하여 DP 마스터 시스템을 만


합니다. 이제, DP 마스터 시스템의 구성을 완 듭니다. 모듈을 선택하고 그 다음에 ‘일반’ 탭의
료하였습니다. 여기서 구성을 보충하려면 중 편집 → 개체 속성 아래의 ‘속성’ 버튼을 사용하여
앙 모듈이나 추가 DP 슬레이브를 사용할 수 노드 주소와 프로피버스 서브네트워크 연결을 변경
있습니다. 할 수 있습니다.

또한 이와 같은 방법으로 구성한 DP 마스터 시스


DP 마스터로써 CP 342-5DP
템을 네트워크 구성 도구를 사용하여 그래픽으로 나
CP 342-5DP가 DP 마스터이면, 이것을 스테이션
타낼 수 있습니다. 서브네트워크를 더블 클릭하는
의 하드웨어 구성 테이블에서 찾아 선택한 후 편집
등의 방법으로 네트워크 구성 도구를 엽니다. 보기
→ 개체 속성을 선택합니다. ‘모드’ 탭에서 ‘DP
→ DP 슬레이브/IO 디바이스를 선택하여 슬레이브를
마스터’ 를 설정합니다.
표시합니다. 그리고 네트워크 구성 도구를 사용하
여 DP 마스터 시스템을 만들 수 있습니다. 더 정확 ‘주소’ 탭은 CPU의 주소 영역에서 CP가 차지한
하게 말하자면, 노드를 프로피버스 서브네트워크에 사용자 데이터 주소를 보여 줍니다. 마스터 CPU 기
할당할 수 있습니다. 하드웨어 구성 도구로 스테이 준에서 CP 342-5DP는 모듈 시작 주소와 16 바이트
션을 연 후 파라미터를 지정합니다. 여기서도 역시 의 사용자 데이터를 가진 ‘아날로그 모듈’ 입니다.
지능형 DP 슬레이브를 DP 마스터 시스템에 통합하 DP 표준 슬레이브 또는 그것처럼 작동하는 DP
기 전에 먼저 설정부터 해야 합니다. S7 슬레이브만 CP 342-5DP에 DP 마스터로 연결
할 수 있습니다. 하드웨어 카탈로그의 ‘프로피버
DP 마스터 구성 스 DP’ 와 ‘DP 마스터로써 CP 342-5DP’ 항목
지금까지 SIMATIC 관리자를 사용하여 프로젝트 에서 적당한 DP 슬레이브를 찾을 수 있습니다. 원하
와 S7 스테이션을 만들었습니다. 이제 S7 스테이션 는 슬레이브 유형을 선택한 후 DP 마스터 시스템으
을 열고 마운팅 랙을 만듭니다(2.3 “스테이션 구 로 드래그합니다.
성” 참조). DP 마스터 모듈을 하드웨어 카탈로그로 DP 마스터로써 전송 메모리의 최대 길이는 240
부터 마운팅 랙의 하드웨어 구성 테이블로 드래그합 바이트입니다. 전송 메모리는 로드 가능한 블록 FC
니다. 이미 DP에 연결되어 있는 CPU를 선택하였을 1 DP_SEND와 FC 2 DP_RECV(표준 라이브러리의
것입니다. 아래 행에서 DP 마스터가 스테이션 창에 통신 블록 프로그램에 포함)를 사용하여 한꺼번에
서 DP 마스터 시스템에 연결되어 나타납니다(점선 전송됩니다.
흑백 막대).
데이터 일관성은 전체 전송 메모리에 적용됩니
DP 마스터 모듈을 설치할 때, 창에서 DP 마스터 다.
시스템이 할당될 프로피버스 서브네트워크와 DP 마
FC 3 DP_DIAG를 사용하여 연결된 DP 슬레이브
스터에 할당할 노드 주소를 선택합니다. 그리고 이
의 진단 데이터(예: 스테이션 목록, 특정 스테이션의
창에서 새로운 프로피버스 서브네트워크를 만들 수
진단 데이터)를 읽을 수 있습니다. FC 4 DP_CTRL
도 있습니다.
은 CP 342-5DP에 제어 작업을 전송합니다(예:
또한 ‘Mode’ 탭에서, DP 마스터에 적용할 DP SYNC/FREEZE 명령, CLEAR 명령, CP 342-5DP의
모드를 정의할 수 있습니다. 이 모드는 완전한 DP 작동 상태 설정).
마스터 시스템에 적용됩니다.
CPU 또는 CP 342-5DP를 선택한 경우, 보기 →
사용 가능한 DP 마스터 시스템이 없으면(개체 뒤 주소 개요를 선택하면 할당된 주소, 입력 또는 출력
에 숨어 있을 수도 있고, 가시 영역 밖에 있을 수도 목록을 볼 수 있습니다. 그리고 기존 주소 간격
있습니다), 구성 창에서 DP 마스터를 선택하고 삽입 (address gap)을 볼 수 있습니다.

305
20 메인 프로그램

컴팩트 DP 슬레이브의 구성 아래 서브윈도우에서는 ‘화살표’ 버튼을 토글


컴팩트 DP 슬레이브는 하드웨어 카탈로그의 ‘프 하면 마스터 시스템 또는 선택된 DP 슬레이브의 하
로피버스 DP’ 항목이나 ET200B와 같은 관련 서브 드웨어 구성 테이블을 보여 줍니다.
카탈로그에서 찾을 수 있습니다. 선택된 DP 슬레이
주소 패킹
브를 클릭한 후 DP 마스터 시스템을 나타내는 아이
2 개의 비트 채널을 가진 디지털 전자 모듈(예:
콘으로 드래그합니다.
ET200S, ET200pro)은 하드웨어 구성 테이블에서
이때 스테이션의 속성 시트가 나타나는데, 여기
처음에 한 바이트를 차지합니다. 모든 모듈을 구성
서 노드 주소와 모든 진단 주소를 설정할 수 있습니
한 후, ‘주소 패킹’ 버튼을 사용하여 선택한 모듈
다. 그 다음에 DP 슬레이브가 스테이션 창의 상단에
의 비트 채널 간의 간격을 제거할 수 있으므로 모듈
아이콘으로 나타나고, 하단에는 이 스테이션에 대
은 더 적은 주소를 차지합니다. 이때, 입력, 출력, 모
한 하드웨어 구성 테이블이 표시됩니다.
터 스타터용 주소 영역은 각각 따로 패킹됩니다.
스테이션 창의 상단에 있는 아이콘을 더블 클릭하 ‘패킹된’ 모듈의 다음과 같은 특별한 특징을 유
면 하나 이상의 탭이 있는 대화 상자가 열리는데, 여
념하시기 바랍니다.
기서 원하는 스테이션 속성을 설정합니다. 그 다음
Z 슬롯을 더 이상 할당할 수 없습니다. 왜냐하면,
에 아래 서브윈도우에서 입력/출력 주소를 볼 수 있
CPU가 이 모듈의 물리적 주소를 결정할 수 없기
습니다. 주소 줄을 더블 클릭하면 창이 나타나는데,
때문입니다.
여기서 해당 주소를 변경할 수 있습니다.
Z 이 모듈에 대한 상태 정보를 읽을 수 없습니다.
아래 서브윈도우에서는 ‘화살표’ 버튼을 토글
하면 마스터 시스템 또는 선택된 DP 슬레이브의 하 Z ‘패킹된’ 주소에 인터럽트를 할당할 수 없습니

드웨어 구성 테이블을 보여 줍니다. 다. 그러므로, 이 모듈에 대해 진단 주소가 할당


됩니다(하드웨어 구성 테이블에서 이탤릭체와
별표로 표시). 이 주소 아래에서 인터럽트 정보
모듈식 DP 슬레이브의 구성
를 얻을 수 있습니다.
모듈식 DP 슬레이브는 하드웨어 카탈로그의 ‘프
Z ‘주소 패킹’ 과 ‘모듈 인터럽트 삽입/제거’
로피버스 DP’ 항목 또는 ET200M과 같은 관련 서브
는 상호 배타적입니다.
카탈로그에서 찾을 수 있습니다.
선택된 인터페이스 모듈(기본 모듈)을 클릭한 후
통합 DP 인터페이스를 지능형 DP 슬레이브
DP 마스터 시스템을 나타내는 아이콘으로 드래그합 로 사용하여 CPU 구성
니다. 이때 스테이션의 속성 시트를 볼 수 있는데, 적절한 CPU를 사용하는 경우, 스테이션을 DP 마
여기서 노드 주소와 모든 진단 주소를 설정할 수 있 스터 스테이션 또는 DP 슬레이브 스테이션으로 파
습니다. 그 다음에 DP 슬레이브가 스테이션 창의 상 라미터화할 수 있습니다. 스테이션을 DP 슬레이브
단에 아이콘으로 나타나고, 하단에는 이 스테이션 로 DP 마스터 시스템에 연결하기 전에, 먼저 스테이
에 대한 하드웨어 구성 테이블이 표시됩니다. 션을 생성해야 합니다. 스테이션을 생성하는 과정
이제, 하드웨어 구성 테이블에서 하드웨어 카탈 은 ‘정상적인’ 스테이션의 경우와 동일합니다.
로그의 선택된 인터페이스 모듈 (!) 항목에 있는 모 SIMATIC 관리자를 사용하여 S7 스테이션을 프로젝
듈을 찾습니다. 해당 행을 더블 클릭하면 모듈의 속 트에 삽입한 후 하드웨어 개체를 엽니다. 하드웨어
성 시트가 열리고, 여기서 모듈의 파라미터를 지정 구성 도구에서 마운팅 랙을 창으로 드래그한 후 원
할 수 있습니다. 하는 모듈을 갖다놓습니다. CPU를 갖다놓는 것만
으로도 DP 슬레이브를 구성하는데 충분하며, 다른 모든 모듈은 나중에 추가할 수 있습니다.

306
20.4 분산 I/O를 통한 통신

그림 20.11 통합 DP 인터페이스를 사용하여 지능형 슬레이브의 전송 메모리 구성

CPU를 삽입할 때, 프로피버스 인터페이스의 속 주소 지정” 의 ‘지능형 DP 슬레이브의 전송 메모


성 시트가 나타납니다. 이때, DP 인터페이스에 서브 리’ 에 사용자 데이터 인터페이스에 대한 정보가 나
네트워크를 할당하고 주소를 지정해야 합니다. 프 와있습니다.
로젝트에 프로피버스 서브네트워크가 존재하지 않
전송 메모리의 크기와 구조는 CPU에 따라 다릅
으면, ‘신규’ 버튼으로 새로운 프로피버스 서브네
트워크를 만들 수 있습니다. 나중에 이 서브네트워 니다. 예를 들면, CPU 315-2DP에서 전체 전송 메

크에 지능형 슬레이브를 연결합니다. 모리를 따로 액세스할 수 있는 최대 32 개의 주소 영


역으로 나눌 수 있습니다. 이러한 주소 영역의 크기
DP 인터페이스를 선택한 다음 편집 → 개체 속성을 는 최대 32 바이트까지 가능합니다. 전체 전송 메모
선택하거나 인터페이스를 더블 클릭하여 해당 인터 리는 최대 244 개의 입력 주소와 최대 244 개의 출
페이스의 속성 시트를 열 수 있습니다. ‘모드’ 탭 력 주소를 가질 수 있습니다.
에서 ‘DP 슬레이브’ 를 선택합니다. 그러면, DP
슬레이브의 관점에서 ‘구성’ 탭에서 사용자 데이 여기서 정의된 주소는 슬레이브 CPU의 주소 볼
터 인터페이스를 구성할 수 있습니다. MS(마스터/ 륨에 있습니다. 이러한 주소는 DP 슬레이브 스테이
슬레이브 구성)를 모드로 선택하고, 슬레이브 CPU 션의 중앙 모듈 또는 분산 모듈의 주소와 중복되지
의 기준에서 전송 인터페이스의 구조와 주소를 정의 말아야 합니다. 주소 영역의 최하단 주소는 ‘모듈
합니다(그림 20.11 참조). 20.4.1 “프로피버스 DP 시작 주소’ 입니다.

307
20 메인 프로그램

슬레이브 CPU의 사용자 프로그램은 이 탭에서 IM 154-8 CPU인 경우에 전체 전송 메모리를 따


지정된 진단 주소를 통해 DP 마스터로부터 진단 정 로 액세스할 수 있는 총 32 개의 주소 영역으로 나눌
보를 얻습니다. 수 있습니다. 이러한 주소 영역의 크기는 최대 32 바
스테이션 → 저장 및 컴파일을 선택하여 지능형 DP 이트까지 가능합니다. 전체 전송 메모리는 최대 244
슬레이브의 구성을 종료합니다. 아래에서 지능형 개의 입력 주소와 최대 244 개의 출력 주소까지 가
DP 슬레이브를 DP 마스터 시스템에 연결하는 방법 질 수 있습니다.
에 대해 설명합니다. 로컬 CPU에서 정의된 주소는 ET200pro CPU의
주소 볼륨 안에 있습니다. 이러한 주소는 ET200pro
지능형 DP 슬레이브로 ET200pro의 구성 스테이션의 중앙 모듈 또는 분산 모듈의 주소와 중

ET200pro 스테이션을 구성하는 것은 S7-300 스 복되지 말아야 합니다. 주소 영역의 최하단 주소는

테이션을 구성하는 것과 매우 유사합니다. SIMATIC ‘모듈 시작 주소’ 입니다.

관리자에서 SIMATIC 300 스테이션을 프로젝트에 ET200pro 스테이션의 추가 구성은 고정 슬롯 주


삽입하고, 하드웨어 개체를 엽니다. 소 지정을 사용하는 S7-300 스테이션의 경우와 동
일한 방법으로 수행합니다. 사용자는 하드웨어 카
하드웨어 구성 도구에서, 하드웨어 카탈로그의
탈로그의 ‘IM154-8 CPU’ 아래에 있는 모듈만 조
‘프로피버스 DP’ 및 ‘ET200pro’ 항목에 있는
정할 수 있습니다.
IM154-8 CPU 개체를 빈 창으로 드래그하거나 더블
클릭합니다. 이더넷 인터페이스의 속성 시트에서 스테이션 → 저장 및 컴파일을 선택하여 지능형 DP
‘네트워크 연결 없음’ 으로 설정합니다. 슬레이브의 구성을 종료합니다. 아래에서 지능형
DP 슬레이브를 DP 마스터 시스템에 연결하는 방법
선택된 인터페이스 X1인 경우 편집 → 개체 속성을
에 대해 설명합니다.
선택하거나 MPI/DP 인터페이스를 더블 클릭하여
속성 창을 엽니다. ‘일반’ 탭에서 프로피버스를
인터페이스로 선택하고, 프로피버스 인터페이스의 지능형 DP 슬레이브로 IM 151/CPU의 구성
속성 창에서 스테이션 주소와 프로피버스 서브넷을 ET200S을 지능형 DP 슬레이브로 생성하려면, 먼
선택합니다. 프로젝트에 프로피버스 서브넷이 존재 저 SIMATIC 300 스테이션을 SIMATIC 관리자에서
하지 않으면, ‘신규’ 버튼으로 새로운 프로피버스 프로젝트 아래에 삽입하고 하드웨어 개체를 엽니
서브넷을 만들 수 있습니다. 나중에 이 서브넷에 지 다.
능형 슬레이브를 연결합니다. 그 다음에 하드웨어 카탈로그의 ‘프로피버스
‘모드’ 탭에서 ‘DP 슬레이브’ 를 선택합니다. DP’ 와 ‘ET200S’ 항목에 있는 IM151/CPU 개체
‘작동 모드’ 탭에 있는 주소의 의미와 ‘주소’ 탭 를 빈 창에 드래그하거나 더블 클릭하여 선택합니
에 있는 주소의 의미에 대해 20.4.1 “프로피버스 다.
DP 주소 지정” 의 “진단 주소” 에서 설명합니다. IM151/CPU에 MPI 인터페이스가 없으면, DP 인
이제, DP 슬레이브의 관점에서 ‘구성’ 탭에서 터페이스의 속성 창이 나타납니다. 여기서 노드 주
사용자 데이터 인터페이스를 구성할 수 있습니다. 소와 프로피버스 서브네트워크를 선택하거나, 서브
MS(마스터/슬레이브 구성)을 모드로 선택하고, 네트워크 하나를 생성하고 이것을 DP 인터페이스에
ET200pro CPU의 기준에서 전송 인터페이스의 주 할당합니다.
소 구조를 정의합니다(그림 20.11 참조). 사용자 데 그러면 SIMATIC 300 스테이션에서와 같은 하드
이터 인터페이스에 대한 정보는 20.4.1 “프로피버 웨어 구성 테이블을 볼 수 있습니다. 여기서
스 DP 주소 지정” 의 “지능형 DP 슬레이브의 전송 ET200S 스테이션의 지능형 IM 151이 CPU 대신에
메모리” 에서 볼 수 있습니다. 나타납니다.

308
20.4 분산 I/O를 통한 통신

IM 151 행을 더블 클릭하면 IM 속성 창이 열리고, 16 바이트). DP 슬레이브인 CP 342-5DP에 있는 전


DP 인터페이스를 더블 클릭하면 인터페이스의 속성 송 메모리의 크기는 최대 86 바이트이고, 마스터 시
창이 열립니다. 아직 하지 않은 경우, ‘일반’ 탭에 스템에 연결한 후 이 메모리를 서로 다른 주소 영역
서 노드 주소와 프로피버스 서브네트워크를 설정합 으로 나눌 수 있습니다.
니다. 즉, ‘인터페이스’ 상자에서 ‘프로피버스’
지능형 DP 슬레이브의 구성을 종료하려면 스테이
를 선택하고 ‘속성’ 버튼을 클릭합니다.
션 → 저장 및 컴파일을 선택합니다.
이때, DP 슬레이브의 기준에서 사용자 데이터 인
터페이스의 주소 범위를 설정합니다. IM 151/CPU
DP 마스터에 지능형 DP 슬레이브 연결
의 경우 사용자 데이터 영역의 최대 크기는 입력 32
이제 프로젝트를 생성하고 DP 마스터 스테이션
바이트, 출력 32 바이트입니다. 이 영역을 다른 데
과 지능형 DP 슬레이브(각각 적어도 DP 인터페이스
이터 일관성을 가진 8 개의 서브 영역으로 나눌 수
를 사용)를 구성하였을 것입니다. DP 마스터와 DP
있습니다. 슬레이브 프로그램은 진단 주소를 통해
슬레이브는 동일한 프로피버스 서브네트워크에서
DP 마스터로부터 진단 정보를 수신합니다.
구성해야 합니다.
ET200S 스테이션의 추가 구성은 고정 슬롯 주소
마스터 스테이션을 열면, DP 마스터 시스템(점선
지정을 사용하는 S7-300의 경우와 동일한 방법으
흑백 막대)이 있어야 합니다. 만일 없으면, 삽입 →
로 수행합니다. 사용자는 하드웨어 카탈로그의
마스터 시스템을 선택하여 생성합니다.
‘IM151/CPU’ 아래에 있는 모듈만 조정할 수 있습
니다. 하드웨어 카탈로그의 ‘프로피버스 DP’ 와 ‘구
성된 스테이션’ 항목에서 지능형 슬레이브를 나타
지능형 DP 슬레이브의 구성을 완료하려면 스테이
내는 개체를 볼 수 있습니다. ‘CPU 31x’ 또는
션 → 저장 및 컴파일을 선택합니다. 아래에서 지능형
‘CPU 41x’ 는 통합 DP 슬레이브를 가진 S7-300
DP 슬레이브를 DP 마스터 시스템에 통합하는 방법
또는 S7-400 스테이션을 표시하고, ‘ET200pro/
에 대해 설명합니다.
CPU’ 와 ‘ET200S/CPU’ 는 DP 슬레이브로 구성
된 스테이션을 표시하고, ‘S7-300 CP342-5 DP’
CP 342- 5DP를 지능형 슬레이브로 사용하
는 S7-300 스테이션의 구성 는 CP 342-5를 DP 슬레이브 인터페이스 모듈로 가
진 S7-300 스테이션을 표시합니다. 원하는 슬레이
SIMATIC 관리자에서 S7-300 스테이션을 삽입하
브 유형을 선택한 후 DP 마스터 시스템으로 드래그
는 경우, 하드웨어 개체를 열고 ‘정상적인’ S7-
합니다.
300 스테이션을 구성합니다. 그리고 하드웨어 구성
테이블에서 CP 342-5DP 통신 모듈을 조정합니다.
DP 슬레이브로써 CPU, ET200pro 또는
스테이션을 삽입할 때, DP 인터페이스의 속성 시 ET200S
트가 나타납니다. 여기서 나중에 지능형 DP 슬레이 DP 슬레이브를 DP 마스터 시스템으로 드래그하
브를 연결해야 하는 서브네트워크가 DP 인터페이스 거나 더블 클릭하면 속성 시트가 열립니다. 이 프로
에 할당해야 하고, 노드 주소도 할당해야 합니다. 피버스 서브네트워크에 이미 구성되어 있는 슬레이
속성 창을 열려면, CP 342-5DP를 선택한 후 편 브는 ‘연결’ 탭에 수록되어 있습니다. 원하는 슬
집 → 개체 속성을 선택하거나 CP 342-5예를 더블 클 레이브를 선택한 후 ‘연결’ 버튼을 클릭합니다.
릭합니다. ‘모드’ 탭에서 ‘DP 슬레이브’ 를 선 이로써 동일한 대화 상자의 하단에서 연결이 활성화
택합니다. 됩니다.

‘주소’ 탭은 슬레이브 CPU의 기준에서 사용자 ‘일반’ 탭에서 마스터 스테이션의 관점으로 DP
데이터 인터페이스를 표시합니다(시작 주소와 길이 슬레이브의 진단 주소를 설정합니다.

309
20 메인 프로그램

그 다음에 ‘구성’ 탭에서 DP 마스터의 관점으 전송 메모리를 나눌 때, 바이트 0부터 간격을 두


로 사용자 데이터 인터페이스의 주소를 설정합니 지 않고 주소 영역을 함께 할당합니다. 로드 가능한
다. 마스터의 출력 주소는 슬레이브의 입력 주소이 블록인 FC 1 DP_SEND와 FC 2 DP_RECV(표준 라
고, 마스터의 입력 주소는 슬레이브의 출력 주소입 이브러리의 통신 블록 프로그램 아래에 포함)를 사
니다. 20.4.1 “프로피버스 DP 주소 지정” 의 ‘지 용하여 슬레이브 CPU에서 할당된 전체 전송 메모리
능형 DP 슬레이브의 전송 메모리’ 항목에 사용자 를 액세스할 수 있습니다.
데이터 인터페이스에 대한 추가 정보가 나와있습니
데이터 일관성은 전체 전송 메모리에 적용됩니
다.
다.

DP 슬레이브로써 CP 342-5DP ‘일반’ 탭에서 마스터 스테이션의 관점에서 DP


슬레이브의 진단 주소를 설정합니다. 진단 데이터
DP 슬레이브를 DP 마스터 시스템으로 드래그하
는 마스터 스테이션에서 FC 3 DP_DIAG로 읽습니
거나 더블 클릭하여 속성 시트를 엽니다. 프로피버
다.
스 서브네트워크에 이미 구성되어 있는 슬레이브는
‘연결’ 탭에 수록되어 있습니다. 원하는 슬레이브 20.4.1 “프로피버스 DP 주소 지정” 의 ‘지능형
를 선택한 후 ‘연결’ 버튼을 클릭합니다. 그러면, DP 슬레이브의 전송 메모리’ 항목에 사용자 데이터
동일한 대화 상자 하단에 활성화된 연결이 나타납니 인터페이스에 대한 추가 정보가 나와있습니다.
다.

DP 슬레이브를 선택하면 그 하드웨어 구성 테이 DP/DP 커플러의 구성


블이 스테이션 창의 하단에 나타납니다. 이제, 다음 DP/DP 커플러는 두 개의 프로피버스 서브넷을
과 같이 전송 메모리를 구성합니다. 하드웨어 카탈 연결합니다. DP/DP 커플러는 두 개의 서브넷 각각
로그의 ‘사용한 CP’ 아래에 있는 ‘유니버설 하 에서 모듈식 DP 슬레이브로 구성됩니다.
위 모듈’ 을 선택한 후 구성 테이블의 행으로 드래
먼저 선행 조건으로 DP 마스터 시스템을 가진 두
그하거나, 행을 선택한 후 ‘유니버설 하위 모듈’
개의 서브넷 모두 구성해야 합니다. 먼저, DP 마스
을 더블 클릭합니다. 전송 메모리에서 일관성 있는
터를 가진 스테이션 중의 하나를 엽니다. 하드웨어
각 개별 주소 영역에 하나의 유니버설 하위 모듈을
카탈로그의 ‘프로피버스 DP’ 와 ‘네트워크 구
둘 수 있으며, 최대 32 개의 유니버설 하위 모듈을
성요소’ 항목에서 DP/DP 커플러, 릴리즈 2를 찾을
둘 수 있습니다.
수 있는데, 이를 마우스로 DP 마스터 시스템으로 드
주소 영역의 속성을 정의할 창을 열려면, 유니버 래그합니다.
설 하위 모듈을 선택한 후 편집 → 개체 속성을 선택하
프로피버스 인터페이스의 속성 시트는 사용자가
거나 테이블에서 행을 더블 클릭합니다 (스페이스,
노드 주소를 설정한 곳에 나타납니다. DP/DP 커플
입력이나 출력 또는 둘 다). 그리고 영역의 시작 주
러의 개체 속성에 있는 ‘파라미터' 탭에서 진단 주
소와 길이를 결정합니다.
소와 추가 파라미터를 설정합니다.
여기서 정의된 주소는 마스터 CPU의 주소 영역
그러면, 선택한 DP/DP 커플러에서 전송 메모리
에 있습니다. 한 영역의 최대 크기는 64 바이트이
에 대한 하드웨어 구성 테이블이 나타납니다. 그 다
고, 전송 영역의 전체 최대 크기는 86 바이트입니
음, 하드웨어 카탈로그의 DP/DP 커플러 항목에서
다.
원하는 모듈을 하드웨어 구성 테이블로 ‘연결’ 합
CP 342-5DP가 DP 마스터이면, CP 342-5DP가 니다. 이때, 간격 없이 슬롯 1에서 시작해야 합니다.
전체 전송 영역을 통째 전송하므로 전송 메모리의 그러면, 유니버설 모듈을 원하는 입력과 출력 개수
구조화 작업을 생략할 수 있습니다. 로 설정할 수 있습니다. 모듈 속성에서 지정한 사용

310
20.4 분산 I/O를 통한 통신

자 데이터 주소는 개방된 DP 마스터 CPU의 주소 영 슬레이브 속성 창을 열려면, DP 슬레이브를 선택


역 안에 있습니다. 한 후 편집 → 개체 속성을 선택하거나 DP 슬레이브
를 더블 클릭합니다. ‘파라미터화’ 탭에서, AS-i
동일한 방법으로 DP/DP 커플러의 두 번째 부분
슬레이브의 파라미터를 각 슬레이브당 4 비트로 설
을 구성합니다. 두 번째 부분의 전송 메모리의 구조
정합니다.
는 첫 번째 부분과 일치해야 합니다. 첫 번째 커플러
의 입력은 두 번째 커플러의 출력이고, 두 번째의 출
DP/AS-i Link Advanced
력은 첫 번째의 입력임에 유의하십시오. DP/DP 커
하드웨어 카달로그에서 DP/AS-i Link
플러의 두 부분의 주소는 해당 마스터 CPU의 주소
Advanced(예: 더블 마스터 6GK1 415-2BA20)를
지정에 따르고, 서로 다를 수 있습니다.
프로피버스 DP 마스터 시스템의 막대로 ‘드래그’
합니다. 이때 나타난 창에서 프로피버스 인터페이
DP/AS-i 링크의 구성 스의 속성을 설정합니다. 그러면, 두 개의 마스터에
DP/AS-I 인터페이스를 모듈식 DP 슬레이브처럼 대한 AS-i 인터페이스와 AS-i 슬레이브의 하드웨어
구성할 수 있습니다. 하드웨어 카탈로그의 ‘프로 구성 테이블이 나타납니다.
피버스 DP’ 와 ‘DP/AS-i’ 항목에서 DP/AS-i link
이제, 사용자 프로그램에서 AS-i 슬레이브에 액
20과 같이 DP 마스터 시스템에 드래그할 수 있는 모
세스하려는 주소 영역을 설정합니다. 하드웨어 구
듈을 찾을 수 있습니다. 이때, DP 부분의 속성을 설
성 테이블에서 선택한 AS-I 마스터 인터페이스에서
정하고, 속성 시트 또는 구성 테이블의 링크에 따라
편집→ 개체 속성을 선택하거나, 마스터 행을 더블 클
AS-i 슬레이브를 구성합니다.
릭하여 속성 대화 상자를 엽니다. ‘디지털 주소’
AS-i 슬레이브를 가진 AS-i 마스터 시스템은 하 탭에서 시작 주소와 입출력용 예비 영역 길이를 설
드웨어 구성에서 서브넷으로 나타나지 않습니다. 정합니다. 이 탭은 ‘패킹’ 과 ‘정렬’ 버튼을 포
함하는데, 이 버튼으로 AS-i 슬레이브를 구성한 후
DP/AS-i Link 20 주소 할당을 최적화할 수 있습니다.
하드웨어 카탈로그에서 DP/AS-i Link 20을 프로 링크 아래에 있는 AS-i 슬레이브용 자리 표시자
피버스 DP 마스터 시스템의 막대로 ‘드래그’ 합 를 하드웨어 카탈로그에서 하드웨어 구성 테이블로
니다. 이때 나타난 창에서 먼저 사전 설정 구성(16 ‘드래그’ 합니다. 모든 예정된 AS-슬레이브에 대
또는 20 바이트)을 정의한 후 노드 주소를 정의합니 해 동일한 과정을 반복합니다. 구성 테이블에서 선
다. 택한 AS-i 슬레이브에서 편집→ 개체 속성을 선택하
DP/AS-i Link 20에서, 셋포인트 구성으로 16 바 거나 슬레이브 행을 더블 클릭하여 속성 대화 상자
이트의 입력/출력을 정의하고 제어 명령용으로 4 바 를 엽니다. ‘구성’ 탭에서 슬레이브 속성을 설정
이트를 추가로 정의할 수 있습니다. 이 경우에 하드 합니다. ‘선택’ 을 클릭하면 하드웨어 구성 도구
웨어 구성 도구 창의 하단에서 프로세스 이미지의 에서 알려진 모든 AS-i 슬레이브를 볼 수 있습니다(
주소에 16 바이트의 사용자 데이터를 제공하고, 예 그림 20.12 참조).
컨대 RK512의 주소에 4 바이트의 명령어를 제공합
니다.
20.4.3 프로피버스 DP용 특별 함수
적절한 CPU를 사용하는 경우, 하드웨어 구성 도
구에서 제시하는 주소를 변경하고 서브프로세스 이 GSD 파일
미지를 설정할 창을 열려면 DP 슬레이브를 선택한 모듈 카탈로그에 포함되지 않은 DP 슬레이브를
후 편집 → 개체 속성을 선택하거나 DP 슬레이브를 더 ‘사후에 설치’ 할 수 있습니다. 이러한 목적을 위해
블 클릭합니다. 슬레이브에 맞는 형식 파일(GSD 파일, General

311
20 메인 프로그램

그림 20.12 DP/AS-i Link Advanced인 경우 AS-i 슬레이브의 속성 및 선택 대화 상자

Station Description, 디바이스 데이터베이스 파일) SYNC/FREEZE 그룹 구성


이 필요합니다. GSD 버전 3 이상에서, GSD 파일이 SYNC 제어 명령을 사용하면 그룹으로 결합된 DP
있는 DP 슬레이브는 DPV1 기능을 지원합니다. 하 슬레이브가 출력 상태를 동시에 출력할 수 있습니
드웨어 구성 도구에서 옵션 → GSD 파일 설치를 선택 다. FREEZE 제어 명령을 사용하면 그룹으로 결합
하고, 나타나는 창에서 GSD 파일 또는 다른 STEP 된 DP 슬레이브가 현재 입력 신호 상태를 동시에
7 프로젝트의 디렉토리를 지정합니다. STEP 7은 ‘고정(freeze)’ 시키므로, DP 마스터가 주기적으로
이 신호 상태를 가져올 수 있습니다. UNSYNC와
GSD 파일을 적용하고 하드웨어 카탈로그의 ‘프로
UNFREEZE 제어 명령은 각각 SYNC 효과와
피버스 DP’ 와 ‘추가 필드 디바이스’ 항목에 있
FREEZE 효과를 취소합니다.
는 슬레이브를 표시합니다.
DP 마스터와 DP 슬레이브는 각각 관련된 기능
STEP 7은 GSD 파일을 을 가지고 있어야 합니다. 슬레이브의 개체 속성에
...₩Step7₩S7DATA₩GSD 디렉토리에 저장합니 서 지원되는 명령을 볼 수 있습니다. DP 슬레이브
다. 이후에 설치하거나 불러올 때 삭제된 GSD 파일 를 선택한 후 ‘일반’ 탭에서 ‘SYNC/FREEZE
은 ...₩GSD₩BKPx 디렉토리에 저장됩니다. GSD 기능’ 항목에 있는 편집 → 개체 속성 을 선택합니다.
파일은 여기에서, 옵션 → GSD 파일 설치를 선택하여 DP 마스터 시스템마다 SYNC 명령이나 FREEZE
복구할 수 있습니다. 명령 또는 둘 모두를 실행할 수 있는 SYNC/FREEZE

312
20.4 분산 I/O를 통한 통신

그림 20.13 SYNC/FREEZE 그룹 구성

그룹을 최대 8 개까지 구성할 수 있습니다. 어떠한 여기서 노드 번호와 함께 나열된 각 DP 슬레이브


DP 슬레이브도 그룹에 할당할 수 있습니다. 특정 버 를 선택한 다음 각각이 소속된 그룹을 선택합니다.
전의 CP 342-5DP에서 하나의 DP 슬레이브는 최대 DP 슬레이브가 FREEZE와 같은 특정한 명령을 실행
8 개의 그룹에 할당할 수 있습니다. 할 수 없다면, 그 명령을 포함하는 모든 그룹을 선택
할 수 없습니다. OK를 눌러서 SYNC/FREEZE 그룹
SFC 11 DPSYC_FR를 호출하면, 사용자 프로그
의 구성을 종료합니다.
램이 그룹에 대해 명령을 내리게 됩니다
동일한 길이(등거리)를 가진 버스 사이클을 구성
(20.4.7 “분산 I/O용 시스템 블록” 참조). 이때, DP
할 때 그룹 7과 8은 특별한 의미를 가짐에 유의하십
마스터는 그 명령을 지정된 그룹에 속한 모든 DP 슬
시오.
레이브에 동시에 보냅니다.

DP 마스터 시스템을 구성한 후 SYNC/FREEZE 프로피버스 PA 구성


그룹을 구성합니다. 이때, 모든 DP 슬레이브는 DP 프로피버스 PA 마스터 시스템을 구성하고 PA 필
마스터 시스템 안에 존재해야 합니다. DP 마스터 시 드 디바이스를 파라미터화할 때, 하드웨어 구성 도
스템(점선 흑백 막대)을 선택한 후 편집 → 개체 속성 구(STEP 7 V5.1 SP3 이상)와 SIMATIC PDM 옵션
을 선택합니다. 이때 나타나는 창에서 먼저 ‘그룹 소프트웨어(이전 버전의 STEP 7)를 사용합니다 하
속성’ 탭에서 실행할 그룹 명령을 구성한 후(그 드웨어 구성 도구로 다음과 같이 DP/PA 링크를 통
림 20.13 참조), ‘그룹 할당’ 탭에서 DP 슬레이브 해 DP 마스터 시스템에 연결할 수 있습니다. 하드웨
를 개별 그룹에 할당합니다. 어 카탈로그의 ‘프로피버스 DP’ 와 ‘DP/PA

313
20 메인 프로그램

Link’ 항목에서 IM 157 인터페이스 모듈을 DP 마스 할 수 있습니다. 예를 들면, 마스터 시스템 1의 마스


터 시스템으로 드래그합니다. DP 슬레이브의 경우, 터는 위와 같은 방법으로 마스터 시스템 2에 있는 슬
PA 마스터 시스템이 자체의 프로피버스 서브네트워 레이브의 데이터를 모니터링할 수 있습니다.
크(45.45kbits/s)에서 동시에 만들어지고 점선 흑백
막대로 표시됩니다. 일정한 버스 사이클 시간과 등시성 모드의
DP/PA 커플러의 경우는 버스 시스템 사이에서 구성
수정되지 않고 해석되지 않은 데이터를 전송하므로
등거리 모드
파라미터화하지 않습니다. PA 필드 디바이스의 주
일반적으로 DP 마스터는 할당된 DP 슬레이브를
소는 DP 마스터에서 지정합니다. 이 디바이스들은
주기적으로 제어합니다. 프로그래밍 기기가 프로피
GSD 파일을 사용해 DP 표준 슬레이브로 STEP 7의
버스 서브네트워크를 통해 수정 함수를 수행할 때와
하드웨어 구성에 포함시킬 수 있습니다. 그 다음에
같이 S7 통신을 사용하면, 시간 간격이 다양하게 바
하드웨어 카탈로그의 ‘프로피버스 DP’ 와 ‘기
뀔 수 있습니다. 예를 들면, 출력이 DP 슬레이브를
타 필드 디바이스’ 항목에서 PA 필드 디바이스를
통해 일정한 간격으로 수정되면 적절한 DP 마스터
찾을 수 있습니다.
를 사용할 경우 일정한 버스 사이클을 설정할 수 있
습니다. 이러한 목적을 위해 DP 마스터는 프로피버
직접 데이터 교환 구성 스 서브네트워크에서 유일한 클래스 1 마스터이어
(슬레이브간 통신)
야 합니다. 일정한 버스 사이클 시간 동작은 버스 프
DP 마스터 시스템에서 DP 마스터는 그에 할당된
로필이 ‘DP’ 와 ‘사용자 정의’ 일 때 가능합니
슬레이브를 배타적으로 제어합니다. 적절한 설비를
다. 프로피버스 서브넷은 프로젝트 전반에 적용되
갖춘 스테이션에서, 다른 노드( ‘수신자' 또는 ‘가
어서는 안되며, 연결된 H 시스템 또는 CiR(실행 모
입자’ 라고 하는 마스터 또는 지능형 슬레이브)는
드에서 하드웨어 구성) 개체도 없어야 합니다.
프로피버스 서브네트워크를 모니터링하여 DP 슬레
이브( ‘전송자’ 또는 ‘발행자’ )가 ‘자신의’ 일정한 버스 사이클 시간을 구성한 후 추가로
마스터에게 보내는 입력 데이터를 알 수 있습니다. SYNC/FREEZE 그룹을 구성하는 경우 다음에 유의
이러한 직접 데이터 교환은 ‘래터럴 통신(lateral 하십시오.
communication)’ 이라고도 합니다. 원칙적으로 특 Z 그룹 7에 속하는 DP 슬레이브인 경우, DP 마스
정 버전부터 모든 DP 슬레이브는 직접 데이터 교환 터는 모든 버스 사이클에서 SYNC/FREEZE 명령
시에 전송자 역할을 수행할 수 있습니다. 을 자동으로 개시합니다. 그러나, 사용자 프로그
프로피버스 서브네트워크에 있는 모든 스테이션 램마다 개시하는 것은 금지됩니다.
이 연결되었을 때, 하드웨어 구성 도구로 DP 슬레이 Z 그룹 8은 일정한 버스 사이클 시간 신호에 사용
브(수신자)의 속성 창에서 직접 데이터 교환을 구성 하고 DP 슬레이브에서는 사용할 수 없습니다.
할 수 있습니다. 수신자 스테이션을 열고 DP 인터페 그룹 8에 대해 이미 슬레이브를 구성했다면, 일
이스를 선택한 후 편집 → 개체 속성을 선택합니다. 정한 버스 사이클 시간을 구성할 수 없습니다.
‘구성’ 탭은 DP 슬레이브와 DP 마스터 간의 전송
인터페이스를 포함합니다. 여기서 ‘신규’ 버튼을 등시성 모드
클릭한 후, 나타나는 구성 창에서 DX 모드(직접 데 프로그램이 프로피버스 DP 사이클과 동시에 실
이터 교환)를 설정합니다. 그리고 동일한 창에서 DP 행되면 등시성 모드라고 합니다. 일정한 버스 사이
파트너(전송자)의 파라미터를 정의합니다. 클 시간과 연계하여, 등시성 모드는 분산 신호 획득,
또한 동일한 프로피버스 서브네트워크에서 두 개 프로피버스를 통한 신호 전송, 그리고 프로세스 이
의 DP 마스터 시스템 간에 직접 데이터 교환을 사용 미지 업데이트 등의 프로그램 실행을 포함하는 I/O

314
20.4 분산 I/O를 통한 통신

姷柢昷͑微姢汞͑汗埻͑柢儊

微姎͑瘶惾嘖櫖昢͑ 微姎͑瘶惾嘖͑犢崫
時昢͑柦笾͑懆凃

그림 20.14 등시성 모드의 응답 시간과 일정한 버스 사이클 시간

에 대해 동일한 길이의 재생 가능한 응답 시간을 생 레이브인 경우, 백플레인 버스에서 걸리는 전송 시


성합니다. 등시성 모드로 실행하는 사용자 프로그 간도 추가됩니다. 등시성 모드인 경우에 응답 시간
램은 조직 블록 OB 61에서 OB 64까지에 존재합니 은 Ti, 등거리 시간, To를 합한 시간입니다.
다. 시스템 함수 SFC 126 SYNC_PI와 SFC 127 그에 따라 설계한 DP 슬레이브의 경우 중복 등시
SYNC_PO는 등시성 모드로 프로세스 이미지를 업 성 모드 덕분에 응답 시간을 줄일 수 있습니다. 여기
데이트할 때 사용할 수 있습니다(21.8 “동기 사이 에는 입력과 출력 신호 업데이트의 중복이 포함됩니
클 인터럽트” 참조). 다(Ti와 To의 중복). 이 경우에 ‘등거리’ 탭에서
그림 20.14에는 등시성 모드의 타이머가 나와있 ‘모든 슬레이브에 대해 Ti와 To 시간을 동일하게’
습니다. Ti는 프로세스 값을 읽는데 걸리는 시간입 확인란의 선택을 취소해야 하고, 관련 모듈에 각각
니다. 여기에는 입력 모듈 또는 전자 모듈 시간을 입력해야 합니다. 등시성 모듈이 입력과 출
(electronics modules)의 실행 시간이 포함되고, 모 력을 모두 포함하는 경우, Ti와 To는 중복시킬 수 없
듈식 DP 슬레이브인 경우에 백플레인 버스의 전송 습니다.
시간을 포함합니다. Ti의 끝에서 글로벌 제어 명령
을 사용하는 전송에 대한 입력 정보를 사용할 수 있 등시성 모드의 구성
습니다. 그 다음에 등거리 시간이 시작됩니다. 등거 등시성 모드를 구성하기 위한 사전 조건은 등거리
리 시간은 두 개의 글로벌 제어 명령 간의 시간이고, 동작과 관련 DP 구성요소가 해당 기능을 갖추는 것
등시성 인터럽트 OB의 실행뿐만 아니라 서브넷으 입니다. 적절한 모듈로 DP 마스터 시스템(입력/출
로 전송도 포함합니다. 이 OB의 실행 완료부터 다음 력 모듈을 가진 ET200S 또는 ET200M DP 인터페이
글로벌 제어 명령까지 사이에 메인 프로그램을 실행 스 및 통합 DP 인터페이스를 가진 CPU)을 구성한
할 시간이 있어야 합니다. 후에, ‘동기 사이클 인터럽트’ 탭에 있는 CPU 속

To는 프로세스 값을 출력하는데 걸리는 시간입니 성 항목에서 우선 순위, DP 마스터 시스템, 부분 프


다. 이 시간은 글로벌 제어 명령으로 시작되고, 출력 로세스 이미지를 조직 블록에 할당합니다.
모듈 또는 전자 모듈에서 처리 시간뿐만 아니라 서 일정한 버스 사이클 시간과 등시성 모드를 설정하
브넷에서의 전송 시간도 포함합니다. 모듈식 DP 슬 려면, CPU 항목에서 DP 마스터 인터페이스를 선택

315
20 메인 프로그램

그림 20.15 등시성 모드: DP 슬레이브 속성에 대한 개요

한 후 편집 → 개체 속성을 선택합니다. 이때 나타나 니다. 여기서 등시성 모드에 관련된 모듈 또는 전자


는 대화 상자에서 ‘일반’ 탭에 있는 ‘속성’ 버 모듈을 선택합니다.
튼을 클릭합니다. 프로피버스 인터페이스의 속성 Ti와 To를 업데이트하려면, DP 마스터 시스템의
창에서 ‘네트워크 설정’ 탭을 선택합니다. 일정한 속성을 선택한 후 서브넷 속성을 선택하고 ‘네트
버스 사이클 시간은 버스 프로필 ‘DP’ 와 ‘사용 워크 설정’ 탭에서 ‘옵션’ 버튼을 클릭합니다.
자 정의’ 항목으로만 설정할 수 있음에 유의하십시 ‘재계산’ 버튼이 활성화되면, STEP 7은 등시성 모
오. ‘옵션’ 버튼을 클릭하고, 이때 나타나는 옵션 드에 관련된 모든 시간을 업데이트합니다. 사용자
창에서 ‘일정한 버스 사이클 시간 활성화’ 선택 는 표시된 등거리 시간을 수정할 수 있지만 최소 시
상자를 클릭합니다. 등시성 모드에서 추가적으로 Ti 간 미만으로 고칠 수는 없습니다. ‘상세 정보’ 버
와 To 시간을 지정합니다. ‘모든 슬레이브에 대해 튼을 누르면 등거리 시간의 개별 부분이 표시됩니
동일한 Ti 및 To 시간’ 을 선택하거나 슬레이브 속 다. 프로피버스 서브넷에 직접 연결된 프로그래밍
성에서 개별적으로 시간을 설정합니다. 장비가 많을수록, 그리고 DP 마스터 시스템에 지능
형 DP 슬레이브가 많을수록 등거리 시간은 증가한
등시성 모드에 참여하는 각 모듈은 CPU 속성에
다는 것에 유의하십시오.
서 등시성 조직 블록에 할당된 부분 프로세스 이미
편집 →등시성 모드를 선택하면 등시성 모드에 관
지에 주소를 가져야 합니다. ‘주소' 탭에 있는 속
련된 모든 구성요소와 관련 파라미터에 대한 개요가
성 대화 상자에서 모듈에 대한 부분 프로세스 이미
표시됩니다(그림 20.15 참조). ‘네트워크 설정’
지를 설정합니다.
과 ‘옵션’ 에서 ‘모든 슬레이브에 대해 동일한
등시성 모듈은 DP 인터페이스 모듈에 인식되어 Ti 및 To 시간’ 확인란을 비활성화하였다면 각 슬레
야 합니다. DP 슬레이브의 속성 창에서, ‘등시성 이브에 대해 개별적으로 시간을 설정할 수 있으며,
모드’ 탭에 있는 ‘DP 슬레이브를 일정한 버스 사 이것은 등시성 모드를 중복시키기 위한 사전 조건입
이클 시간 DP 사이클과 동기화’ 옵션을 활성화시킵 니다. ‘등시성 모드’ 창에서 DP 슬레이브를 선택

316
20.4 분산 I/O를 통한 통신

CPU 317-2PN/DP

Slot 2 CPU Diagnostic address


8191* (italic with star)
Slot 2 X1 MPI/DP interface
IP address
Slot 2 X2 PN IO interface 8190* (4 bytes)
IP address 192.168.0.1 Device name
Device name PN-IO (symbol )
IO controller 8188*

Slot 2 X2 P1 Port 1 8189*

斶櫋殯͑決塚嘽汊͑決殯穞垚͑΁΃΀ͷͺͿͶ΅͑ͺ΀͑柢枪癢

Node address “virtual” slot


(part of IP address) (not physically present)
枲嵵͑͡汆͑洊熺͑枪癒決晞汊͑
IO device (ET 200M) 喞痆嗋城埪͟
眲汆͑汾瘶碞決枪沋城埪͟
0.2 Slot 0 Station 8185* ΁Ο汆͑磲瞾沋城埪͟
IP address 192.168.0.2
Device number
Device name IM153-4PN (station number)
Device number 1

Slot 0 X1 PN IO interface 8184*

Slot 0 X1 P1 Port 1 8187* Logical address


Geographical (user data address)
address Slot 0 X1 P2 Port 2 8186*
(slot)
Slot 1 Digital input DI IB 56

Slot 2 Digital output DO QB 32

Slot 3 ... ...

그림 20.16 프로피넷 IO 시스템의 주소

합니다. ‘파라미터 편집’ 버튼을 누르면 등시성 된 DP 마스터 시스템에 있는 DP 슬레이브의 주소와
모드와 관련된 모듈과 개별 업데이트 시간을 입력할 도 중복되지 않아야 합니다.
수 있는 대화 상자가 나타납니다.
산업용 이더넷에서 작동하는 각 노드는 IP 주소를
가집니다. IP 주소는 IO 컨트롤러를 구성하는 동안
할당됩니다. IO 디바이스의 IP 주소는 IO 컨트롤러
20.4.4 프로피넷 IO 주소 지정
의 IP 주소에서 파생됩니다. 그리고, IO 장치에는 디
중앙 모듈이 CPU에 할당되고 CPU에 의해 제어 바이스명, 디바이스 번호(노드 번호), 물리적 주소(
되는 것과 유사한 방법으로, 프로피넷 IO의 분산 모 슬롯), 그리고 최소한 한 개의 진단 주소가 지정됩니
듈(스테이션, IO 디바이스)은 IO 컨트롤러에 할당됩 다 (그림 20.16 참조).
니다. IO 컨트롤러와 해당 모든 IO 장치를 통틀어 프
로피넷 IO 시스템이라고 합니다.
MAC 주소
중앙 모듈과 마찬가지로, IO 디바이스는 CPU의 MAC 주소는 글로벌하게 고유한 디바이스에 할당
I/O 영역( ‘논리 주소 영역’ )의 주소를 차지합니 된 주소입니다. MAC 주소는 공급업체를 식별하기
다. IO 디바이스의 주소는 IO 컨트롤러에게 ‘투명’ 위한 3 바이트와 디바이스를 식별하기 위한 3 바이
합니다. CPU가 IO 디바이스의 주소를 ‘본다’ 는 트로 구성됩니다. MAC 주소는 보통 디바이스에 인
것은 이들 주소가 중앙 모듈의 주소와 중복되지 않 쇄되고, 공장에서 이미 할당되지 않았다면 구성 과
아야 한다는 것을 의미합니다. 심지어, CPU에 할당 정 동안 디바이스에 할당됩니다.

317
20 메인 프로그램

템의 속성에서 ‘IO/디바이스/컨트롤러에 이름 사
용’ 을 선택합니다.

디바이스명에 부가하여, 하드웨어 구성 도구는


각 IO 디바이스에 디바이스 번호도 할당하는데, 이
번호는 IP 주소와 무관하고 변경할 수 있습니다. 이
디바이스 번호(스테이션 번호)를 사용하여 사용자
프로그램에서 IO 디바이스의 주소를 지정할 수 있습
昢挒嘽͑渂暒垚͑ͺ΁͑渂暒櫖昢͑殂濃求嵢͑洛崲夞彶͑͝ 니다(예: 시스템 블록의 실제 파라미터로).
ͺ΁͑渂暒歆͑昢挒嘽͑廎枪畲櫖͑ͲͿ͵͑穮朞庂͑洇殯穞櫲͑
旣昷夯城埪͟
물리적 주소
그림 20.17 IP 주소 구조에 대한 예 물리적 주소는 모듈 슬롯을 구별합니다. 중앙 모
듈의 물리적 주소에는 랙과 슬롯의 번호가 포함됩니
IP 주소 다. 프로피넷 IO인 경우, 물리적 주소에는 프로피넷
TCP/IP 프로토콜을 사용하는 산업용 이더넷 서브 IO 시스템의 번호, 스테이션 번호, 슬롯 번호, 그리
네트워크의 각 노드에는 IP 주소가 필요합니다. IP 고 가능하면 서브슬롯 번호가 포함됩니다.
주소는 서브네트워크에서 고유해야 합니다. IP 주소 물리적으로 존재하지 않는 ‘가상’ 슬롯 0은 IO
는 프로피넷 IO 시스템의 노드에 대해 IO 컨트롤러 디바이스를 나타냅니다. 슬롯 1부터는 사용자 데이
에 한번 할당됩니다. 이에 따라, 하드웨어 구성 도구 터와 진단 데이터입니다. 시스템 함수 SFC 70
는 IP 주소를 IO 디바이스에 올림차순으로 할당합니 GEO_LOG와 SFC 71 LOG_GEO는 물리적 주소를
다. 논리 주소로 변환할 수 있고, 그 반대도 가능합니다.
IP 주소의 길이는 4 바이트이고, 각 바이트는 점
으로 구분됩니다. 각 바이트는 0에서 255까지의 십 논리 주소, 모듈 시작 주소
진수로 표시됩니다. 스테이션의 사용자 데이터에 액세스하려면 논리
IP 주소는 서브네트워크와 노드의 주소를 포함합 주소를 사용합니다. 사용자 데이터의 각 바이트는
니다. 서브네트워크 마스크는 IP 주소에서 네트워크 논리 주소로 분명하게 구별됩니다. 논리 주소는 절
주소 부분을 정의합니다. 서브네트워크 마스크는 IP 대 주소에 해당하고, 심볼(이름)이 할당되는 심볼 주
주소와 같이 0 또는 255의 값을 가지는 4 바이트로 소 지정 방식이므로 읽기가 더 용이합니다.
구성됩니다. 서브넷 마스크에서 255 값을 가진 바이 모듈 또는 스테이션에서 최소 논리 주소는 모듈
트는 서브네트워크 주소를 정의하고, 0의 값을 가진 시작 주소입니다(1.4 “모듈 주소” 참조).
바이트는 노드 주소를 정의합니다(그림 20.17 참
조).
진단 주소
진단 데이터를 제공할 수 있고 자체 내에 사용자
디바이스명, 디바이스 번호 데이터 주소가 없는 모듈과 스테이션은 진단 주소로
구성하는 과정 동안, IO 컨트롤러와 각 IO 디바이 구별합니다. 진단 주소는 논리 주소 볼륨에서 주변
스에 디바이스명을 지정하는데, 디바이스명은 127 입력장치의 1 바이트를 차지합니다. 기본 설정에
문자를 초과할 수 없고 문자, 숫자, 하이픈, 점으로 서, STEP 7은 CPU의 I/O 영역에서 최상단 주소로
구성됩니다. 시작하는 진단 주소를 할당합니다. 사용자는 진단
IO 시스템의 이름은 디바이스 이름에 점으로 분리 주소를 변경할 수 있습니다. 하드웨어 구성 도구의
되어 부가됩니다. 이렇게 하려면 프로피넷 IO 시스 주소 개요에서는 진단 주소를 별표로 구별합니다.

318
20.4 분산 I/O를 통한 통신

위에서 보여진 예(그림 20.16)에서 CPU 317- 수 있습니다. 그 다음에 스테이션을 저장하고
2PN/DP의 MPI/DP 인터페이스에는 진단 주소 컴파일합니다.
8191이 할당되고, PN IO 인터페이스에는 주소 5) 마우스로 프로피넷 노드를 하드웨어 카탈로
8190이 할당되고, IO 컨트롤러에는 주소 8189가 할 그로부터 프로피넷 IO 시스템으로 드래그합
당됩니다. IO 디바이스에서, 인터페이스(슬롯 0)에 니다. 디바이스명을 할당하고 적용 가능한 경
진단 주소 8188이 할당됩니다. 전력 모듈은 자체 사 우 번호(스테이션 번호)를 부여합니다.
용자 데이터가 없고, 주소 8187이 할당됩니다.
6) IRT 통신을 사용하는 경우, 새로운 동기 도메
사용자 프로그램에서 시스템 블록을 사용하여 진 인을 생성하고 관련 프로피넷 IO 시스템을 적
단 데이터를 스캔합니다. 예를 들면, 진단 인터럽트 용하고 관련 디바이스의 속성을 설정합니다.
에서 SFB 54 RALRM을 사용하여 부가 인터럽트 정
7) IRTtop을 사용하는 경우, 포트(인터페이스 연
보를 읽습니다. SFB 52 RDREC를 사용하여 진단 데
결)에서 하드웨어 구성 도구로 직접 네트워크
이터 기록 DS1을 스캔할 수 있습니다.
토폴로지를 구성하거나 중앙에서 토폴로지
편집기로 구성해야 합니다.
20.4.5 프로피넷 IO의 구성 8) 그 다음에 모든 스테이션을 저장하고 컴파일
합니다. 이제, 프로피넷 IO 시스템의 구성을
일반 절차
완료하였습니다. 그리고 중앙 모듈이나 DP
근본적으로 중앙 모듈과 동일한 방법으로 프로피
마스터 시스템 또는 추가 IO 디바이스를 사용
버스 IO에서 분산 I/O를 구성합니다. 마운팅 랙에 모
하여 구성을 보충할 수 있습니다.
듈을 배치하는 대신, 산업용 이더넷 서브네트워크
또한 이와 같은 방법으로 구성한 프로피넷 IO 시
상의 노드인 IO 디바이스를 프로피넷 IO 시스템에
스템을 네트워크 구성 도구를 사용하여 그래픽으로
할당합니다. 여기에 필요한 작업으로 다음과 같은
나타낼 수 있습니다. 서브네트워크를 더블 클릭하
순서를 권장합니다.
는 등의 방법으로 네트워크 구성 도구를 엽니다. 보
1) SIMATIC 관리자를 사용하여 새로운 프로젝트
기 → DP 슬레이브/IO 디바이스로를 선택하여 IO 디바
를 만들거나 기존 프로젝트를 엽니다.
이스를 표시합니다. 또한 네트워크 구성 도구로 프
2) SIMATIC 관리자를 사용하여 프로젝트에서 산 로피넷 IO 시스템도 만들 수 있습니다. 더 정확하게
업용 이더넷 서브네트워크를 생성합니다. 말하자면, 노드를 이더넷 서브네트워크에 할당할
3) SIMATIC 관리자를 사용하여 프로젝트에서 IO 수 있습니다. 하드웨어 구성 도구로 스테이션을 연
컨트롤러를 수용할 스테이션(예: S7-300 스 후 파라미터를 지정합니다.
테이션)을 생성합니다. 구성 데이터를 로드하기 전에, 디바이스 명을 각
스테이션을 열어서 하드웨어 구성 도구를 시 IO 디바이스에 할당( ‘이름 지정’ )해야 합니다. 정
작합니다. 지 모드에서, IP 주소와 같은 파라미터를 받아들이
4) 하드웨어 구성 도구로 스테이션에서 IO 컨트 는 CPU에 구성 데이터를 로드합니다. 하드웨어 구
롤러를 찾습니다. 예를 들면, 이것은 통합 PN 성 도구로 현재 열린 스테이션의 데이터를 로드합니
인터페이스를 가진 CPU가 될 수 있습니다. 이 다. 예를 들어, PLC→ 다운로드를 선택합니다. 네트
전에 생성한 이더넷 서브네트워크를 PN 인터 워크 구성 도구로 데이터를 여러 스테이션에 보낼
페이스에 할당함으로써 프로피넷 IO 시스템 수 있습니다. 예를 들어, PLC→ 현재 프로젝트에 다운
을 구성할 수 있습니다. ‘일반’ 탭에서 제시 로드 → 서브넷의 스테이션을 선택합니다.

된 디바이스명과 IP 주소를 불러오거나 수정 CPU는 시동 시 구성 정보를 IO 디바이스에 전송


합니다. 그리고 나중에 나머지 모듈을 구성할 하고 파라미터화 작업을 모니터링합니다. 그리고 IO

319
20 메인 프로그램

디바이스는 파라미터와 함께 IP 주소를 수신합니다. IO 디바이스의 구성


파라미터화가 성공한 후, 사용자 데이터는 실행 중 IO 디바이스는 하드웨어 카탈로그의 ‘프로피넷
인 IO 컨트롤러와 IO 디바이스 간에 주기적으로 교 IO’ 항목과 I/O와 같은 관련 서브카탈로그에서 볼
환됩니다. 수 있습니다.
필요한 인터페이스(기본 모듈)를 클릭한 후 프로
피넷 IO 시스템에 대한 심볼로 드래그합니다. 디바
IO 컨트롤러의 구성
이스명과 번호를 설정할 수 있는 스테이션의 속성
이미 SIMATIC 관리자를 사용하여 프로젝트와 S7 시트를 보려면 IO 디바이스를 더블 클릭합니다. ‘이
스테이션을 만들었을 것입니다. S7 스테이션을 열 더넷’ 버튼을 클릭해서 제시된 IP 주소를 변경할 수
고 마운팅 랙을 만듭니다(2.3 “스테이션 구성” 참 있습니다.
조). PN 인터페이스를 가진 CPU를 위치시킬 때, 나 이제, 하드웨어 구성 테이블에서 하드웨어 카달
타난 속성 창에 IP 주소와 서브네트워크 마스크를 입 로그의 필요한 인터페이스 모듈(!) 항목에 있는 모듈
력하고 인터페이스를 기존 또는 새로 만든 이더넷 을 찾습니다. 모듈이 있는 행을 더블 클릭하면 모듈
서브네트워크에 연결합니다. ‘OK’ 버튼을 클릭하 의 속성 시트가 열리고, 여기서 모듈 파라미터를 설
면, 스테이션 창에 프로피넷 IO 시스템이 표시됩니 정할 수 있습니다.
다(흑백 점선).
PN/PN 커플러의 구성
사용 가능한 프로피넷 IO 시스템이 없으면(개체
PN/PN 커플러는 두 개의 산업용 이더넷 서브넷
뒤에 숨어 있을 수도 있고, 가시 영역 밖에 있을 수 을 각각 프로피넷 IO 시스템에 연결합니다. 두 개의
있습니다), 구성 창에서 PN IO 인터페이스를 선택하 프로피넷 IO 시스템 각각에서 PN/PN 커플러의 절반
여 프로피넷 IO 시스템을 만든 후 삽입 → 프로피넷 IO 이 IO 디바이스로 나타납니다. 구성할 때, 두 개의
시스템을 선택합니다. IO 장치를 함께 가져와서 PN/PN 커플러를 파라미터
화합니다.
흑백 선을 표시한 후 편집 → 개체 속성을 선택합니
먼저 선행 조건으로 두 개의 프로피넷 IO 시스템
다. 속성 창의 ‘일반’ 탭에서 이름과 IO 시스템 번
을 설정해야 합니다. 구성하기 좋은 방법은 PN/PN
호(100에서 115까지)를 지정합니다. 그리고 여기서
커플러의 ‘X1 쪽’ 에서 시작하는 것입니다. 해당
시스템 이름이 IO 컨트롤러와 IO 디바이스의 디바이
스테이션을 엽니다(그림 20.18 참조).
스명의 일부로 사용할 것인지 선택합니다. ‘속성’
하드웨어 카탈로그의 ‘프로피넷 IO’ 와 ‘게이
버튼을 사용하여 S7 서브네트워크 ID에 액세스할
트웨이’ 항목에 PN/PN 커플러의 심볼이 있습니다.
수 있습니다.
프로피넷 IO 시스템이 선택되었을 때 PN/PN 커플러
‘업데이트 시간’ 탭에서는 IO 컨트롤러가 모든 의 심볼을 더블 클릭함으로써 이 커플러를 구성에
데이터를 IO 디바이스와 교환하는 데 걸리는 시간을 적용할 수 있습니다. PN/PN 커플러를 선택한 후 편
집→ 개체 속성을 선택하면 이더넷 서브넷 상의 디바
STEP 7이 계산하여 보여 줍니다.
이스명과 디바이스 번호를 설정할 수 있는 속성 창
선택한 PN IO 인터페이스를 가진 IO 컨트롤러의 이 표시됩니다. ‘이더넷’ 버튼을 눌러서 IP 주소
디바이스명을 변경한 후 편집 → 개체 속성을 선택합 를 변경할 수 있습니다.
니다. ‘속성’ 버튼을 누르면 IP 주소, 서브네트워 PN/PN 커플러를 선택했을 때 나타나는 하드웨어
크 마스크, 이더넷 서브네트워크 연결을 바꿀 수 있 구성 테이블에서, 스테이션은 슬롯 0의 첫 번째 행
는 창이 나타납니다. 에 있습니다. 이때, 스테이션의 개체 속성의 ‘파라

320
20.4 분산 I/O를 통한 통신

그림 20.18 PN/PN 커플러의 구성 전송 인터페이스의 연결과 특성

미터’ 탭에서 보고할 진단 이벤트를 선택합니다. 스 PN/PN 커플러의 두 번째 쪽을 구성하려면, 다른


테이션의 진단 주소는 ‘주소’ 탭에 있습니다. 이더넷 서브넷에서 스테이션을 연 후 프로피넷 IO

‘연결’ 탭에서, 현재 커플러의 ‘X1’ 쪽과 시스템에서 하드웨어 카탈로그에서 가져온 PN/PN


‘X2’ 쪽 중 어느 것이 구성되어 있는지 설정합니 커플러를 찾습니다. PN/PN 커플러의 슬롯 0을 열
다. 커플러의 ‘X1 쪽’ 에서 시작했고, 연결할 두 고, ‘연결’ 탭에서 연결 파트너(커플러에서 이미
서브넷이 동일한 프로젝트 안에 있는 경우, ‘연결’ 구성된 부분)를 설정합니다. 서브넷이 동일한 프로
탭에서 그 외에 아무 것도 설정할 필요가 없습니다. 젝트에 있으면, 전송 메모리의 구조는 일관성있게
전송됩니다. 그 다음에 원하는 조건에 따라 주소를
슬롯 X1 상에 있는 인터페이스의 개체 속성에서
수정하고 커플러의 나머지 파라미터를 설정합니다.
‘주소’ 탭은 인터페이스의 진단 주소를 포함하고,
‘IO 사이클’ 탭은 업데이트 시간에 대한 정보를 포 두 개의 서브넷이 서로 다른 프로젝트에 있는 경
함합니다.
우, 두 서브넷의 전송 메모리를 수동으로 구성해야
전송 메모리를 구성하려면, 유니버설 모듈(카탈 합니다. 첫 번째 서브넷의 입력은 두 번째 서브넷의
로그의 PN/PN 커플러 항목에 있음)을 슬롯 1에서 출력이고, 두 번째의 출력은 첫 번째의 입력임에 유
시작하여 하드웨어 구성 테이블에 간격 없이 둡니 의하십시오. 서로 다른 프로젝트의 경우 PN/PN 커
다. 유니버설 모듈의 속성에서 프로세스 이미지 할 플러의 양 쪽 모두에 디바이스명을 온라인으로 지정
당, IO 유형(입력이나 출력 영역 또는 둘 다), 관련 해야 합니다.
시작 주소, 영역 길이를 설정합니다. 여기서 전송 메
모리를 데이터 일관성이 있는 총 16 개의 영역으로 ‘연결’ 탭에서 ‘서브넷’ 에서 ‘-----’ 를
나눌 수 있습니다. 스테이션 → 저장을 선택하여 앞서 입력하여 서브넷 간의 연결을 다시 해제할 수 있습
완료한 설정을 저장합니다. 니다.

321
20 메인 프로그램

IE/PB 링크의 구성 호를 설정할 수 있는 속성 창이 나타납니다. ‘이더


하드웨어 카탈로그의 ‘프로피넷 IO’ 와 ‘게이 넷’ 버튼을 눌러서 IP 주소를 변경할 수 있습니다.
트웨이’ 항목에서 IE/PB link PNIO를 찾을 수 있습
IE/AS-i 링크는 AS-i-Master의 역할을 효과적으
니다. 이전에 선택한 프로피넷 IO 시스템에 대한 심
로 수행합니다. AS-i 슬레이브를 가진 AS-i 마스터
볼을 더블 클릭하면 속성 창이 나타나는데, 이때
시스템은 하드웨어 구성 도구에서 서브넷으로 나타
‘파라미터’ 탭에서 프로피버스 서브네트워크에 대
나지 않습니다. IE/AS-I 링크를 선택하면, 카탈로그
한 연결과 서브네트워크에서 노드 번호를 설정할 수
의 링크 심볼에서 볼 수 있는 AS-i 슬레이브를 ‘플
있습니다.
러그인’ 할 수 있는 구성 테이블이 나타납니다.
IE/PB 링크를 선택한 후 편집→ 개체 속성을 선택
AS-i 마스터 시스템의 구성은 20.4.2 “프로피버
하면 이더넷 서브넷 상의 디바이스명과 디바이스 번
스 DP 구성” 의 “DP/AS-i 링크의 구성” 항목에
호를 설정할 수 있는 속성 창이 나타납니다. ‘이더
설명되어 있습니다.
넷’ 버튼을 클릭하여 IP 주소를 변경할 수 있습니
다.
IE/PB 링크는 겉보기에 ‘하위’ DP 마스터 시스 20.4.6 프로피넷 IO의 특수 함수
템의 DP 마스터로 보입니다. 이 마스터 시스템에서
하드웨어 카탈로그에서 가져온 DP 슬레이브를 찾고 GSD 파일
원하는 속성을 지정합니다(20.4.2 “프로피버스 DP
모듈 카탈로그에 포함되지 않은 IO 디바이스를
구성” 참조).
‘사후 설치’ 할 수 있습니다. 이러한 목적을 위해
DP 슬레이브에는 프로피넷 IO 상에서 주소를 지 IO 디바이스에 맞는 형식 파일인 GSD 파일이 필요
정하기 위해 디바이스 번호가 필요합니다. ‘디바 합니다. IO 디바이스에 적당한 파일은 XML 형식을
이스 번호’ 탭에 있는 IE/PB 링크의 속성 창에서 프 가진 버전 5 이상의 GSD 파일(GSDML, Generic
로피버스 상의 노드 번호와 프로피넷 상의 디바이스 Station Description Markup Language)입니다.
번호 간을 할당할 수 있습니다. 일반적으로 STEP 7
하드웨어 구성 도구에서 옵션 → GSD 파일 설치를
은 디바이스 번호로 프로피버스 주소를 사용합니다
선택하고, 나타나는 창에서 GSD 파일 또는 다른
(디바이스 번호 위에 별표로 표시). 목록에서 DP 슬
STEP 7 프로젝트의 디렉토리를 지정합니다. STEP
레이브를 선택하고, ‘변경’ 버튼을 클릭합니다.
7은 GSD 파일을 받아들이고 하드웨어 카탈로그의
IE/PB 링크는 실제 시간 텔레그람과 파라미터화
‘프로피버스 IO’ 와 ‘추가 필드 디바이스’ 아래
데이터 기록을 전달할 수 있습니다. ‘옵션’ 탭에
에 IO 디바이스를 표시합니다.
있는 속성 창에서 이에 대한 설정을 할 수 있습니다.
STEP 7은 GSD 파일을

IE/AS-i 링크의 구성 ...₩Step7₩S7DATA₩GSD 디렉토리에 저장합니


다. 나중에 설치하거나 불러올 때 삭제된 GSD 파일
하드웨어 카탈로그의 ‘프로피넷 IO’ , ‘게이
은 ...₩GSD₩BKPx 디렉토리에 저장됩니다. 여기
트웨이', ‘단일 마스터’ 또는 ‘이중 마스터’ 항
에서, 옵션 → GSD 파일 설치를 선택하여 GSD 파일을
목에서 IE/AS-i link PNIO의 심볼을 볼 수 있습니다.
복구할 수 있습니다.
프로피넷 IO 시스템을 이미 선택한 경우 이 링크 심
볼을 더블 클릭하면 이 링크가 IO 시스템 막대로 옮
겨집니다. 프로피넷을 사용한 실시간 통신
IE/AS-i 링크를 선택한 후 편집→ 개체 속성을 선택 프로피넷 IO는 여러 가지 형식의 데이터 전송을
하면 이더넷 서브넷 상의 디바이스명과 디바이스 번 제공합니다.

322
20.4 분산 I/O를 통한 통신

Z 구성 및 진단 정보와 같은 급하지 않은 데이터는 또한 ‘업데이트 시간’ 탭은 IO 디바이스를 업데


TCP/IP 통신 표준을 사용하여 비주기적으로 전 이트 시간과 함께 나열합니다. 여기서 I/O 디바이스
송됩니다. 를 선택하고 ‘편집’ 버튼을 클릭하여 IO 디바이스
의 업데이트 시간을 증가시키거나, ‘IO 사이클’
Z 입출력 정보와 같은 사용자 데이터는 정의된 시
탭에 있는 IO 디바이스의 속성 대화 상자에서 업데
간(업데이트 시간) 내에서 IO 컨트롤러와 IO 디
이트 시간을 설정할 수 있습니다.
바이스 간에 주기적으로 교환합니다(실시간
RT). 업데이트 시간 이외에 디바이스 속성에서 워치독
타이머를 설정할 수 있습니다. 워치독 타이머는 업
Z 예를 들어, 모션 컨트롤을 위한 긴급한 사용자
데이트 시간에 ‘유실된 IO 데이터를 가진 수락된
데이터는 하드웨어의 지원 하에 등시적으로 전
업데이트 사이클의 수’ 를 곱한 값입니다.
송됩니다(등시성 실시간 IRT).
IO 시스템에 최소한 하나의 동기화된 디바이스가
IR 통신을 위해 영구 통신 채널이 이더넷 서브넷
있으면, 전송 사이클 시간은 동기 도메인의 동기 마
에 예약되어 있습니다. RT 통신(IO 컨트롤러와 IO
스터에 의해 결정되고 동기 도메인의 속성에서만 수
바이스 간의 주기적 데이터 교환)과 비실시간 TCP/
정할 수 있습니다. 하드웨어 구성 도구에서 IO 시스
IP 통신은 업데이트 시간 내에서 함께 발생합니다.
템을 선택하거나 네트워크 구성 도구에서 서브넷을
위와 같이 세 가지 유형의 통신은 동일한 서브넷에
선택합니다. 그리고 편집 → 프로피넷 IO → 도메인 관
서 함께 존재할 수 있습니다.
리를 선택합니다. 그러면, 다른 위치에서는 수정할
수 없게 됩니다.
사이클타일 전송/업데이트 시간
주기적 데이터 교환은 특정한 시간 프레임인 전송
실시간
사이클 시간 안에 처리됩니다. STEP 7은 프로피넷
IO 시스템에 대한 구성 정보로부터 전송 사이클 시 실시간(RT)은 시스템이 정해진 시간 안에 외부 이
간을 계산합니다. 전송 사이클 시간은 가능한 최단 벤트를 처리한다는 것을 의미합니다. 시스템이 예
의 업데이트 시간입니다. 전송 사이클 시간은 IO 시 측 가능하게 반응하면 디터미니스틱 시스템이라고
스템의 각 IO 디바이스가 IO 컨트롤러와 사용자 데 합니다. RT 통신에서 전송은 정의된 시간 간격(업데
이터를 교환하는데 걸리는 시간입니다. IO 디바이스 이트 시간) 안에서 특정한 시간(전송 사이클 시간)에
의 실제 업데이트 시간은 전송 사이클 시간의 배수 발생합니다. 프로피넷 IO에서는 RT 통신용 표준 네
가 될 수 있습니다. 예를 들면 버스 부하를 줄이기 트워크 구성요소를 사용할 수 있습니다.
위해 업데이트 시간은 수동으로 증가시킬 수 있습니 예를 들면, 신규 네트워크 구성요소를 추가했기
다. 때문에 예정된 시간 안에 전송할 모든 데이터를 전
업데이트 시간은 표준 IO 시스템에서 모든 IO 디 송하지 못한 경우, 일부 데이터는 다른 전송 주파수
바이스에 대해 동일합니다. 어떤 경우에서는, 사용 로 배포됩니다. 이 경우 개별 IO 디바이스의 업데이
자 데이터를 급하게 교환하지 않아도 되는 다른 디 트 시간은 증가하게 됩니다.
바이스의 업데이트 시간을 늘리면 개별 IO 디바이스
의 업데이트 시간을 줄일 수 있습니다. 등시 실시간
‘프로피넷’ 탭의 PN 인터페이스의 속성 대화 상 등시 실시간(IRT)은 예를 들어, 모션 컨트롤 어플
자에서 전송 사이클 시간(IRT 통신 없이)을 구성하 리케이션용으로 설계된 하드웨어 지원 실시간 통신
거나, ‘업데이트 시간’ 탭의 프로피넷 IO 시스템 입니다. IRT 메시지 프레임은 예정된 통신 경로를 통
의 속성 대화 상자에서 구성할 수 있습니다. 해 지정된 순서대로 예정에 따라 전송됩니다. 따라

323
20 메인 프로그램

서, IRT 통신에는 이러한 예정된 데이터 전송을 지 IRT 통신용으로 새로운 동기 도메인을 만들고, IO
원하는 네트워크 구성요소가 필요합니다. 시스템을 syncdomain-default로부터 새로운 동기
등시 실시간은 네트워크 확장에 대한 반응이 다른 도메인으로 이동합니다. IO 시스템의 모든 디바이스
다음과 같은 두 가지 버전이 있습니다. 를 동기화할 필요는 없습니다. 즉, IRT 통신으로 데
이터를 교환할 필요는 없습니다. 구성할 때, 비동기
Z IRTflex(RT 클래스 2)인 경우에 전송 사이클 시
화된 노드도 동기 도메인에서 관리하지만, 런타임
간은 자동적으로 단계적으로 감소합니다. 이것
시에는 동기화된 노드만 동기 도메인에 남아 있습니
은 교환해야 하는 모든 데이터를 전송 사이클 시
다.
간 안에 전송하지 못한 경우 데이터가 여러 전송
사이클 시간에 걸쳐 분산된다는 것을 의미합니
다. 이 경우, 개별 IO 디바이스의 업데이트 시간 새로운 동기 도메인의 구성
이 증가합니다.
먼저 선행 조건으로 하나 이상의 프로피넷 IO 시
Z IRTtop(RT 클래스 3)인 경우에 시스템에서 계산 스템을 가진 이더넷 서브넷을 구성해야 합니다. IRT
한 업데이트 시간 안에 모든 IO 데이터의 전송이 통신에 포함된 노드도 동기 도메인 기능을 지원해야
보장됩니다. 나중에 구성이 변경될 경우, 업데이 합니다(그림 20.19 참조).
트 시간은 자동으로 조정되지 않습니다. 일관성
검사에서 STEP 7은 업데이트 시간을 수동으로 새로운 동기 도메인을 만들려면, 하드웨어 구성
조정해야 한다는 것을 강조합니다. 도구에서 프로피넷 IO 시스템을 선택하거나 네트워
크 구성 도구에서 서브넷을 선택한 후 편집 → 프로피
IRT 통신을 구성하려면, 신규 동기 도메인(아래
넷 IO → 도메인 관리를 선택합니다. 이때 나타나는
참조)을 설정한 후 IRT 메시지 프레임을 동기 슬레
‘도메인 관리’ 창은 동기 도메인 syncdomain-
이브에 동시에 배포하도록 할 동기 마스터를 결정합
default와 동기 도메인에 위치한 동일 서브넷의 모든
니다. IRTtop에서는 토폴로지를 구성해야 하고(아
IO 시스템을 보여 줍니다.
래의 토폴로지 편집기 참조), 따라서 사용된 케이블
과 스위치의 전송 특성을 고려하는 정의된 구조가 ‘신규’ 버튼을 눌러서 새로운 동기 도메인을 만
필요합니다. 든 후 이름을 지정하고, ‘추가’ 버튼을 눌러서 IO
시스템을 선택합니다. IO 시스템을 추가하려면, 위
동기 도메인 의 과정을 반복합니다. 새로운 동기 도메인에 추가
동기 도메인은 서로 동기화된 데이터를 교환하는 된 IO 시스템은 더 이상 동기 도메인 syncdomain-
프로피넷 IO 노드의 그룹입니다. 하나의 노드(IO 컨 default의 구성요소가 아닙니다.
트롤러 또는 IO 디바이스)는 동기 마스터의 역할을
그 다음에 동기 도메인의 IO 시스템과 선택한 IO
수행하고, 나머지 노드는 동기 슬레이브의 역할을
시스템의 버스 노드가 표시됩니다. 이때, 디바이스
수행합니다.
를 선택한 후 ‘디바이스 장치’ 를 선택하고, 속성
동기 도메인은 여러 개의 IO 시스템을 포함하지 창의 파라미터 중에서 동기화 유형(동기 마스터 또
만, IO 시스템은 언제나 하나의 동기 도메인에만 지 는 동기 슬레이브)과 RT 클래스(RT, IRTflex 또는
정됩니다. 여러 개의 동기 도메인이 하나의 이더넷 ITRtop)를 설정합니다. 그리고 다른 버스 노드도 그
서브넷 상에 존재할 수 있습니다. 에 맞게 처리합니다. 단 하나의 디바이스만 동기 마
IO 시스템이 구성되면, syncdomain-default라는 스터가 될 수 있고, 다른 모든 디바이스는 동기 슬레
특별한 동기 도메인이 자동으로 생성됩니다. 구성 이브입니다. 동기 도메인은 IRTflex 및 RT 클래스의
된 모든 IO 시스템, IO 컨트롤러, IO 디바이스는 동 디바이스 또는 IRTtop 및 RT 클래스의 디바이스를
기 도메인 syncdomain-default에 위치합니다. 포함할 수 있습니다.

324
20.4 분산 I/O를 통한 통신

그림 20.19 새로운 동기 도메인의 구성

‘전송 사이클 시간’ 필드에서 전송 사이클 시간 IRT 통신(등시 실시간)을 사용하기 위한 사전 조건


을 선택한 후, ‘상세 정보’ 버튼을 눌러서 IRT용 입니다.
버스 통신의 비율을 선택합니다. 설정을 저장하려
이더넷 서브넷 상에서 디바이스 간의 물리적 연결
면 ‘OK’ 버튼을 누릅니다.
은 점대점(point-to-point) 연결입니다. PN 인터페
이스 상의 연결은 포트라고 합니다. 이더넷 케이블
토폴로지 편집기
은 디바이스 포트를 파트너 디바이스의 포트와 연결
토폴로지 편집기를 사용하면 산업용 이더넷 서브
합니다.
넷 상에서 디바이스를 구성할 수 있습니다. 프로피
넷 디바이스 간의 논리 연결은 하드웨어 구성 도구 여러 노드가 서로 통신하게 만들기 위해 노드를
와 네트워크 구성 도구를 사용하여 구성합니다. 토 스위치에 연결합니다. 이 스위치에는 여러 개의 연
폴로지 편집기는 신호 런타임을 결정하기 위해 길이 결(포트)이 있고, 이를 통해 신호를 배포합니다. 또
와 케이블 유형 속성을 사용하여 물리적 연결을 구 한 S7 디바이스의 특징은 통합 스위치로 분리된 2
성하는데 사용합니다. 토폴로지 편집기의 사용은 개 이상의 포트를 가진 PN 인터페이스입니다. 이 인

325
20 메인 프로그램

그림 20.20 토폴로지 편집기의 테이블 보기와 그래픽 보기

터페이스를 통해 외부 포트가 없는 선형 버스 토폴 토폴로지 편집기를 호출하기 전에, 하드웨어 구


로지에서 통신 디바이스들을 연결할 수 있습니다. 성 도구 또는 네트워크 구성 도구를 사용하여 이더
넷 서브넷 상에서 필요한 스위치를 비롯한 통신 파
두 개의 포트는 하드웨어 구성 도구로 연결할 수 트너를 구성합니다. 하드웨어 구성 도구에서 IO 컨
있습니다. 하드웨어 구성 테이블에서 포트를 선택 트롤러를 가진 S7 스테이션을 열고, 프로피넷 IO 시
한 후 편집 → 개체 속성을 선택합니다. 그리고, 속성 스템을 선택한 후 편집 → 프로피넷 IO → 토폴로지를
창의 ‘토폴로지’ 탭에서, 파트너 포트를 결정하고 선택합니다. 네트워크 구성 도구에서 이더넷 서브
케이블의 속성을 편집할 수 있습니다. 넷을 선택한 후 편집 → 프로피넷 IO → 토폴로지를 선
택합니다.
PN 인터페이스에는 여러 개의 포트가 있을 수 있
테이블 보기는 상호 연결 테이블에 구성된 모든
습니다. 기존의 포트가 아직 구성되어 있지 않으면, 능동 구성요소와 수동 구성요소의 포트 쌍을 보여
즉 STEP 7 환경에서 하위 모듈로 나타나지 않으면, 줍니다. 필터 설정에서 모든 포트를 표시하거나, 상
이것은 기본 포트라고 합니다. 이러한 포트는 하드 호 연결된 포트만 표시하거나, 상호 연결되지 않은
웨어 구성 테이블에 나타나지 않고, 어떠한 상호 연 포트만 표시할 수 있습니다(그림 20.20 참조).
결도 모듈에 로드되지 않습니다. 기본 포트는 토폴 포트의 개체 속성에서 파트너 포트에 연결을 설정
로지 편집기로만 처리할 수 있습니다. 할 수 있습니다. 포트를 선택한 후 포트 상호 연결 해

326
20.4 분산 I/O를 통한 통신

제를 마우스 오른쪽 버튼으로 클릭하여 상호 연결을 20.4.7 분산 I/O용 시스템 블록


해제할 수 있습니다. 분산 I/O와 관련하여 아래와 같은 블록을 사용할
수 있습니다.
플랜트에 연결이 있는 경우, 오프라인으로 구성
된 디바이스를 사용할 수 있는지 여부와 그 상태를 Z FB 20 GETIO
스테이션의 모든 입력을 읽습니다.
확인하려면 ‘온라인’ 버튼을 누릅니다. 비교는 디
바이스 명, IP 주소, 디바이스 ID에 따라 수행됩니 Z FB 21 SETIO
다. 온라인 보기의 결과는 ‘상태’ 와 ‘감쇠 값’ 스테이션의 모든 출력에 기록합니다.
열에 표시됩니다. Z FB 22 GETIO_PA
스테이션의 일부 입력을 읽습니다.
그래픽 보기에서, 토폴로지 창은 디바이스와 디
바이스의 포트, 상호 연결을 표시합니다. 구성된 디 Z FB 23 SETIO_PA
스테이션의 일부 출력에 기록합니다.
바이스는 오프라인 보기로 표시되며, 플랜트에 온
라인 연결이 있는 경우 플랜트에서 사용 가능한 실 Z SFB 75 SALRM
제 디바이스는 온라인 보기로 표시됩니다. 인터럽트를 시작합니다.

Z SFC 7 DP_PRAL
원활한 편집을 위해, 스테이션을 ‘닫을’ 수 있
프로세스 인터럽트를 시작합니다.
고, ‘옵션’ 버튼과 ‘옵션’ 탭을 사용하여 썸네
일과 수동 구성요소의 카달로그를 숨길 수 있고, 마 Z SFC 11 DPSYN_FR
SYNC/FREEZE 명령을 전송합니다.
우스 휠를 스크롤하여 보기를 확대 또는 축소할 수
있습니다. Z SFC 12 D_ACT_DP
분산 스테이션을 활성화/비활성화합니다.
두 개의 포트를 상호 연결하려면 포트를 선택한
Z SFC 13 DPNRM_DG
후 마우스 오른쪽 버튼을 누른 채 연결을 파트너 포
DP 표준 슬레이브로부터 진단 데이터를 읽습니
트로 드래그합니다. 마우스 오른쪽 버튼으로 연결
다.
을 선택한 후 포트 상호 연결 해제를 선택하여 포트의
Z SFC 14 DPRD_DAT
연결을 해제할 수 있습니다.
사용자 데이터를 읽습니다.
오프라인/온라인 비교 탭에서, 오프라인으로 구 Z SFC 15 DPWR_DAT
성된 토폴로지를 온라인으로 파악된 토폴로지와 나 사용자 데이터를 기록합니다.
란히 비교하면서 볼 수 있습니다. 모든 스테이션과
Z SFC 103 DP_TOPOL
모듈은 해당 포트, 관련 파트너 포트, 케이블 데이터
버스 토폴로지를 결정합니다.
와 함께 표시됩니다. 위와 같은 방법으로, 연결과 케
테이블 20.9 (FB), 20.10 (SFB), 20.11 (SFC)에
이블을 포함한 구성을 확인할 수 있고, 필요하면 빠
블록의 파라미터가 나와있습니다.
진 시스템 구성요소를 보충할 수 있습니다.
로드 가능한 함수 블록 FB 20에서 FB 23는 PNO(
필터 설정을 통해 포트를 선택할 수도 있습니다. 프로피버스 International)와 호환되는 인터페이스
개요 모드에서는 차이나는 부분, 즉 토폴로지 편집 를 가지고 있고, DP 표준 슬레이브와 IO 디바이스와
기에서 할당할 수 없었던 모듈은 다른 색상으로 강 함께 사용할 수 있습니다. 이 블록들은 STEP 7에서
조 표시됩니다. 이때, 토폴로지 편집기에서 모듈을 제공하는 표준 라이브러리에 있는 통신 블록 프로그
수동으로 할당할 수 있습니다. 램에서 찾을 수 있습니다.

327
20 메인 프로그램

프로피버스 DP에서는 나열된 모든 시스템 블록 FB 20 GETIO


스테이션의 모든 입력을 읽습니다.
을 사용할 수 있고, 시스템 함수 SFC 12, SFC 14,
SFC 15는 프로피넷 IO에 사용할 수 있습니다. 프로 FB 20 GETIO는 SFC 14 DPRD_DAT를 사용하여
피넷 IO를 사용하여 진단 데이터를 읽으려면 SFB DP 표준 슬레이브 또는 IO 디바이스의 모든 입력 데
이터를 일관성 있게 읽을 수 있고, 모듈 스테이션인
54 RALRM를 사용합니다.
경우 입력 영역의 모든 데이터를 읽을 수 있습니다.
DPV1 모드로 설정되고 DPV1 기능을 지원하는 ID 파라미터의 오른쪽 워드에는 읽어야 하는 입력
DP 슬레이브에서, 진단 데이터를 파라미터화하고 영역의 시작 주소가 포함되어 있습니다.

읽기 위해 다른 시스템 블록을 사용할 수 있습니다 INPUTS 파라미터에서 지정한 대상 영역의 길이


(21.9.3 “추가 인터럽트 정보의 판독” 과 22.5 “모 는 판독한 입력 영역의 구성된 길이와 동일해야 합
듈 파라미터화” 참조). 니다. 이 길이는 또한 LEN 파라미터로 출력됩니다.

표 20.9 분산 I/O에 액세스하기 위한 함수 블록 파라미터


FB 파라미터 선언 데이터 형식 내용, 설명
20 ID INPUT DWORD 논리 사용자 데이터 시작 주소
STATUS OUTPUT DWORD SFC 14 DPRD_DAT의 오류 정보 1)
LEN OUTPUT INT 읽을 바이트 수
INPUTS IN_OUT ANY 판독한 사용자 데이터를 위한 대상 영역
(ANY 포인터에서 허용 가능한 데이터 형식 BYTE만)
21 ID INPUT DWORD 논리 사용자 데이터 시작 주소
LEN INPUT INT 무관
STATUS OUTPUT DWORD SFC 15 DPWR_DAT의 오류 정보 1)
OUTPUTS IN_OUT ANY 기록할 사용자 데이터용 소스 영역
(ANY 포인터에서 허용 가능한 데이터 형식 BYTE만)
22 ID INPUT DWORD 논리 사용자 데이터 시작 주소
OFFSET INPUT INT 읽어올 첫 번째 바이트의 번호(0부터)
LEN INPUT INT 읽을 바이트 수
STATUS OUTPUT DWORD SFC 81 UBLKMOV의 오류 정보 1)
ERROR OUTPUT BOOL 신호 상태 ‘1’ 에서 발생한 오류
INPUTS IN_OUT ANY 판독한 사용자 데이터를 위한 대상 영역
(ANY 포인터에서 허용 가능한 데이터 형식 BYTE만)
23 ID INPUT DWORD 논리 사용자 데이터 시작 주소
OFFSET INPUT INT 기록할 첫 번째 바이트의 번호(0부터)
LEN INPUT INT 기록할 바이트 수
STATUS OUTPUT DWORD SFC 81 UBLKMOV의 오류 정보 1)
ERROR OUTPUT BOOL 신호 상태 ‘1’ 에서 발생한 오류
OUTPUTS IN_OUT ANY 기록할 사용자 데이터용 소스 영역
(ANY 포인터에서 허용 가능한 데이터 형식 BYTE만)
1)
DW#16#40xx xx00 형식으로 사용된 SFC의 오류 정보를 포함합니다.

328
20.4 분산 I/O를 통한 통신

FB 21 SETIO FB 22 GETIO_PA를 사용하기 위해서는 읽어올


스테이션의 모든 출력에 기록합니다. 입력 바이트를 입력의 프로세스 이미지 안에서 주소
FB 21 SETIO는 SFC 15 DPWR_DAT를 사용하여 지정해야 합니다. 이 경우, 가능하면 부분 프로세스
모든 출력 데이터를 일관성 있게 쓰거나, 모듈 스테 이미지를 사용하는 것이 좋습니다. 이때 OFFSET 파
이션인 경우 DP 표준 슬레이브 또는 IO 디바이스의 라미터와 LEN 파라미터가 다른 스테이션의 인접 데
출력 영역의 모든 데이터를 기록할 수 있습니다. ID 이터의 경계에 침범하지 않는지 꼭 확인해야 합니
파라미터의 오른쪽 워드에는 기록할 출력 영역의 시 다.
작 주소가 포함되어 있습니다.
INPUTS 파라미터에 의해 지정된 대상 영역이 판
OUTPUTS 파라미터에서 지정한 소스 영역의 길 독한 입력 영역보다 작으면, 함수는 대상 영역에 기
이는 기록할 출력 영역의 구성된 길이와 동일해야 록할 수 있는 만큼의 바이트만 전송합니다. 대상 영
합니다. 이것이 LEN 파라미터의 정보가 상관없는 역이 더 크면, 영역의 첫 번째 LEN 바이트에만 기록
이유입니다. 합니다. 두 가지 경우 모두 ERROR 파라미터에 오류
가 나타나지 않습니다. SFC 81 BLKMOV를 호출할
FB 22 GETIO_PA 때 오류가 보고될 경우에만 ERROR 파라미터가 신
스테이션의 일부 입력을 읽습니다. 호 상태 ‘1’ 을 가집니다.
FB 22 GETIO_PA는 SFC 81 UBLKMOV를 사용하
여 일부 입력 데이터를 일관성 있게 읽거나, 모듈 스 FB 23 SETIO_PA
테이션인 경우 DP 표준 슬레이브 또는 IO 디바이스 스테이션에 일부 출력을 기록합니다.
의 입력 영역의 일부 데이터를 읽을 수 있습니다. ID FB 23 SETIO_PA는 SFC 81 UBLKMOV를 사용하
파라미터의 오른쪽 워드는 입력 영역의 시작 주소를 여 DP 표준 슬레이브 또는 IO 디바이스의 출력 영역
포함하고, OFFSET 파라미터는 읽어야 하는 첫 번째 의 일부 출력 데이터를 일관성 있게 기록하거나, 모
바이트의 번호를 포함하고, LEN 파라미터는 바이트 듈 스테이션인 경우 출력 영역의 일부 출력 데이터
수를 포함합니다. 를 기록할 수 있습니다. ID 파라미터의 오른쪽 워드

표 20.10 SFB 75 SALRM의 파라미터


파라미터 선언 데이터 형식 내용, 설명
REQ INPUT BOOL REQ = ‘1’ 인 경우 시작하라는 요청
ID INPUT DWORD 전송 메모리에서 주소 영역의 주소
ATYPE INPUT INT 인터럽트 유형: 1 = 진단 인터럽트
2 = 프로세스 인터럽트
ASPEC INPUT INT 인터럽트 식별
0 = 추가 정보 없음
1 = 슬롯 고장(UP 메시지)
2 = 슬롯 고장 해결됨(DOWN 메시지)
3 = 슬롯 계속 고장임(DOWN 메시지)
LEN INPUT INT 전송할 보충 인터럽트 정보의 바이트 길이(최대 16)
DONE OUTPUT BOOL DONE = ‘1’ 일 경우 인터럽트가 전달됨
BUSY OUTPUT BOOL BUSY = ‘1’ 일 경우 인터럽트가 여전히 전송 중임
ERROR OUTPUT BOOL ERROR = ‘1’ 이면 기본 값이 적용된 상태임
STATUS OUTPUT DWORD 오류 정보
AINFO IN_OUT ANY 보충 인터럽트 정보용 소스 영역

329
20 메인 프로그램

표 20.11 분산 I/O를 참조하는데 사용하는 SFC의 파라미터


SFC 파라미터 선언 데이터 형식 내용, 설명
7 REQ INPUT BOOL REQ = ‘1’ 인 경우 시작하라는 요청
IOID INPUT BYTE B#16#54 = 입력 ID
B#16#55 = 출력 ID
LADDR INPUT WORD 전송 메모리에서 주소 영역의 시작 주소
AL_INFO INPUT DWORD 인터럽트 ID(인터럽트 OB의 시작 정보의 전송)
RET_VAL RETURN INT 오류 정보
BUSY OUTPUT BOOL BUSY = ‘1’ 인 경우 DP 마스터가 승인하지 않음
11 REQ INPUT BOOL REQ = ‘1’ 인 경우 송신하라는 요청
LADDR INPUT WORD DP 마스터의 구성된 진단 주소
GROUP INPUT BYTE DP 슬레이브 그룹(하드웨어 구성 도구에서)
MODE INPUT BYTE 명령어(텍스트 참조)
RET_VAL RETURN INT 오류 정보
BUSY OUTPUT BOOL BUSY = ‘1’ 인 경우 작업이 계속 실행 중임
12 REQ INPUT BOOL REQ = ‘1’ 인 경우 활성화/비활성화하라는 요청
MODE INPUT BYTE 함수 모드
0 스테이션이 활성화되었는지
비활성화되었는지 확인합니다.
1 스테이션을 활성화합니다.
2 스테이션을 비활성화합니다.
LADDR INPUT WORD 스테이션의 임의의 논리 주소
RET_VAL RETURN INT 검사 결과 또는 오류 정보
BUSY OUTPUT BOOL BUSY = ‘1’ 인 경우 작업이 계속 실행 중임
13 REQ INPUT BOOL REQ = ‘1’ 인 경우 읽기 요청
LADDR INPUT WORD DP 슬레이브의 구성된 진단 주소
RET_VAL RETURN INT 오류 정보
RECORD OUTPUT ANY 판독한 진단 데이터를 위한 대상 영역
BUSY OUTPUT BOOL BUSY = ‘1’ 인 경우 읽기가 계속 진행 중임
14 LADDR INPUT WORD 구성된 시작 주소(I 영역부터)
RET_VAL RETURN INT 오류 정보
RECORD OUTPUT ANY 판독한 사용자 데이터를 위한 대상 영역
15 LADDR INPUT WORD 구성된 시작 주소(Q 영역부터)
RECORD INPUT ANY 기록할 사용자 데이터용 소스 영역
RET_VAL RETURN INT 오류 정보
103 REQ INPUT BOOL REQ = ‘1’ 인 경우 토폴로지 보기를 트리거함
R INPUT BOOL R= ‘1’ 인 경우 토폴로지 보기를 중단함
DP_ID INPUT INT 토폴로지 보기를 해야 하는 DP 마스터 시스템의 ID
RET_VAL RETURN INT SFC의 오류 정보
BUSY OUTPUT BOOL BUSY = ‘1’ 인 경우 보기 작업이 계속 진행 중임
DPR OUTPUT BYTE 고장을 알리는 진단 리피터의 프로피버스 주소
DPRI OUTPUT BYTE 고장을 알려주는 진단 리피터의 테스트 부분과 오류 정보

330
20.4 분산 I/O를 통한 통신

는 출력 영역의 시작 주소를 포함하고, OFFSET 파 작 정보에는 마스터 CPU의 기준에서 인터럽트를 시


라미터는 기록할 첫 번째 바이트의 번호를 포함하 작하는 ‘모듈’ 의 주소를 포함합니다.
고, LEN 파라미터는 바이트 수를 포함합니다.
AINFO 파라미터를 사용하여, 사용자가 정의하고
FB 23 SETIO_PA를 사용하기 위해서는 기록할 입 마스터 CPU의 인터럽트 OB에서 평가할 수 있는 보
력 바이트를 입력의 프로세스 이미지 안에서 주소 충 인터럽트 정보를 전달할 수 있습니다. AINFO에
지정해야 합니다. 이 경우, 가능하면 부분 프로세스 대한 참조는 데이터 영역에 대한 ANY 포인터 역할
이미지를 사용하는 것이 좋습니다. 이때 OFFSET 파 을 수행합니다. 전송한 정보의 길이는 LEN 파라미
라미터와 LEN 파라미터가 다른 스테이션의 인접 데 터와 ANY 포인터의 영역 길이로 정의하는데, 둘 중
이터의 경계에 침범하지 않는지 꼭 확인해야 합니 더 짧은 길이가 적용됩니다. 처음 4 바이트는 마스
다. 터 CPU의 인터럽트 OB 시작 정보에서 바이트 8에
서 11에 표시됩니다(프로세스 인터럽트를 위해서는
OUTPUTS 파라미터에 의해 지정된 소스 영역이
변수 OBxx_POINT_ADDR, 진단 인터럽트를 위해서
기록할 출력 영역보다 작으면, 함수는 소스 영역이
는 데이터 기록 DS 0). 완전한 보충 인터럽트 정보
포함하는 만큼의 바이트만 전송합니다. 소스 영역
는 SFB 54 RALRM를 사용하여 마스터 CPU에서 읽
이 더 크면, 첫 번째 LEN 바이트만 전송합니다. 두
을 수 있습니다.
가지 경우 모두 ERROR 파라미터에 오류가 나타나
지 않습니다. SFC 81 BLKMOV를 호출할 때 오류가
보고된 경우에만 ERROR 파라미터가 신호 상태 SFC 7 DP_PRAL
프로세스 인터럽트를 시작합니다.
‘1’ 을 가집니다.
SFC 7 DP_PRAL을 사용하여, 지능형 슬레이브의
사용자 프로그램 상에서 그 슬레이브와 관련된 DP
SFB 75 SALRM
인터럽트를 시작합니다. 마스터에 프로세스 인터럽트를 시작할 수 있습니
다.
SFB 75 SALRM를 사용하여, 지능형 슬레이브의
사용자 프로그램 상에서 그 슬레이브와 관련된 DP AL_INFO 파라미터에서 사용자가 정의한 인터럽
마스터에 진단 인터럽트 또는 프로세스 인터럽트를 트 ID를 전달합니다. 이 인터럽트 ID는 DP 마스터에
시작할 수 있습니다. ATYPE 파라미터를 사용하여 서 호출한 인터럽트 OB의 시작 정보에 전달됩니다(
인터럽트의 종류를 정의합니다. 변수 OBxx_POINT_ADDR). REQ = ‘1’ 으로 인터
럽트 요청을 시작하고, RET_VAL 파라미터와 BUSY
REQ = ‘1’ 으로 인터럽트 요청이 시작되고
파라미터는 작업 상태를 표시합니다. DP 마스터의
DONE, BUSY, ERROR, STATUS 파라미터는 작업
인터럽트 OB가 실행되면 작업은 완료됩니다.
상태를 표시합니다. DP 마스터의 인터럽트 OB가
실행되면 작업은 완료됩니다(BUSY = ‘0’ ). DP 마스터와 지능형 DP 슬레이브 간의 전송 메모
리는 마스터 CPU의 기준에서 개별 모듈을 나타내는
DP 마스터와 지능형 DP 슬레이브 간의 전송 메모
개별 주소 영역으로 나눌 수 있습니다. 주소 영역의
리는 마스터 CPU의 기준에서 개별 모듈을 나타내는
최하단 주소가 ‘모듈 시작 주소’ 로 사용됩니다.
개별 주소 영역으로 나눌 수 있습니다. 이러한 각 주
이러한 각 주소 영역( ‘가상’ 모듈)에 대해 마스터
소 영역( ‘가상’ 모듈)에 대해 마스터에서 인터럽
에서 프로세스 인터럽트를 시작할 수 있습니다.
트를 시작할 수 있습니다. 슬레이브 CPU 기준에서
사용자 데이터 주소로 채운 주소 영역을 ID 파라미 슬레이브 CPU 기준에서 IOID 파라미터와
터를 사용하여 지정합니다. 비트 15는 I/O ID을 포 LADDR 파라미터를 사용하여 SFC 7에서 주소 영역
함하는데, ‘0’ 은 입력 주소에 해당하고, ‘1’ 은 을 지정합니다(I/O ID와 슬레이브 측의 시작 주소).
출력 주소에 해당합니다. 그리고 인터럽트 OB의 시 그리고 인터럽트 OB의 시작 정보에는 마스터 CPU

331
20 메인 프로그램

의 기준에서 인터럽트를 시작하는 ‘모듈’ 의 주소 한 후 SYNC 명령을 다시 출력하면, DP 슬레이브는


가 포함됩니다. 수신한 출력 신호를 동시에 출력 단자들로 전환시킵
니다. 이때, 새로운 SYNC 명령을 사용하여 새로운
SFC 11 DPSYN_FR 출력 신호로 전환할 때까지 또는 UNSYNC 명령을
SYNC/FREEZE 명령을 전송합니다. 사용하여 DP 슬레이브가 ‘정상’ 모드로 되돌아
SFC 11 DPSYN_FR을 사용하여 하드웨어 구성 갈 때까지 액세스된 DP 슬레이브는 출력 단자에서
도구로 구성한 SYNC/FREEZE 그룹에 SYNC, 신호를 유지합니다.
UNSYNC, FREEZE, UNFREEZE 명령을 전송합니
다. SEND 명령은 REQ = ‘1’ 일 때 시작하고, SFC 12 D_ACT_DP
BUSY = ‘0’ 일 때 완료됩니다. 분산 스테이션을 활성화/비활성화합니다.
GROUP 파라미터에서 각 그룹은 1 비트를 차지 SFC 12 D_ACT_DP는 분산 I/O의 스테이션을 활
합니다(비트 0 = 그룹 1부터 비트 7 = 그룹 8). 성화 및 비활성화하고, 활성화되거나 비활성화된
MODE 파라미터의 명령도 다음과 같이 비트 별로 상태의 스캔을 허용합니다. 분산 스테이션은 DP 슬
구성됩니다. 레이브 또는 IO 디바이스가 될 수 있습니다.
Z 비트 2 = ‘1’ 이면 UNFREEZE. SFC 12 D_ACT_DP는 주기적인 프로그램에서 호
Z 비트 3 = ‘1’ 이면 FREEZE. 출되지만, 재가동 루틴에서 호출하는 것은 지원되
지 않습니다. 이 SFC는 비동기 모드로 작동합니다.
Z 비트 4 = ‘1’ 이면 UNSYNC.
즉 작업의 처리는 여러 프로그램 사이클에 확장할
Z 비트 5 = ‘1’ 이면 SYNC. 수 있습니다. REQ 파라미터가 ‘1’ 이면 활성화 또
위와 같은 방법으로 하나의 호출만 사용하여 여러 는 비활성화 작업을 시작합니다. BUSY 파라미터가
그룹에 여러 가지 명령을 전송할 수 있습니다. ‘1’ 인 동안, REQ 파라미터는 ‘1’ 이어야 합니

이러한 방법으로 DP 슬레이브의 SYNC 모드와 다. BUSY = ‘0’ 이면 작업은 종료됩니다.

FREEZE 모드가 제일 먼저 해제됩니다. DP 슬레이 비활성화 후에 구성된 기존 스테이션의 주소는 더


브의 입력은 DP 마스터가 차례대로 스캔하여 DP 슬 이상 DP 마스터 또는 IO 컨트롤러에서 지정하지 않
레이브의 출력이 수정되고, DP 슬레이브는 수신한 습니다. 비활성화된 출력 모듈의 출력 단자는 0 또
출력 신호를 바로 출력 단자로 전달합니다. 는 대체값을 지닙니다. 비활성화된 입력 모듈의 입
특정한 시간에 여러 DP 슬레이브의 입력 신호를 력의 프로세스 이미지는 ‘0’ 으로 설정됩니다.
‘고정(freeze)’ 하려면, 관련 그룹에 FREEZE 명령 비활성화된 슬레이브는 오류 메시지 없이 버스에
을 출력합니다. 그러면, DP 마스터에서 차례대로 읽 서 떼어낼 수 있으며, 고장이나 유실로 보고되지 않
은 입력 신호는 ‘고정’ 되었을 때의 신호 상태를 습니다. 비동기 에러 조직 블록 OB 85(비활성화된
가집니다. 다른 FREEZE 명령으로 DP 슬레이브가 슬레이브의 사용자 데이터가 자동적으로 업데이트
현재 입력 신호를 읽고 유지하게 할 때까지 또는 된 프로세스 이미지 안에 있을 때 프로그램 실행 에
UNFREEZE 명령으로 DP 슬레이브가 ‘정상’ 모 러)와 OB 86(스테이션 고장)의 호출은 중단됩니다.
드로 되돌아갈 때까지 입력 신호는 유지됩니다. DP 슬레이브를 비활성화한 후, 프로그램에서 DP 슬
특정한 시간에 여러 DP 슬레이브의 출력 신호를 레이브에 더 이상 액세스할 수 없습니다. 왜냐하면,
동시에 출력하려면, 먼저 관련 그룹에 SYNC 명령을 직접 액세스하면 OB 122를 호출하여 I/O 액세스 오
출력합니다. 이때, 주소 지정된 DP 슬레이브는 출력 류를 발생시키거나, SFC 59 RD_REC 또는 SFB 52
단자에 현재 신호를 유지합니다. 그러면, 원하는 신 RDREC로 데이터 기록을 읽을 때 DP 슬레이브는 존
호 상태를 DP 슬레이브에 전달할 수 있습니다. 전송 재하지 않는 것으로 나타나기 때문입니다.

332
20.4 분산 I/O를 통한 통신

SFC 12 D_ACT_DP를 사용하면 비활성화된 DP SFC 14 DPRD_DAT


슬레이브를 재활성화할 수 있습니다. DP 슬레이브 사용자 데이터를 읽습니다.
는 스테이션을 복구하는 것과 동일한 방법으로 DP SFC 14 DPRD_DAT는 DP 슬레이브 또는 IO 디바
마스터 또는 IO 컨트롤러가 구성하고 파라미터화합 이스에서 3 바이트 또는 4 바이트를 초과하는 길이
니다. DP 슬레이브를 활성화할 때, 비동기 에러 OB 를 가진 일관성 있는 사용자 데이터를 읽습니다. 스
85와 86은 발생하지 않습니다. 활성화 후에 BUSY 테이션을 파라미터화할 때 데이터 일관성의 길이를
파라미터의 신호 상태가 ‘0’ 이면, DP 슬레이브 지정할 수 있습니다.

는 사용자 프로그램으로부터 액세스할 수 있습니 LADDR 파라미터는 입력 영역의 사용자 데이터


다. 의 모듈 시작 주소를 포함합니다.

RECORD 파라미터는 읽은 데이터가 저장된 영역


콜드 리스타트 또는 웜 리스타트를 사용하면,
에 기록합니다. 데이터 형식 ARRAY와 STRUCT인
CPU의 운영체제는 자동적으로 비활성화된 DP 슬
변수 또는 데이터 형식 BYTE인 ANY 포인터(예:
레이브를 활성화시킵니다. S7-300-CPU는 모든 스
P#DBzDBXy.xBYTEnnn)는 실제 파라미터로써 허
테이션이 활성화될 때까지 시동을 대기합니다. S7-
용됩니다.
400 CPU는 시작한 후 스테이션이 활성될 때까지 I/
O 액세스 오류를 보고합니다. 핫 리스타트를 사용하
SFC 15 DPWR_DAT
면 DP 슬레이브 상태는 유지됩니다.
사용자 데이터를 기록합니다.
SFC 15 DPWR_DAT는 3 바이트 또는 4 바이트를
SFC 13 DPMRM_DG 초과하는 길이를 가진 일관성 있는 사용자 데이터를
진단 데이터를 읽습니다. DP 슬레이브 또는 IO 디바이스에 기록합니다. 스테
SFC 13 DPNRM_DG는 DP 슬레이브에서 진단 데 이션을 파라미터화할 때 데이터 일관성의 길이를 지
이터를 읽습니다. 읽기 과정은 REQ = ‘1’ 로 시작 정할 수 있습니다.

하고, BUSY = ‘0’ 이 될 때 종료됩니다. 이때, 함 LADDR 파라미터는 출력 영역의 사용자 데이터
수값 RET_VAL은 읽은 바이트 수를 포함합니다. 슬 의 모듈 시작 주소를 포함합니다.
레이브에 따라 진단 데이터는 6에서 240 바이트로 RECORD 파라미터는 읽은 데이터가 저장된 영역
이루어질 수 있습니다. 진단 데이터가 240 바이트를 에 기록합니다. 데이터 형식 ARRAY와 STRUCT인
초과하면, 처음 240 바이트는 전송되고 데이터에 관 변수 또는 데이터 형식 BYTE인 ANY 포인터(예:
련 초과 비트가 설정됩니다. P#DBzDBXy.xBYTEnnn)는 실제 파라미터로써 허
용됩니다.
RECORD 파라미터는 읽은 데이터가 저장된 영역
에 기록합니다. 데이터 형식 ARRAY와 STRUCT인 주변 출력장치(PQ)가 출력의 프로세스 이미지
변수 또는 데이터 형식 BYTE인 ANY 포인터(예: (PIQ) 안에 있으면, 프로세스 이미지는 전송 명령
P#DBzDBXy.xBYTEnnn)는 실제 파라미터로써 허 (STL) 또는 Move 상자(LAD, FBD)와 같이 트래킹됩

용됩니다. 니다.

SFC 13 DPMRM_DG는 비동기 시스템 함수임에 SFC 103 DP_TOPOL


유의하십시오. 이 함수는 BUSY 파라미터의 신호 상 버스 토폴로지를 결정합니다.
태가 ‘0’ 일 때까지 처리해야 합니다. SFB 54 SFC 103 DP_TOPOL은 DP 마스터 시스템의 버
RALRM은 동기 모드로 데이터를 제공하는(예: 호출 스 토폴로지를 결정하기 위해 진단 리피터를 사용하
직후) 신형 CPU에 사용할 수 있습니다. 는데, 여기서 DP 마스터 시스템의 ID는 DP_ID 파라

333
20 메인 프로그램

SIMATIC S7 station SIMATIC S7 station


Global data table CPU CPU Global data table
Operating Operating
system system

User program in the CPU User program in the CPU

渂匶洇ͫ͑殺欇熺洢垚͑斲殯沖͑稊嵢勾岮͑櫌決͑
渂匶洇ͫ͑殺欇熺洢垚͑斲殯沖͑稊嵢勾岮͑櫌決͑ 渂匶洇ͫ͑殺欇熺洢垚͑斲殯沖͑稊嵢勾岮͑櫌決͑
渂匶洇ͫ͑殺欇熺洢垚͑斲殯沖͑稊嵢勾岮͑櫌決͑
塶決瘶庂͑洊暧穯城埪͟ 塶決瘶庂͑洊暧穯城埪͟
Data Data

Re- Re-
sour- sour-
決憪瞾͑匶愞ͫ͑斲殯沖͑稊嵢勾岮櫖昢͑΄ͷʹ͑
決憪瞾͑匶愞ͫ͑斲殯沖͑稊嵢勾岮櫖昢͑΄ͷʹ͑ ces ces 決憪瞾͑匶愞ͫ͑斲殯沖͑稊嵢勾岮櫖昢͑΄ͷʹ͑
決憪瞾͑匶愞ͫ͑斲殯沖͑稊嵢勾岮櫖昢͑΄ͷʹ͑
笾犢汊͑皻空͑洊暧穯城埪͟ 笾犢汊͑皻空͑洊暧穯城埪͟
Data SFC SFC Data
60/61 60/61

Subnet
MPI

그림 20.21 글로벌 데이터 통신

미터에서 지정합니다. REQ = ‘1’ 일 때 토폴로지 20.5 글로벌 데이터 통신


결정이 트리거되고, BUSY = ‘0’ 일 때 완료됩니
다. R = ‘1’ 를 사용하여 토폴로지 결정을 중단할
20.5.1 기본 사항
수 있습니다.
글로벌 데이터 통신(GD 통신)은 CPU의 운영체제
버스 토폴로지의 결정을 방해하는 오류가 진단 리
에 통합된 통신 서비스이고, MPI 버스를 통해 작은
피터에서 발생하면, DPR 파라미터와 DPRI 파라미 크기의 급하지 않은 데이터를 교환하는데 사용됩니
터에 나타납니다. 여러 진단 리피터에서 오류 신호 다. 전송 가능한 글로벌 데이터에는 다음이 포함됩
를 내는 경우, 첫 번째 리피터의 오류 메시지가 나타 니다.
납니다. 이때, 전체 진단 정보는 SFC 13 DPNRM_
DG으로 읽을 수 있습니다. Z 입력과 출력(프로세스 이미지)

DPRI 파라미터의 오류 정보는 임시 고장과 영구 Z 메모리 비트


고장으로 구별됩니다. 느슨한 접점과 같은 임시 고 Z 데이터 블록(DB)에 있는 데이터
장은 식별하기 어렵고 저절로 사라질 수 있습니다.
Z 전송할 데이터로써 타이머와 카운터 값
영구 고장은 토폴로지를 결정하기 위해 SFC 103
DP_TOPOL를 재호출하기 전에 제거해야 합니다. 글로벌 데이터 통신을 위한 요구 조건은 CPU들
이 MPI 인터페이스를 통해 연결되거나 S7-400 마
SFC 103 DP_TOPOL을 호출한 후, 출력 결과가
운팅 랙처럼 K 버스를 통해 연결되는 것입니다. GD
진단 리피터에 제공되고 SFC 59 RD_REC 또는 SFB
통신을 구성할 수 있으려면 모든 CPU는 동일한
52 RDREC으로 읽을 수 있습니다. 출력 결과는 버
STEP 7 프로젝트 안에 있어야 합니다.
스 세그먼트의 토폴로지(노드와 케이블 길이), 세그
먼트 진단 버퍼의 내용(오류 정보, 위치, 원인을 포 주기적인 GD 통신 서비스에는 운영체제가 필요
함한 마지막 10 개의 이벤트), 통계 데이터(버스 시 하지 않습니다. S7-400에는 이벤트 구동 GD 통신
스템의 품질에 대한 정보)로 구성됩니다. 에 사용할 수 있는 시스템 함수들을 포함합니다.

334
20.5 글로벌 데이터 통신

수신자 CPU는 글로벌 데이터의 수신을 승인하지 Z 한 CPU에서 다른 두 CPU에 GD 패킷을 전송할
않는다는 것에 유의하십시오. 따라서, 수신자가 데 수 있는 세 CPU 간의 쌍방 연결(S7-400 CPU 전
이터를 수신해도 전송자에게 수신 여부를 응답하지 용).
않으며 어떤 수신자가 수신했는지도 응답하지 않습
최대 15 개의 CPU가 하나의 GD 서클 안에서 데
니다. 그러나, 사용자는 CPU의 모든 GD 서클의 전
이터를 서로 교환할 수 있습니다. 하나의 CPU는 여
체 상태뿐만 아니라 두 CPU 간의 통신 상태도 볼 수
러 GD 서클에 소속될 수 있습니다. 개별 CPU의 리
있습니다.
소스에 대해서는 표 20.12를 참조하십시오.
글로벌 데이터의 전송과 수신은 스캔 속도라는 것
으로 제어합니다. 스캔 속도는 CPU에서 데이터를
GD 패킷
전송하거나 수신하기 전 사용자 프로그램 사이클의
횟수입니다. 데이터 전송과 수신은 각 경우에 사이 GD 패킷은 패킷 헤더와 하나 이상의 글로벌 데이
클 제어 포인트에서 전송자와 수신자 간에 동시에 터 구성요소(GD 구성요소)로 이루어집니다.
발생합니다. 즉, 예컨대 프로세스 이미지 업데이트
Z 패킷 헤더(8 바이트)
와 같이 주기적인 프로그램 실행 후 그리고 새로운
프로그램 사이클 시작 전에 발생합니다. Z 첫 번째 GD 구성요소의 ID(2 바이트)

데이터는 GD 서클로 그룹화된 CPU 간에 데이터 Z 첫 번째 GD 구성요소의 사용자 데이터


패킷(GD 패킷) 형태로 교환됩니다. (x 바이트)

Z 두 번째 GD 구성요소의 ID(2 바이트)


GD 서클
Z 두 번째 GD 구성요소의 사용자 데이터
공유 GD 패킷을 교환하는 CPU들이 GD 서클을
(x 바이트)
형성합니다. GD 서클은 다음 중의 하나가 될 수 있
습니다. Z 기타
Z 하나의 CPU에서 GS 패킷을 다른 여러 CPU에 각 GD 구성요소는 2 바이트의 설명과 실제 넷 데
전송하고 이들 CPU는 이를 수신하는 CPU의 일 이터로 구성됩니다. 1 바이트 메모리를 전송하기 위
방 연결. 해 GD 패킷에는 3 바이트가 필요하고, 한 워드의 메
Z 두 CPU가 서로 간에 GD 패킷을 전송할 수 있는 모리에는 4 바이트가 필요하고, 한 더블워드에는 6
CPU 간의 쌍방 연결. 바이트가 필요합니다. 부울 변수는 넷 데이터로 1

표 20.12 글로벌 데이터 통신의 CPU 리소스


GD 리소스 CPU 312 CPU 315 CPU 412 CPU 416
CPU 313 CPU 317 CPU 414 CPU 417
CPU 314
최대 개수 CPU3xxC
CPU당 GD 서클 4 8 8 16
CPU당 수신하는 GD 패킷 4 8 16 32
서클당 수신하는 GD 패킷 1 1 2 2
CPU당 전송하는 GD 패킷 4 8 8 16
서클당 전송하는 GD 패킷 1 1 1 1
GD 패킷의 최대 크기 22 바이트 22 바이트 64 바이트 64 바이트
최대 데이터 일관성 22 바이트 22 바이트 1 변수 1 변수

335
20 메인 프로그램

바이트를 차지하므로, 1 바이트 크기의 변수와 동일 글로벌 데이터 테이블


한 스페이스가 필요합니다. 2 바이트를 가진 타이머 테이블을 작성하여 GD 통신을 구성할 수 있습니
와 카운터 값은 GD 패킷에서 각각 4 바이트를 차지 다. 먼저 SIMATIC 관리자 또는 네트워크 구성 도
합니다. 구에서 선택한 MPI 서브네트워크에 대한 아이콘을
GD 구성요소는 또한 주소 영역이 될 수 있습니 클릭한 후, 옵션 → 글로벌 데이터 정의를 선택하여 빈
다. 예를 들면, MB 0:15는 메모리 바이트 MB 0에서 테이블을 호출할 수 있습니다. 이때, 열리는 프로젝
MB 5까지의 영역을 나타냅니다. DB20.DBW14:8 트 선택 창의 왼쪽에서 스테이션을 선택하고 오른
은 DB 20에 위치한 데이터 영역을 나타내는데, 데 쪽에서 CPU를 선택합니다. ‘OK’ 를 누르면 이
이터 워드 DBW 14에서 시작하고 8 데이터 워드로 CPU는 글로벌 데이터 테이블에 적용됩니다.
구성된다는 것을 의미합니다. GD 통신에 참여하는 다른 CPU에도 동일한 방법
GD 패킷의 최대 크기는 S7-300에서 32 바이트 으로 진행합니다. 글로벌 데이터 테이블은 최대 15
이고 S7-400에서 64 바이트입니다. S7-300에서 개의 CPU 열을 포함할 수 있습니다.
최대 22 바이트를 포함하고 S7-400에서 최대 54 바 CPU 간의 데이터 전송을 구성하려면, 전송 CPU
이트를 포함하는 단 하나의 GD 구성요소의 전송으 아래에서 첫 번째 행을 선택하고 값을 전송할 주소
로 패킷당 최대 넷 데이터 바이트를 달성할 수 있습 를 지정한 후 RETURN 키를 눌러서 종료합니다.
니다.
편집 → 전송자를 선택하여, ‘>’ 로 표시된 전송
할 값을 설정합니다. 그리고 수신자 CPU 아래의 한
데이터 일관성 행에 값을 적용할 주소를 입력합니다. 이때, ‘수신
데이터 일관성은 하나의 GD 구성요소에 적용됩 자’ 속성은 기본값으로 설정됩니다. 여기서 타이머
니다. GD 구성요소가 CPU 특정 변수에 덮어 쓰게 와 카운터 기능만 전송자로 사용할 수 있고, 각 타이
되면, 표 20.12에 지정된 영역이 적용됩니다. 머 또는 카운터 함수에서 수신자는 워드 길이의 주
소이어야 합니다.
GD 구성요소가 데이터 일관성 길이보다 클 경우,
첫 번째 바이트에서 시작하여 해당 길이의 일관성 하나의 행에 여러 개의 수신자를 포함할 수 있지
있는 데이터를 가진 블록이 형성됩니다. 만, 전송자는 단 하나입니다(표 20.13 참조). 이 행
을 채운 후 GD 테이블 → 컴파일을 선택합니다.

20.5.2 GD 통신의 구성 컴파일한 후(단계 1), 생성된 시스템 데이터는 글


로벌 데이터 통신에 충분합니다. GD 상태(GD 연결
요구 조건 상태)와 스캔 속도도 구성할 경우, 두 번째로 GD 테
이블을 컴파일해야 합니다.
GD 통신을 구성하려면, 이미 생성한 프로그램이
있어야 하고, 사용할 수 있는 MPI 서브네트워크가
있어야 하며, S7 스테이션을 이미 구성한 상태이어 GD ID
야 합니다. 최소한 스테이션에서 CPU를 사용할 수 오류 없이 컴파일하면 STEP 7은 ‘GD ID’ 열을
있어야 합니다. CPU의 속성 창의 ‘일반’ 탭에서 채웁니다. GD ID는 전송된 데이터가 GD 서클, GD
MPI 인터페이스의 ‘속성’ 버튼을 누르거나, 하드 패킷, GD 구성요소로 구성되는 방식을 보여 줍니
웨어 구성 도구에서 CPU 행을 더블 클릭하거나, 다. 예를 들면, GD ID ‘GD 2.1.3’ 은 GD 서클 2,
MPI 인터페이스 하위 모듈의 행을 더블 클릭하여, GD 패킷 1, GD 구성요소 3에 해당합니다. 이때, 글
MPI 주소를 설정하고 CPU가 연결된 MPI 서브네트 로벌 데이터 테이블의 CPU 열에서 CPU당 리소스
워크를 선택할 수 있습니다. 할당(GD 서클의 수)을 볼 수 있습니다.

336
20.5 글로벌 데이터 통신

그림 20.22 GD 서클의 예

GD 상태 스캔 속도
GD 통신 서비스는 CPU 운영체제에서 상당한 실
컴파일한 후, 보기 → GD 상태를 선택하여 통신 상
행 시간이 걸리고, MPI 버스에서 전송하는데 시간이
태의 주소를 글로벌 데이터 테이블에 입력할 수 있
걸립니다. 이러한 ‘통신 부하’ 를 최소화하기 위
습니다. 전체 상태(GST)는 테이블에 있는 모든 통신
해, ‘스캔 속도’ 를 지정할 수 있습니다. 스캔 속
연결의 상태를 보여 줍니다. GD 상태(GDS)는 통신 도는 데이터(보다 정확히 말하면 GD 패킷)를 전송
연결(전송된 GD 패킷)의 상태를 보여 줍니다. 이 상 하거나 수신하기 전의 프로그램 사이클의 회수를 지
태는 각 경우에 더블 워드로 표시됩니다. 정합니다.

표 20.13 상태와 스캔 속도를 가진 GD 테이블의 예


GD 스테이션 417 ₩ 스테이션 417 ₩ 스테이션 416₩ 스테이션 315 슬 스테이션
식별자 CPU417 (3) CPU414 (4) CPU 416 (5) 레이브 ₩ 314CP₩
CPU315 (7) CPU314 (10)
GST MD100 MD100 MD100 DB10.DBD200 DB10.DBD200
GDS 1.1 DB9.DBD0 MD92 DB10.DBD204 DB10.DBD204
SR 1.1 44 0 44 8 8
GD 1.1.1 >DB9.DBW10 MW90 DB10.DBW208 DB10.DBW208
GDS 2.1 MD96 MD96
SR 2.1 44 23 0 0 0
GD 2.1.1 >Z10:10 DB19.DBW20:10
GDS 3.1 MD96
SR 3.1 0 0 44 8 8
GD 3.1.1 >MW98 DB10.DBW220 DB10.DBW210

337
20 메인 프로그램

스캔 속도를 사용하는 경우 데이터는 매 프로그램 20.5.3 데이터 전송용 함수


사이클마다 업데이트되지 않으므로, 이런 방식의
S7-400 시스템에서는 사용자 프로그램에서도
통신으로 긴급한 데이터를 보내면 안됩니다. GD 통신을 제어할 수 있습니다. 글로벌 데이터의 주
기적 전송에 대한 부가 또는 대체 방법으로써, 아래
오류 없이 첫 번째로 컴파일한 후 보기 → 스캔 속
와 같은 SFC를 사용하여 GD 패킷을 전송하거나 수
도를 선택하여 각 GP 패킷과 각 CPU에 대한 스캔
신할 수 있습니다.
속도를 정의할 수 있습니다. 사용자 프로그램이 로
딩되지 않은 ‘빈’ CPU인 경우에 대략 매 10ms Z SFC 60 GD_SND
마다 GD 패킷을 전송하고 수신하는 것으로 표준 GD 패킷을 전송합니다.
스캔 속도가 설정됩니다. 사용자 프로그램이 로딩
Z SFC 61 GD_RCV
되는 경우에 이 시간 간격은 증가합니다.
GD 패킷을 수신합니다.
입력할 수 있는 스캔 속도의 범위는 1ms에서
위의 SFC에 대한 파라미터는 표 20.14에 수록되
255ms입니다. 스캔 속도가 감소하면, CPU에 대한 어 있습니다. 이러한 SFC를 사용하기 위한 전제 조
통신 부하는 증가합니다. 통신 부하를 허용 한계 안 건은 글로벌 데이터 테이블을 구성하는 것입니다.
에서 유지하려면, S7-300인 경우 스캔 속도와 사이 이 테이블을 컴파일한 후, STEP 7은 파라미터 지정
클 시간의 곱이 60ms보다 크고 S7-400인 경우 에 필요한 GD 서클과 GD 패킷의 번호를 ‘GS 식
10ms보다 크도록 전송 CPU의 스캔 속도를 설정합 별자’ 열에 표시합니다.
니다. 수신 CPU의 경우 GD 패킷의 손실을 방지하
SFC 60 GD_SND는 GD 패킷을 CPU의 시스템 메
기 위해 이 곱은 전송 CPU보다 작아야 합니다.
모리에 입력하고 전송을 시작합니다. SFC 61 GD_
이벤트에 따라 GD 패킷을 SFC로만 전송하거나 RCV는 시스템 메모리로부터 GD 패킷을 가져옵니
다. GD 테이블에서 GD 패킷의 스캔 속도가 0보다
수신하려는 경우, 스캔 속도를 0으로 설정하여 해당
큰 값으로 지정한 경우 주기적 전송이 수행됩니다.
GD 패킷의 교환을 비활성화합니다.
SFC 60과 61을 사용하여 GD 패킷을 전송할 때
GD 상태와 스캔 속도를 구성한 후, GD 테이블을
전체 GD 패킷의 데이터 일관성을 보장하려면, SFC
두 번째로 컴파일해야 합니다. 그 다음에 STEP 7은
60 또는 61를 처리하는 동안 전송과 수신 측 모두에
컴파일된 데이터를 시스템 데이터 개체 안에 입력합
서 우선 순위가 높은 인터럽트와 비동기 에러를 비
니다. PLC → 모듈에 다운로드를 선택하여 GD 테이블 활성화하거나 지연시켜야 합니다.
을 연결된 CPU에 전송하면 GD 통신이 설정됩니다.
이때, SFC를 둘 다 호출할 필요는 없지만, ‘둘
또한 모든 하드웨어 및 파라미터 설정을 포함하는 다’ 사용할 수도 있니다. 예를 들면, SFC 60 GD_
시스템 데이터 개체를 전송해도 GD 통신이 설정됩 SND를 사용하여 이벤트에 따라 GD 패킷을 전송할
니다. 수 있지만, 수신은 주기적으로 할 수 있습니다.

표 20.14 GD 통신용 SFC 파라미터


파라미터 SFC에 존재 선언 데이터 형식 내용, 설명
CIRCLE_ID 60 61 INPUT BYTE GD 사이클의 번호
BLOCK_ID 60 61 INPUT BYTE 전송하거나 수신할 GD 패킷의 번호
RET_VAL 60 61 RETURN INT 오류 정보

338
20.6 S7 기본 통신

20.6 S7 기본 통신 시스템 함수는 필요한 통신 연결을 동적으로 생성


하고, 작업을 완료한 후 연결을 다시 해제합니다(프

20.6.1 스테이션 내부 S7 기본 통신 로그래밍 가능). 송신 장치 또는 수신 장치에서 리소


스의 부족 때문에 연결을 구축하지 못하면, ‘리소
기본 사항 스가 잠시 부족함’ 이란 메시지가 나타납니다. 이
스테이션 내부 S7 기본 통신을 사용하면, 때, 전송을 재가동해야 합니다. 여기서 두 통신 파트
SIMATIC 스테이션 안에서 프로그래밍 가능한 모듈 너 간에 각 방향으로 단 하나의 연결만 가능합니다.
간에 데이터를 교환할 수 있습니다. 여기서 필요한
런타임 시에 블록 파라미터를 수정하여 다른 통신
통신 함수는 CPU의 운영체제 내의 SFC입니다. 이
러한 SFC는 필요한 경우 스스로 통신 연결을 구축 연결에 대해 하나의 시스템 함수를 사용할 수 있습
합니다. 따라서, 스테이션 내부 연결은 커넥션 테이 니다. SFC는 자신에게 인터럽트를 걸 수는 없습니
블을 사용하여 구성되지 않습니다( ‘구성되지 않은 다. SFC 중 하나를 사용하는 프로그램 부분은 정지
연결을 통한 통신’ , SFC 통신). 모드에서만 수정할 수 있고, 그 다음에 콜드 리스타
스테이션 내부 S7 기본 통신은 예컨대 마스터 트 또는 웜 리스타트를 실행해야 합니다.
CPU와 슬레이브 CPU 간에 프로피버스 DP를 통한
주기적 데이터 교환과 병행하여 이벤트 구동 데이터
사용자 데이터, 데이터 일관성
전송 방식으로 이루어질 수 있습니다(그림 20.23 참
조). 이러한 SFC는 사용자 데이터를 최대 76 바이트
까지 전송할 수 있습니다. 전송 방향과 상관 없이

노드 주소 지정, 연결 CPU의 운영체제는 그 자체로 일관성 있는 블록으로

노드 ID는 I/O 주소에서 따옵니다. LADDR 파라미 사용자 데이터를 조정합니다. 일관성 있게 전송되
터에서 모듈 시작 주소를 지정하고, IOID 파라미터 는 데이터의 길이는 CPU 특정 변수입니다. 두 개의
에서 이 주소가 입력 영역인지 출력 영역인지를 지 CPU가 데이터를 교환하는 경우, ‘수동적’ CPU
정합니다. 의 블록 크기는 데이터 일관성을 결정합니다.

표 20.15 스테이션 내부 S7 기본 통신의 SFC 파라미터


파라미터 포함하는 SFC 선언 데이터 형식 내용, 설명
REQ 72 73 74 INPUT BOOL REQ = ‘1’ 인 경우 작업 시작
CONT 72 73 - INPUT BOOL CONT = ‘1’ : 작업이 종료한 후에도
연결 유지
IOID 72 73 74 INPUT BYTE B#16#54 = 입력 영역,
B#16#55 = 출력 영역
LADDR 72 73 74 INPUT WORD 모듈 시작 주소
VAR_ADDR 72 73 - INPUT ANY 파트너 CPU의 데이터 영역
SD - 73 - INPUT ANY 전송 데이터를 포함하는 자체 CPU의 데
이터 영역
RET_VAL 72 73 74 RETURN INT 오류 정보
BUSY 72 73 74 OUTPUT BOOL BUSY = ‘1’ 인 경우 작업이 진행 중

RD 72 - - OUTPUT ANY 수신 데이터를 받아들일 자체 CPU의 데
이터 영역

339
20 메인 프로그램

SIMATIC S7 station SIMATIC S7 station


User program in the CPU CPU Module
Operating Operating
system system

埮愯窫͑櫶冶ͫ͑ Re- Re- 埮愯窫͑櫶冶ͫ͑


笾犢͑枪癒決晞櫖昢垚͑斲殯沖͑稊嵢勾岮櫖昢͑ sour- sour- 洊埲͑枪癒決晞櫖昢垚͑殺欇熺洢儆͑
΄ͷʹ͑笾犢汊͑皻空͑洊暧穯城埪͟ ces ces 塶決瘶庂͑汾犢͑嬖垚͑沗昷穯城埪͟

Data SFC Data


72/73

Subnet
PROFIBUS

그림 20.23 스테이션 내부 S7 기본 통신

스테이션 내부 S7 기본 통신의 구성 위의 SFC의 파라미터는 표 20.15에 수록되어 있


스테이션 내부 S7 기본 통신은 동적 연결을 통해 습니다.
데이터 전송을 처리하기 때문에 구성할 필요가 없다
는 점에서 특별한 경우입니다. 간단하게 기존 프로 SFC 72 I_GET
피버스 서브네트워크를 사용하거나, SIMATIC 관리 데이터를 읽습니다.
자에서 서브네트워크를 만들거나(프로젝트 개체를 REQ = ‘1’ 이고 BUSY = ‘0’ 일 때 작업이 시
선택한 후 삽입 → 서브네트워크 → 프로피버스를 선택) 작됩니다( ‘첫 번째 호출’ ). 작업이 진행되는 동
아니면 네트워크 구성 도구에서 만듭니다( 2.4 “네 안, BUSY는 ‘1’ 로 설정됩니다. REQ 파라미터를
트워크 구성” 참조). 변경해도 결과에 더 이상 영향을 미치지 못 합니다.
예: CPU 315-2DP를 마스터로 가진 분산 I/O를 작업이 완료되면 BUSY는 ‘0’ 으로 재설정됩니다
구성하였다고 가정합시다. 여기서 CPU 315-2DP . REQ가 여전히 ‘1’ 이면 작업은 즉시 재가동됩
를 하나 더 ‘지능형’ 슬레이브로 사용합니다. 그 니다.
러면, 두 개의 컨트롤러에서 스테이션 내부 S7 기본
읽기 프로시저가 시작되면 파트너 CPU의 운영체
통신을 사용하여 데이터를 읽고 쓸 수 있습니다.
제는 요청한 데이터를 모아서 전송합니다. SFC를
호출하면 수신 데이터를 대상 영역으로 전송합니
20.6.2 스테이션 내부 S7 기본 통신용 다. 이때, RET_VAL 파라미터는 전송된 바이트 수를
시스템 함수 표시합니다.
아래의 시스템 함수는 동일한 스테이션 안에 있는
CONT가 ‘0’ 이면 통신 링크는 끊어집니다.
두 개의 CPU 간에 데이터 전송을 처리합니다.
CONT가 ‘1’ 이면 통신 링크가 유지됩니다. 그리
Z SFC 72 I_GET 고 통신 파트너가 정지 모드일 때도 데이터를 읽습
데이터를 읽습니다. 니다.
Z SFC 73 I_PUT
RD 및 VAR_ADDR 파라미터는 전송할 데이터를
데이터를 기록합니다.
읽거나 수신한 데이터를 기록할 영역에 대해 기술합
Z SFC 74 I_ABORT 니다. 실제 파라미터는 주소, 변수 또는 ANY 포인터
연결을 끊습니다. 로 주소를 지정한 데이터 영역일 수 있습니다. 전송

340
20.6 S7 기본 통신

데이터와 수신 데이터는 데이터 형식이 동일한지 확 20.6.3 스테이션 외부 S7 기본 통신


인하지 않습니다.
기본 사항

SFC 73 I_PUT 스테이션 외부 S7 기본 통신을 사용하면,


데이터를 기록합니다. SIMATIC S7 스테이션 간에 이벤트에 따라 데이터
를 교환할 수 있습니다. 이때 스테이션들은 MPI 서
REQ = ‘1’ 이고 BUSY = ‘0’ 일 때 작업이 시
브네트워크를 통해 서로 연결되어 있어야 합니다.
작됩니다( ‘첫 번째 호출’ ). 작업이 진행되는 동
여기서 필요한 통신 함수는 CPU의 운영체제 내부
안, BUSY는 ‘1’ 로 설정됩니다. REQ 파라미터를
의 SFC입니다. 이러한 SFC는 필요한 경우 스스로
변경해도 결과에 더 이상 영향을 미치지 못 합니다.
통신 연결을 구축합니다. 따라서, 스테이션 외부
작업이 완료되면 BUSY는 ‘0’ 으로 재가동됩니다. 연결은 커넥션 테이블을 사용하여 구성되지 않습
REQ가 여전히 ‘1’ 이면 작업은 즉시 재가동됩니 니다( ‘구성되지 않은 연결을 통한 통신’ ).
다.
스테이션 외부 S7 기본 통신은 예를 들어 주기적
쓰기 프로시저가 시작되면 운영체제는 첫 번째 호 글로벌 데이터 통신과 병행하여 이벤트 구동 데이
출에서 모든 데이터를 소스 영역으로부터 내부 버퍼 터 전송을 실행할 수 있습니다.
로 전송하고, 링크 내의 파트너에게 이를 보냅니다.
여기서 수신자는 데이터를 VAR_ADDR 데이터 영역 노드 주소 지정, 연결
에 기록합니다. 그 다음에 BUSY는 ‘0’ 으로 설정
스테이션 외부 S7 기본 통신을 위한 시스템 함수
됩니다. 수신 파트너가 정지 모드일 때도 데이터는
는 동일한 MPI 서브네트워크 상에 있는 노드의 주소
기록됩니다. 를 지정합니다. 노드 ID는 MPI 주소에서 따옵니다
(DEST_ID 파라미터).
SD 및 VAR_ADDR 파라미터는 전송할 데이터를
읽거나 수신한 데이터를 기록할 영역에 대해 기술합 이들 시스템 함수는 필요한 통신 링크를 동적으로
니다. 실제 파라미터는 주소, 변수 또는 ANY 포인터 설정하고, 그렇게 지정된 경우 작업을 실행한 후 연
로 주소를 지정한 데이터 영역일 수 있습니다. 전송 결을 끊습니다. 전송자 또는 수신자에서 리소스가
데이터와 수신 데이터는 데이터 형식이 동일한지 확 부족하기 때문에 연결을 구축할 수 없다면 ‘리소
인하지 않습니다. 스가 잠시 부족함’ 이라는 메시지가 보고됩니다. 그
경우 전송을 재시도해야 합니다. 두 통신 파트너 간
에는 각 방향으로 단 하나의 연결만 가능합니다.
SFC 74 I_ABORT
연결을 끊습니다. CPU가 실행 모드에서 정지 모드로 바뀔 때 작동
중인 모든 연결(X_RECV를 제외한 모든 SFC)은 해
REQ = ‘1’ 이면 지정된 통신 파트너에 대한 연
제됩니다.
결을 끊습니다. I_ABORT로는 동일한 스테이션에서
I_GET 또는 I_PUT로 연결한 것만 끊을 수 있습니다. 런타임 시에 블록 파라미터를 수정함으로써 다른
통신 링크용 시스템 함수를 사용할 수 있습니다.
작업이 진행되는 동안 BUSY는 ‘1’ 로 설정됩 SFC는 자신에게 인터럽트를 걸 수는 없습니다. 사
니다. REQ 파라미터를 변경해도 결과에 더 이상 영 용자는 스테이션 외부 S7 기본 통신을 위한 SFC 중
향을 미치지 못 합니다. 작업이 완료되면 BUSY는 하나를 사용하는 프로그램 부분을 정지 모드에서만
‘0’ 으로 재설정됩니다. REQ가 여전히 ‘1’ 이면 수정할 수 있습니다. 그 다음에는 콜드 리스타트 또
작업은 즉시 재가동됩니다. 는 웜 리스타트를 실행해야 합니다.

341
20 메인 프로그램

SIMATIC S7 station SIMATIC S7 station


User program in the CPU CPU CPU User program in the CPU
埮愯窫͑櫶冶ͫ͑ Operating Operating 埮愯窫͑櫶冶ͫ͑
笾犢͑枪癒決晞櫖昢垚͑斲殯沖͑稊嵢勾岮櫖昢͑ system system 洊埲͑枪癒決晞櫖昢垚͑殺欇熺洢儆͑塶決瘶庂͑
΄ͷʹ͑笾犢汊͑皻空͑洊暧穯城埪͟ 汾犢͑嬖垚͑沗昷穯城埪͟
Data SFC Data
67/68 Re- Re-
sour- sour-
ces ces
檗愯窫͑櫶冶ͫ͑ 檗愯窫͑櫶冶ͫ͑
斲殯沖͑稊嵢勾岮櫖昢͑΄ͷʹ͑笾犢汊͑皻空͑ 斲殯沖͑稊嵢勾岮櫖昢͑΄ͷʹ͑笾犢汊͑皻空͑
洊暧穯城埪͟ 洊暧穯城埪͟
Data SFC SFC Data
65/66 65/66

Subnet
MPI

그림 20.24 스테이션 외부 S7 기본 통신

사용자 데이터, 데이터 일관성 성 도구로 세 개의 CPU를 예를 들어 MPI 서브네트


스테이션 외부 S7 기본 통신을 위한 SFC는 최대 워크를 통해 ‘네트워킹된’ 것으로 구성합니다. 그
76 바이트의 사용자 데이터를 전송합니다. CPU의 러면 이제 스테이션 외부 S7 기본 통신을 사용하여
운영체제는 사용자 데이터를 전송 방향과 상관없이 세 개의 컨트롤러에서 데이터를 교환할 수 있습니
자체 안에서 일관성 있는 블록으로 결합합니다. 일 다.
관성있게 전송하는 데이터의 길이는 CPU 특정 변수
입니다.
20.6.4 스테이션 외부 S7 기본 통신용
두 CPU가 X_GET 또는 X_PUT를 통해 데이터를 시스템 함수
교환하는 경우, ‘수동적' CPU의 블록 크기는 전송 아래의 시스템 함수는 다른 스테이션에 있는 파트
된 데이터의 데이터 일관성을 결정합니다. 너 간의 데이터 전송을 처리합니다.

SEND/RECEIVE 연결인 경우에 호출의 모든 데이 Z SFC 65 X_SEND


터는 일관성이 있습니다. 데이터를 전송합니다.

Z SFC 66 X_RCV
스테이션 외부 S7 기본 통신의 구성 데이터를 수신합니다.
스테이션 외부 S7 기본 통신은 동적 연결을 통해 Z SFC 67 X_GET
데이터 전송을 처리하기 때문에 구성할 필요가 없다 데이터를 읽습니다.
는 점에서 특별한 경우입니다. 사용자는 간단하게
Z SFC 68 X_PUT
기존 MPI 서브네트워크를 사용하거나 서브네트워
데이터를 기록합니다.
크를 직접 구축할 수 있습니다.
Z SFC 69 X_ABORT
예: 각 부분에 CPU 416을 하나씩 가진 분리된
연결을 끊습니다.
S7-400 마운팅 랙이 있다고 가정합시다. 그리고,
CPU 314를 가진 S7-300 스테이션을 MPI 케이블을 위의 SFC의 파라미터는 표 20.16에 수록되어 있
통해 S7-400 중의 하나에 연결합니다. 하드웨어 구 습니다.

342
20.6 S7 기본 통신

SFC 65 X_SEND 사할 수 있는 전송 데이터에 ID를 할당할 수 있습니


데이터를 전송합니다. 다.
REQ = ‘1’ 이고 BUSY = ‘0’ 일 때 작업이 시
SD 파라미터는 전송할 데이터를 읽어야 하는 영
작됩니다( ‘첫 번째 호출’ ). 작업이 진행 중일 때
역에 대해 기술합니다. 실제 파라미터들은 주소, 변
BUSY는 ‘1’ 로 설정되며, REQ 파라미터를 변경
수 또는 ANY 포인터로 주소를 지정한 데이터 영역
해도 결과에 더 이상 영향을 미치지 못합니다. 작업
일 수 있습니다. 전송 데이터와 수신 데이터의 데이
이 완료되면, BUSY는 ‘0’ 으로 재설정됩니다.
터 형식이 동일한지 확인하지 않습니다.
REQ가 여전히 ‘1’ 이면 작업은 즉시 재가동됩니
다.
SFC 66 X_RCV
SFC 65 X_SEND를 첫 번째 호출할 때, 운영체 데이터를 수신합니다.
제는 모든 데이터를 소스 영역에서 내부 버퍼로 전
수신 데이터는 내부 버퍼에 저장됩니다. 여기서
송한 후 파트너 CPU로 전송합니다.
다수의 패킷을 도착하는 순서대로 대기열에 저장할
전송 프로시저가 진행되는 동안 BUSY는 ‘1’ 수 있습니다.
입니다. 파트너 CPU가 데이터를 받았다는 신호를
EN_DT = ‘0’ 으로 설정하면 데이터 수신 여
보내면, BUSY는 ‘0’ 으로 설정되고 전송 작업은
부를 확인할 수 있습니다. 만일 그렇게 설정하면,
종료됩니다.
NDA는 ‘1’ 이고 RET_VAL은 수신 데이터의 바
CONT가 ‘0’ 이면 연결은 끊어지고 각 CPU 리 이트 수를 보여주며 REQ_ID는 SFC 65 X_SEND의
소스는 다른 통신 링크에 전용할 수 있습니다. 해당 파라미터와 동일합니다. EN_DT가 ‘1’ 일
CONT가 ‘1’ 이면 연결은 유지됩니다. REQ_ID 파 때, SFC 66 X_RCV는 첫 번째(가장 먼저 수신한)
라미터를 통해 사용자는 SFC X_RCV를 사용하여 검 패킷을 대상 영역에 전달합니다. 이때, NDA는

표 20.16 스테이션 외부 S7 기본 통신의 SFC 파라미터


파라미터 포함하는 SFC 선언 데이터 형식 내용, 설명
REQ 65 - 67 68 69 INPUT BOOL REQ = ‘1’ 인 경우 작업 시작
CONT 65 - 67 68 - INPUT BOOL CONT = ‘1’ : 작업을 완료한 후
에 연결 유지
DEST_ID 65 - 67 68 69 INPUT WORD 파트너의 노드 ID(MPI 주소)
REQ_ID 65 - - - - INPUT DWORD 작업 ID
VAR_ADDR - - 67 68 - INPUT ANY 파트너 CPU의 데이터 영역
SD 65 - - 68 - INPUT ANY 전송 데이터를 포함하는 자체 CPU
의 데이터 영역
EN_DT - 66 - - - INPUT BOOL ‘1’ 인 경우: 수신 데이터를 받아
들임
RET_VAL 65 66 67 68 69 RETURN INT 오류 정보
BUSY 65 - 67 68 69 OUTPUT BOOL BUSY = ‘1’ 인 경우 작업이 진행
중임
REQ_ID - 66 - - - OUTPUT DWORD 작업 ID
NDA - 66 - - - OUTPUT BOOL ‘1’ 인 경우: 데이터를 수신함
RD - 66 67 - - OUTPUT ANY 수신 데이터를 받아들일 자체 CPU
의 데이터 영역

343
20 메인 프로그램

‘1’ 이고 RET_VAL은 전송한 바이트 수를 나타냅 RD 및 VAR_ADDR 파라미터는 전송할 데이터를


니다. EN_DT가 ‘1’ 이지만 내부 대기열에 데이 읽거나 수신한 데이터를 기록할 영역에 대해 기술합
터가 없으면 NDA는 ‘0’ 입니다. 니다. 여기서 실제 파라미터들은 주소, 변수 또는
ANY 포인터로 주소를 지정한 데이터 영역일 수 있
콜드 리스타트 또는 웜 리스타트 시, 대기열에 있
습니다. 전송 데이터와 수신 데이터의 데이터 형식
는 모든 데이터 패킷은 거부됩니다.
이 동일한지 확인하지 않습니다.
연결이 끊기거나 재가동한 경우, EN_DT = ‘0’
으로 이미 데이터 수신 여부를 확인하였다면 대기열
SFC 68 X_PUT
에서 가장 먼저 수신한 데이터가 유지됩니다. 그렇
데이터를 기록합니다.
지 않으면, 다른 대기열 항목과 마찬가지로 거부됩
니다. REQ = ‘1’ 이고 BUSY = ‘0’ 일 때 작업이 시
작됩니다( ‘첫 번째 호출’ ). 작업이 진행 중일 때
RD 파라미터는 수신 데이터를 기록해야 하는 영
BUSY는 ‘1’ 로 설정되며, REQ 파라미터를 변경
역에 대해 기술합니다. 여기서 실제 파라미터들은
해도 결과에 더 이상 영향을 미치지 못합니다.
주소, 변수 또는 ANY 포인터로 주소를 지정한 데이
터 영역일 수 있습니다. 작업이 완료되면 BUSY는 ‘0’ 으로 재설정됩니
다. REQ가 여전히 ‘1’ 이면 작업은 즉시 재가동
전송 데이터와 수신 데이터의 데이터 형식이 동일
됩니다.
한지 확인하지 않습니다. 수신 데이터가 동일한 데
이터 형식이 아니면, ‘빈’ ANY 포인터(NIL 포인 쓰기 프로시저가 시작되면 운영체제는 SFC 68
터)를 X_RCV의 RD 파라미터로써 사용할 수 있습니 X_PUT를 첫 번째 호출할 때 모든 데이터를 SD 파라
다. 미터에 지정된 소스 영역에서 내부 버퍼로 전송하
고, 그 다음 파트너 CPU에게 보냅니다. 여기서, 파
트너 CPU의 운영체제는 수신 데이터를 VAR_ADDR
SFC 67 X_GET
데이터를 읽습니다. 파라미터에서 지정된 데이터 영역에 기록합니다.
REQ = ‘1’ 이고 BUSY = ‘0’ 일 때 작업이 시 그 다음에 BUSY는 ‘0’ 으로 설정됩니다.
작됩니다( ‘첫 번째 호출’ ). 작업이 진행 중일 때 통신 파트너가 정지 모드일 때에도 데이터를 기록
BUSY는 ‘1’ 로 설정되며, REQ 파라미터를 변경 합니다.
해도 결과에 더 이상 영향을 미치지 못합니다.
RD 및 VAR_ADDR 파라미터는 전송할 데이터를
작업이 완료되면 BUSY는 ‘0’ 으로 재설정됩니 읽거나 수신한 데이터를 기록할 영역에 대해 기술합
다. REQ가 여전히 ‘1’ 이면 작업은 즉시 재가동 니다. 여기서 실제 파라미터들은 주소, 변수 또는
됩니다. ANY 포인터로 주소를 지정한 데이터 영역일 수 있
읽기 프로시저가 시작되면 파트너 CPU의 운영체 습니다. 전송 데이터와 수신 데이터는 데이터 형식
제는 VAR_ADDR 파라미터에서 요청한 데이터를 모 이 동일한지 확인하지 않습니다.
아서 전송합니다. SFC 67 X_GET을 호출할 때, 수신
데이터는 RD 파라미터에서 지정한 대상 영역에 입 SFC 69 X_ABORT
력됩니다. 이때, RET_VAL 파라미터는 전송된 바이 연결을 끊습니다.
트 수를 표시합니다.
REQ = ‘1’ 이면 지정된 통신 파트너에 대한 기
CONT가 ‘0’ 이면 통신 링크는 끊어집니다. 존 연결을 끊습니다. SFC X_ABORT는 SFC X_
CONT가 ‘1’ 이면 연결은 유지됩니다. 이때 통신 SEND, X_GET 또는 X_PUT를 사용하여 CPU의 자체
파트너가 정지 모드일 때도 데이터를 읽습니다. 스테이션에서 만들어진 연결만 끊을 수 있습니다.

344
20.7 S7 통신

SIMATIC S7 station SIMATIC S7 station


Connection table CPU CPU Connection table
Operating Operating
system system

User program in the CPU User program in the CPU


埮愯窫͑櫶冶ͫ͑ 埮愯窫͑櫶冶ͫ͑
笾犢͑枪癒決晞櫖昢垚͑斲殯沖͑稊嵢勾岮櫖昢͑ 洊埲͑枪癒決晞櫖昢垚͑殺欇熺洢儆͑塶決瘶庂͑
ͷ΄͠΄ͷͳ͑笾犢汊͑皻空͑洊暧穯城埪͟ 汾犢͑嬖垚͑沗昷穯城埪͟

Data FB Data
SFB Re- Re-
14/15 sour- sour-
ces ces
檗愯窫͑櫶冶ͫ͑ 檗愯窫͑櫶冶ͫ͑
斲殯沖͑稊嵢勾岮櫖昢͑ͷͳ͠΄ͷͳ͑笾犢汊͑皻空͑ 斲殯沖͑稊嵢勾岮櫖昢͑ͷͳ͠΄ͷͳ͑笾犢汊͑皻空͑
洊暧穯城埪͟ 洊暧穯城埪͟
Data FB FB Data
SFB SFB
8/9 8/9
12/13 12/13

Subnet
MPI, PROFIBUS, Industrial Ethernet

그림 20.25 S7 통신

20.7 S7 통신 스 데이터 블록(DB)을 자동으로 생성할 수 있습니


다.

20.7.1 기본 사항 S7-300에서 통신 함수는 표준 라이브러리의 통

S7 통신을 사용하면 SIMATIC S7 스테이션 간에 신 블록에서 찾을 수 있는 표준 함수 블록입니다. 사


대량의 데이터를 전송할 수 있습니다. 스테이션은 용하려는 함수 블록을 블록 컨테이너로 복사한 후

서브네트워크를 통해 서로 연결됩니다. 이러한 서 ‘보통’ 함수 블록처럼 사용합니다.

브네트워크에는 MPI 서브네트워크, 프로피버스 서


브네트워크 또는 이더넷 서브네트워크가 있습니다. S7 통신의 구성
통신 연결은 정적이고, 커넥션 테이블에서 구성됩 S7 통신을 위한 전제 조건은 통신 링크를 정의한
니다( ‘구성된 연결을 통한 통신’ ). 커넥션 테이블을 구성하는 것입니다.

S7-400에서, 통신 함수는 CPU의 운영체제 내부 통신 링크는 각 통신 파트너에 대한 연결 ID로 지


에 통합된 시스템 함수 블록 SFB입니다. 이와 관련 정됩니다. STEP 7은 연결 테이블을 컴파일할 때 연
된 인스턴스 데이터 블록(DB)은 사용자 메모리에 있 결 ID를 지정합니다. 연결을 볼 수 있는 모듈에서 FB
습니다. S7 통신을 사용하려면, 표준 라이브러리의 또는 SFB를 초기화하기 위해서는 ‘로컬 ID’ 를 사
시스템 함수 블록에서 SFB에 대한 인터페이스 설명 용하고, 파트너 모듈에서 FB 또는 SFB를 초기화하
을 블록 컨테이너로 복사하고 각 호출에 대해 인스 기 위해서는 ‘원격 ID’ 를 사용합니다.
턴스 데이터 블록(DB)을 생성한 후 관련 인스턴스 동일한 논리 연결을 서로 다른 전송/수신 요청에
데이터 블록을 사용하여 SFB를 호출합니다. 그리고 사용할 수 있습니다. 전송/수신 요청을 구별하기 위
점차적으로 증가하는 입력 값을 사용하여, 프로그 해서는 연결 ID에 작업 ID를 추가하여 전송 블록과
램 구성요소 카탈로그에서 SFB를 선택하고 인스턴 수신 블록 간의 관계를 정의해야 합니다.

345
20 메인 프로그램

초기화 출해야 합니다. ERROR 파라미터와 STATUS 파라

S7 통신은 통신 파트너에 대한 연결이 구축될 수 미터는 발생한 오류와 작업 상태에 대한 정보를 제

있도록 재가동 시에 초기화해야 합니다. 초기화는 공합니다.

연결 테이블에서 ‘능동 연결 구축 = 예’ 속성을 수


재가동할 때 데이터 영역을 전환할 필요는 없습니
신하는 CPU에서 이루어집니다. 사용자는 재가동
다(ADDR_x, RD_x 및 SD_x 파라미터 관련). S7-
OB에서 주기적 작업에 사용되는 통신 블록을 호출
400 시스템에서 예외는 SFB 8 USEND, SFB 9
하고 다음과 같이 파라미터(사용 가능한 경우)를 초
URCV, SFB 14 GET, SFB 15 PUT을 사용하는 경
기화합니다.
우, 처음 호출할 때 일관성을 보장하기 위한 통신 버
Z REQ = FALSE 퍼가 생성되고 이것이 모든 추가 호출에서 전송 당
최대 데이터량을 정의한다는 것입니다.
Z ID = 커넥션 테이블에서 로컬 연결 ID(데이터 형
식 WORD W#16#xxxx)
주기적인 작업
Z R_ID = ‘블록 쌍’ 에 대해 지정할 수 있는 작
업 ID(데이터 형식 DWORD DW#16#xxxx xxxx) 주기적인 작업에서는 통신 블록을 호출한 후 REQ
파라미터와 EN_R 파라미터를 통해 데이터 전송을
Z PI_NAME = ASCII 코드로 된 ‘P_PROGRAM’
제어합니다. 각 통신 블록을 처리한 직후에 NDR,
을 포함한 변수(예: ARRAY[1..9] OF CHAR)
DONE, ERROR, STATUS 파라미터에서 결과를 검
이러한 통신 블록은 DONE 파라미터의 신호 상태 사해야 합니다. 왜냐하면, 그 결과는 다음 호출까지
가 ‘1’ 로 될 때까지 프로그램 루프에서 계속 호 만 유효하기 때문입니다.

표 20.17 데이터를 전송하고 수신하기 위한 FB/SFB 파라미터


파라미터 FB/SFB에 존재 선언 데이터 형식 내용, 설명
REQ 8 - 12 - INPUT BOOL 데이터 교환 시작
EN_R - 9 - 13 INPUT BOOL 수신 준비됨
R - - 12 - INPUT BOOL 데이터 교환 중단
ID 8 9 12 13 INPUT WORD 연결 ID
R_ID 8 9 12 13 INPUT DWORD 작업 ID
DONE 8 - 12 - OUTPUT BOOL 작업이 종료됨
NDR - 9 - 13 OUTPUT BOOL 새로운 데이터를 가져옴
ERROR 8 9 12 13 OUTPUT BOOL 오류가 발생함
STATUS 8 9 12 13 OUTPUT WORD 작업 상태
SD_1 8 - 12 - IN_OUT ANY 첫 번째 전송 영역
SD_2 1) 8 - - - IN_OUT ANY 두 번째 전송 영역
SD_3 1) 8 - - - IN_OUT ANY 세 번째 전송 영역
SD_4 1) 8 - - - IN_OUT ANY 네 번째 전송 영역
RD_1 - 9 - 13 IN_OUT ANY 첫 번째 수신 영역
RD_2 1) - 9 - - IN_OUT ANY 두 번째 수신 영역
RD_3 1) - 9 - - IN_OUT ANY 세 번째 수신 영역
1)
RD_4 - 9 - - IN_OUT ANY 네 번째 수신 영역
LEN - - 12 13 IN_OUT WORD 데이터 블록(DB)의 바이트 길이
1)
FB 8 또는 FB 9에는 사용하지 않습니다.

346
20.7 S7 통신

S7-300에서, 데이터 형식 ANY를 가진 파라미터 REQ(요청) 파라미터에서 포지티브 에지이면 데


(SD_1, RD_1, ADDR_1)는 플래그와 데이터만 주소 이터 교환을 시작하고, R(재설정) 파라미터에서 포
로써 제공할 수 있습니다. 지티브 에지이면 교환을 중단합니다. EN_R(수신
활성화) 파라미터에서 ‘1’ 은 파트너 CPU가 데이
터를 수신할 준비가 되었다는 신호이고, ‘0’ 은 현
20.7.2 양방향 데이터 교환
재 작업을 중단하는데 사용합니다.
양방향 데이터 교환인 경우, 연결의 끝에 하나의
SEND 블록과 하나의 RECEIVE 블록이 각각 필요합 NDR 파라미터가 데이터 전송 후에 ‘1’ 값을 가
니다. 두 블록 모두가 커넥션 테이블의 동일한 행에 지면, 데이터를 검사하는 동안 새로운 데이터가 수
연결 ID를 가집니다. 그리고 작업 ID로 구분되는 여 신 영역에 겹쳐 쓰여지는 것을 방지하기 위해 EN_R
러 개의 ‘블록 쌍’ 을 사용할 수도 있습니다. = ‘0’ 으로 설정하고 블록을 다시 호출합니다.

아래의 SFB는 양방향 데이터 교환에 사용할 수 STEP 7은 로컬 CPU와 파트너 CPU 모두의 커넥
있습니다. 션 테이블에 입력하는 연결 ID로 ID 파라미터를 초
Z FB/SFB 8 USEND 기화합니다. 이 두 ID는 다를 수 있습니다. R_ID를
CPU 지정 길이의 데이터 패킷을 조정 없이 전송 사용하여 고유한 작업 ID를 지정할 수 있는데, 여기
합니다. 서 작업 ID는 전송 블록과 수신 블록에 대해 동일해
야 합니다. 이를 통해 여러 쌍의 전송 블록과 수신
Z FB/SFB 9 URCV
블록이 하나의 논리 연결을 공유할 수 있습니다. 왜
CPU 지정 길이의 데이터 패킷을 조정 없이 수신
냐하면 각 연결은 고유한 ID를 가지기 때문입니다.
합니다.
Z FB/SFB 12 BSEND S7-400에서, 시스템 함수 블록은 첫 번째 호출
최대 32KB 또는 64KB의 데이터 블록(DB)을 전 시에 ID 파라미터와 R_ID 파라미터의 실제 값을 해
송합니다. 당 인스턴스 데이터 블록(DB)에 적용합니다. 첫 번
째 호출은 다음 웜 스타트 또는 콜드 스타트까지 이
Z FB/SFB 13 BRCV
번 인스턴스에 대한 통신 관계를 구축합니다. S7-
최대 32KB 또는 64KB의 데이터 블록(DB)을 수
300에서 각 작업을 완료한 후에 ID 파라미터와 R_ID
신합니다.
파라미터의 지정을 변경할 수 있습니다.
FB/SFB 8과 FB/SFB 9 또는 FB/SFB 12와 FB/
SFB 13은 항상 쌍으로 사용해야 합니다. 블록은 DONE 또는 NDR 파라미터의 신호 상태를
‘1’ 로 설정하여 작업이 오류 없이 종료했다는 신
위의 SFC의 파라미터는 표 20.17에 수록되어 있
호를 보냅니다. 만일 오류가 있다면 ERROR 파라미
습니다.
터에 나타납니다. STATUS 파라미터에서 0이 아닌
값은 경고(ERROR = ‘0’ ) 또는 오류(ERROR =
FB 8 USEND와 FB 9 URCV
SFB 8 USEND와 SFB 9 URCV ‘1’ )를 나타냅니다.
조정되지 않은 전송과 수신
SD_x 파라미터와 RD_x 파라미터는 전송하려는 FB 12 BSEND와 FB 13 BRCV
변수 또는 영역을 지정하는데 사용합니다. 전송 영 SFB 12 BSEND와 SFB 13 BRCV
역 SD_x은 해당 수신 영역 RD_x와 상응해야 합니 블록 지향 전송과 수신
다. 1부터 시작하여 간격 없이 파라미터를 사용합니 SD_x 파라미터 또는 RD_x 파라미터의 데이터 영
다. 필요 없는 파라미터에 값을 지정할 필요는 없습 역에서 첫 번째 바이트에 포인터를 입력합니다. 이
니다. FB와 마찬가지로 모든 SFB 파라미터에 값을 러한 실제 파라미터의 길이는 처음 호출할 때 통신
지정해야 하는 것은 아닙니다. 버퍼의 최대 크기를 결정하며, 추가 호출에서 검사

347
20 메인 프로그램

하지 않습니다. 전송 또는 수신 데이터의 바이트 수 신 영역에 겹쳐 쓰여지는 것을 방지하기 위해 EN_R


는 LEN 파라미터에 있습니다. = ‘0’ 으로 설정하고 블록을 다시 호출합니다.

최대 64KB(비통합 인터페이스인 경우 32KB)까 STEP 7이 로컬 CPU와 파트너 CPU 모두의 커넥


션 테이블에 입력하는 연결 ID로 ID 파라미터를 초
지 전송할 수 있고, 데이터는 블록 단위(종종 프레임
기화합니다. 이 두 ID는 다를 수 있습니다. R_ID를
이라고도 함)로 전송됩니다. 이때, 전송 자체는 사용
사용하여 고유한 작업 ID를 지정할 수 있는데, 여기
자 프로그램 스캔과 비동기적입니다. LEN 파라미터
서 작업 ID는 전송 블록과 수신 블록에 대해 동일해
는 각 블록을 수신한 후에 업데이트됩니다.
야 합니다. 이를 통해 여러 쌍의 전송 블록과 수신
REQ(요청) 파라미터에서 포지티브 에지이면 데 블록이 하나의 논리 연결을 공유할 수 있습니다. 왜
냐하면 각 연결은 고유한 ID를 가지기 때문입니다.
이터 교환을 시작하고, R(재설정) 파라미터에서 포
지티브 에지이면 교환을 중단합니다. EN_R(수신 활 S7-400에서, 시스템 함수 블록은 첫 번째 호출
성화) 파라미터에서 1은 파트너가 데이터를 수신할 시에 ID 파라미터와 R_ID 파라미터의 실제 값을 해
준비가 되었다는 신호이고, 0은 현재 작업을 중단하 당 인스턴스 데이터 블록(DB)에 적용합니다. 첫 번
는데 사용합니다. 째 호출 시에 다음 웜 스타트 또는 콜드 스타트까지
이번 인스턴스에 대한 통신 관계를 구축합니다.
NDR 파라미터가 데이터 전송 후에 ‘1’ 값을 가 S7-300에서 각 작업을 완료한 후에 ID 파라미터와
지면, 데이터를 검사하는 동안 새로운 데이터가 수 R_ID 파라미터의 지정을 변경할 수 있습니다.

표 20.18 데이터를 읽고 기록하기 위한 FB/SFB 파라미터


파라미터 포함하는 SFB 존재 선언 데이터 형식 내용, 설명
REQ 14 15 INPUT BOOL 데이터 교환 시작
ID 14 15 INPUT WORD 연결 ID
NDR 14 - OUTPUT BOOL 새로운 데이터를 가져옴
DONE - 15 OUTPUT BOOL 작업이 종료됨
ERROR 14 15 OUTPUT BOOL 오류가 발생함
STATUS 14 15 OUTPUT WORD 작업 상태
ADDR_1 14 15 IN_OUT ANY 파트너 CPU에서 첫 번째 데이터 영역
ADDR_2 1) 14 15 IN_OUT ANY 파트너 CPU에서 두 번째 데이터 영역
1)
ADDR_3 14 15 IN_OUT ANY 파트너 CPU에서 세 번째 데이터 영역
ADDR_4 1) 14 15 IN_OUT ANY 파트너 CPU에서 네 번째 데이터 영역
RD_1 14 - IN_OUT ANY 첫 번째 수신 영역
RD_2 1) 14 - IN_OUT ANY 두 번째 수신 영역
RD_3 1) 14 - IN_OUT ANY 세 번째 수신 영역
RD_4 1) 14 - IN_OUT ANY 네 번째 수신 영역
SD_1 - 15 IN_OUT ANY 첫 번째 전송 영역
SD_2 1) - 15 IN_OUT ANY 두 번째 전송 영역
1)
SD_3 - 15 IN_OUT ANY 세 번째 전송 영역
SD_4 1) - 15 IN_OUT ANY 네 번째 전송 영역
1)
FB 14 또는 FB 15에는 사용하지 않습니다.

348
20.7 S7 통신

블록은 DONE 또는 NDR 파라미터의 신호 상태를 스를 제공합니다. 전송된 일관성있는 데이터 블록


‘1’ 로 설정하여 작업이 오류 없이 종료했다는 신 (DB)의 크기는 사용한 서버 CPU에 따라 다릅니다.
호를 보냅니다. 만일 오류가 있다면 ERROR 파라미 REQ (요청) 파라미터에서 포지티브 에지이면 데
터에 나타납니다. STATUS 파라미터에서 0이 아닌 이터 교환을 시작합니다. STEP 7에서 커넥션 테이
값은 경고(ERROR = ‘0’ ) 또는 오류(ERROR = 블에 입력한 연결 ID로 ID 파라미터를 설정합니다.
‘1’ )를 나타냅니다.
블록은 DONE 또는 NDR 파라미터의 신호 상태를
‘1’ 로 설정하여 작업이 오류 없이 종료했다는 신
20.7.3 일방향 데이터 교환 호를 보냅니다. 만일 오류가 있다면 ERROR 파라미
터에 ‘1’ 이란 플래그가 설정됩니다. STATUS 파
일방향 데이터 교환에서 통신 블록 호출은 하나의
라미터에서 0이 아닌 값은 경고(ERROR = ‘0’ )
CPU 안에서만 이루어집니다. 파트너 CPU에서는
또는 오류(ERROR = ‘1’ )를 나타냅니다. 매 블록
운영체제가 필요한 통신 함수를 처리합니다.
호출 후에 DONE, NDR, ERROR, STATUS 파라미터
아래의 블록을 일방향 데이터 교환에 사용할 수 를 검사해야 합니다.
있습니다. ADDR_n 파라미터를 사용하여 데이터를 가져오
Z FB/SFB 14 GET 거나 전송하려는 파트너 CPU의 변수 또는 영역을
파트너 CPU에서 데이터를 읽습니다. 지정합니다. ADDR_n의 영역은 SD_n 또는 RD_n에
지정된 영역과 일치해야 합니다. 이 파라미터를 1부
Z FB/SFB 15 PUT
터 간격 없이 채워서 사용하십시오. 필요 없는 파라
파트너 CPU에 데이터를 기록합니다.
미터는 지정할 필요가 없습니다. FB와 마찬가지로
표 20.18에는 이러한 블록에 대한 파라미터가 나 SFB는 모든 파라미터에 값을 지정할 필요는 없습니
와 있습니다. 다.

파트너 CPU의 운영체제는 FB/SFB 14로 읽은


데이터를 모으고, FB/SFB 15로 기록한 데이터를 배 20.7.4 인쇄 데이터의 전송
포합니다. 파트너 CPU에서 전송 또는 수신 사용자 SFB 16 PRINT를 사용하면 CP 441 통신 모듈을
프로그램은 필요하지 않습니다. 파트너 CPU는 실 통해 형식 정보와 데이터를 프린터에 전송할 수 있
행 모드와 정지 모드 둘 모두에서 필요한 통신 서비 습니다. 표 20.19에 이 SFB의 파라미터가 수록되어

표 20.19 SFB 16 PRINT의 파라미터


파라미터 선언 데이터 형식 내용, 설명
REQ INPUT BOOL 데이터 교환 시작
ID INPUT WORD 연결 ID
DONE OUTPUT BOOL 작업이 종료됨
ERROR OUTPUT BOOL 오류가 발생함
STATUS OUTPUT WORD 작업 상태
PRN_NR IN_OUT BYTE 프린터 번호
FORMAT IN_OUT STRING 형식 설명
SD_1 IN_OUT ANY 첫 번째 변수
SD_2 IN_OUT ANY 두 번째 변수
SD_3 IN_OUT ANY 세 번째 변수
SD_4 IN_OUT ANY 네 번째 변수

349
20 메인 프로그램

있습니다. 라미터에는 값을 지정하지 마십시오. 인쇄 요청마


다 최대 420 바이트(FORMAT 파라미터와 모든 변수
REQ 파라미터에서 포지티브 에지이면 ID 파라
의 합)를 전송할 수 있습니다.
미터와 PRN_NR 파라미터로 지정한 프린터와 데
이터 교환을 시작합니다. 이때, SFB 16 PRINT는
DONE을 ‘1’ 로 설정하여 오류 없이 전송되었 20.7.5 제어 함수
다는 신 호를 보냅니다. 만일 오류가 있다면
아래의 SFB는 통신 파트너를 제어하는데 사용할
ERROR 파라미터에 ‘1’ 이란 플래그가 설정됩
수 있습니다.
니다. STATUS 파라미터에서 0이 아닌 값은 경고
(ERROR = ‘0’ ) 또는 오류(ERROR = ‘1’ )를 Z SFB 19 START

나타냅니다. 매 블록 호출 후에 DONE, ERROR, 파트너 컨트롤러에서 콜드 리스타트 또는 웜 리

STATUS 파라미터를 검사해야 합니다. 스타트를 실행합니다.

Z SFB 20 STOP
인쇄할 문자를 FORMAT 파라미터에 STRING 형
파트너 컨트롤러를 정지 모드로 전환합니다.
식으로 입력합니다. 이 문자열의 변수들에 대해 최
대 네 가지 형식 설명을 SD_1부터 SD_4 파라미터로 Z SFB 21 RESUME
정의함으로써 통합할 수 있습니다. 이 파라미터들 파트너 컨트롤러에서 핫 리스타트를 실행합니
을 1부터 간격 없이 채워서 사용하고, 필요 없는 파 다.

표 20.20 파트너 컨트롤러의 SFB 파라미터


파라미터 SFB에 존재 선언 데이터 형식 내용, 설명
REQ 19 20 21 INPUT BOOL 데이터 교환 시작
ID 19 20 21 INPUT WORD 연결 ID
DONE 19 20 21 OUTPUT BOOL 작업이 종료됨
ERROR 19 20 21 OUTPUT BOOL 오류가 발생함
STATUS 19 20 21 OUTPUT WORD 작업 상태
PI_NAME 19 20 21 IN_OUT ANY 프로그램 이름(P_PROGRAM)
ARG 19 - 21 IN_OUT ANY 값이 “C” 일 때, 가능한 경우 파
트너 컨트롤러에서 콜드 스타트가
트리거됨
IO_STATE 19 20 21 IN_OUT BYTE 무관

표 20.21 상태 질의를 위한 SFB 파라미터


파라미터 SFB에 존재 선언 데이터 형식 내용, 설명
REQ 22 - INPUT BOOL 데이터 교환 시작
EN_R - 23 INPUT BOOL 수신 준비됨
ID 22 23 INPUT WORD 연결 ID
NDR 22 23 OUTPUT BOOL 새로운 데이터를 가져옴
ERROR 22 23 OUTPUT BOOL 오류가 발생함
STATUS 22 23 OUTPUT WORD 작업 상태
PHYS 22 23 IN_OUT ANY 물리적 상태
LOG 22 23 IN_OUT ANY 논리 상태
LOCAL 22 23 IN_OUT ANY 파트너로써 S7 CPU의 상태

350
20.7 S7 통신

위의 SFB는 양방향 데이터 교환용이므로 이 목적 20.7.6 모니터링 함수


을 위해 파트너 디바이스에서 사용자 프로그램을 쓸
아래의 시스템 블록은 모니터링 함수에 사용할 수
필요가 없습니다. 위의 SFC의 파라미터는 표 20.22
있습니다.
에 수록되어 있습니다.
Z SFB 22 STATUS
REQ 파라미터에서 포지티브 에지이면 데이터 교
파트너 상태를 검사합니다.
환을 시작합니다. STEP 7에서 연결 테이블에 입력
한 연결 ID를 ID 파라미터로 입력합니다. Z SFB 23 USTATUS
파트너 상태에 대한 데이터를 수신합니다.
이때, SFB는 DONE 파라미터를 ‘1’ 로 설정하
여 작업이 오류 없이 종료했다는 신호를 보냅니다. Z SFC 62 CONTROL
만일 오류가 있다면 ERROR 파라미터에 ‘1이란 플 SFB 인스턴스의 상태를 검사합니다.
래그가 설정됩니다. STATUS 파라미터에서 0이 아
Z FC 62 C_CNTRL
닌 값은 경고(ERROR = ‘0’ ) 또는 오류(ERROR =
연결의 상태를 검사합니다.
‘1’ )를 나타냅니다. 매 블록 호출 후에 DONE,
ERROR, STATUS 파라미터를 검사해야 합니다. Z SFC 87 C_DIAG
연결 상태를 파악합니다.
‘P_PROGRAM’ (ARRAY [1..9] OF CHAR)을 내
용으로 가진 배열 변수를 PI_NAME로 지정하십시 위 시스템 블록들의 파라미터는 테이블 20.23,
오. ARG 파라미터를 지정하지 않는다면, 파트너 컨 20.22, 20.23에 설명되어 있습니다.
트롤러에서 웜 스타트가 트리거됩니다. ARG파라미
다음 사항이 위 시스템 블록에 적용됩니다. 오류
터가 ‘C’ 로 지정되면, 파트너 컨트롤러에서 허용
는 ERROR 파라미터를 ‘1’ 로 설정하여 표시합니
가능한 경우 콜드 스타트가 트리거됩니다. IO_
다. STATUS 파라미터의 값이 0이 아니면, 이것은
STATE 파라미터는 지금은 상관없으므로 값을 지정
경고(ERROR = ‘0’ ) 또는 오류(ERROR = ‘1’ )
할 필요가 없습니다. 를 나타냅니다.

SFB 19 START는 파트너 CPU의 콜드 리스타트


또는 웜 리스타트를 실행합니다. 이를 위한 전제 조 SFB 22 STATUS
건은 파트너 CPU가 정지 모드에 있고 모드 선택 스 파트너 디바이스의 상태를 검사합니다.
위치가 실행 모드 또는 RUN-P 모드에 있어야 한다 SFB 22 STATUS는 파트너 CPU의 상태를 가져와
는 것입니다. 서 PHYS(물리적 상태), LOG(논리 상태), LOCAL(파
트너가 S7 CPU인 경우 작동 상태) 파라미터로 표시
SFB 20 STOP은 파트너 CPU를 정지 모드로 설정
합니다.
합니다. 이 작업 요청을 오류 없이 실행하기 위한 전
제 조건은 요청할 때 파트너 CPU가 정지 모드에 있 REQ (요청) 파라미터에서 포지티브 에지이면 질
으면 안된다는 것입니다. 의를 시작합니다. STEP 7에서 연결 테이블에 입력
한 연결 ID를 ID 파라미터로 입력합니다.
SFB 21 RESUME은 파트너 CPU의 핫 리스타트를
실행합니다. 이를 위한 전제 조건은 파트너 CPU가 블록은 NDR 파라미터를 ‘1’ 로 설정하여 작업
정지 모드에 있고, 모드 선택 스위치가 실행 모드 또 이 오류 없이 종료했다는 신호를 보냅니다. 매 블록
는 RUN-P 모드에 있고, 이 순간에 핫 리스타트가 호출 후에 NDR, ERROR, STATUS 파라미터를 검사
가능해야 한다는 것입니다. 해야 합니다.

351
20 메인 프로그램

SFB 23 USTATUS 확인합니다. 이 SFB의 인스턴스 데이터 블록(DB)


파트너 디바이스의 상태에 대한 데이터를 수 을 I_DB 파라미터에 입력합니다. 이 SFB를 로컬 인
신합니다.
스턴스로써 호출할 때, OFFSET 파라미터에 로컬 인
SFB 23 USTATUS는 파트너의 상태에 대한 데이
스턴스의 번호를 지정합니다. 이때, 로컬 인스턴스
터를 수신합니다. 파트너는 변경이 발생했을 때 요
가 없으면 0이고, 첫 번째 로컬 인스턴스이면 1이
청하지 않아도 이 데이터를 전송합니다. 디바이스
고, 두 번째 인스턴스이면 2인 식입니다.
상태는 PHYS, LOG, LOCAL 파라미터에 표시됩니
다. EN_R(수신 활성화) 파라미터의 신호 상태가 ‘1’
이면, 통신 인스턴스의 상태는 I_DB 파라미터에 지
EN_R(수신 활성화) 파라미터에서 ‘1’ 은 파트
정된 대로 표시됩니다 매 블록 호출 후에 NDR,
너가 데이터를 수신할 준비가 되었다는 것을 나타냅
ERROR, STATUS 파라미터를 검사해야 합니다.
니다. STEP 7에서 커넥션 테이블에 입력하는 연결
ID를 사용하여 ID 파라미터를 초기화합니다. I_TYP, I_STATE, I_CONN, I_STATUS 파라미터는

블록은 NDR 파라미터를 ‘1’ 로 설정하여 작업 로컬 통신 인스턴스의 상태에 대한 정보를 제공합니

이 오류 없이 종료했다는 신호를 보냅니다. 매 블록 다.

호출 후에 NDR, ERROR, STATUS 파라미터를 검사


해야 합니다. FC 62 C_CNTRL
연결의 상태를 검사합니다.

SFC 62 CONTROL S7-300 시스템에서 FC 62 C_CNTRL은 로컬 디


통신 인스턴스의 상태를 검사합니다. 바이스의 연결 상태를 확인합니다. STEP 7에서 로
S7-400 시스템에서 SFC 62 CONTROL은 통신 컬 디바이스용 커넥션 테이블에 정의한 연결 ID를
인스턴스의 상태와 로컬 컨트롤러에서 관련 연결을 ID 파라미터에 입력합니다.

표 20.22 블록 FC 62 C_CNTRL과 SFC 62 CONTROL의 파라미터


파라미터 포함하는 SFB 선언 데이터 형식 내용, 설명
EN_R FC SFC INPUT BOOL 수신 준비됨
I_DB - SFC INPUT BLOCK_DB 인스턴스 데이터 블록(DB)
OFFSET - SFC INPUT WORD 로컬 인스턴스의 번호
ID FC - INPUT WORD 연결 ID
RET_VAL - SFC RETURN INT 오류 정보
RETVAL FC - RETURN INT 오류 정보
ERROR FC SFC OUTPUT BOOL 오류가 탐지됨
STATUS FC SFC OUTPUT WORD 상태 워드
I_TYP - SFC OUTPUT BYTE 블록 유형 식별자
I_STATE - SFC OUTPUT BYTE 실제 상태 식별자
I_CONN - SFC OUTPUT BOOL 연결 상태
( ‘1’ = 연결이 존재함)
I_STATUS - SFC OUTPUT WORD 통신 인스턴스를 위한 STATUS 파라미터
C_CONN FC - OUTPUT BOOL 연결 상태
( ‘1’ = 연결이 존재함)
C_STATUS FC - OUTPUT WORD 연결 상태

352
20.7 S7 통신

표 20.23 SFC 87 C_DIAG의 파라미터


파라미터 선언 데이터 형식 내용, 설명
REQ INPUT BOOL 신호 상태 ‘1’ 로 작업을 트리거함
MODE INPUT BYTE 작업 모드. 본문을 참조하십시오.
RET_VAL RETURN INT 오류 정보
BUSY OUTPUT BOOL ‘1’ 인 경우 작업이 계속 진행 중임
N_CON OUTPUT INT 마지막 구조의 인덱스.
CON_ARR OUTPUT ANY 판독한 연결 데이터의 대상 범위

EN_R(수신 활성화) 파라미터의 신호 상태가 ‘1’ SFC 87 C_DIAG는 MODE 파라미터로 설정할 수
로 설정된 경우, 실제 연결 상태가 표시됩니다. 각 있는 다음과 같은 다양한 작업 모드에서 사용할 수
블록 호출 후에 ERROR 파라미터와 STATUS 파라 있습니다.
미터를 검사해야 합니다. Z MODE = B#16#00
SFC는 연결 데이터를 복사하지 않고 판독을 승
C_CONN 파라미터와 C_STATUS 파라미터는 실
인합니다.
제 연결 상태에 대한 정보를 제공합니다.
Z MODE = B#16#01
SFC는 연결 데이터를 복사하고 판독을 승인합
SFC 87 C_DIAG
니다.
연결 상태를 확인합니다.
Z MODE = B#16#02
시스템 함수 SFC 87 C_DIAG는 모든 S7 연결 및
SFC는 연결 데이터가 변경될 경우에만 복사한
모든 결함 허용 S7 연결과 같이 고정된 구성을 가진
후 판독을 승인합니다. 변경되지 않은 경우에는
연결의 실제 상태를 확인합니다. SFC 87 C_DIAG는
복사하지 않고 판독을 승인합니다.
호출할 때마다 운영체제에서 연결 데이터를 읽은 후
검사를 위해 이 데이터를 사용자 메모리에 입력합니 Z MODE = B#16#03
다. 그 다음에 마지막 읽기 작업 이후의 상태 변경을 SFC는 연결 데이터를 복사하고 판독을 승인하
기록하기 위해 SFC는 운영체제에서 판독했다는 것 지 않습니다.
을 승인합니다. 연결을 영구적으로 모니터링하려면 SFC 87 C_DIAG는 운영체제에서 실제 연결 데이
일정한 간격으로 SFC를 호출하십시오. 예를 들면, 터를 CON_ARR 파라미터로 지정한 대상 영역으로
시간 인터럽트 조직 블록에서 10 초마다 호출합니 전송합니다. 대상 영역은 구조를 가진 필드이고, 하
다. 나의 필드 구성요소는 하나의 연결에 대한 데이터를
포함합니다. 필드 구성요소(구조)의 개수는 가능한
SFC 87 C_DIAG는 비동기 모드로 작동하는 시스
연결의 개수에 해당합니다. 그림 20.27에는 연결 데
템 함수입니다. 신호 상태를 ‘1’ 로 설정하고 REQ
이터를 가진 필드 변수의 가능한 구조가 나와있습니
파라미터를 설정하여 작업을 트리거할 수 있습니
다.
다. 작업을 즉시 실행할 수 없을 경우, SFC는 BUSY
연결 데이터를 가진 필드는 연결 ID에 따라 배치
파라미터에 신호 상태 ‘0’ 을 반환합니다. 그렇지
되지 않으며, 개별 연결은 필드 구성요소에 어떠한
않은 경우 BUSY = ‘1’ 을 반환하고 이것은 작업
방식으로든 지정할 수 있습니다. 유효하지 않은 연
이 진행 중임을 나타냅니다.
결을 가진 필드 구성요소가 유효한 연결을 가진 필
표 20.23에는 SFC 87 C_DIAG의 파라미터가 나 드 구성요소 사이에 있을 수 있습니다. 연결 데이터
와있습니다. 는 서로 일관성을 가지고 있습니다.

353
20 메인 프로그램

DATA_BLOCK con_data //연결 데이터를 가진 데이터 블록(DB)


...
STRUCT
...
con_req : BOOL; //작업을 트리거합니다.
con_busy : BOOL; //작업이 실행중입니다.
con_error : INT; //SFC의 오류 정보.
con_index : INT; //SFC가 판독한 필드 구성요소의 번호
con_status : ARRAY [1..12] OF STRUCT
CON_ID : WORD; //연결 ID
STAT_CON : BYTE; //연결 상태.
PROD_CON : BYTE; //생산 연결의 부분적인 연결 번호
STBY_CON : BYTE; //대기 연결의 부분적인 연결 번호
DIS_PCON : BOOL; //결함 허용 상태의 변화
DIS_CON : BOOL; //conn 상태의 변화(결함 허용 사용하지 않음)
RES0 : BYTE; //예약됨
RES1 : BYTE; //예약됨
END_STRUCT;
...
END_STRUCT
END_DATA_BLOCK

변수와 구성요소의 이름은 사용자가 지정할 수 있습니다.


이 경우 호출은 예를 들어 아래와 같이 작성할 수 있습니다.
CALL C_DIAG (
REQ := con_data.con_req,
MODE := B#16#02,
RET_VAL := con_data.con_error,
BUSY := con_data.con_busy,
N_CON := con_data.con_index,
CON_ARR := con_data.con_status);
그림 20.26 SFC 87 C_DIAG의 프로그래밍 예

20.8 IE 통신 RFC 768에 따른 UDP를 사용하여 구현할 수 있습니


다.
20.8.1 기본 사항
통신 함수는 STEP 7의 표준 라이브러리에 있는
‘산업용 이더넷을 통한 개방 통신’ (줄여서 IE 통
통신 블록 항목에 포함된 로드 가능한 함수 블록입
신)을 사용하면 이더넷 서브넷에 연결된 두 디바이
스 간의 데이터 전송이 가능합니다. IE 통신은 RFC 니다. 여기에 포함된 사용자 정의 데이터 형식(UDT)
793에 따른 프로토콜 TCP 네이티브를 사용하거나, 은 연결 데이터의 구조와 통신 파트너의 주소를 가
RFC 1006에 따른 ISO-on-TCP를 사용하거나, 지고 있습니다.

354
20.8 IE 통신

SIMATIC S7 station SIMATIC S7 station


User program in the CPU CPU/CP CPU/CP User program in the CPU
Establish and clear down connection Operating Operating Establish and clear down connection
system system
UDT FB FB UDT
65 65/66 65/66 65

Data transfer with TCP native and Data transfer with TCP native and
ISO-on-TCP protocols ISO-on-TCP protocols
Data FB FB Data
63/64 63/64
Re- Re-
sour- sour-
Data transfer with ces ces Data transfer with
UDP protocol UDP protocol
Data FB UDT UDT FB Data
67/68 66 66 67/68

Subnet
Industrial Ethernet

그림 20.27 IE 통신

IE 통신의 구성 는 사용자 정의 데이터 형식 UDT 65 TCON_PAR에


IE 통신으로 데이터를 전송하기 전에 아래와 같은 저장됩니다. 데이터는 특정한 연결, 관련 함수 블록
과정이 필요합니다. 호출, 사용된 프로토콜에 대한 정보를 알려주는 연
Z 프로토콜 TCP 네이티브와 ISO-on-TCP인 경 결 ID를 포함합니다.
우 , 통신 파트너에 연결이 구축되어야 합니다(
‘연결 지향 프로토콜’ ). 파트너에 대한 연결이나 통신 액세스 포인트 설정
은 두 파트너 디바이스의 메인 프로그램에서 호출하
Z 프로토콜 UDP인 경우, CPU 운영체제의 통신 레
이어에 연결이 구축되어야 합니다( ‘연결 없는 는 함수 블록 FB 65 TCON으로 처리합니다. 데이터

프로토콜’ ). 이 경우 해당 함수 블록을 호출하 는 연결을 통해 양 방향 모두로 병렬 전송할 수 있습


면 파트너의 주소가 지정됩니다. 니다. 하나의 물리적 라인에 여러 개의 연결이 있을

연결은 커넥션 테이블을 사용하지 않고 데이터 영 수 있습니다. 함수 블록 FB 66 TDIS_CON은 연결을


역을 통해서 구성합니다. 필요한 데이터 구조는 함 다시 끊으므로 리소스를 계속 사용하지 않습니다
수 블록에서 연결을 생성하거나 해제하는데 사용하 (그림 20.27).

표 20.24 FB 65 TCON와 FB 66 TDISCON의 파라미터


파라미터 FB 선언 데이터 형식 내용, 설명
REQ 65 66 INPUT BOOL 포지티브 에지로 작업 시작
ID 65 66 INPUT WORD 통신 연결에 대한 참조.
DONE 65 66 OUTPUT BOOL 작업 실행 중( ‘0’ ) 또는 오류 없이 실행됨( ‘1’ )
BUSY 65 66 OUTPUT BOOL 작업 처리 중( ‘1’ ) 또는 작업 완료됨( ‘0’ )
ERROR 65 66 OUTPUT BOOL 오류가 발생함( ‘1’ )
STATUS 65 66 OUTPUT WORD 작업 상태, ERROR = ‘1’ 인 경우 오류 정보
CONNECT 65 - IN_OUT ANY 연결 설명에 대한 포인터

355
20 메인 프로그램

함수 블록 FB 63 TSEND와 FB 64 TRCV로는 프 함수 블록 호출
로토콜 TCP 네이티브 또는 ISO-on-TCP를 사용하 IE 통신용 함수 블록은 비동기로 작동합니다. 즉,
여 데이터를 전송할 수 있습니다. UDP 프로토콜을 어떤 경우에는 작업 실행에 여러 프로그램 사이클이
사용하는 데이터 전송에는 함수 블록 FB 67 걸릴 수 있습니다. 메인 프로그램에서 통신 블록을
TUSEND와 FB 68 TURCV가 필요합니다. 이러한 함 호출할 수 있고 REQ 파라미터와 EN_R 파라미터를
수 블록을 호출할 때, 데이터 영역에 파트너 디바이 사용하여 데이터 전송을 제어할 수 있습니다. 각 함
스의 주소를 지정합니다. 이 주소의 구조는 사용자 수 블록을 실행한 직후에 BUSY, NDR, DONE,
정의 데이터 형식 UDT 66 TADD_PAR에 있습니다. ERROR, STATUS 파라미터에서 그 결과를 검사해
야 하는데, 그 이유는 이들이 다음 호출까지만 유효
하기 때문입니다.

표 20.25 연결 설명 UDT 65 TCON_PAR의 구조


바이트 파라미터 데이터 형식 기본값 내용, 설명
0-1 block-length WORD W#16#0040 UDT 65의 길이(64 바이트)
2-3 id WORD W#16#0000 연결 참조
값 범위: W#16#0001에서 W16#0FFF까지
4 connection_type BYTE B#16#01 연결 유형
B#16#01: TCP/IP 네이티브
(호환 모드)
B#16#11: TCP/IP 네이티브
B#16#12: ISO on TCP
B#16#13: 수신
5 active_est BOOL ‘0’ 연결 구축 유형
‘1’ active; ‘0’ passive; with UDP: 항상
‘0’ 임
6 local_device_id BYTE B#16#02 디바이스 식별자: 통신 디바이스의 ID(설명
서 참조)
7 local_tsap_id_len BYTE B#16#02 local_tsap_id 파라미터의 길이
8 rem_sub_net_id BYTE B#16#00 현재 사용하지 않음
9 rem_staddr_len BYTE B#16#00 원격 연결 지점의 주소의 길이로써 UDP의 경
우 사용하지 않음
10 rem_tsap_id_len BYTE B#16#00 rem_tsap_id 파라미터의 길이로써
UDP의 경우 사용하지 않음
11 next_staddr_len BYTE B#16#00 next_staddr 파라미터의 길이로써
UDP의 경우 사용하지 않음
12 - 27 local_tsap_id ARRAY [1.0.16] OF 16(B#16#00) 로컬 포트 번호 또는 로컬 TSAP
BYTE
28 - 33 rem_subnet_id ARRAY [1.0.6] OF 6(B#16#00) 현재 사용하지 않음
BYTE
34 - 39 rem_staddr ARRAY [1.0.6] OF 6(B#16#00) 원격 연결 지점의 IP 주소로써 UDP의 경우
BYTE 사용하지 않음
40 - 55 rem_tsap_id ARRAY [1.0.16] OF 16(B#16#00) 원격 포트 번호 또는 원격 TSAP로써
BYTE UDP의 경우 사용하지 않음
56 - 61 next_staddr ARRAY [1.0.6] OF 6(B#16#00) 로컬 CP의 랙과 슬롯으로써
BYTE UDP의 경우 사용하지 않음
62 - 63 spare WORD W#16#0000 W#16#0000로 지정해야 함

356
20.8 IE 통신

20.8.2 연결의 생성과 해제 통신 연결을 지정하려면 ID 파라미터를 지정합니


IE 통신으로 데이터를 전송하기 전에, TCP 네이 다. 지정된 ID 파라미터는 연결 데이터의 변수 id와
티브와 ISO-on-TCP인 경우 파트너 디바이스에 연 일치해야 합니다. CONNECT 파라미터에서 포인터
결이 구축되어야 하고, UDP인 경우 운영체제의 통 를 사용하여 연결 데이터를 지정합니다.
신 레이어에 연결이 구축되어야 합니다. 이를 위해
초기 상태에서 REQ, BUSY, DONE, ERROR 파라
아래와 같은 블록을 사용할 수 있습니다.
미터의 신호 상태는 ‘0’ 입니다. REQ 파라미터에
Z FB 65 TCON 서 포지티브 에지로 연결 설정을 시작합니다.
통신 파트너 또는 운영체제의 통신 레이어에 연
결합니다. 작업을 실행하는 동안, BUSY = ‘1’ 입니다.
BUSY = ‘0’ , DONE = ‘1’ , ERROR = ‘0’
Z FB 66 TDISCON
일 경우 작업은 성공적으로 완료된 것입니다. 작업
연결을 해제합니다.
에 오류가 발생하면 BUSY = ‘0’ , DONE = ‘0’ ,
Z UDT 65 TCON_PAR ERROR = ‘1’ 입니다. 이때, 오류는 STATUS 파
연결 데이터의 구조입니다. 라미터에서 지정됩니다. REQ가 ‘0’ 으로 되돌아
가면 BUSY, DONE, ERROR는 ‘0’ 으로 재설정됩
표 20.24에 이 함수 블록의 파라미터가 나와있습
니다. 표 20.25에는 데이터 구조의 설계가 나와있습 니다.

니다.
FB 66 TDISCON
FB 65 TCON 연결을 생성합니다.
연결을 생성합니다.
함수 블록 FB 66 TDISCON은 IE 통신을 위한 전
함수 블록 FB 65 TCON은 IE 통신을 위한 전제 조 제 조건을 종료합니다. 이 함수 블록은 통신 파트너
건을 생성합니다. 이 함수 블록에 필요한 파라미터 에 대한 연결을 해제하거나 통신 액세스 포인트를
는 사용자 정의 데이터 형식 UDT 65 TCON_PAR의 삭제합니다.
구조를 가진 데이터 영역에 있습니다.
통신 연결을 지정하려면 ID 파라미터를 지정합니
TCP 네이티브와 ISO on TCP를 사용할 때, 통신
다. 지정된 ID 파라미터는 연결 데이터의 변수 id와
파트너에 대한 연결이 생성됩니다. ‘능동 연결 설
일치해야 합니다.
정’ 을 입력한 스테이션에서 연결을 생성합니다. 이
때 파트너 스테이션은 ‘수동’ 으로 지정되어야 합 초기 상태에서 REQ, BUSY, DONE, ERROR 파라
니다. 이러한 명칭은 데이터의 전송 방향과 무관합 미터의 신호 상태는 ‘0’ 입니다. REQ 파라미터에
니다. 서 포지티브 에지를 사용하여 연결 해제를 시작합니
연결은 CPU의 운영체제에 의해 모니터링되고 유 다.
지됩니다. 연결이 끊어지면, 능동 파트너는 FB 65
작업을 실행하는 동안, BUSY = ‘1’ 입니다.
TCON을 다시 호출하지 않고 연결을 재시도합니다.
BUSY = ‘0’ , DONE = ‘1’ , ERROR = ‘0’
FB 66 TDISCON은 CPU의 정지 모드에 있거나 전원
일 경우 작업은 성공적으로 완료된 것입니다. 작업
을 끄거나 켤 때 통신 연결을 해제합니다.
에 오류가 발생하면 BUSY = ‘0’ , DONE = ‘0’ ,
UDP 프로토콜을 사용하는 경우, FB 65 TCON은 ERROR = ‘1’ 입니다. 이때, 오류는 STATUS 파
사용자 프로그램과 운영체제의 통신 레이어 간의 연 라미터에서 지정됩니다. REQ가 ‘0’ 으로 되돌아
결을 나타내는 로컬 통신 액세스 포인트를 설정합니 가면 BUSY, DONE, ERROR는 ‘0’ 으로 재설정됩
다. 그러나 연결 파트너에게 연결하지 않습니다. 니다.

357
20 메인 프로그램

UDT 65 TCON_PAR 데이터를 전송하기 전에 FB 65 TCON을 사용하


연결 데이터의 구조입니다. 여 파트너 스테이션에 연결을 생성해야 합니다
사용자 정의 데이터 형식 UDT 65 TCON_PAR는 (20.8.2 “연결의 생성과 해제” 참조). FB 63
파트너 디바이스에 대한 통신 연결(프로토콜 TCP TSEND와 FB 64 TRCV를 사용하여 연결의 양 방향
네이티브와 ISO-on-TCP) 또는 로컬 운영체제의 통 으로 동시에 데이터를 교환할 수 있습니다.
신 레이어에 대한 연결(UDP 프로토콜)을 위한 연결
데이터의 구조를 포함합니다. FB 63 TSEND
논리 연결을 사용하여 데이터를 전송합니다.
각 연결에는 이 구조를 가진 데이터 블록(DB)이
함수 블록 FB 63 TSEND는 기존 통신 연결을 통
필요합니다. 각 연결에서 UDT에 기반한 글로벌 데
해 프로토콜 TCP 네이티브 또는 ISO on TCP를 사
이터 블록(DB)을 사용하거나 공유 글로벌 데이터 블
용하여 데이터를 전송합니다.
록(DB)에 데이터 블록을 결합할 수 있습니다.
통신 연결을 지정하려면 ID 파라미터를 지정합니
변수의 지정은 프로토콜과 사용한 디바이스에 따
다. 지정된 ID 파라미터는 연결 데이터의 변수 id와
라 다릅니다(STEP 7의 온라인 도움말 참조). 다른
일치해야 합니다. DATA 파라미터에서 포인터를 사
기본값을 가진 아래와 같은 UDT가 라이브러리에 저
용하여 전송 우편함을 지정할 수 있습니다.
장되어 있습니다.
초기 상태에서 REQ, BUSY, DONE, ERROR 파라
Z UDT 651: TCP 액티브용
미터의 신호 상태는 ‘0’ 입니다. REQ 파라미터에
Z UDT 652: TCP 패시브용 서 포지티브 에지를 사용하여 데이터 전송을 시작합
Z UDT 653: ISO-on-TCP 액티브용 니다. REQ = ‘1’ 로 설정하여 처음 호출할 때, 데
이터는 DATA 파라미터로 지정된 영역에서 가져옵
Z UDT 654: ISO-on-TCP 패시브용
니다. 그러면 LEN 파라미터에서 지정한 바이트 수
Z UDT 655: CP를 사용하는 ISO-on-TCP 액티브 가 전송됩니다. 최대 바이트 수는 아래와 같이 연결
용 유형에 따라 다릅니다.
Z UDT 656: CP를 사용하는 ISO-on-TCP 패시브 작업을 실행하는 동안, BUSY = ‘1’ 입니다.
용 BUSY = ‘0’ , DONE = ‘1’ , ERROR = ‘0’
일 경우 작업은 성공적으로 완료된 것입니다. 작업
Z UDT 657: 공개 UDP 로컬용
에 오류가 발생하면 BUSY = ‘0’ , DONE = ‘0’ ,
ERROR = ‘1’ 입니다. 이때, 오류는 STATUS 파
20.8.3 TCP 네이티브 또는 ISO-on-TCP를 라미터에서 지정됩니다. REQ가 ‘0’ 으로 되돌아
사용한 데이터 전송 가면 BUSY, DONE, ERROR는 ‘0’ 으로 재설정됩
아래의 함수 블록은 연결 지향 프로토콜 TCP 네 니다.
이티브와 TCP를 사용하는 데이터 전송에 사용할 수
DONE 또는 ERROR 파라미터의 신호 상태가
있습니다.
‘1’ 일 때 전송 영역에 있는 데이터를 다시 수정할
Z FB 63 TSEND 수 있습니다.
논리 연결을 사용하여 데이터를 전송합니다.

Z FB 64 TRCV 연결 유형 바이트 수
B#16#01 1 - 1460
논리 연결을 사용하여 데이터를 수신합니다.
B#16#11 1 - 8192
표 20.26에 위 함수 블록들의 파라미터가 나와있 B#16#12 1 - 1452(CP를 사용하는 경우)
습니다. 1 - 8192(CP를 사용하지 않는 경우)

358
20.8 IE 통신

FB 64 TRCV 달할 때 NDR은 ‘1’ 로 설정되고 RCVD_LEN 파라


논리 연결을 사용하여 데이터를 수신합니다. 미터에는 수신한 바이트 수가 할당됩니다. 그리고
함수 블록 FB 64 TRCV는 기존 통신 연결을 통해 이후의 각 호출에서 추가 데이터 블록(DB)을 수신하
프로토콜 TCP 네이티브 또는 ISO on TCP를 사용하 게 됩니다.
여 데이터를 수신합니다.
ISO-on-TCP 프로토콜을 사용하면 메시지 프레
통신 연결을 지정하려면 ID 파라미터를 지정합니
임의 길이와 끝에 대한 정보가 전송됩니다. 수신 우
다. 지정된 ID 파라미터는 연결 데이터의 변수 id와
편함의 LEN 파라미터가 전송 우편함보다 크면, 전
일치해야 합니다. DATA 파라미터에서 포인터를 사
송된 데이터를 수신할 때 NDR은 ‘1’ 로 설정되고
용하여 수신 우편함을 지정합니다.
수신된 바이트 수는 RCVD_LEN 파라미터에 기록됩
LEN 파라미터가 0이면 DATA 파라미터에서 지정 니다. 수신 우편함의 LEN 파라미터가 전송 우편함
된 길이가 사용됩니다. 데이터 블록(DB)을 수신한 보다 작으면, ERROR = ‘1’ , STATUS =
후, 수신한 바이트 수는 RCVD_LEN 파라미터에서 W#16#8088로 설정되면서 오류 메시지가 나타납니
확인할 수 있고, NDR 파라미터의 신호 상태는 ‘1’ 다.
로 설정됩니다.
FB 64 TRCV는 EN_R 파라미터의 신호 상태가
TCP 네이티브 프로토콜을 사용하는 경우 메시지
‘1’ 일 때만 데이터를 수신합니다.
프레임의 길이도 그 시작 또는 끝 부분도 전송하지
않습니다. 전송한 바이트 수를 올바르게 수신하기 작업을 실행하는 동안, BUSY = ‘1’ 입니다.
위해, 수신 우편함의 LEN 파라미터를 전송 우편함 BUSY = ‘0’ , NDR = ‘1’ , ERROR = ‘0’ 일
의 LEN 파라미터와 동일한 값으로 지정해야 합니 경우 작업은 성공적으로 완료된 것입니다. 작업에
다. 오류가 발생하면 BUSY = ‘0’ , NDR = ‘0’ ,
수신 우편함에서 LEN 파라미터에 전송 우편함보 ERROR = ‘1’ 입니다. 이때, 오류는 STATUS 파
다 더 큰 값을 지정하면, 다음 작업부터 다음 메시지 라미터에서 지정됩니다. REQ가 ‘0’ 으로 되돌아
프레임의 일부만 수신하게 됩니다. NDR은 파라미 가면 BUSY, NDR, ERROR는 ‘0’ 으로 재설정됩
터화된 길이에 도달한 때에만 ‘1’ 로 설정됩니다. 니다.

수신 우편함에서 LEN 파라미터에 전송 우편함보 NDR 파라미터의 신호 상태가 ‘1’ 일 때 수신 우


다 더 작은 값을 지정하면, 파라미터화된 길이에 도 편함에 있는 데이터는 일관성을 가집니다.

표 20.26 FB 63 TSEND와 FB 64 TRCV의 파라터


파라미터 FB 선언 데이터 형식 내용, 설명
REQ 63 - INPUT BOOL 포지티브 에지로 데이터 전송 시작
EN_R - 64 INPUT BOOL FB가 수신할 준비가 됨( ‘1’ )
ID 63 64 INPUT WORD 통신 연결에 대한 참조.
LEN 63 64 INPUT INT 전송하거나 수신할 바이트 수
DONE 63 - OUTPUT BOOL 작업 실행 중( ‘0’ ) 또는 오류 없이 실행됨( ‘1’ )
NDR - 64 OUTPUT BOOL 작업 실행 중( ‘0’ ) 또는 작업을 완료함( ‘1’ )
BUSY 63 - OUTPUT BOOL 작업 처리 중( ‘1’ ) 또는 작업 완료됨( ‘0’ )
ERROR 63 64 OUTPUT BOOL 오류가 발생함( ‘1’ )
STATUS 63 64 OUTPUT WORD 작업 상태, ERROR = ‘1’ 인 경우 오류 정보
RCVD_LEN - 64 OUTPUT INT 실제로 수신한 바이트 수
DATA 63 64 IN_OUT ANY 전송 또는 수신 우편함

359
20 메인 프로그램

20.8.4 UDP를 사용한 데이터 전송 파라미터의 값은 연결 데이터에서 변수 id와 일치해


아래의 함수 블록을 사용하여 연결이 없는 UDP 야 합니다. DATA 파라미터에서 포인터를 사용하여
프로토콜에서 데이터를 전송할 수 있습니다. 전송 우편함을 지정합니다.
Z FB 67 TUSEND 통신 파트너에 대한 정보는 ADDR 파라미터의 포
UDP를 사용하여 데이터를 전송합니다. 인터가 가리키는 데이터 영역에 있습니다. 각 신규
Z FB 68 TURCV 전송 작업에서 FB 65 TCON을 사용하여 통신 액세
UDP를 사용하여 데이터를 수신합니다. 스 포인트를 재정의하지 않고 주소와 파트너를 변경

Z UDT 66 TADD_PAR 할 수 있습니다.

파트너 주소의 데이터 구조 초기 상태에서 REQ, BUSY, DONE, ERROR 파라


표 20.27에는 함수 블록의 파라미터가 나와있고, 미터의 신호 상태는 ‘0’ 입니다. REQ 파라미터에
표 20.28에는 UDT의 구조가 나와있습니다. 서 포지티브 에지를 사용하여 데이터 전송을 시작합

데이터를 전송하기 전에 FB 65 TCON를 사용하 니다. REQ = ‘1’ 로 설정하여 처음 호출할 때, 데

여 운영체제의 통신 레이어에 연결을 생성해야 합니 이터는 DATA 파라미터로 지정된 영역에서 가져옵

다(20.8.2 “연결의 생성과 해제” 참조). 통신 파트 니다. LEN 파라미터에서 지정한 바이트 수(1에서

너의 주소는 UDT 66 TADD_PAR의 구조를 가진 데 최대 1,460)가 전송됩니다.

이터 영역에 있습니다. 작업을 실행하는 동안, BUSY = ‘1’ 입니다.


BUSY = ‘0’ , DONE = ‘1’ , ERROR = ‘0’
FB 67 TUSEND 일 경우 작업은 성공적으로 완료된 것입니다. 작업
UDP를 사용하여 데이터를 전송합니다. 에 오류가 발생하면 BUSY = ‘0’ , DONE = ‘0’ ,
함수 블록 FB 67 TUSEND는 UDP 프로토콜을 사 ERROR = ‘1’ 입니다. 이때, 오류는 STATUS 파
용하여 데이터를 전송합니다. 라미터에서 지정됩니다. REQ가 ‘0’ 으로 되돌아
사용자 프로그램과 운영체제의 통신 레이어 간의 가면 BUSY, DONE, ERROR는 ‘0’ 으로 재설정됩
연결을 지정하려면 ID 파라미터를 지정합니다. ID 니다.

표 20.27 FB 67 TUSEND와 FB 68 TURCV의 파라미터


파라미터 FB 선언 데이터 형식 내용, 설명
REQ 67 INPUT BOOL 포지티브 에지로 데이터 전송 시작
EN_R 68 INPUT BOOL FB가 수신할 준비가 됨( ‘1’ )
ID 67 68 INPUT WORD 통신 지점에 대한 참조
LEN 67 68 INPUT INT 전송하거나 수신할 바이트 수
DONE 67 - OUTPUT BOOL 작업 실행 중( ‘0’ ) 또는 오류 없이 실행됨( ‘1’ )
NDR - 68 OUTPUT BOOL 작업 실행 중( ‘0’ ) 또는 작업을 완료함( ‘1’ )
BUSY 67 - OUTPUT BOOL 작업 처리 중( ‘1’ ) 또는 작업 완료됨( ‘0’ )
ERROR 67 68 OUTPUT BOOL 오류가 발생함( ‘1’ )
STATUS 67 68 OUTPUT WORD 작업 상태, ERROR = ‘1’ 인 경우 오류 정보
RCVD_LEN - 68 OUTPUT INT 실제로 수신한 바이트 수
DATA 67 68 IN_OUT ANY 전송 또는 수신 우편함
ADDR 67 68 IN_OUT ANY 전송자 또는 수신자의 주소에 대한 포인터

360
20.9 S7-300C를 사용하는 일대일 통신

표 20.28 파트너 주소 UDT 66 TADD_PAR의 구조


바이트 파라미터 데이터 형식 기본값 내용, 설명
0-3 rem_ip_addr ARRAY [1.0.4] OF BYTE 4(B#16#00) 파트너의 IP 주소
4-5 rem_port_nr ARRAY [1..2] OF BYTE 2(B#16#00) 파트너의 포트 번호
6-7 spare ARRAY [1..2] OF BYTE 2(B#16#00) 0000으로 지정해야 함

DONE 또는 ERROR 파라미터의 신호 상태가 UDP(User Data Protocol)


‘1’ 일 때 전송 영역에 있는 데이터를 다시 수정할 연결은 UDP를 사용하여 구축되지 않습니다. 통
수 있습니다. 신 파트너는 전송 블록의 ADDR 파라미터(IP 주소와
포트 번호)에서 지정합니다. 그러면 수신 블록은
FB 68 TURCV ADDR 파라미터에서 전송자의 IP 주소와 포트 번호
UDP를 사용하여 데이터를 수신합니다. 를 제공합니다.
함수 블록 FB 68 TURCV는 UDP 프로토콜을 사용 사용자 정의 데이터 형식 UDT 66 TADD_PAR은
하여 데이터를 수신합니다. 주소 정보의 구조를 포함합니다. ADDR의 포인터는
이러한 구조를 가진 데이터 영역을 가리킵니다.
사용자 프로그램과 운영체제의 통신 레이어 간의
연결을 지정하여 ID 파라미터를 지정합니다. ID 파 UDP를 사용하면, 메시지 프레임의 길이와 끝 부
라미터의 값은 연결 데이터에서 변수 id와 일치해야 분에 대한 정보가 전송됩니다. 수신 우편함의 LEN
합니다. DATA 파라미터에서 포인터를 사용하여 수 파라미터가 전송 우편함보다 크면, 전송된 데이터
신 우편함을 지정합니다. 는 수신 우편함에 복사되고 NDR은 ‘1’ 로 설정되
고 수신된 바이트 수는 RCVD_LEN 파라미터에 기록
통신 파트너에 대한 정보는 ADDR 파라미터의 포
됩니다. 수신 우편함의 LEN 파라미터가 전송 우편
인터가 가리키는 데이터 영역에 있습니다.
함보다 작으면, ERROR = ‘1’ , STATUS =
수신할 바이트 수는 LEN 파라미터에서 설정합니 W#16#8088로 설정되면서 오류 메시지가 나타납니
다(1에서 최대 1,460). 데이터 블록(DB)을 수신한 다.
후, 수신한 바이트 수는 RCVD_LEN 파라미터에서
확인할 수 있고, NDR 파라미터의 신호 상태는 ‘1’ UDT 66 TADD_PAR
로 설정됩니다. 파트너 주소의 데이터 구조
UDT 66은 UDP 프로토콜을 사용하여 전송하는
EN_R 파라미터의 신호 상태가 ‘1’ 일 때만 데
경우에 파트너 주소의 구조를 포함합니다. 함수 블
이터를 수신합니다.
록 FB 67 TUSEND와 FB 68 TURCV의 ADDR 파라
작업을 실행하는 동안, BUSY = ‘1’ 입니다. 미터는 이러한 구조를 가진 데이터 영역을 가리킵니
BUSY = ‘0’ , NDR = ‘1’ , ERROR = ‘0’ 일 다.
경우 작업은 성공적으로 완료된 것입니다. 작업에
오류가 발생하면 BUSY = ‘0’ , NDR = ‘0’ ,
ERROR = ‘1’ 입니다. 이때, 오류는 STATUS 파 20.9 S7-300C를 사용하는 일대일 통
라미터에서 지정됩니다. REQ가 ‘0’ 으로 되돌아 신
가면 BUSY, NDR, ERROR는 ‘0’ 으로 재설정됩
니다.
20.9.1 기본 사항
NDR 파라미터의 신호 상태가 ‘1’ 일 때 수신 영 일대일 통신(PtP communication)을 사용할 때,
역에 있는 데이터는 일관성을 가집니다. 프린터 또는 SIMATIC S5 스테이션과 같은 통신 파

361
20 메인 프로그램

Sender or client station Receiver station or server station


User program in the CPU CPU CPU User program in the CPU
Ͳ΄ʹͺͺ͑姢岂決憊͑嬖垚͑ͤͪͧͥ΃ͫ͑ Operating Operating Ͳ΄ʹͺͺ͑姢岂決憊͑嬖垚͑ͤͪͧͥ΃ͫ͑
斲殯沖͑稊嵢勾岮櫖昢͑΄ͷͳ͑笾犢汆͑洊暧汊͑ system system 斲殯沖͑稊嵢勾岮櫖昢͑΄ͷͳ͑笾犢汆͑洊暧汊͑
洢檺穯城埪͟ 洢檺穯城埪͟

Data SFB SFB Data


60 Re- Re- 61
sour- sour-
ces ces

΃ͼͦͣͫ͑͢ ΃ͼͦͣͫ͑͢
斲殯沖͑稊嵢勾岮櫖昢͑΄ͷͳ͑笾犢汆͑洊暧汊͑ 斲殯沖͑稊嵢勾岮櫖昢͑΄ͷͳ͑笾犢汆͑洊暧汊͑
洢檺穯城埪͑͟壟匶筚͑͵ͳ壊͑穊殚穯城埪͟ 洢檺穯城埪͑͟壟匶筚͑͵ͳ壊͑穊殚穯城埪͟

Data SFB Sync- Sync- SFB Data


63/64 DB DB 65

Subnet
PtP

그림 20.28 S7-300C에서 점대점 연결

트너에 직렬 인터페이스를 통해 데이터를 전송할 수 오브텍스트 문자와 같은 전송 파라미터와 신호


있습니다. 일부 S7-300 컴팩트 CPU에서 RS 422/ 를 설정합니다.
485 인터페이스(X.27)는 이미 통합된 상태입니다.
Z 3964(R) 프로시저
CPU의 인터페이스 속성을 파라미터화할 때 통신 데이터는 통신 파트너로 전송되고, 성공적으로
연결은 하드웨어 구성 도구로 지정합니다. 여기서 수신하면 통신 파트너는 이를 승인합니다. 보드
ASCII 모드, 3964(R) 프로시저, RK512 컴퓨터 커플 속도, 패리티, 블록 검사와 같은 전송 파라미터
링을 전송 프로토콜로 사용할 수 있습니다. 와 신호를 설정합니다.
통신 함수는 S7-300C CPU의 운영체제에 통합된 Z RK512 컴퓨터 커플링
시스템 함수 블록입니다. 이러한 SFB용 인스턴스 데이터 통신은 소위 통신 플래그로 조정할 수 있
데이터 블록(DB)은 사용자 메모리 상에 있습니다. 습니다. 데이터 수신과 가져오기를 승인합니다.
이 SFB들은 파라미터를 테스트하지 않습니다. 파라 보드 속도, 패리티, 블록 검사와 같은 전송 파라
미터가 잘못 설정되면, CPU가 정지 모드로 갈 수 있 미터와 신호를 설정합니다.
습니다. RK512 컴퓨터 커플링을 전송 프로토콜로
3964(R)와 RK512 전송 프로토콜을 사용하면, 복
사용하면, 사용자 메모리에 있는 모든 컴퓨터 커플
수의 전송 요청을 동시에 보낼 때 순서를 정의하기
링 SFB에 대해 한번씩 동기화 데이터 블록(DB)이
위해 통신 파트너들은 서로 다른 우선 순위를 가져
추가로 사용됩니다(그림 20.28 참조).
야 합니다.

일대일 통신의 구성
하드웨어 구성 도구를 사용하여 점대점 인터페이 20.9.2 ASCII 드라이버와 3964(R) 프로시저
스의 속성 창에서 전송 프로토콜을 설정합니다. ASCII 드라이버 또는 3964(R) 프로시저를 사용하
Z ASCII 모드 면 점대점 연결을 통해 데이터를 전송하거나 수신할
데이터가 ASCII 문자로 전송됩니다. 이때, 전송 수 있습니다. 이때 아래와 같은 시스템 함수 블록이
은 승인되지 않습니다. 보드 속도, 패리티, 엔드 필요합니다.

362
20.9 S7-300C를 사용하는 일대일 통신

Z SFB 60 SEND_PTP ASCII 드라이버를 사용하면 최대 1024 바이트까


ASCII 드라이버 또는 3964(R) 프로시저를 사용 지 텔레그람을 보낼 수 있습니다. 이 SFB 60 SEND_
하여 데이터를 전송합니다. PTP는 206 바이트의 일관성 있는 블록으로 데이터
를 전송합니다. 전송하는 도중에 전송 영역에 있는
Z SFB 61 RCV_PTP
데이터를 변경하면 안됩니다.
ASCII 드라이버 또는 3964(R) 프로시저를 사용
하여 데이터를 수신합니다. REQ 파라미터의 포지티브 신호 에지로 전송을 트
리거할 수 있습니다. SFB는 DONE 파라미터의 신호
Z SFB 62 RES_RCVB 상태를 ‘1’ 로 설정하여 작업이 성공적으로 완료
ASCII 드라이버 또는 3964(R) 프로시저를 사용 되었다는 것을 나타냅니다. 오류가 발생했을 때,
하여 수신 버퍼를 삭제합니다. ERROR 파라미터는 ‘1’ 로 설정되고 오류 정보는
STATUS 파라미터에 출력됩니다.
표 20.29에는 위 시스템 함수 블록의 파라미터가
나와있습니다. R 파라미터에서 신호 상태를 ‘1’ 로 설정하여
현재 전송 작업을 중단하고 호출 인스턴스를 기본
SFB 60 SEND_PTP 상태로 재설정할 수 있습니다.
ASCII 드라이버 또는 3964R 프로시저를 사
용하여 데이터를 전송합니다.
SFB 61 RCV_PTP
시스템 함수 블록 SFB 60 SEND_PTP는 데이터 ASCII 드라이버 또는 3964(R) 프로시저를
영역을 통신 파트너로 전송하는데 사용합니다. 하 사용하여 데이터를 수신합니다.
드웨어 구성 도구를 사용하여 전송 프로토콜과 전송 시스템 함수 블록 SFB 61 RCV_PTP는 통신 파트
파라미터를 설정합니다. SD_1 파라미터를 사용하 너로부터 데이터 영역을 수신하는데 사용합니다.
여 전송할 데이터 영역을 지정합니다. 전송할 데이 하드웨어 구성 도구를 사용하여 전송 프로토콜과
터 영역의 길이는 인터페이스 파라미터에 따라 다릅 전송 파라미터를 설정합니다. 수신된 데이터는
니다. 예를 들면, LEN 파라미터에서 지정된 길이 또 RD_1 파라미터로 지정된 영역에 입력됩니다. 수신
는 엔드오브텍스트 문자까지만 전송합니다. 한 바이트 수는 LEN 파라미터에 표시됩니다.

표 20.29
ASCII 드라이버 또는 3964(R) 프로시저를 사용하여 데이터를 전송하고 수신하기 위한 SFB 파라미터
파라미터 SFB에 존재 선언 데이터 형식 내용, 설명
REQ 60 - 62 INPUT BOOL 신호 상태 ‘1’ 로 작업을 트리거함
EN_R - 61 - INPUT BOOL 수신 활성화
R 60 61 62 INPUT BOOL ‘1’ 이면 작업이 중단됨
LADDR 60 61 62 INPUT WORD 인터페이스의 하위 모듈 주소
DONE 60 - 62 OUTPUT BOOL ‘1’ 이면 작업이 여전히 실행 중임
NDR - 61 - OUTPUT BOOL ‘1’ 이면 작업이 오류 없이 완료된 것임
ERROR 60 61 62 OUTPUT BOOL ‘1’ 이면면 결함이 발생한 것임
STATUS 60 61 62 OUTPUT WORD 오류 정보
SD_1 60 - - IN_OUT ANY 전송 우편함
RD_1 - 61 - IN_OUT ANY 수신 우편함
LEN 60 61 - IN_OUT INT 전송된 바이트 수

363
20 메인 프로그램

SFB 61 RCV_PTP는 206 바이트의 일관성있는 20.9.3 RK512 컴퓨터 커플링


블록으로 데이터를 수신합니다. 전송하는 도중에
점대점 연결을 사용하면, RK512 컴퓨터 커플링
전송 영역에 있는 데이터에 액세스하면 안됩니다.
을 적용하여 데이터를 전송하고 수신할 수 있습니
CPU의 내부 수신 버퍼의 크기는 2048 바이트입 다. 여기에 필요한 시스템 함수 블록은 아래와 같습
니다. 인터페이스의 파라미터 설정에서 데이터 수 니다.
신을 위해 수신 버퍼 전체 길이를 사용할 것인지 수
신된 텔레그람의 개수를 제한할 것인지 정의할 수 Z SFB 63 SEND_RK
있습니다. RK512 컴퓨터 커플링을 사용하여 데이터를 전

EN_R 파라미터의 신호 상태를 ‘1’ 로 설정하여 송합니다.

데이터를 수신할 수 있습니다. 새로운 데이터를 성


Z SFB 64 FETCH_RK
공적으로 수신하면 NDR 파라미터의 신호 상태는
RK512 컴퓨터 커플링을 사용하여 데이터를 가
‘1’ 이 됩니다. 오류가 발생했을 때, ERROR 파라
져옵니다.
미터는 ‘1’ 로 설정되고 오류 정보는 STATUS 파
라미터에 출력됩니다. Z SFB 65 SERVE_RK
R 파라미터에서 신호 상태를 ‘1’ 로 설정하여 RK512 커플링을 사용하여 데이터를 수신하고
현재 전송 작업을 중단하고 호출 인스턴스를 기본 이를 사용 가능하게 만듭니다.
상태로 재설정할 수 있습니다.
표 20.30에는 위 시스템 함수 블록의 파라미터가
나와있습니다.
SFB 62 RES_RCVB
ASCII 드라이버 또는 3964R 프로시저를 사
용하여 수신 버퍼를 삭제합니다. 전송 영역의 지정
시스템 함수 블록 SFB 62 RES_RCVB는 점대점
인터페이스의 수신 버퍼를 삭제합니다. 삭제하는 SFB 63 SEND_RK는 SD_1 파라미터에 의해 지정
동안 수신한 텔레그람은 여기서 제외됩니다. 된 영역에서 데이터를 전송하고, 파트너 디바이스
에 있는 데이터 블록 영역의 주소를 지정합니다.
REQ 파라미터의 포지티브 신호 에지로 삭제 작업
SFB 64 FETCH_RK는 파트너 디바이스의 모든 주소
을 트리거할 수 있습니다. 이 SFB는 DONE 파라미
영역에 액세스할 수 있고, RD_1 파라미터를 사용하
터에서 신호 상태를 ‘1’ 로 설정하여 삭제 작업이
여 지정한 데이터 블록(DB) 영역에 가져온 데이터를
성공적으로 완료되었다는 것을 나타냅니다. 오류가
저장합니다.
발생했을 때 ERROR 파라미터는 ‘1’ 로 설정되고
오류 정보는 STATUS 파라미터에 출력됩니다. SFB 65 SERVE_RK는 수신한 데이터를 데이터 블
DONE, ERROR, STATUS는 한번에 한 호출에 대해 록(DB)에 저장하고, 모든 주소 영역에서 데이터를
서만 설정할 수 있습니다. 사용 가능하도록 만듭니다. 파라미터에 지정할 수
R 파라미터에서 신호 상태를 ‘1’ 로 설정하여 있는 값은 표 20.31에 나와있습니다. 일부 값은 파
현재 전송 작업을 중단하고 호출 인스턴스를 기본 트너 디바이스인 SIMATIC S5 스테이션과 관련하여
상태로 재설정할 수 있습니다. 서만 유효합니다.

364
20.9 S7-300C를 사용하는 일대일 통신

표 20.30 RK512 컴퓨터 커플링을 사용하여 데이터를 전송하고 수신하기 위한 SFB 파라미터
파라미터 SFB에 존재 선언 데이터 형식 내용, 설명
SYNC_DB 63 64 65 INPUT INT 동기화 데이터 블록(DB)의 번호
REQ 63 64 - INPUT BOOL ‘1’ 로 작업을 트리거함
EN_R - - 65 INPUT BOOL ‘1’ 로 수신을 활성화함
R 63 64 65 INPUT BOOL ‘1’ 로 작업을 중단함
LADDR 63 64 65 INPUT WORD 인터페이스의 기본 논리 주소
R_CPU 63 64 - INPUT INT 파트너 스테이션의 CPU 번호
R_TYPE 63 64 - INPUT CHAR 파트너 CPU의 데이터 블록(DB) 유형
R_DBNO 63 64 - INPUT INT 파트너 CPU의 데이터 블록(DB)의 번호
R_OFFSET 63 64 - INPUT INT 파트너 CPU의 시작 바이트의 번호
R_CF_BYT 63 64 - INPUT INT 파트너 CPU의 통신 플래그 바이트의 번호
R_CF_BIT 63 64 - INPUT INT 파트너 CPU의 통신 플래그 비트의 번호
DONE 63 64 - OUTPUT BOOL ‘1’ 인 경우 작업을 오류 없이 완료함
NDR - - 65 OUTPUT BOOL ‘1’ 인 경우 작업을 오류 없이 완료함
ERROR 63 64 65 OUTPUT BOOL ‘1’ 인 경우 작업을 완료하였으나 오류가 있음
STATUS 63 64 65 OUTPUT WORD 오류 정보
L_TYPE - - 65 OUTPUT CHAR 로컬 CPU의 데이터 영역의 유형
L_DBNO - - 65 OUTPUT INT 로컬 CPU의 데이터 블록(DB)의 번호
L_OFFSET - - 65 OUTPUT INT 로컬 CPU의 시작 바이트의 번호
L_CF_BYT - - 65 OUTPUT INT 로컬 CPU의 통신 플래그 바이트의 번호
L_CF_BIT - - 65 OUTPUT INT 로컬 CPU의 통신 플래그 비트의 번호
SD_1 63 - - IN_OUT ANY 전송 우편함
RD_1 - 64 - IN_OUT ANY 수신 우편함
LEN 63 64 65 IN_OUT INT 데이터 바이트 수

표 20.31 전송 영역의 지정
파라미터 형식: SFB 63 SFB 64 SFB 65 SFB 65 의미
데이터 전송 데이터 가져오기 데이터 수신 데이터 제공
R_CPU INT 0-4 0-4 - - 0 = 싱글 프로세서 모드
1..4 = 멀티프로세서 모드에
서 CPU의 번호
R_TYPE CHAR D, X D, X, M, E, A, - - D = 데이터 블록(DB)
T, C X = 확장 데이터 블록(DB) DX
L_TYPE CHAR - - D D, M, E, M = 플래그 메모리 영역
A, T, Z E = 입력의 프로세스 이미지
A = 출력의 프로세스 이미지
T = 타이머 값
Z = 카운터 값
R_DBNO INT 0 - 255 0 - 255 - 데이터 블록(DB)의 번호(M, E, A,
L_DBNO INT - - 1-n 1)
1-n 1) T, Z와 무관)
R_OFFSET INT 0 - 510 0 - 510 - - 데이터 블록(DB)에서 첫 번째 바
이트(짝수 주소여야 합니다)
- 0 - 255 - - M, E, A, T, Z에서 첫 번째 바이트
L_OFFSET INT - - 0 - 1024 0 - 1024 텔레그람 길이
CPU에 따라 다릅니다.

365
20 메인 프로그램

동기화 데이터 블록(DB) 로컬 통신 플래그(서버)를 파라미터화합니다. 이


컴퓨터 커플링의 시스템 함수 블록은 인스턴스 데 SFB는 L_CF_BYT, L_CF_BIT 파라미터에 현재 실행
이터 블록(DB) 이외에 동기화 데이터 블록(DB)을 된 작업에 어떤 통신 플래그를 사용하고 ‘1’ 로 설
사용하고, 이로써 모든 컴퓨터 커플링 인스턴스의 정했는지를 표시합니다. 데이터를 가져오고 제공한
작업을 동기화하고 제어합니다. 동기화 데이터 블 후에, 프로그램으로 통신 플래그를 재설정하므로
록(DB)은 사용자 메모리 상에 한번만 불러올 수 있 다음 전송 작업을 처리할 수 있습니다.
습니다. 동기화 데이터 블록(DB)은 최소 240 바이
트를 가지는 글로벌 데이터 블록(DB)이 되어야 합니 SFB 63 SEND_RK
다. SYNC_DB 파라미터에 데이터 블록(DB)의 번호 RK512 컴퓨터 커플링을 사용하여 데이터를
전송합니다.
를 입력합니다.
시스템 함수 블록 SFB 63 SEND_RK는 데이터 영
역을 통신 파트너로 전송하는데 사용합니다. 하드
통신 플래그를 사용한 조정 웨어 구성 도구를 사용하여 전송 프로토콜과 전송
컴퓨터 커플링을 사용하여 데이터를 수신할 때 통 파라미터를 설정합니다. SD_1 파라미터에 전송할
신 플래그로 이를 조정할 수 있습니다. 통신 플래그 데이터 영역을 지정합니다. LEN 파라미터에 전송된
는 플래그 주소 영역 F의 한 비트입니다. 각 전송 작 데이터 영역의 길이를 지정합니다. 여기서 바이트
업에 통신 플래그를 사용하고, 그 주소를 R_CF_ 수는 짝수여야 함에 유의하십시오.
BYT와 R_CF_BIT 파라미터 또는 L_CF_BYT와 L_
SFB 63 SEND_RK는 통신 파트너에서 통신 플래
CF_BIT 파라미터에 지정합니다.
그의 신호 상태가 ‘0’ 일 때에만 데이터를 전송합
로컬 CPU가 클라이언트인 경우, 시스템 함수 블 니다. 텔레그람의 최대 길이는 1024바이트입니다.
록 SFB 63 SEND_RK는 데이터를 전송하기 위해 사 데이터는 128 바이트의 일관성있는 블록으로 전송
용하고, SFB 64 FETCH_RK는 데이터를 가져오기 됩니다. 전송하는 도중에 전송 영역에 있는 데이터
위해 사용합니다. 파트너 CPU에서 데이터를 전송 를 변경하면 안됩니다.
하고 가져올 때, 통신 플래그의 주소도 함께 포함됩 REQ 파라미터에서 포지티브 에지로 설정하여 전
니다. 파트너 CPU에서 통신 플래그의 신호 상태가 송 작업을 트리거할 수 있습니다. DONE 파라미터
‘0’ 이면, 파트너 CPU는 전송 작업인 경우 데이터 의 신호 상태를 ‘1’ 로 설정함으로써 SFB는 작업
패키지를 사용자 메모리로 불러오는 작업을 허용하 이 성공적으로 완료되었다는 것을 알립니다. 오류
고, 가져오기 작업인 경우 데이터 패키지 판독 작업 가 발생했을 때, ERROR 파라미터는 ‘1’ 로 설정
을 허용합니다. 이때 통신 함수를 사용하여 통신 플 되고 오류 정보는 STATUS 파라미터에 출력됩니다.
래그를 설정하여 데이터가 전송되었음을 알려줍니
R 파라미터의 신호 상태를 ‘1’ 로 설정하여 현
다. 그 다음에 데이터를 사용자 프로그램으로 편집
재 전송 작업을 중단하고, 호출 인스턴스를 기본 상
하거나 전처리합니다. 사용자 프로그램을 사용하여
태로 재설정할 수 있습니다.
통신 플래그를 재설정하면, 데이터 통신은 다시 활
성화됩니다. 따라서 파트너 CPU의 통신 플래그는
데이터 전송 제어를 허용합니다. SFB 64 FETCH_RK
RK512 컴퓨터 커플링을 사용하여 데이터를
로컬 CPU가 서버인 경우, 클라이언트가 데이터 가져옵니다.
를 전송하면 SFB 65 SERVE_RK를 사용하여 수신하 시스템 함수 블록 SFB 64 FETCH_RK는 통신 파
고, 클라이언트가 데이터를 가져오면 데이터를 사 트너로부터 데이터 영역을 가져오는데 사용합니다.
용할 수 있도록 만듭니다. 이 SFB를 사용하여, 사용 하드웨어 구성 도구를 사용하여 전송 프로토콜과
자 프로그램에서 데이터 수신 또는 제공을 제어하는 전송 파라미터를 설정합니다. 가져온 데이터는

366
20.10 실행 모드에서 하드웨어 구성(CiR)

RD_1 파라미터에서 지정된 영역으로 입력됩니다. 신했거나 가져왔다는 것을 표시합니다. 오류가 발


수신된 바이트 수는 LEN 파라미터에 나타납니다. 생했을 때, ERROR 파라미터는 ‘1’ 로 설정되고
오류 정보는 STATUS 파라미터에 출력됩니다.
SFB 64 FETCH_RK는 통신 파트너에서 통신 플
래그의 신호 상태가 ‘0’ 일 때에만 데이터를 가져 R 파라미터에서 신호 상태를 ‘1’ 로 설정하여
옵니다. 텔레그람의 최대 길이는 1024 바이트입니 현재 작업을 중단할 수 있고, 호출 인스턴스를 기
다. 데이터는 128 바이트의 일관성있는 블록으로 전 본 상태로 재설정할 수 있습니다.
송됩니다. 전송하는 도중에 전송 영역에 있는 데이
터를 변경하면 안됩니다.

EN_R 파라미터의 신호 상태를 ‘1’ 로 설정하여 20.10실행 모드에서 하드웨어 구성


데이터를 가져올 수 있습니다. NDR 파라미터의 신 (CiR)
호 상태 ‘1’ 은 새로운 데이터를 성공적으로 가져
왔다는 것을 표시합니다. 오류가 발생했을 때, CiR(실행 모드에서 하드웨어 구성)은 작동하는
ERROR 파라미터는 ‘1’ 로 설정되고 오류 정보는 동안 시스템을 변경할 수 있다는 것을 의미합니다.
STATUS 파라미터에 출력됩니다. 이러한 CiR 기능을 통해 CPU를 정지 모드로 전환하

R 파라미터의 신호 상태를 ‘1’ 로 설정하여 거나 설정할 필요 없이 S7-400 스테이션의 분산 I/

현재 가져오기 작업을 중단할 수 있고, 호출 인스 O의 구성을 변경할 수 있습니다.

턴스를 기본 상태로 재설정할 수 있습니다. 이때 가능한 변경에는 컴팩트 DP 슬레이브,


ET200M 스테이션, PA 마스터 시스템을 기존 DP 마
SFB 65 SERVE_RK 스터 시스템에 추가하는 것, 모듈을 ET200M 스테이
RK512 컴퓨터 커플링을 사용하여 데이터를 션에 추가하는 것, PA 슬레이브(필드 디바이스)를
수신하고 사용 가능하게 만듭니다.
기존 PA 마스터 시스템에 추가하는 것이 포함됩니
시스템 함수 블록 SFB 65 SERVE_RK는 RK512 다. 또한 실행 도중에 추가되는 모든 개체는 다시 제
컴퓨터 커플링용 서버 기능을 가지고 있습니다. 이 거할 수 있습니다(그림 20.29 참조).
함수 블록은 통신 파트너에서 전송한 데이터 영역을
받아들이고, 통신 파트너가 가져온 데이터 영역을 관련된 모든 디바이스가 CiR 기능을 처리할 수 있
사용할 수 있도록 만듭니다. 수신한 데이터 또는 사 어야 한다는 사실 외에도 전제 조건과 제한 사항이
용할 수 있는 데이터는 L_TYPE, L_DBNO, L_ 존재합니다. 예를 들면, 프로피버스 DP 마스터 시스
OFFSET 파라미터에서 지정한 영역으로 입력됩니 템은 모노 마스터 시스템이어야 하고, 버스 사이클
다. 전송된 바이트 수는 LEN 파라미터에 나타납니 시간이 일정하면 안되고, 지능형 DP 슬레이브를 관
다. 련 스테이션 구성요소에 사용할 수 없고, 모듈 파라
미터는 CPU에 저장되어야 합니다.
SFB 65 SERVE_RK는 128 바이트의 일관성있는
블록 단위로 데이터를 전송합니다. 전송하는 도중 CiR 기능을 가진 구성요소와 가지지 않는 구성요
에 전송 영역에 있는 데이터에 액세스하면 안됩니 소를 혼합할 수 있지만, 변경은 CiR 기능을 가진 구
다. 데이터 전송은 사용자 프로그램에 있는 통신 플 성요소에만 가능합니다.
래그로 제어합니다.
재구성할 때, 짧은 시간 동안(보통 1 초, 프로그램
EN_R 파라미터의 신호 상태를 ‘1’ 로 설정하여 작성 가능) 처리를 인터럽트할 수 있습니다. 몇 가지
작업을 처리할 수 있게 만듭니다. NDR 파라미터의 변경 사항만 수행하면 이 시간을 짧게 유지할 수 있
신호 상태 ‘1’ 은 새로운 데이터를 성공적으로 수 습니다.

367
20 메인 프로그램

櫲峲͑͵΁͑廎枪瘶͑柢枪癢͑͝΁Ͳ͑廎枪瘶͑柢枪癢͑
愕͑Ͷ΅͑ͣ͡;͑枪癒決晞櫖͑堆空͑
ʹΚ΃͙ʹΠΟΗΚΘΦΣΒΥΚΠΟ͑ΚΟ͑΃ΆͿ͚決͑儆垫穯城埪͟

妪櫖͑犚儆夞垚͑͵΁͑枲崎決挒櫖͑堆穢͑沖庲͑祢柢沖
͙牢堆͑犚儆͑枲崎決挒͑朞͑愕͑犚儆͑斲殯沖͑塶決瘶͑戂幮͑
旇穢儘͑磲穮͚

妪櫖͑犚儆夞垚͑微姎櫖͑堆穢͑沖庲͑祢柢沖
͙犚儆͑斲殯沖͑塶決瘶͑戂幮͑旇穢儘͑磲穮͚

妪櫖͑犚儆夞垚͑΁Ͳ͑枲崎決挒櫖͑堆穢͑沖庲͑祢柢沖
͙牢堆͑犚儆͑穊姢͑沫獞͑朞͑愕͑犚儆͑斲殯沖͑塶決瘶͑戂幮͑
旇穢儘͑磲穮͚

그림 20.29 하드웨어 구성 도구에서 CiR 구성요소

20.10.1 구성 변경을 위한 준비 설정’ 을 클릭하면 필요한 모든 입력 및 출력 바이


하드웨어 구성 도구를 사용하여 최소한 하나의 프 트를 변경할 수 있습니다.
로피버스 DP 마스터 시스템을 가진 S7-400 스테이
또한 차후의 확장을 위해 ET200M 스테이션에 스
션(펌웨어 릴리즈 V3.1 이상을 가진 CPU)을 구성합
니다. 그 다음에 DP 슬레이브를 추가하고, 차후에 페이스를 제공할 수 있습니다. 이를 위해 인터페이

예상되는 시스템 확장을 위해 하드웨어 카달로그의 스 모듈 IM 153-2BA00-0XB0 이상을 사용하는 스


프로피버스 DP 항목에 있는 CiR 개체에 더미 값을 테이션을 DP 마스터 시스템에 추가하고, 스테이션
추가합니다. 이 더미 값의 속성에 차후의 최대 구성 속성에 있는 ‘특별’ 탭에서 “런타임 시 모듈 교
을 설정합니다. 하드웨어 구성 도구는 각 추가 DP 체” 확인란에 체크 표시를 합니다. 이때 모듈을 교
슬레이브에 대해 244 입력 바이트와 244 출력 바이 체하는데 필요한 활성 버스 모듈은 하단 창 영역에
트를 할당합니다. 그러나 실제로는 훨씬 더 적은 사 나타나는데, 이러한 모듈은 기계적인 설계에 필요
용자 데이터가 필요합니다. 제어 박스의 ‘향상된 하지만 구성되지는 않습니다. 활성 버스 모듈은 실

368
20.10 실행 모드에서 하드웨어 구성(CiR)

행 도중에 삽입하거나 제거하면 안되기 때문에, 예 Z IM 157 인터페이스 모듈 다음에 DP/PA 커플러
정된 구성에 따라 ET200M 스테이션에 이 모듈을 갖 를 추가할 수 있습니다.
추는 것을 권장합니다. Z 기존 DP 마스터 시스템에 PA 마스터 시스템을
이제 모듈을 ET200M 스테이션에 삽입할 수 있습 포함한 DP/PA 링크를 추가할 수 있습니다.
니다. 나중에 확장하려면 하드웨어 카탈로그의 사 Z ET200M 스테이션에 모듈을 추가할 수 있습니
용된 IM 153 항목에 있는 CiR 모듈 개체에서 마지막 다.
으로 구성한 모듈 바로 뒤에 더미를 삽입합니다. 여
Z ET200M 스테이션에서 모듈 파라미터를 변경할
기서 CiR 모듈의 속성에 필요한 추가 입력 및 출력
수 있습니다. 예를 들면, 부분 프로세스 이미지
바이트 수를 설정합니다.
를 새로 지정하거나 수정할 수 있고, 미사용 채
DP 마스터 시스템에 연결된 PA 마스터 시스템을 널을 활성화할 수 있습니다.
확장하려면, IM 157-0AA82-0XA0 이상을 DP/PA
Z 위에서 열거한 변경을 취소 할 수 있습니다(모듈
링크로 사용합니다. 또한 필드 디바이스를 사용하
과 슬레이브의 최상단 주소에서 시작).
여 향후에 확장하기 위해, 하드웨어 카탈로그의 사
구성된 주소(실제 주소, 즉시 사용됨)와 차후 사
용된 IM 157 항목에 있는 CiR 개체에서 더미를 제공
용을 위한 주소를 모두 합한 개수는 DP 마스터의 수
합니다. 여기서 CiR 모듈의 속성에 필요한 추가 입
량 프레임워크보다 크면 안되지만(구성 도중 확인
력 및 출력 바이트 수를 설정합니다.
됨), CPU의 수량 프레임워크보다는 클 수 있습니다
DP 마스터 시스템과 CiR 기능을 가진 모든 하위
(특정한 슬레이브 또는 모듈로 ‘전환할’ 때에만
PA 마스터 시스템에 CiR 개체를 생성하려면, CiR 가
확인됨).
능 DP 마스터 시스템을 선택하고 편집 → 마스터 시스
CiR 프로세스 동안 최대 4 개의 DP 마스터 시스
템 → CIR 기능 활성화를 선택합니다. 그러면 CiR 모듈
템의 구성을 변경할 수 있습니다. 어떤 조건에서는
이 CiR 기능을 가진 각 ET200M 스테이션에 삽입됩
CiR 프로세스를 두 번 이상 수행하는 것을 권장하고
니다. 모든 CiR 개체와 CiR 모듈을 다시 삭제하려
이것이 필수적일 수 있습니다. 예를 들면, 모듈 또는
면, 편집 → 마스터 시스템 → CIR 기능 비활성화를 선택
슬레이브를 다른 것으로 교체하려 할 때, 먼저 해당
합니다.
구성요소를 제거한 후 두 번째 CiR 프로세스에서 교
체합니다.
20.10.2 구성 변경
CiR 구성요소에 지정된 한계 안에서 구성을 변경
20.10.3 구성 로드
한 후 실행 모드에서 다시 로드할 수 있습니다. 가능
CiR 구성요소 또는 수정된 CiR 구성을 사용하는
한 변경은 아래와 같습니다.
구성의 초기 로딩은 CPU에서 정지 모드로 수행됩니
Z 컴팩트 DP 슬레이브와 모듈식 DP 슬레이브를 다. CiR 기능이 있는지 확인하려면, 실행 모드에서
기존 DP 마스터 시스템에 추가할 수 있습니다. CiR 구성을 다시 로드해야 합니다. 스테이션 → CIR 호
추가된 슬레이브는 이전에 사용된 최대 주소보 환성 검사를 선택하여 CiR 기능을 테스트하는 것은
다 더 큰 프로피버스 주소를 가져야 합니다. 오프라인에서 항상 가능한 것은 아닙니다. 예를 들
Z 기존 DP 슬레이브에 지정된 부분 프로세스 이미 면, CiR 동기화 시간은 SFC 104 CiR에 의해 제한될
지를 변경할 수 있습니다. 수 있습니다.
Z 기존 PA 마스터 시스템에 PA 슬레이브(필드 디 CiR 프로세스 동안 CPU를 실행 모드로 유지하려
바이스)를 추가할 수 있습니다. 면, 알 수 없는 구성요소에 의한 인터럽트는 무시해
야 합니다. 그리고 관련 프로그램이 아래와 같은 조 직 블록 안에 있어야 합니다.

369
20 메인 프로그램

Z 프로세스 인터럽트 OB 40에서 OB 47까지 CPU는 계산된 CiR 동기화 시간을 허용 가능한 상
한값(기본값은 1000ms)과 비교합니다. SFC 104
Z 타이밍 오류 OB 80
CIR을 사용하여 이 상한값을 변경할 수 있습니다.
Z 진단 인터럽트용 OB 82
계산된 CiR 동기화 시간이 상한값보다 크면, 구성은
Z 핫 스와핑 인터럽트 OB 83 변경되지 않습니다.

Z 프로그램 실행 결함 OB 85

Z 랙 고장 OB 86 20.10.5 프로그램 실행에 미치는 영향

Z I/O 액세스 결함 OB 122 CiR 동기화 시간 동안 사용자 프로그램의 실행은


중단됩니다. 모든 프로세스 이미지는 마지막 값을
모듈이나 슬레이브를 추가할 때, 먼저 구성을 로
유지합니다. SIMATIC 타이머와 CPU 클록은 계속
드한 후 해당 사용자 프로그램을 로드해야 합니다.
작동합니다. 모든 인터럽트는 CiR 동기화 시간의 마
모듈이나 슬레이브를 삭제할 때, 먼저 수정한 사용
지막에만 처리됩니다. 연결된 프로그래밍 디바이스
자 프로그램을 로드한 후 수정된 구성을 로드해야
와의 통신은 제한되고, 정지 명령만 받아들여집니
합니다. 실제 모듈이나 슬레이브를 추가하거나 삭
다.
제하는 작업은 수정된 구성을 로드한 후에 CPU의
INTF LED가 꺼진 다음에만 수행할 수 있습니다. 동기화 시간이 경과한 후, CPU는 시작 정보의 첫
번째 워드(변수 OB80_EV_CLASS와 OB80_FLT_ID)
모듈을 다시 파라미터화할 때, 관련 모듈의 주소
를 W#16#350A로 설정하여 조직 블록 OB 80 ‘타
를 더 이상 지정하지 않거나 해당 인터럽트를 더 이
이밍 오류’ 를 시작합니다. 필요한 CiR 동기화 시간
상 검사하지 않는 사용자 프로그램을 먼저 로드해야
(ms 단위)은 OB80_ERROR_INFO 변수에 나타납니
합니다. 그 다음에 수정된 구성을 로드하고, 필요한
다.
경우 하드웨어를 변경하고, 이러한 수정에 따라 사
용자 프로그램을 로드합니다. 모듈을 다시 파라미터화해야 하는 경우, CPU는
시작 정보(변수 OB83_EV_CLASS와 OB83_FLT_ID)
의 첫 번째 워드를 W#16#3367로 설정하여 조직 블
20.10.4 CiR 동기화 시간 록 OB 83 ‘핫 스와핑 인터럽트’ 를 시작합니다.
새로운 구성을 CPU에 로드한 후, 새로운 데이터 그러면, 모듈은 다시 파라미터화됩니다. 그 동안 해
를 확인하고 맞으면 현재 구성으로 불러옵니다. 이 당 모듈은 유효한 값을 제공하지 못할 수도 있습니
러한 불러오기 작업에는 시간이 필요한데 이를 CiR 다.
동기화 시간이라고 합니다. CiR 동기화 시간 동안
다시 파라미터화한 후, CPU는 이번에는 시작 정
프로세스 실행은 인터럽트됩니다.
보의 첫 번째 워드를 W#16#3267으로 설정하여 OB
CiR 동기화 시간은 관련된 모든 DP 마스터와 PA 83을 다시 시작합니다. 재파라미터화에 결함이 있
마스터의 CiR 동기화 시간의 합으로부터 계산합니 으면 W#16#3968으로 설정하여 표시합니다. 그러
다. 마스터 시스템의 동기화 시간은 사용된 CPU에 면 해당 모듈은 사용하지 못 하는 것으로 간주됩니
따라 다르고, 이 마스터 시스템에서 실제 및 예정 I/ 다. 지금까지 설명한 과정은 영향을 받는 각 마스터
O 볼륨에 따라 달라집니다. CiR 동기화 시간은 하드 시스템에서 실행됩니다.
웨어 구성 도구에서 마스터 시스템의 CiR 개체 속성
항목에 표시됩니다. 최악의 경우에 대비하여 계산
하기 때문에 실제 CiR 동기화 시간은 더 짧습니다. 20.10.6 CiR 프로세스의 제어
모듈만 다시 파라미터화하는 경우에 동기화 시간은 CiR 프로세스를 일정 시간 제한하거나 활성화하
100ms입니다. 려면, 사용자 프로그램에서 SFC 104 CIR을 사용하

370
20.10 실행 모드에서 하드웨어 구성(CiR)

여 CiR 프로세스를 중단시킵니다. 이러한 SFC 파라 CiR 프로세스를 활성화합니다. MODE = B#16#02
미터는 표 20.32에 수록되어 있습니다. 는 CiR 프로세스를 무조건 비활성화하고, MODE =
MODE = B#16#00은 CiR 동기화 시간에 대해 현 B#16#03은 CPU에서 계산한 CiR 동기화 시간이
재 유효한 상한값을 제공합니다. MODE = B#16#01 FRZ_TIME 파라미터에 지정된 값보다 클 때만 CiR
은 CiR 동기화 시간을 기본값 1000ms로 설정하고, 프로세스를 비활성화합니다.

표 20.32 SFC 104 CIR의 파라미터


파라미터 선언 데이터 형식 내용, 설명
MODE INPUT BYTE 작업 ID
B#16#00: 정보 함수
B#16#01: CiR 프로세스 활성화
B#16#02: CiR 프로세스 비활성화
B#16#03: 조건에 따라 CiR 프로세스 비활성화
FRZ_TIME INPUT TIME CiR 동기화 시간의 상한값
기본 설정: T#1000 ms
허용 범위: T#200ms - T#2500ms
RET_VAL RETURN INT 오류 정보
A_FT OUTPUT TIME CiR 동기화 시간의 현재 유효한 상한값

371
21 인터럽트 처리

21 인터럽트 처리

인터럽트 처리는 항상 이벤트에 의해 구동됩니 Z 워치독 인터럽트


다. 이러한 이벤트가 발생하면, 운영체제는 메인 프 운영체제에 의해 주기적인 간격으로 발생하는
로그램의 스캔을 인터럽트하고, 이 이벤트에 할당 인터럽트입니다.
된 루틴을 호출합니다. 이 루틴을 실행한 후, 운영체
Z 하드웨어 인터럽트
제는 인터럽트 지점에서 메인 프로그램의 스캔을 재
모듈로부터 나오는 인터럽트로써, 프로세스 신
개합니다. 이러한 인터럽트는 매 동작(명령) 후에 발
호에서 얻어진 입력으로부터 생성되거나 모듈
생할 수 있습니다.
자체에서 생성됩니다.
적용 가능한 이벤트는 인터럽트와 오류가 될 수
Z DPV1 인터럽트
있습니다. 거의 동시에 발생한 인터럽트 이벤트를
처리하는 순서는 우선 순위 스케줄러에서 조정합 프로피버스 DPV1 슬레이브로부터 나오는 인터

니다. 각 이벤트는 특정한 우선 순위를 가지고 있 럽트입니다.

습니다. 여러 인터럽트 이벤트는 우선 순위 등급으 Z 멀티프로세서 인터럽트


로 조합할 수 있습니다. 멀티프로세서 네트워크 상에 있는 다른 CPU에
인터럽트 이벤트와 관련된 모든 루틴은 추가 블록 서 나오는 인터럽트입니다.
을 호출할 수 있는 조직 블록에 저장됩니다. 우선 순
Z 동기 사이클 인터럽트
위가 높은 이벤트는 조직 블록에서 낮은 우선 순위
DP 사이클에 동기인 프로피버스 DP 마스터로부
를 가진 루틴의 실행을 인터럽트합니다. 시스템 함
터 나오는 인터럽트입니다.
수를 사용하여 우선 순위가 높은 이벤트에 의한 프
로그램 인터럽트에 영향을 줄 수 있습니다. 기타 인터럽트 이벤트는 프로그램 스캔과 연관하
여 발생할 수 있는 동기 에러, 그리고 진단 인터럽트
와 같은 비동기 에러가 있습니다. 이러한 이벤트에
대한 처리는 23 “오류 처리” 에서 설명합니다.
21.1 일반 사항

SIMATIC S7은 아래와 같은 인터럽트 이벤트(인 우선 순위


터럽트)를 제공합니다.
우선 순위가 높은 이벤트는 다른 이벤트 때문에
Z 인터럽트 시간 낮은 우선 순위로 처리되는 프로그램을 인터럽트합
특정한 시간에 운영체제에 의해 하루 중의 정해 니다. 메인 프로그램은 최저 우선 순위(우선 순위 등
진 시간에 한번 또는 주기적으로 실행하는 인터 급 1)이고, 비동기 에러는 시동 루틴을 제외하면 최
럽트입니다. 고 우선 순위(우선 순위 등급 26)입니다. 다른 모든
Z 인터럽트 지연시간 이벤트는 그 중간의 우선 순위 등급을 가집니다.
특정 시간 간격이 지난 후 발생되는 인터럽트로 S7-300 시스템에서 우선 순위는 고정되어 있지만,
써, 시스템 FC로 이 시간 간격이 시작되는 시간 S7-400 시스템에서는 CPU를 파라미터화하여 그에
을 결정합니다. 따라 우선 순위를 변경할 수 있습니다.

372
21.2 인터럽트 시간

모든 우선 순위 등급에 대한 개요가 각 클래스에 시작 정보, 임시 로컬 데이터


대한 기본 조직 블록과 함께 3.1.2 “우선 순위 등 모든 조직 블록은 임시 로컬 데이터의 처음 20 바
급” 에 설명되어 있습니다. 이트에 시작 정보를 제공합니다. 시작 정보는 사용
자가 직접 자신의 데이터를 사용하여 선언을 하거나
인터럽트를 비활성화 표준 라이브러리의 조직 블록에 있는 템플릿을 사용
이벤트 구동 프로그램 스캔을 위한 조직 블록은 할 수 있습니다.
시스템 함수 SFC 39 DIS_IRT와 SFC 40 EN_IRT를 S7-300 시스템인 경우, 사용할 수 있는 임시 로
사용하여 비활성화 또는 활성화할 수 있고, 시스템 컬 데이터는 우선 순위 등급 당 256 바이트의 고정
함수 SFC 41 DIS_AIRT와 SFC 42 EN_AIRT를 사용 된 길이를 가집니다. S7-400 시스템인 경우, CPU
하여 지연 또는 활성화할 수 있습니다(21.9 “인터 를 파라미터화하여 우선 순위 등급 당 길이를 지정
럽트 이벤트의 처리” 참조). 할 수 있지만(파라미터 블록 ‘로컬 데이터’ ) 전체
길이는 CPU에 지정된 최대값을 초과할 수 없습니다
현재 신호 상태 . 여기서 시작 정보를 받아들이기 위해서는 우선 순
인터럽트 처리 루틴에서 요구 조건은 I/O 모듈의 위 등급에 대한 임시 로컬 데이터의 최소 바이트 수
현재 신호 상태를 사용해야 하지 메인 프로그램이 가 20 바이트이어야 한다는 것에 유의하십시오. 미
시작할 때 업데이트되는 입력 신호 상태를 사용해서 사용 우선 순위 등급에는 0을 지정합니다.
는 안 된다는 것과, 프로세스 이미지 출력 테이블이 임시 로컬 데이터가 포함되어 있으므로 블록 자체
메인 프로그램의 끝에서 업데이트되기를 기다리지 에서만 조직 블록의 시작 정보를 직접 읽을 수 있다
않고 가져온 신호 상태를 I/O에 직접 기록해야 한다 는 것에 유의하십시오. 또한 낮은 호출 레벨을 갖는
는 것입니다. 블록에 있는 시작 정보의 값이 필요하다면, 프로그
인터럽트 처리 루틴에서 소수의 입력과 출력만 다 램의 해당 부분에서 시스템 함수 SFC 6 RD_SINFO
루는 경우, 로드와 전송 작업(AWL) 또는 MOVE 상 를 호출합니다(20.2.5 “시작 정보” 참조).
자(LAD, FBD)를 사용하여 I/O 모듈에 직접 액세스
하는 것으로 충분합니다. 여기서 I/O 신호와 관련하 실제 인터럽트 정보
여 메인 프로그램과 인터럽트 처리 루틴 간에 엄격
인터럽트 조직 블록에 있는 시작 정보의 바이트 4
하게 분리하는 것을 권장합니다.
에서 11은 트리거된 인터럽트에 대한 정보를 포함
인터럽트 처리 루틴에서 많은 입력 및 출력 신호 합니다. 많은 경우에 인터럽트를 트리거하는 구성
를 처리하려면, S7-400 CPU에서 서브프로세스 이 요소는 시스템 함수 블록 SFB 54 RALRM을 사용하
미지를 사용합니다. 주소를 지정할 때, 각 모듈을 서 여 인터럽트 조직 블록에서 읽을 수 있는 추가 정보
브프로세스 이미지에 할당합니다. SFC 26 UPDAT_ 를 제공합니다(21.9.3 “추가 인터럽트 정보의 판
PI와 SFC 27 UPDAT_PO를 사용하면 사용자 프로 독” 참조).
그램에서 서브프로세스 이미지를 업데이트할 수 있
습니다(20.2.1 “프로세스 이미지 업데이트” 참
조).
21.2 인터럽트 시간
신형 S7-400 CPU의 경우, 입력 및 출력 서브프
로세스 이미지를 인터럽트 우선 순위 등급을 가진 인터럽트 시간은 예컨대 매일 특정한 시간에 한번
각 인터럽트 조직 블록에 지정할 수 있습니다. 이렇 만 또는 주기적으로 프로그램을 실행하기를 원할 때
게 함으로써 인터럽트가 발생할 때 프로세스 이미지 사용합니다. STEP 7에서는 인터럽트 시간을 위해
가 자동으로 업데이트됩니다. 조직 블록 OB 10부터 17을 제공하는데, 이 8 개의

373
21 인터럽트 처리

조직 블록 중에서 실제로 어느 블록을 사용할 수 있 Z 일회성: 관련된 OB를 지정된 시간에 한번만 호
는가는 CPU에 따라 다릅니다. 출합니다.

하드웨어 구성에서 인터럽트 시간을 설정하거나, Z 주기적: 파라미터 지정에 따라 해당 OB를 매분,
시스템 함수를 사용하여 프로그램을 통한 런타임 시 매시간, 매주, 매월, 또는 매년 시작합니다.
에 인터럽트 시간을 제어할 수 있습니다. 인터럽트 일회성 인터럽트 시간 OB를 호출한 후에 인터럽
시간을 올바로 처리하기 위한 전제 조건은 CPU에서 트 시간은 취소됩니다. 또한 SFC 29 CAN_TINT를
실시간 클록을 올바로 설정하는 것입니다. 사용하여 인터럽트 시간을 취소할 수도 있습니다.

표 21.1에는 인터럽트 시간에 대한 시작 정보가 취소된 인터럽트 시간을 다시 한번 사용하려면,


나와있습니다. 더미 값 xx는 관련된 인터럽트 조직 시작 시간을 다시 설정한 후 인터럽트를 재활성화
블록 10부터 17까지의 번호를 표시합니다. 합니다.
인터럽트 시간의 상태에 대해 질의하려면 SFC
31 QRY_TINT를 사용하면 됩니다.
21.2.1 인터럽트 시간의 처리

시동 시의 성능 특성
일반 사항
콜드 리스타트 또는 웜 리스타트 도중에 운영체제
인터럽트 시간을 시작하려면, 먼저 시작 시간을 는 SFC를 사용한 모든 설정을 해제합니다. 그러나
설정한 후 인터럽트를 활성화합니다. 이 두 가지 작 하드웨어 구성의 설정은 유지됩니다. 핫 리스타트
업은 하드웨어 구성 또는 SFC를 통해 따로 수행할 시에 CPU는 메인 프로그램의 첫 번째 완전한 스캔
수 있습니다. 하드웨어 구성에서 인터럽트를 활성 사이클에서 인터럽트 시간을 다시 활성화합니다.
화할 경우 인터럽트 시간은 CPU의 파라미터화 후에
SFC 31를 호출하여 시동 OB에서 인터럽트 시간
자동으로 시작된다는 것에 유의하십시오.
의 상태에 대해 질의한 후 인터럽트를 취소하거나
아래의 두 가지 방법으로 인터럽트 시간을 시작할 재설정하고 다시 활성화할 수 있습니다. 인터럽트
수 있습니다. 시간은 실행 모드에서만 실행됩니다.

표 21.1 인터럽트 시간의 시작 정보


바이트 변수 이름 데이터 형식 설명 내용
0 OBxx_EV_CLASS BYTE 이벤트 클래스 B#16#11 = UP 이벤트
1 OBxx_STRT_INF BYTE 인터럽트 OB에 대 B#16#11 = OB 31
한 시작 요청
2 OBxx_PRIORITY BYTE 우선 순위 등급 모든 인터럽트 시간에 대해 기본값은
2임
3 OBxx_OB_NUMBR BYTE OB 번호 B#16#xx
4 OBxx_RESERVED_1 BYTE 예약됨 -
5 OBxx_RESERVED_2 BYTE 예약됨 -
6..7 OBxx_PERIOD_EXE WORD OB를 주기적으로 SFC 32 SRT_DINT에 대한 설명을
호출하는 간격 참조하십시오.
8..9 OBxx_RESERVED_3 INT 예약됨 -
10..11 OBxx_RESERVED_4 INT 예약됨 -
12..19 OBxx_DATE_TIME DATE_AND_ 이벤트 발생 OB의 호출 시간
TIME
xx는 OB 번호 10에서 17을 나타냅니다.

374
21.2 인터럽트 시간

오류 발생 시 성능 특성 21.2.2 STEP 7에서 인터럽트 시간의 구성

인터럽트 시간 OB를 호출하였지만 프로그래밍되 인터럽트 시간은 하드웨어 구성에서 설정됩니다.


지 않았다면, 운영체제는 OB 85(프로그램 실행 오 편집 → 개체 속성을 클릭하여 선택된 CPU를 열고 대

류)를 호출합니다. OB 85가 프로그래밍되지 않은 화 상자에서 ‘실제 시간’ 탭을 선택합니다.


경우, CPU는 정지 모드로 갑니다. S7-300 컨트롤러에서 처리 우선 순위는 영구적
으로 2로 설정됩니다. S7-400 컨트롤러에서 가능
해당 OB를 사용할 수 있더라도 CPU를 파라미터
한 각 OB에 대해 CPU에 따라 2에서 24로 설정할 수
화했을 때 선택 해제된 인터럽트 시간은 실행할 수
있고, 우선 순위 0은 OB의 선택을 해제합니다. 우선
없습니다. 이때에도 CPU는 정지 모드로 갑니다.
순위는 한번만 설정해야 합니다. 왜냐하면, 동일한
일회성으로 인터럽트 시간을 활성화했는데 실시 우선 순위를 가진 인터럽트 이벤트들이 12개가 넘
간 클록에서 시작 시간이 이미 경과했다면, 운영체 게 동시에 발생하면 이 인터럽트가 소멸될 수 있기
제는 OB 80(타이밍 오류)을 호출합니다. OB 80를 때문입니다.
사용할 수 없는 경우, CPU는 정지 모드로 갑니다. ‘활성’ 옵션은 인터럽트 시간이 자동으로 시작
하도록 활성화시킵니다. ‘실행’ 옵션은 OB를 일
인터럽트 시간을 주기적으로 실행할 경우 실시간
회성으로 실행할지 주기적으로 실행할지 선택할 수
클록에서 시작 시간이 이미 경과했다면, 인터럽트
있는 목록을 보여 줍니다. 마지막 파라미터는 시작
시간 OB는 다음 시간 주기가 돌아올 때 실행됩니다.
시간(날짜와 시간)입니다.
수정 목적이든 동기화 목적이든 실시간 클록을 약
하드웨어 구성을 저장할 때 STEP 7는 컴파일된
20s 이상 앞으로 설정하여 인터럽트 시간의 시작 시
데이터를 오프라인 사용자 프로그램 블록에 있는 시
간을 건너뛴 경우 운영체제는 OB 80(타이밍 오류)
스템 데이터에 기록합니다. CPU가 정지 모드인 동
을 호출합니다. 이때 인터럽트 시간 OB는 정확하게
안 여기서 CPU로 파라미터 지정 데이터를 로드할
한번만 실행됩니다.
수 있고, 이 데이터는 바로 효력을 냅니다.

수정 목적이든 동기화 목적이든 실시간 클록을 약


20s 이상 뒤로 설정한 경우, 인터럽트 시간 OB는 해
21.2.3 인터럽트 시간용 시스템 함수
당 시점이 이미 지나갔으므로 더 이상 실행되지 않
아래의 시스템 함수를 인터럽트 시간을 제어하는
습니다
데 사용할 수 있습니다.
다음 번 주기적 호출이 발생했을 때 인터럽트 시
Z SFC 28 SET_TINT
간 OB가 여전히 실행 중이면, 운영체제는 OB 80(타
인터럽트 시간을 설정합니다.
이밍 오류)을 호출합니다. OB 80과 인터럽트 시간
OB를 실행한 후 인터럽트 시간 OB는 재시작됩니 Z SFC 29 CAN_TINT
다. 인터럽트 시간을 취소합니다.

Z SFC 30 ACT_TINT
인터럽트 시간을 활성화합니다.
비활성화, 지연, 활성화
Z SFC 31 QRY_TINT
인터럽트 시간 OB 호출은 SFC 39 DIS_IRT와
인터럽트 시간에 대해 질의합니다.
SFC 40 EN_IRT를 사용하여 비활성화 또는 활성화
할 수 있고, SFC 41 DIS_AIRT와 SFC 42 EN_AIRT 위의 시스템 함수의 파라미터는 표 21.2에 수록
를 사용하여 지연시키거나 활성화할 수 있습니다. 되어 있습니다.

375
21 인터럽트 처리

SFC 28 SET_TINT 주기성 인터럽트인 경우 운영체제는 다음 차례에


인터럽트 시간을 설정합니다. 해당 OB를 호출합니다. 일회성 인터럽트 시간은
시스템 함수 SFC 28 SET_TINT를 호출하여 인터 한번 실행된 후 취소됩니다. 원하는 경우 인터럽트
럽트 시간의 시작 시간을 결정합니다. SFC 28은 시 시간을 다른 시작 시간으로 재설정하여 다시 활성
작 시간만 설정합니다. 인터럽트 시간 OB를 시작하 화할 수 있습니다..
려면, SFC 30 ACT_TINT를 사용하여 인터럽트 시간
을 활성화해야 합니다. SDT 파라미터의 시작 시간
SFC 29 CAN_TINT
을 DATE_AND_TIME 형식(예: DT#1997-06-30- 인터럽트 시간을 취소합니다.
08:30)으로 지정합니다. 운영체제는 초와 밀리초는
시스템 함수 SFC 29 CAN_TINT를 사용하여 시작
무시하고 0으로 설정합니다. 시작 시간을 설정하면
시간을 삭제함으로써 인터럽트 시간을 비활성화할
이전 시작 시간 값에 덮어씁니다. 이때 현재 작동 중
수 있습니다. 이 경우 해당 OB는 더 이상 호출되지
인 인터럽트 시간은 취소되며, 다시 활성화해야 합
않습니다. 취소된 인터럽트 시간을 다시 사용하려
니다.
면, 시작 시간을 설정한 후 인터럽트를 활성화합니
다.
SFC 30 ACT_TINT
인터럽트 시간을 활성화합니다.
시스템 함수 SFC 30 ACT_TINT를 호출하여 인 SFC 31 QRY_TINT
인터럽트 시간에 대해 질의합니다.
터럽트 시간을 활성화합니다. 인터럽트 시간을 활
성화하면, 해당 인터럽트에 대해 시간이 설정되었 SFC 31 QRY_TINT를 호출하여 인터럽트 시간
다고 가정됩니다. 일회성 인터럽트인 경우 시작 시 의 상태에 대해 질의할 수 있습니다. 요청한 정보
간이 이미 경과했다면 SFC 30은 오류를 냅니다. 는 STATUS 파라미터에 반환됩니다.

표 21.2 인터럽트 시간의 SFC 파라미터


SFC 파라미터 선언 데이터 형식 내용, 설명
28 OB_NR INPUT INT 지정된 시간에 일회성 또는 주기적으로 호출할 OB의 번호
SDT INPUT DT DATE_AND_TIME 형식의 시작 날짜와 시간
PERIOD INPUT WORD 시작 시간의 주기:
W#16#0000 = 일회성
W#16#0201 = 매분
W#16#0401 = 매시간
W#16#1001 = 매일
W#16#1201 = 매주
W#16#1401 = 매달
W#16#2001 = 월말
W#16#1801 = 매년
RET_VAL RETURN INT 오류 정보
29 OB_NR INPUT INT 시작 시간을 삭제할 OB의 번호
RET_VAL RETURN INT 오류 정보
30 OB_NR INPUT INT 활성화할 OB의 번호
RET_VAL RETURN INT 오류 정보
31 OB_NR INPUT INT 상태를 질의할 OB의 번호
RET_VAL RETURN INT 오류 정보
STATUS OUTPUT WORD 인터럽트 시간의 상태

376
21.3 인터럽트 지연시간

이 파라미터의 비트 신호 상태가 ‘1’ 이면, 아 표 21.3은 인터럽트 시간에 대한 시작 정보를 보


래와 같은 의미를 가집니다. 여 줍니다. 더미 값 xx는 관련된 인터럽트 조직 블록
0 인터럽트 시간이 운영체제에 의해 비활성화되 20부터 23까지의 번호를 표시합니다.
었습니다.
1 새로운 인터럽트 시간이 거부되었습니다. 21.3.1 인터럽트 지연시간의 처리
2 인터럽트 시간이 활성화되지 않았고 만료되지
않았습니다. 일반 사항
3 (- 예약됨 -) 인터럽트 지연시간은 SFC 32 SRT_DINT를 호출
4 인터럽트 시간 OB가 로드되었습니다. 하여 시작됩니다. 또한 이 시스템 함수는 선택한 조
5 비활성화할 수 없습니다. 직 블록의 지연 시간과 번호를 운영체제에 전달합니
다. 지연 시간이 만료되면, OB가 호출됩니다.
6 (기타: - 예약됨 -)
인터럽트 지연시간은 취소할 수 있으며, 이 경우
해당 OB는 더 이상 호출되지 않습니다.
21.3 인터럽트 지연시간 SFC 34 QRY_DINT를 사용하여 인터럽트 지연시
간의 상태에 대해 질의할 수 있습니다.
인터럽트 지연시간을 사용하여 지연 타이머를 표
준 타이머와 독립적으로 구현할 수 있습니다. STEP
7에서는 인터럽트 지연시간을 위해 조직 블록 OB 시동 시의 성능 특성
20부터 23을 제공하는데, 이 4 개의 조직 블록 중에 콜드 리스타트 또는 웜 리스타트 시에 운영체제는
서 실제로 어느 블록을 사용할 수 있는가는 사용하 인터럽트 지연시간의 모든 프로그래밍된 설정을 삭
는 CPU에 따라 다릅니다. 제합니다. 핫 리스타트 시에 실행 모드로 처리될 때
인터럽트 지연시간 OB의 우선 순위는 하드웨어 까지 설정은 유지되며, 이 ‘잔여 사이클’ 은 시동
구성에서 설정합니다. 루틴의 일부로 간주됩니다.

표 21.3 인터럽트 지연시간의 시작 정보


바이트 변수 이름 데이터 형식 설명 내용
0 OBxx_EV_CLASS BYTE 이벤트 클래스 B#16#11 = UP 이벤트
1 OBxx_STRT_INF BYTE 인터럽트 OB에 대한 B#16#21 = OB 20
시작 요청
2 OBxx_PRIORITY BYTE 우선 순위 등급 기본값 3에서 6까지
(OB 20에서 OB 23까지)
3 OBxx_OB_NUMBR BYTE OB 번호 B#16#xx
4 OBxx_RESERVED_1 BYTE 예약됨 -
5 OBxx_RESERVED_2 BYTE 예약됨 -
6..7 OBxx_SIGN WORD 작업 ID SFC 32 SRT_DINT에 대한 설명을
참조하십시오.
8..11 OBxx_DTIME TIME 만료된 지연 시간 SFC 32 SRT_DINT에 대한 설명을
참조하십시오.
12..19 OBxx_DATE_TIME DATE_AND_ 이벤트 발생 OB의 호출 시간
TIME
xx는 OB 번호 20에서 23을 표시합니다.

377
21 인터럽트 처리

SFC 32를 호출하여 시동 루틴에서 인터럽트 지 비활성화, 지연, 활성화


연시간을 시작할 수 있습니다. 지연 시간이 경과한 SFC 39 DIS_IRT와 SFC 40 EN_IRT를 사용하여
후 해당 조직 블록을 실행할 수 있으려면 CPU가 실 인터럽트 지연시간 OB를 비활성화 또는 활성화할
행 모드에 있어야 합니다. CPU가 실행 모드에 있지 수 있고, SFC 41 DIS_AIRT와 SFC 42 EN_AIRT를
사용하여 지연시키거나 활성화할 수 있습니다.
않을 경우, CPU는 시동 루틴이 종료될 때까지 조직
블록을 호출하기 위해 대기하고, 그 다음에 메인 프
로그램에서 첫 번째 네트워크 전에 인터럽트 지연시 21.3.2 STEP 7에서 인터럽트 지연시간의 구

간 OB를 호출합니다.
인터럽트 지연시간은 하드웨어 구성에서 설정합
니다. 먼저 편집 → 개체 속성을 클릭하여 선택된 CPU
오류 발생 시 성능 특성 를 열고 대화 상자에서 ‘인터럽트’ 탭을 선택합니
인터럽트 지연시간 OB가 프로그래밍되어있지 않 다.

다면, 운영체제는 OB 85(프로그램 실행 오류)를 호 S7-300 컨트롤러에서 우선 순위는 영구적으로 3


출합니다. 사용자 프로그램에 OB 85가 없으면, 로 설정됩니다. S7-400 컨트롤러에서 가능한 각
CPU는 정지 모드로 갑니다. OB에 대해 CPU에 따라 2에서 24로 우선 순위를 설
정할 수 있고, 우선 순위 0은 OB의 선택을 해제합니
지연 시간이 경과한 후에도 해당 OB가 여전히 실 다. 우선 순위는 한번만 설정해야 합니다. 왜냐하
행 중이면, 운영체제는 OB 80(타이밍 오류)을 호출 면, 동일한 우선 순위를 가진 인터럽트 이벤트들이
하거나 사용자 프로그램에 OB 80이 없는 경우 정지 12 개가 넘게 동시에 발생하면 인터럽트가 소멸될

모드로 갑니다. 수 있기 때문입니다.

하드웨어 구성을 저장할 때 STEP 7은 컴파일된


CPU를 파라미터화하는 동안 선택 해제된 인터럽
데이터를 오프라인 사용자 프로그램 블록에 있는 시
트 지연시간은 해당 OB를 프로그래밍했더라도 작 스템 데이터 개체에 기록합니다. CPU가 정지 모드
동하지 않습니다. 따라서 CPU는 정지 모드로 갑니 에 있는 동안 여기서 파라미터 지정 데이터를 전송
다. 할 수 있고, 이 데이터는 즉시 효력을 냅니다.

표 21.4 인터럽트 지연시간용 SFC 파라미터


SFC 파라미터 선언 데이터 형식 내용, 설명
32 OB_NR INPUT INT 지연 시간이 경과한 후 호출되는 OB의 번호
DTIME INPUT TIME 지연 시간. T#1ms에서 T#1m까지 허용
SIGN INPUT WORD OB를 호출할 때 해당 OB의 시작 정보에 있는 작업 ID(임의
의 문자)
RET_VAL RETURN INT 오류 정보
33 OB_NR INPUT INT 취소할 OB의 번호
RET_VAL RETURN INT 오류 정보
34 OB_NR INPUT INT 상태를 질의할 OB의 번호
RET_VAL RETURN INT 오류 정보
STATUS OUTPUT WORD 인터럽트 지연시간의 상태

378
21.3 인터럽트 지연시간

21.3.3 인터럽트 지연시간용 시스템 함수 6과 7에서 동일한 값을 읽을 수 있습니다. 지연 시


인터럽트 지연시간은 아래의 시스템 함수를 사용 간은 1ms 단위로 설정합니다. 지연 시간의 정확도
하여 제어할 수 있습니다. 도 1ms입니다. 인터럽트 지연시간 OB의 실행은 인
터럽트 지연시간 OB를 호출할 때 우선 순위가 높은
Z SFC 32 SRT_DINT
조직 블록이 처리되고 있는 중인 경우 지연될 수 있
인터럽트 지연시간을 시작합니다.
음에 유의하십시오. SFC 32를 재호출하여 지연 시
Z SFC 33 CAN_DINT 간을 새로운 값으로 덮어쓸 수 있습니다. 새로운 지
인터럽트 지연시간을 취소합니다. 연 시간은 SFC를 호출하면 효력이 발생합니다.

Z SFC 34 QRY_DINT
인터럽트 지연시간에 대해 질의합니다. SFC 33 CAN_DINT
인터럽트 지연시간을 취소합니다.
위의 시스템 함수의 파라미터는 표 21.4에 수록
시스템 함수 SFC 33 CAN_DINT를 사용하여 인터
되어 있습니다.
럽트 지연시간을 취소할 수 있는데, 이때 프로그래
밍된 조직 블록은 호출되지 않습니다.
SFC 32 SRT_DINT
인터럽트 지연시간을 시작합니다.
SFC 34 QRY_DINT
인터럽트 지연시간은 시스템 함수 SFC 32 SRT_ 인터럽트 지연시간에 대해 질의합니다.
DINT를 호출하여 시작합니다. 이 SFC 호출은 또한
시스템 함수 SFC 34 QRY_DINT는 인터럽트 지연
프로그래밍된 지연 시간의 시작 시간을 결정합니
시간의 상태에 대해 알려줍니다. OB 번호를 사용하
다. 지연 시간이 경과하면 CPU는 프로그래밍된 OB
여 인터럽트 지연시간을 선택하면 상태 정보가
를 호출하고, 이 OB의 시작 정보에 있는 지연시간
STATUS 파라미터에 반환됩니다.
값과 작업 식별자를 전달합니다. 작업 식별자는
SFC 32인 경우 SIGN 파라미터에 지정되어 있으며, 이 파라미터의 비트 신호 상태가 ‘1’ 이면, 아
해당 인터럽트 지연시간 OB의 시작 정보의 바이트 래와 같은 의미를 가집니다.

표 21.5 워치독 인터럽트의 시작 정보


바이트 변수 이름 데이터 형식 설명 내용
0 OBxx_EV_CLASS BYTE 이벤트 클래스 B#16#11 = UP 이벤트
1 OBxx_STRT_INF BYTE 인터럽트 OB에 대 B#16#31 = OB 31
한 시작 요청
2 OBxx_PRIORITY BYTE 우선 순위 등급 기본값 7 - 15 (OB 30 - 38)
3 OBxx_OB_NUMBR BYTE OB 번호 B#16#xx
4 OBxx_RESERVED_1 BYTE 예약됨 -
5 OBxx_RESERVED_2 BYTE 예약됨 -
6..7 OBxx_PHS_OFFSET INT 단계별 대기 허용 시 단위 ms. 테이블 21.6을 참조하십시
간 오.
8..9 OBxx_RESERVED_3 INT 예약됨 -
10..11 OBxx_EXC_FREQ INT 시간 간격 단위 ms. 테이블 21.6을 참조하십시
오.
12..19 OBxx_DATE_TIME DATE_AND_ 이벤트 발생 OB의 호출 시간
TIME
xx는 OB 번호 30에서 38을 표시합니다.

379
21 인터럽트 처리

0 인터럽트 지연시간이 운영체제에 의해 비활성 S7-400에서 워치독 인터럽트 트리거


화되었습니다. CPU를 파라미터화할 때 워치독 인터럽트를 정의
1 새로운 인터럽트 지연시간이 거부되었습니다. 할 수 있습니다. 워치독 인터럽트는 시간 간격, 단계
별 대기 허용 시간, 우선 순위라는 세 가지 파라미터
2 인터럽트 지연시간이 활성화되었고 만료되지
를 가지고 있습니다. 사용자는 이 세 가지 파라미터
않았습니다.
를 모두 설정할 수 있습니다. 시간 간격과 단계별 대
3 (- 예약됨 -) 기 허용 시간은 1ms부터 1분까지 1ms 간격으로 설
4 시간 지연 OB가 로드되었습니다. 정할 수 있습니다. 우선 순위는 CPU에 따라 2에서
24까지의 값이나 0으로 설정할 수 있습니다. 여기서
5 비활성화할 수 없습니다.
0은 워치독 인터럽트가 작동하지 않는다는 것을 의
6 (기타: - 예약됨 -) 미합니다.

표 21.6 워치독 인터럽트의 기본값

21.4 워치독 인터럽트 OB 시간 간격 위상 우선 순위


30 5s 0ms 7
워치독 인터럽트는 주기적인 간격으로 생성되는 31 2s 0ms 8
인터럽트로써 워치독 인터럽트 OB의 실행을 시작 32 1s 0ms 9
합니다. 워치독 인터럽트를 사용하여 프로그램의 33 10ms 0ms 10
처리 시간에 상관없이 특정한 프로그램을 주기적으 34 10ms 0ms 11
35 100ms 0ms 12
로 실행할 수 있습니다.
36 50ms 0ms 13
STEP 7에서는 워치독 인터럽트를 위해 조직 블록 37 20ms 0ms 14
OB 30부터 38을 제공하는데, 이 9 개의 조직 블록 38 10ms 0ms 15
중에서 실제로 어느 블록을 사용할 수 있는가는 사
용하는 CPU에 따라 다릅니다.
STEP 7은 그 최대 구성으로써 표 21.6에 수록된
워치독 인터럽트 처리는 하드웨어 구성에서 CPU 조직 블록을 제공합니다..
를 파라미터화할 때 설정합니다.

표 21.5에는 워치독 인터럽트에 대한 시작 정보 단계별 대기 허용 시간


가 나와있습니다. 더미 값 xx는 관련된 인터럽트 조 워치독 인터럽트 프로그램들이 동일한 시간 간격
직 블록 30부터 38까지의 번호를 표시합니다. 또는 공유 배수를 가지더라도 단계별 대기 허용 시
간을 사용하여 정확한 시간 프레임으로 워치독 인터
21.4.1 워치독 인터럽트의 처리 럽트 프로그램을 처리할 수 있습니다. 단계별 대기
허용 시간을 사용하면 시간 간격 정확도가 더 높습
S7-300에서 워치독 인터럽트 트리거 니다.

S7-300에서 CPU에 따라 고정된 우선 순위를 가 시간 간격과 단계별 대기 허용 시간의 시작 시간


진 워치독 인터럽트를 제한적으로 선택할 수 있습니 은 STARTUP 모드에서 실행 모드로 전환되는 순간
다. CPU를 적절하게 파라미터화하여 인터럽트 간 입니다. 따라서 워치독 인터럽트 OB를 호출하는 순
격을 1ms부터 1분까지 1ms 간격(펌웨어 버전 V2.6 간은 시간 간격에다 단계별 대기 허용 시간을 더한
부터 CPU 319에서 500ms 간격)으로 설정할 수 있 값이 됩니다. 이에 대한 예가 그림 21.1에 나와있습
습니다. 니다. 그림의 왼쪽 부분에서 단계별 대기 허용 시간

380
21.4 워치독 인터럽트

殶昦͑朢氊儆͑喴汆͑΀ͳ汞͑柢沗汆͑埮凊懊͑堆匶͑竎殯͑ 柢稊瞾夞彶͑͝殶昦͑朢氊儆͑喴汆͑΀ͳ垚͑洛筛穢͑柢儊͑
柢儊決͑犯把粎͑嚘汆͑旇氊͑΀ͳ汞͑熞庲͑柢儊廒疂 儊冯櫖͑娶岂͑柢沗夯城埪͟

그림 21.1 워치독 인터럽트의 단계별 대기 허용 시간에 대한 예

은 설정되지 않았고, 우선 순위가 낮은 조직 블록의 비활성화, 지연, 활성화


처리 시작은 각 경우에 우선 순위가 높은 조직 블록 워치독 인터럽트 OB는 SFC 39 DIS_IRT와 SFC
의 현재 처리 시간만큼 지연됩니다. 40 EN_IRT를 사용하여 비활성화 또는 활성화할 수
있고, SFC 41 DIS_AIRT와 SFC 42 EN_AIRT를 사용
반면에 위상 시프트가 구성되고 이 값이 우선 순
하여 지연시키거나 활성화할 수 있습니다.
위가 높은 조직 블록의 최대 처리 시간보다 크면, 우
선 순위가 낮은 조직 블록은 정확한 시간 프레임으
로 처리됩니다. 21.4.2 STEP 7에서 워치독 인터럽트의 구성
워치독 인터럽트는 하드웨어 구성에서 설정합니
시동 시의 성능 특성 다. 먼저 편집 → 개체 속성을 클릭하여 선택된 CPU
를 열고 대화 상자에서 ‘주기적 인터럽트’ 탭을
워치독 인터럽트는 시동 OB에서는 실행할 수 없
선택합니다.
습니다. 시간 간격은 CPU가 실행 모드로 전환할 때
까지 시작되지 않습니다. S7-300 컨트롤러에서 처리 우선 순위는 영구적
으로 12로 설정됩니다. S7-400 컨트롤러에서는
CPU에 따라 각 가능한 OB에 2에서 24의 우선 순위
오류 발생 시 성능 특성
를 설정할 수 있고, 우선 순위 0은 그 순위가 지정된
위치독 인터럽트 처리 OB가 실행 중인 동안 동일
OB의 선택을 해제합니다. 우선 순위는 한번만 설정
한 위치독 인터럽트가 다시 발생하면, 운영체제는
해야 합니다. 왜냐하면, 동일한 우선 순위를 가진 인
OB 80(타이밍 오류)을 호출합니다. 이때 OB 80가
터럽트 이벤트들이 12 개가 넘게 동시에 발생하면
아직 프로그래밍되지 않은 경우, CPU는 정지 모드
인터럽트가 소멸될 수 있기 때문입니다.
로 갑니다.
각 OB에 대한 간격은 ‘실행’ 에서 선택하고, 지
운영체제는 실행되지 않은 워치독 인터럽트를 저 연된 호출 순간은 ‘단계별 대기 허용 시간’ 에서
장했다가 다음 기회에 실행합니다. 미실행 워치독 선택합니다.
인터럽트가 아무리 많아도 우선 순위 등급당 하나의
하드웨어 구성을 저장할 때 STEP 7은 컴파일된
미실행 워치독 인터럽트만 저장됩니다.
데이터를 오프라인 사용자 프로그램 블록에 있는 시
해당 OB를 사용할 수 있더라도, CPU를 파라미터 스템 데이터 개체에 기록합니다. CPU가 정지 모드
화했을 때 선택 해제된 워치독 인터럽트는 실행할 에 있는 동안 여기서 CPU로 파라미터 지정 데이터
수 없습니다. 이 경우에 CPU는 정지 모드로 갑니다. 를 로드할 수 있고, 데이터는 즉시 효력을 냅니다.

381
21 인터럽트 처리

21.5 하드웨어 인터럽트 21.5.1 하드웨어 인터럽트의 생성

하드웨어 인터럽트는 해당 기능을 갖춘 모듈에서


하드웨어 인터럽트를 사용하여 제어된 프로세 발생합니다. 그 예로는 프로세스에서 신호를 감지
스의 이벤트를 사용자 프로그램에서 즉시 탐지할 하는 디지털 입력 모듈 또는 모듈에서 수행되는 동
수 있으며, 이로써 적절한 인터럽트 처리 루틴으로 작 때문에 하드웨어 인터럽트를 생성하는 함수 모듈
대응할 수 있습니다. STEP 7에서는 하드웨어 인터 이 될 수 있습니다.
럽트를 위해 조직 블록 OB 40부터 47을 제공하는
기본적으로 하드웨어 인터럽트는 비활성화됩니
데, 이 8 개의 조직 블록 중에서 실제로 어느 블록
다. 정적 파라미터를 사용하여 하드웨어 인터럽트
을 사용할 수 있는가는 사용하는 CPU에 따라 다릅
를 활성화할 수 있습니다. 또한 동적 파라미터를 사
니다.
용하여 차후의 이벤트, 종료하는 이벤트 또는 둘 모
하드웨어 인터럽트 처리는 하드웨어 구성에서 설 두에 대해 하드웨어 인터럽트를 발생시킬지 여부를
정합니다. 시스템 함수 SFC 55 WR_PARM, SFC 56 지정할 수 있습니다. 동적 파라미터는 SFC를 사용
WR_DPARM, SFC 57 PARM_MOD를 사용하면, 실 하여 런타임 시 변경할 수 있는 파라미터입니다.

행 모드에서도 하드웨어 인터럽트 기능으로 모듈을 이러한 용도로 설치된 지능형 DP 슬레이브에서
(재)파라미터화할 수 있습니다. SFC 7 DP_PRAL를 사용하여 마스터 CPU에 프로세
스 인터럽트를 시작할 수 있습니다.
표 21.7에는 프로세스 인터럽트에 대한 시작 정
보가 나와있습니다. 여기서 더미 값 xx는 관련된 인 하드웨어 인터럽트를 위한 서비스 루틴을 포함하
터럽트 조직 블록 40부터 47까지의 번호를 나타냅 는 조직 블록이 실행을 종료하면 해당 하드웨어 인
니다. 터럽트가 모듈에서 승인됩니다.

표 21.7 하드웨어 인터럽트의 시작 정보


바이트 변수 이름 데이터 형식 설명 내용
0 OBxx_EV_CLASS BYTE 이벤트 클래스 B#16#11 = UP 이벤트
1 OBxx_STRT_INF BYTE 인터럽트 OB에 대 B#16#41 = OB 41
한 시작 요청
2 OBxx_PRIORITY BYTE 우선 순위 등급 기본값 16에서 23까지
(OB 40에서 OB 47까지)
3 OBxx_OB_NUMBR BYTE OB 번호 B#16#xx
4 OBxx_RESERVED_1 BYTE 예약됨 -
5 OBxx_IO_FLAG BYTE I/O ID B#16#54 = 입력 모듈
입력 하위 모듈
B#16#55 = 출력 모듈
출력 하위 모듈
6..7 OBxx_MDL_ADDR WORD 인터럽트를 트리거
하는 구성요소의 모
듈 시작 주소
8..11 OBxx_POINT_ADDR DWORD 인터럽트 정보
12..19 OBxx_DATE_TIME DATE_AND_ 이벤트 발생 OB의 호출 시간
TIME
xx는 OB 번호 40에서 47을 표시합니다.

382
21.5 하드웨어 인터럽트

S7-300에서 문제 해결 환하면서 시작됩니다. 전환 시에 대기 중이던 모든


하드웨어 인터럽트 OB가 실행되는 동안 동일한 하드웨어 인터럽트는 소멸됩니다.
하드웨어 인터럽트를 트리거하는 이벤트가 발생하
면, 앞의 하드웨어 인터럽트는 그것을 트리거한 이 오류 처리
벤트가 승인되어 더 이상 존재하지 않을 때 소멸됩 사용자 프로그램에 하드웨어 인터럽트 OB가 없
니다. 이때 이벤트가 하드웨어 인터럽트를 실행 중 는 하드웨어 인터럽트가 발생하면, 운영체제는 OB
인 모듈에서 나오는지 다른 모듈에서 나오는지는 영 85(프로그램 실행 오류)를 호출합니다. 이때 하드웨
향을 미치지 않습니다. 어 인터럽트는 승인됩니다. OB 85가 아직 프로그래
진단 인터럽트는 하드웨어 인터럽트를 실행하는 밍되지 않은 경우, CPU는 정지 모드로 갑니다.
동안에도 발생할 수 있습니다. 첫 번째 하드웨어 인 CPU를 파라미터화했을 때 선택되지 않은 하드웨
터럽트가 발생한 후 승인되기 전에 동일한 채널에서 어 인터럽트는 해당 OB가 프로그래밍되었더라도
다른 하드웨어 인터럽트가 발생하면, 나중 인터럽 실행할 수 없습니다. 이때 CPU는 정지 모드로 갑니
트의 소멸이 진단 인터럽트를 통해 시스템 진단에 다.
보고됩니다.
비활성화, 지연, 활성화
S7-400에서 문제 해결 하드웨어 인터럽트 OB 호출은 SFC 39 DIS_IRT와
하드웨어 인터럽트 OB를 실행하는 동안 동일한 SFC 40 EN_IRT를 사용하여 비활성화 또는 활성화
모듈에 있는 동일한 채널에서 이벤트가 발생하여 동 할 수 있고, SFC 41 DIS_AIRT와 SFC 42 EN_AIRT
일한 하드웨어 인터럽트를 트리거하면, 앞의 인터 를 사용하여 지연시키거나 활성화할 수 있습니다.
럽트는 소멸됩니다. 이벤트가 동일한 모듈의 다른
채널이나 다른 모듈에서 발생하면, 운영체제는 하
21.5.3 STEP 7에서 하드웨어 인터럽트의
드웨어 인터럽트 OB를 실행 종료한 직후에 해당 OB 구성
를 재시작합니다. 하드웨어 인터럽트는 하드웨어 구성에서 설정합
니다. 먼저 편집 → 개체 속성을 클릭하여 선택된 CPU
를 열고 대화 상자에서 ‘인터럽트’ 탭을 선택합니
21.5.2 하드웨어 인터럽트의 실행
다.

인터럽트 정보에 대한 질의 S7-300 시스템에서 OB 40의 기본 우선 순위는


하드웨어 인터럽트를 트리거한 모듈의 시작 주소 고정됩니다. S7-400 시스템에서는 가능한 모든 OB
는 하드웨어 인터럽트 OB의 시작 정보에서 바이트 에 대해 CPU에 따라 우선 순위를 2에서 24로 설정
6과 7에 있습니다. 이 시작 주소가 입력 주소이면 시 할 수 있고, 우선 순위 0은 OB의 실행을 선택 해제
작 정보의 바이트 5는 B#16#54를 포함합니다. 그 합니다. 우선 순위는 한번만 설정해야 합니다. 왜냐
렇지 않으면 B#16#55를 포함합니다. 문제의 모듈 하면, 동일한 우선 순위를 가진 인터럽트 이벤트들
이 디지털 입력 모듈이면, 바이트 8에서 11은 입력 이 12 개가 넘게 동시에 발생하면 인터럽트가 소멸
상태를 포함하고, 다른 종류의 모듈인 경우 이러한 될 수 있기 때문입니다.
바이트는 모듈의 인터럽트 상태를 포함합니다. 또한 해당 모듈에서 하드웨어 인터럽트 트리거를
활성화해야 합니다. 이 목적을 위해 이들 모듈은
시동 루틴에서 인터럽트 처리 CPU와 똑 같은 방법으로 파라미터화됩니다.
시동 루틴에서 모듈은 하드웨어 인터럽트를 발생 하드웨어 구성을 저장할 때 STEP 7는 컴파일된
시키지 않습니다. 인터럽트 처리는 실행 모드로 전 데이터를 오프라인 사용자 프로그램 블록에 있는 시

383
21 인터럽트 처리

스템 데이터 개체에 기록합니다. CPU가 정지 모드 터는 로드한 직후부터 효력이 발생하고, 모듈에 대


에 있는 동안 여기서 CPU로 파라미터화 데이터를 한 파라미터 지정 데이터는 다음 시동 후에 효력이
로드할 수 있습니다. CPU에 대한 파라미터화 데이 발생합니다.

표 21.8 DPV1 인터럽트의 시작 정보


바이트 변수 이름 데이터 형식 설명 내용
0 OBxx_EV_CLASS BYTE 이벤트 클래스 B#16#11 = UP 이벤트
1 OBxx_STRT_INF BYTE OB xx에 대한 시작 B#16#xx
요청
2 OBxx_PRIORITY BYTE 우선 순위 등급 B#16#02 = 기본값
3 OBxx_OB_NUMBR BYTE OB 번호 B#16#xx
4 OBxx_RESERVED_1 BYTE 예약됨 -
5 OBxx_IO_FLAG BYTE I/O ID B#16#54 = 입력 모듈
입력 하위 모듈
B#16#55 = 출력 모듈
출력 하위 모듈
6..7 OBxx_MDL_ADDR WORD 인터럽트를 트리거
하는 구성요소의 모
듈 시작 주소
8 OBxx_LEN BYTE 인터럽트 데이터 기
록의 길이
9 OBxx_TYPE BYTE 인터럽트 종류의 구 B#16#00 = 예약됨
별 B#16#01 = 진단 인터럽트
B#16#02 = 하드웨어 인터럽트
B#16#03 = 제거 인터럽트
B#16#04 = 삽입 인터럽트
B#16#05 = 상태 인터럽트
B#16#06 = 업데이트 인터럽트
B#16#07..1F = 예약됨
B#16#20..7E = 벤더 인터럽트
B#16#7F = 예약됨
10 OBxx_SLOT BYTE 인터럽트를 트리거
하는 구성요소의 슬
롯 번호
11 OBxx_SPEC BYTE 지정자 비트 1과 0:
0 0 예약됨
0 1 UP 이벤트
1 0 오류를 가진 DOWN 이벤트
1 1 추가 오류를 가진 DOWN 이벤트
비트 2:
0 추가 승인이 필요하지 않음
1 추가 승인이 필요함
비트 3 ~ 7: 예약됨
12.. OBxx_DATE_TIME DATE_AND_ 이벤트 발생 OB의 호출 시간
19 TIME
xx는 OB 번호 55, 56, 57을 표시합니다.

384
21.6 DPV1 인터럽트

21.6 DPV1 인터럽트 DPV1 인터럽트는 승인됩니다. OB 85가 존재하지


않는 경우, CPU는 정지 모드로 갑니다.
프로피버스 DPV1 슬레이브는 SIMATIC S7에서
앞서 알려진 종류 이외에 아래의 인터럽트를 트리거
비활성화, 지연, 활성화
할 수 있습니다.
DPV1 인터럽트 OB 호출은 SFC 39 DIS_IRT와
Z 상태 인터럽트는 DPV1 슬레이브가 작동 모드를
SFC 40 EN_IRT를 사용하여 비활성화 또는 활성화
변경할 때 발생합니다. 이때 인터럽트 조직 블록
할 수 있고, SFC 41 DIS_AIRT와 SFC 42 EN_AIRT
OB 55가 호출됩니다.
를 사용하여 지연시키거나 활성화할 수 있습니다.
Z 업데이트 인터럽트는 DPV1 슬레이브가 프로피
버스를 통해 또는 직접 파라미터화되면 발생합
STEP 7에서 DPV1 인터럽트의 구성
니다. 이때 인터럽트 조직 블록 OB 56이 호출됩
니다. DPV1 인터럽트는 하드웨어 구성 도구로 구성합
니다. 먼저 편집 → 개체 속성을 클릭하여 선택된 CPU
Z 벤더 인터럽트는 공급업체에서 예상한 이벤트
를 열고 나타나는 속성 창에서 ‘인터럽트’ 탭을
가 DPV1 슬레이브에서 발생하면 실행됩니다.
선택합니다.
이때 인터럽트 조직 블록 OB 57이 호출됩니다.
벤더 인터럽트를 트리거할 수 있는 이벤트는 기본 우선 순위는 2입니다. 우선 순위는 2부터 24
DPV1 슬레이브의 공급업체에 의해 정의됩니다. 까지 설정할 수 있습니다. 우선 순위 0은 인터럽트
를 선택 해제합니다. 선택 해제된 DPV1 인터럽트는
인터럽트의 출처, 인터럽트 지정자, 추가적으로
해당 OB가 존재하더라도 실행할 수 없습니다. 이때
사용할 수 있는 인터럽트 정보의 길이는 DPV1 인터
CPU는 정지 모드로 갑니다.
럽트 조직 블록의 시작 정보에 지정됩니다(표 21.8
참조). SFB 54 RALRM을 사용하여 보충 인터럽트 그리고 해당 DPV1 슬레이브에서 인터럽트 트리
정보를 읽을 수 있습니다(21.9.3 “추가 인터럽트 거를 추가적으로 파라미터화해야 합니다.
정보의 판독” 참조).
하드웨어 구성을 저장할 때 STEP 7은 컴파일된
데이터를 오프라인 사용자 프로그램 블록에 있는 시
시동 시의 성능 특성 스템 데이터 개체에 기록합니다. CPU가 정지 모드
프로피버스 DPV1 슬레이브는 마스터 CPU가 정 에 있는 동안 여기서 CPU로 파라미터화 데이터를
지 모드에 있을 때에도 인터럽트를 발생시킬 수 있 다운로드할 수 있습니다. CPU용 파라미터화 데이
습니다. 이 상태에서 마스터 CPU는 인터럽트 조직 터는 다운로드 직후에 유효하고, DPV1용 파라미터
블록을 호출할 수 없고, 누락된 인터럽트의 처리는 화 데이터는 다음 시동 후에 유효합니다.
CPU가 실행 모드로 갈 때에 수행되지 않습니다.
그러나 수신된 인터럽트 이벤트는 진단 버퍼와 모
듈 상태 데이터에 입력됩니다. 시스템 함수 SFC 51
21.7 멀티프로세서 인터럽트
RDSYSST를 사용하면 모듈 상태 데이터를 읽을 수
있습니다. 멀티프로세서 인터럽트를 사용하면 멀티프로세
서 모드의 모든 CPU에서 이벤트에 동시에 응답할
오류 처리 수 있습니다. 멀티프로세서 인터럽트는 SFC 35
DPV1 인터럽트가 트리거될 때 사용자 프로그램 MP_ALM을 사용하여 트리거합니다. 조직 블록 OB
에 해당 DPV1 인터럽트 OB가 없는 경우, 운영체제 60은 우선 순위가 25로 고정되어 있고 멀티프로세
는 OB 85(프로그램 실행 결함)를 호출합니다. 이때 서 인터럽트를 실행하는데 사용합니다.

385
21 인터럽트 처리

표 21.9는 멀티프로세서 인터럽트에 지정된 시작 시동 시의 성능 특성


정보를 보여 줍니다.
멀티프로세서 인터럽트는 실행 모드에서만 트리
거됩니다. 시동 루틴에서 SFC를 호출하면 함수 값
일반 사항 으로 오류 32 929 (W#16#80A1)를 반환한 후 종료
SFC 35 MP_ALM를 호출하면 멀티프로세서 인터 합니다.
럽트 OB의 실행을 시작합니다. CPU가 싱글 프로세
서 모드이면, OB 60은 즉시 시작됩니다. 멀티프로
오류 발생 시 성능 특성
세서 모드인 경우, OB 60은 함께 작동하는 모든
CPU에서 동시에 시작됩니다. 즉, SFC 35를 호출한 SFC 35를 재호출할 때 OB 60이 여전히 실행 중
CPU에서도 OB 60를 호출하기 전에 다른 모든 CPU 이면, 시스템 함수는 오류 코드 32 928
가 준비를 마칠 때까지 대기합니다.
(W#16#80A0)을 함수 값으로 반환합니다. 어떠한
멀티프로세서 인터럽트는 하드웨어 구성에서 설 CPU에서도 OB 60를 시작하지 못 합니다.
정하지 않고, 멀티컴퓨팅 기능을 가진 모든 CPU에
CPU 중의 하나에서 OB 60을 호출했을 때 OB 60
이미 포함되어 있습니다. 그럼에도 불구하고 최소
한 20 바이트 이상의 충분한 로컬 데이터 바이트가 이 없는 경우 또는 시스템 함수로 OB 60의 실행을
CPU의 ‘로컬 데이터’ 탭의 우선 순위 등급 25 아 비활성화하거나 지연시킨 경우에도 결과에는 영향
래에 예약되어 있어야 합니다. 이 없으며, SFC 35는 오류를 보고하지도 않습니다.

표 21.9 멀티프로세서 인터럽트의 시작 정보


바이트 변수 이름 데이터 형식 설명 내용
0 OB60_EV_CLASS BYTE 이벤트 클래스 B#16#11 = UP 이벤트
1 OB60_STRT_INF BYTE OB 60에 대한 시작 B#16#61: 자체 CPU에 의해 트리거된
요청 멀티프로세서 인터럽트
B#16#62: 다른 CPU에 의해 트리거된
멀티프로세서 인터럽트
2 OB60_PRIORITY BYTE 우선 순위 등급 B#16#19 = 기본값(25dec)
3 OB60_OB_NUMBR BYTE OB 번호 B#16#3C(60dec)
4 OB60_RESERVED_1 BYTE 예약됨 -
5 OB60_RESERVED_2 BYTE 예약됨 -
6..7 OB60_JOB INT 작업 ID SFC 35 MP_ALM의
입력 변수 JOB
8..9 OB60_RESERVED_3 INT 예약됨 -
10..11 OB60_RESERVED_4 INT 예약됨 -
12..19 OB60_DATE_TIME DATE_AND_ 이벤트 발생 OB의 호출 시간
TIME

표 21.10 SFC 35 MP_ALM의 파라미터


파라미터 선언 데이터 형식 내용, 설명
JOB INPUT BYTE B#16#00부터 B#16#0F까지 범위의 작업 ID
RET_VAL RETURN INT 오류 정보

386
21.8 동기 사이클 인터럽트

비활성화, 지연, 활성화 됩니다. 등시성 모드로 실행되는 사용자 프로그램


멀티프로세서 OB는 SFC 39 DIS_IRT와 SFC 40 은 조직 블록 OB 61부터 64에 있습니다. 시스템 함
EN_IRT를 사용하여 비활성화 또는 활성화할 수 있 수 SFC 126 SYNC_PI와 SFC 127 SYNC_PO는 등시
고, SFC 41 DIS_AIRT와 SFC 42 EN_AIRT를 사용하 성 모드로 프로세스 이미지를 업데이트하는데 사용
여 지연시키거나 활성화할 수 있습니다. 할 수 있습니다.

하드웨어 구성 도구를 사용하여 등시성 모드를 구


SFC 35 MP_ALM 성할 수 있습니다(20.4.3 “프로피버스 DP용 특별
멀티프로세서 인터럽트 함수” 에 있는 “일정한 버스 사이클 시간과 등시성
멀티프로세서 인터럽트는 SFC 35 MP_ALM을 사 모드의 구성” 단원 참조). 표 21.11에는 동기 사이
용하여 트리거합니다. 이 SFC의 파라미터는 클 인터럽트의 시작 정보가 나와있습니다. 여기서
표 21.10에 수록되어 있습니다. 더미 값 xx는 관련된 인터럽트 조직 블록 61부터 64

JOB 파라미터로 작업 식별자를 포워딩할 수 있습 까지의 번호를 표시합니다.

니다. 모든 CPU의 OB 60 시작 정보 바이트 6과 7에


서 동일한 값을 읽을 수 있습니다.
21.8.1 동기 사이클 인터럽트의 처리
동시 사이클 인터럽트는 DP 마스터의 글로벌 제
어 명령으로 트리거됩니다.
21.8 동기 사이클 인터럽트
동기 사이클 인터럽트는 실행 모드에서만 처리됩
프로그램이 프로피버스 DP 사이클과 동시에 실 니다. 재가동, 정지, 일시중지 모드에서 동기 사이클
행되면 등시성 모드라고 합니다. 등시성 모드에서 인터럽트는 거부됩니다. 아직 실행되지 않은 OB 호
는 일정한 버스 사이클 시간과 연계되었을 때 I/O에 출의 개수는 실행 모드로 처음 호출될 때 등시성 모
대해 동일한 길이의 재생 가능한 응답 시간이 생성 드 OB의 시작 정보에 있습니다.

표 21.11 동기 사이클 인터럽트의 시작 정보


바이트 변수 이름 데이터 형식 설명 내용
0 OBxx_EV_CLASS BYTE 이벤트 클래스 B#16#11 = UP 이벤트
1 OBxx_STRT_INF BYTE OB 60에 대한 시작 요 B#16#64: OB 61, ... ,
청 B#16#67: OB 64
2 OBxx_PRIORITY BYTE 우선 순위 등급 B#16#19 = 기본값(25dec)
3 OBxx_OB_NUMBR BYTE OB 번호 B#16#xx
4 OBxx_RESERVED_1 BYTE 예약됨 -
5 OBxx_RESERVED_2 BYTE 예약됨 -
6.0 OBxx_GC_VIOL BOOL GC 위반 본문을 참조하십시오.
6.1 OBxx_FIRST BOOL STARTUP 또는 HALT ‘1’ 인 경우
이후 첫 번째 실행
7 OBxx_MISSED_EXEC BYTE 거부된 OB 호출의 수 본문을 참조하십시오.
8 OBxx_DP_ID BYTE 등시성 DP 마스터 시스 하드웨어 구성 도구를 사용하여
템의 ID 구성
9 OBxx_RESERVED_3 BYTE 예약됨 -
10..11 OBxx_RESERVED_4 WORD 예약됨 -
12..19 OBxx_DATE_TIME DT 이벤트 발생 OB의 호출 시간

387
21 인터럽트 처리

오류 처리 시성 모드로 데이터 일관성을 가지고 수행됩니다.


동시 사이클 인터럽트가 해당 인터럽트 OB가 완 이 두 SFC는 동기 사이클 인터럽트 OB에서만 호출
료되기 전에 도착하면, 타이밍 오류가 발생합니다. 할 수 있습니다. 그리고 부분 프로세스 이미지에 직
이러한 현상은 사용자 프로그램이 동기 사이클 인터 접 액세스해서는 안됩니다.
럽트 OB에 너무 오래 있거나, 우선 순위가 높은 프
표 21.12에는 SFC 126 SYNC_PI와 SFC 127
로그램 구성요소 때문에 실행이 너무 오랫동안 인터
SYNC_PO의 파라미터가 나와있습니다.
럽트되었을 때 발생할 수 있습니다. ‘너무 빠른’
인터럽트에 의해 호출된 OB는 거부되고, OB 80 오류가 발생하면 부분 프로세스 이미지는 업데이
‘타이밍 오류’ 가 호출됩니다. 그러면 여기에서 타 트되지 않습니다. 예외:
이밍 오류에 대처할 수 있습니다. 실패한 동기 사이
Z 입력의 부분 프로세스 이미지를 업데이트할 때
클 인터럽트의 개수는 시작 정보에서 다음에 처리되
액세스 오류가 발생하면, 결함이 있는 모듈의 입
는 동기 사이클 인터럽트 OB에 출력됩니다.
력은 ‘0’ 으로 설정되고, OB 85 ‘프로그램
오류가 발생했을 때, DP 마스터는 글로벌 제어 명 실행 오류’ 는 호출되지 않습니다.
령(GC)을 생략하거나 옵셋할 수 있습니다. 이 ‘GC
위반’ 은 올바르게 호출된 다음 동기 사이클 인터럽 Z 전체 데이터를 출력에 일관성 있게 전송하지 못
트 OB의 시작 정보에 나타납니다. 한 경우에는 일관성 경고가 나옵니다. 그러나,
개별 슬레이브의 데이터는 일관성을 유지합니
다.
비활성화, 지연, 활성화
동기 사이클 인터럽트 OB의 호출은 SFC 39 DIS_ Z 출력의 부분 프로세스 이미지를 업데이트할 때
IRT와 SFC 40 EN_IRT를 사용하여 비활성화 또는 활 액세스 오류가 발생하면, 결함 있는 모듈의 데이
성화할 수 있고, SFC 41 DIS_AIRT와 SFC 42 EN_ 터는 전송되지 않고 부분 프로세스 이미지에 변
AIRT를 사용하여 지연시키거나 활성화할 수 있습니 경되지 않은 채 남아 있습니다. 영향을 받지 않
다. 은 모듈의 업데이트는 두 DP 사이클 간에 분산
됩니다(일관성 경고).

21.8.2 프로세스 이미지의 등시성 업데이트


하드웨어 구성 도구를 사용하여 부분 프로세스 이 21.8.3 STEP 7에서 동기 사이클 인터럽트의
구성
미지를 동기 사이클 인터럽트 OB에 지정할 수 있습
니다. 부분 프로세스 이미지는 자동으로 업데이트 동기 사이클 인터럽트의 구성은 하드웨어 구성 도
되지 않습니다. 입력과 출력을 업데이트하려면 각 구를 사용하여 이루어집니다. 먼저 편집 → 개체 속성
각 시스템 함수 SFC 126 SYNC_PI와 SFC 127 을 클릭하여 선택된 CPU를 열고, 나타나는 속성 창
SYNC_PO를 사용해야 합니다. 이때 업데이트는 등 에서 ‘동기 사이클 인터럽트’ 탭을 선택합니다.

표 21.12 프로세스 이미지의 등시성 업데이트를 위한 SFC의 파라미터


With SFC 파라미터 이름 선언 데이터 형식 내용, 설명
126 127 PART INPUT BYTE 부분 프로세스 이미지의 번호
B#16#01부터 B#16#1E까지
126 127 RET_VAL RETURN INT 오류 정보
126 127 FLADDR OUTPUT WORD 액세스 오류가 발생하는 경우 오류를 발생시킨
첫 번째 바이트의 주소

388
21.9 인터럽트 이벤트의 처리

기본 우선 순위는 25입니다. 우선 순위는 2부터 21.9.1 인터럽트 활성화 및 비활성화


26까지 설정할 수 있습니다. 우선 순위 0은 인터럽 아래의 시스템 함수는 인터럽트와 비동기 에러를
트를 선택 해제합니다. 선택 해제된 동기 사이클 인 활성화 또는 비활성화하는데 사용할 수 있습니다.
터럽트는 해당 OB가 존재하더라도 실행할 수 없습 Z SFC 39 DIS_IRT
니다. 그리고, 등시성 DP 마스터 시스템과 관련 부 인터럽트 비활성화
분 프로세스 이미지를 인터럽트 OB에 할당합니다. Z SFC 40 EN_IRT
비활성화된 인터럽트를 활성화
또한 해당 DP 구성 요소에서 일정한 버스 사이클
시간과 등시성 모드를 설정해야 합니다(20.4.3 “프 표 21.13에는 위 시스템 함수의 파라미터가 나와
로피버스 DP용 특별 함수” 에서 “일정한 버스 사 있습니다.

이클 시간과 등시성 모드의 구성” 단원 참조).


SFC 39 DIS_IRT
하드웨어 구성을 저장할 때 STEP 7은 컴파일된 인터럽트를 비활성화합니다.
데이터를 오프라인 사용자 프로그램 블록에 있는 시 시스템 함수 SFC 39 DIS_IRT는 새로운 인터럽트
스템 데이터 개체에 기록합니다. CPU가 정지 모드 와 비동기 에러를 비활성화합니다. 이때, 모든 새로
에 있는 동안 여기서 CPU로 파라미터화 데이터를 운 인터럽트와 비동기 에러는 거부됩니다. 비활성

다운로드할 수 있습니다. CPU에 대한 파라미터화 화한 후 인터럽트 또는 비동기 에러가 발생하면 조


직 블록은 실행되지 않습니다. 조직 블록이 존재하
데이터는 다운로드 직후에 유효하고, DP 구성요소
지 않는 경우, CPU는 정지 모드로 가지 않습니다.
에 대한 파라미터화 데이터는 다음 시동 후에 유효
합니다. 비활성화 설정은 SFC 40 EN_IRT로 취소할 때까
지 모든 우선 순위 등급에 대해 효력을 가집니다. 콜
드 리스타트 또는 웜 리스타트 후에 모든 인터럽트
와 비동기 에러는 활성화됩니다.
21.9 인터럽트 이벤트의 처리 비활성화할 인터럽트와 비동기 에러를 지정하려
면 MODE 파라미터와 OB_NR 파라미터를 사용합니
인터럽트를 비활성화하고 지연하고 활성화하는 다. MODE = B#16#00은 모든 인터럽트와 비동기
시스템 함수는 모든 인터럽트와 비동기 에러에 영향 에러를 비활성화합니다. MODE = B#16#01은 OB_
을 미칩니다. 동기 에러를 처리하기 위해 시스템 함 NR 파라미터에서 첫 번째 OB 번호가 지정된 인터럽
수 SFC 36에서 SFC 38까지를 제공합니다. 트 클래스를 비활성화합니다.

표 21.13 인터럽트 처리를 위한 SFC 파라미터


SFC 파라미터 선언 데이터 형식 내용, 설명
39 MODE INPUT BYTE 비활성화 모드. 본문을 참조하십시오.
OB_NR INPUT INT OB 번호. 본문을 참조하십시오.
RET_VAL RETURN INT 오류 정보
40 MODE INPUT BYTE 활성화 모드. 본문을 참조하십시오.
OB_NR INPUT INT OB 번호. 본문을 참조하십시오.
RET_VAL RETURN INT 오류 정보
41 RET_VAL RETURN INT 지연 횟수(새 옵션)
42 RET_VAL RETURN INT 나머지 지연 횟수

389
21 인터럽트 처리

예를 들면, MODE = B#16#01와 OB_NR = 40은 SFC 41 DIS_AIRT


모든 하드웨어 인터럽트를 비활성화하고, OB = 80 인터럽트를 지연시킵니다.
은 모든 비동기 에러를 비활성화합니다. MODE = 시스템 함수 SFC 41 DIS_AIRT는 우선 순위가 높
B#16#02는 OB_NR 파라미터에 OB 번호를 입력한 은 새로운 인터럽트와 비동기 에러의 실행을 지연시
인터럽트 또는 비동기 에러를 비활성화합니다. 킵니다. 여기서 지연의 의미는 운영체제가 지연 시
간 동안 발생한 인터럽트와 비동기 에러를 저장한
비활성화 설정에도 불구하고 운영체제는 새로운
후 지연 시간이 끝났을 때 그 인터럽트와 비동기 에
인터럽트 또는 비동기 에러를 진단 버퍼에 기록합니
러를 실행한다는 것입니다. SFC 41을 한번 호출하
다.
면, 현재 조직 블록에 있는 프로그램은 우선 순위가
높은 인터럽트에 의해 인터럽트되지 않으며, 인터
SFC 40 EN_IRT 럽트와 비동기 에러는 소멸되지 않습니다.
비활성화된 인터럽트를 활성화합니다.
현재 OB의 실행이 종료되거나 SFC 42 EN_AIRT
시스템 함수 SFC 40 EN_IRT는 SFC 39 DIS_IRT 를 호출할 때까지 지연은 효력을 가집니다.
로 비활성화된 인터럽트와 비동기 에러를 활성화합
SFC 41은 연속하여 여러 번 호출할 수 있습니다.
니다. 활성화한 이후 발생한 인터럽트 또는 비동기
RET_VAL 파라미터는 호출 회수를 보여 줍니다. 해
에러는 해당 조직 블록에 의해 처리됩니다. 조직 블
당 인터럽트와 비동기 에러를 다시 활성화하려면,
록이 사용자 프로그램 안에 없으면, OB 81 ‘전원
SFC 42를 SFC 41와 정확하게 동일한 회수만큼 호
공급에러’ 인 경우를 제외하고 CPU는 정지 모드로
출해야 합니다.
갑니다.

MODE 파라미터와 OB_NR 파라미터는 활성화할 SFC 42 EN_AIRT


인터럽트와 비동기 에러를 지정합니다. MODE = 지연된 인터럽트를 활성화합니다.
B#16#00은 모든 인터럽트와 비동기 에러를 활성화 시스템 함수 SFC 42 EN_AIRT는 SFC 41로 지연
합니다. MODE = B#16#01은 OB_NR 파라미터에서 된 인터럽트와 비동기 에러를 다시 활성화합니다.
첫 번째 OB 번호가 지정된 인터럽트 클래스를 활성 현재 OB에서 SFC 41을 호출한 횟수와 정확하게 동
화합니다. MODE = B#16#02는 사용자가 OB_NR 일한 횟수만큼 SFC 42를 호출해야 합니다. RET_
파라미터에 OB 번호를 입력한 인터럽트 또는 비동 VAL 파라미터는 현재 유효한 지연의 횟수를 보여 줍
기 에러를 활성화합니다. 니다. 즉 RET_VAL = 0이면 인터럽트와 비동기 에러
가 다시 활성화된 것입니다.

먼저 SFC 41을 호출하지 않고 SFC 42를 호출하


21.9.2 인터럽트의 지연과 활성화
면, RET_VAL 파라미터에는 값 32896
아래의 시스템 함수는 인터럽트와 비동기 에러를 (W#16#8080)이 기록됩니다.
지연 또는 활성화하는데 사용할 수 있습니다.

Z SFC 41 DIS_AIRT 21.9.3 추가 인터럽트 정보의 판독


인터럽트를 지연시킵니다. SFB 54 RALRM은 인터럽터를 트리거한 모듈 또
는 하위 모듈과 같은 구성 요소에서 추가 인터럽트
Z SFC 42 EN_AIRT
정보가 존재하는 경우 이를 읽습니다. SFB는 인터
지연된 인터럽트를 활성화합니다.
럽트 조직 블록이나 그 안에서 호출된 블록 안에서
표 21.13에는 위 시스템 함수의 파라미터가 나와 호출됩니다. SFB 54 RALRM은 동기로 처리됩니다.
있습니다. 즉, 요청된 데이터는 호출 직후 출력 파라미터에 존

390
21.9 인터럽트 이벤트의 처리

재합니다. 표 21.14에는 SFB 54 RALRM의 블록 파 대상 영역 AINFO(인터럽트 정보)는 바이트 0에서


라미터가 나와있습니다. 3에 헤더 정보(예: 수신한 보충 인터럽트 정보의 바
이트 수 또는 인터럽트 유형)를 포함하고, 바이트 4
SFB 54 RALRM은 기본적으로 모든 이벤트에 대
에서 223에는 구성요소에 따른 추가 인터럽트 정보
해 모든 조직 블록 또는 실행 레벨에서 호출할 수 있
를 포함합니다.
습니다. 시작 이벤트가 I/O로부터의 인터럽트가 아
MODE 파라미터를 지정하여 SFB 54 RALRM의
닌 조직 블록에서 이 함수 블록을 호출하는 경우, 그
작동 모드를 정의합니다. MODE = 0으로 설정되면,
에 따라 더 적은 정보만 사용 가능하게 됩니다. 인터
SFB는 ID 파라미터에서 인터럽트를 트리거하는 구
럽트를 트리거하는 각 조직 블록과 구성요소에 따라
성요소를 보여 줍니다. MODE = 1로 설정된 경우 모
다른 정보가 TINFO 파라미터와 AINFO 파라미터에
든 출력 파라미터가 기록됩니다. MODE = 2로 설정
지정된 대상 영역으로 기록됩니다(표 21.15 참조).
된 경우, F_ID 파라미터에서 지정된 구성요소가 인
대상 영역 TINFO(작업 정보)는 호출한 네스팅 깊 터럽트를 트리거한 구성요소인지 확인합니다. 이
이에 상관 없이 SFB 54 RALRM을 호출한 조직 블록 경우에 NEW 파라미터는 TRUE 값을 가지고, 다른
의 바이트 0에서 19에 있는 전체 시작 정보를 포함 모든 출력 파라미터가 기록됩니다.
합니다. 따라서 SFB 54 RALRM은 시스템 함수 SFC SFB 54 RALRM을 제대로 실행하려면 다양한 조
6 RD_SINFO를 부분적으로 대신합니다. 관리 정보( 직 블록에서 각 호출에 대해 자체 인스턴스 데이터
예: 어느 구성요소가 인터럽트를 트리거했는가에 대 가 필요합니다. 즉, 각 경우에 자체 인스턴스 데이터
한 정보)는 바이트 20에서 27 사이에 있습니다. 블록(DB)이 필요합니다.

표 21.14 시스템 함수 블록 SFB 54 RALRM의 파라미터


파라미터 선언 데이터 형식 내용, 설명
MODE INPUT INT 작동 모드: 0 = 인터럽트를 트리거하는 구성요소를 보여 줍니다.
1 = 모든 출력 파라미터를 기록합니다.
2 = 선택한 구성 요소가 인터럽트를 트리거했는지 여부
를 확인합니다.
F_ID INPUT DWORD 스캔할 구성요소의 모듈 시작 주소
MLEN INPUT INT 스캔할 보충 인터럽트 정보의 최대 바이트 수
NEW INPUT BOOL TRUE = 새로운 인터럽트를 수신했습니다.
STATUS OUTPUT DWORD 오류 식별
ID OUTPUT DWORD 인터럽트를 트리거하는 구성요소의 모듈 시작 주소
LEN OUTPUT INT 수신한 보충 인터럽트 정보의 바이트 수
TINFO OUTPUT ANY OB 시작 정보와 관리 정보를 위한 대상 영역
AINFO OUTPUT ANY 헤더 정보와 보충 인터럽트 정보를 위한 대상 영역

391
21 인터럽트 처리

표 21.15 TINFO 파라미터와 AINFO 파라미터의 지정


인터럽트 유형 OB 번호 TINFO AIFO
OB 시작 정보 관리 정보 헤더 정보 보충 인터럽트 정보
바이트 0 - 19 바이트 20 - 27 바이트 0 - 3 1) 바이트 4 - 223 1)
중앙 하드웨어 인터럽트 40 - 47 예 예 예 아니오
분산 하드웨어 인터럽트 40 - 47 예 예 예 스테이션에서 제공된
대로
상태 인터럽트 55 예 예 예 예
업데이트 인터럽트 56 예 예 예 예
벤더 인터럽트 57 예 예 예 예
I/O 이중화 에러 70 예 예 아니오 아니오
중앙 진단 인터럽트 82 예 예 예 진단 데이터 기록 1
분산 진단 인터럽트 82 예 예 예 스테이션에서 제공된
대로
중앙 핫 스와핑 인터럽트 83 예 예 예 아니오
분산 핫 스와핑 인터럽트 83 예 예 예 스테이션에서 제공된
대로
랙/스테이션 고장 86 예 예 아니오 아니오
다른 모든 이벤트 예 아니오 아니오 아니오
프로피넷 IO의 경우:
1)
0 to 25
2)
26 to 1431

392
22 시동 특성

22 시동 특성

22.1 일반 사항 지점에서 메인 프로그램을 재개하고 사이클을 ‘마


칩니다’ .

22.1.1 작동 모드 98년 10월 이전에 공급된 S7 CPU에는 웜 리스타


CPU는 전원을 켠 후 메인 프로그램을 시작하기 트와 핫 리스타트 기능이 있습니다.
전에 시동 루틴을 실행합니다. START-UP 모드는
START-UP 모드에서 일회성으로 프로그램을 스
정지 모드 또는 실행 모드와 같이 CPU의 작동 모드
캔할 수 있습니다. 위와 같은 목적으로 STEP 7은 조
중의 하나입니다. 본 장에서는 START-UP 모드와
직 블록 OB 102(콜드 리스타트), OB 100(웜 리스타
다른 모드 간의 전환과 재가동 루틴 자체 내에서
트), OB 101(핫 리스타트)을 제공합니다. 이러한 조
CPU의 작동에 대해 설명합니다.
직 블록을 적용할 수 있는 예는 CPU에 의해 파라미
전원을 켠 후 a CPU는 정지 모드에 있습니다(그
터화가 실행되지 않은 모듈의 파라미터화, 메인 프
림 22.1 참조). CPU의 프론트 패널에 있는 모드 선
로그램에 대한 기본값 프로그래밍 등입니다.
택 스위치가 RUN 또는 RUN-P 모드이면, CPU는
START-UP 모드로 전환된 후 s 실행 모드로 갑니
다 d. CPU가 재가동 또는 실행 모드에 있는 동안 22.1.2 HOLD 모드
‘회복할 수 없는’ 오류가 발생하거나 모드 선택 스 ‘싱글 스텝 모드’ 로 중단점을 사용하여 프로그
위치를 정지 모드로 놓으면, CPU는 정지 모드로 돌 램을 테스트할 때 CPU는 대기 모드로 바뀝니다. 이
아갑니다 f g. 때 정지 LED가 켜지고 실행 LED가 깜빡거립니다.
사용자 프로그램은 HOLD 모드에서 단계별 작동
HOLD 모드에서 출력 모듈은 비활성화됩니다. 출
으로 중단점을 사용하여 테스트됩니다. 사용자는
력 모듈에 기록하면 모듈 메모리에 영향을 미치지
실행 모드와 START-UP 모드에서 HOLD 모드로 전
만, 신호 상태를 모듈 출력으로 전환하지 않습니다.
환할 수 있고, 테스트를 중단했을 때 원래 모드로 돌
출력 모듈은 HOLD 모드를 종료할 때까지 재활성화
아가게 됩니다h j. 또한 CPU를 대기 모드에서 정
되지 않습니다.
지 모드로 설정할 수 있습니다 k.
CPU를 파라미터화할 때, ‘재가동’ 탭에서 재 HOLD 모드에서 타이밍과 관련된 모든 것은 중단
가동 특성을 정의할 수 있습니다. 이러한 재가동 특 됩니다. 여기에는 예컨대 타이머, 클록 메모리, 런타
성에는 시동 후에 모듈의 준비 신호에 대해 최대한 임 미터, 사이클 시간 모니터링, 최소 스캔 타임, 인
허용되는 시간, 구성 데이터가 실제 구성과 일치하 터럽트 시간과 인터럽트 지연시간을 포함합니다.
지 않을 때 CPU를 시동할 지 여부, CPU를 재가동할 이에 대한 예외는 실시간 클록만 정상적으로 계속
모드 등을 포함합니다. 작동한다는 것입니다.

SIMATIC S7에는 콜드 리스타트, 웜 리스타트, 핫 테스트 모드에서 다음 명령 구문으로 갈 때마다,


리스타트라는 세 가지 모드가 있습니다. 콜드 리스 해당 단계의 지속 시간 동안 타이머는 약간 앞으로
타트 또는 웜 리스타트 시에 메인 프로그램은 언제 진행하여 ‘정상적인’ 프로그램 스캔과 유사한 동
나 처음부터 처리됩니다. 핫 리스타트는 인터럽트 적인 동작을 모사합니다.

393
22 시동 특성

그림 22.1 CPU 작동 모드

HOLD 모드에서 CPU는 수동 통신이 가능합니다. 웜 리스타트 시, 전원이 끊기거나 정지 모드로


즉, CPU는 글로벌 데이터를 수신하거나 데이터의 되기 전에 유효하던 ‘이전’ 프로세스 이미지 입
일방향 교환을 수행할 수 있습니다. 력과 출력 테이블은 OB 101과 사이클의 나머지에
서 사용됩니다. 이 사이클의 끝에 프로세스 이미지
CPU가 대기 모드에 있는 동안 전원이 끊어지면,
출력 테이블은 모듈 메모리로 전송되지만, 출력 모
배터리로 작동하는 CPU는 전원이 복구될 때 정지
듈이 여전히 비활성화 상태이므로 외부 출력으로
모드로 갑니다. 백업 배터리가 없는 CPU는 자동으
전달되지는 않습니다.
로 웜 리스타트를 실행합니다.
이제 사용자는 웜 리스타트의 끝에 프로세스 이
미지 출력 테이블과 모듈 메모리의 내용을 삭제하
22.1.3 출력 모듈의 비활성화
기 위해 CPU를 파라미터화할 수 있는 옵션을 가지
정지 모드와 대기 모드에서 모듈은 출력 비활성화 고 있습니다. OB 1으로 전환하기 전에, 모듈 메모
(OD) 신호에 의해 비활성화됩니다. 비활성화된 출 리의 신호 상태를 외부 출력에 적용하기 위해 CPU
력 모듈은 ‘0’ 신호를 출력하거나, 해당 기능을 가 는 비활성화 신호를 취소합니다.
지고 있는 경우 대체값을 출력합니다. 변수 테이블
을 통해, 정지 모드에서도 ‘Isolate PQ’ 함수를 사
용하여 모듈 출력을 제어할 수 있습니다. 22.1.4 조직 블록 재가동
콜드 리스타트 시에 CPU는 조직 블록 OB 102를
리스타트 동안 출력 모듈은 비활성화 상태에 있습
호출하고, 웜 리스타트 시에 조직 블록 100을 호출
니다. 출력 모듈은 주기적 스캔이 시작할 때에만 활
합니다. OB 100 또는 OB 102가 없는 경우에 CPU
성화됩니다.
는 즉시 주기적 프로그램 실행을 시작합니다.
콜드 리스타트(OB 102)와 웜 리스타트(OB 100)
웜 리스타트 시에 CPU는 메인 프로그램을 처리
시에 프로세스 이미지와 모듈 메모리의 내용은 삭제
하기 전에 일회성으로 조직 블록 OB 101을 호출합
됩니다. OB 102 또는 OB 100에서 입력을 스캔하려
니다. OB 101이 없으면 CPU는 인터럽트 지점에서
면, 모듈에 직접 액세스하여 신호 상태를 로드해야
스캔을 시작합니다.
합니다. 그 다음에 입력을 설정합니다. 예를 들면,
로드 명령 구문 또는 MOVE 상자를 사용하여 입력을 재가동 조직 블록의 경우 임시 로컬 데이터에 있
주소 영역 PI에서 주소 영역 I로 전달합니다. 그 후에 는 시작 정보는 동일한 형식을 가집니다. 표 22.1에
이 입력을 처리합니다. 는 OB 100에 대한 시작 정보가 나와있습니다. 재가

394
22.2 시동

동 이유는 아래와 같이 재가동 요청(바이트 1)에 나 Z CPU의 전원을 켰을 경우


타납니다.
Z 모드 선택 스위치를 실행 모드에서 정지 모드로
B#16#81 수동 웜 리스타트(OB 100) 설정한 경우

B#16#82 자동 웜 리스타트(OB 100) Z 프로그램을 스캔하는 동안 ‘회복할 수 없는’


B#16#83 수동 핫 리스타트(OB 101) 오류가 발생했을 경우

B#16#84 자동 핫 리스타트 (OB 101) Z 시스템 함수 SFC 46 STP를 실행할 경우

B#16#85 수동 콜드 리스타트(OB 102) Z 통신 함수에서 요청한 경우(프로그래밍 기기로

B#16#86 자동 콜드 리스타트(OB 102) 부터의 중지 요청 또는 다른 CPU로부터 통신 함


수를 통한 중지 요청)
중지 이벤트의 번호와 추가 정보는 리스타트를 더
정확하게 정의합니다. 예를 들어, 수동 웜 리스타트 이 경우에 CPU는 중단 이유를 진단 버퍼에 기록
가 모든 선택 스위치를 통해 시작되었는지 여부를 합니다. 정지 모드에서는 또한 문제를 찾기 위해 프
알려줍니다. 이러한 정보를 사용하면 적당한 이벤 로그래밍 기기를 사용하여 CPU 정보를 읽을 수 있
트 관련 재가동 루틴을 개발할 수 있습니다. 습니다.

비동기 시스템 블록은 S7-300 CPU의 시동 프로 정지 모드에서 사용자 프로그램은 스캔되지 않습


그램에서 처리할 수 없음에 유의하십시오. 시동 프 니다. CPU는 파라미터화할 때 하드웨어 구성 데이
로그램에서 프로세스 이미지에 출력을 설정하거나 터에 입력한 값 또는 기본값을 가져온 다음, 모듈을
재설정할 수 있지만, 실행 모드로 전환할 때에만 출 지정된 초기 상태로 설정합니다.
력 모듈로 전달됩니다.
정지 모드에서 CPU는 GD 통신을 통해 글로벌
데이터를 수신하고, 수동 일방향 통신 함수를 실행
합니다. 이때 실시간 클록은 계속 돌아갑니다.
22.2 시동
정지 모드에서 CPU를 파라미터화할 수 있습니
다. 예를 들면, MPI 주소를 설정하고, 사용자 프로
22.2.1 정지 모드 그램을 전송하거나 수정하고, CPU 메모리를 재설
아래의 경우에 CPU는 정지 모드로 갑니다. 정할 수 있습니다.

표 22.1 리스타트 OB의 시작 정보


바이트 이름 데이터 형식 설명 내용
0 OB100_EV_CLASS BYTE 이벤트 클래스 B#16#13
1 OB100_STRTUP BYTE 재가동 요청(본문 참조) B#16#8x(본문 참조)
2 OB100_PRIORITY BYTE 우선 순위 등급 기본값 27
3 OB100_OB_NUMBR BYTE OB 번호 100, 101 또는 102
4 OB100_RESERVED_1 BYTE 예약됨 -
5 OB100_RESERVED_2 BYTE 예약됨 -
6..7 OB100_STOP WORD 중지 이벤트의 번호 (설명서 참조)
8..11 OB100_STRT_INFO DWORD 현재 리스타트에 대한 추가 정보 (설명서 참조)
12..19 OB100_DATE_TIME DT 이벤트가 발생한 날짜와 시간 OB의 호출 시간

395
22 시동 특성

22.2.2 메모리 초기화 스위치를 해제했다가 다시 3초 이내에 MRES 위


메모리 초기화는 CPU를 ‘초기 상태’ 로 설정합 치에 놓은 다음 이 위치를 유지합니다.
니다. 정지 모드에서 프로그래밍 기기를 사용하거 Z SF 또는 INTF LED가 깜박일 때까지 기다립니
나 모드 선택 스위치를 사용하여 메모리 초기화를 다 . 약 5초 정도 걸리는 이 시간 동안 모드 선택
시작할 수 있습니다. 이를 위해, 스위치를 MRES 위 스위치를 해제하여 재설정 과정을 중단할 수 있
치에 최소한 3초간 둔 후 해제했다가 최대 3초가 지 습니다.
난 후에 다시 MRES 위치에 최소한 3초간 둡니다.
Z SF 또는 INTF LED가 계속 켜져 있으면, 모드 선
이때, CPU는 작업 메모리와 RAM 로드 메모리에 택 스위치를 해제합니다.
있는 전체 사용자 프로그램을 삭제합니다. 또한 시 CPU는 배터리가 없어도 시동하고 모든 LED가 켜
스템 메모리(예: 비트 메모리, 타이머, 카운터)도 정 집니다. 그리고 CPU는 메모리 초기화를 실행한 후
전 유지 설정에 상관없이 삭제됩니다. 마이크로 메 MPI 주소를 2로 설정하고 MPI 데이터 속도를
모리 카드를 사용하면 메모리 초기화 동안 로드 메 187.5kbit/s로 설정합니다. 메모리 초기화와 마찬가
모리의 내용을 유지할 수 있습니다. 지로 실시간 클록은 시작 날짜로 설정되고, 작동 시
그 다음에 CPU는 자신의 모듈을 포함한 모든 모 간 카운터와 진단 버퍼의 내용은 삭제됩니다. 그 다
듈의 파라미터를 기본값으로 설정합니다. 그러나, 음에 CPU는 ‘공장 설정으로 재설정’ 이벤트를 진
첫 번째 인터페이스의 MPI 파라미터는 예외입니다. 단 버퍼에 기록한 후 정지 모드로 갑니다.
메모리를 재설정한 CPU의 주소를 MPI 버스 상에서
찾을 수 있도록 첫 번째 인터페이스의 MPI 파라미터
22.2.4 정전 유지
는 변경되지 않습니다. 그리고 재설정된 메모리는
주 전원이 꺼지거나 시동 후에 정지 모드에서 실
진단 버퍼, 실시간 클록, 런타임 미터에 영향을 주지
행 모드로 전환되어도 메모리 영역이 그 내용을 유
않습니다.
지하면 정전 유지 기능을 가지는 것으로 간주됩니
마이크로 메모리 카드 또는 플래시 EPROM을 가 다. S7-300 CPU에서 정전 유지는 마이크로 메모리
진 메모리 카드를 삽입하면 CPU는 사용자 프로그램 카드로 구현됩니다. S7-400 CPU인 경우 정전 유지
을 메모리 카드에서 작동 메모리로 복사합니다. 또 에는 배터리 백업이 필요합니다.
한 CPU는 메모리 카드 상에서 찾은 모든 구성 데이
정전 유지 기능을 가진 메모리 영역은 비트 메모
터를 복사합니다.
리, 타이머, 카운터, 데이터 블록(DB)용 영역이 될
수 있습니다. 정전 유지 기능을 가진 영역의 크기는
22.2.3 공장 설정의 복구 CPU에 따라 달라집니다. CPU를 파라미터화할 때
‘정전 유지’ 탭에서 정전 유지되는 메모리 바이트,
신형 CPU인 경우에 ‘공장 설정으로 재설정’ 을
타이머, 카운터의 번호를 지정할 수 있습니다.
사용하여 공장 설정을 복구할 수 있습니다. 이를 위
해 아래와 같이 진행합니다. RAM에 있는 데이터 블록도 정전 유지 기능을 가
질 수 있습니다. 사용 가능한 정전 유지 영역은 CPU
Z 전원을 차단하고 마이크로 메모리 카드 또는 메
에 따라 다릅니다. 보존 안 함 블록 속성을 사용하여
모리 카드를 제거합니다.
데이터 블록(DB)의 정전 유지 기능을 정의할 수 있
Z 모드 선택 스위치를 MRES 위치에 놓고 다시 전 습니다(3.2.3 “블록 속성” 참조).
원을 켭니다
마이크로 메모리 카드를 가진 S7-300에서, 사용
Z SF(S7-300), INTF(S7-400), FRCE, RUN, 자 프로그램과 사용자 데이터뿐만 아니라 정전 유지
STOP LED가 천천히 깜박이는 경우, 모드 선택 로 설정된 비트 메모리, 타이머, 카운터도 마이크로

396
22.3 재가동의 종류

메모리 카드에 저장되고, 백업 배터리가 없어도 정 지 않을 때 시동’ 설정에 의존합니다. 그 결과


전 유지 기능을 유지합니다. 웜 리스타트를 사용하 는 진단 버퍼에 저장됩니다. 모니터링 시간은
면 비정전 유지 비트 메모리, 타이머, 카운트는 삭제 확장 랙 또는 분산 I/O의 전원을 켜는데 중요합
됩니다. ‘비정전 유지’ 로 선언된 데이터 블록(DB) 니다.
의 내용은 웜 리스타트 동안 로드 메모리로부터 초
Z 파라미터를 모듈에 전달하기 위한 모니터링 시
기값을 로드하여 초기화되거나, 로드 메모리 개체

가 없으면 0으로 설정됩니다.
모듈에 대한 모니터링 시간이 끝나면, 모듈은
S7-400에서는 정전 유지를 위해 배터리 백업이 존재하지 않는 것으로 간주됩니다. 이때 CPU
필요합니다. 콜드 리스타트는 모든 주소 영역을 삭 의 반응은 ‘설정된 구성이 실제 구성과 동일하
제하고, 사용자 프로그램과 구성된 사용자 데이터 지 않을 때 시동’ 설정에 의존합니다. 이벤트
를 로드 메모리에서 작업 메모리로 로드합니다. 웜 는 진단 버퍼에 저장됩니다. (이러한 오류가 발
리스타트 시에 정전 유지로 설정된 비트 메모리, 타 생하면, 새로운 모니터링 시간이 입력된 ‘빈’
이머, 카운터의 값은 유지되고, 사용자 프로그램과 프로젝트의 시스템 데이터를 전달하는 경우 모
사용자 데이터는 바뀌지 않습니다. 듈 파라미터화가 ‘이전’ 모니터링 시간 안에
완료될 수 있도록 메모리 초기화 없이 더 긴 모
니터링 시간으로만 CPU를 파라미터화할 수 있
22.2.5 파라미터화 재가동
습니다.)
CPU의 ‘재가동’ 탭에서 아래와 같은 설정으로
재가동에 영향을 미칠 수 있습니다. Z 핫 리스타트에 대한 모니터링 시간
전원을 켜고 끄는 사이의 시간 또는 정지 모드와
Z 설정된 구성이 실제 구성과 동일하지 않으면 재
실행 모드 간의 시간이 모니터링 시간보다 길면,
가동
핫 리스타트는 수행되지 않습니다. 설정된 값이
파라미터화된 하드웨어 구성이 실제 구성과 일
0ms이면 모니터링은 수행되지 않습니다.
치하지 않더라도 재가동이 실행됩니다. 이에 대
한 예외는 구성된 프로피버스 DP 인터페이스가
항상 존재해야 하고 작동 준비 상태이어야 한다
는 것입니다. 22.3 재가동의 종류
Z 핫 리스타트 시에 출력 재설정
S7-400 CPU는 핫 리스타트 동안 모든 프로세 22.3.1 START-UP 모드
스 이미지 출력 테이블과 모든 주변 디바이스 출
CPU는 아래와 같은 경우에 재가동을 실행합니
력을 삭제합니다.
다.
Z 수동 리스타트 시에 핫 리스타트 비활성화
수동 입력 또는 통신 작업에 기반한 핫 리스타트 Z 주 전원을 켰을 때

는 허용되지 않습니다. Z 모드 선택 스위치를 설정했을 때(키 록 스위치가


Z 전원을 켠 후 재가동 정지 모드에서 실행 모드 또는 RUN-P 모드로
전원을 켠 후 재가동 유형의 정의 전환) 또는 토글 스위치를 변경했을 때(정지 모
드에서 실행 모드로 전환)
Z 모듈의 준비 신호에 대한 모니터링 시간
모듈에 대한 모니터링 시간이 끝나면, 모듈은 Z 통신 함수로부터 요청을 받았을 때(프로그래밍
존재하지 않는 것으로 간주됩니다. 이때 CPU 기기 또는 다른 CPU의 통신 함수 블록을 통해
의 반응은 ‘설정된 구성이 실제 구성과 동일하 시작)

397
22 시동 특성

수동 재가동은 모드 선택 스위치 또는 통신 함수 수동 콜드 리스타트


를 통해 시작되고, 자동 재가동은 주 전원을 켤 때 신형 CPU를 사용하는 경우, 더 이상 수동으로 모
시작됩니다. 드 선택 스위치를 사용하여 콜드 리스타트를 트리거

재가동 루틴은 필요한 만큼 길 수 있으며, 그 실행 할 수 없습니다. 구형 CPU를 사용하는 경우, 수동

시간에는 제한이 없고, 스캔 사이클 모니터는 비활 콜드 리스타트를 모드 선택 스위치로 트리거할 수

성화 상태입니다. 있습니다. 이 경우 정지 모드에서 실행 모드 또는


RUN-P 모드로 전환하기 전에 스위치를 MRES 위치
재가동 루틴이 실행되는 동안 인터럽트는 작동하 에 최소한 3초간 유지합니다.
지 않습니다. 이에 대한 예외는 실행 모드에서 처리
또한 수동 콜드 리스타트는 프로그래밍 기기에서
되는 오류로써, 해당 오류 조직 블록의 호출이 있습
통신 함수로 트리거하거나 다른 CPU의 시스템 블록
니다.
으로 트리거할 수 있습니다. 이 경우에 모드 선택 스
재가동 루틴에서 CPU는 타이머, 런타임 미터, 실 위치는 실행 모드 또는 RUN-P 모드에 있어야 합니
시간 클록을 업데이트합니다. 다.
재가동 동안 출력 모듈은 비활성화되므로 출력 신 CPU에서 메모리 초기화를 요청하지 않는 한 수
호는 전송되지 않습니다. 출력 비활성화는 주기적 동 콜드 리스타트는 언제나 시작할 수 있습니다.
프로그램을 시작하기 전에 재가동의 끝에만 해제됩
니다. 자동 콜드 리스타트
재가동 루틴은 예를 들어 모드 선택 스위치를 작 자동 콜드 리스타트는 주 전원을 켜면 시작됩니
동하거나 전원 공급에 문제가 있는 경우 중단될 수 다. 자동 콜드 리스타트는 아래와 같은 경우에 실행
있습니다. 중단된 재가동 루틴은 전원을 켜면 처음 됩니다.
부터 다시 실행됩니다. 콜드 리스타트 또는 웜 리스 Z 전원을 껐을 때 CPU가 정지 모드에 있지 않을
타트를 중단한 경우에는 반드시 다시 실행해야 합니 경우
다. 핫 리스타트를 중단한 경우 모든 재가동 종류를
Z 모드 선택 스위치가 실행 모드 또는 RUN-P모드
사용할 수 있습니다.
에 있을 경우
그림 22.2에는 재가동 동안 S7-400 CPU에 의해 Z 콜드 리스타트를 실행하는 동안 CPU가 정전으
수행되는 작업이 나와있습니다. 로 인터럽트되었을 경우
Z ‘전원을 켠 후 시작’ 의 ‘콜드 리스타트’ 가
22.3.2 콜드 리스타트 파라미터화된 경우

콜드 리스타트 시에 CPU는 자신과 모듈을 모두 백업 배터리 없이 작동할 때, CPU는 자동 비정전


프로그래밍된 초기 상태로 설정하고, 정전 유지성 유지 웜 리스타트를 실행합니다. CPU는 메모리 초
데이터를 포함한 시스템 메모리에 있는 모든 데이터 기화를 자동으로 시작한 후 사용자 프로그램을 메모
를 삭제하고, OB 102를 호출한 후 OB 1에서 메인 리 카드에서 작업 메모리로 복사합니다. 여기서 메
프로그램을 처음부터 실행합니다. 모리 카드는 플래시 EPROM이어야 합니다.

현재 프로그램과 작업 메모리에 있는 데이터는 시


스템 함수에 의해 생성된 데이터 블록(DB)과 함께 22.3.3 웜 리스타트
삭제됩니다.그리고 로드 메모리로부터 프로그램이 웜 리스타트 시에 CPU는 자신과 모듈을 모두 프
다시 로드됩니다. 메모리 재설정과는 달리 RAM 로 로그래밍된 초기 상태로 설정하고, 시스템 메모리
드 메모리는 삭제되지 않습니다. 에서 비정전 유지 데이터를 삭제하고, OB 100를 호

398
22.3 재가동의 종류

그림 22.2 재가동 동안 CPU의 동작(S7-400)

399
22 시동 특성

출한 후 OB 1에서 메인 프로그램을 처음부터 실행 프로그램을 메모리 카드에서 작업 메모리로 복사합


합니다. 니다. 여기서 메모리 카드는 플래시 EPROM이어야
현재 프로그램과 작업 메모리에 있는 현재 데이터 합니다.
는 유지되고, SFC에 따라 생성된 데이터 블록(DB)
도 유지됩니다.
22.3.4 핫 리스타트
핫 리스타트는 S7-400에서만 가능합니다.
수동 웜 리스타트
정지 모드 또는 정전 시에 CPU는 사용자 프로그
수동 웜 리스타트는 아래와 같은 방법으로 시작할
램의 처리에 중요한 내부 CPU 레지스터뿐만 아니라
수 있습니다.
모든 인터럽트를 저장합니다. 따라서 핫 리스타트
Z CPU를 정지 모드에서 실행 모드 또는 RUN-P
시에 인터럽트가 발생한 프로그램 위치에서 재개할
모드(재가동 유형 스위치를 가진 S7-400 CPU
수 있습니다. 재개 위치는 메인 프로그램, 인터럽트
에서는 CRST 위치)로 전환 시 모드 선택 스위치
또는 오류 처리 루틴에 있을 수 있습니다. 모든 ‘이
를 통해
전’ 인터럽트는 저장되어 나중에 실행됩니다.
Z 모드 선택 스위치가 실행 모드 또는 RUN-P 모
여기서 핫 리스타트 후에 CPU가 재개하는 지점
드에 있을 때 PG의 통신 함수 또는 다른 CPU의
부터 메인 프로그램이 끝날 때까지를 말하는 소위
SFB를 통해
‘잔여 사이클’ 은 재가동의 일부로 간주됩니다. 이
CPU에서 메모리 초기화를 요청하지 않는 한 수 때 새로운 인터럽트는 실행되지 않습니다. 출력 모
동 웜 리스타트는 항상 시작할 수 있습니다. 듈은 비활성화되어 초기 상태로 있습니다.

핫 리스타트는 CPU가 정지 모드인 동안 블록의


자동 웜 리스타트
수정과 같은 사용자 프로그램의 변화가 없을 때에만
자동 웜 리스타트는 주 전원을 켬으로써 시작합니
허용됩니다.
다. 자동 웜 리스타트는 아래와 같은 경우에 실행됩
니다. CPU를 파라미터화함으로써 CPU가 웜 리스타
트를 실행하기 위한 인터럽트의 지속 시간(100ms
Z 전원을 껐을 때 CPU가 정지 모드에 있지 않은
에서 1 시간)을 지정할 수 있습니다. 인터럽트가
경우
더 길어지면 콜드 리스타트 또는 웜 리스타트만 허
Z 모드 선택 스위치가 실행 모드 또는 RUN-P모드 용됩니다. 인터럽트의 지속 시간은 실행 모드의 종
에 있는 경우 료(정지 모드 또는 전원 차단) 시점부터 OB 101의
Z CPU가 웜 리스타트를 실행하는 동안 정전으로 실행과 잔여 사이클을 마친 후에 다시 실행 모드로
인터럽트되었을 경우 돌아오기까지의 시간을 가리킵니다.
Z ‘전원을 켠 후 시작’ 에서 ‘완전한 재가동(웜
리스타트)’ 이 파라미터화된 경우 수동 핫 리스타트
재가동 유형 스위치가 있는 경우 자동 웜 리스타 아래와 같이 수동 핫 리스타트를 시작합니다.
트 시 이 스위치는 작동하지 않습니다. Z 재가동 스위치가 WRST에 있을 때 모드 선택 스
CPU에 마이크로 메모리 카드가 있으면, 백업 배 위치를 정지 모드에서 실행 모드 또는 RUN-P
터리를 가진 CPU와 똑 같이 동작합니다. 백업 배터 모드로 전환했기 때문에 CPU를 켰을 때 모드 선
리와 마이크로 메모리 카드 없이 작동할 경우 CPU 택 스위치가 실행 모드 또는 RUN-P 모드에 있
는 자동 비정전 유지 웜 리스타트를 실행합니다. 는 경우(재가동 유형 스위치를 가진 CPU에서만
CPU는 메모리 초기화를 자동으로 시작한 후 사용자 가능)

400
22.4 모듈 주소 설정

Z 프로그래밍 기기로부터의 통신 함수를 사용하 지정하는 것입니다. 이것은 절대 주소를 사용하는


거나 다른 CPU의 시스템 블록(SFB)을 사용하는 방법이고, 심볼을 사용하여 읽기 용이하게 만들 수
경우. 이때 모드 선택 스위치는 실행 모드 또는 있습니다. 최소 논리 주소는 기본 주소 또는 모듈 시
RUN-P 모드에 있어야 합니다. 작 주소입니다. 두 번째 방법은 CPU가 물리적 주소
CPU를 파라미터화할 때 ‘재가동’ 탭에서 핫 리 를 사용하여 모듈의 주소를 지정하는 것입니다. 모
스타트 비활성화를 해제했을 때에만 수동 핫 리스타 듈의 슬롯 번호를 찾으려면 물리적 주소가 필요합니
트가 가능합니다. 정지 모드로의 전환이 모드 선택 다. 이것은 분산 I/O의 스테이션에 있는 사용자 데이
스위치나 통신 함수를 통해 수동으로 이루어졌어야 터에도 유사하게 적용됩니다.
합니다. 이럴 경우에만 CPU가 정지 모드일 동안 수 아래와 같은 시스템 블록을 사용하여 논리 주소로
동 웜 리스타트를 실행할 수 있습니다. 부터 물리적 주소를 확정할 수 있고, 물리적 주소로
부터 논리 주소를 확정할 수 있습니다.
자동 핫 리스타트 Z SFC 70 GEO_LOG
자동 핫 리스타트는 주 전원을 켬으로써 시작됩니 기본 논리 주소를 확정합니다.
다. CPU는 아래와 같은 경우에만 자동 핫 리스타트
Z SFC 5 GADR_LGC
를 실행합니다.
모듈 채널의 논리 주소를
Z CPU 전원을 껐을 때 CPU가 정지 모드에 있지 확정합니다.
않을 경우
Z SFC 50 RD_LGADR
Z CPU 전원을 켰을 때 모드 선택 스위치가 실행
모듈의 모든 논리 주소를 확정합니다.
모드 또는 RUN-P 모드에 있을 경우
Z SFC 71 LOG_GEO
Z ‘전원을 켠 후 시작’ 의 ‘핫 리스타트’ 를 파
물리적 주소를 확정합니다.
라미터화했을 경우
Z SFC 49 LGC_GADR
Z 백업 배터리를 삽입하고 작동하기 위한 절차를
모듈의 슬롯 주소를 확정합니다.
수행하는 경우
표 22.2에는 위 시스템 블록의 파라미터가 나와
재가동 스위치의 위치는 자동 핫 리스타트와 무관
있습니다.
합니다.
SFC 5 GADR_LGC, 49 LGC_GADR 및 50 RD_
LGADR은 논리 주소(I/O 영역 내 주소)를 위한 공통
파라미터로 IOID와 LADDR을 갖습니다. IOID가
22.4 모듈 주소 설정
B#16#54이면 주변 입력장치(PI)를 의미하고,
신호 모듈, 더 정확히 말해서 입력/출력 모듈에 있 B#16#55이면 주변 출력장치(PQ)를 의미합니다.
는 사용자 데이터는 다음과 같은 두 가지 방법으로 LADDR은 지정된 채널과 일치하는 PI 또는 PQ 영역
주소를 지정합니다. 첫 번째 방법은 사용자 프로그 내의 I/O 주소를 포함합니다. 채널이 0인 경우 이 주
램의 논리 주소를 사용하여 입력과 출력의 주소를 소는 모듈 시작 주소가 됩니다.

401
22 시동 특성

표 22.2 모듈 주소를 확정하는데 사용하는 시스템 블록의 파라미터


SFC 파라미터 선언 데이터 형식 내용, 설명
5 SUBNETID INPUT BYTE 영역 식별자
RACK INPUT WORD 랙 번호
SLOT INPUT WORD 슬롯 번호
SUBSLOT INPUT BYTE 하위 모듈 번호
SUBADDR INPUT WORD 모듈의 사용자 데이터 주소 영역에서 오프셋
RET_VAL RETURN INT 오류 정보
IOID OUTPUT BYTE 영역 식별자
LADDR OUTPUT WORD 채널의 논리 주소
50 IOID INPUT BYTE 영역 식별자
LADDR INPUT WORD 모듈 논리 주소
RET_VAL RETURN INT 오류 정보
PEADDR OUTPUT ANY PI 주소의 WORD 필드
PECOUNT OUTPUT INT 반환된 PI 주소 개수
PAADDR OUTPUT ANY PQ 주소의 WORD 필드
PACOUNT OUTPUT INT 반환된 PQ 주소 개수
49 IOID INPUT BYTE 영역 식별자
LADDR INPUT WORD 모듈 논리 주소
RET_VAL RETURN INT 오류 정보
AREA OUTPUT BYTE 영역 식별자
RACK OUTPUT WORD 랙 번호
SLOT OUTPUT WORD 슬롯 번호
SUBADDR OUTPUT WORD 모듈의 사용자 데이터 주소 영역에서 오프셋
70 MASTER INPUT INT 마스터 시스템 ID
0 = 중앙 I/O
1 ~ 31 = 프로피버스 DP
100 ~ 115 = 프로피넷 IO
STATION INPUT INT 스테이션 번호. 중앙 I/O인 경우: 랙 번호
SLOT INPUT INT 슬롯 번호
SUBSLOT INPUT INT 하위 모듈 번호
RET_VAL RETURN INT 오류 정보
LADDR OUTPUT WORD 스테이션 또는 모듈의 기본 주소
71 LADDR INPUT WORD 스테이션 또는 모듈의 기본 주소
RET_VAL RETURN INT 오류 정보
AREA OUTPUT INT 영역 식별자(표 22.3 참조)
MASTER OUTPUT INT 마스터 시스템 ID
0 = 중앙 I/O
1 ~ 31 = 프로피버스 DP
100 ~ 115 = 프로피넷 IO
STATION OUTPUT INT 스테이션 번호. 중앙 I/O인 경우: 랙 번호
SLOT OUTPUT INT 슬롯 번호
SUBSLOT OUTPUT INT 하위 모듈 번호
OFFSET OUTPUT INT 모듈/하위 모듈의 주소 영역에서 오프셋

402
22.4 모듈 주소 설정

SFC 70 GEO_LOG 및 SFC 71 LOG_GEO의 경우 피넷 시스템 중 어디에서 작동되고 있는지 표시합니


논리 주소가 LADDR 파라미터 내에 자체적으로 존 다. 랙이나 스테이션에서 슬롯 번호를 지정하려면
재합니다. 주소가 입력에 할당되는지 출력에 할당 SLOT 파라미터를 사용하고, 하위 모듈의 번호를 지
되는지에 따라 비트 15에 차이가 납니다(입력 = 0, 정하려면 SUBSLOT 파라미터를 사용합니다. 번호
출력 = 1).
가 지정되면 LADDR 파라미터가 하위 모듈의 기본
이 시스템 블록으로 주소를 지정하는 경우 반드시 주소를 반환합니다. SUBSLOT = 0이면 모듈이나 스
하드웨어 구성 도구를 사용해 논리 주소(모듈 시작 테이션의 진단 주소가 반환됩니다.
주소)와 슬롯 주소(랙 또는 분산 I/O 스테이션 내 모
SFC 70 GEO_LOG는 SFC 5 GADR_LGC를 대체
듈의 위치) 사이에 주소를 할당해야 합니다.
하는 함수이며 프로피넷 IO에 사용할 수 있습니다.

SFC 70 LOG_GEO
기본 논리 주소를 확정합니다. SFC 5 GADR_LGC
모듈 채널의 논리 주소를 확정합니다.
시스템 함수 SFC 70 LOG_GEO는 모듈 또는 스테
이션의 논리 주소를 반환합니다. MASTER 파라미터 시스템 함수 SFC 5 GADR_LGC는 사용자가 슬롯
의 할당은 스테이션이나 모듈이 랙에 삽입되었는지 주소('물리적' 주소)를 지정하면 채널의 논리 주소를
(중앙식 설계) 또는 스테이션이 프로피버스와 프로 반환합니다. 모듈이 분산 I/O에 속한 경우

표 22.3 SFC 49 LGC_GADR 및 SFC 71 LOG_GEO의 출력 파라미터의 의미


AREA 시스템 SFC 49 LGC_GADR SFC 71 LOG_GEO
출력 파라미터의 의미 출력 파라미터의 의미
0 S7-400 RACK = 랙 번호 MASTER = 0
1 S7-300 SLOT = 슬롯 번호 STATION = 랙 번호
SUBADDR = 기본 주소와의 차이 SLOT = 슬롯 번호
SUBSLOT = 0
OFFSET = 기본 주소와의 차이
2 분산 I/O RACK 프로피버스 DP의 경우:
하위 바이트 = 스테이션 번호 MASTER = DP 마스터 시스템 ID
상위 바이트 = DP 마스터 시스템 ID STATION = 스테이션 번호
SLOT = 슬롯 번호 SLOT = 슬롯 번호
SUBADDR = 기본 주소와의 차이 SUBSLOT = 0
OFFSET = 기본 주소와의 차이
프로피넷 IO의 경우:
MASTER = 프로피넷 IO 시스템 ID
STATION = 스테이션 번호
SLOT = 슬롯 번호
SUBSLOT = 하위 슬롯 번호
OFFSET = 기본 주소와의 차이
3 S5 RACK = 랙 번호 MASTER = 0
P 영역 SLOT = 어댑터 케이스의 슬롯 번호 STATION = 랙 번호
4 S5 SUBADDR = S5 영역 내 주소 SLOT = 어댑터 케이스의 슬롯 번호
Q 영역 SUBSLOT = 0
OFFSET = S5 영역 내 주소
5 S5
IM3 영역
6 S5
IM4 영역

403
22 시동 특성

SUBNETID 파라미터에 DP 마스터 시스템 ID 번호 22.5 모듈 파라미터화


를 입력하고, 모듈이 중앙 랙이나 확장 랙에 연결된
경우 B#16#00를 입력합니다. RACK 파라미터는 랙
22.5.1 모듈 파라미터화에 대한 일반 사항
의 번호를 지정합니다. 단, 분산 I/O인 경우 스테이
대부분의 S7 모듈은 파라미터화가 가능합니다.
션의 번호를 지정합니다. 모듈에 하위 모듈 슬롯이
즉, 기본값과 다른 값을 모듈에 설정할 수 있습니다.
없는 경우 SUBSLOT 파라미터에 B#16#00를 입력
파라미터를 지정하려면 하드웨어 구성에서 모듈을
합니다. SUBADDR은 모듈의 사용자 데이터에 있는
열고 대화 상자의 탭에 값을 입력합니다. 시스템 데
주소 오프셋을 포함합니다(예: W#16#0000은 모듈
이터 개체를 블록 컨테이너에서 PLC로 전송하면 모
시작 주소를 의미합니다).
듈 파라미터도 함께 전송됩니다.

CPU는 다음의 경우 모듈 파라미터를 자동으로


SFC 71 GEO_ LOG
물리적 주소를 확정합니다. 모듈에 전송합니다.

시스템 함수 SFC 71 GEO_LOG는 사용자가 기본 Z 재가동 시


논리 주소를 지정하면 모듈이나 스테이션의 물리적 Z 구성된 슬롯에 모듈이 플러그인 되었을 때
주소를 반환합니다. AREA 파라미터의 값은 모듈을 (S7-400)
사용하고 있는 시스템을 지정합니다(표 22.3 참조).
Z 랙이나 분산 I/O 스테이션이 ‘반환’ 된 다음
SFC 71 GEO_LOG는 SFC 49 LGC_GADR을 대체
하는 함수이며 프로피넷 IO에 사용할 수 있습니다.
정적 및 동적 모듈 파라미터
모듈 파라미터는 정적 파라미터와 동적 파라미터
SFC 49 LGC_GADR 로 나뉩니다. 하드웨어 구성 도구에서 두 파라미터
모듈의 슬롯 주소를 확정합니다.
유형을 오프라인으로 설정할 수 있습니다. 시스템
SFC 49 LGC_GADR은 사용자가 임의의 논리 모 블록을 호출하여 런타임 중에 동적 파라미터를 수정
듈 주소를 지정하면 모듈의 슬롯 주소를 반환합니 할 수도 있습니다. 시스템 블록을 사용해 모듈에 설
다. 이 함수는 지정된 사용자 데이터 주소에서 주소 정한 파라미터는 재가동 루틴 중에 하드웨어 구성
오프셋(파라미터 SUBADDR)을 빼서 모듈 시작 주 도구를 통해 설정하여 CPU에 저장한 파라미터로 덮
소를 제공합니다. AREA 파라미터의 값은 모듈이 작 어 쓰여집니다.
동되고 있는 시스템을 지정합니다(표 22.3 참조).
입출력 모듈의 파라미터는 두 데이터 기록에 나눠
서 기록됩니다. 정적 파라미터는 데이터 기록 0에,
SFC 50 RD_LGADR
동적 파라미터는 데이터 기록 1에 있습니다. 시스템
모듈의 모든 논리 주소를 확정합니다.
함수 SFC 57 PARM_MOD로 두 데이터 기록 모두 모
SFC 50 RD_LGADR은 사용자가 사용자 데이터
듈로 전송할 수 있습니다. 데이터 기록 0 또는 1만
영역에서 임의 주소를 지정하면 모듈의 모든 논리
전송하려면 시스템 함수 SFC 56 WR_DPARM을, 데
주소를 반환합니다.
이터 기록 1만 전송하려면 시스템 함수 SFC 55
WORD 구성요소 영역을 정의하려면 PEADDR 및 WR_PARM을 사용합니다. 데이터 기록은 CPU 상의
PAADDR 파라미터를 사용합니다(예: 워드 기반 시스템 데이터 블록(DB) 내에 있어야 합니다.
ANY 포인터인 경우 P#DBzDBXy.x WORD nnn).
S7-400 모듈을 파라미터화해도 진단 데이터 기
영역이 지정되면 SFC 50는 이 영역에서 반환된 록 0의 바이트 2에 있는 비트 2( ‘작동 모드’ )가
항목의 수를 RECOUNT 및 PACOUNT 파라미터에 RUN 값을 취하기 전까지는 지정된 값이 적용되지
표시합니다. 않습니다. 진단 데이터 기록 0은 시스템 함수 SFC

404
22.5 모듈 파라미터화

59 RD_REC이나 시스템 함수 블록 SFB 52 RDREC 경우 비트 15가 관련된 영역이 입력( ‘0’ )인지 출
로 읽을 수 있습니다. 력( ‘1’ )인지 결정하게 됩니다. 시스템 함수 블록
SFB 52 RDREC와 SFB 53 WRREC를 사용하는 경
시스템 블록 비동기 처리 우 비트 15가 파라미터 ID가 됩니다.
시스템 함수 SFC 54 RD_DPARM과 달리 모듈 파 RECNUM 또는 INDEX 파라미터에 데이터 기록
라미터화와 기록 전송을 위한 시스템 블록은 비동기 번호를 입력합니다.
식으로 실행됩니다. 이 함수는 블록 파라미터 REQ
데이터 형식이 ANY인 경우 RECORD 파라미터를
= ‘1’ 일 때 트리거되고 여러 개의 호출을 실행합
사용해 BYTE 구성요소 영역을 정의합니다. 이때
니다. 작업 처리 중에는 BUSY 파라미터가 ‘1’ 로
ARRAY, STRUCT 또는 UDT 유형의 변수나 BYTE
표시되고 오류 정보는 W#16#7001이라는 값(작업
유형의 ANY 포인터(예: P#DBzDBXy.x BYTE nnn)
처리 중)을 갖습니다. 오류 정보는 시스템 함수의
를 사용할 수 있습니다. 변수를 사용하는 경우 반드
RET_VAL 파라미터와 시스템 함수 블록의 STATUS
시 ‘완전한’ 변수여야 합니다. 개별 배열이나 구
파라미터의 바이트 2와 3에 있습니다.
조 구성 요소는 사용할 수 없습니다.
모듈에 대한 구체적인 작업은 모듈 시작 주소와
데이터 기록 번호로 지정합니다. BUSY = ‘1’ 인 허용된 데이터 기록 번호
동안은 REQ = ‘1’ 로 같은 작업을 다시 호출해도
모듈 파라미터 지정을 위한 시스템 함수에 1
적용되지 않으며 오류 정보가 W#16#7002로 설정
~240 사이의 번호를 가진 데이터 기록을 사용할 수
됩니다.
있습니다. 시스템 블록 SFC 54 RD_DPARM, SFC
작업을 트리거했을 때 오류가 발생하면 오류 정보 56 WR_DPARM 및 SFB 81 RD_DPAR인 경우 지정
에 의해 오류가 표시되고 BUSY는 ‘0’ 을 유지합 된 데이터 기록이 반드시 시스템 데이터 내에 존재
니다. 해야 합니다.
작업이 완료되면 BUSY의 상태가 ‘0’ 이 됩니 시스템 함수 SFC 58 WR_REC는 번호가 2 ~ 240
다. 오류 없이 작업이 완료되면 오류 정보는 값 사이인 데이터 기록을 처리하고, SFC 59 RD_REC
W#16#0000을 갖게 됩니다. 전송된 바이트의 수는 는 0 ~ 240 사이의 데이터 기록을 처리합니다. 시스
시스템 함수 SFC 59 RD_REC를 사용해 RET_VAL에 템 함수 블록 SFB 52 RDREC와 SFB 53 WRREC는
기록합니다. 오류가 발생한 경우 오류 정보에 오류 번호가 0 ~ 255 사이인 데이터 기록을 전송합니다.
코드가 기록됩니다.
데이터 기록 0과 1은 SIMATIC S7에서 특별한 의
미를 갖습니다.
모듈 및 데이터 기록 주소 지정
Z 데이터 기록 0: 진단 데이터(4 바이트) 읽기 및
데이터 전송을 위해 주소를 지정하는 경우라면 모
정적 모듈 파라미터 쓰기
듈 시작 주소를 사용합니다. 입력 영역과 출력 영역
이 모두 있는 모듈인 경우 두 영역 중 하위 영역의 시 Z 데이터 기록 1: 진단 데이터(데이터 기록 0 및 이

작 주소를 사용합니다. 입력 영역과 출력 영역에 같 후 데이터) 읽기 및 동적 모듈 파라미터 쓰기

은 시작 주소를 할당한 경우 입력 주소에 식별자를 데이터 기록의 최대 길이는 240바이트입니다.


사용합니다. 실행할 작업이 읽기 또는 쓰기 작업인
지에 관계 없이 I/O 식별자를 사용합니다. 프로피넷 IO의 모듈 파라미터 지정
모듈 시작 주소는 IOID와 LADDR을 사용하여 파 프로피넷 IO를 통해 분산 I/O를 연결하는 경우 모
라미터화하거나 최신 버전의 시스템 블록인 경우 자 듈 파라미터 지정에 프로피버스 DP보다 더 확장된
체적으로 LADDR을 사용해 파라미터화합니다. 이 수량 프레임워크가 필요합니다. 이를 위해 새 시스

405
22 시동 특성

템 블록을 제공합니다. 이 새 시스템 블록은 기존 블 Z SFC 54 RD_DPARM


록을 대체할 수 있습니다. 그림 22.3에 모듈 파라미 사전 정의된 파라미터를 읽습니다.
터 지정을 위한 시스템 블록이 간략히 정리되어 있 Z SFC 55 WR_PARM
습니다. 동적 파라미터를 씁니다.
Z SFC 56 WR_DPARM
사전 정의된 파라미터를 씁니다.
22.5.2 모듈 파라미터 지정을 위한
시스템 블록 Z SFC 57 PARM_MOD
모듈을 파라미터화합니다.
모듈 파라미터 지정에 다음과 같은 시스템 블록을
Z SFC 102 RD_DPARA
사용할 수 있습니다.
사전 정의된 파라미터를 읽습니다.
Z SFB 81 RD_DPAR 위에 나열된 시스템 블록의 파라미터에 대한 설명
사전 정의된 파라미터를 읽습니다. 은 표 22.4를 참조하십시오.

표 22.4 모듈 파라미터 지정을 위한 시스템 블록의 파라미터


포함하는 SFC 파라미터 선언 데이터 형식 내용, 설명
- 55 56 57 REQ INPUT BOOL ‘1’ = 쓰기 요청
54 55 56 57 IOID INPUT BYTE B#16#54 = 주변 입력장치 PI
B#16#55 = 주변 출력장치 PQ
54 55 56 57 LADDR INPUT WORD 모듈 시작 주소
54 55 56 - RECNUM INPUT BYTE 데이터 기록 번호
- 55 - - RECORD INPUT ANY 데이터 기록의 소스 영역
54 55 56 57 RET_VAL RETURN INT 오류 정보
- 55 56 57 BUSY OUTPUT BOOL ‘1’ 이면 전송 진행 중
54 - - - RECORD OUTPUT ANY 데이터 기록 전송 대상 영역

포함하는 SFC 파라미터 선언 데이터 형식 내용, 설명


SFC 102 SFB 81 REQ INPUT BOOL ‘1’ = 쓰기 요청
SFC 102 SFB 81 LADDR INPUT WORD 모듈 시작 주소
SFC 102 - RECNUM INPUT BYTE 데이터 기록 번호
- SFB 81 INDEX INPUT INT 데이터 기록 번호
SFC 102 - RET_VAL RETURN INT 오류 정보
- SFB 81 VALID OUTPUT BOOL 유효한 새 데이터 기록을 수신함
SFC 102 SFB 81 BUSY OUTPUT BOOL ‘1’ 이면 전송 진행 중
- SFB 81 ERROR OUTPUT BOOL ‘1’ 이면 오류가 발생함
- SFB 81 STATUS OUTPUT DWORD 호출 식별자 또는 오류 정보(바이트 2와
바이트 3)
- SFB 81 LEN OUTPUT INT 읽은 데이터 길이
SFC 102 - RECORD OUTPUT ANY 데이터 기록 전송 대상 영역
- SFB 81 RECORD IN_OUT ANY 데이터 기록 전송 대상 영역

406
22.5 모듈 파라미터화

SFB 81 RD_DPAR 수 있습니다. 이런 경우에는 비동기 모드로 이 기능


사전 정의된 파라미터를 읽습니다. 을 실행하는 SFB 81 RD_DPAR 또는 SFC 102 RD_
시스템 함수 블록 SFB 81 RD_DPAR은 데이터 기 DPARA를 사용합니다.
록을 INDEX 파라미터에 지정된 번호와 함께 해당
이제 읽은 데이터 기록을 검사 또는 수정하고
SDB 시스템 데이터 블록(DB)에서 RECORD 파라미
SFB 53 WRREC 또는 SFC 58 WR_REC로 이 데이
터에 지정된 대상 영역으로 전송합니다.
터 기록을 모듈에 쓸 수 있습니다.
전송은 비동기 모드로 실행되며 여러 회의 프로그
램 사이클에 걸쳐 분산 실행될 수 있습니다. 전송 중 SFC 55 WR_PARM
인 경우 BUSY 파라미터가 ‘1’ 입니다. 전송이 성 동적 파라미터를 씁니다.
공하면 VALID 파라미터가 ‘1’ 이 되고, 전송된 데 시스템 함수 SFC 55 WR_PARM은 RECORD로 주
이터의 바이트 수가 LEN 파라미터에 기록됩니다. 소를 지정한 데이터 기록을 IOID 및 LADDR 파라미

이제 읽은 데이터 기록을 검사 또는 수정하거나 터가 지정한 모듈로 전송합니다. RECNUM 파라미

SFB 53 WRREC를 사용해 모듈에 쓸 수 있습니다. 터에 데이터 기록의 번호를 지정합니다. 데이터 기
록은 동적 모듈 파라미터만 포함할 수 있습니다. 데
SFB 81 RD_DPAR은 SFC 102 RD_DPARA와
이터 기록 0은 사용할 수 없습니다. 모듈 파라미터
SFC 54 RD_PARM을 대체합니다.
가 관련 SDB에 존재하는 경우 식별자를 정적으로
지정해서는 안됩니다.
SFC 102 RD_DPARA
사전 정의된 파라미터를 읽습니다. 작업이 시작되면 SFC는 전체 데이터 기록을 읽습
니다. 전송은 여러 회의 프로그램 스캔 사이클에 걸
시스템 함수 SFC 102 RD_DPARA는 데이터 기록
쳐 실행될 수도 있습니다. 전송 중인 경우 BUSY 파
을 RECNUM 파라미터에 지정된 번호와 함께 해당
라미터가 ‘1’ 입니다.
시스템 데이터 블록(DB) SDB에서 RECORD에 지정
된 대상 영역으로 전송합니다.
SFC 56 WR_DPARM
전송은 비동기 모드로 실행되며 여러 회의 프로그 사전 정의된 파라미터를 씁니다.
램 사이클에 걸쳐 분산 실행될 수 있습니다. 전송 중 시스템 함수 SFC 56 WR_DPARM은 데이터 기록
인 경우 BUSY 파라미터가 ‘1’ 입니다. 을 RECNUM 파라미터에 지정된 번호와 함께 해당
SFC 102는 동기 모드로 실행되는 SFC 54 RD_ 시스템 데이터 블록(DB) SDB에서 IOID 및 LADDR
DPARM을 대체합니다. 파라미터가 지정한 모듈로 전송합니다.
전송은 여러 회의 프로그램 스캔 사이클에 걸쳐
SFC 54 RD_DPARM 실행될 수도 있습니다. 전송 중인 경우 BUSY 파라
사전 정의된 파라미터를 읽습니다. 미터가 ‘1’ 입니다.
시스템 함수 SFC 54 RD_DPARM은 데이터 기록
을 RECNUM 파라미터에 지정된 번호와 함께 해당 SFC 57 PARM_MOD
시스템 데이터 블록(DB) SDB에서 RECORD 파라미 모듈을 파라미터화합니다.
터에 지정된 대상 영역으로 전송합니다. 시스템 함수 SFC 57 PARM_MOD는 하드웨어
전송은 비동기 모드로 실행됩니다. 데이터 기록 구성 도구로 모듈의 파라미터를 지정할 때 프로그
이 모두 전송될 때까지 이 시스템 함수가 처리됩니 래밍된 모든 데이터 기록을 전송합니다..
다. 로드 메모리에서 데이터 기록을 읽어오기 때문 전송은 여러 회의 프로그램 스캔 사이클에 걸쳐
에 애플리케이션에 따라 차이는 있지만 데이터 기록 실행될 수도 있습니다. 전송 중인 경우 BUSY 파라
이 큰 경우 처리 시간이 상대적으로 길어져 불편할 미터가 ‘1’ 입니다.

407
22 시동 특성

22.5.3 데이터 기록 전송용 블록 위에 나열된 시스템 함수의 파라미터는 표 22.5


에, 시스템 함수 블록의 파라미터는 표 22.6에 설명
데이터 기록 전송에는 다음과 같은 시스템 블록을
되어 있습니다.
사용할 수 있습니다.
S7-300 CPU인 경우 DP 세그먼트당 4개의 쓰기
Z SFB 52 RDREC
작업과 4개의 읽기 작업을 동시에 처리할 수 있습니
데이터 기록을 읽습니다.
다. S7-400 CPU인 경우 DP 세그먼트당 8개의 쓰
Z SFC 59 RD_REC 기 작업과 8개의 읽기 작업을 동시에 처리할 수 있
데이터 기록을 읽습니다. 습니다. 외부 DP 세그먼트인 경우 최대 32개의 쓰
기 작업과 32개의 읽기 작업을 동시에 실행할 수 있
Z SFB 53 WRREC
습니다.
데이터 기록을 씁니다.

Z SFC 58 WR_REC
데이터 기록을 씁니다.

표 22.5 데이터 전송용 시스템 함수의 파라미터


포함하는 SFB 파라미터 선언 데이터 형식 내용, 설명
SFC 58 SFC 59 REQ INPUT BOOL ‘1’ = 쓰기 요청
SFC 58 SFC 59 IOID INPUT BYTE B#16#54 = 입력 모듈
B#16#55 = 출력 모듈
SFC 58 SFC 59 LADDR INPUT WORD 모듈 시작 주소
SFC 58 SFC 59 RECNUM INPUT BYTE 데이터 기록 번호
SFC 58 - RECORD INPUT ANY 데이터 기록
SFC 58 SFC 59 RET_VAL RETURN INT 오류 정보
SFC 58 SFC 59 BUSY OUTPUT BOOL ‘1’ 이면 전송 진행 중
- SFC 59 RECORD OUTPUT ANY 데이터 기록

표 22.6 데이터 전송용 시스템 함수 블록의 파라미터


포함하는 SFB 파라미터 선언 데이터 형식 내용, 설명
SFB 52 SFB 53 REQ INPUT BOOL ‘1’ = 쓰기 요청
SFB 52 SFB 53 ID INPUT DWORD 모듈 시작 주소
비트 15 = ‘0’ 입력 주소
비트 15 = ‘1’ 출력 주소
SFB 52 SFB 53 INDEX INPUT INT 데이터 기록 번호
SFB 52 - MLEN INPUT INT 데이터 기록에서 읽어올 최대 바이트 수
- SFB 53 LEN INPUT INT 데이터 기록에서 전송할 최대 바이트 수
SFB 52 - VALID OUTPUT BOOL ‘1’ = 유효한 새 데이터 기록을 수신함
- SFB 53 DONE OUTPUT BOOL 데이터 기록이 전송됨
SFB 52 SFB 53 BUSY OUTPUT BOOL ‘1’ 이면 전송 진행 중
SFB 52 SFB 53 ERROR OUTPUT BOOL ‘1’ 이면 오류가 발생함
SFB 52 SFB 53 STATUS OUTPUT DWORD 상태 코드
SFB 52 - LEN OUTPUT INT 읽은 데이터의 바이트 수
SFB 52 SFB 53 RECORD OUTPUT ANY 데이터 기록

408
22.5 모듈 파라미터화

剻汆͑匆樮嵢͑夢͑
挚嵣汆͑勾͑氊櫖͑
刊笾儆͑燖滊͑挚嵣汊͑
堆柦穞彶͑͝
΁΃΀ͷͺͿͶ΅͑ͺ΀歆͑
穮叞͑斲殯穦͑朞壊͑
沎枻城埪͟

그림 22.3 모듈 파라미터 지정을 위한 시스템 블록

SFB 52 RDREC 나 같아야 합니다. 오류 없이 전송이 완료되면 RET_


데이터 기록을 읽습니다. VAL 파라미터에 전송된 바이트 수가 기록됩니다.
REQ 파라미터가 ‘1’ 일 때 시스템 함수 블록
전송은 여러 회의 프로그램 스캔 사이클에 걸쳐
SFB 52 RDREC는 모듈에서 데이터 기록 INDEX를
실행될 수도 있습니다. 전송 중인 경우 BUSY 파라
읽어와 대상 영역 RECORD에 저장합니다. 대상 영
미터가 ‘1’ 입니다.
역은 데이터 기록보다 더 길거나 같아야 합니다. 읽
을 바이트 수를 지정하려면 MLEN 파라미터를 사용 1997년 2월 이전에 출시된 S7-300: SFC는 대상
합니다. 영역이 저장할 수 있는 만큼 지정된 데이터 기록을
읽습니다. 대상 영역의 크기는 데이터 기록의 크기
전송은 여러 회의 프로그램 스캔 사이클에 걸쳐
를 초과할 수 없습니다.
실행될 수도 있습니다. 전송 중인 경우 BUSY 파라
미터가 ‘1’ 입니다.
SFB 53 WRREC
VALID 파라미터의 상태 신호가 ‘1’ 이면 오류 데이터 기록을 씁니다.
없이 데이터 기록을 읽었다는 뜻입니다. 이 경우
REQ 파라미터가 ‘1’ 일 때 시스템 함수 블록
LEN 파라미터에 전송된 바이트 수가 표시됩니다.
SFB 53 WRREC는 소스 영역 RECORD의 데이터 기
오류가 발생했을 때, ERROR 파라미터는 ‘1’ 록 INDEX를 모듈에 씁니다. 쓰고자 하는 바이트 수
로 설정되고 오류 정보는 STATUS 파라미터에 출력 를 지정하려면 LEN 파라미터를 사용합니다.
됩니다.
전송은 여러 회의 프로그램 스캔 사이클에 걸쳐
시스템 함수 블록 SFB 52 RDREC는 시스템 함수 실행될 수도 있습니다. 전송 중인 경우 BUSY 파라
SFC 59 RD_REC의 기능을 포함하고 있기 때문에 미터가 ‘1’ 입니다.
후자를 대체할 수 있습니다.
DONE 파라미터의 신호 상태가 ‘1’ 이면 오류
없이 데이터 기록을 썼다는 뜻입니다. 오류가 발생
SFC 59 RD_REC
데이터 기록을 읽습니다. 했을 때, ERROR 파라미터는 ‘1’ 로 설정되고 오

REQ 파라미터가 ‘1’ 인 경우 SFC 59 RD_REC 류 정보는 STATUS 파라미터에 출력됩니다.

은 RECNUM 파라미터에 의해 주소가 지정된 데이 시스템 함수 블록 SFB 53 WRREC는 시스템 함수


터 기록을 모듈에서 읽어와 대상 영역 RECORD에 SFC 58 WR_REC의 기능을 포함하고 있기 때문에
저장합니다. 대상 영역은 데이터 기록보다 더 길거 후자를 대체할 수 있습니다.

409
22 시동 특성

SFC 58 WR_REC 을 시작합니다. 작업이 시작되면 SFC는 데이터 기


데이터 기록을 씁니다. 록 전체를 읽습니다.
SFC 58 WR_REC은 RECORD 파라미터에 의해
주소가 지정된 데이터 기록과 RECNUM에 지정된 전송은 여러 회의 프로그램 스캔 사이클에 걸쳐
번호를 IOID 및 LADDR 파라미터에 의해 정의된 모 실행될 수도 있습니다. 전송 중인 경우 BUSY 파라
듈로 전송합니다. REQ 파라미터가 ‘1’ 이면 전송 미터가 ‘1’ 입니다.

410
23 오류 처리

23 오류 처리

CPU는 모듈이나 CPU 자체에서 다음과 같은 다 23.1 동기 에러


양한 방식으로 감지한 오류나 결함을 보고합니다.
CPU의 운영체제는 프로그램 스캔과 직접적 관련
Z 상태 비트가 설정(예: 숫자 초과로 인해 상태 비
이 있는 오류가 발생한 경우 동기 오류를 생성합니
트 OV 설정)되어 연산 작업에서 발생한 오류(초
다. 오류 유형은 두 가지로 나뉩니다.
과, 유효하지 않은 REAL 수)
프로그램 실행에 결함이 있는 경우 프로그래밍 오
Z 조직 블록 OB 121 및 OB 122를 호출하여 사용
류가 발생합니다. BCD 변환 오류, 간접 주소 지정
자 프로그램을 실행하던 도중 감지된 오류(동기
방식 오류 및 유실 타이머, 카운터 또는 블록의 주소
에러)
지정 등이 프로그래밍 오류에 해당합니다. 프로그
Z 조직 블록 OB 80 ~ OB 87을 호출하여 프로그 래밍 오류가 발생하면 조직 블록 OB 121이 호출됩
래밍 스캔과 관계 없이 프로그래머블 컨트롤러 니다.
에서 발생한 오류(비동기 에러)
결함이 있거나 존재하지 않는 모듈, 또는 CPU 상
CPU는 프론트 패널의 오류 LED를 설정하여 오류 에서 인식되지 않는 I/O 주소에 액세스를 시도하는
또는 결함이 발생했음을 표시합니다. 일부 경우 오 경우 액세스 오류(PZF)가 발생합니다. 운영체제는
류의 원인도 함께 표시합니다. 회복 불가능한 오류( 액세스 유형에 따라 다른 방식으로 반응합니다.
예: 유효하지 않은 OP 코드)가 발생한 경우 CPU는
Z 사용자 프로그램에서 I/O에 액세스합니다. 이
즉시 정지 모드가 됩니다.
경우 I/O 액세스 오류 조직 블록 OB 122가 호출
CPU가 정지 모드인 경우 사용자는 프로그래밍 됩니다.
기기와 CPU 정보 기능을 이용해 블록 스택(B 스
Z 부분 프로세스 이미지를 자동 업데이트하는 도
택), 인터럽트 스택(I 스택) 및 로컬 데이터 스택(L 스
중 PZF가 발생합니다. S7-300 CPU의 경우 기
택)의 내용을 읽고 오류의 원인을 추정할 수 있습니
본적인 응답은 진단 버퍼에 항목을 기록하지 않
다.
고 OB도 호출하지 않는 것입니다. S7-400 CPU
시스템 진단은 모듈 상의 오류/결함을 감지하고 의 경우 각 PZF를 진단 버퍼에 입력하고 OB 85
이 오류를 진단 버퍼에 입력합니다. CPU 모드 전환 를 시작합니다. 더 최신 CPU의 경우 PZF에 대
에 대한 정보(예: 정지의 원인) 역시 진단 버퍼에 기 한 응답을 파라미터화할 수 있습니다(23.3 “비
록됩니다. 동기 에러” 의 “프로그램 실행 에러 OB 85”
진단 버퍼의 내용은 정지, 메모리 리셋 및 정전 시 참조).
에도 보존됩니다. 전력이 복구되고 프로그래밍 기 Z 시스템 함수가 부분 프로세스 이미지를 업데이
기가 시동 루틴을 실행한 후에 진단 버퍼의 내용을 트하는 도중 PZF가 발생합니다. 오류와 함께 오
읽어올 수 있습니다. 류를 표시한 첫 번째 바이트의 주소가 함수(시스
신형 CPU인 경우 CPU 파라미터화 기능을 이용 템 함수 SFC 26 UPDAT_PI, SFC 27 UPDAT_
해 진단 버퍼가 저장할 항목의 수를 설정할 수 있습 PO, SFC 126 SYNC_PI 및 SFC 127 SYNC_PO)
니다. 의 파라미터에 반환됩니다.

411
23 오류 처리

동기 에러 이벤트가 발생했을 때 해당 조직 블록 도하는 경우, I/O 영역을 통해 직접적으로 액세스를


OB 121 또는 122가 존재하지 않는 경우 CPU는 정 시도했는지 또는 프로세스 이미지를 통해 간접적으
지 상태가 됩니다. 로 액세스를 시도했는지에 관계 없이 CPU는 I/O 액
세스 오류를 보고합니다.
표 23.1 에는 두 동기 에러 조직 블록의 시작 정보
가 나와있습니다. 주변 출력장치를 쓰는 중에 액세스 오류가 발생하
면 S7-400 CPU는 출력 프로세스 이미지를 트래킹
S7-400 CPU는 액세스 오류를 존재하지 않는 모
합니다. S7-300 CPU는 트래킹하지 않습니다.
듈에 대한 액세스와 존재하는 모듈에 대한 유효하지
않은 액세스 시도(승인 지연 QVZ), 이렇게 2가지 유 동기 에러 OB는 오류가 발생한 블록과 같은 우선
형으로 구분합니다. 모듈이 작업 도중 오류를 일으 순위(클래스)를 갖습니다. 비동기 에러 OB의 누산
킨 경우 이 모듈은 액세스 시도 후 약 150ms 후에 기와 주소 레지스터는 중단 시점에 오류를 유발한
‘존재하지 않는’ 것으로 표시됩니다. 그 후에 이 모 블록에 있던 값을 저장합니다. 데이터 블록(DB) 레
듈에 액세스를 시도할 때마다 I/O 액세스 오류(PZF) 지스터는 삭제되고, 조건 코드 워드는 미지정 내용
가 보고됩니다. 존재하지 않는 모듈에 액세스를 시 을 갖게 됩니다.

표 23.1 동기 에러 OB 121 및 OB 122의 시작 정보


바이트 변수 이름 데이터 형식 설명, 내용
0 OB12x_EV_CLASS BYTE B#16#25 = 프로그래밍 오류 OB 121 호출
B#16#29 = 액세스 오류 OB 122 호출
1 OB12x_SW_FLT BYTE 오류 코드(23.2.1 “오류 필터” 참조)
2 OB12x_PRIORITY BYTE 오류가 발생한 우선 순위 등급
3 OB12x_OB_NUMBR BYTE OB 번호(B#16#79 또는 B#16#80)
4 OB12x_BLK_TYPE BYTE 인터럽트된 블록의 유형(S7-400만 해당)
OB: B#16#88, DB: B#16#8A, FB: B#16#8E, FC: B#16#8C
5 OB121_RESERVED_1 BYTE 바이트 할당(B#16#xy):
OB122_MEM_AREA 7... (x) ... 4 3 ... (y) ... 0
1 비트 액세스 0 I/O 영역 PI 또는 PQ
1 프로세스 이미지 입력 테이블 I
2 바이트 액세스 2 프로세스 이미지 출력 테이블 Q
3 메모리 비트 M
3 워드 액세스 4 글로벌 데이터 블록(DB)
5 인스턴스 데이터 블록(DB) DI
4 더블 워드 액세스 6 임시 로컬 데이터 L
7 선행 블록 V의 임시 로컬 데이터
6...7 OB121_FLT_REG WORD OB 121: 오류 소스:
Z 주소에 오류가 있는 경우(읽기/쓰기 액세스 시).
Z 영역에 오류가 있는 경우(영역 오류 시).
OB122_MEM_ADDR Z 블록, 타이머/카운터 함수의 번호가 올바르지 않은 경우
OB 122: 오류가 발생한 주소
8...9 OB12x_BLK_NUM WORD 오류가 발생한 블록의 번호(S7-400만 해당)
10...11 OB12x_PRG_ADDR WORD 오류를 유발한 블록의 오류 주소(S7-400만 해당)
12...19 OB12x_DATE_TIME DT 프로그래밍 오류가 감지된 시간

412
23.2 동기 에러 처리

주의: 동기 에러 OB가 호출되면 OB 시작 정보 23.2 동기 에러 처리


의 20 바이트도 동기 에러 OB와 이 OB에서 호출
된 모든 블록의 다른 임시 로컬 데이터와 마찬가지 동기 에러 처리에는 다음과 같은 시스템 함수를
로 오류를 유발한 우선 순위 등급의 L 스택에 전송 사용할 수 있습니다.
됩니다. 따라서 관련된 모든 우선 순위 클래스에 이 Z SFC 36 MSK_FLT
임시 로컬 데이터를 위한 영역이 확보되어 있어야 동기 에러를 마스킹합니다.
합니다(프로그램 실행 레벨). S7-300 CPU의 경우 (OB 호출 비활성화)
이 영역에 대한 설정이 고정되어 있습니다. S7-400 Z SFC 37 DMSK_FLT
CPU의 경우 CPU 파라미터화 중에 메모리’ 탭에서 동기 에러의 마스킹을 해제합니다.
설정을 조정할 수 있습니다. (OB 호출 재활성화)
블록 네스팅 깊이의 경우도 이와 유사합니다. 특 Z SFC 38 READ_ERR
정 CPU에 허용되는 우선 순위 클래스별 네스팅 깊 오류 레지스터를 읽습니다.
이는 ‘일반’ 처리의 네스팅 깊이와 동기 오류 처
운영체제는 시스템 함수 SFC 36 ~ SFC 38 사용
리의 네스팅 깊이를 더한 것입니다.
여부에 관계 없이 동기 에러를 진단 버퍼에 입력합
S7-400의 경우 오류 OB에서 다른 동기 에러 OB 니다. 이 시스템 함수의 파라미터는 표 23.2에 정리
를 호출할 수 있습니다. 동기 에러 OB의 블록 네스 되어 있습니다.
팅 깊이는 S7-400 CPU의 경우 3, S7-300 CPU의
경우 4입니다.
동기 에러 OB 호출은 시스템 함수 SFC 36 MSK_
FLT, SFC 37 DMSK_FLT 및 SFC 38 READ_ERR로
활성화 또는 비활성화할 수 있습니다.

표 23.2 동기 에러 처리를 위한 SFC 파라미터


SFC 파라미터 선언 데이터 형식 내용, 설명
36 PRGFLT_SET_MASK INPUT DWORD 새(추가) 프로그래밍 오류 필터
ACCFLT_SET_MASK INPUT DWORD 새(추가) 액세스 오류 필터
RET_VAL RETURN INT W#16#0001 = 새 필터가 기존 필터와 중첩됩
니다.
PRGFLT_MASKED OUTPUT DWORD 전체 프로그래밍 오류 필터
ACCFLT_MASKED OUTPUT DWORD 전체 액세스 오류 필터
37 PRGFLT_RESET_MASK INPUT DWORD 재설정할 프로그래밍 오류 필터
ACCFLT_RESET_MASK INPUT DWORD 재설정할 액세스 오류 필터
RET_VAL RETURN INT W#16#0001 = 새 필터에 현재 필터에는 설정
되지 않은 비트가 있습니다.
PRGFLT_MASKED OUTPUT DWORD 남아있는 프로그래밍 오류 필터
ACCFLT_MASKED OUTPUT DWORD 남아있는 액세스 오류 필터
38 PRGFLT_QUERY INPUT DWORD 쿼리할 프로그래밍 오류 필터
ACCFLT_QUERY INPUT DWORD 쿼리할 액세스 오류 필터
RET_VAL RETURN INT W#16#0001 = 쿼리 필터에 현재 필터에는 설
정되지 않은 비트가 있습니다.
PRGFLT_CLR OUTPUT DWORD 오류 메시지가 포함된 프로그래밍 오류 필터
ACCFLT_CLR OUTPUT DWORD 오류 메시지가 포함된 액세스 오류 필터

413
23 오류 처리

23.2.1 오류 필터 다). 오류 필터에서 지정된 동기 에러 마스크는 운영


오류 필터는 동기 에러 처리를 위한 시스템 함수 체제의 메모리에 저장된 마스크에 부가됩니다. SFC
를 제어하는 데 사용됩니다. 프로그래밍 오류 필터 36은 함수 값을 반환합니다. 입력 파라미터에 지정
의 경우 비트 1개가 감지된 프로그래밍 오류 1개에 된 마스크의 비트 중 최소 하나에 (저장된) 마스크가
해당하고, 액세스 오류 필터의 경우 비트 1개가 감 이미 존재하는 경우 함수 값 W#16#0001이 반환됩
지된 액세스 오류 1개에 해당합니다. 오류 필터를 니다.
정의할 때 마스킹, 마스킹 해제 또는 쿼리할 동기 에
SFC 36은 현재 마스킹된 모든 오류의 출력 파라
러에 해당하는 비트를 설정합니다. 시스템 함수가
미터에 ‘1’ 을 반환합니다.
반환한 오류 필터는 여전히 마스킹 상태인 동기 오
류나 발생한 동기 오류에 대해 ‘1’ 을 표시합니다. 마스킹된 동기 에러 이벤트가 발생하면 해당 OB
액세스 오류 필터는 표 23.3에 설명되어 있습니 는 호출되지 않고 오류가 오류 레지스터에 입력됩니
다. 오류 코드 열은 OB 122의 시작 정보에 있는 변 다. 현재 우선 순위 등급에 비활성화가 적용됩니다(
수 OB122_SW_FLT의 내용을 보여 줍니다. 우선 순위 레벨). 예를 들어 메인 프로그램에서 동기
에러 OB 호출을 비활성화하면 인터럽트 서비스 루
프로그래밍 오류 필터는 표 23.4에 설명되어 있
틴에서 오류가 발생했을 때 동기 에러 OB가 여전히
습니다. 오류 코드 열은 OB 121의 시작 정보에 있는
변수 OB121_SW_FLT의 내용을 보여 줍니다. 호출됩니다.

테이블에 나열되지 않은 오류 필터 비트는 동기


에러 처리와 무관한 비트입니다. 23.2.3 동기 에러 마스킹 해제

시스템 함수 SFC 37 DMSK_FLT는 오류 필터를


23.2.2 동기 에러 마스킹 통해 동기 에러 OB 호출을 활성화합니다. 동기 오류
시스템 함수 SFC 36 MSK_FLT는 오류 필터를 통 발생 시 OB가 다시 호출되게 하려면 오류 필터에
해 동기 에러 OB 호출을 비활성화합니다. 동기 오류 ‘1’ 을 입력합니다(동기 오류의 ‘마스킹이 해제’
발생 시 해당 OB를 호출하지 않으려면 오류 필터에 됩니다). 지정된 비트와 일치하는 항목이 오류 레지
‘1’ 을 입력합니다(동기 오류가 ‘마스킹’ 됩니 스터에서 삭제됩니다. 입력 파라미터에 지정된 마

표 23.3 액세스 오류 필터
비트 오류 코드 내용
3 B#16#42 읽기 중 I/O 액세스 오류
S7-300 및 CPU 417: 모듈이 존재하지 않거나 액세스를 승인하지 않습니다.
S7-400(CPU 417 제외): 첫 번째 I/O 액세스 이후 기존 모듈이 액세스를 승인하지 않습니다
(타임아웃).
4 B#16#43 쓰기 중 I/O 액세스 오류
S7-300 및 CPU 417: 모듈이 존재하지 않거나 액세스를 승인하지 않습니다.
S7-400(CPU 417 제외): 첫 번째 I/O 액세스 이후 기존 모듈이 액세스를 승인하지 않습니다
(타임아웃).
5 B#16#44 S7-400만 해당(CPU 417 제외):
존재하지 않는 모듈에 읽기를 시도하거나(PZF), 이전 수정 레벨의 경우 액세스를 승인하지
않는 모듈에 반복적으로 액세스를 시도하여 I/O 액세스 오류가 발생했습니다.
6 B#16#45 S7-400만 해당(CPU 417 제외):
존재하지 않는 모듈에 쓰기를 시도하거나(PZF), 이전 수정 레벨의 경우 액세스를 승인하지
않는 모듈에 반복적으로 액세스를 시도하여 I/O 액세스 오류가 발생했습니다.

414
23.2 동기 에러 처리

스킹 해제의 비트 중 최소 하나에 (저장된) 마스크가 SFC 38은 선택된 오류가 발생하면 오류의 출력
존재하지 않는 경우 SFC 37은 함수 값 W#16#0001 파라미터에 ‘1’ 을 반환하고, 오류가 쿼리되면 오
을 반환합니다. 류 레지스터에서 이 오류를 삭제합니다. 보고된 동
기 에러는 현재 우선 순위 등급(우선 순위 레벨)에
SFC 37은 현재 마스킹된 모든 오류의 출력 파라
미터에 ‘1’ 을 반환합니다. 존재하는 오류입니다.

마스킹 해제된 동기 에러가 발생하면 해당 OB가


호출되고 오류 레지스터에 오류 이벤트가 입력됩니 23.2.5 대체값 입력
다. 현재 우선 순위 등급에 활성화가 적용됩니다(우
SFC 44 REPL_VAL 을 사용해 동기 에러 OB에 있
선 순위 레벨).
는 누산기 1에 대체값을 입력할 수 있습니다. 모듈
에서 더 이상 값을 읽을 수 없을 때(예: 모듈에 결
23.2.4 오류 레지스터 읽기 함이 있는 경우) SFC 44를 사용합니다. SFC 44를

시스템 함수 SFC 38 READ_ERR은 오류 레지스 프로그래밍하면 문제의 모듈에 액세스를 시도할


터를 읽습니다. 동기 오류의 항목을 읽어오려면 오 때마다 OB 122( ‘액세스 오류’ )가 호출됩니다.
류 필터에 ‘1’ 을 입력해야 합니다. 입력 파라미 SFC 44를 호출하면 누산기에 대체값을 로드할 수
터에 지정된 설정에 (저장된) 마스크가 존재하지 않 있습니다. 이 대체값으로 프로그램 스캔이 재개됩
는 비트가 하나 이상 포함된 경우 SFC 38은 함수 값 니다. SFC 44의 파라미터는 표 23.5에 나열되어 있
W#16#0001을 반환합니다. 습니다.

표 23.4 프로그래밍 오류 필터
비트 오류 코드 내용
1 B#16#21 BCD 변환 오류(변환 중 유사 사분할 감지)
2 B#16#22 읽기 중 영역 길이 오류(영역 범위를 벗어난 주소)
3 B#16#23 쓰기 중 영역 길이 오류(영역 범위를 벗어난 주소)
4 B#16#24 읽기 중 영역 길이 오류(영역 포인터에 잘못된 영역이 있는 경우)
5 B#16#25 쓰기 중 영역 길이 오류(영역 포인터에 잘못된 영역이 있는 경우)
6 B#16#26 유효하지 않은 타이머 번호
7 B#16#27 유효하지 않은 카운터 번호
8 B#16#28 읽기 중 주소 오류
(바이트, 워드 또는 더블 워드 액세스에 비트 주소 <>0 사용 및 간접 주소 지정)
9 B#16#29 쓰기 중 주소 영역
(바이트, 워드 또는 더블 워드 액세스에 비트 주소 <>0 사용 및 간접 주소 지정 방식)
16 B#16#30 글로벌 데이터 블록(DB)에서 쓰기 오류(쓰기 보호 설정된 블록)
17 B#16#31 인스턴스 데이터 블록(DB)에서 쓰기 오류(쓰기 보호 설정된 블록)
18 B#16#32 유효하지 않은 글로벌 데이터 블록(DB 레지스터) 번호
19 B#16#33 유효하지 않은 인스턴스 데이터 블록(DI 레지스터) 번호
20 B#16#34 유효하지 않은 함수(FC) 번호
21 B#16#35 유효하지 않은 함수 블록(FB) 번호
26 B#16#3A 호출한 데이터 블록(DB)이 존재하지 않음
28 B#16#3C 호출한 함수(FC)가 존재하지 않음
30 B#16#3E 호출한 함수 블록(FB)이 존재하지 않음

415
23 오류 처리

SFC 44는 단 하나의 동기 에러 OB(OB 121 또는 및 SFC 42 EN_AIRT로 지연 및 활성화할 수 있습니


OB 122)에서만 호출할 수 있습니다. 다.

타이밍 오류 OB 80
23.3 비동기 에러 다음 오류 중 하나가 발생하면 운영체제는 조직
블록 OB 80를 호출합니다.
비동기 에러는 프로그램 스캔과는 별도로 발생하
는 오류입니다. 비동기 에러가 발생하면 운영체제 Z 사이클 모니터링 시간 초과

는 아래 나열된 조직 블록 중 하나를 호출합니다. Z OB 요청 오류(요청한 OB가 이미 실행 중이거나

OB 80 타이밍 오류 특정 OB가 같은 우선 순위 등급 내에 너무 자주
요청된 경우)
OB 81 전력 공급 오류
Z 시간 지정 인터럽트 오류(클록이 앞으로 설정되
OB 82 진단 인터럽트 거나 RUN으로 전환된 후로 설정되어 시간 지정
OB 83 모듈 탈착/장착 인터럽트 인터럽트 시간이 경과한 경우)

OB 84 CPU 하드웨어 결함 OB 80이 없을 때 타이밍 오류가 발생하면 CPU는


정지 상태가 됩니다. 같은 프로그램 스캔 사이클에
OB 85 프로그램 실행 에러
서 OB가 두 번 호출된 경우에도 CPU가 정지 상태가
OB 86 랙 고장 됩니다.

OB 87 통신 오류
전력 공급 오류 OB 81
OB 88 처리 중단
다음 오류 중 하나가 발생하면 운영체제는 조직
OB 82 호출(진단 인터럽트)은 23.4 “시스템 진
블록 OB 81을 호출합니다.
단” 에 자세히 설명되어 있습니다.
Z 중앙 컨트롤러 또는 확장 유닛에 있는 백업 배터
S7-400H에는 이외에 3개의 비동기 에러 OB가
리 중 하나 이상이 비어 있는 경우
더 있습니다.
Z 중앙 컨트롤러 또는 확장 유닛에 배터리 전압이
OB 70 I/O 이중화 에러
없는 경우
OB 72 CPU 이중화 에러
Z 중앙 컨트롤러 또는 확장 유닛에 24V를 공급하
OB 73 통신 이중화 에러 는 데 실패한 경우

이 비동기 에러 조직 블록의 호출은 시스템 함수 수신 및 발신 오류 발생 시 OB 81이 호출됩니다.


SFC 39 DIS_IRT 및 SFC 40 EN_IRT로 비활성화 및 OB 81이 없는 경우 전력 공급 오류 발생 시 CPU는
활성화할 수 있고, 시스템 함수 SFC 41 DIS_AIRT 계속 작동합니다.

표 23.5 SFC 44 REPL_VAL의 파라미터


SFC 파라미터 이름 선언 데이터 형식 내용, 설명
44 VAL INPUT DWORD 대체값
RET_VAL RETURN INT 오류 정보

416
23.3 비동기 에러

모듈 탈착/장착 인터럽트 OB 83 S7-400 CPU의 경우 시스템 측에서 I/O 액세스


운영체제는 1초에 1번씩 모듈 구성을 모니터링합 오류가 발생하면 OB 85가 호출됩니다(예: 각 사이
니다. 실행, 정지 또는 재가동 모드에서 모듈이 삽입 클에서 프로세스 이미지를 업데이트하는 도중 오류
또는 제거될 때마다 진단 버퍼와 시스템 상태에 항 발생). 업데이트를 할 때마다 프로세스 이미지 입력
목이 입력됩니다. 테이블의 해당 바이트에 대체값 또는 0이 입력됩니
다.
CPU가 실행 모드인 경우 운영체제는 조직 블록
OB 83을 호출합니다. OB 83이 없는 경우 모듈 삽입 S7-300 CPU의 경우 프로세스 이미지를 자동 업

/제거 인터럽트 발생 시 CPU는 정지 상태가 됩니다. 데이트하던 도중에 I/O 액세스 오류가 발생했을 때
OB 85를 호출하지 않습니다. 처음 액세스 오류가
모듈 탈착/장착 인터럽트가 생성되기까지 최대 1 발생했을 때 대체값 또는 0이 해당 바이트에 입력됩
초의 시간이 경과할 수 있습니다. 이 때문에 모듈이 니다. 이후에는 더 이상 업데이트하지 않습니다.
제거되고 인터럽트가 생성되는 사이에 액세스 오류
적절한 CPU를 사용하는 경우 CPU 파라미터화를
또는 프로세스 이미지 업데이트와 관련된 오류가 보
이용해 시스템 측에서 I/O 액세스 오류가 발생했을
고될 수 있습니다.
때 OB 85 호출 모드에 영향을 줄 수 있습니다.
구성된 슬롯에 적절한 모듈이 삽입되면 CPU는
Z 오류가 발생할 때마다 OB 85를 호출합니다. 영
CPU에 저장된 데이터 기록을 사용해 이 모듈의 파
향을 받은 입력 바이트는 매번 대체값 또는 0으
라미터를 자동 지정합니다. 파라미터가 지정된 후
로 덮어씁니다.
에야 OB 83이 호출되어 연결된 모듈이 작업 준비가
되었음을 표시합니다. Z 오류가 처음 발생했을 때 ‘수신’ 속성으로 OB
85를 호출합니다. 영향을 받은 바이트는 처음에
만 대체값 또는 0으로 덮어쓰고 그 다음부터는
CPU 하드웨어 에러 감지용 OB 84
더 이상 업데이트하지 않습니다. 오류가 해결되
인터페이스 오류(MPI 네트워크, 프로피버스 DP)
면 ‘발신’ 속성으로 OB 85를 호출합니다. 이
가 발생하거나 오류가 해제될 때 운영체제는 조직
다음부터는 ‘정상적으로’ 업데이트됩니다.
블록 OB 84를 호출합니다. OB 84가 없는 경우,
CPU 하드웨어 결함 오류 발생 시 구 버전의 운영체 Z 액세스 오류가 발생했을 때 조직 블록 OB 85를

제가 설치된 CPU는 정지 상태가 됩니다. 호출하지 않습니다. 영향을 받은 입력 바이트는


한 번만 대체값 또는 0으로 덮어쓰고 그 다음부
터는 더 이상 업데이트하지 않습니다.
프로그램 실행 에러 OB 85
OB 85가 없는 경우 프로그램 실행 오류 발생 시
다음 오류 중 하나가 발생하면 운영체제는 조직
CPU는 정지 상태가 됩니다.
블록 OB 85를 호출합니다.

Z 로드되지 않은 조직 블록을 시작하도록 요청한


랙 고장 OB 86
경우
운영체제는 정전, 결선, IM 결함(S7-300는 제외)
Z 운영체제가 블록에 액세스하는 도중 오류가 발 등의 랙 고장, DP 마스터 시스템 고장 또는 분산 I/
생한 경우(예: 시스템 함수 블록(SFB)을 호출했 O 스테이션(프로피버스 DP 또는 프로피넷 IO) 고장
는데 인스턴스 블록 데이터가 없는 경우) 을 감지하면 조직 블록 OB 86을 호출합니다. OB 86
은 수신 오류와 발신 오류 발생 시 호출됩니다.
Z 시스템 측에서 프로세스 이미지 (자동) 업데이트
를 실행하는 도중 I/O 액세스 오류가 발생했을 멀티프로세서 모드인 경우 랙 고장 발생 시 모든
경우 CPU에서 OB 86이 호출됩니다.

417
23 오류 처리

OB 86이 없는 경우 랙 고장 발생 시 CPU는 정지 OB 70이 없는 경우 I/O 이중화 에러가 발생해도


상태가 됩니다. CPU는 계속 작동됩니다.

통신에러 감지용 OB 87 CPU 이중화 에러 OB 72


통신 오류가 발생하면 운영체제는 조직 블록 OB 다음 오류 중 하나가 발생하면 H CPU의 운영체
87를 호출합니다. 통신 오류의 예를 들자면 다음과 제는 조직 블록 OB 72를 호출합니다.
같습니다. Z CPU의 이중화 유실
Z 글로벌 데이터 통신 도중 유효하지 않은 프레임 Z 비교 오류(예: RAM 및 PIQ에서)
ID 또는 프레임 길이가 감지된 경우
Z 스탠바이-마스터 전환
Z 진단 항목을 전송할 수 없는 경우
Z 동기화 오류
Z 클록 동기화 오류가 발생한 경우
Z SYNC 하위 모듈 오류
Z GD 상태를 데이터 블록(DB)에 입력할 수 없는
Z 업데이트 중단
경우
OB 72가 없는 경우 CPU 이중화 에러가 발생해도
OB 87이 없는 경우 통신 오류 발생 시 CPU는 정
CPU는 계속 작동됩니다.
지 상태가 됩니다.

통신 이중화 에러 OB 73
처리 중단 OB 88
결함 허용 S7 연결의 이중화가 처음 유실되면 결
사용자 프로그램에서 블록 처리가 중단되면 운영
함 허용 CPU의 운영체제는 조직 블록 OB 73을 호
체제는 조직 블록 OB 88을 호출합니다. 다음과 같
출합니다. 최소 하나의 결함 허용 S7 연결이 이중화
은 이유로 처리가 중단될 수 있습니다.
유실을 표시한 경우 이중화 유실이 추가 발생했을
Z 동기 에러로 인해 허용된 블록 네스팅 깊이를 초 때에도 OB 73이 다시 호출되지 않습니다.
과한 경우
OB 73이 없는 경우 통신 이중화 에러가 발생해도
Z 블록 호출로 인해 허용된 네스팅 깊이를 초과한 CPU는 계속 작동됩니다.
경우

Z 블록의 로컬 데이터를 할당하는 도중 결함이 발


생한 경우 23.4 시스템 진단
OB 88이 없는 경우 처리 중단 오류 발생 시 CPU
는 정지 상태가 됩니다. 조직 블록이 우선 순위 클래 23.4.1 진단 이벤트 및 진단 버퍼
스 28에서 호출된 경우에도 CPU가 정지 상태가 됩
시스템 진단은 프로그래머블 컨트롤러에서 발생
니다.
하는 오류를 감지, 검사 및 보고합니다. 사용자 프로
그램에서 발생하는 오류, 모듈 고장 또는 입출력 모
I/O 이중화 에러 OB 70 듈의 결선 등을 예로 들 수 있습니다. 다음과 같은
프로피버스 DP 상에서 이중화 에러가 발생하면 진단 이벤트가 발생할 수 있습니다.
H CPU의 운영체제는 조직 블록 OB 70을 호출합니
Z 진단 기능이 있는 모듈에서 진단 인터럽트
다(예: 활성 DP 마스터 상에서 버스 고장이 발생하
거나 DP 슬레이브의 인터페이스에서 결함이 발생한 Z 시스템 오류 및 CPU 모드 전환

경우). Z 시스템 함수를 통한 사용자 메시지

418
23.4 시스템 진단

진단 기능이 있는 모듈은 프로그래밍 가능 진단 23.4.2 진단 버퍼에 진단 버퍼


이벤트와 프로그래밍 불가 진단 이벤트를 구분합니
시스템 함수 SFC 52 WR_USMSG는 진단 버퍼에
다. 프로그래밍 가능 진단 이벤트는 진단을 활성화
항목을 씁니다. 쓰여진 항목은 MPI 버스 상의 모든
하는 데 필요한 파라미터를 사용자가 설정한 경우에
노드로 전송될 수 있습니다. SFC 52의 파라미터는
만 보고됩니다. 프로그래밍 불가 진단 이벤트는 진
표 23.6에 나열되어 있습니다.
단이 활성화되었는지 여부에 관계 없이 항상 보고됩
니다. 진단 이벤트가 보고되면 진단 버퍼의 항목은 시스템 이벤트의 항목(예: 조
직 블록의 시작 정보)과 형식 면에서 동일합니다. 허
Z CPU 상의 결함 LED가 켜집니다.
용 경계 내에서 사용자가 직접 이벤트 ID(EVENTN

Z 진단 이벤트가 CPU의 운영체제에 전달됩니다. 파라미터)와 추가 정보(INFO1 및 INFO2 파라미터)


를 선택할 수 있습니다.
Z 진단 인터럽트를 활성화하는 파라미터가 설정
이벤트 ID는 버퍼 항목의 처음 두 바이트와 동일
된 경우 해당 진단 인터럽트가 생성됩니다(기본
합니다(그림 23.1 참조). 사용자 항목에 사용할 수
적으로 진단 인터럽트는 비활성화되어 있습니
있는 이벤트 ID는 이벤트 클래스 8(입출력 모듈에
다).
대한 진단 항목), 9(표준 사용자 이벤트), A 및 B(임
CPU 운영체제에 보고된 모든 진단 이벤트는 이 의 사용자 이벤트)입니다.
벤트가 발생한 순서대로 날짜 및 시간 스탬프와 함
께 진단 버퍼에 입력됩니다. 진단 버퍼는 CPU 상에
서 배터리 지원을 받는 메모리 영역에 저장되기 때
문에 메모리 초기화가 발생해도 버퍼의 내용은 보존
됩니다. 진단 버퍼는 CPU에 따라 크기가 달라지는
링 버퍼입니다. 진단 버퍼가 가득 차면 최신 항목이
가장 오래된 항목부터 덮어씁니다.

프로그래밍 기기를 이용해 언제든지 진단 버퍼를


읽어올 수 있습니다. CPU의 시스템 진단 파라미터
블록에서 확장 진단 항목(모든 OB 호출) 사용 여부
를 지정할 수 있습니다. 또한 CPU가 정지 상태가 되
기 전 마지막으로 작성한 진단 항목을 MPI 버스 상 그림 23.1 진단 버퍼 항목의 이벤트 ID
의 특정 노드에 전송할지 여부도 지정할 수 있습니
다.

표 23.6 SFC 52 WR_USMSG의 파라미터


SFC 파라미터 이름 선언 데이터 형식 내용, 설명
52 SEND INPUT BOOL ‘1’ 인 경우: 전송이 활성화됨
EVENTN INPUT WORD 이벤트 ID
INFO1 INPUT ANY 추가 정보 1(워드 1개)
INFO2 INPUT ANY 추가 정보 2(더블 워드 1개)
RET_VAL RETURN INT 오류 정보

419
23 오류 처리

추가 정보(INFO1)는 버퍼 항목의 바이트 7과 8( OB 82에서 시스템 함수 SFC 59 RD_REC(데이터


워드 1개)에, 추가 정보 2(INFO2)는 바이트 9 ~ 12( 기록 읽기)를 사용해 자세한 오류 정보를 볼 수 있습
더블 워드 1개)에 표시됩니다. 두 변수의 내용은 사 니다. 진단 정보는 OB 82가 종료될 때까지 일정합
용자가 직접 선택할 수 있습니다. 니다. 즉, ‘고정된’ 상태를 유지합니다. OB 82가
종료되면 모듈에서 발생한 진단 인터럽트가 승인됩
진단 항목을 관련 노드로 전송하려면 SEND를 니다.
‘1’ 로 설정합니다. 전송이 불가능한 경우(예: 로그
모듈의 진단 데이터는 데이터 기록 DS 0과 DS 1
인된 노드가 없거나 전송 버퍼가 가득 찬 경우)에도
에 있습니다. 데이터 기록 DS 0은 모듈의 현재 상태
이벤트 ID의 비트 9가 설정되어 있으면 진단 버퍼에
를 설명하는 진단 데이터의 네 바이트를 포함합니
항목이 기록됩니다.
다. 이 네 바이트의 내용은 OB 82 시작 정보의 바이
트 8 ~ 11의 내용과 일치합니다. 데이터 기록 DS 1
은 데이터 기록 DS 0의 네 바이트와 모듈별 진단 데
23.4.3 진단 인터럽트 검사
이터를 포함합니다.
진단 인터럽트가 수신 또는 발신되면 운영체제는
사용자 프로그램의 스캔을 인터럽트하고 조직 블록 DPV1 기능과 해당 슬레이브를 갖춘 CPU를 사용

OB 82를 호출합니다. OB 82가 프로그래밍되어 있 하는 경우 시스템 함수 블록 SFB 54 RALRM을 이용


해 진단 인터럽트에 대한 더 많은 정보를 볼 수 있습
지 않으면 진단 인터럽트 발생 시 CPU가 정지 상태
니다.
가 됩니다. 시스템 함수 SFC 39 DIS_IRT 또는 SFC
40 EN_IRT로 OB 82를 비활성화 또는 활성화할 수
있고, 시스템 함수 SFC 41 DIS_AIRT 또는 SFC 42 23.4.4 시스템 상태 리스트 읽기
EN_AIRT로 OB 82를 지연 또는 활성화할 수 있습니
시스템 상태 리스트(SSL)는 프로그래머블 컨트롤
다.
러의 현재 상태를 보여 줍니다. 이 리스트는 정보 함
프로피버스 DPV1 슬레이브 역시 마스터 CPU가 수를 사용해 읽을 수 있지만 수정할 수는 없습니다.
정지 상태일 때 진단 인터럽트를 생성할 수 있습니 전체 시스템 상태 리스트는 상당히 길기 때문에 읽
다. CPU가 정지 상태일 때 트리거된 진단 인터럽트 기는 하위 목록이나 하위 목록 초록을 대상으로 합

는 승인은 되지만 처리되지 않습니다. 따라서 CPU 니다. 하위 목록은 가상 목록입니다. 즉, CPU 운영
체제가 요청을 받으면 사용할 수 있게 만들어주는
가 실행 상태가 될 경우 조직 블록 OB 82가 호출되
목록입니다.
지 않습니다.
SSL ID는 하위 목록을 식별하기 위한 것입니다.
표 23.7에는 진단 인터럽트용 OB 82의 시작 정보
이 ID에는 목록을 적용하는 모듈 유형 클래스, 하위
가 나와있습니다. 시작 정보의 첫 번째 바이트에서
목록 초록의 번호 및 실제 SSL 하위 목록 번호가 포
B#16#39는 수신 진단 인터럽트, B#16#38은 발신
함되어 있습니다(그림 23.2 참조). 사용자는 원하는
진단 인터럽트를 의미합니다. 여섯 번째 바이트는
정보와 함께 하위 목록의 개체를 지정하는 인덱스를
주소 식별자입니다(B#16#54는 입력, B#16#55는 제공받습니다. 기본적으로 CPU는 자동화 시스템에
출력을 의미). 그 다음에 있는 INT 변수는 진단 인터 대한 정보를 제공합니다. 하지만 FM 및 CP 모듈 역
럽트를 생성한 모듈의 주소를 표시합니다. 다음 네 시 이 서비스를 사용해 정보를 제공할 수 있습니다(
바이트에는 이 모듈이 제공한 진단 정보가 포함되어 모듈 관련 문서 참조). CPU에서 제공 가능한 시스템
있습니다. 상태 리스트는 작업 설명에 포함되어 있습니다.

420
23.4 시스템 진단

표 23.7 조직 블록 OB 82의 시작 정보(진단 인터럽트)


바이트 변수 이름 데이터 형식 내용, 설명
0 OB82_EV_CLASS BYTE B#16#38 = DOWN 이벤트
B#16#39 = UP 이벤트
1 OB82_FLT_ID BYTE 오류 코드(B#16#42)
2 OB82_PRIORITY BYTE 진단 인터럽트용 OB의 우선 순위 등급
3 OB82_OB_NUMBR BYTE OB 번호(B#16#52)
4 OB82_RESERVED_1 BYTE 예약됨
5 OB82_IO_FLAG BYTE I/O 식별자(B#16#54 = 입력, B#16#55 = 출력)
6...7 OB82_MDL_ADDR WORD 인터럽트를 전송하는 모듈의 모듈 시작 주소
8.0 OB82_MDL_DEFECT BOOL 모듈 결함
8.1 OB82_INT_FAULT BOOL 내부 결함
8.2 OB82_EXT_FAULT BOOL 외부 결함
8.3 OB82_PNT_INFO BOOL 채널에 결함이 있음
8.4 OB82_EXT-VOLTAGE BOOL 외부 전력 공급이 유실됨
8.5 OB82_FLD_CONNCTR BOOL 전면 커넥터가 유실됨
8.6 OB82_NO_CONFIG BOOL 모듈의 파라미터가 지정되지 않음
8.7 OB82_CONFIG_ERR BOOL 모듈의 파라미터가 올바르지 않음
9 OB82_MDL_TYPE BYTE 비트 0 ~ 3: 모듈 클래스
비트 4: 채널 정보가 있음
비트 5: 사용자 정보가 있음
비트 6: 프록시에서 진단 인터럽트
비트 7: 예약됨
10.0 OB82_SUB_MDL_ERR BOOL 사용자 모듈이 잘못되었거나 유실됨
10.1 OB82_COMM_FAULT BOOL 통신 결함
10.2 OB82_MDL_STOP BOOL 작업 상태( ‘0’ = RUN, ‘1’ = STOP)
10.3 OB82_WTCH_DOG_FLT BOOL 시간 종료가 트리거됨
10.4 OB82_INT_PS_FLT BOOL 모듈 내부 전력 공급 고장
10.5 OB82_PRIM_BATT_FLT BOOL 배터리가 방전됨
10.6 OB82_BCKUP_BATT_FLT BOOL 완전한 배터리 백업 실패
10.7 OB82_RESERVED_2 BOOL 예약됨
11.0 OB82_RACK_FLT BOOL 확장 유닛 고장
11.1 OB82_PROC_FLT BOOL 프로세서 고장
11.2 OB82_EPROM_FLT BOOL EPROM 결함
11.3 OB82_RAM_FLT BOOL RAM 결함
11.4 OB82_ADU_FLT BOOL ADC/DAC 결함
11.5 OB82_FUSE_FLT BOOL 퓨즈가 끊어짐
11.6 OB82_HW_INTR_FLT BOOL 하드웨어 인터럽트가 유실됨
11.7 OB82_RESERVED_3 BOOL 예약됨
12...19 OB82_DATE_TIME DT 진단 이벤트의 획득 시간

421
23 오류 처리

을 읽을 수 있습니다. SFC 51의 파라미터는 표 23.8


에 나열되어 있습니다.

REQ = ‘1’ 이면 읽기 작업이 시작되고, BUSY


= ‘0’ 이면 읽기가 이미 완료되었다는 뜻입니다.
운영체제는 여러 개의 비동기 읽기 작업을 거의 동
시에 실행할 수 있습니다. 실행할 수 있는 작업의 수
그림 23.2 SSL ID 구조 는 어떤 CPU를 사용하느냐에 따라 달라집니다.
SFC 51이 함수 값(W#16#8085)을 반환해 리소스
헤더 정보 읽기 부족을 보고한 경우 읽기 요청을 다시 제출해야 합
니다.
SSL ID W#16#0Fxx(xx = SSL 하위 목록 번호)를
사용해 관련 데이터 기록 없이 SSL 하위 목록의 헤 파라미터 SSL_ID와 INDEX의 내용은 CPU에 따라
더 정보를 읽을 수 있습니다. SSL_HEADER. N_DR 달라집니다. 정보를 제공하는 데 INDEX 파라미터가
파라미터(데이터 기록의 개수)는 하위 목록 초록의 필요하지 않은 경우 이 파라미터 값은 무관합니다.
데이터 기록 중 모듈이 SSL 작업으로 전송할 수 있 SSL_HEADER 파라미터는 데이터 형식이 STRUCT
는 최대 데이터 기록의 개수를 반환합니다. 동적 하 이며 변수 LENGTHDR(데이터 형식 WORD)과 N_
DR(데이터 형식 WORD)을 구성요소로 가집니다.
위 목록 사용 시 이 값은 읽을 수 있는 실제 데이터
LENGTHDR은 데이터 기록의 길이, N_DR은 읽은
기록의 개수보다 더 클 수 있습니다. 데이터 기록의
데이터 기록의 개수를 포함합니다.
길이는 SSL_HEADER에 지정되어 있습니다. 헤더
정보에 있는 이 데이터를 사용함으로써 시동 시 관 DR 파라미터를 사용해 SFC 51이 데이터 기록을
련 SSL 하위 목록에 대해 상당히 큰 데이터 버퍼를 입력할 변수 또는 데이터 영역을 지정할 수 있습니
생성할 수 있습니다. 다. 예를 들어 P#DB200.DBX0.0 WORD 256은 데
이터 블록(DB) 200에 DBB 0 ~ 256 사이의 데이터
워드 영역을 제공한다는 뜻입니다. 제공된 영역의
SFC 51 RDSYSST
용량이 충분하지 않은 경우 최대한 입력 가능한 만
SSL 하위 목록을 읽습니다.
큼 데이터 기록이 입력됩니다. 완전한 데이터 기록
시스템 함수 SFC 51 RDSYSST를 사용해 시스템 만 전송됩니다. 지정된 영역은 적어도 하나의 데이
상태 리스트(SSL)의 하위 목록이나 하위 목록 초록 터 기록을 저장할 수 있어야 합니다.

표 23.8 SFC 51 RDSYSST의 파라미터


SFC 파라미터 선언 데이터 형식 내용, 설명
51 REQ INPUT BOOL ‘1’ 인 경우: 요청을 제출합니다.
SSL_ID INPUT WORD 하위 목록 ID
INDEX INPUT WORD 하위 목록 개체의 유형 또는 번호
RET_VAL RETURN INT 오류 정보
BUSY OUTPUT BOOL ‘1’ 인 경우: 아직 읽기가 완료되지 않았습니다.
SSL_HEADER OUTPUT STRUCT 읽은 데이터 기록의 길이와 수
DR OUTPUT ANY 읽은 데이터 기록의 필드

422
23.5 웹 서버

23.5 웹 서버 니다. 디스플레이에 표시된 내용과 관계 없이 인쇄


시에는 CPU의 현재 정보가 사용됩니다.
이더넷 인터페이스가 있는 CPU는 CPU의 정보를
참고: 승인 받지 않은 액세스로부터 웹 서버를 보
제공하는 웹 서버를 가질 수 있습니다. 회사 인트라
호하려면 방화벽을 설치하십시오.
넷이나 인터넷을 통해 이 정보를 읽으려면 HTML 페
이지에 정보를 표시하는 Internet Explorer(버전 6.0
이상)와 같은 웹 브라우저가 필요합니다. 23.5.3 웹 정보
웹 서버는 적절한 CPU를 사용하는 경우 다음과

23.5.1 웹 서버 활성화 같은 정보를 제공할 수 있습니다.

하드웨어 구성 도구로 CPU에 파라미터를 지정하 Z CPU의 일반 정보가 포함된 시작 페이지


여 웹 서버를 활성화할 수 있습니다. CPU를 선택한 Z 식별 데이터
후 편집 → 개체 속성에서 ‘웹’ 탭을 선택합니다. 이
탭에서 웹 서버를 활성화하고 메시지 텍스트와 진단 Z 진단 버퍼

버퍼의 항목에 사용할 언어를 선택합니다. CPU의 Z 메시지(승인 기능 없음)


메모리 용량에 따라 여러 개의 언어를 선택할 수도
Z 프로피넷 인터페이스
있습니다.
Z 변수 상태
STEP 7으로 설치한 언어 중에 선택할 수 있습니
다. SIMATIC 관리자의 프로젝트에 설치된 언어와 Z 변수 테이블
일치시킬 수도 있습니다. 옵션 → 디스플레이 장치용 웹 서버가 제공하는 첫 번째 페이지는 환영 페이
언어를 선택한 후 사용할 언어를 지정합니다. 구성 지입니다. 환영 페이지에서 ENTER를 클릭하면 시
데이터가 CPU에 로드되면 웹 서버를 사용할 수 있 작 페이지로 이동합니다. 다음부터 이 도입 페이지
습니다. 를 건너뛰고 싶다면 ‘도입 페이지 건너뛰기’ 옵션
을 활성화합니다.

23.5.2 웹 정보 읽기
웹 브라우저에서 CPU에 접속하려면 ‘주소’ 필 시작 및 식별
드에 http://aaa.bbb.ccc.ddd 형식으로 CPU의 IP 시작 페이지는 일반 정보와 쿼리 당시 CPU의 상
주소를 입력합니다. CPU의 IP 주소는 ‘일반’ 탭 태를 보여 줍니다. 식별 페이지는 플랜트 명칭, 위치
에 있는 프로피넷 인터페이스의 개체 속성에서 확인 정보, 주문 번호와 같은 CPU의 핵심 데이터를 포함
할 수 있습니다. 하고 있습니다.

웹 서버는 Windows의 Terminal Service도 지원합


니다. 따라서 씬 클라이언트 솔루션을 모바일 디바 진단 버퍼
이스에 사용하거나 Windows CE가 제공하는 씬 클 이 페이지에서 진단 버퍼의 내용을 확인할 수 있
라이언트 옵션을 HMI 스테이션에 사용할 수 있습니 습니다. 디스플레이 간격당 표시할 진단 버퍼 항목
다. 이 경우 주소를 http://aaa.bbb.ccc.ddd/basic 의 수를 선택하십시오. 선택한 이벤트에 대한 상세
형식으로 지정해야 합니다. 정보가 표시됩니다.

CPU의 시작 페이지에서 더 많은 정보를 검색할 오른쪽 상단의 창에서 디스플레이 언어를 선택할
수 있습니다. 주의: 제공되는 정보는 정적 특성을 가 수 있습니다. 구성되지 않은 언어를 선택한 경우 정
지므로 필요 시 화면 내용을 직접 업데이트해야 합 보가 16진수 코드로 표시됩니다.

423
23 오류 처리

메시지 오른쪽 상단의 창에서 디스플레이 언어를 선택할


메시지는 시간 순서대로 날짜 및 시간과 함께 표 수 있습니다. 주소를 지정할 때 영어의 니모닉(예: I
시됩니다. 웹 브라우저를 통해서는 메시지를 승인 가 입력을 의미)이 다른 언어의 니모닉(예: 독일어에
할 수는 없습니다. 서는 E가 ‘Eingang’ 을 의미)과 다르다는 점을 명
심해야 합니다. 구문 오류는 빨간색으로 표시됩니
필더 설정을 이용해 특정 정보를 검색할 수 있습
다.
니다. 분류 함수를 이용해 메시지 번호나 상태에 따
라 메시지를 분류할 수 있습니다. 선택한 메시지에
대한 상세 정보가 표시됩니다. 변수 테이블
웹 서버를 이용해 최대 200개의 변수가 포함된 변
오른쪽 상단의 창에서 디스플레이 언어를 선택할
수 테이블을 최대 50개까지 모니터링할 수 있습니
수 있습니다. 구성되지 않은 언어를 선택한 경우 정
다. CPU의 가용 메모리 공간이 충분하지 않은 경우
보가 16진수 코드로 표시됩니다.
모니터링 가능한 테이블의 수가 달라질 수 있습니
다. 변수 테이블 전체가 표시되지 않는 경우 메시지
프로피넷 인터페이스 및 심볼 코멘트에 필요한 메모리를 줄이십시오. 또
프로피넷 인터페이스에 대한 정보는 ‘파라미터’ 한 가능한 경우 언어를 1개만 사용하고 테이블 행당
및 ‘통계’ 페이지에 있습니다. 예를 들어 발신 또 변수의 수를 조정하십시오.
는 수신한 데이터 패키지에 대한 통계 분석 자료와
구성된 변수 테이블 중에서 표시할 테이블을 선택
함께 MAC 주소와 IP 주소가 표시됩니다.
합니다. 먼저 웹 서버에서 사용할 변수 테이블을 작
성해야 합니다. 기존 변수 테이블을 선택한 경우 편
변수 상태 집 → 개체 속성을 선택하고, 새 변수 테이블을 만들
이 페이지에서 최대 50개 변수의 상태를 모니터 려면 속성 창을 엽니다. ‘일반 - 2부’ 탭 상에서
링할 수 있습니다. 변수의 주소와 디스플레이 형식 그룹에 VATtoWEB를 입력하거나 ‘웹 서버’ 확인
을 지정하면 변수 값이 표시됩니다. 란을 활성화합니다.

424
부록

부록

이 단원에서는 LAD와 FBD 프로그래밍 언어에 관 ‘LAD_Book’ 및 ‘FBD_BOOK’ 라이브러리에


한 유용한 정보, STEP 7 블록 라이브러리의 내용에 는 LAD와 FBD의 기본적인 구성 예를 보여주는 8개
대한 개요 그리고 LAD와 FBD의 모든 요소에 대한 프로그램이 들어 있습니다. 구체적인 예제 2개는 함
기능 개요를 설명합니다. 수, 함수 블록과 로컬 인스턴스의 프로그래밍(컨베
Z 블록 보호 가 설정된 LAD/FBD 프로그램과 함께 이어 예제) 및 데이터 처리(메시지 프레임 예제) 예
블록을 제공할 수도 있습니다. 이를 위해 STL 프 를 보여 줍니다. 필요한 메모리는 약 2MB입니다.
로그래밍 언어로 된 소스 기반 편집기를 사용합 예제를 사용해 보려면 하드웨어 구성에 맞는 프로
니다. 젝트를 설정한 후 심볼 테이블을 포함한 프로그램을
Z LAD 및 FBD 프로그래밍 언어로 된 데이터 영역 라이브러리에서 프로젝트로 복사하십시오. 이제 예
을 전송하기 위해 STL의 또 다른 기능인 간접 주 제를 온라인으로 테스트할 수 있습니다.
소 지정을 사용할 수 있습니다. 이 기능을 사용
하면 해당 데이터 영역의 주소가 런타임 전까지
는 계산되지 않습니다. 출판사 웹사이트에서 다
운로드할 수 있는 ‘LAD_Book’ 및 ‘FBD_
Book’ 라이브러리(8 페이지 참조)에는 데이터
영역 설정 및 전송 방법을 보여주는 ‘메시지 프
레임 예제’ 가 들어 있습니다.
Z 표준 STEP 7 패키지에는 로드 가능한 함수 및
함수 블록을 비롯하여 시스템 블록(SFC 및
SFB)용 블록 헤더 및 인터페이스 설명이 들어 있
는 블록 라이브러리가 포함됩니다.
Z 모든 LAD와 FBD 함수의 기능에 대한 개괄적 설 24 그래픽 프로그래밍 보완
명으로 이 책을 마무리합니다. 블록 보호, 간접 주소 지정, 메시지 프레임
아카이브 라이브러리인 ‘LAD_Book’ 및 ‘FBD_ 예제
Book’ 을 출판사 웹사이트(8 페이지 참조)에서 다 25 블록 라이브러리
운로드할 수 있습니다. 이 라이브러리를 검색하려 조직 블록, 시스템 함수 블록, IEC 함수 블록,
면 SIMATIC Manager의 파일 → 검색 메뉴를 선택하 S5-S7 변환 블록, TI-S7 변환 블록, PID 컨트
십시오. 표시된 대화상자에서 아카이브를 선택합니 롤 블록, 통신 블록
다. 다음 대화상자에서 대상 디렉터리를 지정합니
26 LAD 함수 개요
다. 라이브러리는 기본적으로 ...₩STEP7₩S7LIBS
모든 LAD 함수
경로에 있지만, 프로젝트가 들어 있는
...₩STEP7₩S7PROJ와 같은 디렉터리를 선택할 27 FBD 함수 개요
수도 있습니다. 모든 FBD 함수

425
24 그래픽 프로그래밍 보완

24 그래픽 프로그래밍 보완

24.1 블록 보호 목을 차례로 선택합니다. 표시된 대화상자에


서 프로젝트를 설정하고 소스 개체를 선택한
KNOW_HOW_PROTECT 키워드는 블록 보호 속 후 ‘개체 이름’ 밑에 소스 파일 이름을 지정
성을 나타냅니다. 이 속성으로는 블록을 보거나 인 합니다. ‘확인’ 을 누릅니다. 다음 대화상자
쇄 또는 수정할 수 없습니다. 편집기에는 블록 헤더 에는 블록 컨테이너에 들어 있는 모든 블록이
그리고 블록 파라미터를 포함한 선언 테이블만 표시 표시됩니다. 소스 파일을 만들 블록을 선택하
됩니다. 소스 기반 입력에서는 KNOW_HOW_ 십시오. ‘확인’ 을 누릅니다.
PROTECT를 사용하여 어떤 블록이든 보호할 수 있
4) SIMATIC Manager에서 소스 파일 심볼을 더
습니다. 그러면 본인을 포함한 어느 누구도 컴파일
블 클릭하거나 편집기에서 파일 → 열기를 차
된 블록을 볼 수 없습니다.(소스 파일은 안전한 곳에
례로 선택하여 소스 파일을 엽니다. LAD/FBD
보관하세요!)
블록의 ASCII 소스가 나타납니다. 블록을 여
KNOW_HOW_PROTECT 블록 보호 속성을 STL 러 개 선택한 경우에는 소스 파일에 들어 있는
과 함께 입력할 수 있으며, 이것은 소스 기반 입력이 순서대로 정렬됩니다.
어야 합니다. 그 방법은 다음과 같습니다.
코드 블록 항목들의 정렬 순서는 다음과 같습니
1) 정상적인 방법으로 LAD 또는 FBD에 블록을 다.
만듭니다. 나중에는 사용자 프로그램 블록에
Z 주소가 지정된 블록 유형의 키워드(FUNCTION,
서 키워드 블록이 이 블록을 덮어쓰게 됩니다.
FUNCTION_BLOCK, ORGANIZATION_
원래의 블록을 보존하고 싶다면 키워드를 입
BLOCK). 키워드 뒤에는 TITLE=...로 시작되는
력하기 전에 (사용자가 만든) 라이브러리 등
블록 제목과 //...로 시작되는 블록 주석이 붙을
에 블록을 저장하면 됩니다. 이 방법은 블록
수도 있습니다.
보호 속성을 입력하는 경우에 강력히 권장됩
Z 블록 속성(블록의 속성 페이지에서 필드를 채웠
니다. 이런 방법으로 전체 사용자 프로그램을
는지 그리고 그 수는 몇 개인지에 따라 달라짐)
저장할 수도 있습니다.
Z 변수 선언(VAR_xxx, ..., END_VAR 등의 키워드
2) 소스 컨테이너를 만듭니다. 사용자 프로그램
가 붙는 여러 섹션). 블록-로컬 변수를 선언했는
블록과 동일한 수준에서 S7 프로그램 밑에 소
지 그리고 어떤 변수인지에 따라 달라집니다.
스 개체가 없는 경우에는 새로 만들어야 합니
다. S7 프로그램을 선택하고 삽입 → S7 소프트 Z BEGIN으로 시작되고 블록 끝에 해당하는 키워
웨어 → 소스 폴더를 차례로 선택하여 소스 개 드(예: END_FUNCTION_BLOCK)로 끝나는 프
체를 삽입합니다. 로그램

3) 블록에서 STL 소스를 생성합니다. 작업 표시 데이터 블록 항목의 정렬 순서는 다음과 같습니


줄에서 메뉴를 선택하거나 블록에서 아무 블 다.
록이나 열었다가 다시 닫는 방법을 사용하여 Z 주소가 지정된 블록 유형(DATA_BLOCK)의
편집기로 전환한 후 파일 → 소스 생성 메뉴 항 키워드

426
24.2 간접 주소 지정

Z 블록 속성(블록의 속성 페이지에서 필드를 채웠 24.2.1 포인터: 일반 사항


는지 그리고 그 수는 몇 개인지에 따라 달라짐) 간접 주소 지정의 경우에는 바이트 주소뿐 아니라
Z STRUCT로 시작되고 END_STRUCT로 끝나는 비트 주소 그리고 가능하다면 피연산자 영역까지 포
변수 선언, 또는 인스턴스 데이터 블록의 경우에 함하는 데이터 유형이 필요합니다. 이 데이터 유형
는 연결된 함수 블록의 주소 은 포인터입니다. 포인터는 피연산자를 가리키는
데에도 사용됩니다.
Z BEGIN으로 시작되고 END_DATA_BLOCK으로
끝나는 변수 초기화 포인터에는 세 종류가 있습니다.

5) 블록 속성 다음과 변수 선언 이전에 소스 파일 Z 영역 포인터 - 길이는 32비트이며, 특정 피연산


에서 각 사례의 해당 행에 KNOW_HOW_ 자 또는 그 주소가 포함됩니다.
PROTECT 키워드를 입력합니다. 여러 블록에 Z DB 포인터 - 길이는 48비트이며, 영역 포인터뿐
서 소스를 만든 경우에는 선택한 모든 블록에 만 아니라 데이터 블록 수도 포함합니다.
키워드를 입력합니다. 마지막으로 소스 파일
Z ANY 포인터 - 길이는 80비트이며, DB 포인터뿐
을 저장합니다.
만 아니라 피연산자의 데이터 유형과 같은 추가
6) 파일 → 컴파일을 선택하여 소스 파일을 컴파일 정보를 포함합니다.
합니다. 컴파일러는 지정된 블록 속성을 가진
블록을 생성합니다. 코드 블록인 경우에는 생
성 언어 STL에 생성됩니다. KNOW_HOW_ 24.2.2 영역 포인터
PROTECT는 블록을 더 이상 보거나 인쇄할 영역 포인터는 피연산자 주소와 가능한 경우 피연
수 없음을 의미하므로 생성 언어는 여기에서 산자 영역도 포함합니다. 피연산자 영역이 없는 것
중요하지 않습니다. 컴파일된 새 블록은 사용 은 영역-내부 포인터입니다. 포인터에 피연산자 영
자 프로그램 블록에 있으며 이전 블록을 동일 역도 있다면 영역-교차 포인터입니다.
한 수로 교체합니다. 이것을 상수 표현식으로 다음과 같이 나타냅니
‘소스’ 탭에서 옵션 → 사용자 정의를 사용하여 프 다.
로그램 편집기가 블록을 저장할 때 소스를 자동으로 P#y.x (영역-내부 포인터의 경우)
생성하도록 설정할 수 있습니다. ‘실행’ 버튼을 예: P#22.0
사용하여 기존 블록에서 새 소스를 생성할 수 있습
P#Zy.x (영역-교차 포인터의 경우)
니다.
예: P#M22.0

여기서 x = 비트 주소, y = 바이트 주소, Z = 영역


입니다. 피연산자 ID를 영역으로 지정합니다. 비트
24.2 간접 주소 지정 31의 내용이 두 포인터를 구별합니다.

프로그래밍 언어 STL을 사용하면 런타임까지 주 그림 24.1은 STEP 7에 제공되는 모든 포인터 종


소가 계산되지 않는 피연산자에 액세스할 수 있습니 류와 그 내용을 나타낸 것입니다.
다. 이것은 LAD 또는 FBD에서도 제한적으로 가능 영역 포인터는 원칙적으로 디지털 피연산자를 사
합니다. SFC 20 BLKMOV를 사용하여 복사할 데이 용해서라도 반드시 지정되어야 하는 비트 주소를 갖
터 영역을 정하기 위해 런타임까지 대기할 수 있습 고 있습니다. 디지털 피연산자의 경우에는 0을 비트
니다. 주소로 지정합니다. 예를 들어, 영역 포인터
그러나 먼저 포인터에 관한 몇 가지 유용한 정보 P#M22.0을 사용하여 메모리 비트 M 22.0의 주소를
가 있습니다. 지정할 수 있지만, 메모리 바이트 MB 22, 메모리 워

427
24 그래픽 프로그래밍 보완

그림 24.1 STEP 7의 포인터 구조

428
24.2 간접 주소 지정

드 MW 22 또는 메모리 더블 워드 MD 22의 주소를 STRING은 그림 24.1에 표시된 유형과 수량 1을 받


지정할 수도 있습니다. 아들입니다.

ANY 파라미터에 데이터 유형 ARRAY 또는


24.2.3 DB 포인터 STRUCT(UDT이기도 함)인 변수를 적용할 경우 편

DB 포인터에는 영역 포인터뿐만 아니라 양의 정 집기는 해당 필드 또는 구조에 대한 ANY 포인터를

수 형태로 된 데이터 블록 수도 포함됩니다. DB 포 생성합니다. 이 ANY 포인터는 BYTE의 ID(02hex)를

인터는 영역 포인터가 글로벌 데이터 또는 인스턴스 유형으로 포함하며 변수의 바이트 길이를 수량으로

데이터 영역을 가리키는 경우 데이터 블록을 지정합 포함합니다. 개별 필드 또는 구조 구성 요소의 데이

니다. 기타 모든 경우에 처음 2바이트는 0을 포함합 터 유형은 여기에서는 중요하지 않습니다. 따라서

니다. ANY 포인터는 두 배의 바이트 수로 WORD 필드를


가리킵니다. 예외: CHAR 데이터 유형의 구성 요소
포인터 표시 유형은 데이터 피연산자의 전체 주소
로 이루어진 필드에 대한 포인터는 CHAR 유형
지정과 달리 사용자에게 친숙합니다. 여기에서도
(03hex)으로도 생성됩니다.
마찬가지로 데이터 블록과 데이터 피연산자가 지정
되며 마침표로 구분됩니다. P#DataBlock. 변수 또는 피연산자 영역을 가리키려는 경우에는

DataOperand 파라미터 유형 ANY의 블록 파라미터에 ANY 포인터


를 적용할 수 있습니다. 데이터 유형에 대한 상수 표
예: P#DB 10.DBX 20.5
현식은 다음과 같습니다.
이 포인터를 POINTER 파라미터 유형의 블록 파 P#[데이터블록.]피연산자 유형 수량
라미터에 적용하여 데이터 피연산자를 가리킬 수 있
예:
습니다. 편집기는 이 포인터 유형을 내부에서 실제
파라미터를 전송하는 데 사용합니다. Z P#DB 11.DBX 30.0 INT 12
DBB 30으로 시작하는 DB 11에 12워드를 포함
하는 영역
24.2.4 ANY 포인터
Z P#M 16.0 BYTE 8
ANY 포인터는 DB 포인터뿐만 아니라 데이터 유
MB 16으로 시작하는 8바이트의 영역
형 및 반복 인수도 포함합니다. 따라서 데이터 영역
을 나타낼 수 있습니다. Z P#E 18.0 WORD 1
입력 워드 IW 18
ANY 포인터는 데이터 유형의 변수와 파라미터 유
형의 변수에서 사용할 수 있습니다. 데이터 유형의 Z P#E 1.0 BOOL 1
변수를 가리키는 경우 ANY 포인터는 DB 포인터, 유 입력 I 1.0
형 및 반복 인수를 포함합니다. 파라미터 유형의 변 파라미터 유형의 경우 포인터를 다음과 같이 작성
수를 가리키는 ANY 포인터는 DB 포인터와 유형 대 합니다. L#번호 유형 수량
신 숫자만을 포함합니다. 타이머 또는 카운터 함수
예:
의 경우 유형은 (n+6) 바이트에서 반복되며, (n+7)
Z L#10 TIMER 1
바이트는 B#16#00을 포함합니다. 기타 모든 경우
타이머 함수 T 10
에 이 두 바이트는 W#16#0000 값을 포함합니다.
ANY 포인터의 첫 번째 바이트는 구문 ID를 포함 Z L#2 COUNTER 1

합니다. STEP 7에서 이 값은 항상 10hex입니다. 유 카운터 함수 C 2

형은 ANY 포인터가 가리키는 변수의 데이터 유형을 그러면 편집기는 유형과 수량이 상수 표현식의 조
가리킵니다. 기본 데이터 유형의 변수인 DT와 건과 맞는 ANY 포인터를 적용합니다. ANY 포인터

429
24 그래픽 프로그래밍 보완

의 피연산자 주소는 데이터 유형의 비트 주소와 동 며, 여기에는 다시 ‘변수’ ANY 포인터의 예제가
일해야 함을 유의하십시오. 포함되어 있습니다.
상수 ANY 포인터의 조건은 변수를 선언하지 않은
데이터 영역에 액세스하려는 경우 의미를 가집니
다. 원칙적으로 ANY 파라미터에 변수 또는 피연산 24.3 ‘메시지 프레임 예제’ 에 대한
자도 적용할 수 있습니다. 예를 들어, 표현식 ‘P#I 간단한 설명
1.0 BOOL 1’ 은 ‘I 1.0’ 또는 상응하는 기호 주소
이 예제는 주로 데이터의 취급 방법을 다루며 다
와 동일합니다.
음과 같이 세분됩니다.
함수 블록에서 ANY 파라미터를 선언할 때 기본값
Z 메시지 프레임 데이터 - 데이터 구조를 취급하
을 지정하지 않는 경우 편집기는 구문 ID에 10hex를
는 방법을 보여 줍니다.
지정하고 나머지 바이트에 00hex를 지정합니다. 그
런 다음 편집기는 비어 있는 이 ANY 포인터를 데이 Z 실제 시간 검사 - 시스템 블록 및 표준 블록을 취
터 보기에서 다음과 같이 표시합니다. 급하는 방법을 보여 줍니다.
P#P0.0 VOID 0. Z 메시지 프레임 편집 - 고정 주소를 이용한 SFC
20 BLKMOV 사용법을 보여 줍니다.

24.2.5 ‘변수’ ANY 포인터 Z 데이터 영역의 간접 복사 - ‘변수’ ANY 포인


터를 사용한 ‘간접 복사’ 함수를 보여 줍니다.
SFC 20으로 복사할 때 소스 및 대상 파라미터에
절대 주소 영역(예: P#DB127.DBX0.0 BYTE 32) 또 Z 메시지 프레임 저장 - ‘간접 복사’ 의 사용법
는 변수를 지정합니다. 두 경우 모두 소스 영역과 대 을 보여 줍니다.
상 영역은 프로그래밍하는 동안 고정됩니다. 변수 그림 24.2에는 이 예제의 프로그램 및 데이터 구
인덱스 지정은 배열 구성 요소에 대해서도 가능하지 조가 나와 있습니다.
않습니다. 유형 ANY의 블록 파라미터에서 작성된
이 프로그램은 출판사 웹사이트에서 다운로드할
데이터 영역의 런타임 수정을 위해 다음 방법을 사
수 있는 ‘LAD_Book’ 및 ‘FBD_BOOK’ 라이브
용할 수 있습니다.
러리(8 페이지 참조)의 ‘메시지 프레임 예제’ 아
임시 로컬 데이터에 ANY 데이터 유형의 변수를 래에 있습니다.
작성하고 이것을 사용하여 ANY 파라미터를 초기화
합니다. 그러면 프로그램 편집기는 다른 변수를 작 메시지 프레임 데이터
성했을 때 그러하듯이 ANY 포인터를 생성하지 않고 이 예제에서는 자주 나타나는 데이터 구조를 사용
임시 로컬 데이터의 ANY 변수를 소스 또는 대상 영 자 데이터 유형으로 정의하는 방법과 변수 및 파라
역에 대한 ANY 포인터로 사용합니다. 임시 로컬 데 미터를 선언할 때 이 데이터 유형을 사용하는 방법
이터의 ANY 변수는 ANY 포인터와 같은 방식으로 을 보여 줍니다.
구조화되어 있으므로 런타임 시 개별 항목을 수정할
수신 및 발신 메시지 프레임을 위한 데이터 저장
수 있습니다.
소는 메시지 프레임의 구조를 가진 발신함, 동일한
이 절차는 SFC 20 BLKMOV의 경우뿐만 아니라 구조를 가진 수신함 그리고 수신 메시지 프레임을
다른 블록의 ANY 유형 블록 파라미터에도 적용됩니 위한 중간 저장소 역할을 하는 수신 링 버퍼로 구성
다. 되어 있습니다. 메시지 프레임의 데이터 구조가 자
출판사 웹사이트에서 다운로드할 수 있는 ‘LAD_ 주 나타나므로, 이를 사용자 정의 데이터 유형(UDT)
BOOK’ 및 ‘FBD_Book’ 라이브러리에는 각각 프레임으로 정의합니다. 메시지 프레임은 프레임 헤
‘메시지 프레임 예제’ 프로그램이 포함되어 있으 더를 포함하고 있으며 이 헤더의 구조에도 이름을 부

430
24.3 ‘메시지 프레임 예제’ 에 대한 간단한 설명

그림 24.2 메시지 프레임 데이터 예제의 데이터 구조

여할 수 있습니다. 발신함과 수신함은 각각 프레임 OF_DAY 또는 TOD 유형으로 실제 시간을 가져옵니


구조를 가진 변수를 포함하는 데이터 블록이 됩니 다.
다. 마지막으로 링 버퍼가 있습니다. 링 버퍼는 프레
임과 동일한 데이터 구조를 가진 8개의 구성 요소로 오류 검사
된 배열을 지닌 데이터 블록입니다. 시스템 함수들은 이진 결과 파라미터 BR과 함수
값 RET_VAL을 사용하여 오류 신호를 보냅니다. 이
진 결과 BR이 0인 경우 오류가 발생한 것입니다. 그
실제 시간 검사 경우 함수값은 음수가 됩니다(비트 15로 설정됨).
이 예제는 시스템 및 표준 블록을 취급하는 방법 IEC 표준 함수들은 이진 결과를 사용해서만 오류 신
을 보여 줍니다(오류 검사, 라이브러리에서 복사, 이 호를 보냅니다. 예제는 두 유형의 오류 검사를 모두
름 변경). 보여 줍니다. 오류가 발생한 경우 실제 시간에 대해
유효하지 않은 값이 출력됩니다. 또한 이진 결과에
실제 시간 검사 함수는 기본 CPU 실시간 시계의 도 영향을 미칩니다. 따라서 실제 시간 검사 함수를
실제 시간을 함수 값으로 출력합니다. 이를 위해 시 호출한 후에 이진 결과를 사용하여 오류가 발생했는
스템 함수 SFC 1 READ_CLK가 필요합니다. 이 함 지 확인할 수도 있습니다.
수는 실시간 시계의 날짜와 시간을 DATE_AND_
TIME 또는 DT 데이터 유형으로 읽습니다. 필요한 시스템 함수의 오프라인 프로그래밍
것은 실제 시간이므로 IEC 함수 FC 8 DT_TOD도 필 입력 블록을 저장하기 전에 시스템 함수 SFC 1 및
요합니다. 이 함수는 DT 데이터 유형에서 TIME_ 표준 함수 FC 8이 오프라인 사용자 프로그램에 포

431
24 그래픽 프로그래밍 보완

함되어 있어야 합니다. 두 함수는 모두 STEP 7 표준 기호 주소


패키지에 포함되어 있습니다. 이들 함수는 제공된 심볼 테이블에서 시스템 함수 및 표준 함수에 이
블록 라이브러리에 있습니다. CPU에 통합된 시스 름을 지정함으로써 원할 경우 기호를 사용하여 이들
템 함수의 경우, 라이브러리는 실제 시스템 함수 프 함수에 액세스할 수 있습니다. 블록 이름에 적용되
로그램이 아닌 인터페이스 설명만 포함하고 있습니 는 허용 한도 내에서 이름을 자유롭게 지정할 수 있
다. 이 인터페이스 설명을 사용하여 함수를 오프라 습니다. 예제에서는 식별이 편하도록 블록 이름이
인으로 호출할 수 있습니다. 인터페이스 설명은 기호 이름으로 되어 있습니다.
CPU로 전송되지 않습니다. IEC 함수와 같이 로드
가능한 함수는 라이브러리에 실행 프로그램으로 제
메시지 프레임 편집
공됩니다.
데이터 블록 Send_Mailb는 메시지 프레임에 대한
SIMATIC Manager에서 파일 → 열기를 선택한 다
데이터로 채워집니다. 여기에서는 해당 인스턴스
음 표준 라이브러리를 선택합니다. 그 다음 시스템
데이터 블록에 저장된 ID와 연속 번호를 가진 함수
함수 블록 라이브러리를 엽니다. 블록 아래에서 시
블록을 사용합니다. 네트워크 데이터는 최종적으로
스템 함수에 대한 모든 인터페이스 설명을 찾을 수
글로벌 데이터 블록에 저장됩니다. 이 데이터는 시
있습니다. 프로젝트 창이 열려있는 경우, 창 → 정렬
스템 함수 BLKMOV를 사용하여 발신함에 복사됩니
→ 수직을 선택한 다음 선택한 시스템 함수를 마우스
다. 실제 시간 검사 함수를 사용하여 CPU의 실시간
를 사용하여 해당 프로그램으로 드래그하여 두 창을
시계로부터 실제 시간을 가져올 수 있습니다.
나란히 표시할 수 있습니다. 즉, 마우스로 SFC를 선
택하고 마우스 키를 누른 채 블록이나 해당 열린 창 함수 블록 FB Generate_Frame 의 첫 번째 네트
으로 끌어와 ‘내려놓습니다’ . 표준 함수 FC 8도 워크는 인스턴스 데이터 블록에 저장된 ID를 프레임
동일한 방법으로 복사합니다. 이 함수는 IEC 함수 헤더로 전송합니다. 연속 번호는 1씩 커지며 역시
블록 라이브러리에서 찾을 수 있습니다. FC 8은 로 프레임 헤더로 전송됩니다.
드 가능한 함수이므로 SFC 1과는 달리 사용자 메모 두 번째 네트워크는 실시간 시계에서 실제 시간을
리를 사용합니다. 수신하여 프레임 헤더에 TIME_OF_DAY 형식으로
편집기를 사용하여 프로그램 요소 카탈로그의 입력하는 READ_CLK 함수 호출을 포함합니다.
‘라이브러리’ 에서 표준 함수 블록을 호출한 경우 그 이후의 네트워크에서는 간접 주소 지정을 사용
해당 블록은 자동으로 블록에 복사되고 심볼 테이블 하지 않고 시스템 함수 SFC 20 BLKMOV를 사용하
에 입력됩니다. 여 런타임 시 선택된 변수를 복사하는 것을 확인할
수 있습니다. 따라서 변수의 절대 주소나 구조를 알
표준 함수 이름 변경
필요는 없습니다. 원리는 매우 간단합니다. 비교 함
로드 가능한 표준 함수의 이름을 변경할 수 있습
수를 사용하여 원하는 복사 함수를 선택합니다.
니다. 프로젝트 창에서 표준 함수(예: FC 8)를 선택
1~4의 숫자가 선택 기준으로 허용됩니다.
한 다음 지정자를 다시 한 번 클릭합니다. 해당 이름
이 프레임에 나타나고 새 주소를 지정할 수 있습니 FB Generate_Frame은 신호 에지를 통해 호출하
다(예: FC 98). 이름 변경된 표준 함수(FC 98)를 선 여 메시지 프레임을 생성할 수 있도록 프로그래밍되
택한 상태에서 F1 키를 누르더라도 원래 표준 함수 어 있습니다.
(FC 8)에 대한 온라인 도움말은 계속 표시됩니다.
복사할 때 동일한 주소를 가진 블록이 존재할 경 데이터 영역의 간접 복사
우 기존 블록을 덮어쓸지 아니면 이름을 변경할지 이 예제에서는 그래픽 프로그램 요소를 통한 ‘변
묻는 대화상자가 나타납니다. 수’ ANY 포인터의 편집 및 사용법을 보여 줍니다.

432
24.3 ‘메시지 프레임 예제’ 에 대한 간단한 설명

그림 24.3 변수 SoPointer의 구조

CopyData 함수는 블록 파라미터를 사용하여 주 메시지 프레임 저장


소와 길이를 필수로 설정할 수 있는 데이터 영역을 이 예제에는 CopyData 함수의 사용법이 나와 있
복사합니다. 개별 블록 파라미터는 ANY 포인터의 습니다(프로그래밍 가능한 주소를 사용한 데이터
개별 요소에 해당합니다(24.2.4 “ANY 포인터” 장 영역 복사).
참조). 블록 파라미터의 지정값은 유효한 값들이어 데이터 블록 Rec_Mailb의 메시지 프레임이 데이
야 합니다. 이 값들은 검사하지 않습니다. SFC 20 터 블록 버퍼의 다음 위치에 작성됩니다. 블록 로컬
BLKMOV는 해당 함수값 파라미터에 복사 오류를 표 변수 Entry 가 링 버퍼에서의 위치를 결정합니다. 이
시하며 이 값은 CopyData 함수의 함수값 파라미터 위치의 값이 링 버퍼에서의 주소를 계산하는데 사용
로 전송됩니다. 됩니다.
Entry 변수는 0~7의 값을 가집니다. 첫 번째 네트
필수 요소는 ANY 데이터 유형인 두 임시 변수
워크에서 비교 연산자는 Entry가 7보다 작은지 판단
SoPointer 및 DesPointer입니다. 이들은 시스템 함 합니다. 7보다 작을 경우 Entry는 다음 네트워크에
수 SFC 20 BLKMOV에 대한 ANY 포인터를 포함합 서 1만큼 증가하고 그렇지 않을 경우에는 0으로 설
니다. SoPointer는 전송될 데이터의 소스 영역을 가 정됩니다. Entry에 16을 곱하면 링 버퍼에서 다음 항
리키며 DesPointer는 대상 영역을 가리킵니다. 그 목의 절대 바이트 주소가 됩니다. 데이터 구조
림 24.3은 SoPointer 변수의 구조를 보여 줍니다. Message frame은 16바이트로 이루어져 있습니다.
DesPointer는 이와 동일한 구조를 가집니다. ANY 수신함(데이터 블록 DB 62)에서 링 버퍼(데이터
변수의 개별 바이트, 워드, 더블 워드에는 각각의 절 블록 DB 63)로 메시지 프레임을 복사하는
대 주소를 사용하여 액세스합니다. CopyData 함수는 네트워크 3에서 호출됩니다.

433
25 블록 라이브러리

25 블록 라이브러리

STEP 7 Basic 소프트웨어에는 다음 라이브러리 12 2 실제 시간 인터럽트 2


프로그램을 포함하는 표준 라이브러리가 제공됩니 13 2 실제 시간 인터럽트 3
다. 14 2 실제 시간 인터럽트 4
Z 조직 블록 15 2 실제 시간 인터럽트 5
16 2 실제 시간 인터럽트 6
Z 시스템 함수 블록
17 2 실제 시간 인터럽트 7
Z IEC 함수 블록
OB Prio 지정
Z S5-S7 변환 프로그램
20 3 시간 지연 인터럽트 0
Z TI-S7 변환 블록
21 4 시간 지연 인터럽트 1
Z PID 제어 블록
22 5 시간 지연 인터럽트 2
Z 통신 블록 23 6 시간 지연 인터럽트 3
통신 함수
30 7 워치독 인터럽트 0 (5 초)
Z 기타 블록 31 8 워치독 인터럽트 1 (2 초)
시간 동기화 및 스탬프 찍기 32 9 워치독 인터럽트 2 (1 초)
추가적으로 제공되는 라이브러리에는 라이브러 33 10 워치독 인터럽트 3 (500 밀리초)
리 프로그램 CP 300 및 CP 400의 CP 모듈에 대한 34 11 워치독 인터럽트 4 (200 밀리초)
통신 블록을 포함하는 SIMATIC_NET_CP, 모듈 이중 35 12 워치독 인터럽트 5 (100 밀리초)
화를 위한 블록을 포함하는 이중화 IO(V1) 그리고 개 36 13 워치독 인터럽트 6 (50 밀리초)
별 모듈 채널의 이중화를 위한 블록을 포함하는 이 37 14 워치독 인터럽트 7 (20 밀리초)
중화 IO CGP가 있습니다. 38 15 워치독 인터럽트 8 (10 밀리초)
설명된 라이브러리 프로그램에서 사용자의 프로 40 16 하드웨어 인터럽트 0
젝트로 블록이나 인터페이스 설명을 복사할 수 있습 41 17 하드웨어 인터럽트 1
니다. 42 18 하드웨어 인터럽트 2
43 19 하드웨어 인터럽트 3
44 20 하드웨어 인터럽트 4
25.1 조직 블록 45 21 하드웨어 인터럽트 5
46 22 하드웨어 인터럽트 6
(Prio = 기본 우선 순위 클래스) 47 23 하드웨어 인터럽트 7
OB Prio 지정
55 2 DPV1 상태 인터럽트
1 1 메인 프로그램 56 2 DPV1 업데이트 인터럽트

10 2 실제 시간 인터럽트 0 57 2 DPV1 벤더 인터럽트

11 2 실제 시간 인터럽트 1 60 25 멀티프로세서 인터럽트

434
25.2 시스템 함수 블록

OB Prio 지정 25.2 시스템 함수 블록


61 25 동기 사이클 인터럽트 0
CPU 시계 및 런타임 미터
62 25 동기 사이클 인터럽트 1
SFC 이름 지정
63 25 동기 사이클 인터럽트 2
64 25 동기 사이클 인터럽트 3 0 SET_CLK 시계 설정
65 25 기술 동기 인터럽트 1 READ_CLK 시계 판독

70 25 I/O 이중화 오류 2 SET_RTM 런타임 미터 설정


72 28 CPU 이중화 오류 3 CTRL_RTM 런타임 미터 수정
73 25 통신 이중화 오류 4 READ_RTM 런타임 미터 판독
80 26 시간 오류 1) 48 SNC_RTCB 슬레이브 시계 동기화
81 26 전원 공급 장애 1) 64 TIME_TCK 시스템 시간 판독
82 26 진단 인터럽트 1)
100 SET_CLKS 시간 및 시계 상태 설정
83 26 삽입/제거-모듈 인터럽트 1)
101 RTM 런타임 미터 사용
84 26 CPU 하드웨어 장애 1)
85 26 우선 순위 클래스 오류 1)
IEC 타이머 및 IEC 카운터
86 26 DP 오류 1)
SFB 이름 지정
87 26 통신 오류 1)
88 28 처리 중단 0 CTU 업 카운터
90 29 백그라운드 처리 1 CTD 다운 카운터
2 CTUD 업/다운 카운터
100 27 웜 리스타트
101 27 핫 리스타트 3 TP 펄스
102 27 콜드 리스타트 4 TON 온 딜레이
5 TOF 오프 딜레이
121 - 프로그래밍 오류
122 - I/O 액세스 오류
1) S7 통신
Prio = 28 (리스타트 시)
SFB 이름 지정

8 USEND 조정되지 않은 전송
9 URVC 조정되지 않은 수신
12 BSEND 블록 기반 전송
13 BRCV 블록 기반 수신
14 GET 파트너로부터 데이터 판독
15 PUT 파트너에 데이터 쓰기
16 PRINT 프린터에 데이터 쓰기
19 START 파트너에서 콜드 또는 웜
스타트 개시
20 STOP 파트너를 STOP으로 설정
21 RESUME 파트너에서 리스타트
개시

435
25 블록 라이브러리

22 STATUS 파트너 상태 점검 통합 S7-300C 함수


23 USTATUS 파트너 상태 수신 SFB 이름 지정

SFC 이름 지정 44 ANALOG 아날로그 출력으로 위치 지정


46 DIGITAL 디지털 출력으로 위치 지정
62 CONTROL 통신 상태 점검
87 C_DIAG 연결 상태 확인 47 COUNT 카운터 제어
48 FREQUENC주파수 측정 제어
49 PULSE 펄스 폭 변조 제어
S7 기본 통신
SFC 이름 지정
통합 함수 CPU 312/314/614
65 X_SEND 외부로 데이터 전송 SFB 이름 지정
66 X_RCV 외부에서 데이터 수신
29 HS_COUNT고속 카운터
67 X_GET 외부에서 데이터 판독
30 FREQ_MES 주파수 미터
68 X_PUT 외부로 데이터 쓰기
38 HSC_A_B ‘카운터 A/B’ 제어
69 X_ABORT 외부 연결 중단
39 POS ‘위치 지정’ 제어
72 I_GET 내부에서 데이터 판독
41 CONT_C 연속 폐쇄 루프 컨트롤
73 I_PUT 내부에서 데이터 쓰기
42 CONT_S 단계 작업 컨트롤
74 I_ABORT 내부 연결 중단
43 PULSEGEN 펄스 생성

SFC 이름 지정
글로벌 데이터 통신
63 AB_CALL 어셈블러 블록 호출
SFC 이름 지정

60 GD_SND GD 패킷 전송 드럼
61 GD_RCV GD 패킷 수신
SFB 이름 지정

32 DRUM 드럼
S7-300C 지점간 커플링
SFB 이름 지정
H-CPU
60 SEND_PTP 데이터 전송 SFC 이름 지정
(ASCII, 3964 (R))
90 H_CTRL H-CPU에서 작동 모드 제어
61 RCV_PTP 데이터 수신
(ASCII, 3964 (R))
62 RES_RCVB 수신 버퍼 삭제 인터럽트 이벤트
(ASCII, 3964 (R)) SFC 이름 지정

63 SEND_RK 데이터 전송(RK 512) 28 SET_TINT 실제 시간 인터럽트 설정


64 FETCH_RK 데이터 가져오기(RK 512) 29 CAN_TINT 실제 시간 인터럽트 취소
65 SERVE_RK 데이터 수신 및 제공 30 ACT_TINT 실제 시간 인터럽트 활성화
(RK 512) QRY_TINT 실제 시간 인터럽트 쿼리

436
25.2 시스템 함수 블록

32 SRT_DINT 시간 지연 인터럽트 시작 프로세스 이미지 업데이트


33 CAN_DINT 시간 지연 인터럽트 취소 SFC 이름 지정
34 QRY_DINT 시간 지연 인터럽트 쿼리
26 UPDAT_PI 프로세스 이미지 입력 테이블
35 MP_ALM 멀티프로세서 알람 트리거 업데이트
36 MSK_FLT 동기 오류 마스크 27 UPDAT_PO 프로세스 이미지 출력 테이블
업데이트
37 DMSK_FLT 동기 오류 마스크 해제
38 READ_ERR 이벤트 상태 레지스터 판독 79 SET I/O 비트 필드 설정
80 RSET I/O 비트 필드 리셋
39 DIS_IRT 인터럽트 이벤트 비활성화
40 EN_IRT 인터럽트 이벤트 활성화 126 SYNC_PI 등시 모드에서 입력의
41 DIS_AIRT 인터럽트 이벤트 지연 부분 프로세스 이미지
42 EN_AIRT 인터럽트 이벤트 활성화 업데이트

127 SYNC_PO 등시 모드에서 출력의


주소 모듈 부분 프로세스 이미지
SFC 이름 지정 업데이트

5 GADR_LGC논리 주소 결정
시스템 진단
49 LGC_GADR슬롯 결정50
SFC 이름 지정
RD_LGADR 모든 논리 주소 결정

70 GEO_LOG 논리 주소 결정 6 RD_SINFO 시작 정보 판독
71 LOG_GEO 슬롯 결정 51 RDSYSST SYS ST 서브리스트 판독

52 WR_USMSG 진단 버퍼의 항목
데이터 기록 전송
SFB 이름 지정 분산 I/O
52 RDREC DP 슬레이브에서 데이터 기록 SFB 이름 지정
판독 54 RALRM 인터럽트 수신
53 WRREC DP 슬레이브에 데이터 기록 75 SALRM 인터럽트 트리거
쓰기
SFC 이름 지정
81 RD_PAR 사전 정의된 파라미터 판독
7 DP_PRAL 하드웨어 인터럽트 개시
SFC 이름 지정
11 DPSYN_FR SYNC/FREEZE
54 RD_DPARM 사전 정의된 파라미터 판독
12 D_ACT_DP DP 슬레이브 활성화
55 WR_PARM 동적 파라미터 쓰기
또는 비활성화
56 WR_DPARM 사전 정의된 파라미터 쓰기
13 DPNRM_DG 진단 데이터 판독
57 PARM_MOD 모듈 파라미터 지정
58 WR_REC 데이터 기록 쓰기 14 DPRD_DAT 슬레이브 데이터 판독
59 RD_REC 데이터 기록 판독 15 DPWR_DAT 슬레이브 데이터 쓰기

102 RD_DPARA 사전 정의된 파라미터 판독 103 DP_TOPOL 버스 토폴로지 결정

437
25 블록 라이브러리

블록 관련 메시지 작성 프로그램 컨트롤


SFB 이름 지정 SFC 이름 지정

31 NOTIFY_8P 승인 표시 없는 메시지 43 RE_TRIGR 사이클 시간 모니터 재가동


33 ALARM 승인 표시 있는 메시지 46 STP STOP 상태로 변경
34 ALARM_8 동반 값이 없는 메시지 47 WAIT 지연 시간 대기
35 ALARM_8P 동반 값이 있는 메시지
78 OB_RT OB 런타임 결정
36 NOTIFY 승인 표시 없는 메시지
104 CIR RUN에서의 구성
37 AR_SEND 아카이브 데이터 전송
SFC 이름 지정 109 PROTECT 프로그램 보호 변경

9 EN_MSG 메시지 활성화


PROFINET CbA의 블록
DIS_MSG 메시지 비활성화
SFC 이름 지정
17 ALARM_SQ 승인될 수 있는 메시지
18 ALARM_S 항상 승인된 메시지 112 PN_IN 입력 업데이트
19 ALARM_SC 승인 상태 결정 113 PN_OUT 출력 업데이트
105 READ_SI 동적 시스템 리소스 판독 114 PN_DP DP 연결 업데이트
106 DEL_SI 동적 시스템 리소스 활성화
107 ALARM_DQ승인될 수 있는 메시지
108 ALARM_S 항상 승인된 메시지
25.3 IEC 함수 블록

복사 및 블록 함수 문자열 함수
SFC 이름 지정 FC 이름 지정
20 BLKMOV 데이터 영역 복사
21 LEN STRING의 길이
FILL 데이터 영역 사전 할당
20 LEFT STRING의 왼쪽 영역
22 CREAT_DB 작업 메모리에 데이터 32 RIGHT STRING의 오른쪽 영역
블록 작성 26 MID STRING의 중간 영역
23 DEL_DB 데이터 블록 삭제 2 CONCAT STRING 연결
24 TEST_DB 데이터 블록 테스트 17 INSERT STRING 삽입
25 COMPRESS메모리 압축 4 DELETE STRING 삭제
44 REPL_VAL 대체 값 입력 31 REPLACE STRING 바꾸기
11 FIND STRING 찾기
81 UBLKMOV 간격 없이 데이터 영역 복사
16 I_STRNG INT를 STRING으로 변환
82 CREA_DBL 로드 메모리에 데이터
5 DI_STRNG DINT를 STRING으로 변환
블록 생성
83 READ_DBL 로드 메모리 판독 30 R_STRNG REAL을 STRING으로 변환

84 WRIT_DBL 로드 메모리 쓰기 38 STRNG_I STRING을 INT로 변환

85 CREA_DB 작업 메모리에 데이터 37 STRNG_DI STRING을 DINT로 변환


블록 작성 39 STRNG_R STRING을 REAL로 변환

438
25.4 S5-S7 변환 블록

날짜 및 시간 함수 수학 함수
FC 이름 지정 FC 이름 지정

3 D_TOD_DT DATE와 TOD를 DT로 병합 22 LIMIT 제한자


6 DT_DATE DT에서 DATE 추출 25 MAX 최대 선택값
7 DT_DAY DT에서 요일 추출 27 MIN 최소 선택값
8 DT_TOD DT에서 TOD 추출 36 SEL 이진 선택값

33 S5TI_TIM S5TIME을 TIME으로 변환


40 TIM_S5TI TIME을 S5TIME으로 변환
25.4 S5-S7 변환 블록
1 AD_DT_TM TIME을 DT에 더하기
35 SB_DT_TM DT에서 TIME 빼기 부동 소수점 산술
34 SB_DT_DT DT에서 DT 빼기 FC 이름 지정

61 GP_FPGP 고정 소수점을
비교
부동 소수점으로 변환
FC 이름 지정 62 GP_GPFP 부동 소수점을
고정 소수점으로 변환
9 EQ_DT DT가 다음 값과 같은지 비교
28 NE_DT DT가 다음 값과 같지 않은지 63 GP_ADD 부동 소수점 수 더하기
비교 64 GP_SUB 부동 소수점 수 빼기
14 GT_DT DT가 다음 값보다 큰지 비교 65 GP_MUL 부동 소수점 수 곱하기
12 GE_DT DT가 다음 값보다 크거나 66 GP_DIV 부동 소수점 수 나누기
같은지 비교 67 GP_VGL 부동 소수점 수 비교
68 GP_RAD 부동 소수점 수의 제곱근 찾기
23 LT_DT DT가 다음 값보다 작은지 비교
같은지 비교
신호 함수
18 LE_DT DT가 다음 값보다 작거나
FC 이름 지정
같은지 비교
69 MLD_TG 시계 펄스 생성기
10 EQ_STRNG STRING이 다음 값과 같은지
70 MLD_TGZ 타이머 기능이 있는
비교
시계 펄스 생성기
29 NE_STRNG STRING이 다음 값과
같지 않은지 비교 71 MLD_EZW 초기값 싱글
15 GT_STRNG STRING이 다음 값보다 큰지 워드마다 깜박임
비교 72 MLD_EDW 초기값 더블
워드마다 깜박임
13 GE_STRNG STRING이 다음 값보다 크거나
같은지 비교 73 MLD_SAMW워드마다 그룹 신호
24 LT_STRNG STRING이 다음 값보다 작은지 74 MLD_SAM 그룹 신호
비교 75 MLD_EZ 초기값 싱글 깜박임
19 LE_STRNG STRING이 다음 값보다 작거나 76 MLD_ED 초기값 더블 워드마다
같은지 비교 깜박임

439
25 블록 라이브러리

77 MLD_EZWK초기값 싱글 97 LADEN 스크래치패드 메모리 로드


워드마다 깜박이는 (S5-155U)
메모리 비트
98 COD_B8 BCD-이진 변환 8개의 십진수
78 MLD_EZDK 초기값 더블
99 COD_32 이진-BCD 변환 8개의 십진수
워드마다 깜박이는
메모리 비트
아날로그 함수
79 MLD_EZK 초기값 싱글 워드마다
FC 이름 지정
깜박이는 메모리 비트
80 MLD_EDK 초기값 더블 워드마다 100 AE_460_1 아날로그 입력 모듈 460
깜박이는 메모리 비트 101 AE_460_2 아날로그 입력 모듈 460
102 AE_463_1 아날로그 입력 모듈 463
103 AE_463_2 아날로그 입력 모듈 463
통합 함수
104 AE_464_1 아날로그 입력 모듈 464
FC 이름 지정
105 AE_464_2 아날로그 입력 모듈 464
106 AE_466_1 아날로그 입력 모듈 466
81 COD_B4 BCD-이진 변환 4개의 십진수
107 AE_466_2 아날로그 입력 모듈 466
82 COD_16 이진-BCD 변환 4개의 십진수
108 RLG_AA1 아날로그 출력 모듈
83 MUL_16 16비트 고정 소수점 곱셈기
109 RLG_AA2 아날로그 출력 모듈
84 DIV_16 16비트 고정 소수점 나눗셈기
110 PER_ET1 ET100 분산 I/O
111 PER_ET2 ET100 분산 I/O
기본 함수
FC 이름 지정
수학 함수
85 ADD_32 32비트 고정 소수점 가산기 FC 이름 지정
86 SUB_32 32비트 고정 소수점 감산기
112 SINUS 사인
87 MUL_32 32비트 고정 소수점 곱셈기 113 COSINUS 코사인
88 DIV_32 32비트 고정 소수점 나눗셈기 114 TANGENS 탄젠트
89 RAD_16 16비트 고정 소수점 115 COTANG 코탄젠트
제곱근 추출기 116 ARCSIN 아크 사인
117 ARCCOS 아크 코사인
90 REG_SCHB비트별 이동 레지스터
118 ARCTAN 아크 탄젠트
91 REG_SCHW워드별 이동 레지스터
119 ARCCOT 아크 코탄젠트
92 REG_FIFO 버퍼(FIFO)
120 LN_X 자연 로그
93 REG_LIFO 스택(LIFO)
121 LG_X 밑이 10인 로그
94 DB_COPY1 데이터 영역 복사(직접) 122 B_LOG_X 임의의 밑을 갖는 로그
95 DB_COPY2 데이터 영역 복사(간접)
123 E_H_N 밑이 e인 지수 함수
96 RETTEN 스크래치패드 메모리 저장 124 ZEHN_H_N 밑이 10인 지수 함수
(S5-155U) 125 A2_H_A1 임의의 밑을 갖는 지수 함수

440
25.5 TI-S7 변환 블록

25.5 TI-S7 변환 블록 104 TBL_TBL 테이블 조합


105 SCALE 값 스케일링
FB 이름 지정 106 UNSCALE 값 스케일링 취소
80 LEAD_LAG 리드/지연 알고리즘
81 DCAT 이산 컨트롤 시간 인터럽트
82 MCAT 모터 컨트롤 시간 인터럽트 25.6 PID 컨트롤 블록
83 IMC 인덱스 행렬 비교
84 SMC 행렬 스캐너 FB 이름 지정
85 DRUM 이벤트 마스크 드럼 41 CONT_C 연속적 컨트롤
86 PACK 테이블 데이터 수집/배분 42 CONT_S 단계적 컨트롤
FC 이름 지정 43 PULSGEN 펄스 생성
58 TCONT_CP 연속적 온도 컨트롤
80 TONR 래치 온 딜레이
59 TCONT_S 단계적 온도 컨트롤
81 IBLKMOV 간접적으로 데이터 영역 전송
82 RSET 프로세스 이미지를
비트별로 리셋
83 SET 프로세스 이미지를 25.7 통신 블록
비트별로 설정
FB 이름 지정
84 ATT 테이블에 값 입력
85 FIFO 테이블의 첫 번째 값 출력 8 USEND 조정되지 않은 전송
86 TBL_FIND 테이블에서 값 찾기 9 URCV 조정되지 않은 수신
87 LIFO 테이블의 마지막 값 출력 12 BSEND 블록 기반 전송
88 TBL 테이블 작업 실행 13 BRCV 블록 기반 수신
89 TBL_WRD 테이블에서 값 복사 14 GET 파트너로부터 데이터 판독
90 WSR 데이터 저장 15 PUT 파트너에 데이터 쓰기
91 WRD_TBL 테이블 요소 조합 FC 이름 지정
92 SHRB 비트 이동 레지스터에서
1 DP_SEND 데이터 전송
비트 이동
2 DP_RECV 데이터 수신
93 SEG 7분할 디스플레이용 비트 패턴
3 DP_DIAG 진단
94 ATH ASCII-16진수 변환
4 DP_CTRL 컨트롤
95 HTA 16진수-ASCII 변환
96 ENCO 중요도가 가장 낮은 세트 비트 62 C_CNTR 연결 상태 스캔

97 DECO 워드로 된 세트 비트
98 BCDCPL 10의 보수 생성 DP 표준 슬레이브 및 PROFINET IO 장치의
경우
99 BITSUM 세트 비트 카운팅
100 RSETI PQ를 바이트별로 리셋 FB 이름 지정
101 SETI PQ를 바이트별로 설정 20 GETIO 입력 판독
102 DEV 표준 편차 계산 21 SETIO 출력 설정
103 CDT 상관 관계가 있는 22 GETIO_PA 일관적으로 입력 판독
데이터 테이블 23 SETIO_PA 일관적으로 출력 설정

441
25 블록 라이브러리

IE 통신 62 TIMESTMP 타임스탬프와 함께
FB 이름 지정 메시지 전송

63 TSEND 데이터 전송 UDT 이름 지정


64 TRCV 데이터 수신 60 WS_RULES 여름/겨울 시간 전환의 규칙
65 TCON 연결 설정
66 TDISCON 연결 취소
67 TUSEND UDP를 통해 데이터 전송
68 TURCV UDP를 통해 데이터 수신
25.9 SIMATIC_NET_CP

UDT 이름 지정
라이브러리 프로그램 CP 300
65 TCON_PAR 연결 구성을 위한데이터 FB 이름 지정
구조
FMS 통신:
TCON_PAR TCP_conn_active
2 IDENT 파트너 식별
651 TCON_PAR TCP_conn_passive
3 READ 파트너로부터 데이터 판독
653 TCON_PAR ISOonTCP_conn_active
4 REPORT 변수 전송
654 TCON_PAR ISOonTCP_conn_passive
5 STATUS 파트너로부터
655 TCON_PAR ISOonTCP_conn
상태 정보 요청
_CP_active
6 WRITE 파트너에 데이터 쓰기
656 TCON_PAT ISOonTCP_conn
_CP_passive 8 USEND 조정되지 않은 전송
657 TCPN_PAR UDP_local_open 9 URCV 조정되지 않은 수신
12 BSEND 블록 기반 전송
66 TADD_PAR 통신 파트너의 주소 구조
13 BRCV 블록 기반 수신
661 TADD_PAR UDP_rem_address 및 포트
14 GET 파트너로부터 데이터 판독
15 PUT 파트너에 데이터 쓰기

55 IP_CONF 구성 전송
25.8 기타 블록
FC 이름 지정
FC 이름 지정
1 DP_SEND 데이터 전송
60 LOC_TIME 로컬 시간 및 여름 ID 판독
2 DP_RECV 데이터 수신
61 BT_LT 모듈 시간을 로컬 시간으로
3 DP_DIAG 진단
변환
4 DP_CTRL 컨트롤
62 LT_BT 로컬 시간을 모듈 시간으로
변환 5 AG_SEND 데이터 전송
63 S_LTINT 로컬 시간에 따라 (PROFIBUS FDL 및
시간 인터럽트 설정 산업용 이더넷)
6 AG_RECV 데이터 수신
FB 이름 지정
(PROFIBUS FDL 및
60 SET_SW 여름/겨울 시간 전환 산업용 이더넷)
61 SET_SW_S 시간 상태와 함께 7 AG_LOCK 데이터 교환 비활성화
여름/겨울 시간 전환 (산업용 이더넷)

442
25.10 이중화 IO (V1)

8 AG_UNLOC 데이터 교환 활성화 43 FTP_DELE 서버의 파일 삭제


(산업용 이더넷) 44 FTP_QUIT 연결 취소

40 FTP_CONN 서버에 대한 연결 설정 50 AG_LSEND 데이터 전송 (TCP 연결)


41 FTP_STOR 서버에 데이터 블록 전송 60 AD_LRECV 데이터 수신 (TCP 연결)
42 FTP_RETR 파일을 클라이언트에 전송 UDT 이름 지정
43 FTP_DELE 서버의 파일 삭제
1 - FILE_DB_HEADER
44 FTP_QUIT 연결 취소

62 C_CNTRL 연결 상태 스캔

UDT 이름 지정 25.10이중화 IO (V1)

1 FILE_DB_HEADER 모듈의 이중화 지원

라이브러리 프로그램 CP 400 라이브러리 프로그램 Red_IO

FB 이름 지정 FB 이름 지정

450 RED_IN 이중화 I/O 신호 판독


FMS 통신:
451 RED_OUT 이중화 I/O 신호 출력
2 IDENT 파트너 식별
452 RED_DIAG 이중화 I/O 진단
3 READ 파트너로부터 데이터 판독
452 RED_STAT 이중화 I/O 상태 판독
4 REPORT 변수 전송
5 STATUS 파트너로부터 FC 이름 지정
상태 정보 요청
450 RED_INIT I/O 이중화 초기화
6 WRITE 파트너에 데이터 쓰기
451 RED_DEPA 탈부동화 트리거
55 IP_CONF 연결 구성 전송

FC 이름 지정
25.11이중화 IO CGP
5 AG_SEND 데이터 전송
(PROFIBUS FDL 및 개별 모듈 채널의 이중화 지원
산업용 이더넷)
6 AG_RECV 데이터 수신 라이브러리 프로그램 Red_IO
(PROFIBUS FDL 및 FB 이름 지정
산업용 이더넷)
450 RED_IN 이중화 I/O 신호 판독
7 AG_LOCK 데이터 교환 비활성화
451 RED_OUT 이중화 I/O 신호 출력
(산업용 이더넷)
452 RED_DIAG 이중화 I/O 진단
8 AG_UNLOC데이터 교환 활성화
452 RED_STAT 이중화 I/O 상태 판독
(산업용 이더넷)
FC 이름 지정
40 FTP_CONN 서버에 대한 연결 설정
41 FTP_STOR서버에 데이터 블록 전송 450 RED_INIT I/O 이중화 초기화
42 FTP_RETR 클라이언트에 파일 전송 451 RED_DEPA 탈부동화 트리거

443
26 함수 세트 LAD

26 함수 세트 LAD

26.1 기본 함수 이진 검사 및 조합

메모리 함수

타이머 함수

타이머 특성의 경우:


S_PULSE SP 펄스
S_PEXT SE 확장 펄스
S_ODT SD 온 딜레이
S_ODTS SS 저장된 온 딜레이
S_OFFDT SF 오프 딜레이

444
26.2 디지털 함수

전송 함수 26.2 디지털 함수

비교 함수

카운터 함수

비교 기준
INT DINT REAL
같음 ==I ==D ==R
~와 같지 않음 <>I <>D <>R
더큼 >I >D >R
~보다 크거나 >=I >=D >=R
같음
더 작음 <I <D <R
~보다 작거나 <=I <=D <=R
같음

산술 함수

계산 기준
INT DINT REAL
더하기 ADD_I ADD_DI ADD_R
빼기 SUB_I SUB_DI SUB_R
곱하기 MUL_I MUL_DI MUL_R
나눗셈 DIV_I DIV_DI DIV_R
카운터 특성의 경우: 모듈로 - MOD_DI -
S_CUD 업/다운 카운터
S_CU 업 카운터
S_CD 다운 카운터

445
26 함수 세트 LAD

산술 연산 INV_DI DINT 1의 보수
NEG_I INT 부정
NEG_DI DINT 부정
NEG_R REAL 부정
ABS REAL 절대값 생성

SIN 사인 시프트 연산
COS 코사인
TAN 탄젠트
ASIN 아크 사인
ACOS 아크 코사인
ATAN 아크 탄젠트
SQR 제곱값 찾기
SQRT 제곱근값 찾기 SHL_W 워드만큼 왼쪽으로 이동
EXP 지수값 설정 SHL_DW 더블 워드만큼 왼쪽으로 이동
LN 로그값 찾기 SHR_W 워드만큼 오른쪽으로 이동
SHR_DW 더블 워드만큼 오른쪽으로 이동
SHR_I 부호와 함께 워드 이동
변환 기능
SHR_DI 부호와 함께 더블 워드 이동
ROL_DW 왼쪽으로 회전
ROR_DW 오른쪽으로 회전

워드 논리
I_DI INT를 DINT로 변환
I_BCD INT를 BCD로 변환
DI_BCD DINT를 BCD로 변환
DI_R DINT를 REAL로 변환
BCD_I BCD를 INT로 변환
BCD_DI BCD를 DINT로 변환
REAL을 DINT로 변환하며 다음으 WAND_W AND 워드
로 반올림
WOR_W OR 워드
CEIL 다음의 높은 수로
WXOR_W Exclusive OR 워드
FLOOR 다음의 낮은 수로
WAND_DW AND 더블 워드
ROUND 다음의 정수로
TRUNC 반올림 안 함 WOR_DW OR 더블 워드
INV_I INT 1의 보수 WXOR_DW Exclusive OR 더블 워드

446
26.3 프로그램 흐름 제어

26.3 프로그램 흐름 제어 마스터 제어 릴레이

상태 비트

͡懺埪͑當͑冶刂

͡懺埪͑畲其喞͑
償汆͑冶刂

͡懺埪͑沗汆͑冶刂

블록 함수
͡懺埪͑沗其喞͑
償汆͑冶刂
塶決瘶͑挚嵣求嵢͑
穮朞͑挚嵣͑笾犢
͡刂͑償滆͑橐汆͑冶刂

͡刂͑償汆͑冶刂
塶決瘶͑挚嵣求嵢͑
怺箮͑冶刂 柢枪癢͑穮朞͑
͙愶櫺夞滆͑橐汒͚ 挚嵣͑笾犢

欪憊稒嵢
穮朞͑挚嵣͑嬖垚͑
柢枪癢͑穮朞͑挚嵣汊͑
洆沫夢͑欪憊稒嵢 嵢珲͑汾枪瘺枪嵢͑
笾犢

決滊͑冶刂
穮朞͑笾犢

΄Ͳ·Ͷ͑瑚沂

柢枪癢͑穮朞͑笾犢
Jump 연산

砒岂惾瘶儆͑滆洛夞滆͑
橐汆͑穮朞͑笾犢

砒岂惾瘶儆͑滆洛夞滆͑
橐汆͑柢枪癢͑
穮朞͑笾犢

΃Ͷ΅͑瑚汾͑͝
浶兺͑挚嵣͑啣

塶決瘶͑挚嵣͑櫺匶

447
27 함수 세트 FBD

27 함수 세트 FBD

27.1 기본 함수 이진 검사 및 조합

메모리 함수

타이머 함수

타이머 특성의 경우:


S_PULSE SP 펄스
S_PEXT SE 확장 펄스
S_ODT SD 온 딜레이
S_ODTS SS 저장된 온 딜레이
S_OFFDT SF 오프 딜레이

448
27.2 디지털 함수

전송 함수 27.2 디지털 함수

비교 함수

카운터 함수

비교 기준
INT DINT REAL
~와 같음 ==I ==D ==R
~와 같지 않음 <>I <>D <>R
~보다 더 큼 >I >D >R
~보다 크거나 >=I >=D >=R
같음
~보다 더 작음 <I <D <R
~보다 작거나 <=I <=D <=R
같음

산술 함수

계산 기준
카운터 특성의 경우: INT DINT REAL
덧셈 ADD_I ADD_DI ADD_R
S_CUD 상향/하향 카운터 뺄셈 SUB_I SUB_DI SUB_R
곱셈 MUL_I MUL_DI MUL_R
S_CU 상향 카운터
나눗셈 DIV_I DIV_DI DIV_R
S_CD 하향 카운터 모듈로 - MOD_DI -

449
27 함수 세트 FBD

수학 연산 NEG_I INT 부정
NEG_DI DINT 부정
NEG_R REAL 부정
ABS REAL 절대값 생성

시프트 함수
SIN 사인
COS 코사인
TAN 탄젠트
ASIN 아크 사인
ACOS 아크 코사인
ATAN 아크 탄젠트
SQR 제곱값 찾기 SHL_W 워드만큼 왼쪽으로 이동
SQRT 제곱근값 찾기 SHL_DW 더블 워드만큼 왼쪽으로 이동
EXP 지수값 설정 SHR_W 워드만큼 오른쪽으로 이동
LN 로그값 찾기 SHR_DW 더블 워드만큼 오른쪽으로 이동
SHR_I 부호와 함께 워드 이동
SHR_DI 부호와 함께 더블 워드 이동
변환 함수
ROL_DW 왼쪽으로 회전
ROR_DW 오른쪽으로 회전

워드 로직

I_DI INT를 DINT로 변환


I_BCD INT를 BCD로 변환
DI_BCD DINT를 BCD로 변환
DI_R DINT를 REAL로 변환
BCD_I BCD를 INT로 변환
BCD_DI BCD를 DINT로 변환 WAND_W AND 워드
REAL을 DINT로 변환하며 다음으로 WOR_W OR 워드
반올림 WXOR_W Exclusive OR 워드
CEIL 다음의 높은 수로 WAND_DW AND 더블 워드
FLOOR 다음의 낮은 수로 WOR_DW OR 더블 워드
ROUND 다음의 정수로 WXOR_DW Exclusive OR 더블 워드
TRUNC 반올림 안 함
INV_I INT 1의 보수
INV_DI DINT 1의 보수

450
27.3 프로그램 흐름 제어

27.3 프로그램 흐름 제어 블록 함수

塶決瘶͑挚嵣求嵢͑
상태 비트 穮朞͑挚嵣͑笾犢
͡懺埪͑當͑冶刂

͡懺埪͑畲其喞͑
償汆͑冶刂
塶決瘶͑挚嵣求嵢͑
͡懺埪͑沗汆͑冶刂 柢枪癢͑穮朞͑
挚嵣͑笾犢
͡懺埪͑沗其喞͑
償汆͑冶刂

͡刂͑償滆͑
橐汆͑冶刂 穮朞͑挚嵣͑嬖垚͑
柢枪癢͑穮朞͑挚嵣汊
͡刂͑償汆͑冶刂 嵢珲͑汾枪瘺枪嵢͑
笾犢
怺箮͑冶刂
͙愶櫺夞滆͑橐汒͚

穮朞͑笾犢
欪憊稒嵢

洆沫夢͑欪憊稒嵢

決滊͑冶刂͑円斲
柢枪癢͑穮朞͑笾犢
決滊͑冶刂͑洆沫

점프 함수
砒岂惾瘶儆͑
滆洛夞滆͑橐汆͑
穮朞͑笾犢
砒岂惾瘶儆͑
滆洛夞滆͑橐汆͑
柢枪癢͑穮朞͑笾犢

浶兺͑挚嵣͑啣

塶決瘶͑挚嵣͑櫺匶
마스터 컨트롤 릴레이

451
▪ 인 쇄 : 2009년 6월 19일
▪ 발 행 : 2009년 6월 29일

▪ 편 찬 : Siemens AG
▪ 역 자 : (주)라티스 글로벌커뮤니케이션스

▪ 기 술 감 수 : Siemens 자동화사업본부 온현정

▪ 한글출판기획 : Siemens 자동화사업본부 마케팅

▪ 가 격 : Siemens 고객 증정용

▪ 웹 사 이 트 : http://www.siemens.co.kr/automation
Hans Berger
STEP7의 LAD와 FBD로 프로그래밍
래더 다이어그램(LAD)과 블록 함수 다이어그램(FBD)은 프로그래밍 소프트웨어 STEP 7
에 사용되는 그래픽 기반의 프로그래밍 언어입니다. 지금까지 4판이 발행된 이 책에서는
STEP 7 최신 버전의 새로운 기능에 대해 소개합니다. 이 책에서는 PROFINET을 이용한 애
플리케이션을 포함하여 SIMATIC S7-300 및 SIMATIC S7-400에 사용할 수 있는 요소와
애플리케이션에 대해 설명합니다. PROFINET IO, SFC 109 Protect 및 필드버스 시스템용
함수 블록과 같은 특수한 기능에 대해서도 설명합니다.
이 책은 모든 SIMATIC S7 컨트롤러 사용자를 대상으로 합니다. 처음 사용하는 사람은 프
로그래밍 가능 컨트롤러의 필드에 대해 먼저 공부하고, 고급 사용자는 SIMATIC S7 자동화
시스템의 특수한 용도에 관해 배울 수 있습니다.
SIMATIC은 기계, 제조 설비 및 산업 공정을 위한 제어 시스템을 구현할 수 있는 세계적인
자동화 시스템입니다. 이와 관련된 개방 루프 및 폐쇄 루프 제어 작업은 프로그래밍 소프
트웨어 STEP 7을 사용하여 다양한 프로그래밍 언어로 공식화되어 있습니다.

내용
PLC (프로그래머블 로직 컨트롤러) 시스템의 동작 원리 개요: SIMATIC S7 및 STEP 7 -
LAD 및 FBD 프로그래밍 언어 데이터 형식 이진 및 디지털 명령 프로그램 시퀀스 제어 사
용자 프로그램 실행

Siemens Industry Automation and Drive Technologies 고객증정용


Hans Berger

www.siemens.co.kr/automation

You might also like