284
정보 교육 프로그래밍 2 코스 ST-7PRO2 이 문서는 교육용으로 만들어졌습니다. Siemens는 내용에 대한 책임을 지지 않습니다. 본 문서 및 그 내용에 대한 복제, 전송, 사용은 서면 승인 없이는 허용되지 않습니다. 이를 위반한 사람은 손해 배상의 책임을 지게 됩니다. 특허권 또는 실용 신안 특허권을 포함한 모든 권리는 보호됩니다. Copyright (c) Siemens AG 1999 이름: _____________________________________ 코스: _____________________________________ 강사: _____________________________________ 릴리스: A4.1(소프트웨어 4.02.1) 상태 비트에 따른 인스트럭션 누산기 함수 REAL 숫자를 가지는 인스트럭션 간접 어드레싱 및 어드레스 레지스 터 인스트럭션 사용자 프로그램에서 데이터 관리 블록 호출 및 복수 인스턴스 모델 라이브러리 사용 동기 및 비동기 오류 처리 텍스트 편집기를 사용하여 프로그램 만들기 기본 및 확장 S7 통신 S7-400 파워 PLC 시스템 분산 I/O 및 파라미터 할당 S7/M7 에 대한 엔지니어링 도구 연습 해답 추가 내용

Simatic s7 Tr2 Korean

Embed Size (px)

DESCRIPTION

Siemens Simatic Step7 Korean Course

Citation preview

Page 1: Simatic s7 Tr2 Korean

정보 및 교육

프로그래밍 2

코스 ST-7PRO2 이 문서는 교육용으로 만들어졌습니다.

Siemens는 내용에 대한 책임을 지지 않습니다.

본 문서 및 그 내용에 대한 복제, 전송, 사용은 서면

승인 없이는 허용되지 않습니다. 이를 위반한 사람은

손해 배상의 책임을 지게 됩니다. 특허권 또는 실용

신안 특허권을 포함한 모든 권리는 보호됩니다.

Copyright (c) Siemens AG 1999

이름: _____________________________________

코스: _____________________________________

강사: _____________________________________

릴리스: A4.1(소프트웨어 4.02.1)

상태 비트에 따른 인스트럭션 누산기 함수 REAL 숫자를 가지는 인스트럭션

간접 어드레싱 및 어드레스 레지스

터 인스트럭션 사용자 프로그램에서 데이터 관리 블록 호출 및 복수 인스턴스 모델 라이브러리 사용 동기 및 비동기 오류 처리 텍스트 편집기를 사용하여 프로그램만들기 기본 및 확장 S7 통신 S7-400 파워 PLC 시스템 분산 I/O 및 파라미터 할당 S7/M7 에 대한 엔지니어링 도구 연습 해답 추가 내용

Page 2: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Status Bit-Dependent InstructionsPage 1

목차 페이지

S7-CPU의레지스터및메모리영역 …………................................................................................. 2상태워드구조 ……..........................................................................................................………. 3상태비트검사 ……...........................................................................................................……….. 4상태비트인스트럭션 ...…....................................................................................................……….. 5블록호출또는복잡한함수에서의 BR 비트및 ENO ……............................................................… 6상태비트에의존적인점프함수 …………….................................................................................... 7조건코드에의존적인점프함수 …………..………......................................................................... 8점프분산자의프로그래밍 …………............................................................................................ 9루프인스트럭션의프로그래밍 .............................................................................................……… 10블록엔드에대한인스트럭션 .................................................................................................... 11연습 1.1: 빼기후점프 …………………........................................................................................ 12연습 1.2: 곱하기후점프 ………………….. .................................................................................... 13연습 1.3: 점프분산자프로그래밍 ……………….. ........................................................................... 14

Date: 2002-02-23File: PRO2_01e.1

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

상태비트의존적인인스트럭션

Page 3: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Status Bit-Dependent InstructionsPage 2

개요 S7-CPU는효율적인프로그램실행을위해다양한레지스터및메모리영역을포함합니다.

CPU 레지스터 CPU 레지스터는데이터의주소를지정하거나처리하기위해사용됩니다. 데이터는관련명령 (L, T,...)을이용해 CPU 메모리영역과레지스터간에교환될수있습니다. • 누산기: (S7-300을가진) 2개의누산기또는 (S7-400을가진) 4개의누산기가산술, 비교, 또는다른바이트, 워드, 더블워드인스트럭션에사용됩니다.

• 어드레스레지스터: 2개의어드레스레지스터가메모리의레지스터간접어드레싱을위한포인터로사용됩니다.

• 데이터블록레지스터: 데이터블록레지스터는개방된 (활성) 데이터블록번호를포함합니다. 따라서한개의 DB는 DB 레지스터로, 다른한개의 DB는DI 레지스터를이용해서인스턴스 DB로 2개의 DB를동시에열수있습니다.

• 상태워드:프로그램실행내에서개별인스트럭션의결과또는상태를반영하는다양한비트를포함합니다.

메모리영역 S7-CPU의메모리는 4개의영역으로구분될수있습니다.• 로드메모리는기호어드레스할당이나설명없이사용자프로그램을저장하기위해사용됩니다. 로드메모리는 RAM이나 FEPROM 메모리일수있습니다.

• 작업메모리 (통합 RAM)는프로그램실행을위해필요한 S7 프로그램의해당부분을저장하기위해사용됩니다. 프로그램실행은작업메모리에서단독으로이루어집니다.

• I\O 영역은연결된신호모듈이나필드장치입출력에대한직접액세스를허용합니다.

• 시스템메모리 (RAM)는 프로세스-이미지입출력표, 비트메모리, 타이머,카운터와같은영역을포함합니다. 또한로컬데이터, 블록, 인터럽트스택을포함합니다.

Date: 2002-02-23File: PRO2_01e.2

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

S7-CPU의레지스터및메모리영역

누산기

ACCU1

ACCU4

ACCU3

ACCU2

S7-400 전용

AR2

AR1

어드레스레지스터

개방된 DB

데이터블록레지스터

개방된 DI

상태비트

상태워드

32 Bit

32 Bit

32 Bit

32 Bit

32 Bit

32 Bit

16 Bit

16 Bit

16 Bit

로드메모리- 논리블록- 데이터블록

작업메모리- 논리블록- 데이터블록

I/O 영역

시스템메모리- 프로세스-이미지입력표- 프로세스-이미지출력표- 비트메모리- 타이머- 카운터

- 로컬데이터스택- 인터럽트스택- 블록스택

S7-CPU 레지스터 S7-CPU 메모리영역

T, S, =,...

L, U, O,...

Page 4: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Status Bit-Dependent InstructionsPage 3

상태워드 상태워드의개별비트는발생한오류뿐만아니라인스트럭션의결과또는상태에대한정보를줍니다. 이진법논리연산을사용하여상태비트의신호상태를직접프로그램에통합함으로써프로그램흐름을제어할수있습니다.

첫번째검사 상태워드의비트 0은첫번째검사비트로불립니다. /FC 비트에서의신호상태“0”은다음논리인스트럭션을내리면새논리문자열이프로그램에서시작된다는것을가리킵니다. 약어 FC 앞의대각선은 /FC 비트가반대로됨을가리킵니다.

논리연산결과 상태워드비트 1은 RLO 비트 (RLO=“논리연산결과”)입니다. 이것은이진법논리연산에서임시메모리로사용됩니다. 예를들어논리인스트럭션의문자열에서인스트럭션은접점의신호상태를검사하며부울논리의결과에따라검사 (상태비트)의결과를 RLO 비트와결합합니다. 논리연산의결과는교대로 RLO 비트에저장됩니다.

상태비트 상태비트 (비트 2)는주소가지정된비트의값을저장합니다. 상태비트는스캐닝 (A, AN, O,...)이나쓰기인스트럭션 (=, S, R,)을위해항상주소가지정된비트의상태를보여줍니다 (쓰기인스트럭션의경우인스트럭션실행후의어드레스상태).

OR 비트 OR 비트는인스트럭션 O와함께 OR 논리연산이전에 AND를실행할때필요합니다. OR 비트는이전에실행된 AND 논리연산이값 “1”을배달하여그값에의해 OR 논리연산의결과가이미 “1”로결정되었음을가리킵니다.

OV 비트 OV 비트 (과잉)는부동소수점숫자를가진수치연산인스트럭션이나비교인스트럭션의오류를나타냅니다. 이비트는실행된수치연산또는비교인스트럭션의결과에따라설정됩니다.

Date: 2002-02-23File: PRO2_01e.3

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

상태워드구조

비트 할당 값 중요도

0 /FC 20 첫번째검사

1 RLO 21 논리연산결과

2 STA 22 상태

3 OR 23 또는

4 OS 24 과잉저장

5 OV 25 과잉

6 CC0 26 결과비트

7 CC1 27 결과비트

8 BR 28 이진법결과

9...15 할당 29 ..210

안됨

상태워드에서비트의중요도

Page 5: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Status Bit-Dependent InstructionsPage 4

OS 비트 OS 비트 (과잉저장)은 OV 비트와함께설정됩니다. OS 비트는새로운수치연산인스트럭션이실행된후에도이전설정대로남아있습니다. 즉, OS 비트는다음수치연산인스트럭션의결과에따라변경되지않습니다. 따라서프로그램의이후위치에서도숫자영역과잉이나잘못된 REAL 숫자를가진인스트럭션을평가할기회가있습니다.OS 비트는 JOS (OS = 1이면점프), 블록호출, 블록엔드명령에의해서만리셋됩니다.

CC1과 CC0 CC1 비트와 CC0 비트 (조건코드)는다음결과에대한정보를줍니다.• 수치연산인스트럭션의결과

• 또는비교인스트럭션의결과

• 워드논리인스트럭션또는

• 시프트함수에서자리이동된비트

CC1과 CC0 조건코드는다음인스트럭션에의해간접적으로검사될수있습니다.

CC1 CC0 검사 다음경우에검사완료

0 0 A ==0 Result = 0 (ACCU2 = ACCU1)1 0 A >0 Result > 0 (ACCU2 > ACCU1)0 1 A <0 Result < 0 (ACCU2 < ACCU1)1 1 A AO 잘못된연산 (예: 0으로나누기)

또한조건코드를평가해서적당한프로그램분기를허용하는점프함수가있습니다.

LAD/FBD 상태비트아래의카탈로그에서 LAD 또는 FBD 표시에대한검사를볼수있습니다.

Date: 2002-02-23File: PRO2_01e.4

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

상태비트검사

OVS S>0

M 4.0M 4.0

STL에서검사A OV 과잉디스플레이스캔

A OS 과잉저장스캔

A BR BR 플래그스캔

결과비트검사(CC0, CC1)A ==0 결과가 0 임A > 0 결과가 0보다큼A <>0 결과가 0과같지않음A =<0 결과가 0보다작거나같음

기타

A UO 연산이허용되지않음

LAD와 FBD에서검사

Page 6: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Status Bit-Dependent InstructionsPage 5

L STW/T STW 또한전체상태워드를로드해서이후검사 (스캔)을위해저장할수있습니다. • L STW 상태워드로드

• T MW 114 메모리워드 114에저장예를들어 T STW 인스트럭션을이용해상태워드를이전에저장된상태워드와함께로드할수있습니다. 0, 2, 3, 9..15 비트는이인스트럭션에영향받지않습니다.

RLO 변경 STEP7에는 RLO에영향을주기위한많은인스트럭션이있습니다.SET을이용해논리연산의결과를 “1”로, CLR을이용해 “0”으로설정합니다. 이와유사하게상태비트 STA도 “1”또는 “0”으로설정됩니다. 두개의인스트럭션모두조건과관계없이실행됩니다. SET와 CLR은또한상태비트 OR과 \FC를리셋합니다. 즉, 새검사문자열이이후에시작됩니다.인스트럭션 NOT는논리연산의결과를반대로합니다.

BR 비트 BR 비트는 RLO가 RLO 변경인스트럭션이전에저장될수있는내부의비트메모리를표시합니다. 이렇게함으로써이후에인터럽트된비트문자열을다시시작할때 RLO를다시사용할수있습니다. 함수블록이나함수를쓴후 LAD에서부르려한다면 BR 비트를제공해야합니다. BR 비트는 LAD 상자에대한작동출력 (ENO)에대응합니다.

BR 설정및 SAVE를이용해 RLO를이진법결과로저장합니다 (레지스터). SAVE는신호리셋 상태를 RLO에서상태비트 BR로전송합니다.

SAVE는모든조건과관계없이실행되며더이상의상태비트에영향을주지않습니다.

Date: 2002-02-23File: PRO2_01e.5

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

| |

상태비트인스트럭션

인스트럭션 의미 보기

SET RLO를 "1" 로설정 SET //RLO 1 비트메모리= M 0.1

CLR RLO를 "0" 으로설정 CLR //RLO 0 비트메모리

NOT RLO를반대로함 O 수동O 자동NOT;= 작동모드= M0.0

SAVE RLO를이진법결과로저장

A BR 이진법결과검사

| |I 1.0 I 1.1 I 1.2

| |

| |

( )

(저장)| |

BR Q 4.2 Q 5.0

Page 7: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Status Bit-Dependent InstructionsPage 6

EN = 작동입력 사용자는모든상자에있으며래더도표에서블록이나복잡한함수를호출하기위해사용되는작동입력 EN을이용해호출을변경할수있습니다 (STEP에서의조건적호출에대응). • EN이비활성되면 (예: 신호상태가 “0”) 상자는그기능을실행하지않습니다.따라서작동출력 ENO도비활성됩니다.

• EN이활성화되면 (예: 신호상태가 “1”) 상자의기능이실행됩니다.

ENO = 호출된블록이나복잡한함수는작동출력 ENO를이용해프로세싱이작동출력 오류없이실행되었는지여부를알려줄수있습니다.

사용자는상태워드의 BR 비트를사용하여오류를저장할수있습니다. BR 비트는우선순위클래스를시작할때자동적으로 1로설정됩니다. 따라서 BR 비트는시스템이아니라블록에의해서만변경됩니다. 프로세싱중에오류가발생하면사용자는 BR 비트를리셋함으로써이오류상태를 “저장”할수있습니다. LAD/FBD에서상자를프로세싱한후 BR 비트는작동파라미터 ENO로복사됩니다.따라서 STEP7에서는오류상태전달을위한단일메커니즘을사용할수있습니다. 예를들어이런방식으로호출된블록은프로세싱이오류없이실행되었는지여부를호출블록에게알려줄수있습니다.

참고 EN 파라미터는참된입력파라미터가아닙니다. 만약 EN 파라미터가할당되면상자프로세싱뒤의레이블로가는한개의조건적점프를가지는 2개의인스트럭션이자동적으로발생됩니다.이와마찬가지로 ENO는참된출력파라미터가아닙니다. 만약 ENO가할당되면BR 비트를현재의출력파라미터로복사하기위한 2개의인스트럭션이자동으로발생됩니다.

Date: 2002-02-23File: PRO2_01e.6

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

블록호출또는복잡한함수에서의 BR 비트및 ENO

LAD STL

네트워크 1: 순환 프로그램

FC23I0.0EN

MW10Step bit memory

Stepdisplay

ENO ( )M10.0

QW12

네트워크 2: ???

MUL_II0.0EN

345 IN1 OUT

ENO ( )M10.0

MW100

987 IN2

네트워크 1: 순환 프로그램

A I 0.0JNB _001CALL FC 21Step bit memory :=MW10Step display :=AW12

_001:U BIE= M 10.0

네트워크 2: ???L 345L 987+IT MW 100UN OVSAVECLRA BR= M 10.0

Page 8: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Status Bit-Dependent InstructionsPage 7

점프함수 사용자는논리제어함수를사용하여프로그램의선형프로세싱을인터럽트하고블록의또다른위치에서계속할수있습니다. 프로그램분기는조건에관계없이또는특정조건이만족될때에만실행될수있습니다.

무조건적점프 JU 점프함수는항상조건에관계없이실행됩니다. JU는프로그램의선형프로세싱을인터럽트하고점프레이블에서다시시작합니다. JU는점프에서나대상에서상태비트에영향을주지않습니다.

RLO와 BR을가진 프로그램분기는 RLO와 BR 비트의상태에따라발생합니다. 또한 RLO 비트점프함수 검사중에 BR 비트에서동시에이를저장할가능성이있습니다.

RLO에의존적인점프함수 (JC, JCN)는조건이충족되었을때는물론조건이충족되지않았을때에도상태비트 STA와 RLO를 “1”로, 비트 OR과 /FC를“0”으로설정합니다.“RLO 저장”점프함수 (JCB, JNB)는모든경우에 RLO 비트상태를 BR 비트에저장합니다. 나머지비트 STA, RLO, PLO, OR, /FC는 RLO를저장하지않는점프함수와같은방식으로처리됩니다.BR 비트에의존적인점프함수 (JBI, JNBI)는조건이충족되었을때는물론조건이충족되지않았을때에도 STA 비트를설정하며상태비트 STA를 “1”로비트 OR과 /FC를 “0”으로설정합니다. RLO와 BR 비트는변경되지않습니다.

Date: 2002-02-23File: PRO2_01e.7

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

상태비트에의존적인점프함수

JU 레이블1) 무조건점프

JC 레이블1) "RLO" 비트 =1이면점프

JCN 레이블1) "RLO" 비트 = 0이면점프

JCB 레이블1) "RLO" 비트 = 1이면점프그리고 RLO 저장

JNB 레이블1) "RLO" 비트 = 0이면점프그리고 RLO 저장

JBI 레이블1) "BR" 비트 = 1이면점프

JBNI 레이블1) "BR" 비트 = 0이면점프

JO 레이블1) 상태워드에서 "OV" 비트 =1이면점프

JOS 레이블1) 상태워드에서 "OS" 비트 =1이면점프

1)레이블은 4자의영숫자로구성될수있습니다.

Page 9: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Status Bit-Dependent InstructionsPage 8

OV와 OS를가진 JO와 JOS 점프는과잉이발생할때실행됩니다. 여러개의연속적으로실행된점프함수 인스트럭션을가진문자열계산에서 OV 비트의평가가모든수치연산함수

이후에이루어져야합니다. 과잉의결과가허용된숫자범위에있는경우그과잉이후의수치연산인스트럭션은 OV 비트를리셋합니다. 일어날수있는숫자범위과잉을문자열계산이끝날때평가하기위해 OS 비트를검사합니다. OS 비트는 JOS 점프뿐만아니라블록호출과블록엔드에의해리셋됩니다.상태워드의나머지비트는점프함수 JO와 JOS로변경되지않습니다.

CC0과 CC1을가진 프로그램함수는상태비트 CC0와 CC1에의존해서발생할수있습니다. 따라서점프함수 예를들어계산의결과가양수인지 0인지음수인지를검사할수있습니다.

상태비트 CC0와 CC1에의존하는점프함수는어떤상태비트도변경하지않습니다. 논리연산의결과를점프와함께 “취해서”사용자프로그램에서후속논리연산을위해사용할수있습니다 (/FC에는변경없음).

보기 정수 2개의빼기와후속평가L MW2L MW8-IJZ ZERO // 결과가 "0”이면점프발생

// 결과가 "0"이아닌경우의인스트럭션ZERO: NOP 0 // 결과가 “0”일때의반응을위한인스트럭션

Date: 2002-02-23File: PRO2_01e.8

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

조건코드에의존적인점프함수

JZ 레이블1) 상태워드에서비트 "CC1"=0이고 "CC0"=0이면점프(결과 = 0)

JN 레이블1) 상태워드에서비트 "CC1”가 "CC0”와같지않으면점프(결과 <> 0)

JP 레이블1) 상태워드에서비트 "CC1"=1이고 "CC0"=0이면점프(결과 > 0)

JM 레이블1) 상태워드에서비트 "CC1"=0이고 "CC0"=1이면점프(결과 < 0)

JPZ 레이블1) JZ 점프와 JP 점프를결합(결과 >= 0)

JMZ 레이블1) JM 점프와 JZ 점프를결합(결과 <= 0)

JUO 레이블1) “명령되지않은”잘못된 REAL 숫자이거나 0으로나누기면점프

1)레이블은 4자의영숫자로구성될수있습니다.

Page 10: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Status Bit-Dependent InstructionsPage 9

점프분산자 점프분산자 JL은점프번호에의존하는블록에서프로그램부분으로대상이지정된점프를허용합니다. JL 인스트럭션은 JU 점프함수목록과함께작동합니다. 이목록은 JL 바로뒤에나오며최고 255개의입력을포함할수있습니다. JL의경우목록의끝, 즉목록후의첫번째인스트럭션을가리키는점프레이블이있습니다.JU 인스트럭션만이 JL <점프레이블>과 <점프레이블>: <인스트럭션> 사이에올수있습니다. “0”이 ACCU1-L-L에위치하면첫번째인스트럭션이실행되고“1”이위치하면두번째인스트럭션이실행됩니다. 숫자가목록길이보다크면JL은목록의끝으로분기합니다.인스트럭션 JL은모든조건에관계없이실행되며 JL의경우상태비트를변경하지않습니다.

참고 점프는전체블록길이이내에서 (심지어네트워크경계를넘어서) 발생할수있습니다. 이런이유로점프레이블의이름은한블록내에서고유해야합니다. 점프거리가점프레이블에의해서점프에할당될수있기때문에한프로그램블록내에서의점프만이가능합니다. 점프레이블의길이는영숫자 4자로제한되어있으며따라서첫번째글자는문자여야합니다. 점프레이블에서는대문자와소문자를가립니다.인스트럭션은 “.”으로구분되어점프레이블후에반드시와야만합니다.최대점프거리는프로그램코드의 -32768 워드또는 +32767 워드입니다. 점프할수있는실제최대명령문숫자는프로그램에사용되는명령문의혼합에달려있습니다 (한단어, 두단어, 세단어명령문).

Date: 2002-02-23File: PRO2_01e.9

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

점프분산자의프로그래밍

점프번호로드

JL 레이블

...

ACCU1 > n인인스트럭션

보기: 3개항목을가진점프분산자

L Recipe no// 레시피를로드하지않음

JL OVER // 3개항목을가진점프분산자

JU Rec0 // 레시피 0번으로점프 (ACCU1 = 0)

JU Rec1 // 레시피 1번으로점프 (ACCU1 = 1)

JU Rec2 // 레시피 2번으로점프 (ACCU1 = 2)

OVER:JU ERROR // ACCU1 > 2면점프...

Rec0: L DBW4...

Rec1: L DBW6...

Rec2: L DBW8...

ERROR: CLR...

작동모드

레이블_n:

JU 레이블_1

JU 레이블_n

ACCU1 = 1인인스트럭션

...

ACCU1 = 1인인스트럭션

레이블:

레이블_1:

Page 11: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Status Bit-Dependent InstructionsPage 10

루프인스트럭션 루프인스트럭션 LOOP는단순화된루프프로그래밍을허용합니다. 루프인스트럭션을프로그래밍하기위해실행될루프스캔의원하는회수를ACCU1-L에로드합니다. LOOP는 ACCU1의오른쪽워드를 0에서 65535까지의부호없는 16비트숫자로해석합니다.LOOP 인스트럭션을실행할때마다 ACCU1-L의값은 1만큼감소합니다. 이후에값은 0과비교됩니다. 값이 0과같지않으면 LOOP 인스트럭션에서지정된점프레이블로점프가발생합니다. 값이 0이면점프는발생하지않고대신에바로뒤에오는인스트럭션이처리됩니다.

참고 루프카운터가 0으로초기화되면안됩니다. 0으로초기화되면루프가 65535번실행됩니다.

Date: 2002-02-23File: PRO2_01e.10

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

루프인스트럭션의프로그래밍

루프카운터초기화

루프(점감 ACCU1ACCU1 <> 0 ?)

아니오

계속

레이블:

여러번실행될코드절

ACCU1에서루프카운터로드

보기: 4개의스캔을가진루프인스트럭션

L +4 // 루프카운터로드

다음: T MW10 // 루프의시작

. // 코드

. // 코드

. // 코드

L MW10 // 다시루프카운터로드

LOOP NEXT // 루프카운터가 -1이면// NEXT 점프로점프// Accu 1> 0이면레이블

작동모드

루프카운터로전송

Page 12: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Status Bit-Dependent InstructionsPage 11

블록엔드 논리연산의결과에의존적인 BEC나조건에관계없는 BE로블록의프로세싱을함수 끝낼수있습니다.

BE BE 인스트럭션은현재의프로그램블록에서프로그램프로세싱을끝냅니다. BE는항상블록의마지막인스트럭션입니다. BE는블록이저장될때 PG에의해자동적으로만들어집니다. 따라서 BE는별도로입력될필요가없습니다. 운영시스템은호출블록으로다시분기해서프로그램호출이후첫번째인스트럭션으로프로그램프로세싱을다시시작합니다. 현재예약된로컬데이터영역은다시한번사용가능해집니다.

BEU BEU 인스트럭션은 BE처럼현재의프로그램블록에서프로그램프로세싱을끝냅니다. BE 인스트럭션과는달리사용자는한블록이내에서반복하여 BEU를프로그램할수있습니다. BEU 이후의프로그램부분은점프함수로점프될때에만처리됩니다.

BEC 블록은 RLO 비트값에따라끝납니다. RLO=1이면프로그램프로세싱은현재의블록에서끝나프로그램호출이후첫번째인스트럭션으로호출블록에서다시시작됩니다. 현재예약된로컬데이터영역은다시한번사용가능해집니다. RLO=0이면 BEC 인스트럭션은실행되지않습니다. CPU는 RLO를 “1”로설정하며 BEC 이후의인스트럭션을처리합니다.

Date: 2002-02-23File: PRO2_01e.11

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

BE 블록엔드

BEU 무조건적블록엔드 (한블록이내)

BEC 조건적블록엔드 (RLO에의존)

(RET) LAD 디스플레이에서

FBD 디스플레이에서

블록엔드에대한인스트럭션

RET

Page 13: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Status Bit-Dependent InstructionsPage 12

Date: 2002-02-23File: PRO2_01e.12

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

연습 1.1: 빼기연산후점프

푸시휠스위치

1 2 3 4

- D

양수결과 (>=0)

디스플레이에 IW 0 값쓰기

디스플레이삭제

음수결과

[JM 레이블]

DINT로변환

DINT로변환

BTD BTD

0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0

20215 27

시뮬레이터에서스위치토글

데케이드스위치: S7-300: IW4 (IW2, 32-Bit Mod.) 디스플레이: S7-300: QW12 (QW6, 32-Bit Mod.)S7-400: IW30 S7-400: QW38

토글스위치: S7-300: IW0 (IW0)S7-400: IW28

개요 점프함수에의해프로그램의선형프로세싱은인터럽트되어또다른위치에서계속될수있습니다. 특히그런점프는조건 (결과)에의존하여발생합니다.

연습목적 빼기의결과에따라실행되는점프함수의프로그래밍에익숙해지기

문제정의 프로젝트 PRO2를만든후연습이란이름을붙여 S7 프로그램컨테이너를만들고다음기능을가진 FC 11을만듭니다.1. 데케이드스위치와토글스위치의입력워드를누산기의 BCD 코드값으로로드합니다.

2. 얻어진값을 DINT로전환합니다. 전환을위해 BTD 명령 (BCD_TO_DINT)을사용합니다. 이명령을사용하면읽은값이양의 4자리십진수로해석됩니다.

3. 데케이드스위치의 “값”에서토글스위치의 “값”을뺍니다.4 그결과에따라다음행동을취합니다.결과 < 0: 시뮬레이터의디스플레이를삭제합니다. 즉, 디스플레이로 “0”을전송합니다.결과 >= 0: 데케이드스위치의 BCD 코드값을디스플레이에출력합니다.참고: 사례구분을위해점프명령 "JM [Label]”을사용합니다. 숫자설정중의전환오류를숨기기위해인스트럭션 NOP 0과함께 OB121을프로그램합니다.

5. OB1에서 FC11을호출하여 S7-CPU에서블록 (OB1, OB121, FC11)을다운로드합니다.

6. 프로그램을테스트합니다.

Page 14: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Status Bit-Dependent InstructionsPage 13

연습목적 곱하기결과에따라실행되는점프함수의프로그래밍에익숙해지기

문제정의 다음기능을가진 FC 12를만듭니다.1. 데케이드스위치와토글스위치의입력워드를누산기의 BCD 코드값 (부호없이)으로로드합니다.

2. 얻어진값을 DINT로전환합니다. 전환을위해 BTD 명령 (BCD_TO_DINT)을사용합니다. 이명령을사용하면읽은값이양의 4자리십진수로해석됩니다.

3. 16비트곱하기를실행합니다.4. “과잉”이되었는지계산결과를검사하고다음행동을취합니다.과잉: 디스플레이를삭제합니다.과잉없음: 대응하는양의 BCD 숫자로결과를전환하고그결과 (적어도 4자리수)를디스플레이에출력합니다.참고: 점프명령 "JO [Label]”를사용하여 “과잉”여부를테스트합니다.자릿수설정중의전환오류를숨기기위해인스트럭션 NOP 0과함께 OB121을프로그램합니다.

5. OB1에서 FC12를불러 S7-CPU에서프로그램 (OB1,OB121, FC12)을다운로드합니다.

6. 프로그램을테스트합니다.

Date: 2002-02-23File: PRO2_01e.13

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

연습 1.2: 곱하기연산후점프

푸시휠스위치

1 2 3 4

*I

과잉없음

결과를디스플레이에출력

디스플레이삭제

과잉

[JO 레이블]

DINT로변환

DINT로변환

BTD BTD

0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0

20215 27

시뮬레이터의토글스위치

데케이드스위치: S7-300: IW4 (IW2, 32-Bit Mod.) 디스플레이: S7-300: QW12 (QW6, 32-Bit Mod.)S7-400: IW30 S7-400: QW38

토글스위치: S7-300: IW0 (IW0)S7-400: IW28

DTB 결과를BCD로변환

Page 15: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Status Bit-Dependent InstructionsPage 14

연습목적 목록을이용해점프의사용에익숙해지기

문제정의 다음기능을가진 FC 13을만듭니다.• 1에서 5까지중한숫자가 INT 데이터종류에서입력파라미터 “Select”를통해전달될수있습니다.

• 전달된숫자에따라다음행동이실행됩니다.1: 컨베이어벨트가최종어셈블리로이동합니다.2: 컨베이어벨트가반대방향으로이동합니다.3: 컨베이어벨트가중지합니다.4: 경적이켜집니다.5: 경적이꺼집니다.

• 다른숫자는모두오류로해석됩니다. 즉, “출력파라미터” ENO는 FALSE로설정됩니다.

절차 1. 위에설명된기능을가진 FC13을만듭니다. 목록으로점프를실행할때오직절대점프만이사용될수있음에주의합니다.

2. 128.0에의존하는 OB1에서 FC13을호출합니다. 누산기의데케이드스위치를이용해서전달될입력파라미터 “Select”값을조정하며, 이값은상승에지로 128.0에적용됩니다.

4. 오류가발생하면, 즉 “Select”의값이 5보다크거나 1보다작으면 Q36.0이파라미터 ENO를통해 OB1에설정됩니다.

5. OB1과 FC13을다운로드하고프로그램을테스트합니다.

Date: 2002-02-23File: PRO2_01e.14

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

연습 1.3: 점프분산자프로그래밍

푸시휠스위치

1

1

23

4

5

Motor_let run to the right

Motor_let run to the left

Motor off

Horn on

Horn off

Jump To List를통해점프

함수:

[JL 레이블]

레이블:

어드레스: S7-300 (16-Bit) S7-300 (32-Bit) S7-400Motor_right: Q20.5 Q8.5 Q40.5Motor_left: Q20.6 Q8.6 Q40.6Horn: Q20.7 Q8.7 Q40.7

Page 16: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Accumulator FunctionsPage 1

목차 페이지

누산기함수의개요 ..………………….......................................................................................... 2TAK 인스트럭션 (ACCU1과 ACCU2 토글) ………....................................................................... 3PUSH와 POP 인스트럭션 ……….................................................................................................. 4ENT와 LEAVE 인스트럭션 (only S7-400) ……........................................................................... 5산술인스트럭션 …....................................................................................................................... 6워드논리인스트럭션 …................................................................................................................ 7ACCU1에대한변경인스트럭션 ................................................................................................. 8ACCU1에대한증가인스트럭션 .............................................................................................. 91의보수만들기 ………………................................................................................................... 10숫자의부정 (2의보수) ………………..................................................................................………... 11CC1 비트를통한 32비트회전인스트럭션 .................................................................................. 12연습 2.1: 거듭제곱계산 ……………............................................................................................. 13연습 2.2: ACCU1에서의데이터교환 ......................................................................................... 14연습 2.3: 보수만들기 …………………............................................................................................ 15

Date: 2002-02-23File: PRO2_02e.1

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

누산기함수

Page 17: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Accumulator FunctionsPage 2

개요 누산기함수는누산기간에값을전송하거나누산기 1에서바이트를교환합니다. 순수누산기함수의실행은논리연산이나상태비트의결과와관계없습니다.마찬가지로논리연산의결과나상태비트의결과도누산기함수의실행에영향을받지않습니다.누산기함수는최적의자동화작업실행시간프로그래밍을허용합니다.

Date: 2002-02-23File: PRO2_02e.2

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

누산기함수의개요

몇개의 ACCU에영향을주는인스트럭션TAK: ACCU1과 ACCU2의내용을토글 (스왑)PUSH: ACCU 내용을 “위로”자리이동POP: ACCU 내용을 “아래로”자리이동ENT: ACCU 내용을 ACCU1 없이 “위로”자리이동LEAVE: ACCU 내용을 ACCU2없이 “아래로”자리이동수치연산인스트럭션및워드논리인스트럭션

ACCU1에만영향을주는인스트럭션INC: ACCU 1-L-L의내용을증가DEC: ACCU 1-L-L의내용을감소CAW: ACCU1-L에서바이트의순서를반대로함CAD: ACCU1-L에서바이트의순서를반대로함INVI, INVD: 1씩더한값만들기NEGI, NEGD, NEGR: 2씩더한값만들기 (부정)RLDA, RRDA: 조건코드비트 CC1을통해 ACCU1의내용을왼쪽이나오른쪽으로회전

Page 18: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Accumulator FunctionsPage 3

TAK TAK (ACCU 2로 ACCU 1 토글) 는 ACCU1의내용을 ACCU2의내용으로교환합니다. 이인스트럭션은상태비트에관계없이, 그리고상태비트에영향을주지않고실행됩니다. ACCU3과 ACCU4의내용은 4개의 ACCU를가진 CPU (S7-400)의경우변하지않습니다.

보기 보다큰값에서작은값을뺍니다.L MW10 // MW10의내용을 AKKU1-L에로드합니다.L MW12 // ACCU1-L의내용을 ACCU2-L에로드합니다.

// MW12의내용을 ACCU1-L에로드합니다.>I // ACCU2-L (MW10)의값이 ACCU1-L (MW12)보다큰지

// 여부를검사합니다.JC NEXT // ACCU 2 (MW10)가 ACCU 1 (MW12)보다크면

// NEXT 점프레이블로점프합니다.TAK // ACCU 1과 ACCU 2의내용을바꿉니다.

NEXT:-I // ACCU2-L의내용에서 ACCU1-L의내용을뺍니다. T MW14 // 결과 (보다큰값에서작은값을뺀값)를 MW14로

// 전송합니다.

Date: 2002-02-23File: PRO2_02e.3

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

인스트럭션 TAK (ACCU1과 ACCU2 토글)

S7-300:

S7-400:

ACCU1

ACCU2W1W2

W2W1

before after

ACCU1ACCU2

W1W2W3W4

ACCU3ACCU4

W2W1W3W4

before after

TAK

TAK

Page 19: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Accumulator FunctionsPage 4

PUSH 인스트럭션 PUSH는각경우마다누산기의내용을그다음높은누산기로자리이동합니다. PUSH는일반적으로 ACCU2나 ACCU3 (S7-400 전용)의원래내용을잃지않고 ACCU1의값을복제하기위해사용됩니다. • PUSH (S7-300): 인스트럭션 PUSH는 ACCU1의전체내용을 ACCU2에복사합니다. ACCU1은변경되지않습니다.

• PUSH (S7-400): 인스트럭션 PUSH는 ACCU3의내용을 ACCU4에,ACCU2의내용을 ACCU3에, ACCU1의내용을 ACCU2에복사합니다.ACCU1은변경되지않습니다.

POP 인스트럭션 POP은누산기 2에서 4까지나타난값을아래에있는 ACCU에가져옵니다. 이인스트럭션은일반적으로 ACCU1의내용이더이상이필요하지않고프로세싱이위에있는 ACCU에서저장된값으로계속될때인스트럭션을전송한후실행됩니다.• POP (S7-300): 인스트럭션 POP은 ACCU2의전체내용을 ACCU1에복사합니다. ACCU2는변경되지않습니다.

• POP (S7-400): 인스트럭션 POP은 ACCU2의내용을 ACCU1에, ACCU3의내용을 ACCU2에, ACCU4의내용을 ACCU3에복사합니다. ACCU4는변경되지않습니다.

Date: 2002-02-23File: PRO2_02e.4

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

인스트럭션 PUSH와 POP

S7-300:

ACCU1ACCU2

W1W2

W1W1

before afterPUSH

S7-400:

ACCU1ACCU2ACCU3ACCU4

W1W2

W1W2W3W4

W1W1W2W3

before afterPUSH

W2W2

before afterPOP

W1W2W3W4

W2W3W4W4

before afterPOP

Page 20: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Accumulator FunctionsPage 5

ENT 인스트럭션 ENT (ENTER ACCU Stack)는각경우마다누산기 2와 3의내용을그다음높은누산기로자리이동합니다. 누산기 1과 2의내용은변경되지않습니다. ENT 뒤에바로로드함수를쓰는경우• ENT

L ...은로드하는중누산기 1에서 3까지의내용이 “위로” (PUSH와유사) 자리이동되고 ACCU1에서로드된값은남아있습니다. 인스트럭션 ENT는상태비트와관계없이, 그리고상태비트에영향을주지않고실행됩니다.

LEAVE 인스트럭션 LEAVE는각경우마다누산기 3과 4의내용을아래의누산기로자리이동합니다. 누산기 4와 1의내용은변경되지않습니다.산술함수는 LEAVE의기능을포함합니다. LEAVE의경우다른디지털논리연산 (예: 워드논리인스트럭션)에서같은기능을모방할수도있습니다. 디지털논리연산후에프로그램된 LEAVE는누산기 3과 4의내용을누산기 2와3에가져옵니다. 디지털논리연산의결과는누산기 1에서변경되지않습니다.

Date: 2002-02-23File: PRO2_02e.5

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

인스트럭션 ENT와 LEAVE (S7-400 전용)

ENT:

LEAVE:

W1W2W3W4

ACCU1ACCU2ACCU3ACCU4

W1W2W2W3

before after

W1W2W3W4

ACCU1ACCU2ACCU3ACCU4

W1W3W4W4

before after

Page 21: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Accumulator FunctionsPage 6

산술 산술인스트럭션은기본적인산술연산에따라누산기 1과 2에나타난 2개의인스트럭션 디지털값을결합합니다. 계산의결과는누산기 1에나타납니다.

상태비트 CC0, CC1과 OV, OS는결과또는계산의중간결과에대한정보를줍니다.

S7-300 S7-300 CPU의경우 ACCU2의내용은산술함수를실행해도변경되지않습니다.

S7-400 S7-400 CPU의경우 ACCU3의내용이 ACCU2의내용을덮어씁니다. ACCU4의내용은 ACCU3에전송됩니다.

보기 다음프로그램세그먼트는코드가 S7-300 CPU에서실행되느냐 S7-400 CPU에서실행되느냐에따라다른결과를가져옵니다.L 0 // ACCU1에정수 0을로드합니다.L 5 // ACCU1에정수 5를, ACCU2에정수 0을로드합니다.PUSH // 5 (ACCU1)를 ACCU2로자리이동합니다.;

// (S7-400: ACCU2 - > ACCU3)*I // ACCU1과 ACCU2를곱합니다.; (S7-400: ACCU3 -> ACCU2) *I // ACCU1과 ACCU2를곱합니다.; (S7-400: ACCU3 -> ACCU2) 결과:S7-300: ACCU1 = 125S7-400: ACCU1 = 0

Date: 2002-02-23File: PRO2_02e.6

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

산술인스트럭션

S7-300:

S7-400:

ACCU1

ACCU2W1W2

W1 op W2W2

before after

ACCU1ACCU2

W1W2W3W4

ACCU3ACCU4

W3W40

before after

op: +., -., *., /.

W1 op W2op: +., -., *., /.

Page 22: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Accumulator FunctionsPage 7

워드논리 워드논리인스트럭션은비트마다 ACCU1에나타난값을상수또는 ACCU2의인스트럭션 내용과결합하여그결과를 ACCU1에저장합니다.

나머지 ACCU (S7-300의경우 ACCU2, S7-400의경우 ACCU2, ACCU3, ACCU4)의내용은변경되지않습니다. 논리연산은워드별로또는더블워드별로실행될수있습니다.인스트럭션 AND, OR, Exclusive OR는워드논리인스트럭션으로사용할수있습니다.

Date: 2002-02-23File: PRO2_02e.7

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

워드논리인스트럭션

S7-300:

S7-400:

ACCU1

ACCU2W1W2

W1 op W2W2

before after

ACCU1ACCU2

W1W2W3W4

ACCU3ACCU4

W2W3W4

before after

op: A.., O.., X..,

W1 op W2op: A.., O.., X..,

Page 23: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Accumulator FunctionsPage 8

CAW 인스트럭션 CAW의경우, ACCU1의오른쪽데이터워드에있는바이트가교환됩니다. 즉, ACCU1-LH의내용이 ACCU1-LL에전송되고그반대로 ACCU1-LL의내용은 ACCU1-LH에전송됩니다.이이스트럭션을사용하면 SIMATIC 표시에서 16 비트숫자형식 (INT와WORD)을 INTEL 표시숫자형식으로전환할수있습니다 (PC로데이터전송).

CAD 인스트럭션 CAD의경우, ACCU1에있는바이트가교환됩니다. 즉, ACCU1-HH의내용이 ACCU1-LL에전송되고그반대로 ACCU1-LL의내용이 ACCU1-HH에전송되거나 ACCU1-HL의내용이 ACCU1-LH에전송되고그반대로ACCU1-LH의내용이 ACCU1-HL에전송됩니다.이인스트럭션을사용하면 SIMATIC 표시에서 32 비트숫자형식 (DINT, DWORD, REAL)을 INTEL 표시숫자형식으로전환할수있습니다 (PC로데이터전송).

Date: 2002-02-23File: PRO2_02e.8

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

ACCU1에대한인스트럭션변경

CAW:

CAD:

W4 W3 W2 W1

ACCU1-HH ACCU1-HL ACCU1-LH ACCU1-LL

W4 W3 W1 W2

W4 W3 W2 W1

W1 W2 W3 W4

Page 24: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Accumulator FunctionsPage 9

INC 인스트럭션 INC <8비트정수>는 ACCU1-LL의내용에 8비트정수를더하고그결과를 ACCU1-LL에저장합니다. ACCU1-LH, ACCU1-H, ACCU2 또는 ACCU3과 ACCU4는변경되지않습니다.

DEC 인스트럭션 DEC <8비트정수>는 ACCU1-LL의내용에서 8비트정수를빼서그결과를 ACCU1-LL에저장합니다.ACCU1-LH, ACCU1-H, ACCU2 또는 ACCU3과 ACCU4는변경되지않습니다.

Date: 2002-02-23File: PRO2_02e.9

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

ACCU1에대한인스트럭션증가

ACCU1-HH ACCU1-HL ACCU1-LH ACCU1-LLINC <const>:

W4 W3 W2 W1

W4 W3 W2 W1+<const>

+ <const>

DEC <const>:

W4 W3 W2 W1

W4 W3 W2 W1-<const>

- <const>

Page 25: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Accumulator FunctionsPage 10

INVI 인스트럭션 INVI는비트마다누산기 1의오른쪽워드에있는값 (비트 0에서15)을반대로합니다. 이렇게하면 0은 1로대체되고 1은 0으로대체됩니다. 왼쪽워드의내용 (비트 16에서 31)은변경되지않습니다.인스트럭션 INVI는상태비트를설정하지않습니다.

INVD 인스트럭션 INVD는비트마다누산기 1에있는값 (비트 0에서 31)을반대로합니다. 이렇게하면 0을 1로, 그리고 1을 0으로대체합니다. 인스트럭션 INVD는상태비트를설정하지않습니다.

Date: 2002-02-23File: PRO2_02e.10

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

1의보수만들기

0 1 0 0 0 0 1 0 0 1 0 0 1 0 0 1 1 0 0 0 1 1 0 0 0 1 0 0 0 1 1 1

031

INVI (ACCU1-L에서 1의보수):15 ACCU1-LACCU1-H

0 1 0 0 0 0 1 0 0 1 0 0 1 0 0 1 0 1 1 1 0 0 1 1 1 0 1 1 1 0 0 0

031 15

0 1 0 0 0 0 1 0 0 1 0 0 1 0 0 1 1 0 0 0 1 1 0 0 0 1 0 0 0 1 1 1

031

INVD (ACCU1에서 1의보수):15 ACCU1-LACCU1-H

1 0 1 1 1 1 0 1 1 0 1 1 0 1 1 0 0 1 1 1 0 0 1 1 1 0 1 1 1 0 0 0

031 15

Page 26: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Accumulator FunctionsPage 11

NEGI 인스트럭션 NEGI는 ACCU1의오른쪽워드에있는값 (비트 0에서 15)을 INT 숫자로해석하고 2의보수를만들어부호를반대로합니다. 이인스트럭션은 ‘-1’을곱하는것과같습니다. ACCU1의왼쪽워드 (비트 16에서31)는변경되지않습니다.상태비트 CC1, CC0, OS, OV는연산의결과함수로서설정됩니다.

NEGD 인스트럭션 NEGD는 ACCU1에있는값을 REAL 숫자로해석하고그값에 ‘-1’을곱합니다. 2의보수를만들려면 1의보수를만든후다시 1을 (빼기와같은이진숫자와) 더하면됩니다.상태비트 CC1, CC0, OS, OV는연산의결과함수로서설정됩니다.

NEGR 인스트럭션 NEGR은 ACCU1에있는값을 REAL 숫자 (32 비트, IEEE-FP)로해석하고이숫자에 ‘-1’을곱합니다. 이인스트럭션은 ACCU1에있는비트 31의상태를반대로합니다 (가수의단수) 인스트럭션 NEGR은상태비트를변경하지않습니다.

Date: 2002-02-23File: PRO2_02e.11

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

숫자의부정 (2의보수)

OUT

NEGI (INT 숫자의부정)

NEGD (DINT 숫자의부정):

0 1 0 0 0 0 1 0 0 1 0 0 1 0 0 1 1 0 0 0 1 1 0 0 0 1 0 0 0 1 1 1

031

1 0 1 1 1 1 0 1 1 0 1 1 0 1 1 0 0 1 1 1 0 0 1 1 1 0 1 1 1 0 0 0031 1의보수

1 0 1 1 1 1 0 1 1 0 1 1 0 1 1 0 0 1 1 1 0 0 1 1 1 0 1 1 1 0 0 131

1을더하기 1

NEGR (REAL 숫자의부정):= 1.3125

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 1 1 1 1 1 1 1 1 1 0 1 0 0 0 0

Exponent = 8 BitVZ Mantissa (23 Bits)02223

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 01 1 1 1 1 1 1 1 1 1 0 1 0 0 0 0

= 1 112 116 295

Page 27: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Accumulator FunctionsPage 12

RLDA 시프트함수 RLDA는 ACCU1의전체내용을 1 비트씩왼쪽으로자리이동합니다. 자리이동중에비게되는비트위치 (비트 0)은상태비트 CC1의신호상태로채워집니다. 상태비트 CC1은밀려난비트 (비트 31)의신호상태를포함합니다.상태비트 CC0과 OV는 “0”으로리셋됩니다. • 보기:

ACCU1: 0100 0100 1100 0100CC1: 1RLDAACCU1: 1000 1001 1000 1001CC1: 0

RRDA 시프트함수 RRDA는 ACCU1의전체내용을 1 비트씩오른쪽으로자리이동합니다. 자리이동중에비게되는비트위치 (비트 31)은상태비트 CC1의신호상태로채워집니다. 상태비트 CC1은밀려난비트 (비트 0)의신호상태를포함합니다.상태비트 CC0과 OV는 "0”으로리셋됩니다. • 보기:

ACCU1: 0100 0100 1100 0100CC1: 1RRDAACCU1: 1010 0010 0110 0010CC1: 0

Date: 2002-02-23File: PRO2_02e.12

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

CC1 비트를통한 32비트회전인스트럭션

OUT

0 1 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

031

CC1 비트

RLDA (상태비트 CC1을통한왼쪽회전):

RRDA (상태비트 CC1을통한오른쪽회전):

0 1 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

031

CC1 비트

ACCU1

ACCU1

Page 28: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Accumulator FunctionsPage 13

연습목적 정수의거듭제곱계산으로 ACCU 변경함수에익숙해지기

문제정의 다음기능을가진 FC21을만듭니다.• 푸시휠스위치의왼쪽바이트에서읽은 BCK 값을정수값 (BTI)으로전환합니다.

• 읽은값을 6제곱합니다.

절차 1. ACCU1의내용을 PUSH 명령을이용해 ACCU2에복사합니다.2. ACCU1을 ACCU2로곱합니다 (제곱하기)3. ACCU1의내용을 PUSH 명령을이용해 ACCU2에복사합니다.4. 기타, 기타, 기타주의: FC21이정확한결과를 S7-400-CPU뿐만아니라 S7-300-CPU에전달하기위해 4단계가어떻게실행되어야합니까?

5. 그결과를디지털디스플레이에표시합니다.6. OB1에서 FC21을호출하고 S7-CPU에프로그램을다운로드합니다.7. 프로그램을테스트합니다.

참고 읽은값이너무커지지않도록오른쪽 10개만이사용됩니다.

Date: 2002-02-23File: PRO2_02e.13

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

연습 2.1: 지수계산

보기 : 연속적인 PUSH와 *I의사용을통해정수를 6제곱하기

ACCU1

ACCU2

PUSH로복사

I로곱하기

ACCU1

푸시휠스위치

x y 0 0

INT로전환 BTI

Page 29: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Accumulator FunctionsPage 14

연습목적 ACCU1의교환바이트에대한인스트럭션에익숙해지기응용: SIMATIC 제어기의숫자표시를 INTEL-CPU (80486, Pentium,..)을사용하는 PC의표시로전환이러한전환은항상숫자값이 SIMATIC 제어기와 PC 간에교환된후실행되어야합니다.

문제정의 다음기능을가진 FC22를만듭니다.• ACCU1에푸시휠스위치의값을로드합니다.• ACCU1 - L에서 CAW 명령을이용해그 2개의바이트를교환합니다. • ACCU1의내용을디지털디스플레이에표시합니다.

절차 1. FC22를만듭니다.2. OB1에서 FC22를호출합니다.3. 프로그램을 S7-CPU에다운로드합니다. 4. 프로그램을테스트합니다.

Date: 2002-02-23File: PRO2_02e.14

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

2 3

연습 2.2 : ACCU1에서의데이터교환

ACCU1 - L (before)10

CAW

ACCU1 - L (after)0 132

Page 30: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Accumulator FunctionsPage 15

연습목적 SIMATIC S7에서보수를만들기위한인스트럭션에익숙해지기응용: “음수”논리를 “양수”논리로전환그러한전환은항상사용자프로그램이관련된양수논리와작업하는방식에관계없이 0일때활성되는신호를읽을때또는반대로된 (0일때활성) 신호가필드장치에출력될때시작됩니다.

문제정의 다음기능을가진 FC23을만듭니다.• ACCU1에있는토글스위치의워드값을로드합니다.• 1씩더한값을만듭니다.• 그결과를시뮬레이터의 LED에출력합니다.

절차 1. FC23을만듭니다.2. OB1에서 FC23을호출합니다. 3. 프로그램을 S7-CPU에다운로드합니다.4. 상태변수와미리설정된이진법옵션을이용해서프로그램을테스트합니다.

Date: 2002-02-23File: PRO2_02e.15

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

연습 2.3 : 보수만들기

Bit 15 Bit 0

1의보수만들기 : INVI

1 . . . . . . . . . . . . 1 0 1

ACCU1-L (before)

Bit 15 Bit 0

0 . . . . . . . . . . . . 0 1 0

ACCU1-L (after)

Page 31: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Instructions with REAL NumbersPage 1

목차 페이지

SIMATIC S7에서의 REAL 숫자표시 ……….............................................................................. 2REAL 숫자를가지는기본인스트럭션 ....................................................................................... 3확장된산술함수 …………………............................................................................................. 4삼각함수와역함수 ……………………………………................................................................... 5REAL 숫자를가지는다른인스트럭션 ...................................................................................... 6연습 3.1: 거리계산 ……………………......................................................................................... 7

Date: 2002-02-23File: PRO2_03e.1

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

REAL 숫자를가진인스트럭션

y=LN(x)

sin?cos?

tan?...?

??

Page 32: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Instructions with REAL NumbersPage 2

REAL 숫자 REAL (부동소수점) 숫자는프로세스제어및폐쇄루프프로세스제어를위한복잡한산술계산을가능하게합니다. REAL 데이터형변수는내부적으로 3개의구성요소, 즉부호, 기수 2의 8비트지수, 23 비트가수로구성됩니다. 부호는 “0” (양수)이나 “1” (음수) 값을가질수있습니다. 지수는상수 1씩증가하고 (바이어스, +127) 저장되어값은 0에서 255까지의범위를가집니다. 가수는분수부분을나타냅니다. 가수의정수부분은항상 1 (정상부동소수점일경우)이나 0 (비정상부동소수점일경우)이기때문에저장되지않습니다.

범위제한

대상 값 e 가수 f 값 CC1 CC0 OV OS

부동소수점 255 <>0 [qNaN] 1 1 1 1숫자가아님

과잉 255 0 >(2-2-23) 2127 1 0 1 1<(-2+ 2-23) 2127 0 1 1 1

정상숫자 1.. 254 any (1.f) 2e-127 1 0 0 -(-1.f) 2e-127 0 1 0 -

비정상숫자 0 <>0 (0.f) 2-126 0 0 1 1(- 0.f) 2-126 0 0 1 1

널 0 0 +0 0 0 0 -

참고 CPU는부동소수점숫자로정확하게계산합니다. PG의디스플레이는전환할때의반올림오류때문에정확하게표시되지않을수있습니다. REAL 숫자는소수점 6번째자리로반올림됩니다.

Date: 2002-02-23File: PRO2_03e.2

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

SIMATIC S7에서의 REAL 숫자표시

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

0 1 0 0 0 0 1 0 1 1 0 1 0 0 0 0

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

지수: e = 8 비트VZ가수: f (23 비트)

REAL 숫자의표시형식 (IEEE FP 32 비트이진법메모리형식)

정상 REAL 숫자의표시VZ x (1.f) x 2 (e-127) VZ = 부호비트, (0은 +, 1은 -)

f = MSB를가진 23비트가수 = 2-1 그리고 LSB =2-23e = 2진법정수지수 (0 < e < 255)

정상 REAL 숫자값의범위:- 3,402 823 x 10+38 ... -1,175 494 x 10-38, 0, 1,175 494 x 10-38 ... 3,402 823 x 10+38

2-1 2-23

보기:VZ = 0e = 1000 0101 = 133f = 1010 0000... = 0.5 + 0.125

R = +1.625 x 2(133-127) = 1.625 x 64 = 104.0

Page 33: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Instructions with REAL NumbersPage 3

개요 함수 +R, -R, *R, /R은 ACCU1과 ACCU2에나타난값을 REAL 데이터형숫자로해석합니다. 이값은프로그램된논리연산 (+R, -R, *R and /R)을실행하며ACCU1에그결과를저장합니다.계산이끝난후에상태비트 CC0와 CC1은결과가음수 (CC1=0, CC0=1)인지 0 (CC1=0; CC0=0)인지양수 (CC1=1, CC0=0)인지를나타냅니다.상태비트 OV와 OS는허용된숫자범위에서벗어날때신호를보냅니다.

권한이없는 권한이없는계산일경우, 즉 2개의입력값중한개가잘못된 REAL 숫자일때REAL 숫자 ACCU1의결과도잘못된 REAL 숫자가됩니다. 다음인스트럭션으로권한없는

값을프로세스하려고한다면또한잘못된 REAL 숫자가 ACCU1에결과로저장됩니다.

더하기: +무한대와 -무한대의더하기빼기: +무한대와 +무한대또는 -무한대와 -무한대의빼기곱하기: 무한대와 0을곱하기나누기: 무한대로무한대를나누기또는 0으로 0을나누기올바른 REAL 숫자를 0으로나누면결과는숫자의부호나 +무한대또는 -무한대에따라달라집니다.

참고 예를들어 16진수 D#16#FFFF FFFF는잘못된 REAL 숫자입니다.

Date: 2002-02-23File: PRO2_03e.3

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

REAL 숫자를가진기본인스트럭션

REAL 더하기:L MD10 // 첫번째 REAL 숫자로드L MD20 // 두번째 REAL 숫자로드+R // 2개의 REAL 숫자를더함 (MD10 + MD20)T MD30 // 결과를 MD30에전송

REAL 빼기:L MD10 // 첫번째 REAL 숫자로드L MD20 // 두번째 REAL 숫자로드-R // 2개의 REAL 숫자를뺌 (MD10 - MD20)T MD30 // 결과를 MD30에전송

REAL 곱하기:L MD10 // 첫번째 REAL 숫자로드L MD20 // 두번째 REAL 숫자로드*R // 2개의 REAL 숫자를곱함 (MD10 * MD20)T MD30 // 결과를 MD30에전송

REAL 나누기:L MD10 // 첫번째 REAL 숫자로드L MD20 // 두번째 REAL 숫자로드/R // 2개의 REAL 숫자를나눔 (MD10 / MD20)T MD30 // 결과를 MD30에전송

Page 34: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Instructions with REAL NumbersPage 4

개요 위의산술함수는 ACCU1의숫자를실행될함수에대한입력값으로사용하고그결과를 ACCU1에저장합니다. 산술함수는 AACU1의내용만을변경합니다. ACCU2나 S7-400에대한ACCU3와 AKKU4는변경되지않습니다.함수결과에따라산술함수는상태비트 CC0, CC1, OV, OS를설정합니다.함수가실행되기전에 ACCU1에있는 REAL 숫자가잘못된것이라면산술함수는잘못된 REAL 숫자를반환하며그값에따라서상태비트를설정합니다.

SQR 함수 SQR는 ACCU1의내용을제곱합니다.

SQRT 함수 SQRT는 ACCU1에있는값의제곱근을계산합니다. ACCU1에있는값이0보다작다면 SQRT는상태비트 CC0, CC1, OV, OS를 “1”로설정하고잘못된REAL 숫자를반환합니다.만약 -0 (마이너스 0)이 ACCU1에있다면 -0이반환됩니다.

EXP 함수 EXP는기수 e (=2.71828)와 ACCU1에있는값 (eACCU1)의거듭제곱을계산합니다.

LN 함수 LN은 ACCU1에있는숫자에서기수 e로의자연로그를계산합니다. 만약ACCU1에있는값이 0보다작거나 0이면 LN은상태비트 CC0, CC1, OV, OS를“1”로설정하고잘못된 REAL 숫자를반환합니다.자연로그는지수함수의역함수입니다.만약 y= ex 이면

x = ln y

Date: 2002-02-23File: PRO2_03e.4

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

확장된산술함수

산술함수:SQR 제곱SQRT 제곱근계산

EXP 기수 e에대한지수함수LN 자연로그

(e=2,718282)

보기:L MD10 // REAL 숫자로드SQR // 제곱T MD30 // 결과를 MD30에전송

SQREN ENO

IN OUTMD10 MD30

(STL)

(LAD)

Page 35: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Instructions with REAL NumbersPage 5

삼각함수 삼각함수는 ACCU1에있는 REAL 숫자를라디안측정의각으로잡습니다. 각입력 ( 00 ... 3600)을위해사용자는필요하다면각도단위 (0 ... 2 파이, 파이=3,141593)로전환해야합니다.

0보다작거나 2 파이보다큰값으로함수를실행할때그값이 0에서 2 파이에올때까지 2 파이의배수를자동적으로더하거나뺍니다 (자동모듈 2 파이계산).

원호함수 원호함수는해당삼각함수의역함수입니다. 원호함수는 ACCU1의값이특정한값의범위에있는 REAL 숫자로생각하며라디안측정의각을반환합니다.함수 허용된정의범위 값범위

ASIN -1 to +1 -파이/2에서 + 파이/2ACOS -1 to +1 0에서파이ATAN 전범위 -파이/2에서 + 파이/2허용된정의범위에서벗어난경우원호함수는잘못된 REAL 숫자를반환하며상태비트 CC0, CC1, OV, OS를 "1”로설정합니다.

Date: 2002-02-23File: PRO2_03e.5

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

삼각함수와역함수

삼각함수:SIN 사인COS 코사인TAN 탄젠트

원호함수:ASIN 원호사인ACOS 원호코사인ATAN 원호탄젠트

보기:L MD10 // REAL 숫자로드SIN // 사인계산T MD30 // 결과를 MD30에전송

SINEN ENO

IN OUTMD22 MD30

(STL)

(LAD)

Page 36: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Instructions with REAL NumbersPage 6

개요 변환함수는 ACCU1에나타난값의데이터형을또다른데이터형으로변환하며그결과를 ACCU에저장합니다. 다른 ACCU에있는내용은변경되지않습니다.인스트럭션 (RND+, RND-, RND, TRUNC) 중한개를사용했을때만약ACCU1에나타난값이 DINT 형식의허용범위에있는숫자의값보다더크거나작은경우나값이 REAL 형식의숫자가아닌경우인스트럭션은상태비트 OV와OS를 “1”로설정합니다. 변환은일어나지않습니다.

RND+ 인스트럭션 RND+는REAL 숫자인 ACCU1의내용을정수 (DINT)로변환합니다. 이정수는변환되는숫자보다크거나같습니다.

RND- 인스트럭션 RND-은 REAL 숫자인 ACCU1의내용을정수 (DINT)로변환합니다. 이정수는변환되는숫자보다작거나같습니다.

RND 인스트럭션 RND은 REAL 숫자인 ACCU1의내용을그다음가능한정수(DINT)로변환합니다. 만약결과가정확히짝수와홀수사이에있다면짝수가반환됩니다.

TRUNC 인스트럭션 TRUNC는변환되는숫자의정수지수를반환합니다. 분수부분은잘라냅니다.

DTR 인스트럭션 DTR은 DINT 형식의숫자를 REAL 숫자형식으로변환합니다. DINT 형식의숫자가 REAL 형식의숫자보다정확하기때문에변환할때그다음나타낼수있는숫자로반올림할수있습니다.

ABS 인스트럭션 ABS는 ACCU1에나타난 REAL 숫자에서절대값을만듭니다. 즉, 부호 (비트 31)는 (잘못된 REAL 숫자의경우에도) “0”으로설정됩니다.

NEGR 인스트럭션 NEGR은 ACCU1의 REAL 숫자를반대로합니다. 즉, 부호 (비트31)는 (잘못된 REAL 숫자의경우에도) 반대가됩니다. 인스트럭션 DTR, ABS, NEGR은상태비트에영향을주지않습니다.

Date: 2002-02-23File: PRO2_03e.6

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

REAL 숫자를가진다른인스트럭션

REAL에서 DINT로의전환함수:RND+ 그다음큰 DINT 숫자로반올림RND- 그다음작은 DINT 숫자로반올림RND 그다음정수로반올림TRUNC 정수지수

DINT에서 REAL로의전환함수:DTR 반올림해서전환

REAL에서 REAL로의다른인스트럭션:ABS 절대량만들기NEGR REAL 숫자의부정

보기:L MD10 // REAL 숫자로드RND+ // 그다음큰 DINT 숫자로전환T MD30 // 결과를 MD30에전송

RND+EN ENO

IN OUTMD22 MD30

(STL)

(LAD)

Page 37: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Instructions with REAL NumbersPage 7

연습목적 두지점간의거리계산을위한산술함수의응용

문제정의 다음기능을가진 FC31을만듭니다.• FC31은두지점 P1, P2의좌표 (X1, Y1), (X2, Y2)를입력파라미터로잡습니다.

• FC31은두지점간의거리를입력파라미터 RET_VAL로반환합니다.• FC31은 S7-400 뿐만아니라 S7-300 시스템에도설치될수있습니다. 중간결과를저장하기위해전역 CPU 어드레스를사용하지않을수도있습니다.

절차 1. 위의기능을가진 FC31을만듭니다.2. OB1에서 FC31을호출하고입력및출력파라미터를다음과같이연결합니다.X1 = MD0, Y1 = MD4X2 = MD8, Y2 = MD12RET_VAL = MD16

3. 프로그램을 S7-CPU에다운로드합니다..4. “모니터/수정변수”를이용해서 FC109를테스트합니다.

추가문제 S7-400에대한 FC31의실행시간최적버전을만듭니다..

Date: 2002-02-23File: PRO2_03e.7

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

연습 3.1: 거리계산

보기 : 직각좌표시스템에서두지점간의거리 D 계산

P1

P2

X1 X2 X

Y

Y2

Y1

함수: D를가지는 FC31= (X1 - X2)2 + (Y1 - Y2)2

D

Page 38: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Indirect AddressingPage 1

목차 페이지

STEP7에서의어드레싱방법 ............................................................................................. 2변수의직접어드레싱 …………....................................................................................................... 3DB 변수의직접어드레싱 ………….......................................................................................... 4프로그램에서 DB 정보평가 …………….................................................................................... 5메모리간접어드레싱 …………........................................................................................................ 6메모리간접어드레싱을이용한포인터구조 …………................................................................. 7메모리간접어드레싱의특징 …………………............................................................................. 8간접어드레싱에대한보기 …….................................................................................................. 9연습 4.1: 간접어드레싱을가진루프프로그래밍 ……............................................................. 10영역내레지스터간접어드레싱 ………….................................................................................. 11영역횡단레지스터간접어드레싱 …………................................................................................ 12어드레스레지스터를로드하기위한인스트럭션 ............................................................................ 13어드레스레지스터를가진다른인스트럭션 ................................................................................ 14레지스터간접어드레싱의특징 ………………….......................................................................... 15연습 4.2: 레지스터간접어드레싱을가지는루프프로그래밍 ……............................................. 16STEP7에서의포인터종류 ......................................................................................................... 17"POINTER" 데이터형의구조및할당 …………………............................................................ 18"ANY" 데이터형의설정 ……………......................................................................................... 19"ANY" 데이터형파라미터의할당 …………............................................................................. 20"ANY" 형파라미터의간접할당 ………………………............................................................……. 21전달된 "ANY" 포인터평가 …………............................................................................................. 22연습 4.3: 합계및중간값계산함수 …………………………........................................................ 23

Date: 2002-02-23File: PRO2_04e.1

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

간접어드레싱및어드레스레지스터인스트럭션

L W [AR1, P#200.0]

----

1

2

910

#Ini_Value

#Pointer

#카운터

?? ?

Page 39: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Indirect AddressingPage 2

직접어드레싱 직접어드레싱의경우메모리위치가인스트럭션에코딩됩니다. 즉, 어드레스는인스트럭션이처리할값의어드레스를지정합니다.

기호어드레싱 컨트롤프로그램에는절대어드레스 (예: I1.0)와기호어드레스 (예: “start signal”)가있습니다. 기호어드레스는절대어드레스대신이름을사용합니다.

프로그램은의미있는이름이사용될때읽기가보다쉬워집니다. 기호어드레싱의경우로컬기호 (블록의선언부분)와전역기호 (기호표)가구분됩니다.

간접어드레싱 간접어드레싱의경우어드레스가프로그램실행중에만결정되는어드레스의주소를지정할수있습니다. 예를들어간접어드레싱의경우프로그램부분은반복적으로스캔될수있으며 (루프프로그래밍) 그로인해사용된어드레스에매스캔마다다른어드레스가할당됩니다. 간접어드레싱의경우다음은구분됩니다.• 메모리간접어드레싱: 주소가지정된어드레스에대한포인터는사용자메모리의메모리셀에나타납니다. (예: MD30)메모리간접어드레싱의경우주소가지정된어드레스가저장되는메모리에서변수에기호이름을할당할수있습니다.

• 레지스터간접어드레싱: 주소가지정된어드레스에대한포인터는액세스되기전에 2개의 S7 프로세서의어드레스레지스터 (AR1 또는 AR2) 중한개에로드됩니다.

주의 간접어드레싱의경우어드레스가실행중에만계산되기때문에본의아니게메모리영역을덮어써서 PLC에서예상치않은반응이발생할위험이있습니다.

Date: 2002-02-23File: PRO2_04e.2

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

STEP7의어드레싱방법

어드레싱절차

직접어드레싱 간접어드레싱

절대 기호 간접메모리 간접레지스터

보기:

A I4.0 A "Mot_on" OPN DB[MW10] A I[MD30] A I[AR1,P#0.0] A [AR1,P#0.0]L IW10 L #num SP T["runtime"] L IW["Number"] L ID[AR1,P#5.0] T W[AR1,P#0.0]

16 비트포인터(DB, T, C)

영역내32 비트포인터

영역내32 비트포인터

영역횡단32 비트포인터

Page 40: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Indirect AddressingPage 3

변수의 직접어드레싱을이용해단순 (기본) 변수, 즉최대 4 바이트의길이를직접어드레싱 가지는변수의주소를지정할수있습니다. 단순변수는다음요소로구성됩니다.

• 어드레스식별자 (예: 입력바이트의경우 "IB")• 메모리영역에서의정확한어드레스 (메모리위치) (바이트또는비트어드레스). 이어드레스는어드레스식별자에의해결정됨

어드레스또는단순변수는전역기호이름 (기호표)을통해주소를지정할수있습니다.

주변장치 주변장치의주소를지정할때 S5와는달리입력과출력을구분할필요가있습니다. 그러나주변입력의읽기액세스 (L PIW)와주변출력의쓰기액세스(T PQW)는여전히가능합니다.

로컬데이터 STEP 7의경우로컬데이터스택의자체블록에대해절대액세스를가질수있습니다. 예를들면다음과같습니다. • A L 12.6 (신호상태 = 1일때어드레스가 12.6인로컬데이터비트를스캔)• L LW 12 (ACCU1의로컬데이터워드로드)

DBX/DIX 데이터블록에서단순변수에직접액세스할수있습니다.• A DBX 12.6 (신호상태 = 1일때 DB의어드레스가 12.6인데이터비트를스캔, DB는사전에열려있어야함)

• L DB5.DBW10 (DB5에 DW10을로드)

복잡한변수 구조체나배열과같은복잡한데이터형의로컬변수에기호적으로액세스할수있습니다.절대액세스는기본데이터형인복잡한변수의구성요소에만가능합니다.

Date: 2002-02-23File: PRO2_04e.3

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

변수의직접어드레싱

피연산자 피연산자 추가 대상어드레스 (보기) 액세스너비

I 37.4 바이트, 워드 입력더블워드

Q 27.7 바이트, 워드 출력더블워드

PIB 655 바이트, 워드 주변입력더블워드

PQB 653 바이트, 워드 주변출력더블워드

M 55.0 바이트, 워드 비트메모리더블워드

T 114 -- 타이머C 13 -- 카운터DBX 2001.6 바이트 (DBB), 워드 (DBW), DB 레지스터를통해

더블워드 (DBD) 주소지정된데이터DIX 406.1 바이트 (DIB), 워드 (DIW), DI 레지스터를통해

더블워드 (DID) 주소지정된데이터L 88.5 바이트 (LB), 워드 (LW), 로컬데이터스택

더블워드 (LD)

Page 41: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Indirect AddressingPage 4

개요 CPU는데이터어드레스프로세싱을위해 2개의데이터블록레지스터를사용할수있게합니다. 현재데이터블록의번호, 즉그어드레스가현재처리되고있는데이터블록의번호가이레지스터에나타납니다. 데이터블록에액세스하기전에이 2개의데이터블록레지스터중한개를사용하여데이터블록을먼저열어야합니다. 데이터블록을명확히열려면다음인스트럭션을따릅니다.• Opn DBx 또는 OPN DIx또는다음과같은 DB 피연산자의결합어드레싱을이용해내재적으로열수있습니다.• L DBx.DBWy (L DIx.DIWy는사용할수없음!)이경우에 DB 번호 x도 DB 레지스터에로드됩니다.

어드레싱 STEP7에서데이터블록은바이트별로구성됩니다. 길이가비트, 바이트, 워드, 더블워드인어드레스에대한직접액세스의경우 (I/Q/M을가지는) 바이트어드레스가각경우에할당됩니다.

기호액세스 기호액세스의경우기호목록에데이터블록의기호이름을입력합니다. DB 편집기를사용하여데이터블록의개별데이터요소에기호이름을할당합니다. 인스트럭션 L "Values"..Number_1을사용하여데이터요소에대한완전한기호액세스를할수있습니다. 이경우 DB19가열리고 (“Values”는 DB19의기호이름) DW2가로드됩니다 (Number_1은 DW2의기호이름).

Date: 2002-02-23File: PRO2_04e.4

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

DB 변수의직접어드레싱

열린데이터블록

데이터블록에서의로드및전송

OPN DB 19OPN "Values"

OPN DI 20

결합인스트럭션(OPN DB.. 포함)

L DBB 1 데이터바이트 1 로드L DBW 2 데이터워드 2 로드 (바이트 2/3)L 5 숫자 5 로드T DBW 4 워드 4로전송L 'A' ASCII 문자 A 로드L DIB28 데이터바이트 28 로드==I 비교

A DBX 0.0 바이트 0에서비트 0 스캔

L DB19.DBW4 DB 19에서데이터워드 4 로드

L "Values".Number_1 변수 Number_1에대한기호액세스. DB19는기호이름"Values”를가짐

A DB10.DBX4.7 DB 10의바이트 4에서비트 7을스캔

Page 42: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Indirect AddressingPage 5

DB, DI 레지스터 이들레지스터는열린데이터블록의현재유효한번호를포함합니다. 2개의데이터블록을호출수준에서동시에열수있습니다.STL은첫번째 DB 레지스터를사용하여공유 DB에액세스하고두번째 DB 레지스터를사용하여인스턴스 DB에액세스하려고합니다. 이들레지스터는이런이유로또한 DB 레지스터와 DI 레지스터로불립니다. CPU는이들레지스터를동등하게취급합니다. 모든데이터블록은이들 2개의레지스터중한개를통해 (또는동시에두개모두를통해) 열릴수있습니다.

CDB CDB (DB 레지스터교환)는 DB 레지스터와 DI 레지스터의내용을교환합니다. DB 레지스터의내용이 DI 레지스터로전송되거나그반대가됩니다. 이인스트럭션은 ACCU1의내용이나상태비트에영향을주지않습니다.

L DBLG, L DILG: 이들인스트럭션은현재열린데이터블록의데이터길이를바이트숫자로읽습니다. 이정보를이용해서사용자프로그램은 DB에액세스하기전에 DB가필요한길이를가지고있는지를테스트할수있습니다.

L DBNO, L DINO: 이들인스트럭션은현재열린데이터블록의번호를읽습니다.

Date: 2002-02-23File: PRO2_04e.5

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

프로그램에서 DB 정보평가

before: after:

CDB

123 24

24 123

DB-Register

DI-Register

DB 레지스터를이용한인스트럭션:CDB: DB 레지스터교환

ACCU1의 DB 레지스터로드L DBNO (열린 DB 번호를 ACCU1에로드)L DINO (열린 DI 번호를 ACCU1에로드)

데이터블록의길이로드

L DBLG (열린 DB의길이/바이트를 ACCU1에로드)L DILG (열린 DI의길이/바이트를 ACCU1에로드)

Page 43: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Indirect AddressingPage 6

개요 메모리간접어드레싱의경우액세스되는변수의어드레스가어드레스 (메모리위치)에나타납니다.메모리간접어드레싱을사용하는프로그램명령문은다음을포함합니다.• 인스트럭션 (예: OPN, A, L, 등)• 어드레스식별자 (DB, C, T, I, QW, MD, 등) • 꺽쇠괄호로묶어야하는 [변수] 이변수는인스트럭션이액세스하는피연산자의어드레스 (포인터)를포함합니다.

사용된어드레스식별자에따라인스트럭션은지정된 [변수]에저장된데이터를워드또는더블워드포인터로해석합니다.

16비트포인터를 타이머의어드레싱을위해카운터나블록 (DB, FC, FB)은 16 비트포인터를가진인스트럭션 사용합니다.

모든타이머및카운터인스트럭션은간접어드레싱을이용해사용할수있습니다. DI 레지스터는물론 DB 레지스터를통해데이터블록을열수있습니다. 데이터블록 (DB, DI)을간접적으로여는경우 0이포인터에오면 NOP 인스트럭션이실행됩니다.논리블록을호출하는경우 (CALL이아니라) 인스트럭션 UC 또는 CC를이용해간접적으로주소가지정될수있습니다. 그러나블록은블록파라미터나정적변수를포함하지않을수도있습니다.타이머의주소를지정하려면카운터또는블록은 T, C, DB, DI, FB, FC 형태의영역식별자를사용합니다. 주소가지정된피연산자의어드레스 (메모리위치)는워드로저장됩니다. 워드형식의포인터는정수 (0 ... 65 535)로해석됩니다. 이것은타이머 (T), 카운터 (C), 데이터블록 (DB, DI), 논리블록 (FC, FB)의번호를참조합니다.

Date: 2002-02-23File: PRO2_04e.6

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

워드형식의 16 비트포인터 (DB, T, C의어드레싱)

L 11T MW 60

OPN DB[MW 60] OPN DB 11

더블워드형식의 32 비트포인터 (I, Q, M, …의어드레싱)L P#24.0T MD 50

L I W [MD50] L IW 24

영역 액세스 어드레스너비

메모리간접어드레싱

Page 44: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Indirect AddressingPage 7

32비트포인터가 다음어드레스는메모리간접어드레싱을이용해서 32 비트포인터를통해있는인스트럭션 액세스될수있습니다.

• 비트논리연산에의해주소가지정되는비트.I, Q, M, L, DIX, DBX는어드레스식별자로사용될수있습니다.

• 로드또는전송인스트럭션에의해주소가지정되는바이트, 워드, 더블워드. IB, IW, ID, DBB, DBW, DBD, DIB, DIW, DID, PIB, PIW, PID, 등은어드레스식별자로사용될수있습니다.

주소가지정된피연산자의어드레스는 32 비트포인터로해석됩니다. 이러한더블워드에서가장중요하지않은비트 (bit 3 ... bit 18)는비트어드레스로해석되며그다음 16 비트 (bit 3 ... bit 18)는주소가지정된피연산자의바이트어드레스로해석됩니다. 메모리간접어드레싱은비트 19…31은평가하지않습니다.

참고 만약로드또는전송인스트럭션을사용하는메모리간접어드레싱에의해어드레스에액세스하고자한다면사용된포인터의비트어드레스가 “0”이되도록해야합니다. 만약그렇지않다면 CPU가실행중런타임오류를발생합니다.

32 비트포인터 32 비트포인터상수는다음구문을이용해 ACCU1에로드될수있습니다상수의로드 .

L P#<바이트어드레스>.<비트어드레스>

포인터 메모리간접어드레싱에대한 16 비트및 32 비트포인터는다음중한개에저장위치 저장되어야합니다.

• M -비트메모리• L -로컬데이터• D -데이터블록 (DB 또는 DI)

Date: 2002-02-23File: PRO2_04e.7

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

메모리간접어드레싱을이용한포인터구조

0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

16 비트포인터의구조:

0 ... 65 535 사이의부호없는정수로해석20215 27

146

32 비트포인터의구조 (영역내):

B B B B B B B B B B B B B X X X

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

0 0 0 0 0 0 0 0 0 0 0 0 0 B B B

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

2022

비트어드레스

바이트어드레스 (부호없는정수)

20215

평가안됨

32 비트포인터상수의로드 (영역내):L P#25.3 (P = ”포인터", 바이트어드레스= 25, 비트어드레스: 3)

Page 45: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Indirect AddressingPage 8

포인터에대한 메모리간접어드레싱의경우어드레스 (메모리위치)는 16 비트또는 32 비트어드레스영역 어드레스로나타납니다. 이어드레스는다음영역중한개에올수있습니다.

• 비트메모리: 절대주소가지정된피연산자나기호표를통해기호적으로주소가지정된변수로서저장

• 로컬데이터스택: 절대주소가지정된피연산자나블록의선언부에서선언된임시변수로서저장

• 공유데이터블록: 절대주소가지정된피연산자로서저장. 공유 DB를포인터에대한저장위치로사용하려면 DB 레지스터 (예: OPN DBn)를통해액세스하기전에 “올바른”데이터블록을열어야합니다.

• 인스턴스데이터블록: 절대주소가지정된피연산자로서저장. 인스턴스데이터를사용할때다음사항을관찰해야합니다. OB와함수: 함수또는 OB 내에서인스턴스데이터블록에저장되는포인터는공유 DB에저장된포인터와똑같이사용할수있습니다. 단지 DB 레지스터대신에 DI 레지스터가사용됨을기억해야합니다.FB: FB 내에서파라미터이거나정적변수인인스턴스데이터는일반적으로메모리간접어드레싱을위해기호적으로사용할수없습니다.FB 내에서로컬데이터에대한절대액세스는원칙적으로선언부에서입력된 “어드레스”를통해이루어질수있습니다. 그러나 FB가복수인스턴스로사용될때이어드레스는인스턴스 DB에서지정된절대어드레스가아니라실제로 AR2에상대적인어드레스라는것을알아야합니다. 이런이유로복수인스턴스 FB에서절대어드레스를통해데이터에액세스하면안됩니다.

참고 메모리간접어드레싱을위한포인터를블록에전달하거나값을영원히정적변수로두고싶으면파라미터나정적변수의포인터값을임시변수에복사하여이임시변수를통해액세스를완료합니다.

Date: 2002-02-23File: PRO2_04e.8

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

메모리간접어드레싱의특징

16 비트및 32 비트포인터를저장하기위한어드레스영역:비트메모리 (절대어드레스또는기호어드레스,예: OPN DB[MW30], OPN DI["Motor_1"], 등

A I[MD30], T QD["Speed_1], 등)로컬데이터스택 (절대어드레스또는기호어드레스,예: OPN DB[LW10], OPN DI[#DB_NO], 등

A I[LD10], T QD[#Pointer], 등)공유데이터블록 (절대어드레스지정만가능, DB는사전에열려야함,예: OPN DB[DBW0] (DB 레지스터를덮어씀 !!!), OPN DI[DBW22], 등

A I[DBD10], T QD[DBD22], 등)인스턴스데이터블록 (절대어드레스지정만가능, DI는사전에열려야함,예: OPN DB[DIW20], OPN DI[DIW0] (DI 레지스터를덮어씀 !!!), 등

A I[DID10], T QD[DID22, 등)

FB 및 FC에포인터를전달할때의특징파라미터로전달된포인터는메모리간접어드레싱을위해직접사용될수없음

메모리간접어드레싱을위해전달된포인터는액세스하기전에임시변수로저장되어야함

Page 46: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Indirect AddressingPage 9

설명 이예는데이터블록의입력을 “0”으로초기화하는함수를보여줍니다. DB 번호는입력파라미터로함수에전달됩니다.주소가지정된데이터블록은우선네트워크 1에서열립니다. 이런경우전달된블록번호 (입력파라미터 #dbnumber)는메모리워드 (MW100)에복사되고DB는이메모리워드를통해열립니다. 네트워크 2에서 DB의처음 10개데이터워드는루프를통해 “0”으로설정됩니다. 루프는인스트럭션 LOOP를사용하며루프카운터는 MB 50에저장됩니다. 값 “0”이메모리간접어드레싱을이용하여 MD 40을통해 DB의개별데이터워드로전송됩니다. 루프를입력하기전에마지막데이터워드 (DBW 18)의어드레스를가진포인터가 MD 40에로드됩니다. 값이바이트단위가아니라워드단위로 DB에전송되기때문에루프스캔이일어날때마다 MD 40의액세스어드레스는P#2.0씩감소합니다.

참고 예를단순화하기위해데이터블록번호를미리확인하였습니다. 실제로초기어드레스및 “0”으로미리설정된영역의길이를 ‘파라미터가될수있게’설계하고 DB를열기전에 DB에필요한길이가있는지를확인할필요가있습니다. 위의예에서또다른단점은비트메모리어드레스영역에서포인터를통해모든메모리간접액세스가완료된다는것입니다. 보다나은대안은무엇입니까? 그이유는무엇입니까?

Date: 2002-02-23File: PRO2_04e.9

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

간접어드레싱에대한예

FC30:간접 어드레싱에 대한 예

네트워크 1:간접 어드레싱으로 DB 열기

L #dbnumber // DB 번호를 MW100에 복사T MW 100 // OPN DB[MW 100] // DB 열기

네트워크 2:삭제를 위한 루프

L P#18.0 // 최종 어드레스 (DBW18)를 포인터로T MD 40 // MD 40에 저장;L 10 // 루프 카운터를 10으로 미리 설정하고

anf: T MB 50 // MB 50에 전송;L 0 // 초기값을 로드하고T DBW[MD 40] // DB에 전송;L MD 40 // 포인터를 로드하고L P#2.0 // 2 바이트씩 감소-D // 그런 후 MD 40에T MD 40 // 다시 전송;L MD 50 // 루프 카운터 로드LOOP anf // 값을 감소시키고 필요하다면 점프;

Page 47: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Indirect AddressingPage 10

연습목적 실제예를통해루프에서의메모리간접어드레싱사용에익숙해지기

문제정의 메모리간접어드레싱은루프프로그래밍에사용됩니다. 이경우 100개의연속메모리셀이 1부터 100까지의오름차순으로나타납니다.1. FC41을만듭니다.2. FC41의선언부에서 100개의 “INT”데이터형구성요소를가진필드를이름 Tank로정의합니다.

3. 1에서 100까지의숫자를오름차순으로사용하여필드를 Tank[1]에서Tank[100]까지미리설정합니다.이경우루프프로그래밍을사용합니다. (인스트럭션: LOOP):- 우선 3개의임시변수인 #Counter, “INT”형식의 #Ini_Value, “DWORD”형식의 #Pointer를선언합니다.

- 루프스캔을위한카운터를변수 #Counter에저장하고 Tank[..]의개별구성요소에대한초기값을변수 #Ini_Value에저장합니다.

- Tank[..]의개별구성요소의주소를지정하기위한메모리간접어드레싱을사용합니다. 액세스를위한어드레스를변수 #Pointer에저장합니다

4. OB1에서 FC4를호출하여프로그램을테스트합니다. 이경우 Debug ->Monitor에의해결과를테스트하기위해 Tank[..]의구성요소에대한몇개의로드인스트럭션을 FC41에삽입합니다.

Date: 2002-02-23File: PRO2_04e.10

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

연습 4.1: 간접어드레싱을이용한루프프로그래밍

----

Tank[1]

Tank[2]

Tank[9]

Tank[10]Tank[11]

#Ini_Value

1

2

910

11... 등

L-Stack, 바이트주소지정

0

2

161820

L-Stack의어드레스

에대한포인터

#T_Pointer

#L_Counter

Page 48: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Indirect AddressingPage 11

개요 영역내레지스터간접어드레싱의경우액세스되는피연산자의어드레스(메모리위치)는 2개의어드레스레지스터 (AR1, AR2) 중한개에나타납니다. 어드레스레지스터의내용은이경우영역내 32 비트포인터이며메모리간접어드레싱의경우와똑같은설정및의미를가집니다.

구문 영역내레지스터간접어드레싱의경우전체인스트럭션은다음으로구성됩니다.• 인스트럭션 (예: A, L, T, 등)• 영역식별자 (I, Q, M, DB, DI, 등)와액세스너비를위한식별자 (B=Byte,

W=WORD, D=DWORD)가결합된어드레스식별자 (I, MB, QD, 등)• 상수오프셋과함께꺽쇠괄호로묶어야하는어드레스레지스터의선언. 이오프셋은인스트럭션이실행되기전에지정된어드레스레지스터의내용에추가됩니다.어드레스레지스터의내용및오프셋은바이트어드레스와비트어드레스로구성된영역내포인터형식을가집니다. 명령구문에서의오프셋선언은필수적입니다.

참고 • 간접주소가지정된바이트, 워드, 더블워드어드레스의경우전체오프셋은비트어드레스 “0”을가져야하며, 그렇지못한경우 CPU가인스트럭션실행중런타임오류를발행합니다.

• 만약영역내레지스터간접어드레싱에서지정된어드레스레지스터인 AR1또는 AR2가영역횡단포인터 (다음페이지참고)를포함한다면포인터의영역식별자는인스트럭션실행중평가되지않습니다.어드레스식별자에서영역식별자는유효합니다.

Date: 2002-02-23File: PRO2_04e.11

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

영역내레지스터간접어드레싱

LAR1 P#10.0 // 미리설정 AR1: 00000000 0000 0000 0000 0000 0101 0000

+ 200L M W [AR1, P#200.0]

영역 액세스 어드레스 상수 실행된: L MW 210너비 레지스터 오프셋 인스트럭션

AR 1 또는 AR 2의영역내포인터:

B B B B B B B B B B B B B X X X

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

0 0 0 0 0 0 0 0 0 0 0 0 0 B B B

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

2022

비트어드레스

바이트어드레스 (부호없는정수)

20215

평가안됨

명령구문:

Page 49: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Indirect AddressingPage 12

개요 영역횡단레지스터간접어드레싱의경우영역식별자 (I, Q, M, 등)와액세스되는피연산자의어드레스 (메모리위치) (바이트비트어드레스)는 2개의어드레스레지스터 (AR1, AR2) 중한개에영역횡단포인터로나타납니다.

구문 영역횡단레지스터간접어드레싱의경우전체인스트럭션은다음으로구성됩니다.• 인스트럭션 (예: A, L, T, 등)• 액세스너비를위한식별자 (B=BYTE, W=WORD, D=DWORD)• 상수오프셋과함께꺽쇠괄호로묶어야하는어드레스레지스터의선언

어드레스레지스터의내용은이경우영역식별자와바이트비트어드레스를가진영역횡단포인터입니다.오프셋은바이트와비트어드레스로구성되는영역횡단포인터형식을가지며 이바이트와비트어드레스는인스트럭션이실행되기전에선언된어드레스레지스터에서포인터의바이트비트어드레스에추가됩니다.명령구문에서의오프셋선언은필수적입니다.

참고 • 간접주소가지정된바이트, 워드, 더블워드어드레스의경우전체오프셋은비트어드레스 “0”을가져야하며, 그렇지않으면 CPU가인스트럭션실행중런타임오류를발생합니다.

• 자체로컬데이터에대한액세스 (식별자: 110)는간접영역횡단어드레싱의경우가능하지않습니다. 런타임오류 “알수없는영역식별자”가나타납니다. 자체로컬데이터에대한액세스는영역내어드레싱의경우에만가능합니다.

Date: 2002-02-23File: PRO2_04e.12

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

영역횡단레지스터간접어드레싱

LAR1 P#I10.0 // 미리설정 AR1: 10000001 0000 0000 0000 0000 0101 0000

L W [AR1, P#200.0] + 200

액세스 어드레스 상수 실행된: L IW 210너비 레지스터 오프셋 인스트럭션

AR 1 또는 AR2의영역횡단포인터:

B B B B B B B B B B B B B X X X

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

1 0 0 0 0 R R R 0 0 0 0 0 B B B

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

비트어드레스

바이트어드레스 (부호없는정수)영역식별자

명령구문:

Bit 31=0: 영역내Bit 31=1: 영역횡단

영역식별자: 000 I/O 001 입력 (PII)010 출력 (PIQ) 011 비트메모리100 DB 레지스터의데이터 101 DB 2 (DI)의데이터110 자체로컬데이터 111 호출된블록의 LD

Page 50: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Indirect AddressingPage 13

어드레스 로드함수를이용해서정의된값을가진어드레스레지스터를초기화할수로딩 있습니다.

로드함수 LARn (n=1, 2)은포인터를어드레스레지스터 ARn에로드합니다. ACCU1이나 ARn, 또는어드레스영역비트메모리, 임시로컬데이터, 공유데이터및인스턴스데이터의더블워드가원본으로사용될수있습니다. 액세스는절대적또는기호적으로발생할수있습니다.만약어드레스를지정하지않으면 ACCU1의내용은자동적으로어드레스레지스터 ARn에로드됩니다. 로드된레지스터나더블워드의내용은영역포인터의형식에일치해야합니다.

포인터 직접포인터 (어드레스)는자연히어드레스레지스터의어드레스에로드될수로딩 있습니다.

다음인스트럭션

• L P#<영역식별자>n.m을이용해영역횡단포인터를지정된어드레스레지스터에직접로드할수있습니다. 절대액세스만이가능합니다. 예를들어 #Address라는이름을가진로컬변수에대한영역횡단포인터는다음인스트럭션

• LARn P##Address (n=1, 2)을이용해 2개의어드레스레지스터중한개에로드할수있습니다. 형성된영역횡단포인터는로컬변수의첫번째바이트어드레스를포함합니다. 이액세스는 IN, OUT, INOUT과 STAT 변수 FB는물론모든 TEMP 변수 OB, FB, FC에서가능합니다.

참고 만약어드레스레지스터에서 FC의 IN, OUT, INOUT 파라미터 (#Name)에포인터를로드하려면직접적인방법으로는가능하지않으며중간단계를거쳐야만합니다.• L P##Param (ACCU1의파라미터 #Name에포인터를로드합니다.)

LARn (ACCU1의내용을 ARn에로드합니다.)

Date: 2002-02-23File: PRO2_04e.13

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

어드레스레지스터를로드하기위한인스트럭션

어드레스레지스터로드

LARn (n =1 또는 2): ACCU1의내용을 ARn에로드LARn <Address> <Address>의내용을 ARn에로드LARn P#<Address> <Address>의주소를 ARn에로드

<Address>:프로세서레지스터: AR1, AR2 (예: LAR1 AR2와 LAR2 AR1)현재의 32 비트변수: MDn, LDn, DBDn, DIDn (예: L DBD5, 등)32 비트기호변수: 32 비트공유변수 (예: LAR1 "Index", 등)와(공유및로컬) TEMP 변수 OB, FB, FC

(예: LAR1 #Address, 등)

P#<Address> 절대부울어드레스에 En.m, An.m, Mn.m, Ln.m, DBDn.m, DIDn.m 대한포인터: (예: LAR1 P#M5.3, LAR2 P#I3.6, 등)로컬기호어드레스에 OB: TEMP 변수 (예: LAR1 P##Pointer, 등)대한포인터: FB: IN-, OUT-, INOUT-, STAT-, TEMP-변수

FC: TEMP 변수 (LAR1 P##Loop, 등)

Page 51: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Indirect AddressingPage 14

어드레스레지스터 인스트럭션 TARn은어드레스레지스터 ARn에서전체영역포인터를에서전송 전송합니다. 다른어드레스레지스터나어드레스영역비트메모리, 임시로컬

데이터, 공유데이터및인스턴스데이터의더블워드가대상으로지정될수있습니다. 어드레스가지정되지않으면 TARn이어드레스레지스터의내용을 ACCU1에전송합니다. ACCU1의이전내용은여기에서 ACCU2로자리이동되고ACCU2의내용은상실됩니다.ACCU3과 ACCU4 (S7-400)의내용은변경되지않습니다.

어드레스레지스터 인스트럭션 TAR은어드레스레지스터 AR1과 AR2의내용을교환합니다.교환

어드레스레지스터에 예를들어프로그램루프에서루프스캔이일어날때마다어드레스의추가 어드레스를증가시키기위해어드레스레지스터에값이추가될수있습니다.

값은인스트럭션으로상수 (영역내포인터)로지정되거나 ACCU1-L의오른쪽워드의내용으로지정될수있습니다.인스트럭션 +AR1과 +AR2는 ACCU1에나타난값을 INT 형식의숫자로해석하고그숫자를올바른부호를가진 24 비트로확장해서어드레스레지스터의내용에추가합니다. 이런방식으로포인터도보다작게만들수있습니다. 바이트어드레스 (0 ... 65 535)의최대영역을넘어서거나최대영역에미치지못해도더이상의영향을미치지않으며상위비트가단지 “잘려져”나갑니다.인스트럭션 +ARn P#n.m은지정된어드레스레지스터에영역내포인터를추가합니다. 이런방식으로지정된영역포인터는최대크기가 P#4095.7입니다.위에서나이전페이지에서제시된주소가지정된인스트럭션은상태워드의비트를변경하지않습니다.

Date: 2002-02-23File: PRO2_04e.14

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

어드레스레지스터를이용한다른인스트럭션

어드레스레지스터에서전송

TARn (n =1 또는 2): ARn에서 ACCU1로내용전송TARn <Address> ARn에서 <Address>로내용전송

<Address>:프로세서레지스터: AR2 (예: TAR1 AR2 )32 비트절대변수: MDn, LDn, DBDn, DIDn (예: TAR2 MD5, 등)32 비트기호변수: 32 비트공유변수 (예: TAR1 "Index", 등)와(공유및로컬) TEMP 변수 OB, FB, FC

(예: TAR1 #Addresss, 등)

토글 (스왑) 어드레스레지스터TAR 어드레스레지스터 AR1과 AR2의내용을교환

어드레스레지스터에추가

+ARn ACCU1-L을 ARn에추가+ARn P#n.m 영역내포인터 P#n.m을 AR1 또는 AR2에추가

Page 52: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Indirect AddressingPage 15

어드레스레지스터 STEP7 편집기는어드레스레지스터 AR1을사용하여복잡한블록파라미터에AR1 액세스합니다. "ARRAY" 또는 "STRUCT" 형식의모든블록파라미터에대한

기호액세스를가지는함수안에서레지스터 AR1과 DB는덮어쓰기됩니다.또한 "ARRAY" 또는 "STRUCT" 형식의입/출력파라미터에대한액세스를가지는 FB 안에서레지스터 AR1과 DB는덮어쓰기됩니다. FB와 FC의임시변수에대한기호액세스는 AR1이나 DB 레지스터를덮어쓰지않습니다.

어드레스레지스터 STEP7 편집기는인스턴스데이터, 즉모든파라미터및 FB의정적변수에대한AR2 기호액세스를위해영역내레지스터간접어드레싱을사용합니다. DI

레지스터는각인스턴스데이터블록을지정하고 AR2는인스턴스데이터블록안에서각복수인스턴스를지정합니다.만약 DI 레지스터와 AR2 레지스터가덮어쓰기된후이들레지스터의내용이복구되지않으면인스턴스데이터에대한액세스는일어날수없습니다. 자신의목적을위해 FB 안에서 AR2나 DI 레지스터를사용하려면다음절차를따르도록권고합니다.1. DI 및 AR2의내용을 DWORD 형식의변수에저장합니다.

TAR2 #AR2_REG // AR2를임시변수 #AR2_REG에보관합니다.L DINO // DI의내용을 ACCU1에로드합니다.T #DI_REG // 임시변수 #DI_REG에저장합니다.

2. 자신의목적을위한 DI 및 AR2 레지스터의사용. FB 파라미터나정적변수에대한액세스는이세그먼트중에일어날수없습니다.

3. DI 및 AR2 레지스터의복구LAR2 #AR2_REG // AR2에 #AR2_REG의내용을로드합니다.OPN DI[#DI_REG] // DI 레지스터를복구합니다.FB 파라미터와정적변수는한번더기호적으로액세스될수있습니다.

Date: 2002-02-23File: PRO2_04e.15

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

레지스터간접어드레싱의특징

STL/LAD/FBD 편집기에의한 AR1의내부사용FC에서파라미터에액세스할경우파라미터가복잡한데이터형 ("ARRAY", "STRUCT", DATE_AND_TIME")이면 AR1 레지스터와 DB 레지스터를덮어씁니다.

FB의 INOUT 파라미터에액세스할경우 INOUT 파라미터가복잡한데이터형("ARRAY", "STRUCT", DATE_AND_TIME")이면 AR1 레지스터와 DB 레지스터를덮어씁니다..

어드레스레지스터의로드와원하는변수에대한레지스터간접액세스사이에서로컬파라미터에대한액세스는일어나지않습니다.

STL/LAD/FBD 편집기에의한 AR2의내부사용AR2 레지스터와 DI 레지스터는 FB 내의모든파라미터와 STAT 변수의어드레싱을위한기본어드레스레지스터로서사용됩니다.

만약FB 내에서사용자가 AR2 또는 DI를덮어쓰면, 2개의레지스터가복구되기전에는 FB 자체의파라미터나 STAT 변수를액세스하지않습니다.

FC의 AR2 레지스터와 DI 레지스터는제한을받지않습니다.

Page 53: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Indirect AddressingPage 16

연습목적 실제적인보기를통해루프에서의레지스터간접어드레싱사용에익숙해지기

문제정의 레지스터간접어드레싱은루프의프로그래밍에사용됩니다. 이경우 1에서100까지의수를 100개의연속메모리셀에지정합니다.S7-400 CPU에대한연습 4.1에서 (임시변수를추가하지않는) 시간최적화해결방법을프로그램합니다.루프카운터에대한값과초기값을누산기에저장합니다.Tank[..] 구성요소의주소를지정하기위해어드레스레지스터 AR1 (영역내레지스터간접어드레싱)을사용합니다.

절차 1. FC42를만듭니다.2. FC42의선언부에서 100개의 “INT”데이터형구성요소를가지는필드를이름 “Tank”로정의합니다.

3. Tank[1]에서 Tank[100]까지의필드에 1에서 100까지의번호를미리설정합니다.- 이에대한루프프로그래밍을사용합니다. (인스트럭션: LOOP): - Tank[..]의개별구성요소를어드레싱하기위해레지스터 AR1을사용합니다.

4. OB1에서 FC42를호출하여프로그램을테스트합니다.

Date: 2002-02-23File: PRO2_04e.16

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

연습 4.2: 레지스터간접어드레싱을이용한루프프로그래밍

----

Tank[1]

Tank[2]

Tank[9]

Tank[10]Tank[11]

#ACCU1

1

2

910

11... 등

L-Stack, 바이트주소지정

0

2

161820

L-Stack의어드레스

에대한포인터

#AR1

#ACCU2

Page 54: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Indirect AddressingPage 17

STEP7에서의 이전섹션에서설명된포인터종류 (16 비트, 32 비트영역내및 32 비트영역포인터종류 횡단) 외에도 STEP7은다음 2개의포인터를추가로인식합니다.

• 48 비트포인터 ("POINTER " 데이터형)• 80 비트포인터 ("ANY" 데이터형)16 비트와 32 비트포인터형식은누산기또는어드레스레지스터에직접로드될수있으므로블록안에서간접어드레싱에사용될수있습니다.(32 비트보다큰) POINTER와 ANY 포인터형식은레지스터에직접로드되거나블록안에서간접어드레싱에사용될수없습니다. 이들은호출된블록의형식파라미터로전달되는실질파라미터의완전한어드레싱을위해서만사용됩니다.예를들어블록안에서 POINTER나 ANY 데이터형의파라미터를선언하고블록호출중파라미터에실질파라미터의어드레스를할당할수있습니다.

POINTER POINTER 데이터형만이사용자에게덜중요한의미를가집니다. 이데이터형은주로 STL/LAD/FBD 편집기에의해 “ARRAY”, “STRUCT”, 등과같은복잡한데이터형의실질파라미터를블록 (FB 또는 FC)의형식파라미터로전달하기위해사용됩니다.STL/LAD/FBD 편집기는즉시데이터형과길이의정확성을실질파라미터의할당으로확인하기때문에단순히실질파라미터의완전한초기어드레스를내부적으로전달하는것으로충분합니다.

ANY ANY 포인터형식은주로 STEP7에서시스템함수 (SFC)와시스템함수블록(SFB)의파라미터를할당하기위해사용됩니다.ANY 데이터형은또한사용자에의해강력한블록 (예: 일반적 FB 또는 FC)을만들기위해사용될수있습니다.

Date: 2002-02-23File: PRO2_04e.17

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

STEP7의포인터종류메모리간접어드레싱을위한 16 비트포인터

타이머와카운터의메모리간접액세스및데이터블록열기를위한포인터

메모리및레지스터간접어드레싱을위한 32 비트포인터PI, PQ, I, Q, M, DB, DI, L (로컬데이터스택)에서어드레스의메모리및레지스터간접액세스를위한 32 비트영역내포인터PI, PQ, I, Q, M, DB, DI, L, V (호출블록의로컬데이터스택)에서어드레스의레지스터간접액세스를위한 32 비트영역횡단포인터

48 비트포인터 (POINTER 데이터형 )블록으로전달하는파라미터를위한자체데이터형 (FB와 FC)32 비트영역횡단포인터외에도 DB 번호의선언을포함

80 비트포인터 (ANY 데이터형 )블록으로전달하는파라미터에대한자체데이터형 (FB와 FC)32 비트영역횡단포인터외에도 DB 번호, 데이터형, 반복인자에대한선언을포함

Page 55: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Indirect AddressingPage 18

POINTER 데이터형 영역횡단포인터외에 POINTER 데이터형의파라미터는데이터블록의번호를부호없는양의정수 (값영역: 0 ... 65,535)로포함합니다. 이파라미터는영역횡단포인터가공유데이터나인스턴스데이터의어드레스영역을참조할때데이터블록의번호를입력합니다. 주소가지정된어드레스가다른영역 (P, I, Q, M, L)에나타나는다른모든경우에 “0”이 “POINTER”의처음 2 바이트에입력됩니다.

파라미터할당 블록호출 (FC 또는 FB) 중에 POINTER 데이터형의파라미터가할당되어야한다면포인터표시를통해서또는어드레스를선언함으로써할당될수있습니다.

포인터표시 이경우에포인터 (P#...)는다음과같이어드레스의첫번째비트에입력되어야합니다.• P#DB10.DBX2.0 (DB10의데이터비트 2.0, 영역식별자 "DB")• P#I5.3 (I5.3, DB 번호 = 0, 영역식별자 "PII")

어드레스선언 이경우에어드레스의선언은 (P# 없이...) 충분합니다. 어드레스는 DB 번호, 어드레스식별자, 다음과같은관련바이트또는비트어드레스를통해절대적으로입력될수있습니다.• DB5.DBW10 (비트 10.0, DB 번호 = 5, 영역식별자 "DB")또는기호적으로

• #Motor_on, "Motor_1".speed두가지경우모두 STL/LAD/FBD 편집기는관련 DB 번호와영역식별자, 어드레스의바이트.비트어드레스를결정해서 “POINTER”에입력합니다.

참고 블록을저장한후어드레스의포인터표시가두가지경우모두표시됩니다.

Date: 2002-02-23File: PRO2_04e.18

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

"POINTER" 데이터형의구조및할당

바이트 n

바이트 n+2

바이트 n+4

바이트 n+1

바이트 n+3

바이트 n+5

DB 번호 (INT)

1 O O O _ O R R R _ O O O O _ O B B B (32 비트영역횡단

B B B B _ B B B B _ B B B B _ B X X Xpointer)

"POINTER" 형식파라미터의할당포인터디스플레이P#DBn.DBX x.y 조건: n= DB 번호, x= 바이트-번호, y= 비트-번호P#DIn .DIX x.y (예: P#DB5.DBX3.4, P#DI2.DIX10.0, 등)P#Zx.y 조건: Z= 영역, 예: P, I, Q, M, L

(예: P#I5.3, P#M10.0, 등)어드레스선언:MD30 (이경우에 DB 번호영역식별자와비트#Motor_on 어드레스는자동적으로 "POINTER”에"Motor_1".speed 입력됨)

"POINTER" 데이터형의구조

Page 56: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Indirect AddressingPage 19

ANY 데이터형 ANY 포인터는영역횡단포인터와 DB 번호외에데이터형에대한식별자와반복인자를포함합니다. 이포인터를사용해서개별어드레스뿐만아니라완전한데이터영역을구별할수있습니다.두가지버전의 ANY 포인터가있습니다.• 데이터형을가진변수용: 포인터는 STL에대한구문 ID 16#10과데이터형에대한식별자, 반복인자, DB 번호및영역횡단포인터로구성되는위의구조를가집니다.

• 파라미터형을가진변수용: 이경우 ANY 포인터는단지 STL에대한구문 ID16#10과파라미터형에대한식별자, 바이트 n+8과바이트 n+9에있으며블록번호를반영하는 16 비트의부호없는숫자로구성됩니다. 바이트 n+2,..., n+7은 “0”으로채워집니다.

ANY 포인터의선언 ANY 데이터형의변수는일반적으로 FC와 FB에서 IN, OUT, INOUT 파라미터로선언될수있습니다.이선언으로 FB에서의임시변수로서가능성이추가됩니다. 이임시변수를이용해서실행중변경될수있는 ANY 포인터를만들수있습니다.

영역식별자 000 I/O 001 입력 (PII)(RRR): 010 출력 (PIQ) 011 비트메모리

100 DB 레지스터를참조하는 101 DI 레지스터를참조하는데이터워드 데이터워드

110 자체로컬데이터 111 호출자의 LD

Date: 2002-02-23File: PRO2_04e.19

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

"ANY" 데이터형의설정

데이터형에대한 "ANY" 포인터

바이트 n바이트 n+2바이트 n+4 DB 번호

1 O O O _ O R R R _ O O O O _ O B B B

B B B B _ B B B B _ B B B B _ B X X X

16#10 데이터형

반복인자

바이트 n+6바이트 n+8

파라미터형에대한 "ANY" 포인터바이트 n바이트 n+2바이트 n+4 16#0000

파라미터형 O O O O_O O O O타이머, 카운터, 블록번호

16#10 파라미터형

16#0001

바이트 n+6바이트 n+8

데이터형 식별자

VOID 00BOOL 01BYTE 02CHAR 03WORD 04INT 05DWORD 06DINT 07REAL 08DATE 09TOD 0ATIME 0BS5TIME 0CDT 0ESTRING 13

파라미터형 식별자

BLOCK_FB 17BLOCK_FC 18BLOCK_DB 19BLOCK_SDB 1A카운터 1C타이머 1D

Page 57: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Indirect AddressingPage 20

할당 어드레스 (변수)의직접선언에의해서뿐만아니라포인터표시를통해 "ANY" 데이터형파라미터를할당할수있습니다.

포인터표시 포인터표시 (예: P#DB5.DBX10.0 INT 8)를통한할당의경우 STL/LAD/FBD 편집기는형식과수에서선언된내용과일치하는 ANY 포인터를설정합니다. 데이터영역의주소를지정해야할때포인터표시에서할당할수있으며이경우변수는정의되지않거나예를들어어떤적절한변수 (예: ARRAY or STRUCT)도정의될수없습니다 (예: P, PII, PIQ, M).또한호출된블록안에서반복인자와데이터형에대한정확한정보가필요할때(예: ARRAY[1..8] OF REAL) 절대포인터표시가사용되어야합니다.

어드레스표시 "ANY" 형의파라미터는 ANY 포인터가가리키는어드레스를직접할당받을수있습니다. 이러한선언은절대적으로또는기호변수이름을통해이루어집니다.절대어드레스의선언에서 STL/LAD/FBD 편집기는자동적으로관련데이터형(BOOL, BYTE, WORD, DWORD)과반복인자 “1”, 어드레스의첫번째비트에있는영역횡단포인터는물론 DB 번호를결정해서이들값을포인터구조에입력합니다. 이와마찬가지로 STL/LAD/FBD 편집기는기호이름을통해선언되고입력된변수가기본데이터형일때어드레스를통해올바른정보를결정합니다.

참고 변수가복잡한데이터형 (예: ARRAY[1..8] OF REAL)이면 STL/LAD/FBD 편집기는변수가차지하는영역에대한정보를바이트로입력합니다. (예: 반복인자: 32, 데이터형: BYTE)

Date: 2002-02-23File: PRO2_04e.20

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

"ANY" 데이터형파라미터의할당포인터디스플레이:

P#[데이터블록]비트어드레스형식번호P#DB10.DB12.0 REAL 20 DB10의영역에있는포인터, Byte 12에서시작,

데이터형 REAL (REAL의배열[1..20])의 20개어드레스로구성

P#I 10.0 BOOL 8 IB10의 8 비트필드에있는포인터어드레스선언:

절대:DB5.DBD10 데이터형: DWORD, 반복인자: 1

DB 번호: 5, 포인터: P#DB5.DBX10.0IW32 형식: 워드, RF: 1, DB 번호: 0, 포인터: P#I32.0T35 형식: 타이머, 번호: 35기호:#Motor_1.speed 기본데이터형의경우컴파일러는

"Pump:Start" 올바른데이터형, 반복인자 1, 포인터를설정합니다.

참고기호할당 (ARRAY, STRUCT, STRING, UDT)의경우바이트의영역은단지컴파일러에의해설정되며 ANY 포인터에입력됩니다.

Page 58: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Indirect AddressingPage 21

간접할당 호출블록은또한 ANY 데이터형의 FC 또는 FB 파라미터에 ANY 데이터형의임시변수를할당할수있습니다. 이임시변수는호출블록의로컬데이터스택에저장되었습니다.이경우 STL 편집기는 (로컬데이터스택에있는) 임시변수에포인터를전달하지않지만임시변수가이미실제로원하는변수에대한포인터를포함하는것으로간주합니다. 편집기는이경우에임시변수에포함된 ANY 포인터를호출된 FC나호출된FB로전달합니다.

장점 ANY 파라미터에 ANY 포인터를설정할수있으며이포인터는실행중에변경될수있습니다. 예를들어특히 SFC 20 "BLKMOV" 또는 SFC 21 "FILL”과같은시스템함수와관련해서변수 ANY 포인터는매우유용할수있습니다 (연습 7.5 참고).

Date: 2002-02-23File: PRO2_04e.21

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

"ANY" 형식파라미터의간접할당

임시실제어드레스에의한 ANY 데이터형의할당호출블록에서 ANY 데이터형의임시변수선언예: temp auxiliary pointer ANY

임시 ANY 변수에포인터정보를입력예:LAR1 P##auxpointer // 보조 포인터의 어드레스 로드L B#16#01 // 식별자 01을 로드하고T LB [AR1,P#0.0] // 오프셋 0으로 전송L ......

ANY 형식의블록파라미터 (target field)에보조포인터할당예:CALL FC 111목표 필드:=#보조 포인터

장점

실행중 ANY 포인터파라미터의동적재할당

Page 59: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Indirect AddressingPage 22

개요 호출된블록 (FB 또는 FC)에서 “POINTER”나 “ANY”형의전달된포인터에있는정보를읽어서레지스터간접어드레싱을이용해서처리할수있습니다.

절차 “ANY”포인터로전달된정보의평가는다음단계로기록됩니다. 각단계는이름이 Pointer이고정보의임시저장을위한몇개의임시변수를가지는입력파라미터 (“ANY”형)가선언되는위의예에맞춥니다.1. 우선, 영역횡단포인터가전달된 “ANY”포인터에서설정되고어드레스레지스터 AR1에로드됩니다. 이작업은다음인스트럭션을이용해이루어집니다.• LAR1 P##Pointer (FB에서) 또는• L P##Pointer (FC에서어드레스는제일먼저 ACCU1에로드되고

LAR1 거기에서 AR1 레지스터에로드되어야합니다.)전달된 "ANY”포인터는 FB의경우인스턴스 DB (자동으로열림)에저장되고 FC의경우호출자의로컬데이터스택에저장됩니다.

2. 레지스터간접어드레싱을이용하여전달된 “ANY”포인터에있는정보를읽어서예를들어블록의임시변수에임시로저장하여추가처리를할수있습니다. • L B[AR1,P#1.0] (ACCU1에있는실질파라미터의데이터형식별자를

읽습니다.)• L W[AR1,P#2.0] (ACCU1의반복인자를읽습니다.)• L W[AR1,P#4.0] (실질파라미터가 ACCU1에서저장되는 DB의 DB 번호

또는실질파라미터가 P, PII, PIQ, M, L에저장될때“0”을읽습니다.)

• L D[AR1,P#6.0] (ACCU1의실질파라미터에대한영역횡단포인터를읽습니다.)

실질파라미터에대한 "ANY" 포인터에저장된정보는문제정의에따라추가로처리되어야합니다.

Date: 2002-02-23File: PRO2_04e.22

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

전달된 "ANY" 포인터평가

어드레스 선언 이름 형식 초기값 설명0.0 in 포인터 ANY

outin_out

0.0 temp 데이터 형 BYTE2.0 temp WF WORD4.0 temp DB_No WORD6.0 temp Be_Pointer DWORD

네트워크 1: 데이터 형, 반복 인자, DB 번호, Be 포인터의 확립

L P##Pointer // ACCU1의 #포인터 어드레스를 로드하고LAR1 // 그 곳에서 AR1에 로드;L B [AR1,P#1.0] // 포인터에서 데이터 형을 결정하고T #Datatype // 임시 변수에 로드;L W [AR1,P#2.0] // 반복 인자를 확립하고T WF // 임시 변수에 로드;L W [AR1,P#4.0] // DB 번호를 설정하고T #DB_No // 임시 변수에 로드;L D [AR1,P#6.0] // 영역 포인터를 설정하고T #Be_Pointer // 임시 변수에 로드;

Page 60: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Indirect AddressingPage 23

개요 “ANY”데이터형을이용해서일반적 FC 또는 FB를만들수있습니다. 일반적 FC 또는 FB는특정데이터형을정하지않습니다. 이들은실행중전달되는데이터형이나필드길이에따라자신을 “조정”할수있습니다.

목적 다음기능을가지는 FC43을만듭니다.• 이함수는 REAL 값의필드가입력파라미터 Measured_values ("ANY”형)에있어야합니다.

• 함수는전달된필드요소의합계값을출력파라미터 Sum (형: REAL)에전달하고모든필드요소의평균값을 출력파라미터 Mean_value (형:REAL)에전달합니다.

• 만약또다른데이터형이전달되면오류가발생합니다 (ENO 파라미터, 즉BR 비트=0, Sum과 Mean_value에는잘못된 REAL 숫자).

절차 1. FC43을만들고위에나열된입력및출력파라미터를선언합니다. 또한반복인자, DB 번호및실질파라미터의영역포인터를임시저장하기위한해당임시변수를선언합니다.

2. 우선전달된 “ANY”포인터에서데이터형식별자를읽고실질파라미터의데이터형이 REAL이아니면 FC43을끝냅니다.

3. 루프에서 (LOOP 인스트럭션) 모든필드요소의합계를프로그램합니다.합계와중간값을계산하여그결과를해당출력파라미터에할당합니다.

4. DB43을만듭니다. DB43에 ARRAY[1..8] 형의변수 Measurement를선언하고적절한값을데이터보기에입력합니다.

5. OB1에서 FC43의호출을프로그램합니다. 포인터표시에서입력파라미터를할당합니다. 메모리영역의어드레스를출력파라미터에할당합니다.

6. 참여하는블록을 CPU에다운로드하고결과를테스트합니다.

Date: 2002-02-23File: PRO2_04e.23

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

연습 4.3: 합계및중간값계산함수

FC 43EN ENO

측정값 합계

중간값

선언 이름 형식in 측정값 ANYout 합계 REALout 중간값 REAL

DB43103.452086.51.7895........

P#DB43.DBX0.0 REAL 8

이름 형식

STRUCT치수 ARRAY[1..8]

REALEND_STRUCT

Page 61: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Data Management in the User ProgramPage 1

목차 페이지

데이터저장영역 ………............................................................................................................ 2로컬데이터스택의기능방법 …………...................................................................................... 3보기: 스크래치패드메모리에대한대체 ………............................................................................ 4데이터블록 (DB) …..................................................................................................................... 5STEP 7에서의데이터형 ........................................................................................................... 6기본데이터형 ........................................................................................................... 7복잡한데이터형 …............................................................................................................. 8파라미터형 …................................................................................................................... 9날짜형식: DATE_AND_TIME ............................................................................................. 10DT 변수를처리하기위한함수 …........................................................................................... 11날짜형식: ARRAY ……............................................................................................................... 12ARRAY의선언및초기화 …………........................................................................................ 13ARRAY의파라미터전달 …...................................................................................................... 14메모리에 ARRAY 변수저장 …………….................................................................................. 15데이터형: STRUCT …............................................................................................................. 16STRUCT 선언 ……............................................................................................................... 17STRUCT의파라미터전달 ….................................................................................................... 18메모리에 STRUCT 변수저장 ……………............................................................................... 19데이터형: STRING .............................................................................................................. 20메모리에 STRING 변수저장 ……………................................................................................ 21STRING 변수를처리하기위한함수 ……................................................................................... 22사용자정의데이터형: UDT .................................................................................................. 23UDT의사용 ............................................................................................................................. 24연습 5.1: SFC 1에서시간읽기 (READ_CLK) …………………….................................................. 25

Date: 2002-02-23File: PRO2_05e.1

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

사용자프로그램에서데이터관리

Page 62: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Data Management in the User ProgramPage 2

개요 논리블록외에사용자프로그램은또한처리상태, 신호, 등이저장되는데이터를포함합니다. 이러한데이터는사용자프로그램의인스트럭션에의해처리됩니다. 데이터는일반적으로사용자프로그램의변수에저장되며변수는다음에의해고유한특성을가집니다.• 메모리위치 (어드레스: 예: P, PII, PIQ, 비트메모리, L-Stack, DB)• 데이터형 (기본또는복잡한데이터형, 파라미터형) 또한액세스가능성에따라다음이구별됩니다.• 공유변수는전역기호표 (공유변수) 또는공유데이터블록에서선언됩니다.

• 로컬변수는 OB, FB, FC의선언부에서선언됩니다.변수는프로세스이미지, 비트메모리영역, 또는데이터블록에서영구적인메모리위치를가지거나실시간중에 L-Stack에서동적으로설정될수있습니다.

로컬데이터스택 로컬데이터스택 (L-Stack)은다음의저장영역입니다.• OB의시작정보를포함하여논리블록의임시변수• FC 호출의파라미터전달에서실질파라미터• 래더도표프로그램에서의논리중간결과

모든 OB는자체의 L-Stack을가지며그위에임시변수가저장됩니다. S7-300의경우 L-Stack의크기는고정됩니다 (256 바이트/OB). S7-400의경우 L-Stack의크기는모든 OB에대해파라미터에할당될수있습니다.

데이터블록 데이터블록은값을저장하기위해사용자프로그램의논리블록에의해사용되는블록입니다. 임시데이터와는달리데이터블록의데이터는논리블록의처리가완결되거나 DB가닫힐때삭제되지않습니다.

Date: 2002-02-23File: PRO2_05e.2

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

데이터저장영역

데이터블록L-Stack

DBx

DBy

DBy

. . .

I/O

PII

PIQ

비트메모리

Page 63: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Data Management in the User ProgramPage 3

로컬데이터스택 모든우선순위클래스, 즉모든 OB에 OB의임시변수를위한자체 L-Stack이나호출된추가블록이할당됩니다. 블록 (OB, FB, FC)이처리되기전에시스템은블록의선언부에서선언된임시변수를위해 L-Stack에동적메모리를보유합니다. 메모리는 BE (블록엔드) 이후에사용가능합니다.

시퀀스 위의슬라이드는 OB1 순환처리의전형적인시퀀스를보여줍니다. OB1이처리되기전에운영시스템은 OB1의임시변수에대한메모리공간을보유(할당)합니다. 사용자가선언한임시변수외에 20 바이트영역이또한보유되어시작정보를위해초기화됩니다.

1 FB1 처리이전에운영시스템은 FB1 임시변수를위한메모리를보유합니다. 각메모리영역은 OB1의임시변수를위한메모리를직접따릅니다.

2 FC5 처리이전에운영시스템은 FB5의임시변수를위한메모리를보유합니다. 각메모리영역은 FC1의임시변수를위한메모리를직접따릅니다.

3 FC5가완료된후관련메모리는다시사용될수있습니다.4 FB1이완료된후관련메모리는다시사용될수있습니다.5 운영시스템은 FC10을위한메모리를보유합니다. 이영역은 OB1의임시

변수를위한메모리를직접따릅니다. 그런방식으로이전에 FB1과 FC5가사용했던그메모리공간이사용됩니다. 즉원래 FB1과 FC5의임시변수가덮어쓰기됩니다.

장점 임시변수의관리는운영시스템에의해이루어지며사용자가구성할필요는없습니다 (프로그래밍오류). 각우선순위클래스가 OB에의해또다른우선순위클래스로방해를받으면로컬데이터는저장될필요가없습니다. 많은클래스가각경우마다자체로컬데이터스택을할당받습니다.

Date: 2002-02-23File: PRO2_05e.3

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

로컬데이터스택의기능방법

OB1에대한L-Stack의할당

예: 256 바이트

5

OB1 FB1 FC5

FC10

.

.CALL FB1

.

.

1 2

34

5..

CALL FC10..

.

.CALL FC5

.

6

LD for OB1 LD for OB1

1

LD for FB1

LD for OB1

2

LD for FB1

LD for FC5

순환시작

LD for OB1

3

LD for FB1

LD for OB1

4

LD for OB1

5

LD for FC10free

freefree

freefree

free

LD for OB1

6

free

Page 64: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Data Management in the User ProgramPage 4

LAD 편집기에서 위의보기는 STEP 7의 LAD 편집기를이용해사용자가코일 (예: Q 0.7)을분기 추가로삽입함으로써프로그램될수있는분기의표시를보여줍니다.

스크래치패드메모리 STEP 5의경우분기의프로그래밍을직접할수는없었습니다. 및커넥터 사용자는원칙대로메모리비트 (커넥터)로서도움말변수를네트워크의

결과로서분기점의위치에삽입해야합니다. 다음세그먼트 -모든추가분기를위한도움말변수 -에서이도움말변수는각경우에입력으로사용되며스캔됩니다.

LAD 편집기 LAD 편집기를이용해 STEP 7에서직접그런분기를프로그램할수있습니다. 내부적으로도움말변수 -로컬데이터스택비트 -는또한 LAD 편집기에의해분기위치에서사용됩니다.이경우로컬데이터스택에서메모리를사용하면그동안에호출된블록이2개의도움말변수 (L 20.0과 L 20.1)를덮어쓰기할수없도록보장합니다.

임시변수 사용자는또한선언부에서임시변수를선언하고절대적또는기호적으로, 즉지정된식별자이름을통해변수에액세스할수있습니다.

Date: 2002-02-23File: PRO2_05e.4

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

보기: 스크래치패드메모리에대한대체

LAD에서분기

분기위치

로컬데이터스택의도움말변수

STL 표시

Page 65: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Data Management in the User ProgramPage 5

개요 데이터블록은사용자데이터를저장하기위해사용됩니다. 논리블록과마찬가지로데이터블록은사용자메모리에서공간을차지합니다. 사용자프로그램이사용하는변수데이터 (예: 숫자값)가데이터블록에나타납니다.사용자프로그램은비트, 바이트, 워드, 더블워드인스트럭션을통해데이터블록의데이터에액세스할수있습니다. 기호적또는절대적으로액세스할수있습니다.

응용영역 데이터블록은내용에따라여러방식으로사용자에의해설치될수있습니다. 다음은구분됩니다.• 공유데이터블록: 이것은사용자프로그램의모든논리블록이액세스할수있는정보를포함합니다.

• 인스턴스데이터블록: 이것은항상한개의 FB에할당됩니다. 이러한 DB데이터는관련 FB에의해서만처리될수있습니다. 복수인스턴스 DB는특별한경우의인스턴스 DB입니다. 복수인스턴스 DB는한개의 FB에할당되고원칙적으로추가되는 FB의호출계층구조에서 “사적”데이터를저장합니다.

DB 만들기 공유 DB는 DB 편집기에의해서또는이전에설정된 “사용자정의데이터형”에따라만들어집니다. 인스턴스또는복수인스턴스 DB는항상 FB와관련해서만들어집니다.

등록정보 데이터블록의경우다음의사항은대화상자 “등록정보”를통해선언될수있습니다.링크되지않은 DB : “링크되지않음”특성을가지는데이터블록은단지로드에저장되고전송중에작업메모리에저장되지않습니다. 이처럼 “링크되지않은데이터블록”의지정된데이터가작업메모리에서요구되면 DB의내용은SFC20 (블록전송)으로개방된주메모리영역 (예: DB)에전송될수있습니다.쓰기보호: 데이터블록은사용자프로그램이덮어쓸수없도록보호될수있습니다.

Date: 2002-02-23File: PRO2_05e.5

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

데이터블록 (DB)

OB1 FC10

FC20

FB1

공유데이터

DB20

인스턴스데이터

DB5

모든블록에대한액세스

FB1으로의인스턴스 DB

• 링크되지않은 DB• 쓰기보호된 DB

Page 66: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Data Management in the User ProgramPage 6

개요 데이터형은데이터의속성, 즉내용표시, 허용된값범위, 가능한인스트럭션을규정합니다.STEP7에서는 3가지종류의데이터형이구분됩니다.• 기본데이터형

• 복잡한데이터형

• 파라미터형

데이터형의 데이터형은 STL 프로그램에서 CPU를통한명령실행중암묵적으로사용될사용 뿐아니라블록의파라미터할당에서명시적으로사용됩니다.

명령실행: STEP7 명령의입력어드레스는 STL 프로그램에서암묵적데이터형을할당받습니다. 누산기내용을서로링크하는디지털명령의경우프로그래머는 “올바른”데이터형이누산기에먼저로드되도록해야합니다. 인스트럭션의결과데이터가또다른인스트럭션의입력데이터로사용되면(연속계산) 프로그래머는전달되는데이터가호환이가능하도록해야합니다. 만약호환이되지않으면프로그래머는명시적으로전환을해야합니다. 블록호출: 여기에서데이터는블록호출에의해명시적으로호출된블록에전달되어이후처리를받게됩니다. 여기에서 STL/LAD/FBD 편집기는전달되는데이터의호환성을검사합니다. 실질파라미터의데이터형은형식파라미터의데이터형과호환되어야하며그렇지않은경우할당이일어나지않습니다(컴파일러오류).

데이터형 S7-프로그램의변수또는어드레스는다음위치에서데이터형을할당선언 받습니다.

• S7-프로그램의전역기호표• 논리블록의선언부

• 공유 DB를만들때의선언보기

Date: 2002-02-23File: PRO2_05e.6

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

STEP 7에서의데이터형기본데이터형 (32 비트까지)

비트데이터형 (BOOL, BYTE, WORD, DWORD, CHAR)산술데이터형 (INT, DINT, REAL)시간형식 (S5TIME, TIME, DATE, TIME_OF_DAY)

복잡한데이터형시간형식 (DATE_AND_TIME)배열 (ARRAY[....] OF....)구조체 (STRUCT... END_STRUCT)문자열 (STRING)

파라미터형타이머및카운터파라미터 (TIMER, COUNTER)포인터형식 (POINTER, ANY)블록파라미터형 (BLOCK_FB, BLOCK_FC, BLOCK_DB,

BLOCK_SDB)자체정의데이터형

사용자정의데이터형 UDT

Page 67: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Data Management in the User ProgramPage 7

BOOL, BYTE, WORD BOOL 데이터형의변수는 1 비트를나타내며 BYTE, WORD, DWORD 데이터DWORD, CHAR 형의변수는 8, 16, 또는 32 비트의비트시퀀스입니다. 이들데이터형의경우

개별비트는평가되지않습니다.

이데이터형은계수함수와연결되어사용되기때문에특별형태로서 ASCII 문자표에서문자를표시하는 CHAR 데이터형은물론 BCD 숫자와계수 (값)가있습니다 (참고: ST7-PRO1).

INT, DINT, REAL 이데이터형을가지는변수는수를나타내며이수를사용하여해당산술연산이실행될수있습니다 (참고: ST7-PRO1과 3장).

S5TIME S5TIME 데이터형의변수는시간함수를지정하기위해사용됩니다. 시간의지속은시, 분, 초, 또는밀리초로지정될수있습니다. 내부표시는 000에서999까지의 BCD 숫자를 S5TIME의가장중요한 4가지비트로구성된시간기준(0=10ms, 1=100ms, 2=1s, 3=10s)으로곱하여나타냅니다.StdLib30에서 IEC-Library의함수FC 33과 FC40은 TIME에서 S5TIME 포맷을전환시키거나 S5TIME에서 TIME 포맷을전환시킵니다.

DATE DATE 데이터형의변수는 1 워드에부호없는정수로저장됩니다. 변수의내용은 01.01.1990 이후의날짜수에해당합니다 (D#2168-12-31 = W#16#FF62).

TIME TIME 데이터형의변수는더블워드를차지합니다. 변수의내용은밀리초의DINT 숫자로해석되며따라서양수또는음수일수있습니다 (예: T#1s=L#1 000, T#24d20h31m23s647msw = L#214748647).

TIME_OF_DAY TIME_OF_DAY 데이터형의변수는더블워드를차지합니다. 이변수는하루가시작 (0:00 시간)된이후의밀리초숫자를부호없는정수로포함합니다 (예: TOD#23:59:59.999 = DW#16#0526_5B77).

Date: 2002-02-23File: PRO2_05e.7

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

기본데이터형

주요단어 너비 (비트) 이형식의상수예

BOOL 1 1 또는 0BYTE 8 B#16#A9WORD 16 W#16#12AFDWORD 32 DW#16#ADAC1EF5CHAR 8 ' w '

S5TIME 16 S5T#5s_200ms

INT 16 123DINT 32 65539 또는 L#-123REAL 32 1.2 또는 34.5E-12

TIME 32 T#2D_1H_3M_45S_12_MSDATE 16 D#1993-01-20TIME_OF_DAY 32 TOD#12:23:45.12

Page 68: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Data Management in the User ProgramPage 8

Date: 2002-02-23File: PRO2_05e.8

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

복잡한데이터형

주요단어 너비 (비트) 보기

DATE_AND_TIME 64 DT#97-09-24-12:14:55.0

STRING 8 * (#문자 +2) ‘This is a string’(최대 254 자로된 ‘SIEMENS’문자열)

ARRAY 사용자정의 Mes_Val.: ARRAY[1..20] OF INT;(필드, 같은데이터형구성요소의그룹화)

STRUCT 사용자정의 Motor: STRUCT(구조체, 다른데이터형 Speed: INT;구성요소의그룹화) POWER: REAL;

END_STRUCT;

UDT(사용자정의데이터형, 사용자정의 Motor: STRUCT 기본또는복잡한데이터형의 “서식파일”) Speed: INT;

POWER: REAL;) END_STRUCT;

복잡한데이터형 복잡한데이터형 (배열과구조체)은기본또는복잡한데이터형의그룹화로만들어집니다.따라서사용자는구조체또는기호방식으로다량의데이터를처리하기위해자신의문제에맞게조정한데이터형을만들수있습니다.복잡한데이터형은 STEP-7 인스트럭션으로직접전체를한꺼번에처리할수없으며구성요소별로처리되어야합니다. 복잡한데이터형은사전에정의되며 DATE_AND_TIME 데이터형의길이는 64 비트입니다. ARRAY (필드), STRUCT (구조체), STRING (문자열) 데이터형의길이는사용자가결정합니다. 복잡한데이터형을가진변수는공유데이터블록안에서그리고논리블록의파라미터나로컬변수로서만선언될수있습니다.

사용자정의 복잡한데이터형은자체식별자를갖지않으며따라서데이터형선언에서데이터형 반복적으로사용될수없습니다.

구조체데이터형은사용자정의데이터형을이용해서자체 “블록” (UDT1 ... UDT65535)을할당받을수있습니다.이러한 “블록”은블록의선언부에서변수를선언하기위해또는공유데이터블록을만들기위해원하는만큼사용될수있습니다.

Page 69: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Data Management in the User ProgramPage 9

Date: 2002-02-23File: PRO2_05e.9

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

파라미터형

파라미터 너비 (비트) 설명

TIMER 16 호출된논리블록에의해사용되는특정시간포맷: T1

COUNTER 16 호출된논리블록에의해사용되는특정카운터확인포맷: C10

BLOCK_FB 16 호출된논리블록에의해사용되는BLOCK_FC 특정블록확인BLOCK_DB FC101, DB12BLOCK_SDB

POINTER 48 값대신에어드레스를포함하는포인터포맷: P#M50.0

ANY 80 실질파라미터의데이터형이선택사항일때사용포맷: P#M50.0 BYTE 10

파라미터형 기본및복잡한데이터형외에도파라미터를할당할수있는블록의형식파라미터에대해파라미터형을정의할수있습니다. 이형식파라미터를이용하면그형의실질파라미터와마찬가지로블록안에서같은인스트럭션을실행할수있습니다. 이러한형식파라미터에는블록호출중에관련된실질파라미터를제공해야합니다.

TIMER 및 COUNTER 이파라미터형은 TIMER 또는 COUNTER 형의형식파라미터를정의합니다.

BLOCK_xx BLOCK_FB 또는 Block_FC 파라미터형을이용해서논리블록은파라미터로호출된블록에전달될수있습니다. 그러나호출파라미터나정적변수(BLOCK_FB)에대해전혀통제력을갖지않는그런블록만이실질파라미터(FBx, FCy)로서전달될수있습니다.형식논리블록은호출된블록안의인스트럭션 UC 또는 CC (CALL이아님)를통해서만호출될수있습니다.데이터블록 (DB, SDB)의전달이나형식파라미터를참조하는관련인스트럭션에대한제한은없습니다.

POINTER 포인터는값대신주소를포함합니다. Pointer 형의형식파라미터를제공하면어드레스를실질파라미터로서입력합니다. 예로 P#M50.0을들수있습니다. 데이터는비트메모리 M50.0에서시작합니다.

ANY ANY는실질파라미터의데이터형이 “선택사항”일때사용됩니다. 실질파라미터는 ANY 포인터의형태로전달됩니다. 예로P# M10.0 Byte 10을들수있습니다. 영역 MB 10...MB 19는이것으로구별됩니다.

Page 70: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Data Management in the User ProgramPage 10

개요 DATE_AND_TIME 데이터형은날짜와그날의시간으로구성되는인스턴스를나타냅니다. 약어인 DT도 DATE_AND_TIME 대신에사용될수있습니다.DATE_AND_TIME 또는 DT는키워드이며소문자로도쓸수있습니다.

사전설정 변수는선언에서초기값이미리설정될수있습니다 (FC에서블록파라미터, FB에서입/출력파라미터, 또는임시변수로는설정될수없습니다).사전설정은다음과같은형이어야합니다.• DT#Year-Month-Day-Hours:Minutes:Seconds.Milliseconds밀리초의지정은생략될수있습니다.

처리 DATE_AND_TIME 데이터형의변수는개별구성요소에대한절대액세스나해당 IEC-Library 함수를이용해처리될수있습니다.

참고 CPU의실시간시계의현재시간은 SFC1 (READ_CLK)로읽을수있습니다. 시간은 SFC1에의해 DATE_AND_TIME 형의출력파라미터로반환됩니다.

Date: 2002-02-23File: PRO2_05e.10

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

날짜형식: DATE_AND_TIME

Byte n1)

Byte n+2

Byte n+4

Byte n+1

Byte n+3

Byte n+5

Year(90 ... 89)

구조:

Month(01 ... 12)

Day(01 ... 31)

Hour(00 ... 23)

Minute(00 ... 59)

Second(00 ... 59)

Byte n+4 Byte n+7Millisecond(000 ... 999)

Week-day (1..7

모든값은 BCD 포맷으로저장됩니다.변수미리설정: DT#연-월-일-시:분:초.[밀리초]보기: DT#1998-03-21-17:23:00:00IEC-Library를통해처리

1=일요일2=월요일3=화요일4=수요일5=목요일6=금요일7=토요일

1) n = 짝수

Page 71: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Data Management in the User ProgramPage 11

개요 STEP7을설치하면, 하위라이브러리 IEC를가진라이브러리 StdLib30도설치되며, 이라이브러리는 IEC 데이터형의처리를위한함수를포함합니다.위의슬라이드는 DATE_AND_TIME 형의변수를처리하기위한함수의목록을보여줍니다.

참고 FC1, FC3, FC34를사용할때다음사항들을관찰해야합니다.FC1, FC35 인스턴트 (파라미터 T)는 DT#1990-01-01-00:00:00.000과 DT#2089-12-31-

23:59:59.999의범위에있어야합니다. 함수는입력검사를하지않습니다. 만약더하기나빼기의결과가위에지정된범위내에있지않으면결과는개별값에제한되며이진결과 BR은 “0”으로설정됩니다.

FC34 인스턴트는 DT#1990-01-01-00:00:00.000과 DT#2089-12-31-23:59:59.999의범위에있어야합니다. 함수는입력검사를하지않습니다. 첫번째인스턴트(파라미터 T1)이두번째인스턴트 (파라미터 T2)보다더크면 (어리면) 결과는양수입니다. 만약첫번째가두번째보다더작으면 (오래되었으면) 결과는음수입니다. 빼기의결과가 TIME 숫자범위의밖에있으면결과는각값에제한되며이진결과 BR은 “0”으로설정됩니다.

FC3, FC6, FC7, FC8 이러한함수값은오류를보고하지않습니다. 사용자가입력파라미터가올바른값을나타내는지검사해야합니다.

비교함수 비교함수도오류평가를하지않습니다. 각비교함수는반환값 RET_VAL로비교가완료되었는지 (RET_VAL=TRUE) 아닌지 (RET_VAL=FALSE)를알립니다.

Date: 2002-02-23File: PRO2_05e.11

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

DT 변수를처리하기위한함수StdLib30에서의 IEC-Library

FC1 (AD_DT_TM):함수 FC 1은인스턴스 (포맷 DT)에시간기간을추가하며새인스턴스를결과 (포맷 DT)로반환합니다.FC34 (SB_DT_DT): 함수 FC 34는 2개의인스턴스 (포맷 DT)를뺀후시간기간을결과 (포맷TIME)로반환합니다.FC35 (SB_DT_TM): 함수 FC 35는인스턴스 (포맷 DT)에서시간기간 (포맷 TIME)을뺀후새인스턴스 (포맷 DT)를결과로반환합니다. FC3 (D_TOD_DT):함수 FC 3은날짜포맷 DATE와 TIME_OF_DAY (TOD)를결합해서이들포맷을날짜포맷 DATE_AND_TIME (DT)으로전환합니다. FC6 (DT_DATE):함수 FC 6은포맷 DATE_AND_TIME에서날짜포맷 DATE를추출합니다.FC7 (DT_DAY): 함수 FC 7은포맷 DATE_AND_TIME에서요일을추출합니다.FC8 (DT_TOD): 함수 FC 8은포맷 DATE_AND_TIME에서날짜포맷 TIME_OF_DAY를추출합니다. DT#변수에대한비교함수: FC9 (EQ_DT), FC12 (GE_DT), FC14 (GT_DT), FC18 (LE_DT), FC23 (LT_DT), FC28 (NE_DT)

Page 72: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Data Management in the User ProgramPage 12

개요 ARRAY 데이터형은고정된수의같은데이터형구성요소를가지는필드를나타냅니다. 필드 (=ARRAY)는 6차원 (인덱스의수)까지가질수있습니다. 다음제한은배열구성요소의각데이터형에적용됩니다. • 기본 (제한없음)• 복잡 (DATE_AND_TIME, STRUCT, UDT)• 파라미터형은없음

ARRAY는중첩될수없습니다. 최소또는최대인덱스범위의제한은 INT의값범위, 즉 -32768에서 32767로결정됩니다.

액세스 STL 인스트럭션은기본데이터형의배열구성요소에액세스하기위해사용될수있습니다. 배열구성요소는꺽쇠괄호로묶은배열명과인덱스로주소를지정할수있습니다. 인덱스는고정된값, 즉상수용어입니다. 실행중변수인덱싱은 STL에서가능하지않습니다.

참고 개별배열요소의변수인덱싱은 S7-SCL 언어에서만가능합니다. 변수액세스는메모리또는레지스터간접어드레싱을이용해서 STL에서만실행될수있습니다.

Date: 2002-02-23File: PRO2_05e.12

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

날짜형식: ARRAYARRAY (필드) 형식의변수:

단일데이터형 (기본, DT#,STRUCT, UDT) 구성요소의고정된번호선언:일차원:필드명: ARRAY[최소인덱스..최대인덱스] OF 데이터종류;다차원:필드명: ARRAY[최소인덱스1..최대인덱스1,최소인덱스2..최대인덱스2,...] OF 데이터종류;

인덱스: 데이터종류 INT (-32768...32767)

보기:변수선언:일차원: Measured value: ARRAY[1..10] OF REAL;다차원: Result: ARRAY[1..24,2..6] OF DINT;

변수에대한액세스:일차원: L Measured value[5] // ARRAY “측정값”의요소 5에있는값을

// ACCU1에로드합니다. 다차원: T Result[10,5] 인덱스: STL ---> S7-SCL에서는변수인덱싱을할수없습니다.

Page 73: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Data Management in the User ProgramPage 13

개요 위의보기에서 ARRAY 데이터형의변수 2개가데이터블록편집기를이용해DB5에서선언됩니다. 새변수의설정은 DB의 “선언보기”에서만가능합니다(View -> Declaration View):• 시퀀스: ARRAY[1..10] OF REAL• 결과: ARRAY[1..5,3..7] OF INT

ARRAY의초기화 개별배열구성요소는선언에서미리할당된값일수있습니다 (FC 파라미터, FB의입/출력파라미터, 또는임시변수의경우는아님). 데이터형의초기값은구성요소의데이터형과일치해야합니다. 초기값은콤마로분리됩니다. 이러한값은 “초기값”열에입력됩니다. 만약같은값을가지는몇개의연속구성요소가초기화되려면반복인자가사용될수있습니다. 반복인자는둥근괄호로묶여입력되는초기값앞에놓입니다.

보기 5 (1.23467e+002) (다음 5개의구성요소는값 123.467로초기화됩니다.)5 (7,2,3) (다음 5개의요소는값 7, 2, 3을교대로사용하여

초기화됩니다.)초기화의결과는 “데이터보기” (View -> Data View)에서검사되고수정될수있습니다. 만약미리할당된값의수가구성요소의수보다작으면처음부분만미리할당되고나머지부분은 “0”으로초기화됩니다.

초기값의수용 새초기값이 DB의선언보기에서입력되면이러한변경사항은데이터보기에서메뉴항목 Edit -> Initialize Data Block이실행된후에만효력을갖게 (실제값으로유효하게) 됩니다.

FB에서입력및출력파라미터를선언할때 ARRAY의초기값은만들어진인스턴스 DB에서실제값으로수용됩니다.

Date: 2002-02-23File: PRO2_05e.13

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

ARRAY의선언및초기화

DB5 ”선언보기"

DB5 ”데이터보기"

Page 74: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Data Management in the User ProgramPage 14

개요 배열은완전한변수로서데이터형이같거나 POINTER 또는 ANY인블록파라미터에전달될수있습니다. 따라서배열변수의완전한내용은예를들어시스템함수 SFC 20 BLKMOV를이용해또다른대상영역에복사될수있습니다.개별배열구성요소는블록파라미터와배열구성요소가데이터형이같으면또한블록파라미터로전달될수있습니다.

배열변수 배열로선언된블록파라미터의공급은기호적으로만일어날수있습니다. 그러기위해서는블록파라미터와같은구조 (차원, 데이터형, 등)를가지는배열을사전에정의할필요가있습니다. 실질파라미터, 즉 “공급필드”는데이터블록 (공유 DB 또는인스턴스 DB)이나호출블록의로컬데이터영역에위치할수있습니다.

참고 점유된로컬데이터의수는 View -> Block Properties를통해결정될수있습니다.

FC로내부 STL/LAD/FBD 편집기가 FC로파라미터를전달하는중블록파라미터의데이터파라미터전달 형에대한실질파라미터데이터형의호환성을검사한후 “POINTER”의전달, 즉

호출된 FC로실질파라미터의초기어드레스전달만이남습니다.

블록호출의이러한 “절대보기”는블록이 “액세스할수있는노드”를통해온라인으로열릴때표시됩니다. 이경우기호형태로블록호출의재컴파일을가능하게하는오프라인기호정보는존재하지않습니다.

Date: 2002-02-23File: PRO2_05e.14

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

ARRAY의파라미터전달

절대보기

이렇게입력될수없습니다.

보기: ARRAY를함수에전달FC21

기호파라미터공급

네트워크 1: Mes_Val은 FC21에서 ARRAY로 선언됩니다. CALL FC 21Mes_Val:=”Temperature".sequence

네트워크 1: Mes_Val은 FC21에서 ARRAY로 선언됩니다.

CALL FC 21Mes_Val:=P#DB5.DBX0.0

DB5 ”온도"

Page 75: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Data Management in the User ProgramPage 15

개요 위의보기는 ARRAY 변수가메모리에저장되는방법을보여줍니다.실행중개별구성요소가메모리또는레지스터간접어드레싱을통해액세스되려면 ARRAY 변수가메모리에저장되는방식을정확히알필요가있습니다.

변수저장 ARRAY 변수는항상워드한계, 즉짝수어드레스를가지는바이트에서시작합니다. ARRAY 변수는다음워드한계까지메모리를차지합니다.BOOL 데이터형을가지는구성요소는가장중요하지않은비트에서시작하며, BYTE와 CHAR 데이터형을가지는구성요소는짝수바이트에서시작합니다. 개별구성요소는시퀀스에나열됩니다.다차원배열에서구성요소는첫번째차원부터시작해서한줄씩저장됩니다. 새차원은비트및바이트구성요소의경우항상그다음바이트에서, 그리고다른데이터형구성요소의경우항상그다음워드에서시작합니다.

참고 DB에서개별 ARRAY 구성요소의어드레스는 “데이터보기”열에표시됩니다.

Date: 2002-02-23File: PRO2_05e.15

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

메모리에 ARRAY 변수저장

Byte n1)

BYTE, CHAR 데이터형

일차원배열 다차원배열

BOOL 데이터형

8 7 6 5 4 3 2 17 6 5 4 3 2 1 0

etc. 12 11 10 9Byte n+1

Byte n1)

Byte n+1

Byte n+2

바이트 1

바이트 2

바이트 3

WORD, DWORD,... 데이터형

Byte n1)

Byte n+1

Byte n+2 Byte 3

...

워드 1

워드 2Byte n+2 ...

보기ARRAY[1..2,1..3,1..2] OF BYTE

Byte n1)

Byte n+1

Byte n+2

바이트 1.1.1

바이트 1.1.2

바이트 1.2.1... 바이트 1.2.2

바이트 1.3.1

바이트 1.3.2

바이트 2.1.1

바이트 2.1.2

바이트 2.2.1

바이트 2.2.2

바이트 2.3.1

바이트 2.3.2

1) n = 짝수

Page 76: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Data Management in the User ProgramPage 16

개요 STRUCT (구조체) 데이터형은각경우에다른데이터형을가질수있는고정된수의구성요소를나타냅니다. 구조체는 8개의중첩단계를가질수있습니다. 구조체는논리블록의선언부나공유 DB, 또는사용자정의데이터형(UDT)에서선언될수있습니다.다음제한이구조체의구성요소데이터형에적용됩니다.• 기본 (제한없음)• 복잡 (DATE_AND_TIME, ARRAY, STRUCT, UDT)• 파라미터형없음

구성요소에대한 STL 인스트럭션은구조체의구성요소 (기본데이터형)에액세스하기위해액세스 사용될수있습니다. 구조체의구성요소는다음을통해주소가지정될수

있습니다. • 구조체명.구성요소명구조체명과구성요소명사이의구분자로점을삽입해야합니다.구조체의중첩깊이가보다깊으면, 즉구조체의구성요소가다시구조체이면구조체의가장낮은구성요소에대한액세스는다음과같은 “이름경로”를통해가능합니다. • 구조체명.구성요소명.하위구성요소명. ...각경우에구성요소명과하위구성요소명사이에점을삽입해야합니다.

Date: 2002-02-23File: PRO2_05e.16

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

데이터형: STRUCT

STRUCT (구조체) 형식의변수:다른데이터형 (기본, DT#, ARRAY, STRUCT, UDT) 구성요소의고정된번호선언:구조체명: STRUCT요소1이름: 데이터형;요소2이름: 데이터형;...

END_STRUCT구조체명은 STRUCT 데이터형의변수이름입니다.요소1이름, 기타는개별구성요소의이름입니다.

보기:변수선언 : 변수에대한액세스:

MotorControl : STRUCT S MotorControl.ONON : BOOL; L MotorControl.ActualSpeed OFF : BOOL; T MotorControl.SetpointSpeedSetpointSpeed: INT; ...ActualSpeed : INT;

END_STRUCT;

Page 77: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Data Management in the User ProgramPage 17

개요 위의보기에서 STRUCT 형의구성요소를가지는일차원 ARRAY [1..4]는점증식데이터블록편집기로 DB6 (“Turn_6") 안에서선언됩니다.구조체는차례로세가지구성요소로구성되며, 처음 2개구성요소, 즉“START”와 “STOP”은 BOOL 데이터형을가집니다. 세번째구성요소는복잡한데이터형 ARRAY[1..10]을가집니다.이 ARRAY[1..10] 데이터형의구성요소는다시 REAL 구성요소"Cutoffpoint_front”, "Cutoffpoint_ back”, "Stoppingpoint”를가지는 STRUCT 형으로되어있습니다.

액세스 개별구성요소는예를들어다음과같이주소가지정될수있습니다.• L "Turn_6".Axis[3].Position[7].Cutoffpoint_back• S "Turn_6".Axis[2].START, 등

STRUCT의 개별구조체구성요소는선언 (“초기값”열)에서미리할당된값일수있습니다(FC

초기화 파라미터, FB의입/출력파라미터또는임시변수의경우는아님). 초기값의데이터형은구성요소의데이터형과호환될수있어야합니다.

초기값의수용 새초기값이 DB의선언보기에서입력되면이러한변경사항은데이터보기에서메뉴항목 Edit -> Initialize Data Block이실행된후에만효력을갖게 (실제값으로유효하게) 됩니다.

FB에서입력및출력파라미터를선언할때 STRUCT의초기값은만들어진인스턴스 DB에서실제값으로수용됩니다.

Date: 2002-02-23File: PRO2_05e.17

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

STRUCT 선언보기: 배열 -구조체 -배열선언

DB6 ”선언보기"

DB5 ”데이터보기"

Page 78: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Data Management in the User ProgramPage 18

개요 구조체는완전한변수로서데이터형이같거나 POINTER 또는 ANY인블록파라미터에전달될수있습니다. 따라서구조체변수의완전한내용은예를들어시스템함수 SFC 20 BLKMOV를이용해또다른대상영역에복사될수있습니다.개별구조체구성요소는또한블록파라미터와구조체구성요소가데이터형이같으면블록파라미터로전달될수있습니다.

STRUCT 형 구조체로선언된블록파라미터의공급은기호적으로만일어날수있습니다. 변수 그러기위해서는블록파라미터와같은구조를가지는구조체를정의할필요가

있습니다.

실질파라미터, 즉구조체변수는데이터블록 (공유 DB 또는인스턴스 DB)이나호출블록의로컬데이터영역에위치할수있습니다.

FC로내부 STL/LAD/FBD 편집기가 FC로파라미터를전달하는중블록파라미터의데이터파라미터전달 형에대한실질파라미터데이터형의호환성을검사한후 “POINTER”의전달,

즉호출된 FC로실질파라미터의초기어드레스전달만이남습니다.

블록호출의이러한 “절대보기”는블록이 “액세스할수있는노드”를통해온라인으로열릴때표시됩니다. 이경우기호형태로블록호출의재컴파일을가능하게하는오프라인기호정보는존재하지않습니다.

Date: 2002-02-23File: PRO2_05e.18

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

STRUCT 형의파라미터전달

절대보기

이렇게입력될수없습니다.

보기: STRUCT를함수에전달FC23

기호파라미터공급

네트워크 1: 컨베이어는 FC23에서 STRUCT로 선언됩니다.

CALL FC 21Conveyor:="Conveyor_belt".drive

네트워크 1: 컨베이어는 FC23에서 STRUCT로 선언됩니다.

CALL FC 21Conveyor:=P#DB7.DBX0.0

DB7 "Conveyor_belt"

Page 79: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Data Management in the User ProgramPage 19

개요 위의보기는 STRUCT 변수가메모리에저장되는방법을보여줍니다.실행중개별구성요소가메모리또는레지스터간접어드레싱을통해액세스되려면 STRUCT 변수가메모리에저장되는방식을정확히알필요가있습니다.

변수저장 STRUCT 변수는항상워드한계, 즉짝수어드레스를가지는바이트에서시작합니다. 그후에개별구성요소는메모리의선언시퀀스에위치합니다. STRUCT 변수는다음워드한계까지메모리를차지합니다.

BOOL 데이터형을가지는구성요소는가장중요하지않은비트에서시작하며, BYTE와 CHAR 데이터형을가지는구성요소는짝수바이트에서시작합니다. 다른데이터형을가지는구성요소는항상워드한계에서시작합니다.

Date: 2002-02-23File: PRO2_05e.19

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

메모리에 STRUCT 변수저장

Byte n1)

기본데이터형을 복잡한데이터형을가진구조 가진구조

6 5 4 3 2 17 6 5 4 3 2 1 0

Byte n+1

Byte n+2 바이트 1

바이트 2

바이트 3

Byte n+8

Byte n+9

Byte 3

워드 1

워드 2

...1) n = even

첨가바이트

첨가바이트

Byte n+3

Byte n+4

Byte n+5

6 5 4 3 2 1첨가바이트

Byte n+6

Byte n+7

...

기본데이터형을가진구성요소

워드제한

ARRAY 데이터형을가진구성요소

STRUCT 데이터

형식을가진구성요소

워드제한

...

워드제한

Page 80: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Data Management in the User ProgramPage 20

개요 String 데이터형은문자열 (예: 메시지텍스트)을저장하기위해사용됩니다. 이런방식으로단순한 “(메시지) 워드프로세싱시스템”이 S7-CPU에서실행될수있습니다. STRING 데이터형은 254자까지의문자열을나타냅니다.선언에서꺾쇠괄호로지정된숫자(1..254)는 STRING 변수에저장될수있는최대문자수를나타냅니다. 만약이정보가제공되지않으면 STL/LAD/FBD 편집기는 254자의길이를가정합니다.

STRING 변수에 STRING 변수의개별문자는다음과같은기본 STL 인스트럭션을이용해서대한액세스 액세스될수있습니다.

• L StringName[5](변수에저장된 5번째문자를로드합니다.)STRING 변수 (메시지텍스트)의실제처리는 IEC-Library FC를통해가능합니다.

초기화 선언에서 STRING 데이터형의변수에시작텍스트를미리할당할수있습니다(FC로의블록파라미터나 FB의입/출력파라미터, 또는임시변수로서는안됨).초기화는작은따옴표로묶은 ASCII 코드문자로이루어집니다. 만약용어를통제하기위한특수문자가포함된다면달러문자 (§)를앞에놓아야합니다. 사용할수없는특수문자는다음과같습니다.• §§ 단순한달러문자

• §L, §l 줄바꿈 (LF)• §P, §p 페이지바꿈

• §R, §r 캐리지리턴

• §T, §t 탭키

Date: 2002-02-23File: PRO2_05e.20

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

데이터형: STRINGSTRING (문자열) 형식의변수:

데이터형 STRING은 254자까지의문자열을표시합니다. 응용: 메시지텍스트의처리선언:문자열이름: STRING[최대숫자]: ’초기텍스트'

(최대숫자문자까지에대한문자열변수 S, 최대숫자: 0... 254)문자열이름: STRING: ’초기텍스트'

(254자까지에대한문자열변수)

보기:변수선언:오류신호 : STRING 'Motor failure_4'

(변수오류신호는위의텍스트로초기화됩니다.)경고 : STRING[50] ' '

(”비어있음" 변수경고는문자 50자까지받아들일수있습니다.)처리:기본액세스:L Fault signal[5] (오류신호에서 5번째문자를로드합니다.)IEC-Library FC에의해처리

Page 81: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Data Management in the User ProgramPage 21

개요 STRING 데이터형의변수는최대길이가 256 바이트이며따라서 254자의 “순수데이터”즉문자가수용될수있습니다.

변수저장 STRING 변수는항상워드한계, 즉짝수어드레스를가지는바이트에서시작합니다. 변수를설정할때최대길이가변수선언에따라변수의첫번째바이트에입력됩니다. 마찬가지로사전할당이나처리에서현재사용되는길이, 즉저장된문자열의길이가 IEC-Library 함수를이용해두번째바이트에입력됩니다. 이러한정보는모두 STRING 변수를처리할때 IEC-Library에의해요구됩니다.그후에 ASCII-포맷의문자가따라옵니다. STRING 변수에포함되지않은문자는초기화할때 B#16#00로채워집니다.

파라미터전달 STRING 데이터형의변수는 ARRAY나 STRUCT 변수와마찬가지로데이터형이같은, 즉 STRING 길이가같은블록파라미터에전달될수있습니다. POINTER 또는 ANY 데이터형의 FC 또는 FB 파라미터로의전달도가능합니다.

Date: 2002-02-23File: PRO2_05e.21

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

메모리에 STRING 변수저장

Byte n1)

보기:초기화로선언

주어진이름: STRING[8]: 'OTTO'STRING 변수 ”주어진이름”저장

Byte n+1

Byte n+2

최대길이= 8

현재길이= 4

첫번째문자= 'O'

Byte n+8

...

1) n =짝수

두번째문자= 'T'Byte n+3

Byte n+4

Byte n+5

Byte n+6

Byte n+7

세번째문자= 'T'

네번째문자= 'O'

저장될수있는문자의최대숫자, 즉선언부에서지정된길이를지정합니다.

STRING 변수에현재저장되는문자를지정합니다.

B#16#00

B#16#00

B#16#00Byte n+9 B#16#00

저장될수있는문자의최대숫자또는현재길이에대한정보는 IEC-Library 함수에의해평가됩니다.

Page 82: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Data Management in the User ProgramPage 22

개요 STEP7을설치하면하위라이브러리 IEC를가지는라이브러리 StdLib30도설치되며이라이브러리는 IEC 데이터형의처리를위한함수를포함합니다.위의슬라이드는 STRING 형의변수를처리하기위한함수의목록을보여줍니다.

참고 일반적으로함수는사용된최대길이또는실제길이에대한정보를이용해오류평가를실행합니다. 함수가오류를인식하면일반적으로 BR 비트는 “0”으로설정됩니다. 개별함수에대한자세한설명은 IEC-Library에대한온라인도움말에나옵니다.

비교함수 비교함수는문자열의사전편집상의비교를실행합니다. 왼쪽에서시작해서문자는 ASCII 코딩과비교됩니다 (예: ‘a’는 ‘A’보다크며 ‘A’는 ‘B’보다더작습니다). 첫번째다른문자가비교결과를결정합니다. 만약보다긴문자열의왼쪽부분이보다짧은문자열과같다면보다긴문자열이더긴것으로간주됩니다.함수는오류를표시하지않습니다. 각비교함수는반환값 RET_VAL을이용해비교가완료되었는지 (RET_VAL=TRUE) 아닌지 (RET_VAL=FALSE)를나타냅니다.

Date: 2002-02-23File: PRO2_05e.22

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

STRING 변수를처리하기위한함수StdLib30에서의 IEC-Library

FC2 (CONCAT):함수 FC2는 2개의 STRING 변수를한개의문자열로결합합니다.FC4 (DELETE): 함수 FC 4는문자열에서 P. 문자로서의 L 문자를삭제합니다.FC11 (FINF): 함수 FC 11은첫번째문자열에서두번째문자열의위치를전달합니다.FC17 (INSERT): 함수 FC 17은 P. 문자이후에파라미터 IN2의문자열을파라미터IN1의문자열에삽입합니다.FC20 (LEFT):함수 FC 20은문자열의첫번째 L 문자를전달합니다.FC21 (LEN): 함수 FC 21은문자열의현재길이 (유효한문자수)를출력합니다.FC26 (MID): 함수 FC 26은문자열의중간부분을전달합니다.FC31 (REPLACE): 함수 FC 31은 P. 문자로서 (포함) 첫번째문자열 (IN1)의 L 문자를두번째문자열 (IN2)로대체합니다.FC32 (RIGHT): 함수 FC 32는문자열의마지막 L 문자를전달합니다.STRING 변수에대한비교함수: FC10 (EQ_STRING), FC13 (GE_STRING), FC15 (GT_STRING), FC19 (LE_STRING), FC24 (LT_STRING), FC29 (NE_STRING)

Page 83: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Data Management in the User ProgramPage 23

개요 데이터구조가사용자프로그램에서빈번하게반복되거나데이터구조에이름이주어지면 STEP7은자체사용자정의데이터형 (UDT= 사용자정의데이터형)이정의될수있게허용합니다 (예: 고급언어 “C”에서의 typedef).응용프로그램과관련된데이터형의사용을통해해결해야할작업이보다효율적으로프로그램될수있습니다. 제조업체와같은사용자는자신의문제에맞게조정된데이터형을작성해서설치할수있습니다.

UDT 만들기 UDT는점증식편집기나텍스트편집기로만들어져블록컨테이너에 “독립적”블록 (UDT1 ... UDT65535)으로저장됩니다. 기호이름이이 UDT에할당되거나전역기호표의이름을통해관련데이터구조에할당될수있습니다.전역적으로유효한 “템플릿”이 UDT를통해만들어지며, 이템플릿은새변수의선언에서또는공유 DB를만들기위해원하는만큼자주사용될수있습니다.

Date: 2002-02-23File: PRO2_05e.23

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

사용자정의데이터형: UDT사용자정의데이터형에대한응용:

속성이확장되었거나변경된새데이터형만들기 (예: 초기값)자동화작업에대한보다효율적인해결방안

프로그램컨테이너의모든블록에대해보편적으로유효

변수정의에서원하는만큼자주사용되거나전역 (공유) DB를만들기위해사용될수있음

보기:새데이터형의정의 (구조체):

UDT5 STRUCTON : BOOL;OFF : BOOL;SetpointSpeed: INT; ...ActualSpeed : INT;

END_STRUCT;변수선언:

Motor_1: UDT5;Motor_2: UDT5;

변수에대한액세스:L Motor_1.ActualSpeed

Page 84: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Data Management in the User ProgramPage 24

개요 위의보기에서 UDT5는드라이브구조에대한 4가지구성요소 (ON, OFF, SetpointSpeed and ActualSpeed)로만들어진후입/출력파라미터의선언에서FC23에삽입됩니다. UDT5 데이터형의 10개구성요소를가지는일차원 ARRAY가 FC23에서선언됩니다.

UDT에대한초기값 사용자정의데이터형이미리할당되어구조체처럼사용됩니다. UDT의구조는STRUCT에대한구조와똑같습니다. 그러나 UDT를만들어서사용자프로그램에의해처리될수있는변수를선언할수는없습니다. UDT는오히려새변수선언을위해원하는만큼자주사용될수있는 “템플릿”을나타냅니다.

구조체와마찬가지로사용자는또한 UDT에서초기값을결정할수있습니다. UDT가변수선언을위해사용되면이들변수의내용은 UDT의초기값으로초기화됩니다 (FC의파라미터, FB의입/출력파라미터및임시변수에대해서는해당되지않음).

DB 만들기 UDT는또한공유데이터블록을만들기 (대화상자: New Data Block) 위한양식으로서사용될수있습니다. 이경우 DB는같은구조와각 UDT의초기값으로설정됩니다.

Date: 2002-02-23File: PRO2_05e.24

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

UDT의사용UDT5

FC23

Page 85: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Data Management in the User ProgramPage 25

Date: 2002-02-23File: PRO2_05e.25

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

연습 5.1: SFC 1 (READ_CLK)을이용하여타임오브데이읽기

파라미터

파라미터 선언 데이터 형식 메모리 영역 설명CDT OUTPUT DATE_AND_TIME (DT) D, L 현재 시간 및 현재 날짜 출력ET_VAL OUTPUT INT E, A, M, D, L SFC 반환값

SFC1EN

RET_VAL

ENO

??.?

CDT ??.?

연습목적: 복잡한데이터형 DATE_AND_TIME에익숙해지고 IEC 함수를이용해처리하기

문제정의 다음기능을가지는 FC51을만듭니다.• FC51은시스템함수 SFC51을이용해서실제 CPU 시간을읽습니다. • 시간과분이디지털디스플레이에표시됩니다.

절차 1. 위의기능을가지는 FC51 블록을만듭니다.2. OB1에서 FC51을호출합니다.3. 메뉴항목 PLC -> Set Time and Date를이용해 SIMATIC 관리자에서

CPU 클럭이올바르게설정되었는지확인합니다. 4. OB1과 FC51을 CPU에다운로드합니다.5. 프로그램을테스트합니다.

Page 86: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Block Calls and Multi-instance ModelPage 1

목차 페이지

S7-CPU의소프트웨어구조 ................................................................................................. 2블록개요 ..................................................................................................................………. 3함수호출 (FC).......................................................................................................................……….. 4FC 호출에서파라미터전달 ................................................................................................. 5함수를호출하기위한다른인스트럭션 ....................................................................................... 6함수블록 (FB)을가지는인스턴스만들기 .......................................................................... 7함수블록 (FB)을가지는인스턴스만들기 ...............................................................................…….. 8FB 호출에서파라미터전달 ................................................................................. 9FB를호출하기위한다른인스트럭션 .....................................................................................…….. 10"전달되는" 파라미터 ..........................................................................................................………. 11프로세스단위에대한복수인스턴스모델 ...............................................................................…….. 12"프레스라인"에대한프로그램구조 ........................................................................................ 13복수인스턴스모델의속성 ……….................................................................................... 14연습 6: 어셈블리라인으로서컨베이어모델 .................................................................... 15연습 6.1: 작업장에대한프로그램구조 ...................................................................... 16연습 6.1: 프로세싱장소 1에대한 FB1 만들기 ................................................................... 17연습 6.1: FB1의프로그램구조 ......................................................................................... 18연습 6.2: 전송벨트에대한 FB2 만들기 ……………….............................................................. 19연습 6.2: OB1에서 FB1과 FB2의파라미터연결 ……………….................................................. 20연습 6.3: 3개스테이션으로확장 …………………………………............................................. 21연습 6.3: 블록파라미터의연결 ………………..................................................................... 22FC Call에서파라미터전달 (2) .........................................................................................……… 23FC 호출에서파라미터전달 (3) ............................................................................................ 24FC 호출에서파라미터전달 (4) ............................................................................................ 25FC 호출에서파라미터전달 (5) ........................................................................................... 26추가연습 6.4: 자체카운터블록만들기 ……………………..................................................... 27

블록호출및복수인스턴스모델

Page 87: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Block Calls and Multi-instance ModelPage 2

Date: 10/17/99File: PRO2_06e.2

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

사용자프로그램

S7-CPU의소프트웨어구조

운영체제 START-UP OB

Read in PII

Call OB1

Output PIQ

Event-drivenOBs

FBs

FBs

FBs FCs

FCs

. . .

. . .

순환프로그램프로세싱

개요 S7-300/400 PLC 시스템은통제된프로세스를통해정보를처리합니다. 정보는“입력”을통해읽은후평가, 처리되고마지막으로출력을통해프로세스에출력됩니다.

소프트웨어구조 S7-300/400 PLC 시스템의 CPU 소프트웨어는다음부분으로구분됩니다.• 운영체제

• 사용자프로그램

조직블록 (OB)은운영체제와사용자프로그램간의인터페이스를형성합니다.

운영체제 운영체제는사용자지향의통제작업에연결되지않은모든 CPU 기능과시퀀스를조직합니다. 여기에는다음의사항이포함됩니다.• CPU 완전재시작, 또는재시작• 이미지프로세싱처리

• 순환적및이벤트드리븐 OB 호출• 오류인식

• 예를들어 PG 및프로세스입/출력과통신운영체제의퍼포먼스는파라미터할당에의해영향받을수있습니다 (예: 순환시간감시, 이벤트중심 OB의우선순위, 등).

사용자프로그램 사용자프로그램은 STEP7 프로그래밍소프트웨어를이용해만들어질수있습니다. 이것은모듈로디자인될수있습니다. 즉, 그자체로기능을가지는프로그램부분 (블록)으로구성될수있습니다.

블록 조직블록은해당이벤트가발생할때운영체제에의해호출됩니다. 다른모든블록의경우조직블록 (OB), 함수블록 (FB), 또는함수 (FC)에서사용자에의해호출되어야합니다.

Page 88: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Block Calls and Multi-instance ModelPage 3

Date: 10/17/99File: PRO2_06e.3

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

블록개요

Block Type Properties구조블록 -운영체제에대한사용자인터페이스(OB) -등급을매긴우선순위 (0...27)

-로컬데이터스택의특정시작정보함수블록 -파라미터를할당할수있음(FB) - (리콜) 메모리를가짐함수 (FC) -파라미터를할당할수있음

(호출에대한파라미터가할당되어야함)-반환 값이다시주어질수있음-기본적으로메모리가없음

데이터블록 -로컬로구조적데이터저장 (인스턴스 DB)(DB) -전역적으로구조적데이터저장 (공유)

(완전한프로그램에서유효)시스템 - CPU의운영체제에저장되고사용자가호출할수있는함수 (메모리를가진) FB블록 (SFB)시스템 - CPU의운영체제에저장되고사용자가호출할수있는함수 (SFC) (메모리가없는) 함수시스템데이터 -설정데이터와파라미터에대한데이터블록블록 (SDB)

소개 복잡한자동화작업은각각이시스템또는프로세스의기술적기능을나타내는보다작은작업으로구분될때보다잘구조화될수있습니다.

블록클래스 블록은기능과구조, 또는응용면에서사용자프로그램의제한된부분입니다. 블록은내용을유지하면서 2개의클래스로나뉘어질수있습니다.• 논리블록: Step7 사용자프로그램이저장되는블록입니다 (OB, FB, FC,

SFB, SFC).• 데이터블록: 데이터기록을위한블록입니다 (DB와 SDB).

사용 사용자프로그램을개별블록으로나누면다음의장점이있습니다.• 전체자동화작업은보다작고명확한하위작업으로나뉘어질수있습니다.• FB, SFB, FC, SFC와같이파라미터화할수있는블록은다시사용될수있습니다. 즉, 다른파라미터와함께원하는만큼호출할수있습니다.

• 특별한블록 (FB와 SFB)은 “메모리”를가지며따라서특히계산에적합하고이계산의결과는블록의프로세싱이끝난후에도요구됩니다 (컨트롤작업,등)

• 블록은별도로변경, 로드, 테스트될수있습니다. 이런방식으로소프트웨어는프로그램실행시간중에블록별로변경되어다시로드될수있습니다.

• 많은작업에서특별작업을위한블록이표준라이브러리로제공되어개별사용자프로그램에서링크될수있습니다.

• 자주사용되는표준작업에대한블록은 CPU 생산자에의해 CPU 운영체제에서시스템함수블록 (SFB)이나시스템함수 (SFC)로통합될수있습니다.

Page 89: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Block Calls and Multi-instance ModelPage 4

개요 함수는사용자프로그램의구성요소이며 IEC-Standard 1131-3에따라메모리없는블록을나타냅니다. 함수는입력, 출력, 입/출력파라미터를가지는논리블록입니다. 함수는메모리를갖지않으며결과를저장하기위한별도의영구데이터영역이존재하지않습니다. 함수실행중에발생하는임시결과는단지개별로컬데이터스택의임시변수에저장될수있습니다.함수는 (상태를 “기억”하기위한내부메모리가없는) 스위칭네트워크를나타냅니다.

FC 호출 FC는처리될때 “호출”되어야합니다. FC 호출은소위파라미터목록을가지는호출인스트럭션 (여기에서는 CALL FC10)으로구성됩니다.호출인스트럭션이처리된후 CPU는호출된블록 (여기에서는 FC10)에서프로그램프로세싱을계속합니다. 호출된블록은 BE 인스트럭션에도달할때까지처리됩니다.그후에 CPU는호출블록 (여기에서는 OB1)으로되돌아가서 CALL 이후의다음인스트럭션으로프로세싱을계속합니다.

응용 함수는주로 “보조적인서비스”를위해사용되며, 따라서결과는호출블록으로반환됩니다. 결과는 (IEC 1131-3에따라) 전달된파라미터에만의존해야합니다(예를들어산술함수나이진논리연산을가진단일컨트롤).

출력파라미터: 만약표준에따라프로그램하려면함수가실제로한개의반환값 RET_VAL을RET_VAL 호출블록에넘기도록해야합니다.

텍스트모드로입력된함수의경우데이터형은함수정의, 예를들어 Function FC4: INT.를통해직접주어질수있습니다. 여기에서 RET_VAL을입력파라미터로정의할필요는없습니다.

Date: 10/17/99File: PRO2_06e.4

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

함수호출 (FC)

OB1 함수 FC10

프로그램실행

실행부CALL FC10

선언부

Page 90: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Block Calls and Multi-instance ModelPage 5

FC 파라미터 프로세싱을위한데이터는호출된함수로전달될수있습니다. 이데이터전달은CALL 이후에오버레이된파라미터목록을통해서만일어날수있습니다. 오버레이된블록파라미터의이름과데이터형은 FC의선언부에서지정됩니다.입력 (읽기전용), 출력 (쓰기전용), 입/출력파라미터 (읽기및쓰기)가선언될수있습니다.파라미터의수는제한이없으며 (메모리공간!), 이름은최대 24자를포함할수있습니다. 또한파라미터에상세한설명을제공할수있습니다. 블록이파라미터를가지지않으면파라미터목록은 FC 호출에서누락됩니다.

전달메카니즘 CALL의경우 STL/LAD/FBD 에디터는제일먼저파라미터목록에서주어진실질파라미터에서영역횡단포인터를계산하고이포인터를 FC 호출인스트럭션이후즉시저장합니다.형식파라미터에대한액세스 (예: A On_1)가 FC 안에서발생하며 CPU는 B-Stack에저장된반환어드레스에서 FC 호출인스트럭션을결정합니다. 관련된파라미터목록에서 FC는형식파라미터에속하는실질파라미터에대한영역횡단포인터를결정합니다. 실질파라미터에대한액세스는이포인터를통해이루어집니다.이러한전달메커니즘은 “참조에의한호출”과일치합니다. 형식파라미터에대한액세스가 FC 안에서일어나면그결과해당되는실질파라미터에대한액세스가발생합니다.포인터를통한이전달메커니즘은다음을필요로합니다.• 모든블록파라미터가 FC 호출에서할당되어야합니다.• 블록파라미터는선언에서초기화될수없습니다.

참고 DB 안에서블록파라미터에실질파라미터가할당되지않거나복잡한데이터형이전달되면파라미터전달은보다복잡해집니다. 이장의끝부분에서메커니즘에대한개요나결과적으로발생하는오류소스에대한개요를볼수있습니다.

Date: 10/17/99File: PRO2_06e.5

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

FC 호출에서파라미터전달

OB1 함수 FC10

프로그램실행

CALL FC10On_1 := I0.1On_2 := I0.2Off := Q8.0

in On_1 BOOLin On_2 BOOLout Off BOOl...

...A #On_1A #On_2= #Off...

OB1

BLD 1= L 20.0UC FC 10

P#I 0.1P#I 0.2P#Q 8.0

BLD 2

1 0 0 1 0 0 1 0...

IB0

다음장소에있는기본실질파라미터

비트메모리어드레스영역

프로세스이미지

호출자의 L-Stack

블록파라미터

실질파라미터

형식파라미터

Page 91: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Block Calls and Multi-instance ModelPage 6

CALL 인스트럭션 인스트럭션 (매크로) CALL은블록 FC, SFC, FB, SFB를호출하기위해사용되어야합니다. FC 호출에서 CALL을통해서만호출블록과호출된함수사이의직접정보교환이가능합니다. CALL은형식블록파라미터가정확히할당되도록합니다.CALL이몇개의 STL 인스트럭션으로구성된매크로를통해실행된다는사실에서발생하는몇가지특징들도고려되어야합니다. 형식파라미터에 DB에있는파라미터를할당하면파라미터전달은 DB 레지스터를이용해서이루어집니다 (부록참고). 그결과는다음과같습니다.• 호출된 FC 안에서상황이허락한다면 CALL 이전에열렸던 DB는열리지않습니다.

• 만약 CPU가호출된 FC의프로세싱중에 STOP이되면파라미터할당에서STL 편집기가 DB 레지스터를덮어쓰기했던 B-Stack -> DB-Register에값이표시됩니다.

• 상황이허락한다면프로세싱이후호출블록으로점프가발생할때 CALL이후열렸던 DB는더이상열리지않습니다.

UC, CC 인스트럭션 블록은또한인스트럭션 UC나 CC로호출될수있습니다. UC 호출인스트럭션은절대인스트럭션입니다. 즉, UC는항상조건에관계없이블록을호출할수있습니다 (예: UC FC20).CC 호출인스트럭션은조건적인인스트럭션입니다. 즉, RLO가 “1”일때만 CC는블록을호출합니다. RLO가 “0”이면 CC는블록을호출하지않고 RLO를 “1”로설정합니다. 그후에 CC 호출다음의인스트럭션이처리됩니다.

중요 UC와 CC는오직파라미터가호출된 FC에서선언되지않을때만사용될수있습니다.

Date: 10/17/99File: PRO2_06e.6

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

함수를호출하기위한다른인스트럭션

CALL 인스트럭션인스트럭션은매크로입니다.레지스터내용은 DB 레지스터의경우에도덮어쓰기될수있습니다.B-Stack 내용의경우주의가필요합니다.호출후 “잘못된” DB가열립니다.CALL에대한처리시간이 “정확히”확인될수없습니다.

CALL 인스트럭션은블록파라미터에현재데이터가정확히제공되도록합니다.보기:

CALL FC10On_1 := I0.1On_2 := I0.2Off := Q8.0

Call 인스트럭션 UC와 CCRLO 와관계없는 (UC) 또는 RLO 의존적인블록호출보기: UC FC20 또는 CC FC20

FC가파라미터를가지지않을때만사용됨

Page 92: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Block Calls and Multi-instance ModelPage 7

개요 함수블록은사용자프로그램의구성요소이며 IEC Standard 1131-3에따라메모리를가지는논리블록을나타냅니다. 이함수블록은 OB, FB, FC에의해호출될수있습니다.FC와달리 FB는인스턴스화됩니다. 즉, FB는자체사적데이터영역을할당받습니다. 가장간단한형태 (단일인스턴스모델)에서이사적데이터영역은자체 DB, 즉소위인스턴스 DB입니다. 이 DB는 FB 호출에서명시적으로지정되어야합니다.FB 인스턴스는 (상태를 “기억”하기위한내부메모리를가지는) 스위치메커니즘을나타냅니다.

인스턴스는 FB를인스턴트화한다는것은큰의미를가지며 FC에본질적인구분기준을무엇인가? 형성합니다.

“C”와같은고급언어의경우선언에서변수명과데이터형을선언하여변수를설정하는것을 “인스턴스화”또는 “인스턴스형성”이라고합니다. 변수와마찬가지로함수블록도 “인스턴스화”됩니다. 정적변수는물론블록파라미터변수가저장되는이 ‘자체’데이터영역을통해서만 FB는실행가능한단위 (FB-인스턴스)가됩니다. 입력및출력파라미터는물론정적변수의값은블록이끝난후에도유지됩니다. 이런방식으로 FB-인스턴스는몇개의호출에걸쳐이런로컬데이터를저장할수있습니다.

응용 FC와달리 FB-인스턴스는메모리를가집니다. 예를들어 “메모리”는카운터나타이머함수를실행하기위해또는퍼포먼스가외부영향은물론내부상태(프로세싱단계, 속도, 온도, 등)에의존하는프로세스단위 (프로세싱스테이션, 드라이브, 보일러, 등)를제어하기위해필요합니다.

Date: 10/17/99File: PRO2_06e.7

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

함수블록 (FB)을가지는인스턴스만들기FB Instance

=

FB

+

DB

FB 인스턴스와연관된데이터포함

FB Instance_1

=

FB

+

DB17

Control of Drive_1Status data of Drive_1

Algorithms for control

FB Instance_2

=

FB

+

DB27

Control of Drive_2Status data of Drive_2

Algorithms for control

Page 93: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Block Calls and Multi-instance ModelPage 8

FB 호출에서의 프로세싱을위한데이터는호출된 FB-인스턴스로전달될수있습니다. 이데이터파라미터 전달은 CALL 이후오버레이된파라미터목록을통해서이루어질수있습니다.

오버레이된블록파라미터의형 (입력, 출력, 또는입/출력파라미터), 이름, 데이터형은 FC의선언부에서지정됩니다.FC 호출과달리 FB-인스턴스를호출할때기본데이터형의입/출력파라미터는물론입력및출력파라미터에실질파라미터를할당할필요는없습니다.그이유는실질파라미터가호출된 FB에전달되는방식또는형식파라미터에대한액세스가 FB 프로세싱에서실행되는방식의메커니즘에있습니다.

파라미터전달 인스턴스 DB가 FB에대해만들어지면블록편집기는자동적으로블록파라미터(입력, 출력및입/출력파라미터)에대한메모리와 FB의선언부에서선언된정적변수에대한메모리를예약합니다. 인스턴스-DB의메모리구조, 즉변수의할당은자동적으로 FB의선언부에서미리정의됩니다. CALL 매크로를통한 FB-인스턴스호출에서인스턴스-DB는 DI 레지스터를통해열려지며현재입력및입/출력파라미터의값은실제 FB 이전에인스턴스-DB로복사됩니다 (값에의한호출).FB 프로세싱으로의전환이일어납니다.형식파라미터에대한액세스가 FB 프로세싱에서일어나면결과적으로인스턴스-DB에속하는파라미터에대한액세스가일어납니다. 이액세스는 DI 레지스터와 AR2 레지스터에대한레지스터간접어드레싱을통해내부적으로일어납니다.FB 프로세싱이후형식출력및입/출력파라미터의값은 CALL에서지정된실질파라미터로복사됩니다. 그후에비로소프로세스는 CALL 후의다음인스트럭션을계속합니다.

Date: 10/17/99File: PRO2_06e.8

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

FB 호출에서파라미터전달

OB1 FB10

프로그램실행

CALL FB10, DB10On_1 := I0.4On_2 := I0.1Off := Q8.0

0.0 in On_1 BOOL0.1 in On_2 BOOL2.0 out Off BOOl...

...A #On_1A #On_2= #Off...

BLD 3= L 24.0TDB OPN DI 10TAR2 LD 20A I 0.4= DIX 0.0A I 0.1= DIX 0.1LAR2 P#DBX 0.0AC FB 10LAR2 LD 20A DIX 2.0= Q 8.0TDB BLD 4

1 0 0 1 0 0 0 0...

IB0 1 0 0 0 0 0 1 0

QB8

DB10.. .. .. .. .. .. 1 0.. .. .. .. .. .. .. .... .. .. .. .. .. .. 0

1

2

3. . .

블록파라미터

실질파라미터

형식파라미터

Page 94: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Block Calls and Multi-instance ModelPage 9

예외 복잡한형 (ARRAY, STRUCT, STRING, DT)의입/출력파라미터의경우값이아니라실질파라미터에대한 “POINTER”가인스턴스-DB에복사됩니다.

초기화 블록파라미터와정적변수는 FB 선언에서초기화될수있습니다. 만약인스턴스-DB가그후에만들어지면선언에서지정된초기값이인스턴스-DB에입력됩니다.그러나인스턴스-DB는공유 (전역) DB와마찬가지로편집될수있습니다. 따라서편집기의 “데이터보기”에서초기값을변경할수있습니다.예외: 복잡한데이터형의입/출력파라미터는초기화될수없습니다.

블록파라미터의 블록파라미터는 FB 호출에서할당될필요가없습니다. 이경우변수는할당 인스턴스-DB로또는인스턴스-DB에서복사되지않습니다.

인스턴스-DB의파라미터는마지막호출에서또한저장되었던값을유지합니다.예외: 복잡한데이터형의입/출력파라미터는파라미터목록에서할당되어야합니다.

“외부”에서의 인스턴스-DB에서파라미터에대한액세스는공유 DB의파라미터와마찬가지파라미터액세스 방식으로이루어질수있습니다. 따라서블록파라미터는또한 “외부”에서할당될

수있습니다.이것은예를들어복잡한데이터형의개별구성요소만이할당되어야할때특히유용합니다. 파라미터목록을통한입력및출력파라미터의할당은 “전체”변수에대해서만작용합니다.예외: 복잡한데이터형의입/출력파라미터는 “외부”에서할당될수없습니다.

중요 DI 레지스터나 AR2 레지스터가 FB 프로세싱에서덮어쓰기되면인스턴스데이터 (입력, 출력, 입/출력파라미터와정적변수)에대한액세스는 FB에서더이상이루어질수없습니다.

Date: 10/17/99File: PRO2_06e.9

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

FB의 CALL 호출에서나타나는특징

“값”에의한파라미터전달 (값을복사) :초기화:

FB 파라미터는선언에서초기화될수있습니다.실행: 복잡한데이터형 (STRUCT, ARRAY, STRING and DATE_AND_TIME)의입/출력파라미터

호출에서 FB 파라미터의할당:FB 파라미터는할당될필요가없습니다.액세스가 “외부” (호출블록)에서일어날수있습니다.예외: 복잡한데이터형 (STRUCT, ARRAY, STRING and DATE_AND_TIME)의입/출력파라미터

형식파라미터에대한액세스가 DI 및 AR2에의해일어날수있습니다.DI 또는 AR2 레지스터덮어쓰기:

인스턴스데이터에대한액세스를할수없습니다.

Page 95: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Block Calls and Multi-instance ModelPage 10

CALL 인스트럭션 인스트럭션 (매크로) CALL은블록 FC, SFC, FB, SFB를호출하기위해사용되어야합니다. CALL은형식블록파라미터가정확히할당되게합니다. CALL이매크로를통해실행된다는사실, 즉그자체가몇개의 STL 인스트럭션으로구성된다는사실로인해발생하는몇가지특징이고려되어야합니다. CALL 매크로에대한호출시퀀스에서 DB 레지스터와 DI 레지스터의내용은인스트럭션 CDB (DB 레지스터교환)를통해교환됩니다.• 호출된 FB 인스턴스에서 CALL 이전에열렸던 DB는열리지않습니다.• CPU가호출된 FB-인스턴스의프로세싱중에 STOP이되면원래 DI레지스터에있었던 B-Stack -> DB-Register에값이표시됩니다.

• 프로세싱이후호출블록으로점프가일어나면 CALL 이전에열렸던 DB는열리지않으며이전에호출된 FB-인스턴스의인스턴스-DB가열립니다.

UC, CC 인스트럭션 블록은또한인스트럭션 UC 또는 CC로호출될수있습니다.UC 호출인스트럭션은절대인스트럭션입니다. 즉, UC는항상조건에관계없이블록입니다 (예: UC FC20).CC 호출인스트럭션은조건적인인스트럭션입니다. 즉, RLO가 “1”일때만 CC는블록을호출합니다. RLO가 “0”이면 CC는블록을호출하지않고 RLO를 “1”로설정합니다. 그후에 CC 호출다음의인스트럭션이처리됩니다.

중요 UC와 CC는오직호출된 FB가인스턴스데이터를가지지않을때, 즉블록파라미터나정적변수가선언부에서선언되지않을때만사용될수있습니다.

Date: 10/17/99File: PRO2_06e.10

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

FB를호출하기위한다른인스트럭션CALL 인스트럭션

인스트럭션은매크로입니다.레지스터특히 DB 레지스터의내용은덮어쓰기됩니다.B-Stack 내용의경우주의가필요합니다.호출이후 “잘못된” DB가열립니다.CALL에대한처리시간이 “정확히”확인되지않습니다.

CALL 인스트럭션은블록파라미터에현재데이터가정확히제공되도록합니다.보기:

CALL FB10, DB10On_1 := I0.1On_2 := I0.2Off := Q8.0

호출인스트럭션 UC와 CCRLO independent (UC) or RLO dependent block call

Examples: UC FB20 or CC FB20FB가인스턴스데이터 (파라미터 + 정적변수)를가지지않을때만사용될수있음

Page 96: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Block Calls and Multi-instance ModelPage 11

개요 블록파라미터의 “전달”은액세스또는블록파라미터할당의특별한형태입니다. “전달”은호출블록의형식파라미터가호출된블록의실질파라미터가된다는것을의미합니다.

파라미터형에 일반적으로실질파라미터는형식파라미터와데이터형이같습니다. 또한호출대한제한 블록의입력파라미터는호출된블록의입력파라미터에서만설정되고출력

파라미터는출력파라미터에서만설정될수있습니다. 호출블록의입/출력파라미터는원칙적으로호출된블록의입력, 출력, 입/출력파라미터에서설정될수있습니다.

데이터형에 데이터형의경우 FC 또는 FB 호출에서블록파라미터의저장방법에따라대한제한 제한이있습니다.

기본데이터형의블록파라미터는제한없이전달될수있습니다. 입력및출력파라미터에서복잡한데이터형은호출블록이 FB일경우에만전달될수있습니다. 파라미터형이 TIMER, COUNTER, BLOCK_x인블록파라미터는호출된블록이FB이면입력파라미터에서입력파라미터로만전달될수있습니다.

참고 파라미터형 TIMER, COUNTER, BOCK_x의 "전달”은간접어드레싱을이용해서FC에서실행될수있습니다. 예를들어원하는 TIMER, COUNTER, BOCK_x의수는WORD 데이터형의파라미터로호출블록에서호출된블록으로전달됩니다.마지막호출된블록에서이파라미터는임시변수로전송될수있으며이변수를통해각 TIMER, COUNTER, BOCK_x이처리될수있습니다.

Date: 10/17/99File: PRO2_06e.11

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

파라미터 "전달" 중첩깊이:

S7-300: 최대 8 S7-400: 최대 16

. . .

전달은블록형, 데이터및파라미터형에의존합니다. :

호출 FC가 FC 호출 FB가 FC 호출 FC가 FB 호출 FB가 FB 호출데이터형 E C P E C P E C P E C P입력 -> 입력 x - - x x - x - x x x x출력 -> 출력 x - - x x - x - - x x -입/출력 -> 입력 x - - x - - x - - x - -입/출력 -> 출력 x - - x - - x - - x - -입/출력 -> 입/출력 x - - x - - x - - x - -

E: 기본데이터형C: 복잡한데이터형P: 파라미터형 (Timer, Counter, Block_x)

FBs FBs FCsOB

Page 97: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Block Calls and Multi-instance ModelPage 12

Date: 10/17/99File: PRO2_06e.12

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

프로세스단위에대한복수인스턴스모델

Press_2Press_1

전송

보기: 프레스라인

기술적부분“복수인스턴스”의도움을받아기술적부분을프로그램

FB10: "Press line"

FB2: "Transport"

FB1: "Press_1"

펀치카드

FB4: "Punch"

FB5: "Guard"

FB1: "Press_2"

FB4: "Punch"

FB5: "Guard"

프로세스단위 프로세스단위는어셈블리라인 (전송벨트, 프로세싱스테이션)이나완전한기계의단위또는기계의부분 (예: 프레스나완전한프레스의펀치또는가드)처럼물리적인개체입니다. 프로세스단위는논리적인구분기준으로사용됩니다. 원칙적으로프로세스단위는계층구조로디자인되어있습니다. 그런방식으로프로세스단위는하위단위를차례로포함할수있습니다 (예: “프레스”단위는 “펀치”또는 “가드”단위를포함합니다).프로세스단위는이런방식으로보다많은지체된하위단위로디자인됩니다(모음).

"복수인스턴스" STEP7 프로그래밍언어는또한 “모음”의개념을지원하며따라서 FB와 “복수인스턴스개념”을이용해서한번만들어진소프트웨어를다시사용할수있습니다.소프트웨어에의한프로세스단위또는프로세스하위단위의설명은 S7 FB에서이루어집니다. “stat.Var.”섹션에서상위 FB의인스턴스로하위 FB를선언함으로써하위단위로구분할수있습니다.이런방식으로기존의프로세스나기계에서와마찬가지로프로그램에서하위단위로구분할수있습니다 (모음에의한객체중심프로그래밍의개념).

SW 재사용 한번만들어진소프트웨어는이개념의도움을받아다시사용될수있습니다.• 제조업체가프로세스하위단위 (밸브, 모터, 실린더, 등)를만들때마다이프로세스하위단위의제어를위한 FB도제공됩니다. • 그러한프로세스하위단위가보다큰단위로묶일때마다보다큰단위의FB에서하위단위에대한 FB 인스턴스가또한선언됩니다.

Page 98: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Block Calls and Multi-instance ModelPage 13

복수인스턴스모델 복수인스턴스모델이사용될때인스턴스-DB는한개의동일한호출계층구조의몇개 FB에대한데이터를포함합니다. 호출 DB의선언부중 “stat”섹션에서호출된 DB의인스턴스는기호설명에의해선언됩니다.가장높은계층구조의프로세스단위 (보기에서: FB10 “Press line”)는자체인스턴스 DB의지정과함께절대적또는기호적으로호출되어야만합니다(보기에서: DB10).

선언 FB10 ("Press line")의선언부중 “stat_var”섹션에서데이터형이 “FB2”이고이름이 #Transport인인스턴스는물론데이터형이 “FB1” (press)이고이름이#Press_1과 #Press_2인 2개의인스턴스가선언됩니다. “FB1”의선언부에서이름이 #Punch인 “FB4”의인스턴스와이름이 #Guard인“FB5”의인스턴스가선언됩니다.각 FB-인스턴스는선언부에서선언된기호이름에의해호출됩니다.

참고 FB의선언부에서인스턴스를선언하면그인스턴스가선언되고있는 FB가이미존재할때에만효력을가집니다. 그러한호출계층구조를디자인할때사슬에서마지막으로호출될 FB가제일먼저만들어져야합니다.

복수인스턴스 DB 복수인스턴스 DB는기본적인 FB의선언부와같은구조를가집니다. 만약인스턴스가선언부에서호출되면이것은자동적으로인스턴스 DB (DB10)의해당섹션에있는데이터에액세스합니다.

Date: 10/17/99File: PRO2_06e.13

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

"프레스라인"에대한프로그램구조

FB10:"Press line" Data for Press_1

Instance DB of FB10

CALL Press_1.CALL Press_2.CALL Transport

DB10

...stat Press_1 FB1stat Press_2 FB1stat Transport FB2...

Press_1. Punch

FB1:"Press"

Data for Transport

...stat Punch FB4stat Guard FB1...

CALL Punch.CALL Sscreen

...stat Punch FB4stat Guard FB1...

CALL Punch.CALL Guard

...

...

FB2: "Transport"

FB4:"Punch"

FB5:"Guard"

CALL FB10, DB10

Press_1. Guard

Press_2. Punch

Press_2. Guard

Data for Press_2

OB1

Data of FB10

FB1: "Press"FB4:"Punch"

FB5:"Guard"

Page 99: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Block Calls and Multi-instance ModelPage 14

복수인스턴스 복수인스턴스모델의경우한개의동일한호출계층구조로이루어진몇개모델의이점 인스턴스의각데이터섹션을한개의단일 DB에저장할수있습니다.

그런방식으로몇개의인스턴스에대해오직한개의 DB만이요구됩니다.복수인스턴스모델의경우상호인스턴스 DB를할당할때를제외하면로컬 FB 데이터의운영을위한조처는필요하지않습니다.복수인스턴스모델은객체중심의프로그래밍개념을지원합니다. 프로세스단위의제어를위해필요한코드와데이터는 FB에서집약됩니다.프로세스단위가계층구조의하위단위로구성되어있다면이구조는복수인스턴스모델에의해사용자프로그램에정확히반영될수있습니다. 제어프로그램은기계가구성요소로구성되는것과같은방식으로 FB 인스턴스로디자인될수있습니다. STEP7은복수인스턴스모델로 8개의중첩깊이를지원합니다.

복수인스턴스에대한 FB를복수인스턴스로문제없이사용하려면다음사항들이지켜져야합니다. 필요조건

• 프로세스제어를위해 (입력이나출력과같은) CPU의전역피연산함수에대한직접액세스는허용되지않습니다. 전역입력및출력에대한각액세스는복수인스턴스능력을위반합니다.

• 프로세스또는프로세스제어단위 (FB)와의통신은 FB 파라미터를통해서만이루어져야합니다.FB가상위단위로통합된후에야비로소파라미터목록을통한 FB의“연결”이 FB 호출에서실행될수있습니다.

• 제어되는단위에대한상태또는다른정보는자체정적변수로 “기억”되어야합니다.

Date: 10/17/99File: PRO2_06e.14

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

복수인스턴스모델의등록정보

복수인스턴스모델의장점:몇개의인스턴스에대해오직한개의 DB만이요구됩니다. 각인스턴스에대한 “사적”데이터영역을설정할때추가의관리작업은필요하지않습니다.복수인스턴스모델은 “객체지향적인프로그래밍스타일” (“집합”에의한재사용가능성)을가능하게합니다.최대 8개의중첩을가집니다.

FB의전제조건:Fb에서프로세스신호에대한직접 (I, Q) 액세스를할수없습니다.프로세스신호에대한액세스나다른프로세스단위와의통신은 FB 파라미터를통해서만가능합니다.FB는공유 (전역) DB나 “비트메모리”가아니라정적변수로만프로세스상태를기억할수있습니다.

참고:인스턴스데이터에대한액세스는또한 “외부”에서이루어질수있습니다. OB1에서의예: L "Press line".Press_2.Punch.<VarName>

Page 100: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Block Calls and Multi-instance ModelPage 15

Date: 10/17/99File: PRO2_06e.15

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

연습 6: 어셈블리라인으로서의컨베이어모델

"S1", "S2", "S3"Acknowledge contact switch

"H4"Indicator lights

Proximity switches "INI1", "INI2", "INI3"

Photoelectric barrier"LS1"

K1_CONV

Conveyor beltoff/on

Finalassembly

"S4"Acknowledge contact switch

"H1", "H2", "H3"Indicator lights

작업장에서의프로세스시퀀스 수송벨트에서의프로세스시퀀스

- 작업물품처리 - 완성된물품을기다림

- 완성되면벨트에물품을놓음 - 최종어셈블리로전송

- 처리되지않은물품기다림 - 최종어셈블리에서처리되지않은물품삽입

- 작업장으로전송

K2_CONV

목적 어셈블리라인에의해작업해결의원칙이 FB 프로그래밍을사용하여연습되어야합니다. 각경우에별도의 FB가작업장 1과전송벨트의제어를위해사용됩니다. 작업장에대한 FB는복수인스턴스가가능해야합니다.다음연습에서어셈블리라인의기능은복수인스턴스모델에의해작업장 2와3으로확장되어야합니다.

컨베이어모델의 FB 프로그래밍에대한연습을위해컨베이어모델은다음기능을가지는기능원칙 어셈블리라인으로서작용합니다 (단일작업장).

1. 시스템은초기상태에있습니다. 즉, 작업장 1은현재처리되고있는한개의작업품목을가지고있습니다. 이것은작업장 1에대한표시등 “H1”으로표시됩니다. 전송벨트, 특히 “INI1”과최종어셈블리에서의 “LS1”은사용되지않습니다.컨베이어모터는스위치가꺼져있습니다.

2. 작업품목이완료된후조작원은확인버튼 “S1”으로이사실을확인합니다.“H1”의표시등이꺼집니다. 그후에은가완성된작업품목을개시기인 “INI1”앞의 “비어있는”벨트에놓습니다.

3. 그이후벨트는완성된부분을최종어셈블리로전송합니다 (광전장벽 “LS1”스위치가켜짐). 최종어셈블리에도달하면표시등 “H4”가켜집니다.

4. 최종어셈블리스테이션에서조작원은완성된작업품목을꺼내고대신에처리되지않은새품목을벨트위에놓습니다. 그런후 “S4”버튼을눌러확인하고표시등 “H4”가꺼집니다.

5. 벨트는처리되지않은새재료를작업장 1로전송합니다. 개시기 “INI1”의스위치가켜지고작업장램프 H1이다시켜집니다.

6. 조작원은처리되지않은새재료를꺼내어자신의스테이션에놓고프로세싱을시작합니다.

7. 그후에작업장은다시 1단계를시작합니다.

Page 101: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Block Calls and Multi-instance ModelPage 16 21

Date: 10/17/99File: PRO2_06e.16

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

연습 6.1: 작업장에대한프로그램구조

Transport

보기: 어셈블리라인

어셈블리라인의기술적부분

기술적부분을프로그램

Station_1 Station_2 Station_3

FB2:"Transport"

OB1

DB2

FB1:"Station"

DB1

CALL FB1, DB1......

CALL FB2, DB2

개요 STEP 7은 2가지방법으로인스턴스를만들수있는가능성을가집니다.• FB가프로그램의다른위치에서호출됩니다. 각호출에서별도의인스턴스-

DB가지정됩니다. 즉, FB의각인스턴스에대해별도의 DB가필요합니다. • 한개의동일한계층구조의몇개 FB는한개의공통된인스턴스-DB를사용합니다 (복수인스턴스모델)

첫번째단계 첫번째단계로어셈블리라인의작업장 1개만이당분간사용됩니다. 따라서전체시스템에대한제어는 2개의프로세스단위로분산됩니다.• 스테이션: FB1에의해공유기호이름 “Station” (공유기호표)으로실행되는첫번째작업장의제어

• 전송: FB2에의해공유기호이름 “Transport"으로실행되는전송벨트의제어전체어셈블리라인에대한제어를위해서는이후에자체인스턴스-DB (단일인스턴스모델)를가지는 2개의 FB가호출되어야만합니다.

Page 102: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Block Calls and Multi-instance ModelPage 17

Date: 10/17/99File: PRO2_06e.17

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

연습 6.1: 프로세싱장소 1에대한 FB1 만들기

FB1의인터페이스 :

FB1: "Station_1"

Waiting:Indicator light

is off

Completed:Indicator light

flashes

Processing:Indicator light

illuminated

IN-Parameter: Data type:Initial BOOLProxy_Switch BOOLAcknowledge BOOLClock_Bit BOOLOUT-Parameter:LED BOOLTransp_req BOOLI/O-Parameter:Conv_busy BOOLStat. Var.:State STRUCT

Busy BOOLCompleted BOOLWaiting BOOLEND_STRUCT

Aux_1 BOOLAux_2 BOOL

상태모델:

A Acknowledge

A #Transp_reqA #Proxy_Switch

A Proxy_SwitchFN ...

개요 제일먼저작업장에서프로세스제어를실행하는 FB1을만듭니다. 프로세스는시퀀스는 3개의상태 (“작업중”, “작업완료”, “대기중”)를가지는단일상태모델을통해설명될수있습니다.FB1을만들때복수인스턴스능력의원칙들을고려합니다. 즉, “INI1”이나“S1”과같은입력신호에대한직접액세스나 “H1”과같은출력신호는허용되지않습니다. 프로세스신호에대한모든액세스는인터페이스파라미터를통해이루어져야합니다.

FB1의기능원칙 FB1의파라미터와프로세스신호사이의상관관계는물론다른상태에대한FB1의기능원칙은다음섹션에서설명됩니다. 또한다음페이지에서그러한상태모델의프로그래밍을위한구조를찾아볼수있습니다.

"작업중" 작업품목은이상태에서처리됩니다. 작업장의표시등 “H1”이켜집니다. 또한출력파라미터 #Transp_req=0를통해스테이션은작업장에현재처리되고있는작업품목이있음을나타냅니다. 조작원이 “S1”스위치로작업품목이완료되었음을확인하면 “작업완료”상태로전환이이루어집니다.

"작업완료" 이상태에서는벨트가비어있으므로 (Conv_busy=0)작업품목은벨트에놓일수있습니다. 작업품목이성공적으로개시기앞에놓이면입/출력파라미터#Belt_occupied가 “1”로설정되고출력파라미터 #Transp_req가 “1”로설정됩니다. 이러한신호를통해전송벨트가한쪽에서 “작업중”임이확인되고 (복수인스턴스확장의경우에다른스테이션은작업품목을벨트위에놓을수없습니다) 다른한쪽에서전송벨트는전송순환이시작될수있음을 (작업품목을최종어셈블리로보내거나처리되지않은새재료를작업스테이션으로보냄) 통보받습니다.

Page 103: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Block Calls and Multi-instance ModelPage 18

Date: 10/17/99File: PRO2_06e.18

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

연습 6.1: FB1의프로그램구조FB1의구조:

Network: 1 InitializingA #InitialS #State.BusyR #State.CompletedR State.Waiting... // Set/Reset Parameters

Network 2 State: BusyAN #State.BusySPB REDY... // Execution of Actions... // Scanning the progression conditionsR State.BusyS State.Completed

Network 3 State: CompletedREDY: AN State.Completed

SPB Waiting... // Execution of Actions... // Scanning the progression conditionsR State.WaitingS State.Busy

Network: 4 State: WaitingWAIT: AN #state.Waiting

SPB END... // Execution of Actions... // Scanning the progression conditionsR State.WaitingS State.Busy

END: BEU

상태모델:

Waiting:Indicator light

is off

Completed:Indicator light

flashes

Busy:Indicator light

illuminated

A #Acknowledge

A #Part_requiredA #Proxy_SwitchFN ...

A #Proxy_SwitchFP ...

작업스테이션이 “작업완료”상태에있는한작업장앞의표시등 “H1”이입력파라미터 #Clock_Bit에의해주어진점멸빈도로점멸합니다.액티브전송신호 #Transp_req=1이고작업품목이프록시스위치의하강에지와함께스테이션앞의장소를떠나면 “대기중" 상태로전환이일어납니다.

"대기중" 이상태에서는처리되지않은새재료를기다립니다. 스테이션앞의표시등은꺼집니다. 처리되지않은새재료의도착은개시기신호의도움을받아검사됩니다.처리되지않은새재료가인식되자마자벨트는멈추고 (#Transp_req=0) 처리되지않은재료가작업스테이션에서수용됩니다.개시기신호의하강에지와함께벨트 (#Conv_busy=0)가다시사용가능하게되어다른스테이션이완성된작업품목을벨트에놓게합니다.또한개시기신호의하강에지와함께 “작업중”상태로상태전환이일어납니다.

초기화 또한 FB가입력신호”초기화”를통해 “작업중”상태로초기화될수있음을고려합니다. 입력파라미터 #Initial에 10.0을할당합니다.

작업 6.1 1. PRO2-프로젝트에서새프로그램컨테이너 "벨트”를만듭니다. 2. 위의기능을가지는 FB1을만듭니다.3. CPU를위해 MB10에서점멸빈도에파라미터를할당합니다.4. OB1에서인스턴스-DB DB1을가지는 FB1을호출하고인터페이스파라미터에해당프로세스신호를할당합니다. 입력파라미터 #Clock_Bit를M10.1과연결합니다.

5. 블록을 CPU에다운로드하고프로그램의기능을 (전송벨트없이) 테스트합니다.

Page 104: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Block Calls and Multi-instance ModelPage 19

Date: 10/17/99File: PRO2_06e.19

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

연습 6.2: 전송벨트에대한 FB2 만들기

FB2 인터페이스구조 :

FB2: "Transport"

Transport_left

Transport_right

IN-Parameter: Data type:Initial BOOLL_Barrier BOOLAcknowledge BOOLTransp_req BOOLClock_Bit BOOLOUT-Parameter:LED BOOLConv_right BOOLConv_left BOOLStat. Var.:State STRUCT

Waiting BOOLTransport_right BOOLAssembly BOOLTransport_left BOOLEND_STRUCT

상태모델:

A #Transp_req(Belt occupied)

Waiting

AN #Tansp_req

AN #L_Barrier(Final assembly reached)

Assembly

A #Acknowledge

문제정의 제일먼저단일작업장에서프로세스제어를실행하는 FB2를만듭니다. 프로세스시퀀스는 4단계 (“대기중”, “오른쪽으로전송”, “어셈블리”, “왼쪽으로전송”)를가지는상태모델을통해설명될수있습니다.FB2를만들때전송벨트는벨트에서가동되는작업스테이션의수에상관없이작업을완료해야한다는것을고려합니다.

FB의기능원칙 FB2의파라미터와프로세스신호사이의상관관계는물론상태에따른 FB2의작업기능원칙이다음섹션에서설명됩니다.

"대기중" 이상태에서전송벨트는스테이션중한개가벨트위에올려놓은완성된품목을기다립니다. 전송벨트가 “대기중“상태에있는한전송벨트는중지되고표시등 “H4”는꺼집니다.상태 1이신호 #Transport_req인 경우 “오른쪽으로전송”상태로전환이일어납니다.

"오른쪽으로전송" 이상태에서작업품목은최종어셈블리방향으로전송됩니다. 벨트가움직이는한표시등 “H4”는입력파라미터에의해주어진빈도로점멸합니다.완성된작업품목이광전장벽 “LS”를통과하면최종어셈블리에도달합니다. 즉, “어셈블리”상태로전환이일어납니다.

"어셈블리" 이상태에서조작원은완성된작업품목을처리되지않은새재료로교환합니다. 표시등은이상태에서영구적으로켜집니다. 완료되면조작원이 “S4”버튼을통해신호를보냅니다.이러한확인신호는 “왼쪽으로전송" 상태로전환을유도합니다.

Page 105: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Block Calls and Multi-instance ModelPage 20

Date: 10/17/99File: PRO2_06e.20

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

DB2

연습 6.2: OB1에서 FB1과 FB2의파라미터내적연결

FB2: "Transport"

Initial LEDL_Barrier Conv_rightAcknowledge Conv_leftTransp_reqClock_Bit

FB1: "Station"

Initial LEDProxy_Switch Transp_reqAcknowledge Clock_BitConv_busy

"H4""K1_CONV""K2_CONV"

I0.0"LS1"

DB1

"S4"

M10.1

M10.1"S4"

"INI1"I0.0 "H4"

OB1의내용:

"왼쪽으로전송" 이상태에서처리되지않은재료는작업장방향으로전송됩니다. 벨트가움직이는한표시등 “H4”는입력파라미터 #Clock_Bit에의해주어진점멸빈도로점멸합니다.입력신호 #Transp_req가리셋되면전송은중지됩니다.입력신호 #Transp_req가리셋되면또한 “대기중”상태로의전환이일어납니다.

참고 또한 FB2가입력신호 #Initial을통해 “대기중”상태로초기화될수있음을고려합니다. 입력파라미터 #Initial에 10.0을할당합니다.

작업 6.2 1. 다음기능을가지는 FB2를만듭니다. FB1의프로그램구조를지침으로사용합니다.

2. FB1 호출이후 OB1에서 FB2 호출 (인스턴스-DB DB2)을프로그램합니다. 위의구성도에따라파라미터의내부연결을실행합니다.

3. 블록을 CPU에다운로드하고프로그램의기능을테스트합니다.

Page 106: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Block Calls and Multi-instance ModelPage 21

프로그램구조 연습의최종부분으로모두 3개의작업스테이션에대한컨베이어모델의완전한기능을습득합니다. 이를위해전체컨베이어모델 (3개의스테이션과 1개의전송벨트)의제어가한개의단일함수블록 (FB10)으로이동됩니다.FB10에서 3개의프로세싱스테이션에대한제어는 FB1의별도인스턴스로서실행되고전송벨트의제어는 FB2의인스턴스로서실행됩니다.

Date: 10/17/99File: PRO2_06e.21

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

연습 6.3: 3개스테이션으로확장

FB10

Data for Transport

Instance DB of FB10

CALL Station_1CALL Station_2CALL Station_3..CALL Transport

DB10

...stat Station_1 FB1stat Station_2 FB1stat Station_3 FB1stat Transport FB2...

Datafor Station_1

Datafor Station_2FB1

FB2

Datafor Station_3

Page 107: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Block Calls and Multi-instance ModelPage 22

Date: 10/17/99File: PRO2_06e.22

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

연습 6.3: 블록파라미터의연결

"Station_1"Initial LEDProxy_Switch Transp_reqAcknowledgeClock_BitConv_busy

"LS1"

"Transport"

Initial LEDL_Barrier Conv_rightAcknowledge Conv_leftTransp_reqClock_Bit

"H4""K1_CONV""K2_CONV"

I0.0

"S4"

M10.1

M10.1"S1"

"INI1"I0.0 "H1"

"Station_2"Initial LEDProxy_Switch Transp_reqAcknowledge Clock_BitConv_busy

M10.1"S2"

"INI2"I0.0 "H2"

"Station_3"Initial LEDProxy_Switch Transp_reqAcknowledge Clock_BitConv_busy

M10.1"S3"

"INI3"I0.0 "H3"

FB10: "Assembly_line"

DB10: "Assembly_line_DB"

절차 1. 제일먼저 FB10을만듭니다. stat. Var. 섹션에서이름이각각 Station_1,Station_2, Station_3인 3개의 FB1 인스턴스와이름이 Transport인 1개의 FB2인스턴스를선언합니다.

2. FB10에서우선차례로 Station_1, Station_2, Station_3 및 Transport를호출하고위의구성도에따라블록파라미터를내부연결합니다.입/출력파라미터 #Belt_occupied의내부연결에주의합니다. 이것은어떻게실행될수있습니까? 임시또는정적보조변수가여기에서사용되어야합니까? 또한출력파라미터 #Transp_req (논리적 "Or")와벨트컨트롤의입력파라미터 #Transp_req의내부연결에주의합니다. 그러한내부연결은어떻게실행될수있습니까?

3. 연관된 FB10을가지는 DB10을명시적으로만듭니다. DB10을편집하고선언과 DB 편집기의데이터보기에서구조를검사합니다.

4. OB1에서인스턴스-DB DB10을가지는 FB10을호출합니다.5. 참여하는블록을 CPU에다운로드하고결과를테스트합니다.

질문 그러한접근방법의장점과단점은무엇입니까? “비어있는”어셈블리라인이“채워”지거나 “채워진”라인을 “비울”수있도록하려면컨트롤은어떻게확장되어야합니까?

Page 108: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Block Calls and Multi-instance ModelPage 23

파라미터전달 FB의입력, 출력, 또는입/출력파라미터에 DB에저장된상수나파라미터를할당한다면 STL/LAD/FBD편집기는우선호출자 L-Stack에필요한메모리를예약하고입력및입/출력파라미터와함께실질파라미터의값을 L-Stack에복사합니다.출력파라미터의경우 L-Stack에메모리영역을예약하지만초기화는일어나지않습니다.그후에야비로소호출된 FC로실제전환이이루어지며이에따라 STL/LAD/FBD편집기는각경우에호출된 FC의 L-Stack 메모리영역에영역횡단포인터를전달합니다.호출블록으로다시점프한후출력및입/출력파라미터에의해결과는다시실질파라미터로복사됩니다.

결과 이메커니즘은호출된 FC 안에서입력파라미터는스캔만되고출력파라미터는쓰기만될수있음을보여줍니다.입력파라미터에쓰기를하면해당값이 L-Stack에저장되지만 FC의프로세싱이끝난후데이터는실질파라미터로전송되지않습니다.똑같은방식으로출력파라미터는쓰기만되고읽기는되지않습니다. 출력파라미터의스캐닝에서는초기화가없기때문에정의되지않은값을 L-Stack에서 읽습니다.입/출력파라미터는가장문제를일으키지않습니다. 호출이후뿐만아니라호출이전에이파라미터에실질파라미터의값을할당합니다.

중요 출력파라미터는호출된 FC에서쓰기가되어야합니다 (‘S”나 “R”과같은인스트럭션은피함). 그렇지않으면 L-Stack에서정의되지않은값이실질파라미터에복사됩니다. 출력파라미터가쓰기가되게할수없다면대신에입/출력파라미터를사용해야합니다.

Date: 10/17/99File: PRO2_06e.23

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

FC 호출에서파라미터전달 (2)

OB1 Function FC10

프로그램실행

CALL FC10On_1 := I0.1On_2 := DB5.DBX2.2Off := DB6.DBX2.6

in On_1 BOOLin On_2 BOOLout Off BOOl...

...A #On_1A #On_2= #Off...

OB1

BLD 1= L 20.0OPN DB 5A DBX 2.2= L 20.1AC FC 10

P#I 0.1P#L 20.1P#L 20.2

A L 20.2OPN DB 5= DBX 2.6BLD 2

L-Stack (OB1)

DB5

LB 20.. .. .. .. .. 0 1 ..0 0 0 1 0 1 0 0

...

...

1

2

3DBB2

다음장소에있는기본실질파라미터:

상수

데이터블록

Page 109: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Block Calls and Multi-instance ModelPage 24

파라미터전달 복잡한데이터형 (DT, STRING, ARRAY, STRUCT, UDT)의경우실질파라미터는데이터블록이나호출블록의 L-Stack (V-area)에있습니다.32 비트영역횡단포인터가 DB에서실질파라미터에도달할수없기때문에STL/LAD/FBD 편집기는호출된블록의 L-Stack에실질파라미터를가리키는 48 비트 “POINTER”를저장합니다. 호출중에 32 비트영역횡단포인터가 “POINTER”에전달됩니다. FC에서실질파라미터에대한파라미터액세스가이중분기에의해일어납니다.호출블록의 L-Stack에서 “POINTER”의설정은호출된 FC로실제전환되기전에일어납니다.

결과 복잡한데이터형의파라미터는기본파라미터형보다 “쉽게사용”됩니다. 복잡한데이터형의입력파라미터는전혀문제없이호출된 FC에서쓰기가될수있습니다. 마찬가지로출력파라미터도문제없이스캔될수있습니다.

Date: 10/17/99File: PRO2_06e.24

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

FC 호출에서파라미터전달 (3)

OB1 Function FC10

프로그램실행

CALL FC10On := "Value".FieldOff := Q8.0

in On ARRAY[1..10]INT

out Off BOOl...

...L #On[8]...= #Off...

OB1

BLD 1= L 20.0L 5T LW 21L P#DBX0.0T LD23AC FC 10

P#L 21P#Q 8.0

BLD 2

L-Stack (OB1)

Field ARRAY[1..10]INT

LB 21

...

1

2

다음장소에있는복잡한실질파라미터:

L-Stack데이터블록

DB-No: 5 area-crossing

Pointer

DB5: "Value"

set up"POINTER"in L-Stack

Page 110: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Block Calls and Multi-instance ModelPage 25

파라미터전달 "POINTER" 또는 "ANY" 데이터형의파라미터가 FC로전달되면 STL/LAD/FBD 편집기는호출블록의 L-Stack에해당데이터구조를설정합니다.FC 호출의경우이데이터구조 (“POINTER”나 “ANY”)를가리키는 32 비트영역횡단포인터가호출된 FC로전달됩니다. 이러한 “POINTER”나 “ANY”포인터를통해참조되는형식정보가없기때문에호출된 FC에서파라미터에직접액세스할수없습니다. "POINTER“또는 "ANY“의내용에대한평가는호출된 FC에서기본 STL 명령을사용하여사용자가수행해야합니다 (연습 3.3 참고). 호출된 FC로실제전환이되기전에호출블록의 L-Stack에 "POINTER" 또는"ANY" 구조를설정합니다.

예외 위의규칙에대한예외는 STL/LAD/FBD 편집기로서 “ANY”데이터형의블록파라미터에추가적인 “ANY”데이터형의실질파라미터가설정되고호출블록의L-Stack에저장될때입니다. 이경우에STL/LAD/FBD 편집기는호출자의 L-Stack에추가적인 “ANY”포인터를설정하지않고이미 (호출자의 L-Stack에) 존재하는 “ANY”포인터에대한 32 비트영역횡단포인터를 FC 호출에직접전달합니다.따라서실행중에이 "ANY" 포인터는호출블록에의해조작될수있으며실질파라미터로 FC의 “간접”할당을실행할수있습니다.

Date: 10/17/99File: PRO2_06e.25

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

FC 호출에서파라미터전달 (4)

OB1 Function FC10

프로그램실행

CALL FC10On := P#I0.0 10 INTOff := Q8.0

in On ANYout Off BOOl...

...L P##On...= #Off...

OB1BLD 1= L 20.0L W#16#1005T LW 21L 10T LW 23L 0T LW25L P#I0.0T LD27L P#DBX0.0T LD23AC FC 10

P#L 21P#Q 8.0

BLD 2

L-Stack (OB1)LB 21

...

1

2

"POINTER" 와"ANY" 파라미터

10H Data type: 05Repetitionf.: 10

DB-No: 0 area-crossingpointer: P#I0.0

...

set up"ANY" pointerin L-Stack

Page 111: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Block Calls and Multi-instance ModelPage 26

파라미터전달 TIMER, COUNTER, BLOCK_x 형의파라미터전달이가장쉽습니다. 이경우에32 비트영역횡단포인터대신현재의 TIMER나 COUNTER 또는 BLOCK_x의수가호출되는 FC로간단히전달됩니다.

Date: 10/17/99File: PRO2_06e.26

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

FC 호출에서파라미터전달 (5)

OB1

Function FC10

프로그램실행

CALL FC10On := DB35Off := Q8.0

in On BLOCK_DBout Off BOOl...

...OPN #ON...= #Off...

BLD 1= L 20.0AC FC 10

P#4.3P#Q 8.0

BLD 2

블록파라미터:TIMER, COUNTERBLOCK_x

OB1

Page 112: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Block Calls and Multi-instance ModelPage 27

Date: 10/17/99File: PRO2_06e.27

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

추가연습 6.4: 자체카운터블록만들기

FB6

DB6

EN ENO

CU

R

I0.0

I0.1

PV

Q Q0.0

CV QW12

10

문제정의 다음등록정보를가지는 16 비트계수블록 (카운터계산) FB6 "CU"를만듭니다.• 카운터는 (마지막 SFB 호출과대응하는) 입력 CU에서상승에지로 “1”씩증가합니다. 만약카운터가상한값인 32,767에도달하면증가하지않습니다.입력 CU에서추가적인상승에지가생겨도영향을미치지않습니다.

• 입력 R에서상태 1은입력 CU에나타나는값에관계없이카운터의리셋을값 ”0”으로시작합니다.

• 출력 Q는현재계수값이미리설정된값 PV보다크거나같은지를표시합니다.

파라미터 파라미터 선언 데이터형 설명

CU INPUT BOOL 계수입력 (Countup)R INPUT BOOL 리셋 (Reset) 입력, 대응하는 CU보다

우세PV INPUT INT Presetvalue. Q OUTPUT BOOL 카운터의상태: CU >PV면 Q는값 1을

가지고그렇지않으면 0을가짐CV OUTPUT INT 현재값 (Current Value)

절차 1. 위의등록정보를가지는 FB6을만듭니다. 이를실행하기위해전역 S7-CPU어드레스를사용하지않습니다.

3. OB1에서인스턴스 DB6를가지는계수블록 FB6를호출합니다. 블록파라미터에다음실질파라미터를제공합니다.- CU = I0.0- R = I0.1- PV = IW4 (시뮬레이터의푸시휠스위치)- Q = Q8.0- CV = QW12 (시뮬레이터의디지털디스플레이)

5. 블록을 CPU에다운로드하고프로그램을테스트합니다.

Page 113: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Using LibrariesPage 1

목차 페이지

라이브러리에서흥미로운사실 .................................................................................................. 2표준라이브러리의설정및내용 ....................................................................................... 3시스템함수에서흥미로운사실 ............................................................................................. 4시스템함수에대한개요 (1부) .................................................................................................. 5시스템함수에대한개요 (2부) ................................................................................................... 6시스템함수에대한개요 (3부) ................................................................................................... 7시스템함수에대한개요 (4부) ................................................................................................... 8시스템함수에대한개요 (5부) ................................................................................................... 9시스템함수호출 ............................................................................................................. 10오류메시지평가 ......................................................................................................... 11연습 7.1: “링크되지않은”속성을가지는 DB 만들기 ............................................................... 12연습 7.2: 데이터블록테스트 (SFC 24: S7-400 전용) ....................................................... 13연습 7.3: DB 만들기 (SFC 22) ........................................................................................ 14연습 7.4: 로드메모리에서작업메모리로 DB 복사 (SFC 20) ....................................................... 15연습 7.5: DB 초기화 (SFC 21) ................................................................. 16연습 7.6: 진단버퍼에메시지쓰기 (SFC 52) .......................................................................... 17라이브러리: S5 - S7 전환블록 ...................................................................................... 18라이브러리: TI - S7 전환블록 (1부) ............................................................................ 19라이브러리: TI - S7 전환블록 (2부) ............................................................................ 20

라이브러리사용

FC 101 FC 102 FC 103FC 100

Page 114: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Using LibrariesPage 2

개요 라이브러리는 SIMATIC S7/M7에대해재사용될수있는프로그램구성요소를저장하기위해사용됩니다. 프로그램구성요소는기존의프로젝트에서라이브러리로복사되거나프로젝트와관계없이라이브러리에서직접만들어질수있습니다.프로젝트에대한같은기능이라이브러리에서 S7-프로그램을만들때도사용될수있지만테스트는예외입니다.

설정 프로젝트와마찬가지로라이브러리도계층구조로설정됩니다.• 라이브러리는 S7-프로그램을포함할수있습니다.• S7-프로그램은한개의 “기호” (기호표) 개체는물론정확히한개의 “블록”

(“사용자프로그램”) 컨테이너와한개의 “차트”컨테이너를포함할수있습니다.

• “블록”컨테이너는블록을포함하며, 이블록은 S7-CPU에로드될수있습니다. 포함된변수표 (VAT)와사용자정의데이터형은 CPU에로드되지않습니다.

• “소스”컨테이너는다양한프로그래밍언어에서만들어진프로그램에대한소스를포함합니다.

• “차트”컨테이너는 CFC-차트를포함합니다 (옵션소프트웨어 S7-CFC에만적용)

새로운 S7-프로그램을삽입할때 “기호”개체는물론 “블록”및 “소스”컨테이너가자동적으로그안에서설정됩니다.

라이브러리의사용 사용자는 S7-프로그램에서항상다시사용하고싶은블록을저장한후이 S7-프로그램을라이브러리에저장하면프로그래밍시간을저장할수있습니다. 거기에서항상개별사용자프로그램에블록을복사할수있습니다.

Date: 10/18/99File: PRO2_07e.2

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

라이브러리에서흥미로운사실

목적:재사용할수있는프로그램구성요소의저장

CPU에직접전송하거나 테스트할수없습니다.

라이브러리설정:라이브러리는몇개의프로그램컨테이너를포함할수있습니다.라이브러리는 “하드웨어”를포함할수없습니다.모든프로그램컨테이너는다음을포함합니다.컨테이너 "블록", "소스", "기호"컨테이너 "차트" (옵션소프트웨어 S7-CFC 전용)

라이브러리의사용:SIMATIC 관리자일경우:라이브러리가설정될수있습니다 (그러나프로젝트와이름이같으면안됩니다).블록이라이브러리와프로젝트사이에복사될수있습니다.라이브러리는저장될수있습니다.

Page 115: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Using LibrariesPage 3

Date: 10/18/99File: PRO2_07e.3

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

표준라이브러리의설정및내용

소개 STEP7 소프트웨어를설치하면 2개의표준라이브러리가자동적으로하드디스크에설치됩니다.• 버전 2일경우표준라이브러리 stdlibs(V2)• 버전 3일경우표준라이브러리 V3.x이들라이브러리에서원하는블록을프로젝트에복사할수있습니다.

라이브러리열기 라이브러리를열려면명령 File -> Open을사용하거나도구모음에서관련아이콘을사용합니다.그런후원하는프로젝트나원하는라이브러리를선택할수있는추가대화상자가위에나타납니다.

표준라이브러리 StdLib30 표준라이브러리는다음 S7-프로그램을포함합니다.• 통신블록: S7-300 Profibus CP를사용할때분산 I/O를연결하기위한함수포함

• IEC 전환블록: IEC 함수, 예를들어데이터형 DATE_AND_TIME과STRING을처리하기위한블록포함 (5장참고).

• 조직블록: S7-300/400의모든시스템함수포함• PID 제어블록: PID 제어를위한함수블록포함• S5-S7 전환블록: S5-프로그램을 S7으로전환할때필요한표준블록포함• 시스템함수블록: S7-300/400의모든시스템함수포함• TI-S7 전환블록: 일반적으로사용되는표준함수, 예를들어아날로그값의스케일링, 등포함

참고 어느정도까지옵션패키지를설치하는중에추가라이브러리가만들어집니다.S7 라이브러리 PID와 TI - S7 전환블록에대한설명은 Taskbar -> SIMATIC -> S7 manuals -> PID Control, Standard Functions 2에서찾아볼수있습니다.

Page 116: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Using LibrariesPage 4

소개 STEP7 인스트럭션으로실행될수없는기능 (예: DB 만들기, 다른 PLC와통신, 등)은시스템함수 (SFC)나시스템함수블록 (SFB)을이용해 STEP7에서실행될수있습니다.SFC와 SFB는사용자메모리가아니라 CPU의운영체제에저장되는블록입니다. 이때문에 CPU에서 SFC나 SFB를읽을때실제인스트럭션부분은전송되지않고 SFC나 SFB의선언부만전송됩니다.STL/LAD/FBD 편집기를이용해서읽은 “블록”이열릴수있으며선언부가표시될수있습니다. 그러나역으로 SFC와 SFB를 CPU로전송할수는없습니다.그러나사용자프로그램에서 SFB와 SFC는 CALL 인스트럭션을통해 FB나FC와마찬가지로호출될수있습니다. 이때문에 SFB의경우사용자 DB는또한SFB에대한인스턴스 DB로서지정되어야합니다.사용될수있는 SFB와 SFC의종류는개별적으로사용되는 PLC 시스템 (S7-300 or S7-400)와설치되는 CPU에달려있습니다. 그러나블록은 S7-300에서호출되든 S7-400에서호출되든상관없이같은번호, 같은기능, 같은호출인터페이스를가집니다.

설명서 시스템함수에대한상세한설명이설명서에나와있습니다.• S7-300/400, 시스템함수및표준함수에대한시스템소프트웨어참고설명서

온라인도움말 또한 STEP7 소프트웨어에는시스템함수에대한상세한설명이있습니다. 프로그램편집기에서도움말메뉴를호출하고항목을입력합니다.• Help topics -> Block help -> Help with SFBs/SFCs .

Date: 10/18/99File: PRO2_07e.4

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

시스템함수에서흥미로운사실

시스템함수 (SFC와 SFB)는 CPU의운영체제에저장됩니다.

S7-300/400, 시스템함수및표준함수에대한시스템소프트웨어참고설명서,

STEP 7 소프트웨어에서사용할수있는확장온라인도움말

Page 117: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Using LibrariesPage 5

복사함수및 • SFC 20은메모리영역의내용 (소스)을또다른메모리영역 (대상)으로블록함수 복사합니다.

• SFC 21은메모리영역에지정된메모리영역 (소스필드)의내용을채웁니다.• SFC 22은작업메모리에서미리설정된값이없는 DB를만듭니다.• SFC 23은작업메모리와로드메모리에서 DB를삭제합니다.• SFC 24는 DB가작업메모리에 (길이를가지고) 존재할것인지의여부를결정합니다.

• SFC 25는작업메모리를압축합니다. 블록이정정되면압축중에제거되는공간이작업메모리에생깁니다.

• SFC 44 (OB 122에서호출)는 Accu에서잘못된입력모듈에대한대체값을저장합니다.

프로그램제어 • SFC 35는멀티컴퓨팅으로모든 CPU에서 OB60의동기시작을일으킵니다.• SFC 43은 CPU 스캔순환감시를새롭게시작합니다.• SFC 46은 CPU를 Stop 상태로가져옵니다.• SFC 47은사용자프로그램에서 32767 µs까지대기시간을실행합니다.

시계처리 • SFC 0은 CPU의실시간시계에대한날짜와타임오브데이를설정합니다.• SFC 1은현재의 CPU 날짜와타임오브데이를읽습니다.• SFC 48은버스세그먼트에있는모든슬레이브시계를동기화합니다.호출을가지는 CPU에마스터시계로서파라미터를할당해야합니다.

작동시간카운터 CPU는특정한수의작동시간카운터를가지며, 이카운터를사용하여운영장비의작동지속시간을기록할수있습니다.• SFC 2는작동시간카운터를특정값으로설정합니다. • SFC 3은작동시간카운터를시작하고중지합니다.• SFC 4는현재작동시간수와상태를읽습니다.• SFC 64는 CPU의시스템시간을읽습니다. 시스템시간은자유롭게움직이는시간카운터이며매 10 ms (S7-300) 또는매 1 ms (S7-400)마다시간이더해집니다.

Date: 10/18/99File: PRO2_07e.5

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

시스템함수에대한개요 (1부)

1) CPU 312IFM에는적용되지않음 2) 개선된 CPU에만적용

함수 그룹 함수 블록 S7-300

S7-400

복사 및 블록 함수 Blockmove Preset field Generate DB Delete DB Test DB Compress Substitute value in ACCU 1

SFC 20SFC 21SFC 22SFC 23SFC 24SFC 25SFC 44

X X X - - -

X1)

X X X X X X X

프로그램 제어 Multicomputing interrupt Trigger cycle time Stop state Delay (wait)

SFC 35SFC 43SFC 46SFC 47

- X X X)

X2) X X X

시계 처리 Set clock time Read clock time Synchronize

SFC 0 SFC 1 SFC 48

X X -

X X X

작동 시간 카운터 Set the counter Start and stop Read out Read system time

SFC 2 SFC 3 SFC 4 SFC 64

X1) X1) X1) X

X X X X

Page 118: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Using LibrariesPage 6

전송데이터기록 파라미터를할당할수있는모듈에대한파라미터와진단데이터를가지는시스템데이터영역이있습니다. 이영역은 0에서 255까지데이터기록을포함하며이기록은읽거나쓸수있습니다.• SFC 55는실질파라미터를주소가지정된모듈로전송합니다.

CPU의 SDB에있는파라미터는덮어쓰기가되지않습니다.• SFC 56은파라미터 (데이터기록 RECNUM)를모듈로전송합니다.• SFC 57은모든데이터기록을 SDB에서모듈로전송합니다.• SFC 58은 RECORD 데이터기록을모듈로전송합니다.• SFC 59는 RECORD 데이터기록을모듈에서읽습니다.

타임인터럽트 이블록은시간제어프로세싱 (OB 10 to 17)을위해사용됩니다. STEP7 소프트웨어나다음시스템함수를사용하여시작지점을결정할수있습니다.• SFC 28은타임오브데이제어 OB의시작날짜와타임오브데이를설정합니다.

• SFC 29는 OB (OB 10 to OB 17)의시작날짜와타임오브데이를삭제합니다.• SFC 30은지정된타임인터럽트 OB를활성화합니다.• SFC 31은타임인터럽트 OB의상태를스캔합니다.

딜레이인터럽트 • SFC 32는지연된방식으로딜레이인터럽트 (OB 20 to 27)를시작합니다. • SFC 32는딜레이인터럽트를취소합니다.• SFC 34는딜레이인터럽트의상태를스캔합니다.

동기오류 • SFC 36은동기오류를마스크합니다. 즉, 잘못된인스트럭션은관련된동기오류 OB를호출하지않습니다.

• SFC 37는동기오류의마스크를해제합니다.• SFC 38은오류레지스터를읽습니다.

인터럽트와 • SFC 39는인터럽트와비동기오류이벤트의프로세싱을금지합니다.비동기오류 • SFC 40은인터럽트와비동기오류의프로세싱을다시허가합니다.

• SFC 41은인터럽트와비동기오류의프로세싱을지연합니다.• SFC 42는지연된인터럽트와비동기오류의프로세싱을다시허가합니다.

Date: 10/18/99File: PRO2_07e.6

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

시스템함수에대한개요 (2부)

1) CPU 312IFM에는적용되지않음

함수 그룹 함수 블록 S7-300

S7-400

전송 데이터 기록 Write active parameters. Write defined parameters. Parameterize module. Write data record. Read data record.

SFC 55 SFC 56 SFC 57 SFC 58 SFC 59

X X X X X

X X X X X

타임 인터럽트 Set Cancel Activate Scan

SFC 28 SFC 29 SFC 30 SFC 31

X1) X1) X1) X1)

X X X X

딜레이 인터럽트 Start Cancel Scan

SFC 32 SFC 33 SFC 34

X1) X1) X1)

X X X

동기 오류 Mask error. Demask error. Read status register.

SFC 36 SFC 37 SFC 38

X X X

X X X

인터럽트 오류 및 비동기 오류

Cancel new interrupts. Enable new interrupts. Delay new interrupts. Enable higher priority interrupts.

SFC 39 SFC 40 SFC 41 SFC 42

X X X X

X X X X

Page 119: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Using LibrariesPage 7

시스템진단 • SFC 6는마지막으로호출된 OB의시작정보와시동 OB를읽습니다.• SFC 51은시스템상태목록의한부분을읽습니다. 이목록은시스템데이터,진단상태데이터, 진단데이터및진단버퍼를포함합니다.

• SFC 52는진단버퍼에사용자항목을씁니다.

프로세스이미지, • SFC 26은전체또는부분프로세스이미지입력표를갱신합니다.I/O 영역 • SFC 27은전체또는부분프로세스이미지를출력모듈에전송합니다.

• SFC 79/ 80은마스터제어릴레이함수와함께 I/O 영역에서비트필드를설정하고리셋하기위해사용됩니다.

모듈어드레싱 • SFC 5는지역어드레스에대한논리어드레스를제공합니다.• SFC 49는논리어드레스에서지역어드레스를결정합니다.• SFC 50은모듈의모든논리어드레스를제공합니다.

분산 I/O • SFC 7은인텔리전트슬레이브 (CPU 315-2DP)의사용자프로그램에서 DP마스터에하드웨어인터럽트를일으킵니다.

• SFC 11은한개또는몇개그룹의 DP 슬레이브를동기화합니다.• SFC 13은 DP 슬레이브의진단데이터를읽습니다.• SFC 14는 DP 슬레이브에서일관적인데이터를읽습니다.• SFC 15는 DP 슬레이브에일관적인데이터를씁니다.

전역데이터통신 전역데이터는 SFC를사용하지않고 (모든 8번째순환처럼) 순환적으로전송됩니다. SFC 60과 61 시스템함수를이용해사용자프로그램에서데이터패키지를보내고받을수있습니다.• SFC 60은전역데이터패키지를보냅니다.• SFC 61은전역데이터패키지를받습니다.

Date: 10/18/99File: PRO2_07e.7

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

시스템함수에대한개요 (3부)

1) DP 인터페이스를가지는 CPU에만적용. 예:CPU 315-2 DP

함수 그룹 함수 모듈 S7-300

S7-400

시스템 진단 Read start info. Read partial system status list Write diagnostics buffer.

SFC 6 SFC 51 SFC 52

- X X

X X X

프로세스 이미지 , I/O 영역

Activate PII inputs. Activate PIQ outputs. Set bit field in the I/O. Reset bit field in the I/O.

SFC 26 SFC 27 SFC 79 SFC 80

- - - -

X X X X

어드레싱 모듈 Determine logical address. Determine slot. Determine all logical addresses.

SFC 5 SFC 49 SFC 50

- X X

X X X

분산 I/O Trigger process interrupt. Synchronize DP Slaves Read diagnostics data. Read user data. Write user data.

SFC 7 SFC 11 SFC 13 SFC 14 SFC 15

1) 1) 1) 1) 1)

1) 1) 1) 1)

전역 데이터 통신 Send GD package. Receive GD package.

SFC 60 SFC 61

- -

X X

Page 120: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Using LibrariesPage 8

SFB를통한 SFB는설정된연결을통해데이터를교환하고프로그램을관리하기위해데이터교환 사용됩니다. CFB 호출이한쪽의통신파트너에필요한지또는양쪽에모두

필요한지에따라일방향또는쌍방향통신으로불립니다. SFB는 S7-400 운영체제에만존재합니다.

• SFC 62는로컬 CFB 인스턴스의상태및관련된연결의상태를결정합니다• SFB 8은조정없이리모트파트너에게데이터를보냅니다.• SFB 9는 SFB8에대응하는함수입니다.• SFB 12는데이터 (64 Kbyte까지)를확인하여리모트파트너에게보냅니다.• SFB 13은리모트파트너에게서데이터를확인하여받습니다.• SFB 14는리모트 CPU에서데이터를읽습니다 (일방향통신).• SFB 15는리모트 CPU에데이터를씁니다 (일방향통신).• SFB 16은서식데이터를리모트프린터에보냅니다.• SFB 19는리모트파트너를완전재시작합니다. • SFB 20은리모트파트너를 STOP 상태로보냅니다.• FB 21은리모트파트너의재시작을실행합니다.• SFB 22는리모트파트너의장치상태 (작동상태, 오류정보)를제공합니다.• SFB 23은리모트파트너의장치상태를받습니다.

SFC를통한 기본통신으로도불리는이통신은 S7-400에서는물론 S7-300에서실행됩니다. 데이터교환 SFB 통신과비교할대다음차이점이있습니다.

• 연결설정이필요하지않습니다.• 인스턴스데이터블록이요구되지않습니다.• 최대사용자데이터길이는 76 바이트입니다.• 액티브연결설정• MPI 또는r K 버스를통한통신

Date: 10/18/99File: PRO2_07e.8

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

시스템함수에대한개요 (4부)

1) 개선된 CPU에만적용

함수 그룹 함수 블록 S7-300

S7-400

SFB, 설정된 연결을 통한 데이터 교환

Scan state Uncoordinated send Uncoordinated receive Send block Receive block Read data from the remote CPU Write data to the remote CPU Send to printer Carry out complete restart Stop state Carry out restart Scan device status Receive device status

SFC 62 SFB 8 SFB 9 SFB 12 SFB 13 SFB 14 SFB 15 SFB 16 SFB 19 SFB 20 SFB 21 SFB 22 SFB 23

- - - - - - - - - - - - -

X X X X X X X X X X X X X

SFC, 설정되지 않은 연결을 통한 데이터 교환

Send data externally Receive data externally Read data externally Write data externally Cancel connection externally Read data internally Write data internally Cancel connection internally

SFC 65 SFC 66 SFC 67 SFC 68 SFC 69 SFC 72 SFC 73 SFC 74

1) 1) 1) 1) 1) 1) 1) 1)

1) 1) 1) 1) 1) 1) 1) 1)

Page 121: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Using LibrariesPage 9

통합폐쇄루프제어 이블록은이후 CPU 버전에서통합됩니다.

플라스틱기술 CPU 614 (S7-300)의경우개별블록은 “C”언어에서만들어질수있습니다. SFC 63 시스템함수는그런블록을호출하기위해사용됩니다.

통합함수 이블록은CPU 312 IFM (S7-300)에만존재합니다.통합함수설명서에설명이되어있습니다.• SFB 29는통합 CPU 입력에서펄스를셉니다.• SFB 30은통합입력을통해빈도를측정하기위해사용됩니다.

IEC 타이머 이것은 IEC 1131-3 표준에일치하는타이머및카운터함수를사용할수있게및카운터 합니다. 나머지타이머및카운터함수는호환성문제때문에 SIMATIC S5

전용으로실행됩니다.IEC 타이머와카운터의경우타이머및카운터값의범위가매우넓습니다.

블록참조 이블록은프로세스제어시스템과같은 MMI 시스템에대한메시지시스템을메시지 실행하기위해사용됩니다.

메시지는이절차를통해 S-CPU에서만들어지며프로세스변수를포함하는각메시지가로그온된디스플레이장치에보내집니다.중앙확인개념이사용됩니다. 즉, 디스플레이장치에서메시지를확인하면메시지를보낸 CPU에대답을보냅니다. CPU에서정보가모든로그온사용자에게분산됩니다. 단일입력에서의에지변경에대해메시지를발생합니다.

Date: 10/18/99File: PRO2_07e.9

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

시스템함수에대한개요 (5부)

1) CPU 614에만적용 2) CPU 312 IFM에만적용 3) CPU 314IFM에만적용

함수 그룹 함수 블록 S7-300

S7-400

통합된 폐쇄 루프 제어

Continuous control Step control Pulse shaping

SFB 41SFB 42SFB 43

3) 3) 3)

- - -

플라스틱 기술 Call up the assembler block SFC 63 1) - 통합 함수 High speed counter

Frequency meter A/B counter Positioning

SFB 29SFB 30SFB 38SFB 39

2) 2) 3) 3)

- - - -

IEC 타이머 및 IEC 카운터

Pulse On delay Off delay Count up Count down Count up/down

SFB 3 SFB 4 SFB 5 SFB 0 SFB 1 SFB 2

x x x x x x

x x x x x x

블록 참조 메시지 M essage without acknowledgement M essage with acknowledgement M essage with 8 accompanying values M essage without accompanying values Send archive data Disable messages Enable messages

SFB 36SFB 33SFB 35SFB 34SFB 37SFC 10SFC 9

- - - - - - -

x x x x x x x

Page 122: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Using LibrariesPage 10

소개 시스템함수가호출될때시스템함수는자동적으로해당사용자프로그램에복사됩니다.또한모든시스템함수는 S7-프로그램의기본제공 StdLib30 표준함수에저장됩니다. 또한이라이브러리에서사용자프로그램으로 SFC와 SFB를복사할수있습니다.(영문명칭이있는) 완성된기호표가라이브러리에있습니다. 사용된블록의기호는자동적으로사용자프로그램의기호표에복사됩니다.

STL에서호출 CALL SFC ..로호출을한후블록파라미터목록이표시되고블록에대한파라미터를설정할수있습니다.반환오류메시지는물론파라미터에대한설명이온라인도움말에제시됩니다.

LAD/FBD에서호출 네트워크에서한장소를선택하고명령 Insert -> LAD Element --> SFC 또는SFB블록을통해원하는시스템함수를삽입합니다.래더도표에대한추가연결을위해대응하는 STL, (조건적호출에대한) EN 및ENO 파라미터를사용할수있습니다.

Date: 10/18/99File: PRO2_07e.10

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

시스템함수호출

CAll in STL Call in LAD

Page 123: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Using LibrariesPage 11

오류정보 처리된 SFC는사용자프로그램에서 CPU가성공적으로 SFC 함수를실행했는지여부를보여줍니다. 다음 2가지방법으로해당오류정보를받습니다.• 상태워드의 BR 비트• 출력파라미터 RET_VAL (반환값)

참고 SFC 고유의출력파라미터를평가하기전에항상다음절차를따라야합니다.• 제일먼저상태워드의 BR 비트를평가• 그이후에출력파라미터 RET_VAL 확인만약 BR 비트를통해 SFC의프로세싱이잘못되었다는신호를받거나일반오류코드가 RET_VAL에나타나면 SFC 고유의출력파라미터를평가하지않을수도있습니다.

일반오류 일반오류코드는모든시스템함수에발생할수있는오류를표시합니다. 일반오류코드는다음 2개의번호로구성됩니다.• 1에서 127까지의파라미터번호. 1은호출된 SFC의첫번째파라미터를, 2는두번째파라미터..등을나타냅니다.

• 1에서 127까지의이벤트번호. 이벤트번호는동기오류를표시합니다.일반오류코드에대한상세한설명은 “시스템함수와표준함수”설명서나온라인도움말에있습니다.

특정오류 몇개의시스템함수 (SFC)는특정오류코드를제공하는반환값을가집니다. 이오류코드는특정시스템함수에속하는오류가함수를프로세싱하는중에발생했음을나타냅니다.특정오류코드에대한설명은시스템함수에대한온라인도움말에나옵니다.

Date: 10/18/99File: PRO2_07e.11

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

오류메시지평가

BR 이진결과는잘못된프로세싱일경우 RLO=0을제공하고잘못이없는프로세싱의경우 RLO=1을제공합니다.

A BR로 STL에대한 BR 스캔ENO 출력파라미터를통해 LAD에서스캔

대부분의시스템함수는다음설정으로출력파라미터 RET_VAL (INT)에오류코드를반환합니다.

RET_VAL=W#16#8 X Y Z

보기: W#16#8081는 SFC에고유한오류코드입니다.W#16#823A는일반오류코드이며오류는파라미터 2번에의해발생되었습니다.

"8" signals: error occurred

X>0: 일반오류, X= 잘못된파라미터의번호X=0: SFC에고유한오류가발생

오류클래스, 오류의개별번호 (SFC에고유한)또는이벤트번호 (일반적)

Page 124: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Using LibrariesPage 12

Date: 10/18/99File: PRO2_07e.12

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

연습 7.1: “링크되지않은”속성을가지는 DB 만들기

Load memory

DB 20Transfer

연습목적 "UNLINKED" 속성을가지는데이터블록을만듭니다.

문제정의 작업메모리는제한된 (일반적으로너무작은) 크기를가지기때문에다양한레시피값을가지는몇개의데이터블록은레시피관리를위한로드메모리에만저장됩니다.현재의레시피가저장되는작업 DB만이작업메모리에존재합니다. 레시피변경을하려면필요한값을로드메모리에서작업메모리로복사합니다."UNLINKED" 속성을이용해데이터블록이 PG에서 CPU로전송될때로드메모리에만저장되고작업메모리에자동적으로복사되지않도록합니다.

절차 1. DB20을삽입합니다.2. DB20에서 “INT”구성요소형으로 ARRAY[1..20]형의변수 “Recipe”를선언합니다.

3. 메뉴명령 View -> Data View를이용해데이터보기로전환하고오름차순으로개별필드구성요소를초기화합니다.

4. 블록등록정보를선택하고 "UNLINKED" 속성을설정합니다.5. DB 20 데이터블록을 CPU에전송합니다.6. 예를들어사용자프로그램에서인스트럭션 L DB20.DBW0으로 DB20에액세스하면어떻게됩니까?

Page 125: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Using LibrariesPage 13

Date: 10/18/99File: PRO2_07e.13

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

연습 7.2: 데이터블록테스트 (SFC 24: S7-400 전용)

파라미터 선언 데이터 형 메모리 영역 설명 DB_NUMBER INPUT WORD I, Q, M, D, L. 검사될 DB의 상수 번호 RET_VAL OUTPUT INT I, Q, M, D, L 오류 정보 DB_LENGTH OUTPUT WORD I, Q, M, D, L 선택된 DB가 포함하는

데이터 바이트의 수 WRITE_PROT OUTPUT BOOL I, Q, M, D, L 선택된 DB의 쓰기 보호

ID에 대한 정보 (1은 쓰기 보호)

연습목적 SFC 24를이용해데이터블록이작업메모리에존재할것인지여부를결정합니다.

문제정의 SFC 24를이용해 DB가작업메모리나로드메모리에존재할것인지또는CPU에전혀존재하지않도록할것인지여부를결정하는 FC 72를만듭니다.• FC 72는블록번호를입력파라미터 "DB_NUM" (WORD)에서테스트합니다. • FC 72는호출블록에반환값 RET_VAL (INT)으로원하는정보를반환합니다.- 1: DB가로드메모리에존재- 0: DB가작업메모리에존재- -1: DB가존재하지않음

참고 SFC 24의 RET_VAL 출력파라미터는다음식별자를반환합니다.• w#16# 0000 오류가발생하지않음• w#16# 80A1 파라미터 DB_NUMBER의숫자가잘못되었음 (0 또는최대 DB번호보다큼)

• w#16# 80B1 DB가 CPU에존재하지않음• w#16# 80B2 DB는링크되지않은키워드로만들어짐 (작업메모리에만나타남)

절차 1. FC 72 블록을만듭니다.2. FC 72를이용해서 DB 20이존재하는지여부를확인하는 OB1을만듭니다.시뮬레이터의표시에반환정보를표시합니다.

3. 블록을 CPU에다운로드하고프로그램을테스트합니다.

참고 시스템함수 SFC 24는 S7-400에만존재합니다!

Page 126: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Using LibrariesPage 14

Date: 10/18/99File: PRO2_07e.14

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

연습 7.3: DB 만들기 (SFC 22)

파라미터 선언 데이터 형 메모리 영역 설명 LOW_LIMIT INPUT WORD I,Q, M, D, L, constant 가장 작은 DB 번호 UP_LIMIT INPUT WORD I,Q, M, D, L, constant 가장 큰 DB 번호 COUNT INPUT WORD I, Q, M, D, L, constant 데이터 바이트의 수. 여기에 짝수의

바이트를 지정해야 함 RET_VAL OUTPUT INT I,Q, M, D, L SFC에 대한 반환 값 DB_NUMBER OUTPUT WORD I, Q, M, D, L 만들어진 DB 번호 (LOW_LIMIT와 UP_LIMIT 사이에 옴)

연습목적 각프로그램에대한새 DB의설정에익숙해지기

문제정의 시동 OB100에서 DB 10은작업메모리에서만들어집니다. 이후에레시피값이로드메모리에서이 DB로복사됩니다.

절차 1. OB 100을만듭니다.2. OB100에데이터워드길이가 20자인 DB 10을만듭니다.이를위해 SFC 22를사용합니다 (위의내용참고). "RET_VAL“파라미터를MW 0에저장하고 "DB_NUMBER“파라미터를시뮬레이터의세그먼트표시에저장합니다.

3. OB 100을 CPU에다운로드하고프로그램을테스트합니다.

참고 SFC 22 시스템함수는 RET_VAL 파라미터를통해다음오류메시지를제공합니다.• W#16# 0000 오류가없음• W#16# 8091 중첩깊이가범위를넘어감• W#16# 8092 압축이현재진행중• W#16# 80A1 DB 번호가잘못됨• W#16# 80A2길이가잘못됨• W#16# 80B1 DB 번호를사용할수없음 (DB가이미존재)• W#16# 80B2메모리가충분하지않음• W#16# 80B3연속메모리가충분하지않음 (압축필요)

Page 127: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Using LibrariesPage 15

Date: 10/18/99File: PRO2_07e.15

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

연습 7.4: 로드메모리에서작업메모리로 DB 복사 (SFC 20)

파라미터 선언 데이터 형 메모리 영역 설명 SRCBLK INPUT ANY I, Q, M, D, L 복사될 메모리 영역 (=소스 필드) 소스 필드는 로드 메모리에 있는 비순차적 관련 블록에 있을 수 있습니다 (키워드 UNLINKED로 컴파일된 DB t) RET_VAL OUTPUT INT I, Q, M, D, L SFC에 대한 반환 값 DSTBLK OUTPUT ANY I, Q, M, D, L 복사가 일어나는 메모리 영역

(=대상 필드)

연습목적 시스템함수 SFC 20 " Block transfer“에익숙해지기.

문제정의 레시피값 (DW0-DW38)은작업메모리에서데이터블록 DB 20에서 DB 10 (DW0-DW38)으로복사됩니다. 복사는입력 I1.0에서의에지이후한번일어납니다.

절차 1. 입력 I0.0의에지에서 SFC20 (블록전송)을이용해 DB 20에서 DB 10으로레시피값을복사하는 OB1을만듭니다.

2. 반환값 RET_VAL을시뮬레이터의디지털표시에둡니다.3. 사용자프로그램을 CPU에다운로드하고프로그램을테스트합니다.

Page 128: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Using LibrariesPage 16

Date: 10/18/99File: PRO2_07e.16

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

연습 7.5: DB 초기화 (SFC 21)

파라미터 파라미터 선언 데이터 형 메모리 영역 설명 BVAL INPUT ANY I, Q , M, D, L 미리 설정된 값 특징 : BVAL

은 구조체임 RET_VAL OUTPUT INT I, Q , M, D, L SFC 반환 값 BLK OUTPUT ANY I, Q , M, D, L 미리 설정된 값으로 채워야 하는 목표 필드

연습목적: 시스템함수사용에익숙해지기

문제정의 데이터블록이초기화될수있는 FC 75를만듭니다. FC 75는다음기능을가집니다.• FC 75는다음입력파라미터를요구합니다.

- DB_No (WORD): 초기화될 DB 번호- Ini_Byte (BYTE): 모든 DB 메모리셀에대해미리설정할바이트유형

• FC 75는제일먼저원하는 DB가작업메모리에존재할것인지를결정합니다.만약존재한다면또한그길이를결정합니다. 이후에 FC 75는전달된바이트로블록을초기화합니다.

• FC 75는 RET_VAL (BOOL)로신호를보냅니다.- TRUE: DB가성공적으로초기화되었습니다.- FALSE: DB가초기화되지않았습니다. 즉, DB가작업메모리에존재하지않습니다.

절차 1. 위의기능을가지는 FC 75를만듭니다.2. DB 10이입력 I1.1의에지에서 “0”으로초기화되도록 OB1에서 FC를통합합니다.

3. 프로그램을 CPU에전송하고프로그램을테스트합니다.

Page 129: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Using LibrariesPage 17

Date: 10/18/99File: PRO2_07e.17

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

연습 7.6: 진단버퍼에메시지쓰기 (SFC 52)

파라미터 파라미터 선언 데이터 형 메모리 영역 설명 SEND INPUT BOOL I, Q, M, D, L, constant 노드에 로그 된 모든 시스템에 사용자 항목을

보낼 수 있음 EVENTN INPUT WORD I, Q, M, D, L, constant 이벤트 번호 또는 형식 이벤트 ID INFO1 INPUT ANY I, Q, M, D, L 워드 1자 길이의 추가 정보 INFO2 INPUT ANY I, Q, M, D, L 워드 2자 길이의 추가 정보 RET_VAL OUTPUT INT I, Q, M, D, L SFC에 대한 반환 값

연습목적 진단버퍼에메시지항목프로그램할수있기

문제정의 다음기능을가지는 FC 76을만듭니다.• (I1.2에서의에지를통해시뮬레이트되는) 시스템오류에서메시지는진단버퍼에입력됩니다. 진단메시지는추가적으로 PG에출력됩니다.

절차 1. “시스템장애” (I1.2에서에지)가있을때진단버퍼에메시지를입력하는 FC76 블록을만듭니다.

2. SIMATIC 관리자에서함수 “CPU Messages”를활성화합니다.3. OB1에서 FC 76을호출하고프로그램을테스트합니다.

참고 SFC 52에대해다음파라미터를사용합니다.• EVENTN W#16# 9B0A (상태불일치, 이후이벤트, 외부오류, 진단

버퍼항목)• INFO1 W#16# 8 (예: 포지션스위치번호)• INFO2 DW#16# 1 (z.B. 포지션스위치형식)

사용자는이벤트 ID 번호 9를사용할수있습니다 (시스템함수및표준함수설명서참고).

오류코드 다음오류메시지는 SFC 52’s RET_VAL을통해표시됩니다.• 8083 데이터형 INFO1은허용되지않음• 8084 데이터형 INFO2는허용되지않음• 8085 EVENTN는허용되지않음• 8086 INFO1의길이는허용되지않음• 8087 INFO2의길이는허용되지않음• 8091 로그온된노드가없음• 8092 현재보내기를할수없음 (보내기버퍼가가득찼음)

Page 130: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Using LibrariesPage 18

소개 이라이브러리는 S5 프로그램의전환에필요한 S7 표준블록을포함합니다. 이것은예를들어 FB 240 표준블록이 S5 프로그램에있으면라이브러리의 FC 81 블록이 FB 240 표준블록을교체한다는것을의미합니다.컨버터는 FC 81 블록호출만을전송하기때문에호출된블록을라이브러리에서S7 프로그램으로복사해야합니다.

라이브러리내용 라이브러리블록은다음기능으로구분됩니다.• 더하기및빼기와같은부동소수점계산

• 이중점멸빈도를가지는퍼스트업신호와같은신호함수

• 코드컨버터 BCD --> Dual과같은통합함수• LIFO와같은기본논리함수

설명서 블록은 “STEP 5 프로그램에서의전환”설명서에상세히설명되어있습니다.

온라인도움말 프로그램편집기에서 S5/S7 함수로 Help --> Help topics --> References --> Additional reference aids --> Help를호출합니다.

참고 소위스크래치패드플래그도이들블록에사용되며이것은 SIMATIC S5에서는전형적인일입니다.

.

Date: 10/18/99File: PRO2_07e.18

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

라이브러리: S5 - S7 전환블록

JU FB 240COD:B4BCD: MW 114SBCD: M 0.0DUAL: MW 116

S5 Program

CALL FC81BCD: MW114SBCD: M0.0DUAL: MW 116

S7 Program

S5/S7 Converter

Page 131: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Using LibrariesPage 19

FC 80 FC80 함수는래칭온딜레이 (TONR)로 “시간”을시작합니다. FC80은실행종료시간의현재시간값 (ET)이미리설정된시간값 (PV)과같거나이보다커질때까지시간을누적합니다.

FC 81 전송데이터범위간접함수 (IBLKMOV)를이용해바이트, 워드, 정수 (16 비트), 더블워드또는정수 (32 비트)로구성된데이터범위를소스에서대상으로전송할수있습니다.S_DATA 및 D_DATA "POINTER“는소스영역과대상영역의시작을결정하는“POINTER”데이터형의구조체를가리킵니다. 복사될영역길이는별도의파라미터를통해결정됩니다.

FC 82/83 MCR비트가 “1”이면지정된영역의비트신호상태를 ”1” (FC 83) 또는 "0“ (FC 82)으로설정합니다. MCR이 “0”이면영역의비트신호상태는변경되지않습니다.

FC 84-FC92 이함수는예를들어 FIFO 함수를실행하는표함수를다룹니다. 값은워드포맷으로입력되며길이는조정할수있습니다.

FC 93-FC 99 이그룹은다양한전환함수를사용할수있게합니다.

.

Date: 10/18/99File: PRO2_07e.19

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

라이브러리: TI - S7 전환블록 (1부)

블록 기호 설명

FC 80 TONR 보유온딜레이로서시간시작FC 81 IBLKMOV 데이터영역을간접적으로전송FC 82 RSET 비트메모리영역이나 I/O 영역을리셋FC 83 SET 비트메모리영역이나 I/O 영역을설정FC 84 ATT 표에값입력FC 85 FIFO 첫번째표값을입력FC 86 TBL_FIND 표에서값찾기FC 87 LIFO 표에서마지막값을출력FC 88 TBL 표연산실행FC 89 TBL_WRD 표에서값복사FC 90 WSR 시프트레지스터에데이터저장FC 91 WRD_TBL 논리적으로값을표요소와결합하고저장FC 92 SHRB 비트를시프트레지스터로자리이동FC 93 SEG 7 세그먼트디스플레이에대한비트유형만들기FC 94 ATH ASCII 문자열을 16진수로전환FC 95 HTA 16진수를 ASCII 문자열로전환FC 96 ENCO 지정된비트를워드로설정FC 97 DECO 가장중요하지않은비트번호읽기FC 98 BCDCPL 10의보수만들기FC 99 BITSUM 세트비트의숫자세기

Page 132: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Using LibrariesPage 20

FC 100-FC 101 (RSETI) 함수는 MCR 비트가 “1”이면 FC 101에대해지정된범위의바이트에서비트의신호상태를 “0”이나 “1”로리셋합니다. MCR 비트가 “0”이면그범위에서바이트의신호상태는변경되지않습니다.

FC 102 표준편차 (DEV) 함수는표 (TBL)에저장된일련의값에서표준편차를계산합니다. 결과는 OUT에저장됩니다. 표준편차는다음공식에따라계산됩니다.

표준편차 = (N * SqSum ) - Sum 2N * (N - 1)

조건

• Sum = TBL의값의합계 N = TBL의값의수• SqSum = TBL모든값의제곱의합

FC 103 상관관계의데이터표 (CDT) 함수는기존의표에있는입력값 (IN)을입력값(IN_TBL)과비교하고입력값보다크거나같은첫번째값을찾습니다.찾은값의인덱스를이용해서값은출력값의표 (OUT_TBL)에서각출력값(OUT)에복사됩니다.

FC 104-FC 105 이함수는아날로그입력에서아날로그값의크기를조정하거나아날로그출력으로아날로그값의크기를조정하기위해사용됩니다.

FB 80- FB 86 전자설명서를참조합니다.

Date: 10/18/99File: PRO2_07e.20

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

라이브러리: TI - S7 전환블록 (2부)

블록 기호 설명

FC 100 RSETI 출력영역즉시리셋FC 101 SETI 출력영역즉시설정FC 102 DEV 표준편차FC 103 CDT 상관관계에있는데이터표FC 104 TBL_TBL 표논리연산FC 105 SCALE 값조정FC 106 UNSCALE 값조정해제FB 80 LEAD_LAG 리드/래그알고리즘FB 81 DCAT 이산적제어인터럽트FB 82 MCAT 모터제어인터럽트FB 83 IMC 인덱스매트릭스비교FB 84 SMC 매트릭스스캐너FB 85 DRUM DRUM (시퀀스프로세서)FB 86 PACK 표데이터수집/분산

Page 133: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Diagnosing ErrorsPage 1

목차 페이지

비동기오류처리 ……....................................................................................................... 2오류조직블록처리 …………......................................................................................... 3비동기오류 OB의보기 ………………....................................................................................... 4동기오류처리 ......................................................................................................... 5프로그래밍오류 OB121에대한시작정보 ............................................................................ 6액세스오류 OB122에대한시작정보 .............................................................................. 7 동기오류마스크 ....................................................................................................... 8동기오류의마스크를위한 SFC 36 ..................................................................................... 9프로그래밍오류필터의구조 .................................................................................... 10액세스오류필터의구조 .............................................................................................. 11동기오류의마스크를해제하기위한 SFC 37 ................................................................................ 12오류레지스터를읽기위한 SFC 38 ................................................................................. 13 보기: 데이터블록테스트 ....................................................................................................... 14연습 8.1: FC43에서오류처리 ........................................................................................... 15

동기및비동기오류처리

Page 134: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Diagnosing ErrorsPage 2

소개 슬라이드는비동기오류이벤트의목록을보여줍니다. 이들오류는특정프로그램위치에할당되지않습니다.

시간오류 스캔순환감시시간은기본설정이 150 ms입니다. 시스템은순환이지속시간이150 ms보다길면시간오류를인식합니다. 오류가같은순환에서 2번일어나면CPU는 Stop 상태가됩니다.

전원공급오류 백업배터리가고장났거나없을때발생하며또한 S7-400의경우중앙장치또는확장장치에서 24 V 공급이정지했을때발생합니다. 다른종류의오류와는달리기존의오류 OB가없는 CPU는 Run 상태에남아있게되며빨간색오류 LED가 CPU에켜집니다.

진단인터럽트 예를들어아날로그모듈과같은진단가능모듈은오류가발생할때진단인터럽트를발생시킬수있습니다. 진단인터럽트를사용할수있게하는그런방식으로모듈에파라미터를할당해야합니다.

제거/삽입 이인터럽트는 S7-400 PLC 시스템에서모듈을삽입하거나제거함으로써인터럽트 발생합니다. 모듈을삽입할때운영체제는삽입된모듈형식이정확한지를

확인합니다. 이함수는프로그램순환중에모듈의제거및삽입을가능하게합니다.

CPU-H/W 오류 S7-400의경우 K-Bus의 MPI 인터페이스에서또는분산 I/O에대한인터페이스모듈에서오류가인식됩니다.

프로그램시퀀스 이오류는프로세스이미지를갱신할때 I/O 액세스오류에서발생하거나예를오류 들어파라미터화되는타임오브데이인터럽트에대한 OB가없어서발생합니다.

랙정지 이오류는네트워크로연결된 PLC 시스템의하위네트인랙이나분산 I/O의스테이션이정지될때인식됩니다.

통신오류 공유데이터를받을때잘못된메시지식별자가 S7-300에있거나데이터블록이상태정보를저장하기에너무짧습니다. S7-400의경우예를들어동기화메시지를보낼수없다든가하는추가원인이있습니다.

Date: 10/18/99File: PRO2_08e.2

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

비동기오류처리

비동기오류는특정프로그램위치에할당되지않습니다. 즉, 비동기오류는프로그램프로세싱에대해비동기적으로나타납니다.

1)S7-400에만적용

2) 오류 OB에상관없이정지하지않음

오류 종류 보기 오류 OB

시간 오류 Max. scan time exceeded OB 80

전원 공급 오류 Failure of the backup battery OB 81

진단 인터럽트 Wire break at the input of a diagnostic capable module

OB 82

제거/삽입 모듈 인터럽트 Removing a signal module in S7-400 while in running mode

OB 83 1)

CPU 하드웨어 오류 Faulty signal level on the MPI interface OB 84 1)

프로그램 시퀀스 오류 Error in the updating of the process image (defective module)

OB 85

랙 정지 Power supply failure in the distributed rack

OB 86 1)

통신 오류 Incorrect message identifier OB 87

Page 135: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Diagnosing ErrorsPage 3

시작정보처리 오류조직블록의사용에대한규칙에주의합니다.모든조직블록의경우임시변수가선언부에서선언됩니다. 운영체제는시작정보를이변수에저장합니다. 운영체제는블록이호출된이유와같은추가정보를시작정보에저장합니다. 한예로서 OB 81의시작정보를참고합니다.

• B#16#21: 중앙랙의한개이상의백억배터리가비어있음 (BATTF) • B#16#22: 중앙랙의백업전압이없음 (BAF). • B#16#23: 중앙랙에서 24V 공급이정지/제거됨• B#16#31: 확장랙의한개이상의백업배터리가비어있음• B#16#32: 확장랙의한개에백업전압이없음• B#16#33: 확장랙에서 24V 공급이정지됨

Date: 10/18/99File: PRO2_08e.3

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

오류조직블록처리

오류가날때 CPU가정지하지않도록하기위해빈오류조직블록을전송합니다.오류 OB에원하는반응을프로그램하고필요하다면오류 OB를실행한후시스템함수 SFC 46으로 Stop 상태를요구합니다.추가오류식별자는프로그램에서평가될수있는오류조직블록의시작정보에저장됩니다. 오류조직블록에대한설명은온라인도움말이나시스템및표준함수설명서에나와있습니다. CPU가지원하지않는오류 OB의전송은오류메시지로거부됩니다.

Page 136: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Diagnosing ErrorsPage 4

작업정의 배터리고장이나면운영콘솔에오류표시가나타나야합니다. 배터리를교체한후그표시는자동으로꺼져야합니다.

설명 예를들어배터리고장과같은전원공급오류의경우운영체제가오류조직블록을한번호출합니다. 오류가제거된후 OB81을한번더호출합니다.프로그램보기에서배터리고장이있었는지를결정하기위해 OB81_FLT_ID 변수를평가합니다. 이경우변수는값 22H를포함합니다. 비교가완료되고비트메모리 M 81.1이발생됩니다. 오류표시는배터리가고장날때 (들어오는이벤트) 시작되어서오류가제거된후 (나가는이벤트) 해제됩니다. 다음식별자는변수 OB81_EV_CLASS에있습니다.• B#16#39들어오는이벤트• B#16#38나가는이벤트보조메모리표시 M 81.0의설정과리셋은이들변수의평가를통해이루어집니다.순환프로그램에서보조메모리표시 M81.0은점멸시계메모리에링크되어출력을할당받을수있습니다. 출력은배터리가비어있거나제거되어있는동안점멸합니다.

Date: 10/18/99File: PRO2_08e.4

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

비동기오류 OB의보기

OB81: 오류 OB: 전원공급정지

네트워크 1: 배터리고장, 들어오는이벤트

L #OB81_FLT_ID // 오류식별자로드L B#16#22 // 식별자: CR에서배터리고장==I= M 81.1 // 보조메모리표시설정L #OB81_EV_CLASS // 식별자: 나가는, 들어오는L B#16#39 // 식별자: 들어오는이벤트==I= M 81.2 // 보조메모리표시들어오는이벤트A M 81.1 // 배터리고장A M 81.2 // 들어오는이벤트S M 81.0 // 오류에대한보조메모리표시설정

// 표시

네트워크 2: 배터리가정상일때보조메모리표시리셋

L #OB81_EV_CLASS // 식별자: 들어오는, 나가는L B#16#38 // 식별자: 나가는==IR M 81.0 // 보조메모리표시리셋

Page 137: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Diagnosing ErrorsPage 5

동기오류 CPU의운영체제는오류가프로그램프로세싱과즉시연결되어발생하는동기오류를만듭니다. OB121은프로그래밍오류로호출됩니다. OB122는액세스오류로호출됩니다. 동기오류 OB가 CPU에로드되지않으면 CPU는동기오류가발생할때 STOP 모드로전환합니다.동기오류 OB는오류가발생하는블록과같은우선순위를가집니다. 그때문에인터럽트된블록의레지스터는동기오류 OB에서액세스되고동기오류 OB의프로그램도또한 (필요하다면변경된내용을가지는) 레지스터를인터럽트된블록으로반환할수있습니다.

동기오류마스크 S7은다음 SFC를가지며이 SFC를이용해프로그램이처리되는동안 OB121 시작이벤트를마스크하거나마스크해제할수있습니다.• SFC36 "MSK_FLT": 특정오류코드를마스크

• SFC37 "DMSK_FLT": SFC36으로마스크된오류코드의마스크를해제• SFC38 "READ_ERR": 오류레지스터읽음

Date: 10/18/99File: PRO2_08e.5

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

동기오류처리

동기오류는사용자프로그램의한위치에직접할당됩니다.산술인스트럭션에서의오류 (과잉, 적절하지않은 REAL 숫자)

상태비트설정

STL 인스트럭션을프로세싱할때의오류 (동기오류)

동기오류 OB의호출

오류 종류 보기 오류 OB

프로그래밍 오류 Called block does not exist in the CPU

OB 121

액세스 오류 Direct access on a defective or not existing module

OB 122

Page 138: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Diagnosing ErrorsPage 6

오류코드 B#16#21: BCD 전환오류. 변수 OB121_FLT_REG는관련레지스터에대한(OB121_SW_FLT) 식별자를포함합니다.

B#16#22: 읽기중범위길이오류B#16#23: 쓰기중범위길이오류B#16#28: 0이아닌비트어드레스를가지는 BYTE, WORD, DWORD에대한

간접읽기액세스 (읽기중정렬이잘못됨)B#16#29: 0이아닌비트어드레스를가지는 BYTE, WORD, DWORD에대한

간접쓰기액세스 (쓰기중정렬이잘못됨)이경우에 OB121_FLT_REG는잘못된바이트어드레스를포함하며OB121_RESERVED_1은액세스의형식과메모리영역을포함합니다. 비트 4에서 7까지 (액세스형식): 비트 0에서 3까지 (메모리영역)0: 비트액세스 0: I/O 영역 4: 공유 DB 1: 바이트액세스 1: PII 5: 인스턴스 DB 2: 워드액세스 2: PIQ 6: 자체로컬데이터3: 더블워드액세스 3: 비트메모리 7: 호출자의로컬데이터B#16#24: 읽기중범위오류B#16#25: 쓰기중범위오류OB121_FLT_REG는식별자 B#16#86: own local data area를포함합니다.B#16#26: 타이머번호오류 (OB121_FLT_REG의숫자가적절하지않음) B#16#27: 카운터번호오류 (OB121_FLT_REG의숫자가적절하지않음)B#16#30: 쓰기보호된공유 DB에대한쓰기액세스 (OB121_FLT_REG의숫자) B#16#31: 쓰기보호된인스턴스 DB에대한쓰기액세스 (OB121_FLT_REG의

숫자) B#16#32: 공유 DB에대한액세스에서번호오류 (OB121_FLT_REG의숫자) B#16#33: 인스턴스 DB에대한액세스에서번호오류 (OB121_FLT_REG의

숫자) B#16# 34: FC 호출에서번호오류 (OB121_FLT_REG의숫자) B#16#35: FB 호출에서번호오류 (OB121_FLT_REG의숫자) B#16#3A: 로드되지않은 DB에대한액세스 (OB121_FLT_REG의숫자) B#16#3C: 로드되지않은 FC에대한액세스 (OB121_FLT_REG의숫자) B#16#3D: 로드되지않은 SFC에대한액세스 (OB121_FLT_REG의숫자) B#16#3E: 로드되지않은 FB에대한액세스 (OB121_FLT_REG의숫자) B#16#3F: 로드되지않은 SFB에대한액세스 (OB121_FLT_REG의숫자)

Date: 10/18/99File: PRO2_08e.6

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

프로그래밍오류 OB121에대한시작정보변수 이름 데이터 형 설명, 할당

OB121_EV_CLASS BYTE B#16#25=프로그램 오류 OB121 호출 OB121_SW_FLT BYTE 오류 코드 (텍스트 참고) OB121_PRIORITY BYTE 오류가 발생한 우선 순위 클래스 OB121_OB_NUMBR BYTE OB 번호 (B#16#79) OB121_BLK_TYPE BYTE 인터럽트 된 블록의 형식 (S7-400)

OB: B#16#88, DB: B#16#8A, FB: B#16#8E, FC: B#16#8C

OB121_RESERVED_1 BYTE 오류 코드에 추가 (텍스트 참고) OB121_FLT_REG WORD OB121: 오류 소스 OB121_BLK_NUM WORD 오류가 발생한 블록의 번호 OB121_PRG_ADDR WORD 오류가 발생한 블록에서의 오류 어드레스(S7-400)

OB121_DATE_TIME DT 프로그래밍 오류가 발생한 시점 기록

Page 139: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Diagnosing ErrorsPage 7

오류코드 변수 OB122_SW_FLT는다음의미를가집니다.B#16#42 S7-300: I/O 읽기액세스오류

S7-400: 오류발생후첫번째읽기액세스B#16#43: S7-300: I/O 쓰기액세스오류

S7-400: 오류발생후첫번째쓰기액세스B#16#44: Only for S7-400: 오류발생후 n번째 (n>1) 읽기액세스에서오류B#16#45: Only for S7-400: 오류발생후 n번째 (n>1) 쓰기액세스에서오류

OB122_MEM_AREA 변수 OB122_MEM_AREA는액세스의형식과메모리영역에대한정보를포함합니다.비트 4에서 7은액세스의형식0: 비트액세스1: 바이트액세스2: 워드액세스3: 더블워드액세스비트 0에서 3은메모리영역0: I/O 영역1: 프로세스이미지입력표2: 프로세스이미지출력표

Date: 10/18/99File: PRO2_08e.7

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

액세스오류 OB122에대한시작정보

Variable Name Data Type Description, Assignment

OB122_EV_CLASS BYTE B#16#29=Call Access Error

OB122_SW_FLT BYTE Error Code (Possible Values: B#16#42, B#16#43, B#16#44,B#16#45)

OB122_PRIORITY BYTE Priority class in which the error occurred

OB122_OB_NUMBR BYTE OB Number (B#16#80)

OB122_BLK_TYPE BYTE Type of interrupted block (only S7-400)OB: B#16#88, DB: B#16#8A, FB: B#16#8E, FC: B#16#8C

OB122_MEM_AREA BYTE Addition to error code (see text)

OB122_FLT_REG WORD OB122: Operand address at which the error occurred

OB122_BLK_NUM WORD Number of block in which the error occurred

OB122_PRG_ADDR WORD Error address in the error causing block (only S7-400)

OB122_DATE_TIME DT Recording point in time of programming error

Page 140: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Diagnosing ErrorsPage 8

동기오류 OB의 동기오류 OB에의한동기오류이벤트의처리는많은단점을가집니다.단점

• 적합한오류처리의경우동기오류를발생할수있는인스트럭션을가지는모든블록에대해동기오류 OB에서해당오류평가를실행해야합니다.따라서사용자프로그램에서오류가발생한장소를찾아내고상황에맞게반응하기위해동기오류 OB에서상당한작업을수행해야합니다.

• 기존블록에서변경사항이있으면동기오류 OB에서도대응하는변경이이루어져야합니다.

• 동기오류 OB에서해당사항을수정하지않으면블록은사용자프로그램에서통합될수없습니다.

동기오류 OB에 S7은 “Masking Synchronous Errors“함수를이용해서프로세스관리및관련대한대안 오류처리가같은블록에설치될수있게하는메카니즘을제공합니다.

예를들어이메카니즘은다음단계를통해만들어집니다.1. “중요한”인스트럭션 (예: DB 열기또는길이를모르는 DB에대한액세스)을실행하기전에해당동기오류가 SFC 36 MSK_FLT에의해마스크될수있습니다.인스트럭션이실행되지못하면동기오류 OB는호출되지않습니다.

2. 중요한인스트럭션을실행한후사용자는 SFC 38 READ_ERR에의해오류가중요한섹션에서발생했는지여부를확인할수있습니다.

3. 활동을결론지을때이전에마스크된동기오류의마스크를해제할수있으며따라서동기오류 DB에대한호출이다시허용됩니다.

Date: 10/18/99File: PRO2_08e.8

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

동기오류마스크

동기오류 OB의단점:프로세스관리및오류처리를위한코드가 2개이상의블록에분산이후변경또는유지보수에서의문제점

장점:프로세스관리및오류처리를위한코드가같은블록에있음

동기오류마스크:“위험한”인스트럭션사용이전:SFC 36 MSK_FLT: 동기오류마스크(OB12x-호출금지)“위험한”인스트럭션실행오류가발생했는지여부평가SFC 38 READ_ERR: 오류레지스터읽음OB12x-호출다시허용:SFC 37 DMSK_FLT: 동기오류마스크해제

Page 141: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Diagnosing ErrorsPage 9

동기오류마스크 SFC 36 MSK_FLT의경우오류필터를통해동기오류 OB의호출을금지합니다. 신호상태 “1”을이용해오류필터에서 OB가호출되지않는동기오류종류를구분합니다 (동기오류가 “마스크”됩니다).지정된마스크는운영체제에저장된마스크 (필터비트의 OR 논리연산)에첨가되어관리됩니다. SFC36은반환값으로입력파라미터에서지정된마스크의경우 1 비트이상에대한마스크가이미존재했는지의여부를표시합니다 (W#16#0001).SFC36은출력파라미터를이용해신호상태가 “1”인현재마스크된모든이벤트를전달합니다.

CPU 반응 프로그래밍또는액세스오류가마스크될때 CPU는이런종류의오류에다음과같이반응합니다.1. 프로그래밍또는액세스오류에대해오류 OB가호출되지않습니다.2. 오류이벤트는오류레지스터에입력됩니다. 오류레지스터는 SFC38

READ_ERR을이용해읽을수있습니다.3. 운영체제는마스크에관계없이진단버퍼에동기오류를입력합니다.

마스크범위 마스크는 SFC 36이호출되는우선순위클래스에대해서만유효합니다. 예를들어주프로그램에서동기오류 OB의호출을금지한다고해도오류가인터럽트프로그램에서발생하면동기오류 OB가호출됩니다.

Date: 10/18/99File: PRO2_08e.9

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

동기오류의마스크를위한 SFC 36

"MSK_FLT"EN ENO

PRGFLT_SET_MASK

ACCFLT_SET_MASK

RET_VAL ??.?

PRGFLT_MASKED ??.?

ACCFLT_MASKED ??.?

??.?

??.?

파라미터 선언 데이터형 메모리영역 설명

PRGFLT_SET_MASK INPUT DWORD I, Q, M, D, L, Const. 새(추가) 프로그래밍오류필터ACCFLT_SET_MASK INPUT BYTE I, Q, M, D, L, Const. 새추가액세스오류필터

RET_VAL OUTPUT INT I, Q, M, D, L SFC 반환값,W#16#0001: 새필터와기존필터병행

PRGFLT_MASKED OUTPUT DWORD I, Q, M, D, L 완전한프로그래밍오류필터

ACCFLT_MASKED OUTPUT DWORD I, Q, M, D, L 완전한액세스오류필터

Page 142: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Diagnosing ErrorsPage 10

프로그래밍 오류필터를이용해동기오류처리를위한시스템함수를제어합니다. 오류필터 프로그래밍오류필터에는일어날수있는모든프로그래밍오류에대한비트가

있습니다. 오류필터를지정할때마스크, 마스크해제, 또는검사하고싶은동기오류비트를설정합니다.

Date: 10/18/99File: PRO2_08e.10

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

프로그래밍오류필터의구조

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 031 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

BCD 전환오류읽기범위길이오류

쓰기범위읽기오류

읽기범위오류

쓰기범위오류

타이머번호오류

카운터번호오류

잘못된읽기정렬

잘못된쓰기정렬의미없음

쓰기오류 DB쓰기오류인스턴스 DB

블록번호오류 DB블록번호오류 DI

블록번호오류 FC블록번호오류 FB

DB가로드되지않음

FC가로드되지않음

FB가로드되지않음

참고: 출력파라미터 PRGFLT_MASKED의해당비트는다음과같이설정됩니다.값 = "1": 오류가마스크됨값 = "0": 오류가마스크되지않음해당비트가값 “1”을가지지않음

Page 143: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Diagnosing ErrorsPage 11

액세스오류필터 S7-400 CPU는 2가지종류의 I/O 액세스오류, 즉존재하지않는모듈에대한액세스와존재하는것으로입력된모듈에대한잘못된액세스를구분합니다. 모듈이작동중에실패하면프로그램이모듈에액세스할때타임아웃 (QVZ)이발생합니다. 동시에모듈은 “존재하지않는”것으로입력되어이후에액세스가일어날때마다 I/O 액세스오류 (PZF)가표시됩니다.CPU는또한 I/O 영역을통해직접적으로또는프로세스이미지를통해간접적으로존재하지않는모듈이액세스될때 I/O 액세스오류를표시합니다.

Date: 10/18/99File: PRO2_08e.11

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

액세스오류필터의구조

31 30 29 . . . 7 6 5 4 3 2 1 0

읽기에서 I/O 액세스오류

S7-400 전용:존재하지않는모듈의읽기또는반복된액세스에서의 I/O 액세스오류

의미없음

쓰기에서 I/O 액세스오류

S7-400 전용:존재하지않는모듈에쓰기또는반복된액세스에서의 I/O 액세스오류

. . .

참고: 출력파라미터 ACCFLT_MASKED의해당비트는다음과같이설정됩니다. 값 = "1": 오류가마스크됨값 = "0": 오류가마스크되지않음해당비트가값 “1”을가지지않음

Page 144: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Diagnosing ErrorsPage 12

동기오류 오류필터를통해 SFC37 DMSK_FLT 시스템함수는동기오류 OB의호출을마스크해제 다시허용합니다. 신호상태 “1”을이용해오류필터에서 OB가다시호출되는

동기오류종류를구분합니다 (동기오류의 “마스크가해제”됨).

오류레지스터에있는지정된마스크해제의해당항목은삭제됩니다.반환값을이용해 SFC37은입력파라미터에서지정된마스크해제의경우 1 비트이상에대해 (저장된) 마스크가존재하지않을때W#16#0001을표시합니다.SFC37은출력파라미터를이용해신호상태가 “1”인현재마스크된모든이벤트를전달합니다. 마스크가해제된동기오류가발생하면해당 OB가다시호출되고이벤트가오류레지스터에입력됩니다. 현재우선순위클래스에대해해당 OB를다시호출할수있습니다.

Date: 10/18/99File: PRO2_08e.12

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

동기오류의마스크를해제하기위한 SFC 37

"DMSK_FLT"EN ENO

PRGFLT_RESET_MASK

ACCFLT_RESET_MASK

RET_VAL ??.?

PRGFLT_MASKED ??.?

ACCFLT_MASKED ??.?

??.?

??.?

파라미터 선언 데이터형 메모리영역 설명

PRGFLT_RESET_MASK INPUT DWORD I, Q, M, D, L, Const. 리셋을위한프로그래밍오류필터

ACCFLT_RESET_MASK INPUT BYTE I, Q, M, D, L, Const. 리셋을위한액세스오류필터

RET_VAL OUTPUT INT I, Q, M, D, L SFC 반환값,W#16#0001: 새필터는저장된필터에서설정되지않은비트를포함

PRGFLT_MASKED OUTPUT DWORD I, Q, M, D, L 남은프로그래밍오류필터

ACCFLT_MASKED OUTPUT DWORD I, Q, M, D, L 남은액세스오류필터

Page 145: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Diagnosing ErrorsPage 13

오류레지스터읽기 SFC38 READ_ERR 시스템함수는오류레지스터를읽습니다.신호상태 “1”을이용해오류필터에서항목을읽고싶은동기오류종류를구분합니다.반환값을이용해 SFC38은입력파라미터에서지정된선택의경우 1 비트이상에대해 (저장된) 마스크가존재하지않을때W#16#0001를표시합니다.SFC38은이벤트가발생하고오류레지스터에서이들이벤트를검사하여삭제할때출력파라미터에신호상태가 “1”인선택된이벤트를반환합니다. 세트비트는마스크된관련동기오류가한번이상발생했음을의미합니다.현재우선순위클래스에서발생한동기오류가표시됩니다.

Date: 10/18/99File: PRO2_08e.13

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

오류레지스터를읽기위한 SFC 38

"READ_ERR"EN ENO

PRGFLT_QUERRY

ACCFLT_QUERRY

RET_VAL ??.?

PRGFLT_CLR ??.?

ACCFLT_CLR ??.?

??.?

??.?

파라미터 선언 데이터형 메모리영역 설명

PRGFLT_QUERRY INPUT DWORD I, Q, M, D, L, Const. 검사를위한프로그래밍오류필터

ACCFLT_QUERRY INPUT BYTE I, Q, M, D, L, Const. 검사를위한액세스오류필터

RET_VAL OUTPUT INT I, Q, M, D, L SFC 반환값,W#16#0001: 검사필터는 (저장된필터에서)설정되지않는비트포함

PRGFLT_CLR OUTPUT DWORD I, Q, M, D, L 오류메시지를가지는프로그래밍오류필터

ACCFLT_CLR OUTPUT DWORD I, Q, M, D, L 오류메시지를가지는액세스오류필터

Page 146: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Diagnosing ErrorsPage 14

오류레지스터읽기 SFC38 READ_ERR 시스템함수는오류레지스터를읽습니다.신호상태 “1”을이용해오류필터에서항목을읽고싶은동기오류종류를구분합니다.반환값을이용해 SFC38은입력파라미터에서지정된선택의경우 1 비트이상에대해 (저장된) 마스크가존재하지않을때W#16#0001을표시합니다.SFC38은이벤트가발생하고오류레지스터에서이들이벤트를검사하여삭제할때출력파라미터에신호상태가 “1”인선택된이벤트를반환합니다. 세트비트는마스크된관련동기오류가한번이상발생했음을의미합니다.현재우선순위에서발생한동기오류가표시됩니다.

Date: 10/18/99File: PRO2_08e.14

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

보기: 데이터블록테스트네트워크 1: 마스크, 테스트, 마스크 해제// "DB does not exist" 마스크

CALL SFC 36(PRGFLT_SET_MASK := DW#16#4000000, // 식별자: DB does not existACCFLT_SET_MASK := DW#16#0, // 액세스 오류에 대해 마스크하지 않음RET_VAL := SFC36Error,PRGFLT_MASKED := Prog36Mask,ACCFLT_MASKED := Zugr36Mask);

// 호출 테스트OPN DB[DB_NO];

// 프로그램 오류 검사CALL SFC 38(PRGFLT_QUERRY := DW#16#4000000, // 식별자: DB does not existACCFLT_QUERRY := DW#16#0, // 액세스 오류에 대해 마스크하지 않음RET_VAL := SFC38Error,PRGFLT_MASKED := Prog38Mask,ACCFLT_MASKED := Zugr38Mask);

// 결과 평과L Prog38MaskL DW#16#4000000==D= DB_NOT_THERE // 보조 변수 DB not there 설정

// "DB does not exist“ 마스크 해제CALL SFC 37(

PRGFLT_RESET_MASK := DW#16#4000000, // 식별자: DB does not existACCFLT_RESET_MASK := DW#16#0, // 액세스 오류에 대해 마스크하지 않음RET_VAL := SFC37ERROR,PRGFLT_MASKED := Prog37Mask,ACCFLT_MASKED := Zugr37Mask);

Page 147: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Diagnosing ErrorsPage 15

개요 연습 4.3에서 REAL 숫자의 ARRAY에서합계와중간값을결정하는 FC43을만듭니다. 지금까지기본오류처리 (데이터형검사)만이이 FC에서수행되었습니다.오류처리는 FC43이 “충돌이전혀없게”, 즉파라미터할당이잘못되었을때도동기오류가발생하지않는방식으로확장됩니다.더욱이추가출력파라미터 RET_VAL을이용해 FC43은오류종류에대한정보를제공합니다.

목적 FC43에서다음오류처리를통합합니다.• REAL이아닌데이터형이전달되면 FC43은오류코드 –1로종료됩니다.• 잘못된 DB 번호가전달되면 (예: 허용범위밖의숫자또는 DB가존재하지않음) FC43은오류코드 –2로종료됩니다.

• 루프안에서존재하지않는어드레스에대한액세스가있으면 (범위또는범위길이오류) FC43은오류코드 –4로종료됩니다.

• 모든오류에서 FC43은 BR-비트를 0으로설정하고출력파라미터 Sum과Mean Value에잘못된 REAL 숫자를반환합니다.

절차 1. FC43에출력파라미터 RET_VAL (오류코드)을추가합니다.2. FC43에서해당오류처리를수행합니다. 3. OB1에서 FC43 호출을프로그램합니다. 4. 참여블록을 CPU에다운로드하고결과를테스트합니다.

질문? 일어날수있는동기오류중어떤것이고려되지않았습니까?

Date: 10/18/99File: PRO2_08e.15

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

연습 8.1: FC43에서오류처리

FC 43EN ENO

Measured values

Sum

Mean value

Decl. Name Typein Measured values ANYout RET_VAL INTout Sum REALout Mean value REAL

RET_VALError Code

Cause Error CodeEverything O. K. 0Data type<>REAL -1DB does not exist -2Range length errror -4

Page 148: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Program Generation with the Text EditorPage 1

목차 페이지

프로젝트구조에서의 S7 프로그램 .......................................................................................... 2입력및컴파일개념 ……............................................................................................... 3입력및컴파일개념 ................................................................................................................. 4텍스트편집기시작 …………………….............................................................................. 5블록템플릿, 블록및소스파일삽입 ………….................................................................... 6일반적인입력규칙및구조 ............................................................................................... 7논리블록에대한구문 ............................................................................................................ 8데이터블록에대한구문 ............................................................................................................ 9변수선언규칙 ………………................................................................................................ 10블록특성할당 …………….................................................................................................... 11연습 9.1: 소스파일만들기 ………......................................................................................... 12연습 9.2: 완성된부분세기 …………………............................................................................... 13

Date: 10/18/99File: PRO2_09e.1

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

텍스트편집기를사용하여프로그램만들기

“프로그램속성”

ASCII STL

Page 149: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Program Generation with the Text EditorPage 2

Date: 10/18/99File: PRO2_09e.2

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

프로젝트구조에서의 S7 프로그램

프로젝트

S7S7블록

소스

차트컨테이너

기호표

S7 블록: 편집기:- OBs LAD, STL, FBD- FBs LAD, STL, FBD, S7-Graph- FCs LAD, STL, FBD- DBs DB 편집기

- CFC 차트

S7 프로그램

S7 소스:- STL Source- S7-SCL Source- S7-HiGraph Source- S7-Graph Source

연결표

모듈 (S7-CPU)

스테이션 (S7-300)

S7-프로그램

개요 새 S7 프로그램을만들수있으려면우선 SIMATIC 관리자에서프로젝트를만들어야합니다. 그후에 S7 프로그램컨테이너를설정하는 2가지방법이있습니다. • 모듈과는별도의방법: 이경우 S7-프로그램에대한프로그램컨테이너를프로젝트루트아래에직접삽입해야합니다. 거기에서만들어지는프로그램은이후에프로그램가능한모듈에할당될수있습니다.

• 모듈에의존하는방법: 이경우프로젝트는프로그램가능한모듈 (CPU)을가지는한개이상의 SIMATIC 300/400 스테이션을포함해야합니다. S7프로그램컨테이너는그후프로그램가능한모듈아래에자동적으로삽입됩니다.

사용자프로그램에서전역기호를사용하려면미리기호표에서해당식별자와절대어드레스를할당해야합니다.

블록, 소스및차트 S7 프로그램을사용자프로그램 (블록)이나소스또는차트로저장할수있습니다.소스와차트는 S7 프로그래밍에서블록을만들기위한기초로서만사용됩니다. 블록만이 S7-CPU에다운로드될수있습니다.블록을만들것인지또는소스나차트를만들것인지여부는선택된프로그래밍언어나언어편집기에달려있습니다.

사용자프로그램 사용자프로그램의블록만이 S7-CPU에다운로드될수있습니다. 사용자프로그램은범위에따라조직블록 (OB), 함수 (FC), 함수블록 (FB) 및데이터블록 (DB)을포함합니다. 만들어진사용자정의데이터형식 (UDT)은단지프로그래밍을간소화하며,S7-CPU에다운로드될수없습니다. 변수표 (VAT)의경우에도마찬가지이며, 변수표에는함수 Monitor/Modify Variables에대한어드레스가저장됩니다.

Page 150: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Program Generation with the Text EditorPage 3

Date: 10/18/99File: PRO2_09e.3

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

입력및컴파일개념

Blocks

User ProgramASCII Source File

FUNCTION_BLOCK FB21

AUTHOR: Burger FAMILY: plant1 NAME: fb_mot21 VERSION: 01.01

VAR_INPUT IN1: INT:=123;

END_VAR

VAR_OUTPUT OUT1: INT:=123;

END_VAR

VAR_IN_OUT IN_OUT1: INT:=123;

END_VAR

VAR VAR1: INT:=123;

END_VAR..

Compile

Generate

Symbol Table

컴파일및만들기에서읽기액세스

IncrementalEditing

Open

Save

편집에서읽기액세스

Source OrientedEditing

SymbolEditor

입력방법 프로그램을만들기위해선택한프로그래밍언어에따라점증적으로또는소스지향적으로프로그램을입력할수있습니다.

• 점증적입력 (STL, LAD, FBD, S7-Graph, S7-HiGraph, CFC)모든라인이나요소는입력되면즉시구문오류검사를받습니다. 존재할수있는입력오류가표시되면 (빨간색으로표시) 입력사항을저장하기전에이를정정해야합니다. 구문정정입력은자동적으로컴파일되어검은색으로표시됩니다. 점증식입력의경우사용된기호는이미기호표에정의되어있어야하며그렇지않으면입력은빨간색으로표시되고해당오류메시지가상태표시줄에표시됩니다.

• 소스지향적입력 (STL, S7-SCL)소스지향적입력의경우프로그램이나블록은텍스트파일에서편집되고그후텍스트파일이컴파일되어오류는관련컴파일러에의한컴파일과정에서표시됩니다.소스지향적입력에서기호는컴파일과정에서만기호표에서정의되어야합니다. 소스파일은내보내서원하는도구로처리한후다시가져올수있는장점이있습니다.

소스지향적입력의 • 몇개의블록이한개의소스파일에저장될수있습니다 (그러나블록은장점 호출된블록이호출블록이전에항상놓이는방식으로저장되어야합니다).

• 소스파일은구문오류와함께저장될수있습니다.• 다른편집기로소스파일을만들어서 SIMATIC 관리자에서이파일을가져온후블록으로컴파일할수있습니다.

• 블록보호는 ASCII 모드로만입력될수있습니다.• 중첩된블록호출에서의변경 (예: 블록파라미터의추가)은점증식편집기보다 ASCII 편집기 (예: 찾기/바꾸기)로보다잘처리할수있습니다.

Page 151: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Program Generation with the Text EditorPage 4

SIMATIC 관리자에서 SIMATIC 관리자에서텍스트편집기를시작합니다. 이를위해우선 SIMATIC 시작 관리자에서 S7-프로그램을가지는프로젝트를설정해야합니다. 하드웨어

의존적인프로그램이나하드웨어와는별도의프로그램을만들수있습니다.

텍스트편집기로소스파일만을처리한후이소스파일을블록으로컴파일하고이블록은컨테이너블록에저장됩니다.

소스만들기 새로운소스를처음만들려고하면우선 SIMATIC 관리자에서빈파일을만들어야하며이 SIMATIC 관리자를통해텍스트편집기를엽니다. 편집기를연후거기에서추가소스파일을만들수있습니다.• SIMATIC 관리자에서소스컨테이너를선택하고메뉴명령 Insert New Object

-> STL Source File을이용해파일을삽입합니다. 새소스파일이미리설정된이름으로프로젝트창오른쪽에나타납니다.

• 텍스트편집기그자체에서메뉴명령 File ->New을이용해간단히새파일을간단히만들수있습니다. 다음에나타나는대화상자에서새소스파일의이름을입력합니다.

소스열기 SIMATIC 관리자에서기호를더블클릭하여소스파일을엽니다. 또한메뉴명령Edit -> Open Object를사용하거나도구모음의해당아이콘을통해소스파일을열수도있습니다.

소스만들기 이미존재하는블록을추가로처리하기위해다시소스파일로컴파일할수있습니다. 이작업을하려면텍스트편집기에서메뉴명령 File -> Generate Source을선택합니다.다음에나타나는대화상자에서소스파일을만들고싶은모든블록을선택할수있습니다.

Date: 10/18/99File: PRO2_09e.4

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

텍스트편집기시작

,

Page 152: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Program Generation with the Text EditorPage 5

Date: 10/18/99File: PRO2_09e.5

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

텍스트편집기로만들기프로그램

텍스트편집기 STL에서프로그래밍하는대신통합텍스트편집기에서프로그램을만들어서소스파일을만들수있습니다. 차례로블록을입력합니다 (한개의소스파일에몇개의블록을입력할수도있음). 구문검사는실행되지않습니다.

설정 텍스트편집기에서프로그램을시작하기전에편안하게개인적취향에따라작업을할수있도록설정방법에익숙해져야합니다. 메뉴명령 Options Settings를통해레지스터대화상자를엽니다. 레지스터"편집기”에서소스파일의스크립트 (형식및크기)에대한기본설정을할수있습니다. 인스트럭션라인이표시되는색깔은레지스터 ”LAD/FBD”에서변경됩니다.

Page 153: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Program Generation with the Text EditorPage 6

블록템플릿삽입 OB, FB, FC, DB, 인스턴스 DB, UDT에서의 DB 및 UDT에대한블록템플릿은프로그래밍을보다간단히하기위해편집기에통합됩니다. 블록템플릿은필요한시퀀스에요구되는모든키워드를포함합니다. 선언하고싶지않은선택사항에대한템플릿의경우간단히삭제하면됩니다. 블록템플릿은입력과구문및구조의준수를동시에용이하게합니다.

소스파일에블록템플릿을삽입하려면메뉴명령 Insert -> Block Template -> OB/FB/FC/DB/IDB/ DB from UDT/UDT을선택합니다.

블록삽입 이미만들어진블록의해당소스코드를소스파일에삽입할수있습니다. 이작업을하려면메뉴명령 Insert -> Object -> Block을선택합니다. 다음에나타나는대화상자에서그코드를텍스트로삽입하고자하는블록을선택합니다. 선택된블록에서해당소스파일이내재적으로만들어집니다. 이소스파일의내용은편집이진행중인소스파일에서커서위치뒤에삽입됩니다.

소스파일삽입 소스파일에다른소스파일의내용을삽입할수있습니다. 이작업을하려면메뉴명령 Insert -> Object -> File을선택하고다음에나타나는대화상자에서삽입될파일을선택합니다. 이런방식으로모든텍스트파일의내용이소스파일에삽입될수있습니다.

참고 모든텍스트내용도Windows클립판을통해소스파일로삽입될수있습니다.

Date: 10/18/99File: PRO2_09e.6

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

블록템플릿, 블록및소스파일삽입

편집되는소스파일

Blocktem-plate

Block

File

File

Insert blocktemplate

Insert block

Insert file

Insert file

Generate

Page 154: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Program Generation with the Text EditorPage 7

입력규칙 사용자프로그램을소스파일로만들때다음일반적규칙이적용됩니다.• STL 인스트럭션의구문은점증식 STL 편집기에서와같습니다. 블록호출과배열및구조체의선언에서예외가존재합니다.

• 일반적으로텍스트편집기는대,소문자를가리지않습니다. 변수명은예외입니다. 예를들어변수명 ”Motor_on”과 ”MOTOR_ON”은구별됩니다.문자열 (데이터형 STRING)을입력할때대,소문자도고려해야합니다.

• 모든 STL 인스트럭션과변수선언의끝을세미콜론 (;)으로구분합니다. 한라인에두개이상의인스트럭션을입력할수있습니다.

• 설명을시작할때는 2개의대각선 (//)을사용하고설명을끝낼때는RETURN을사용합니다.

블록시퀀스 블록시퀀스의경우소스파일을만들때다음사항에주의해야합니다.

호출된블록은호출블록이전에놓입니다. 이것은다음의미를가집니다.• 가장자주사용되며다른블록을호출하는 OB1이마지막에옵니다. 반면

OB1에서호출되는블록에의해호출되는블록이호출블록보다이전에와야합니다.

• 사용자정의데이터형 (UDT)은이데이터형이사용되는블록이전에옵니다.

• 할당된사용자정의데이터형 (UDT)을가지는데이터블록이 UDT 이후에옵니다.

• 공유데이터블록은자신들을호출한모든블록이전에옵니다.• 할당된함수블록을가지는데이터블록이함수블록이후에옵니다.

Date: 10/18/99File: PRO2_09e.7

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

일반적인입력규칙및구조

UDT

Shared DB

DB from UDT

FB3

Instance DB to FB3

FC5

OB1

assigned

calls

calls

calls

calls

assigned

소스파일에서의시퀀스

Page 155: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Program Generation with the Text EditorPage 8

Date: 10/18/99File: PRO2_09e.8

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

논리블록에대한구문

설정 키워드 보기블록 지정 (절대 또는 기호적)으로 블록 시작 ORGANIZATION_BLOCK OB 1

FUNCTION_ BLOCK FB 6FUNCTION FC 1 : int

블록 타이틀 (선택 사항) TITLE = Block title블록 설명 (선택 사항) //Block comment블록 등록 정보 (선택 사항) KNOW_HOW_PROTECT

AUTHOR: MüllerFAMILY: MotorsNAME: MotoroneVERSION: 0815

변수 선언부(블록 형식에 따른 선언 형식)

각 선언 형식 종결

VAR_INVAR_OUTVAR_IN_OUTVARVAR_TEMP..END_VAR

네트워크 타이틀과 네트워크 설명이 있는네트워크로 구성되는 인스트럭션 부분

BEGINNETWORKTITLE=first network//..NETWORK..

블록 엔드 END_ ORGANIZATION _BLOCKEND_FUNCTION_BLOCKEND_FUNCTION

규칙 논리블록을입력하는경우다음규칙에주의해야합니다.• 블록시작에서블록형식과블록지정을위한키워드사이에공백을두어야합니다. 기호블록이름을지정할때이이름은인용부호로구분되어로컬변수명과기호표의이름을구분할수있게합니다.

• 함수 (FC)의경우함수형식이또한제공됩니다. 함수형식은기본데이터형이거나복잡한데이터형이될수있으며반환값 (RET_VAL)의데이터형을결정합니다. 값이반환되지않으면 VOID가입력됩니다.

• 네트워크번호의지정은허용되지않습니다.

“CALL”을이용한 명령 CALL을이용하여 FB와 FC를호출하는구문은점증식 STL 편집기에서와블록호출 조금다릅니다. 소스파일에브래킷과함께파라미터를입력합니다. 개별

파라미터는콤마로서로구분됩니다.

보기: CALL FC1 (param1 := I 0.0, param2 := I0.1);

인스트럭션부분의 점증식편집기에서의이후편집에서설명을 1:1로표시할수있도록다음사항에설명 주의해야합니다.

• 블록호출: 소스파일에서형식파라미터에실질파라미터를할당할때형식파라미터의시퀀스가블록의변수선언에있기때문에이시퀀스를유지해야합니다.파라미터의시퀀스는선택사항이지만파라미터에대한설명은소스를블록으로컴파일하는도중전환될수있습니다.

• “OPN”인스트럭션바로뒤에나오는데이터블록에대한액세스인스트럭션의경우블록으로컴파일하는도중인스트럭션설명부분이상실될수있습니다. 이런문제를방지하려면간결한형태 (예: LDB5.DBW20; //Comm.)로프로그램하거나 “NOP”인스트럭션 (예:OPNDB5; //Comment1 NOP 0; L DBW20; //Comment2)으로프로그램합니다.

Page 156: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Program Generation with the Text EditorPage 9

Date: 10/18/99File: PRO2_09e.9

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

데이터블록에대한구문

설정 키워드 보기블록 지정 (절대 또는 기호적)으로 블록시작

DATA_BLOCK DB 26

블록 타이틀 (선택 사항) TITLE = Block title블록 설명 (선택 사항) //Block comment블록 특징 (선택 사항) KNOW_HOW_PROTECT

AUTHOR: MüllerFAMILY: MotorsNAME: MotoroneVERSION: 0815

선언부 - DB에 의존:공유된 데이터 블록:변수 선언(선택적으로 시작 값 지정)

STRUCT....END_STRUCT

UDT의 DB:UDT 지정(절대 또는 기호적)

UDT 16

인스턴스 DBFB 지정(절대 또는 기호적)

FB 20

현재 값을 가지는 인스트럭션 부분 BEGIN....

블록 엔드 END_ DATA _BLOCK

규칙 데이터블록을입력할때다음규칙에주의해야합니다.• DB 0이미리설정됩니다. 따라서이이름으로 DB를만들수없습니다.• 선택사항으로모든또는일부변수에대한현재값을지정할수있습니다.현재값을할당하지않는변수에대해가능하다면초기값이할당되며, 그렇지않은경우데이터형에대한기본값이할당됩니다.

• 현재값에대한할당섹션 (”BEGIN”과 ”END_DATA_BLOCK”사이)에서인스트럭션설명은블록으로컴파일된후점증식편집기에표시되지않습니다. 따라서선언부에서데이터블록에대한설명을쓰기만합니다.

Page 157: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Program Generation with the Text EditorPage 10

Date: 10/18/99File: PRO2_09e.10

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

변수선언규칙

변수종류 논리블록의경우변수의선언종류는자체라인에있는키워드로식별됩니다. 블록종류에따라오직특정선언종류만이허용됩니다.

입력규칙 변수선언을입력할때다음사항에주의해야합니다.• 변수는선언종류의시퀀스에서선언되어야합니다. 따라서한종류의모든변수는함께있습니다.

• 키워드는각경우자체라인에있거나공백으로구분되어있습니다.• 변수명은인스트럭션시작부분에있으며문자로시작해야합니다. 예약된키워드에는대응할수없습니다 (부록 C 참고).

• 데이터형은변수명다음에콜론으로구분되어제공됩니다. 기본또는복잡한데이터형과사용자정의데이터형이허용됩니다.

• 필드 (배열)는키워드 ARRAY로입력됩니다. 또한꺾쇠괄호로묶은차원이나데이터형을지정합니다 (보기참고)

• 구조체의경우변수선언은키워드 STRUCT와 END_STRUCT 사이에옵니다.

• 모든변수선언은세미콜론으로끝납니다.• 설명은 2개의대각선으로선언부와구분됩니다.

선언 종류 키워드 OB FB FC입력 파라미터 VAR_INPUT - yes yes출력 파라미터 VAR_OUTPUT - yes yes입 /출력 파라미터 VAR_IN_OUT - yes yes정적 변수 VAR - yes -임시 변수 VAR_TEMP yes yes yes종료 END_VAR

Page 158: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Program Generation with the Text EditorPage 11

Date: 10/18/99File: PRO2_09e.11

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

블록특성할당

속성 논리 블록

(OB, FB, FC)

데이터 블록 UDT

KNOW_HOW_PROTECT Yes Yes NoAUTHOR Yes Yes NoFAMILY Yes Yes NoNAME Yes Yes NoVERSION Yes Yes NoUNLINKED No Yes NoREAD_ONLY No Yes No

시스템속성 예를들어프로세스진단이나제어시스템설정에대한시스템속성을블록에할당할수있습니다. 블록에대한시스템속성은둥근괄호안에놓이며블록시작, 블록이름및블록설명이후에옵니다.

블록등록정보 블록이름, 패밀리, 버전및저자를키워드를이용해서지정할수있습니다. 다음방법을이용해서이작업을할수있습니다.• 블록등록정보는변수선언부이전에지정됩니다. • 라인의끝에세미콜론이없습니다. (!)

블록보호 키워드 KNOW_HOW_PROTECT를지정함으로써논리블록및데이터블록에대한블록보호를설정할수있습니다.• 점증식 STL 편집기에서컴파일된블록을볼때블록의인스트럭션부분을살펴볼수없습니다.

• 입력, 출력및입/출력파라미터만이블록의변수선언에표시됩니다. 내부변수 VAR과 VAR_TEMP은숨겨져있습니다.

• 컴파일된블록은소스파일에서컴파일될수있지만인스트럭션부분이없는블록으로만컴파일됩니다.

키워드 KNOW_HOW_PROTECT는모든다른블록속성앞에입력되어야합니다.

쓰기보호 소스파일에서데이터블록에대한쓰기보호를설정하여거기에서저장된데이터값이프로그램실행중에덮어쓰기될수없도록할수있습니다. 이런경우키워드 READ_ONLY를입력합니다. 이키워드는선언바로직전에자체라인에있어야합니다.

"링크되지않음" 속성 ”링크되지않음”은데이터블록에서발생할수있습니다. 이속성은 DB가로드메모리에서 CPU의작업메모리로로드되지않음을나타냅니다.

Page 159: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Program Generation with the Text EditorPage 12

Date: 10/18/99File: PRO2_09e.12

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

연습 9.1: 소스파일만들기

Transport

Station_1 Station_2 Station_3

FB10

Data forTransport

Instance DB of FB10

CALL Station_1CALL Station_2CALL Station_3..CALL Transport

DB10...stat Station_1 FB1stat Station_2 FB1stat Station_3 FB1stat Transport FB2...

Datafor Station_1

Datafor Station_2

FB1

FB2

Datafor Station_3

OB1

FUNCTION_BLOCK "Station"TITLE =VERSION : 0.1

VAR_INPUTInitial : BOOL ;Proxy_Switch : BOOL ;Acknowledge : BOOL ;Clock_Bit : BOOL ;

END_VARVAR_OUTPUTLED : BOOL ;Transp_req : BOOL ;

END_VARVAR_IN_OUTConv_busy : BOOL ;

END_VARVARState : STRUCT Busy : BOOL ;Completed : BOOL ;Waiting : BOOL ;END_STRUCT ;Aux_1 : BOOL ;Aux_2 : BOOL ;

END_VARBEGINNETWORKTITLE =Initialization//”Busy” is set with the// initialization

U #Initial; ...

소스파일: "어셈블리라인"

개요 제일먼저소스파일이연습 6.3 “어셈블리라인”의최종프로그램에서만들어집니다. 그후에추가카운트기능이부분전송을위해블록으로도입됩니다.

연습목적 PRO2-프로젝트 (프로그램컨테이너 “Conv”)의컨테이너 “Sources”에서연습6.3의전체사용자프로그램을포함하며오류메시지없이컴파일될수있는소스파일을만듭니다.

절차 1. 제일먼저프로그램컨테이너 “Conv”의 "Blocks"컨테이너에서 STL/LAD/FBD편집기를이용하여원하는블록을엽니다.

2. 그후메뉴명령 File -> Generate Source를선택합니다. 소스파일에대해원하는이름을입력할수있는 "New“대화상자가위에나타납니다.

3. 소스파일의이름(예: 어셈블리라인)을입력하고 "OK“를눌러대화상자를확인합니다. 다음대화상자 "Select STEP7 Blocks“가위에나타납니다.

4. 원하는블록을선택하고 "OK“를눌러확인합니다.참고: "Program structure (XREF) sorted“확인란를선택할수있습니다. 이렇게하면블록은소스파일의올바른시퀀스에자동적으로정렬됩니다.소스파일의만들기가시작됩니다.

5. 텍스트편집기를이용하여만들어진소스파일을엽니다.6. 메뉴명령 File -> Check Consistency를이용하여소스파일이오류없이컴파일될수있는지를테스트합니다.

Page 160: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Program Generation with the Text EditorPage 13

Date: 10/18/99File: PRO2_09e.13

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

연습 9.2: 완성된부분세기

Transport

Station_1 Station_2 Station_3

Finalassembly

연습목적 함수블록 "Transport"에서최종어셈블리로들어오는완성부품을세는카운터를통합합니다. 카운터의등록정보는다음기능을포함해야합니다.• IEC 1131-3을이용하여카운터가상승카운터 (SFB 0 "CTU")에일치하는지를인식합니다.

• 센서의하강에지마다 “CTU”가상태 "Transport_right"에그수를증가시킵니다.

• 카운터는입력신호 ”Initial”로리셋됩니다. • 현재의카운트는추가입력파라미터 #Countvalue (데이터형: INT)를통해호출블록에전달됩니다.

• 카운트값은시뮬레이터의디지털표시에표시됩니다.• 소스파일에서모든프로그램단계를배타적으로수행합니다.• 키워드 KNOW_HOW_PROTECT를통해모든 FB와 DB에블록보호를삽입합니다.

절차 1. StdLib30 (기본제공)에서컨테이너 "Blocks"으로 SFB 0을복사합니다. 3. 소스파일 "Assembly line“을엽니다.2. FB "Transport"에서 INT 데이터형의출력파라미터 #Countervalue는물론데이터형의정적변수카운터 SFB 0을선언합니다.

3. 카운트함수에대한필요한인스트럭션을 FB "Transport"에삽입합니다.4. FB10에서디지털디스플레이에값을표시하기위한인스트럭션을삽입합니다.

5. 변경된소스파일을컴파일합니다.6. 새블록을 CPU에전송하고프로그램을테스트합니다.7. 블록보호를참여하는모든 FB와 DB에삽입합니다.

Page 161: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Basic and Expanded S7 CommunicationPage 1

기본및확장 S7 통신

목차 페이지

SIMATIC의하위네트 .........................................................................................................…… 2SIMATIC에대한통신서비스 ..................................................................................…. 3S7-300/400에대한 S7-통신서비스 .............................................................. ………… 4S7-CPU에대한통신량프레임워크 ……………........................................................…... 5SFC 통신: 개요 ………...........................................................................................…… 6SFC 통신: 블록개요 ……………........................................................................…. 7SFC 통신: X_SEND (SFC 67) 블록 ……………...................................................................….. 8SFC 통신: X_RCV (SFC 66) 블록 ……………......................................................……………… 9SFB 통신: 개요 ……..................................................................................………….. 10SFB 통신: 블록개요 ……………........................................................…………….. 11단방향연결을통한 SFB 통신 ……….........................................................……….. 12양방향연결을통한 SFB 통신 ………………….....................................................………………… 13NETPRO로네트워크설정…………..........................................................................……………… 14S7 단일시스템연결구성 …………....................................................……………. 15연결등록정보구축 ………….........................................................................……………. 16설정데이터컴파일및다운로드 …….............................................................….. 17OB100에서 SFB 초기화 ........ ...............................................................................…..…… 18SFB 통신: STOP (SFB20) 블록 ....................................................................…….. 19SFB 통신: START (SFB19) 블록 ..........................................................………….. 20SFB 통신: CONTROL (SFC 62) 블록 ...................................................…………… 21SFB 통신: GET (SFB 14) 블록 ………......................................................................……… 22SFB 통신: PUT (SFB 15) 블록 ….............................................................…………….. 23SFB 통신: USEND (SFB 8) 블록 ….........................................................……………. 24SFB 통신: URCV (SFB 9) 블록 …….........................................................................….. 25SFB 통신: BSEND (SFB 12) 블록 ...................................................................…... 26SFB 통신: BRCV (SFB 13) 블록 ................................................................………. 27연습 10.1: SFB START/STOP를이용한통신 ......................................……….. 28연습 10.2: SFB GET/PUT을이용한통신 ....................................................….. 29

Page 162: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Basic and Expanded S7 CommunicationPage 2

개요 SIEMENS는 (시간이중요하지않은) 셀영역또는 (시간이중요한) 필드수준에서의통신작업을위한여러가지요구사항에따라다음하위네트를제공합니다.

MPI MPI 하위네트는셀영역에서의작업을위해설계되었습니다. MPI는 SIMATIC S7, M7, C7의다지점가능인터페이스입니다. 이것은 PG 인터페이스로서, 즉 PG (배치및테스트)와 OP (작동자인터페이스)의연결을위해설계되었습니다. 이외에도 MPI 하위네트는또한몇개의 CPU를네트워크로연결하기위해사용될수있습니다.

산업용이더넷 산업용이더넷은 SIMATIC의제조업체와는별도의개방통신시스템에서관리수준과셀수준에대한네트워크입니다.산업용이더넷은보다큰양의데이터를시간에관계없이전송하기위해설계되었으며게이트웨이를통해네트워크를넘어서어떤지점에연결할수있는가능성을제공합니다.

PROFIBUS PROFIBUS는 SIMATIC의제조업체와는별도의개방통신시스템에서셀과필드영역에대한네트워크입니다. 여기에는 2가지버전이있으며각각은고유의특징을가집니다.• 동등한지적노드사이의시간이중요하지않은통신을위한PROFIBUS로서셀영역에존재

• 지적마스터와필드장치사이의시간이중요한순환데이터교환을위한필드버스 PROFIBUS DP

PtP-연결 지점간연결은주로 2개의스테이션사이의시간이중요하지않은데이터교환이나 OP, 프린터, 바코드판독기, 자기카드판독기, 등꽈같은장치를스테이션에연결하기위해사용됩니다.

AS-인터페이스 액츄에이터센서인터페이스는 PLC 시스템에서가장낮은공정수준에대한하위네트입니다. 이것을이요하여이진센서와액츄에이터가네트워크로연결될수있습니다.

.

SIMATIC의하위네트

-SINUMERIK, RCM-TI 505-Other PLCS7-300S7-400 M7-400

OPs

SIMATIC S5

PROFIBUS-DP

ET 200B/LET 200C

DP/AS-I Link

ASI (Actuator Sensor Interface)

AS-I Submodule

Sensors and ActuatorsField device with AS-I ASIC

AS-I Power Supply

Industrial Ethernet

PROFIBUS

MPI Network

Point to Point

PCs, OS PGsPG 720

Cell Level

Field level

AS-I-Level

Page 163: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Basic and Expanded S7 CommunicationPage 3

서비스 통신서비스는데이터교환, 제어장치, 감시장치및로딩프로그램과같이정의된퍼포먼스특징을가지는통신기능을나타냅니다.

전역데이터 작은양의데이터의순환데이터교환을위한 GD (네트워크의전역데이터) (추가적인이벤트드리븐 S7-400에서).

S7 통신 이러한통신유틸리티는단일시스템 SIMATIC S7 연결에서의 S7 PLC, PG/PC 및 OP/TD에대해최적화되어있습니다. • PG 기능; PG는구성된연결없이연결될수있습니다. • HMI 기능; OP는구성된연결없이연결될수있습니다. • 기본통신은 CPU의운영체제에포함되어있는 SFC를이용해수행될수있습니다. (SFC 통신은구성된연결없이실행됩니다.)

• 확장통신은 SFB를통해이루어집니다 (S7-400 클라이언트/서버, S7-300서버전용). 확장통신은구성된연결을통해실행됩니다.

FDL (SDA) SIMATIC S7과 S5 사이에서평균량의데이터의안전한데이터전송을위해사용됩니다. 이것은 Profibus에대한레이어 2 필드버스데이터링크 (FDL)에대응합니다.

ISO 전송 이것은 SIMATIC S5와 S7 사이의안전한데이터전송을위해사용됩니다. 또한평균량의데이터 (240 바이트까지)를전송하기위해사용됩니다.

ISO-on-TCP 이것은 SIMATIC S7과 PC, 또는 Siemens 이외의시스템사이에서 TCP/IP 네트워크를통해평균량의데이터를안전하게전송하기위해사용됩니다.FDL, ISO 및 ISO-on-TCP 유틸리티는함수호출 AG-SEND/AG-RECEIVE을통해사용할수있습니다.

FMS 필드버스메시지사양 (FMS)은필드장치는물론지적파트너사이의객체지향적통신을가능하게합니다. FMS (변수, 도메인서비스, 등)가지원하는유틸리티는 EN 50170 Vol. 2에명시되어있습니다.

MAP 원래미국자동차회사인 General Motors가개발한이프로토콜은 PLC 시스템간의객체지향적통신을위한것입니다 (MAP= 제조업체자동화프로토콜).

DP DP (분산 I/O)는필드장치 (EN 50170 Vol. 3)에대한지적제어단위의시간이중요한데이터지향적통신을위해특별히최적화되어있습니다.

통신설정

표준

SIMATIC에대한통신서비스

Profibus Ethernet

FMS

DP

MAP 3.0

개방된

통신

MPI

S7-Basic Comm.

공유데이터

S7-확장통신

SIM

AT

IC-S

7통신

ISO-Transport

ISO-on-TCP

FDL

S7-기본통신, 곧출시

PG 및 HMI 기능

Page 164: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Basic and Expanded S7 CommunicationPage 4

공유데이터 이통신은데이터가 MPI를통해프로그램없이 CPU 사이에순환적으로교환될수있게합니다. 데이터교환은주기제어지점에서이루어지며함께프로세스이미지를갱신합니다.

PG 및 HMI PG와 HMI 기능과같은시스템서비스는최종적으로확장 S7-통신을기초로기능 합니다. PG 또는 HMI 장치를 S7-300/400 시스템에연결하기위한전제조건은

연결파트너 (S7-CPU, M7-CPU, M7-FM, 등)가자유롭게연결할수있어야한다는점입니다.

기본통신 이러한통신유틸리티를이용해모든 S7-300/400 CPU에대한데이터는 MPI 하위네트에의해전송되거나 K 버스를통해한스테이션안에서전송될수있습니다. X_SEND와같은시스템함수 (SFC)는송신자쪽에서호출되고X_RCV는사용자프로그램의수신자쪽에서호출됩니다. 한번호출할때전송될수있는사용자데이터량은최대 76 바이트입니다. 통신파트너에대한연결은시스템함수가호출될때액티브하게구성되고연결이끊어질수있습니다. 이에대한구성된연결은필요하지않습니다. 통신파트너에대한연결을위해 CPU에서사용할수있는연결리소스가필요합니다.

확장통신 모든 S7-400 CPU에대해이러한통신유틸리티를사용할수있습니다. 최대64KByte의데이터가여러하위네트 (MPI, Profibus, 산업이더넷)에의해전송될수있습니다.시스템함수블록 (SFB)은프로그래밍인터페이스로서사용됩니다. 이러한SFB는 S7-400 CPU의운영체제에서만통합되며 S7-300에는존재하지않습니다. 데이터전송을위한기능외에이통신유틸리티는또한파트너의 “stop”또는“start”와같은제어기능을포함합니다. 통신은구성된연결 (연결표)을통해이루어집니다. 이러한연결은스테이션의파워업중에구성되며영구적으로존재합니다.

MPI, K-Bus, Profibus 또는산업용이더넷을통한프로그램제어

MPI 또는K-Bus를통한프로그램제어

S7-300/400에대한 S7-통신서비스

공유데이터공유데이터

구성된연결이없는기본통신구성된연결이없는기본통신구성된연결을통한확장통신구성된연결을통한확장통신

CPU의운영체제

CPU의운영체제

CPU의운영체제

CPU의운영체제

MPI 또는 K-Bus를통한순환또는프로그램제어

SFCSFC SFCSFC SFBSFB SFBSFB

PG 및 HMI 기능PG 및 HMI 기능

CPU의운영체제

CPU의운영체제

MPI, K-Bus, Profibus, 산업용이더넷을통해운영체제로제어

PG 720

Page 165: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Basic and Expanded S7 CommunicationPage 5

개요 참여하는스테이션에서모든연결에대해엔드위치에대한연결리소스가필요합니다. 연결리소스의수는 CPU/CP에따라틀립니다.한스테이션의모든연결리소스가사용되고있다면새로운연결을만들수없습니다.

PG/OP 모든 PG 또는 OP/TD 연결은 SIMATIC S7/M7-CPU에서연결리소스를필요로합니다. 이를위해기본값으로모든 S7/M7-CPU에서각 PG와 OP/TS 연결을위한연결리소스가예약됩니다. 모든추가 PG/OP 연결을위해사용할수있는연결리소스가필요합니다.

CPU 통신 S7/M7-300/400-CPU가 SFC와 SFB를이용해통합 MPI-/PROFIBUS-DP인터페이스를통해파트너와통신을한다면각각에대한연결리소스는 S7 연결마다사용됩니다.

CP를통한통신 외부 CP 인터페이스를통한 S7 통신을이용해각각에대한연결리소스는CPU와 CP에서 S7 연결마다사용됩니다. S7 단일시스템연결이 PROFIBUS CP 또는산업용이더넷 CP를통해구성되면 CP에대한추가구성정보는필요하지않습니다. CP는 S7 통신릴레이를위해유틸리티를사용할수있게합니다.

FM 통신 FM이 S7/M7-CPU의통합 MPI-/PROFIBUS-DP 인터페이스를통해파트너와통신을한다면한개의연결리소스는 FM에서, 2개의연결리소스는 CPU에서사용됩니다.같은스테이션에서모든추가 CPU (복수프로세서작동)에대해서도이것은마찬가지로적용되며, 따라서추가 CPU는 K-Bus를통해 MPI 하위네트와간접적으로연결됩니다.

S7-CPU에대한통신량프레임워크

S7 모듈 연결 수(S7 단일 시스템)

시스템 함수 간략한 설명

CPU 313,314, 315

max. 4 for SFB’smax. 8 (4 for CPU313) for SFC’s

SFC blocksGET/PUT/START/STOP은 운영 체제에서통합됨

all SFC’s=76 Bytes user dataGET = 222 Bytes user dataPUT = 212 Bytes user dataSTOP/START = Server utilities

CPU412 max. 8 for SFB’smax. 6 for SFC’s

SFC blocksSFB blocks

all SFC’s=76 Bytes user dataGET = 462 Bytes user dataPUT = 452 Bytes user dataUSEND/URCV= 454 Bytes user dataBSEND/BRCV=64Kbytes user data

CPU413 max. 16 for SFB’smax. 14 for SFC’s

상동 상동

CPU414 max. 32 for SFB’smax. 30 for SFC’s

상동 상동

CPU416 max. 64 for SFB’smax. 62 for SFC’s

상동 상동

PROFIBUSCPs

max. 32 (S7-400) 통신 릴레이

ETHERNETCPs

max. 48 (S7-400) 통신 릴레이

Page 166: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Basic and Expanded S7 CommunicationPage 6

개요 S7/M7-300/400-CPU와구성되지않은연결을위한통신 SFC를가지는추가통신가능모듈사이에소량의데이터를교환할수있습니다.통신파트너는같은 MPI 하위네트에서연결되거나 K-Bus 또는 PROFIBUS-DP를통해같은스테이션에서액세스될수있어야합니다.구성된연결은필요하지않습니다.

연결 통신 SFC가호출될때주소가지정된통신파트너에게동적으로연결이구성되고전송이완료된후파라미터할당 (Parameter: CONT)에따라연결이끊어집니다. 구성된연결을위해통신파트너에서사용할수있는연결리소스가필요합니다.SFC 호출에서사용할수있는연결리소스가없으면해당오류번호가RET_VAL로사용자에게반환됩니다.통신 SFB의기존연결은사용될수없습니다. 만약액티브 CPU가데이터전송중에 Stop 상태가되면기존연결은끊어집니다.통신 SFC는 RUN 모드에서삭제될수없습니다. 만약삭제된다면사용된연결리소스가사용할수없게될수있습니다. (프로그램은 STOP 상태에서만변경됩니다.)

사용자데이터크기 전송될수있는사용자데이터양은모든 S7/M7/C7-CPU에대해동일하며최대 76 바이트입니다.

SFC 통신: 개요

MPI 하위네트를통한데이터교환또는단일스테이션에서의데이터교환SFB 통신에비해연결구성이필요하지않음파트너와의연결은동적으로구성되고연결이끊김

76 바이트까지의사용자데이터모든 S7-300/400 CPU에서사용될수있음PROFIBUS-DP (X_GET, X_PUT)를통해변수를 S7-200에서읽거나쓸수있음

통신파트너도또다른 S7 프로젝트에있을수있음

Page 167: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Basic and Expanded S7 CommunicationPage 7

개요 통신 SFC는구성되지않은 S7 연결을통해확인된데이터전송을할수있게합니다.통신 SFC (X_...)를이용하여같은 MPI 하위네트에있는모든통신파트너의주소를지정할수있으며 SFC (I_...)를이용하여같은스테이션에서 I/O 어드레스를가지는모든통신파트너 (예: FM, 등)의주소를지정할수있습니다. 통신파트너가또다른 S7-프로젝트에있다면 MPI 하위네트를통한통신도또한가능합니다.연속적으로액세스될수있는통신노드의수는제한되지않습니다.

어드레싱 MPI 하위네트를통한통신 (X_...)에서파트너의어드레싱은 MPI 어드레스를지정함으로써, 같은스테이션에서의통신 (I_...)인경우파트너의어드레싱은논리모듈초기어드레스 (I/O 어드레스)를지정함으로써이루어집니다.모듈이출력을위한기본어드레스 (Q 어드레스)는물론입력을위한기본어드레스 (I 어드레스)를가진다면두개의어드레스중작은값이제공되어야합니다.

데이터일관성 S7-300/400-CPU를가지는운영체제가관련블록으로서읽고 (X_PUT, I_PUT)쓸 (X_GET, I_GET) 수있는최대데이터영역크기는데이터일관성으로서나타납니다.S7-300/400의경우, 데이터일관성은다음과같습니다.• S7-300-CPU: 8 Bytes• S7-400-CPU: 32 Bytes따라서예를들어데이터형이바이트, 워드또는더블워드인배열은최대크기까지일관되게전송될수있습니다.

SFC 통신: 블록개요

SFC NAME Short Description

SFC 65 X_SEND Send block for sending datato the X_RCV (Client) block

SFC 66 X_RCV Receive block for receiving datafrom the X_SEND block

SFC 67 X_GET Read data from the partner PLC

SFC 68 X_PUT Write data to the partner PLC

SFC 69 X_ABORT Abort existing connection

SFC 72 I_GET Read data from the partner to your own station

SFC 73 I_PUT Write data at the partner to your own station

SFC 74 I-ABORT Abort connection to the partner in your ownstation

Page 168: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Basic and Expanded S7 CommunicationPage 8

SFC 통신: X_SEND (SFC 67) 블록

CALL SFC 65REQ:= M4.0//트리거CONT:= FALSE//Disc. 연결DEST_ID:= W#16#4/MPI_addr.REQ_ID:= DW#16#1//식별자SD:= P#M20.0 BYTE 10RET_VAL:= MW40//오류코드BUSY:= M 4.1//액티브식별자

STL 표시 LAD/FBD 표시파라미터할당에대한보기

SFC65 (X_SEND)REQ RET_VAL

BUSYCONT

DEST_ID

SD

REQ_ID

설명 SFC 65 "X_SEND“를이용하여실제 S7-스테이션외부에있는통신파트너에게데이터를보냅니다. 통신파트너에서데이터수신은 SFC 66 "X_RCV“를통해이루어집니다.보낸데이터를입력파라미터 REQ_ID로구분할수있습니다. 이작업식별자도또한전송됩니다. 통신파트너에서이것을평가하여데이터의출처를결정할수있습니다.보내기함수는 REQ=1인 SFC를호출한후발생합니다.파라미터 SD를통해정의된 (송신 CPU의) 송신영역이파라미터 RD를통해정의된 (통신파트너의) 수신영역보다작거나같도록해야합니다.

S F C 6 5 X _ S E N D에 대 한 파 라 미 터 파 라 미 터 종 류 형 식 의 미

R E Q IN P U T B O O L ( I ,Q ,M ,D ,L c o n s t.)

신 호 1에 대 한 전 송 활 성 화

C O N T IN P U T W O R D ( I ,Q ,M ,D ,L C o n s t.)

C O N T = 0 연 결 끊 기

C O N T = 1 연 결 지 속

D E S T _ ID IN P U T W O R D ( I ,Q ,M ,D ,L c o n s t.)

파 트 너 의 M P I 어 드 레 스

R E Q _ ID IN P U T D W O R D ( I ,Q ,M ,D ,L , c o n s t.)

파 트 너 에 서 데 이 터 를 구 분 하 는 요 청 ID

S D IN P U T A N Y ( I ,Q ,M ,D )

송 신 영 역 참 조

R E T _ V A L O U T P U T IN T ( I ,Q ,M ,D ,L )

오 류 코 드 를 가 지 는 반 환 값

B U S Y O U T P U T B O O L ( I ,Q ,M ,D )

B U S Y = 1 보 내 기 함 수 작 동 중

B U S Y = 0 보 내 기 함 수 완 료

Page 169: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Basic and Expanded S7 CommunicationPage 9

SFC 통신: X_RCV (SFC 66) 블록

STL 표시 LAD/FBD 표시파라미터할당에대한보기

SFC66 (X_RSV)EN_DT RET_VAL

REQ_ID

CALL SFC 66EN_DT:= TRUE//트리거데이터전송RET_VAL:= MW 50//오류코드REQ_ID:= MD52//요청 IDNDA := M40.0//데이터존재RD:= P#M20.0 BYTE 10

NDA

RD

설명 SFC 66 "X_RCV“를이용해한개이상의통신파트너가 SFC 65 "X_SEND“로보낸데이터를받습니다. 이통신파트너는실제 S7-스테이션의외부에있습니다. SFC 66 "X_RCV“를이용해다음기능을할수있습니다.• 현재시점에서보낸데이터를사용할수있는지를결정합니다. 필요하다면운영체제는이들데이터를내부대기열에둡니다.

• 대기열에서사용할수있는가장오래된데이터블록을사용자가지정한수신영역에복사합니다.

입력파라미터 EN_DT (데이터전송을가능하게함: enable data transmission)를통해선택을합니다.

X _RCV SFC 66에 대한 파라미터

파라미터 종류 형식 의미

EN_DT INPUT BO O L (I,Q ,M ,D,L, constant)

EN_DT=0은 데이터 블록이 있는지를 확인 EN_DT=1은 데이터 블록을 메모리에 복사

RET_VAL O UTPUT INT (I,Q ,M ,D,L)

오류 코드를 가지는 반환 값

REQ _ID O UTPUT DW O RD (I,Q ,M ,D,L,)

데이터가 대기열의 첫 번째 위치에 있는X_SEND SFC 66에 대한 요청 식별자 ,

NDA O UTPUT BO O L (I,Q ,M ,D,L)

NDA=0 데이터 블록이 없음 NDA=1 한 개 이상의 데이터 블록이 있음 (EN_DT=1일 경우 ) 또는 데이터 블록이 메모리에 복사됨 (EN_DT=1)

RD O UTPUT ANY (I,Q ,M ,D)

수신 영역 참조

Page 170: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Basic and Expanded S7 CommunicationPage 10

개요 SFB 블록은모든 S7-400-CPU에서사용할수있으며 S7/M7-300/400-CPU와데이터를교환하기위해사용됩니다. 이들블록을이용해 64 Kbyte까지의데이터를여러하위네트 (MPI, Profibus, 산업용이더넷)에의해전송할수있습니다.

연결 통신 SFB는구성된 S7 연결을통해보호된데이터전송을가능하게합니다. 이들연결의구성은 SIMATIC 관리자에서투명하게링크되어있는 “Verpro”(구성된연결)을이용해서이루어집니다. 구성된연결은스테이션의완전재시작중에구성되며스테이션이 STOP 모드가될때에도영구적으로존재합니다. 재시작중에연결은다시구성되지않습니다. 통신은 S7-프로젝트의스테이션사이에서배타적으로이루어질수있습니다. 통신파트너는공통 MPI-, PROFIBUS-또는산업용이더넷하위네트에서연결되어야합니다.

SFB SIMATIC S7에서사용자프로그램과의 S7 통신을위한인터페이스는 SFB 형식의특별 S7 블록을형성합니다. SFB는 ISO/IEC 1131-5 표준에맞추며통일된인터페이스를제공합니다.통신을위한연결이구성되어야합니다. 연결수는노드할당과전송매체의등록번호 (ID)를참조합니다. 이러한등록번호는 SFB 호출중에블록파라미터 “ID”로서전달됩니다.

사용자데이터 사용자데이터크기는사용된블록과통신파트너에따라달라집니다. • S7-300에대해 PUT/GET 160 바이트및 S7-400/M7에대해 400 바이트• 440 바이트까지 USEND/UREC• 64 Kbyte까지 BSEND/BRCV

SFB 통신: 개요

MPI, K-Bus, Profibus, 산업용이더넷을통한데이터교환연결표를통한연결구성

완전재시작중에연결이구성되며영구적으로 (STOP 모드에서도) 존재KByte까지의사용자데이터크기또한파트너를제어 (중지, 시작)하기위한통신서비스모든 S7-400-CPU에대해 SFB 존재S7-300 (GET/PUT)은또한데이터를읽고쓸수있음한개의연결을통해여러탱크를처리할수있음

Page 171: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Basic and Expanded S7 CommunicationPage 11

SFB: S7- 400 S7 통신을위한 SFB는 CPU의운영체제에서시스템함수블록 (SFB)으로통합됩니다. 위의슬라이드에서언급된모든 SFB는운영체제의 S7-400 CPU에서사용할수있습니다.사용자프로그램으로의통합을위해사용자는표준라이브러리 "STDLIB30“의블록헤더를 “Builtin” S7 프로그램컨테이너에놓아둘수있습니다.

SFB: S7 - 300 S7-300은확장통신에대한 SFB를포함하지않습니다. 그러나 S7-300 CPU의운영체제는단방향 S7 통신서비스의서버기능을지원합니다. 따라서예를들어 GET와 PUT 블록을이용하여 CPU 4xx는 CPU 3xx의데이터를읽거나쓸수있습니다.

함수클래스 블록은총 4가지의함수클래스로다시분류될수있습니다.• 보내기및받기함수

• 제어함수

• 감시함수

• 스캔함수

데이터교환을 데이터교환을위한 SFB는 2개의통신가능파트너 (S7/M7-CPU, M7-FM) 위한 SFB 사이의데이터통신을위해사용됩니다.

• GET, PUT (단방향읽기및쓰기변수)• USEND/URCV (양방향의조정되지않은보내기/받기)• BSEND/BRCV (양방향의블록화된보내기/받기)

프로그램관리를 프로그램관리를위한 SFB는파트너장치의작동상태나연결을제어하고위한 SFB 평가하기위해사용됩니다.

• START/STOP/RESUME (제어함수)• STATUS/USTATUS (감시함수)• CONTROL (스캔함수)

SFB 통신: 블록개요

SFB/SFC 이름 통신 종류 간결한 설명SFB 8 USEND 양방향 데이터를 URCV (클라이언트) 블록에 보내기 위한

보내기 블록SFB 9 URCV 양방향 USEND 블록에서 데이터를 받기 위한 받기 블록

SFB 12 BSEND 양방향 큰 데이터 블록을 BRCV 블록에 보내기 위한 보내기 블록(64KByte까지)

SFB 13 BRCV 양방향 큰 데이터 블록을 받기 위한 받기 블록 (64KByte까지)SFB 14 GET 일방향 PLC 파트너에게서 데이터 읽기SFB 15 PUT 일방향 PLC 파트너에게 데이터 쓰기SFB 16 PRINT 일방향 리모트 파트너에게 데이터 보내기SFB 19 START 일방향 파트너의 완전 재시작 수행SFB 20 STOP 일방향 파트너를 Stop 상태에 둠SFB 21 RESUME 일방향 파트너의 재시작 수행SFB 22 STATUS 일방향 파트너의 상태 스캔

(RUN,STOP,start-up,hold)SFB 23 USTATUS 일방향 파트너의 상태 메시지 받기SFC 62 CONTROL --- S7 연결 + SFB의 내부 상태 스캔

Page 172: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Basic and Expanded S7 CommunicationPage 12

S7 단일시스템 각통신파트너의 SFB가서로서로통신을할수있으려면소위 S7 단일연결 시스템연결이제일먼저구성되어야합니다 (송신자와수신자사이의데이터

하이웨이제공). 구성될수있는최대연결수는각통신노드에따라달라집니다. MPI, 산업용이더넷및 PROFIBUS 네트워크에대한 S7 단일시스템연결을구성할수있습니다.

단방향 통신 SFB가 S7-300의운영체제에포함되지않기때문에오직단방향S7 단일시스템 연결만이 S7-400에서 S7-300으로구성될수있습니다.연결

단방향통신서비스의경우프로그래밍작업, 즉 SFB 호출은통신파트너, 개시자 (클라이언트)에게만필요합니다. 다른통신파트너 (서버)의경우운영체제가완전히서비스를처리합니다. 사용자에의한프로그래밍작업은서버쪽에서는필요하지않습니다. 단방향연결의경우통신파트너와전송매체를참조하기위한로컬연결 ID도또한클라이언트쪽에서제공됩니다. 단방향 S7 단일시스템연결의경우클라이언트는항상파워업중에연결구성을합니다. 사용자는연결구성 (연결구성 = 초기화)을보지못합니다.

"단방향" SFB 다음블록은

• GET, PUT• STOP, START, RESUME • STATUS, USTATUS“단방향” SFB로간주됩니다.

단방향연결을통한 SFB 통신

SFBs(GET/PUTSTOP/START)

CPU의운영체제

1

CPCPU 1

S7-4 00

CP S7-300/400

MPI 1

CPCPU 2 CP

PROFIBUS

PROFIBUS

IndustrialEthernet

IndustrialEthernet

S7 단일시스템연결

PROFIBUSIndustrial Ethernet S7 단일시스템연결

S7 단일시스템연결

Page 173: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Basic and Expanded S7 CommunicationPage 13

양방향 양방향통신서비스가사용되면양방향단일시스템연결이구성되어야S7 단일시스템 합니다. 단방향통신서비스와는달리양방향통신에서파트너쪽 (서버) 뿐만연결 아니라개시자쪽 (클라이언트)에서도프로그래밍작업이필요합니다.

양방향연결의구성을위해양쪽에각각연결 ID를만들며이 ID를사용해 SFB 호출중에클라이언트와서버가연결을참조합니다. 산업용이더넷-CP 또는 PROFIBUS-CP를통해구성되는 S7 단일시스템연결은 CP에구성정보를필요로하지않습니다. CP는 S7 통신릴레이를위해이연결을가능하게합니다. 양방향 S7 단일시스템연결의경우사용자는어떤파트너가연결구성을초기화할지를지정할수있습니다.

"양방향" SFB 다음블록은

• BSEND=Sender (Client) ==> BRCV Receiver (Server)• USEND=Sender (Client) ==> URCV Receiver (Server)“양방향” SFB로간주됩니다. 이들블록은항상블록페어로설치되어야합니다. 양방향통신함수는항상데이터전송이데이터의특정추가프로세싱을위해사용될때설치됩니다. 한쪽에서수신자 (서버)는블록호출 URCV 또는 BRCV에의해수신자가추가프로세싱을위해송신자로부터새데이터를받을준비가되는때를결정합니다. 다른한쪽에서수신자는 SFB 파라미터 "NDR" (수신된새데이터: New Data Received)을스캔함으로써새데이터가수신되었는지여부를통고받습니다. 단방향통신서비스의경우서버쪽의사용자프로그램은언제새데이터가전송되었는지를통고받지않습니다.단방향통신서비스는또한양방향구성연결을통해처리될수있습니다. 양방향연결은항상 S7-400 통신파트너사이에구성되어야합니다.

양방향연결을통한 SFB 통신

CPCPU 1

S7- 400

CP CPCPU 2 CP

S7- 400

2 2

PROFIBUS PROFIBUSIndustrialEthernet

IndustrialEthernet

2 2CFBs- USEND- URDV- BSEND- BRCV

CFBs- URCV- USEND- BRCV- BSEND

MPI-NETWORK S7 단일시스템연결

PROFIBUS-NETWORKIndustrial Ethernet-NETWORK

S7 단일시스템연결

S7 단일시스템연결

Page 174: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Basic and Expanded S7 CommunicationPage 14

소개 네트워크 (MPI, Profibus, 산업용이더넷)의그래픽구성은 “NETPRO”도구를이용해실행될수있습니다. 그래픽구성의장점으로는명확성, 문서화및하드웨어구성과같은참여도구의손쉬운호출을들수있습니다.

호출 네트워크기호, 예를들어 SIMATIC 관리자의 MPI를더블클릭하여도구를호출합니다.

HW-스테이션삽입 카탈로그에서하위네트, 스테이션과같이드래그앤드롭마다삽입할수있는필요한구성요소를볼수있습니다.

HW 구성 스테이션을삽입한후 CPU 모듈을더블클릭하여 “Hardware Configuration”도구에들어갑니다. 여기에서 MPI 어드레스와하위네트에대한연결을선택합니다.연결을구성하기전에모든참여스테이션이해당하위네트와링크되어야합니다.

전역데이터 오른쪽마우스버튼을이용하여예를들어 MPI와같은하위네트를클릭하고메뉴항목 “Define Global Data”를선택합니다. 전역데이터표가나타납니다.

NETPRO로네트워크설정

HW-스테이션삽입

전역데이터정의

Page 175: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Basic and Expanded S7 CommunicationPage 15

개요 필요한통신연결의구축은 SFB를사용한프로그램제어데이터교환을위한전제조건입니다. 모듈에서나가는모든연결은모듈에속하는연결표에표시됩니다.

연결만들기 원거리파트너와의연결은로컬및원거리스테이션이같은하위네트에연결될때에만설정될수있습니다.

새연결을삽입하려면다음절차를따릅니다.1. "Station“과 "Module“필드에서연결을만들프로그램가능한모듈 (로컬스테이션)을선택합니다.

2. 연결표에서빈라인을더블클릭하거나메뉴명령 Insert -> Connection…을선택합니다. "New Connection“대화상자가열립니다.

3. "Station“과 "Module“필드에서연결이될프로그램가능한모듈 (연결파트너또는소위리모트스테이션)을선택합니다.

4. “Type”필드에서연결종류 (예: S7 단일시스템연결)를선택합니다.5. "OK" 또는 "Add“를한후연결등록정보를보거나변경하려면 "Show

Properties Dialog Box“확인란을활성화합니다.6. 명령버튼 “OK”를클릭하여입력한내용을확인합니다.

결과: STEP 7은로컬스테이션의연결표에연결을입력하고로컬 ID와필요하다면이연결에대한파트너 ID를부여합니다. 통신함수블록 (블록파라미터 “ID”에대한값)을프로그래밍하기위해이들 ID를필요로합니다.

S7 단일시스템연결구성

선택

연결삽입

리모트스테이션

리모트 CPU

Page 176: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Basic and Expanded S7 CommunicationPage 16

개요 연결파트너와연결종류를구축하는외에도연결종류에따라추가등록정보를설정할수있습니다.

객체등록정보 통신연결의특별객체등록정보를설정하려면다음절차를따릅니다.설정

1. 객체등록정보를설정하고자하는연결을표시합니다.2. 메뉴명령 Edit -> Object Properties를선택합니다. "Object

Properties”대화상자가열립니다.이대화상자에서다음등록정보를설정할수있습니다.

액티브연결 2개의노드중완전재시작으로연결구성을맡게될노드를결정할수설정 있습니다.

보내기작동 로컬노드가활성화되면이로컬노드는작동모드메시지 (STOP,START, 상태메시지 HOLD,.....)를파트너또는 SFB 23 (파트너 CPU의 USTATUS)에게보냅니다.

로컬 ID 연결이되는모듈의로컬 ID (로컬파트너)가표시됩니다. 로컬 ID를변경할수있습니다. 만약이미통신블록을프로그램하고주어진로컬 ID를그연결에사용하고자한다면로컬 ID 변경이필요합니다.

네트워크연결 이필드는데이터교환이실행되는경로를통해표시됩니다.몇개의통신경로 (하위네트)가 2개의노드사이에존재한다면데이터교환이완료되는통신경로를통해선택할수있습니다.

참고 연결의그래픽구성은또한 NetPro패키지를이용하여이루어질수있습니다.

연결등록정보구축

Page 177: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Basic and Expanded S7 CommunicationPage 17

컴파일및저장 연결데이터를개별연결파트너에다운로드하기전에 (PLC에다운로드) 연결표 NetPro가저장되고연결데이터로컴파일되어야합니다. 이작업은메뉴명령 File -> Save and Compile을통해이루어질수있습니다.위에놓이는대화상자필드에서 2가지선택사항중한개를선택할수있습니다.Compile All and Check: 이것은모든연결을저장하고검사하여한프로젝트에서의일관성을확인합니다. 모든연결이컴파일되고시스템데이터에저장됩니다. 불일치가발생하면오류가표시되는대화상자필드가나타납니다.만약네트워크구성을변경하였다면 (예: 노드어드레스변경, 노드또는하위네트의삭제) "Compile All and Check“를선택합니다. 연결이더이상존재하지않으며오직 "Compile All and Check"만이이정보를줄가능성도있습니다.Compile Changes: 이것은프로젝트에서의모든연결을저장하고 “Save and Compile”을마지막으로실행한이후에변경된연결을컴파일합니다.연결구성을끝낼때변경된데이터를저장할것인지를묻는질문이화면에나타납니다. 이질문에 "Yes“를선택하면변경된연결데이터가시스템데이터에저장되고컴파일됩니다.

구성데이터 참여모듈에다운로드되어야하는연결데이터는연결표의저장으로다운로드 발생합니다. 연결표를모듈로다운로드하는작업은모듈의 MPI, PROFIBUS,

산업용이더넷인터페이스를통해이루어질수있습니다.

PLC로다운로드하는 3가지방법이있습니다.• Download, Local Station (메뉴 PLC) • Download, Local and Partner Stations (메뉴 PLC)• Download, Marked Connections(보다상세한설명을보려면온라인도움말을참고합니다.)

설정데이터컴파일및다운로드

저장및컴파일

다운로드

Page 178: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Basic and Expanded S7 CommunicationPage 18

OB100에서 SFB 초기화

개요 해당 SFB를통해실제통신을시작하기전에설치된모든 SFB는제일먼저초기화되어야합니다. 이초기화는 OB100에서이루어집니다 (완전재시작-OB).

전제조건 개별 SFB를 OB100에서링크하기전에다음전제조건이충족되었는지를다시확인해야합니다.• 물리적연결을하여야합니다 (배선연결).• 온라인연결이구성되어야합니다 (SIMATIC 매니저의 "Accessible

Nodes”로테스트).• 구성된 S7 연결 (MPI, PROFIBUS, 산업용이더넷을통한단일시스템연결)이참여모듈에다운로드되어있어야합니다.

SFB 호출 통신함수에참여하는모든 SFB는초기화되어야합니다.예를들어 OB100에서초기화하는경우, SFB는 CALL SFBxx, DByy를이용해조건없이호출되어야합니다. 다음파라미터가할당되어야합니다.• REQ (RLO = 0인보내기트리거 )• ID (연결번호) • PI_NAME (문자열 'P_PROGRAM'에대한포인터)• R_ID (블록페어번호)• SD_1 (송신자데이터의시작에대한포인터)• RD_1 (수신메일박스의시작에대한포인터)• LEN (데이터길이)

CPU 메모리리셋 메모리리셋은항상모든연결을끊습니다. 메모리리셋후에는완전재시작만이허용됩니다. 즉, 완전재시작 OB100에서호출된모든 SFB와할당된파라미터는다시초기화됩니다.메모리리셋이되지않은다른 CPU의 SFB는연결정지를인식합니다.

Page 179: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Basic and Expanded S7 CommunicationPage 19

SFB 통신: STOP (SFB20) 블록

STL 표시 LAD/FBD Representation

CALL STOP, I_STOP(인스턴스 DB) DB20 (인스턴스 DB)

SFB20(STOP)EN ENOREQ DONE

ERRORIDSTATUSPI_NAME

IO_STATE

REQ:= I 0.0 //Start 에지ID:= W#16#1 //연결번호PI_NAME:= P#M100.0 Byte 9IO_STATE:=DONE:= #DONE_FLAG_20ERROR:= #ERROR_FLAG_20STATUS:= #STATUS_WORD_20

파라미터할당에대한보기

* Detail of the position in the memory for the beginning of : 'P_PROGRAM''

개요 제어입력 REQ에상승에지가있으면 SFB20 (STOP)은 ID로주소가지정된리모트장치를 STOP 상태로변경시킵니다. 모드변경은장치가 RUN, HOLD, 또는 startup 모드에있을때이루어질수있습니다.작업이성공적으로실행되면상태파라미터 DONE에 1이표시됩니다. 오류가발생하면상태파라미터 ERROR과 STATUS에표시됩니다.새로운모드변경은이전 SFB20 호출이완료될때같은리모트장치에서만다시시작될수있습니다.

파라미터 종류 형식 의미

REQ INPUT BOOL 양의 에지를 이용해 ID로 주소가 지정된 장치에서 STOP을 활성화

ID INPUT WORD (I,Q;M,D,L, constant)

연결 번호에 대해 연결 표 참조

PI_NAME IN_OUT ANY 시작될 프로그램의 이름 (ASCII 코드)이 있는 메모리 영역에 대한 포인터. S7일 경우 그 이름은 P_PROGRAM이어야 함

IO_STATE IN_OUT BYTE 실행 인자 (해당 없음)

DONE OUTPUT BOOL 양의 에지 = 함수 실행

ERROR OUTPUT BOOL 양의 에지 = 오류

STATUS OUTPUT WORD 상세한 오류 정보나 경고 포함 (십진수)

Page 180: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Basic and Expanded S7 CommunicationPage 20

STL 표시

CALL START, I_START (인스턴스 DB)

LAD/FBD 표시

DB19 (인스턴스 DB)

SFB19 (START)EN ENOREQ DONE

ERRORIDSTATUSPI_NAME

ARGIO_STATE

REQ:=I 0.1 //Start 에지ID:=W#16#1 //연결번호PI_NAME:=P#M100.0 Byte 9 //*ARG:=IO_STATE:=DONE:= #DONE_FLAG_19ERROR:= #ERROR_FLAG_19STATUS:= #STATUS_WORD_19

SFB 통신: START (SFB19) 블록

* 'P_PROGRAM'‘의시작을위한메모리위치의세부정보

파라미터할당에대한보기

개요 제어입력 REQ에서상승에지가있으면 SFB19 (START)는 ID로주소가지정된리모트장치에완전재시작을활성화합니다. 리모트장치가 CPU라면다음조건이충족되어야합니다.• CPU는 STOP 상태에있어야합니다.• CPU의키스위치는 "RUN" 또는 "RUN-P“로설정되어있어야합니다.일단완전재시작이완료되면장치는 RUN 모드로변경되고양의실행확인을보냅니다. 양의확인이평가되면상태파라미터 DONE는 1로설정됩니다. 만약오류가발생하면상태파라미터 ERROR과 STATUS에의해오류가표시됩니다. 파라미터 종류 형식 의미

REQ INPUT BOOL 양의 에지로 주소가 지정된 ID의 장치에서 완전 재시작을 활성화

ID INPUT WORD (I,Q;M,D,L, constant)

연결 번호에 대해 연결 표 참조

PI_NAME IN_OUT ANY 시작될 프로그램의 이름 (ASCII 코드)이 있는 메모리 영역에 대한 포인터. S7일 경우 그 이름은 P_PROGRAM이어야 함

ARG IN_OUT ANY 실행 인자 (해당 없음)

IO_STATE IN_OUT ANY 실행 인자 (해당 없음)

DONE OUTPUT BOOL 양의 에지 = 함수 실행됨

ERROR OUTPUT BOOL 양의 에지 = 오류

STATUS OUTPUT WORD 상세한 오류 정보 또는 경고를 포함 (십진수)

Page 181: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Basic and Expanded S7 CommunicationPage 21

SFB 통신: CONTROL (SFC 62) 블록

STL 표시 LAD 표시

CALL "CONTROL"

I_TYP:= MB 52 //SFB-TYPE

SFC 62 (CONTROL)EN ENOEN_R RET_VAL

ERRORI_DBSTATUSOFFSET

IO_STATE

I_CONN

I_TYPI_STATE

I_STATUSI_STATE:= MB 53 //SFB 상태

EN_R:= I 0. 2 //시작I_DB:= W#16#F //인스턴스 DB-NROFFSET:= W#16#0 RET_VAL:= MW4 //오류ERROR:=Q0.4 //오류-BoolSTATUS:= MW 4 //상태표시

I_CONN:= M 54.0 //연결상태I_STATUS:= MW102 //SFB의상태

파라미터할당에대한보기

개요 SFC62 "CONTROL“를이용해로컬통신 SFB 인스턴스에속하는연결의상태를질의할수있습니다.제어입력 EN_R에서값이 1인시스템함수를호출한후 I_DB로선택된통신SFB에속하는연결의현재상태가질의됩니다.

파라미터 종류 형식 의미

EN_R INPUT BOOL 함수를 사용할 수 있게 하는 제어 파라미터

I_DB INPUT BLOCK_DB (I,Q;M,D,L, constant)

인스턴스 DB 번호

OFFSET INPUT WORD (I,Q;M,D,L, constant)

복수 인스턴스에 대한 오프셋, 인스턴스 DB의 첫 번째 바이트 번호 (0인 복수 인스턴스가 없는 경우)

RET_VAL OUTPUT INT (I,Q;M,D,L)

SFC62에 대한 8000H 오류

ERROR OUTPUT BOOL (I,Q;M,D,L)

SF C62의 실행 중 RLO = 1 오류

STATUS OUTPUT WORD (I,Q;M,D,L)

SFC 62에 대한 오류 표시

I_TYP OUTPUT BYTE (I,Q;M,D,L)

CFB 형식 식별자

I_STATE OUTPUT BYTE (I,Q;M,D,L)

CFB의 현재 상태 그래프 식별자

I_CONN OUTPUT BOOL (I,Q;M,D,L)

해당 연결의 상태 0 = 연결 취소 1 = 연결 존재

I_STATUS OUTPUT WORD (I,Q;M,D,L)

오류 또는 SFB의 상태

Page 182: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Basic and Expanded S7 CommunicationPage 22

SFB 통신: GET (SFB 14) 블록

STL 표시

CALL GET, I_GET (인스턴스 DB)

LAD 표시

REQ:=I 0.2ID:=W#16#1 //연결번호

ADDR_1:=P#I 0.0 BYTE 1ADDR_2:=P#I 4.0 BYTE 2ADDR_3:=

NDR:=#NDR_FLAGERROR:= #ERROR_FLAGSTATUS:= #STATUS_WORD

DB14 (인스턴스 DB)

SFB14 (GET)EN ENOREQ NDR

ERRORIDSTATUSADDR_1

ADDR_2ADDR_3ADDR_4RD_1RD_2

ADDR_4:=

RD_3RD_4

RD_1:=P#Q 0.0 BYTE 1 RD_2:=P#Q 4.0 BYTE 2RD_3RD_4

파라미터할당에대한보기

개요 SFB14 (GET)를이용해리모트 CPU에서데이터를읽을수있습니다.제어입력 REQ에상승에지가있을경우읽기작업은파트너 CPU에게전송됩니다. 리모트파트너는데이터를반환합니다.오류가발생하지않으면수신된데이터는새로운 SFB 호출에서구성된수신영역 (RD_i)으로복사됩니다. 작업이완료되면상태파라미터 NDR에 1이표시됩니다. 파라미터 종류 형식 이미

REQ INPUT BOOL (I,Q,M,D,L constant)

양의 에지를 이용해 전송 활성화

ID INPUT WORD (I,Q,M,D,L constant)

연결 번호에 대해 연결 표 참조

ADDR_1

...

ADDR_4

IN_OUT ANY (I,Q,M,D)

파트너 CPU에서 읽을 영역에 대한 포인터

RD_1

...

RD_4

IN_OUT ANY (I,Q,M,D)

자체 CPU에서 읽은 값이 저장될 영역에 대한 포인터 (파트너 CPU의 데이터 영역 ADDR_1 ==> RD_1-자체 CPU의 데이터 영역)

NDR OUTPUT BOOL (I,Q,M,D,L)

양의 에지 (펄스)는 사용자 프로그램에게 이용할 수 있는 새 수신 데이터가 있음을 표시함. “오류 없이 파트너 CPU에게서 전송된 데이터 ”

ERROR OUTPUT BOOL (I,Q,M,D,L)

양의 에지는 오류를 표시함 (펄스)

STATUS OUTPUT WORD (I,Q,M,D,L)

상세한 오류 정보나 경고를 포함 (십진수)

Page 183: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Basic and Expanded S7 CommunicationPage 23

SFB 통신: PUT (SFB 15) 블록

STL 표시

CALL PUT, I_PUT(인스턴스 DB)

LAD 표시

REQ:=I 0.3ID:=W#16#1 //연결번호

ADDR_1:=P#Q 12.0 WORD 1ADDR_2:=ADDR_3:=

DONE:= #DONE_FLAGERROR:= #ERROR_FLAGSTATUS:= #STATUS_FLAG

DB15 (인스턴스 DB)

SFB15 (PUT)EN ENOREQ DONE

ERRORIDSTATUSADDR_1

ADDR_2ADDR_3ADDR_4SD_1SD_2

ADDR_4:=

SD_3SD_4

SD_1:=P#I 2.0 WORD 1SD_2:=SD_3:=SD_4:=

파라미터할당에대한보기

개요 SFB15 (PUT)를이용해리모트 CPU에데이터를쓸수있습니다.제어입력 REQ에상승에지가있을경우쓰기를할영역에대한포인터(ADDR_i)와데이터 (SD_i)가파트너 CPU에전송됩니다. 리모트파트너는데이터와함께전송된어드레스에요구된데이터를저장하고실행확인을반환합니다. 파라미터 종류 형식 의미

REQ INPUT BOOL (I,Q,M,D,L constant)

상승 에지를 이용해 전송 활성화

ID INPUT WORD (I,Q,M,D,L constant)

연결 번호에 대해 연결 표 참조

ADDR_1

...

ADDR_4

IN_OUT ANY (I,Q,M,D)

파트너 CPU에서 송신 CPU가 보낸 데이터가 쓰여질 데이터 영역에 대한 포인터

SD_1

...

SD_4

IN_OUT ANY (I,Q,M,D)

자체 CPU에서 파트너 CPU에 보내질 데이터 영역에 대한 포인터 (자체 CPU의 데이터 영역- SD_1 ==> ADDR_1 파트너 CPU의 데이터 영역)

DONE OUTPUT BOOL (I,Q,M,D,L)

양의 에지 (펄스)는 사용자 프로그램에게 오류 없이 전송이 완료되었음을 표시

ERROR OUTPUT BOOL (I,Q,M,D,L)

양의 에지는 오류를 표시 (펄스)

STATUS OUTPUT WORD (I,Q,M,D,L)

상세한 오류 정보나 경고 포함 (십진수)

Page 184: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Basic and Expanded S7 CommunicationPage 24

SFB 통신: USEND (SFB 8) 블록

STL 표시

CALL USEND, I_USEND(인스턴스 DB)

LAD 표시

REQ:= I 0.4ID:=W#16#3 //연결번호

STATUS:= #STATUS_WORDSD_1 :=P#DB3.DBX0.0 BYTE 100SD_2 :=P#DB3.DBX100.0 BYTE 100

R_ID:=DW#16#B1 //블록페어DONE:= #DONE_FLAGERROR:= #ERROR_FLAG

SD_3 :=P#DB3.DBX200.0 BYTE 100

DB 8 (인스턴스 DB)

SFB 8 (USEND)EN ENOREQ DONE

ERRORIDSTATUSR_ID

SD_1SD_2SD_3SD_4SD_4 :=P#DB3.DBX300.0 BYTE 154

파라미터할당에대한보기

개요 SFB8 (USEND)은 "URCV“형식의리모트파트너 SFB에데이터를보냅니다(파라미터 R_ID는두개의 SFB 모두에대해동일해야합니다). 데이터는제어입력 REQ에서의상승에지에따라전송됩니다. 함수는파트너 SFB와의조정없이실행됩니다.파라미터 SD_1에서 SD_4가전송되는데이터를참조하지만 4개의보내기파라미터가모두사용될필요는없습니다. 파라미터 종류 형식 의미

REQ INPUT BOOL (I,Q,M,D,L constant)

상승 에지를 이용해 전송 활성화

ID

R_ID

INPUT

INPUT

WORD (I,Q,M,D,L constant)

WORD (I,Q,M,D,L constant)

S7 단일 시스템 연결을 위한 연결 번호 (연결 표 참고)

파라미터는 2개의 CFB (USEND와 URCV)에 대해 동일해야 함. 블록 페어의 할당

DONE OUTPUT BOOL (I,Q,M,D,L)

양의 에지 (펄스)는 사용자 프로그램에게 오류 없이 전송이 완료되었음을 표시

ERROR

STATUS

OUTPUT

OUTPUT

BOOL (I,Q,M,D,L)

BOOL (I,Q,M,D,L)

양의 에지는 오류를 표시 (펄스)

ERROR=1이면 상태 표시

SD_1

...

SD_4

IN_OUT ANY (I,Q,M,D)

자체 CPU에서 파트너 CPU에 보내질 데이터 영역에 대한 포인터 (자체 CPU의 데이터 영역- SD_1 ==> ADDR_1 파트너 CPU의 데이터 영역은 번호, 길이, 데이터 형이 일치해야 함)

Page 185: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Basic and Expanded S7 CommunicationPage 25

SFB 통신: URCV (SFB 9) 블록

STL 표시

CALL URCV, I_URCV(인스턴스 DB)

LAD 표시

EN_R:= I 0.5ID:= W#16#3 //S7 연결

STATUS:= #STATUS_WORDRD_1:=P#DB3.DBX0.0 BYTE 100RD_2:=P#DB3.DBX100.0 BYTE 100

R_ID:= DW#16#B1 //블록페어NDR:= #NDR_FLAGERROR:= #ERROR_FLAG

RD_3:=P#DB3.DBX200.0 BYTE 100

DB 9 (인스턴스 DB)

SFB 9 (URCV)EN ENOEN_R NDR

ERRORIDSTATUSR_ID

RD_1RD_2RD_3RD_4

RD_4:=P#DB3.DBX300.0 BYTE 154

파라미터할당에대한보기

개요 SFB9 (URCV)는 "USEND“형식의리모트파트너 SFB에서비동기적으로데이터를받습니다. (파라미터 R_ID는 2개의 SFB에서모두동일해야합니다.) 만약블록이호출될때값 1이제어입력 EN_R에적용되면수신된데이터는구성된수신영역에복사됩니다. 파라미터 RD_1에서 RE_4가이들데이터영역을참조합니다.블록이제일처음호출될때 “수신메일박스“가만들어집니다. 이후의발생하는모든호출에서수신되는데이터는이수신메일박스에저장되어야합니다.

파라미터 종류 형식 의미

EN_R INPUT BOOL (I,Q,M,D,L constant)

RLO = 1일 경우 수신된 데이터는 구성된 데이터 영역에 복사됨

ID INPUT WORD (I,Q,M,D,L constant)

S7 단일 시스템 연결에 대한 연결 번호 (연결 표 참고)

R_ID INPUT DWORD (I,Q,M,D,L constant)

파라미터는 2개의 CFB (USEND와 URCV)에 대해 동일해야 함. 블록 페어의 할당

NDR OUTPUT BOOL (I,Q,M,D,L)

양의 에지 (펄스)는 사용자 프로그램에게 전송된 새 데이터를 표시함

ERROR

OUTPUT BOOL (I,Q,M,D,L)

양의 에지 = 오류 (펄스)

STATUS OUTPUT BOOL (I,Q,M,D,L)

오류 = 1이면 상태 표시

RD_1

...

RD_4

IN_OUT ANY (I,Q,M,D)

CPU에서 수신된 데이터가 저장될 데이터 영역에 대한 포인터 (SD_i와 RD_i 는 번호, 길이, 데이터 형이 모두 일치해야 함)

Page 186: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Basic and Expanded S7 CommunicationPage 26

SFB 통신: BSEND (SFB 12) 블록

STL 표시

CALL BSEND, I_BSEND(인스턴스 DB)

LAD 표시

REQ:= I 0.4R:= I0.5

ERROR:= #ERROR_FLAGSTATUS:= #STATUS_WORDSD_1:=P#DB1.DBX0.0 BYTE 40000

ID:=W#16#3 //S7 연결

DONE:= #DONE_FLAG

LEN:= #DB_LEN

DB 12 (인스턴스 DB)

SFB 12 (BSEND)EN ENOREQ DONE

ERRORRSTATUSID

R_IDSD_1LEN

R_ID:=DW#16#B2 //블록페어

파라미터할당에대한보기

개요 SFB12 (BSEND)는 "BRCV“형식의리모트파트너 SFB에데이터를보냅니다. (파라미터 R_ID는해당 SFB에서동일해야합니다.) 이데이터전송을이용해64 KByte까지의데이터가전송될수있습니다 (모든 CPU에적용). 보내기작업은블록을호출한후제어입력 REQ에상승에지가있을때활성화됩니다. 사용자메모리에서데이터전송은사용자프로그램의프로세싱과비동기적으로이루어집니다.

파라미터 종류 형식 의미

REQ INPUT BOOL (I,Q,M,D,L constant)

양의 에지를 이용하여 전송 활성화

R INPUT BOOL (I,Q,M,D,L constant)

양의 에지를 이용하여 초기 상태로 BSEND 리셋 활성화

ID INPUT W ORD (I,Q,M,D,L constant)

S7 단일 시스템 연결을 위한 연결 번호 (연결 표 참고 )

R_ID INPUT DW ORD (I,Q,M,D,L)

파라미터는 2개의 CFB (BSEND와 BRCV)에 대해 동일해야 함 블록 페어의 할당

SD_1 IN_OUT ANY (I,Q,M,D,L)

송신될 데이터 . Any 포인터의 길이는 평가되지 않음

LEN IN_OUT W ORD (I,Q,M,D,L)

전송될 데이터 블록의 길이

DONE OUTPUT BOOL (I,Q,M,D,L)

상승 에지를 이용하여 BSEND 요청 (펄스 )이 오류 없이 끝났음을 표시함

ERROR OUTPUT BOOL (I,Q,M,D,L)

양의 에지는 오류는 표시 (펄스 )

STATUS OUTPUT W ORD (I,Q,M,D,L)

상세한 오류문 또는 경고를 포함

Page 187: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Basic and Expanded S7 CommunicationPage 27

SFB 통신: BRCV (SFB 13) 블록

STL 표시

CALL BRCV, I_BRCV(인스턴스 DB)

LAD 표시

EN_R:= I 0.4

ERROR:= #ERROR_FLAGSTATUS:= #STATUS_WORDRD_1:=P#DB2.DBX0.0 BYTE 40000

ID:=W#16#3 //S7 연결, 양방향

NDR:= #NDR_FLAG

LEN:= #DB_LEN

DB 13 (인스턴스 DB)

SFB 13 (BRCV)EN ENOEN_R NDR

ERRORIDSTATUSR_ID

RD_1LEN

R_ID:=DW#16#B2 //블록페어

파라미터할당에대한보기

파라미터 종류 형식 중요도

EN_R INPUT BOOL (I,Q,M,D,Lconst.)

RLO = 1 SFB가 받을 준비가 됨 RLO = 0 절차 취소됨

ID INPUT WORD (I,Q,M,D,Lconst.)

S7 단일 시스템 연결의 연결 번호(연결 표 참고)

R_ID INPUT DWORD (I,Q,M,D,L const.)

파라미터는 2개의CFB (BSEND와 BRCV)에 대해 동일해야 함. 블록 페어의 할당

RD_1 IN_OUT ANY 수신 메일 박스에 대한 포인팅. 길이 사양은수신될 블록의 최대 길이를 지정. (2048 워드의 경우 이것은 S5에 대한 조커 길이에대응)

LEN IN_OUT WORD 지금까지 수신된 데이터의 길이 바이트

NDR OUTPUT BOOL 양의 에지는 사용자 프로그램에 인식된 새 수신 데이터를 표시

ERROR OUTPUT BOOL 양의 오류는 오류 표시 (펄스)

STATUS OUTPUT WORD 상세한 오류문 또는 경고 포함

개요 SFB13 (BRCV)은 "BSEND“형식의리모트파트너 SFB에서데이터를받습니다. (파라미터 R_ID는 2개의 SFB에서모두동일해야합니다.) 이함수가호출되고값 1이제어입력 EN_R에적용되면블록은데이터를받을준비가됩니다.수신영역의시작어드레스는 RD_1에의해지정됩니다.각수신데이터세그먼트를따라파트너 SFB에확인을보내며 LEN 파라미터가갱신됩니다. 블록이데이터의비동기수신중에호출되면 STATUS 상태파라미터에경고가출력되고값 0이제어입력 EN_R에적용될때호출되면수신은종료되고 SFB는초기상태로돌아갑니다. 모든데이터세그먼트를오류없이수신하면상태파라미터 NDR이값 1을가집니다.

Page 188: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Basic and Expanded S7 CommunicationPage 28

연습 10.1

연습 10.1: SFB START/STOP를이용한통신

AS1- 400

MPI=3

AS2- 300

1

단방향 S7 단일시스템연결

Local ID-No.

CALL SFB20,DB20REQ= I0.0ID:=W#16#1...CALL SFB 19,DB19REQ=I0.1ID:=W#16#1....

OB 1

S7 Program in AS1-400 S7 Connections

MPI=2

CALL SFB20,DB20REQ= FALSEID:=W#16#1.

.CALL SFB 19,DB19REQ=FALSEID:=W#16#1

.

OB 100

OB 1

단계 절차 참고 1 새 프로젝트„SFB-Comm“을 만듭니다.

2 - 2개의 HW 스테이션, AS1-400과 AS2-300을 만듭니다. - MPI를 통해 HW 스테이션을 네트워크로 연결 - „Accessible Nodes“를 이용해 온라인 연결 확인 - CPU의 이름을 CPU413-AS1과 CPU314-AS2으로 바꿉니다.

3 - CPU413-AS1에서 CPU314-AS2로 S7 단일 시스템 연결을 만듭니다. - 연결 표를S7-400에 로드합니다.

4 - 프로젝트에서S7 프로그램 컨테이너 “SFB_START_STOP“을 만듭니다. - OB100을 만듭니다. - OB100에서 초기화를 위해 CFB „START“ 및 „STOP“을 호출합니다.

5 - OB1을 편집합니다. - 네트워크 “SFB_STOP“을 만들고CFB “STOP“을 호출합니다. - 네트워크 “SFB_START“를 만들고CFB “START“를 호출합니다.

- 시작 이벤트 I 0.0

- 시작 이벤트 I 0.1

6 - QW2의 디지털 표시에 대한 SFB의 출력 파라미터 STATUS (펄스)를 자체 네트워크로 전송합니다.

Page 189: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Basic and Expanded S7 CommunicationPage 29

연습 10.2

연습 10.2: SFB GET/PUT을이용한통신

CALL SFB14,DB14REQ= I0.2ID:=W#16#1...CALL SFB 15,DB15REQ=I0.3ID:=W#16#1....

OB 1

S7 Program in AS1-400

CALL SFB14,DB14REQ= FALSEID:=W#16#1.

.CALL SFB 15,DB15REQ=FALSEID:=W#16#1

.

OB 100

OB 1

AS1- 400 AS2- 300

GET

PUT

QB 0 IB 0

IW 4QW 4

IW 2 QW 12

단계 절차 참고 1 - 프로젝트에서 S7 프로그램 컨테이너

“SFB_GET_PUT“를 만듭니다. - OB100을 만듭니다. - OB100에서 초기화를 위해 CFB “GET“과 “PUT“를 호출합니다.

2 - OB1을 편집합니다. - 네트워크“SFB_GET“를 만들고CFB “GET“를 호출합니다. - “GET” 호출을 할 때 AS2-300에서 IB0를 읽고 그 값을 AS1-400의 QB0에 출력합니다. - 또한 AS2-300에서IW4를 읽고 그 값을AS1- 400의 QW4에 출력합니다.

- 시작 이벤트 I 0.2

3 - 네트워크 “SFB_PUT“를 만들고 CFB “PUT“를 호출합니다. - “PUT” 호출을 할 때 IW2를 AS1-400에서AS2- 300의 QW12로 전송합니다.

- 시작 이벤트 I 0.3

4 - SFB의 출력 파라미터 STATUS를 AS1-400의 QW2의 디지털 표시에 전송합니다.

Page 190: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2The S7-400 Power PLC SystemPage 1

목차 페이지

SIMATIC S7-400: 개요 ......................................................................................................... 2S7-400: S7-300과의본질적인차이점 ...................................................................................... 3기술적데이터 S7-400 CPU (1) ............................................................................................. 4기술적데이터 S7-400 CPU (2) ............................................................................................. 5S7-400 모듈개요 ....................................................................................................... 6S7 - 400 랙 ..................................................................................................................... 7대칭적및비대칭멀티컴퓨팅 ..................................................................... 8중앙디자인구성 ……............................................................................................ 9모듈파라미터: 논리어드레스, 부분프로세스이미지 ................................................... 10모듈파라미터할당: 아날로그모듈 ………........................................................................... 11멀티컴퓨팅구성 .......................................................................................................... 12멀티컴퓨팅에서동기화를위한 SFC 35 ............................................................................... 13중앙확장 1 ................................................................................................................ 14중앙확장 2 ................................................................................................................ 15분산확장 ............................................................................................................... 16S7과 S5 사이의분산연결 …….................................................................................... 17중앙구성확장 ………........................................................................................... 18CPU 모듈 ............................................................................................................................... 19시스템아키텍처 ...................................................................................................................... 20CPU 파라미터: 시동특징 ................................................................................... 21CPU 파라미터: 인터럽트 ........................................................................................................... 22CPU 파라미터: 로컬데이터 ........................................................................................................ 23CPU 파라미터: 액세스보호개념 ........................................................................... 24프로그램조직: 완전재시작및재시작 .................................................................. 25모듈삽입/제거인터럽트 (S7 - 400) ……...................................................................... 26S7-400에서의강제 ................................................................................................................ 27중단점표시줄활성화 ....................................................................................................... 28중단점으로프로그램수행 (S7-400 전용) .................................................................. 29주변출력사용가능 (S7-400 전용) ..................................................................................... 30지점간연결을위한 CP 441 ....................................................................................... 31CP 443-5: PROFIBUS에대한연결 ............................................................................................. 32IM 467: PROFIBUS-DP 마스터인터페이스 ................................................................................. 33CP 443-1: 산업용이더넷에대한연결 ................................................................................... 34

Date: 2002-02-23File: PRO2_11e.1

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

S7-400 파워 PLC 시스템

SF

RUN

STOP

I0.0

I0.1

I0.2

I0.3

I0.4

I0.5

I0.6

I0.7

SIEMENS

S7-200

Micro PLC 212

SIMATICX 2

3 4

Q0.0

Q0.1

Q0.2

Q0.3

Q0.4

Q0.5

Page 191: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2The S7-400 Power PLC SystemPage 2

Date: 2002-02-23File: PRO2_11e.2

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

SIMATIC S7-400: 개요시스템무제한성

고 도점진적 CPU 수행멀티컴퓨팅

21개의확장단위연결가능다양한모듈 (SM, FM, CP)자유자제의네트워크연결가능

퍼포먼스높은프로세싱퍼포먼스(이진명령마다 80 nsec까지)1.6 MByte까지의사용자메모리강력한통신

다양한기능특별함수를통해

S5 쪽에서의특별이동가능

SIMATIC S7-400 SIMATIC S7-400은중상위퍼포먼스범위에대한 PLC입니다. 모듈화및팬이없는디자인, 무제한성및강력성, 확장통신가능성및고성능으로인해프로세스제어엔지니어링영역에서도까다로운작업을해결할수있습니다.

무제한성 S7-400의특징은다음과같습니다.• 스윙아웃기법으로모듈장착이간단합니다. 모든모듈은팬이없이작동하며고 도를제공합니다. S5에비교해서장착공간이 54%감소되었으며 I/O 연결당공간도 45% 감소했습니다.

• S7-400은대칭적및비대칭적멀티컴퓨팅능력뿐만아니라사용가능한CPU 모듈의점진적스펙트럼을통해시스템구성이자유로운퍼포먼스를제공합니다.

• 다양한모듈, 즉모든응용프로그램에대해적절한 CPU와신호모듈, 함수모듈, 통신모듈이존재합니다.

• PROFIBUS-DP를통해 21개까지의확장랙과추가분산단위를장착할수있습니다.

• MPI, PROFIBUS, 산업용이더넷을통한네트워크연결가능성으로인해 S7-400은또한프로세스제어작업에도적당합니다.

퍼포먼스 • 명령마다 80 ns까지의높은프로세싱속도와 1.6 Mbyte까지의사용자메모리로인해확장자동화작업의실현을가능하게합니다.

• 통신버스에서의높은퍼포먼스 (10.5 MBaud)는높은데이터효율을가능하게하며빠른통신을보장합니다.

다양한기능 • 예를들어재시작, RUN에서의제거및삽입모듈등과같은특별함수를통해다양한기능을가집니다.

• 또한 S7-400은 S5에서 S7으로다음과같은특별이동가능성을제공합니다. - S7 중앙랙에 S5-IP 또는WF 삽입- S5 확장단위를 S7 중앙랙에연결

Page 192: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2The S7-400 Power PLC SystemPage 3

차이점 이슬라이드는 S7-400과 S7-300 사이의본질적인차이점을보여줍니다.이러한차이점은다음페이지에서보다상세하게설명됩니다.

Date: 2002-02-23File: PRO2_11e.3

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

S7-400: S7-300과의본질적인차이점

메모리가보다크고 I/O/M/T/C가보다많음입력및출력모듈어드레스가파라미터에할당될수있음

S5에서의 EU가연결될수있고 S5 CP/IP 모듈이사용될수있음보다많은시스템함수, 예를들어프로그램된통신함수블록64KB까지의블록크기및그 2배의 DB 수완전재시작및재시작

시동중에설정의목표값/실제값비교언더파워에있을동안모듈을삭제할수있음

몇개의부분프로세스이미지

OB 우선순위가파라미터에할당될수있음감시장치, 하드웨어및타임오브데이인터럽트를위한몇개의OB16겹까지중첩되는블록각우선순위클래스에서조정될수있는 L-Stack의크기4개까지의 CPU를이용한멀티컴퓨팅

Page 193: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2The S7-400 Power PLC SystemPage 4

CPU 종류 모든퍼포먼스범위에대해해당실행시간, 작업메모리크기및블록번호를가지는해당 CPU가있습니다.

프로그래밍 사용자프로그램은 IEC 1131-3에따라만들어집니다. 다음의새특징이 S7에통합되었습니다.• 아날로그값프로세싱을위한프로그램명령

- 고정소수점및부동소수점계산 (32 비트)- 거듭제곱및제곱근- 로그함수- 삼각함수

• 예를들어다음과같은문제지향적프로그래밍을위한새데이터형

- ARRAY (필드)- STRUCT (구조체)- POINTER (포인터)

• 예를들어다음과같은객체지향적블록개념

- 인스턴스데이터블록을가지는 FB- 복수인스턴스모델

• 예를들어통신등에대한통합시스템블록

프로세스 I/O I/O 모듈의논리어드레스는적당한크기의선형어드레스공간에할당됩니다. P-또는 Q 주변장치는없습니다.통합 DP 인터페이스에연결된슬레이브스테이션의어드레스도이선형어드레스공간에표시됩니다. 이런식으로분산 I/O는사용자프로그램에서중앙I/O와같은방식으로주소가지정될수있습니다.STEP 7은중앙및분산 I/O에대한어드레스파라미터를할당하기위해사용됩니다.

Date: 2002-02-23File: PRO2_11e.4

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

기술적데이터 S7-400 CPU (1)

*) 1 Byte = 8 digital I/Os 2 Byte = 1 analog I/O

2진명령문에대한실행시간로드/전송 (워드)16-Bit 고정소수점 (+/-)IEEE 부동소수점 (+/-)

사용자메모리작업메모리로드메모리 (정수.)로드메모리 (외부)

어드레스메모리마커 (Bit)클럭메모리타이머카운터

블록종류/번호FBFCDB

프로세스이미지/크기(입력/출력)

최대 I/O 어드레스공간

통합인터페이스

CPU 414-1

100 nsec100 nsec100 nsec600 nsec

128 KB8 KB15 MB

81928256256

51210241023

p. 256 Byte

p. 2 KByte*)

MPI

CPU 416-1

80 nsec80 nsec80 nsec480 nsec

512 KB16 KB15 MB

163848512512

204820484095

p. 512 Byte

p. 4 KByte*)

MPI

CPU 414-2 DP

100 nsec100 nsec100 nsec600 nsec

128/384 KB8 KB15 MB

81928256256

51210241023

p. 256 Byte

p. 4 KByte*)

MPI, DP

CPU 412-1

200 nsec200 nsec200 nsec1200 nsec

48 KB8 KB15 MB

40968256256

256256511

p. 128 Byte

p.0.5KByte*)

MPI

CPU 413-2 DP

200 nsec200 nsec200 nsec1200 nsec

72 KB8 KB15 MB

40968256256

256256511

p. 128 Byte

p. 1 KByte*)

MPI, DP

CPU 413-1

200 nsec200 nsec200 nsec1200 nsec

72 KB8 KB15 MB

40968256256

256256511

p. 128 Byte

p.1 KByte*)

MPI

CPU 416-2 DP

80 nsec80 nsec80 nsec480 nsec

0.8/1.6 MB16 KB15 MB

163848512512

204820484095

p. 512 Byte

p. 8 KByte*)

MPI, DP

Page 194: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2The S7-400 Power PLC SystemPage 5

통신 S7-400은몇개의다른통신가능성을가집니다.1. 통합다지점인터페이스 (Multi-Point-Interface: MPI interface), PG/PC, HMI시스템, M7-300/400, 추가 S7-300/400 시스템이액티브노드로서연결될수있는다지점가능인터페이스

2. 분산 DP 마스터시스템 (예: ET200)을 CPU에연결하기위한 413-2/414-2/416-2 CPU를가지는통합 PROFIBUS-DP 인터페이스

3. PROFIBUS와산업용이더넷버스시스템에연결하기위한 CP443과같은통신프로세서

4. 추가 S7-, S5-또는외부제어기및시스템에대한강력한지점간 (PtP)통신을위한 CP441과같은통신프로세서

S7 기능 S7 통신기능은다음 2가지종류로나누어집니다.S7 기본통신: MPI를통해또는이러한유틸리티를가지는한스테이션에서통신파트너 (S7-300/400) 사이에소량의데이터 (76 byte까지)를교환할수있습니다. 관련통신 SFC는운영체제에서통합됩니다. 이 SFC는구성된연결이나통신리소스의할당을요구하지않으며통신파트너의어드레싱은 SFC 호출에서직접이루어집니다. S7 확장통신: 이들유틸리티를가지는네트워크과관계없이보다큰데이터양(64 Kbyte까지)을교환할수있습니다. 관련 SFB는 S7-400의경우운영체제에서통합되고 (S7-300의경우오직서버에서만통합) SFB 호출을할때구성된연결을필요로합니다. 연결은 MPI, PROFIBUS, 산업용이더넷과 PtP 네트워크에서구성될수있습니다.

공유데이터 (GD) 공유데이터교환은 MPI 프로토콜의 FDL 레이어가가지는 “멀티캐스트”가능성을바탕으로합니다. GD 통신을이용해 CPU (최대 15대의 CPU) 사이에서작은데이터패키지를순환적으로교환합니다.

Date: 2002-02-23File: PRO2_11e.5

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

조직블록자유순환타임오브데이인터럽트타임딜레이인터럽트감시장치인터럽트하드웨어인터럽트멀티컴퓨팅인터럽트시동비동기오류동기오류

로컬데이터

최대블록길이

시퀀스수준마다블록중첩깊이

프로그램드리븐통신, MPI, K bus에대한최대연결수

MPI, 전역데이터를통한순환데이터통신GD 주기당데이터용량

CPU 당 GD 주기

GD 주기당 GD 패키지보내기

GD 주기당 GD 패키지받기

CPU 414-1

OB 1OB 10-13OB 20-23OB 32-35OB 40-43OB 60OB 100,101OB 80-87OB 121,122

8 KB

64 KB16

32

54 ByteUser Data

8

1

2

CPU 416-1

OB 1OB 10-17OB 20-23OB 30-38OB 40-47OB 60OB 100,101OB 80-87OB 121,122

16 KB

64 KB16

64

54 ByteUser Data

16

1

2

CPU 414-2

OB 1OB 10-13OB 20-23OB 32-35OB 40-43OB 60OB 100,101OB 80-87OB 121,122

8 KB

64 KB16

32

54 ByteUser Data

8

1

2

CPU 412-1

OB 1OB 10,11OB 20,21OB 32,35OB 40,41OB 60OB 100,101OB 80-87OB 121,122

4 KB

64 KB16

8

54 ByteUser Data

8

1

2

CPU 413-2

OB 1OB 10,11OB 20,21OB 32,35OB 40,41OB 60OB 100,101OB 80-87OB 121,122

4 KB

64 KB16

16

54 ByteUser Data

8

1

2

CPU 413-1

OB 1OB 10,11OB 20,21OB 32,35OB 40,41OB 60OB 100,101OB 80-87OB 121,122

4 KB

64 KB16

16

54 ByteUser Data

8

1

2

CPU 416-2

OB 1OB 10-17OB 20-23OB 30-38OB 40-47OB 60OB 100,101OB 80-87OB 121,122

16 KB

64 KB16

64

54 ByteUser Data

16

1x 16 x 54 Byte=864 Byte

2 x 16 x 54 Byte=1728 Byte

기술적데이터 S7-400 CPU (2)

Page 195: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2The S7-400 Power PLC SystemPage 6

랙 S7-400의경우다음의랙을사용할수있습니다.UR1/UR2는통합랙으로설계되어있으며중앙랙이나확장랙으로사용될수있습니다. 이랙은 P 버스와 K 버스를가지는 18/9 단일너비슬롯을가집니다.ER1/ER2는 K 버스가없는확장랙으로설계되어있습니다. 또한세그먼트중앙랙 CR2는비대칭멀티컴퓨팅에사용할수있습니다.

S7-CPU S7-400 CPU는모든 STEP 7 사용자프로그램에대해상위버전과호환이가능합니다. 이 CPU는통합 CP-마스터인터페이스를가지는단일너비및이중너비의 2가지버전으로사용할수있습니다. 최대 64 DP-슬레이브스테이션에대해통합 DP 인터페이스를통해주소를지정할수있습니다. 최대보오속도는 12 Mbaud입니다.

FM 포지셔닝, 제어및카운팅을위한 FM이 S5-IP 스펙트럼을대체합니다. 또한 M7-FM은프로세스제어를위한자유 C-프로그래머블함수모듈로서삽입될수있습니다.

IM SIMATIC S7과 SIMATIC S5 확장랙은인터페이스모듈을통해 S7-400 중앙랙에연결될수있습니다.

CP CP 모듈은다음네트워크에대한 CPU의연결을가능하게합니다.• 산업용이더넷 (CP 443-1)• PROFIBUS (CP 443-5)• 지점간네트워크 (CP441-1과 CP441-2)더욱이모든 CPU는 MPI 네트워크와의연결을위한 MPI 인터페이스를가집니다. 최대 32개의스테이션이 MPI 네트워크에연결될수있습니다.

Date: 2002-02-23File: PRO2_11e.6

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

S7-400 모듈개요

1

2

3

PSPS

230V / 4A230V / 10A230V / 20A24V / 4A24V / 10A24V / 20A

32 x DC 24V 16 x UC 24-60V (IR + Diagn.)16 x UC 120-230V16 x UC 120 V (IR + Diagn.)32 x AC 120V16 x AC 230V (IR + Diagn.)

DIDI

32 x DC 24V, 0.5A16 x DC 24V, 2A16 x AC 120/230V, 2A16 x UC 5..230V, 5A, Relay8 x AC 120/230V, 5A

DQDQ

8 x U/I, 13 Bit8 x U/I, 14 Bit

AQAQ

8 x U/I 또는 4 x R, 13 Bit채널당 25 ms 전환시간

8 x U/I/TCor. 4 x R/RTD, 채널당 14 Bit, 25 ms 전환시간선형화및고르게하기포함

8 x U/I or 4 x R, 14 Bit채널당 50 us 전환시간

16 x U/I/TC 또는 8 x R/RTD, 16 Bit,채널당 2,5/25ms 전환시간선형화및고르게하기포함

AIAI

3m with K-Bus3m w/o K-Bus100m with K-Bus600m to S5 IM314

IMIM

RacksRacks

UR 1,2ER 1,2CR 2

S7-CPUsS7-CPUs

CPU 412-1CPU 413-1CPU 413-2 DPCPU 414-1CPU 414-2 DPCPU 416-1CPU 416-2 DP

FMFM

2 channel countercam controllerPositioning for servomotorsPositioning for rapid/creep feed drivesM7-FM

CPCP

1 채널지점간2 채널지점간이더넷Profibus

M7-CPUsM7-CPUs

CPU 486-3CPU 488-3CPU 488-4CPU 488-5

Page 196: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2The S7-400 Power PLC SystemPage 7

UR 1 / UR 2 UR1/UR2는중앙및확장랙으로서사용될수있습니다. 이들은 I/O 신호의고속교환 (1.5 microsec./ Byte)과신호모듈프로세스데이터에대한시간이중요한액세스를위해병렬보조버스 (P-버스)를가집니다. 또한 UR1 (18 슬롯) / UR2 (9 슬롯)는 K-버스스테이션 (S7/M7-CPU, FM, CP) 사이의고속교환 (10.5 MBaud)을위한직렬의강력한통신버스 (K-Bus)를가집니다.P-BUS와 K-BUS를분리함으로써각작업에자체버스시스템을할당합니다. 제어및통신은자체의별도데이터하이웨이를가지며따라서고르고충돌이없는제어및통신작동을제공합니다.

CR2 세스먼트랙 CR 2는각각 10개의슬롯과 8개의슬롯을가지는 2개의세그먼트로나누어진 I/O 버스를가집니다. 각세그먼트에대해한개의 CPU를사용될수있습니다. 2개의 CPU는각각 P-버스세그먼트에대한마스터이며자신의SM에만액세스할수있습니다. 작동모드전환은동기화되지않습니다. 즉, CPU는다른작동모드에있을수있습니다. 2개의 CPU는연속적인 K 버스를통해통신할수있습니다.

왜 CR2? 모든 CPU (최대 4개)는대칭적멀티컴퓨팅에서같은작동모드, 예를들어 STOP을가집니다. 즉작동모드전환은동기화됩니다.

ER 1 / ER 2 ER1 (18 슬롯)/ER2 (9 슬롯)는 K-버스, 경보선, 모듈에대한 24V 전원공급, 배터리공급이없습니다.

노슬롯규칙 예외: 제일왼쪽에있는 PS와제일오른쪽의 ER에있는수신 IM

Date: 2002-02-23File: PRO2_11e.7

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

S7 - 400 랙

Rack

P Bus

K Bus

UR 1/ UR 2

세그먼트랙

CR 2

Exp. Rack

P Bus

ER 1/ ER 2

P Bus Segment 1

K Bus

P Bus Segment 2

1 ... 4 CPUs( =멀티컴퓨팅)

다른작동유형을가지는 2개의 PLC.그러나공통된 K Bus를통해 CPU 간에통신

또한확장랙으로사용될수있음

Page 197: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2The S7-400 Power PLC SystemPage 8

멀티컴퓨팅 멀티컴퓨팅은시스템의구성을자유롭게합니다. 즉, 멀티컴퓨팅을통해시스템퍼포먼스와메모리, 비트메모리, 타이머, 카운터, 등과같은시스템리소스를CPU를추가로삽입함으로써증가시킬수있습니다. 그런방식으로예를들어전체작업은몇개의 CPU 사이에서나누어질수있습니다.

대칭적 대칭적멀티컴퓨팅에서모든 CPU (최대 4개의 CPU)는한개의공통 P 버스와 K 버스에서작업을하며모든신호모듈의어드레스가표시되는오직한개의공통I/O 어드레스공간만이존재합니다.그러나 UR1 또는 UR2에삽입되는모든모듈은구성중에 CPU에할당되어야합니다. 그런후에 CPU는다음과같은이모듈에대한 “마스터기능”을맡게됩니다.• 모듈인터럽트의수신

• 모듈파라미터할당

• L PBxx, T Wxx, 등을통한모듈에대한액세스작동모드전환은동기화됩니다. 즉, 모든 CPU는같은작동모드를가집니다. 외부에서볼때자동화스테이션은한개의큰 PLC로나타납니다.

비대칭 비대칭멀티컴퓨팅은 CR2를이용해얻을수있습니다. 세그먼트랙은 2개의별도 P 버스세그먼트를포함합니다.I/O 버스세그먼트당한개의 CPU가설치됩니다. I/O 모듈은로컬로이 CPU에할당됩니다. CPU는작동모드전환을동기화하지않고다른 CPU와는별도로작동합니다. 모든 CPU는자체 I/O 어드레스공간을가집니다.공통의통신버스는추가하드웨어없이부분단위사이의통신을가능하게합니다. 외부에서볼때이것은 K 버스를통해통신을하는 2개의개별제어기와유사합니다. 추가의장점은다음과같습니다.• 제어캐비넷에서의공간절감

• 오직한개의랙과한개의전원공급만이요구되기때문에비용절감

Date: 2002-02-23File: PRO2_11e.8

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

대칭적및비대칭멀티컴퓨팅

공통통신버스

공통 I/O 버스대칭적멀티컴퓨팅

비대칭멀티컴퓨팅

I/O bus-Segment 1 I/O bus-Segment 2

segmented rack

공통통신버스

Page 198: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2The S7-400 Power PLC SystemPage 9

Date: 2002-02-23File: PRO2_11e.9

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

중앙디자인구성

HW 구성도구활성화

랙구성

중앙디자인구성 중앙디자인을위해모듈을중앙랙의 CPU (CPU들) 옆에배열하고추가확장랙에서도같은작업을합니다.

구성만들기 스테이션구성을열려면다음절차를따릅니다.

1. 제일먼저원하는하드웨어스테이션마다클릭하여선택합니다. 2. 메뉴항목 Edit -> Object를선택하고오른쪽창에서 Hardware 기호를열거나더블클릭합니다. 선택된스테이션의스테이션창이열립니다.

3 카탈로그기호를클릭하면현재구성요소를가지는 HW 카탈로그가나타납니다. 이카탈로그에서 “드래그드롭”으로랙과모듈을스테이션창이나각랙의구성표로복사합니다.

카탈로그보기 "+" 문자를클릭하면관련하위구조가열리고 “-”문자를클릭하면하위구조가닫힙니다. 모듈을선택한후모듈의가장중요한기술데이터가카탈로그창의상태표시줄에나타납니다.

랙선택 스테이션창과하드웨어카탈로그를연후다음절차를따릅니다.1. 스테이션종류에따라항목 S7-300과 S7-400을선택합니다.2. 제일먼저하위항목 RACK을열고랙또는설치레일을왼쪽의스테이션창으로드래그합니다. 빈테이블이각랙에대해표시됩니다. 랙은 STEP 7의구성표로표시됩니다. 이들구성표는랙에설치될수있는모듈수와같은입력라인을가집니다..

3. 그런후에 “드래그드롭”을사용하여원하는모듈을왼쪽빈표의슬롯에복사합니다.

Page 199: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2The S7-400 Power PLC SystemPage 10

일반적내용 S7 -400 시스템에는기본 I/O 모듈어드레싱이있습니다. 이기본값은파라미터데이터를가지는시스템데이터블록이 CPU에다운로드될때까지활동합니다.

기본어드레스 모듈기본어드레스는다음에따라달라집니다.• 랙의번호. 번호는수신-IM (1..21)에서설정되고중앙랙은항상 0번을가집니다.

• 랙의모듈슬롯. 모듈의기본어드레스는다음과같이이들두값에서계산됩니다.

디지털시작어드레스 = [(랙번호) x 18 + 슬롯번호 -1] x 4아날로그시작어드레스= [(랙번호) x 18 + 슬롯번호 -1] x 64 + 512

부분프로세스이미지 완전한프로세스이미지외에도 8개까지의부분프로세스이미지에대해파라미터를할당할수있습니다. 부분프로세스이미지는시스템함수 (SFC 26/27)를통해사용자프로그램에서갱신될수있습니다. 그런방식으로사용자는원래 OB1 우선순위클래스를위해설계되었던프로세스이미지개념을다른우선순위클래스, 예를들어제어알고리즘을위한OB35에도사용할수있습니다. 이경우현재제어알고리즘의실제값또는목표값을다루는출력및입력모듈에입력또는출력의부분프로세스이미지를할당합니다. 그런후 OB35에서다음순서를따라진행할수있습니다.1. SFC26에의해현재실제값을읽어관련부분프로세스이미지입력표에넣습니다.

2. 제어알고리즘을호출합니다. 제어알고리즘은새목표값을해당부분프로세스이미지출력표에씁니다.

3. SFC27에의해부분프로세스이미지출력표를 I/O에출력합니다.

Date: 2002-02-23File: PRO2_11e.10

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

모듈파라미터: 논리어드레스, 부분프로세스이미지

Page 200: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2The S7-400 Power PLC SystemPage 11

모듈파라미터 파라미터를할당할수있는모든모듈, 예를들어아날로그모듈에 HW 구성할당 도구를이용해서파라미터를할당할수있습니다.

아날로그모듈의경우일반적으로파라미터할당에대한몇개의레지스터가있습니다. 따라서예를들어 S7-400 아날로그모듈의개별레지스터에서다음파라미터가설정될수있습니다.

어드레스 • 모듈의시작어드레스

• 부분프로세스이미지번호

• 하드웨어인터럽트 OB

입력 – 1부 • 하드웨어인터럽트및진단인터럽트를위해사용가능

• 다음과같은채널별진단감시의사용가능

- 배선끊어짐확인- 참조채널오류- 언더플로우- 오버플로우- 접지누전

입력 – 2부 • 측정종류

• 측정범위

• 방해빈도억제

• 고르게하기

• 입력할때도달한주기의끝

• 하드웨어인터럽트에대한상한값및하한값

Date: 2002-02-23File: PRO2_11e.11

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

모듈파라미터할당: 아날로그모듈

Page 201: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2The S7-400 Power PLC SystemPage 12

Date: 2002-02-23File: PRO2_11e.12

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

멀티컴퓨팅구성

개요 멀티컴퓨팅은 S7-400 중앙랙에서몇개 CPU (2개에서 4개)가동기적으로작동하는것입니다.CPU가같은시동모드 (완전재시작또는재시작)를가진다면 CPU는함께시동되고또한함께 STOP 모드로들어갑니다.

멀티컴퓨팅설정 멀티컴퓨팅은적당한랙에몇개의멀티컴퓨팅가능 CPU를삽입함으로써내재적으로발생합니다. CPU가멀티컴퓨팅이가능한지의여부는 “Hardware Catalog”의인포텍스트에서결정될수있습니다.멀티컴퓨팅에참여하는 CPU는공통어드레스영역을모듈에따라 “나눕니다”즉, 모듈의어드레스영역은항상배타적으로한개의 CPU에연관되어있습니다.

절차 멀티컴퓨팅은다음과같이구성됩니다.1. 멀티컴퓨팅에필요한모든 CPU를배치합니다.2. CPU를더블클릭하고 “Multicomputing“레지스터에서 CPU 번호를조정합니다.

3. 모듈을특정 CPU에할당하려면다음과같이진행합니다.- 모듈을랙에정렬합니다.- 모듈을더블클릭하고 "Addresses“레지스터를선택합니다.- “CPU No.”필드에서원하는 CPU의번호를선택합니다.인터럽트트리거모듈을이용하여 CPU 할당이레지스터 "Inputs" 또는

"Outputs“에대상 CPU로서표시됩니다.명령 View -> Filter -> CPUx 모듈을통해특정 CPU에할당된모듈이표에시각적으로두드러지게할수있습니다.스테이션구성은모든 CPU에오직 “완전하게만”다운로드될수있습니다. 이런방식으로일관되지않는구성을방지합니다.

Page 202: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2The S7-400 Power PLC SystemPage 13

설명 SFC 35 ”MP_ALM”의호출은멀티컴퓨팅모드에서멀티컴퓨팅인터럽트를유발합니다. 이것은모든연관된 CPU에서 OB60의동기화된시작을초래합니다. 단일프로세서작동과세그먼트랙의작동에서 OB60은 SFC 35가호출되는 CPU에서만시작됩니다.입력파라미터 JOB을이용하여원하는멀티컴퓨팅인터럽트에대한원인을확인할수있습니다. 이작업식별자는모든연관 CPU에전송되고 OB 60에서평가될수있습니다.프로그램의모든장소에서 SFC 35 ”MP_ALM”을호출할수있습니다.호출은RUN 모드에서만이루어질수있기때문에멀티컴퓨팅인터럽트는 START-UP 모드에서호출될때무시됩니다. 이것은함수값을통해사용자에게통고됩니다.

Date: 2002-02-23File: PRO2_11e.13

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

멀티컴퓨팅에서동기화를위한 SFC 35

"MP_ALM"EN ENO

JOB RET_VAL ??.???.?

파라미터 선언 데이터형 메모리영역 설명

JOB INPUT BYTE I, Q, M, D, L, Const. 작업식별자

가능한값: 1에서 15RET_VAL OUTPUT INT I, Q, M, D, L 함수를프로세싱하는중에오류가발생하면

반환값이오류코드를포함

W#16#0000: 오류가발생하지않았음W#16#8090: 입력파라미터 JOB은잘못된값을포함

W#16#80A0: 진행되고있는멀티컴퓨팅의 OB 60 프로세싱이자체 CPU나또다른 CPU에서완료되지않았음

W#16#80A1: 잘못된작동모드(RUN 대신 START-UP을씀)

Page 203: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2The S7-400 Power PLC SystemPage 14

중앙집중적구성 1 인터페이스모듈 IM 460-1/IM 461-1은 1.5 m까지의로컬범위에서확장랙을 S7 중앙랙 (UR1, UR2, CR2)에연결하기위해삽입됩니다. 중앙집중적확장은다음특징을가집니다.• 최대 2개의확장랙이연결될수있습니다 (인터페이스마다 1개).• 중앙랙과확장랙사이의최대거리는 1.5 m입니다.• 최대 2개의 Send-IM 460-1이중앙랙마다삽입될수있습니다.• Send-IM 460-1 인터페이스모듈은 P 버스만 (K 버스는아님) 확장랙에전송합니다. 더욱이확장랙의모듈에는커넥터케이블을통해 5 V 전압 (슬롯당최대 5 A)이공급됩니다.이런이유로확장랙에는추가의전원공급모듈이삽입될수없습니다.

• Send-IM 460-1에서사용되지않는인터페이스가종료될필요는없습니다.그러나 Receive-IM 461-1에서사용되지않는인터페이스는터미네이터로종료되어야합니다.

• 이것을사용해서확장랙의번호가선택되어야하는코딩스위치는 Receive-IM 461-1에있습니다.

참고 최대 21개의확장랙이중앙랙에연결될수있습니다.Receive-IM은항상확장랙의가장오른쪽슬롯에삽입되어야합니다.

Date: 2002-02-23File: PRO2_11e.14

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

중앙확장 1

P 버스와전원공급이전송됨. K 버스는없음

체인당 1 ER

CR과 ER 사이의최대거리는1.5 m임

CPUPS 40x IM

CR

SEND IM 460-1

IM

terminator

RECEIVE IM 461-1

ER

Page 204: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2The S7-400 Power PLC SystemPage 15

중앙집중적구성 2 인터페이스모듈 IM 460-0/IM 461-0은 3 m까지의로컬범위에서확장랙을 S7 중앙랙 (UR1, UR2, CR2)에중앙연결하기위해삽입됩니다.중앙집중적확장은다음특징을가집니다.• 최대 8개의확장랙이연결될수있습니다 (인터페이스마다 4개).• 중앙랙과가장먼확장랙사이의최대거리는 3 m입니다.• 최대 6개의 Send-IM 460-0이중앙랙마다삽입될수있습니다.• Send-IM 460-0 인터페이스모듈은 P 버스와 K 버스를확장랙에전송합니다.확장랙에있는모듈은커넥터케이블을통해전압을공급받지않습니다.이런이유로각확장랙은자체전원공급모듈이삽입되게해야합니다.

• Send-IM 460-0에서사용되지않는모듈은종료될필요가없습니다. 그러나Receive-IM 461-0에서사용되지않는모듈은터미네이터로종료되어야만합니다.

• 이것을이용해확장랙의번호가선택되어야하는코팅스위치는 Receive-IM461-0에있습니다.

참고 최대 21개의확장랙이한개의중앙랙에연결될수있습니다.K 버스는처음의 6개확장랙에만전송됩니다. 즉 FM과 CP와같은지능형모듈은처음 6개의 ER에서만작동될수있습니다.Receive-IM은항상확장랙에서가장오른쪽슬롯에만삽입되어야합니다.

Date: 2002-02-23File: PRO2_11e.15

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

중앙확장 2

CPUPS 40x IM

CR

PS 40x IM

1. ER

PS 40x IM

2. ER

PS 40x IM

3. ER

SEND-IM 460-0 Receive-IM

Receive-IM

PS 40x IM

4. ER

Receive-IM

Receive-IM 461-0

terminator

P 버스와 K 버스가전송됨.전원공급은없음

체인당 4 ER

CR과가장먼 ER 사이의거리는 3 m임

Page 205: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2The S7-400 Power PLC SystemPage 16

분산구성 인터페이스모듈 IM 460-3/IM 461-3은거리범위가 100 m까지인 S7 중앙랙(UR1, UR2, CR2)에확장랙을분산연결하기위해삽입됩니다. 분산확장은다음특징을가집니다.• 최대 8개의확장랙이연결될수있습니다 (인터페이스마다 4개).• 중앙랙과가장먼확장랙사이의최대거리는 100 m입니다.• 최대 6개의 Send-IM 460-3이중앙랙마다삽입될수있습니다.• Send-IM 460-3 인터페이스모듈은 P 버스와 K 버스를확장랙에전송합니다.확장랙에있는모듈은커넥터케이블을통해전압을공급받지않습니다.이런이유로각확장랙은자체전원공급모듈이삽입되게해야합니다.

• Send-IM 460-3에서사용되지않는모듈은종료될필요가없습니다. 그러나Receive-IM 461-3에서사용되지않는모듈은터미네이터로종료되어야합니다.

• 이것을이용해확장랙의번호가선택되어야하는코딩스위치는 Receive-IM461-3에있습니다.

참고 최대 21개의확장랙이한개의중앙랙에연결될수있습니다.K 버스는처음 6개의확장랙에만전송됩니다. 즉 FM과 CP와같은지능형모듈은처음 6개의 ER에서만작동될수있습니다.Receive-IM은항상확장랙에서가장오른쪽슬롯에삽입되어야합니다.

Date: 2002-02-23File: PRO2_11e.16

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

분산확장

P 버스와 K 버스가전송됨.전원공급은없음

체인당 4 ER

CR과가장먼 ER 사이의최대거리는 100 m임

CPUPS 40x IM

CR

PS 40x IM

1. ER

PS 40x IM

2. ER

PS 40x IM

3. ER

SEND-IM 460-3 Receive-IM

Receive-IM

PS 40x IM

4. ER

Receive-IM

Receive-IM 461-3

terminator

Page 206: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2The S7-400 Power PLC SystemPage 17

S5-ER을이용한 S5 패 리확장랙 (ERs 183U/185U, 701-2, 701-3)을이용하여 S7-400의중앙분산구성 랙 (UR1/UR2/CR2)을분산구성하는작업은 5V 전원공급과 K 버스없이

인터페이스모듈 IM463-2 (Send-IM) / IM314 (Receive-IM in S5 ER)에의해이루어질수있습니다.4개까지의 IM463-2가중앙랙에삽입될수있습니다.• 체인당최대 4개의확장랙• CR과가장먼 ER 사이의최대거리는 600 m• 처음의 S5-ER이 S5-135U/-155U에대한 ER-183U/ER-185U이거나 S5-115U에대한 ER-701-2/ER-701-3이면보다오래된 S5 시스템이 S7-400 중앙랙에연결될수있습니다.

나머지 ER은 S5 정의에따라확장될수있습니다 (ST50 참고).

Date: 2002-02-23File: PRO2_11e.17

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

S7과 S5 사이의분산연결

체인당 4개까지의 S5 확장랙이연결될수있음

중앙랙에 4개까지의 Send-IM 랙이가능

체인에서 CR부터가장먼 ER까지최대거리: 600m

병렬 S5 버스가전송됨

가능한 S5 확장랙:ER 183 U, ER 185 U,ER 701-2, ER 701-3다른 S5 ERS7-400 CR에 32개까지의 S5 ER 가능

terminator

S5-ER S5-ER

S5-ER S5-ER

S5-ER S5-ER

S5-ER S5-ER

PS

CPU

S7CR

Send-IM

IM314 IM314

Page 207: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2The S7-400 Power PLC SystemPage 18

Date: 2002-02-23File: PRO2_11e.18

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

중앙구성확장

더블클릭

구성확장 추가의랙을중앙랙에 “연결”하고 “설치”하려면다음과같이진행합니다.1. 하드웨어카탈로그에서원하는 (확장) 랙을선택합니다.2. Drag&Drop을사용하여차례로랙을스테이션창에드래그합니다.3. 원하는모듈을랙에삽입합니다.중요: 수신인터페이스모듈은중앙랙의송신인터페이스모듈에연결되기전에모든확장랙에배열되어야합니다.

4. S7-400 전용: 확장랙의 Send-IM과 Receive-IM 사이에연결을만들려면다음과같이진행합니다.- Send-IM을더블클릭합니다.- "Connection“레지스터를선택합니다. 연결되지않은모든랙이목록에표시됩니다.

- 개별적으로랙을표시하고 “Connect”명령버튼을사용하여이들랙을원하는 Send-IM (C1과 C2) 인터페이스에연결합니다.

그런후랙사이의연결선이스테이션창에표시됩니다.

CR2 특징 CR2 중앙랙의경우모듈을확장랙에삽입하기전에우선각 CPU의 Send-IM에대한빈 (Receive-IM까지) 랙의연결을만들어야합니다.

Page 208: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2The S7-400 Power PLC SystemPage 19

배터리소켓 내부배터리또는전원공급의교체나교환을가능하게하는 2.5mm 바나나플러그를가지는외부 "EXT-BATT“를통해 RAM을백업하기위한 DC 5...15V의연결을가지는추가외부배터리전압공급

MPI 인터페이스 MPI 인터페이스는프로그래밍장치와작동자인터페이스시스템을연결하기위해사용됩니다.

통합 PROFIBUS-DP 413-2/414-2/416-2 CPU는 ET200M, ET200U (B/C), S7-300,등과같은분산인터페이스 I/O를연결하기위한통합 PROFIBUS-DP 마스터인터페이스를가집니다.

메모리카드 RAM이나 FLASH-EPROM 카드는개별사양에따라외부로드메모리로서 S7-400 CPU에삽입될수있습니다.• 64KByte, 256KByte, 1MByte, 2MByte 메모리를가지는 RAM 카드는배터리를통해전원공급단위에서백업됩니다.

• 64KByte, 256KByte, 1MByte, 2MByte, 4MByte, 8MByte, 16MByte를가지는FLASH-EPROM-CARD

작동모드 MRES = 메모리리셋기능 (Memory REset) STOP = STOP 모드. 즉, 프로그램프로세싱이없거나 (OD) Output Disable (출력사용못함) 상태에있는 I/ORUN = 프로그램이실행되고 PC에서읽기전용액세스만이가능RUN-P= 프로그램이실행되고 PG에서읽기및쓰기액세스가가능

시동종류스위치 CRST= CPU가모드선택기로시작될때 CPU의완전재시작 (콜드재시작)WRST= CPU가모드선택기로시작될때 CPU의재시작 (웜재시작)

Date: 2002-02-23File: PRO2_11e.19

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

CPU 모듈

EXT.-BATT.

5...15V DC

X3

X1

414 - 2XG00 - 0AB0

CPU 414-2X 2 3 4

INTFEXTF

STOPRUN

CRSTFRCE

CRSTWRST

RUN-PRUN

STOPCMRES

INTFEXTFBUSF

DP

EXT.-BATT.

5...15V DC

X1

421 - 1BL00 - 0AA0

DI 32xDC24VX 2 3 4

INTFEXTF

STOPRUN

CRSTFRCE

CRSTWRST

RUN-PRUN

STOPCMRES

CPU 412-1CPU 413-1CPU 414-1CPU 416-1

CPU 413-2 DPCPU 414-2 DPCPU 416-2 DPLED 표시

시동선택기스위치

모드선택기(키스위치)

메모리카드슬롯

MPI

외부버퍼공급

LED 표시

DP 인터페이스

Page 209: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2The S7-400 Power PLC SystemPage 20

CPU 구성 통신이나누어진시스템의구성에대해가지는의미때문에 S7-400 CPU는다음2개의기능단위로구분됩니다.• 프로세스부분

• 통신부분

P-버스 CPU의프로세스부분은 P 버스를통해신호모듈에대한액세스를시작합니다. P 버스는몇바이트의데이터교환 (보통 4 바이트)을위해최적화됩니다.S7-400 시스템의 P 버스는다음특징을가집니다.• 8 비트너비• 병렬• 액세스시간 1.5 µs

K-버스 K 버스 (통신버스)는 FM 또는 CP와같은지능형통신가능모듈에대한비동기데이터교환을맡습니다. K 버스는보다큰데이터량의교환을위해최적화됩니다.K 버스는멀티마스터버스로서설계되어있습니다. 즉, K 버스는 MPI 인터페이스의논리확장입니다. 이것은다음특징을가집니다.• 직렬• 보오속도: 10.5 MBits/sec• 최대 127개노드 (이론적)

MPI MPI 인터페이스를통한통신은다음특징을가집니다.• 직렬• 보오속도: 187.5 KBits/sec• 최대 32개노드

Date: 2002-02-23File: PRO2_11e.20

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

시스템아키텍처

CPU

사용자메모리

프로세스부분

통신

PROFIBUS-DP-Master

MPI

K bus

P bus

PROFIBUS-DP

SMFM CPFM

PG OP PLC

ET200 PG

뒷판버스

Norm-Slave

Page 210: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2The S7-400 Power PLC SystemPage 21

Setpoint/Actual 이필드를비활성화함으로써 S7에서실제구성이 (구성에따라)목표값구성과Configuration 다르면시동후에 CPU가 Stop 모드로가게합니다.

Hardware Test 이기능을활성화함으로써 CPU의내부 RAM이시동중에테스트됩니다.

Delete PIQ.. S7-400 재시작에서나머지스캔주기가처리된후프로세스이미지가기본적으로삭제됩니다. 이특징을원하지않으면선택을해제할수있습니다.

Disable Restart S7-400의경우수동시동에서완전재시작제한

POWER ON S7-400의경우다음중에서선택할수있습니다. • 완전재시작 (비보유영역의삭제와프로그램프로세싱은블록 OB1의첫번째인스트럭션으로시작)

• 재시작 (모든메모리영역은영향을받지않으며프로그램은인터럽트가일어난지점에서계속됨)

Monitoring Times 다음시간이지정될수있습니다.• 모든모듈이 CPU에보고될때까지의최대대기시간• 모듈이파라미터전송을확인할때까지의최대시간

• S7-400의경우전원장애후최대인터럽트시간, 이때재시작이여전히수행될수있음

Date: 2002-02-23File: PRO2_11e.21

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

CPU 파라미터: 시동특징

Page 211: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2The S7-400 Power PLC SystemPage 22

Priorities S7-400의경우, 인터럽트블록우선순위를변경하고이에따라인터럽트가동시에발생할때프로세싱시퀀스를세울수있습니다.설정된번호가높을수록우선순위가높습니다 !

Time-of-Day Interrupt 여기에서일회적프로그램프로세싱에대한시작시점을설정하거나이시점부터의반복활동을설정할수있습니다 (매분, 시간, 일, 주, 달, 년).그런방식으로타임오브데이인터럽트는예를들어 CPU 실시간클럭에서여름과겨울시간을조정할수있습니다.

Cyclic Interrupt 프로그램부분은순환인터럽트를이용해고정된간격으로처리될수있습니다. S7-300의경우이작업을위해블록 OB 35가있었으며이블록은기본값으로매100 ms마다처리됩니다. 타이밍코드는 1에서 60000 ms까지의범위에서설정될수있습니다. 그런방식으로예를들어고정된간격 (샘플링간격)으로처리되는제어작업을얻을수있습니다. S7-400에는다른시간간격을가진 8개의다른순환인터럽트가있습니다.모든순환인터럽트가한시점에서처리될필요가없도록 “Phase Offset”항목을사용하여순환인터럽트의호출을어긋나게배치할수있습니다.

Date: 2002-02-23File: PRO2_11e.22

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

CPU 파라미터: 인터럽트

Page 212: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2The S7-400 Power PLC SystemPage 23

Local Data 위의레지스터를이용해사용자는수준 (OB)마다원하는로컬데이터사양(스크래치패드메모리)을결정할수있습니다.

만약한수준의로컬데이터범위가초과되면시스템은 Stop 상태로분기됩니다. 한수준에서의로컬데이터범위는로컬데이터범위를가지는블록이블록엔드로닫힐때다시증가될수있습니다.

로컬데이터가기호적으로주소가지정되면운영체제가그조직과관리를맡습니다.

Size of the L-Stack 로컬데이터의수는 CPU 종류에따라달라집니다.• CPU 412 - 4 KByte로컬데이터• CPU 413 - 4 KByte 로컬데이터• CPU 414 - 8 KByte로컬데이터• CPU 416 - 16 KByte로컬데이터

Date: 2002-02-23File: PRO2_11e.23

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

CPU 파라미터: 로컬데이터

Page 213: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2The S7-400 Power PLC SystemPage 24

Function 이대화상자에서 CPU를권한없는액세스에서보호하기위해 3가지보호수준중한개를선택할수있습니다.

Preset 보호수준 1 (암호가파라미터화되지않음): CPU의키스위치 (모드선택기) Characteristics 위치가보호를결정합니다.

• 키스위치가 RUN-P 또는 STOP 위치에있음: 제한없음• 키스위치가 RUN 위치에있음: 읽기전용액세스가능!

Parameterized 보호수준을암호로파라미터화하면다음과같습니다.Protection Level • ”Password Owners”의경우키스위치의위치와파라미터화된보호수준에

관계없이읽기및쓰기액세스가가능합니다.• ”Password Non-owners”의경우다음제한을적용할수있습니다.

- 보호수준 1: 미리설정된특징에대응- 보호수준 2: 키스위치위치에관계없이읽기전용액세스가능- 보호수준 3: 키스위치위치에관계없이일기나쓰기액세스불가

Date: 2002-02-23File: PRO2_11e.24

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

CPU 파라미터: 액세스보호개념

Page 214: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2The S7-400 Power PLC SystemPage 25

완전재시작 완전재시작, 즉 OB100이실행된후메모리마커, 카운터및타이머의비보유메모리영역은리셋되고사용자프로그램이처음부터시작됩니다.

재시작 재시작, 즉 OB101이실행된후사용자프로그램은인터럽트가일어난시점에서계속됩니다. 즉, 나머지스캔주기가보유메모리마커, 타이머, 카운터를이용해실행됩니다.

PII 프로세스이미지입력표

PIQ 프로세스이미지출력표

OD Output Disable, S7의 LAN 케이블 (S5의명령출력금지에대응)

활성화 조직블록은운영체제에의해배타적으로시작됩니다. 그러나조직블록은사용자가선택을해제할수있으며우선순위가변경될수있습니다.

우선순위 모든 OB 프로그램프로세싱은명령경계에서보다높은우선순위이벤트 (OB)에의해인터럽트될수있습니다. 우선순위는 0-28까지이며여기에서 0이우선순위가가장낮고 (선택이해제된 OB) 28이우선순위가가장높습니다.S7-400은다양한우선순위클래스 (OB)에서우선순위의자유로운할당을허용합니다. 그러나 OB1-스캔주기, OB100-완전재시작, OB101-재시작, OB60 배경, 비동기오류 OB와같은 OB는예외입니다. 이경우우선순위는시스템이미리결정하며사용자가변경할수없습니다.우선순위가같은 OB는서로를인터럽트하지않으며차례로처리됩니다.

Date: 2002-02-23File: PRO2_11e.25

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

프로그램조직: 완전재시작및재시작

사용자프로그램

운영체제

다음을통한인터럽트요청:•시간신호•인식된오류•하드웨어인터럽트

다음을위한 OB:

•오류처리•순환인터럽트•하드웨어인터럽트•기타

완전재시작

스캔주기검사시간시작

PII 읽기

OB1을통한순환프로세싱

시동프로그램: 완전재시작을위한 OB 100

OD 취소

PIQ 삭제

재시작

PI 읽기

OB1을통한순환프로세싱

시동프로그램: 재시작을위한 OB 101

잔류스캔주기

PIQ 삭제 (파라미터에할당될수있음)

OD 취소

PIQ 읽기

스캔주기검사시간시작

PII 읽기

다음을통한인터럽트요청:•시간신호•인식된오류•하드웨어인터럽트

Page 215: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2The S7-400 Power PLC SystemPage 26

인터럽트 OB83 S7-400의경우 RUN이나 STOP에서파워업이되는동안모듈을제거하고제거및삽입 삽입할수있습니다. CPU, PS, 어댑터모듈의 S5 모듈, IM은예외입니다.

RUN 모드에서허가된모듈을제거한후주어진상황에따라다음조직블록이CPU의운영체제에서호출될수있습니다.• OB85-프로세스이미지갱신• OB122-I/O 액세스오류• OB83-제거및삽입이벤트사용자는 OB83만이대략 1초후에호출되며다른 OB는원칙적으로이보다훨씬빨리활동할수있음을고려해야합니다.모듈을삽입한후 CPU가이를확인하며형식오류가발생하지않으면파라미터가할당됩니다. 파라미터할당이질서있게이루어진후그모듈을사용할수있습니다.파라미터할당에서오류가인식되면 OB82 진단인터럽트가자동적으로시작됩니다.

OB83의시작정보 다음정보가 OB83의로컬데이터에있습니다.

• 모듈의제거/삽입• 모듈의논리어드레스

• 모듈의실제형식

Date: 2002-02-23File: PRO2_11e.26

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

모듈삽입/제거인터럽트 (S7 - 400)

제거 삽입 사용가능

모듈존재

모듈사용가능

조직블록 OB83모듈삽입/제거인터럽트

조직블록 OB122I/O 액세스오류

운영체제를통한파라미터할당

조직블록 OB85프로세스이미지갱신

max.1sec.

Page 216: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2The S7-400 Power PLC SystemPage 27

Date: 2002-02-23File: PRO2_11e.27

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

S7-400에서의강제

Forcing Forcing 기능을이용해 S7-400에서사용자프로그램변수에대한미리정의된값을설정할수있습니다.

강제에대한참고 �"Force"기능을시작하기전에같은 CPU에서이기능을동시에실행하는사람이없도록해야합니다.

�강제작업은메뉴명령 Variable -> Stop Forcing을이용하여야만삭제되거나끝날수있습니다.

�"Forcing“은메뉴명령 Edit -> Undo를이용해실행을취소할수없습니다 .� Force Values창을닫거나 "Monitor/Modify Variables“응용을끝내는강제작업은삭제되지않습니다.

�강제와변수수정사이의차이점에대해서는온라인도움말에서제공되는설명을참고합니다.

강제기능선택 1.메뉴명령 Table -> Open을사용하여변수표 (VAT)를열거나해당변수표를포함하는창을활성화합니다.

2.메뉴명령 PLC -> Connect To를선택하여필요한 CPU에연결을만듭니다.3.메뉴명령 Variable -> Display Force Values를사용하여선택된 CPU의현재상태가표시되는 ForceValues 창을엽니다."Force Values"창이활성일때에만강제에대한메뉴명령이선택될수있습니다.현재활동중인강제작업이없다면창은비어있습니다.강제작업이이미활동중이라면변수가해당강제값으로굵게표시됩니다.

4."Address"열에서강제하고싶은변수를입력합니다. "Force Value"열에서변수에할당하고자하는값을입력합니다.

5.메뉴명령 Variable -> Force로강제를시작합니다.현재활동중인강제작업이없으면변수에강제값이할당됩니다.

6.메뉴명령 Variable -> StopForcing으로강제작업을종료할수있습니다.

Page 217: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2The S7-400 Power PLC SystemPage 28

중단점 이테스트기능을이용해서단일시퀀스모드에서만들어진프로그램을 STL 표시로테스트할수있으며따라서관련레지스터내용은물론실행된인스트럭션의시퀀스를따를수있습니다.몇개의중단점이한블록에설정될수있습니다. 설정될수있는중단점수는CPU 종류에따라달라집니다.• CPU 412,413: 2개의중단점• CPU 414: 3개의중단점• CPU 416: 4개의중단점

참고 • “Breakpoint”기능을선택하려면 “on-line”블록을열어야합니다.• 대화상자에서 Debug -> Operation -> Test Operation이선택되어야만

"Breakpoints“기능을선택할수있습니다. • 메뉴명령 Execute Next Statement또는 Execute Call은내부구현을위한자유중단점을필요로합니다.

• 프로그램프로세싱이중단점을만나면 CPU는 RUN에서 HOLD 모드로전환합니다. 이모드에서 STOP-LED가켜지고동시에 RUN-LED가점멸합니다.

중단점기능 중단점기능은프로그램편집기에서메뉴항목 "Debug“나중단점표시줄을통해선택될수있습니다.

중단점표시줄 중단점표시줄활성화는프로그램편집기에서메뉴 View -> Breakpoint Bar를통해이루어집니다.

Date: 2002-02-23File: PRO2_11e.28

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

중단점표시줄활성화

Page 218: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2The S7-400 Power PLC SystemPage 29

중단점표시줄 중단점표시줄은 “단일시퀀스에서의테스팅”을위한명령버튼을제공합니다.중단점설정 중단점삭제 중단점 on/off

다음중단점보여주기 계속 다음명령문실행 호출실행

중단점설정 "Set Breakpoint“를이용해프로그램실행이중지되는위치를결정합니다. 중단점명령문은실행되지않습니다.

중단점삭제 모든중단점이삭제됩니다.중단점활성 "Breakpoint Active“를이용해이미설정된중단점뿐만아니라설정될중단점을

포함하는모든중단점을활성화합니다.

다음중단점보여주기 "Show Next Breakpoint“를이용해편집기는프로그램을실행하지않고다음에표시된중단점으로점프합니다.

계속 "Continue“를이용해프로그램이다음활성액티브를만날때까지실행됩니다.다음명령문실행 "Execute Next Statement“를이용해단일시퀀스로프로그램을처리합니다. 블록

호출에도달하면 "Execute Next Statement“를이용해블록호출후첫번째명령문으로점프합니다.

호출실행 블록호출에도달할때 "Execute Call“을이용해블록으로분기합니다. 블록의끝에서블록호출후다음명령문으로다시점프가일어납니다.

Date: 2002-02-23File: PRO2_11e.29

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

중단점으로프로그램수행 (S7-400 전용)

중단점중단점

Page 219: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2The S7-400 Power PLC SystemPage 30

소개 "enable peripheral outputs" 기능은주변출력 (PQ)의출력사용금지를해제합니다. 이기능은 CPU가 STOP 모드일때주변출력을수정할수있게합니다.

설정 주변출력을사용할수있게하려면다음과같이진행합니다.1. 메뉴명령 Table -> Open을사용하여수정하고자하는주변출력을포함하는변수표 (VAT)를열고해당변수표에대한창을활성화합니다.

2. 메뉴명령 PLC -> Connect To를사용하여활성변수표의주변장치를수정할수있도록원하는 CPU에대한연결을만듭니다.

3. 메뉴명령 PLC -> Operating Mode를이용하여 "Operating Mode" 대화상자를열고 CPU를 STOP 모드로전환합니다.

4. 수정하고자하는주변출력에대한적절한값을 "Modify Value" 열에입력합니다.보기: PQB 7 Modify value: 2#0001000011

PQW 2 W#16#0027PQD 4 DW#16#0001

5. 메뉴명령 Variable -> Enable Peripheral Output을사용하여 "EnablePeripheral Output" 모드로전환합니다.

6. 메뉴명령 Variable -> Activate Modify Values를사용하여주변출력을수정합니다. "Enable Peripheral Output“은메뉴명령 Variable -> EnablePeripheral Output을다시선택하여이기능을해제할때까지계속활동합니다.

7. 새값을할당하려면 4단계부터다시시작합니다.

참고 • CPU가작동상태를변경하고예를들어 STOP에서 RUN이나 STARTUP으로가면메시지가표시됩니다.

• CPU가 RUN 모드에있고 "enable peripheral outputs" 기능이선택되어있으면또한메시지가표시됩니다.

Date: 2002-02-23File: PRO2_11e.30

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

주변출력사용허가 (S7-400 전용)

Page 220: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2The S7-400 Power PLC SystemPage 31

설명 지점간연결은버스시스템에대해비용효율적인고성능대안입니다. PLC는물론바코드판독기와저울과같은간단한장치를연결할수있습니다.

CP441-1 프로토콜 한개의플러그인인터페이스를가지는경우

• 파라미터화될수있는 3964 (R)• 파라미터화될수있는 ASCII 프로토콜 (계획)• 프린터 (계획)

CP441-2 프로토콜 2개의플러그인인터페이스를가지는경우• 파라미터화될수있는 3964 (R)• RK 512• 파라미터화될수있는 ASCII 프로토콜• 프린터

• 다음과같이로드될수있는외부프로토콜 (계획)- Modbus마스터 / 슬레이브 (Modicon) - Allen Bradley (DF1 프로토콜)

인터페이스모듈 • TTY-, 9-핀소켓, 액티브/패시브인터페이스모듈• V.24 (RS232 C), 9-핀플러그커넥터• RS 422/485, 15-핀소켓

Date: 2002-02-23File: PRO2_11e.31

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

지점간연결을위한 CP 441

643-1QA11-0AX03ATB 386SX

1 243

INTF

EXF

RUN

STOP

RUN_P

SD

HDD

S2

USR

CP 441-1 CP 441-2

643-1QA11-0AX03

ATB 386SX

1 243

INTF

EXF

RUN

STOP

RUN_P

SD

HDD

S2

USR

- CP441-1: 비용효율이높은표준기능- CP441-2: 까다로운작업을위한고성능

인터페이스CP 441-1: 플러그인인터페이스모듈 1CP 441-2: 플러그인인터페이스모듈 2

표시: 보내기, 받기, 오류에대한 LED

보오속도

CP 441-1: 최대 38.4 kBaudCP 441-2: 최대 76.8 kBaud

프로토콜통합표준프로토콜

로드될수있는 Siemens 이외의프로토콜(특별드라이버) - CP 441-2 용

Page 221: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2The S7-400 Power PLC SystemPage 32

설명 CP 443-5 통신프로세서는 PROFIBUS 네트워크에대한 S7-400연결을허용합니다.

프로토콜 다음프로토콜을사용할수있습니다.S7 기능:SIMATIC S7/M7/C7과 PC 사이의 ISO/OSI 참조모델의레이어 7을바탕하는하는통신용

S7 프로토콜은 SIMATIC S7 패 리에서의통신을위해 S7-CPU에대한 SFB 인터페이스를제공합니다. 또한프로그래밍, 테스팅, 개체관리및진단을위한함수를제공합니다.SEND/RCV: SIMATIC S7, SIMATIC S5, PC/PG 및 Siemens 이외의장치사이의레이어 2 (FDL-Layer)를바탕으로하는통신용. SEND/RCV 인터페이스는구조화되지않은데이터블록의간단하고믿을만한통신을제공합니다.SEND/RCV 인터페이스는다음관점에서구현됩니다.• SIMATIC S5에서블록처리• SIMATIC S7에서함수호출• PG/PC에서 C-함수호출PROFIBUS FMS (Fieldbus Message Specification: 필드버스메시지사양)SIMATIC S5, S7, PC/PG, 필드장치및 Siemens 이외의제품사이의개방통신용 (EN 50170, Vol. 2, PROFIBUS).FMS 프로토콜은 ISO/OSI 참조모델의레이어 7에서객체지향적통신을허용합니다. 전형적인데이터패킷크기는 240 바이트입니다.PROFIBUS DP (Distributed Peripheral: 분산주변장치) SIMATIC S5, S7, PC/PG, Siemens 이외의시스템및필드장치사이의개방통신용 (EN 50170, Vol. 2, PROFIBUS).DP 프로토콜은제어기또는 PC와반응시간이 10 ms보다작은필드장치사이에서소량데이터의빠른교환을위해설계되었습니다.

Date: 2002-02-23File: PRO2_11e.32

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

CP 443-5: PROFIBUS에대한연결

포맷: S7 포맷, 단일너비

프로토콜:SEND/RCV S7 함수FMS (CP 443-5 기본전용) DP Master (CP 443-5 확장전용)

보오속도: 9.6 Kbps to 12 Mbps

연결:전기케이블: 9-pin sub-D

소켓을통해FO 케이블: 버스터미널을통해

구성:FC와 FB를포함하는PROFIBUS에대한 NCM S7

CP 443-5 BasisCP 443-5 Extended

Page 222: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2The S7-400 Power PLC SystemPage 33

설명 인터페이스모듈 IM 467은 S7-400 PLC 시스템에서의작동을위해만들어졌습니다. 이모듈은 PROFIBUS-DP에대한 S7-400의연결을가능하게합니다.

프로토콜 IM 467은 2가지통신서비스를제공합니다.PROFIBUS-DPIM 467은 EN 50 170에따라 PROFIBUS-DP 마스터입니다. STEP 7을이용해구성이완전히이루어집니다. 퍼포먼스는원칙적으로 CPU 모듈의통합PROFIBUS-DP 인터페이스와동일합니다.DP 통신을위해 STEP 7 사용자프로그램에서함수를호출할필요가없습니다.S7 기능S7 기능은 SIMATIC S7/M7/C7자동화해법으로최적의간단한통신을보장합니다. IM 467에대해다음 S7 기능을사용할수있습니다.• PROFIBUS-DP를통한 PG 기능• PROFIBUS-DP를통한 HMI 기능통신은 IM 467에서의추가구성없이이루어집니다.S7 기능은단독또는 PROFIBUS-DP 프로토콜에병렬로사용될수있습니다. 만약 DP 통신에병렬로사용되면 PROFIBUS-DP 버스순환시간에반동이발생합니다.

Date: 2002-02-23File: PRO2_11e.33

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

IM 467: PROFIBUS-DP 마스터인터페이스

포맷: S7 포맷, 단일너비

프로토콜:DP 마스터S7 함수

보오속도: 9.6 Kbps에서 12 Mbps

연결:전기케이블: 9-pin sub-D

소켓을통해

구성:구성및프로그래밍은PROFIBUS-DP를통해가능

IM 467

Page 223: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2The S7-400 Power PLC SystemPage 34

설명 CP 443-1과 CP 443-1 TCP/IP 통신프로세서는산업용이더넷네트워크에대한S7-400의연결을허용합니다.

프로토콜 다음프로토콜을사용할수있습니다.S7 기능SIMATIC S7/M7/C7과 PC 사이의 ISO/OSI 참조모델의레이어 7을바탕하는하는통신용SEND/RCVSIMATIC S7, SIMATIC S5, PC/PG 및 Siemens 이외의장치사이의레이어 4 (CP 443-1의 ISO-전송레이어와 CP 443-1 TCP/IP의 TCP-전송레이어)를바탕으로하는통신용.MMS/MAPSIMATIC S7, SIMATIC S5, PC/PG 및 Siemens 이외의시스템사이의레이어7을바탕으로개방통신용

Date: 2002-02-23File: PRO2_11e.34

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

CP 443-1: 산업용이더넷에대한연결

포맷: S7 포맷, 단일너비

프로토콜:ISO 전송스택의 SEND/RCV와 S7 함수(CP 443-1) 및 TCP/IP 스택 (CP 443-1 TCP/IP)MMS/MAP (준비중)

연결:S7 함수: 최대 48개의연결SEND/RCV: 최대 64개의연결

함수:멀티프로토콜가능

LAN과WAN을통한리모트프로그래밍(CP443-1 TCP/IP 전용)

연결:AUI와트위스트페어연결사이의자동스위치오버

구성:SEND/RCV에대한함수호출을포함하는산업용이더넷에대한 NCM-S7

CP 443-1CP 443-1 TCP/IP

Page 224: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Solutions to the ExercisesPage 1

목차 패이지

교재구성 ........................................................................................................………… 2S7-300 실제프로그램가능논리제어기 ....................................................................……………. 3S7-400 실제프로그램가능논리제어기 .....................................................................…………….. 4시뮬레이터구성 ................................................................................................................ 5컨베이어모델구성 ..................................................................................................……………… 6Solution to 연습 1.1 해답: 뺄셈연산후점프 ...................................................................………… 7Solution to 연습 1.2 해답: 곱셈연산후점프 ................................................................………….. 8연습 1.3 해답: 라벨로점프 ........................................................................................ 9연습 2.1 해답: 지수계산 ...................................................................………………………………. 10연습 2.2 해답: ACCU1에서의데이터교환 .................................................................……………. 11연습 2.3 해답: 1의보수만들기 ......................................................................…………………….. 12연습 3.1 해답: 거리계산 ...................................................................………………………………. 13연습 4.1 해답: 메모리간접어드레스지정을이용한루프프로그래밍 ……………........................ 14연습 4.2 해답: 레지스터간접어드레스지정을이용한루프프로그래밍…………........................... 15연습 4.3 해답: 합계와평균값계산 ……………………………….................................................. 16연습 5.1 해답: SFC1을이용한시스템클럭읽기(READ_CLK) ...................................…………… 17연습 6.1 해답: 작업장용 FB1 만들기 ………………………………................................................... 18연습 6.2 해답: 전송용 FB2 만들기 ........…………………………........................................................21연습 6.3 해답: FB10 만들기 …………………................................................................................... 24연습 6.4 해답: 고유카운터블록만들기 .............................................................……………………..26연습 7.2 해답: 데이터블록검사(SFC 24: S7 400 전용) ..................................…………………… 27연습 7.3 해답: DB 만들기(SFC 22) .....................................................................………………………..28연습 7.4 해답: 로드메모리에서작업메모리로 DB 복사 (SFC 20) ........................………………. 29연습 7.5 해답: “0”으로 DB 초기화(SFC 21: FILL) ...........................................………………….. 30연습 7.6 해답: 진단버퍼에메시지기록(SFC 52) .....................…………………………………… 31연습 8.1 해답: FC43에서의오류처리 ................................................................. 32연습 9.2 해답: 완성된부품개수세기 ..........................................................……………………….. 34연습 10.1해답: SFB의 START/STOP을이용한통신 ………………........................................... 42연습 10.2 해답: SFB의 GET/PUT을이용한통신 ………………................................................. 45

Date: 10/18/99File: PRO2_14e.1

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

연습해답

Page 225: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Solutions to the ExercisesPage 2

교재내용물 교재는다음요소들로구성됩니다:- CPU 314를장착한 S7-300 PLC 시스템- 디지털입력및출력모듈, 아날로그모듈- 디지털및아날로그부품으로된시뮬레이터

- 컨베이어모델

참고 이교재는 S7-400 PLC 시스템에서도사용할수있습니다.

Date: 10/18/99File: PRO2_14e.2

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

PCU 상에서의MPI 연결

후부에있는전원연결부와온/오프스위치

교재구성

Page 226: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Solutions to the ExercisesPage 3

구성 교육모델은다음모듈로구성됩니다:

버전 A 슬롯 1: 전원공급장치 24V/5A슬롯 2: CPU 314슬롯 4: 디지털입력 16x24V 시뮬레이터스위치슬롯 5: 디지털입력 16x24V 작은휠스위치슬롯 6: 디지털출력 16x24V 0.5A 시뮬레이터의출력 LED슬롯 7: 디지털출력 16x24V 0.5A 디지털디스플레이슬롯 8: 디지털입력 16x24V 컨베이어모델입력슬롯 9: 디지털출력 16x24V 0.5A 컨베이어모델출력슬롯 10: 아날로그모듈 4 AI/4 AO 시뮬레이터에서조정가능

버전 B 슬롯 1: 전원공급장치 24V/5A슬롯 2: CPU 314슬롯 4: 디지털입력 32x24V 시뮬레이터스위치와

작은휠스위치Slot 5: 디지털출력 32x24V/0,5A 시뮬레이터의출력 LED와

디지털디스플레이Slot 6: 디지털모듈 8X24V/ 컨베이어모델

8x24V 0.5ASlot 7: 아날로그입력 시뮬레이터에서조정가능

어드레스 S7-300(CPU 312-314)은고정슬롯어드레스지정방법을사용합니다. 따라서, Y슬라이드에서모듈의어드레스를볼수있습니다.CPU 315-2와 S7-400을사용하는경우모듈의시작어드레스를매개변수로지정할수있습니다.

Date: 10/18/99File: PRO2_14e.3

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

블록유형: PS CPU DI DI DQ DQ DI DQ 4AI/4AQ입/출력어드레스: 0 4 8 12 16 20 352

슬롯번호: 1 2 4 5 6 7 8 9 10

버전 A (16 채널모듈)

버전 B (32 채널모듈)

S7-300 실제프로그램가능한논리제어기

블록유형: PS CPU DI DQ 8DI 2AI/8DQ

입/출력어드레스: 0 4 8 304

Page 227: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Solutions to the ExercisesPage 4

구성 이제어기는다음모듈로구성됩니다:슬롯 1,2, 3: 전원공급장치 220V/20A슬롯 4: CPU 412, 414 또는 CPU 416슬롯 5, 6, 7: 비어있음 (M7에서만사용됨)슬롯 8: 디지털입력 32x24V 시뮬레이터의입력

슬롯 9: 디지털입력 32x24V 컨베이어모델의입력

슬롯 10: 디지털출력 32x24V 0.5A 시뮬레이터로전송되는출력

슬롯 11: 디지털출력 16x24V 0.5A 컨베이어모델로전송되는출력

슬롯 12: 아날로그입력모듈 8AI 시뮬레이터에서

어드레스지정가능

어드레스 S7-400의경우위의기본어드레스는기본어드레싱, 즉 CPU에있는모듈에대한파라미터데이터 (SDB)가로드되지않았을때만유효합니다. S7-400의중앙랙에있는모듈의기본어드레스는다음공식에따라계산합니다. 디지털모듈: (슬롯번호 - 1) x 4아날로그모듈: (슬롯번호 - 1) x 64 + 512 모듈의초기어드레스는 S7400 시스템의 CPU에맞춰자유롭게파라미터로지정할수있습니다.

Date: 10/18/99File: PRO2_14e.4

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

S7-400 실제프로그램가능논리제어기

블록유형: PS CPU DI DI DQ DQ AI

기본입/출력어드레스: 28 32 36 40 1216

슬롯번호: 1 4 8 9 10 11 12

643-1QA11-0AX0

3 1 243

143

0

BATIND

OFFO

23 0 V

643-1QA11-0AX0

3

INTF

EXTF

RUN

STOP

CRST

STOP

RUN

FMR

10

INTF

BATT1FBATT2FBAF

DC 5VDC 24V

4 21 - 1 B L0 0 - 0 A

D I 32 xD C 24 VX3

INTFEXTF

STOPRUN

CRSTFRCE

CRSTWRST

RUN-PRUN

STOPCMRES

643-1QA11-0AX0

3ATB 386SX

1 243

Page 228: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Solutions to the ExercisesPage 5

구성 시뮬레이터는두개의커넥터케이블을통해 S7-300 또는 S7-400 교육장치에연결됩니다. 시뮬레이터는세개의부품으로구성됩니다 :• 16개의스위치/푸시버튼이장착된이진부품과 4곳의작은휠스위치및디지털디스플레이가장착된디지털부품. 제어는 BCD 값을통해발생합니다.

• 아날로그채널 0과 1 또는아날로그출력 0과 1을표시하는전압계가장착된또하나의부품. 감시할전압값을선택스위치로선택할수있습니다.아날로그입력을조정하는두개의분리된포텐셔미터도있습니다.

어드레스 사용자프로그램에서다음과같은어드레스로 S7-300/400 용입력과출력의주소를지정합니다.

Date: 10/18/99File: PRO2_14e.5

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

시뮬레이터구성

V

0 8 1 5 AI1 AI2 AO1 AO2

AI2AI1

-15V...+15V -15V...+15VAI1

AI2 AO1AO2

V

DI DO

.0

.1

.2

.3

.4

.5

.6

.7

.0

.1

.2

.3

.4

.5

.6

.7

.0

.1

.2

.3

.4

.5

.6

.7

.0

.1

.2

.3

.4

.5

.6

.7

센 서 /작 동 기 S 7 - 3 0 0 A S 7 - 3 0 0 B S 7 - 4 0 0

스 위 치 /푸 시 버 튼 I W 0 I W 0 I W 2 8

L E D ’s Q W 8 Q W 4 Q W 3 6

작 은 휠 스 위 치 I W 4 I W 2 I W 3 0

디 지 털 디 스 플 레 이 Q W 1 2 Q W 6 Q W 3 8

아 날 로 그 채 널 P I W 3 5 2 / 3 5 4 P I W 3 0 4 / 3 0 6 P I W 1 2 1 6 / 1 2 1 8

Page 229: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Solutions to the ExercisesPage 6

구성 위의슬라이드는센서와작동기로구성된컨베이어모델의구성도입니다.S7-400의경우어드레스는기본어드레스를사용하는 S7-400 모델의어드레싱을말합니다. 이들설정에대한변경사항은 HW Config를통해입력이나출력모듈의어드레스를변경할때나타납니다.모듈어드레스에대한변경사항의경우컨베이어모델의입력신호는두번째입력모듈 (슬롯 9) 상에서의입력이며컨베이어모델로전달되는출력신호는두번째출력모듈 (슬롯 11)의출력입니다.각경우에있어시뮬레이터의신호는첫번째입력과첫번째출력모듈에연결됩니다.

.

어드레스 S7-300 A S7-300 B S7-4000 센서/ 작동기 신호

I 16.0 I 8.0 I 32.0 광개찰구 LS 1 LS1I 16.1 I 8.1 I 32.1 Ackn. 스위치위치 1 S1I 16.2 I 8.2 I 32.2 Ackn. 스위치위치 2 S2I 16.3 I 8.3 I 32.3 Ackn. 스위치위치 3 S3I 16.4 I 8.4 I 32.4 Ackn. 스위치위치 4(마지막) S4 I 16.5 I 8.5 I 32.5 기폭장치 1 INI1I 16.6 I 8.6 I 32.6 기폭장치 2 INI2I 16.7 I 8.7 I 32.7 기폭장치 3 INI3

Q 20.1 Q 8.1 Q 40.1 LED 위치 1 H1Q 20.2 Q 8.2 Q 40.2 LED 위치 2 H2Q 20.3 Q 8.3 Q 40.3 LED 위치 3 H3Q 20.4 Q 8.4 Q 40.4 LED 위치 4 (마지막) H4Q 20.5 Q 8.5 Q 40.5 컨베이어드라이브 (오른쪽) K1_LAUFQ20.6 Q 8.6 Q 40.6 컨베이어드라이브 (왼쪽) K2_LAUFQ 20.7 Q 8.7 Q 40.7 호른(나팔) TUT1

Date: 10/18/99File: PRO2_14e.6

SIMATIC S7Siemens AG 1998. All rights reserved.

Information and Training CenterKnowledge for Automation

INI 1 ~ INI 3 인접스위치

LS 1 광전자개찰구

M 1 모터

H 1, H 2, H 3LED

S 1, S 2, S 3, S 4 인식스위치

컨베이어모델구성

Page 230: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Solutions to the ExercisesPage 7

연습 1.1 해답:

FUNCTION FC 11 : VOIDTITLE =연습 1.1 : 빼기연산후점프//16Bit-SM의버전AUTHOR : PT41FAMILY : A4_0NAME : ST7PRO2VERSION : 0.0

BEGINNETWORKTITLE =

L IW 4; //작은휠스위치BTD ; //BCD를정수로포맷변환L IW 0; //입력워드 0BTD; -D; JN NEG; //결과가음수인경우점프L IW 0; JU END;

NEG: L 0; END: T QW 12; //7-세그먼트디스플레이

END_FUNCTION

Page 231: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Solutions to the ExercisesPage 8

연습1.2 해답:

FUNCTION FC 12 : VOIDTITLE =연습 1.2 : 곱하기연산후점프//16Bit-SM 버전AUTHOR : PT41FAMILY : A4_0NAME : ST7PRO2VERSION : 0.0

BEGINNETWORKTITLE =

L IW 4; //썸휠스위치BTD; //BCD에서정수로변환L IW 0; //시뮬레이터의토글스위치BTD; *I; JO OVL; //과잉이면점프DTB; //정수에서 BCD로변환JU END;

OVL: L 0; END: T QW 12; //7-세그먼트디스플레이

END_FUNCTION

Page 232: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Solutions to the ExercisesPage 9

연습 1.3 해답:

OB1

FUNCTION FC 13: VOID

VAR_INPUTSelect: INT;END_VARBEGINL #Select;OW W#16#FF00; // 255보다큰지또는JCN Err; // 음수인지확인JL GT5; // Accu1-L-L이 5보다크면대상으로점프JU Err; // select = 0 (여기서는일어나지않음)JU Dr_1; // 오른쪽컨베이어 (select=1) JU Dr_2; // 왼쪽컨베이어 (select=2)JU Dr_3; // 컨베이어오프 (select=3)JU Ho_1; // 경적 (Horn) 온JU Ho_2; // 경적오프

GT5: JU Err;Dr_1: S Q 4.5; // 오른쪽컨베이어

R Q 4.6;JU End;

Dr_2: S Q 4.6; // 왼쪽컨베이어R Q 4.5;JU End;

Dr_3: R Q 4.5; // 컨베이어오프R Q 4.6;JU End;

Ho_1: S Q 4.7; // 경적 (Horn) 온JU End;

Ho_2: R Q 4.7; // 경적오프JU End;

Err: CLR; SAVE;

End: BE; END_FUNCTION

Page 233: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Solutions to the ExercisesPage 10

연습 2.1 해답:

FUNCTION FC 21 : VOIDTITLE =연습 2.1: AKKU –교환함수//연습 2.6: ACCU –교환함수//16Bit-SM용버전AUTHOR : PT41FAMILY : A4_0NAME : ST7PRO2VERSION : 0.0

BEGINNETWORKTITLE =

L IB 4; //BCD 번호로드BTI; //BCD를정수로변환 -> 입력값PUSH; //ACCU1을 ACCU2에복사*D; //ACCU1에 InVal의제곱값만들기PUSH; //ACCU1에서 ACCU2로 InVal의제곱값복사PUSH; //S7-400에필요함: 제곱값 -> ACCU3*D; //ACCU1에최대 4번째까지 InVal만들기*D; //ACCU1에최대 6번째까지 InVal 만들기DTB; //가능할경우 BCD로변환 (선택사항)T QW 12; //7_세그먼트디스플레이

//LOW-Word 디스플레이 (선택사항)END_FUNCTION

Page 234: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Solutions to the ExercisesPage 11

연습 2.2 해답:

FUNCTION FC 22 : VOIDTITLE =연습 2.2: ACCU1에서의데이터교환//연습 2.2: ACCU1에서의데이터교환//16Bit-SM용버전AUTHOR : PT41FAMILY : A4_0NAME : ST7PRO2VERSION : 0.0

BEGINNETWORKTITLE =

L IW 4; //BCD 코드로된썸휠스위치CAW; //ACCU1-L에서 2 바이트교환T QW 12; //결과표시END_FUNCTION

Page 235: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Solutions to the ExercisesPage 12

연습 2.3 해답:

FUNCTION FC 23 : VOIDTITLE =연습 1.6: 1의보수만들기//연습 2.3: 보수만들기//16Bit-SM용버전AUTHOR : PT41FAMILY : A4_0NAME : ST7PRO2VERSION : 0.0

BEGINNETWORKTITLE =STL의 1의보수

L IW 0; //입력워드 BCD 코드로드INVI; //1의보수만들기T QW 0; //출력워드로결과표시END_FUNCTION

Page 236: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Solutions to the ExercisesPage 13

연습 3.1 해답:

FUNCTION FC 31 : REALTITLE =연습 3.1: 거리계산//연습 3.1: 산술함수AUTHOR : PT41FAMILY : A4_0NAME : ST7PRO2VERSION : 0.0

VAR_INPUTX1: REAL;Y1: REAL;X2: REAL;Y2: REAL ;

END_VARVAR_TEMPXSquare : REAL;

END_VARBEGINNETWORKTITLE =

L X1; // P1의 X 좌표로드L X2; // P2의 X 좌표로드-R; // (X1-X2) 만들기SQR; // (X1-X2)의제곱값만들기T XSquare; // TEMP-Var 안에임시저장L Y1; // P1의 Y 좌표로드L Y2; // P2의 Y 좌표로드-R; // (Y1-Y2) 만들기SQR; // ACCU1에 (Y1-Y2)의제곱값만들기L XSquare; // (X1-X2)에서제곱값불러오기+R; // 합계계산SQRT; // 제곱근 (최종결과값) 만들기T RET_VAL; // 결과값반환

END_FUNCTION

Page 237: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Solutions to the ExercisesPage 14

연습 4.1 해답: 간접어드레싱을이용한루프프로그래밍

FUNCTION FC 41 : VOIDTITLE =연습 4.1:메모리간접어드레싱을이용한루프프로그래밍//연습 4.1: 메모리간접어드레싱을이용한루프프로그래밍

VAR_TEMPTank : ARRAY [1 .. 100 ] OF INT ;Counter : INT ;Ini_Value : INT ;Pointer : DWORD ;

END_VARBEGINNETWORKTITLE =루프프로그래밍

L P#0.0; // tank의첫번째구성요소의어드레스를로드하고T #Pointer; // 포인트로전송L 1; // 1을로드하고T #Ini_Value; // Ini_Value로전송L 100; // 100으로 루프카운터를미리설정하고

BEGN: T #Counter; // 카운트에로드L #Ini_Value; T LW [#Pointer]; // Ini_Value를 Tank[i]로전송L 1; // ACCU1 (Ini_Value)을 1만큼+I ; // 증가시키고T #Ini_Value; // Ini_Value로전송L #Pointer; // 포인터를 Accu1으로전송L P#2.0; // Pointer의바이트어드레스를 2만큼증가시키고+D ; // 포인터에T #Pointer; // 로드L #Counter; // 루프카운터로드LOOP BEGN; // 값을감소시키고필요하다면점프

NETWORKTITLE =로컬데이터(Local Data)의상태표시를위한네트워크

L #Tank[1]; // 테스트전용L #Tank[2]; L #Tank[3]; // "L #Tank[4]; L #Tank[5]; L #Tank[6]; L #Tank[7]; L #Tank[8]; L #Tank[9]; L #Tank[10]; L #Tank[64]; L #Tank[100];

END_FUNCTION

Page 238: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Solutions to the ExercisesPage 15

연습 4.2 해답: 레지스터간접어드레싱을이용한루프프로그래밍

FUNCTION FC 42 : VOIDTITLE =연습 4.2:레지스터간접어드레싱을이용한루프프로그래밍//연습 4.2: 레지스터간접어드레싱을이용한루프프로그래밍

VAR_TEMPTank : ARRAY [1 .. 100 ] OF INT ;Loop counter : INT ;Ini_Value : INT ;

END_VARBEGINNETWORKTITLE =루프프로그래밍

LAR1 P#0.0; // AR1에첫번째구성요소의어드레스로드L 1; // 1을 Accu1 (Ini_W.)에L 100; // 100을 Accu1 (loopc.)에; 1을 Accu2 (Ini_Value)에

BEGN: TAK ; // Accu2에루프카운터, Accu1에 Ini_V.T LW [AR1,P#0.0]; // Ini_Value를 Tank[i]로전송INC 1; // Ini_Value을증가시킴+AR1 P#2.0; // AR1을 2 바이트만큼증가시킴TAK ; // Accu1에루프카운터, Accu2에 Ini_V.LOOP BEGN; // 루프카운터를감소시키고필요하다면점프

NETWORKTITLE =로컬데이터(Local Data)의상태표시를위한네트워크

L #Tank[1]; L #Tank[2]; L #Tank[3]; L #Tank[4]; L #Tank[5]; L #Tank[6]; L #Tank[7]; L #Tank[8]; L #Tank[9]; L #Tank[10]; L #Tank[64]; L #Tank[100];

END_FUNCTION

Page 239: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Solutions to the ExercisesPage 16

연습 4.3 해답: 합계및평균값계산함수

FUNCTION FC 43 : VOIDTITLE =연습 4.3: 합계및평균값계산함수//연습 4.3: 합계와평균값계산함수VAR_INPUTMeasured_values : ANY ;END_VARVAR_OUTPUTSum : REAL ;Mean_value : REAL ;

END_VARVAR_TEMPLoop_counter : WORD ;DB_No : WORD ;

END_VARBEGIN

L P##Meas_values; // “ANY”포인터의영역포인터로드LAR1 ; // AR1에있는영역포인터L B [AR1,P#1.0]; // 데이터형식별자읽기L 8; // 식별자 REAL(16#08) 로드==I ; JC REAL; // 데이터형이 REAL이면점프NOP 0; // REAL이아닌데이터형을위한인스트럭션CLR ; // RLO=0SAVE ; // BR =0L L#-1; // 잘못된 REAL 숫자로드T #Sum; T #Mean_value; BEU ;

REAL: NOP 0; // REAL 데이터형을위한인스트럭션L W [AR1,P#2.0]; // 배열요소의개수로드T #Loop_counter; // 루프카운터초기화L W [AR1,P#4.0]; // DB 번호또는 0 로드T #DB_No; // DB_No=가 0이면 OPN DB[DB_No]=NOPOPN DB [#DB_No]; // DB가존재하지않는경우런타임오류!! L D [AR1,P#6.0]; // AR1에실질어드레스의영역포인터로드LAR1 ; // 영역식별자가 "DI"이면오류L 0.000000e+000; // 0을 Accu1 (Sum =0.0)에L #Loop_counter; // 카운터를 ACCU1에, Sum=0을 ACCU2에

BEGN: TAK ; // ACCU2에 Loopc, ACCU1에합계ENT ; // ACCU3에 Loopc, ACCU2에합계L D [AR1,P#0.0]; // ACCU1에배열요소+R ; // ACCU1에합계, ACCU2에 Loopc+AR1 P#4.0; // 4 바이트만큼 AR1을증가시킴TAK ; // ACCY1에 Loopc, ACCU2에 SumLOOP BEGN; // loopc를감소시키고필요하면점프TAK ; // ACCU1에 SumT #Sum; // 합계를 #Sum에L #Loop_counter; // ACCU2에합계, ACCU1에개수DTR ; // 부호가정의되지않은정수(16비트)를 REAL로/R ; // ACCU1에평균값T #Mean_value; // 평균값을 #Mean value에SET ; // BR-Bit를 1로설정SAVE ;

END_FUNCTION

Page 240: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Solutions to the ExercisesPage 17

연습 5.1 해답: SFC 1를이용한시스템클럭읽기 (READ_CLK)

FUNCTION FC 51 : VOIDTITLE =연습 5.1: SFC 1을이용한시스템클럭읽기(READ_CLK)//연습 5.1: SFC 1를이용한시스템클럭읽기(READ_CLK)//16Bit-SM용버전AUTHOR : PT41FAMILY : A2_0NAME : ST7PRO2VERSION : 0.0

VAR_TEMPDate_Time : DATE_AND_TIME ; //현재의날짜와시간RET_VAL_SFC1 : INT ; //값 SFC 1 반환

END_VARBEGINNETWORKTITLE =SFC 1 (READ_CLK) call

CALL "READ_CLK" (RET_VAL := #Ret_Val_SFC1,CDT := #Date_Time);

NOP 0; NETWORKTITLE =시간, 분표시

LAR1 P##Date_Time // 변수어드레스결정L LB [AR1, P#3.0]; // 시간을읽고T QB 12; // 디스플레이에출력L LB [AR1, P#4.0]; // 분을읽고T QB 13; // 디스플레이에출력

END_FUNCTION

Page 241: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Solutions to the ExercisesPage 18

연습 6.1 해답: FB1 (1부)

FUNCTION_BLOCK "Station"TITLE =VERSION : 0.1VAR_INPUTInitial : BOOL ;Proxy_Switch : BOOL ;Acknowledge : BOOL ;Clock_Bit : BOOL ;

END_VARVAR_OUTPUTLED : BOOL ;Transp_req : BOOL ;

END_VARVAR_IN_OUTConv_busy : BOOL ;

END_VARVARState : STRUCT Busy : BOOL ;Completed : BOOL ;Waiting : BOOL ;END_STRUCT ;Aux_1 : BOOL ;Aux_2 : BOOL ;

END_VAR

BEGINNETWORKTITLE =초기화//초기화를이용하여, 기본상태, 즉, 스테이션의상태설정//"Busy"

A #Initial; R #State.Waiting; S #State.Busy; R #State.Completed; R #Conv_busy;

NETWORKTITLE =State: Busy//처리가이상태로진행됩니다. 마지막으로작업자가//작업장확인버튼을통해부품의처리가완료되었음을확인하면//처리가종료됩니다.

AN #State.Busy; JC REDY; S #LED; R #Transp_req; A #Acknowledge; R #State.Busy; R #LED; S #State.Completed;

// (다음페이지에서계속)

Page 242: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Solutions to the ExercisesPage 19

연습 6.1 해답: FB1 (2부)

NETWORKTITLE =상태: 완료//완료된상태에서는완료된부품이전송벨트상에놓여질때까지대기합니다.// 전송벨트에아무것도없으면입력신호 #Band_frei가신호를보냅니다.

REDY: AN #State.Completed; JC WAIT; A #Clock_Bit; = #LED; AN #Conv_busy; A #Proxy_Switch; S #Conv_busy; S #Transp_req; A #Transp_req; A #Proxy_Switch; FN #Aux_1; R #State.Completed; S #State.Waiting;

NETWORKTITLE =상태: 대기//처리되지않은새로운부품을기다립니다. //처리되지않은새로운부품이도착되면전송벨트의인접스위치가신호를보냅니다.

WAIT: AN #State.Waiting; JC ENDE; R #LED; A #Proxy_Switch; //처리되지않은새로운부품이도착됨R #Transp_req; // 정지벨트A #Proxy_Switch; FN #Aux_1; //제거후에처리시작R #Conv_busy; 다시한번컨베이어를활성화함R #State.Waiting; S #State.Busy;

ENDE: BEU ;

END_FUNCTION_BLOCK

Page 243: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Solutions to the ExercisesPage 20

연습 6.1 해답: OB1

ORGANIZATION_BLOCK OB 1TITLE =VERSION : 0.1

VAR_TEMPOB1_EV_CLASS : BYTE ; //비트 0-3 = 1 (들어오는이벤트), 비트 4-7 = 1 (이벤트클래스 1)OB1_SCAN_1 : BYTE ; //1 (OB1의콜드재시작스캔 1), 3 (OB 1의스캔 2-n)OB1_PRIORITY : BYTE ; //1 (우선순위 1이가장낮음)OB1_OB_NUMBR : BYTE ; //1 (조직블록 1, OB1)OB1_RESERVED_1 : BYTE ; //시스템용으로예약됨OB1_RESERVED_2 : BYTE ; //시스템용으로예약됨OB1_PREV_CYCLE : INT ; //이전 OB1 스캔의순환시간 (밀리초)OB1_MIN_CYCLE : INT ; //OB1의최소순환시간 (밀리초)OB1_MAX_CYCLE : INT ; //OB1의최대순환시간 (밀리초)OB1_DATE_TIME : DATE_AND_TIME ; //OB1 시작날짜와시간

END_VARBEGINNETWORKTITLE =제어: Station_1

CALL "Station" , "Station_DB" (Initial := I 0.0,Proxy_Switch := "INI1",Acknowledge:= "S1",Clock_Bit := M 10.1,LED := "H1");

END_ORGANIZATION_BLOCK

Page 244: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Solutions to the ExercisesPage 21

연습 6.2 해답: FB2 (1부)

FUNCTION_BLOCK "Transport"TITLE =컨베이어제어VERSION : 0.1VAR_INPUTInitial : BOOL ;L_Barrier : BOOL ;Acknowledge : BOOL ;Transp_req : BOOL ;Clock_Bit : BOOL ;

END_VARVAR_OUTPUTLED : BOOL ;Conv_right : BOOL ;Conv_left : BOOL ;

END_VARVARState : STRUCT Waiting : BOOL ;Conv_right : BOOL ;Assembly : BOOL ;Conv_left : BOOL ;END_STRUCT ;

END_VARBEGINNETWORKTITLE =초기화

A #Initial; S #State.Waiting; R #State.Conv_right; R #State.Assembly; R #State.Conv_left;

NETWORKTITLE =상태: 대기//완성된부품을위해벨트가이상태에서대기함.

AN #State.Waiting; JC RECH; R #Conv_right; R #Conv_left; R #LED; A #Transp_req; R #State.Waiting; S #State.Conv_right;

NETWORKTITLE =상태: Conv_right//이상태는완성된부품이직접최종어셈블리로전송되는과정을설명합니다.RECH: AN #State.Conv_right;

JC ENDM; S #Conv_right; A #Clock_Bit; = #LED; AN #L_Barrier; R #Conv_right; R #State.Conv_right; S #State.Assembly;

(다음페이지에서계속)

Page 245: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Solutions to the ExercisesPage 22

연습 6.2 해답: FB2 (2부)

NETWORKTITLE =상태: 어셈블리//이상태에서는벨트에서완성된부품을제거하고처리되지않은새로운//부품을놓습니다. 그런후 S4를이용하여비어있는처리스테이션의방향으로//처리되지않은새로운부품의전송이시작됩니다.//ENDM: AN #State.Assembly;

JC LINK; S #LED; A #Acknowledge; R #LED; R #State.Assembly; S #State.Conv_left;

NETWORKTITLE =상태: Conv_left //이상태에서완성된부품을전달한스테이션으로처리되지않은//새로운부품이전송됩니다.LINK: AN #State.Conv_left;

JC ENDE; S #Conv_left; A #Clock_Bit; = #LED; AN #Transp_req; R #Conv_left; R #State.Conv_left; S #State.Waiting;

ENDE: BEU ;

END_FUNCTION_BLOCK

Page 246: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Solutions to the ExercisesPage 23

연습 6.2 해답: OB1

ORGANIZATION_BLOCK OB 1TITLE =VERSION : 0.1

VAR_TEMPOB1_EV_CLASS : BYTE ; //비트 0-3 = 1(들어오는이벤트), 비트 4-7 = 1 (이벤트클래스 1)OB1_SCAN_1 : BYTE ; //1 (OB1의콜드재시작스캔 1), 3 (OB1의스캔 2-n)OB1_PRIORITY : BYTE ; //1 (우선순위 1이가장낮음)OB1_OB_NUMBR : BYTE ; //1 (조직블록 1, OB1)OB1_RESERVED_1 : BYTE ; //시스템용으로예약됨OB1_RESERVED_2 : BYTE ; //시스템용으로예약됨OB1_PREV_CYCLE : INT ; //이전 OB1 스캔의순환시간 (밀리초)OB1_MIN_CYCLE : INT ; //OB1의최소순환시간 (밀리초)OB1_MAX_CYCLE : INT ; //OB1의최대순환시간 (밀리초)OB1_DATE_TIME : DATE_AND_TIME ; //OB1 시작날짜와시간

END_VARBEGINNETWORKTITLE =제어: Station_1

CALL "Station" , "Station_DB" (Initial := I 0.0,Proxy_Switch := "INI1",Acknowledge := "S1",Clock_Bit := M 10.1,LED := "H1",Transp_req := "Transport_DB".Transp_req);

NETWORKTITLE =제어: 컨베이어

CALL "Transport" , "Transport_DB" (Initial := I 0.0,L_Barrier := "LS1",Acknowledge := "S4",Clock_Bit := M 10.1,LED := "H4",Conv_right := "K1 CONV",Conv_left := "K2_CONV");

END_ORGANIZATION_BLOCK

Page 247: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Solutions to the ExercisesPage 24

연습 6.3 해답: FB10 (1부)

FUNCTION_BLOCK FB 10TITLE =VERSION : 0.1

VARStation_1 : "Station";Station_2 : "Station";Station_3 : "Station";Transport : "Transport";Conv_busy : BOOL ;

END_VARVAR_TEMPTrans_1 : BOOL ;Trans_2 : BOOL ;Trans_3 : BOOL ;Trans : BOOL ;

END_VARBEGINNETWORKTITLE =Station_1

CALL #Station_1 (Initial := I 0.0,Proxy_Switch := "INI1",Acknowledge := "S1",Clock_Bit := "CLOCK_BIT",LED := "H1",Transp_req := #Trans_1,Conv_busy := #Conv_busy);

NETWORKTITLE =Station_2

CALL #Station_2 (Initial := I 0.0,Proxy_Switch := "INI2",Acknowledge := "S2",Clock_Bit := "CLOCK_BIT",LED := "H2",Transp_req := #Trans_2,Conv_busy := #Conv_busy);

NETWORKTITLE =Station_3

CALL #Station_3 (Initial := I 0.0,Proxy_Switch := "INI3",Acknowledge := "S3",Clock_Bit := "CLOCK_BIT",LED := "H3",Transp_req := #Trans_3,Conv_busy := #Conv_busy);

// (다음페이지에서계속)

Page 248: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Solutions to the ExercisesPage 25

연습 6.3 해답: FB10; OB1

NETWORKTITLE =Logic: Transp_req//#Transp_req의논리만들기

O #Trans_1; O #Trans_2; O #Trans_3; = #Trans;

NETWORKTITLE =Transport

CALL #Transport (Initial := I 0.0,L_Barrier := "LS1",Acknowledge := "S4",Transp_req := #Trans,Clock_Bit := "CLOCK_BIT",LED := "H4",Conv_right := "K1_CONV",Conv_left := "K2_CONV");

END_FUNCTION_BLOCK

ORGANIZATION_BLOCK OB 1TITLE =VERSION : 0.1

VAR_TEMPOB1_EV_CLASS : BYTE ; //비트 0-3 = 1(들어온는이벤트), 비트 4-7 = 1 (이벤트클래스 1)OB1_SCAN_1 : BYTE ; //1 (OB1의콜드시작스캔 1), 3 (OB 1의스캔 2-n)OB1_PRIORITY : BYTE ; //1 (우선순위 1이가장낮음)OB1_OB_NUMBR : BYTE ; //1 (조직블록 1, OB1)OB1_RESERVED_1 : BYTE ; //시스템용으로예약됨OB1_RESERVED_2 : BYTE ; //시스템용으로예약됨OB1_PREV_CYCLE : INT ; //이전 OB1 스캔의순환시간 (밀리초)OB1_MIN_CYCLE : INT ; //OB1의최소순환시간 (밀리초)OB1_MAX_CYCLE : INT ; //OB1의최대순환시간 (밀리초)OB1_DATE_TIME : DATE_AND_TIME ; //OB1 시작날짜와시간

END_VAR

BEGINNETWORKTITLE =

CALL FB 10 , DB 10 ;

END_ORGANIZATION_BLOCK

Page 249: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Solutions to the ExercisesPage 26

추가연습 6.4 해답: DB6, FB6

DATA_BLOCK DB 6FB 1BEGIN

CU := FALSE; R := FALSE; PV := 0; Q := FALSE; CV := 0; Edge_memory_bit_CU := FALSE; Edge_memory_bit_R := FALSE;

END_DATA_BLOCK

FUNCTION_BLOCK FB 6

VAR_INPUTCU : BOOL ;R : BOOL ;PV : INT ;

END_VARVAR_OUTPUTQ : BOOL ;CV : INT ;

END_VARVAREdge_memory_bit_CU : BOOL ;Edge_memory_bit_R : BOOL ;

END_VARBEGIN

A #CU; // 카운트업시작FP #Edge_memory_bit_CU; // 에지메모리비트설정JCN NZHL; // 에지가없으면점프L #CV; // 현재값로드L 1; // 1 로드+I ; // 16비트더하기A OV; // 과잉?JCN NOVL; // 과잉이없으면점프L 32767; // 그렇지않으면: 최대값로드

NOVL: T #CV; // 결과를 CV로전송NZHL: NOP 0; // 카운트업종료

//A #R; // 리셋시작FP #Edge_memory_bit_R; // 에지메모리비트설정JCN NRCK; // 에지가없으면점프L 0; // 16비트상수인 0 로드T #CV; // 현재값으로전송

NRCK: NOP 0; // 리셋종료//

L #CV; // 출력 Q 처리시작L #PV; // 사전설정값로드>=I ; // CV >= PV ?= #Q; // RLO를출력 Q로지정

END_FUNCTION_BLOCK

Page 250: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Solutions to the ExercisesPage 27

연습 7.2 해답 : 데이터블록검사

FUNCTION FC 72 : INTTITLE =VERSION : 0.1

VAR_INPUTDB_No : WORD ;

END_VARVAR_TEMPI_DB_Length : WORD ;I_RET_VAL : INT ;I_Write_Protect : BOOL ;

END_VARBEGINNETWORKTITLE =DB 검사

CALL "TEST_DB" (DB_NUMBER := #DB_No,RET_VAL := #I_RET_VAL,DB_LENGTH := #I_DB_Length,WRITE_PROT := #I_Write_Protect);

L #I_RET_VAL; L W#16#0; ==I ; JC DBOK; // 작업메모리에서이용할수있는 DBTAK ; L W#16#80A1; ==I ; JC NODB; // CPU에서이용할수없는 DBTAK ; L W#16#80B1; ==I ; JC NODB; // 작업메모리에서이용할수없는 DBTAK ; L W#16#80B2; ==I ; JC DBLM; // 로드메모리에만있는 DB

NODB: L -1; T #RET_VAL; // CPU에서이용할수없는 DBBEU ;

DBLM: L 1; T #RET_VAL; // 로드메모리에만있는 DBBEU ;

DBOK: L 0; T #RET_VAL; // 작업메모리에서이용할수있는 DB

END_FUNCTION

Page 251: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Solutions to the ExercisesPage 28

연습 7.3 해답: DB 만들기

ORGANIZATION_BLOCK OB 100TITLE =VERSION : 0.1

VAR_TEMPOB100_EV_CLASS : BYTE ; //16#13, 이벤트클래스 1, 이벤트상태로들어가기,

// 진단버퍼에로그된이벤트OB100_STRTUP : BYTE ; //16#81/82/83/84 시작방법OB100_PRIORITY : BYTE ; //27 (우선순위 1이가장낮음)OB100_OB_NUMBR : BYTE ; //100 (조직블록 100, OB100)OB100_RESERVED_1 : BYTE ; //시스템용으로예약됨OB100_RESERVED_2 : BYTE ; //시스템용으로예약됨OB100_STOP : WORD ; //CPU를정지시킨이벤트 (16#4xxx)OB100_STRT_INFO : DWORD ; //시스템시작방법에관한정보OB100_DATE_TIME : DATE_AND_TIME ; //OB 100 시작날짜와시간

END_VAR

BEGINNETWORKTITLE =DB10 만들기

CALL "CREAT_DB" (LOW_LIMIT := W#16#A, // 십진수 10 (DB10)과같음UP_LIMIT := W#16#A, // "COUNT := W#16#28, // 십진수 40 (40 바이트)과같음RET_VAL := MW 0,DB_NUMBER := QW 12);

END_ORGANIZATION_BLOCK

Page 252: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Solutions to the ExercisesPage 29

연습 7.4 해답: 로드에서작업메모리로 DB 복사

ORGANIZATION_BLOCK OB 1TITLE =//로드에서작업메모리로 DB 복사VERSION : 2.10

VAR_TEMPOB1_EV_CLASS : BYTE ; //비트 0-3 = 1 (들어오는이벤트), Bits 4-7 = 1 (이벤트클래스 1)OB1_SCAN_1 : BYTE ; //1 (OB1의콜드재시작스캔 1), 3 (OB1의스캔 2-n)OB1_PRIORITY : BYTE ; //1 (우선순위 1이가장낮음)OB1_OB_NUMBR : BYTE ; //1 (조직블록 1, OB1)OB1_RESERVED_1 : BYTE ; //시스템용으로예약됨OB1_RESERVED_2 : BYTE ; //시스템용으로예약됨OB1_PREV_CYCLE : INT ; //이전 OB1 스캔의순환시간 (밀리초)OB1_MIN_CYCLE : INT ; //OB1의최소순환시간 (밀리초)OB1_MAX_CYCLE : INT ; //OB1의최대순환시간 (밀리초)OB1_DATE_TIME : DATE_AND_TIME ; //OB1 시작날짜와시간

END_VARBEGINNETWORKTITLE =

CALL "BLKMOV" (SRCBLK := P#DB10.DBX 0.0 BYTE 40,RET_VAL := QW 12,DSTBLK := P#DB20.DBX 0.0 BYTE 40);

END_ORGANIZATION_BLOCK

Page 253: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Solutions to the ExercisesPage 30

연습 7.5 해답: DB 초기화

FUNCTION FC 75 : BOOLTITLE =// 연습 7.5: DB 초기화 (S7-400 전용)VERSION : 0.1VAR_INPUTDB_NUM : WORD ;INI : BYTE ;

END_VARVAR_TEMPI_RET_VAL : INT ;I_DB_Length : WORD ;I_WRITE_PROT : BOOL ;I_ANY : ANY ;DB_No : WORD ;I_INI : BYTE ;I_RET_VAL1 : INT ;

END_VARBEGINNETWORKTITLE =//DB가작업메모리에있는지확인하고필요할경우초기화합니다.

CALL "TEST_DB" (DB_NUMBER := #DB_NUM,RET_VAL := #I_RET_VAL,DB_LENGTH := #I_DB_Length,WRITE_PROT := #I_WRITE_PROT);

L #I_RET_VAL; L W#16#0; ==I ; // 작업메모리에들어있는 DBAN #I_WRITE_PROT; JC OK; CLR ; // 초기화할수없음= #RET_VAL; // 거짓(FALSE) 반환BEU ;

OK: LAR1 P##I_ANY; // 임시변수 ANY 지정L B#16#10; // ANY의식별자를T LB [AR1,P#0.0]; // 바이트-오프셋 0에L B#16#2; // BYTE 데이터형의식별자를T LB [AR1,P#1.0]; // 바이트-오프셋 1에L #I_DB_Length; // DB 길이를바이트로T LW [AR1,P#2.0]; // 바이트-오프셋 2에로드L #DB_NUM; // DB 번호를T LW [AR1,P#4.0]; // 바이트-오프셋 4에로드L P#DBX 0.0; // DBX0.0의포인터를T LD [AR1,P#6.0]; // 바이트-오프셋 6에로드L #INI; // 초기화바이트를T #I_INI; // 임시변수에CALL "FILL" (

BVAL := #I_INI,// 임시변수에만사용RET_VAL := #I_RET_VAL,BLK := #I_ANY);

SET ; = #RET_VAL; BE ;

END_FUNCTION

Page 254: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Solutions to the ExercisesPage 31

연습 7.6 해답: 진단버퍼에메시지기록(SFC 52)

FUNCTION FC 76 : VOIDTITLE =//연습 7.6: 진단버퍼에메시지기록 (SFC 52)VERSION : 0.0VAR_TEMPI_RET_VAL : INT ;info1 : WORD ;info2 : DWORD ;

END_VAR

BEGINNETWORKTITLE =

L W#16#8; T #info1; L W#16#1; T #info2;

CALL "WR_USMSG" (SEND := TRUE,EVENTN := W#16#9B0A,INFO1 := #info1,INFO2 := #info2,RET_VAL := #I_RET_VAL);

END_FUNCTION

Page 255: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Solutions to the ExercisesPage 32

연습 8.1 해답: FC43에서의오류처리 (1부)

FUNCTION FC 81 : INTTITLE =연습 8.2: 오류처리가있는합계, 평균값계산//S7-400용해답VERSION : 0.0

VAR_INPUTMeasured_values : ANY ;

END_VARVAR_OUTPUTSum : REAL ;Mean_value : REAL ;

END_VARVAR_TEMPLoop_counter : WORD ;DB_No : WORD ;Sum_1 : REAL ;sfc_ret_val : INT ;sfc_prgflt : DWORD ;sfc_accflt : DWORD ;

END_VARBEGINNETWORKTITLE =

L P##Measured_values; // “ANY”포인터의영역포인터로드LAR1 ; // AR1에영역포인터L B [AR1,P#1.0]; // 데이터형식별자읽기L 8; // 식별자 REAL(16#08) 로드==I ; L -1; // 데이터형식별자가 REAL이아님JCN ERRO; // 데이터형이 REAL이아니면점프

// 마스크동기화오류: 호출했던 DB가존재하지않음// 전역 DB의오류번호// 인스턴스 DB의오류번호,// 읽기에서영역오류,,// 읽기에서영역길이오류

CALL "MSK_FLT" (PRGFLT_SET_MASK := DW#16#40C0014,ACCFLT_SET_MASK := DW#16#0,RET_VAL := #sfc_ret_val,PRGFLT_MASKED := #sfc_prgflt,ACCFLT_MASKED := #sfc_accflt);

L W [AR1,P#2.0]; // 배열요소의개수로드T #Loop_counter; // 루프카운터초기화L W [AR1,P#4.0]; // DB 번호또는 0 로드T #DB_No; // DB_No=0이면 OPN DB[DB_No]=NOPOPN DB [#DB_No]; // 런타임오류!!, DB가존재하지않는경우L D [AR1,P#6.0]; // AR1에실질어드레스의영역포인터로드,LAR1 ; // 오류!! 영역식별자가 "DI"이면L 0.000000e+000; // 0을 Accu1 (합계 =0.0)에L #Loop_counter; // 카운터를 ACCU1에, Sum=0을 ACCU2에

// (다음페이지에서계속)

Page 256: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Solutions to the ExercisesPage 33

연습 8.1 해답: FC43에서의오류처리(2부)

BEGN: TAK ; // ACCU2에 Loopc, ACCU1에합계ENT ; // ACCU3에 Loopc, ACCU2에합계L D [AR1,P#0.0]; // ACCU1에배열요소+R ; // ACCU1에합계, ACCU2에 Loopc+AR1 P#4.0; // Ar1을 4 바이트만큼증가시킴TAK ; // ACCU1에 Loopc, ACCU2에합계LOOP BEGN; // Loopc를감소시키고필요한경우점프TAK ; // ACCU1에합계T #Sum_1; // 합계를 #Sum에

// 오류평가CALL "READ_ERR" (

PRGFLT_QUERY := DW#16#40C0014,ACCFLT_QUERY := DW#16#0,RET_VAL := #sfc_ret_val,PRGFLT_CLR := #sfc_prgflt,ACCFLT_CLR := #sfc_accflt);

L #sfc_prgflt; // 잘못된 DB 확인L DW#16#40C0000; UD ; // Biweises “반올림"L -2; // DB의오류코드가존재하지않음JZ ERRO; // 오류이면점프L #sfc_prgflt; // 영역또는영역길이오류가있는지확인L DW#16#14; UD ; L -4; // 영역또는영역길이오류의식별자JZ ERRO; // 오류이면점프

// 오류가발생하지않았으면 “정상”처리과정을진행L #Sum_1; L #Loop_counter; // ACCU2에합계, ACCU1에개수DTR ; // 부호가정의되지않은정수 (16비트)를 REAL에/R ; // ACCU1에평균값T #Mean_value; // #Mean_value에평균값SET ; // BR 비트를 1로설정SAVE ; L 0 ; // 모든식별자가이상없음T RET_VAL;

JU DMSK; // 동기화오류마스크해제로점프ERRO: CLR ; // 오류 RLO=0일때의인스트럭션

SAVE ; // BR =0T #RET_VAL; // 오류코드를 RET_VAL에전송L L#-1; // 잘못된 REAL 숫자로드T #Sum; T #Mean_value;

DMSK: NOP 0; // 동기오류표시해제CALL "DMSK_FLT" (

PRGFLT_RESET_MASK := DW#16#40C0014,ACCFLT_RESET_MASK := DW#16#0,RET_VAL := #sfc_ret_val,PRGFLT_MASKED := #sfc_prgflt,ACCFLT_MASKED := #sfc_accflt);

BEU ;

END_FUNCTION

Page 257: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Solutions to the ExercisesPage 34

연습 9.2 해답 (1부, FB1)

FUNCTION_BLOCK "Station"TITLE =VERSION : 0.1

VAR_INPUTInitial : BOOL ;Proxy_Switch : BOOL ;Acknowledge : BOOL ;Clock_Bit : BOOL ;

END_VARVAR_OUTPUTLED : BOOL ;Transp_req : BOOL ;

END_VARVAR_IN_OUTconv_busy : BOOL ;

END_VARVARState : STRUCT Busy : BOOL ;Completed : BOOL ;Waiting : BOOL ;END_STRUCT ;Aux_1 : BOOL ;Aux_2 : BOOL ;

END_VARBEGINNETWORKTITLE =초기화//초기화를이용하면기본상태, 즉, 스테이션이 “Busy”상태로설정됩니다.

A #Initial; R #State.Waiting; S #State.Busy; R #State.Completed; R #conv_busy;

NETWORKTITLE =State: Busy//처리가이상태에서진행됩니다. 작업자가작업장확인버튼을//눌러부품의처리가완료되었음을확인하면//처리가종료됩니다.

AN #State.Busy; JC REDY; S #LED; R #Transp_req; A #Acknowledge; R #State.Busy; R #LED; S #State.Completed;

// (다음페이지에서계속)

Page 258: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Solutions to the ExercisesPage 35

연습 9.2 해답(2부, FB1 계속)NETWORKTITLE =State: Completed//최종상태에서는완성된부품이전송벨트에놓여질때까지대기합니다.//전송벨트에아무것도없으면입력신호 #Band_frei가신호를보냅니다.REDY: AN #State.Completed;

JC WAIT; A #Clock_Bit; = #LED; AN #Conv_busy; A #Proxy_Switch; S #Conv_busy; S #Transp_req; A #Transp_req; A #Proxy_Switch; FN #Aux_1; R #State.Completed; S #State.Waiting;

NETWORKTITLE =State: Waiting//처리되지않은새로운부품을기다립니다. 새로운부품이도착되면전송벨트의인접스위치가//신호를보냅니다.WAIT: AN #State.Waiting;

JC ENDE; R #LED; A #Proxy_Switch; // 처리되지않은새로운부품이도착됨R #Transp_req; // 정지벨트A #Proxy_Switch; FN #Aux_1; // 제거후, 처리시작R #Conv_busy; // 다시한번컨베이어를활성화함R #State.Waiting; S #State.Busy;

ENDE: BEU ;

Page 259: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Solutions to the ExercisesPage 36

연습 9,2 해답 (3부, FB2)FUNCTION_BLOCK "Transport"TITLE =컨베이어제어VERSION : 0.1

VAR_INPUTInitial : BOOL ;L_Barrier : BOOL ;Acknowledge : BOOL ;Transp_req : BOOL ;Clock_Bit : BOOL ;

END_VARVAR_OUTPUTLED : BOOL ;Conv_right : BOOL ;Conv_left : BOOL ;Count_Value :INT ;

END_VARVARState : STRUCT Waiting : BOOL ;Transport_right : BOOL ;Assembly : BOOL ;Transport_left : BOOL ;END_STRUCT ;Counter: SFB0;

END_VARBEGINNETWORKTITLE =초기화

A #Initial; S #State.Waiting; R #State.Transport_right; R #State.Assembly; R #State.Transport_left;

call #Counter (R:= #Initial); // 필요하다면리셋

NETWORKTITLE =State: "Waiting"//컨베이어는이상태에서완성된부품을기다립니다.

AN #State.Waiting; JC RECH; R #Conv_right; R #Conv_left; R #LED; A #Transp_req; R #State.Waiting; S #State.Transport_right;

// (다음페이지에서계속)

Page 260: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Solutions to the ExercisesPage 37

연습 9.2 해답 (4부, FB2 계속)

NETWORKTITLE =State: Transport_right//이상태는완성된부품이최종어셈블리로전송되는과정을설명합니다.RECH: AN #State.Conv_right;

JC ENDM; S #Conv_right; A #Clock_Bit; = #LED; AN #L_Barrier; R #Conv_right; R #State.Conv_right; S #State.Assembly;

AN #L_Barrier;= #L_Barrier;

CALL #Counter ( CU := #L_Barrier,CV := #Current_Value);

NETWORKTITLE =State: Assembly//이상태에서완성된부품이제거되고처리되지않은새로운부품이벨트에놓여집니다.//그런후 S4를이용해비어있는처리스테이션방향으로의부품전송이//시작됩니다. ENDM: AN #State.Assembly;

JC LINK; S #LED; A #Acknowledge; R #LED; R #State.Assembly; S #State.Conv_left;

NETWORKTITLE =State: Conv_left //이상태에서재료가완성된부품을전달한스테이션으로전송됩니다.LINK: AN #State.Conv_left;

JC ENDE; S #Conv_left; A #Clock_Bit; = #LED; AN #Transp_req; R #Conv_left; R #State.Conv_left; S #State.Waiting;

ENDE: BEU ;

END_FUNCTION_BLOCK

Page 261: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Solutions to the ExercisesPage 38

연습 9.2 해답(5부, FB10)

FUNCTION_BLOCK FB 10TITLE =VERSION : 0.1

VARStation_1 : "Station";Station_2 : "Station";Station_3 : "Station";Transport : "Transport";Conv_busy : BOOL ;

END_VARVAR_TEMPTrans_1 : BOOL ;Trans_2 : BOOL ;Trans_3 : BOOL ;Trans : BOOL ;

END_VARBEGINNETWORKTITLE =Station_1

CALL #Station_1 (Initial := I 0.0,Proxy_Switch := "INI1",Acknowledge := "S1",Clock_Bit := "CLOCK_BIT",LED := "H1",Transp_req := #Trans_1,Conv_busy := #Conv_busy);

NETWORKTITLE =Station_2

CALL #Station_2 (Initial := I 0.0,Proxy_Switch := "INI2",Acknowledge := "S2",Clock_Bit := "CLOCK_BIT",LED := "H2",Transp_req := #Trans_2,Conv_busy := #Conv_busy);

NETWORKTITLE =Station_3

CALL #Station_3 (Initial := I 0.0,Proxy_Switch := "INI3",Acknowledge := "S3",Clock_Bit := "CLOCK_BIT",LED := "H3",Transp_req := #Trans_3,Conv_busy := #Conv_busy);

// (다음페이지에서계속)

Page 262: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Solutions to the ExercisesPage 39

연습 9.2 해답(6부, FB10 계속)NETWORKTITLE =Logic: Transp_req// #Transp_req의논리만들기

O #Trans_1; O #Trans_2; O #Trans_3; = #Trans;

NETWORKTITLE =Transport

CALL #Transport (Initial := I 0.0,L_Barrier := "LS1",Acknowledge := "S4",Transp_req := #Trans,Clock_Bit := "CLOCK_BIT",LED := "H4",Conv_right := "K1_CONV",Conv_left := "K2_CONV");

L #Transport.Current_value ;ITD ; // DINT까지확장DTB ; // BCD로변환T QW2 ;

END_FUNCTION_BLOCK

Page 263: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Solutions to the ExercisesPage 40

연습 9.2 해답(7부, DB10)DATA_BLOCK DB 10TITLE =VERSION : 0.0

FB 10BEGIN

Station_1.Initial := FALSE; Station_1.Proxy_Switch := FALSE; Station_1.Acknowledge := FALSE; Station_1.Clock_Bit := FALSE; Station_1.LED := FALSE; Station_1.Transp_req := FALSE; Station_1.Conv_busy:= FALSE; Station_1.State.Busy := FALSE; Station_1.State.Completed := FALSE; Station_1.State.Waiting := FALSE; Station_1.Aux_1 := FALSE; Station_1.Aux_2 := FALSE; Station_2.Initial := FALSE; Station_2.Proxy_Switch := FALSE; Station_2.Acknowledge := FALSE; Station_2.Clock_Bit := FALSE; Station_2.LED := FALSE; Station_2.Transp_req := FALSE; Station_2.Conv_busy := FALSE; Station_2.State.Busy := FALSE; Station_2.State.Completed := FALSE; Station_2.State.Waiting := FALSE; Station_2.Aux_1 := FALSE; Station_2.Aux_2 := FALSE; Station_3.Initial := FALSE; Station_3.Proxy_Switch := FALSE; Station_3.Acknowledge := FALSE; Station_3.Clock_Bit := FALSE; Station_3.LED := FALSE; Station_3.Transp_req := FALSE; Station_3.Conv_busy := FALSE; Station_3.State.Busy := FALSE; Station_3.State.Completed := FALSE; Station_3.State.Waiting := FALSE; Station_3.Aux_1 := FALSE; Station_3.Aux_2 := FALSE; Transport.Initial := FALSE; Transport.L_Barrier := FALSE; Transport.Acknowledge := FALSE; Transport.Transp_req := FALSE; Transport.Clock_Bit := FALSE; Transport.LED := FALSE; Transport.Conv_right := FALSE; Transport.Conv_left := FALSE; Transport.State.Waiting := FALSE; Transport.State.Transport_right := FALSE; Transport.State.Assembly := FALSE; Transport.State.Transport_left := FALSE;Conv_busy := FALSE;

END_DATA_BLOCK

Page 264: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Solutions to the ExercisesPage 41

연습 9.2 해답 (8부, OB1)

ORGANIZATION_BLOCK OB 1TITLE =VERSION : 0.1

VAR_TEMPOB1_EV_CLASS : BYTE ; //비트 0-3 = 1 (들어오는이벤트), Bits 4-7 = 1 (이벤트클래스 1)OB1_SCAN_1 : BYTE ; //1 (OB 1의콜드재시작스캔 1), 3 (OB1의스캔 2-n)OB1_PRIORITY : BYTE ; //1 (우선순위 1이가장낮음)OB1_OB_NUMBR : BYTE ; //1 (조직블록 1, OB1)OB1_RESERVED_1 : BYTE ; //시스템용으로예약됨OB1_RESERVED_2 : BYTE ; //시스템용으로예약됨OB1_PREV_CYCLE : INT ; //이전 OB1 스캔의순환시간 (밀리초)OB1_MIN_CYCLE : INT ; //OB1의최소순환시간 (밀리초)OB1_MAX_CYCLE : INT ; //OB1의최대순환시간 (밀리초)OB1_DATE_TIME : DATE_AND_TIME ; //OB1 시작날짜와시간

END_VARBEGINNETWORKTITLE =

CALL FB 10 , DB 10 ;

END_ORGANIZATION_BLOCK

Page 265: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Solutions to the ExercisesPage 42

연습 10.1 해답 (1부)

ORGANIZATION_BLOCK OB 100TITLE =SFB의 "START“과 "STOP“초기화VERSION : 0.1

VAR_TEMPOB100_EV_CLASS : BYTE ; //16#13, 이벤트클래스 1, 들어오는이벤트상태, 진단버퍼에

이벤트가로그됨OB100_STRTUP : BYTE ; //16#81/82/83/84 시작방법OB100_PRIORITY : BYTE ; //27 (우선순위 1이가장낮음)OB100_OB_NUMBR : BYTE ; //100 (조직블록 100, OB100)OB100_RESERVED_1 : BYTE ; //시스템용으로예약됨OB100_RESERVED_2 : BYTE ; //시스템용으로예약됨OB100_STOP : WORD ; //CPU를정지시키는이벤트(16#4xxx)OB100_STRT_INFO : DWORD ; //시스템의시작방법에관한정보OB100_DATE_TIME : DATE_AND_TIME ; //OB100 시작날짜와시간P_NAME : ARRAY [1 .. 9 ] OF CHAR ;

END_VARBEGINNETWORKTITLE =//Enter STRING "P_PROGRAM" in PI_NAME // ************************************************************************* // *** CFB의 "PI_NAME“파라미터정의 **** *//**************************************************************************//

L 'P_PR'; T MD 100; L 'OGRA'; T MD 104; L 'M'; T MB 108;

NETWORKTITLE =

CALL SFB 20 , DB 20 (// SFB "STOP“의초기화REQ := FALSE,ID := W#16#3,PI_NAME := P#M 100.0 BYTE 9);

NETWORKTITLE =

CALL SFB 19 , DB 19 (// SFB "START“의초기화REQ := FALSE,ID := W#16#3,PI_NAME := P#M 100.0 BYTE 9);

END_ORGANIZATION_BLOCK

Page 266: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Solutions to the ExercisesPage 43

연습 10.1 해답: OB100, OB1(2부)

ORGANIZATION_BLOCK OB 1TITLE =VERSION : 0.1

VAR_TEMPOB1_EV_CLASS : BYTE ; //비트 0-3 = 1 (들어오는이벤트), Bits 4-7 = 1 (이벤트클래스 1)OB1_SCAN_1 : BYTE ; //1 (OB1의콜드재시작스캔 1), 3 (OB 1의스캔 2-n)OB1_PRIORITY : BYTE ; //1 (우선순위 1이가장낮음)OB1_OB_NUMBR : BYTE ; //1 (조직블록 1, OB1)OB1_RESERVED_1 : BYTE ; //시스템용으로예약됨OB1_RESERVED_2 : BYTE ; //시스템용으로예약됨OB1_PREV_CYCLE : INT ; //이전 OB1 스캔의순환시간 (밀리초)OB1_MIN_CYCLE : INT ; //OB1의최소순환시간 (밀리초)OB1_MAX_CYCLE : INT ; //OB1의최대순환시간 (밀리초)OB1_DATE_TIME : DATE_AND_TIME ; //OB1 시작날짜와시간DONE_FLAG_20 : BOOL ;ERROR_FLAG_20 : BOOL ;DONE_FLAG_19 : BOOL ;ERROR_FLAG_19 : BOOL ;STATUS_WORD_20 : WORD ;STATUS_WORD_19 : WORD ;

END_VARBEGINNETWORKTITLE ="SFB_STOP"

CALL SFB 20 , DB 20 (REQ := I 0.0,DONE := #DONE_FLAG_20,ERROR := #ERROR_FLAG_20,STATUS := #STATUS_WORD_20);

NETWORKTITLE ="SFB_START"

CALL SFB 19 , DB 19 (REQ := I 0.1,DONE := #DONE_FLAG_19,ERROR := #ERROR_FLAG_19,STATUS := #STATUS_WORD_19);

// (다음페이지에서계속)

Page 267: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Solutions to the ExercisesPage 44

연습 10.1 해답: OB100, OB1 (2부)

NETWORKTITLE =

A( ; // QW2에 SFB “START”의 STATUS 워드가반환됨O #DONE_FLAG_19; O #ERROR_FLAG_19; ) ; JNB _001; L #STATUS_WORD_19; T QW 2;

_001: NOP 0; NETWORKTITLE =

A( ; // QW2에 SFB “STOP”의 STATUS 워드가반환됨O #DONE_FLAG_20; O #ERROR_FLAG_20; ) ; JNB _002; L #STATUS_WORD_20; T QW 2;

_002: NOP 0; NETWORKTITLE =

A I 0.0; // 그렇지않으면, QW2에 FFFF를기록함BEC ; A I 0.1; BEC ; L W#16#FFFF; T QW 2;

END_ORGANIZATION_BLOCK

Page 268: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Solutions to the ExercisesPage 45

연습 10.2 해답: OB100, OB1 (1부)

ORGANIZATION_BLOCK OB 100TITLE =완전재시작//Exercise : S7-400는 S7-300 외부에서읽어와 S7-300 내부에기록합니다.AUTHOR : AUT95FAMILY : A2_0NAME : ST7PROG3VERSION : 0.0

VAR_TEMPOB100_EV_CLASS : BYTE ; //16#13, 이벤트클래스 1, 이벤트상태로들어가기, 진단버퍼에

로그된이벤트OB100_STRTUP : BYTE ; //16#81/82/83/84 시작방법OB100_PRIORITY : BYTE ; //27 (우선순위 1이가장낮음)OB100_OB_NUMBR : BYTE ; //100 (조직블록 100, OB100)OB100_RESERVED_1 : BYTE ; //시스템용으로예약됨OB100_RESERVED_2 : BYTE ; //시스템용으로예약됨OB100_STOP : WORD ; //CPU를정지시키는이벤트(16#4xxx)OB100_STRT_INFO : DWORD ; //시스템시작방법에관한정보OB100_DATE_TIME : DATE_AND_TIME ; //OB100 시작날짜와시간PI_NAME : ARRAY [1 .. 9 ] OF CHAR ;

END_VARBEGINNETWORKTITLE =Initialize CFB "GET"

CALL SFB 14 , DB 14 (REQ := FALSE,ID := W#16#3);

NOP 0; NETWORKTITLE =CFB "PUT“초기화

CALL SFB 15 , DB 15 (REQ := FALSE,ID := W#16#3);

END_ORGANIZATION_BLOCK

Page 269: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Solutions to the ExercisesPage 46

연습 10.2 해답: OB100, OB1 (2부)

ORGANIZATION_BLOCK OB 1TITLE =사이클//연습: S7400은 S7-300 외부에서읽어와 S7-300 내에기록합니다.AUTHOR : AUt95FAMILY : A2_0NAME : ST7PROG3VERSION : 0.0

VAR_TEMPOB1_EV_CLASS : BYTE ; //비트 0-3 = 1 (들어오는이벤트), Bits 4-7 = 1 (이벤트클래스 1)OB1_SCAN_1 : BYTE ; //1 (OB1의콜드재시작스캔 1), 3 (OB1의스캔 2-n)OB1_PRIORITY : BYTE ; //1 (우선순위 1이가장낮음)OB1_OB_NUMBR : BYTE ; //1 (조직블록 1, OB1)OB1_RESERVED_1 : BYTE ; //시스템용으로예약됨OB1_RESERVED_2 : BYTE ; //시스템용으로예약됨OB1_PREV_CYCLE : INT ; //이전 OB1 스캔의순환시간 (밀리초)OB1_MIN_CYCLE : INT ; //OB1의최소순환시간 (밀리초)OB1_MAX_CYCLE : INT ; //OB1의최대순환시간 (밀리초)OB1_DATE_TIME : DATE_AND_TIME ; //OB1의시작날짜와시간NDR_FLAG_14 : BOOL ;ERROR_FLAG_14 : BOOL ;DONE_FLAG_15 : BOOL ;ERROR_FLAG_15 : BOOL ;STATUS_WORD_14 : WORD ;STATUS_WORD_15 : WORD ;

END_VARBEGINNETWORKTITLE ="SFB_GET"

CALL SFB 14 , DB 14 (// "GET“호출REQ := I 0.2,ID := W#16#3,NDR := #NDR_FLAG_14,ERROR := #ERROR_FLAG_14,STATUS := #STATUS_WORD_14,ADDR_1 := P#I 0.0 BYTE 1,ADDR_2 := P#I 4.0 WORD 1,RD_1 := P#Q 0.0 BYTE 1,RD_2 := P#Q 4.0 WORD 1);

// (다음페이지에서계속)

Page 270: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Solutions to the ExercisesPage 47

연습 10.2 해답: OB100, OB1 (3부)NETWORKTITLE ="SFB_PUT"

CALL SFB 15 , DB 15 (//"PUT“호출)REQ := I 0.3,ID := W#16#3,DONE := #DONE_FLAG_15,ERROR := #ERROR_FLAG_15,STATUS := #STATUS_WORD_15,ADDR_1 := P#Q 12.0 WORD 1,SD_1 := P#I 2.0 WORD 1);

NETWORKTITLE =

A( ; // QW2에 SFB “GET”의 STATUS 워드가반환됨O #NDR_FLAG_14; O #ERROR_FLAG_14; ) ; JNB _002; L #STATUS_WORD_14; T QW 2;

_002: NOP 0; NETWORKTITLE =

A( ; // QW2에 SFB “PUT”의 STATUS 워드가반환됨O #DONE_FLAG_15; O #ERROR_FLAG_15; ) ; JNB _001; L #STATUS_WORD_15; T QW 2;

_001: NOP 0; NETWORKTITLE =

A I 0.2; // 그렇지않으면 QW2에 FFFF를기록함BEC ; A I 0.3; BEC ; L W#16#FFFF; T QW 2;

END_ORGANIZATION_BLOCK

Page 271: Simatic s7 Tr2 Korean

Training Centerfor Automation and Drives

ST-7PRO2Solutions to the ExercisesPage 48

연습 10.2 해답: OB100, OB1 (3부)NETWORKTITLE ="SFB_PUT"

CALL SFB 15 , DB 15 (// "PUT"호출REQ := I 0.3,ID := W#16#3,DONE := #DONE_FLAG_15,ERROR := #ERROR_FLAG_15,STATUS := #STATUS_WORD_15,ADDR_1 := P#Q 12.0 WORD 1,SD_1 := P#I 2.0 WORD 1);

NETWORKTITLE =

A( ; // QW2에 SFB “GET”의 STATUS 워드가반환됨O #NDR_FLAG_14; O #ERROR_FLAG_14; ) ; JNB _002; L #STATUS_WORD_14; T QW 2;

_002: NOP 0; NETWORKTITLE =

A( ; // QW2에 SFB “PUT”의 STATUS 워드가반환됨O #DONE_FLAG_15; O #ERROR_FLAG_15; ) ; JNB _001; L #STATUS_WORD_15; T QW 2;

_001: NOP 0; NETWORKTITLE =

A I 0.2; // 그렇지않으면 QW2에 FFFF를기록함BEC ; A I 0.3; BEC ; L W#16#FFFF; T QW 2;

END_ORGANIZATION_BLOCK

Page 272: Simatic s7 Tr2 Korean

Date: 10/18/99File: PRO2_fe.1

SIMATIC S7Siemens AG 1997. All rights reserved.

Information and Training CenterKnowledge for Automation

추가내용

Page 273: Simatic s7 Tr2 Korean

Date: 10/18/99File: PRO2_fe.2

SIMATIC S7Siemens AG 1997. All rights reserved.

Information and Training CenterKnowledge for Automation

자동화에대한지식

독일내 51개의교육장과 55개국이상에 140여개의교육장이있습니다.

독일24,000명의참가자 / 총 101,000 교육일

해외29,600 participants / 총 120,000 교육일

자동화기술의전분야를모든이들에게교육합니다.

A&D에서교육

Page 274: Simatic s7 Tr2 Korean

Date: 10/18/99File: PRO2_fe.3

SIMATIC S7Siemens AG 1997. All rights reserved.

Information and Training CenterKnowledge for Automation

SIMATIC 교육

SIMATIC S5

SIMATIC S7

SIMATIC M7

SIMATIC C7

SIMATIC HMI (COROS, ProTool, WinCC)

SIMATIC NET (PROFIBUS, 이더넷)

Page 275: Simatic s7 Tr2 Korean

Date: 10/18/99File: PRO2_fe.4

SIMATIC S7Siemens AG 1997. All rights reserved.

Information and Training CenterKnowledge for Automation

SIMATIC S5의시스템교육

SIMATIC S5는자동화세계의대명사로불려져왔으며다른 PLC 시스템과는다른표준을지정했습니다. 다음과같이 SIMATIC S5 시스템패밀리에대한폭넓은교육범위를제공합니다:

SIMATIC S5 시스템교육과정

SIMATIC S5 추가교육과정개방루프제어, 자동화폐쇄루프제어, 위치지정네트워킹, 통신

VDMA/ZVEI의요구사항에대한조직화된교육(독일기계와 플랜트제조업체의연합과독일전기및전자산업의연합)예를들면, SIMATIC 95를이용하는PLC 전문가로서의자질

Page 276: Simatic s7 Tr2 Korean

Date: 10/18/99File: PRO2_fe.5

SIMATIC S7Siemens AG 1997. All rights reserved.

Information and Training CenterKnowledge for Automation

SIMATIC S5에서 SIMATIC S7로업그레이드

구성 / 프로그래밍 설치 / 유지보수

ST-S5SERV 또는 ST-S5PRG1 (교육경로 ST1) 과정, SIMATIC S5 프로그래밍경험,

PC/ Windows95 지식에해당하는 SIMATIC S5 지식

SIMATIC S5-S7프로그래밍, 시동, 서비스업그레이드

5 일ST-7UPPROG

S5 S7

Page 277: Simatic s7 Tr2 Korean

Date: 10/18/99File: PRO2_fe.6

SIMATIC S7Siemens AG 1997. All rights reserved.

Information and Training CenterKnowledge for Automation

SIMATIC S7 시스템교육

구성엔지니어 / 프로그래머및커미션엔지니어

설치 / 유지보수및운영담당자

SIMATIC S7

시스템처리

ST-7SYH 5일

제어엔지니어링의기본지식, Windows 95 지식,

PLC에관한기본지식을보유한자

기술교육, 예를들면, 엔지니어나전문가, 또는,이에해당하는실무경험

PC와Windows에관한지식프로그래밍경험, 디지털기술지식을보유한자

SIMATIC S7

문제해결

ST-7TRO 5일

SIMATIC S7

프로그래밍 2

ST-7PRO2 5 일

SIMATIC S7

프로그래밍1

ST-7PRO1 5일

고급과정

SIMATIC NETSIMATIC NET

SIMATIC S7 위치지정SIMATIC S7 위치지정

SIMATIC S7 옵션패키지SIMATIC S7 옵션패키지

SIMATIC M7SIMATIC M7

SIMATIC WinCCSIMATIC WinCC

Page 278: Simatic s7 Tr2 Korean

Date: 10/18/99File: PRO2_fe.7

SIMATIC S7Siemens AG 1997. All rights reserved.

Information and Training CenterKnowledge for Automation

SIMATIC S7-200 교육

구성엔지니어, 프로그래머, 설치및유지보수담당자

제어엔지니어링에관한기본지식PC/Windows에관한지식

SIMATIC S7S7-200 워크숍___________________________ST-7MICRO 2 일

SIMATIC S7S7-200 워크숍___________________________ST-7MICRO 2 일

SIEMENS

SIMATIC S7-200

CPU 214SFRUNSTOP

I1.0I1.1I1.2I1.3I1.4I1.5

I0.0I0.1I0.2I0.3I0.4I0.5I0.6I0.7

Q1.0Q1.1

Q0.0Q0.1Q0.2Q0.3Q0.4Q0.5Q0.6Q0.7

Page 279: Simatic s7 Tr2 Korean

Date: 10/18/99File: PRO2_fe.8

SIMATIC S7Siemens AG 1997. All rights reserved.

Information and Training CenterKnowledge for Automation

SIMATIC S7/M7 옵션패키지

구성엔지니어 / 프로그래머

SIMATIC S7

S7-GRAPH를이용한

순차적제어

ST-7GRAPH 2 일

ST-7PRO1 (교육경로 ST6) 또는 ST-7SYH 및ST-7TRO (교육경로 ST6) 또는 ST-7UPPROG (교육경로 ST5)

과정에해당하는 SIMATIC S7 지식

프로그래밍

S7-300 인터페이스제어

NC-S7APT 3 일

SIMATIC S7

HiGraph 프로그래밍

NC-ZSG 3 일

SIMATIC S7

SCL 프로그래밍

ST-7SCL 2 일

SIMATIC S7

CFC를이용한그래픽프로그래밍

ST-7CFC 2 일

S7-GRAPHS7-GRAPH HIGRAPHHIGRAPH SCL /C+

SCL /C+

CFCCFC

Page 280: Simatic s7 Tr2 Korean

Date: 10/18/99File: PRO2_fe.9

SIMATIC S7Siemens AG 1997. All rights reserved.

Information and Training CenterKnowledge for Automation

SIMATIC NET

COROS OP45

WinCC

구성엔지니어 / 프로그래머

ST-7PRO1 (교육경로 ST6) 또는 ST-7SYH 및ST-7TRO (교육경로 ST6) 또는 ST-7UPPROG (교육경로 ST5)

과정에해당하는 SIMATIC S7

SIMATIC S7

포인트간연결

ST-7PTP 2 일

SIMATIC S7

분산입/출력PROFIBUS-DP

KO-7KDP 2 일

SIMATIC S7

산업용이더넷을이용한통신

KO-7KETHER 3 일

SIMATIC S7

PROFIBUS를이용한통신

KO-7KPROFI 4 일

SIMATIC S7

통신PROFIBUS-FMS

KO-7KFMS 2 일

Page 281: Simatic s7 Tr2 Korean

Date: 10/18/99File: PRO2_fe.10

SIMATIC S7Siemens AG 1997. All rights reserved.

Information and Training CenterKnowledge for Automation

SIMATIC WinCCHMI(Human-Machine Interface), 시스템교육

ST-BWINCCS 5 일

C에관한해박한지식, WIndows95/NT 및관계형데이터베이스에

관한기초지식

C에관한지식, 관계형데이터베이스에관한기초지식

*

SIMATIC WinCC

개방시스템 E

ST-BWINCCE 2 일

Windows 3.11, Wndows NT, OS/2와같은PC 그래픽사용자인터페이스를사용해본경험

구성엔지니어, 프로그래머, 커미션엔지니어,서비스담당자및의사결정자

시스템과정

워크숍

*

SIMATIC WinCC

개방시스템 N

ST-BWINCCN 1 일

SIMATIC WinCC

Page 282: Simatic s7 Tr2 Korean

Date: 10/18/99File: PRO2_fe.11

SIMATIC S7Siemens AG 1997. All rights reserved.

Information and Training CenterKnowledge for Automation

PLC 전문가

PLC 전문가시험

PLC 전문가

VDMA / ZVEI에따른

야간교육과정

ST-SPSTEA

토요일, 저녁

PLC 전문가

VDMA / ZVEI에따른

야간교육과정

ST-SPSTEA

토요일, 저녁

PLC 전문가

업그레이드 S5 -> S7

ST-7UPSPS

Page 283: Simatic s7 Tr2 Korean

Date: 10/18/99File: PRO2_fe.12

SIMATIC S7Siemens AG 1997. All rights reserved.

Information and Training CenterKnowledge for Automation

문의사항이있으십니까?

저희가도와드리겠습니다.

Page 284: Simatic s7 Tr2 Korean

Date: 10/18/99File: PRO2_fe.13

SIMATIC S7Siemens AG 1997. All rights reserved.

Information and Training CenterKnowledge for Automation

팩스양식

노트페이지로전환한후출력하십시오!

인터넷주소: http://www.aut.siemens.de/training/