상태비트의존적인인스트럭션 Date: File: PRO2_01e.1 Information and 목차 페이지 S7-CPU의레지스터및메모리영역... 2 상태워드구조 상태비트검사 상태비트인스트럭션 블록호출또는복잡한
|
|
- 동윤 포
- 6 years ago
- Views:
Transcription
1 상태비트에따른인스트럭션 정보및교육 누산기함수 REAL 숫자를가지는인스트럭션 간접어드레싱및어드레스레지스터인스트럭션 사용자프로그램에서데이터관리 프로그래밍 2 코스 블록호출및복수인스턴스모델 라이브러리사용 동기및비동기오류처리 이문서는교육용으로만들어졌습니다. Siemens 는내용에대한책임을지지않습니다. 본문서및그내용에대한복제, 전송, 사용은서면승인없이는허용되지않습니다. 이를위반한사람은손해배상의책임을지게됩니다. 특허권또는실용신안특허권을포함한모든권리는보호됩니다. Copyright (c) Siemens AG 1999 텍스트편집기를사용하여프로그램만들기 기본및확장 S7 통신 S7-400 파워 PLC 시스템 분산 I/O 및파라미터할당 S7/M7 에대한엔지니어링도구 이름 : 코스 : 강사 : 연습해답 추가내용 릴리스 : A4.1( 소프트웨어 )
2 상태비트의존적인인스트럭션 Date: File: PRO2_01e.1 Information and 목차 페이지 S7-CPU의레지스터및메모리영역... 2 상태워드구조 상태비트검사 상태비트인스트럭션 블록호출또는복잡한함수에서의 BR 비트및 ENO... 6 상태비트에의존적인점프함수... 7 조건코드에의존적인점프함수 점프분산자의프로그래밍... 9 루프인스트럭션의프로그래밍 블록엔드에대한인스트럭션 연습 1.1: 빼기후점프 연습 1.2: 곱하기후점프 연습 1.3: 점프분산자프로그래밍 Page 1 Status Bit-Dependent Instructions
3 S7-CPU 의레지스터및메모리영역 누산기 S7-400 전용 ACCU4 ACCU3 32 Bit 32 Bit 로드메모리 - 논리블록 - 데이터블록 ACCU2 32 Bit ACCU1 어드레스레지스터 32 Bit L, U, O,... 작업메모리 - 논리블록 - 데이터블록 AR1 AR2 32 Bit 32 Bit T, S, =,... I/O 영역 데이터블록레지스터개방된 DB 개방된 DI 상태워드상태비트 16 Bit 16 Bit 16 Bit 시스템메모리 - 프로세스-이미지입력표 - 프로세스-이미지출력표 - 비트메모리 - 타이머 - 카운터 - 로컬데이터스택 - 인터럽트스택 - 블록스택 S7-CPU 레지스터 S7-CPU 메모리영역 Date: File: PRO2_01e.2 Information and 개요 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) 는프로세스 - 이미지입출력표, 비트메모리, 타이머, 카운터와같은영역을포함합니다. 또한로컬데이터, 블록, 인터럽트스택을포함합니다. Page 2 Status Bit-Dependent Instructions
4 상태워드구조 상태워드에서비트의중요도 비트할당값중요도 0 /FC 2 0 첫번째검사 1 RLO 2 1 논리연산결과 2 STA 2 2 상태 3 OR 2 3 또는 4 OS 2 4 과잉저장 5 OV 2 5 과잉 6 CC0 2 6 결과비트 7 CC1 2 7 결과비트 8 BR 2 8 이진법결과 할당 안됨 Date: File: PRO2_01e.3 Information and 상태워드첫번째검사논리연산결과상태비트 OR 비트 OV 비트 상태워드의개별비트는발생한오류뿐만아니라인스트럭션의결과또는상태에대한정보를줍니다. 이진법논리연산을사용하여상태비트의신호상태를직접프로그램에통합함으로써프로그램흐름을제어할수있습니다. 상태워드의비트 0 은첫번째검사비트로불립니다. /FC 비트에서의신호상태 0 은다음논리인스트럭션을내리면새논리문자열이프로그램에서시작된다는것을가리킵니다. 약어 FC 앞의대각선은 /FC 비트가반대로됨을가리킵니다. 상태워드비트 1 은 RLO 비트 (RLO= 논리연산결과 ) 입니다. 이것은이진법논리연산에서임시메모리로사용됩니다. 예를들어논리인스트럭션의문자열에서인스트럭션은접점의신호상태를검사하며부울논리의결과에따라검사 ( 상태비트 ) 의결과를 RLO 비트와결합합니다. 논리연산의결과는교대로 RLO 비트에저장됩니다. 상태비트 ( 비트 2) 는주소가지정된비트의값을저장합니다. 상태비트는스캐닝 (A, AN, O,...) 이나쓰기인스트럭션 (=, S, R,) 을위해항상주소가지정된비트의상태를보여줍니다 ( 쓰기인스트럭션의경우인스트럭션실행후의어드레스상태 ). OR 비트는인스트럭션 O 와함께 OR 논리연산이전에 AND 를실행할때필요합니다. OR 비트는이전에실행된 AND 논리연산이값 1 을배달하여그값에의해 OR 논리연산의결과가이미 1 로결정되었음을가리킵니다. OV 비트 ( 과잉 ) 는부동소수점숫자를가진수치연산인스트럭션이나비교인스트럭션의오류를나타냅니다. 이비트는실행된수치연산또는비교인스트럭션의결과에따라설정됩니다. Page 3 Status Bit-Dependent Instructions
5 상태비트검사 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 에서검사 OV M 4.0 S >0 M 4.0 S Date: File: PRO2_01e.4 Information and 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 표시에대한검사를볼수있습니다. Page 4 Status Bit-Dependent Instructions
6 상태비트인스트럭션 인스트럭션의미보기 SET RLO를 "1" 로설정 SET //RLO 1 비트메모리 = M 0.1 CLR RLO 를 "0" 으로설정 CLR //RLO 0 비트메모리 NOT RLO를반대로함 O 수동 O 자동 NOT; = 작동모드 = M0.0 SAVE RLO 를이진법결과로저장 I 1.0 I 1.1 I 1.2 ( 저장 ) A BR 이진법결과검사 BR Q 4.2 Q 5.0 ( ) Date: File: PRO2_01e.5 Information and L STW/T STW 또한전체상태워드를로드해서이후검사 ( 스캔 ) 을위해저장할수있습니다. L STW 상태워드로드 T MW 114 메모리워드 114 에저장예를들어 T STW 인스트럭션을이용해상태워드를이전에저장된상태워드와함께로드할수있습니다. 0, 2, 3, 비트는이인스트럭션에영향받지않습니다. 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 는모든조건과관계없이실행되며더이상의상태비트에영향을주지않습니다. Page 5 Status Bit-Dependent Instructions
7 블록호출또는복잡한함수에서의 BR 비트및 ENO LAD STL 네트워크 1: 순환프로그램 I0.0 MW10 EN FC23 Step bit Step memory display M10.0 ENO ( ) QW12 네트워크 1: 순환프로그램 A I 0.0 JNB _001 CALL FC 21 Step bit memory Step display _001:U BIE = M 10.0 :=MW10 :=AW12 네트워크 2:??? I0.0 EN MUL_I 345 IN1 OUT 987 IN2 M10.0 ENO ( ) MW100 네트워크 2:??? L 345 L 987 +I T MW 100 UN OV SAVE CLR A BR = M 10.0 Date: File: PRO2_01e.6 Information and 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 개의인스트럭션이자동으로발생됩니다. Page 6 Status Bit-Dependent Instructions
8 상태비트에의존적인점프함수 JU 레이블 1) JC 레이블 1) JCN 레이블 1) JCB 레이블 1) JNB 레이블 1) JBI 레이블 1) JBNI 레이블 1) JO 레이블 1) JOS 레이블 1) 무조건점프 "RLO" 비트 =1이면점프 "RLO" 비트 = 0이면점프 "RLO" 비트 = 1이면점프그리고 RLO 저장 "RLO" 비트 = 0이면점프그리고 RLO 저장 "BR" 비트 = 1이면점프 "BR" 비트 = 0이면점프상태워드에서 "OV" 비트 =1이면점프상태워드에서 "OS" 비트 =1이면점프 1) 레이블은 4 자의영숫자로구성될수있습니다. Date: File: PRO2_01e.7 Information and 점프함수 무조건적점프 사용자는논리제어함수를사용하여프로그램의선형프로세싱을인터럽트하고블록의또다른위치에서계속할수있습니다. 프로그램분기는조건에관계없이또는특정조건이만족될때에만실행될수있습니다. 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 비트는변경되지않습니다. Page 7 Status Bit-Dependent Instructions
9 조건코드에의존적인점프함수 JZ 레이블 1) JN 레이블 1) JP 레이블 1) JM 레이블 1) JPZ 레이블 1) JMZ 레이블 1) JUO 레이블 1) 상태워드에서비트 "CC1"=0 이고 "CC0"=0 이면점프 ( 결과 = 0) 상태워드에서비트 "CC1 가 "CC0 와같지않으면점프 ( 결과 <> 0) 상태워드에서비트 "CC1"=1 이고 "CC0"=0 이면점프 ( 결과 > 0) 상태워드에서비트 "CC1"=0 이고 "CC0"=1 이면점프 ( 결과 < 0) JZ 점프와 JP 점프를결합 ( 결과 >= 0) JM 점프와 JZ 점프를결합 ( 결과 <= 0) 명령되지않은 잘못된 REAL 숫자이거나 0 으로나누기면점프 1) 레이블은 4 자의영숫자로구성될수있습니다. Date: File: PRO2_01e.8 Information and OV와 OS를가진점프함수 JO와 JOS 점프는과잉이발생할때실행됩니다. 여러개의연속적으로실행된인스트럭션을가진문자열계산에서 OV 비트의평가가모든수치연산함수이후에이루어져야합니다. 과잉의결과가허용된숫자범위에있는경우그과잉이후의수치연산인스트럭션은 OV 비트를리셋합니다. 일어날수있는숫자범위과잉을문자열계산이끝날때평가하기위해 OS 비트를검사합니다. OS 비트는 JOS 점프뿐만아니라블록호출과블록엔드에의해리셋됩니다. 상태워드의나머지비트는점프함수 JO와 JOS로변경되지않습니다. CC0과 CC1을가진 프로그램함수는상태비트 CC0와 CC1에의존해서발생할수있습니다. 따라서 점프함수 예를들어계산의결과가양수인지 0인지음수인지를검사할수있습니다. 상태비트 CC0 와 CC1 에의존하는점프함수는어떤상태비트도변경하지않습니다. 논리연산의결과를점프와함께 취해서 사용자프로그램에서후속논리연산을위해사용할수있습니다 (/FC 에는변경없음 ). 보기 정수 2개의빼기와후속평가 L MW2 L MW8 -I JZ ZERO // 결과가 "0 이면점프발생 // 결과가 "0" 이아닌경우의인스트럭션 ZERO: NOP 0 // 결과가 0 일때의반응을위한인스트럭션 Page 8 Status Bit-Dependent Instructions
10 점프분산자의프로그래밍 레이블 : 레이블 _1: 레이블 _n: 작동모드 점프번호로드 JL 레이블 JU 레이블 _1. JU 레이블 _n ACCU1 > n 인인스트럭션 ACCU1 = 1 인인스트럭션. ACCU1 = 1 인인스트럭션 보기 : 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... Date: File: PRO2_01e.9 Information and 점프분산자 참고 점프분산자 JL 은점프번호에의존하는블록에서프로그램부분으로대상이지정된점프를허용합니다. JL 인스트럭션은 JU 점프함수목록과함께작동합니다. 이목록은 JL 바로뒤에나오며최고 255 개의입력을포함할수있습니다. JL 의경우목록의끝, 즉목록후의첫번째인스트럭션을가리키는점프레이블이있습니다. JU 인스트럭션만이 JL < 점프레이블 > 과 < 점프레이블 >: < 인스트럭션 > 사이에올수있습니다. 0 이 ACCU1-L-L 에위치하면첫번째인스트럭션이실행되고 1 이위치하면두번째인스트럭션이실행됩니다. 숫자가목록길이보다크면 JL 은목록의끝으로분기합니다. 인스트럭션 JL 은모든조건에관계없이실행되며 JL 의경우상태비트를변경하지않습니다. 점프는전체블록길이이내에서 ( 심지어네트워크경계를넘어서 ) 발생할수있습니다. 이런이유로점프레이블의이름은한블록내에서고유해야합니다. 점프거리가점프레이블에의해서점프에할당될수있기때문에한프로그램블록내에서의점프만이가능합니다. 점프레이블의길이는영숫자 4 자로제한되어있으며따라서첫번째글자는문자여야합니다. 점프레이블에서는대문자와소문자를가립니다. 인스트럭션은. 으로구분되어점프레이블후에반드시와야만합니다. 최대점프거리는프로그램코드의 워드또는 워드입니다. 점프할수있는실제최대명령문숫자는프로그램에사용되는명령문의혼합에달려있습니다 ( 한단어, 두단어, 세단어명령문 ). Page 9 Status Bit-Dependent Instructions
11 루프인스트럭션의프로그래밍 레이블 : 작동모드 루프카운터초기화 루프카운터로전송 여러번실행될코드절 보기 : 4 개의스캔을가진루프인스트럭션 L +4 // 루프카운터로드 다음 : T MW10 // 루프의시작. // 코드. // 코드 ACCU1 에서루프카운터로드. // 코드 L MW10 // 다시루프카운터로드 예 루프 ( 점감 ACCU1 ACCU1 <> 0?) 아니오 계속 LOOP NEXT // 루프카운터가 -1 이면 // NEXT 점프로점프 // Accu 1> 0 이면레이블 Date: File: PRO2_01e.10 Information and 루프인스트럭션루프인스트럭션 LOOP 는단순화된루프프로그래밍을허용합니다. 루프인스트럭션을프로그래밍하기위해실행될루프스캔의원하는회수를 ACCU1-L 에로드합니다. LOOP 는 ACCU1 의오른쪽워드를 0 에서 까지의부호없는 16 비트숫자로해석합니다. LOOP 인스트럭션을실행할때마다 ACCU1-L 의값은 1 만큼감소합니다. 이후에값은 0 과비교됩니다. 값이 0 과같지않으면 LOOP 인스트럭션에서지정된점프레이블로점프가발생합니다. 값이 0 이면점프는발생하지않고대신에바로뒤에오는인스트럭션이처리됩니다. 참고 루프카운터가 0 으로초기화되면안됩니다. 0 으로초기화되면루프가 번실행됩니다. Page 10 Status Bit-Dependent Instructions
12 블록엔드에대한인스트럭션 BE 블록엔드 BEU 무조건적블록엔드 ( 한블록이내 ) BEC 조건적블록엔드 (RLO 에의존 ) (RET) LAD 디스플레이에서 RET FBD 디스플레이에서 Date: File: PRO2_01e.11 Information and 블록엔드 논리연산의결과에의존적인 BEC나조건에관계없는 BE로블록의프로세싱을 함수 끝낼수있습니다. BE BE 인스트럭션은현재의프로그램블록에서프로그램프로세싱을끝냅니다. BE 는항상블록의마지막인스트럭션입니다. BE 는블록이저장될때 PG 에의해자동적으로만들어집니다. 따라서 BE 는별도로입력될필요가없습니다. 운영시스템은호출블록으로다시분기해서프로그램호출이후첫번째인스트럭션으로프로그램프로세싱을다시시작합니다. 현재예약된로컬데이터영역은다시한번사용가능해집니다. BEU BEC BEU 인스트럭션은 BE 처럼현재의프로그램블록에서프로그램프로세싱을끝냅니다. BE 인스트럭션과는달리사용자는한블록이내에서반복하여 BEU 를프로그램할수있습니다. BEU 이후의프로그램부분은점프함수로점프될때에만처리됩니다. 블록은 RLO 비트값에따라끝납니다. RLO=1 이면프로그램프로세싱은현재의블록에서끝나프로그램호출이후첫번째인스트럭션으로호출블록에서다시시작됩니다. 현재예약된로컬데이터영역은다시한번사용가능해집니다. RLO=0 이면 BEC 인스트럭션은실행되지않습니다. CPU 는 RLO 를 1 로설정하며 BEC 이후의인스트럭션을처리합니다. Page 11 Status Bit-Dependent Instructions
13 연습 1.1: 빼기연산후점프 푸시휠스위치 시뮬레이터에서스위치토글 DINT 로변환 BTD BTD DINT로변환 2 0 -D 양수결과 (>=0) 음수결과 [JM 레이블 ] 디스플레이삭제 디스플레이에 IW 0 값쓰기 데케이드스위치 : 토글스위치 : 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 Date: File: PRO2_01e.12 Information and 개요 연습목적 문제정의 점프함수에의해프로그램의선형프로세싱은인터럽트되어또다른위치에서계속될수있습니다. 특히그런점프는조건 ( 결과 ) 에의존하여발생합니다. 빼기의결과에따라실행되는점프함수의프로그래밍에익숙해지기 프로젝트 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 12 Status Bit-Dependent Instructions
14 연습 1.2: 곱하기연산후점프 푸시휠스위치 시뮬레이터의토글스위치 DINT 로변환 BTD BTD DINT로변환 2 0 *I 과잉없음 과잉 [JO 레이블 ] 디스플레이삭제 DTB 결과를 BCD 로변환 결과를디스플레이에출력 데케이드스위치 : 토글스위치 : 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 Date: File: PRO2_01e.13 Information and 연습목적 곱하기결과에따라실행되는점프함수의프로그래밍에익숙해지기 문제정의다음기능을가진 FC 12 를만듭니다. 1. 데케이드스위치와토글스위치의입력워드를누산기의 BCD 코드값 ( 부호없이 ) 으로로드합니다. 2. 얻어진값을 DINT 로전환합니다. 전환을위해 BTD 명령 (BCD_TO_DINT) 을사용합니다. 이명령을사용하면읽은값이양의 4 자리십진수로해석됩니다 비트곱하기를실행합니다. 4. 과잉 이되었는지계산결과를검사하고다음행동을취합니다. 과잉 : 디스플레이를삭제합니다. 과잉없음 : 대응하는양의 BCD 숫자로결과를전환하고그결과 ( 적어도 4 자리수 ) 를디스플레이에출력합니다. 참고 : 점프명령 "JO [Label] 를사용하여 과잉 여부를테스트합니다. 자릿수설정중의전환오류를숨기기위해인스트럭션 NOP 0 과함께 OB121 을프로그램합니다. 5. OB1 에서 FC12 를불러 S7-CPU 에서프로그램 (OB1,OB121, FC12) 을다운로드합니다. 6. 프로그램을테스트합니다. Page 13 Status Bit-Dependent Instructions
15 연습 1.3: 점프분산자프로그래밍 함수 : 푸시휠스위치 1 [JL 레이블 ] Motor_let run to the right Motor_let run to the left Motor off Horn on Horn off 레이블 : Jump To List를통해점프 어드레스 : S7-300 (16-Bit) S7-300 (32-Bit) S7-400 Motor_right: Q20.5 Q8.5 Q40.5 Motor_left: Q20.6 Q8.6 Q40.6 Horn: Q20.7 Q8.7 Q40.7 Date: File: PRO2_01e.14 Information and 연습목적 목록을이용해점프의사용에익숙해지기 문제정의다음기능을가진 FC 13 을만듭니다. 1 에서 5 까지중한숫자가 INT 데이터종류에서입력파라미터 Select 를통해전달될수있습니다. 전달된숫자에따라다음행동이실행됩니다. 1: 컨베이어벨트가최종어셈블리로이동합니다. 2: 컨베이어벨트가반대방향으로이동합니다. 3: 컨베이어벨트가중지합니다. 4: 경적이켜집니다. 5: 경적이꺼집니다. 다른숫자는모두오류로해석됩니다. 즉, 출력파라미터 ENO 는 FALSE 로설정됩니다. 절차 1. 위에설명된기능을가진 FC13 을만듭니다. 목록으로점프를실행할때오직절대점프만이사용될수있음에주의합니다 에의존하는 OB1 에서 FC13 을호출합니다. 누산기의데케이드스위치를이용해서전달될입력파라미터 Select 값을조정하며, 이값은상승에지로 에적용됩니다. 4. 오류가발생하면, 즉 Select 의값이 5 보다크거나 1 보다작으면 Q36.0 이파라미터 ENO 를통해 OB1 에설정됩니다. 5. OB1 과 FC13 을다운로드하고프로그램을테스트합니다. Page 14 Status Bit-Dependent Instructions
16 누산기함수 Date: File: PRO2_02e.1 Information and 목차 페이지 누산기함수의개요 TAK 인스트럭션 (ACCU1과 ACCU2 토글 )... 3 PUSH와 POP 인스트럭션... 4 ENT와 LEAVE 인스트럭션 (only S7-400)... 5 산술인스트럭션... 6 워드논리인스트럭션... 7 ACCU1에대한변경인스트럭션... 8 ACCU1에대한증가인스트럭션 의보수만들기 숫자의부정 (2의보수) CC1 비트를통한 32비트회전인스트럭션 연습 2.1: 거듭제곱계산 연습 2.2: ACCU1에서의데이터교환 연습 2.3: 보수만들기 Page 1 Accumulator Functions
17 누산기함수의개요 몇개의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의내용을왼쪽이나오른쪽으로회전 Date: File: PRO2_02e.2 Information and 개요누산기함수는누산기간에값을전송하거나누산기 1 에서바이트를교환합니다. 순수누산기함수의실행은논리연산이나상태비트의결과와관계없습니다. 마찬가지로논리연산의결과나상태비트의결과도누산기함수의실행에영향을받지않습니다. 누산기함수는최적의자동화작업실행시간프로그래밍을허용합니다. Page 2 Accumulator Functions
18 인스트럭션 TAK (ACCU1 과 ACCU2 토글 ) S7-300: ACCU2 ACCU1 W2 W1 before TAK W1 W2 after S7-400: ACCU4 ACCU3 ACCU2 ACCU1 W4 W3 W2 W1 before TAK W4 W3 W1 W2 after Date: File: PRO2_02e.3 Information and 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로 // 전송합니다. Page 3 Accumulator Functions
19 인스트럭션 PUSH 와 POP S7-300: ACCU2 ACCU1 W2 W1 W1 W1 W2 W1 W2 W2 before PUSH after before POP after S7-400: ACCU4 ACCU3 ACCU2 ACCU1 W4 W3 W2 W1 W3 W2 W1 W1 W4 W3 W2 W1 W4 W4 W3 W2 before PUSH after before POP after Date: File: PRO2_02e.4 Information and PUSH POP 인스트럭션 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 은누산기 2 에서 4 까지나타난값을아래에있는 ACCU 에가져옵니다. 이인스트럭션은일반적으로 ACCU1 의내용이더이상이필요하지않고프로세싱이위에있는 ACCU 에서저장된값으로계속될때인스트럭션을전송한후실행됩니다. POP (S7-300): 인스트럭션 POP 은 ACCU2 의전체내용을 ACCU1 에복사합니다. ACCU2 는변경되지않습니다. POP (S7-400): 인스트럭션 POP 은 ACCU2 의내용을 ACCU1 에, ACCU3 의내용을 ACCU2 에, ACCU4 의내용을 ACCU3 에복사합니다. ACCU4 는변경되지않습니다. Page 4 Accumulator Functions
20 인스트럭션 ENT 와 LEAVE (S7-400 전용 ) ENT: ACCU4 ACCU3 ACCU2 ACCU1 W4 W3 W2 W1 before W3 W2 W2 W1 after LEAVE: ACCU4 ACCU3 ACCU2 ACCU1 W4 W3 W2 W1 before W4 W4 W3 W1 after Date: File: PRO2_02e.5 Information and ENT LEAVE 인스트럭션 ENT (ENTER ACCU Stack) 는각경우마다누산기 2 와 3 의내용을그다음높은누산기로자리이동합니다. 누산기 1 과 2 의내용은변경되지않습니다. ENT 뒤에바로로드함수를쓰는경우 ENT L... 은로드하는중누산기 1 에서 3 까지의내용이 위로 (PUSH 와유사 ) 자리이동되고 ACCU1 에서로드된값은남아있습니다. 인스트럭션 ENT 는상태비트와관계없이, 그리고상태비트에영향을주지않고실행됩니다. 인스트럭션 LEAVE 는각경우마다누산기 3 과 4 의내용을아래의누산기로자리이동합니다. 누산기 4 와 1 의내용은변경되지않습니다. 산술함수는 LEAVE 의기능을포함합니다. LEAVE 의경우다른디지털논리연산 ( 예 : 워드논리인스트럭션 ) 에서같은기능을모방할수도있습니다. 디지털논리연산후에프로그램된 LEAVE 는누산기 3 과 4 의내용을누산기 2 와 3 에가져옵니다. 디지털논리연산의결과는누산기 1 에서변경되지않습니다. Page 5 Accumulator Functions
21 산술인스트럭션 S7-300: ACCU2 ACCU1 W2 W1 before op: +., -., *., /. W2 W1 op W2 after S7-400: ACCU4 ACCU3 ACCU2 ACCU1 W4 W3 W2 W1 before op: +., -., *., /. 0 W4 W3 W1 op W2 after Date: File: PRO2_02e.6 Information and 산술 산술인스트럭션은기본적인산술연산에따라누산기 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 = 125 S7-400: ACCU1 = 0 Page 6 Accumulator Functions
22 워드논리인스트럭션 S7-300: ACCU2 ACCU1 W2 W1 before op: A.., O.., X.., W2 W1 op W2 after S7-400: ACCU4 ACCU3 ACCU2 ACCU1 W4 W3 W2 W1 before op: A.., O.., X.., W4 W3 W2 W1 op W2 after Date: File: PRO2_02e.7 Information and 워드논리 워드논리인스트럭션은비트마다 ACCU1에나타난값을상수또는 ACCU2의 인스트럭션 내용과결합하여그결과를 ACCU1에저장합니다. 나머지 ACCU (S7-300 의경우 ACCU2, S7-400 의경우 ACCU2, ACCU3, ACCU4) 의내용은변경되지않습니다. 논리연산은워드별로또는더블워드별로실행될수있습니다. 인스트럭션 AND, OR, Exclusive OR 는워드논리인스트럭션으로사용할수있습니다. Page 7 Accumulator Functions
23 ACCU1 에대한인스트럭션변경 CAW: ACCU1-HH ACCU1-HL ACCU1-LH ACCU1-LL W4 W3 W2 W1 W4 W3 W1 W2 CAD: W4 W3 W2 W1 W1 W2 W3 W4 Date: File: PRO2_02e.8 Information and CAW CAD 인스트럭션 CAW 의경우, ACCU1 의오른쪽데이터워드에있는바이트가교환됩니다. 즉, ACCU1-LH 의내용이 ACCU1-LL 에전송되고그반대로 ACCU1- LL 의내용은 ACCU1-LH 에전송됩니다. 이이스트럭션을사용하면 SIMATIC 표시에서 16 비트숫자형식 (INT 와 WORD) 을 INTEL 표시숫자형식으로전환할수있습니다 (PC 로데이터전송 ). 인스트럭션 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 로데이터전송 ). Page 8 Accumulator Functions
24 ACCU1 에대한인스트럭션증가 INC <const>: ACCU1-HH ACCU1-HL ACCU1-LH ACCU1-LL W4 W3 W2 W1 + <const> W4 W3 W2 W1+<const> DEC <const>: W4 W3 W2 W1 - <const> W4 W3 W2 W1-<const> Date: File: PRO2_02e.9 Information and INC DEC 인스트럭션 INC <8 비트정수 > 는 ACCU1-LL 의내용에 8 비트정수를더하고그결과를 ACCU1-LL 에저장합니다. ACCU1-LH, ACCU1-H, ACCU2 또는 ACCU3 과 ACCU4 는변경되지않습니다. 인스트럭션 DEC <8 비트정수 > 는 ACCU1-LL 의내용에서 8 비트정수를빼서그결과를 ACCU1-LL 에저장합니다. ACCU1-LH, ACCU1-H, ACCU2 또는 ACCU3 과 ACCU4 는변경되지않습니다. Page 9 Accumulator Functions
25 1 의보수만들기 INVI (ACCU1-L에서 1의보수 ): 31 ACCU1-H 15 ACCU1-L INVD (ACCU1에서 1의보수 ): 31 ACCU1-H 15 ACCU1-L Date: File: PRO2_02e.10 Information and INVI INVD 인스트럭션 INVI 는비트마다누산기 1 의오른쪽워드에있는값 ( 비트 0 에서 15) 을반대로합니다. 이렇게하면 0 은 1 로대체되고 1 은 0 으로대체됩니다. 왼쪽워드의내용 ( 비트 16 에서 31) 은변경되지않습니다. 인스트럭션 INVI 는상태비트를설정하지않습니다. 인스트럭션 INVD 는비트마다누산기 1 에있는값 ( 비트 0 에서 31) 을반대로합니다. 이렇게하면 0 을 1 로, 그리고 1 을 0 으로대체합니다. 인스트럭션 INVD 는상태비트를설정하지않습니다. Page 10 Accumulator Functions
26 숫자의부정 (2 의보수 ) NEGI (INT 숫자의부정 ) NEGD (DINT 숫자의부정 ): 31 = 의보수 을더하기 NEGR (REAL 숫자의부정 ): VZ Exponent = 8 Bit Mantissa (23 Bits) = OUT Date: File: PRO2_02e.11 Information and NEGI NEGD NEGR 인스트럭션 NEGI 는 ACCU1 의오른쪽워드에있는값 ( 비트 0 에서 15) 을 INT 숫자로해석하고 2 의보수를만들어부호를반대로합니다. 이인스트럭션은 -1 을곱하는것과같습니다. ACCU1 의왼쪽워드 ( 비트 16 에서 31) 는변경되지않습니다. 상태비트 CC1, CC0, OS, OV 는연산의결과함수로서설정됩니다. 인스트럭션 NEGD 는 ACCU1 에있는값을 REAL 숫자로해석하고그값에 -1 을곱합니다. 2 의보수를만들려면 1 의보수를만든후다시 1 을 ( 빼기와같은이진숫자와 ) 더하면됩니다. 상태비트 CC1, CC0, OS, OV 는연산의결과함수로서설정됩니다. 인스트럭션 NEGR 은 ACCU1 에있는값을 REAL 숫자 (32 비트, IEEE-FP) 로해석하고이숫자에 -1 을곱합니다. 이인스트럭션은 ACCU1 에있는비트 31 의상태를반대로합니다 ( 가수의단수 ) 인스트럭션 NEGR 은상태비트를변경하지않습니다. Page 11 Accumulator Functions
27 CC1 비트를통한 32 비트회전인스트럭션 RLDA ( 상태비트 CC1을통한왼쪽회전 ): ACCU1 CC1 비트 RRDA ( 상태비트 CC1을통한오른쪽회전 ): ACCU1 CC1 비트 OUT Date: File: PRO2_02e.12 Information and RLDA RRDA 시프트함수 RLDA 는 ACCU1 의전체내용을 1 비트씩왼쪽으로자리이동합니다. 자리이동중에비게되는비트위치 ( 비트 0) 은상태비트 CC1 의신호상태로채워집니다. 상태비트 CC1 은밀려난비트 ( 비트 31) 의신호상태를포함합니다. 상태비트 CC0 과 OV 는 0 으로리셋됩니다. 보기 : ACCU1: CC1: 1 RLDA ACCU1: CC1: 0 시프트함수 RRDA 는 ACCU1 의전체내용을 1 비트씩오른쪽으로자리이동합니다. 자리이동중에비게되는비트위치 ( 비트 31) 은상태비트 CC1 의신호상태로채워집니다. 상태비트 CC1 은밀려난비트 ( 비트 0) 의신호상태를포함합니다. 상태비트 CC0 과 OV 는 "0 으로리셋됩니다. 보기 : ACCU1: CC1: 1 RRDA ACCU1: CC1: 0 Page 12 Accumulator Functions
28 연습 2.1: 지수계산 보기 : 연속적인 PUSH 와 *I 의사용을통해정수를 6 제곱하기 푸시휠스위치 x y 0 0 INT 로전환 BTI ACCU1 PUSH 로복사 I 로곱하기 ACCU1 ACCU2 Date: File: PRO2_02e.13 Information and 연습목적 정수의거듭제곱계산으로 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 개만이사용됩니다. Page 13 Accumulator Functions
29 연습 2.2 : ACCU1 에서의데이터교환 ACCU1 - L (before) CAW ACCU1 - L (after) Date: File: PRO2_02e.14 Information and 연습목적 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. 프로그램을테스트합니다. Page 14 Accumulator Functions
30 연습 2.3 : 보수만들기 Bit 15 ACCU1-L (before) Bit 의보수만들기 : INVI Bit 15 ACCU1-L (after) Bit Date: File: PRO2_02e.15 Information and 연습목적 에서보수를만들기위한인스트럭션에익숙해지기응용 : 음수 논리를 양수 논리로전환그러한전환은항상사용자프로그램이관련된양수논리와작업하는방식에관계없이 0 일때활성되는신호를읽을때또는반대로된 (0 일때활성 ) 신호가필드장치에출력될때시작됩니다. 문제정의다음기능을가진 FC23 을만듭니다. ACCU1 에있는토글스위치의워드값을로드합니다. 1 씩더한값을만듭니다. 그결과를시뮬레이터의 LED 에출력합니다. 절차 1. FC23 을만듭니다. 2. OB1 에서 FC23 을호출합니다. 3. 프로그램을 S7-CPU 에다운로드합니다. 4. 상태변수와미리설정된이진법옵션을이용해서프로그램을테스트합니다. Page 15 Accumulator Functions
31 REAL 숫자를가진인스트럭션?? y=ln(x) sin? cos? tan?...? Date: File: PRO2_03e.1 Information and 목차 페이지 에서의 REAL 숫자표시... 2 REAL 숫자를가지는기본인스트럭션... 3 확장된산술함수... 4 삼각함수와역함수... 5 REAL 숫자를가지는다른인스트럭션... 6 연습 3.1: 거리계산... 7 Page 1 Instructions with REAL Numbers
32 에서의 REAL 숫자표시 REAL 숫자의표시형식 (IEEE FP 32 비트이진법메모리형식 ) VZ 지수 : e = 8 비트 가수 : f (23 비트 ) 정상 REAL 숫자의표시 VZ x (1.f) x 2 (e-127) VZ = 부호비트, (0은 +, 1은 -) f = MSB를가진23비트가수 = 2-1 그리고 LSB =2-23 e = 2진법정수지수 (0 < e < 255) 보기 : VZ = 0 e = = 133 f = = R = x 2( ) = x 64 = 정상 REAL 숫자값의범위 : - 3, x , x 10-38, 0, 1, x , x Date: File: PRO2_03e.2 Information and REAL 숫자 REAL ( 부동소수점 ) 숫자는프로세스제어및폐쇄루프프로세스제어를위한복잡한산술계산을가능하게합니다. REAL 데이터형변수는내부적으로 3 개의구성요소, 즉부호, 기수 2 의 8 비트지수, 23 비트가수로구성됩니다. 부호는 0 ( 양수 ) 이나 1 ( 음수 ) 값을가질수있습니다. 지수는상수 1 씩증가하고 ( 바이어스, +127) 저장되어값은 0 에서 255 까지의범위를가집니다. 가수는분수부분을나타냅니다. 가수의정수부분은항상 1 ( 정상부동소수점일경우 ) 이나 0 ( 비정상부동소수점일경우 ) 이기때문에저장되지않습니다. 범위제한 대상값 e 가수 f 값 CC1 CC0 OV OS 부동소수점 255 <>0 [qnan] 숫자가아님과잉 >( ) <( ) 정상숫자 any (1.f) 2 e (-1.f) 2 e 비정상숫자 0 <>0 (0.f) (- 0.f) 널 참고 CPU 는부동소수점숫자로정확하게계산합니다. PG 의디스플레이는전환할때의반올림오류때문에정확하게표시되지않을수있습니다. REAL 숫자는소수점 6 번째자리로반올림됩니다. Page 2 Instructions with REAL Numbers
33 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에전송 Date: File: PRO2_03e.3 Information and 개요 권한이없는 REAL 숫자 함수 +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 숫자일때 ACCU1의결과도잘못된 REAL 숫자가됩니다. 다음인스트럭션으로권한없는값을프로세스하려고한다면또한잘못된 REAL 숫자가 ACCU1에결과로저장됩니다. 더하기 : + 무한대와 -무한대의더하기 빼기 : + 무한대와 + 무한대또는 -무한대와 -무한대의빼기 곱하기 : 무한대와 0을곱하기 나누기 : 무한대로무한대를나누기또는 0으로 0을나누기 올바른 REAL 숫자를 0으로나누면결과는숫자의부호나 + 무한대또는 - 무한대에따라달라집니다. 참고예를들어 16 진수 D#16#FFFF FFFF 는잘못된 REAL 숫자입니다. Page 3 Instructions with REAL Numbers
34 확장된산술함수 산술함수 : SQR SQRT EXP LN 제곱제곱근계산 기수 e에대한지수함수자연로그 (e=2,718282) 보기 : L MD10 // REAL 숫자로드 SQR // 제곱 T MD30 // 결과를 MD30에전송 (STL) EN SQR ENO (LAD) MD10 IN OUT MD30 Date: File: PRO2_03e.4 Information and 개요 위의산술함수는 ACCU1 의숫자를실행될함수에대한입력값으로사용하고그결과를 ACCU1 에저장합니다. 산술함수는 AACU1 의내용만을변경합니다. ACCU2 나 S7-400 에대한 ACCU3 와 AKKU4 는변경되지않습니다. 함수결과에따라산술함수는상태비트 CC0, CC1, OV, OS 를설정합니다. 함수가실행되기전에 ACCU1 에있는 REAL 숫자가잘못된것이라면산술함수는잘못된 REAL 숫자를반환하며그값에따라서상태비트를설정합니다. SQR 함수 SQR 는 ACCU1 의내용을제곱합니다. SQRT EXP LN 함수 SQRT 는 ACCU1 에있는값의제곱근을계산합니다. ACCU1 에있는값이 0 보다작다면 SQRT 는상태비트 CC0, CC1, OV, OS 를 1 로설정하고잘못된 REAL 숫자를반환합니다. 만약 -0 ( 마이너스 0) 이 ACCU1 에있다면 -0 이반환됩니다. 함수 EXP 는기수 e (= ) 와 ACCU1 에있는값 (e ACCU1 ) 의거듭제곱을계산합니다. 함수 LN은 ACCU1에있는숫자에서기수 e로의자연로그를계산합니다. 만약 ACCU1에있는값이0보다작거나 0이면 LN은상태비트CC0, CC1, OV, OS를 1 로설정하고잘못된 REAL 숫자를반환합니다. 자연로그는지수함수의역함수입니다. 만약 y= e x 이면 x = ln y Page 4 Instructions with REAL Numbers
35 삼각함수와역함수 삼각함수 : SIN COS TAN 원호함수 : ASIN ACOS ATAN 사인코사인탄젠트원호사인원호코사인원호탄젠트 각 보기 : L MD10 // REAL 숫자로드 SIN // 사인계산 T MD30 // 결과를 MD30에전송 (STL) MD22 EN IN SIN ENO OUT MD30 (LAD) Date: File: PRO2_03e.5 Information and 삼각함수 삼각함수는 ACCU1 에있는 REAL 숫자를라디안측정의각으로잡습니다. 각입력 ( ) 을위해사용자는필요하다면각도단위 ( 파이, 파이 =3,141593) 로전환해야합니다. 0 보다작거나 2 파이보다큰값으로함수를실행할때그값이 0 에서 2 파이에올때까지 2 파이의배수를자동적으로더하거나뺍니다 ( 자동모듈 2 파이계산 ). 원호함수 원호함수는해당삼각함수의역함수입니다. 원호함수는 ACCU1의값이 특정한값의범위에있는 REAL 숫자로생각하며라디안측정의각을 반환합니다. 함수 허용된정의범위 값범위 ASIN -1 to +1 - 파이 /2에서 + 파이 /2 ACOS -1 to +1 0에서파이 ATAN 전범위 - 파이 /2에서 + 파이 /2 허용된정의범위에서벗어난경우원호함수는잘못된 REAL 숫자를반환하며 상태비트 CC0, CC1, OV, OS를 "1 로설정합니다. Page 5 Instructions with REAL Numbers
36 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에전송 (STL) MD22 EN IN RND+ ENO OUT MD30 (LAD) Date: File: PRO2_03e.6 Information and 개요 변환함수는 ACCU1 에나타난값의데이터형을또다른데이터형으로변환하며그결과를 ACCU 에저장합니다. 다른 ACCU 에있는내용은변경되지않습니다. 인스트럭션 (RND+, RND-, RND, TRUNC) 중한개를사용했을때만약 ACCU1 에나타난값이 DINT 형식의허용범위에있는숫자의값보다더크거나작은경우나값이 REAL 형식의숫자가아닌경우인스트럭션은상태비트 OV 와 OS 를 1 로설정합니다. 변환은일어나지않습니다. RND+ 인스트럭션 RND+ 는 REAL 숫자인 ACCU1 의내용을정수 (DINT) 로변환합니다. 이정수는변환되는숫자보다크거나같습니다. RND- 인스트럭션 RND- 은 REAL 숫자인 ACCU1 의내용을정수 (DINT) 로변환합니다. 이정수는변환되는숫자보다작거나같습니다. RND TRUNC DTR 인스트럭션 RND 은 REAL 숫자인 ACCU1 의내용을그다음가능한정수 (DINT) 로변환합니다. 만약결과가정확히짝수와홀수사이에있다면짝수가반환됩니다. 인스트럭션 TRUNC 는변환되는숫자의정수지수를반환합니다. 분수부분은잘라냅니다. 인스트럭션 DTR 은 DINT 형식의숫자를 REAL 숫자형식으로변환합니다. DINT 형식의숫자가 REAL 형식의숫자보다정확하기때문에변환할때그다음나타낼수있는숫자로반올림할수있습니다. ABS 인스트럭션 ABS 는 ACCU1 에나타난 REAL 숫자에서절대값을만듭니다. 즉, 부호 ( 비트 31) 는 ( 잘못된 REAL 숫자의경우에도 ) 0 으로설정됩니다. NEGR 인스트럭션 NEGR 은 ACCU1 의 REAL 숫자를반대로합니다. 즉, 부호 ( 비트 31) 는 ( 잘못된 REAL 숫자의경우에도 ) 반대가됩니다. 인스트럭션 DTR, ABS, NEGR 은상태비트에영향을주지않습니다. Page 6 Instructions with REAL Numbers
37 연습 3.1: 거리계산 보기 : 직각좌표시스템에서두지점간의거리 D 계산 Y Y2 P2 D Y1 P1 X1 X2 X 함수 : D 를가지는 FC31= (X1 - X2) 2 + (Y1 - Y2) 2 Date: File: PRO2_03e.7 Information and 연습목적 두지점간의거리계산을위한산술함수의응용 문제정의다음기능을가진 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 = MD4 X2 = MD8, Y2 = MD12 RET_VAL = MD16 3. 프로그램을 S7-CPU 에다운로드합니다.. 4. 모니터 / 수정변수 를이용해서 FC109 를테스트합니다. 추가문제 S7-400 에대한 FC31 의실행시간최적버전을만듭니다.. Page 7 Instructions with REAL Numbers
38 간접어드레싱및어드레스레지스터인스트럭션??? 1 2 #Ini_Value #Pointer # 카운터 L W [AR1, P#200.0] Date: File: PRO2_04e.1 Information and 목차 페이지 STEP7에서의어드레싱방법... 2 변수의직접어드레싱... 3 DB 변수의직접어드레싱... 4 프로그램에서 DB 정보평가... 5 메모리간접어드레싱... 6 메모리간접어드레싱을이용한포인터구조... 7 메모리간접어드레싱의특징... 8 간접어드레싱에대한보기... 9 연습 4.1: 간접어드레싱을가진루프프로그래밍 영역내레지스터간접어드레싱 영역횡단레지스터간접어드레싱 어드레스레지스터를로드하기위한인스트럭션 어드레스레지스터를가진다른인스트럭션 레지스터간접어드레싱의특징 연습 4.2: 레지스터간접어드레싱을가지는루프프로그래밍 STEP7에서의포인터종류 "POINTER" 데이터형의구조및할당 "ANY" 데이터형의설정 "ANY" 데이터형파라미터의할당 "ANY" 형파라미터의간접할당 전달된 "ANY" 포인터평가 연습 4.3: 합계및중간값계산함수 Page 1 Indirect Addressing
39 STEP7 의어드레싱방법 어드레싱절차 직접어드레싱 간접어드레싱 절대기호간접메모리간접레지스터 16 비트포인터 (DB, T, C) 영역내 32 비트포인터 영역내 32 비트포인터 영역횡단 32 비트포인터 보기 : 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] Date: File: PRO2_04e.2 Information and 직접어드레싱 기호어드레싱 직접어드레싱의경우메모리위치가인스트럭션에코딩됩니다. 즉, 어드레스는인스트럭션이처리할값의어드레스를지정합니다. 컨트롤프로그램에는절대어드레스 ( 예 : I1.0) 와기호어드레스 ( 예 : start signal ) 가있습니다. 기호어드레스는절대어드레스대신이름을사용합니다. 프로그램은의미있는이름이사용될때읽기가보다쉬워집니다. 기호어드레싱의경우로컬기호 ( 블록의선언부분 ) 와전역기호 ( 기호표 ) 가구분됩니다. 간접어드레싱 주의 간접어드레싱의경우어드레스가프로그램실행중에만결정되는어드레스의주소를지정할수있습니다. 예를들어간접어드레싱의경우프로그램부분은반복적으로스캔될수있으며 ( 루프프로그래밍 ) 그로인해사용된어드레스에매스캔마다다른어드레스가할당됩니다. 간접어드레싱의경우다음은구분됩니다. 메모리간접어드레싱 : 주소가지정된어드레스에대한포인터는사용자메모리의메모리셀에나타납니다. ( 예 : MD30) 메모리간접어드레싱의경우주소가지정된어드레스가저장되는메모리에서변수에기호이름을할당할수있습니다. 레지스터간접어드레싱 : 주소가지정된어드레스에대한포인터는액세스되기전에 2 개의 S7 프로세서의어드레스레지스터 (AR1 또는 AR2) 중한개에로드됩니다. 간접어드레싱의경우어드레스가실행중에만계산되기때문에본의아니게메모리영역을덮어써서 PLC 에서예상치않은반응이발생할위험이있습니다. Page 2 Indirect Addressing
40 변수의직접어드레싱 피연산자피연산자추가대상어드레스 ( 보기 ) 액세스너비 I 37.4 바이트, 워드 입력 더블워드 Q 27.7 바이트, 워드 출력 더블워드 PIB 655 바이트, 워드 주변입력 더블워드 PQB 653 바이트, 워드 주변출력 더블워드 M 55.0 바이트, 워드 비트메모리 더블워드 T 타이머 C 카운터 DBX 바이트 (DBB), 워드 (DBW), DB 레지스터를통해 더블워드 (DBD) 주소지정된데이터 DIX 바이트 (DIB), 워드 (DIW), DI 레지스터를통해 더블워드 (DID) 주소지정된데이터 L 88.5 바이트 (LB), 워드 (LW), 로컬데이터스택 더블워드 (LD) Date: File: PRO2_04e.3 Information and 변수의 직접어드레싱을이용해단순 ( 기본 ) 변수, 즉최대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 을로드 ) 복잡한변수 구조체나배열과같은복잡한데이터형의로컬변수에기호적으로액세스할수있습니다. 절대액세스는기본데이터형인복잡한변수의구성요소에만가능합니다. Page 3 Indirect Addressing
41 DB 변수의직접어드레싱 열린데이터블록 OPN DB 19 OPN "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 L DB19.DBW4 바이트 0 에서비트 0 스캔 DB 19 에서데이터워드 4 로드 L "Values".Number_1 변수 Number_1에대한기호액세스. DB19는기호이름 "Values 를가짐 A DB10.DBX4.7 DB 10의바이트 4에서비트 7을스캔 Date: File: PRO2_04e.4 Information and 개요 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 의기호이름 ). Page 4 Indirect Addressing
42 프로그램에서 DB 정보평가 DB 레지스터를이용한인스트럭션 : CDB: DB 레지스터교환 DB-Register DI-Register CDB before: after: ACCU1의 DB 레지스터로드 L DBNO ( 열린 DB 번호를 ACCU1에로드 ) L DINO ( 열린 DI 번호를 ACCU1에로드 ) 데이터블록의길이로드 L DBLG ( 열린 DB의길이 / 바이트를 ACCU1에로드 ) L DILG ( 열린 DI의길이 / 바이트를 ACCU1에로드 ) Date: File: PRO2_04e.5 Information and 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: 이들인스트럭션은현재열린데이터블록의번호를읽습니다. Page 5 Indirect Addressing
43 메모리간접어드레싱 워드형식의 16 비트포인터 (DB, T, C 의어드레싱 ) L 11 T MW 60 OPN DB[MW 60] OPN DB 11 더블워드형식의 32 비트포인터 (I, Q, M, 의어드레싱 ) L P#24.0 T MD 50 L I W [MD50] L IW 24 영역 액세스 어드레스 너비 Date: File: PRO2_04e.6 Information and 개요 메모리간접어드레싱의경우액세스되는변수의어드레스가어드레스 ( 메모리위치 ) 에나타납니다. 메모리간접어드레싱을사용하는프로그램명령문은다음을포함합니다. 인스트럭션 ( 예 : 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 형태의영역식별자를사용합니다. 주소가지정된피연산자의어드레스 ( 메모리위치 ) 는워드로저장됩니다. 워드형식의포인터는정수 ( ) 로해석됩니다. 이것은타이머 (T), 카운터 (C), 데이터블록 (DB, DI), 논리블록 (FC, FB) 의번호를참조합니다. Page 6 Indirect Addressing
44 메모리간접어드레싱을이용한포인터구조 16 비트포인터의구조 : 사이의부호없는정수로해석 32 비트포인터의구조 ( 영역내 ): B B B B B B B B B B B B B B B B X X X 평가안됨 바이트어드레스 ( 부호없는정수 ) 비트어드레스 32 비트포인터상수의로드 ( 영역내 ): L P#25.3 (P = 포인터 ", 바이트어드레스 = 25, 비트어드레스 : 3) Date: File: PRO2_04e.7 Information and 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) 는주소가지정된피연산자의바이트어드레스로해석됩니다. 메모리간접어드레싱은비트 은평가하지않습니다. 참고 만약로드또는전송인스트럭션을사용하는메모리간접어드레싱에의해어드레스에액세스하고자한다면사용된포인터의비트어드레스가 0 이되도록해야합니다. 만약그렇지않다면 CPU 가실행중런타임오류를발생합니다. 32 비트포인터 32 비트포인터상수는다음구문을이용해 ACCU1에로드될수있습니다 상수의로드. L P#< 바이트어드레스 >.< 비트어드레스 > 포인터 메모리간접어드레싱에대한 16 비트및 32 비트포인터는다음중한개에 저장위치 저장되어야합니다. M - 비트메모리 L - 로컬데이터 D - 데이터블록 (DB 또는 DI) Page 7 Indirect Addressing
45 메모리간접어드레싱의특징 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에포인터를전달할때의특징 파라미터로전달된포인터는메모리간접어드레싱을위해직접사용될수없음 메모리간접어드레싱을위해전달된포인터는액세스하기전에임시변수로저장되어야함 Date: File: PRO2_04e.8 Information and 포인터에대한 메모리간접어드레싱의경우어드레스 ( 메모리위치 ) 는 16 비트또는 32 비트 어드레스영역 어드레스로나타납니다. 이어드레스는다음영역중한개에올수있습니다. 비트메모리 : 절대주소가지정된피연산자나기호표를통해기호적으로주소가지정된변수로서저장 로컬데이터스택 : 절대주소가지정된피연산자나블록의선언부에서선언된임시변수로서저장 공유데이터블록 : 절대주소가지정된피연산자로서저장. 공유 DB 를포인터에대한저장위치로사용하려면 DB 레지스터 ( 예 : OPN DBn) 를통해액세스하기전에 올바른 데이터블록을열어야합니다. 인스턴스데이터블록 : 절대주소가지정된피연산자로서저장. 인스턴스데이터를사용할때다음사항을관찰해야합니다. OB 와함수 : 함수또는 OB 내에서인스턴스데이터블록에저장되는포인터는공유 DB 에저장된포인터와똑같이사용할수있습니다. 단지 DB 레지스터대신에 DI 레지스터가사용됨을기억해야합니다. FB: FB 내에서파라미터이거나정적변수인인스턴스데이터는일반적으로메모리간접어드레싱을위해기호적으로사용할수없습니다. FB 내에서로컬데이터에대한절대액세스는원칙적으로선언부에서입력된 어드레스 를통해이루어질수있습니다. 그러나 FB 가복수인스턴스로사용될때이어드레스는인스턴스 DB 에서지정된절대어드레스가아니라실제로 AR2 에상대적인어드레스라는것을알아야합니다. 이런이유로복수인스턴스 FB 에서절대어드레스를통해데이터에액세스하면안됩니다. 참고 메모리간접어드레싱을위한포인터를블록에전달하거나값을영원히정적변수로두고싶으면파라미터나정적변수의포인터값을임시변수에복사하여이임시변수를통해액세스를완료합니다. Page 8 Indirect Addressing
46 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 // 값을감소시키고필요하다면점프 ; Date: File: PRO2_04e.9 Information and 설명 이예는데이터블록의입력을 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 에필요한길이가있는지를확인할필요가있습니다. 위의예에서또다른단점은비트메모리어드레스영역에서포인터를통해모든메모리간접액세스가완료된다는것입니다. 보다나은대안은무엇입니까? 그이유는무엇입니까? Page 9 Indirect Addressing
47 연습 4.1: 간접어드레싱을이용한루프프로그래밍 L-Stack, 바이트주소지정 0 1 Tank[1] #Ini_Value #T_Pointer L-Stack 의어드레스에대한포인터 Tank[2] #L_Counter Tank[9] Tank[10] Tank[11] 등 Date: File: PRO2_04e.10 Information and 연습목적 문제정의 실제예를통해루프에서의메모리간접어드레싱사용에익숙해지기 메모리간접어드레싱은루프프로그래밍에사용됩니다. 이경우 100 개의연속메모리셀이 1 부터 100 까지의오름차순으로나타납니다. 1. FC41 을만듭니다. 2. FC41 의선언부에서 100 개의 INT 데이터형구성요소를가진필드를이름 Tank 로정의합니다 에서 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 에삽입합니다. Page 10 Indirect Addressing
48 영역내레지스터간접어드레싱 AR 1 또는 AR 2 의영역내포인터 : B B B B B B B B B B B B B B B B X X X 평가안됨 바이트어드레스 ( 부호없는정수 ) 비트어드레스 명령구문 : LAR1 P#10.0 // 미리설정 AR1: L M W [AR1, P#200.0] 영역 액세스 어드레스상수 실행된 : L MW 210 너비 레지스터오프셋 인스트럭션 Date: File: PRO2_04e.11 Information and 개요 구문 영역내레지스터간접어드레싱의경우액세스되는피연산자의어드레스 ( 메모리위치 ) 는 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 가영역횡단포인터 ( 다음페이지참고 ) 를포함한다면포인터의영역식별자는인스트럭션실행중평가되지않습니다. 어드레스식별자에서영역식별자는유효합니다. Page 11 Indirect Addressing
49 영역횡단레지스터간접어드레싱 AR 1 또는 AR2 의영역횡단포인터 : R R R B B B B B B B B B B B B B B B B X X X 영역식별자 Bit 31=0: 영역내 Bit 31=1: 영역횡단 바이트어드레스 ( 부호없는정수 ) 비트어드레스 영역식별자 : 000 I/O 001 입력 (PII) 010 출력 (PIQ) 011 비트메모리 100 DB 레지스터의데이터 101 DB 2 (DI) 의데이터 110 자체로컬데이터 111 호출된블록의 LD 명령구문 : LAR1 P#I10.0 // 미리설정 AR1: L W [AR1, P#200.0] 액세스 어드레스상수 실행된 : L IW 210 너비 레지스터오프셋 인스트럭션 Date: File: PRO2_04e.12 Information and 개요 구문 영역횡단레지스터간접어드레싱의경우영역식별자 (I, Q, M, 등 ) 와액세스되는피연산자의어드레스 ( 메모리위치 ) ( 바이트비트어드레스 ) 는 2 개의어드레스레지스터 (AR1, AR2) 중한개에영역횡단포인터로나타납니다. 영역횡단레지스터간접어드레싱의경우전체인스트럭션은다음으로구성됩니다. 인스트럭션 ( 예 : A, L, T, 등 ) 액세스너비를위한식별자 (B=BYTE, W=WORD, D=DWORD) 상수오프셋과함께꺽쇠괄호로묶어야하는어드레스레지스터의선언어드레스레지스터의내용은이경우영역식별자와바이트비트어드레스를가진영역횡단포인터입니다. 오프셋은바이트와비트어드레스로구성되는영역횡단포인터형식을가지며이바이트와비트어드레스는인스트럭션이실행되기전에선언된어드레스레지스터에서포인터의바이트비트어드레스에추가됩니다. 명령구문에서의오프셋선언은필수적입니다. 참고 간접주소가지정된바이트, 워드, 더블워드어드레스의경우전체오프셋은비트어드레스 0 을가져야하며, 그렇지않으면 CPU 가인스트럭션실행중런타임오류를발생합니다. 자체로컬데이터에대한액세스 ( 식별자 : 110) 는간접영역횡단어드레싱의경우가능하지않습니다. 런타임오류 알수없는영역식별자 가나타납니다. 자체로컬데이터에대한액세스는영역내어드레싱의경우에만가능합니다. Page 12 Indirect Addressing
50 어드레스레지스터를로드하기위한인스트럭션 어드레스레지스터로드 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, 등 ) Date: File: PRO2_04e.13 Information and 어드레스로드함수를이용해서정의된값을가진어드레스레지스터를초기화할수로딩있습니다. 로드함수 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 에로드합니다.) Page 13 Indirect Addressing
51 어드레스레지스터를이용한다른인스트럭션 어드레스레지스터에서전송 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에추가 Date: File: PRO2_04e.14 Information and 어드레스레지스터에서전송 인스트럭션 TARn은어드레스레지스터 ARn에서전체영역포인터를전송합니다. 다른어드레스레지스터나어드레스영역비트메모리, 임시로컬데이터, 공유데이터및인스턴스데이터의더블워드가대상으로지정될수있습니다. 어드레스가지정되지않으면 TARn이어드레스레지스터의내용을 ACCU1에전송합니다. ACCU1의이전내용은여기에서 ACCU2로자리이동되고 ACCU2의내용은상실됩니다. ACCU3과 ACCU4 (S7-400) 의내용은변경되지않습니다. 어드레스레지스터인스트럭션 TAR 은어드레스레지스터 AR1 과 AR2 의내용을교환합니다. 교환 어드레스레지스터에예를들어프로그램루프에서루프스캔이일어날때마다어드레스의추가어드레스를증가시키기위해어드레스레지스터에값이추가될수있습니다. 값은인스트럭션으로상수 ( 영역내포인터 ) 로지정되거나 ACCU1-L의오른쪽워드의내용으로지정될수있습니다. 인스트럭션 +AR1과 +AR2는 ACCU1에나타난값을 INT 형식의숫자로해석하고그숫자를올바른부호를가진 24 비트로확장해서어드레스레지스터의내용에추가합니다. 이런방식으로포인터도보다작게만들수있습니다. 바이트어드레스 ( ) 의최대영역을넘어서거나최대영역에미치지못해도더이상의영향을미치지않으며상위비트가단지 잘려져 나갑니다. 인스트럭션 +ARn P#n.m은지정된어드레스레지스터에영역내포인터를추가합니다. 이런방식으로지정된영역포인터는최대크기가 P#4095.7입니다. 위에서나이전페이지에서제시된주소가지정된인스트럭션은상태워드의비트를변경하지않습니다. Page 14 Indirect Addressing
52 레지스터간접어드레싱의특징 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 레지스터는제한을받지않습니다. Date: File: PRO2_04e.15 Information and 어드레스레지스터 AR1 어드레스레지스터 AR2 STEP7 편집기는어드레스레지스터 AR1을사용하여복잡한블록파라미터에액세스합니다. "ARRAY" 또는 "STRUCT" 형식의모든블록파라미터에대한기호액세스를가지는함수안에서레지스터 AR1과 DB는덮어쓰기됩니다. 또한 "ARRAY" 또는 "STRUCT" 형식의입 / 출력파라미터에대한액세스를가지는 FB 안에서레지스터 AR1과 DB는덮어쓰기됩니다. FB와 FC의임시변수에대한기호액세스는 AR1이나 DB 레지스터를덮어쓰지않습니다. STEP7 편집기는인스턴스데이터, 즉모든파라미터및 FB의정적변수에대한기호액세스를위해영역내레지스터간접어드레싱을사용합니다. 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 파라미터와정적변수는한번더기호적으로액세스될수있습니다. Page 15 Indirect Addressing
53 연습 4.2: 레지스터간접어드레싱을이용한루프프로그래밍 L-Stack, 바이트주소지정 0 1 Tank[1] #ACCU1 #AR1 L-Stack 의어드레스에대한포인터 Tank[2] #ACCU Tank[9] Tank[10] Tank[11] 등 Date: File: PRO2_04e.16 Information and 연습목적 문제정의 실제적인보기를통해루프에서의레지스터간접어드레싱사용에익숙해지기 레지스터간접어드레싱은루프의프로그래밍에사용됩니다. 이경우 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 를호출하여프로그램을테스트합니다. Page 16 Indirect Addressing
54 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 번호, 데이터형, 반복인자에대한선언을포함 Date: File: PRO2_04e.17 Information and STEP7에서의 이전섹션에서설명된포인터종류 (16 비트, 32 비트영역내및 32 비트영역 포인터종류 횡단 ) 외에도 STEP7은다음2개의포인터를추가로인식합니다. 48 비트포인터 ("POINTER " 데이터형 ) 80 비트포인터 ("ANY" 데이터형 ) 16 비트와 32 비트포인터형식은누산기또는어드레스레지스터에직접로드될수있으므로블록안에서간접어드레싱에사용될수있습니다. (32 비트보다큰 ) POINTER 와 ANY 포인터형식은레지스터에직접로드되거나블록안에서간접어드레싱에사용될수없습니다. 이들은호출된블록의형식파라미터로전달되는실질파라미터의완전한어드레싱을위해서만사용됩니다. 예를들어블록안에서 POINTER 나 ANY 데이터형의파라미터를선언하고블록호출중파라미터에실질파라미터의어드레스를할당할수있습니다. POINTER ANY POINTER 데이터형만이사용자에게덜중요한의미를가집니다. 이데이터형은주로 STL/LAD/FBD 편집기에의해 ARRAY, STRUCT, 등과같은복잡한데이터형의실질파라미터를블록 (FB 또는 FC) 의형식파라미터로전달하기위해사용됩니다. STL/LAD/FBD 편집기는즉시데이터형과길이의정확성을실질파라미터의할당으로확인하기때문에단순히실질파라미터의완전한초기어드레스를내부적으로전달하는것으로충분합니다. ANY 포인터형식은주로 STEP7 에서시스템함수 (SFC) 와시스템함수블록 (SFB) 의파라미터를할당하기위해사용됩니다. ANY 데이터형은또한사용자에의해강력한블록 ( 예 : 일반적 FB 또는 FC) 을만들기위해사용될수있습니다. Page 17 Indirect Addressing
55 "POINTER" 데이터형의구조 "POINTER" 데이터형의구조및할당 바이트 n 바이트 n+2 바이트 n+4 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 X pointer) 바이트 n+1 바이트 n+3 바이트 n+5 "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 입력됨 ) Date: File: PRO2_04e.18 Information and POINTER 데이터형 파라미터할당 포인터표시 영역횡단포인터외에 POINTER 데이터형의파라미터는데이터블록의번호를부호없는양의정수 ( 값영역 : ,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 에입력합니다. 참고블록을저장한후어드레스의포인터표시가두가지경우모두표시됩니다. Page 18 Indirect Addressing
56 "ANY" 데이터형의설정 데이터형에대한 "ANY" 포인터 바이트 n 16#10 데이터형 바이트 n+2 반복인자 바이트 n+4 DB 번호 바이트 n+6 바이트 n+8 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 파라미터형에대한 "ANY" 포인터 바이트 n 16#10 파라미터형 바이트 n+2 16#0001 바이트 n+4 16#0000 바이트 n+6 파라미터형 O O O O_O O O O 바이트 n+8 타이머, 카운터, 블록번호 데이터형 식별자 VOID 00 BOOL 01 BYTE 02 CHAR 03 WORD 04 INT 05 DWORD 06 DINT 07 REAL 08 DATE 09 TOD 0A TIME 0B S5TIME 0C DT 0E STRING 13 파라미터형 식별자 BLOCK_FB 17 BLOCK_FC 18 BLOCK_DB 19 BLOCK_SDB 1A 카운터 1C 타이머 1D Date: File: PRO2_04e.19 Information and ANY 데이터형 ANY 포인터의선언 ANY 포인터는영역횡단포인터와 DB 번호외에데이터형에대한식별자와반복인자를포함합니다. 이포인터를사용해서개별어드레스뿐만아니라완전한데이터영역을구별할수있습니다. 두가지버전의 ANY 포인터가있습니다. 데이터형을가진변수용 : 포인터는 STL 에대한구문 ID 16#10 과데이터형에대한식별자, 반복인자, DB 번호및영역횡단포인터로구성되는위의구조를가집니다. 파라미터형을가진변수용 : 이경우 ANY 포인터는단지 STL 에대한구문 ID 16#10 과파라미터형에대한식별자, 바이트 n+8 과바이트 n+9 에있으며블록번호를반영하는 16 비트의부호없는숫자로구성됩니다. 바이트 n+2,..., n+7 은 0 으로채워집니다. ANY 데이터형의변수는일반적으로 FC 와 FB 에서 IN, OUT, INOUT 파라미터로선언될수있습니다. 이선언으로 FB 에서의임시변수로서가능성이추가됩니다. 이임시변수를이용해서실행중변경될수있는 ANY 포인터를만들수있습니다. 영역식별자 000 I/O 001 입력 (PII) (RRR): 010 출력 (PIQ) 011 비트메모리 100 DB 레지스터를참조하는 101 DI 레지스터를참조하는 데이터워드 데이터워드 110 자체로컬데이터 111 호출자의 LD Page 19 Indirect Addressing
57 "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.0 IW32 형식 : 워드, RF: 1, DB 번호 : 0, 포인터 : P#I32.0 T35 형식 : 타이머, 번호 : 35 기호 : #Motor_1.speed 기본데이터형의경우컴파일러는 "Pump:Start" 올바른데이터형, 반복인자 1, 포인터를설정합니다. 참고기호할당 (ARRAY, STRUCT, STRING, UDT) 의경우바이트의영역은단지컴파일러에의해설정되며 ANY 포인터에입력됩니다. Date: File: PRO2_04e.20 Information and 할당포인터표시어드레스표시참고 어드레스 ( 변수 ) 의직접선언에의해서뿐만아니라포인터표시를통해 "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) Page 20 Indirect Addressing
58 "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 포인터파라미터의동적재할당 Date: File: PRO2_04e.21 Information and 간접할당 장점 호출블록은또한 ANY 데이터형의 FC 또는 FB 파라미터에 ANY 데이터형의임시변수를할당할수있습니다. 이임시변수는호출블록의로컬데이터스택에저장되었습니다. 이경우 STL 편집기는 ( 로컬데이터스택에있는 ) 임시변수에포인터를전달하지않지만임시변수가이미실제로원하는변수에대한포인터를포함하는것으로간주합니다. 편집기는이경우에임시변수에포함된 ANY 포인터를호출된 FC 나호출된 FB 로전달합니다. ANY 파라미터에 ANY 포인터를설정할수있으며이포인터는실행중에변경될수있습니다. 예를들어특히 SFC 20 "BLKMOV" 또는 SFC 21 "FILL 과같은시스템함수와관련해서변수 ANY 포인터는매우유용할수있습니다 ( 연습 7.5 참고 ). Page 21 Indirect Addressing
59 전달된 "ANY" 포인터평가 어드레스 선언 이름 형식 초기값 설명 0.0 in 포인터 ANY out in_out 0.0 temp 데이터형 BYTE 2.0 temp WF WORD 4.0 temp DB_No WORD 6.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 // 임시변수에로드 ; Date: File: PRO2_04e.22 Information and 개요 절차 호출된블록 (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" 포인터에저장된정보는문제정의에따라추가로처리되어야합니다. Page 22 Indirect Addressing
60 연습 4.3: 합계및중간값계산함수 이름 치수 형식 STRUCT ARRAY[1..8] REAL END_STRUCT 선언 이름 형식 in 측정값 ANY out 합계 REAL out 중간값 REAL DB EN FC 43 ENO P#DB43.DBX0.0 REAL 8 측정값 합계중간값 Date: File: PRO2_04e.23 Information and 개요 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 에다운로드하고결과를테스트합니다. Page 23 Indirect Addressing
61 사용자프로그램에서데이터관리 Date: File: PRO2_05e.1 Information and 목차 페이지 데이터저장영역... 2 로컬데이터스택의기능방법... 3 보기 : 스크래치패드메모리에대한대체... 4 데이터블록 (DB)... 5 STEP 7에서의데이터형... 6 기본데이터형... 7 복잡한데이터형... 8 파라미터형... 9 날짜형식 : DATE_AND_TIME DT 변수를처리하기위한함수 날짜형식 : ARRAY ARRAY의선언및초기화 ARRAY의파라미터전달 메모리에 ARRAY 변수저장 데이터형 : STRUCT STRUCT 선언 STRUCT의파라미터전달 메모리에 STRUCT 변수저장 데이터형 : STRING 메모리에 STRING 변수저장 STRING 변수를처리하기위한함수 사용자정의데이터형 : UDT UDT의사용 연습 5.1: SFC 1에서시간읽기 (READ_CLK) Page 1 Data Management in the User Program
62 데이터저장영역 I/O PII 비트메모리 PIQ DBx DBy DBy... L-Stack 데이터블록 Date: File: PRO2_05e.2 Information and 개요 논리블록외에사용자프로그램은또한처리상태, 신호, 등이저장되는데이터를포함합니다. 이러한데이터는사용자프로그램의인스트럭션에의해처리됩니다. 데이터는일반적으로사용자프로그램의변수에저장되며변수는다음에의해고유한특성을가집니다. 메모리위치 ( 어드레스 : 예 : 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 가닫힐때삭제되지않습니다. Page 2 Data Management in the User Program
63 로컬데이터스택의기능방법 OB1 FB1 FC CALL FC5 CALL FB CALL FC FC10 OB1 에대한 L-Stack 의할당 예 : 256 바이트 LD for OB1 free 순환시작 LD for OB1 LD for FB1 free 1 LD for OB1 LD for FB1 LD for FC5 free 2 LD for OB1 LD for FB1 free 3 LD for OB1 free 4 LD for OB1 LD for FC10 free 5 LD for OB1 free 6 Date: File: PRO2_05e.3 Information and 로컬데이터스택 모든우선순위클래스, 즉모든 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 에의해또다른우선순위클래스로방해를받으면로컬데이터는저장될필요가없습니다. 많은클래스가각경우마다자체로컬데이터스택을할당받습니다. Page 3 Data Management in the User Program
64 보기 : 스크래치패드메모리에대한대체 LAD 에서분기 STL 표시 분기위치 로컬데이터스택의도움말변수 Date: File: PRO2_05e.4 Information and LAD 편집기에서 위의보기는 STEP 7의 LAD 편집기를이용해사용자가코일 ( 예 : Q 0.7) 을 분기 추가로삽입함으로써프로그램될수있는분기의표시를보여줍니다. 스크래치패드메모리 STEP 5의경우분기의프로그래밍을직접할수는없었습니다. 및커넥터사용자는원칙대로메모리비트 ( 커넥터 ) 로서도움말변수를네트워크의결과로서분기점의위치에삽입해야합니다. 다음세그먼트 - 모든추가분기를위한도움말변수 -에서이도움말변수는각경우에입력으로사용되며스캔됩니다. LAD 편집기 LAD 편집기를이용해 STEP 7 에서직접그런분기를프로그램할수있습니다. 내부적으로도움말변수 - 로컬데이터스택비트 - 는또한 LAD 편집기에의해분기위치에서사용됩니다. 이경우로컬데이터스택에서메모리를사용하면그동안에호출된블록이 2 개의도움말변수 (L 20.0 과 L 20.1) 를덮어쓰기할수없도록보장합니다. 임시변수 사용자는또한선언부에서임시변수를선언하고절대적또는기호적으로, 즉지정된식별자이름을통해변수에액세스할수있습니다. Page 4 Data Management in the User Program
65 데이터블록 (DB) 모든블록에대한액세스 OB1 FC10 FC20 공유데이터 DB20 FB1 FB1 으로의인스턴스 DB 인스턴스데이터 DB5 링크되지않은 DB 쓰기보호된 DB Date: File: PRO2_05e.5 Information and 개요 데이터블록은사용자데이터를저장하기위해사용됩니다. 논리블록과마찬가지로데이터블록은사용자메모리에서공간을차지합니다. 사용자프로그램이사용하는변수데이터 ( 예 : 숫자값 ) 가데이터블록에나타납니다. 사용자프로그램은비트, 바이트, 워드, 더블워드인스트럭션을통해데이터블록의데이터에액세스할수있습니다. 기호적또는절대적으로액세스할수있습니다. 응용영역데이터블록은내용에따라여러방식으로사용자에의해설치될수있습니다. 다음은구분됩니다. 공유데이터블록 : 이것은사용자프로그램의모든논리블록이액세스할수있는정보를포함합니다. 인스턴스데이터블록 : 이것은항상한개의 FB 에할당됩니다. 이러한 DB 데이터는관련 FB 에의해서만처리될수있습니다. 복수인스턴스 DB 는특별한경우의인스턴스 DB 입니다. 복수인스턴스 DB 는한개의 FB 에할당되고원칙적으로추가되는 FB 의호출계층구조에서 사적 데이터를저장합니다. DB 만들기 등록정보 공유 DB 는 DB 편집기에의해서또는이전에설정된 사용자정의데이터형 에따라만들어집니다. 인스턴스또는복수인스턴스 DB 는항상 FB 와관련해서만들어집니다. 데이터블록의경우다음의사항은대화상자 등록정보 를통해선언될수있습니다. 링크되지않은 DB : 링크되지않음 특성을가지는데이터블록은단지로드에저장되고전송중에작업메모리에저장되지않습니다. 이처럼 링크되지않은데이터블록 의지정된데이터가작업메모리에서요구되면 DB의내용은 SFC20 ( 블록전송 ) 으로개방된주메모리영역 ( 예 : DB) 에전송될수있습니다. 쓰기보호 : 데이터블록은사용자프로그램이덮어쓸수없도록보호될수있습니다. Page 5 Data Management in the User Program
66 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 Date: File: PRO2_05e.6 Information and 개요 데이터형은데이터의속성, 즉내용표시, 허용된값범위, 가능한인스트럭션을규정합니다. STEP7 에서는 3 가지종류의데이터형이구분됩니다. 기본데이터형 복잡한데이터형 파라미터형 데이터형의데이터형은 STL 프로그램에서 CPU를통한명령실행중암묵적으로사용될사용뿐아니라블록의파라미터할당에서명시적으로사용됩니다. 명령실행 : STEP7 명령의입력어드레스는 STL 프로그램에서암묵적데이터형을할당받습니다. 누산기내용을서로링크하는디지털명령의경우프로그래머는 올바른 데이터형이누산기에먼저로드되도록해야합니다. 인스트럭션의결과데이터가또다른인스트럭션의입력데이터로사용되면 ( 연속계산 ) 프로그래머는전달되는데이터가호환이가능하도록해야합니다. 만약호환이되지않으면프로그래머는명시적으로전환을해야합니다. 블록호출 : 여기에서데이터는블록호출에의해명시적으로호출된블록에전달되어이후처리를받게됩니다. 여기에서 STL/LAD/FBD 편집기는전달되는데이터의호환성을검사합니다. 실질파라미터의데이터형은형식파라미터의데이터형과호환되어야하며그렇지않은경우할당이일어나지않습니다 ( 컴파일러오류 ). 데이터형 S7-프로그램의변수또는어드레스는다음위치에서데이터형을할당 선언 받습니다. S7- 프로그램의전역기호표 논리블록의선언부 공유 DB 를만들때의선언보기 Page 6 Data Management in the User Program
67 기본데이터형 주요단어너비 ( 비트 ) 이형식의상수예 BOOL 1 1 또는 0 BYTE 8 B#16#A9 WORD 16 W#16#12AF DWORD 32 DW#16#ADAC1EF5 CHAR 8 ' w ' S5TIME 16 S5T#5s_200ms INT DINT 또는 L#-123 REAL 또는 34.5E-12 TIME 32 T#2D_1H_3M_45S_12_MS DATE 16 D# TIME_OF_DAY 32 TOD#12:23:45.12 Date: File: PRO2_05e.7 Information and BOOL, BYTE, WORD BOOL 데이터형의변수는 1 비트를나타내며 BYTE, WORD, DWORD 데이터 DWORD, CHAR 형의변수는 8, 16, 또는 32 비트의비트시퀀스입니다. 이들데이터형의경우개별비트는평가되지않습니다. 이데이터형은계수함수와연결되어사용되기때문에특별형태로서 ASCII 문자표에서문자를표시하는 CHAR 데이터형은물론 BCD 숫자와계수 ( 값 ) 가있습니다 ( 참고 : ST7-PRO1). INT, DINT, REAL S5TIME DATE TIME TIME_OF_DAY 이데이터형을가지는변수는수를나타내며이수를사용하여해당산술연산이실행될수있습니다 ( 참고 : ST7-PRO1 과 3 장 ). 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 데이터형의변수는 1 워드에부호없는정수로저장됩니다. 변수의내용은 이후의날짜수에해당합니다 (D# = W#16#FF62). TIME 데이터형의변수는더블워드를차지합니다. 변수의내용은밀리초의 DINT 숫자로해석되며따라서양수또는음수일수있습니다 ( 예 : T#1s=L#1 000, T#24d20h31m23s647msw = L# ). TIME_OF_DAY 데이터형의변수는더블워드를차지합니다. 이변수는하루가시작 (0:00 시간 ) 된이후의밀리초숫자를부호없는정수로포함합니다 ( 예 : TOD#23:59: = DW#16#0526_5B77). Page 7 Data Management in the User Program
68 복잡한데이터형 주요단어너비 ( 비트 ) 보기 DATE_AND_TIME 64 DT# :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; Date: File: PRO2_05e.8 Information and 복잡한데이터형 복잡한데이터형 ( 배열과구조체 ) 은기본또는복잡한데이터형의그룹화로만들어집니다. 따라서사용자는구조체또는기호방식으로다량의데이터를처리하기위해자신의문제에맞게조정한데이터형을만들수있습니다. 복잡한데이터형은 STEP-7 인스트럭션으로직접전체를한꺼번에처리할수없으며구성요소별로처리되어야합니다. 복잡한데이터형은사전에정의되며 DATE_AND_TIME 데이터형의길이는 64 비트입니다. ARRAY ( 필드 ), STRUCT ( 구조체 ), STRING ( 문자열 ) 데이터형의길이는사용자가결정합니다. 복잡한데이터형을가진변수는공유데이터블록안에서그리고논리블록의파라미터나로컬변수로서만선언될수있습니다. 사용자정의 복잡한데이터형은자체식별자를갖지않으며따라서데이터형선언에서 데이터형 반복적으로사용될수없습니다. 구조체데이터형은사용자정의데이터형을이용해서자체 블록 (UDT1... UDT65535) 을할당받을수있습니다. 이러한 블록 은블록의선언부에서변수를선언하기위해또는공유데이터블록을만들기위해원하는만큼사용될수있습니다. Page 8 Data Management in the User Program
69 파라미터형 파라미터너비 ( 비트 ) 설명 TIMER 16 호출된논리블록에의해사용되는 특정시간 포맷 : T1 COUNTER 16 호출된논리블록에의해사용되는 특정카운터확인 포맷 : C10 BLOCK_FB 16 호출된논리블록에의해사용되는 BLOCK_FC 특정블록확인 BLOCK_DB FC101, DB12 BLOCK_SDB POINTER 48 값대신에어드레스를포함하는포인터 포맷 : P#M50.0 ANY 80 실질파라미터의데이터형이선택 사항일때사용 포맷 : P#M50.0 BYTE 10 Date: File: PRO2_05e.9 Information and 파라미터형 기본및복잡한데이터형외에도파라미터를할당할수있는블록의형식파라미터에대해파라미터형을정의할수있습니다. 이형식파라미터를이용하면그형의실질파라미터와마찬가지로블록안에서같은인스트럭션을실행할수있습니다. 이러한형식파라미터에는블록호출중에관련된실질파라미터를제공해야합니다. TIMER 및 COUNTER 이파라미터형은 TIMER 또는 COUNTER 형의형식파라미터를정의합니다. BLOCK_xx POINTER ANY BLOCK_FB 또는 Block_FC 파라미터형을이용해서논리블록은파라미터로호출된블록에전달될수있습니다. 그러나호출파라미터나정적변수 (BLOCK_FB) 에대해전혀통제력을갖지않는그런블록만이실질파라미터 (FBx, FCy) 로서전달될수있습니다. 형식논리블록은호출된블록안의인스트럭션 UC 또는 CC (CALL 이아님 ) 를통해서만호출될수있습니다. 데이터블록 (DB, SDB) 의전달이나형식파라미터를참조하는관련인스트럭션에대한제한은없습니다. 포인터는값대신주소를포함합니다. Pointer 형의형식파라미터를제공하면어드레스를실질파라미터로서입력합니다. 예로 P#M50.0 을들수있습니다. 데이터는비트메모리 M50.0 에서시작합니다. ANY 는실질파라미터의데이터형이 선택사항 일때사용됩니다. 실질파라미터는 ANY 포인터의형태로전달됩니다. 예로 P# M10.0 Byte 10 을들수있습니다. 영역 MB 10...MB 19 는이것으로구별됩니다. Page 9 Data Management in the User Program
70 날짜형식 : DATE_AND_TIME 구조 : Byte n 1) Byte n+2 Byte n+4 Year ( ) Day ( ) Minute ( ) Month ( ) Hour ( ) Second ( ) Byte n+1 Byte n+3 Byte n+5 Byte n+4 Millisecond Weekday Byte n+7 ( ) (1..7 1= 일요일 2= 월요일 3= 화요일 4= 수요일 5= 목요일 6= 금요일 7= 토요일 1) n = 짝수 모든값은 BCD 포맷으로저장됩니다. 변수미리설정 : DT# 연 - 월 - 일 - 시 : 분 : 초.[ 밀리초 ] 보기 : DT# :23:00:00 IEC-Library 를통해처리 Date: File: PRO2_05e.10 Information and 개요 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 형의출력파라미터로반환됩니다. Page 10 Data Management in the User Program
71 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) Date: File: PRO2_05e.11 Information and 개요 STEP7 을설치하면, 하위라이브러리 IEC 를가진라이브러리 StdLib30 도설치되며, 이라이브러리는 IEC 데이터형의처리를위한함수를포함합니다. 위의슬라이드는 DATE_AND_TIME 형의변수를처리하기위한함수의목록을보여줍니다. 참고 FC1, FC3, FC34를사용할때다음사항들을관찰해야합니다. FC1, FC35 인스턴트 ( 파라미터 T) 는 DT# :00:00.000과 DT# :59:59.999의범위에있어야합니다. 함수는입력검사를하지않습니다. 만약더하기나빼기의결과가위에지정된범위내에있지않으면결과는개별값에제한되며이진결과 BR은 0 으로설정됩니다. FC34 FC3, FC6, FC7, FC8 비교함수 인스턴트는 DT# :00: 과 DT# :59: 의범위에있어야합니다. 함수는입력검사를하지않습니다. 첫번째인스턴트 ( 파라미터 T1) 이두번째인스턴트 ( 파라미터 T2) 보다더크면 ( 어리면 ) 결과는양수입니다. 만약첫번째가두번째보다더작으면 ( 오래되었으면 ) 결과는음수입니다. 빼기의결과가 TIME 숫자범위의밖에있으면결과는각값에제한되며이진결과 BR 은 0 으로설정됩니다. 이러한함수값은오류를보고하지않습니다. 사용자가입력파라미터가올바른값을나타내는지검사해야합니다. 비교함수도오류평가를하지않습니다. 각비교함수는반환값 RET_VAL 로비교가완료되었는지 (RET_VAL=TRUE) 아닌지 (RET_VAL=FALSE) 를알립니다. Page 11 Data Management in the User Program
72 날짜형식 : ARRAY ARRAY ( 필드 ) 형식의변수 : 단일데이터형 ( 기본, DT#,STRUCT, UDT) 구성요소의고정된번호 선언 : 일차원 : 필드명 : ARRAY[ 최소인덱스.. 최대인덱스 ] OF 데이터종류 ; 다차원 : 필드명 : ARRAY[ 최소인덱스1.. 최대인덱스1, 최소인덱스2.. 최대인덱스2,...] OF 데이터종류 ; 인덱스 : 데이터종류 INT ( ) 보기 : 변수선언 : 일차원 : 다차원 : 변수에대한액세스 : 일차원 : L Measured value[5] Measured value: ARRAY[1..10] OF REAL; Result: ARRAY[1..24,2..6] OF DINT; // ARRAY 측정값 의요소 5 에있는값을 // ACCU1 에로드합니다. 다차원 : T Result[10,5] 인덱스 : STL ---> S7-SCL에서는변수인덱싱을할수없습니다. Date: File: PRO2_05e.12 Information and 개요 액세스 참고 ARRAY 데이터형은고정된수의같은데이터형구성요소를가지는필드를나타냅니다. 필드 (=ARRAY) 는 6 차원 ( 인덱스의수 ) 까지가질수있습니다. 다음제한은배열구성요소의각데이터형에적용됩니다. 기본 ( 제한없음 ) 복잡 (DATE_AND_TIME, STRUCT, UDT) 파라미터형은없음 ARRAY 는중첩될수없습니다. 최소또는최대인덱스범위의제한은 INT 의값범위, 즉 에서 로결정됩니다. STL 인스트럭션은기본데이터형의배열구성요소에액세스하기위해사용될수있습니다. 배열구성요소는꺽쇠괄호로묶은배열명과인덱스로주소를지정할수있습니다. 인덱스는고정된값, 즉상수용어입니다. 실행중변수인덱싱은 STL 에서가능하지않습니다. 개별배열요소의변수인덱싱은 S7-SCL 언어에서만가능합니다. 변수액세스는메모리또는레지스터간접어드레싱을이용해서 STL 에서만실행될수있습니다. Page 12 Data Management in the User Program
73 ARRAY 의선언및초기화 DB5 선언보기 " DB5 데이터보기 " Date: File: PRO2_05e.13 Information and 개요 위의보기에서 ARRAY 데이터형의변수 2 개가데이터블록편집기를이용해 DB5 에서선언됩니다. 새변수의설정은 DB 의 선언보기 에서만가능합니다 (View -> Declaration View): 시퀀스 : ARRAY[1..10] OF REAL 결과 : ARRAY[1..5,3..7] OF INT ARRAY의초기화 개별배열구성요소는선언에서미리할당된값일수있습니다 (FC 파라미터, FB의입 / 출력파라미터, 또는임시변수의경우는아님 ). 데이터형의초기값은 구성요소의데이터형과일치해야합니다. 초기값은콤마로분리됩니다. 이러한값은 초기값 열에입력됩니다. 만약같은 값을가지는몇개의연속구성요소가초기화되려면반복인자가사용될수 있습니다. 반복인자는둥근괄호로묶여입력되는초기값앞에놓입니다. 보기 5 ( e+002) ( 다음 5개의구성요소는값 로초기화됩니다.) 5 (7,2,3) ( 다음 5개의요소는값 7, 2, 3을교대로사용하여초기화됩니다.) 초기화의결과는 데이터보기 (View -> Data View) 에서검사되고수정될수 있습니다. 만약미리할당된값의수가구성요소의수보다작으면처음부분만 미리할당되고나머지부분은 0 으로초기화됩니다. 초기값의수용 새초기값이 DB 의선언보기에서입력되면이러한변경사항은데이터보기에서메뉴항목 Edit -> Initialize Data Block 이실행된후에만효력을갖게 ( 실제값으로유효하게 ) 됩니다. FB 에서입력및출력파라미터를선언할때 ARRAY 의초기값은만들어진인스턴스 DB 에서실제값으로수용됩니다. Page 13 Data Management in the User Program
74 ARRAY 의파라미터전달 보기 : ARRAY 를함수에전달 FC21 DB5 온도 " 기호파라미터공급네트워크 1: Mes_Val은 FC21에서 ARRAY로선언됩니다. CALL FC 21 Mes_Val:= Temperature".sequence 절대보기네트워크 1: Mes_Val은 FC21에서 ARRAY로선언됩니다. CALL FC 21 Mes_Val:=P#DB5.DBX0.0 이렇게입력될수없습니다. Date: File: PRO2_05e.14 Information and 개요 배열은완전한변수로서데이터형이같거나 POINTER 또는 ANY 인블록파라미터에전달될수있습니다. 따라서배열변수의완전한내용은예를들어시스템함수 SFC 20 BLKMOV 를이용해또다른대상영역에복사될수있습니다. 개별배열구성요소는블록파라미터와배열구성요소가데이터형이같으면또한블록파라미터로전달될수있습니다. 배열변수배열로선언된블록파라미터의공급은기호적으로만일어날수있습니다. 그러기위해서는블록파라미터와같은구조 ( 차원, 데이터형, 등 ) 를가지는배열을사전에정의할필요가있습니다. 실질파라미터, 즉 공급필드 는데이터블록 ( 공유 DB 또는인스턴스 DB) 이나호출블록의로컬데이터영역에위치할수있습니다. 참고점유된로컬데이터의수는 View -> Block Properties 를통해결정될수있습니다. FC로내부파라미터전달 STL/LAD/FBD 편집기가 FC로파라미터를전달하는중블록파라미터의데이터형에대한실질파라미터데이터형의호환성을검사한후 POINTER 의전달, 즉호출된 FC로실질파라미터의초기어드레스전달만이남습니다. 블록호출의이러한 절대보기 는블록이 액세스할수있는노드 를통해온라인으로열릴때표시됩니다. 이경우기호형태로블록호출의재컴파일을가능하게하는오프라인기호정보는존재하지않습니다. Page 14 Data Management in the User Program
75 일차원배열 BOOL 데이터형 Byte n 1) Byte n+1 BYTE, CHAR 데이터형 Byte n 1) Byte n+1 Byte n+2 메모리에 ARRAY 변수저장다차원배열 etc 바이트 1 바이트 2 바이트 3. WORD, DWORD,... 데이터형 보기 ARRAY[1..2,1..3,1..2] OF BYTE Byte n 1) Byte n+1 Byte n+2. 바이트 바이트 바이트 바이트 바이트 바이트 바이트 바이트 바이트 Byte n 1) 워드 1 Byte n+1 Byte n+2 Byte 3 워드 2 Byte n+2 1) n = 짝수. 바이트 바이트 바이트 Date: File: PRO2_05e.15 Information and 개요위의보기는 ARRAY 변수가메모리에저장되는방법을보여줍니다. 실행중개별구성요소가메모리또는레지스터간접어드레싱을통해액세스되려면 ARRAY 변수가메모리에저장되는방식을정확히알필요가있습니다. 변수저장 ARRAY 변수는항상워드한계, 즉짝수어드레스를가지는바이트에서시작합니다. ARRAY 변수는다음워드한계까지메모리를차지합니다. BOOL 데이터형을가지는구성요소는가장중요하지않은비트에서시작하며, BYTE 와 CHAR 데이터형을가지는구성요소는짝수바이트에서시작합니다. 개별구성요소는시퀀스에나열됩니다. 다차원배열에서구성요소는첫번째차원부터시작해서한줄씩저장됩니다. 새차원은비트및바이트구성요소의경우항상그다음바이트에서, 그리고다른데이터형구성요소의경우항상그다음워드에서시작합니다. 참고 DB 에서개별 ARRAY 구성요소의어드레스는 데이터보기 열에표시됩니다. Page 15 Data Management in the User Program
76 데이터형 : STRUCT STRUCT ( 구조체 ) 형식의변수 : 다른데이터형 ( 기본, DT#, ARRAY, STRUCT, UDT) 구성요소의고정된번호 선언 : 구조체명 : STRUCT 요소1이름 : 데이터형 ; 요소2이름 : 데이터형 ;... END_STRUCT 구조체명은 STRUCT 데이터형의변수이름입니다. 요소1이름, 기타는개별구성요소의이름입니다. 보기 : 변수선언 : 변수에대한액세스 : MotorControl : STRUCT S MotorControl.ON ON : BOOL; L MotorControl.ActualSpeed OFF : BOOL; T MotorControl.SetpointSpeed SetpointSpeed: INT;... ActualSpeed : INT; END_STRUCT; Date: File: PRO2_05e.16 Information and 개요 구성요소에대한액세스 STRUCT ( 구조체 ) 데이터형은각경우에다른데이터형을가질수있는고정된수의구성요소를나타냅니다. 구조체는 8 개의중첩단계를가질수있습니다. 구조체는논리블록의선언부나공유 DB, 또는사용자정의데이터형 (UDT) 에서선언될수있습니다. 다음제한이구조체의구성요소데이터형에적용됩니다. 기본 ( 제한없음 ) 복잡 (DATE_AND_TIME, ARRAY, STRUCT, UDT) 파라미터형없음 STL 인스트럭션은구조체의구성요소 ( 기본데이터형 ) 에액세스하기위해사용될수있습니다. 구조체의구성요소는다음을통해주소가지정될수있습니다. 구조체명. 구성요소명구조체명과구성요소명사이의구분자로점을삽입해야합니다. 구조체의중첩깊이가보다깊으면, 즉구조체의구성요소가다시구조체이면구조체의가장낮은구성요소에대한액세스는다음과같은 이름경로 를통해가능합니다. 구조체명. 구성요소명. 하위구성요소명.... 각경우에구성요소명과하위구성요소명사이에점을삽입해야합니다. Page 16 Data Management in the User Program
77 STRUCT 선언 보기 : 배열 - 구조체 - 배열선언 DB6 선언보기 " DB5 데이터보기 " Date: File: PRO2_05e.17 Information and 개요 위의보기에서 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 에서실제값으로수용됩니다. Page 17 Data Management in the User Program
78 보기 : STRUCT 를함수에전달 FC23 STRUCT 형의파라미터전달 DB7 "Conveyor_belt" 기호파라미터공급네트워크 1: 컨베이어는 FC23에서 STRUCT로선언됩니다. CALL FC 21 Conveyor:="Conveyor_belt".drive 절대보기네트워크 1: 컨베이어는 FC23에서 STRUCT로선언됩니다. CALL FC 21 Conveyor:=P#DB7.DBX0.0 이렇게입력될수없습니다. Date: File: PRO2_05e.18 Information and 개요 구조체는완전한변수로서데이터형이같거나 POINTER 또는 ANY 인블록파라미터에전달될수있습니다. 따라서구조체변수의완전한내용은예를들어시스템함수 SFC 20 BLKMOV 를이용해또다른대상영역에복사될수있습니다. 개별구조체구성요소는또한블록파라미터와구조체구성요소가데이터형이같으면블록파라미터로전달될수있습니다. STRUCT 형 구조체로선언된블록파라미터의공급은기호적으로만일어날수있습니다. 변수 그러기위해서는블록파라미터와같은구조를가지는구조체를정의할필요가 있습니다. 실질파라미터, 즉구조체변수는데이터블록 ( 공유 DB 또는인스턴스 DB) 이나호출블록의로컬데이터영역에위치할수있습니다. FC로내부 STL/LAD/FBD 편집기가 FC로파라미터를전달하는중블록파라미터의데이터 파라미터전달 형에대한실질파라미터데이터형의호환성을검사한후 POINTER 의전달, 즉호출된 FC로실질파라미터의초기어드레스전달만이남습니다. 블록호출의이러한 절대보기 는블록이 액세스할수있는노드 를통해온라인으로열릴때표시됩니다. 이경우기호형태로블록호출의재컴파일을가능하게하는오프라인기호정보는존재하지않습니다. Page 18 Data Management in the User Program
79 메모리에 STRUCT 변수저장 기본데이터형을 복잡한데이터형을 가진구조 가진구조 Byte n 1) Byte n+1 Byte n 첨가바이트 바이트 1 워드제한 기본데이터형을가진구성요소 Byte n+3 바이트 2 Byte n+4 바이트 3 워드제한 Byte n+5 Byte n+6 Byte n+7 첨가바이트 첨가바이트 ARRAY 데이터형을가진구성요소 Byte n+8 Byte n+9. 워드 1 Byte 3 워드 2 워드제한 STRUCT 데이터형식을가진구성요소.. 1) n = even Date: File: PRO2_05e.19 Information and 개요위의보기는 STRUCT 변수가메모리에저장되는방법을보여줍니다. 실행중개별구성요소가메모리또는레지스터간접어드레싱을통해액세스되려면 STRUCT 변수가메모리에저장되는방식을정확히알필요가있습니다. 변수저장 STRUCT 변수는항상워드한계, 즉짝수어드레스를가지는바이트에서시작합니다. 그후에개별구성요소는메모리의선언시퀀스에위치합니다. STRUCT 변수는다음워드한계까지메모리를차지합니다. BOOL 데이터형을가지는구성요소는가장중요하지않은비트에서시작하며, BYTE 와 CHAR 데이터형을가지는구성요소는짝수바이트에서시작합니다. 다른데이터형을가지는구성요소는항상워드한계에서시작합니다. Page 19 Data Management in the User Program
80 데이터형 : STRING STRING ( 문자열 ) 형식의변수 : 데이터형 STRING은 254자까지의문자열을표시합니다. 응용 : 메시지텍스트의처리 선언 : 문자열이름 : STRING[ 최대숫자 ]: 초기텍스트 ' ( 최대숫자문자까지에대한문자열변수 S, 최대숫자 : ) 문자열이름 : STRING: 초기텍스트 ' (254자까지에대한문자열변수 ) 보기 : 변수선언 : 오류신호 : STRING 'Motor failure_4' ( 변수오류신호는위의텍스트로초기화됩니다.) 경고 : STRING[50] ' ' ( 비어있음 " 변수경고는문자50자까지받아들일수있습니다.) 처리 : 기본액세스 : L Fault signal[5] ( 오류신호에서 5번째문자를로드합니다.) IEC-Library FC에의해처리 Date: File: PRO2_05e.20 Information and 개요 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 탭키 Page 20 Data Management in the User Program
81 메모리에 STRING 변수저장 보기 : 초기화로선언 주어진이름 : STRING[8]: 'OTTO' STRING 변수 주어진이름 저장 Byte n 1) 최대길이 = 8 저장될수있는문자의최대숫자, 즉선언부에서지정된길이를지정합니다. Byte n+1 현재길이 = 4 STRING 변수에현재저장되는문자를지정합니다. Byte n+2 첫번째문자 = 'O' Byte n+3 Byte n+4 두번째문자 = 'T' 세번째문자 = 'T' 저장될수있는문자의최대숫자또는현재길이에대한정보는 IEC-Library 함수에의해평가됩니다. Byte n+5 네번째문자 = 'O' Byte n+6 Byte n+7 B#16#00 B#16#00 Byte n+8 B#16#00 Byte n+9 B#16#00. 1) n = 짝수 Date: File: PRO2_05e.21 Information and 개요 변수저장 파라미터전달 STRING 데이터형의변수는최대길이가 256 바이트이며따라서 254 자의 순수데이터 즉문자가수용될수있습니다. STRING 변수는항상워드한계, 즉짝수어드레스를가지는바이트에서시작합니다. 변수를설정할때최대길이가변수선언에따라변수의첫번째바이트에입력됩니다. 마찬가지로사전할당이나처리에서현재사용되는길이, 즉저장된문자열의길이가 IEC-Library 함수를이용해두번째바이트에입력됩니다. 이러한정보는모두 STRING 변수를처리할때 IEC-Library 에의해요구됩니다. 그후에 ASCII- 포맷의문자가따라옵니다. STRING 변수에포함되지않은문자는초기화할때 B#16#00 로채워집니다. STRING 데이터형의변수는 ARRAY 나 STRUCT 변수와마찬가지로데이터형이같은, 즉 STRING 길이가같은블록파라미터에전달될수있습니다. POINTER 또는 ANY 데이터형의 FC 또는 FB 파라미터로의전달도가능합니다. Page 21 Data Management in the User Program
82 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) Date: File: PRO2_05e.22 Information and 개요 STEP7 을설치하면하위라이브러리 IEC 를가지는라이브러리 StdLib30 도설치되며이라이브러리는 IEC 데이터형의처리를위한함수를포함합니다. 위의슬라이드는 STRING 형의변수를처리하기위한함수의목록을보여줍니다. 참고 비교함수 일반적으로함수는사용된최대길이또는실제길이에대한정보를이용해오류평가를실행합니다. 함수가오류를인식하면일반적으로 BR 비트는 0 으로설정됩니다. 개별함수에대한자세한설명은 IEC-Library 에대한온라인도움말에나옵니다. 비교함수는문자열의사전편집상의비교를실행합니다. 왼쪽에서시작해서문자는 ASCII 코딩과비교됩니다 ( 예 : a 는 A 보다크며 A 는 B 보다더작습니다 ). 첫번째다른문자가비교결과를결정합니다. 만약보다긴문자열의왼쪽부분이보다짧은문자열과같다면보다긴문자열이더긴것으로간주됩니다. 함수는오류를표시하지않습니다. 각비교함수는반환값 RET_VAL 을이용해비교가완료되었는지 (RET_VAL=TRUE) 아닌지 (RET_VAL=FALSE) 를나타냅니다. Page 22 Data Management in the User Program
83 사용자정의데이터형 : UDT 사용자정의데이터형에대한응용 : 속성이확장되었거나변경된새데이터형만들기 ( 예 : 초기값 ) 자동화작업에대한보다효율적인해결방안 프로그램컨테이너의모든블록에대해보편적으로유효 변수정의에서원하는만큼자주사용되거나전역 ( 공유 ) DB를만들기위해 사용될수있음 보기 : 새데이터형의정의 ( 구조체 ): UDT5 STRUCT ON : BOOL; OFF : BOOL; SetpointSpeed: INT;... ActualSpeed : INT; END_STRUCT; 변수선언 : Motor_1: UDT5; Motor_2: UDT5; 변수에대한액세스 : L Motor_1.ActualSpeed Date: File: PRO2_05e.23 Information and 개요 데이터구조가사용자프로그램에서빈번하게반복되거나데이터구조에이름이주어지면 STEP7 은자체사용자정의데이터형 (UDT= 사용자정의데이터형 ) 이정의될수있게허용합니다 ( 예 : 고급언어 C 에서의 typedef). 응용프로그램과관련된데이터형의사용을통해해결해야할작업이보다효율적으로프로그램될수있습니다. 제조업체와같은사용자는자신의문제에맞게조정된데이터형을작성해서설치할수있습니다. UDT 만들기 UDT 는점증식편집기나텍스트편집기로만들어져블록컨테이너에 독립적 블록 (UDT1... UDT65535) 으로저장됩니다. 기호이름이이 UDT 에할당되거나전역기호표의이름을통해관련데이터구조에할당될수있습니다. 전역적으로유효한 템플릿 이 UDT 를통해만들어지며, 이템플릿은새변수의선언에서또는공유 DB 를만들기위해원하는만큼자주사용될수있습니다. Page 23 Data Management in the User Program
84
85 연습 5.1: SFC 1 (READ_CLK) 을이용하여타임오브데이읽기 EN SFC1 ENO RET_VAL??.? CDT??.? 파라미터 파라미터 선언 데이터형식 메모리영역설명 CDT OUTPUT DATE_AND_TIME (DT) D, L 현재시간및현재날짜출력 ET_VAL OUTPUT INT E, A, M, D, L SFC 반환값 Date: File: PRO2_05e.25 Information and 연습목적 : 복잡한데이터형 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 25 Data Management in the User Program
86 블록호출및복수인스턴스모델 목차 페이지 S7-CPU의소프트웨어구조... 2 블록개요 함수호출 (FC) FC 호출에서파라미터전달... 5 함수를호출하기위한다른인스트럭션... 6 함수블록 (FB) 을가지는인스턴스만들기... 7 함수블록 (FB) 을가지는인스턴스만들기 FB 호출에서파라미터전달... 9 FB를호출하기위한다른인스트럭션 " 전달되는 " 파라미터 프로세스단위에대한복수인스턴스모델 " 프레스라인 " 에대한프로그램구조 복수인스턴스모델의속성 연습 6: 어셈블리라인으로서컨베이어모델 연습 6.1: 작업장에대한프로그램구조 연습 6.1: 프로세싱장소 1에대한FB1 만들기 연습 6.1: FB1의프로그램구조 연습 6.2: 전송벨트에대한 FB2 만들기 연습 6.2: OB1에서 FB1과 FB2의파라미터연결 연습 6.3: 3개스테이션으로확장 연습 6.3: 블록파라미터의연결 FC Call에서파라미터전달 (2) FC 호출에서파라미터전달 (3) FC 호출에서파라미터전달 (4) FC 호출에서파라미터전달 (5) 추가연습 6.4: 자체카운터블록만들기 Page 1 Block Calls and Multi-instance Model
87 S7-CPU 의소프트웨어구조 운영체제 START-UP OB... 순환프로그램프로세싱 Read in PII FBs FBs FCs Call OB1 FBs FCs Output PIQ Event-driven OBs... 사용자프로그램 Date: 10/17/99 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 Calls and Multi-instance Model
88 블록개요 Block Type Properties 구조블록 -운영체제에대한사용자인터페이스 (OB) -등급을매긴우선순위 (0...27) - 로컬데이터스택의특정시작정보 함수블록 - 파라미터를할당할수있음 (FB) -( 리콜 ) 메모리를가짐 함수 (FC) - 파라미터를할당할수있음 ( 호출에대한파라미터가할당되어야함 ) - 반환값이다시주어질수있음 - 기본적으로메모리가없음 데이터블록 - 로컬로구조적데이터저장 ( 인스턴스 DB) (DB) -전역적으로구조적데이터저장 ( 공유 ) ( 완전한프로그램에서유효 ) 시스템 - CPU의운영체제에저장되고사용자가호출할수있는 함수 ( 메모리를가진 ) FB 블록 (SFB) 시스템 - CPU의운영체제에저장되고사용자가호출할수있는 함수 (SFC) ( 메모리가없는 ) 함수 시스템데이터 - 설정데이터와파라미터에대한데이터블록 블록 (SDB) Date: 10/17/99 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 Block Calls and Multi-instance Model
89 함수호출 (FC) OB1 프로그램실행 함수 FC10 선언부 CALL FC10 실행부 Date: 10/17/99 File: PRO2_06e.4 Information and 개요 FC 호출 응용 함수는사용자프로그램의구성요소이며 IEC-Standard 에따라메모리없는블록을나타냅니다. 함수는입력, 출력, 입 / 출력파라미터를가지는논리블록입니다. 함수는메모리를갖지않으며결과를저장하기위한별도의영구데이터영역이존재하지않습니다. 함수실행중에발생하는임시결과는단지개별로컬데이터스택의임시변수에저장될수있습니다. 함수는 ( 상태를 기억 하기위한내부메모리가없는 ) 스위칭네트워크를나타냅니다. FC 는처리될때 호출 되어야합니다. FC 호출은소위파라미터목록을가지는호출인스트럭션 ( 여기에서는 CALL FC10) 으로구성됩니다. 호출인스트럭션이처리된후 CPU 는호출된블록 ( 여기에서는 FC10) 에서프로그램프로세싱을계속합니다. 호출된블록은 BE 인스트럭션에도달할때까지처리됩니다. 그후에 CPU 는호출블록 ( 여기에서는 OB1) 으로되돌아가서 CALL 이후의다음인스트럭션으로프로세싱을계속합니다. 함수는주로 보조적인서비스 를위해사용되며, 따라서결과는호출블록으로반환됩니다. 결과는 (IEC 에따라 ) 전달된파라미터에만의존해야합니다 ( 예를들어산술함수나이진논리연산을가진단일컨트롤 ). 출력파라미터 : 만약표준에따라프로그램하려면함수가실제로한개의반환값 RET_VAL을 RET_VAL 호출블록에넘기도록해야합니다. 텍스트모드로입력된함수의경우데이터형은함수정의, 예를들어 Function FC4: INT. 를통해직접주어질수있습니다. 여기에서 RET_VAL을입력파라미터로정의할필요는없습니다. Page 4 Block Calls and Multi-instance Model
90 FC 호출에서파라미터전달 다음장소에있는기본실질파라미터 비트메모리어드레스영역 프로세스이미지 호출자의 L-Stack IB 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... 블록파라미터 실질파라미터 형식파라미터 Date: 10/17/99 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 Block Calls and Multi-instance Model
91 함수를호출하기위한다른인스트럭션 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가파라미터를가지지않을때만사용됨 Date: 10/17/99 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 Block Calls and Multi-instance Model
92 함수블록 (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 Date: 10/17/99 File: PRO2_06e.7 Information and 개요 함수블록은사용자프로그램의구성요소이며 IEC Standard 에따라메모리를가지는논리블록을나타냅니다. 이함수블록은 OB, FB, FC 에의해호출될수있습니다. FC 와달리 FB 는인스턴스화됩니다. 즉, FB 는자체사적데이터영역을할당받습니다. 가장간단한형태 ( 단일인스턴스모델 ) 에서이사적데이터영역은자체 DB, 즉소위인스턴스 DB 입니다. 이 DB 는 FB 호출에서명시적으로지정되어야합니다. FB 인스턴스는 ( 상태를 기억 하기위한내부메모리를가지는 ) 스위치메커니즘을나타냅니다. 인스턴스는 FB를인스턴트화한다는것은큰의미를가지며 FC에본질적인구분기준을무엇인가? 형성합니다. C 와같은고급언어의경우선언에서변수명과데이터형을선언하여변수를설정하는것을 인스턴스화 또는 인스턴스형성 이라고합니다. 변수와마찬가지로함수블록도 인스턴스화 됩니다. 정적변수는물론블록파라미터변수가저장되는이 자체 데이터영역을통해서만 FB는실행가능한단위 (FB-인스턴스) 가됩니다. 입력및출력파라미터는물론정적변수의값은블록이끝난후에도유지됩니다. 이런방식으로 FB-인스턴스는몇개의호출에걸쳐이런로컬데이터를저장할수있습니다. 응용 FC 와달리 FB- 인스턴스는메모리를가집니다. 예를들어 메모리 는카운터나타이머함수를실행하기위해또는퍼포먼스가외부영향은물론내부상태 ( 프로세싱단계, 속도, 온도, 등 ) 에의존하는프로세스단위 ( 프로세싱스테이션, 드라이브, 보일러, 등 ) 를제어하기위해필요합니다. Page 7 Block Calls and Multi-instance Model
93 FB 호출에서파라미터전달 IB DB QB 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 FB in On_1 BOOL 0.1 in On_2 BOOL 2.0 out Off BOOl A #On_1 A #On_2 = #Off... 형식파라미터 Date: 10/17/99 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 Block Calls and Multi-instance Model
94 FB 의 CALL 호출에서나타나는특징 값 에의한파라미터전달 ( 값을복사 ) : 초기화 : FB 파라미터는선언에서초기화될수있습니다. 실행 : 복잡한데이터형 (STRUCT, ARRAY, STRING and DATE_AND_TIME) 의입 / 출력파라미터 호출에서 FB 파라미터의할당 : FB 파라미터는할당될필요가없습니다. 액세스가 외부 ( 호출블록 ) 에서일어날수있습니다. 예외 : 복잡한데이터형 (STRUCT, ARRAY, STRING and DATE_AND_TIME) 의입 / 출력파라미터 형식파라미터에대한액세스가 DI 및 AR2에의해일어날수있습니다. DI 또는 AR2 레지스터덮어쓰기 : 인스턴스데이터에대한액세스를할수없습니다. Date: 10/17/99 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 Block Calls and Multi-instance Model
95 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가인스턴스데이터 ( 파라미터 + 정적변수 ) 를가지지않을때만사용될수있음 Date: 10/17/99 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 Block Calls and Multi-instance Model
96 파라미터 " 전달 " 중첩깊이 : 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) Date: 10/17/99 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 Block Calls and Multi-instance Model
97 프로세스단위에대한복수인스턴스모델 보기 : 프레스라인 Press_1 펀치카드 Press_2 FB10: "Press line" FB1: "Press_1" FB4: "Punch" FB5: "Guard" FB1: "Press_2" FB4: "Punch" FB5: "Guard" 전송 FB2: "Transport" 기술적부분 복수인스턴스 의도움을받아기술적부분을프로그램 Date: 10/17/99 File: PRO2_06e.12 Information and 프로세스단위 프로세스단위는어셈블리라인 ( 전송벨트, 프로세싱스테이션 ) 이나완전한기계의단위또는기계의부분 ( 예 : 프레스나완전한프레스의펀치또는가드 ) 처럼물리적인개체입니다. 프로세스단위는논리적인구분기준으로사용됩니다. 원칙적으로프로세스단위는계층구조로디자인되어있습니다. 그런방식으로프로세스단위는하위단위를차례로포함할수있습니다 ( 예 : 프레스 단위는 펀치 또는 가드 단위를포함합니다 ). 프로세스단위는이런방식으로보다많은지체된하위단위로디자인됩니다 ( 모음 ). " 복수인스턴스 " STEP7 프로그래밍언어는또한 모음 의개념을지원하며따라서 FB 와 복수인스턴스개념 을이용해서한번만들어진소프트웨어를다시사용할수있습니다. 소프트웨어에의한프로세스단위또는프로세스하위단위의설명은 S7 FB 에서이루어집니다. stat.var. 섹션에서상위 FB 의인스턴스로하위 FB 를선언함으로써하위단위로구분할수있습니다. 이런방식으로기존의프로세스나기계에서와마찬가지로프로그램에서하위단위로구분할수있습니다 ( 모음에의한객체중심프로그래밍의개념 ). SW 재사용한번만들어진소프트웨어는이개념의도움을받아다시사용될수있습니다. 제조업체가프로세스하위단위 ( 밸브, 모터, 실린더, 등 ) 를만들때마다이프로세스하위단위의제어를위한 FB 도제공됩니다. 그러한프로세스하위단위가보다큰단위로묶일때마다보다큰단위의 FB 에서하위단위에대한 FB 인스턴스가또한선언됩니다. Page 12 Block Calls and Multi-instance Model
98 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 Date: 10/17/99 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 Block Calls and Multi-instance Model
99 복수인스턴스모델의등록정보 복수인스턴스모델의장점 : 몇개의인스턴스에대해오직한개의 DB만이요구됩니다. 각인스턴스에대한 사적 데이터영역을설정할때추가의관리작업은필요하지않습니다. 복수인스턴스모델은 객체지향적인프로그래밍스타일 ( 집합 에의한재사용가능성 ) 을가능하게합니다. 최대 8 개의중첩을가집니다. FB의전제조건 : Fb에서프로세스신호에대한직접 (I, Q) 액세스를할수없습니다. 프로세스신호에대한액세스나다른프로세스단위와의통신은 FB 파라미터를통해서만가능합니다. FB 는공유 ( 전역 ) DB 나 비트메모리 가아니라정적변수로만프로세스상태를기억할수있습니다. 참고 : 인스턴스데이터에대한액세스는또한 외부 에서이루어질수있습니다. OB1에서의예 : L "Press line".press_2.punch.<varname> Date: 10/17/99 File: PRO2_06e.14 Information and 복수인스턴스복수인스턴스모델의경우한개의동일한호출계층구조로이루어진몇개모델의이점인스턴스의각데이터섹션을한개의단일 DB에저장할수있습니다. 그런방식으로몇개의인스턴스에대해오직한개의 DB만이요구됩니다. 복수인스턴스모델의경우상호인스턴스 DB를할당할때를제외하면로컬 FB 데이터의운영을위한조처는필요하지않습니다. 복수인스턴스모델은객체중심의프로그래밍개념을지원합니다. 프로세스단위의제어를위해필요한코드와데이터는 FB에서집약됩니다. 프로세스단위가계층구조의하위단위로구성되어있다면이구조는복수인스턴스모델에의해사용자프로그램에정확히반영될수있습니다. 제어프로그램은기계가구성요소로구성되는것과같은방식으로 FB 인스턴스로디자인될수있습니다. STEP7은복수인스턴스모델로 8개의중첩깊이를지원합니다. 복수인스턴스에대한 FB 를복수인스턴스로문제없이사용하려면다음사항들이지켜져야합니다. 필요조건 프로세스제어를위해 ( 입력이나출력과같은 ) CPU 의전역피연산함수에대한직접액세스는허용되지않습니다. 전역입력및출력에대한각액세스는복수인스턴스능력을위반합니다. 프로세스또는프로세스제어단위 (FB) 와의통신은 FB 파라미터를통해서만이루어져야합니다. FB 가상위단위로통합된후에야비로소파라미터목록을통한 FB 의 연결 이 FB 호출에서실행될수있습니다. 제어되는단위에대한상태또는다른정보는자체정적변수로 기억 되어야합니다. Page 14 Block Calls and Multi-instance Model
100 연습 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 Date: 10/17/99 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 Block Calls and Multi-instance Model
101 연습 6.1: 작업장에대한프로그램구조 보기 : 어셈블리라인 DB1 Transport OB1 FB1: "Station" CALL FB1, DB CALL FB2, DB2 DB2 FB2: "Transport" Station_1 Station_2 Station_3 어셈블리라인의기술적부분 기술적부분을프로그램 Date: 10/17/99 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 Block Calls and Multi-instance Model 21
102 연습 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 Date: 10/17/99 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 Block Calls and Multi-instance Model
103 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 Date: 10/17/99 File: PRO2_06e.18 Information and 작업스테이션이 작업완료 상태에있는한작업장앞의표시등 H1 이입력파라미터 #Clock_Bit 에의해주어진점멸빈도로점멸합니다. 액티브전송신호 #Transp_req=1 이고작업품목이프록시스위치의하강에지와함께스테이션앞의장소를떠나면 대기중 " 상태로전환이일어납니다. " 대기중 " 이상태에서는처리되지않은새재료를기다립니다. 스테이션앞의표시등은꺼집니다. 처리되지않은새재료의도착은개시기신호의도움을받아검사됩니다. 처리되지않은새재료가인식되자마자벨트는멈추고 (#Transp_req=0) 처리되지않은재료가작업스테이션에서수용됩니다. 개시기신호의하강에지와함께벨트 (#Conv_busy=0) 가다시사용가능하게되어다른스테이션이완성된작업품목을벨트에놓게합니다. 또한개시기신호의하강에지와함께 작업중 상태로상태전환이일어납니다. 초기화 또한 FB 가입력신호 초기화 를통해 작업중 상태로초기화될수있음을고려합니다. 입력파라미터 #Initial 에 10.0 을할당합니다. 작업 PRO2- 프로젝트에서새프로그램컨테이너 " 벨트 를만듭니다. 2. 위의기능을가지는 FB1 을만듭니다. 3. CPU 를위해 MB10 에서점멸빈도에파라미터를할당합니다. 4. OB1 에서인스턴스 -DB DB1 을가지는 FB1 을호출하고인터페이스파라미터에해당프로세스신호를할당합니다. 입력파라미터 #Clock_Bit 를 M10.1 과연결합니다. 5. 블록을 CPU 에다운로드하고프로그램의기능을 ( 전송벨트없이 ) 테스트합니다. Page 18 Block Calls and Multi-instance Model
104 연습 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) Date: 10/17/99 File: PRO2_06e.19 Information and 문제정의제일먼저단일작업장에서프로세스제어를실행하는 FB2 를만듭니다. 프로세스시퀀스는 4 단계 ( 대기중, 오른쪽으로전송, 어셈블리, 왼쪽으로전송 ) 를가지는상태모델을통해설명될수있습니다. FB2 를만들때전송벨트는벨트에서가동되는작업스테이션의수에상관없이작업을완료해야한다는것을고려합니다. FB 의기능원칙 FB2 의파라미터와프로세스신호사이의상관관계는물론상태에따른 FB2 의작업기능원칙이다음섹션에서설명됩니다. " 대기중 " 이상태에서전송벨트는스테이션중한개가벨트위에올려놓은완성된품목을기다립니다. 전송벨트가 대기중 상태에있는한전송벨트는중지되고표시등 H4 는꺼집니다. 상태 1 이신호 #Transport_req 인경우 오른쪽으로전송 상태로전환이일어납니다. " 오른쪽으로전송 " 이상태에서작업품목은최종어셈블리방향으로전송됩니다. 벨트가움직이는한표시등 H4 는입력파라미터에의해주어진빈도로점멸합니다. 완성된작업품목이광전장벽 LS 를통과하면최종어셈블리에도달합니다. 즉, 어셈블리 상태로전환이일어납니다. " 어셈블리 " 이상태에서조작원은완성된작업품목을처리되지않은새재료로교환합니다. 표시등은이상태에서영구적으로켜집니다. 완료되면조작원이 S4 버튼을통해신호를보냅니다. 이러한확인신호는 왼쪽으로전송 " 상태로전환을유도합니다. Page 19 Block Calls and Multi-instance Model
105 연습 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 Date: 10/17/99 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 Block Calls and Multi-instance Model
106 연습 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 Date: 10/17/99 File: PRO2_06e.21 Information and 프로그램구조 연습의최종부분으로모두 3 개의작업스테이션에대한컨베이어모델의완전한기능을습득합니다. 이를위해전체컨베이어모델 (3 개의스테이션과 1 개의전송벨트 ) 의제어가한개의단일함수블록 (FB10) 으로이동됩니다. FB10 에서 3 개의프로세싱스테이션에대한제어는 FB1 의별도인스턴스로서실행되고전송벨트의제어는 FB2 의인스턴스로서실행됩니다. Page 21 Block Calls and Multi-instance Model
107 연습 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" Date: 10/17/99 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 Block Calls and Multi-instance Model
108 FC 호출에서파라미터전달 (2) 다음장소에있는기본실질파라미터 : 상수 데이터블록 DBB2 DB L-Stack (OB1) 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... Date: 10/17/99 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 Block Calls and Multi-instance Model
109 다음장소에있는복잡한실질파라미터 : 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 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... Date: 10/17/99 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 Block Calls and Multi-instance Model
110 "POINTER" 와 "ANY" 파라미터 OB1 프로그램실행 CALL FC10 On := P#I 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#I Function FC10 in On ANY out Off BOOl L P##On... = #Off... Date: 10/17/99 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 Block Calls and Multi-instance Model
111 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... Date: 10/17/99 File: PRO2_06e.26 Information and 파라미터전달 TIMER, COUNTER, BLOCK_x 형의파라미터전달이가장쉽습니다. 이경우에 32 비트영역횡단포인터대신현재의 TIMER 나 COUNTER 또는 BLOCK_x 의수가호출되는 FC 로간단히전달됩니다. Page 26 Block Calls and Multi-instance Model
112 추가연습 6.4: 자체카운터블록만들기 DB6 I0.0 I0.1 EN CU R FB6 ENO Q Q0.0 CV QW12 10 PV Date: 10/17/99 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 Block Calls and Multi-instance Model
113 라이브러리사용 FC 100 FC 101 FC 102 FC 103 목차 페이지 라이브러리에서흥미로운사실... 2 표준라이브러리의설정및내용... 3 시스템함수에서흥미로운사실... 4 시스템함수에대한개요 (1부)... 5 시스템함수에대한개요 (2부)... 6 시스템함수에대한개요 (3부)... 7 시스템함수에대한개요 (4부)... 8 시스템함수에대한개요 (5부)... 9 시스템함수호출 오류메시지평가 연습 7.1: 링크되지않은 속성을가지는 DB 만들기 연습 7.2: 데이터블록테스트 (SFC 24: S7-400 전용 ) 연습 7.3: DB 만들기 (SFC 22) 연습 7.4: 로드메모리에서작업메모리로 DB 복사 (SFC 20) 연습 7.5: DB 초기화 (SFC 21) 연습 7.6: 진단버퍼에메시지쓰기 (SFC 52) 라이브러리 : S5 - S7 전환블록 라이브러리 : TI - S7 전환블록 (1부) 라이브러리 : TI - S7 전환블록 (2부) Page 1 Using Libraries
114 라이브러리에서흥미로운사실 목적 : 재사용할수있는프로그램구성요소의저장 CPU에직접전송하거나테스트할수없습니다. 라이브러리설정 : 라이브러리는몇개의프로그램컨테이너를포함할수있습니다. 라이브러리는 하드웨어 를포함할수없습니다. 모든프로그램컨테이너는다음을포함합니다. 컨테이너 " 블록 ", " 소스 ", " 기호 " 컨테이너 " 차트 " ( 옵션소프트웨어 S7-CFC 전용 ) 라이브러리의사용 : SIMATIC 관리자일경우 : 라이브러리가설정될수있습니다 ( 그러나프로젝트와이름이같으면안됩니다 ). 블록이라이브러리와프로젝트사이에복사될수있습니다. 라이브러리는저장될수있습니다. Date: 10/18/99 File: PRO2_07e.2 Information and 개요 라이브러리는 /M7 에대해재사용될수있는프로그램구성요소를저장하기위해사용됩니다. 프로그램구성요소는기존의프로젝트에서라이브러리로복사되거나프로젝트와관계없이라이브러리에서직접만들어질수있습니다. 프로젝트에대한같은기능이라이브러리에서 S7- 프로그램을만들때도사용될수있지만테스트는예외입니다. 설정프로젝트와마찬가지로라이브러리도계층구조로설정됩니다. 라이브러리는 S7- 프로그램을포함할수있습니다. S7- 프로그램은한개의 기호 ( 기호표 ) 개체는물론정확히한개의 블록 ( 사용자프로그램 ) 컨테이너와한개의 차트 컨테이너를포함할수있습니다. 블록 컨테이너는블록을포함하며, 이블록은 S7-CPU 에로드될수있습니다. 포함된변수표 (VAT) 와사용자정의데이터형은 CPU 에로드되지않습니다. 소스 컨테이너는다양한프로그래밍언어에서만들어진프로그램에대한소스를포함합니다. 차트 컨테이너는 CFC- 차트를포함합니다 ( 옵션소프트웨어 S7-CFC 에만적용 ) 새로운 S7- 프로그램을삽입할때 기호 개체는물론 블록 및 소스 컨테이너가자동적으로그안에서설정됩니다. 라이브러리의사용사용자는 S7- 프로그램에서항상다시사용하고싶은블록을저장한후이 S7- 프로그램을라이브러리에저장하면프로그래밍시간을저장할수있습니다. 거기에서항상개별사용자프로그램에블록을복사할수있습니다. Page 2 Using Libraries
115 표준라이브러리의설정및내용 Date: 10/18/99 File: PRO2_07e.3 Information and 소개 라이브러리열기 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 3 Using Libraries
116 시스템함수에서흥미로운사실 시스템함수 (SFC 와 SFB) 는 CPU 의운영체제에저장됩니다. S7-300/400, 시스템함수및표준함수에대한시스템소프트웨어참고설명서, STEP 7 소프트웨어에서사용할수있는확장온라인도움말 Date: 10/18/99 File: PRO2_07e.4 Information and 소개 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. Page 4 Using Libraries
117 시스템함수에대한개요 (1 부 ) 프로그램제어 시계처리 작동시간카운터 Multicomputing interrupt Trigger cycle time Stop state Delay (wait) Set clock time Read clock time Synchronize Set the counter Start and stop Read out Read system time SFC 35 SFC 43 SFC 46 SFC 47 SFC 0 SFC 1 SFC 48 SFC 2 SFC 3 SFC 4 SFC 64 - X X X ) X X - X 1) X 1) X 1) X 함수그룹 함수 블록 S7-300 복사및블록함수 Blockmove SFC 20 X Preset field SFC 21 X Generate DB SFC 22 X Delete DB SFC 23 - Test DB SFC 24 - Compress SFC 25 - Substitute value in ACCU 1 SFC 44 X 1) S7-400 X X X X X X X X 2) X X X X X X X X X X 1) CPU 312IFM 에는적용되지않음 2) 개선된 CPU 에만적용 Date: 10/18/99 File: PRO2_07e.5 Information and 복사함수및 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은사용자프로그램에서 µ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) 마다시간이더해집니다. Page 5 Using Libraries
118 시스템함수에대한개요 (2 부 ) 타임인터럽트 딜레이인터럽트 동기오류 인터럽트오류및비동기오류 Set Cancel Activate Scan Start Cancel Scan Mask error. Demask error. Read status register. Cancel new interrupts. Enable new interrupts. Delay new interrupts. Enable higher priority interrupts. SFC 28 SFC 29 SFC 30 SFC 31 SFC 32 SFC 33 SFC 34 SFC 36 SFC 37 SFC 38 SFC 39 SFC 40 SFC 41 SFC 42 X 1) X 1) X 1) X 1) X 1) X 1) X 1) X X X X X X X 함수그룹 함수 블록 S7-300 전송데이터기록 Write active parameters. SFC 55 X Write defined parameters. SFC 56 X Parameterize module. SFC 57 X Write data record. SFC 58 X Read data record. SFC 59 X S7-400 X X X X X X X X X X X X X X X X X X X 1) CPU 312IFM 에는적용되지않음 Date: 10/18/99 File: PRO2_07e.6 Information and 전송데이터기록 타임인터럽트 파라미터를할당할수있는모듈에대한파라미터와진단데이터를가지는시스템데이터영역이있습니다. 이영역은 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 는지연된인터럽트와비동기오류의프로세싱을다시허가합니다. Page 6 Using Libraries
119 시스템함수에대한개요 (3 부 ) 프로세스이미지, I/O 영역 어드레싱모듈 분산 I/O 전역데이터통신 Activate PII inputs. Activate PIQ outputs. Set bit field in the I/O. Reset bit field in the I/O. Determine logical address. Determine slot. Determine all logical addresses. Trigger process interrupt. Synchronize DP Slaves Read diagnostics data. Read user data. Write user data. Send GD package. Receive GD package. SFC 26 SFC 27 SFC 79 SFC 80 SFC 5 SFC 49 SFC 50 SFC 7 SFC 11 SFC 13 SFC 14 SFC 15 SFC 60 SFC X X 1) 1) 1) 1) 1) - - 함수그룹 함수 모듈 S7-300 시스템진단 Read start info. SFC 6 - Read partial system status SFC 51 X list X Write diagnostics buffer. SFC 52 S7-400 X X X X X X X X X X 1) 1) 1) 1) X X 1) DP 인터페이스를가지는 CPU 에만적용. 예 :CPU DP Date: 10/18/99 File: PRO2_07e.7 Information and 시스템진단 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 은전역데이터패키지를받습니다. Page 7 Using Libraries
120 시스템함수에대한개요 (4 부 ) SFC, 설정되지않은연결을통한데이터교환 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 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 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 SFC 65 SFC 66 SFC 67 SFC 68 SFC 69 SFC 72 SFC 73 SFC ) 1) 1) 1) 1) 1) 1) 1) 함수그룹 함수 블록 S7-300 SFB, 설정된연결을 통한데이터교환 S7-400 X X X X X X X X X X X X X 1) 1) 1) 1) 1) 1) 1) 1) 1) 개선된 CPU 에만적용 Date: 10/18/99 File: PRO2_07e.8 Information and 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 버스를통한통신 Page 8 Using Libraries
121 시스템함수에대한개요 (5 부 ) 함수그룹 함수 블록 S7-300 S7-400 통합된폐쇄루프제어 Continuous control Step control Pulse shaping SFB 41 SFB 42 SFB 43 3) 3) 3) 플라스틱기술 Call up the assembler block SFC 63 1) - 통합함수 High speed counter Frequency meter A/B counter Positioning SFB 29 SFB 30 SFB 38 SFB 39 2) 2) 3) 3) IEC 타이머및 IEC 카운터 블록참조메시지 Pulse On delay Off delay Count up Count down Count up/down Message without acknowledgement Message with acknowledgement Message with 8 accompanying values Message without accompanying values Send archive data Disable messages Enable messages SFB 3 SFB 4 SFB 5 SFB 0 SFB 1 SFB 2 SFB 36 SFB 33 SFB 35 SFB 34 SFB 37 SFC 10 SFC 9 x x x x x x x x x x x x x x x x x x x 1) CPU 614 에만적용 2) CPU 312 IFM 에만적용 3) CPU 314IFM 에만적용 Date: 10/18/99 File: PRO2_07e.9 Information and 통합폐쇄루프제어이블록은이후 CPU 버전에서통합됩니다. 플라스틱기술 CPU 614 (S7-300) 의경우개별블록은 C 언어에서만들어질수있습니다. SFC 63 시스템함수는그런블록을호출하기위해사용됩니다. 통합함수이블록은 CPU 312 IFM (S7-300) 에만존재합니다. 통합함수설명서에설명이되어있습니다. SFB 29 는통합 CPU 입력에서펄스를셉니다. SFB 30 은통합입력을통해빈도를측정하기위해사용됩니다. IEC 타이머및카운터 이것은 IEC 표준에일치하는타이머및카운터함수를사용할수있게합니다. 나머지타이머및카운터함수는호환성문제때문에 SIMATIC S5 전용으로실행됩니다. IEC 타이머와카운터의경우타이머및카운터값의범위가매우넓습니다. 블록참조이블록은프로세스제어시스템과같은 MMI 시스템에대한메시지시스템을메시지실행하기위해사용됩니다. 메시지는이절차를통해 S-CPU에서만들어지며프로세스변수를포함하는각메시지가로그온된디스플레이장치에보내집니다. 중앙확인개념이사용됩니다. 즉, 디스플레이장치에서메시지를확인하면메시지를보낸 CPU에대답을보냅니다. CPU에서정보가모든로그온사용자에게분산됩니다. 단일입력에서의에지변경에대해메시지를발생합니다. Page 9 Using Libraries
122 시스템함수호출 CAll in STL Call in LAD Date: 10/18/99 File: PRO2_07e.10 Information and 소개 STL 에서호출 LAD/FBD 에서호출 시스템함수가호출될때시스템함수는자동적으로해당사용자프로그램에복사됩니다. 또한모든시스템함수는 S7- 프로그램의기본제공 StdLib30 표준함수에저장됩니다. 또한이라이브러리에서사용자프로그램으로 SFC 와 SFB 를복사할수있습니다. ( 영문명칭이있는 ) 완성된기호표가라이브러리에있습니다. 사용된블록의기호는자동적으로사용자프로그램의기호표에복사됩니다. CALL SFC.. 로호출을한후블록파라미터목록이표시되고블록에대한파라미터를설정할수있습니다. 반환오류메시지는물론파라미터에대한설명이온라인도움말에제시됩니다. 네트워크에서한장소를선택하고명령 Insert -> LAD Element --> SFC 또는 SFB 블록을통해원하는시스템함수를삽입합니다. 래더도표에대한추가연결을위해대응하는 STL, ( 조건적호출에대한 ) EN 및 ENO 파라미터를사용할수있습니다. Page 10 Using Libraries
123 오류메시지평가 BR 이진결과는잘못된프로세싱일경우 RLO=0을제공하고잘못이없는프로세싱의경우 RLO=1을제공합니다. A BR로 STL에대한BR 스캔 ENO 출력파라미터를통해 LAD에서스캔대부분의시스템함수는다음설정으로출력파라미터 RET_VAL (INT) 에오류코드를반환합니다. RET_VAL=W#16#8 X Y Z 오류클래스, 오류의개별번호 (SFC 에고유한 ) 또는이벤트번호 ( 일반적 ) X>0: 일반오류, X= 잘못된파라미터의번호 X=0: SFC 에고유한오류가발생 "8" signals: error occurred 보기 : W#16#8081는 SFC에고유한오류코드입니다. W#16#823A는일반오류코드이며오류는파라미터 2번에의해발생되었습니다. Date: 10/18/99 File: PRO2_07e.11 Information and 오류정보 처리된 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) 는특정오류코드를제공하는반환값을가집니다. 이오류코드는특정시스템함수에속하는오류가함수를프로세싱하는중에발생했음을나타냅니다. 특정오류코드에대한설명은시스템함수에대한온라인도움말에나옵니다. Page 11 Using Libraries
124 연습 7.1: 링크되지않은 속성을가지는 DB 만들기 Load memory Transfer DB 20 Date: 10/18/99 File: PRO2_07e.12 Information and 연습목적 "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 12 Using Libraries
125 연습 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 은쓰기보호 ) Date: 10/18/99 File: PRO2_07e.13 Information and 연습목적 문제정의 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 13 Using Libraries
126 연습 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 사이에옴 ) Date: 10/18/99 File: PRO2_07e.14 Information and 연습목적 각프로그램에대한새 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 14 Using Libraries
127 연습 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 복사가일어나는메모리영역 (= 대상필드 ) Date: 10/18/99 File: PRO2_07e.15 Information and 연습목적시스템함수 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 15 Using Libraries
128 연습 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 미리설정된값으로채워야하는목표필드 Date: 10/18/99 File: PRO2_07e.16 Information and 연습목적 : 문제정의 시스템함수사용에익숙해지기 데이터블록이초기화될수있는 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 16 Using Libraries
129 연습 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에대한반환값 Date: 10/18/99 File: PRO2_07e.17 Information and 연습목적 진단버퍼에메시지항목프로그램할수있기 문제정의다음기능을가지는 FC 76 을만듭니다. (I1.2 에서의에지를통해시뮬레이트되는 ) 시스템오류에서메시지는진단버퍼에입력됩니다. 진단메시지는추가적으로 PG 에출력됩니다. 절차 1. 시스템장애 (I1.2 에서에지 ) 가있을때진단버퍼에메시지를입력하는 FC 76 블록을만듭니다. 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을통해표시됩니다 데이터형 INFO1은허용되지않음 8084 데이터형 INFO2는허용되지않음 8085 EVENTN는허용되지않음 8086 INFO1의길이는허용되지않음 8087 INFO2의길이는허용되지않음 8091 로그온된노드가없음 8092 현재보내기를할수없음 ( 보내기버퍼가가득찼음 ) Page 17 Using Libraries
130 라이브러리 : S5 - S7 전환블록 S5 Program S7 Program JU FB 240 COD:B4 BCD: MW 114 SBCD: M 0.0 DUAL: MW 116 S5/S7 Converter CALL FC81 BCD: MW114 SBCD: M0.0 DUAL: MW 116 Date: 10/18/99 File: PRO2_07e.18 Information and 소개이라이브러리는 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 에서는전형적인일입니다. Page 18 Using Libraries
131 블록기호설명 라이브러리 : 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 세트비트의숫자세기 Date: 10/18/99 File: PRO2_07e.19 Information and FC 80 FC80 함수는래칭온딜레이 (TONR) 로 시간 을시작합니다. FC80 은실행종료시간의현재시간값 (ET) 이미리설정된시간값 (PV) 과같거나이보다커질때까지시간을누적합니다. FC 81 전송데이터범위간접함수 (IBLKMOV) 를이용해바이트, 워드, 정수 (16 비트 ), 더블워드또는정수 (32 비트 ) 로구성된데이터범위를소스에서대상으로전송할수있습니다. S_DATA 및 D_DATA "POINTER 는소스영역과대상영역의시작을결정하는 POINTER 데이터형의구조체를가리킵니다. 복사될영역길이는별도의파라미터를통해결정됩니다. FC 82/83 FC 84-FC92 MCR 비트가 1 이면지정된영역의비트신호상태를 1 (FC 83) 또는 "0 (FC 82) 으로설정합니다. MCR 이 0 이면영역의비트신호상태는변경되지않습니다. 이함수는예를들어 FIFO 함수를실행하는표함수를다룹니다. 값은워드포맷으로입력되며길이는조정할수있습니다. FC 93-FC 99 이그룹은다양한전환함수를사용할수있게합니다.. Page 19 Using Libraries
132 라이브러리 : 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 표데이터수집 / 분산 Date: 10/18/99 File: PRO2_07e.20 Information and FC 100-FC 101 FC 102 (RSETI) 함수는 MCR 비트가 1 이면 FC 101 에대해지정된범위의바이트에서비트의신호상태를 0 이나 1 로리셋합니다. MCR 비트가 0 이면그범위에서바이트의신호상태는변경되지않습니다. 표준편차 (DEV) 함수는표 (TBL) 에저장된일련의값에서표준편차를계산합니다. 결과는 OUT 에저장됩니다. 표준편차는다음공식에따라계산됩니다. 표준편차 = (N * SqSum ) - Sum 2 N * (N - 1) 조건 Sum = TBL 의값의합계 N = TBL 의값의수 SqSum = TBL 모든값의제곱의합 FC 103 FC 104-FC 105 상관관계의데이터표 (CDT) 함수는기존의표에있는입력값 (IN) 을입력값 (IN_TBL) 과비교하고입력값보다크거나같은첫번째값을찾습니다. 찾은값의인덱스를이용해서값은출력값의표 (OUT_TBL) 에서각출력값 (OUT) 에복사됩니다. 이함수는아날로그입력에서아날로그값의크기를조정하거나아날로그출력으로아날로그값의크기를조정하기위해사용됩니다. FB 80- FB 86 전자설명서를참조합니다. Page 20 Using Libraries
133 동기및비동기오류처리 목차 페이지 비동기오류처리... 2 오류조직블록처리... 3 비동기오류 OB의보기... 4 동기오류처리... 5 프로그래밍오류 OB121에대한시작정보... 6 액세스오류 OB122에대한시작정보... 7 동기오류마스크... 8 동기오류의마스크를위한 SFC 프로그래밍오류필터의구조 액세스오류필터의구조 동기오류의마스크를해제하기위한 SFC 오류레지스터를읽기위한 SFC 보기 : 데이터블록테스트 연습 8.1: FC43에서오류처리 Page 1 Diagnosing Errors
134 비동기오류처리 비동기오류는특정프로그램위치에할당되지않습니다. 즉, 비동기오류는프로그램프로세싱에대해비동기적으로나타납니다. 오류종류보기오류 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) Power supply failure in the distributed rack OB 85 OB 86 1) 통신오류 Incorrect message identifier OB 87 1) S7-400에만적용 2) 오류 OB에상관없이정지하지않음 Date: 10/18/99 File: PRO2_08e.2 Information and 소개시간오류전원공급오류진단인터럽트제거 / 삽입인터럽트 CPU-H/W 오류 슬라이드는비동기오류이벤트의목록을보여줍니다. 이들오류는특정프로그램위치에할당되지않습니다. 스캔순환감시시간은기본설정이 150 ms입니다. 시스템은순환이지속시간이 150 ms보다길면시간오류를인식합니다. 오류가같은순환에서 2번일어나면 CPU는 Stop 상태가됩니다. 백업배터리가고장났거나없을때발생하며또한 S7-400의경우중앙장치또는확장장치에서 24 V 공급이정지했을때발생합니다. 다른종류의오류와는달리기존의오류 OB가없는CPU는 Run 상태에남아있게되며빨간색오류 LED가 CPU에켜집니다. 예를들어아날로그모듈과같은진단가능모듈은오류가발생할때진단인터럽트를발생시킬수있습니다. 진단인터럽트를사용할수있게하는그런방식으로모듈에파라미터를할당해야합니다. 이인터럽트는 S7-400 PLC 시스템에서모듈을삽입하거나제거함으로써발생합니다. 모듈을삽입할때운영체제는삽입된모듈형식이정확한지를확인합니다. 이함수는프로그램순환중에모듈의제거및삽입을가능하게합니다. S7-400 의경우 K-Bus 의 MPI 인터페이스에서또는분산 I/O 에대한인터페이스모듈에서오류가인식됩니다. 프로그램시퀀스 이오류는프로세스이미지를갱신할때 I/O 액세스오류에서발생하거나예를 오류 들어파라미터화되는타임오브데이인터럽트에대한 OB가없어서발생합니다. 랙정지 통신오류 이오류는네트워크로연결된 PLC 시스템의하위네트인랙이나분산 I/O 의스테이션이정지될때인식됩니다. 공유데이터를받을때잘못된메시지식별자가 S7-300 에있거나데이터블록이상태정보를저장하기에너무짧습니다. S7-400 의경우예를들어동기화메시지를보낼수없다든가하는추가원인이있습니다. Page 2 Diagnosing Errors
135 오류조직블록처리 오류가날때CPU가정지하지않도록하기위해빈오류조직블록을전송합니다. 오류 OB에원하는반응을프로그램하고필요하다면오류 OB를실행한후시스템함수 SFC 46으로 Stop 상태를요구합니다. 추가오류식별자는프로그램에서평가될수있는오류조직블록의시작정보에저장됩니다. 오류조직블록에대한설명은온라인도움말이나시스템및표준함수설명서에나와있습니다. CPU가지원하지않는오류OB의전송은오류메시지로거부됩니다. Date: 10/18/99 File: PRO2_08e.3 Information and 시작정보처리오류조직블록의사용에대한규칙에주의합니다. 모든조직블록의경우임시변수가선언부에서선언됩니다. 운영체제는시작정보를이변수에저장합니다. 운영체제는블록이호출된이유와같은추가정보를시작정보에저장합니다. 한예로서 OB 81 의시작정보를참고합니다. B#16#21: 중앙랙의한개이상의백억배터리가비어있음 (BATTF) B#16#22: 중앙랙의백업전압이없음 (BAF). B#16#23: 중앙랙에서 24V 공급이정지 / 제거됨 B#16#31: 확장랙의한개이상의백업배터리가비어있음 B#16#32: 확장랙의한개에백업전압이없음 B#16#33: 확장랙에서 24V 공급이정지됨 Page 3 Diagnosing Errors
136 비동기오류 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 // 식별자 : 나가는 ==I R M 81.0 // 보조메모리표시리셋 Date: 10/18/99 File: PRO2_08e.4 Information and 작업정의 설명 배터리고장이나면운영콘솔에오류표시가나타나야합니다. 배터리를교체한후그표시는자동으로꺼져야합니다. 예를들어배터리고장과같은전원공급오류의경우운영체제가오류조직블록을한번호출합니다. 오류가제거된후 OB81 을한번더호출합니다. 프로그램보기에서배터리고장이있었는지를결정하기위해 OB81_FLT_ID 변수를평가합니다. 이경우변수는값 22H 를포함합니다. 비교가완료되고비트메모리 M 81.1 이발생됩니다. 오류표시는배터리가고장날때 ( 들어오는이벤트 ) 시작되어서오류가제거된후 ( 나가는이벤트 ) 해제됩니다. 다음식별자는변수 OB81_EV_CLASS 에있습니다. B#16#39 들어오는이벤트 B#16#38 나가는이벤트보조메모리표시 M 81.0 의설정과리셋은이들변수의평가를통해이루어집니다. 순환프로그램에서보조메모리표시 M81.0 은점멸시계메모리에링크되어출력을할당받을수있습니다. 출력은배터리가비어있거나제거되어있는동안점멸합니다. Page 4 Diagnosing Errors
137 동기오류처리 동기오류는사용자프로그램의한위치에직접할당됩니다. 산술인스트럭션에서의오류 ( 과잉, 적절하지않은 REAL 숫자 ) 상태비트설정 STL 인스트럭션을프로세싱할때의오류 ( 동기오류 ) 동기오류 OB의호출 오류종류보기오류 OB 프로그래밍오류 액세스오류 Called block does not exist in the CPU Direct access on a defective or not existing module OB 121 OB 122 Date: 10/18/99 File: PRO2_08e.5 Information and 동기오류 동기오류마스크 CPU 의운영체제는오류가프로그램프로세싱과즉시연결되어발생하는동기오류를만듭니다. OB121 은프로그래밍오류로호출됩니다. OB122 는액세스오류로호출됩니다. 동기오류 OB 가 CPU 에로드되지않으면 CPU 는동기오류가발생할때 STOP 모드로전환합니다. 동기오류 OB 는오류가발생하는블록과같은우선순위를가집니다. 그때문에인터럽트된블록의레지스터는동기오류 OB 에서액세스되고동기오류 OB 의프로그램도또한 ( 필요하다면변경된내용을가지는 ) 레지스터를인터럽트된블록으로반환할수있습니다. S7 은다음 SFC 를가지며이 SFC 를이용해프로그램이처리되는동안 OB121 시작이벤트를마스크하거나마스크해제할수있습니다. SFC36 "MSK_FLT": 특정오류코드를마스크 SFC37 "DMSK_FLT": SFC36 으로마스크된오류코드의마스크를해제 SFC38 "READ_ERR": 오류레지스터읽음 Page 5 Diagnosing Errors
138 프로그래밍오류 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 프로그래밍오류가발생한시점기록 Date: 10/18/99 File: PRO2_08e.6 Information and 오류코드 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의숫자) Page 6 Diagnosing Errors
139 액세스오류 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 Date: 10/18/99 File: PRO2_08e.7 Information and 오류코드 변수 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: 프로세스이미지출력표 Page 7 Diagnosing Errors
140 동기오류마스크 동기오류 OB의단점 : 프로세스관리및오류처리를위한코드가 2개이상의블록에분산 이후변경또는유지보수에서의문제점 장점 : 프로세스관리및오류처리를위한코드가같은블록에있음 동기오류마스크 : 위험한 인스트럭션사용이전 : SFC 36 MSK_FLT: 동기오류마스크 (OB12x-호출금지 ) 위험한 인스트럭션실행 오류가발생했는지여부평가 SFC 38 READ_ERR: 오류레지스터읽음 OB12x-호출다시허용 : SFC 37 DMSK_FLT: 동기오류마스크해제 Date: 10/18/99 File: PRO2_08e.8 Information and 동기오류 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 에대한호출이다시허용됩니다. Page 8 Diagnosing Errors
141 동기오류의마스크를위한 SFC 36 EN "MSK_FLT" ENO??.? PRGFLT_SET_MASK RET_VAL??.???.? ACCFLT_SET_MASK 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 완전한액세스오류필터 Date: 10/18/99 File: PRO2_08e.9 Information and 동기오류마스크 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 가호출됩니다. Page 9 Diagnosing Errors
142 프로그래밍오류필터의구조 DB가로드되지않음쓰기오류 DB 쓰기오류인스턴스 DB FC가로드되지않음블록번호오류 DB FB가로드되지않음블록번호오류 DI 블록번호오류 FC 블록번호오류 FB 의미없음 BCD 전환오류읽기범위길이오류쓰기범위읽기오류읽기범위오류쓰기범위오류타이머번호오류카운터번호오류잘못된읽기정렬잘못된쓰기정렬 참고 : 출력파라미터 PRGFLT_MASKED 의해당비트는다음과같이설정됩니다. 값 = "1": 오류가마스크됨값 = "0": 오류가마스크되지않음해당비트가값 1 을가지지않음 Date: 10/18/99 File: PRO2_08e.10 Information and 프로그래밍오류필터를이용해동기오류처리를위한시스템함수를제어합니다. 오류필터프로그래밍오류필터에는일어날수있는모든프로그래밍오류에대한비트가있습니다. 오류필터를지정할때마스크, 마스크해제, 또는검사하고싶은동기오류비트를설정합니다. Page 10 Diagnosing Errors
143 액세스오류필터의구조 읽기에서 I/O 액세스오류 쓰기에서 I/O 액세스오류 의미없음 S7-400 전용 : 존재하지않는모듈의읽기또는반복된액세스에서의 I/O 액세스오류 참고 : 출력파라미터 ACCFLT_MASKED 의해당비트는다음과같이설정됩니다. 값 = "1": 오류가마스크됨값 = "0": 오류가마스크되지않음해당비트가값 1 을가지지않음 S7-400 전용 : 존재하지않는모듈에쓰기또는반복된액세스에서의 I/O 액세스오류 Date: 10/18/99 File: PRO2_08e.11 Information and 액세스오류필터 S7-400 CPU 는 2 가지종류의 I/O 액세스오류, 즉존재하지않는모듈에대한액세스와존재하는것으로입력된모듈에대한잘못된액세스를구분합니다. 모듈이작동중에실패하면프로그램이모듈에액세스할때타임아웃 (QVZ) 이발생합니다. 동시에모듈은 존재하지않는 것으로입력되어이후에액세스가일어날때마다 I/O 액세스오류 (PZF) 가표시됩니다. CPU 는또한 I/O 영역을통해직접적으로또는프로세스이미지를통해간접적으로존재하지않는모듈이액세스될때 I/O 액세스오류를표시합니다. Page 11 Diagnosing Errors
144 동기오류의마스크를해제하기위한 SFC 37 EN "DMSK_FLT" ENO??.? PRGFLT_RESET_MASK RET_VAL??.???.? ACCFLT_RESET_MASK 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 남은액세스오류필터 Date: 10/18/99 File: PRO2_08e.12 Information and 동기오류마스크해제 오류필터를통해 SFC37 DMSK_FLT 시스템함수는동기오류 OB의호출을다시허용합니다. 신호상태 1 을이용해오류필터에서 OB가다시호출되는동기오류종류를구분합니다 ( 동기오류의 마스크가해제 됨 ). 오류레지스터에있는지정된마스크해제의해당항목은삭제됩니다. 반환값을이용해 SFC37 은입력파라미터에서지정된마스크해제의경우 1 비트이상에대해 ( 저장된 ) 마스크가존재하지않을때 W#16#0001 을표시합니다. SFC37 은출력파라미터를이용해신호상태가 1 인현재마스크된모든이벤트를전달합니다. 마스크가해제된동기오류가발생하면해당 OB 가다시호출되고이벤트가오류레지스터에입력됩니다. 현재우선순위클래스에대해해당 OB 를다시호출할수있습니다. Page 12 Diagnosing Errors
145 오류레지스터를읽기위한 SFC 38 EN "READ_ERR" 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 오류메시지를가지는액세스오류필터 Date: 10/18/99 File: PRO2_08e.13 Information and 오류레지스터읽기 SFC38 READ_ERR 시스템함수는오류레지스터를읽습니다. 신호상태 1 을이용해오류필터에서항목을읽고싶은동기오류종류를구분합니다. 반환값을이용해 SFC38 은입력파라미터에서지정된선택의경우 1 비트이상에대해 ( 저장된 ) 마스크가존재하지않을때 W#16#0001 를표시합니다. SFC38 은이벤트가발생하고오류레지스터에서이들이벤트를검사하여삭제할때출력파라미터에신호상태가 1 인선택된이벤트를반환합니다. 세트비트는마스크된관련동기오류가한번이상발생했음을의미합니다. 현재우선순위클래스에서발생한동기오류가표시됩니다. Page 13 Diagnosing Errors
146 보기 : 데이터블록테스트 네트워크 1: 마스크, 테스트, 마스크해제 // "DB does not exist" 마스크 CALL SFC 36( PRGFLT_SET_MASK := DW#16# , // 식별자 : DB does not exist ACCFLT_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# , // 식별자 : DB does not exist ACCFLT_QUERRY := DW#16#0, // 액세스오류에대해마스크하지않음 RET_VAL := SFC38Error, PRGFLT_MASKED := Prog38Mask, ACCFLT_MASKED := Zugr38Mask); // 결과평과 L Prog38Mask L DW#16# ==D = DB_NOT_THERE // 보조변수 DB not there 설정 // "DB does not exist 마스크해제 CALL SFC 37( PRGFLT_RESET_MASK := DW#16# , // 식별자 : DB does not exist ACCFLT_RESET_MASK := DW#16#0, // 액세스오류에대해마스크하지않음 RET_VAL := SFC37ERROR, PRGFLT_MASKED := Prog37Mask, ACCFLT_MASKED := Zugr37Mask); Date: 10/18/99 File: PRO2_08e.14 Information and 오류레지스터읽기 SFC38 READ_ERR 시스템함수는오류레지스터를읽습니다. 신호상태 1 을이용해오류필터에서항목을읽고싶은동기오류종류를구분합니다. 반환값을이용해 SFC38 은입력파라미터에서지정된선택의경우 1 비트이상에대해 ( 저장된 ) 마스크가존재하지않을때 W#16#0001 을표시합니다. SFC38 은이벤트가발생하고오류레지스터에서이들이벤트를검사하여삭제할때출력파라미터에신호상태가 1 인선택된이벤트를반환합니다. 세트비트는마스크된관련동기오류가한번이상발생했음을의미합니다. 현재우선순위에서발생한동기오류가표시됩니다. Page 14 Diagnosing Errors
147 연습 8.1: FC43 에서오류처리 Decl. Name Type in Measured values ANY out RET_VAL INT out Sum REAL out Mean value REAL EN FC 43 ENO Cause Error Code Everything O. K. 0 Data type<>real -1 DB does not exist -2 Range length errror -4 Measured values RET_VAL Sum Error Code Mean value Date: 10/18/99 File: PRO2_08e.15 Information and 개요 연습 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 에다운로드하고결과를테스트합니다. 질문? 일어날수있는동기오류중어떤것이고려되지않았습니까? Page 15 Diagnosing Errors
148 텍스트편집기를사용하여프로그램만들기 ASCII STL 프로그램속성 Date: 10/18/99 File: PRO2_09e.1 Information and 목차 페이지 프로젝트구조에서의 S7 프로그램... 2 입력및컴파일개념... 3 입력및컴파일개념... 4 텍스트편집기시작... 5 블록템플릿, 블록및소스파일삽입... 6 일반적인입력규칙및구조... 7 논리블록에대한구문... 8 데이터블록에대한구문... 9 변수선언규칙 블록특성할당 연습 9.1: 소스파일만들기 연습 9.2: 완성된부분세기 Page 1 Program Generation with the Text Editor
149 프로젝트구조에서의 S7 프로그램 프로젝트 S7- 프로그램 스테이션 (S7-300) 모듈 (S7-CPU) 연결표 S7 S7 S7 프로그램 블록 소스 차트컨테이너 S7 블록 : 편집기 : - OBs LAD, STL, FBD - FBs LAD, STL, FBD, S7-Graph - FCs LAD, STL, FBD - DBs DB 편집기 S7 소스 : - STL Source - S7-SCL Source - S7-HiGraph Source - S7-Graph Source - CFC 차트 기호표 Date: 10/18/99 File: PRO2_09e.2 Information and 개요 블록, 소스및차트 사용자프로그램 새 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 2 Program Generation with the Text Editor
150 입력및컴파일개념 ASCII Source File User Program FUNCTION_BLOCK FB21 Source Oriented Editing AUTHOR: Burger FAMILY: plant1 NAME: fb_mot21 VERSION: VAR_INPUT IN1: INT:=123; END_VAR VAR_OUTPUT OUT1: INT:=123; END_VAR Compile Generate Blocks Open Save Incremental Editing VAR_IN_OUT IN_OUT1: INT:=123; END_VAR VAR VAR1: INT:=123; END_VAR.. Symbol Editor 컴파일및만들기에서읽기액세스 Symbol Table 편집에서읽기액세스 Date: 10/18/99 File: PRO2_09e.3 Information and 입력방법 프로그램을만들기위해선택한프로그래밍언어에따라점증적으로또는소스지향적으로프로그램을입력할수있습니다. 점증적입력 (STL, LAD, FBD, S7-Graph, S7-HiGraph, CFC) 모든라인이나요소는입력되면즉시구문오류검사를받습니다. 존재할수있는입력오류가표시되면 ( 빨간색으로표시 ) 입력사항을저장하기전에이를정정해야합니다. 구문정정입력은자동적으로컴파일되어검은색으로표시됩니다. 점증식입력의경우사용된기호는이미기호표에정의되어있어야하며그렇지않으면입력은빨간색으로표시되고해당오류메시지가상태표시줄에표시됩니다. 소스지향적입력 (STL, S7-SCL) 소스지향적입력의경우프로그램이나블록은텍스트파일에서편집되고그후텍스트파일이컴파일되어오류는관련컴파일러에의한컴파일과정에서표시됩니다. 소스지향적입력에서기호는컴파일과정에서만기호표에서정의되어야합니다. 소스파일은내보내서원하는도구로처리한후다시가져올수있는장점이있습니다. 소스지향적입력의 몇개의블록이한개의소스파일에저장될수있습니다 ( 그러나블록은장점호출된블록이호출블록이전에항상놓이는방식으로저장되어야합니다 ). 소스파일은구문오류와함께저장될수있습니다. 다른편집기로소스파일을만들어서 SIMATIC 관리자에서이파일을가져온후블록으로컴파일할수있습니다. 블록보호는 ASCII 모드로만입력될수있습니다. 중첩된블록호출에서의변경 ( 예 : 블록파라미터의추가 ) 은점증식편집기보다 ASCII 편집기 ( 예 : 찾기 / 바꾸기 ) 로보다잘처리할수있습니다. Page 3 Program Generation with the Text Editor
151 텍스트편집기시작, Date: 10/18/99 File: PRO2_09e.4 Information and SIMATIC 관리자에서시작 SIMATIC 관리자에서텍스트편집기를시작합니다. 이를위해우선 SIMATIC 관리자에서 S7-프로그램을가지는프로젝트를설정해야합니다. 하드웨어의존적인프로그램이나하드웨어와는별도의프로그램을만들수있습니다. 텍스트편집기로소스파일만을처리한후이소스파일을블록으로컴파일하고이블록은컨테이너블록에저장됩니다. 소스만들기 소스열기 소스만들기 새로운소스를처음만들려고하면우선 SIMATIC 관리자에서빈파일을만들어야하며이 SIMATIC 관리자를통해텍스트편집기를엽니다. 편집기를연후거기에서추가소스파일을만들수있습니다. SIMATIC 관리자에서소스컨테이너를선택하고메뉴명령 Insert New Object -> STL Source File 을이용해파일을삽입합니다. 새소스파일이미리설정된이름으로프로젝트창오른쪽에나타납니다. 텍스트편집기그자체에서메뉴명령 File ->New 을이용해간단히새파일을간단히만들수있습니다. 다음에나타나는대화상자에서새소스파일의이름을입력합니다. SIMATIC 관리자에서기호를더블클릭하여소스파일을엽니다. 또한메뉴명령 Edit -> Open Object 를사용하거나도구모음의해당아이콘을통해소스파일을열수도있습니다. 이미존재하는블록을추가로처리하기위해다시소스파일로컴파일할수있습니다. 이작업을하려면텍스트편집기에서메뉴명령 File -> Generate Source 을선택합니다. 다음에나타나는대화상자에서소스파일을만들고싶은모든블록을선택할수있습니다. Page 4 Program Generation with the Text Editor
152 텍스트편집기로만들기프로그램 Date: 10/18/99 File: PRO2_09e.5 Information and 텍스트편집기 설정 STL 에서프로그래밍하는대신통합텍스트편집기에서프로그램을만들어서소스파일을만들수있습니다. 차례로블록을입력합니다 ( 한개의소스파일에몇개의블록을입력할수도있음 ). 구문검사는실행되지않습니다. 텍스트편집기에서프로그램을시작하기전에편안하게개인적취향에따라작업을할수있도록설정방법에익숙해져야합니다. 메뉴명령 Options Settings 를통해레지스터대화상자를엽니다. 레지스터 " 편집기 에서소스파일의스크립트 ( 형식및크기 ) 에대한기본설정을할수있습니다. 인스트럭션라인이표시되는색깔은레지스터 LAD/FBD 에서변경됩니다. Page 5 Program Generation with the Text Editor
153 블록템플릿, 블록및소스파일삽입 편집되는소스파일 Insert block template Block template Insert block Block Generate Insert file File Insert file File Date: 10/18/99 File: PRO2_09e.6 Information and 블록템플릿삽입 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 클립판을통해소스파일로삽입될수있습니다. Page 6 Program Generation with the Text Editor
154 일반적인입력규칙및구조 소스파일에서의시퀀스 assigned calls calls UDT Shared DB DB from UDT FB3 Instance DB to FB3 FC5 calls calls assigned OB1 Date: 10/18/99 File: PRO2_09e.7 Information and 입력규칙사용자프로그램을소스파일로만들때다음일반적규칙이적용됩니다. STL 인스트럭션의구문은점증식 STL 편집기에서와같습니다. 블록호출과배열및구조체의선언에서예외가존재합니다. 일반적으로텍스트편집기는대, 소문자를가리지않습니다. 변수명은예외입니다. 예를들어변수명 Motor_on 과 MOTOR_ON 은구별됩니다. 문자열 ( 데이터형 STRING) 을입력할때대, 소문자도고려해야합니다. 모든 STL 인스트럭션과변수선언의끝을세미콜론 (;) 으로구분합니다. 한라인에두개이상의인스트럭션을입력할수있습니다. 설명을시작할때는 2 개의대각선 (//) 을사용하고설명을끝낼때는 RETURN 을사용합니다. 블록시퀀스블록시퀀스의경우소스파일을만들때다음사항에주의해야합니다. 호출된블록은호출블록이전에놓입니다. 이것은다음의미를가집니다. 가장자주사용되며다른블록을호출하는 OB1 이마지막에옵니다. 반면 OB1 에서호출되는블록에의해호출되는블록이호출블록보다이전에와야합니다. 사용자정의데이터형 (UDT) 은이데이터형이사용되는블록이전에옵니다. 할당된사용자정의데이터형 (UDT) 을가지는데이터블록이 UDT 이후에옵니다. 공유데이터블록은자신들을호출한모든블록이전에옵니다. 할당된함수블록을가지는데이터블록이함수블록이후에옵니다. Page 7 Program Generation with the Text Editor
155 논리블록에대한구문 설정키워드보기블록지정 ( 절대또는기호적 ) 으로블록시작 ORGANIZATION_BLOCK OB 1 FUNCTION_ BLOCK FB 6 FUNCTION FC 1 : int 블록타이틀 ( 선택사항 ) TITLE = Block title 블록설명 ( 선택사항 ) //Block comment 블록등록정보 ( 선택사항 ) KNOW_HOW_PROTECT AUTHOR: Müller FAMILY: Motors NAME: Motorone VERSION: 0815 변수선언부 VAR_IN ( 블록형식에따른선언형식 ) VAR_OUT VAR_IN_OUT VAR VAR_TEMP.. END_VAR 각선언형식종결네트워크타이틀과네트워크설명이있는네트워크로구성되는인스트럭션부분 블록엔드 BEGIN NETWORK TITLE=first network //.. NETWORK.. END_ ORGANIZATION _BLOCK END_FUNCTION_BLOCK END_FUNCTION Date: 10/18/99 File: PRO2_09e.8 Information and 규칙논리블록을입력하는경우다음규칙에주의해야합니다. 블록시작에서블록형식과블록지정을위한키워드사이에공백을두어야합니다. 기호블록이름을지정할때이이름은인용부호로구분되어로컬변수명과기호표의이름을구분할수있게합니다. 함수 (FC) 의경우함수형식이또한제공됩니다. 함수형식은기본데이터형이거나복잡한데이터형이될수있으며반환값 (RET_VAL) 의데이터형을결정합니다. 값이반환되지않으면 VOID 가입력됩니다. 네트워크번호의지정은허용되지않습니다. CALL 을이용한블록호출 명령 CALL을이용하여 FB와 FC를호출하는구문은점증식 STL 편집기에서와조금다릅니다. 소스파일에브래킷과함께파라미터를입력합니다. 개별파라미터는콤마로서로구분됩니다. 보기 : CALL FC1 (param1 := I 0.0, param2 := I0.1); 인스트럭션부분의 점증식편집기에서의이후편집에서설명을 1:1로표시할수있도록다음사항에 설명 주의해야합니다. 블록호출 : 소스파일에서형식파라미터에실질파라미터를할당할때형식파라미터의시퀀스가블록의변수선언에있기때문에이시퀀스를유지해야합니다. 파라미터의시퀀스는선택사항이지만파라미터에대한설명은소스를블록으로컴파일하는도중전환될수있습니다. OPN 인스트럭션바로뒤에나오는데이터블록에대한액세스인스트럭션의경우블록으로컴파일하는도중인스트럭션설명부분이상실될수있습니다. 이런문제를방지하려면간결한형태 ( 예 : L DB5.DBW20; //Comm.) 로프로그램하거나 NOP 인스트럭션 ( 예 :OPN DB5; //Comment1 NOP 0; L DBW20; //Comment2) 으로프로그램합니다. Page 8 Program Generation with the Text Editor
156 데이터블록에대한구문 설정블록지정 ( 절대또는기호적 ) 으로블록시작블록타이틀 ( 선택사항 ) 블록설명 ( 선택사항 ) 블록특징 ( 선택사항 ) 선언부 - DB 에의존 : 공유된데이터블록 : 변수선언 ( 선택적으로시작값지정 ) UDT의 DB: UDT 지정 ( 절대또는기호적 ) 인스턴스 DB FB 지정 ( 절대또는기호적 ) 현재값을가지는인스트럭션부분 블록엔드 키워드보기 DATA_BLOCK DB 26 TITLE = Block title //Block comment KNOW_HOW_PROTECT AUTHOR: Müller FAMILY: Motors NAME: Motorone VERSION: 0815 STRUCT.... END_STRUCT UDT 16 FB 20 BEGIN.... END_ DATA _BLOCK Date: 10/18/99 File: PRO2_09e.9 Information and 규칙데이터블록을입력할때다음규칙에주의해야합니다. DB 0 이미리설정됩니다. 따라서이이름으로 DB 를만들수없습니다. 선택사항으로모든또는일부변수에대한현재값을지정할수있습니다. 현재값을할당하지않는변수에대해가능하다면초기값이할당되며, 그렇지않은경우데이터형에대한기본값이할당됩니다. 현재값에대한할당섹션 ( BEGIN 과 END_DATA_BLOCK 사이 ) 에서인스트럭션설명은블록으로컴파일된후점증식편집기에표시되지않습니다. 따라서선언부에서데이터블록에대한설명을쓰기만합니다. Page 9 Program Generation with the Text Editor
157 변수선언규칙 Date: 10/18/99 File: PRO2_09e.10 Information and 변수종류논리블록의경우변수의선언종류는자체라인에있는키워드로식별됩니다. 블록종류에따라오직특정선언종류만이허용됩니다. 선언종류 키워드 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 입력규칙변수선언을입력할때다음사항에주의해야합니다. 변수는선언종류의시퀀스에서선언되어야합니다. 따라서한종류의모든변수는함께있습니다. 키워드는각경우자체라인에있거나공백으로구분되어있습니다. 변수명은인스트럭션시작부분에있으며문자로시작해야합니다. 예약된키워드에는대응할수없습니다 ( 부록 C 참고 ). 데이터형은변수명다음에콜론으로구분되어제공됩니다. 기본또는복잡한데이터형과사용자정의데이터형이허용됩니다. 필드 ( 배열 ) 는키워드 ARRAY 로입력됩니다. 또한꺾쇠괄호로묶은차원이나데이터형을지정합니다 ( 보기참고 ) 구조체의경우변수선언은키워드 STRUCT 와 END_STRUCT 사이에옵니다. 모든변수선언은세미콜론으로끝납니다. 설명은 2 개의대각선으로선언부와구분됩니다. Page 10 Program Generation with the Text Editor
158 블록특성할당 속성 논리블록 데이터블록 UDT (OB, FB, FC) KNOW_HOW_PROTECT Yes Yes No AUTHOR Yes Yes No FAMILY Yes Yes No NAME Yes Yes No VERSION Yes Yes No UNLINKED No Yes No READ_ONLY No Yes No Date: 10/18/99 File: PRO2_09e.11 Information and 시스템속성블록등록정보블록보호쓰기보호 예를들어프로세스진단이나제어시스템설정에대한시스템속성을블록에할당할수있습니다. 블록에대한시스템속성은둥근괄호안에놓이며블록시작, 블록이름및블록설명이후에옵니다. 블록이름, 패밀리, 버전및저자를키워드를이용해서지정할수있습니다. 다음방법을이용해서이작업을할수있습니다. 블록등록정보는변수선언부이전에지정됩니다. 라인의끝에세미콜론이없습니다. (!) 키워드 KNOW_HOW_PROTECT를지정함으로써논리블록및데이터블록에대한블록보호를설정할수있습니다. 점증식 STL 편집기에서컴파일된블록을볼때블록의인스트럭션부분을살펴볼수없습니다. 입력, 출력및입 / 출력파라미터만이블록의변수선언에표시됩니다. 내부변수 VAR과 VAR_TEMP은숨겨져있습니다. 컴파일된블록은소스파일에서컴파일될수있지만인스트럭션부분이없는블록으로만컴파일됩니다. 키워드 KNOW_HOW_PROTECT는모든다른블록속성앞에입력되어야합니다. 소스파일에서데이터블록에대한쓰기보호를설정하여거기에서저장된데이터값이프로그램실행중에덮어쓰기될수없도록할수있습니다. 이런경우키워드 READ_ONLY 를입력합니다. 이키워드는선언바로직전에자체라인에있어야합니다. " 링크되지않음 " 속성 링크되지않음 은데이터블록에서발생할수있습니다. 이속성은 DB 가로드메모리에서 CPU 의작업메모리로로드되지않음을나타냅니다. Page 11 Program Generation with the Text Editor
159 연습 9.1: 소스파일만들기 Transport FUNCTION_BLOCK "Station" TITLE = VERSION : 0.1 OB1 Station_1 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 Station_2 Station_3 FB1 FB2 DB10 Data for Station_1 Data for Station_2 Data for Station_3 Data for Transport VAR_INPUT Initial : BOOL ; Proxy_Switch : BOOL ; Acknowledge : BOOL ; Clock_Bit : BOOL ; END_VAR VAR_OUTPUT LED : BOOL ; Transp_req : BOOL ; END_VAR VAR_IN_OUT Conv_busy : BOOL ; END_VAR VAR State : STRUCT Busy : BOOL ; Completed : BOOL ; Waiting : BOOL ; END_STRUCT ; Aux_1 : BOOL ; Aux_2 : BOOL ; END_VAR BEGIN NETWORK TITLE =Initialization // Busy is set with the // initialization U #Initial;... Instance DB of FB10 소스파일 : " 어셈블리라인 " Date: 10/18/99 File: PRO2_09e.12 Information and 개요 연습목적 절차 제일먼저소스파일이연습 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 12 Program Generation with the Text Editor
160 연습 9.2: 완성된부분세기 Transport Final assembly Station_1 Station_2 Station_3 Date: 10/18/99 File: PRO2_09e.13 Information and 연습목적 함수블록 "Transport" 에서최종어셈블리로들어오는완성부품을세는카운터를통합합니다. 카운터의등록정보는다음기능을포함해야합니다. IEC 을이용하여카운터가상승카운터 (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 13 Program Generation with the Text Editor
161 기본및확장 S7 통신 목차 페이지 SIMATIC의하위네트... 2 SIMATIC에대한통신서비스 S7-300/400에대한S7-통신서비스... 4 S7-CPU에대한통신량프레임워크 SFC 통신 : 개요... 6 SFC 통신 : 블록개요 SFC 통신 : X_SEND (SFC 67) 블록 SFC 통신 : X_RCV (SFC 66) 블록... 9 SFB 통신 : 개요 SFB 통신 : 블록개요 단방향연결을통한 SFB 통신 양방향연결을통한 SFB 통신 NETPRO로네트워크설정 S7 단일시스템연결구성 연결등록정보구축 설정데이터컴파일및다운로드 OB100에서 SFB 초기화 SFB 통신 : STOP (SFB20) 블록 SFB 통신 : START (SFB19) 블록 SFB 통신 : CONTROL (SFC 62) 블록 SFB 통신 : GET (SFB 14) 블록 SFB 통신 : PUT (SFB 15) 블록 SFB 통신 : USEND (SFB 8) 블록 SFB 통신 : URCV (SFB 9) 블록 SFB 통신 : BSEND (SFB 12) 블록 SFB 통신 : BRCV (SFB 13) 블록 연습 10.1: SFB START/STOP를이용한통신 연습 10.2: SFB GET/PUT을이용한통신 Page 1 Basic and Expanded S7 Communication
162 PG 720 SIMATIC 의하위네트 OPs PCs, OS PGs MPI Network Industrial Ethernet PROFIBUS Point to Point Cell Level SIMATIC S5 S7-400 M7-400 S SINUMERIK, RCM -TI 505 -Other PLC PROFIBUS-DP DP/AS-I Link Field level ET 200C ASI (Actuator Sensor Interface) ET 200B/L AS-I Power Supply AS-I Submodule AS-I- Level Field device with AS-I ASIC Sensors and Actuators 개요 MPI 산업용이더넷 PROFIBUS SIEMENS 는 ( 시간이중요하지않은 ) 셀영역또는 ( 시간이중요한 ) 필드수준에서의통신작업을위한여러가지요구사항에따라다음하위네트를제공합니다. MPI 하위네트는셀영역에서의작업을위해설계되었습니다. MPI 는 SIMATIC S7, M7, C7 의다지점가능인터페이스입니다. 이것은 PG 인터페이스로서, 즉 PG ( 배치및테스트 ) 와 OP ( 작동자인터페이스 ) 의연결을위해설계되었습니다. 이외에도 MPI 하위네트는또한몇개의 CPU 를네트워크로연결하기위해사용될수있습니다. 산업용이더넷은 SIMATIC 의제조업체와는별도의개방통신시스템에서관리수준과셀수준에대한네트워크입니다. 산업용이더넷은보다큰양의데이터를시간에관계없이전송하기위해설계되었으며게이트웨이를통해네트워크를넘어서어떤지점에연결할수있는가능성을제공합니다. PROFIBUS 는 SIMATIC 의제조업체와는별도의개방통신시스템에서셀과필드영역에대한네트워크입니다. 여기에는 2 가지버전이있으며각각은고유의특징을가집니다. 동등한지적노드사이의시간이중요하지않은통신을위한 PROFIBUS 로서셀영역에존재 지적마스터와필드장치사이의시간이중요한순환데이터교환을위한필드버스 PROFIBUS DP PtP- 연결 AS- 인터페이스. 지점간연결은주로 2개의스테이션사이의시간이중요하지않은데이터교환이나 OP, 프린터, 바코드판독기, 자기카드판독기, 등꽈같은장치를스테이션에연결하기위해사용됩니다. 액츄에이터센서인터페이스는 PLC 시스템에서가장낮은공정수준에대한하위네트입니다. 이것을이요하여이진센서와액츄에이터가네트워크로연결될수있습니다. Page 2 Basic and Expanded S7 Communication
163 SIMATIC 에대한통신서비스 공유데이터 SIMATIC-S7 통신 S7-Basic Comm. PG 및 HMI 기능 S7- 확장통신 S7- 기본통신, 곧출시 통신설정표준 FDL ISO-Transport ISO-on-TCP 개방된통신 FMS DP MAP 3.0 MPI Profibus Ethernet 서비스통신서비스는데이터교환, 제어장치, 감시장치및로딩프로그램과같이정의된퍼포먼스특징을가지는통신기능을나타냅니다. 전역데이터작은양의데이터의순환데이터교환을위한 GD ( 네트워크의전역데이터 ) ( 추가적인이벤트드리븐 S7-400에서 ). S7 통신이러한통신유틸리티는단일시스템 연결에서의 S7 PLC, PG/PC 및 OP/TD에대해최적화되어있습니다. PG 기능 ; PG는구성된연결없이연결될수있습니다. HMI 기능 ; OP는구성된연결없이연결될수있습니다. 기본통신은 CPU의운영체제에포함되어있는 SFC를이용해수행될수있습니다. (SFC 통신은구성된연결없이실행됩니다.) 확장통신은 SFB를통해이루어집니다 (S7-400 클라이언트 / 서버, S7-300 서버전용 ). 확장통신은구성된연결을통해실행됩니다. FDL (SDA) 과 S5 사이에서평균량의데이터의안전한데이터전송을위해사용됩니다. 이것은 Profibus에대한레이어2 필드버스데이터링크 (FDL) 에대응합니다. ISO 전송이것은 SIMATIC S5와 S7 사이의안전한데이터전송을위해사용됩니다. 또한평균량의데이터 (240 바이트까지 ) 를전송하기위해사용됩니다. ISO-on-TCP 이것은 과 PC, 또는 Siemens 이외의시스템사이에서 TCP/IP 네트워크를통해평균량의데이터를안전하게전송하기위해사용됩니다. FDL, ISO 및 ISO-on-TCP 유틸리티는함수호출 AG-SEND/AG-RECEIVE을통해사용할수있습니다. FMS 필드버스메시지사양 (FMS) 은필드장치는물론지적파트너사이의객체지향적통신을가능하게합니다. FMS ( 변수, 도메인서비스, 등 ) 가지원하는유틸리티는 EN Vol. 2에명시되어있습니다. MAP 원래미국자동차회사인 General Motors가개발한이프로토콜은 PLC 시스템간의객체지향적통신을위한것입니다 (MAP= 제조업체자동화프로토콜 ). DP DP ( 분산 I/O) 는필드장치 (EN Vol. 3) 에대한지적제어단위의시간이중요한데이터지향적통신을위해특별히최적화되어있습니다. Page 3 Basic and Expanded S7 Communication
164 PG 720 S7-300/400 에대한 S7- 통신서비스 공유공유데이터데이터 CPU CPU 의운영운영체제체제 MPI 또는 K-Bus 를통한순환또는프로그램제어 CPU CPU 의운영운영체제체제 PG PG 및 HMI HMI 기능기능 CPU CPU 의운영운영체제체제 MPI, K-Bus, Profibus, 산업용이더넷을통해운영체제로제어 구성된구성된연결이연결이없는없는기본기본통신통신 SFC SFC MPI 또는 K-Bus 를통한프로그램제어 SFC SFC 구성된구성된연결을연결을통한통한확장확장통신통신 SFB SFB MPI, K-Bus, Profibus 또는산업용이더넷을통한프로그램제어 SFB SFB 공유데이터 PG 및 HMI 기능 이통신은데이터가 MPI 를통해프로그램없이 CPU 사이에순환적으로교환될수있게합니다. 데이터교환은주기제어지점에서이루어지며함께프로세스이미지를갱신합니다. 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 와같은제어기능을포함합니다. 통신은구성된연결 ( 연결표 ) 을통해이루어집니다. 이러한연결은스테이션의파워업중에구성되며영구적으로존재합니다. Page 4 Basic and Expanded S7 Communication
165 S7-CPU 에대한통신량프레임워크 S7 모듈 연결수 (S7 단일시스템 ) 시스템함수 간략한설명 CPU 313, 314, 315 CPU412 CPU413 CPU414 CPU416 PROFIBUS CPs ETHERNET CPs max. 4 for SFB s max. 8 (4 for CPU 313) for SFC s max. 8 for SFB s max. 6 for SFC s max. 16 for SFB s max. 14 for SFC s max. 32 for SFB s max. 30 for SFC s max. 64 for SFB s max. 62 for SFC s max. 32 (S7-400) max. 48 (S7-400) SFC blocks GET/PUT/START/STOP 은운영체제에서통합됨 SFC blocks SFB blocks 상동 상동 상동 통신릴레이 통신릴레이 all SFC s=76 Bytes user data GET = 222 Bytes user data PUT = 212 Bytes user data STOP/START = Server utilities all SFC s=76 Bytes user data GET = 462 Bytes user data PUT = 452 Bytes user data USEND/URCV= 454 Bytes user data BSEND/BRCV=64Kbytes user data 상동 상동 상동 개요 PG/OP CPU 통신 CP를통한통신 FM 통신 참여하는스테이션에서모든연결에대해엔드위치에대한연결리소스가필요합니다. 연결리소스의수는 CPU/CP 에따라틀립니다. 한스테이션의모든연결리소스가사용되고있다면새로운연결을만들수없습니다. 모든 PG 또는 OP/TD 연결은 /M7-CPU 에서연결리소스를필요로합니다. 이를위해기본값으로모든 S7/M7-CPU 에서각 PG 와 OP/TS 연결을위한연결리소스가예약됩니다. 모든추가 PG/OP 연결을위해사용할수있는연결리소스가필요합니다. S7/M7-300/400-CPU 가 SFC 와 SFB 를이용해통합 MPI-/PROFIBUS-DP 인터페이스를통해파트너와통신을한다면각각에대한연결리소스는 S7 연결마다사용됩니다. 외부 CP 인터페이스를통한 S7 통신을이용해각각에대한연결리소스는 CPU 와 CP 에서 S7 연결마다사용됩니다. S7 단일시스템연결이 PROFIBUS CP 또는산업용이더넷 CP 를통해구성되면 CP 에대한추가구성정보는필요하지않습니다. CP 는 S7 통신릴레이를위해유틸리티를사용할수있게합니다. FM 이 S7/M7-CPU 의통합 MPI-/PROFIBUS-DP 인터페이스를통해파트너와통신을한다면한개의연결리소스는 FM 에서, 2 개의연결리소스는 CPU 에서사용됩니다. 같은스테이션에서모든추가 CPU ( 복수프로세서작동 ) 에대해서도이것은마찬가지로적용되며, 따라서추가 CPU 는 K-Bus 를통해 MPI 하위네트와간접적으로연결됩니다. Page 5 Basic and Expanded S7 Communication
166 SFC 통신 : 개요 MPI 하위네트를통한데이터교환또는단일스테이션에서의데이터교환 SFB 통신에비해연결구성이필요하지않음 파트너와의연결은동적으로구성되고연결이끊김 76 바이트까지의사용자데이터 모든 S7-300/400 CPU 에서사용될수있음 PROFIBUS-DP (X_GET, X_PUT) 를통해변수를 S7-200 에서읽거나쓸수있음 통신파트너도또다른 S7 프로젝트에있을수있음 개요 연결 사용자데이터크기 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 바이트입니다. Page 6 Basic and Expanded S7 Communication
167 SFC 통신 : 블록개요 SFC NAME Short Description SFC 65 X_SEND Send block for sending data to the X_RCV (Client) block SFC 66 X_RCV Receive block for receiving data from 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 own station 개요 어드레싱 데이터일관성 통신 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 따라서예를들어데이터형이바이트, 워드또는더블워드인배열은최대크기까지일관되게전송될수있습니다. Page 7 Basic and Expanded S7 Communication
168 SFC 통신 : X_SEND (SFC 67) 블록 STL 표시 파라미터할당에대한보기 CALL SFC 65 REQ:= M4.0// 트리거 CONT:= FALSE//Disc. 연결 DEST_ID:= W#16#4/MPI_addr. REQ_ID:= DW#16#1// 식별자 SD:= P#M20.0 BYTE 10 RET_VAL:= MW40// 오류코드 BUSY:= M 4.1// 액티브식별자 LAD/FBD 표시 SFC65 (X_SEND) REQ RET_VAL CONT BUSY DEST_ID REQ_ID SD 설명 SFC 65 "X_SEND 를이용하여실제 S7- 스테이션외부에있는통신파트너에게데이터를보냅니다. 통신파트너에서데이터수신은 SFC 66 "X_RCV 를통해이루어집니다. 보낸데이터를입력파라미터 REQ_ID 로구분할수있습니다. 이작업식별자도또한전송됩니다. 통신파트너에서이것을평가하여데이터의출처를결정할수있습니다. 보내기함수는 REQ=1 인 SFC 를호출한후발생합니다. 파라미터 SD 를통해정의된 ( 송신 CPU 의 ) 송신영역이파라미터 RD 를통해정의된 ( 통신파트너의 ) 수신영역보다작거나같도록해야합니다. SFC 65 X_SEND 에대한파라미터 파라미터종류형식의미 REQ INPUT BOOL (I,Q,M,D,L const.) CONT INPUT W ORD (I,Q,M,D,L Const.) DEST_ID INPUT W ORD (I,Q,M,D,L const.) R EQ _ID IN PUT D W O R D (I,Q,M,D,L, const.) SD INPUT ANY (I,Q,M,D ) RET_VAL OUTPUT INT (I,Q,M,D,L) BUSY OUTPUT BOOL (I,Q,M,D ) 신호 1 에대한전송활성화 CONT=0 연결끊기 CONT=1 연결지속 파트너의 MPI 어드레스 파트너에서데이터를구분하는요청 ID 송신영역참조 오류코드를가지는반환값 BUSY=1 보내기함수작동중 BUSY=0 보내기함수완료 Page 8 Basic and Expanded S7 Communication
169 SFC 통신 : X_RCV (SFC 66) 블록 STL 표시 파라미터할당에대한보기 CALL SFC 66 EN_DT:= TRUE// 트리거데이터전송 RET_VAL:= MW 50// 오류코드 REQ_ID:= MD52// 요청 ID NDA := M40.0// 데이터존재 RD:= P#M20.0 BYTE 10 LAD/FBD 표시 SFC66 (X_RSV) EN_DT RET_VAL REQ_ID 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 BOOL (I,Q,M,D,L, constant) RET_VAL OUTPUT INT (I,Q,M,D,L) EN_DT=0 은데이터블록이있는지를확인 EN_DT=1 은데이터블록을메모리에복사 오류코드를가지는반환값 REQ_ID OUTPUT DWORD (I,Q,M,D,L,) NDA OUTPUT BOOL (I,Q,M,D,L) RD OUTPUT ANY (I,Q,M,D) 데이터가대기열의첫번째위치에있는 X_SEND SFC 66 에대한요청식별자, NDA=0 데이터블록이없음 NDA=1 한개이상의데이터블록이있음 (EN_DT=1 일경우 ) 또는데이터블록이메모리에복사됨 (EN_DT=1) 수신영역참조 Page 9 Basic and Expanded S7 Communication
170 SFB 통신 : 개요 MPI, K-Bus, Profibus, 산업용이더넷을통한데이터교환 연결표를통한연결구성 완전재시작중에연결이구성되며영구적으로 (STOP 모드에서도 ) 존재 KByte 까지의사용자데이터크기 또한파트너를제어 ( 중지, 시작 ) 하기위한통신서비스 모든 S7-400-CPU 에대해 SFB 존재 S7-300 (GET/PUT) 은또한데이터를읽고쓸수있음 한개의연결을통해여러탱크를처리할수있음 개요 SFB 블록은모든 S7-400-CPU 에서사용할수있으며 S7/M7-300/400-CPU 와데이터를교환하기위해사용됩니다. 이들블록을이용해 64 Kbyte 까지의데이터를여러하위네트 (MPI, Profibus, 산업용이더넷 ) 에의해전송할수있습니다. 연결통신 SFB 는구성된 S7 연결을통해보호된데이터전송을가능하게합니다. 이들연결의구성은 SIMATIC 관리자에서투명하게링크되어있는 Verpro ( 구성된연결 ) 을이용해서이루어집니다. 구성된연결은스테이션의완전재시작중에구성되며스테이션이 STOP 모드가될때에도영구적으로존재합니다. 재시작중에연결은다시구성되지않습니다. 통신은 S7- 프로젝트의스테이션사이에서배타적으로이루어질수있습니다. 통신파트너는공통 MPI-, PROFIBUS- 또는산업용이더넷하위네트에서연결되어야합니다. SFB 에서사용자프로그램과의 S7 통신을위한인터페이스는 SFB 형식의특별 S7 블록을형성합니다. SFB 는 ISO/IEC 표준에맞추며통일된인터페이스를제공합니다. 통신을위한연결이구성되어야합니다. 연결수는노드할당과전송매체의등록번호 (ID) 를참조합니다. 이러한등록번호는 SFB 호출중에블록파라미터 ID 로서전달됩니다. 사용자데이터사용자데이터크기는사용된블록과통신파트너에따라달라집니다. S7-300 에대해 PUT/GET 160 바이트및 S7-400/M7 에대해 400 바이트 440 바이트까지 USEND/UREC 64 Kbyte 까지 BSEND/BRCV Page 10 Basic and Expanded S7 Communication
171 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의내부상태스캔 SFB: S7-400 SFB: S7-300 S7 통신을위한 SFB 는 CPU 의운영체제에서시스템함수블록 (SFB) 으로통합됩니다. 위의슬라이드에서언급된모든 SFB 는운영체제의 S7-400 CPU 에서사용할수있습니다. 사용자프로그램으로의통합을위해사용자는표준라이브러리 "STDLIB30 의블록헤더를 Builtin S7 프로그램컨테이너에놓아둘수있습니다. 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 ( 스캔함수 ) Page 11 Basic and Expanded S7 Communication
172 단방향연결을통한 SFB 통신 S CPU 1 PROFIBUS CP Industrial Ethernet CP S7-300/400 CPU 2 PROFIBUS CP Industrial Ethernet CP MPI 1 PROFIBUS Industrial Ethernet S7 단일시스템연결 S7 단일시스템연결 S7 단일시스템연결 1 SFBs (GET/PUT STOP/START) CPU 의운영체제 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 로간주됩니다. Page 12 Basic and Expanded S7 Communication
173 양방향연결을통한 SFB 통신 S7-400 PROFIBUS Industrial Ethernet S7-400 PROFIBUS Industrial Ethernet CPU 1 CP CP CPU 2 CP CP MPI-NETWORK 2 2 S7 단일시스템연결 PROFIBUS-NETWORK S7 단일시스템연결 Industrial Ethernet-NETWORK S7 단일시스템연결 2 2 CFBs - USEND - URDV - BSEND - BRCV CFBs - URCV - USEND - BRCV - BSEND 양방향 양방향통신서비스가사용되면양방향단일시스템연결이구성되어야 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 통신파트너사이에구성되어야합니다. Page 13 Basic and Expanded S7 Communication
174 NETPRO 로네트워크설정 HW- 스테이션삽입 전역데이터정의 소개호출 HW-스테이션삽입 HW 구성전역데이터 네트워크 (MPI, Profibus, 산업용이더넷 ) 의그래픽구성은 NETPRO 도구를이용해실행될수있습니다. 그래픽구성의장점으로는명확성, 문서화및하드웨어구성과같은참여도구의손쉬운호출을들수있습니다. 네트워크기호, 예를들어 SIMATIC 관리자의 MPI 를더블클릭하여도구를호출합니다. 카탈로그에서하위네트, 스테이션과같이드래그앤드롭마다삽입할수있는필요한구성요소를볼수있습니다. 스테이션을삽입한후 CPU 모듈을더블클릭하여 Hardware Configuration 도구에들어갑니다. 여기에서 MPI 어드레스와하위네트에대한연결을선택합니다. 연결을구성하기전에모든참여스테이션이해당하위네트와링크되어야합니다. 오른쪽마우스버튼을이용하여예를들어 MPI 와같은하위네트를클릭하고메뉴항목 Define Global Data 를선택합니다. 전역데이터표가나타납니다. Page 14 Basic and Expanded S7 Communication
175 S7 단일시스템연결구성 연결삽입 선택 리모트스테이션 리모트 CPU 개요 연결만들기 필요한통신연결의구축은 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 를필요로합니다. Page 15 Basic and Expanded S7 Communication
176 연결등록정보구축 개요 연결파트너와연결종류를구축하는외에도연결종류에따라추가등록정보를설정할수있습니다. 객체등록정보통신연결의특별객체등록정보를설정하려면다음절차를따릅니다. 설정 1. 객체등록정보를설정하고자하는연결을표시합니다. 2. 메뉴명령 Edit -> Object Properties 를선택합니다. "Object Properties 대화상자가열립니다. 이대화상자에서다음등록정보를설정할수있습니다. 액티브연결 2개의노드중완전재시작으로연결구성을맡게될노드를결정할수 설정 있습니다. 보내기작동 로컬노드가활성화되면이로컬노드는작동모드메시지 (STOP,START, 상태메시지 HOLD,...) 를파트너또는 SFB 23 ( 파트너 CPU의 USTATUS) 에게보냅니다. 로컬 ID 연결이되는모듈의로컬 ID ( 로컬파트너 ) 가표시됩니다. 로컬 ID 를변경할수있습니다. 만약이미통신블록을프로그램하고주어진로컬 ID 를그연결에사용하고자한다면로컬 ID 변경이필요합니다. 네트워크연결이필드는데이터교환이실행되는경로를통해표시됩니다. 몇개의통신경로 ( 하위네트 ) 가 2 개의노드사이에존재한다면데이터교환이완료되는통신경로를통해선택할수있습니다. 참고연결의그래픽구성은또한 NetPro 패키지를이용하여이루어질수있습니다. Page 16 Basic and Expanded S7 Communication
177 설정데이터컴파일및다운로드 저장및컴파일 다운로드 컴파일및저장 구성데이터다운로드 연결데이터를개별연결파트너에다운로드하기전에 (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 17 Basic and Expanded S7 Communication
178 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 18 Basic and Expanded S7 Communication
179 SFB 통신 : STOP (SFB20) 블록 STL 표시 파라미터할당에대한보기 CALL STOP, I_STOP( 인스턴스 DB) REQ:= I 0.0 //Start 에지 ID:= W#16#1 // 연결번호 PI_NAME:= P#M100.0 Byte 9 IO_STATE:= DONE:= #DONE_FLAG_20 ERROR:= #ERROR_FLAG_20 STATUS:= #STATUS_WORD_20 LAD/FBD Representation DB20 ( 인스턴스 DB) SFB20(STOP) EN ENO REQ DONE ID ERROR PI_NAME STATUS IO_STATE * 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 19 Basic and Expanded S7 Communication
180 SFB 통신 : START (SFB19) 블록 STL 표시 파라미터할당에대한보기 CALL START, I_START ( 인스턴스 DB) REQ:=I 0.1 //Start 에지 ID:=W#16#1 // 연결번호 PI_NAME:=P#M100.0 Byte 9 //* ARG:= IO_STATE:= DONE:= #DONE_FLAG_19 ERROR:= #ERROR_FLAG_19 STATUS:= #STATUS_WORD_19 LAD/FBD 표시 DB19 ( 인스턴스 DB) SFB19 (START) EN ENO REQ DONE ID ERROR PI_NAME STATUS ARG IO_STATE * '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 20 Basic and Expanded S7 Communication
181 SFB 통신 : CONTROL (SFC 62) 블록 STL 표시 파라미터할당에대한보기 CALL "CONTROL" EN_R:= I 0. 2 // 시작 I_DB:= W#16#F // 인스턴스 DB-NR OFFSET:= W#16#0 RET_VAL:= MW4 // 오류 ERROR:=Q0.4 // 오류-Bool STATUS:= MW 4 // 상태표시 I_TYP:= MB 52 //SFB-TYPE I_STATE:= MB 53 //SFB 상태 I_CONN:= M 54.0 // 연결상태 I_STATUS:= MW102 //SFB의상태 LAD 표시 SFC 62 (CONTROL) EN ENO EN_R RET_VAL I_DB ERROR OFFSET STATUS IO_STATE I_TYP I_STATE I_CONN I_STATUS 개요 SFC62 "CONTROL 를이용해로컬통신 SFB 인스턴스에속하는연결의상태를질의할수있습니다. 제어입력 EN_R 에서값이 1 인시스템함수를호출한후 I_DB 로선택된통신 SFB 에속하는연결의현재상태가질의됩니다. 파라미터종류형식의미 EN_R INPUT BOOL 함수를사용할수있게하는제어 파라미터 I_DB INPUT BLOCK_DB (I,Q;M,D,L, constant) OFFSET INPUT WORD (I,Q;M,D,L, constant) RET_VAL OUTPUT INT (I,Q;M,D,L) ERROR OUTPUT BOOL (I,Q;M,D,L) STATUS OUTPUT WORD (I,Q;M,D,L) I_TYP OUTPUT BYTE (I,Q;M,D,L) I_STATE OUTPUT BYTE (I,Q;M,D,L) I_CONN OUTPUT BOOL (I,Q;M,D,L) I_STATUS OUTPUT WORD (I,Q;M,D,L) Page 21 인스턴스 DB 번호 복수인스턴스에대한오프셋, 인스턴스 DB 의첫번째바이트번호 (0 인복수인스턴스가없는경우 ) SFC62 에대한 8000H 오류 SF C62 의실행중 RLO = 1 오류 SFC 62 에대한오류표시 CFB 형식식별자 CFB 의현재상태그래프식별자 해당연결의상태 0 = 연결취소 1 = 연결존재 오류또는 SFB 의상태 Basic and Expanded S7 Communication
182 SFB 통신 : GET (SFB 14) 블록 STL 표시 파라미터할당에대한보기 CALL GET, I_GET ( 인스턴스 DB) REQ:=I 0.2 ID:=W#16#1 // 연결번호 NDR:=#NDR_FLAG ERROR:= #ERROR_FLAG STATUS:= #STATUS_WORD ADDR_1:=P#I 0.0 BYTE 1 ADDR_2:=P#I 4.0 BYTE 2 ADDR_3:= ADDR_4:= RD_1:=P#Q 0.0 BYTE 1 RD_2:=P#Q 4.0 BYTE 2 RD_3 RD_4 LAD 표시 DB14 ( 인스턴스 DB) SFB14 (GET) EN ENO REQ NDR ID ERROR ADDR_1 STATUS ADDR_2 ADDR_3 ADDR_4 RD_1 RD_2 RD_3 RD_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... IN_OUT ANY (I,Q,M,D) 파트너 CPU 에서읽을영역에대한포인터 ADDR_4 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) ERROR OUTPUT BOOL (I,Q,M,D,L) STATUS OUTPUT WORD (I,Q,M,D,L) 양의에지 ( 펄스 ) 는사용자프로그램에게이용할수있는새수신데이터가있음을표시함. 오류없이파트너 CPU 에게서전송된데이터 양의에지는오류를표시함 ( 펄스 ) 상세한오류정보나경고를포함 ( 십진수 ) Page 22 Basic and Expanded S7 Communication
183 SFB 통신 : PUT (SFB 15) 블록 STL 표시 파라미터할당에대한보기 CALL PUT, I_PUT( 인스턴스 DB) REQ:=I 0.3 ID:=W#16#1 // 연결번호 DONE:= #DONE_FLAG ERROR:= #ERROR_FLAG STATUS:= #STATUS_FLAG ADDR_1:=P#Q 12.0 WORD 1 ADDR_2:= ADDR_3:= ADDR_4:= SD_1:=P#I 2.0 WORD 1 SD_2:= SD_3:= SD_4:= LAD 표시 DB15 ( 인스턴스 DB) SFB15 (PUT) EN ENO REQ DONE ID ERROR ADDR_1 STATUS ADDR_2 ADDR_3 ADDR_4 SD_1 SD_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... IN_OUT ANY (I,Q,M,D) 파트너 CPU 에서송신 CPU 가보낸데이터가쓰여질데이터영역에대한포인터 ADDR_4 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 23 Basic and Expanded S7 Communication
184 SFB 통신 : USEND (SFB 8) 블록 STL 표시 파라미터할당에대한보기 CALL USEND, I_USEND( 인스턴스 DB) REQ:= I 0.4 ID:=W#16#3 // 연결번호 R_ID:=DW#16#B1 // 블록페어 DONE:= #DONE_FLAG ERROR:= #ERROR_FLAG STATUS:= #STATUS_WORD SD_1 :=P#DB3.DBX0.0 BYTE 100 SD_2 :=P#DB3.DBX100.0 BYTE 100 SD_3 :=P#DB3.DBX200.0 BYTE 100 SD_4 :=P#DB3.DBX300.0 BYTE 154 LAD 표시 DB 8 ( 인스턴스 DB) SFB 8 (USEND) EN ENO REQ DONE ID ERROR R_ID STATUS SD_1 SD_2 SD_3 SD_4 개요 SFB8 (USEND) 은 "URCV 형식의리모트파트너 SFB 에데이터를보냅니다 ( 파라미터 R_ID 는두개의 SFB 모두에대해동일해야합니다 ). 데이터는제어입력 REQ 에서의상승에지에따라전송됩니다. 함수는파트너 SFB 와의조정없이실행됩니다. 파라미터 SD_1 에서 SD_4 가전송되는데이터를참조하지만 4 개의보내기파라미터가모두사용될필요는없습니다. 파라미터종류형식의미 REQ INPUT BOOL (I,Q,M,D,L constant) 상승에지를이용해전송활성화 ID INPUT WORD (I,Q,M,D,L constant) S7 단일시스템연결을위한연결번호 ( 연결표참고 ) R_ID INPUT WORD (I,Q,M,D,L constant) 파라미터는 2 개의 CFB (USEND 와 URCV) 에대해동일해야함. 블록페어의할당 DONE OUTPUT BOOL (I,Q,M,D,L) 양의에지 ( 펄스 ) 는사용자프로그램에게오류없이전송이완료되었음을표시 ERROR OUTPUT BOOL (I,Q,M,D,L) 양의에지는오류를표시 ( 펄스 ) STATUS OUTPUT 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 24 Basic and Expanded S7 Communication
185 SFB 통신 : URCV (SFB 9) 블록 STL 표시 파라미터할당에대한보기 CALL URCV, I_URCV( 인스턴스 DB) EN_R:= I 0.5 ID:= W#16#3 //S7 연결 R_ID:= DW#16#B1 // 블록페어 NDR:= #NDR_FLAG ERROR:= #ERROR_FLAG STATUS:= #STATUS_WORD RD_1:=P#DB3.DBX0.0 BYTE 100 RD_2:=P#DB3.DBX100.0 BYTE 100 RD_3:=P#DB3.DBX200.0 BYTE 100 RD_4:=P#DB3.DBX300.0 BYTE 154 LAD 표시 DB 9 ( 인스턴스 DB) SFB 9 (URCV) EN ENO EN_R NDR ID ERROR R_ID STATUS RD_1 RD_2 RD_3 RD_4 개요 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) ID INPUT WORD (I,Q,M,D,L constant) R_ID INPUT DWORD (I,Q,M,D,L constant) NDR OUTPUT BOOL (I,Q,M,D,L) ERROR OUTPUT BOOL (I,Q,M,D,L) RLO = 1 일경우수신된데이터는구성된데이터영역에복사됨 S7 단일시스템연결에대한연결번호 ( 연결표참고 ) 파라미터는 2 개의 CFB (USEND 와 URCV) 에대해동일해야함. 블록페어의할당 양의에지 ( 펄스 ) 는사용자프로그램에게전송된새데이터를표시함 양의에지 = 오류 ( 펄스 ) 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 25 Basic and Expanded S7 Communication
186 SFB 통신 : BSEND (SFB 12) 블록 STL 표시 파라미터할당에대한보기 CALL BSEND, I_BSEND( 인스턴스 DB) REQ:= I 0.4 R:= I0.5 ID:=W#16#3 //S7 연결 R_ID:=DW#16#B2 // 블록페어 DONE:= #DONE_FLAG ERROR:= #ERROR_FLAG STATUS:= #STATUS_WORD SD_1:=P#DB1.DBX0.0 BYTE LEN:= #DB_LEN LAD 표시 DB 12 ( 인스턴스 DB) SFB 12 (BSEND) EN ENO REQ DONE R ERROR ID STATUS R_ID SD_1 LEN 개요 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) ID INPUT W ORD (I,Q,M,D,L constant) R_ID INPUT DWORD (I,Q,M,D,L) SD_1 IN_OUT ANY (I,Q,M,D,L) LEN IN_OUT WORD (I,Q,M,D,L) DONE OUTPUT BOOL (I,Q,M,D,L) ERROR OUTPUT BOOL (I,Q,M,D,L) STATUS OUTPUT WORD (I,Q,M,D,L) 양의에지를이용하여전송활성화 양의에지를이용하여초기상태로 BSEND 리셋활성화 S7 단일시스템연결을위한연결번호 ( 연결표참고 ) 파라미터는 2 개의 CFB (BSEND 와 BRCV) 에대해동일해야함블록페어의할당 송신될데이터. Any 포인터의길이는평가되지않음 전송될데이터블록의길이 상승에지를이용하여 BSEND 요청 ( 펄스 ) 이오류없이끝났음을표시함 양의에지는오류는표시 ( 펄스 ) 상세한오류문또는경고를포함 Page 26 Basic and Expanded S7 Communication
187 SFB 통신 : BRCV (SFB 13) 블록 STL 표시 파라미터할당에대한보기 CALL BRCV, I_BRCV( 인스턴스 DB) EN_R:= I 0.4 ID:=W#16#3 //S7 연결, 양방향 R_ID:=DW#16#B2 // 블록페어 NDR:= #NDR_FLAG ERROR:= #ERROR_FLAG STATUS:= #STATUS_WORD RD_1:=P#DB2.DBX0.0 BYTE LEN:= #DB_LEN LAD 표시 DB 13 ( 인스턴스 DB) SFB 13 (BRCV) EN ENO EN_R NDR ID ERROR R_ID STATUS RD_1 LEN 개요 SFB13 (BRCV) 은 "BSEND 형식의리모트파트너 SFB 에서데이터를받습니다. ( 파라미터 R_ID 는 2 개의 SFB 에서모두동일해야합니다.) 이함수가호출되고값 1 이제어입력 EN_R 에적용되면블록은데이터를받을준비가됩니다. 수신영역의시작어드레스는 RD_1 에의해지정됩니다. 각수신데이터세그먼트를따라파트너 SFB 에확인을보내며 LEN 파라미터가갱신됩니다. 블록이데이터의비동기수신중에호출되면 STATUS 상태파라미터에경고가출력되고값 0 이제어입력 EN_R 에적용될때호출되면수신은종료되고 SFB 는초기상태로돌아갑니다. 모든데이터세그먼트를오류없이수신하면상태파라미터 NDR 이값 1 을가집니다. 파라미터종류형식중요도 EN_R INPUT BOOL (I,Q,M,D,Lconst.) ID INPUT WORD (I,Q,M,D,Lconst.) R_ID INPUT DWORD (I,Q,M,D,L const.) RLO = 1 SFB 가받을준비가됨 RLO = 0 절차취소됨 S7 단일시스템연결의연결번호 ( 연결표참고 ) 파라미터는 2 개의 CFB (BSEND 와 BRCV) 에대해동일해야함. 블록페어의할당 RD_1 IN_OUT ANY 수신메일박스에대한포인팅. 길이사양은수신될블록의최대길이를지정. (2048 워드의경우이것은 S5에대한조커길이에대응 ) LEN IN_OUT WORD 지금까지수신된데이터의길이바이트 NDR OUTPUT BOOL 양의에지는사용자프로그램에인식된새 수신데이터를표시 ERROR OUTPUT BOOL 양의오류는오류표시 ( 펄스 ) STATUS OUTPUT WORD 상세한오류문또는경고포함 Page 27 Basic and Expanded S7 Communication
188 연습 10.1: SFB START/STOP 를이용한통신 S7 Program in AS1-400 OB 100 S7 Connections AS2-300 CALL SFB20,DB20 REQ= FALSE ID:=W#16#1. AS CALL SFB 19,DB19 REQ=FALSE ID:=W#16#1 OB 1. Local ID-No. 1 단방향 S7 단일시스템연결 MPI=3 OB 1 CALL SFB20,DB20 REQ= I0.0 ID:=W#16#1... CALL SFB 19,DB19 REQ=I0.1 ID:=W#16#1.... MPI=2 연습 10.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 시작이벤트 I QW2 의디지털표시에대한 SFB 의출력파라미터 STATUS ( 펄스 ) 를자체네트워크로전송합니다. Page 28 Basic and Expanded S7 Communication
189 연습 10.2: SFB GET/PUT 을이용한통신 S7 Program in AS1-400 OB 100 CALL SFB14,DB14 REQ= FALSE ID:=W#16#1.. CALL SFB 15,DB15 REQ=FALSE ID:=W#16#1 OB 1. OB 1 AS1-400 AS2-300 GET PUT QB 0 IB 0 QW 4 IW 4 IW 2 QW 12 CALL SFB14,DB14 REQ= I0.2 ID:=W#16#1... CALL SFB 15,DB15 REQ=I0.3 ID:=W#16#1.... 연습 10.2 단계절차참고 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에출력합니다. 3 - 네트워크 SFB_PUT 를만들고 CFB PUT 를호출합니다. - PUT 호출을할때 IW2를 AS1-400에서AS2-300의 QW12로전송합니다. 4 - SFB의출력파라미터 STATUS를 AS1-400의 QW2의디지털표시에전송합니다. - 시작이벤트 I 시작이벤트 I 0.3 Page 29 Basic and Expanded S7 Communication
190 SIEMENS SIMATIC S7-200 SF RUN STOP I0.0 I0.1 I0.2 I0.3 I0.4 I0.5 I0.6 I0.7 Q0.0 Mic ro PLC 212 Q0.1 Q0.2 Q0.3 Q0.4 Q0.5 X S7-400 파워 PLC 시스템 Date: File: PRO2_11e.1 Information and 목차 페이지 -400: 개요... 2 S7-400: S7-300과의본질적인차이점... 3 기술적데이터 S7-400 CPU (1)... 4 기술적데이터 S7-400 CPU (2)... 5 S7-400 모듈개요... 6 S7-400 랙... 7 대칭적및비대칭멀티컴퓨팅... 8 중앙디자인구성... 9 모듈파라미터 : 논리어드레스, 부분프로세스이미지 모듈파라미터할당 : 아날로그모듈 멀티컴퓨팅구성 멀티컴퓨팅에서동기화를위한 SFC 중앙확장 중앙확장 분산확장 S7과 S5 사이의분산연결 중앙구성확장 CPU 모듈 시스템아키텍처 CPU 파라미터 : 시동특징 CPU 파라미터 : 인터럽트 CPU 파라미터 : 로컬데이터 CPU 파라미터 : 액세스보호개념 프로그램조직 : 완전재시작및재시작 모듈삽입 / 제거인터럽트 (S7-400) S7-400에서의강제 중단점표시줄활성화 중단점으로프로그램수행 (S7-400 전용 ) 주변출력사용가능 (S7-400 전용 ) 지점간연결을위한 CP CP 443-5: PROFIBUS에대한연결 IM 467: PROFIBUS-DP 마스터인터페이스 CP 443-1: 산업용이더넷에대한연결 Page 1 The S7-400 Power PLC System
191 -400: 개요 시스템무제한성 고밀도 점진적 CPU 수행 멀티컴퓨팅 21개의확장단위연결가능 다양한모듈 (SM, FM, CP) 자유자제의네트워크연결가능 퍼포먼스 높은프로세싱퍼포먼스 ( 이진명령마다 80 nsec까지 ) 1.6 MByte까지의사용자메모리 강력한통신 다양한기능 특별함수를통해 S5 쪽에서의특별이동가능 Date: File: PRO2_11e.2 Information and 은중상위퍼포먼스범위에대한 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 2 The S7-400 Power PLC System
192 S7-400: S7-300 과의본질적인차이점 메모리가보다크고 I/O/M/T/C가보다많음 입력및출력모듈어드레스가파라미터에할당될수있음 S5에서의 EU가연결될수있고S5 CP/IP 모듈이사용될수있음 보다많은시스템함수, 예를들어프로그램된통신함수블록 64KB까지의블록크기및그2배의 DB 수 완전재시작및재시작 시동중에설정의목표값 / 실제값비교 언더파워에있을동안모듈을삭제할수있음 몇개의부분프로세스이미지 OB 우선순위가파라미터에할당될수있음 감시장치, 하드웨어및타임오브데이인터럽트를위한몇개의OB 16겹까지중첩되는블록 각우선순위클래스에서조정될수있는L-Stack의크기 4개까지의 CPU를이용한멀티컴퓨팅 Date: File: PRO2_11e.3 Information and 차이점이슬라이드는 S7-400 과 S7-300 사이의본질적인차이점을보여줍니다. 이러한차이점은다음페이지에서보다상세하게설명됩니다. Page 3 The S7-400 Power PLC System
193 기술적데이터 S7-400 CPU (1) CPU CPU CPU DP CPU CPU DP CPU CPU DP 2 진명령문에대한실행시간로드 / 전송 ( 워드 ) 16-Bit 고정소수점 (+/-) IEEE 부동소수점 (+/-) 200 nsec 200 nsec 200 nsec 1200 nsec 200 nsec 200 nsec 200 nsec 1200 nsec 200 nsec 200 nsec 200 nsec 1200 nsec 100 nsec 100 nsec 100 nsec 600 nsec 100 nsec 100 nsec 100 nsec 600 nsec 80 nsec 80 nsec 80 nsec 480 nsec 80 nsec 80 nsec 80 nsec 480 nsec 사용자메모리작업메모리로드메모리 ( 정수.) 로드메모리 ( 외부 ) 48 KB 8 KB 15 MB 72 KB 8 KB 15 MB 72 KB 8 KB 15 MB 128 KB 8 KB 15 MB 128/384 KB 8 KB 15 MB 512 KB 16 KB 15 MB 0.8/1.6 MB 16 KB 15 MB 어드레스메모리마커 (Bit) 클럭메모리타이머카운터 블록종류 / 번호 FB FC DB 프로세스이미지 / 크기 ( 입력 / 출력 ) p. 128 Byte p. 128 Byte p. 128 Byte p. 256 Byte p. 256 Byte p. 512 Byte p. 512 Byte 최대 I/O 어드레스공간 p.0.5kbyte *) p.1 KByte *) p. 1 KByte *) p. 2 KByte *) p. 4 KByte *) p. 4 KByte *) p. 8 KByte *) 통합인터페이스 MPI MPI MPI, DP MPI MPI, DP MPI MPI, DP *) 1 Byte = 8 digital I/Os 2 Byte = 1 analog I/O Date: File: PRO2_11e.4 Information and CPU 종류 프로그래밍 모든퍼포먼스범위에대해해당실행시간, 작업메모리크기및블록번호를가지는해당 CPU 가있습니다. 사용자프로그램은 IEC 에따라만들어집니다. 다음의새특징이 S7에 통합되었습니다. 아날로그값프로세싱을위한프로그램명령 - 고정소수점및부동소수점계산 (32 비트 ) - 거듭제곱및제곱근 - 로그함수 - 삼각함수 예를들어다음과같은문제지향적프로그래밍을위한새데이터형 - ARRAY ( 필드 ) - STRUCT ( 구조체 ) - POINTER ( 포인터 ) 예를들어다음과같은객체지향적블록개념 - 인스턴스데이터블록을가지는 FB - 복수인스턴스모델 예를들어통신등에대한통합시스템블록 프로세스 I/O I/O 모듈의논리어드레스는적당한크기의선형어드레스공간에할당됩니다. P- 또는 Q 주변장치는없습니다. 통합 DP 인터페이스에연결된슬레이브스테이션의어드레스도이선형어드레스공간에표시됩니다. 이런식으로분산 I/O 는사용자프로그램에서중앙 I/O 와같은방식으로주소가지정될수있습니다. STEP 7 은중앙및분산 I/O 에대한어드레스파라미터를할당하기위해사용됩니다. Page 4 The S7-400 Power PLC System
194 기술적데이터 S7-400 CPU (2) 조직블록자유순환타임오브데이인터럽트타임딜레이인터럽트감시장치인터럽트하드웨어인터럽트멀티컴퓨팅인터럽트시동비동기오류동기오류 로컬데이터 CPU OB 1 OB 10,11 OB 20,21 OB 32,35 OB 40,41 OB 60 OB 100,101 OB OB 121,122 CPU OB 1 OB 10,11 OB 20,21 OB 32,35 OB 40,41 OB 60 OB 100,101 OB OB 121,122 CPU OB 1 OB 10,11 OB 20,21 OB 32,35 OB 40,41 OB 60 OB 100,101 OB OB 121,122 CPU OB 1 OB OB OB OB OB 60 OB 100,101 OB OB 121,122 CPU OB 1 OB OB OB OB OB 60 OB 100,101 OB OB 121,122 CPU OB 1 OB OB OB OB OB 60 OB 100,101 OB OB 121,122 CPU OB 1 OB OB OB OB OB 60 OB 100,101 OB OB 121, KB 최대블록길이 시퀀스수준마다블록중첩깊이 4 KB 64 KB 16 4 KB 64 KB 16 4 KB 64 KB 16 8 KB 64 KB 16 8 KB 64 KB KB 64 KB KB 16 프로그램드리븐통신, MPI, K bus 에대한최대연결수 MPI, 전역데이터를통한순환데이터통신 GD 주기당데이터용량 8 54 Byte User Data Byte User Data Byte User Data Byte User Data Byte User Data Byte User Data Byte User Data 16 CPU 당 GD 주기 GD 주기당 GD 패키지보내기 GD 주기당 GD 패키지받기 x 16 x 54 Byte= 864 Byte 2 x 16 x 54 Byte= 1728 Byte Date: File: PRO2_11e.5 Information and 통신 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) 사이에서작은데이터패키지를순환적으로교환합니다. Page 5 The S7-400 Power PLC System
195 S7-400 모듈개요 Racks Racks UR 1,2 ER 1,2 CR 2 S7-CPUs S7-CPUs CPU CPU CPU DP CPU CPU DP CPU CPU DP IM IM M7-CPUs M7-CPUs CPU CPU CPU CPU m with K-Bus 3m w/o K-Bus 100m with K-Bus 600m to S5 IM314 PS PS 230V / 4A 230V / 10A 230V / 20A 24V / 4A 24V / 10A 24V / 20A DI DI 32 x DC 24V 16 x UC 24-60V (IR + Diagn.) 16 x UC V 16 x UC 120 V (IR + Diagn.) 32 x AC 120V 16 x AC 230V (IR + Diagn.) DQ DQ 32 x DC 24V, 0.5A 16 x DC 24V, 2A 16 x AC 120/230V, 2A 16 x UC V, 5A, Relay 8 x AC 120/230V, 5A AQ AQ FM FM 2 channel counter cam controller Positioning for servomotors Positioning for rapid/creep feed drives M7-FM 8 x U/I, 13 Bit 8 x U/I, 14 Bit CP CP 1 채널지점간 2 채널지점간이더넷 Profibus AI AI 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 전환시간선형화및고르게하기포함 Date: File: PRO2_11e.6 Information and 랙 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 S5 확장랙은인터페이스모듈을통해 S7-400 중앙랙에연결될수있습니다. CP CP 모듈은다음네트워크에대한 CPU 의연결을가능하게합니다. 산업용이더넷 (CP 443-1) PROFIBUS (CP 443-5) 지점간네트워크 (CP441-1 과 CP441-2) 더욱이모든 CPU 는 MPI 네트워크와의연결을위한 MPI 인터페이스를가집니다. 최대 32 개의스테이션이 MPI 네트워크에연결될수있습니다. Page 6 The S7-400 Power PLC System
196 S7-400 랙 Rack P Bus UR 1/ UR 2 또한확장랙으로사용될수있음 K Bus 세그먼트랙 CPUs ( = 멀티컴퓨팅 ) P Bus Segment 1 P Bus Segment 2 CR 2 K Bus Exp. Rack 다른작동유형을가지는 2 개의 PLC. 그러나공통된 K Bus 를통해 CPU 간에통신 P Bus ER 1/ ER 2 Date: File: PRO2_11e.7 Information and UR 1 / UR 2 CR2 왜 CR2? 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 를분리함으로써각작업에자체버스시스템을할당합니다. 제어및통신은자체의별도데이터하이웨이를가지며따라서고르고충돌이없는제어및통신작동을제공합니다. 세스먼트랙 CR 2 는각각 10 개의슬롯과 8 개의슬롯을가지는 2 개의세그먼트로나누어진 I/O 버스를가집니다. 각세그먼트에대해한개의 CPU 를사용될수있습니다. 2 개의 CPU 는각각 P- 버스세그먼트에대한마스터이며자신의 SM 에만액세스할수있습니다. 작동모드전환은동기화되지않습니다. 즉, CPU 는다른작동모드에있을수있습니다. 2 개의 CPU 는연속적인 K 버스를통해통신할수있습니다. 모든 CPU ( 최대 4 개 ) 는대칭적멀티컴퓨팅에서같은작동모드, 예를들어 STOP 을가집니다. 즉작동모드전환은동기화됩니다. ER 1 / ER 2 ER1 (18 슬롯 )/ER2 (9 슬롯 ) 는 K- 버스, 경보선, 모듈에대한 24V 전원공급, 배터리공급이없습니다. 노슬롯규칙 예외 : 제일왼쪽에있는 PS 와제일오른쪽의 ER 에있는수신 IM Page 7 The S7-400 Power PLC System
197 대칭적및비대칭멀티컴퓨팅 대칭적멀티컴퓨팅 공통 I/O 버스 공통통신버스 비대칭멀티컴퓨팅 I/O bus-segment 1 I/O bus-segment 2 segmented rack 공통통신버스 Date: File: PRO2_11e.8 Information and 멀티컴퓨팅 대칭적 비대칭 멀티컴퓨팅은시스템의구성을자유롭게합니다. 즉, 멀티컴퓨팅을통해시스템퍼포먼스와메모리, 비트메모리, 타이머, 카운터, 등과같은시스템리소스를 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 개의개별제어기와유사합니다. 추가의장점은다음과같습니다. 제어캐비넷에서의공간절감 오직한개의랙과한개의전원공급만이요구되기때문에비용절감 Page 8 The S7-400 Power PLC System
198 중앙디자인구성 HW 구성도구활성화 랙구성 Date: File: PRO2_11e.9 Information and 중앙디자인구성 중앙디자인을위해모듈을중앙랙의 CPU (CPU 들 ) 옆에배열하고추가확장랙에서도같은작업을합니다. 구성만들기스테이션구성을열려면다음절차를따릅니다. 1. 제일먼저원하는하드웨어스테이션마다클릭하여선택합니다. 2. 메뉴항목 Edit -> Object 를선택하고오른쪽창에서 Hardware 기호를열거나더블클릭합니다. 선택된스테이션의스테이션창이열립니다. 3 카탈로그기호를클릭하면현재구성요소를가지는 HW 카탈로그가나타납니다. 이카탈로그에서 드래그드롭 으로랙과모듈을스테이션창이나각랙의구성표로복사합니다. 카탈로그보기 "+" 문자를클릭하면관련하위구조가열리고 - 문자를클릭하면하위구조가닫힙니다. 모듈을선택한후모듈의가장중요한기술데이터가카탈로그창의상태표시줄에나타납니다. 랙선택스테이션창과하드웨어카탈로그를연후다음절차를따릅니다. 1. 스테이션종류에따라항목 S7-300 과 S7-400 을선택합니다. 2. 제일먼저하위항목 RACK 을열고랙또는설치레일을왼쪽의스테이션창으로드래그합니다. 빈테이블이각랙에대해표시됩니다. 랙은 STEP 7 의구성표로표시됩니다. 이들구성표는랙에설치될수있는모듈수와같은입력라인을가집니다.. 3. 그런후에 드래그드롭 을사용하여원하는모듈을왼쪽빈표의슬롯에복사합니다. Page 9 The S7-400 Power PLC System
199 모듈파라미터 : 논리어드레스, 부분프로세스이미지 Date: File: PRO2_11e.10 Information and 일반적내용 S7-400 시스템에는기본 I/O 모듈어드레싱이있습니다. 이기본값은파라미터데이터를가지는시스템데이터블록이 CPU 에다운로드될때까지활동합니다. 기본어드레스모듈기본어드레스는다음에따라달라집니다. 랙의번호. 번호는수신 -IM (1..21) 에서설정되고중앙랙은항상 0 번을가집니다. 랙의모듈슬롯. 모듈의기본어드레스는다음과같이이들두값에서계산됩니다. 디지털시작어드레스 = [( 랙번호 ) x 18 + 슬롯번호 -1] x 4 아날로그시작어드레스 = [( 랙번호 ) x 18 + 슬롯번호 -1] x 부분프로세스이미지 완전한프로세스이미지외에도 8 개까지의부분프로세스이미지에대해파라미터를할당할수있습니다. 부분프로세스이미지는시스템함수 (SFC 26/27) 를통해사용자프로그램에서갱신될수있습니다. 그런방식으로사용자는원래 OB1 우선순위클래스를위해설계되었던프로세스이미지개념을다른우선순위클래스, 예를들어제어알고리즘을위한 OB35 에도사용할수있습니다. 이경우현재제어알고리즘의실제값또는목표값을다루는출력및입력모듈에입력또는출력의부분프로세스이미지를할당합니다. 그런후 OB35 에서다음순서를따라진행할수있습니다. 1. SFC26 에의해현재실제값을읽어관련부분프로세스이미지입력표에넣습니다. 2. 제어알고리즘을호출합니다. 제어알고리즘은새목표값을해당부분프로세스이미지출력표에씁니다. 3. SFC27 에의해부분프로세스이미지출력표를 I/O 에출력합니다. Page 10 The S7-400 Power PLC System
200 모듈파라미터할당 : 아날로그모듈 Date: File: PRO2_11e.11 Information and 모듈파라미터파라미터를할당할수있는모든모듈, 예를들어아날로그모듈에 HW 구성할당도구를이용해서파라미터를할당할수있습니다. 아날로그모듈의경우일반적으로파라미터할당에대한몇개의레지스터가있습니다. 따라서예를들어 S7-400 아날로그모듈의개별레지스터에서다음파라미터가설정될수있습니다. 어드레스 모듈의시작어드레스 부분프로세스이미지번호 하드웨어인터럽트 OB 입력 1 부 하드웨어인터럽트및진단인터럽트를위해사용가능 다음과같은채널별진단감시의사용가능 - 배선끊어짐확인 - 참조채널오류 - 언더플로우 - 오버플로우 - 접지누전 입력 2 부 측정종류 측정범위 방해빈도억제 고르게하기 입력할때도달한주기의끝 하드웨어인터럽트에대한상한값및하한값 Page 11 The S7-400 Power PLC System
201 멀티컴퓨팅구성 Date: File: PRO2_11e.12 Information and 개요 멀티컴퓨팅설정 멀티컴퓨팅은 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 12 The S7-400 Power PLC System
202 멀티컴퓨팅에서동기화를위한 SFC 35 EN "MP_ALM" ENO??.? JOB RET_VAL??.? 파라미터 선언 데이터형 메모리영역 설명 JOB INPUT BYTE I, Q, M, D, L, Const. 작업식별자가능한값 : 1에서 15 RET_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을씀 ) Date: File: PRO2_11e.13 Information and 설명 SFC 35 MP_ALM 의호출은멀티컴퓨팅모드에서멀티컴퓨팅인터럽트를유발합니다. 이것은모든연관된 CPU 에서 OB60 의동기화된시작을초래합니다. 단일프로세서작동과세그먼트랙의작동에서 OB60 은 SFC 35 가호출되는 CPU 에서만시작됩니다. 입력파라미터 JOB 을이용하여원하는멀티컴퓨팅인터럽트에대한원인을확인할수있습니다. 이작업식별자는모든연관 CPU 에전송되고 OB 60 에서평가될수있습니다. 프로그램의모든장소에서 SFC 35 MP_ALM 을호출할수있습니다. 호출은 RUN 모드에서만이루어질수있기때문에멀티컴퓨팅인터럽트는 START-UP 모드에서호출될때무시됩니다. 이것은함수값을통해사용자에게통고됩니다. Page 13 The S7-400 Power PLC System
203 중앙확장 1 P 버스와전원공급이전송됨. K 버스는없음 체인당 1 ER CR 과 ER 사이의최대거리는 1.5 m 임 SEND IM RECEIVE IM ER IM terminator PS 40x CPU IM CR Date: File: PRO2_11e.14 Information and 중앙집중적구성 1 인터페이스모듈 IM 460-1/IM 은 1.5 m 까지의로컬범위에서확장랙을 S7 중앙랙 (UR1, UR2, CR2) 에연결하기위해삽입됩니다. 중앙집중적확장은다음특징을가집니다. 최대 2 개의확장랙이연결될수있습니다 ( 인터페이스마다 1 개 ). 중앙랙과확장랙사이의최대거리는 1.5 m 입니다. 최대 2 개의 Send-IM 이중앙랙마다삽입될수있습니다. Send-IM 인터페이스모듈은 P 버스만 (K 버스는아님 ) 확장랙에전송합니다. 더욱이확장랙의모듈에는커넥터케이블을통해 5 V 전압 ( 슬롯당최대 5 A) 이공급됩니다. 이런이유로확장랙에는추가의전원공급모듈이삽입될수없습니다. Send-IM 에서사용되지않는인터페이스가종료될필요는없습니다. 그러나 Receive-IM 에서사용되지않는인터페이스는터미네이터로종료되어야합니다. 이것을사용해서확장랙의번호가선택되어야하는코딩스위치는 Receive- IM 에있습니다. 참고최대 21 개의확장랙이중앙랙에연결될수있습니다. Receive-IM 은항상확장랙의가장오른쪽슬롯에삽입되어야합니다. Page 14 The S7-400 Power PLC System
204 중앙확장 2 P 버스와 K 버스가전송됨. 전원공급은없음 PS 40x Receive-IM IM 체인당 4 ER 4. ER CR 과가장먼 ER 사이의거리는 3 m 임 PS 40x Receive-IM IM terminator 3. ER Receive-IM PS 40x IM 2. ER SEND-IM Receive-IM PS 40x CPU IM PS 40x IM CR 1. ER Date: File: PRO2_11e.15 Information and 중앙집중적구성 2 인터페이스모듈 IM 460-0/IM 은 3 m 까지의로컬범위에서확장랙을 S7 중앙랙 (UR1, UR2, CR2) 에중앙연결하기위해삽입됩니다. 중앙집중적확장은다음특징을가집니다. 최대 8 개의확장랙이연결될수있습니다 ( 인터페이스마다 4 개 ). 중앙랙과가장먼확장랙사이의최대거리는 3 m 입니다. 최대 6 개의 Send-IM 이중앙랙마다삽입될수있습니다. Send-IM 인터페이스모듈은 P 버스와 K 버스를확장랙에전송합니다. 확장랙에있는모듈은커넥터케이블을통해전압을공급받지않습니다. 이런이유로각확장랙은자체전원공급모듈이삽입되게해야합니다. Send-IM 에서사용되지않는모듈은종료될필요가없습니다. 그러나 Receive-IM 에서사용되지않는모듈은터미네이터로종료되어야만합니다. 이것을이용해확장랙의번호가선택되어야하는코팅스위치는 Receive-IM 에있습니다. 참고최대 21 개의확장랙이한개의중앙랙에연결될수있습니다. K 버스는처음의 6 개확장랙에만전송됩니다. 즉 FM 과 CP 와같은지능형모듈은처음 6 개의 ER 에서만작동될수있습니다. Receive-IM 은항상확장랙에서가장오른쪽슬롯에만삽입되어야합니다. Page 15 The S7-400 Power PLC System
205 분산확장 P 버스와 K 버스가전송됨. 전원공급은없음 Receive-IM PS 40x IM 체인당 4 ER 4. ER terminator CR 과가장먼 ER 사이의최대거리는 100 m 임 PS 40x 3. ER Receive-IM IM Receive-IM PS 40x IM 2. ER SEND-IM Receive-IM PS 40x CPU IM PS 40x IM CR 1. ER Date: File: PRO2_11e.16 Information and 분산구성 인터페이스모듈 IM 460-3/IM 은거리범위가 100 m 까지인 S7 중앙랙 (UR1, UR2, CR2) 에확장랙을분산연결하기위해삽입됩니다. 분산확장은다음특징을가집니다. 최대 8 개의확장랙이연결될수있습니다 ( 인터페이스마다 4 개 ). 중앙랙과가장먼확장랙사이의최대거리는 100 m 입니다. 최대 6 개의 Send-IM 이중앙랙마다삽입될수있습니다. Send-IM 인터페이스모듈은 P 버스와 K 버스를확장랙에전송합니다. 확장랙에있는모듈은커넥터케이블을통해전압을공급받지않습니다. 이런이유로각확장랙은자체전원공급모듈이삽입되게해야합니다. Send-IM 에서사용되지않는모듈은종료될필요가없습니다. 그러나 Receive-IM 에서사용되지않는모듈은터미네이터로종료되어야합니다. 이것을이용해확장랙의번호가선택되어야하는코딩스위치는 Receive-IM 에있습니다. 참고최대 21 개의확장랙이한개의중앙랙에연결될수있습니다. K 버스는처음 6 개의확장랙에만전송됩니다. 즉 FM 과 CP 와같은지능형모듈은처음 6 개의 ER 에서만작동될수있습니다. Receive-IM 은항상확장랙에서가장오른쪽슬롯에삽입되어야합니다. Page 16 The S7-400 Power PLC System
206 S7 과 S5 사이의분산연결 IM314 P S S5-ER C P U Send-IM S7 CR IM314 S5-ER 체인당 4 개까지의 S5 확장랙이연결될수있음 중앙랙에 4 개까지의 Send-IM 랙이가능 체인에서 CR 부터가장먼 ER 까지최대거리 : 600m 병렬 S5 버스가전송됨 S5-ER S5-ER S5-ER S5-ER 가능한 S5 확장랙 : ER 183 U, ER 185 U, ER 701-2, ER 다른 S5 ER S7-400 CR에 32개까지의 S5 ER 가능 S5-ER S5-ER terminator Date: File: PRO2_11e.17 Information and 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 참고 ). Page 17 The S7-400 Power PLC System
207 중앙구성확장 더블클릭 Date: File: PRO2_11e.18 Information and 구성확장추가의랙을중앙랙에 연결 하고 설치 하려면다음과같이진행합니다. 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 18 The S7-400 Power PLC System
208 CPU 모듈 CPU CPU CPU CPU DI 32xDC24V X BL00-0AA0 INTF EXTF FRCE CRST RUN STOP LED 표시 시동선택기스위치 CPU X XG00-0AB0 INTF DP INTF EXTF EXTF BUSF FRCE CRST RUN STOP CPU DP CPU DP CPU DP LED 표시 CRST WRST RUN-P RUN STOP CMRES 모드선택기 ( 키스위치 ) CRST WRST RUN-P RUN STOP CMRES 메모리카드슬롯 X3 DP 인터페이스 MPI X1 X1 EXT.-BATT V DC 외부버퍼공급 EXT.-BATT V DC Date: File: PRO2_11e.19 Information and 배터리소켓 MPI 인터페이스 내부배터리또는전원공급의교체나교환을가능하게하는 2.5mm 바나나플러그를가지는외부 "EXT-BATT 를통해 RAM 을백업하기위한 DC V 의연결을가지는추가외부배터리전압공급 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/O RUN = 프로그램이실행되고 PC에서읽기전용액세스만이가능 RUN-P= 프로그램이실행되고 PG에서읽기및쓰기액세스가가능 시동종류스위치 CRST= CPU 가모드선택기로시작될때 CPU 의완전재시작 ( 콜드재시작 ) WRST= CPU 가모드선택기로시작될때 CPU 의재시작 ( 웜재시작 ) Page 19 The S7-400 Power PLC System
209 시스템아키텍처 CPU 사용자메모리 MPI PG OP PLC 뒷판버스 프로세스부분 통신 K bus P bus PROFIBUS-DP-Master FM FM CP SM PROFIBUS-DP ET200 PG Norm-Slave Date: File: PRO2_11e.20 Information and 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 인터페이스를통한통신은다음특징을가집니다. 직렬 보오속도 : KBits/sec 최대 32 개노드 Page 20 The S7-400 Power PLC System
210 CPU 파라미터 : 시동특징 Date: File: PRO2_11e.21 Information and Setpoint/Actual 이필드를비활성화함으로써 S7에서실제구성이 ( 구성에따라 ) 목표값구성과 Configuration 다르면시동후에 CPU가 Stop 모드로가게합니다. Hardware Test 이기능을활성화함으로써 CPU의내부RAM이시동중에테스트됩니다. Delete PIQ.. Disable Restart S7-400 재시작에서나머지스캔주기가처리된후프로세스이미지가기본적으로삭제됩니다. 이특징을원하지않으면선택을해제할수있습니다. S7-400 의경우수동시동에서완전재시작제한 POWER ON S7-400 의경우다음중에서선택할수있습니다. 완전재시작 ( 비보유영역의삭제와프로그램프로세싱은블록 OB1 의첫번째인스트럭션으로시작 ) 재시작 ( 모든메모리영역은영향을받지않으며프로그램은인터럽트가일어난지점에서계속됨 ) Monitoring Times 다음시간이지정될수있습니다. 모든모듈이 CPU 에보고될때까지의최대대기시간 모듈이파라미터전송을확인할때까지의최대시간 S7-400 의경우전원장애후최대인터럽트시간, 이때재시작이여전히수행될수있음 Page 21 The S7-400 Power PLC System
211 CPU 파라미터 : 인터럽트 Date: File: PRO2_11e.22 Information and Priorities S7-400 의경우, 인터럽트블록우선순위를변경하고이에따라인터럽트가동시에발생할때프로세싱시퀀스를세울수있습니다. 설정된번호가높을수록우선순위가높습니다! Time-of-Day Interrupt 여기에서일회적프로그램프로세싱에대한시작시점을설정하거나이시점부터의반복활동을설정할수있습니다 ( 매분, 시간, 일, 주, 달, 년 ). 그런방식으로타임오브데이인터럽트는예를들어 CPU 실시간클럭에서여름과겨울시간을조정할수있습니다. Cyclic Interrupt 프로그램부분은순환인터럽트를이용해고정된간격으로처리될수있습니다. S7-300 의경우이작업을위해블록 OB 35 가있었으며이블록은기본값으로매 100 ms 마다처리됩니다. 타이밍코드는 1 에서 ms 까지의범위에서설정될수있습니다. 그런방식으로예를들어고정된간격 ( 샘플링간격 ) 으로처리되는제어작업을얻을수있습니다. S7-400 에는다른시간간격을가진 8 개의다른순환인터럽트가있습니다. 모든순환인터럽트가한시점에서처리될필요가없도록 Phase Offset 항목을사용하여순환인터럽트의호출을어긋나게배치할수있습니다. Page 22 The S7-400 Power PLC System
212 CPU 파라미터 : 로컬데이터 Date: File: PRO2_11e.23 Information and Local Data 위의레지스터를이용해사용자는수준 (OB) 마다원하는로컬데이터사양 ( 스크래치패드메모리 ) 을결정할수있습니다. 만약한수준의로컬데이터범위가초과되면시스템은 Stop 상태로분기됩니다. 한수준에서의로컬데이터범위는로컬데이터범위를가지는블록이블록엔드로닫힐때다시증가될수있습니다. 로컬데이터가기호적으로주소가지정되면운영체제가그조직과관리를맡습니다. Size of the L-Stack 로컬데이터의수는 CPU 종류에따라달라집니다. CPU KByte 로컬데이터 CPU KByte 로컬데이터 CPU KByte 로컬데이터 CPU KByte 로컬데이터 Page 23 The S7-400 Power PLC System
213 CPU 파라미터 : 액세스보호개념 Date: File: PRO2_11e.24 Information and Function 이대화상자에서 CPU 를권한없는액세스에서보호하기위해 3 가지보호수준중한개를선택할수있습니다. Preset 보호수준 1 ( 암호가파라미터화되지않음 ): CPU의키스위치 ( 모드선택기 ) Characteristics 위치가보호를결정합니다. 키스위치가 RUN-P 또는 STOP 위치에있음 : 제한없음 키스위치가 RUN 위치에있음 : 읽기전용액세스가능! Parameterized 보호수준을암호로파라미터화하면다음과같습니다. Protection Level Password Owners 의경우키스위치의위치와파라미터화된보호수준에관계없이읽기및쓰기액세스가가능합니다. Password Non-owners 의경우다음제한을적용할수있습니다. - 보호수준 1: 미리설정된특징에대응 - 보호수준 2: 키스위치위치에관계없이읽기전용액세스가능 - 보호수준 3: 키스위치위치에관계없이일기나쓰기액세스불가 Page 24 The S7-400 Power PLC System
214 프로그램조직 : 완전재시작및재시작 완전재시작 시동프로그램 : 완전재시작을위한 OB 100 PIQ 삭제 OD 취소 스캔주기검사시간시작 PII 읽기 OB1 을통한순환프로세싱 다음을통한인터럽트요청 : 시간신호 인식된오류 하드웨어인터럽트 PIQ 읽기 사용자프로그램운영체제 다음을위한 OB: 오류처리 순환인터럽트 하드웨어인터럽트 기타 재시작 시동프로그램 : 재시작을위한 OB 101 잔류스캔주기 PIQ 삭제 ( 파라미터에할당될수있음 ) OD 취소 스캔주기검사시간시작 PII 읽기 OB1을통한순환프로세싱다음을통한인터럽트요청 : 시간신호 인식된오류 하드웨어인터럽트 PI 읽기 Date: File: PRO2_11e.25 Information and 완전재시작 재시작 완전재시작, 즉 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 는서로를인터럽트하지않으며차례로처리됩니다. Page 25 The S7-400 Power PLC System
215 모듈삽입 / 제거인터럽트 (S7-400) 제거삽입사용가능 모듈존재 모듈사용가능 조직블록 OB83 모듈삽입 / 제거인터럽트 max. 1sec. 조직블록 OB122 I/O 액세스오류 조직블록 OB85 프로세스이미지갱신 운영체제를통한파라미터할당 Date: File: PRO2_11e.26 Information and 인터럽트 OB83 S7-400의경우RUN이나 STOP에서파워업이되는동안모듈을제거하고 제거및삽입 삽입할수있습니다. CPU, PS, 어댑터모듈의 S5 모듈, IM은예외입니다. RUN 모드에서허가된모듈을제거한후주어진상황에따라다음조직블록이 CPU 의운영체제에서호출될수있습니다. OB85- 프로세스이미지갱신 OB122-I/O 액세스오류 OB83- 제거및삽입이벤트사용자는 OB83 만이대략 1 초후에호출되며다른 OB 는원칙적으로이보다훨씬빨리활동할수있음을고려해야합니다. 모듈을삽입한후 CPU 가이를확인하며형식오류가발생하지않으면파라미터가할당됩니다. 파라미터할당이질서있게이루어진후그모듈을사용할수있습니다. 파라미터할당에서오류가인식되면 OB82 진단인터럽트가자동적으로시작됩니다. OB83 의시작정보다음정보가 OB83 의로컬데이터에있습니다. 모듈의제거 / 삽입 모듈의논리어드레스 모듈의실제형식 Page 26 The S7-400 Power PLC System
216 S7-400 에서의강제 Date: File: PRO2_11e.27 Information and 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 27 The S7-400 Power PLC System
217 중단점표시줄활성화 Date: File: PRO2_11e.28 Information and 중단점 이테스트기능을이용해서단일시퀀스모드에서만들어진프로그램을 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 를통해이루어집니다. Page 28 The S7-400 Power PLC System
218 중단점으로프로그램수행 (S7-400 전용 ) 중단점중단점 Date: File: PRO2_11e.29 Information and 중단점표시줄중단점표시줄은 단일시퀀스에서의테스팅 을위한명령버튼을제공합니다. 중단점설정중단점삭제중단점 on/off 다음중단점보여주기계속다음명령문실행호출실행 중단점설정 "Set Breakpoint 를이용해프로그램실행이중지되는위치를결정합니다. 중단점명령문은실행되지않습니다. 중단점삭제모든중단점이삭제됩니다. 중단점활성 "Breakpoint Active 를이용해이미설정된중단점뿐만아니라설정될중단점을포함하는모든중단점을활성화합니다. 다음중단점보여주기 "Show Next Breakpoint 를이용해편집기는프로그램을실행하지않고다음에표시된중단점으로점프합니다. 계속 "Continue 를이용해프로그램이다음활성액티브를만날때까지실행됩니다. 다음명령문실행 호출실행 "Execute Next Statement 를이용해단일시퀀스로프로그램을처리합니다. 블록호출에도달하면 "Execute Next Statement 를이용해블록호출후첫번째명령문으로점프합니다. 블록호출에도달할때 "Execute Call 을이용해블록으로분기합니다. 블록의끝에서블록호출후다음명령문으로다시점프가일어납니다. Page 29 The S7-400 Power PLC System
219 주변출력사용허가 (S7-400 전용 ) Date: File: PRO2_11e.30 Information and 소개 "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# PQW 2 W#16#0027 PQD 4 DW#16# 메뉴명령 Variable -> Enable Peripheral Output을사용하여 "Enable Peripheral Output" 모드로전환합니다. 6. 메뉴명령 Variable -> Activate Modify Values를사용하여주변출력을수정합니다. "Enable Peripheral Output 은메뉴명령Variable -> Enable Peripheral Output을다시선택하여이기능을해제할때까지계속활동합니다. 7. 새값을할당하려면 4단계부터다시시작합니다. 참고 CPU 가작동상태를변경하고예를들어 STOP 에서 RUN 이나 STARTUP 으로가면메시지가표시됩니다. CPU 가 RUN 모드에있고 "enable peripheral outputs" 기능이선택되어있으면또한메시지가표시됩니다. Page 30 The S7-400 Power PLC System
220 643-1QA11-0AX INTF EXF SD HDD S2 USR RUN STOP RUN_P 643-1QA11-0AX INTF EXF SD HDD S2 USR RUN STOP RUN_P 지점간연결을위한 CP 441 인터페이스 CP 441-1: 플러그인인터페이스모듈 1 CP 441-2: 플러그인인터페이스모듈 2 표시 : 보내기, 받기, 오류에대한 LED 보오속도 CP 441-1: 최대 38.4 kbaud CP 441-2: 최대 76.8 kbaud 프로토콜 통합표준프로토콜 로드될수있는 Siemens 이외의 프로토콜 ( 특별드라이버 ) - CP 용 3 ATB 386SX 3 ATB 386SX CP CP CP441-1: 비용효율이높은표준기능 - CP441-2: 까다로운작업을위한고성능 Date: File: PRO2_11e.31 Information and 설명 CP441-1 프로토콜 CP441-2 프로토콜 지점간연결은버스시스템에대해비용효율적인고성능대안입니다. PLC 는물론바코드판독기와저울과같은간단한장치를연결할수있습니다. 한개의플러그인인터페이스를가지는경우 파라미터화될수있는 3964 (R) 파라미터화될수있는 ASCII 프로토콜 ( 계획 ) 프린터 ( 계획 ) 2 개의플러그인인터페이스를가지는경우 파라미터화될수있는 3964 (R) RK 512 파라미터화될수있는 ASCII 프로토콜 프린터 다음과같이로드될수있는외부프로토콜 ( 계획 ) - Modbus 마스터 / 슬레이브 (Modicon) - Allen Bradley (DF1 프로토콜 ) 인터페이스모듈 TTY-, 9- 핀소켓, 액티브 / 패시브인터페이스모듈 V.24 (RS232 C), 9- 핀플러그커넥터 RS 422/485, 15- 핀소켓 Page 31 The S7-400 Power PLC System
221 CP 443-5: PROFIBUS 에대한연결 포맷 : S7 포맷, 단일너비 프로토콜 : SEND/RCV S7 함수 FMS (CP 기본전용 ) DP Master (CP 확장전용 ) 보오속도 : 9.6 Kbps to 12 Mbps 연결 : 전기케이블 : 9-pin sub-d 소켓을통해 FO 케이블 : 버스터미널을통해 구성 : FC와 FB를포함하는 PROFIBUS에대한NCM S7 CP Basis CP Extended Date: File: PRO2_11e.32 Information and 설명 CP 통신프로세서는 PROFIBUS 네트워크에대한 S7-400 연결을허용합니다. 프로토콜다음프로토콜을사용할수있습니다. S7 기능 : /M7/C7 과 PC 사이의 ISO/OSI 참조모델의레이어 7 을바탕하는하는통신용 S7 프로토콜은 패밀리에서의통신을위해 S7-CPU 에대한 SFB 인터페이스를제공합니다. 또한프로그래밍, 테스팅, 개체관리및진단을위한함수를제공합니다. SEND/RCV:, SIMATIC S5, PC/PG 및 Siemens 이외의장치사이의레이어 2 (FDL-Layer) 를바탕으로하는통신용. SEND/RCV 인터페이스는구조화되지않은데이터블록의간단하고믿을만한통신을제공합니다. SEND/RCV 인터페이스는다음관점에서구현됩니다. SIMATIC S5 에서블록처리 에서함수호출 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 보다작은필드장치사이에서소량데이터의빠른교환을위해설계되었습니다. Page 32 The S7-400 Power PLC System
222 IM 467: PROFIBUS-DP 마스터인터페이스 포맷 : S7 포맷, 단일너비 프로토콜 : DP 마스터 S7 함수 보오속도 : 9.6 Kbps 에서 12 Mbps 연결 : 전기케이블 : 9-pin sub-d 소켓을통해 구성 : 구성및프로그래밍은 PROFIBUS-DP를통해가능 IM 467 Date: File: PRO2_11e.33 Information and 설명 인터페이스모듈 IM 467 은 S7-400 PLC 시스템에서의작동을위해만들어졌습니다. 이모듈은 PROFIBUS-DP 에대한 S7-400 의연결을가능하게합니다. 프로토콜 IM 467 은 2 가지통신서비스를제공합니다. PROFIBUS-DP IM 467 은 EN 에따라 PROFIBUS-DP 마스터입니다.STEP 7 을이용해구성이완전히이루어집니다. 퍼포먼스는원칙적으로 CPU 모듈의통합 PROFIBUS-DP 인터페이스와동일합니다. DP 통신을위해 STEP 7 사용자프로그램에서함수를호출할필요가없습니다. S7 기능 S7 기능은 /M7/C7 자동화해법으로최적의간단한통신을보장합니다. IM 467 에대해다음 S7 기능을사용할수있습니다. PROFIBUS-DP 를통한 PG 기능 PROFIBUS-DP 를통한 HMI 기능통신은 IM 467 에서의추가구성없이이루어집니다. S7 기능은단독또는 PROFIBUS-DP 프로토콜에병렬로사용될수있습니다. 만약 DP 통신에병렬로사용되면 PROFIBUS-DP 버스순환시간에반동이발생합니다. Page 33 The S7-400 Power PLC System
223 CP 443-1: 산업용이더넷에대한연결 포맷 : S7 포맷, 단일너비 프로토콜 : ISO 전송스택의 SEND/RCV와 S7 함수 (CP 443-1) 및 TCP/IP 스택 (CP TCP/IP) MMS/MAP ( 준비중 ) 연결 : S7 함수 : 최대 48개의연결 SEND/RCV: 최대 64개의연결 함수 : 멀티프로토콜가능 LAN과 WAN을통한리모트프로그래밍 (CP443-1 TCP/IP 전용 ) 연결 : AUI와트위스트페어연결사이의자동스위치오버 구성 : SEND/RCV에대한함수호출을포함하는산업용이더넷에대한 NCM-S7 CP CP TCP/IP Date: File: PRO2_11e.34 Information and 설명 CP 과 CP TCP/IP 통신프로세서는산업용이더넷네트워크에대한 S7-400 의연결을허용합니다. 프로토콜다음프로토콜을사용할수있습니다. S7 기능 /M7/C7 과 PC 사이의 ISO/OSI 참조모델의레이어 7 을바탕하는하는통신용 SEND/RCV, SIMATIC S5, PC/PG 및 Siemens 이외의장치사이의레이어 4 (CP 의 ISO- 전송레이어와 CP TCP/IP 의 TCP- 전송레이어 ) 를바탕으로하는통신용. MMS/MAP, SIMATIC S5, PC/PG 및 Siemens 이외의시스템사이의레이어 7 을바탕으로개방통신용 Page 34 The S7-400 Power PLC System
224 연습해답 Date: 10/18/99 File: PRO2_14e.1 Information and 목차 패이지 교재구성... 2 S7-300 실제프로그램가능논리제어기 S7-400 실제프로그램가능논리제어기 시뮬레이터구성... 5 컨베이어모델구성... 6 Solution to 연습 1.1 해답 : 뺄셈연산후점프... 7 Solution to 연습 1.2 해답 : 곱셈연산후점프 연습 1.3 해답 : 라벨로점프... 9 연습 2.1 해답 : 지수계산 연습 2.2 해답 : ACCU1에서의데이터교환 연습 2.3 해답 : 1의보수만들기 연습 3.1 해답 : 거리계산 연습 4.1 해답 : 메모리간접어드레스지정을이용한루프프로그래밍 연습 4.2 해답 : 레지스터간접어드레스지정을이용한루프프로그래밍 연습 4.3 해답 : 합계와평균값계산 연습 5.1 해답 : SFC1을이용한시스템클럭읽기 (READ_CLK) 연습 6.1 해답 : 작업장용 FB1 만들기 연습 6.2 해답 : 전송용 FB2 만들기 연습 6.3 해답 : FB10 만들기 연습 6.4 해답 : 고유카운터블록만들기 연습 7.2 해답 : 데이터블록검사 (SFC 24: S7 400 전용 ) 연습 7.3 해답 : DB 만들기 (SFC 22) 연습 7.4 해답 : 로드메모리에서작업메모리로 DB 복사 (SFC 20) 연습 7.5 해답 : 0 으로 DB 초기화 (SFC 21: FILL) 연습 7.6 해답 : 진단버퍼에메시지기록 (SFC 52) 연습 8.1 해답 : FC43에서의오류처리 연습 9.2 해답 : 완성된부품개수세기 연습 10.1해답 : SFB의 START/STOP을이용한통신 연습 10.2 해답 : SFB의 GET/PUT을이용한통신 Page 1 Solutions to the Exercises
225 교재구성 후부에있는전원연결부와온 / 오프스위치 PCU 상에서의 MPI 연결 Date: 10/18/99 File: PRO2_14e.2 Information and 교재내용물교재는다음요소들로구성됩니다 : - CPU 314 를장착한 S7-300 PLC 시스템 - 디지털입력및출력모듈, 아날로그모듈 - 디지털및아날로그부품으로된시뮬레이터 - 컨베이어모델 참고이교재는 S7-400 PLC 시스템에서도사용할수있습니다. Page 2 Solutions to the Exercises
Status Bit-Dependent Instructions
상태비트의존적인인스트럭션 File: PRO2_01e.1 Information and 목차 페이지 S7-CPU의레지스터및메모리영역... 2 상태워드구조.... 3 상태비트검사..... 4 상태비트인스트럭션........ 5 블록호출또는복잡한함수에서의 BR 비트및 ENO... 6 상태비트에의존적인점프함수... 7 조건코드에의존적인점프함수..... 8 점프분산자의프로그래밍...
More informationIndirekte Adressierung und Adre?egisteranweisungen
간접어드레싱및어드레스레지스터인스트럭션??? 1 2 #Ini_Value #Pointer 9 10 # 카운터 L W [AR1, P#200.0] File: PRO2_04e.1 목차 페이지 STEP7에서의어드레싱방법... 2 변수의직접어드레싱... 3 DB 변수의직접어드레싱... 4 프로그램에서 DB 정보평가... 5 메모리간접어드레싱... 6 메모리간접어드레싱을이용한포인터구조...
More information<4D F736F F F696E74202D203137C0E55FBFACBDC0B9AEC1A6BCD6B7E7BCC72E707074>
SIMATIC S7 Siemens AG 2004. All rights reserved. Date: 22.03.2006 File: PRO1_17E.1 차례... 2 심벌리스트... 3 Ch3 Ex2: 프로젝트생성...... 4 Ch3 Ex3: S7 프로그램삽입... 5 Ch3 Ex4: 표준라이브러리에서블록복사... 6 Ch4 Ex1: 실제구성을 PG 로업로드하고이름변경......
More informationPRO1_09E [읽기 전용]
Siemens AG 1999 All rights reserved File: PRO1_09E1 Information and - ( ) 2 3 4 5 Monitor/Modify Variables" 6 7 8 9 10 11 CPU 12 Stop 13 (Forcing) 14 (1) 15 (2) 16 : 17 : Stop 18 : 19 : (Forcing) 20 :
More informationOCW_C언어 기초
초보프로그래머를위한 C 언어기초 4 장 : 연산자 2012 년 이은주 학습목표 수식의개념과연산자및피연산자에대한학습 C 의알아보기 연산자의우선순위와결합방향에대하여알아보기 2 목차 연산자의기본개념 수식 연산자와피연산자 산술연산자 / 증감연산자 관계연산자 / 논리연산자 비트연산자 / 대입연산자연산자의우선순위와결합방향 조건연산자 / 형변환연산자 연산자의우선순위 연산자의결합방향
More informationBausteinaufrufe und Multiinstanz-Modell
블록호출및복수인스턴스모델 목차 페이지 S7-CPU의소프트웨어구조. 2 블록개요. 3 함수호출 (FC).... 4 FC 호출에서파라미터전달. 5 함수를호출하기위한다른인스트럭션 6 함수블록 (FB) 을가지는인스턴스만들기.. 7 함수블록 (FB) 을가지는인스턴스만들기... 8 FB 호출에서파라미터전달 9 FB를호출하기위한다른인스트럭션... 10 " 전달되는 " 파라미터..
More information<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>
연습문제해답 5 4 3 2 1 0 함수의반환값 =15 5 4 3 2 1 0 함수의반환값 =95 10 7 4 1-2 함수의반환값 =3 1 2 3 4 5 연습문제해답 1. C 언어에서의배열에대하여다음중맞는것은? (1) 3차원이상의배열은불가능하다. (2) 배열의이름은포인터와같은역할을한다. (3) 배열의인덱스는 1에서부터시작한다. (4) 선언한다음, 실행도중에배열의크기를변경하는것이가능하다.
More informationMicrosoft PowerPoint - chap04-연산자.pptx
int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); } 1 학습목표 수식의 개념과 연산자, 피연산자에 대해서 알아본다. C의 를 알아본다. 연산자의 우선 순위와 결합 방향에
More information슬라이드 1
-Part3- 제 4 장동적메모리할당과가변인 자 학습목차 4.1 동적메모리할당 4.1 동적메모리할당 4.1 동적메모리할당 배울내용 1 프로세스의메모리공간 2 동적메모리할당의필요성 4.1 동적메모리할당 (1/6) 프로세스의메모리구조 코드영역 : 프로그램실행코드, 함수들이저장되는영역 스택영역 : 매개변수, 지역변수, 중괄호 ( 블록 ) 내부에정의된변수들이저장되는영역
More informationPowerPoint 프레젠테이션
System Software Experiment 1 Lecture 5 - Array Spring 2019 Hwansoo Han (hhan@skku.edu) Advanced Research on Compilers and Systems, ARCS LAB Sungkyunkwan University http://arcs.skku.edu/ 1 배열 (Array) 동일한타입의데이터가여러개저장되어있는저장장소
More informationMicrosoft PowerPoint - chap06-2pointer.ppt
2010-1 학기프로그래밍입문 (1) chapter 06-2 참고자료 포인터 박종혁 Tel: 970-6702 Email: jhpark1@snut.ac.kr 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- 포인터의정의와사용 변수를선언하는것은메모리에기억공간을할당하는것이며할당된이후에는변수명으로그기억공간을사용한다. 할당된기억공간을사용하는방법에는변수명외에메모리의실제주소값을사용하는것이다.
More information초급과정 목차
제목 S7 PLC 소개.... 2 STEP 7 패키지구성... 3 Automation License Manager... 4 Automation License Manager 화면설명... 5 License 설치 / 백업... 6 P.C PLC 연결...... 7 인터페이스설정.... 8 P.C Adapter(RS-232C, USB) 인터페이스설정... 9 P.C
More informationPoison 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
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 Example 3.1 Files 3.2 Source code 3.3 Exploit flow
More informationMicrosoft PowerPoint - chap02-C프로그램시작하기.pptx
#include int main(void) { int num; printf( Please enter an integer "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 을 작성하면서 C 프로그램의
More informationMicrosoft Word - PLC제어응용-2차시.doc
과정명 PLC 제어응용차시명 2 차시. 접점명령 학습목표 1. 연산개시명령 (LOAD, LOAD NOT) 에대하여설명할수있다. 2. 직렬접속명령 (AND, AND NOT) 에대하여설명할수있다. 3. 병렬접속명령 (OR, OR NOT) 에대하여설명할수있다. 4.PLC의접점명령을가지고간단한프로그램을작성할수있다. 학습내용 1. 연산개시명령 1) 연산개시명령 (LOAD,
More informationADP-2480
Mitsubishi PLC 접속 GP 는 Mitsubishi FX Series 와통신이가능합니다. 시스템구성 6 7 8 GP-80 RS- Cable RS-C Cable FXN--BD FXN--BD 6 FX Series(FXS,FXN,FXN,FXNC, FXU) 7 FXS, FXN 8 FXN FX Series 는기본적으로 RS- 통신을하며, RS-/ converter
More informationMicrosoft PowerPoint - chap06-5 [호환 모드]
2011-1 학기프로그래밍입문 (1) chapter 06-5 참고자료 변수의영역과데이터의전달 박종혁 Tel: 970-6702 Email: jhpark1@seoultech.ac.kr h k 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- ehanbit.net 자동변수 지금까지하나의함수안에서선언한변수는자동변수이다. 사용범위는하나의함수내부이다. 생존기간은함수가호출되어실행되는동안이다.
More information<4D F736F F F696E74202D2032C0E55FC6AEB7B9C0CCB4D720C5B0C6AEB1B8BCBAC7B05F446F6E652E707074>
File: PRO_1_02E.1 차례 S7-300 트레이닝키트... 2 S7-300 트레이닝키트 PLC 구성... 3 S7-300 모듈 I/O 어드레스... 4 S7-400트레이닝키트전체구성품. 5 S7-400 트레이닝키트 PLC 구성... 6 시뮬레이터... 7 콘베이어모델... 8 전체심벌리스트 (1)... 9 전체심벌리스트 (2)... 10 전체심벌리스트
More informationVisual Basic 반복문
학습목표 반복문 For Next문, For Each Next문 Do Loop문, While End While문 구구단작성기로익히는반복문 2 5.1 반복문 5.2 구구단작성기로익히는반복문 3 반복문 주어진조건이만족하는동안또는주어진조건이만족할때까지일정구간의실행문을반복하기위해사용 For Next For Each Next Do Loop While Wend 4 For
More informationPowerPoint 프레젠테이션
실습 1 배효철 th1g@nate.com 1 목차 조건문 반복문 System.out 구구단 모양만들기 Up & Down 2 조건문 조건문의종류 If, switch If 문 조건식결과따라중괄호 { 블록을실행할지여부결정할때사용 조건식 true 또는 false값을산출할수있는연산식 boolean 변수 조건식이 true이면블록실행하고 false 이면블록실행하지않음 3
More information< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>
Chap #2 펌웨어작성을위한 C 언어 I http://www.smartdisplay.co.kr 강의계획 Chap1. 강의계획및디지털논리이론 Chap2. 펌웨어작성을위한 C 언어 I Chap3. 펌웨어작성을위한 C 언어 II Chap4. AT89S52 메모리구조 Chap5. SD-52 보드구성과코드메모리프로그래밍방법 Chap6. 어드레스디코딩 ( 매핑 ) 과어셈블리어코딩방법
More informationPRO1_16E [읽기 전용]
MPI PG 720 Siemens AG 1999 All rights reserved File: PRO1_16E1 Information and MPI 2 MPI 3 : 4 GD 5 : 6 : 7 GD 8 GD 9 GD 10 GD 11 : 12 : 13 : 14 SFC 60 SFC 61 15 NETPRO 16 SIMATIC 17 S7 18 1 MPI MPI S7-300
More informationPRO1_02E [읽기 전용]
Siemens AG 1999 All rights reserved File: PRO1_02E1 Information and 2 STEP 7 3 4 5 6 STEP 7 7 / 8 9 10 S7 11 IS7 12 STEP 7 13 STEP 7 14 15 : 16 : S7 17 : S7 18 : CPU 19 1 OB1 FB21 I10 I11 Q40 Siemens AG
More information비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2
비트연산자 1 1 비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2 진수법! 2, 10, 16, 8! 2 : 0~1 ( )! 10 : 0~9 ( )! 16 : 0~9, 9 a, b,
More informationMicrosoft Word - FunctionCall
Function all Mechanism /* Simple Program */ #define get_int() IN KEYOARD #define put_int(val) LD A val \ OUT MONITOR int add_two(int a, int b) { int tmp; tmp = a+b; return tmp; } local auto variable stack
More information[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi
2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Function) 1. 함수의개념 입력에대해적절한출력을발생시켜주는것 내가 ( 프로그래머 ) 작성한명령문을연산, 처리, 실행해주는부분 ( 모듈 ) 자체적으로실행되지않으며,
More informationMicrosoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt
변수와상수 1 변수란무엇인가? 변수 : 정보 (data) 를저장하는컴퓨터내의특정위치 ( 임시저장공간 ) 메모리, register 메모리주소 101 번지 102 번지 변수의크기에따라 주로 byte 단위 메모리 2 기본적인변수형및변수의크기 변수의크기 해당컴퓨터에서는항상일정 컴퓨터마다다를수있음 short
More informationMicrosoft PowerPoint - C프로그래밍-chap03.ppt [호환 모드]
Chapter 03 변수와자료형 2009 한국항공대학교항공우주기계공학부 (http://mercury.kau.ac.kr/sjkwon) 1 변수와자료유형 변수 프로그램에서자료값을임시로기억할수있는저장공간을변수 (variables) 변수 (Variables) 는컴퓨터의메모리인 RAM(Random Access Memory) 에저장 물건을담는박스라고생각한다면박스의크기에따라담을물건이제한됨
More informationMicrosoft PowerPoint - chap03-변수와데이터형.pptx
#include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num %d\n", num); return 0; } 1 학습목표 의 개념에 대해 알아본다.
More information금오공대 컴퓨터공학전공 강의자료
C 프로그래밍프로젝트 Chap 14. 포인터와함수에대한이해 2013.10.09. 오병우 컴퓨터공학과 14-1 함수의인자로배열전달 기본적인인자의전달방식 값의복사에의한전달 val 10 a 10 11 Department of Computer Engineering 2 14-1 함수의인자로배열전달 배열의함수인자전달방식 배열이름 ( 배열주소, 포인터 ) 에의한전달 #include
More information슬라이드 1
명령어집합 주소지정모드 (addressing mode) 내용 명령어는크게연산자부분과이연산에필요한주소부분으로구성 이때주소부분은다양한형태를해석될수있으며, 해석하는방법을주소지정방식 ( 모드 )(addressing mode) 라한다. 즉피연산자정보를구하는방법을주소지정방식이라고함 명령어형식 주소지정 명령어형식에있는주소필드는상대적으로짧다. 따라서지정할수있는위치가제한된다.
More informationPRO1_18E [읽기 전용]
: S700 Siemens AG 999 All rights reserved Date: 0009 File: PRO_E Information and S7300 S7300 CPU () 3 S7300 CPU () S700 CPU () 5 S700 CPU () 6 S700 7 S700 : 9 CPU : 0 CPU : CPU : 3 SFC 35 5 ST7PRO : S700
More information2 장수의체계 1. 10진수 2. 2진수 3. 8진수와 16진수 4. 진법변환 5. 2진정수연산과보수 6. 2진부동소수점수의표현 한국기술교육대학교전기전자통신공학부전자전공 1
장수의체계. 진수. 진수 3. 8진수와 6진수 4. 진법변환 5. 진정수연산과보수 6. 진부동소수점수의표현 진수 진수표현법 v 기수가 인수 v,,, 3, 4, 5, 6, 7, 8, 9 사용 9345.35 = 9 3 4 5 3. 5. = 9 3 3 4 5 3-5 - v 고대로마의기수법에는 5 진법을사용 v 진법의아라비아숫자는인도에서기원전 세기에발명 진법을나타내는기본수를기수
More information슬라이드 1
Pairwise Tool & Pairwise Test NuSRS 200511305 김성규 200511306 김성훈 200614164 김효석 200611124 유성배 200518036 곡진화 2 PICT Pairwise Tool - PICT Microsoft 의 Command-line 기반의 Free Software www.pairwise.org 에서다운로드후설치
More information아이콘의 정의 본 사용자 설명서에서는 다음 아이콘을 사용합니다. 참고 참고는 발생할 수 있는 상황에 대처하는 방법을 알려 주거나 다른 기능과 함께 작동하는 방법에 대한 요령을 제공합니다. 상표 Brother 로고는 Brother Industries, Ltd.의 등록 상
Android 용 Brother Image Viewer 설명서 버전 0 KOR 아이콘의 정의 본 사용자 설명서에서는 다음 아이콘을 사용합니다. 참고 참고는 발생할 수 있는 상황에 대처하는 방법을 알려 주거나 다른 기능과 함께 작동하는 방법에 대한 요령을 제공합니다. 상표 Brother 로고는 Brother Industries, Ltd.의 등록 상표입니다. Android는
More informationchap 5: Trees
5. Threaded Binary Tree 기본개념 n 개의노드를갖는이진트리에는 2n 개의링크가존재 2n 개의링크중에 n + 1 개의링크값은 null Null 링크를다른노드에대한포인터로대체 Threads Thread 의이용 ptr left_child = NULL 일경우, ptr left_child 를 ptr 의 inorder predecessor 를가리키도록변경
More informationChapter 4. LISTS
C 언어에서리스트구현 리스트의생성 struct node { int data; struct node *link; ; struct node *ptr = NULL; ptr = (struct node *) malloc(sizeof(struct node)); Self-referential structure NULL: defined in stdio.h(k&r C) or
More informationPRO1_04E [읽기 전용]
Siemens AG 1999 All rights reserved File: PRO1_04E1 Information and S7-300 2 S7-400 3 EPROM / 4 5 6 HW Config 7 8 9 CPU 10 CPU : 11 CPU : 12 CPU : 13 CPU : / 14 CPU : 15 CPU : / 16 HW 17 HW PG 18 SIMATIC
More informationJAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각
JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( http://java.sun.com/javase/6/docs/api ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각선의길이를계산하는메소드들을작성하라. 직사각형의가로와세로의길이는주어진다. 대각선의길이는 Math클래스의적절한메소드를이용하여구하라.
More information11장 포인터
누구나즐기는 C 언어콘서트 제 9 장포인터 이번장에서학습할내용 포인터이란? 변수의주소 포인터의선언 간접참조연산자 포인터연산 포인터와배열 포인터와함수 이번장에서는포인터의기초적인지식을학습한다. 포인터란? 포인터 (pointer): 주소를가지고있는변수 메모리의구조 변수는메모리에저장된다. 메모리는바이트단위로액세스된다. 첫번째바이트의주소는 0, 두번째바이트는 1, 변수와메모리
More informationISP and CodeVisionAVR C Compiler.hwp
USBISP V3.0 & P-AVRISP V1.0 with CodeVisionAVR C Compiler http://www.avrmall.com/ November 12, 2007 Copyright (c) 2003-2008 All Rights Reserved. USBISP V3.0 & P-AVRISP V1.0 with CodeVisionAVR C Compiler
More informationPowerPoint 프레젠테이션
1. data-addressing mode CHAPTER 6 Addressing Modes 2. use of data-address mode to form assembly language statements 3. op of program memory address mode 4. use of program memory address mode to form assembly
More informationMicrosoft PowerPoint - chap10-함수의활용.pptx
#include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 중 값에 의한 전달 방법과
More information슬라이드 1
마이크로컨트롤러 2 (MicroController2) 2 강 ATmega128 의 external interrupt 이귀형교수님 학습목표 interrupt 란무엇인가? 기본개념을알아본다. interrupt 중에서가장사용하기쉬운 external interrupt 의사용방법을학습한다. 1. Interrupt 는왜필요할까? 함수동작을추가하여실행시키려면? //***
More informationPRO1_14E [읽기 전용]
Siemens AG 1999 All rights reserved Date 22-2-19 File PRO1_14E1 Information and 2 3 S7-3 4 SM335 ( ) 5 SM335 ( ) 6 SM331 7 8 9 1 11 12 SM335 13 SM331 14 15 16 1 CPU ph 5mV 1V 5V 1V 2mA 42mA MR ADC PIW
More informationPowerPoint Presentation
#include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 변수와상수의개념에대해알아본다.
More informationMicrosoft PowerPoint - C++ 5 .pptx
C++ 언어프로그래밍 한밭대학교전자. 제어공학과이승호교수 연산자중복 (operator overloading) 이란? 2 1. 연산자중복이란? 1) 기존에미리정의되어있는연산자 (+, -, /, * 등 ) 들을프로그래머의의도에맞도록새롭게정의하여사용할수있도록지원하는기능 2) 연산자를특정한기능을수행하도록재정의하여사용하면여러가지이점을가질수있음 3) 하나의기능이프로그래머의의도에따라바뀌어동작하는다형성
More informationMicrosoft PowerPoint - ch07 - 포인터 pm0415
2015-1 프로그래밍언어 7. 포인터 (Pointer), 동적메모리할당 2015 년 4 월 4 일 교수김영탁 영남대학교공과대학정보통신공학과 (Tel : +82-53-810-2497; Fax : +82-53-810-4742 http://antl.yu.ac.kr/; E-mail : ytkim@yu.ac.kr) Outline 포인터 (pointer) 란? 간접참조연산자
More informationDiagnostizieren von Fehlern
동기및비동기오류처리 목차 페이지 비동기오류처리... 2 오류조직블록처리... 3 비동기오류 OB의보기... 4 동기오류처리... 5 프로그래밍오류 OB121에대한시작정보... 6 액세스오류 OB122에대한시작정보... 7 동기오류마스크... 8 동기오류의마스크를위한 SFC 36... 9 프로그래밍오류필터의구조... 10 액세스오류필터의구조... 11 동기오류의마스크를해제하기위한
More informationOCW_C언어 기초
초보프로그래머를위한 C 언어기초 3 장 : 변수와데이터형 2012 년 이은주 학습목표 변수와상수의개념에대해알아본다. 리터럴상수, 매크로상수, const 변수에대해알아본 다. C 언어의데이터형에대해알아본다. 2 목차 변수와상수 변수 상수 데이터형 문자형 정수형 실수형 sizeof 연산자 3 변수와상수 변수 : 값이변경될수있는데이터 상수 : 값이변경될수없는데이터
More information목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2
제 8 장. 포인터 목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2 포인터의개요 포인터란? 주소를변수로다루기위한주소변수 메모리의기억공간을변수로써사용하는것 포인터변수란데이터변수가저장되는주소의값을 변수로취급하기위한변수 C 3 포인터의개요 포인터변수및초기화 * 변수데이터의데이터형과같은데이터형을포인터 변수의데이터형으로선언 일반변수와포인터변수를구별하기위해
More informationMicrosoft Word - logic2005.doc
제 8 장 Counters 실험의목표 - Catalog counter 의동작원리에대하여익힌다. - 임의의 counter를통하여 FSM 구현방법을익힌다. - 7-segment display 의동작원리를이해한다. 실험도움자료 1. 7-segment display 7-segment는디지털회로에서숫자를표시하기위하여가장많이사용하는소자이다. 이름에서알수있듯이 7개의 LED(
More informationChapter 4. LISTS
6. 동치관계 (Equivalence Relations) 동치관계 reflexive, symmetric, transitive 성질을만족 "equal to"(=) 관계는동치관계임. x = x x = y 이면 y = x x = y 이고 y = z 이면 x = z 동치관계를이용하여집합 S 를 동치클래스 로분할 동일한클래스내의원소 x, y 에대해서는 x y 관계성립
More informationMicrosoft PowerPoint - 12장_Function과 Function Block.ppt
CALL FC 10 On_1 := I 0.1 On_2 := I 0.2 Off := Q8.0 프로그램실행 Function FC10 in On_1 BOOL in On_2 BOOL out Off BOOL...... A #On_1 A #On_2 = #Off... CALL FB5, DB5 Start :=I 0.0 Stop :=I 0.1 Motor_on :=Q8.0 Speed
More information<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F >
10주차 문자 LCD 의인터페이스회로및구동함수 Next-Generation Networks Lab. 5. 16x2 CLCD 모듈 (HY-1602H-803) 그림 11-18 19 핀설명표 11-11 번호 분류 핀이름 레벨 (V) 기능 1 V SS or GND 0 GND 전원 2 V Power DD or V CC +5 CLCD 구동전원 3 V 0 - CLCD 명암조절
More informationC# Programming Guide - Types
C# Programming Guide - Types 최도경 lifeisforu@wemade.com 이문서는 MSDN 의 Types 를요약하고보충한것입니다. http://msdn.microsoft.com/enus/library/ms173104(v=vs.100).aspx Types, Variables, and Values C# 은 type 에민감한언어이다. 모든
More information<BFACBDC0B9AEC1A6C7AEC0CC5F F E687770>
IT OOKOOK 87 이론, 실습, 시뮬레이션 디지털논리회로 ( 개정 3 판 ) (Problem Solutions of hapter 7) . 반감산기와전감산기를설계 반감산기반감산기는한비트의 2진수 에서 를빼는회로이며, 두수의차 (difference, ) 와빌림수 (barrow, ) 를계산하는뺄셈회로이다. 에서 를뺄수없으면윗자리에서빌려와빼야하며, 이때빌려오는수는윗자리에서가져오므로
More information금오공대 컴퓨터공학전공 강의자료
C 프로그래밍프로젝트 Chap 13. 포인터와배열! 함께이해하기 2013.10.02. 오병우 컴퓨터공학과 13-1 포인터와배열의관계 Programming in C, 정재은저, 사이텍미디어. 9 장참조 ( 교재의 13-1 은읽지말것 ) 배열이름의정체 배열이름은 Compile 시의 Symbol 로서첫번째요소의주소값을나타낸다. Symbol 로서컴파일시에만유효함 실행시에는메모리에잡히지않음
More informationIRISCard Anywhere 5
이 빠른 사용자 가이드는 IRISCard Anywhere 5 및 IRISCard Corporate 5 스캐너의 설치와 시작을 도와 드립니다. 이 스캐너와 함께 제공되는 소프트웨어는: - Cardiris Pro 5 및 Cardiris Corporate 5 for CRM (Windows 용) - Cardiris Pro 4 (Mac OS 용) Cardiris 의
More informationMicrosoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100
2015-1 프로그래밍언어 9. 연결형리스트, Stack, Queue 2015 년 5 월 4 일 교수김영탁 영남대학교공과대학정보통신공학과 (Tel : +82-53-810-2497; Fax : +82-53-810-4742 http://antl.yu.ac.kr/; E-mail : ytkim@yu.ac.kr) 연결리스트 (Linked List) 연결리스트연산 Stack
More informationFrama-C/JESSIS 사용법 소개
Frama-C 프로그램검증시스템소개 박종현 @ POSTECH PL Frama-C? C 프로그램대상정적분석도구 플러그인구조 JESSIE Wp Aorai Frama-C 커널 2 ROSAEC 2011 동계워크샵 @ 통영 JESSIE? Frama-C 연역검증플러그인 프로그램분석 검증조건추출 증명 Hoare 논리에기초한프로그램검증도구 사용법 $ frama-c jessie
More information<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A638C0CFC2F72E BC8A3C8AF20B8F0B5E55D>
뻔뻔한 AVR 프로그래밍 The Last(8 th ) Lecture 유명환 ( yoo@netplug.co.kr) INDEX 1 I 2 C 통신이야기 2 ATmega128 TWI(I 2 C) 구조분석 4 ATmega128 TWI(I 2 C) 실습 : AT24C16 1 I 2 C 통신이야기 I 2 C Inter IC Bus 어떤 IC들간에도공통적으로통할수있는 ex)
More information설계란 무엇인가?
금오공과대학교 C++ 프로그래밍 jhhwang@kumoh.ac.kr 컴퓨터공학과 황준하 6 강. 함수와배열, 포인터, 참조목차 함수와포인터 주소값의매개변수전달 주소의반환 함수와배열 배열의매개변수전달 함수와참조 참조에의한매개변수전달 참조의반환 프로그래밍연습 1 /15 6 강. 함수와배열, 포인터, 참조함수와포인터 C++ 매개변수전달방법 값에의한전달 : 변수값,
More information학습목차 2.1 다차원배열이란 차원배열의주소와값의참조
- Part2- 제 2 장다차원배열이란무엇인가 학습목차 2.1 다차원배열이란 2. 2 2 차원배열의주소와값의참조 2.1 다차원배열이란 2.1 다차원배열이란 (1/14) 다차원배열 : 2 차원이상의배열을의미 1 차원배열과다차원배열의비교 1 차원배열 int array [12] 행 2 차원배열 int array [4][3] 행 열 3 차원배열 int array [2][2][3]
More informationA Dynamic Grid Services Deployment Mechanism for On-Demand Resource Provisioning
C Programming Practice (II) Contents 배열 문자와문자열 구조체 포인터와메모리관리 구조체 2/17 배열 (Array) (1/2) 배열 동일한자료형을가지고있으며같은이름으로참조되는변수들의집합 배열의크기는반드시상수이어야한다. type var_name[size]; 예 ) int myarray[5] 배열의원소는원소의번호를 0 부터시작하는색인을사용
More informationMicrosoft PowerPoint - 11장_데이터블록.ppt
File: PRO1_11E.1 차례 교육목표... 2 데이터저장영역... 3... 4 STEP 7 에서의데이터타입... 5 기본데이터타입.... 6 복합데이터타입... 7 ARRAY 예... 8 STRUCTURE 예... 9 어드레스우선권정의... 10 생성... 11 초기값, 실제값, 초기화, 유지... 12 입력, 저장, 다운로드, 모니터링... 13 데이터어드레싱....
More informationMicrosoft PowerPoint - additional01.ppt [호환 모드]
1.C 기반의 C++ part 1 함수 오버로딩 (overloading) 디폴트매개변수 (default parameter) 인-라인함수 (in-line function) 이름공간 (namespace) Jong Hyuk Park 함수 Jong Hyuk Park 함수오버로딩 (overloading) 함수오버로딩 (function overloading) C++ 언어에서는같은이름을가진여러개의함수를정의가능
More informationMicrosoft PowerPoint - [2009] 02.pptx
원시데이터유형과연산 원시데이터유형과연산 원시데이터유형과연산 숫자데이터유형 - 숫자데이터유형 원시데이터유형과연산 표준입출력함수 - printf 문 가장기본적인출력함수. (stdio.h) 문법 ) printf( Test printf. a = %d \n, a); printf( %d, %f, %c \n, a, b, c); #include #include
More information임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과
임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과 System call table and linkage v Ref. http://www.ibm.com/developerworks/linux/library/l-system-calls/ - 2 - Young-Jin Kim SYSCALL_DEFINE 함수
More information<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A634C0CFC2F72E BC8A3C8AF20B8F0B5E55D>
뻔뻔한 AVR 프로그래밍 The 4 th Lecture 유명환 ( yoo@netplug.co.kr) 1 시간 (Time) 에대한정의 INDEX 2 왜타이머 (Timer) 와카운터 (Counter) 인가? 3 ATmega128 타이머 / 카운터동작구조 4 ATmega128 타이머 / 카운터관련레지스터 5 뻔뻔한노하우 : 레지스터비트설정방법 6 ATmega128
More informationMicrosoft PowerPoint - o8.pptx
메모리보호 (Memory Protection) 메모리보호를위해 page table entry에 protection bit와 valid bit 추가 Protection bits read-write / read-only / executable-only 정의 page 단위의 memory protection 제공 Valid bit (or valid-invalid bit)
More informationPowerPoint Template
10 포인터 1 주소 Address( 주소 ) 메모리에는그메모리의저장장소의위치를나타내는주소값 주소 (address) 는 1 바이트마다 1 씩증가하도록메모리에는연속적인번호가구성 2 주소연산자 & & 변수 변수의주소값을알아내려면변수앞에주소연산자 & (ampersand) 를이용 주소값이용장단점 주소값을이용하면보다편리하고융통성있는프로그램이가능 그러나복잡하고어려운단점
More informationL?ungen zu den ?ungen
연습해답 SIMATIC S7 Siemens AG 1998. All rights reserved. Date: 10/18/99 File: PRO2_14e.1 Information and Knowledge for Automation 목차 패이지 교재구성... 2 S7-300 실제프로그램가능논리제어기.... 3 S7-400 실제프로그램가능논리제어기..... 4 시뮬레이터구성...
More information1 1 장. 함수와극한 1.1 함수를표현하는네가지방법 1.2 수학적모형 : 필수함수의목록 1.3 기존함수로부터새로운함수구하기 1.4 접선문제와속도문제 1.5 함수의극한 1.6 극한법칙을이용한극한계산 1.7 극한의엄밀한정의 1.8 연속
1 1 장. 함수와극한 1.1 함수를표현하는네가지방법 1.2 수학적모형 : 필수함수의목록 1.3 기존함수로부터새로운함수구하기 1.4 접선문제와속도문제 1.5 함수의극한 1.6 극한법칙을이용한극한계산 1.7 극한의엄밀한정의 1.8 연속 2 1.1 함수를표현하는네가지방법 함수 f : D E 는집합 D 의각원소 x 에집합 E 에속하는단하나의원소 f(x) 를 대응시키는규칙이다.
More informationMicrosoft Word - STL_SCL_4판_목차.doc
목차 소개 1 1 SIMATIC S7-300/400 PLC 2 1.1 PLC 의구조.. 2 1.1.1 PLC 구성요소.. 2 1.1.2 S7-300 스테이션.. 3 1.1.3 S7-400 스테이션.. 5 1.1.4 Fault-Tolerant SIMATIC.. 6 1.1.5 안전 관련 SIMATIC.. 7 1.1.6 CPU 메모리영역.. 9 1.2 분산 I/O..
More informationRHEV 2.2 인증서 만료 확인 및 갱신
2018/09/28 03:56 1/2 목차... 1 인증서 확인... 1 인증서 종류와 확인... 4 RHEVM CA... 5 FQDN 개인 인증서... 5 레드햇 인증서 - 코드 서명 인증서... 6 호스트 인증... 7 참고사항... 8 관련링크... 8 AllThatLinux! - http://allthatlinux.com/dokuwiki/ rhev_2.2_
More information컴파일러
YACC 응용예 Desktop Calculator 7/23 Lex 입력 수식문법을위한 lex 입력 : calc.l %{ #include calc.tab.h" %} %% [0-9]+ return(number) [ \t] \n return(0) \+ return('+') \* return('*'). { printf("'%c': illegal character\n",
More information<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>
리눅스 오류처리하기 2007. 11. 28 안효창 라이브러리함수의오류번호얻기 errno 변수기능오류번호를저장한다. 기본형 extern int errno; 헤더파일 라이브러리함수호출에실패했을때함수예 정수값을반환하는함수 -1 반환 open 함수 포인터를반환하는함수 NULL 반환 fopen 함수 2 유닉스 / 리눅스 라이브러리함수의오류번호얻기 19-1
More informationUI TASK & KEY EVENT
2007. 2. 5 PLATFORM TEAM 정용학 차례 CONTAINER & WIDGET SPECIAL WIDGET 질의응답및토의 2 Container LCD에보여지는화면한개 1개이상의 Widget을가짐 3 Container 초기화과정 ui_init UMP_F_CONTAINERMGR_Initialize UMP_H_CONTAINERMGR_Initialize
More informationMicrosoft PowerPoint - chap06-1Array.ppt
2010-1 학기프로그래밍입문 (1) chapter 06-1 참고자료 배열 박종혁 Tel: 970-6702 Email: jhpark1@snut.ac.kr 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- 배열의선언과사용 같은형태의자료형이많이필요할때배열을사용하면효과적이다. 배열의선언 배열의사용 배열과반복문 배열의초기화 유연성있게배열다루기 한빛미디어
More information11장 포인터
Dynamic Memory and Linked List 1 동적할당메모리의개념 프로그램이메모리를할당받는방법 정적 (static) 동적 (dynamic) 정적메모리할당 프로그램이시작되기전에미리정해진크기의메모리를할당받는것 메모리의크기는프로그램이시작하기전에결정 int i, j; int buffer[80]; char name[] = data structure"; 처음에결정된크기보다더큰입력이들어온다면처리하지못함
More information구조체정의 자료형 (data types) 기본자료형 (primitive data types) : char, int, float 등과같이 C 언어에서제공하는자료형. 사용자정의자료형 (user-defined data types) : 다양한자료형을묶어서목적에따라새로운자료형을
(structures) 구조체정의 구조체선언및초기화 구조체배열 구조체포인터 구조체배열과포인터 구조체와함수 중첩된구조체 구조체동적할당 공용체 (union) 1 구조체정의 자료형 (data types) 기본자료형 (primitive data types) : char, int, float 등과같이 C 언어에서제공하는자료형. 사용자정의자료형 (user-defined
More information<B4EBC7D0BCF6C7D02DBBEFB0A2C7D4BCF62E687770>
삼각함수. 삼각함수의덧셈정리 삼각함수의덧셈정리 삼각함수 sin (α + β ), cos (α + β ), tan (α + β ) 등을 α 또는 β 의삼각함수로나 타낼수있다. 각 α 와각 β 에대하여 α >0, β >0이고 0 α - β < β 를만족한다고가정하 자. 다른경우에도같은방법으로증명할수있다. 각 α 와각 β 에대하여 θ = α - β 라고놓자. 위의그림에서원점에서거리가
More informationC 언어 프로그래밊 과제 풀이
과제풀이 (1) 홀수 / 짝수판정 (1) /* 20094123 홍길동 20100324 */ /* even_or_odd.c */ /* 정수를입력받아홀수인지짝수인지판정하는프로그램 */ int number; printf(" 정수를입력하시오 => "); scanf("%d", &number); 확인 주석문 가필요한이유 printf 와 scanf 쌍
More informationStuduino소프트웨어 설치
Studuino 프로그래밍환경 Studuino 소프트웨어설치 본자료는 Studuino 프로그래밍환경설치안내서입니다. Studuino 프로그래밍 환경의갱신에따라추가 / 수정될수있습니다. 목차 1. 소개... 1 2. Windows... 2 2.1. 프로그래밍환경설치... 2 2.1.1. 웹설치버전설치방법... 2 2.2. Studuino 프로그래밍환경실행...
More informationUsing Libraries
라이브러리사용 FC 100 FC 101 FC 102 FC 103 목차 페이지 라이브러리에서흥미로운사실... 2 표준라이브러리의설정및내용... 3 시스템함수에서흥미로운사실... 4 시스템함수에대한개요 (1부)... 5 시스템함수에대한개요 (2부)... 6 시스템함수에대한개요 (3부)... 7 시스템함수에대한개요 (4부)... 8 시스템함수에대한개요 (5부)...
More informationMicrosoft PowerPoint 자바-기본문법(Ch2).pptx
자바기본문법 1. 기본사항 2. 자료형 3. 변수와상수 4. 연산자 1 주석 (Comments) 이해를돕기위한설명문 종류 // /* */ /** */ 활용예 javadoc HelloApplication.java 2 주석 (Comments) /* File name: HelloApplication.java Created by: Jung Created on: March
More information쓰리 핸드(삼침) 요일 및 2405 요일 시간, 및 요일 설정 1. 용두를 2의 위치로 당기고 반시계방향으로 돌려 전날로 를 설정합니다. 2. 용두를 시계방향으로 돌려 전날로 요일을 설정합니다. 3. 용두를 3의 위치로 당기고 오늘 와 요일이 표시될 때까지 시계방향으로
한국어 표준 설정안내 서브 초침 시간 및 설정 1. 용두를 2의 위치로 뽑아냅니다. 2. 용두를 시계방향 또는 반시계방향으로 돌려(모델에 따라 다름) 를 전날로 설정합니다. 3. 용두를 3의 위치로 당기고 현재 가 표시될 때까지 시계방향으로 돌립니다. 4. 용두를 계속 돌려 정확한 오전/오후 시간을 설정합니다. 5. 용두를 1의 위치로 되돌립니다. 169 쓰리
More information프로그래밍개론및실습 2015 년 2 학기프로그래밍개론및실습과목으로본내용은강의교재인생능출판사, 두근두근 C 언어수업, 천인국지음을발췌수정하였음
프로그래밍개론및실습 2015 년 2 학기프로그래밍개론및실습과목으로본내용은강의교재인생능출판사, 두근두근 C 언어수업, 천인국지음을발췌수정하였음 CHAPTER 9 둘중하나선택하기 관계연산자 두개의피연산자를비교하는연산자 결과값은참 (1) 아니면거짓 (0) x == y x 와 y 의값이같은지비교한다. 관계연산자 연산자 의미 x == y x와 y가같은가? x!= y
More informationMicrosoft PowerPoint - chap05-제어문.pptx
int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); 1 학습목표 제어문인,, 분기문에 대해 알아본다. 인 if와 switch의 사용 방법과 사용시 주의사항에 대해 알아본다.
More information윈도우즈프로그래밍(1)
제어문 (2) For~Next 문 윈도우즈프로그래밍 (1) ( 신흥대학교컴퓨터정보계열 ) 2/17 Contents 학습목표 프로그램에서주어진특정문장을부분을일정횟수만큼반복해서실행하는문장으로 For~Next 문등의구조를이해하고활용할수있다. 내용 For~Next 문 다중 For 문 3/17 제어문 - FOR 문 반복문 : 프로그램에서주어진특정문장들을일정한횟수만큼반복해서실행하는문장
More informationPowerPoint Presentation
객체지향프로그래밍 클래스, 객체, 메소드 ( 실습 ) 손시운 ssw5176@kangwon.ac.kr 예제 1. 필드만있는클래스 텔레비젼 2 예제 1. 필드만있는클래스 3 예제 2. 여러개의객체생성하기 4 5 예제 3. 메소드가추가된클래스 public class Television { int channel; // 채널번호 int volume; // 볼륨 boolean
More information슬라이드 1
3. 자료와변수 3.1 자료형 자료형 컴퓨터는숫자 (= 데이터 ) 를다룬다. 컴퓨터가다룰수있는숫자의유형이있다. C 언어에서의자료형 크기 (byte) 정수형 ( 문자형 ) char 1 정수형 실수형 ( 부동소수형 ) short 2 int 4 long 4 long long 8 float 4 double 8 long double 8 / 16 강 C 프로그래밍 3
More informationC++ Programming
C++ Programming 예외처리 Seo, Doo-okok clickseo@gmail.com http://www.clickseo.com 목 차 예외처리 2 예외처리 예외처리 C++ 의예외처리 예외클래스와객체 3 예외처리 예외를처리하지않는프로그램 int main() int a, b; cout > a >> b; cout
More informationstatistics
수치를이용한자료요약 statistics hmkang@hallym.ac.kr 한림대학교 통계학 강희모 ( 한림대학교 ) 수치를이용한자료요약 1 / 26 수치를 통한 자료의 요약 요약 방대한 자료를 몇 개의 의미있는 수치로 요약 자료의 분포상태를 알 수 있는 통계기법 사용 중심위치의 측도(measure of center) : 어떤 값을 중심으로 분포되어 있는지
More informationvRealize Automation용 VMware Remote Console - VMware
vrealize Automation 용 VMware Remote Console VMware Remote Console 9.0 이문서는새버전으로교체되기전까지나열된각제품버전및모든이후버전을지원합니다. 이문서에대한최신버전을확인하려면 http://www.vmware.com/kr/support/pubs 를참조하십시오. KO-002230-00 vrealize Automation
More information윤성우의 열혈 TCP/IP 소켓 프로그래밍
C 프로그래밍프로젝트 Chap 22. 구조체와사용자정의자료형 1 2013.10.10. 오병우 컴퓨터공학과 구조체의정의 (Structure) 구조체 하나이상의기본자료형을기반으로사용자정의자료형 (User Defined Data Type) 을만들수있는문법요소 배열 vs. 구조체 배열 : 한가지자료형의집합 구조체 : 여러가지자료형의집합 사용자정의자료형 struct
More informationadfasdfasfdasfasfadf
C 4.5 Source code Pt.3 ISL / 강한솔 2019-04-10 Index Tree structure Build.h Tree.h St-thresh.h 2 Tree structure *Concpets : Node, Branch, Leaf, Subtree, Attribute, Attribute Value, Class Play, Don't Play.
More informationMicrosoft PowerPoint - ch10 - 이진트리, AVL 트리, 트리 응용 pm0600
균형이진탐색트리 -VL Tree delson, Velskii, Landis에의해 1962년에제안됨 VL trees are balanced n VL Tree is a binary search tree such that for every internal node v of T, the heights of the children of v can differ by at
More informationPowerPoint 프레젠테이션
Lecture 02 프로그램구조및문법 Kwang-Man Ko kkmam@sangji.ac.kr, compiler.sangji.ac.kr Department of Computer Engineering Sang Ji University 2018 자바프로그램기본구조 Hello 프로그램구조 sec01/hello.java 2/40 자바프로그램기본구조 Hello 프로그램구조
More information