본문 바로가기
PLC/Siemens (S7)

SIEMENS STEP7 PLC Programing 기초 #6 ( 지멘스 S7 PLC 프로그래밍 기초, Simatic Manager Block 개념 1, OB, FC )

by 쪼렙엔지니어 2022. 1. 18.
반응형

지멘스 PLC 블록 개념, Organization Block, Function

 

우리가 지난시간에는 Siemens PLC의 변수, 어드레스의 개념에 대해

알아보았습니다.

중요한 내용이니 못보신 분들은 아래 포스팅을 꼭 확인부탁드립니다.



출처: https://mech19.tistory.com/107 [초보 엔지니어의 다락방]

 

SIEMENS STEP7 PLC Programing 기초 #5 ( 지멘스 S7 PLC 프로그래밍 기초, Simatic Manager Address 개념 )

Simatic Manager Address : 절대어드레스 (Address), 심볼어드레스 (Symbol) 자 오늘은 Siemens Step7 PLC 5번째 시간으로 Address의 개념에 대해서 이야기 해 보려고 합니다. ​ 먼저 메모리(Memory)에 대해 알아..

mech19.tistory.com

 

간략하게 지난시간 내용을 짚어보고 넘어갈까요?

 

우리가 어떤 데이터를 연산하기 위해서는 연산하기 전에

저장을 해야하는데, 

저장을 하기 위해서는 당연히 공간이 필요하겠죠?

물을 담기 위해 그릇이 필요하고,

가스를 저장하기 위해 저장탱크가 필요하듯,

데이터를 저장하기 위해서는 메모리 공간이 필요합니다.

 

Simatic Manager에서는

그 공간에 담길 데이터의 종류와 크기에 따라

공간의 크기가 달라지고,

따라서 그 공간의 주소도 공간의 크기와 담는 데이터의 종류에 따라

달라집니다.

 

그 데이터를 담는 공간의 주소를 표현하는 방법에는

절대어드레스(Address)와 심볼어드레스(Symbol)가 있는데

 

절대어드레스가 "서울시 영등포구 여의도동 1번지" 라면

심볼어드레스는 "국회의사당" 같은 느낌입니다.

 

여기까지가 지난 시간 내용이며,

오늘은 프로젝트와 프로그램의 구조에 대해

이야기해 보겠습니다.

 

 

 

 

먼저 프로젝트를 하나 생성하면 위와 같은 화면을 만날 수 있습니다.

위 화면에서 왼쪽 카테고리 형식의 프로젝트 구조체를 보면

먼저 "S7_Pro"가 프로젝트 이름입니다.

이 이름은 우리가 생성한 프로젝트내에서

또 다른 하위 프로젝트나 추가 프로젝트 생성은 안되기 때문에

유일한 것입니다.

(물론 변경은 가능)

그 다음 "SIMATIC 300 Station"은 우리가 생성한 프로젝트 내에

실제로 설치할 PLC하드웨어를 지칭합니다.

당연히 PLC하드웨어는 여러개를 이용할 수 있으므로

추가가 가능합니다.

추가를 한다면 아래와 같이 됩니다.

그리고 당연히 Station이름은 변경이 가능합니다.

그리고 처음에는 Station만 추가를 해놓은 상태이기 때문에

아무런 Hardware가 없어서 하위 카테고리가 없지만

아래와 같이 "Hardware"를 더블클릭하고 Hardware를 추가하면

하위 카테고리가 생성됩니다.

위 화면에서 우측 "Hardware"를 더블클릭하여

"HW Config"를 실행시켜 주도록 합니다.

그럼 "HW Config" 창이 실행되는데

처음에는 아무것도 없습니다.

아주 하얀 도화지 같네요.

Rail부터 추가를 해주어야 합니다.

실제 우리가 PLC 하드웨어를 Rail에 설치를 하듯이

소프트웨어에서도 Rail을 설치해 주어야 Rail에 CPU나 각종 모듈을

설치 할 수 있습니다.

우측 메뉴카테고리에서 [SIMATIC 300] - [RACK-300] - [Rail]을 더블클릭해주면

위와 같이 하드웨어를 설치 할 수 있는 Rail이 생성되고,

CPU등의 하드웨어를 추가해서 설치하면 됩니다.

 

Rail을 설치해 보면 번호가 1번부터 11번까지 있습니다.

이를 미루어볼때 총 11개의 모듈을 설치 할 수 있다는 걸

알 수 있습니다.

파워와 CPU, DI, DO를 한씩 설치해 보았습니다.

자... 이정도만 추가해 보겠습니다.

그러면 아래와 같이 "SIMATIC 300(1)" Station에도 하위 카테고리가

생성되는 것을 확인 할 수 있습니다.

이렇게 각 개별 Station마다 하드웨어를 설정함으로 써

하위 카테고리를 생성 할 수 있습니다.

이제 Station의 하위카테고리를 보면

Staion의 하위 카테고리에는 CPU 모델명이 있고,

(CPU 모델명은 CPU 이름의 디폴트 값이며 변경이 가능합니다.)

그 하위 카테고리에는 "S7 Program"이라는 프로그램이 있습니다.

( 이 프로그램 이름도 변경이 가능합니다.)

이 "S7 Program"이 이제 우리가 프로그램을 작성하여 저장하는 곳입니다.

정확히 얘기하자면

"S7 Program"내부에 "Blocks"에 프로그램을 저장하는 것이고,

"Symbols"에는 심볼어드레스를 저장하고

"Sources"에는 우리가 저장한 프로그램들이 기계어로 번역되어 실행파일(실행프로그램)로

변경되어 저장됩니다.

이제 이해가 좀 되시려나요?

프로젝트를 생성하면 Station을 여러개 생성이 가능하고,

각 Station마다 개별 프로그램을 작성하여 저장할 수 있는데,

우리는 이렇게 생성된 여러 Station을 하나의 프로젝트로 관리 할 수 있는 것입니다.

 

 

 

 

 

2. BLOCKS

자 그럼 이제 오늘의 메인주제인

"BLOCKS"에 대해서 이야기 해 보겠습니다.

앞에서 "BLOCKS"에는 프로그램을 작성하여 저장한다고 했었습니다.

그럼 "BLOCKS"의 구조는 어떻게 되어 있을까요?

"Blocks"를 열어보니 아래와 같이 "OB1"만 하나가 보입니다.

그럼 "OB1"을 더블클릭 해보겠습니다.

아래와 같인 창이 생성되었습니다.

여기가 프로그램을 작성하는 공간입니다.

화살표 있는 부분에 프로그램을 작성하면 됩니다.

일단 제일 간단한 LAD 프로그램을 작성하는 방법은

아래 포스팅을 참조해 주십시오.



출처: https://mech19.tistory.com/104?category=807455 [초보 엔지니어의 다락방]

 

SIEMENS STEP7 PLC Programing 기초 #2 ( 지멘스 S7 PLC 프로그래밍 기초, Simatic Manager 기초 )

오늘은 직접 STEP7 프로그램인 SIMATIC Manager를 구동하여 프로젝트를 생성해 보겠습니다. Simatic Manager프로그램 설치는아래 포스팅을 확인해 주세요. https://mech19.tistory.com/102 Window10 Siemens STEP7..

mech19.tistory.com

 

그럼 "Blocks"에도 "OB1"말고 다른걸 더 추가할 수 있을까요?

"OB1"은 Organization Block 1이라는 의미이며,

"OB"는 여러가지가 있습니다. (자세한건 아래에서 설명드리겠습니다.)

당연히 "OB" 말고도 다른 Block들이 존재하며

Blcok의 종류는 아래와 같습니다.

위와 같이 우클릭 후 "Insert New Object"에서 추가가 가능했습니다.

그럼 이제부터 하나하나 알아가 보겠습니다.

먼저 전체적인 프로그램 Blcoks(블럭) 종류를 이야기 해 보겠습니다.

 

 

 

 

3. OB (Organization Block)

OB는 PLC 내 운영시스템과 사용자프로그램 간의 인터페이스를 담당합니다.

이야기가 어려운가요?

즉, 간단하게 얘기해서 PLC가 반복적으로 수행해야 하는 프로그램을 우리가 작성을 하면

OB가 그 프로그램을 반복적으로 수행해 준다고 생각하시면 됩니다.

그럼 계속 지속적으로 반복해야 하는 프로그램도 있을거고,

한번만 반복해야 하는 프로그램도 있을거고,

특정타이밍에 반복해야 하는 프로그램도 있을거고,

다 다를텐데 어떻게 나눌까 하는 의문이 들겁니다.

그래서 OB는 종류가 많이 있습니다. (아래표 참고)

OB1 반복적인 프로그램 실행 블록.
제일 기본적은 블록으로 대부분의 프로그램블록은 여기서 작동합니다.
OB 100, 101, 102 기동블록으로 PLC전원이 들어온 뒤 운전모드가 되면 OB1이
프로그램을 반복실행 하기 전에 딱 한번 실행되는 블록입니다.
OB 10 ~ 17 Time of day 인터럽트 입니다.
주기적인 프로그램 실행이 필요할 때 사용하는 블록으로
지정된 시간에 한번 혹은 지정된 시간에 주기적
(매분, 매시간, 매일, 매주, 매월, 매년 단위마다 한번)으로 실행시킵니다.
OB 20 ~ 23 Time delay 인터럽트
OB 30 ~ 38 Cyclic 인터럽트 입니다.
주기적인 반복 프로그램 실행 블록이며, 사전에 설정해 둔
시간에 맞추어 실행되는 블록입니다.
예를 들어 1000ms(설정값) 마다 해당 OB가 실행됩니다.
OB 40 ~ 47 하드웨어 인터럽트로 해당 OB안에 있는 프로그램은
관련 이벤트가 발생했을 때 실행됩니다.
관련 이벤트라 함은 예를 들자면 아날로그 입력모듈에 입력되는 값이
설정값 이상으로 넘어갈 때 해당 OB가 실행됩니다.
OB 80 ~ 87 비동기에러로 실행되는 OB로 비동기 에러는 PLC기능상의 오류를
의미합니다.
이 에러는 프로그램 실행과는 무관하게 발생을 하므로
프로그램으로 추적되지 않습니다.
예를 들어 MPI인터페이스 신호 이상이라든지 운전 중 모듈 탈착 같은
상황을 이야기 하는 것입니다.
OB 121 ~ 122 동기에러로 실행되는 OB로 동기에러는 프로그램에러를 의미하며,
프로그램 에러가 발생하면 프로그램의 특정 명령문까지 추적이 됩니다.
동기 에러 OB는 프로그램의 일부로 취급되며,
에러가 인지되었을 때 실행된 블록과 같은 우선권을
가지고 수행이 됩니다.
 

OB를 추가하는 방법은 아래와 같습니다.

"Blocks"에서 우클릭하여 [Insert New Object]-[Organization Block] 를 실행시키면

아래와 같이 OB Properties가 실행됩니다.

여기서 원하는 OB번호를 적고 OK를 누르시면 됩니다.

OB 80을 만들어 보겠습니다.

그리고 OB 80을 더블클릭하여 실행해 보면 아래와 같이

자신의 역할을 설명해 주는 문구도 적혀 있는 것을 확인할 수 있습니다.

OB 81을 만들었더니 아래와 같이 뜨네요.

다른 OB들도 마찬가지 입니다.

일단 간단하게 OB가 어떤것인지 알아보았습니다.

OB에 대해서는 공부할게 많기 때문에 나중에 다시 따로 열심히

알아보도록 하고,

오늘은 일단 "OB1에 작성한 프로그램 블록을 호출하여 사용한다~" 라는 것만

기억하시길 바랍니다.

 

 

 

 

 

4. FC (Function)

다음은 FC에 대해서 알아보겠습니다.

간단하게 얘기해서 FC는 프로그램을 짜는 공간이라고 생각하면 됩니다.

OB때와 같이 우클릭하고 [Insert New Object]-[Function]을 실행하면

FC를 추가할 수 있습니다.

아래와 같은 "Properties"에서 FC 이름을 설정한 뒤

"OK"버튼을 클릭해주면 됩니다.

저는 "FC1"을 만들어 보도록 하겠습니다.

FC1이 만들어졌으니 더블클릭하여 프로그램 편집창을

띄어주도록 합니다.

자 이제 간단하게 프로그램을 하나 만들어 볼까요?

Function을 말 그대로 함수라는 의미입니다.

입력값에 대한 출력값이 존재하는 프로그램입니다.

프로그래머는 이곳에 원하는 프로그램을 작성하면 됩니다.

먼저 위쪽의 "Interface"를 만들어야 합니다.

IN은 입력파라미터,

OUT은 출력파라미터,

IN_OUT은 입출력 공용 파라미터,

TEMP는 임시변수,

RETURN은 IEC 61131-3 규정에 따라 특정하게 지정된 부가적인

OUT(출력) 파라미터로 FC에만 존재합니다.

일단 IN 파라미터, OUT 파라미터, TEMP 변수를

선언하였습니다.

(프로그램상에서 이러한 파라미터나 변수를 생성하여

저장하는 것을 선언한다고 이야기 합니다.)

선언방법은 원하는 Interface의 종류를 고르고

아래와 같이 발생한 빈칸에 이름을 적고

Data Type을 고르면 됩니다.

OUT 파라미터도 위와 동일한 방법이며

TEMP 변수는 Address 지정이 하나가 있긴 한데,

자동으로 지정되기 때문에 크게 신경쓰지 않아도 됩니다.

위와 같이 선언한 파라미터와 변수로

아래와 같은 프로그램을 작성해 보았습니다.

가상의 A라는 기계와 B라는 기계가 있다고 가정하고

A기계를 Start하고 B기계를 Start하여

둘 다 RUN 상태여야만 최종 출력 코일 RUN이 ON되는 프로그램 입니다.

(자기유지 프로그램이니 어려운것은 없지요??)

여기서 "A_RUN"과 "B_RUN"은 이 "FC1" 프로그램이 구동되는 동안만

임시로 기억되는 변수이기 때문에

Temp 변수로 선언하였으며,

최종 출력은 OUT 파라미터인 "RUN" 하나입니다.

이렇게 작성한 "FC1"을 "OB1"에서 호출하여 구동하는 것입니다.

그럼 이제 OB1에서 호출 시켜 볼까요?

FC1을 저장하고 나서

OB1을 더블클릭하여 실행시켜서

왼쪽 메뉴에서 "FC blocks"를 확인해보면

아래와 같이 "FC1"이 생성된 것을 확인할 수 있습니다.

위에서 확인한 "FC1"을 아래의 "OB1" Network 1에 드래그&드롭을

해주면 됩니다.

짠 그러면 이렇게 FC1이 나타났습니다.

이렇게 하는 것을 "FC1"을 "OB1"에서 호출했다. 라고 합니다.

우리가 작성한 모든 프로그램은 이렇게 OB에서 호출을 해 놓아야

작동이 됩니다.

이렇게 호출한 "FC1"에는 아래와 같이 Address를 지정해 주어서 사용합니다.

Address 형식으로 지정해 주어도 되고,

Symbol 형식으로 지정해 주어도 됩니다.

또한 내부 Address 형식도 가능합니다.

그리고 이렇게 FC1을 만드는 가장 큰 장점인

"얼마든지 똑같은 FC1을 호출할 수 있다,"가 있습니다.

이제 FC가 어떤건지 조금 감이 잡히시지요??

일단 너무 길어지니까 이번 포스팅은 여기까지 하고

다음 포스팅에서 FB와 DB를 이어서 하겠습니다.

아래 포스팅을 참조해 주십시오.



출처: https://mech19.tistory.com/109 [초보 엔지니어의 다락방]

 

SIEMENS STEP7 PLC Programing 기초 #7 ( 지멘스 S7 PLC 프로그래밍 기초, Simatic Manager Block 개념 2, FB )

지난시간에 알아본 "OB"와 "FC"에 대해서 조금 감이 잡히시나요? 나중에 다시 "OB" 와 "FC"에 대해서 자세히 각각 알아보는 시간이 있으니 지금은 크게 보고 "FC"에서 프로그램을 짜서 "OB"에서 호출해

mech19.tistory.com

 

오늘 내용은 여기까지 입니다.

 

 

제 블로그를 방문해 주셔서 감사합니다.

도움이 되셨다면 공감(좋아요) 부탁드리고,

댓글은 다른분들께도 좋은 정보일 수 있으니

공개로 부탁드립니다.

여러분의 작은 정성이 좋은 포스팅을 생산하는

힘이 된답니다. :)

감사합니다.



반응형

댓글