Professional Documents
Culture Documents
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 년
ISBN 978-3-89578-297-8
4차 개정판, 2008년
서문
5
이 책의 구성
서문 기본 함수 디지털 함수
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 보완,
블록 함수 블록 라이브러리, 함수 개요
프로그램 흐름 제어 프로그램 처리 부록
18 블록 함수
22 재가동 특성 26 함수 세트 LAD
블록 호출,
블록 끝 콜드 리스타트, 웜 리스타트, 기본 함수
임시 및 정지 로컬 데이터, 로컬 핫 리스타트 디지털 함수
인스턴스 STOP, HOLD, 메모리 리셋 프로그램 흐름 제어
데이터 피연산자 액세스 모듈 파라미터화
데이터 블록 열기
23 오류 처리 27 함수 세트 FBD
19 블록 파라미터
동기 오류 기본 함수
형식 파라미터, 실제 파라미터 비동기 에러 디지털 함수
선언 및 할당, ‘파라미터 전달’ 시스템 진단 프로그램 흐름 제어
7
프로그래밍 예제 살펴보기
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 프
로그래밍 소프트웨어의 기본 사용
절차를 보여 줍니다.
다음 단계에서는 하드웨어를 구
성하고, 가능하다면 통신 연결도
설정합니다. 그런 다음 프로그램
을 생성하여 테스트합니다.
10
STEP 7을 이용한 자동화
11
목차
목차
12
목차
13
목차
14
목차
15
목차
16
목차
부록 . . . . . . . . . . . . . 425 색인 . . . . . . . . . . . . . .452
17
소개
소개
18
1 SIMATIC S7-300/400 프로그래머블 컨트롤러
19
1 SIMATIC 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 프로그래머블 컨트롤러
22
1.1 프로그래머블 컨트롤러의 구조
23
1 SIMATIC S7-300/400 프로그래머블 컨트롤러
24
1.1 프로그래머블 컨트롤러의 구조
25
1 SIMATIC S7-300/400 프로그래머블 컨트롤러
26
1.1 프로그래머블 컨트롤러의 구조
27
1 SIMATIC S7-300/400 프로그래머블 컨트롤러
28
1.2 분산 I/O
29
1 SIMATIC S7-300/400 프로그래머블 컨트롤러
30
1.2 분산 I/O
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 프로그래머블 컨트롤러
32
1.2 분산 I/O
그림 1.7 게이트웨이
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 파일은 다른 구성 도
라 데이터를 전송하는 슬레이브 구에서도 사용할 수 있습니다.
34
1.3 통신
35
1 SIMATIC S7-300/400 프로그래머블 컨트롤러
36
1.3 통신
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 통신
39
1 SIMATIC S7-300/400 프로그래머블 컨트롤러
40
1.3 통신
41
1 SIMATIC S7-300/400 프로그래머블 컨트롤러
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.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 주소 영역
45
1 SIMATIC S7-300/400 프로그래머블 컨트롤러
46
1.5 주소 영역
47
1 SIMATIC S7-300/400 프로그래머블 컨트롤러
정전 유지 비트 메모리
비트 메모리 일부는 비트 메모리의 비트가 정전
상태에서도 신호 상태를 유지하는 ‘정전 유지’ 로
지정할 수 있습니다. 정전 유지 기능은 항상 메모리
바이트 0에서 시작하고 지정한 위치에서 끝납니다.
정전 유지 기능은 CPU의 파라미터를 지정할 때 설
정합니다. 추가 정보는 22.2.4 “정전 유지” 을 참조
하십시오.
클록 메모리
그림 1.10 클록 메모리 바이트의 내용
컨트롤러의 많은 절차에는 주기적 신호가 필요합
니다. 주기적 신호는 타이머(클록 펄스 발생기), 워
48
2 STEP 7 프로그래밍 소프트웨어
49
2 STEP 7 프로그래밍 소프트웨어
50
2.1 STEP 7 기본 패키지
51
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 프로그래밍 소프트웨어
됩니다. SIMATIC Manager에서 프로젝트나 라이브 택하면 정보가 필요한 주제를 선택할 수 있습니다.
54
2.2 프로젝트 편집
55
2 STEP 7 프로그래밍 소프트웨어
56
2.2 프로젝트 편집
적절하게 설계된 CPU에서는 프로젝트를 CPU의 V5.0을 이용해 생성하고 편집할 수 있습니다(그
57
2 STEP 7 프로그래밍 소프트웨어
58
2.3 스테이션 구성
체의 컴파일된 데이터가 오프라인 컨테이너 블록에 를 시스템 데이터에 저장합니다. 시스템 구성이 같
저장됩니다. 컴파일을 완료한 후 구성 데이터는 으면 검사 합계도 동일하므로 온라인과 오프라인 구
PLC → 다운로드를 선택해 CPU로 전송할 수 있습니 성을 쉽게 비교할 수 있습니다.
다. 온라인 컨테이너 블록의 시스템 데이터 개체는 검사 합계는 시스템 데이터 개체의 속성입니다.
CPU의 현재 구성 데이터를 나타냅니다. PLC → 업로 검사 합계를 판독하려면 S7 프로그램에서 블록 컨
드를 선택하면 이 데이터를 하드 디스크로 ‘반환’ 테이너를 열고, 시스템 데이터 개체를 선택한 다음,
할 수 있습니다. 편집 → 개체 열기를 선택해 시스템 데이터 개체를 엽
하드웨어 구성 데이터는 스테이션 → 내보내기를 니다.
선택해 내보냅니다. STEP 7은 모듈의 구성 데이터 또한 사용자 프로그램도 적절한 검사 합계를 포함
와 파라미터 지정 데이터를 포함하는 ASCII 형식의 합니다. 사용자 프로그램의 검사 합계는 블록의 속
파일을 생성합니다. 사용자는 ‘판독 가능한’ 영문 성에서 시스템 데이터의 검사 합계와 함께 확인할
자 데이터를 포함한 텍스트 형식이나 16진수 데이 수 있습니다. 블록 컨테이너를 선택하고 ‘검사 합
터를 포함한 압축 형식 중에서 선택할 수 있습니다. 계’ 탭에서 편집 → 개체 속성을 선택합니다.
또한 이런 형식으로 구조화된 ASCII 파일을 들여올
수 있습니다. 스테이션 창
열기를 실행하면 하드웨어 구성 도구는 스테이션
검사 합계 창과 하드웨어 카탈로그를 표시합니다(그림 2.4 참
하드웨어 구성 도구는 정확하게 컴파일된 스테이 조). 스테이션 창은 확대 또는 최대화할 수 있어 편
션을 통해 검사 합계를 생성하고 생성한 검사 합계 집이 용이합니다. 여러 마운팅 랙을 사용하는 경우,
59
2 STEP 7 프로그래밍 소프트웨어
60
2.3 스테이션 구성
함수와 통신 모듈은 입력과 출력에서 시작 주소가 이 대화상자에 표시됩니다. 이 방법을 이용해 CPU
61
2 STEP 7 프로그래밍 소프트웨어
62
2.4 네트워크 구성
63
2 STEP 7 프로그래밍 소프트웨어
그림 2.5 네트워크 구성 예제
64
2.4 네트워크 구성
65
2 STEP 7 프로그래밍 소프트웨어
CPU 컨테이너에서 연결 개체는 커넥션 테이블을 S7-300 CPU는 S7 연결에서 ‘수동’ 파트너로만
의미합니다. 프로젝트 컨테이너에서 서브넷의 더블 사용할 수 있습니다.7
클릭과 동일한 방식으로 연결을 더블 클릭해 네트워
‘새 연결’ 창의 ‘스테이션’ 및 ‘모듈’ 대화
크 구성 도구를 시작합니다.
상자에서 통신 파트너를 선택합니다
연결을 구성하기 위해 네트워크 구성 도구에서 (그림 2.6 참조). 스테이션과 모듈은 이미 존재해야
S7-400 CPU를 선택합니다. 네트워크 창의 아래쪽 합니다. 또한 ‘새 연결’ 창에서 연결 유형을 선택
영역에는 커넥션 테이블이 표시됩니다 합니다.
(표 2.1 참조). 커넥션 테이블이 표시되지 않으면,
마우스 포인터를 창의 아래 가장자리에 놓고 모양이 연결 속성을 추가로 설정하려면 ‘삽입 전: 속성
변하면 창의 아래쪽 가장자리를 위로 드래그합니 표시’ 체크박스를 클릭합니다.
다. 삽입 → 새 연결을 선택하거나 비어 있는 라인을 커넥션 테이블은 구성된 연결의 모든 데이터를 포
더블 클릭하여 새 통신 연결을 입력합니다. 함합니다. 더 명확하게 표시하려면 보기 → 열 너비 최
‘능동’ CPU마다 연결을 생성합니다. S7-300 적화 및 보기 → 디스플레이 열을 선택하고 원하는 정
CPU에서는 커넥션 테이블을 생성할 수 없습니다. 보를 선택합니다.
66
2.4 네트워크 구성
그림 2.6 통신 연결 구성
67
2 STEP 7 프로그래밍 소프트웨어
68
2.4 네트워크 구성
를 위해서 서브넷 전환이 가능한 스테이션에는 전송 PLC → 현재 프로젝트로 다운로드 → ...를 선택해 연
된 메시지 프레임을 전달하는 라우팅 기능이 있어야 결과 구성 데이터를 액세스 가능한 모듈에 전송합니
합니다. 다. 선택한 개체와 메뉴 명령에 따라 다음의 연결을
네트워크 구성을 컴파일하면 필요한 모든 정보를 선택할 수 있습니다.
포함한 라우팅 테이블이 서브넷 전환 가능 스테이션 → 선택한 스테이션 사이
에 대해 자동으로 생성됩니다. 액세스 가능한 모든
→ 선택한 스테이션과 파트너 스테이션 사이
통신 파트너는 S7 프로젝트 내부의 설비 네트워크
에 구성되며 서브넷과 서브넷 전환을 통해 도달할 → 서브넷의 스테이션 사이
69
2 STEP 7 프로그래밍 소프트웨어
70
2.5 S7 프로그램 생성
동일한 유형의 여러 크로스 프로젝트 서브넷은 하 네트워크 → 크로스 프로젝트 일관성 검사를 선택하
나의 다중 프로젝트에서 생성할 수 있습니다. 크로 면 다중 프로젝트에서 네트워크 구성의 오류 여부를
스 프로젝트 서브넷의 속성은 첫 번째로 추가된 서 테스트할 수 있습니다.
브넷이나 ‘선택’ 버튼으로 선택한 서브넷에 의해
결정됩니다. 설정을 적용하려면 ‘확인’ 또는 ‘적
용’ 을 클릭합니다. 크로스 프로젝트 서브넷의 일부
2.5 S7 프로그램 생성
인 서브넷은 SIMATIC Manager에서 다른 심볼로 구
별됩니다.
2.5.1 소개
사용자 프로그램은 S7 프로그램 개체 아래에 생
연결 조합
성됩니다. 이 개체는 CPU의 프로젝트 계층에 할당
단일 프로젝트에서 다른 프로젝트에 속한 파트너 하거나 CPU와 별도로 생성할 수 있습니다. S7 프로
와 연결은 다중 프로젝트에 조합할 수 있습니다. 그램은 심볼 개체 및 소스 와 블록 컨테이너를 포함
‘새 연결 삽입’ 창에서 단일 프로젝트의 연결을 구 합니다(그림 2.8 참조).
성할 때 ‘알 수 없는 프로젝트’ 파트너를 선택하
면, ‘속성 - S7 연결’ 창에서 연결 이름(참조)을
입력할 수 있습니다. 연결 이름이 동일한 서로 다른
프로젝트에서 연결은 자동으로 조합될 수 있습니다.
택하면 구성된 모든 연결을 포함한 대화상자가 나타 루어집니다. 동시에 블록은 저장된 후 블록 컨테이
너에 보관되는 방식으로 컴파일됩니다. 증분 프로
납니다. ‘연결 파트너 없이 연결’ 및 ‘가능한 연
그래밍 시 블록은 작업 도중이라도 CPU에서 온라인
결 파트너’ 창 각각에서 하나의 연결을 선택하고
상태로 편집할 수도 있습니다. 증분 프로그래밍은
‘할당’ 을 클릭합니다. 할당된 연결은 하단의 ‘할
모든 기본 언어에서 가능합니다.
당된 연결’ 창에 나열됩니다. 그 다음에 ‘병합’
을 클릭해 연결을 조합합니다. 연결에는 현재 열려 소스 기반 프로그램을 생성하는 경우에는 하나 이
있는 프로젝트의 로컬 모듈 속성이 할당됩니다. 조 상의 프로그램 소스를 작성하여 소스 컨테이너에 저
합할 때는 연결 속성을 수정할 수 있습니다. 장할 수 있습니다. 프로그램 소스는 하나 이상의 블
록이나 전체 프로그램용 프로그램 구문을 포함할 수
있는 ASCII 텍스트 파일입니다. 소스를 컴파일하고
크로스 프로젝트 연결의 구성
블록 컨테이너의 컴파일된 블록을 가져옵니다. 소
서브넷을 조합한 후에는 크로스 프로젝트 연결을 스 기반 프로그램 생성은 STL 및 SCL에서 사용합니
구성할 수 있습니다. 구성 절차는 연결 파트너에서 다. LAD나 FBD에서는 소스 기반 프로그래밍을 사
프로젝트를 지정한다는 점을 제외하고 프로젝트 내 용할 수 없지만, LAD나 FBD로 생성한 프로그램을
부 연결과 동일합니다. 소스 파일로 저장할 수는 있습니다.
71
2 STEP 7 프로그래밍 소프트웨어
72
2.5 S7 프로그램 생성
그림 2.9 심볼 테이블의 예
73
2 STEP 7 프로그래밍 소프트웨어
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 편집기 창의 예
76
2.5 S7 프로그램 생성
77
2 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 프로그램 생성
79
2 STEP 7 프로그래밍 소프트웨어
80
2.5 S7 프로그램 생성
81
2 STEP 7 프로그래밍 소프트웨어
82
2.6 온라인 모드
83
2 STEP 7 프로그래밍 소프트웨어
SFC 52 WR_USMSG, SFC 18 ALARM_S, SFC 이션에서 PLC → 다운로드를 선택하면 애플리케이션
ALARM_DQ를 이용해 비동기 시스템 오류 및 프 참고: 압축된 아카이브 파일을 로드하려면 PLC →
로그램에 생성된 사용자 정의 메시지 보고 메모리 카드에 저장을 선택합니다(2.2.2 “관리, 재조
직, 아카이브 저장” 참조). 아카이브 파일의 프로젝
Z PLC → 값 강제 적용 표시,
트는 프로그래밍 기기로 또는 CPU에서 바로 편집할
PLC → 변수 모니터링/수정
수 없습니다.
2.7.3 “변수 모니터링 및 수정” 및 2.7.4 “변
수 강제 출력” 참조)
2.6.5 블록 처리
84
2.6 온라인 모드
85
2 STEP 7 프로그래밍 소프트웨어
Initial value
Initial value
86
2.7 프로그램 테스트
BLKMOV 또는 해당 CPU에 포함된 SFC 83 READ_ Jump 연산을 이용해 디버깅할 블록이나 프로그램
DBL에서만 판독할 수 있습니다. 영역을 선택할 수 있습니다.
87
2 STEP 7 프로그래밍 소프트웨어
그림 2.14 변수 테이블의 예
88
2.7 프로그램 테스트
89
2 STEP 7 프로그래밍 소프트웨어
90
2.7 프로그램 테스트
91
2 STEP 7 프로그래밍 소프트웨어
92
2.7 프로그램 테스트
93
2 STEP 7 프로그래밍 소프트웨어
94
3 SIMATIC S7 프로그램
3 SIMATIC S7 프로그램
95
3 SIMATIC S7 프로그램
96
3.1 프로그램 처리
97
3 SIMATIC S7 프로그램
표 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 블록
99
3 SIMATIC S7 프로그램
Z 사용자 블록
사용자 프로그램 및 사용자 데이터를 포함하는
함수(FC)
블록 함수는 자주 반복되거나 복잡한 자동화 기능을 프
시스템 프로그램 및 시스템 데이터를 포함하는 정이 가능하며 값(함수 값)을 호출 블록에 반환합니
데이터 블록(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 블록
101
3 SIMATIC S7 프로그램
그림 3.2 블록의 구조
102
3.2 블록
그림 3.3 블록의 구조
또한 이 탭은 블록 생성 시 설정한 블록의 생성 언
‘일반 - 파트 1’ 탭
어 및 블록과 프로젝트의 메모리 위치를 보여 줍니
이름 아래에 있는 탭은 블록 유형과 번호가 있는 다.
블록의 절대 주소뿐 아니라 심볼 테이블의 심볼 이
름과 주석을 포함합니다. 프로그램 편집기는 블록의 생성시간과 마지막 수
정 시간을 타임스탬프로 저장합니다. 두 가지 타임
함수 블록의 경우, 이름 옆의 표시는 블록이 멀티
스탬프는 프로그램 코드와 인터페이스의 블록 파라
인스턴스 기능을 갖고 있는지 여부를 나타냅니다.
미터 및 정적 로컬 데이터입니다. 인터페이스의 수
일반 용도인 멀티 인스턴스 기능을 활성화시키면,
정 일자는 호출 블록에서 프로그램 코드의 수정 일
블록을 로컬 인스턴스로 호출하고 블록에 포함된 멀
자와 같거나 빨라야 한다는 점에 유의하십시오. 그
티 인스턴스 기능의 함수 블록도 로컬 인스턴스로
렇지 않으면 호출 블록을 출력하는 동안 프로그램
호출할 수 있습니다. 함수 블록을 생성할 때는 멀티
편집기에 ‘타임스탬프 충돌’ 에러 메시지가 나타
인스턴스 기능 의 선택을 취소할 수 있습니다. 소스
납니다.
기반 프로그램 입력에서 선택 취소 키워드는
CODE_VERSION1입니다. ‘멀티 인스턴스 기능이 표시되는 주석은 블록 제목과 블록을 프로그래밍
없는’ 함수 블록의 이점은 간접 주소를 지정하는 동 할 때 입력한 블록 주석으로 구성됩니다.
103
3 SIMATIC S7 프로그램
104
3.2 블록
105
3 SIMATIC S7 프로그램
106
3.3 코드 블록 프로그래밍
107
3 SIMATIC S7 프로그램
108
3.3 코드 블록 프로그래밍
표 3.3 선언 영역에서 변수 유형
변수 유형 선언 가능한 블록 유형
입력 파라미터 IN - FC FB
출력 파라미터 OUT - FC FB
입력-출력 파라미터 IN_OUT - FC FB
정적 로컬 데이터 STAT - - FB
임시 로컬 데이터 TEMP OB FC FB
함수 값 RETURN - FC -
109
3 SIMATIC S7 프로그램
110
3.3 코드 블록 프로그래밍
111
3 SIMATIC S7 프로그램
112
3.3 코드 블록 프로그래밍
113
3 SIMATIC S7 프로그램
114
3.4 데이터 블록(DB) 프로그래밍
115
3 SIMATIC S7 프로그램
유형의 데이터 블록(DB)은 다음과 같습니다. 각각의 보기는 절대 데이터 주소를 포함한 테이블
을 이름과 데이터 형식, 초기값 및 주석의 순서로 보
Z ‘데이터 블록(DB)’ 또는 ‘공유 DB’
여 줍니다(그림 3.11 참조). 데이터 보기는 실제 값
Z 글로벌 데이터 블록(DB)으로 생성되며 데이터
이 표시된 추가 열을 포함합니다.
블록(DB)의 프로그래밍 시 데이터 주소를 선언
데이터 블록(DB)을 오프라인 데이터 관리에서 열
합니다.
면 프로그래밍 기기에서 데이터를 편집할 수 있는
Z ‘사용자 정의 데이터 형식을 참조하는 데이터 오프라인 창이 나타납니다. CPU의 사용자 메모리
블록’ 또는 ‘DB 유형’ 에 있는 데이터 블록(DB)을 열면, 프로그램 편집기
Z 사용자 데이터 형식의 데이터 블록(DB)으로 생 는 CPU에서 데이터 값을 편집할 수 있는 온라인 창
성되며 해당 사용자 데이터 형식 UDT의 프로그 을 표시합니다.
래밍 시 선언한 데이터 구조를 사용합니다.
116
3.4 데이터 블록(DB) 프로그래밍
117
3 SIMATIC S7 프로그램
이름과 같이 데이터 주소와 관련된 완전한 정보는 데이터 형식 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 변수, 상수 및 데이터 형식
아날로그 신호
아날로그 신호는 16비트의 정보를 포함합니다.
아날로그 신호는 컨트롤러에서 워드(2바이트)로 맵
을 표현하는 ‘채널’ 에 해당합니다(다음 페이지 참
그림 3.13 변수의 구조 조). 저항온도계의 전압과 같은 아날로그 입력 신호
는 아날로그 입력 모듈로 전송되어 디지털화를 거친
다음 컨트롤러에서 16개의 정보 비트로 이용할 수
INT 값으로 구성된 배열의 요소는 누산기에 로드하
있습니다. 반대로 16비트의 정보는 정보를 아날로
고 처리할 수 있습니다).
그 값(전류)으로 변환하는 아날로그 출력 모듈을 통
상수는 변수를 고정 값으로 사전 설정하는 데 사 해 표시기를 제어할 수 있습니다.
용합니다. 상수에는 데이터 형식에 따라 특정 접두
또한 신호의 정보 너비는 신호를 저장하고 처리하
어가 붙습니다.
는 변수의 정보 너비와 일치합니다. 정보 너비와 해
석(예: 위치별 무게)은 함께 변수의 데이터 형식을
3.5.2 변수 주소 지정 구성합니다. 이진 신호는 데이터 형식 BOOL의 변수
에 저장되고, 아날로그 신호는 데이터 형식 INT의 변
변수 주소를 지정할 때는 절대와 심볼 주소 지정
수에 저장됩니다.
을 선택할 수 있습니다.
변수 주소 지정에서 유일한 결정 인자는 정보 너
Z 절대 주소 지정은 각각의 주소 영역에서 0부터
비입니다. STEP 7에서 절대 주소로 지정할 수 있는
시작하는 숫자 주소를 사용합니다.
네 가지 너비는 다음과 같습니다.
Z 심볼 주소 지정은 영숫자 이름을 사용하며, 영숫
Z 1비트 데이터 형식 BOOL
자 이름은 글로벌 주소용 심볼 테이블이나 블록
-로컬 주소용 선언 영역에서 사용자가 직접 정 Z 8비트 데이터 형식 BYTE 또는 8비트의 다른
의합니다. 데이터 형식
119
3 SIMATIC S7 프로그램
120
3.5 변수, 상수 및 데이터 형식
121
3 SIMATIC S7 프로그램
122
3.5 변수, 상수 및 데이터 형식
123
3 SIMATIC S7 프로그램
124
3.5 변수, 상수 및 데이터 형식
125
3 SIMATIC S7 프로그램
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 프로그램
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
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.5.7 사용자 데이터 형식
개별 구조 구성요소는 ‘일반’ LAD 또는 FBD 함 사용자 데이터 형식(UDT)은 글로벌 유효성의 구
수로 처리할 수 있습니다. 조(모든 데이터 형식의 구성요소 조합)를 의미합니
130
3.5 변수, 상수 및 데이터 형식
131
기본 함수
기본 함수
6 이동 연산
이 절에서는 입력, 출력 및 메모리 비트에 해당하
MOVE 연산 박스, 데이터 이동을 위한 시스템
는 피연산자 영역을 위한 함수에 대해 설명합니다.
함수
입력과 출력은 프로세스 또는 플랜트로 연결되는 링
크에 해당합니다. 메모리 비트는 이진 상태를 저장 7 타이머
132
4 이진 논리 연산
4 이진 논리 연산
133
4 이진 논리 연산
그림 4.1 NO 접점 및 NC 접점
134
4.1 직렬 및 병렬 회로(LAD)
그림 4.2 직렬 및 병렬 회로
135
4 이진 논리 연산
그림 4.3 직렬 및 병렬 회로 조합
136
4.2 이진 논리 연산(FBD)
그림 4.4 NOT 접점 예
137
4 이진 논리 연산
138
4.2 이진 논리 연산(FBD)
139
4 이진 논리 연산
그림 4.6 이진 함수의 예
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 이진 논리 연산 조합의 예
네트워크 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 이진 논리 연산
142
4.3 센서 유형 고려
그림 4.9 센서 유형 고려(LAD)
그림 4.10 센서 유형 고려(FBD)
143
5 메모리 기능
5 메모리 기능
144
5.1 LAD 코일
145
5 메모리 기능
146
5.1 LAD 코일
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 메모리 기능
148
5.2 FBD 연산 박스
Z 셋 및 리셋 연산 박스. 개별 프로그래밍된 메모
리 함수로 사용.
그림 5.3은 할당 연산 박스의 다양한 사용 예를
Z RS 연산 박스와 SR 연산 박스. 완전한 메모리 함 보여 줍니다.
수로 사용.
네트워크 1: 피연산자 Output1은 피연산자
Z 미드라인 출력 연산 박스. 중간 버퍼로 사용. Input1의 신호 상태를 그대로 가져옵니다.
149
5 메모리 기능
150
5.2 FBD 연산 박스
스는 쌍으로 그룹화하고 각각의 경우에 코일 쌍을 상태가 ‘0’ 인 경우 메모리 함수에 영향을 미치지
않습니다. 두 입력의 신호 상태가 동시에 ‘1’ 인
한 번만 사용하는 것이 좋습니다. 또한 할당 연산 박
스로 피연산자를 제어하는 것은 삼가야 합니다. 경우 2개의 메모리 함수가 다르게 응답합니다. SR
연산(RESET)은 재설정되고 RS 메모리 기능은 설정
셋 또는 리셋 연산 박스와 함께 사용되는 피연산 됩니다.
자는 보통 시작 시점에서 재설정됩니다(콜드 리스
타트 또는 웜 리스타트). 특수하게 신호 상태가 유지 메모리 연산 박스의 함수는 마스터 제어 릴레이
되는 경우도 있습니다. 재설정 또는 유지 여부는 시 (MCR)에 따라 달라집니다. MCR이 활성화된 경우
작 모드(예: 인스턴스 핫 리스타트), 사용된 피연산 메모리 연산 박스 위의 이진 피연산자는 더 이상 영
자(예: 정적 로컬 데이터) 및 CPU 설정(예: 정전 유 향을 받지 않습니다.
지 특성)에 따라 달라집니다. 메모리 기능과 함께 사용되는 피연산자는 보통 시
작 시점에서 재설정됩니다(콜드 리스타트 또는 웜
리스타트). 특수하게 메모리 연산 박스의 신호 상태
5.2.3 메모리 연산 박스
가 유지되는 경우도 있습니다. 재설정 또는 유지 여
셋 연산 박스와 리셋 연산 박스의 함수는 메모리
부는 시작 모드(예: 인스턴스 핫 리스타트), 사용된
함수의 연산 박스 안에 요약되어 있습니다. 공통 이
피연산자(예: 정적 로컬 데이터) 및 CPU 설정(예: 정
진 피연산자는 연산 박스 위에 위치합니다. 아래 예
전 유지 특성)에 따라 달라집니다.
에서 연산 박스의 입력 S는 셋 연산 박스, 입력 R은
리셋 연산 박스에 해당합니다. 메모리 함수에 할당
된 이진 피연산자의 신호 상태는 메모리 함수의 출 SR 연산(RESET)
력 Q에 있습니다. SR 메모리 연산 박스에서는 리셋 입력이 우선 순
위를 갖습니다. 재설정된 우선 순위란 셋 입력과 리
셋 입력에서 RLO가 ‘동시에’ ‘1’ 인 경우 메모
리 기능이 재설정되거나 재설정 상태를 유지한다는
의미입니다. 따라서 리셋 입력이 셋 입력보다 우선
합니다(그림 5.4, 네트워크 8 참조).
151
5 메모리 기능
메모리 피연산자가 출력인 경우 프로세스 이미지 재설정을 우선하는 메모리 기능이 ‘정상’ 적인
출력 테이블 상에서만 이처럼 간략한 설정이 이루어 형식의 메모리 기능입니다. 리셋 상태(신호 상태
지고 관련 출력 모듈 상의 (외부) 출력은 영향을 받 ‘0’ )가 보통 더 안전하고 위험이 적은 상태이기 때
지 않습니다. CPU는 프로그램 사이클이 끝날 때까 문입니다.
152
5.3 미드라인 출력
까지 프로세스 이미지 출력 테이블을 출력 모듈로 Z 메모리 비트는 CPU별로 지정된 수만큼 글로벌
전송하지 않습니다. 비트로 사용할 수 있습니다. 하지만 프로그램의
명확성을 위해 가능하면 메모리 비트를 다용도
설정된 입력이 우선하는 것은 예외적인 경우입니
로, 즉 동일한 메모리 비트를 여러 태스크에 사
다. 예를 들어, 리셋 입력에서 승인이 있었음에도 불
용하지 않도록 합니다.
구하고 셋 입력에 여전히 결함 메시지가 존재해 메
모리 기능을 계속 설정하는 경우 설정된 입력을 우 Z 글로벌 데이터 블록 내의 데이터 비트는 프로그
램 전체에 걸쳐 사용할 수 있습니다. 하지만 이
선해 결함 메시지 버퍼를 구현합니다.
데이터 비트를 사용하려면 관련 데이터 블록
(DB)이 먼저 개방되어 있어야 합니다. 대량 주소
논리 연산에 메모리 기능 사용 지정을 통해 개방이 암시된 경우라도 마찬가지
입니다.
메모리 연산 박스를 논리 연산 내에 위치시킬 수
도 있습니다. 이진 함수는 입력과 출력 모두에 프로 미드라인 출력의 함수는 마스터 제어 릴레이에 따
그래밍이 가능합니다(그림 5.4, 네트워크 10 및 11 라 달라집니다. MCR이 활성화된 경우 미드라인 출
참조). 메모리 연산 박스의 두 번째 입력을 연결되지 력에 인접한 이진 피연산자에 신호 상태 ‘0’ 이 할
않은 상태로 남겨둘 수도 있습니다. 1개의 논리 연 당됩니다. 미드라인 출력에 이어 RLO도 ‘0’ 이 됩
산 안에 여러 개의 메모리 연산 박스를 서로 연결시 니다. 따라서 더 이상 ‘전력 흐름’ 이 없습니다.
킬 수도 있습니다. 메모리 연산 박스는 서로 앞뒤로 주의: STEP 5에서 사용하는 ‘임시 저장 메모리’
배열하거나 T-분기 다음에 서로 아래 위로 배열할 를 모든 블록에서 사용 가능한 임시 로컬 데이터로
수 있습니다. 대체할 수 있습니다.
153
5 메모리 기능
154
5.4 엣지신호 판단
그림 5.5 미드라인 출력
155
5 메모리 기능
156
5.4 엣지신호 판단
157
5 메모리 기능
158
5.5 이진 계수기
그림 5.9 엣지신호 판단
159
5 메모리 기능
160
5.6 컨베이어 제어 시스템의 예
161
5 메모리 기능
162
5.6 컨베이어 제어 시스템의 예
163
5 메모리 기능
164
6 이동 연산
6 이동 연산
Z SFC 83 READ_DBL
표시
데이터 영역을 로드 메모리에서 읽어 옵니다.
MOVE 연산 박스는 활성화 입력 EN과 활성화 출
Z SFC 84 WRIT_DBL
력 ENO와 더불어 1개의 입력 IN과 1개의 출력 OUT
데이터 영역을 로드 메모리에 씁니다.
을 갖고 있습니다. 입력 IN과 출력 OUT에 BOOL을
SFC는 시스템 함수 블록 프로그램의 표준 라이브 제외한 모든 기본 데이터 형식의 디지털 피연산자와
러리인 표준 라이브러리에서 가져온 시스템 함수입 디지털 변수를 적용할 수 있습니다. 입력 IN과 출력
니다. OUT의 변수는 서로 다른 데이터 형식을 가질 수 있
습니다.
165
6 이동 연산
함수
MOVE 연산 박스는 입력 IN의 피연산자 정보를 출
다양한 피연산자 너비 력 OUT의 피연산자로 이동합니다. MOVE 연산 박
MOVE 연산 박스의 입력 및 출력에 있는 피연산 스는 활성화 입력이 ‘1’ 또는 사용 중이 아닌 경
자 너비는 바이트, 워드, 더블 워드 등으로 다양할 우와 마스터 제어 릴레이(MCR)가 작동 중이 아닌
수 있습니다. 입력의 피연산자가 출력의 피연산자 경우에만 정보를 이동합니다.
보다 ‘더 작은’ 경우 입력의 피연산자를 오른쪽 EN = ‘1’ 이고 MCR이 작동된 경우 출력 OUT
정렬시켜 출력의 피연산자 쪽으로 이동시킨 후 왼쪽 에 0이 씌어집니다. 활성화 입력이 ‘0’ 인 경우 출
을 0으로 채웁니다. 입력의 피연산자가 출력의 피연 력 OUT의 피연산자는 영향을 받지 않습니다.
산자보다 ‘더 큰’ 경우 입력의 피연산자의 오른쪽 MOVE는 오류를 보고하지 않습니다.
166
6.2 MOVE 연산 박스
167
6 이동 연산
168
6.3 데이터 전송용 시스템 함수
Z SFC 83 READ_DBL
로드 메모리에서 읽어옵니다.
6.2.3 상수 이동
Z SFC 84 WRIT_DBL
MOVE 연산 박스의 입력 IN에 한해 상수 값을 지
로드 메모리에 씁니다.
정할 수 있습니다.
169
6 이동 연산
170
6.3 데이터 전송용 시스템 함수
171
6 이동 연산
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 “블록 처리” 의 ‘데이터 블록 오프라 쓰기)를 하면 로드 메모리의 서비스 수명이 감소합
인/온라인’ 참조). 니다.
173
6 이동 연산
稊嵢勾岞愓͑沫獞庂͑斲殯穞櫲͑旣昷夢͑沂愞͑塶決瘶͑
挚嵣汆͑ʹΆ汞͑斲殯沖͑彚微庲櫖͑奖͑憎͑浺沲穯城埪͑͟
溏͑͝嵢姢͑彚微庲櫖͑欮洊穞冒͑浺沲穞彶͑͝熞庲歆͑分凊͑
沎垚͑塶決瘶垚͑稊嵢勾岮͑沗壟櫖͑斲殯夞垚͑沗櫋͑
彚微庲櫖͑浺沲穯城埪͟
稊嵢勾岞愓͑沫獞櫖昢͑廇畲͑橎͑央͑暓昷汊͑斲殯穞櫲͑
稊嵢勾岞愓͑沫獞櫖昢͑廇畲͑橎͑央 ͑暓昷汊͑斲殯穞櫲͑
旣昷夢͑塶決瘶͑挚嵣汆͑ʹΆ汞͑嵢姢͑彚微庲櫖廒͑
浺沲穯城埪͑͟沗櫋͑彚微庲͑击儊汊͑焮滆穞滆͑橐枻城埪͟
΄ͷʹ͑ͩͣ͑ʹͶͲΐ͵ͳͽ汊͑斲殯穞櫲͑旣昷夢͑塶決瘶͑挚嵣汆͑
嵢姢͑彚微庲櫖͑浺沲穞彶͑͝廇畲͑橎͑央
嵢姢͑彚微庲櫖͑浺沲穞彶͑͝ 廇畲͑橎͑央͑暓昷決͑
͑暓昷決͑
筢昷筚夞滆͑橐汆͑凃殶櫖垚͑沗櫋͑彚微庲櫖壊͑
浺沲穯城埪͑͟沗櫋͑彚微庲櫖͑浺沲穞垚͑塶決瘶͑挚嵣汆͑
旎͑塶決瘶͑挚嵣汞͑旣昷͑匶渆決͑夞垚͑癢稒廅沋城埪͟
΄ͷʹ͑ͣͣ͑ʹͶͲ΅ΐ͵ͳ͑嬖垚͑΄ͷʹ͑ͩͦ͑ʹͶͲΐ͵ͳ庂͑
斲殯穞櫲͑旣昷夢͑塶決瘶͑挚嵣汆͑ʹΆ汞͑沗櫋͑
彚微庲櫖廒͑浺沲穯城埪͟
174
7 타이머
7 타이머
175
7 타이머
176
7.1 타이머 프로그래밍
177
7 타이머
그림 7.4 타이머의 동작 특성
그림 7.5 지속 시간의 비트 설명
178
7.1 타이머 프로그래밍
179
7 타이머
펄스 타이머 시작
180
7.3 확장 펄스 타이머
181
7 타이머
온-딜레이 타이머 시작
온-딜레이 타이머 재설정
그림 7.8의 다이어그램은 타이머가 시작된 후와
타이머가 재설정되었을 때 타이머의 동작 특성을 보 온-딜레이 타이머의 재설정은 정적 효과를 가지
여 줍니다. 개별 구성요소를 프로그래밍할 때 며 타이머 시작보다 우선합니다(그림 7.8 참조).
7.1.6 “타이머 연산 순서” 의 순서(시작, 재설정, 검
df 리셋 입력에서 신호 상태가 ‘1’ 이면 타이
사 순서)를 따른 경우 타이머가 이 다이어그램처럼
머가 실행 중인지 여부에 관계 없이 해당 타이
실행됩니다.
머를 재설정합니다. 신호 상태 ‘1’ (타이머
a 타이머의 스타트 입력의 신호 상태가 ‘0’ 에 상태)에 대한 검사는 검사 결과 ‘0’ 을 반환
182
7.5 정전 유지 온-딜레이 타이머
183
7 타이머
오프-딜레이 타이머 시작
184
7.7 IEC 타이머
185
7 타이머
186
8 카운터
8 카운터
이름 데이터 형식 설명
8.1 카운터 프로그래밍 CU BOOL 상향 카운트 입력
CD BOOL 하향 카운트 입력
카운터에서 다음과 같은 작업을 수행할 수 있습니 S BOOL 셋 입력
다. PV WORD 사전 설정 값
R BOOL 리셋 입력
Z 카운터 설정. 카운트 값을 지정.
CV WORD 이진 형식의 현재 값
Z 카운트업 CV_BCD WORD BCD 형식의 현재 값
Z 카운트다운 RP BOOL 카운터 상태
Z (이진) 카운터 상태 검사
하향 카운터’ 라는 뜻입니다. 첫 번째 입력(예의 경
Z 이진 (디지털) 카운트 검사
우 CU)이 필수이기 때문에 이 입력에 대한 할당 역
Z 이진화 십진 (디지털) 카운트 검사 시 필수입니다. 다른 모든 입력과 출력에 대한 할당
은 옵션입니다.
카운터를 연산 박스로 표시
카운터 연산 박스에는 모든 카운팅 연산이 함수 카운터 연산 박스에는 상향/하향 카운터(S_
입력과 함수 출력 형식으로 일관되게 표시되어 있습 CUD), 업 전용 카운터(S_CU), 다운 전용 카운터(S_
니다(그림 8.2 참조). 연산 박스 안의 헤더는 카운터 CD), 이렇게 세 가지 버전이 있습니다. 세 버전의 기
유형을 나타냅니다. 예를 들어, S_CUD는 ‘상향/ 능 상의 차이점은 아래에 설명되어 있습니다 세 버
187
8 카운터
188
8.1 카운터 프로그래밍
189
8 카운터
카운터 재설정(FBD)
8.2 카운터 설정 및 재설정
리셋 입력에 ‘1’ 이 존재하면 카운터가 재설정
카운터 설정 됩니다. 그런 다음 카운터 상태를 직접 스캔하면
‘0’ 이 반환되고 부정 스캔하면 ‘1’ 이 반환됩니
셋 입력 S 이전이나 셋 코일 또는 셋 연산 박스 이
다. 카운터를 재설정하면 카운트가 ‘0’ 으로 설정
전에 RLO가 ‘0’ 에서 ‘1’ 로 변경되면 카운터
됩니다. 카운터 연산 박스의 입력 R은 연결할 필요
가 설정됩니다. 카운터를 설정하려면 반드시 포지
가 없습니다.
티브 엣지가 존재해야 합니다.
190
8.4 카운터 검사
191
8 카운터
192
8.6 카운터 요소 예
CV의 값이 PV의 값보다 크거나 같으면 출력 QU 활성 상태에서 광센서에 포지티브 엣지가 표시되
가 ‘1’ 이 됩니다. 면 타이머가 시작됩니다. 이 타이머는 Duration1(
‘Dura1’ )의 시간 값을 가지는 정전 유지 펄스 타
CV의 값이 0보다 작거나 같으면 출력 QD가 ‘1’
이머입니다. 다음 사이클에서 타이머의 스타트 입
이 됩니다.
력이 ‘0’ 으로 처리되면 타이머가 계속 실행됩니
SFB 2 CTUD는 시작 모드와 실행 모드에서 실행 다. 새 포지티브 엣지가 발생하면 타이머가 ‘다시
됩니다. 이 타이머는 콜드 스타트 시 재설정됩니다. 트리거’ , 즉 재가동됩니다. 광센서가 네거티브 엣
지를 표시하면 타이머를 재가동하는 다음 포지티브
엣지가 생성됩니다. 시간 값을 Duration2
8.6 카운터 요소 예 ( ‘Dura2’ )로 하는 타이머가 시작됩니다. 광센서
가 Dura1을 초과하는 시간 동안 모니터링을 하거나
이 예는 타이머와 카운터 사용법을 보여 줍니다. Dura2를 초과하는 시간 동안 유휴 상태가 되면 타이
타이머나 카운터는 입력, 출력 및 메모리 비트로 프 머가 종료되고 Fault를 표시합니다. 타이머가 처음
로그래밍하기 때문에 위치에 관계 없이 어떤 블록에 활성화될 때 시간 값 Dura2를 갖고 시작됩니다.
193
8 카운터
신호, 심볼 프로그램
Set 신호는 카운터와 모니터를 활성화합니다. 광
프로그램은 함수 내에 위치합니다. 이 함수 블록
센서는 카운터, Active 상태, 시간 값 선택, 포지티브
을 프로그램 라이브러리 카탈로그 ‘FC 블록’ 에
및 네거티브 엣지를 통한 모니터링 시작(다시 트리
서 선택한 후 조직 블록 OB 1으로 호출해 CPU에서
거)을 제어합니다.
처리합니다 .
종종 광센서의 포지티브 및 네거티브 엣지신호를
판단할 필요가 있으며 임시 로컬 데이터를 ‘임시 프로그래밍을 할 때 특수 문자를 포함하지 않은
저장’ 메모리로 사용합니다. 임시 로컬 데이터는 블 글로벌 심볼은 따옴표 없이 사용할 수 있습니다. 심
록-로컬 변수입니다. 이 데이터는 심볼 테이블이 아 볼에 특수 문자(예: 움라우트, 공백)가 포함된 경우
닌 블록 내에서 선언됩니다. 이 예에서 엣지신호 판 따옴표를 붙여야 합니다. 컴파일된 블록의 경우 편
단에 사용되는 펄스 메모리 비트는 임시 로컬 데이 집기는 모든 글로벌 심볼에 따옴표를 붙여 표시합니
터에 저장됩니다. (후속 사이클에서도 신호 상태를 다.
필요로 하기 때문에 엣지 메모리 비트는 임시 로컬
데이터에 저장해서는 안됩니다.) 그림 8.4과 그림 8.5는 카운터 요소의 프로그램(
여기서는 심볼 주소 지정을 사용합니다. 즉, 피연 함수 FC 12)을 보여 줍니다. 이 프로그램은 ‘LAD_
산자에 이름을 할당하고 프로그램을 작성할 때 이 Book’ 과 ‘FBD_Book’ 라이브러리의 ‘컨베이
이름을 사용합니다. 프로그램을 시작하기 전에 입 어 예’ 프로그램에 있습니다. 이 라이브러리는 출판
력, 출력, 메모리 비트, 타이머, 카운터 및 블록이 포 사의 웹 사이트에서 다운로드할 수 있습니다(8 페이
함된 심볼 테이블을 만듭니다(표 8.2 참조). 지 참조).
194
8.6 카운터 요소 예
195
8 카운터
196
8.6 카운터 요소 예
197
디지털 함수
디지털 함수
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 참조).
(이진) 프로그램 구성요소와 연결됩니다.
표시(FBD)
비교 연산 박스는 2개의 입력 IN1 및 IN2와 1개의
라벨 미지정 이진 출력을 갖습니다. 연산 박스 안의
‘헤더’ 는 수행되는 비교의 유형을 표시합니다. 예
를 들어 CMP ==I이면 2개의 INT 수가 같음인지 비
교한다는 뜻입니다.
표 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 비교 연산 예
200
9.2 비교 연산 설명
201
9 비교 연산
202
10 연산 함수
10 연산 함수
기능
표 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 연산 함수
彚微庲͑毒姢͑;Έ͑͢͡͡汞͑儘汊͑ͣͦ͡求嵢͑喞圊処͑͝
洛朞͑冶刂垚͑彚微庲͑毒姢͑;Έ͑ͣ͢͡櫖͑洆沫夯城埪͟
ͲΣΚΥΙ·ΒΝΝ͑愕͑ͲΣΚΥΙ·ΒΝͣ͑懆朞汞͑儘汊͑塚穞処͑͝
冶刂垚͑ͲΣΚΥΙΖΤΦΝΥ͑懆朞櫖͑洆沫夯城埪͑͟微姦͑懆朞垚͑塶決瘶͑挚嵣櫖͑洆沫夯城埪͟
͔ͲΔΥ·ΒΝ͑愕͑ͷΒΔΥΠΣ庂͑凷穞処͑͝勾͑冶刂垚͔͑͑͵ΚΤΡΝΒΪ͑懆朞嵢͑洊埲夯城埪͟
그림 10.1 산술 연산 예
204
10.2 데이터 형식 INT 계산
205
10 연산 함수
206
10.4 데이터 형식 REAL 계산
207
11 산술 연산
11 산술 연산
예
입력값은 입력 IN에 있고 산술 연산의 결과는 출 그림 11.1은 산술 연산의 세 가지 예를 보여 줍니
력 OUT에 있습니다. 입력과 출력의 데이터 형식은 다. 산술 연산은 절대 주소가 포함된 피연산자를 사
모두 REAL입니다. 절대 주소로 참조되는 피연산자 용할 때 데이터 형식이 선언되지 않은 경우라 해도
는 더블 워드 피연산자여야 합니다. REAL 조건에 따라 계산을 수행합니다.
REAL 형식의 비트에 대한 설명은 3.5.4 “기본 데 증분 프로그래밍의 경우 프로그램 라이브러리 카
이터 형식” 을 참조하십시오. 탈로그의 ‘부동 소수점 함수’ 아래에 산술 연산이
208
11.1 산술 연산 처리
彚微庲͑塚挚͑毒姢͑;͵͑͢͢͡汞͑儘櫖垚͑岂娚橎͑埮氊汞͑儇壊儆͑磲穮夯城埪͑͟
決͑儇壊汞͑斲汾͙ΤΚΟΖ͚͑儘決͑旣昷夞檺͑彚微庲͑塚挚͑毒姢͑;͵͑ͥ͢͡櫖͑洆沫夯城埪͟
;ΒΥΙ·ΒΝΦΖ͑͢懆朞汞͑儘櫖͑堆穢͑洢凷匂決͑旣昷夞檺͑;ΒΥΙΠΠΥ͑懆朞櫖͑洆沫夯城埪͟
͔ΖΤΦΝΥ͑懆朞櫖垚͑Ζ歆͔͑ͶΩΡΠΟΖΟΥ汞͑彷朞儆͑磲穮夯城埪͟
그림 11.1 산술 연산 예
209
11 산술 연산
210
11.4 기타 산술 연산
그림 11.2 산술 연산 예(LAD)
211
11 산술 연산
그림 11.3 산술 연산 예(FBD)
212
12 변환 기능
12 변환 기능
12.1 변환 기능 처리
표시
함수
213
12 변환 기능
彚微庲͑塚挚͑毒姢͑;͵͑ͣ͢͡汞͑儘決͑ͺͿ΅͑朞嵢͑空昣夞檺͑彚微庲͑塚挚͑毒姢͑;͵͑ͣͣ͢櫖͑
ͳʹ͵͑朞嵢͑洆沫夯城埪͟
ʹΠΟΧΖΣΥ͵ͺͿ΅͑懆朞汞͑儘決͑͵ͺͿ΅͑朞嵢͑空昣夞檺͑ʹΠΟΧΖΣΥͶͲͽ͑懆朞櫖͑柪朞嵢͑
洆沫夯城埪͟
洎堆儘決͔͑͵ΚΤΡΝΒΪ͑懆朞櫖昢͑旣昷夯城埪͟
그림 12.2 변환 기능의 예
214
12.2 INT 및 DINT 수의 변환
215
12 변환 기능
216
12.4 REAL 수 변환
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
부정 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 시프트 연산
219
13 시프트 연산
彚微庲͑毒姢͑;Έ͑ͤ͢͡汞͑儘決͑殂濃求嵢͑ͥ埮凊͑決壟夢͑篊͑彚微庲͑毒姢͑;Έ͑ͤͣ͢櫖͑
洆沫夯城埪͟
΄ΙΚΗΥΟ͑懆朞汞͑儘決͑΄ΙΚΗΥΠΤ͑氊獞廒疂͑欪幾濃求嵢͑決壟夢͑篊͑΄ΙΚΗΥΗΗ櫖͑
洆沫夯城埪͟
͔ͲΔΥ·ΒΝ͑懆朞儆͑抆笾歆͑穮叞͑欪幾濃求嵢͑ͣ埮凊͑決壟夢͑篊͔͑͵ΚΤΡΝΒΪ͑懆朞櫖͑
洊埲夯城埪͟
그림 13.1 시프트 연산 예
220
13.2 시프트
221
13 시프트 연산
222
13.3 회전
223
14 워드 논리
14 워드 논리
함수
14.1 워드 논리 연산 처리
워드 논리 함수는 활성화 입력에 ‘1’ 이 존재하
표시 거나 입력 EN에 전력이 흐를 때 실행됩니다. 연산의
출력 ENO와 더불어 2개의 입력 IN1과 IN2, 1개의 출 처리되지 않고 ENO 역시 ‘0’ 이 됩니다.
224
14.1 워드 논리 연산 처리
彚微庲͑毒姢͑;Έ͑ͥ͢͡汞͑旇氊͑捊瞾͑ͥ儢儆͑͡求嵢͑昪洛夞彶͑͝
冶刂垚͑彚微庲͑毒姢͑;Έ͑ͥͣ͢櫖͑洆沫夯城埪͟
ΈͽΠΘΚΔ·ΒΝΝ͑愕͑ΈͽΠΘΚΔ·ΒΝͣ͑懆朞垚͑捊瞾櫖͑堆空͑͑穮朞儆͑洇殯夢͑捊瞾決彶͑͝
冶刂垚͑ΈͽΠΘΚΔΖΤΝΥ櫖͑洆沫夯城埪͟
͔ͺΟΡΦΥ͑愕͔͑;ΒΤΜ͑懆朞庂͑ͶΩΔΝΦΤΚΧΖ͞刂͑浶穯穞櫲͑旣昷夢͑儘汆͔͑ͳΦΗΗΖΣ͑懆朞櫖͑
洆沫夯城埪͟
그림 14.1 워드 논리 연산의 예
225
14 워드 논리
226
프로그램 흐름 제어
프로그램 흐름 제어
상태 비트는 연산 또는 산술 연산 결과와 계산 중
범위 위반과 같은 오류에 대한 정보를 제공합니다.
접점을 사용해 상태 비트의 신호 상태를 프로그램에
직접 결합시킬 수 있습니다.
17 마스터 제어 릴레이
블록 함수를 사용해 프로그램을 구성할 수 있습니 MCR 종속성 / MCR 범위 / MCR 구역.
다. 블록 파라미터를 정의해 함수와 함수 블록을 여
18 블록 함수
러 번 사용할 수 있습니다.
블록 유형, 블록 호출, 블록 종료 / 상태 로컬
데이터 / 데이터 블록(DB) 레지스터, 데이터
19 “블록 파라미터” 에는 5 “메모리 기능” 에 설 피연산자 사용 / 데이터 블록 처리.
227
15 상태 비트
15 상태 비트
228
15.2 상태 비트 설정
산, 워드 논리 연산의 결과나 시프트 연산이 시프트 CC0과 CC1의 의미가 다릅니다). 모든 디지털 상태
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 상태 비트 평가
워드 논리의 상태 비트
15.4 이진 결과 사용
워드 논리 연산 결과가 0인 경우(모든 비트가
‘0’ 인 경우) CC1이 RESET됩니다. 결과에 ‘1’
인 비트가 1개 이상 있는 경우 CC1이 SET됩니다. 15.4.1 이진 결과 BR 설정
CC0과 OV는 RESET됩니다.
15.3 상태 비트 평가
231
15 상태 비트
그림 15.1 상태 비트 평가
232
15.4 이진 결과 사용
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 상태 비트
234
16 Jump 연산
16 Jump 연산
함수
점프는 항상 실행(절대 또는 무조건 점프)하거나
논리 연산 결과(RLO)에 따라 실행(조건적 점프)할
수 있습니다. RLO에 따라 점프하는 경우 RLO가
‘1’ 일 때 점프를 실행할지 RLO가 ‘0’ 일 때 점
프를 실행할지 결정할 수 있습니다.
앞으로 점프와 뒤로 점프를 모두 실행할 수 있습
니다(앞으로 점프란 프로그램 처리 방향이나 네트
워크 번호 오름차순 방향으로 점프한다는 뜻입니
다). 점프는 블록 내에서만 실행할 수 있습니다. 따
라서 점프 대상은 반드시 Jump 연산과 같은 블록 안
에 있어야 합니다. 마스터 제어 릴레이(MCR)를 사
용하는 경우 점프 라벨이 Jump 연산과 같은 MCR
구역이나 MCR 영역 안에 있어야 합니다.
Jump 연산은 코일(LAD)이나 연산 박스(FBD) 형 점프 대상은 명확하게 지정해야 합니다. 한 블록
식의 Jump 연산과 점프 후 처리를 계속할 프로그램 안에서 같은 이름의 점프 라벨은 한 번만 할당해야
위치를 지정하는 점프 라벨로 구성됩니다. 점프 라 합니다. 여러 위치에서 동일한 점프 대상으로 점프
벨이 Jump 연산 위에 위치합니다. 할 수 있습니다.
점프는 T-분기와 연결해 프로그래밍할 수 없습니 프로그램 편집기는 점프 라벨의 이름을 프로그래
다. 밍 기기의 데이터 매체 상에 있는 관련 블록의 실행
점프 라벨은 최대 4자로 구성되며 글자, 숫자 및 불가 영역에 저장합니다. 점프의 너비(점프 치환)만
밑줄(_)을 사용할 수 있습니다. 라벨의 시작은 글자 CPU의 작업 메모리에 컴파일 블록으로 저장됩니
235
16 Jump 연산
236
16.4 RLO = ‘0’ 인 경우 점프
237
16 Jump 연산
238
17 마스터 제어 릴레이
17 마스터 제어 릴레이
접점 컨트롤 시스템의 하나인 마스터 제어 릴레이 아닙니다. 마스터 제어 릴레이의 전환은 메모리 기
는 1개 이상의 Rung으로 구성된 제어시스템 영역을 능의 전환과 같다고 생각해야 합니다.
활성화 또는 비활성화합니다. MCRA 및 MCRD를 사용해 프로그램에서 MCR 종
비활성화된 Rung은 속성을 적용할 영역을 지정합니다. 지정한 영역 내
에서 MCR<과 MCR>을 사용해 MCR 종속성을 활성
Z 모든 비 정전 유지 컨택터의 작동을 중지하고
화/비활성화할 구역을 1개 이상 정의합니다. MCR
Z 정전 유지 컨택터의 상태를 유지합니다. 구역을 네스팅할 수도 있습니다. MCR 구역 직전에
선행된 논리 연산 결과(RLO)에 따라 해당 구역 내에
마스터 제어 릴레이(MCR)가 활성화되기 전에는
서 MCR 종속성이 활성화 또는 비활성화됩니다.
컨택터의 상태를 다시 변경할 수 없습니다.
Z SR 및 RS 연산 박스는 이진 피연산자의 신호 상
태를 ‘고정’ 시켜 더 이상 영향을 미치지 않습
니다.
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 종속성 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 영역
241
17 마스터 제어 릴레이
;ʹ͑割櫳͑͑͢愕͑;ʹ͑
割櫳͑ͣ櫖昢͑;ʹ͑涋暓昷͑洊筞
;ʹ͑割櫳͑͢櫖昢͑;ʹ͑
涋暓昷決͑焮埮夞垚͑凃殶櫖廒͑
;ʹ͑割櫳͑ͣ櫖昢͑
;ʹ͑涋暓昷͑焮埮
242
17.4 I/O 비트 SET/RESET
그림 17.3 블록 변경 시 MCR 구역
243
18 블록 함수
18 블록 함수
244
18.1 프로그래밍 블록의 기능
笊沲͑懆朞庂͑挚嵣͑砒岂惾瘶櫖͑
穦埿穢͑旇痢嵢͑挚嵣͑笾犢
挚嵣͑砒岂惾瘶͑熞庲垚͑柪洢͑懆朞庂͑島痆沊求嵢͑
熞庲穞垚͑冉刂͑償枻城埪͟
笊沲͑懆朞庂͑挚嵣͑砒岂惾瘶櫖͑
穦埿穢͑旇痢嵢͑挚嵣͑笾犢
挚嵣͑砒岂惾瘶͑熞庲垚͑柪洢͑懆朞庂͑島痆沊求嵢͑
熞庲穞垚͑冉刂͑償枻城埪͟
그림 18.2 블록 호출 예
245
18 블록 함수
246
18.1 프로그래밍 블록의 기능
또한 ‘멀티 인스턴스 용량을 가진 함수 블록’ 시스템 블록은 CPU 운영체제 내에만 존재합니
을 다른 ‘멀티 인스턴스 용량을 가진 함수 블록’ 다. 오프라인 프로그래밍 중에 시스템 블록을 호출
내에 로컬 인스턴스로 호출할 수도 있습니다. 이 경 하려면 프로그램 편집기에 호출 인터페이스에 대한
우 호출된 함수 블록은 호출 함수 블록의 인스턴스 내용이 있어야만 파라미터를 초기화할 수 있습니
데이터 블록(DB)을 자신의 로컬 데이터 저장소로 사 다. 이 인터페이스 내용은 표준 라이브러리의 시스
용합니다. 함수 블록을 호출하기 전에 호출 함수 블 템 함수 블록 아래에 있습니다. 사용자가 시스템 블
록(현재 프로그래밍 중인 블록)의 정적 로컬 데이터 록을 호출하면 프로그램 편집기는 여기서 인터페이
에 로컬 인스턴스를 선언합니다. 프로그램 라이브 스 내용을 오프라인 블록 컨테이너로 복사합니다.
러리 카탈로그의 ‘멀티 인스턴스’ 에서 사용 가능 복사된 인터페이스 내용은 ‘일반’ 블록 개체로 표
한 로컬 인스턴스 중 하나를 선택하면 선택된 로컬 시됩니다.
인스턴스가 호출됩니다. 인스턴스 데이터 블록은
프로그램 라이브러리 카탈로그의 `SFC 블록’ 또
지정할 필요가 없습니다(18.1.6 “정적 로컬 데이
는 ‘SFB 블록’ 아래 현재 사용자 프로그램에서 사
터” 참조).
용 가능한 시스템 블록이 제공되어 있습니다. 예를
들어 프로그램 라이브러리 카탈로그에서 시스템 블
함수 호출 록을 마우스로 선택한 후 현재 처리 중인 블록으로
함수를 호출하려면 프로그램 라이브러리 카탈로 드래그하면 선택한 시스템 블록이 이 블록에 호출됩
그의 ‘FB 블록’ 에서 원하는 함수 블록을 선택합 니다. 호출과 동시에 이 블록(정확히 말하면 인터페
니다. 함수는 절대 또는 심볼 주소를 가질 수 있습니 이스 내용)이 블록 컨테이너에 복사됩니다.
다.
247
18 블록 함수
산 박스를 사용할 수 있습니다. 네트워크당 1개의 데이터 블록(DB) 레지스터가 B 스택에 저장됩니다.
호출된 블록이 종료되면 블록 종료가 레지스터의 내
단일 CALL 코일/연산 박스만 허용됩니다.
용을 복구합니다. 블록 호출이 실행되면 블록 호출
LAD:CALL 코일이 왼쪽 회선에 직접 연결되어 있 이전의 글로벌 데이터 블록(DB)과 인스턴스 데이터
는 경우 호출이 항상 실행됩니다(무조건 호출). 블록(DB)도 열립니다. 블록 호출 이전에 열렸던 데
CALL 코일보다 선행되는 논리 연산이 있으면 이 선 이터 블록(DB)이 없었던 경우(예: OB 1에 인스턴스
행 논리 연산이 완료된 경우, 즉 CALL 코일에 전력 데이터 블록(DB)이 없었던 경우) 블록 호출 이후에
이 흐르는 경우에만 호출이 실행됩니다. 선행 논리 도 데이터 블록(DB)이 열리지 않습니다. 호출된 블
연산이 완료되지 못한 경우 호출이 실행되지 않고 록에 어떤 데이터 블록(DB)이 열려있든 마찬가지입
그 다음 네트워크가 처리됩니다. 니다.
248
18.1 프로그래밍 블록의 기능
니다.
임시 로컬 데이터 선언
선행 논리 연산이 완료되지 않은 경우 블록 내의
다음 네트워크가 처리됩니다. 코드 블록의 선언 영역에 임시 로컬 데이터를 선
언합니다.
임시 로컬 데이터의 심볼 주소 지정
18.1.5 임시 로컬 데이터 임시 로컬 데이터는 그 심볼 이름을 이용해 참조
임시 로컬 데이터는 블록 처리 중에 발생하는 결 합니다. 심볼 이름은 블록 로컬 심볼에 대한 규칙에
과를 버퍼하는 데 사용합니다. 임시 로컬 데이터는 따라 할당합니다.
블록 처리 중에만 사용할 수 있습니다. 버퍼된 데이 비트 메모리에 허용된 모든 연산은 임시 로컬 데
터는 블록이 처리된 후에는 유실됩니다. 이터에도 허용됩니다. 주의: 임시 로컬 데이터 비트
임시 로컬 데이터는 시스템 메모리의 로컬 데이터 는 관련 블록을 벗어나면 신호 상태를 유지하지 않
스택(L 스택)에 존재하는 피연산자입니다. CPU의 기 때문에 엣지 메모리 비트로 사용하기에는 부적합
운영체제는 코드 블록이 호출될 때 이 코드 블록에 합니다.
249
18 블록 함수
250
18.1 프로그래밍 블록의 기능
251
18 블록 함수
塶決瘶͑懺匶櫖昢͑塶決瘶͑挚嵣汆͑儢懊͑懆朞庂͑
微奖͑懺櫲渂惆嵢͑嵢珲͑汾枪瘺枪汞͑懆朞垚͑
洊熺͑決床求嵢͑祢柢夯城埪͟
壟柢櫖͑空埿夞垚͑洎堆͑渂暒壊͑祢柢夯城埪͟
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 블록 함수
254
18.2 데이터 블록(DB)의 기능
심볼 주소 지정은 전체 주소를 지정해 액세스합니 주소가 포함된 데이터 피연산자의 데이터 형식에
다(데이터 블록(DB)과 데이터 피연산자를 함께 지 허용된 모든 함수에 전체 주소가 포함된 액세스를
255
18 블록 함수
OPN 코일/연산 박스는 왼쪽 회선에 직접 연결되 CALL 코일/연산 박스를 이용해 블록 변경을 수행
어 있고 Rung에서 독립적으로 실행됩니다. 지정된 한 경우 데이터 블록(DB) 레지스터의 내용이 보존됩
데이터 블록(DB)은 항상 DB 레지스터를 통해 열립 니다. 호출 블록으로 복귀하는 즉시 블록 변경은 레
니다. LAD 또는 FBD의 경우 OPN 코일/연산 박스를 지스터의 기존 내용을 복구합니다.
256
18.2 데이터 블록(DB)의 기능
257
18 블록 함수
258
18.3 데이터 블록(DB)용 시스템 함수
259
18 블록 함수
260
18.3 데이터 블록(DB)용 시스템 함수
261
19 블록 파라미터
19 블록 파라미터
262
19.1 블록 파라미터 일반 사항
그림 19.1 블록 파라미터 예
263
19 블록 파라미터
19.2 형식 파라미터
264
19.2 형식 파라미터
265
19 블록 파라미터
266
19.3 실제 파라미터
267
19 블록 파라미터
268
19.3 실제 파라미터
269
19 블록 파라미터
270
19.5 예
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 블록 파라미터
함수 블록 Feed를 위한 다음 프로그램도 같은 방
식으로 설계되어 있습니다. 이 함수 블록의 입력 및
출력 파라미터는 그림 19.7의 파라미터를 사용할
수 있습니다. 또한 여기서는 파트 카운터의 디지털
값 Quantity, Dura1 및 Dura2 를 입력 파라미터로 설
계했습니다. 사용자 정의 데이터 형식의 데이터를
선언하는 것과 동일한 방식으로, 즉 이름과 데이터
형식으로 개별 컨베이어 벨트 컨트롤의 데이터와 카
운터 요소의 데이터를 정적 로컬 데이터에 선언합니
다. 변수 Belt1은 함수 블록 Conveyor Belt의 데이터
구조를 수신하고 변수 Belt2 등도 마찬가지입니다.
변수 Check은 함수 블록 Parts_Counter의 데이터
구조를 수신합니다.
함수 블록 내의 프로그램은 먼저 모든 컨베이어
그림 19.6 카운터 요소 예의 함수 블록 벨트에 공통되는 신호를 초기화합니다. 여기서 로
272
19.5 예
그림 19.7 공급 프로그래밍 예
표 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 블록 파라미터
274
19.5 예
275
19 블록 파라미터
앞장에서 계속
276
19.5 예
계속:
그림19.8
공급 프로그램 예(LAD)
277
19 블록 파라미터
앞장에서 계속
278
19.5 예
계속:
279
프로그램 처리
프로그램 처리
280
20 메인 프로그램
20 메인 프로그램
281
20 메인 프로그램
282
20.2 스캔 사이클 제어
20.2 스캔 사이클 제어
283
20 메인 프로그램
284
20.2 스캔 사이클 제어
285
20 메인 프로그램
백그라운드 스캔 OB 90
실제 사이클이 완료한 때부터 최소 사이클 시간이 20.2.4 응답 시간
지날 때까지 CPU는 조직 블록 OB 90 ‘백그라운 OB 1에서 프로세스 이미지의 신호 상태에 따라
드 스캔’ 을 실행합니다(그림 20.3 참조). OB 90은 사용자 프로그램이 실행되면, 응답 시간은 프로그
‘슬라이스 별로’ 실행됩니다. 운영체제에서 OB 1 램 실행 시간(스캔 타임)에 의존합니다. 응답 시간은
을 호출할 때 OB 90은 인터럽트됩니다. 그 다음에 다음 예에서 설명하듯이 한 스캔 주기와 두 스캔 주
OB 1이 종료하면 OB 90은 인터럽트 지점에서 재개 기 사이에 있습니다.
286
20.2 스캔 사이클 제어
최상의 경우에 프로세스 이미지는 리미트 스위치 어떤 경우에는 이벤트 구동 기반으로 프로그램 부
의 신호가 변한 직후에 업데이트됩니다(그림 20.4
분을 호출(프로세스 인터럽트)하거나 I/O 주소를 직
참조). 이 경우 이에 대한 출력이 나오는데 단 한 사
접 지정하여 응답 시간을 줄일 수 있습니다.
이클만 걸립니다. 최악의 경우에 프로세스 이미지
는 리미트 스위치 신호가 변하기 바로 전에 업데이 프로그램 구성요소가 항상 동일한 시간 간격으로
트됩니다. 이 경우 PLC가 신호 변화를 탐지하고 입 처리되면(예: 주기적 인터럽트 프로그램), 프로세스
력을 설정하는 동안 대략 한 주기 동안 대기해야 합 제어에서 일정한 응답 시간 또는 동일한 시간 간격
니다. 즉, 다음 주기 후에야 프로그램이 응답할 수 을 달성할 수 있습니다. 프로피버스 DP 마스터 시스
있습니다. 템의 처리 사이클과 등시에 프로그램을 처리할 경우
이를 고려하였을 때, 사용자 프로그램의 실행 시 에도 응답 시간을 계산할 수 있습니다(21.8 “동기
간에는 한 프로그램 사이클의 모든 프로시저가 포함 사이클 인터럽트” 참조).
287
20 메인 프로그램
稊嵢显枪͑決惾滆嵢汞͑ 犢崫͑柦笾͑懆凃
滇洗͑洊埲刂͑穮叞͑
時昢͑柦笾͑懆凃
그림 20.4 PLC의 응답 시간
표 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 프로그램 함수
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를 사용하여 읽어
290
20.3 프로그램 함수
291
20 메인 프로그램
Z FB 60 SET_SW TIME#0ms에서
서머 타임/정상 시간을 전환합니다. TIME#24d20h31m23s647ms까지의 양의 값만 가
Z FB 61 SET_SW_S 집니다.
시간 상태를 사용하여 서머 타임/정상 시간을
전환합니다. 초과가 발생하는 경우, 클록은 0에서 다시 시작합
292
20.3 프로그램 함수
293
20 메인 프로그램
294
20.3 프로그램 함수
295
20 메인 프로그램
296
20.3 프로그램 함수
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
297
20 메인 프로그램
298
20.4 분산 I/O를 통한 통신
니다. 예를 들면, SFC 109 PROTECT를 사용하여 터 기록의 비주기적 전송이나 새로운 유형의 인터럽
프로그램 부분을 리로드하기 위해 이진 변수의 신호 트에서 비롯되는 진단 및 파라미터화 기능 향상과
상태에 따라 보호 레벨을 1(MODE = W#16#0000) 같이 IEC 61131에 따른 새로운 속성을 보여주는 DP
로 (재)설정할 수 있습니다. 그 다음 MODE = 슬레이브를 추가적으로 사용할 수 있습니다. 새로
W#16#0001로 설정하여 쓰기 방지를 재활성화합니 운 인터럽트 조직 블록은 물론 데이터 기록의 전송
다. 을 위한 새로운 시스템 함수도 이러한 새로운
‘DPV1 슬레이브’ 용입니다.
299
20 메인 프로그램
枲嵵͑͡汆͑洊熺͑枪癒決晞汊͑喞痆嗋城埪͟
枲嵵͑ͣ櫖垚͑憊枪͑汾瘶碞決枪
͙汾瘶碞決枪͑微姎͑ͺ;͚儆͑磲穮夯城埪͟
柦笾͑微姎汆͑枲嵵͑ͥ抆瘶͑斲殯夯城埪͟
300
20.4 분산 I/O를 통한 통신
301
20 메인 프로그램
儇͑憊枪͑汾瘶碞決枪櫖垚͑滊埮͑渂暒儆͑沎求彶͑͝ 儇͑憊枪͑汾瘶碞決枪櫖垚͑滊埮͑渂暒儆͑沎求彶͑͝
決͑渂暒垚͑渂暒͑痳櫖昢͑汾瘶碞決枪汞͑儢熺͑暓昷櫖͑ 決͑渂暒垚͑渂暒͑痳櫖昢͑汾瘶碞決枪汞͑儢熺͑暓昷櫖͑
昪洛夯城埪͙廎枪瘶͑ʹΆ櫖昢͑͑͵窏͑塚挚͑畺庳͚͟ 昪洛夯城埪͙枲崎決挒͑ʹΆ櫖昢͑͑͵窏͑塚挚͑畺庳͚͟
枪癒決晞͑愕͑熱͑憎滾͑憊枪͑汾瘶碞決枪櫖垚͑滊埮͑ 枪癒決晞͑愕͑熱͑憎滾͑憊枪͑汾瘶碞決枪櫖垚͑滊埮͑
渂暒儆͑沎求彶͑͝決͑渂暒垚͑沂愞͑痳櫖昢͑枪癒決晞汞͑ 渂暒儆͑沎求彶͑͝決͑渂暒垚͑微姢͑痳櫖昢͑枪癒決晞汞͑
儢熺͑暓昷櫖͑昪洛夯城埪͙͵͑廎枪瘶汞͑穞姢毮檺͑ 儢熺͑暓昷櫖͑昪洛夯城埪͙枲崎決挒͑ʹΆ櫖昢͑͑͵窏͑
割昷櫖昢͑͵͑枲崎決挒͑枪癒決晞͑塚挚͑畺庳͚͟ 塚挚͑畺庳͚͟
302
20.4 분산 I/O를 통한 통신
廎枪瘶͑ʹΆ͑懺匶櫖昢͑彚微庲͑洊暧 枲崎決挒͑ʹΆ͑懺匶櫖昢͑彚微庲͑洊暧
303
20 메인 프로그램
304
20.4 분산 I/O를 통한 통신
305
20 메인 프로그램
306
20.4 분산 I/O를 통한 통신
307
20 메인 프로그램
ET200pro 스테이션을 구성하는 것은 S7-300 스 복되지 말아야 합니다. 주소 영역의 최하단 주소는
308
20.4 분산 I/O를 통한 통신
‘주소’ 탭은 슬레이브 CPU의 기준에서 사용자 ‘일반’ 탭에서 마스터 스테이션의 관점으로 DP
데이터 인터페이스를 표시합니다(시작 주소와 길이 슬레이브의 진단 주소를 설정합니다.
309
20 메인 프로그램
310
20.4 분산 I/O를 통한 통신
311
20 메인 프로그램
312
20.4 분산 I/O를 통한 통신
그림 20.13 SYNC/FREEZE 그룹 구성
313
20 메인 프로그램
314
20.4 분산 I/O를 통한 통신
姷柢昷͑微姢汞͑汗埻͑柢儊
微姎͑瘶惾嘖櫖昢͑ 微姎͑瘶惾嘖͑犢崫
時昢͑柦笾͑懆凃
315
20 메인 프로그램
316
20.4 분산 I/O를 통한 통신
CPU 317-2PN/DP
斶櫋殯͑決塚嘽汊͑決殯穞垚͑ͷͺͿͶ΅͑ͺ͑柢枪癢
합니다. ‘파라미터 편집’ 버튼을 누르면 등시성 된 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/디바이스/컨트롤러에 이름 사
용’ 을 선택합니다.
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→ 현재 프로젝트에 다운
을 구성할 수 있습니다. ‘일반’ 탭에서 제시 로드 → 서브넷의 스테이션을 선택합니다.
319
20 메인 프로그램
320
20.4 분산 I/O를 통한 통신
321
20 메인 프로그램
322
20.4 분산 I/O를 통한 통신
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를 통한 통신
325
20 메인 프로그램
326
20.4 분산 I/O를 통한 통신
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 메인 프로그램
328
20.4 분산 I/O를 통한 통신
329
20 메인 프로그램
330
20.4 분산 I/O를 통한 통신
331
20 메인 프로그램
332
20.4 분산 I/O를 통한 통신
하고, 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)와 같이 트래킹됩
용됩니다. 니다.
333
20 메인 프로그램
渂匶洇ͫ͑殺欇熺洢垚͑斲殯沖͑稊嵢勾岮͑櫌決͑
渂匶洇ͫ͑殺欇熺洢垚͑斲殯沖͑稊嵢勾岮͑櫌決͑ 渂匶洇ͫ͑殺欇熺洢垚͑斲殯沖͑稊嵢勾岮͑櫌決͑
渂匶洇ͫ͑殺欇熺洢垚͑斲殯沖͑稊嵢勾岮͑櫌決͑
塶決瘶庂͑洊暧穯城埪͟ 塶決瘶庂͑洊暧穯城埪͟
Data Data
Re- Re-
sour- sour-
決憪瞾͑匶愞ͫ͑斲殯沖͑稊嵢勾岮櫖昢͑΄ͷʹ͑
決憪瞾͑匶愞ͫ͑斲殯沖͑稊嵢勾岮櫖昢͑΄ͷʹ͑ ces ces 決憪瞾͑匶愞ͫ͑斲殯沖͑稊嵢勾岮櫖昢͑΄ͷʹ͑
決憪瞾͑匶愞ͫ͑斲殯沖͑稊嵢勾岮櫖昢͑΄ͷʹ͑
笾犢汊͑皻空͑洊暧穯城埪͟ 笾犢汊͑皻空͑洊暧穯城埪͟
Data SFC SFC Data
60/61 60/61
Subnet
MPI
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 바이트)
335
20 메인 프로그램
336
20.5 글로벌 데이터 통신
그림 20.22 GD 서클의 예
GD 상태 스캔 속도
GD 통신 서비스는 CPU 운영체제에서 상당한 실
컴파일한 후, 보기 → GD 상태를 선택하여 통신 상
행 시간이 걸리고, MPI 버스에서 전송하는데 시간이
태의 주소를 글로벌 데이터 테이블에 입력할 수 있
걸립니다. 이러한 ‘통신 부하’ 를 최소화하기 위
습니다. 전체 상태(GST)는 테이블에 있는 모든 통신
해, ‘스캔 속도’ 를 지정할 수 있습니다. 스캔 속
연결의 상태를 보여 줍니다. GD 상태(GDS)는 통신 도는 데이터(보다 정확히 말하면 GD 패킷)를 전송
연결(전송된 GD 패킷)의 상태를 보여 줍니다. 이 상 하거나 수신하기 전의 프로그램 사이클의 회수를 지
태는 각 경우에 더블 워드로 표시됩니다. 정합니다.
337
20 메인 프로그램
338
20.6 S7 기본 통신
노드 ID는 I/O 주소에서 따옵니다. LADDR 파라미 사용자 데이터를 조정합니다. 일관성 있게 전송되
터에서 모듈 시작 주소를 지정하고, IOID 파라미터 는 데이터의 길이는 CPU 특정 변수입니다. 두 개의
에서 이 주소가 입력 영역인지 출력 영역인지를 지 CPU가 데이터를 교환하는 경우, ‘수동적’ CPU
정합니다. 의 블록 크기는 데이터 일관성을 결정합니다.
339
20 메인 프로그램
Subnet
PROFIBUS
그림 20.23 스테이션 내부 S7 기본 통신
340
20.6 S7 기본 통신
341
20 메인 프로그램
Subnet
MPI
그림 20.24 스테이션 외부 S7 기본 통신
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 기본 통신
343
20 메인 프로그램
344
20.7 S7 통신
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 통신
345
20 메인 프로그램
346
20.7 S7 통신
아래의 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 메인 프로그램
348
20.7 S7 통신
349
20 메인 프로그램
Z SFB 20 STOP
인쇄할 문자를 FORMAT 파라미터에 STRING 형
파트너 컨트롤러를 정지 모드로 전환합니다.
식으로 입력합니다. 이 문자열의 변수들에 대해 최
대 네 가지 형식 설명을 SD_1부터 SD_4 파라미터로 Z SFB 21 RESUME
정의함으로써 통합할 수 있습니다. 이 파라미터들 파트너 컨트롤러에서 핫 리스타트를 실행합니
을 1부터 간격 없이 채워서 사용하고, 필요 없는 파 다.
350
20.7 S7 통신
351
20 메인 프로그램
352
20.7 S7 통신
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 메인 프로그램
354
20.8 IE 통신
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 통신
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 파라미터에서 그 결과를 검사해
야 하는데, 그 이유는 이들이 다음 호출까지만 유효
하기 때문입니다.
356
20.8 IE 통신
니다.
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 메인 프로그램
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 통신
359
20 메인 프로그램
여 운영체제의 통신 레이어에 연결을 생성해야 합니 이터는 DATA 파라미터로 지정된 영역에서 가져옵
다(20.8.2 “연결의 생성과 해제” 참조). 통신 파트 니다. LEN 파라미터에서 지정한 바이트 수(1에서
360
20.9 S7-300C를 사용하는 일대일 통신
361
20 메인 프로그램
ͼͦͣͫ͑͢ ͼͦͣͫ͑͢
斲殯沖͑稊嵢勾岮櫖昢͑΄ͷͳ͑笾犢汆͑洊暧汊͑ 斲殯沖͑稊嵢勾岮櫖昢͑΄ͷͳ͑笾犢汆͑洊暧汊͑
洢檺穯城埪͑͟壟匶筚͑͵ͳ壊͑穊殚穯城埪͟ 洢檺穯城埪͑͟壟匶筚͑͵ͳ壊͑穊殚穯城埪͟
Subnet
PtP
일대일 통신의 구성
하드웨어 구성 도구를 사용하여 점대점 인터페이 20.9.2 ASCII 드라이버와 3964(R) 프로시저
스의 속성 창에서 전송 프로토콜을 설정합니다. ASCII 드라이버 또는 3964(R) 프로시저를 사용하
Z ASCII 모드 면 점대점 연결을 통해 데이터를 전송하거나 수신할
데이터가 ASCII 문자로 전송됩니다. 이때, 전송 수 있습니다. 이때 아래와 같은 시스템 함수 블록이
은 승인되지 않습니다. 보드 속도, 패리티, 엔드 필요합니다.
362
20.9 S7-300C를 사용하는 일대일 통신
표 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 메인 프로그램
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 메인 프로그램
366
20.10 실행 모드에서 하드웨어 구성(CiR)
367
20 메인 프로그램
櫲峲͑͵͑廎枪瘶͑柢枪癢͑͝Ͳ͑廎枪瘶͑柢枪癢͑
愕͑Ͷ΅͑ͣ͡;͑枪癒決晞櫖͑堆空͑
ʹΚ͙ʹΠΟΗΚΘΦΣΒΥΚΠΟ͑ΚΟ͑ΆͿ͚決͑儆垫穯城埪͟
妪櫖͑犚儆夞垚͑͵͑枲崎決挒櫖͑堆穢͑沖庲͑祢柢沖
͙牢堆͑犚儆͑枲崎決挒͑朞͑愕͑犚儆͑斲殯沖͑塶決瘶͑戂幮͑
旇穢儘͑磲穮͚
妪櫖͑犚儆夞垚͑微姎櫖͑堆穢͑沖庲͑祢柢沖
͙犚儆͑斲殯沖͑塶決瘶͑戂幮͑旇穢儘͑磲穮͚
妪櫖͑犚儆夞垚͑Ͳ͑枲崎決挒櫖͑堆穢͑沖庲͑祢柢沖
͙牢堆͑犚儆͑穊姢͑沫獞͑朞͑愕͑犚儆͑斲殯沖͑塶決瘶͑戂幮͑
旇穢儘͑磲穮͚
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
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로 설정하고, 프로세스를 비활성화합니다.
371
21 인터럽트 처리
21 인터럽트 처리
372
21.2 인터럽트 시간
373
21 인터럽트 처리
조직 블록 중에서 실제로 어느 블록을 사용할 수 있 Z 일회성: 관련된 OB를 지정된 시간에 한번만 호
는가는 CPU에 따라 다릅니다. 출합니다.
하드웨어 구성에서 인터럽트 시간을 설정하거나, Z 주기적: 파라미터 지정에 따라 해당 OB를 매분,
시스템 함수를 사용하여 프로그램을 통한 런타임 시 매시간, 매주, 매월, 또는 매년 시작합니다.
에 인터럽트 시간을 제어할 수 있습니다. 인터럽트 일회성 인터럽트 시간 OB를 호출한 후에 인터럽
시간을 올바로 처리하기 위한 전제 조건은 CPU에서 트 시간은 취소됩니다. 또한 SFC 29 CAN_TINT를
실시간 클록을 올바로 설정하는 것입니다. 사용하여 인터럽트 시간을 취소할 수도 있습니다.
시동 시의 성능 특성
일반 사항
콜드 리스타트 또는 웜 리스타트 도중에 운영체제
인터럽트 시간을 시작하려면, 먼저 시작 시간을 는 SFC를 사용한 모든 설정을 해제합니다. 그러나
설정한 후 인터럽트를 활성화합니다. 이 두 가지 작 하드웨어 구성의 설정은 유지됩니다. 핫 리스타트
업은 하드웨어 구성 또는 SFC를 통해 따로 수행할 시에 CPU는 메인 프로그램의 첫 번째 완전한 스캔
수 있습니다. 하드웨어 구성에서 인터럽트를 활성 사이클에서 인터럽트 시간을 다시 활성화합니다.
화할 경우 인터럽트 시간은 CPU의 파라미터화 후에
SFC 31를 호출하여 시동 OB에서 인터럽트 시간
자동으로 시작된다는 것에 유의하십시오.
의 상태에 대해 질의한 후 인터럽트를 취소하거나
아래의 두 가지 방법으로 인터럽트 시간을 시작할 재설정하고 다시 활성화할 수 있습니다. 인터럽트
수 있습니다. 시간은 실행 모드에서만 실행됩니다.
374
21.2 인터럽트 시간
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 인터럽트 처리
376
21.3 인터럽트 지연시간
377
21 인터럽트 처리
378
21.3 인터럽트 지연시간
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의 시작 정보의 바이트 래와 같은 의미를 가집니다.
379
21 인터럽트 처리
380
21.4 워치독 인터럽트
殶昦͑朢氊儆͑喴汆͑ͳ汞͑柢沗汆͑埮凊懊͑堆匶͑竎殯͑ 柢稊瞾夞彶͑͝殶昦͑朢氊儆͑喴汆͑ͳ垚͑洛筛穢͑柢儊͑
柢儊決͑犯把粎͑嚘汆͑旇氊͑ͳ汞͑熞庲͑柢儊廒疂 儊冯櫖͑娶岂͑柢沗夯城埪͟
381
21 인터럽트 처리
행 모드에서도 하드웨어 인터럽트 기능으로 모듈을 이러한 용도로 설치된 지능형 DP 슬레이브에서
(재)파라미터화할 수 있습니다. SFC 7 DP_PRAL를 사용하여 마스터 CPU에 프로세
스 인터럽트를 시작할 수 있습니다.
표 21.7에는 프로세스 인터럽트에 대한 시작 정
보가 나와있습니다. 여기서 더미 값 xx는 관련된 인 하드웨어 인터럽트를 위한 서비스 루틴을 포함하
터럽트 조직 블록 40부터 47까지의 번호를 나타냅 는 조직 블록이 실행을 종료하면 해당 하드웨어 인
니다. 터럽트가 모듈에서 승인됩니다.
382
21.5 하드웨어 인터럽트
383
21 인터럽트 처리
384
21.6 DPV1 인터럽트
385
21 인터럽트 처리
386
21.8 동기 사이클 인터럽트
387
21 인터럽트 처리
388
21.9 인터럽트 이벤트의 처리
389
21 인터럽트 처리
390
21.9 인터럽트 이벤트의 처리
391
21 인터럽트 처리
392
22 시동 특성
22 시동 특성
393
22 시동 특성
그림 22.1 CPU 작동 모드
394
22.2 시동
395
22 시동 특성
396
22.3 재가동의 종류
397
22 시동 특성
398
22.3 재가동의 종류
399
22 시동 특성
400
22.4 모듈 주소 설정
401
22 시동 특성
402
22.4 모듈 주소 설정
SFC 70 LOG_GEO
기본 논리 주소를 확정합니다. SFC 5 GADR_LGC
모듈 채널의 논리 주소를 확정합니다.
시스템 함수 SFC 70 LOG_GEO는 모듈 또는 스테
이션의 논리 주소를 반환합니다. MASTER 파라미터 시스템 함수 SFC 5 GADR_LGC는 사용자가 슬롯
의 할당은 스테이션이나 모듈이 랙에 삽입되었는지 주소('물리적' 주소)를 지정하면 채널의 논리 주소를
(중앙식 설계) 또는 스테이션이 프로피버스와 프로 반환합니다. 모듈이 분산 I/O에 속한 경우
403
22 시동 특성
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 및 이
405
22 시동 특성
406
22.5 모듈 파라미터화
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 시동 특성
Z SFC 58 WR_REC
데이터 기록을 씁니다.
408
22.5 모듈 파라미터화
剻汆͑匆樮嵢͑夢͑
挚嵣汆͑勾͑氊櫖͑
刊笾儆͑燖滊͑挚嵣汊͑
堆柦穞彶͑͝
ͷͺͿͶ΅͑ͺ歆͑
穮叞͑斲殯穦͑朞壊͑
沎枻城埪͟
409
22 시동 특성
410
23 오류 처리
23 오류 처리
411
23 오류 처리
412
23.2 동기 에러 처리
413
23 오류 처리
표 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’ 을 반환합니다. 존재하는 오류입니다.
표 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 오류 처리
타이밍 오류 OB 80
23.3 비동기 에러 다음 오류 중 하나가 발생하면 운영체제는 조직
블록 OB 80를 호출합니다.
비동기 에러는 프로그램 스캔과는 별도로 발생하
는 오류입니다. 비동기 에러가 발생하면 운영체제 Z 사이클 모니터링 시간 초과
OB 80 타이밍 오류 특정 OB가 같은 우선 순위 등급 내에 너무 자주
요청된 경우)
OB 81 전력 공급 오류
Z 시간 지정 인터럽트 오류(클록이 앞으로 설정되
OB 82 진단 인터럽트 거나 RUN으로 전환된 후로 설정되어 시간 지정
OB 83 모듈 탈착/장착 인터럽트 인터럽트 시간이 경과한 경우)
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 통신 이중화 에러 는 데 실패한 경우
416
23.3 비동기 에러
/제거 인터럽트 발생 시 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를
417
23 오류 처리
통신 이중화 에러 OB 73
처리 중단 OB 88
결함 허용 S7 연결의 이중화가 처음 유실되면 결
사용자 프로그램에서 블록 처리가 중단되면 운영
함 허용 CPU의 운영체제는 조직 블록 OB 73을 호
체제는 조직 블록 OB 88을 호출합니다. 다음과 같
출합니다. 최소 하나의 결함 허용 S7 연결이 이중화
은 이유로 처리가 중단될 수 있습니다.
유실을 표시한 경우 이중화 유실이 추가 발생했을
Z 동기 에러로 인해 허용된 블록 네스팅 깊이를 초 때에도 OB 73이 다시 호출되지 않습니다.
과한 경우
OB 73이 없는 경우 통신 이중화 에러가 발생해도
Z 블록 호출로 인해 허용된 네스팅 깊이를 초과한 CPU는 계속 작동됩니다.
경우
418
23.4 시스템 진단
419
23 오류 처리
는 승인은 되지만 처리되지 않습니다. 따라서 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 시스템 진단
421
23 오류 처리
422
23.5 웹 서버
23.5.2 웹 정보 읽기
웹 브라우저에서 CPU에 접속하려면 ‘주소’ 필 시작 및 식별
드에 http://aaa.bbb.ccc.ddd 형식으로 CPU의 IP 시작 페이지는 일반 정보와 쿼리 당시 CPU의 상
주소를 입력합니다. CPU의 IP 주소는 ‘일반’ 탭 태를 보여 줍니다. 식별 페이지는 플랜트 명칭, 위치
에 있는 프로피넷 인터페이스의 개체 속성에서 확인 정보, 주문 번호와 같은 CPU의 핵심 데이터를 포함
할 수 있습니다. 하고 있습니다.
CPU의 시작 페이지에서 더 많은 정보를 검색할 오른쪽 상단의 창에서 디스플레이 언어를 선택할
수 있습니다. 주의: 제공되는 정보는 정적 특성을 가 수 있습니다. 구성되지 않은 언어를 선택한 경우 정
지므로 필요 시 화면 내용을 직접 업데이트해야 합 보가 16진수 코드로 표시됩니다.
423
23 오류 처리
424
부록
부록
425
24 그래픽 프로그래밍 보완
24 그래픽 프로그래밍 보완
426
24.2 간접 주소 지정
427
24 그래픽 프로그래밍 보완
428
24.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 사용법을 보여 줍니다.
430
24.3 ‘메시지 프레임 예제’ 에 대한 간단한 설명
431
24 그래픽 프로그래밍 보완
432
24.3 ‘메시지 프레임 예제’ 에 대한 간단한 설명
그림 24.3 변수 SoPointer의 구조
433
25 블록 라이브러리
25 블록 라이브러리
434
25.2 시스템 함수 블록
8 USEND 조정되지 않은 전송
9 URVC 조정되지 않은 수신
12 BSEND 블록 기반 전송
13 BRCV 블록 기반 수신
14 GET 파트너로부터 데이터 판독
15 PUT 파트너에 데이터 쓰기
16 PRINT 프린터에 데이터 쓰기
19 START 파트너에서 콜드 또는 웜
스타트 개시
20 STOP 파트너를 STOP으로 설정
21 RESUME 파트너에서 리스타트
개시
435
25 블록 라이브러리
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 이름 지정
436
25.2 시스템 함수 블록
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 슬레이브 데이터 쓰기
437
25 블록 라이브러리
복사 및 블록 함수 문자열 함수
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으로 변환
438
25.4 S5-S7 변환 블록
날짜 및 시간 함수 수학 함수
FC 이름 지정 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 블록 라이브러리
440
25.5 TI-S7 변환 블록
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 이름 지정 메시지 전송
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)
62 C_CNTRL 연결 상태 스캔
FB 이름 지정 FB 이름 지정
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 기본 함수 이진 검사 및 조합
메모리 함수
타이머 함수
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 프로그램 흐름 제어
상태 비트
͡懺埪͑當͑冶刂
͡懺埪͑畲其喞͑
償汆͑冶刂
͡懺埪͑沗汆͑冶刂
블록 함수
͡懺埪͑沗其喞͑
償汆͑冶刂
塶決瘶͑挚嵣求嵢͑
穮朞͑挚嵣͑笾犢
͡刂͑償滆͑橐汆͑冶刂
͡刂͑償汆͑冶刂
塶決瘶͑挚嵣求嵢͑
怺箮͑冶刂 柢枪癢͑穮朞͑
͙愶櫺夞滆͑橐汒͚ 挚嵣͑笾犢
欪憊稒嵢
穮朞͑挚嵣͑嬖垚͑
柢枪癢͑穮朞͑挚嵣汊͑
洆沫夢͑欪憊稒嵢 嵢珲͑汾枪瘺枪嵢͑
笾犢
決滊͑冶刂
穮朞͑笾犢
΄Ͳ·Ͷ͑瑚沂
柢枪癢͑穮朞͑笾犢
Jump 연산
砒岂惾瘶儆͑滆洛夞滆͑
橐汆͑穮朞͑笾犢
砒岂惾瘶儆͑滆洛夞滆͑
橐汆͑柢枪癢͑
穮朞͑笾犢
Ͷ΅͑瑚汾͑͝
浶兺͑挚嵣͑啣
塶決瘶͑挚嵣͑櫺匶
447
27 함수 세트 FBD
27 함수 세트 FBD
27.1 기본 함수 이진 검사 및 조합
메모리 함수
타이머 함수
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 오른쪽으로 회전
워드 로직
450
27.3 프로그램 흐름 제어
27.3 프로그램 흐름 제어 블록 함수
塶決瘶͑挚嵣求嵢͑
상태 비트 穮朞͑挚嵣͑笾犢
͡懺埪͑當͑冶刂
͡懺埪͑畲其喞͑
償汆͑冶刂
塶決瘶͑挚嵣求嵢͑
͡懺埪͑沗汆͑冶刂 柢枪癢͑穮朞͑
挚嵣͑笾犢
͡懺埪͑沗其喞͑
償汆͑冶刂
͡刂͑償滆͑
橐汆͑冶刂 穮朞͑挚嵣͑嬖垚͑
柢枪癢͑穮朞͑挚嵣汊
͡刂͑償汆͑冶刂 嵢珲͑汾枪瘺枪嵢͑
笾犢
怺箮͑冶刂
͙愶櫺夞滆͑橐汒͚
穮朞͑笾犢
欪憊稒嵢
洆沫夢͑欪憊稒嵢
決滊͑冶刂͑円斲
柢枪癢͑穮朞͑笾犢
決滊͑冶刂͑洆沫
점프 함수
砒岂惾瘶儆͑
滆洛夞滆͑橐汆͑
穮朞͑笾犢
砒岂惾瘶儆͑
滆洛夞滆͑橐汆͑
柢枪癢͑穮朞͑笾犢
浶兺͑挚嵣͑啣
塶決瘶͑挚嵣͑櫺匶
마스터 컨트롤 릴레이
451
▪ 인 쇄 : 2009년 6월 19일
▪ 발 행 : 2009년 6월 29일
▪ 편 찬 : Siemens AG
▪ 역 자 : (주)라티스 글로벌커뮤니케이션스
▪ 가 격 : 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 프로그래밍 언어 데이터 형식 이진 및 디지털 명령 프로그램 시퀀스 제어 사
용자 프로그램 실행
www.siemens.co.kr/automation