상태비트의존적인인스트럭션 File: PRO2_01e.1 Information and 목차 페이지 S7-CPU의레지스터및메모리영역... 2 상태워드구조.... 3 상태비트검사..... 4 상태비트인스트럭션........ 5 블록호출또는복잡한함수에서의 BR 비트및 ENO... 6 상태비트에의존적인점프함수... 7 조건코드에의존적인점프함수..... 8 점프분산자의프로그래밍... 9 루프인스트럭션의프로그래밍... 10 블록엔드에대한인스트럭션... 11 연습 1.1: 빼기후점프... 12 연습 1.2: 곱하기후점프..... 13 연습 1.3: 점프분산자프로그래밍..... 14 Page 1
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 메모리영역 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
상태워드구조 상태워드에서비트의중요도 비트할당값중요도 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 이진법결과 9...15 할당 2 9..2 10 안됨 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
상태비트검사 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 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
상태비트인스트럭션 인스트럭션의미보기 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 ( ) File: PRO2_01e.5 Information and L STW/T STW 또한전체상태워드를로드해서이후검사 ( 스캔 ) 을위해저장할수있습니다. L STW 상태워드로드 T MW 114 메모리워드 114 에저장예를들어 T STW 인스트럭션을이용해상태워드를이전에저장된상태워드와함께로드할수있습니다. 0, 2, 3, 9..15 비트는이인스트럭션에영향받지않습니다. RLO 변경 STEP7 에는 RLO 에영향을주기위한많은인스트럭션이있습니다. SET 을이용해논리연산의결과를 1 로, CLR 을이용해 0 으로설정합니다. 이와유사하게상태비트 STA 도 1 또는 0 으로설정됩니다. 두개의인스트럭션모두조건과관계없이실행됩니다. SET 와 CLR 은또한상태비트 OR 과 \FC 를리셋합니다. 즉, 새검사문자열이이후에시작됩니다. 인스트럭션 NOT 는논리연산의결과를반대로합니다. BR 비트 BR 비트는 RLO 가 RLO 변경인스트럭션이전에저장될수있는내부의비트메모리를표시합니다. 이렇게함으로써이후에인터럽트된비트문자열을다시시작할때 RLO 를다시사용할수있습니다. 함수블록이나함수를쓴후 LAD 에서부르려한다면 BR 비트를제공해야합니다. BR 비트는 LAD 상자에대한작동출력 (ENO) 에대응합니다. BR 설정및 SAVE를이용해RLO를이진법결과로저장합니다 ( 레지스터 ). SAVE는신호 리셋 상태를 RLO에서상태비트 BR로전송합니다. SAVE 는모든조건과관계없이실행되며더이상의상태비트에영향을주지않습니다. Page 5
블록호출또는복잡한함수에서의 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 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
상태비트에의존적인점프함수 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 자의영숫자로구성될수있습니다. 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
조건코드에의존적인점프함수 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 자의영숫자로구성될수있습니다. 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
점프분산자의프로그래밍 레이블 : 레이블 _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... File: PRO2_01e.9 Information and 점프분산자 참고 점프분산자 JL 은점프번호에의존하는블록에서프로그램부분으로대상이지정된점프를허용합니다. JL 인스트럭션은 JU 점프함수목록과함께작동합니다. 이목록은 JL 바로뒤에나오며최고 255 개의입력을포함할수있습니다. JL 의경우목록의끝, 즉목록후의첫번째인스트럭션을가리키는점프레이블이있습니다. JU 인스트럭션만이 JL < 점프레이블 > 과 < 점프레이블 >: < 인스트럭션 > 사이에올수있습니다. 0 이 ACCU1-L-L 에위치하면첫번째인스트럭션이실행되고 1 이위치하면두번째인스트럭션이실행됩니다. 숫자가목록길이보다크면 JL 은목록의끝으로분기합니다. 인스트럭션 JL 은모든조건에관계없이실행되며 JL 의경우상태비트를변경하지않습니다. 점프는전체블록길이이내에서 ( 심지어네트워크경계를넘어서 ) 발생할수있습니다. 이런이유로점프레이블의이름은한블록내에서고유해야합니다. 점프거리가점프레이블에의해서점프에할당될수있기때문에한프로그램블록내에서의점프만이가능합니다. 점프레이블의길이는영숫자 4 자로제한되어있으며따라서첫번째글자는문자여야합니다. 점프레이블에서는대문자와소문자를가립니다. 인스트럭션은. 으로구분되어점프레이블후에반드시와야만합니다. 최대점프거리는프로그램코드의 -32768 워드또는 +32767 워드입니다. 점프할수있는실제최대명령문숫자는프로그램에사용되는명령문의혼합에달려있습니다 ( 한단어, 두단어, 세단어명령문 ). Page 9
루프인스트럭션의프로그래밍 레이블 : 작동모드 루프카운터초기화 루프카운터로전송 여러번실행될코드절 보기 : 4 개의스캔을가진루프인스트럭션 L +4 // 루프카운터로드 다음 : T MW10 // 루프의시작. // 코드. // 코드 ACCU1 에서루프카운터로드. // 코드 L MW10 // 다시루프카운터로드 예 루프 ( 점감 ACCU1 ACCU1 <> 0?) 아니오 계속 LOOP NEXT // 루프카운터가 -1 이면 // NEXT 점프로점프 // Accu 1> 0 이면레이블 File: PRO2_01e.10 Information and 루프인스트럭션루프인스트럭션 LOOP 는단순화된루프프로그래밍을허용합니다. 루프인스트럭션을프로그래밍하기위해실행될루프스캔의원하는회수를 ACCU1-L 에로드합니다. LOOP 는 ACCU1 의오른쪽워드를 0 에서 65535 까지의부호없는 16 비트숫자로해석합니다. LOOP 인스트럭션을실행할때마다 ACCU1-L 의값은 1 만큼감소합니다. 이후에값은 0 과비교됩니다. 값이 0 과같지않으면 LOOP 인스트럭션에서지정된점프레이블로점프가발생합니다. 값이 0 이면점프는발생하지않고대신에바로뒤에오는인스트럭션이처리됩니다. 참고 루프카운터가 0 으로초기화되면안됩니다. 0 으로초기화되면루프가 65535 번실행됩니다. Page 10
블록엔드에대한인스트럭션 BE 블록엔드 BEU 무조건적블록엔드 ( 한블록이내 ) BEC 조건적블록엔드 (RLO 에의존 ) (RET) LAD 디스플레이에서 RET FBD 디스플레이에서 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
연습 1.1: 빼기연산후점프 푸시휠스위치 1 2 3 4 시뮬레이터에서스위치토글 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 DINT 로변환 BTD 2 15 2 7 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 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
연습 1.2: 곱하기연산후점프 푸시휠스위치 1 2 3 4 시뮬레이터의토글스위치 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 DINT 로변환 BTD 2 15 2 7 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 File: PRO2_01e.13 Information and 연습목적 곱하기결과에따라실행되는점프함수의프로그래밍에익숙해지기 문제정의다음기능을가진 FC 12 를만듭니다. 1. 데케이드스위치와토글스위치의입력워드를누산기의 BCD 코드값 ( 부호없이 ) 으로로드합니다. 2. 얻어진값을 DINT 로전환합니다. 전환을위해 BTD 명령 (BCD_TO_DINT) 을사용합니다. 이명령을사용하면읽은값이양의 4 자리십진수로해석됩니다. 3. 16 비트곱하기를실행합니다. 4. 과잉 이되었는지계산결과를검사하고다음행동을취합니다. 과잉 : 디스플레이를삭제합니다. 과잉없음 : 대응하는양의 BCD 숫자로결과를전환하고그결과 ( 적어도 4 자리수 ) 를디스플레이에출력합니다. 참고 : 점프명령 "JO [Label] 를사용하여 과잉 여부를테스트합니다. 자릿수설정중의전환오류를숨기기위해인스트럭션 NOP 0 과함께 OB121 을프로그램합니다. 5. OB1 에서 FC12 를불러 S7-CPU 에서프로그램 (OB1,OB121, FC12) 을다운로드합니다. 6. 프로그램을테스트합니다. Page 13
연습 1.3: 점프분산자프로그래밍 함수 : 푸시휠스위치 1 [JL 레이블 ] 1 2 3 4 5 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 File: PRO2_01e.14 Information and 연습목적 목록을이용해점프의사용에익숙해지기 문제정의다음기능을가진 FC 13 을만듭니다. 1 에서 5 까지중한숫자가 INT 데이터종류에서입력파라미터 Select 를통해전달될수있습니다. 전달된숫자에따라다음행동이실행됩니다. 1: 컨베이어벨트가최종어셈블리로이동합니다. 2: 컨베이어벨트가반대방향으로이동합니다. 3: 컨베이어벨트가중지합니다. 4: 경적이켜집니다. 5: 경적이꺼집니다. 다른숫자는모두오류로해석됩니다. 즉, 출력파라미터 ENO 는 FALSE 로설정됩니다. 절차 1. 위에설명된기능을가진 FC13 을만듭니다. 목록으로점프를실행할때오직절대점프만이사용될수있음에주의합니다. 2. 128.0 에의존하는 OB1 에서 FC13 을호출합니다. 누산기의데케이드스위치를이용해서전달될입력파라미터 Select 값을조정하며, 이값은상승에지로 128.0 에적용됩니다. 4. 오류가발생하면, 즉 Select 의값이 5 보다크거나 1 보다작으면 Q36.0 이파라미터 ENO 를통해 OB1 에설정됩니다. 5. OB1 과 FC13 을다운로드하고프로그램을테스트합니다. Page 14