Bausteinaufrufe und Multiinstanz-Modell

Similar documents
<4D F736F F F696E74202D203137C0E55FBFACBDC0B9AEC1A6BCD6B7E7BCC72E707074>

슬라이드 1

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

PRO1_09E [읽기 전용]

Microsoft PowerPoint - chap06-2pointer.ppt

PRO1_02E [읽기 전용]

C# Programming Guide - Types

Indirekte Adressierung und Adre?egisteranweisungen

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

PRO1_04E [읽기 전용]

PRO1_18E [읽기 전용]

초급과정 목차

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

Microsoft PowerPoint - 12장_Function과 Function Block.ppt

Microsoft PowerPoint - chap06-5 [호환 모드]

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

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

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

PowerPoint Presentation

<4D F736F F F696E74202D2032C0E55FC6AEB7B9C0CCB4D720C5B0C6AEB1B8BCBAC7B05F446F6E652E707074>

슬라이드 1

JVM 메모리구조

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

L?ungen zu den ?ungen

OCW_C언어 기초

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

PRO1_16E [읽기 전용]

Microsoft PowerPoint - additional01.ppt [호환 모드]

View Licenses and Services (customer)

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F >

RVC Robot Vaccum Cleaner

C++ Programming

Frama-C/JESSIS 사용법 소개

Visual Basic 반복문

Microsoft PowerPoint - 07_04_s7기초기술교육_simatic_manager_operation.ppt [호환 모드]

Diagnostizieren von Fehlern

Microsoft Word - FunctionCall

Microsoft PowerPoint - chap04-연산자.pptx

PowerPoint 프레젠테이션

Microsoft Word - Armjtag_문서1.doc

Microsoft PowerPoint - 13장_OB 블록.ppt

RHEV 2.2 인증서 만료 확인 및 갱신

슬라이드 1

Windows 8에서 BioStar 1 설치하기

Chapter #01 Subject

17장 클래스와 메소드

Chapter ...

adfasdfasfdasfasfadf

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

11장 포인터

ADP-2480

Status Bit-Dependent Instructions

Microsoft PowerPoint - e pptx

untitled

ISP and CodeVisionAVR C Compiler.hwp

상태비트의존적인인스트럭션 Date: File: PRO2_01e.1 Information and 목차 페이지 S7-CPU의레지스터및메모리영역... 2 상태워드구조 상태비트검사 상태비트인스트럭션 블록호출또는복잡한

chap 5: Trees

11장 포인터

Microsoft PowerPoint - 11장_데이터블록.ppt

PowerPoint 프레젠테이션

API - Notification 메크로를통하여어느특정상황이되었을때 SolidWorks 및보낸경로를통하여알림메시지를보낼수있습니다. 이번기술자료에서는메크로에서이벤트처리기를통하여진행할예정이며, 메크로에서작업을수행하는데유용할것입니다. 알림이벤트핸들러는응용프로그램구현하는데있어

IRISCard Anywhere 5

C언어 및 실습 C Language and Practice

untitled

PowerPoint 프레젠테이션

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

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

윈도우즈프로그래밍(1)

System Recovery 사용자 매뉴얼

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

Microsoft PowerPoint - [2009] 02.pptx

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

Tablespace On-Offline 테이블스페이스 온라인/오프라인

Microsoft PowerPoint - chap10-함수의활용.pptx

<4D F736F F F696E74202D C61645FB3EDB8AEC7D5BCBA20B9D720C5F8BBE7BFEBB9FD2E BC8A3C8AF20B8F0B5E55D>

Microsoft PowerPoint - chap01-C언어개요.pptx

PowerPoint 프레젠테이션

슬라이드 1

Microsoft Word - STL_SCL_4판_목차.doc

Using Libraries

Lab 3. 실습문제 (Single linked list)_해답.hwp

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A638C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

설계란 무엇인가?

A Dynamic Grid Services Deployment Mechanism for On-Demand Resource Provisioning

Microsoft PowerPoint 자바-기본문법(Ch2).pptx

untitled

PowerPoint Presentation

쉽게 풀어쓴 C 프로그래밍

PowerPoint Template

슬라이드 1

API 매뉴얼

설계란 무엇인가?

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

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A634C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

PRO1_14E [읽기 전용]

<4D F736F F D20C0CCBEBEC1A6BEEE5FC3A5BCD2B0B35F >

PowerPoint Presentation

Microsoft PowerPoint - chap03-변수와데이터형.pptx

Microsoft PowerPoint - chap06-1Array.ppt

Transcription:

블록호출및복수인스턴스모델 목차 페이지 S7-CPU의소프트웨어구조. 2 블록개요. 3 함수호출 (FC).... 4 FC 호출에서파라미터전달. 5 함수를호출하기위한다른인스트럭션 6 함수블록 (FB) 을가지는인스턴스만들기.. 7 함수블록 (FB) 을가지는인스턴스만들기... 8 FB 호출에서파라미터전달 9 FB를호출하기위한다른인스트럭션... 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: 블록파라미터의연결 22 FC Call에서파라미터전달 (2).. 23 FC 호출에서파라미터전달 (3).. 24 FC 호출에서파라미터전달 (4).. 25 FC 호출에서파라미터전달 (5). 26 추가연습 6.4: 자체카운터블록만들기.. 27 Page 1

S7-CPU 의소프트웨어구조 운영체제 START-UP OB... 순환프로그램프로세싱 Read in PII FBs FBs FCs Call OB1 FBs FCs Output PIQ Event-driven OBs... 사용자프로그램 File: PRO2_06e.2 Information and 개요 S7-300/400 PLC 시스템은통제된프로세스를통해정보를처리합니다. 정보는 입력 을통해읽은후평가, 처리되고마지막으로출력을통해프로세스에출력됩니다. 소프트웨어구조 S7-300/400 PLC 시스템의 CPU 소프트웨어는다음부분으로구분됩니다. 운영체제 사용자프로그램조직블록 (OB) 은운영체제와사용자프로그램간의인터페이스를형성합니다. 운영체제 사용자프로그램 블록 운영체제는사용자지향의통제작업에연결되지않은모든 CPU 기능과시퀀스를조직합니다. 여기에는다음의사항이포함됩니다. CPU 완전재시작, 또는재시작 이미지프로세싱처리 순환적및이벤트드리븐 OB 호출 오류인식 예를들어 PG 및프로세스입 / 출력과통신운영체제의퍼포먼스는파라미터할당에의해영향받을수있습니다 ( 예 : 순환시간감시, 이벤트중심 OB 의우선순위, 등 ). 사용자프로그램은 STEP7 프로그래밍소프트웨어를이용해만들어질수있습니다. 이것은모듈로디자인될수있습니다. 즉, 그자체로기능을가지는프로그램부분 ( 블록 ) 으로구성될수있습니다. 조직블록은해당이벤트가발생할때운영체제에의해호출됩니다. 다른모든블록의경우조직블록 (OB), 함수블록 (FB), 또는함수 (FC) 에서사용자에의해호출되어야합니다. Page 2

블록개요 Block Type Properties 구조블록 -운영체제에대한사용자인터페이스 (OB) -등급을매긴우선순위 (027) - 로컬데이터스택의특정시작정보 함수블록 - 파라미터를할당할수있음 (FB) -( 리콜 ) 메모리를가짐 함수 (FC) - 파라미터를할당할수있음 ( 호출에대한파라미터가할당되어야함 ) - 반환값이다시주어질수있음 - 기본적으로메모리가없음 데이터블록 - 로컬로구조적데이터저장 ( 인스턴스 DB) (DB) -전역적으로구조적데이터저장 ( 공유 ) ( 완전한프로그램에서유효 ) 시스템 - CPU의운영체제에저장되고사용자가호출할수있는 함수 ( 메모리를가진 ) FB 블록 (SFB) 시스템 - CPU의운영체제에저장되고사용자가호출할수있는 함수 (SFC) ( 메모리가없는 ) 함수 시스템데이터 - 설정데이터와파라미터에대한데이터블록 블록 (SDB) File: PRO2_06e.3 Information and 소개 복잡한자동화작업은각각이시스템또는프로세스의기술적기능을나타내는보다작은작업으로구분될때보다잘구조화될수있습니다. 블록클래스블록은기능과구조, 또는응용면에서사용자프로그램의제한된부분입니다. 블록은내용을유지하면서 2 개의클래스로나뉘어질수있습니다. 논리블록 : Step7 사용자프로그램이저장되는블록입니다 (OB, FB, FC, SFB, SFC). 데이터블록 : 데이터기록을위한블록입니다 (DB 와 SDB). 사용사용자프로그램을개별블록으로나누면다음의장점이있습니다. 전체자동화작업은보다작고명확한하위작업으로나뉘어질수있습니다. FB, SFB, FC, SFC 와같이파라미터화할수있는블록은다시사용될수있습니다. 즉, 다른파라미터와함께원하는만큼호출할수있습니다. 특별한블록 (FB 와 SFB) 은 메모리 를가지며따라서특히계산에적합하고이계산의결과는블록의프로세싱이끝난후에도요구됩니다 ( 컨트롤작업, 등 ) 블록은별도로변경, 로드, 테스트될수있습니다. 이런방식으로소프트웨어는프로그램실행시간중에블록별로변경되어다시로드될수있습니다. 많은작업에서특별작업을위한블록이표준라이브러리로제공되어개별사용자프로그램에서링크될수있습니다. 자주사용되는표준작업에대한블록은 CPU 생산자에의해 CPU 운영체제에서시스템함수블록 (SFB) 이나시스템함수 (SFC) 로통합될수있습니다. Page 3

함수호출 (FC) OB1 프로그램실행 함수 FC10 선언부 CALL FC10 실행부 File: PRO2_06e.4 Information and 개요 FC 호출 응용 함수는사용자프로그램의구성요소이며 IEC-Standard 1131-3 에따라메모리없는블록을나타냅니다. 함수는입력, 출력, 입 / 출력파라미터를가지는논리블록입니다. 함수는메모리를갖지않으며결과를저장하기위한별도의영구데이터영역이존재하지않습니다. 함수실행중에발생하는임시결과는단지개별로컬데이터스택의임시변수에저장될수있습니다. 함수는 ( 상태를 기억 하기위한내부메모리가없는 ) 스위칭네트워크를나타냅니다. FC 는처리될때 호출 되어야합니다. FC 호출은소위파라미터목록을가지는호출인스트럭션 ( 여기에서는 CALL FC10) 으로구성됩니다. 호출인스트럭션이처리된후 CPU 는호출된블록 ( 여기에서는 FC10) 에서프로그램프로세싱을계속합니다. 호출된블록은 BE 인스트럭션에도달할때까지처리됩니다. 그후에 CPU 는호출블록 ( 여기에서는 OB1) 으로되돌아가서 CALL 이후의다음인스트럭션으로프로세싱을계속합니다. 함수는주로 보조적인서비스 를위해사용되며, 따라서결과는호출블록으로반환됩니다. 결과는 (IEC 1131-3 에따라 ) 전달된파라미터에만의존해야합니다 ( 예를들어산술함수나이진논리연산을가진단일컨트롤 ). 출력파라미터 : 만약표준에따라프로그램하려면함수가실제로한개의반환값 RET_VAL을 RET_VAL 호출블록에넘기도록해야합니다. 텍스트모드로입력된함수의경우데이터형은함수정의, 예를들어 Function FC4: INT. 를통해직접주어질수있습니다. 여기에서 RET_VAL을입력파라미터로정의할필요는없습니다. Page 4

FC 호출에서파라미터전달 다음장소에있는기본실질파라미터 비트메모리어드레스영역 프로세스이미지 호출자의 L-Stack IB0 1 0 0 1 0 0 1 0 OB1 프로그램실행 CALL FC10 On_1 := I0.1 On_2 := I0.2 Off := Q8.0 OB1 BLD 1 = L 20.0 UC FC 10 P#I 0.1 P#I 0.2 P#Q 8.0 BLD 2 함수 FC10 in On_1 BOOL in On_2 BOOL out Off BOOl A #On_1 A #On_2 = #Off 블록파라미터 실질파라미터 형식파라미터 File: PRO2_06e.5 Information and FC 파라미터 전달메카니즘 참고 프로세싱을위한데이터는호출된함수로전달될수있습니다. 이데이터전달은 CALL 이후에오버레이된파라미터목록을통해서만일어날수있습니다. 오버레이된블록파라미터의이름과데이터형은 FC 의선언부에서지정됩니다. 입력 ( 읽기전용 ), 출력 ( 쓰기전용 ), 입 / 출력파라미터 ( 읽기및쓰기 ) 가선언될수있습니다. 파라미터의수는제한이없으며 ( 메모리공간!), 이름은최대 24 자를포함할수있습니다. 또한파라미터에상세한설명을제공할수있습니다. 블록이파라미터를가지지않으면파라미터목록은 FC 호출에서누락됩니다. CALL 의경우 STL/LAD/FBD 에디터는제일먼저파라미터목록에서주어진실질파라미터에서영역횡단포인터를계산하고이포인터를 FC 호출인스트럭션이후즉시저장합니다. 형식파라미터에대한액세스 ( 예 : A On_1) 가 FC 안에서발생하며 CPU 는 B- Stack 에저장된반환어드레스에서 FC 호출인스트럭션을결정합니다. 관련된파라미터목록에서 FC 는형식파라미터에속하는실질파라미터에대한영역횡단포인터를결정합니다. 실질파라미터에대한액세스는이포인터를통해이루어집니다. 이러한전달메커니즘은 참조에의한호출 과일치합니다. 형식파라미터에대한액세스가 FC 안에서일어나면그결과해당되는실질파라미터에대한액세스가발생합니다. 포인터를통한이전달메커니즘은다음을필요로합니다. 모든블록파라미터가 FC 호출에서할당되어야합니다. 블록파라미터는선언에서초기화될수없습니다. DB 안에서블록파라미터에실질파라미터가할당되지않거나복잡한데이터형이전달되면파라미터전달은보다복잡해집니다. 이장의끝부분에서메커니즘에대한개요나결과적으로발생하는오류소스에대한개요를볼수있습니다. Page 5

함수를호출하기위한다른인스트럭션 CALL 인스트럭션 인스트럭션은매크로입니다. 레지스터내용은 DB 레지스터의경우에도덮어쓰기될수있습니다. B-Stack 내용의경우주의가필요합니다. 호출후 잘못된 DB가열립니다. CALL에대한처리시간이 정확히 확인될수없습니다. CALL 인스트럭션은블록파라미터에현재데이터가정확히제공되도록합니다. 보기 : CALL FC10 On_1 := I0.1 On_2 := I0.2 Off := Q8.0 Call 인스트럭션 UC와 CC RLO 와관계없는 (UC) 또는 RLO 의존적인블록호출 보기 : UC FC20 또는 CC FC20 FC가파라미터를가지지않을때만사용됨 File: PRO2_06e.6 Information and CALL 인스트럭션 UC, CC 인스트럭션 중요 인스트럭션 ( 매크로 ) 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 호출인스트럭션은절대인스트럭션입니다. 즉, UC 는항상조건에관계없이블록을호출할수있습니다 ( 예 : UC FC20). CC 호출인스트럭션은조건적인인스트럭션입니다. 즉, RLO 가 1 일때만 CC 는블록을호출합니다. RLO 가 0 이면 CC 는블록을호출하지않고 RLO 를 1 로설정합니다. 그후에 CC 호출다음의인스트럭션이처리됩니다. UC 와 CC 는오직파라미터가호출된 FC 에서선언되지않을때만사용될수있습니다. Page 6

함수블록 (FB) 을가지는인스턴스만들기 FB Instance FB DB = + FB 인스턴스와연관된데이터포함 FB Instance_1 FB DB17 = Algorithms for control + Status data of Drive_1 Control of Drive_1 FB Instance_2 FB DB27 = Algorithms for control + Status data of Drive_2 Control of Drive_2 File: PRO2_06e.7 Information and 개요 함수블록은사용자프로그램의구성요소이며 IEC Standard 1131-3 에따라메모리를가지는논리블록을나타냅니다. 이함수블록은 OB, FB, FC 에의해호출될수있습니다. FC 와달리 FB 는인스턴스화됩니다. 즉, FB 는자체사적데이터영역을할당받습니다. 가장간단한형태 ( 단일인스턴스모델 ) 에서이사적데이터영역은자체 DB, 즉소위인스턴스 DB 입니다. 이 DB 는 FB 호출에서명시적으로지정되어야합니다. FB 인스턴스는 ( 상태를 기억 하기위한내부메모리를가지는 ) 스위치메커니즘을나타냅니다. 인스턴스는 FB를인스턴트화한다는것은큰의미를가지며 FC에본질적인구분기준을무엇인가? 형성합니다. C 와같은고급언어의경우선언에서변수명과데이터형을선언하여변수를설정하는것을 인스턴스화 또는 인스턴스형성 이라고합니다. 변수와마찬가지로함수블록도 인스턴스화 됩니다. 정적변수는물론블록파라미터변수가저장되는이 자체 데이터영역을통해서만 FB는실행가능한단위 (FB-인스턴스) 가됩니다. 입력및출력파라미터는물론정적변수의값은블록이끝난후에도유지됩니다. 이런방식으로 FB-인스턴스는몇개의호출에걸쳐이런로컬데이터를저장할수있습니다. 응용 FC 와달리 FB- 인스턴스는메모리를가집니다. 예를들어 메모리 는카운터나타이머함수를실행하기위해또는퍼포먼스가외부영향은물론내부상태 ( 프로세싱단계, 속도, 온도, 등 ) 에의존하는프로세스단위 ( 프로세싱스테이션, 드라이브, 보일러, 등 ) 를제어하기위해필요합니다. Page 7

FB 호출에서파라미터전달 IB0 1 0 0 0 0 0 1 0 1 DB10............ 1 0.............................. 0 QB8 1 0 0 1 0 0 0 0 3... OB1 프로그램실행 CALL FB10, DB10 On_1 := I0.4 On_2 := I0.1 Off := Q8.0 블록파라미터 실질파라미터 BLD 3 = L 24.0 TDB OPN DI 10 TAR2 LD 20 A I 0.4 = DIX 0.0 A I 0.1 = DIX 0.1 LAR2 P#DBX 0.0 AC FB 10 LAR2 LD 20 A DIX 2.0 = Q 8.0 TDB BLD 4 2 FB10 0.0 in On_1 BOOL 0.1 in On_2 BOOL 2.0 out Off BOOl A #On_1 A #On_2 = #Off 형식파라미터 File: PRO2_06e.8 Information and 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 후의다음인스트럭션을계속합니다. Page 8

FB 의 CALL 호출에서나타나는특징 값 에의한파라미터전달 ( 값을복사 ) : 초기화 : FB 파라미터는선언에서초기화될수있습니다. 실행 : 복잡한데이터형 (STRUCT, ARRAY, STRING and DATE_AND_TIME) 의입 / 출력파라미터 호출에서 FB 파라미터의할당 : FB 파라미터는할당될필요가없습니다. 액세스가 외부 ( 호출블록 ) 에서일어날수있습니다. 예외 : 복잡한데이터형 (STRUCT, ARRAY, STRING and DATE_AND_TIME) 의입 / 출력파라미터 형식파라미터에대한액세스가 DI 및 AR2에의해일어날수있습니다. DI 또는 AR2 레지스터덮어쓰기 : 인스턴스데이터에대한액세스를할수없습니다. File: PRO2_06e.9 Information and 예외 초기화 복잡한형 (ARRAY, STRUCT, STRING, DT) 의입 / 출력파라미터의경우값이아니라실질파라미터에대한 POINTER 가인스턴스 -DB 에복사됩니다. 블록파라미터와정적변수는 FB 선언에서초기화될수있습니다. 만약인스턴스 -DB 가그후에만들어지면선언에서지정된초기값이인스턴스 -DB 에입력됩니다. 그러나인스턴스 -DB 는공유 ( 전역 ) DB 와마찬가지로편집될수있습니다. 따라서편집기의 데이터보기 에서초기값을변경할수있습니다. 예외 : 복잡한데이터형의입 / 출력파라미터는초기화될수없습니다. 블록파라미터의블록파라미터는 FB 호출에서할당될필요가없습니다. 이경우변수는할당인스턴스-DB로또는인스턴스-DB에서복사되지않습니다. 인스턴스-DB의파라미터는마지막호출에서또한저장되었던값을유지합니다. 예외 : 복잡한데이터형의입 / 출력파라미터는파라미터목록에서할당되어야합니다. 외부 에서의인스턴스-DB에서파라미터에대한액세스는공유 DB의파라미터와마찬가지파라미터액세스방식으로이루어질수있습니다. 따라서블록파라미터는또한 외부 에서할당될수있습니다. 이것은예를들어복잡한데이터형의개별구성요소만이할당되어야할때특히유용합니다. 파라미터목록을통한입력및출력파라미터의할당은 전체 변수에대해서만작용합니다. 예외 : 복잡한데이터형의입 / 출력파라미터는 외부 에서할당될수없습니다. 중요 DI 레지스터나 AR2 레지스터가 FB 프로세싱에서덮어쓰기되면인스턴스데이터 ( 입력, 출력, 입 / 출력파라미터와정적변수 ) 에대한액세스는 FB 에서더이상이루어질수없습니다. Page 9

FB 를호출하기위한다른인스트럭션 CALL 인스트럭션 인스트럭션은매크로입니다. 레지스터특히 DB 레지스터의내용은덮어쓰기됩니다. B-Stack 내용의경우주의가필요합니다. 호출이후 잘못된 DB가열립니다. CALL에대한처리시간이 정확히 확인되지않습니다. CALL 인스트럭션은블록파라미터에현재데이터가정확히제공되도록합니다. 보기 : CALL FB10, DB10 On_1 := I0.1 On_2 := I0.2 Off := Q8.0 호출인스트럭션 UC와 CC RLO independent (UC) or RLO dependent block call Examples: UC FB20 or CC FB20 FB가인스턴스데이터 ( 파라미터 + 정적변수 ) 를가지지않을때만사용될수있음 File: PRO2_06e.10 Information and 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 가인스턴스데이터를가지지않을때, 즉블록파라미터나정적변수가선언부에서선언되지않을때만사용될수있습니다. Page 10

파라미터 " 전달 " 중첩깊이 : S7-300: 최대 8 S7-400: 최대 16 OB FBs... FBs FCs 전달은블록형, 데이터및파라미터형에의존합니다. : 호출 FC가 FC 호출 FB가 FC 호출 FC가 FB 호출 FB가 FB 호출 데이터형 ECP ECP ECP ECP 입력 -> 입력 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) File: PRO2_06e.11 Information and 개요 파라미터형에대한제한 블록파라미터의 전달 은액세스또는블록파라미터할당의특별한형태입니다. 전달 은호출블록의형식파라미터가호출된블록의실질파라미터가된다는것을의미합니다. 일반적으로실질파라미터는형식파라미터와데이터형이같습니다. 또한호출블록의입력파라미터는호출된블록의입력파라미터에서만설정되고출력파라미터는출력파라미터에서만설정될수있습니다. 호출블록의입 / 출력파라미터는원칙적으로호출된블록의입력, 출력, 입 / 출력파라미터에서설정될수있습니다. 데이터형에데이터형의경우 FC 또는 FB 호출에서블록파라미터의저장방법에따라대한제한제한이있습니다. 기본데이터형의블록파라미터는제한없이전달될수있습니다. 입력및출력파라미터에서복잡한데이터형은호출블록이 FB일경우에만전달될수있습니다. 파라미터형이 TIMER, COUNTER, BLOCK_x인블록파라미터는호출된블록이 FB이면입력파라미터에서입력파라미터로만전달될수있습니다. 참고 파라미터형 TIMER, COUNTER, BOCK_x 의 " 전달 은간접어드레싱을이용해서 FC 에서실행될수있습니다. 예를들어원하는 TIMER, COUNTER, BOCK_x 의수는 WORD 데이터형의파라미터로호출블록에서호출된블록으로전달됩니다. 마지막호출된블록에서이파라미터는임시변수로전송될수있으며이변수를통해각 TIMER, COUNTER, BOCK_x 이처리될수있습니다. Page 11

프로세스단위에대한복수인스턴스모델 보기 : 프레스라인 Press_1 펀치카드 Press_2 FB10: "Press line" FB1: "Press_1" FB4: "Punch" FB5: "Guard" FB1: "Press_2" FB4: "Punch" FB5: "Guard" 전송 FB2: "Transport" 기술적부분 복수인스턴스 의도움을받아기술적부분을프로그램 File: PRO2_06e.12 Information and 프로세스단위 프로세스단위는어셈블리라인 ( 전송벨트, 프로세싱스테이션 ) 이나완전한기계의단위또는기계의부분 ( 예 : 프레스나완전한프레스의펀치또는가드 ) 처럼물리적인개체입니다. 프로세스단위는논리적인구분기준으로사용됩니다. 원칙적으로프로세스단위는계층구조로디자인되어있습니다. 그런방식으로프로세스단위는하위단위를차례로포함할수있습니다 ( 예 : 프레스 단위는 펀치 또는 가드 단위를포함합니다 ). 프로세스단위는이런방식으로보다많은지체된하위단위로디자인됩니다 ( 모음 ). " 복수인스턴스 " STEP7 프로그래밍언어는또한 모음 의개념을지원하며따라서 FB 와 복수인스턴스개념 을이용해서한번만들어진소프트웨어를다시사용할수있습니다. 소프트웨어에의한프로세스단위또는프로세스하위단위의설명은 S7 FB 에서이루어집니다. stat.var. 섹션에서상위 FB 의인스턴스로하위 FB 를선언함으로써하위단위로구분할수있습니다. 이런방식으로기존의프로세스나기계에서와마찬가지로프로그램에서하위단위로구분할수있습니다 ( 모음에의한객체중심프로그래밍의개념 ). SW 재사용한번만들어진소프트웨어는이개념의도움을받아다시사용될수있습니다. 제조업체가프로세스하위단위 ( 밸브, 모터, 실린더, 등 ) 를만들때마다이프로세스하위단위의제어를위한 FB 도제공됩니다. 그러한프로세스하위단위가보다큰단위로묶일때마다보다큰단위의 FB 에서하위단위에대한 FB 인스턴스가또한선언됩니다. Page 12

OB1 " 프레스라인 " 에대한프로그램구조 FB10:"Press line" stat Press_1 FB1 stat Press_2 FB1 stat Transport FB2 FB1:"Press" stat Punch FB4 stat Guard FB1 CALL Punch. CALL Sscreen FB4:"Punch" FB5:"Guard" DB10 Data of FB10 Data for Press_1 Press_1. Punch Press_1. Guard CALL FB10, DB10 CALL Press_1. CALL Press_2. CALL Transport FB1: "Press" stat Punch FB4 stat Guard FB1 CALL Punch. CALL Guard FB4:"Punch" FB5:"Guard" Data for Press_2 Press_2. Punch Press_2. Guard Data for Transport FB2: "Transport" Instance DB of FB10 File: PRO2_06e.13 Information and 복수인스턴스모델선언참고복수인스턴스 DB 복수인스턴스모델이사용될때인스턴스 -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 는기본적인 FB 의선언부와같은구조를가집니다. 만약인스턴스가선언부에서호출되면이것은자동적으로인스턴스 DB (DB10) 의해당섹션에있는데이터에액세스합니다. Page 13

복수인스턴스모델의등록정보 복수인스턴스모델의장점 : 몇개의인스턴스에대해오직한개의 DB만이요구됩니다. 각인스턴스에대한 사적 데이터영역을설정할때추가의관리작업은필요하지않습니다. 복수인스턴스모델은 객체지향적인프로그래밍스타일 ( 집합 에의한재사용가능성 ) 을가능하게합니다. 최대 8 개의중첩을가집니다. FB의전제조건 : Fb에서프로세스신호에대한직접 (I, Q) 액세스를할수없습니다. 프로세스신호에대한액세스나다른프로세스단위와의통신은 FB 파라미터를통해서만가능합니다. FB 는공유 ( 전역 ) DB 나 비트메모리 가아니라정적변수로만프로세스상태를기억할수있습니다. 참고 : 인스턴스데이터에대한액세스는또한 외부 에서이루어질수있습니다. OB1에서의예 : L "Press line".press_2.punch.<varname> File: PRO2_06e.14 Information and 복수인스턴스복수인스턴스모델의경우한개의동일한호출계층구조로이루어진몇개모델의이점인스턴스의각데이터섹션을한개의단일 DB에저장할수있습니다. 그런방식으로몇개의인스턴스에대해오직한개의 DB만이요구됩니다. 복수인스턴스모델의경우상호인스턴스 DB를할당할때를제외하면로컬 FB 데이터의운영을위한조처는필요하지않습니다. 복수인스턴스모델은객체중심의프로그래밍개념을지원합니다. 프로세스단위의제어를위해필요한코드와데이터는 FB에서집약됩니다. 프로세스단위가계층구조의하위단위로구성되어있다면이구조는복수인스턴스모델에의해사용자프로그램에정확히반영될수있습니다. 제어프로그램은기계가구성요소로구성되는것과같은방식으로 FB 인스턴스로디자인될수있습니다. STEP7은복수인스턴스모델로 8개의중첩깊이를지원합니다. 복수인스턴스에대한 FB 를복수인스턴스로문제없이사용하려면다음사항들이지켜져야합니다. 필요조건 프로세스제어를위해 ( 입력이나출력과같은 ) CPU 의전역피연산함수에대한직접액세스는허용되지않습니다. 전역입력및출력에대한각액세스는복수인스턴스능력을위반합니다. 프로세스또는프로세스제어단위 (FB) 와의통신은 FB 파라미터를통해서만이루어져야합니다. FB 가상위단위로통합된후에야비로소파라미터목록을통한 FB 의 연결 이 FB 호출에서실행될수있습니다. 제어되는단위에대한상태또는다른정보는자체정적변수로 기억 되어야합니다. Page 14

연습 6: 어셈블리라인으로서의컨베이어모델 작업장에서의프로세스시퀀스 수송벨트에서의프로세스시퀀스 - 작업물품처리 - 완성된물품을기다림 - 완성되면벨트에물품을놓음 - 최종어셈블리로전송 - 처리되지않은물품기다림 - 최종어셈블리에서처리되지않은물품삽입 - 작업장으로전송 Conveyor belt off/on Proximity switches "INI1", "INI2", "INI3" Photoelectric barrier "LS1" K2_CONV K1_CONV Final assembly "H4" Indicator lights "S4" Acknowledge contact switch "H1", "H2", "H3" Indicator lights "S1", "S2", "S3" Acknowledge contact switch File: PRO2_06e.15 Information and 목적 어셈블리라인에의해작업해결의원칙이 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 15

연습 6.1: 작업장에대한프로그램구조 보기 : 어셈블리라인 DB1 Transport OB1 FB1: "Station" CALL FB1, DB1 CALL FB2, DB2 DB2 FB2: "Transport" Station_1 Station_2 Station_3 어셈블리라인의기술적부분 기술적부분을프로그램 File: PRO2_06e.16 Information and 개요 STEP 7 은 2 가지방법으로인스턴스를만들수있는가능성을가집니다. FB 가프로그램의다른위치에서호출됩니다. 각호출에서별도의인스턴스 - DB 가지정됩니다. 즉, FB 의각인스턴스에대해별도의 DB 가필요합니다. 한개의동일한계층구조의몇개 FB 는한개의공통된인스턴스 -DB 를사용합니다 ( 복수인스턴스모델 ) 첫번째단계 첫번째단계로어셈블리라인의작업장 1 개만이당분간사용됩니다. 따라서전체시스템에대한제어는 2 개의프로세스단위로분산됩니다. 스테이션 : FB1 에의해공유기호이름 Station ( 공유기호표 ) 으로실행되는첫번째작업장의제어 전송 : FB2 에의해공유기호이름 Transport" 으로실행되는전송벨트의제어전체어셈블리라인에대한제어를위해서는이후에자체인스턴스 -DB ( 단일인스턴스모델 ) 를가지는 2 개의 FB 가호출되어야만합니다. Page 16 21

연습 6.1: 프로세싱장소 1 에대한 FB1 만들기 FB1 의인터페이스 : 상태모델 : FB1: "Station_1" IN-Parameter: Data type: Initial BOOL Proxy_Switch BOOL Acknowledge BOOL Clock_Bit BOOL OUT-Parameter: LED BOOL Transp_req BOOL I/O-Parameter: Conv_busy BOOL Stat. Var.: State STRUCT Busy BOOL Completed BOOL Waiting BOOL END_STRUCT Aux_1 BOOL Aux_2 BOOL A Proxy_Switch FN Processing: Indicator light illuminated Waiting: Indicator light is off A #Transp_req A #Proxy_Switch A Acknowledge Completed: Indicator light flashes File: PRO2_06e.17 Information and 개요 FB1 의기능원칙 제일먼저작업장에서프로세스제어를실행하는 FB1 을만듭니다. 프로세스는시퀀스는 3 개의상태 ( 작업중, 작업완료, 대기중 ) 를가지는단일상태모델을통해설명될수있습니다. FB1 을만들때복수인스턴스능력의원칙들을고려합니다. 즉, INI1 이나 S1 과같은입력신호에대한직접액세스나 H1 과같은출력신호는허용되지않습니다. 프로세스신호에대한모든액세스는인터페이스파라미터를통해이루어져야합니다. FB1 의파라미터와프로세스신호사이의상관관계는물론다른상태에대한 FB1 의기능원칙은다음섹션에서설명됩니다. 또한다음페이지에서그러한상태모델의프로그래밍을위한구조를찾아볼수있습니다. " 작업중 " 작업품목은이상태에서처리됩니다. 작업장의표시등 H1 이켜집니다. 또한출력파라미터 #Transp_req=0 를통해스테이션은작업장에현재처리되고있는작업품목이있음을나타냅니다. 조작원이 S1 스위치로작업품목이완료되었음을확인하면 작업완료 상태로전환이이루어집니다. " 작업완료 " 이상태에서는벨트가비어있으므로 (Conv_busy=0) 작업품목은벨트에놓일수있습니다. 작업품목이성공적으로개시기앞에놓이면입 / 출력파라미터 #Belt_occupied 가 1 로설정되고출력파라미터 #Transp_req 가 1 로설정됩니다. 이러한신호를통해전송벨트가한쪽에서 작업중 임이확인되고 ( 복수인스턴스확장의경우에다른스테이션은작업품목을벨트위에놓을수없습니다 ) 다른한쪽에서전송벨트는전송순환이시작될수있음을 ( 작업품목을최종어셈블리로보내거나처리되지않은새재료를작업스테이션으로보냄 ) 통보받습니다. Page 17

FB1 의구조 : Network: 1 Initializing A #Initial S #State.Busy R #State.Completed R State.Waiting // Set/Reset Parameters Network 2 State: Busy AN #State.Busy SPB REDY // Execution of Actions // Scanning the progression conditions R State.Busy S State.Completed Network 3 State: Completed REDY: AN State.Completed SPB Waiting // Execution of Actions // Scanning the progression conditions R State.Waiting S State.Busy Network: 4 State: Waiting WAIT: AN #state.waiting SPB END // Execution of Actions // Scanning the progression conditions R State.Waiting S State.Busy END: BEU 연습 6.1: FB1 의프로그램구조 상태모델 : A #Proxy_Switch FP Waiting: Indicator light is off Busy: Indicator light illuminated A #Part_required A #Proxy_Switch FN A #Acknowledge Completed: Indicator light flashes File: PRO2_06e.18 Information and 작업스테이션이 작업완료 상태에있는한작업장앞의표시등 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 18

연습 6.2: 전송벨트에대한 FB2 만들기 FB2 인터페이스구조 : 상태모델 : FB2: "Transport" IN-Parameter: Data type: Initial BOOL L_Barrier BOOL Acknowledge BOOL Transp_req BOOL Clock_Bit BOOL OUT-Parameter: LED BOOL Conv_right BOOL Conv_left BOOL Stat. Var.: State STRUCT Waiting BOOL Transport_right BOOL Assembly BOOL Transport_left BOOL END_STRUCT AN #Tansp_req Transport_ left A #Acknowledge Waiting Assembly A #Transp_req (Belt occupied) Transport_ right AN #L_Barrier (Final assembly reached) File: PRO2_06e.19 Information and 문제정의제일먼저단일작업장에서프로세스제어를실행하는 FB2 를만듭니다. 프로세스시퀀스는 4 단계 ( 대기중, 오른쪽으로전송, 어셈블리, 왼쪽으로전송 ) 를가지는상태모델을통해설명될수있습니다. FB2 를만들때전송벨트는벨트에서가동되는작업스테이션의수에상관없이작업을완료해야한다는것을고려합니다. FB 의기능원칙 FB2 의파라미터와프로세스신호사이의상관관계는물론상태에따른 FB2 의작업기능원칙이다음섹션에서설명됩니다. " 대기중 " 이상태에서전송벨트는스테이션중한개가벨트위에올려놓은완성된품목을기다립니다. 전송벨트가 대기중 상태에있는한전송벨트는중지되고표시등 H4 는꺼집니다. 상태 1 이신호 #Transport_req 인경우 오른쪽으로전송 상태로전환이일어납니다. " 오른쪽으로전송 " 이상태에서작업품목은최종어셈블리방향으로전송됩니다. 벨트가움직이는한표시등 H4 는입력파라미터에의해주어진빈도로점멸합니다. 완성된작업품목이광전장벽 LS 를통과하면최종어셈블리에도달합니다. 즉, 어셈블리 상태로전환이일어납니다. " 어셈블리 " 이상태에서조작원은완성된작업품목을처리되지않은새재료로교환합니다. 표시등은이상태에서영구적으로켜집니다. 완료되면조작원이 S4 버튼을통해신호를보냅니다. 이러한확인신호는 왼쪽으로전송 " 상태로전환을유도합니다. Page 19

연습 6.2: OB1 에서 FB1 과 FB2 의파라미터내적연결 OB1 의내용 : DB1 FB1: "Station" I0.0 Initial LED "H4" "INI1" Proxy_Switch Transp_req "S4" M10.1 Acknowledge Clock_Bit Conv_busy DB2 FB2: "Transport" I0.0 Initial LED "H4" "LS1" L_Barrier Conv_right "K1_CONV" "S4" Acknowledge Conv_left "K2_CONV" Transp_req M10.1 Clock_Bit File: PRO2_06e.20 Information and " 왼쪽으로전송 " 이상태에서처리되지않은재료는작업장방향으로전송됩니다. 벨트가움직이는한표시등 H4 는입력파라미터 #Clock_Bit 에의해주어진점멸빈도로점멸합니다. 입력신호 #Transp_req 가리셋되면전송은중지됩니다. 입력신호 #Transp_req 가리셋되면또한 대기중 상태로의전환이일어납니다. 참고 작업 6.2 또한 FB2 가입력신호 #Initial 을통해 대기중 상태로초기화될수있음을고려합니다. 입력파라미터 #Initial 에 10.0 을할당합니다. 1. 다음기능을가지는 FB2 를만듭니다. FB1 의프로그램구조를지침으로사용합니다. 2. FB1 호출이후 OB1 에서 FB2 호출 ( 인스턴스 -DB DB2) 을프로그램합니다. 위의구성도에따라파라미터의내부연결을실행합니다. 3. 블록을 CPU 에다운로드하고프로그램의기능을테스트합니다. Page 20

연습 6.3: 3 개스테이션으로확장 FB10 stat Station_1 FB1 stat Station_2 FB1 stat Station_3 FB1 stat Transport FB2 CALL Station_1 CALL Station_2 CALL Station_3.. CALL Transport FB1 FB2 DB10 Data for Station_1 Data for Station_2 Data for Station_3 Data for Transport Instance DB of FB10 File: PRO2_06e.21 Information and 프로그램구조 연습의최종부분으로모두 3 개의작업스테이션에대한컨베이어모델의완전한기능을습득합니다. 이를위해전체컨베이어모델 (3 개의스테이션과 1 개의전송벨트 ) 의제어가한개의단일함수블록 (FB10) 으로이동됩니다. FB10 에서 3 개의프로세싱스테이션에대한제어는 FB1 의별도인스턴스로서실행되고전송벨트의제어는 FB2 의인스턴스로서실행됩니다. Page 21

연습 6.3: 블록파라미터의연결 DB10: "Assembly_line_DB" "Station_1" I0.0 Initial LED "H1" "INI1" "S1" M10.1 Proxy_Switch Transp_req Acknowledge Clock_Bit Conv_busy FB10: "Assembly_line" "Station_2" I0.0 Initial LED "H2" "INI2" "S2" M10.1 Proxy_Switch Transp_req Acknowledge Clock_Bit Conv_busy "Station_3" I0.0 Initial LED "H3" "INI3" "S3" M10.1 Proxy_Switch Transp_req Acknowledge Clock_Bit Conv_busy I0.0 "LS1" "S4" M10.1 "Transport" Initial LED L_Barrier Conv_right Acknowledge Conv_left Transp_req Clock_Bit "H4" "K1_CONV" "K2_CONV" File: PRO2_06e.22 Information and 절차 질문 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 22

FC 호출에서파라미터전달 (2) 다음장소에있는기본실질파라미터 : 상수 데이터블록 DBB2 DB5 0 0 0 1 0 1 0 0 1 3 L-Stack (OB1).......... 0 1.. LB 20 OB1 프로그램실행 CALL FC10 On_1 := I0.1 On_2 := DB5.DBX2.2 Off := DB6.DBX2.6 OB1 BLD 1 = L 20.0 OPN DB 5 A DBX 2.2 = L 20.1 AC FC 10 P#I 0.1 P#L 20.1 P#L 20.2 A L 20.2 OPN DB 5 = DBX 2.6 BLD 2 2 Function FC10 in On_1 BOOL in On_2 BOOL out Off BOOl A #On_1 A #On_2 = #Off File: PRO2_06e.23 Information and 파라미터전달 결과 중요 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 에서정의되지않은값이실질파라미터에복사됩니다. 출력파라미터가쓰기가되게할수없다면대신에입 / 출력파라미터를사용해야합니다. Page 23

다음장소에있는복잡한실질파라미터 : L-Stack 데이터블록 FC 호출에서파라미터전달 (3) 1 DB5: "Value" Field ARRAY[1..10] INT set up "POINTER" in L-Stack DB-No: 5 area-crossing Pointer L-Stack (OB1) LB 21 OB1 프로그램실행 CALL FC10 On := "Value".Field Off := Q8.0 OB1 BLD 1 = L 20.0 L 5 T LW 21 L P#DBX0.0 T LD23 AC FC 10 P#L 21 P#Q 8.0 BLD 2 2 Function FC10 in On ARRAY[1..10] INT out Off BOOl L #On[8] = #Off File: PRO2_06e.24 Information and 파라미터전달 복잡한데이터형 (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 에서쓰기가될수있습니다. 마찬가지로출력파라미터도문제없이스캔될수있습니다. Page 24

"POINTER" 와 "ANY" 파라미터 OB1 프로그램실행 CALL FC10 On := P#I0.0 10 INT Off := Q8.0 FC 호출에서파라미터전달 (4) OB1 1 BLD 1 = L 20.0 L W#16#1005 T LW 21 L 10 T LW 23 L 0 T LW25 L P#I0.0 T LD27 L P#DBX0.0 T LD23 AC FC 10 P#L 21 P#Q 8.0 BLD 2 set up "ANY" pointer in L-Stack 2 L-Stack (OB1) LB 21 10H Data type: 05 Repetitionf.: 10 DB-No: 0 area-crossing pointer: P#I0.0 Function FC10 in On ANY out Off BOOl L P##On = #Off File: PRO2_06e.25 Information and 파라미터전달 예외 "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 의 간접 할당을실행할수있습니다. Page 25

FC 호출에서파라미터전달 (5) 블록파라미터 : TIMER, COUNTER BLOCK_x OB1 OB1 프로그램실행 CALL FC10 On := DB35 Off := Q8.0 BLD 1 = L 20.0 AC FC 10 P#4.3 P#Q 8.0 BLD 2 Function FC10 in On BLOCK_DB out Off BOOl OPN #ON = #Off File: PRO2_06e.26 Information and 파라미터전달 TIMER, COUNTER, BLOCK_x 형의파라미터전달이가장쉽습니다. 이경우에 32 비트영역횡단포인터대신현재의 TIMER 나 COUNTER 또는 BLOCK_x 의수가호출되는 FC 로간단히전달됩니다. Page 26

추가연습 6.4: 자체카운터블록만들기 DB6 I0.0 I0.1 EN CU R FB6 ENO Q Q0.0 CV QW12 10 PV File: PRO2_06e.27 Information and 문제정의다음등록정보를가지는 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 27