처음 오신 분들은 이전 포스팅을 먼저 보시는 것을 추천 드립니다.
이전 포스팅에서 Simatic Manager사용법등 기본적인 기초내용을
모두 정리해 두었습니다.
(포스팅이 10개정도 되기때문에 링크는 따로 걸기 힘든점 양해바랍니다.)
오늘은 "OB"에 대해서 좀 더 자세히 알아보겠습니다.
기초를 배울 때 알아보았던 내용보다
조금 더 깊게 알아보려고 합니다.
1. OB (Organization Block)의 역할
OB는 어떤 역할을 할까요?
간단히 얘기해서 우리가 프로그래밍한 내용을
PLC시스템에 이해시켜주는 역할을 합니다.
우리가 작성한 프로그램을 PLC가 이해해야 작동시켜 줄 수 있잖아요?
그걸 "OB"가 해주는 겁니다.
좀 더 전문적인 용어로 이야기 하면
"OB"는 PLC 내 운영시스템과 사용자프로그램 간의 인터페이스를 담당합니다.
위 그림을 한번 보시지요.
우리가 프로그램을 짜는 곳은 FC(Function)과 FB(Function Block)인데,
이 FC와 FB는 PLC의 운영체제(운영시스템)와 직접 소통을 하지 못합니다.
(왜 그런가는 저에게 묻지말아 주세요. ㅎㅎㅎㅎㅎㅎ
지멘스라는 회사가 그렇게 계층분리를 시켜 둔것 입니다. ㅎㅎㅎ)
여튼, 그렇기 때문에 중간에 OB가 들어가서
운영체제(운영시스템)한테 우리가 짠 프로그램을 이해시켜서 구동시켜 주는 거죠.
이해가 되시나요??
OB에도 우리가 직접 프로그램을 짜넣을 순 있지만,
간단한 프로그램이 아니라 대형 프로그램인 경우
FC와 FB를 이용해서 계층분리를 하는게
향후 프로그램 관리 측면에서도 훨씬 좋습니다.
그리고 OB에는 여러 종류가 있습니다.
그리고 OB는 종류에 따라 우선순위도 나뉘어져 있습니다.
왜냐면 계속 반복 구동해주어야 하는 프로그램도 있을거고
어떤 특정 이벤트가 발생했을 때 구동해 주어야 하는 프로그램도 있을거고
어떤 특정 시점에 구동되어야 하는 프로그램도 있을테니
이런 여러 상황별로 다른 OB가 준비되어 있답니다.
그럼 OB의 종류에 대해서 알아보겠습니다.
2. OB (Organization Block)의 종류
OB의 역할이 우리가 작성한 프로그램을 구동시켜 주는 것인데,
우리가 작성한 프로그램은 구동할 타이밍이 여러가지 일겁니다.
항상 반복 구동되어야 하는 프로그램도 있을거고,
일주일에 한번씩 구동하거나,한달에 한번씩 구동하거나,혹은 어떠한 이벤트가 발생했을때 구동해야 하는 프로그램도 있을텐데이걸 OB는 어떻게 구분을 할까요?바로 OB의 종류가 여러개가 되는 것입니다.
그럼 OB의 종류를 좀 알아보겠습니다.
1) OB1
OB1은 S7 CPU에서 연속적으로 반복 실행됩니다.
CPU가 STOP 혹은 Turn Off 될때까지
계속적으로 반복 실행 됩니다.
OB1의 첫 실행은 CPU가 Turn On된 후 시동이 완결 된 후에
실행되기 시작합니다.
가장 기본이 되는 OB이며 OB90을 제외하고
다른 모든 OB들이 OB1의 실행에 인터럽트를 걸 수 있습니다.
2) OB10 ~17
OB10 부터 17번까지의 8개의 OB는
특정 시간이 되었을때 한번 혹은 주기적으로 실행됩니다.
우선순위는 2 입니다.
-1회
-매분
-매시간
-매일 (한번)
-매주 (한번)
-매월 (한번)
-매년 (한번)
OB1에서 설명했다시피 CPU가 ON상태에서
OB1이 프로그램을 구동중이더라도 우선숭위 상에서
OB10부터 17번까지가 더 높기 때문에
강제 실행 됩니다.
(이건 아래 다른 모든 OB들에게도 해당되는 내용입니다.)
S7-300에서는 OB10번만을 제공하고
S7-400에서는 OB10 ~17번까지 8개의 OB를 제공합니다.
3) OB20 ~ 23
OB20 부터 23번까지의 4개의 OB는
설정된 시간만큼 지연된 이후에 실행되는 OB입니다.
지연 설정시간은 SFC32(SRT_DINT)의 매개 변수 입니다.
OB No.
|
우선순위 클래스
|
OB20
|
3
|
OB21
|
4
|
OB22
|
5
|
OB23
|
6
|
S7-300에서는 보통 OB20번만 제공하고
S7-400에서는 OB20 ~ 23번까지 모두 제공합니다.
4) OB30 ~ 38
이 OB들은 설정해둔 시간(주기)마다 실행되는 OB입니다.
OB10 ~ 17번까지와 다른 점은
OB10 ~ 17번까지의 OB들은 특정 시간을 지칭했다면
OB30 ~ 38번까지의 OB들은 주기를 설정한다는 점입니다.
OB No.
|
주기
|
우선순위 클래스
|
OB 30
|
5s
|
7
|
OB 31
|
2s
|
8
|
OB 32
|
1s
|
9
|
OB 33
|
500ms
|
10
|
OB 34
|
200ms
|
11
|
OB 35
|
100ms
|
12
|
OB 36
|
50ms
|
13
|
OB 37
|
20ms
|
14
|
OB 38
|
10ms
|
15
|
S7-300에서는 OB35번만을 제공하고
S7-400에서는 OB30 ~ 38번까지 9개의 인터럽트 OB를 제공합니다.
5) OB40 ~ 47
이 OB들은 하드웨어 인터럽트 블록으로
하드웨어의 특정 모듈에 설정하여 사용하는 블록입니다.
예를 들어 AI(Analog input) 모듈에 임의의 포인트 값이
12mA이상의 값이 들어오면 인터럽트가 실행됩니다.
파라미터를 지정하는 I/O (AI, AO, DI, DO)모듈들은 HWConfig에서
하드웨어 인터럽트를 실행시키는 신호를 지정할 수 있습니다.
CP나 FM모듈의 경우 모둘 구성용 소프트웨어에서 인터럽트 특성을 지정할 수 있습니다.
보통 S7-300에서는 OB 40만을 제공하고
S7-400에서는 OB40 ~ 47번까지 모두 제공합니다.
OB No.
|
우선순위 클래스
|
OB40
|
16
|
OB41
|
17
|
OB42
|
18
|
OB43
|
19
|
OB44
|
20
|
OB45
|
21
|
OB46
|
22
|
OB47
|
23
|
6) OB80 ~ 87
이 OB들은 비동기 에러 인터럽트 OB로
비동기에러는 PLC 기능상의 오류를 의미합니다.
이 에러는 프로그램 실행과는 무관하게 발생을 하며 프로그램으로 추적이
불가능 합니다.
![](https://blog.kakaocdn.net/dn/bvoliL/btrrB5tovST/xCXZjPOx4WvHvS2c776cUk/img.png)
자 오늘은 이렇게 OB에 대해서 좀 더 자세하게 알아보았습니다.
다음시간에는 FC와 FB를 순서대로 좀 더 자세하게 알아보도록 하겠습니다.
감사합니다.
제 블로그를 방문해 주셔서 감사합니다.
도움이 되셨다면 공감(좋아요) 부탁드리고,
댓글은 다른분들께도 좋은 정보일 수 있으니
공개로 부탁드립니다.
여러분의 작은 정성이 좋은 포스팅을 생산하는
힘이 된답니다. :)
감사합니다.
출처: https://mech19.tistory.com/110?category=807455 [초보 엔지니어의 다락방]
댓글