OB (Organization Block) 블록 운영시스템 OB1 FC FB FB FC SFC System Functions SFB System Function Blocks 다른 OB File: PRO1_13E.1 차례 교육목표... 2 Organization Blocks 개요... 3 Warm Restart 와 Hot Restart 시의구동 OB... 4 Cold Restart 시의구동 OB... 5 반복적인프로그램인터럽트... 6 Time-of-Day 인터럽트 (OB10)... 7 주기적인인터럽트 (OB35)... 8 하드웨어인터럽트 (OB40)... 9 비동기에러OB... 10 진단인터럽트 (OB82)... 11 동기에러..... 12 OB 구동정보... 13 OB100 이용시 OB 구동정보의예...14 연습문제 1: 구동타입 (OB100) 디스플레이와인식... 15 연습문제 2: 슬레이브문제발생시반응... 17 페이지 1
교육목표... 임시변수의목적을이해합니다.... 사용가능한 OB 블록을이해합니다.... Warm Restart, Hot Restart, Cold Restart 의차이를이해합니다.... 인터럽트의원리를이해합니다.... Time - of - Day 인터럽트, Cyclic 인터럽트, 하드웨어인터럽트, Diagnostic 인터럽트를이해합니다.... 에러 OB 사용을이해합니다.... OB 기동정보를이해합니다. File: PRO1_13E.2 페이지 2
OB 블록종류 구동 OB 100 OB 101 OB 102 반복프로그램실행 주기적인프로그램실행 이벤트기반의프로그램실행 OB 1 OB 10 에서 17 (Time-of-day 인터럽트 ) OB 20 에서 23 (Time-delay 인터럽트 ) OB 80 에서 87 ( 비동기에러 ) OB 30 에서 38 (Cyclic 인터럽트 ) OB 40 에서 47 ( 하드웨어인터럽트 ) OB 121, 122 ( 동기에러 ) 인터럽트 OB 에러 OBs File: PRO1_13E.3 CPU 기동반복적인프로그램주기적인프로그램이벤트기반프로그램 기동프로그램은전원이들어온후혹은운전모드가전환된후 ( 프로그램로더 (PG) 에의해혹은 CPU 키스위치를통해 ) 반복적인프로그램을시작하기전에실행되는프로그램입니다. OB 100 에서 OB 102 가제공됩니다. 예를들면이블록에서통신연결을설정할수있습니다. 연속적으로수행이되는프로그램은 OB1 블록에저장됩니다.OB1 프로그램이종료가되면새로운스캔이프로세스이미지업데이트와더불어시작이되고 OB1 의첫번째명령문을실행합니다. 스캔타임과시스템응답시간은이러한동작들의결과입니다. 응답시간은 CPU 운영시스템의실행시간과사용자프로그램을실행시키는데소요되는시간을의미합니다. 즉입력신호에대해얼마나빠르게출력이나갈수있는가하는응답시간은스캔타임 x 2 입니다. 일정한주기의프로그램수행은고정된간격을갖고주기적인프로그램수행을인터럽트할수있습니다. OB 30 에서 OB 38까지의주기적인인터럽트는사전에설정해둔시간에맞추어실행이되는블록입니다. 예를들면 100 ms 마다해당 OB 가수행이됩니다. 샘플링간격이있는 PID 명령이이러한블록에해당합니다. Time of Day 인터럽트는 OB 블록이특정시간에실행되는것을의미합니다. 예를들어매일17:00 ( 오후 5시 ) 에데이터를저장하는프로그램이실행됩니다. 하드웨어인터럽트는프로세스이벤트에빠르게응답하는데사용될수있습니다. 이벤트가발생하면프로그램수행에바로인터럽트가걸리고해당프로그램이실행됩니다. Time of Day 인터럽트는일정한시간이흐른뒤에프로세스이벤트에응답을합니다. 에러 OB 는예를들어백업배터리가문제가생기면시스템이어떻게응답할것인가를결정하게합니다. 페이지 3
Warm Restart 와 Hot Restart 의구동 OB STOP 상태의 CPU ( 모든출력모듈은안전상태로전환됨 ) 자동 S7-300 / 400 Power ON 웜재기동 (Warm Restart) S7-300 STOP->RUN 수동 S7-400 STOP->RUN + CRST 프로세스이미지, 비유지 M, T, C 데이터삭제 핫재기동 ( 수동 ) (Hot Restart) S7-400 만해당 ( 하드웨어구성시설정 ) STOP -> RUN + WRST OB 101 실행 나머지프로그램실행 PIQ 삭제 ( 파라미터지정가능 ) OB 100 실행 PIQ 출력 재기동을위한모니터링타임초과? 아니오 예 정지 PII 읽기 PIQ 출력 사이클 OB1 실행 PIQ 출력 사이클 PII 읽기 OB1 실행 PIQ 출력 File: PRO1_13E.4 Warm Restart Hot Restart Warm Restart 는프로세스이미지 (PII, PIQ) 와모든비유지비트메모리, 비유지타이머와비유지카운터값을삭제합니다. 유지비트메모리, 유지타이머, 유지카운터, 데이터블록의현재값들이유지됩니다. ( 백업배터리로값들이유지됩니다. S7-300 에서는 EPROM 이사용되고있고 CPU 메모리유지설정이되어있으면배터리없이도백업이됩니다 ) OB 100 에저장된프로그램은한번만수행이되고다음엔반복적인프로그램실행이시작됩니다. Hot Restart 는모든어드레스 ( 비트메모리, 타이머, 카운터, 프로세스이미지, 데이터블록의현재값 ) 의상태가유지됩니다. OB 101 에있는프로그램은한번만수행이됩니다. 프로그램은인터럽트가발생된프로그램지점 ( 정전이되거나 CPU 가 STOP 이됨으로인해 ) 에서다시시작됩니다. 이나머지스캔타임 ("Residual Cycle Time") 이실행된후에반복적인프로그램수행이다시시작됩니다. 페이지 4
Cold Restart 시의구동 OB 콜드재기동 (Cold Restart) 자동 CPU 318-2 CPU 417-4 전원 ON PII, 모든 M, T, C 데이터삭제데이터블록초기화 OB 102 실행 PIQ 출력인에이블 PII 읽기 사이클 OB1 실행 PIQ 출력 File: PRO1_13E.5 Cold Restart S7-400 과 CPU 318-2 는기본적인기동 OB 외에부가적인기동 OB 유형이있습니다. 이러한유형의기동은하드웨어구성화면에서 CPU 파라미터를구성할때설정할수있습니다. Cold Restart 와 Warm Restart 사이의유일한차이는프로세스이미지외에모든비트메모리, 타이머, 카운터값이삭제되는것입니다.( 유지메모리포함 ) 데이터블록의현재값들도초기값 (Initial Value) 이나 CPU 에서다운로드된값으로오버라이팅 (Overwrite) 됩니다. 페이지 5
반복적인프로그램인터럽트 OB82(Prio.26) = 에러처리.PIW 352 아나로그입력단에서의단선 (Wire break) 시실행 OB1 은반복적으로실행됩니다. OB10 (Prio.2) = Time-of-day 인터럽트. 9:30 이후로매분실행 OB20 (Prio.3) = 물품이감지되고난후 3.2.5 초후에실행시작... 다른 OB 에의해인터럽트될때까지 OB번호.OB 타입 OB 1 반복실행 OB 10 Time-of-day 인터럽트 OB 20 Time-delay 인터럽트 OB 35 주기적인인터럽트 OB 40 하드웨어인터럽트 OB 82 에러처리 우선권 1 2 3 12 16 25 / 28 File: PRO1_13E.6 OB 호출 OB 블록은 CPU 운영시스템과사용자프로그램간의인터페이스라고할수있습니다. OB 블록은운영시스템만이호출할수있습니다. 여러이벤트별로관련 OB 블록이기동합니다.(Time of Day 인터럽트, 하드웨어인터럽트 - 슬라이드참조 ) 주기적인인터럽트 운영시스템이여러 OB 를호출할때는 OB 1 이가장낮은우선권을갖고있기때문에 OB1 에인터럽트를걸게됩니다. OB1 프로그램을인터럽트시키고자기프로그램을수행시킵니다. 그후 OB1 은인터럽트가걸렸던지점으로다시돌아오게됩니다. 현재실행되고있는 OB 보다우선권이높은 OB 가호출이되면낮은우선권의 OB 에는현재의명령문을마친후인터럽트가걸리게됩니다. 운영시스템은인터럽트가걸린블록의전체레지스터스택을저장합니다. 레지스터정보는운영시스템이인터럽트되었던블록을다시실행시키고자할때복원됩니다. 우선권 모든 OB 프로그램실행은더높은우선권이벤트 (OB) 에의해인터럽트될수있습니다. 우선권은 0 에서 28 까지나누어져있으며여기서 0 가가장낮은우선권을의미하고 28 이가장높은우선권을의미합니다. OB82 는 OB1 이실행중에는우선권 25 를가지며기동중에는 28 을가집니다. 동일한우선권을갖는 OB 는서로를인터럽트할수없고인식된순서대로차례로기동을합니다. 페이지 6
Time-of-Day 인터럽트 (OB10) File: PRO1_13E.7 Time of Day 인터럽트 Time of Day 인터럽트는 OB 10 에작성된프로그램을주어진시간에한번혹은그시간이후주기적 ( 매분, 매시간, 매일, 매주, 매월, 매년한번 ) 으로실행시킵니다. Time of Day 인터럽트는 HWConfig 에서구성합니다. 언제어떻게 OB 10 을실행시킬것인가는 CPU -> Object Properties -> Time of Day Interrupt 탭에서구성합니다. "Active 참조 "Active" 체크박스를클릭하면 Time of Day 인터럽트 OB 가 CPU Warm Restart 될때마다실행됩니다. 런타임시 SFC 들이 Time of Day 인터럽트를제어할수있습니다. 다음과같은 SFC 들이사용가능합니다. - 시작날짜, 시간, 주기를설정합니다. - Time of Day 인터럽트를취소합니다. - Time of Day 인터럽트를활성화합니다. - Time of Day 인터럽트를요청합니다. S7-400 S7-400 PLC 에서는 8 가지의 Time of Day 인터럽트 OB (OB 10 에서 OB 17) 를제공합니다. 페이지 7
주기적인인터럽트 (OB35) RUN OB35 OB35 OB35 간격간격간격 우선권 12 OB1 OB1 O B1 OB1 OB1 OB1 OB1 O B1 우선권 1 File: PRO1_13E.8 주기적인인터럽트주기적인인터럽트는일정한시간간격마다블록을실행시킬때사용합니다. S7-300 에서의주기적인인터럽트 OB 는 OB 35 입니다. OB 35 의기본적인인터럽트주기는 100 ms 입니다. 사용자는이값을 1 ms 에서 1 분사이의값으로변경할수있습니다. 시작시간 간격 참조 시간 - 제어인터럽트 (Time-controlled interrupt) 를활성화시킬때 "Starting time" 과연관된시간간격을지정합니다. 시작시간은 CPU 가 STOP 에서 RUN 으로전환이될때마다시작됩니다. 지정하는시간간격이프로그램실행에필요한시간보다길어야만합니다. 운영시스템은지정한시간에 OB 35 를호출합니다. OB 35 가그시간에도아직활성화되어있다면운영시스템은다시 OB 80 ( 주기적인인터럽트에러 OB) 를호출합니다. 런타임시시스템기능블록 (SFC, SFB) 으로주기적인인터럽트를제어할수없습니다. S7-400 S7-400 에서는 9 개의주기적인인터럽트 OB 를제공합니다. 페이지 8
하드웨어인터럽트 (OB40) 하드웨어구성 아나로그입력속성 CPU 속성 아나로그입력모듈 +27648 상위리미트 0 하위리미트 File: PRO1_13E.9 하드웨어인터럽트 하드웨어인터럽트 OB (OB 40) 안에있는프로그램은관련이벤트가발생했을때실행이됩니다. 모듈에관련된신호들이하드웨어인터럽트를발생시킬수있습니다. - 파라미터를설정하는 I/O 모듈 (DI,DO,AI,AO) 들은 HWConfig 에서하드웨어인터럽트를트리거시키는신호를지정할수있습니다. -CP 와 FM 모듈의경우에는모듈과관련된구성소프트웨어를사용하여인터럽트특성을지정할수있습니다. 예 위예제에서아날로그입력모듈에대한한계치가설정이되어있습니다. 만약측정값이한계치를넘어서면 OB 40 이호출됩니다. 이는 OB1 에서비교기능으로 FB 나 FC 를호출하는것과도같습니다. 그러나 OB 40 을사용하면프로그램을별도로작성할필요가없습니다. OB 40 안에인터럽트생성과프로세스제어와관련된프로그램을작성할수있습니다. S7-400 S7-400 은 8 개의하드웨어인터럽트 OB (OB 40 에서 OB 47) 를제공합니다 페이지 9
비동기에러 OB 에러타입예 OB 타임에러최대스캔사이클타임초과 OB80 전원장치폴트백업배터리이상 OB81 우선권 26 진단인터럽트진단기능모듈입력단에서의단선 (Wire break) OB82 장착 / 탈착인터럽트 S7-400 에서운전중모듈탈착 OB83 CPU 하드웨어폴트 MPI 인터페이스에서의신호레벨이상 OB84 프로그램실행에러프로세스이미지업데이트에러 ( 모듈이상 ) OB85 랙폴트확장랙이나 DP 슬레이브이상 OB86 통신에러메시지프레임읽기에러 OB87 26 / 28 File: PRO1_13E.10 비동기에러응답참조우선권 비동기에러는 PLC 기능상의오류를말합니다. 이에러는프로그램실행과는무관하게발생을하며프로그램으로추적이되지않습니다.( 모듈의 diagnostic interrupt 같이 ) RUN 모드중에오류가인지가되고관련에러 OB 가프로그램되었다면 OB 가호출이되고그안에있는프로그램이수행이됩니다. 이프로그램은다음을포함할수있습니다. - 사이렌을동작시키는명령어 -CPU 가 STOP 이된이후데이터를백업시키는명령어 -CPU 를 STOP 으로전환시키지않으면서오류가발생하는횟수를기록하는프로그램 특정오류에대한에러 OB 가존재하지않으면 CPU 는자동적으로 STOP 모드로전환이됩니다. 비동기에러로인해호출된 OB 는다른인터럽트나에러 OB 보다높은우선권이있기때문에즉시실행이됩니다. - 낮은우선권 (<26) 의 OB 가실행이되고있는동안에러가발생했다면우선권이 26 입니다. - 기동 OB ( 우선권 27) 가실행이되고있는동안에러가발생했다면우선권이 28 입니다. 페이지 10
진단인터럽트 (OB82) 아나로그입력모듈 아나로그입력속성 하드웨어구성 : CPU 속성 단선 +27648 0 File: PRO1_13E.11 Diagnostic Interrupt 진단이가능한모듈 - 트레이닝키트의아날로그모듈 - 이에러를인지하면 CPU 운영체제는 OB 82 를호출합니다. OB 82 는에러가발생했을때뿐아니라제거되지않았을때에도호출이됩니다. OB 82 가존재하지않으면 CPU 는 STOP 상태로전환이됩니다. 예비동기에러인터럽트 OB 82 는다음과같은상황에서호출이됩니다. 예를들면, - 진단기능이있는모듈에서와이어브레이크 (Wire Break) 가난경우 - 아날로그모듈로입력되는전원공급장치가고장난경우 - 아날로그입력모듈의측정범위가초과되는경우등 페이지 11
동기에러 에러타입예 OB 우선권 프로그래밍에러 프로그램에서호출한블록이 CPU 에존재하지않음 OB121 엑세스에러 존재하지않거나고장난모듈이어드레싱됨 ( 존재하지않는 I/O 모듈을직접엑세스함 ) OB122 에러 OB 와동일 File: PRO1_13E.12 동기에러 동기에러는프로그램에러이며에러가발생하면프로그램의특정명령문까지추적이됩니다. 동기에러에대한에러 OB 는프로그램의일부로수행이되며에러가인지되었을때실행된블록과같은우선권을가지고수행이됩니다. 페이지 12
OB 구동정보 L- 바이트 0 / 1 구동이벤트 연속되는번호 관리정보 2 / 3 우선권 OB 번호. 4 / 5 L- 바이트데이터포맷 8, 9, 10, 11 6 / 7 8 / 9 10 / 11 추가정보 1 ( 인터럽트모듈의구동정보등 ) 추가정보 2 ( 인터럽트상태등 ) 추가정보 3 ( 채널번호등 ) 구동정보 12 / 13 년도 월 14 / 15 일자 시 구동시간 16 / 17 분 초 18 / 19 1/10 초, 1/100 초 1 /1000 초, 주 File: PRO1_13E.13 기동정보 (Start Information) CPU 운영시스템이 OB 를호출할경우로컬데이터스택은동일한시작정보를갖게됩니다. 기동정보는 20 개바이트의길이를가지며 OB 가실행을시작하면사용자가관련정보를사용할수있습니다. 기동정보 (Start Information) 액세스 STEP 7 소프트웨어는표준선언테이블을가지고있으며기동정보심벌액세스가가능합니다. 참조 사용자는표준선언테이블을변경할수있습니다. 변수들의의미는온라인도움말이나 "Standard and System Function" 매뉴얼을참조하십시오. 페이지 13
OB100 이용시 OB 구동정보의예 Address 0 / 1 2 / 3 구동이벤트우선권 구동요청 OB 번호 4 / 5 6 / 7 8 / 9 10 / 11 예비영역 CPU 가 STOP 으로전환되는이벤트발생횟수 현재구동작업에대한추가정보??? 12 / 13 14 / 15 16 / 17 18 / 19 년도일자분 1/10 초, 1/100 초 월시간초 1 /1000 초, 주 File: PRO1_13E.14 구동정보운영시스템이구성블록을호출할때, 로컬데이터스택에있는일관된시스템시작정보가이용할수있습니다. 이구동정보는20 바이트의길이를가지며, OB의구동이실행된후에이용할수있습니다. 변수변수의의미는온라인도움말을통해설명됩니다. 참조에러의방지를위하여표준선언테이블구조를변경하지말아야합니다. 그러나, 추가적인표준선언테이블에연결된추가임시변수는변경할수있습니다. 페이지 14
연습문제 1 : 구동타입 (OB100) 디스플레이와인식 DI DO Q 4/5... OB100 의변수 구동정보 I 0.0 I 0.1 I 0.2 I 0.3 I 0.4 I 0.5 I 0.6 I 0.7 System_ON System_OFF System Jog_RIGHT MANUAL Jog_LEFT AUTO AUTO / MANUAL Accept man.w.rest. Qty./ Weight auto.w.rest. Ackn_W.Rest..0.1.2.3.4.5.6.7 I 1.0 I 1.1 I 1.2 I 1.3 I 1.4 I 1.5 I 1.6 I 1.7 Quitt_Stoer Fault 1 Fault 2 Fault 3 Fault 1 Fault 2 Fault 3.0.1.2.3.4.5.6.7 File: PRO1_13E.15 참조 과제 S7-300 시스템에서는수동혹은자동으로 Warm Restart 를시키는 OB 100 만가지고있습니다. 만약 CPU 의기동타입에따라 CPU 가다르게반응하는것이필요할경우관련기동정보가 OB 100 에반영되어야합니다. OB 관련기동정보는온라인도움말에서찾을수있습니다. - OB 100 프로그램을하되수동 Warm Restart 가시뮬레이터 LED Q4.5 로표시가되고자동 Warm Restart 가시뮬레이터 LED Q4.6 으로표시가되게합니다. - 두 LED 가시뮬레이터버튼 "Ackn_W.Rest" (I 0.7) 으로인식 (Reset) 이되게합니다. 사용법 1. OB 100 에기동이디스플레이되도록프로그램합니다. 운전모드가프로그램 되 어있는FC 15 에기동인식이디스플레이되도록프로그램합니다. 2. 기동이인식되었을때만시스템운영자가시스템을 "System On" (Q4.1) 이되게 합니다. 페이지 15
추가정보 File: PRO1_13E.16 페이지 16
연습문제 2: 슬레이브문제발생시반응 CPU 반응... PROFIBUS 슬레이브문제발생 비동기에러...OB 86 포함 SIEMENS SF BF DC5V RUN STOP 점등점멸점등 RUN STOP MRES PROFIBUS 슬레이브문제발생 비동기에러...OB 86 미포함 SIEMENS SF BF DC5V RUN STOP RUN STOP MRES 점등점멸점등 File: PRO1_13E.17 과제 참조 OB(OB 82와 OB86) 들의프로그램없이 PROFIBUS 슬레이브에문제발생시 CPU의반응을점검합니다. When the ET200 fails (for example, by pulling the bus connector), OB 86 is called. ET200의문제발생시 ( 예를들면, 버스커넥터의제거 ), OB86이호출된다. 만약, ET200 이프로피버스에다시연결되면, 진단인터럽트를활성화시킵니다. 이러한진단인터럽트를이유로 CPU를 STOP 상태로바뀌지않게하기위해서 OB 82 또한반드시 CPU에다운로드해야합니다. 사용법 1. 온라인되어있는 CPU 에서 OB 86 을삭제합니다.( 만약존재한다면 ) SIMATIC Manager Online view Delete block 2. ET 200S 의문제를발생시키고, CPU 의반응을관찰합니다. 3. 비어있는 OB82 와 OB 86 을 S7 program 에생성하고, CPU 에다운로드합니다. 4. 웜재기동을실행하고, 프로피버스슬레이브의문제발생시 CPU 의반응을다시한번테스트합니다. 결과 에러 OB 를프로그램하면, CPU 는에러가발생하였음에도불구하고, RUN 상태를유지합니다. In OB 86, through the evaluation of the start information when a DP slave fails, the bit memory DP 슬레이브문제발생시 OB86 에서비트메모리를통하여시작정보추출할수있습니다. DP 슬레이브문제발생시, M_SlaveFailure" (M86.0) 가셋이되고, 문제가발생된슬레이브의주소가 MB_SlaveAddress" (MB 87) 에저장됩니다.(M 86.0 = 1) 은문제가발생된슬레이브주소 (MB87) 과함께터치패널에메시지를출력할수있습니다. 페이지 17