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

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

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

 

지난시간에 알아본 "OB"와 "FC"에 대해서 조금 감이 잡히시나요?

나중에 다시 "OB" 와 "FC"에 대해서

자세히 각각 알아보는 시간이 있으니

지금은 크게 보고 "FC"에서 프로그램을 짜서 "OB"에서 호출해서

사용한다는 큰 그림만 잡고 간다는 생각을 하시면 됩니다.

 

오늘은 "OB"에서 호출하여 사용 하는 "FC"와 비슷한

"FB"에 대해서 알아보겠습니다.

 

"OB"와 "FC"는 아래의 이전 포스팅을 참조해 주세요.



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

 

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

지멘스 PLC 블록 개념, Organization Block, Function 우리가 지난시간에는 Siemens PLC의 변수, 어드레스의 개념에 대해 알아보았습니다. 중요한 내용이니 못보신 분들은 아래 포스팅을 꼭 확인부탁드립니

mech19.tistory.com

 

 

 

Siemens Step7 PLC Simaticmanager FB (Function Block), FC와 FB 차이점

 

1. FB (Function Block)

FB?? Function Block??

"Function이랑 Function Block이랑 같은거 아닌가요??" 라고

묻는 분들이 굉장히 많이 있습니다.

네 거의 비슷해요.

거의 비슷한데 조금 다릅니다.

정확한 차이점은 나중에 알아보기로 하고

일단 "FB" 사용법부터 알아보기로 하죠.

FB 추가 방법은 다른 Block들과 동일 합니다.

우클릭 메뉴에서 

[Insert New Object] - [Function Blcok]을 실행하십시오.

 

그럼 "Properties"창이 생성됩니다.

저는 "FB1"을 만들어 보겠습니다.

"NAME"에서 "FB1"이라고 쓰고 "OK"를 눌러주도록 합니다.

그럼 위와 같이 "FB1"이 짠 하고 나타납니다.

​이때 "FB"에 종속되는 "DB"도 함께 만들어야 하지만

일단 아래에서 따로 언급할 예정이니 넘어가겠습니다.

이제 "FB1"을 더블클릭 하여 프로그램 편집창을

실행시켜 주도록 합니다.

음...."FC"와 크게 달라보일건 없네요.

앗 그런데 "Interface" 항목이 조금 다르네요.

"FC"와 비교했을때 "RETURN"항목이 없고...."STAT"항목이 있네요.

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

OUT(출력) 파라미터로 FC에만 존재한다고 이미 지난 포스팅에서 말씀드렸었죠?

그러니 "FB"에 없는건 당연한거 같고.....

그럼 "STAT"은 뭘까요?

"STAT"은 STATIC(스태틱) 변수로 "FB"에만 존재 합니다.

또한 "STAT"은 "TEMP"와 다르게 저장이 됩니다.

자 이제 "FB1"에 간단한 프로그램을 작성해 보겠습니다.

먼저 "FB1"을 실행해서 프로그램 편집창을 연 다음에

"Interface"의 파라미터와 변수들을 선언해 줍니다.

그리고 선언한 파라미터와 변수들로 아래와 같이 간단한 프로그램을

작성해 보았습니다.

간단히 설명하자면 가상의 A라는 기계가 있다고 가정하고

A접점 "A_START"가 "ON"되면 출력 코일 "RUN"이 "ON"되고

카운터 "A_COUNT"가 "PV_VALUE"에 따라 카운트 되며

그 카운트 값이 "RUN_COUNT"에 저장됩니다.

"COUNT_R"은 카운터를 리셋할 때 필요하고

"CV_BCD"는 BCD값이 필요없어서 제외했습니다.

이렇게 작성한 "FB1"을 "OB1"에서 호출해 보겠습니다.

호출 방법은 "FC"때와 동일합니다.

 

일단 "OB1"을 실행하여 프로그램 편집창을 열어줍니다.

​왼쪽 "Program elements"에 보시면

"FB blocks"가 있습니다.

​"FB blocks"의 하위 카테고리를 열어서

"FB1"을 선택한 뒤에 드래그&드롭을 해주면 됩니다.

 

그랬더니 아래와 같이 FB1이 생성되었습니다.

(Address는 제가 지정을 해주었습니다.)

그런데 FB1 위에 빨간색으로 ???(물음표)가 떠있네요?

"FC"때는 없었는데 말이죠.

 

빨간색 글씨는 뭔가 완료가 된 상황이 아니기 때문에

생긴거라고 생각하시면 됩니다.

 

그럼 저 빨간 물음표에는 무엇을 지정해 주어야 하느냐~~~~

 

FB는 해당 FB의 정보를 저장하는 DB가 종속된다고

말씀드렸었습니다.

저 자리에는 그 DB를 지정해 주는 겁니다.

 

"FB1"이니까 "DB1"을 지정해 주도록 하겠습니다.

 

"DB1"을 입력하려고 했더니 아래와 같이 문구가 뜹니다.

"YES"를 눌러주면

아래와 같이 "FB1" 호출이 완료됩니다.

위와 같이 "OB1"에서 "FB1"을 호출 할때는 그에 맞는 "DB1"도

같이 호출해 주어야 합니다.

(FB번호와 DB번호는 같지 않아도 됩니다.)

 

그리고 프로그램의 "Blocks"를 확인해보니

"DB1" 블록이 생성되어 있습니다.

"DB"를 생성할때는 이런방식 말고

그냥 미리 생성해 둘 수도 있습니다.

 우클릭메뉴에서 [Insert New Object]에 들어가 보시면

Data Block이 있습니다.

이걸로 "DB"생성이 가능합니다.

 

 

그럼 "DB1"에는 무엇이 들어가 있을까요?

한번 실행시켜 보겠습니다.

"DB1"을 실행시켜서 열어보았더니

아래와 같은 내용들이 들어있었습니다.

어디서 많이 보던 것들인데....

맞습니다.

우리가 "FB1"에서 선언했던 "Interface"의 파라미터와 변수들입니다.

"FB" (Function Block)은 자신의 데이터를 저장 할 수 있는

메모리공간을 가지고 있으며

이 메모리 공간은 "DB" (Data Block)의 형태로 활용합니다.

이렇게 "FB"에 종속되어 있는 "DB"를 "Instance DB"라고 합니다.

지난 포스팅에서 만들었던 "FC1"을 호출하여

"FB1"과 비교해 보면 "FC1"은 "DB"를 호출하지 않았습니다.

그럼 "FB"를 만들때 같이 만든 "DB"가

가지고 있는 장점은 무엇인가? 라는 의문이 듭니다.

address에 대한 내용을 포스팅 할때 언급했지만

"DB"에 속해 있는 변수들도 직접 호출하여 사용이 가능합니다.

호출 방법은 아래와 같습니다.

이제 "FB"에 대해서 약간 감이 잡히시나요?

직접 해보는것 만큼 빠르게 이해 할 수 있는 방법은

없습니다.

직접 프로그램을 짜보며 부딪혀봐야

빠르게 이해 할 수 있습니다.

 

 

 

 

 

2. FC와 FB의 차이점

 

마지막으로 "FC"와 "FB"의 차이점에 대해서 간단히 정리하고

마치겠습니다.

"FC"와 "FB"의 차이점은 위에서 보았듯이

"FC"는 자체 저장할 수 있는 메모리가 없고,

"FB"는 자체 저장할 수 있는 메모리가 있다는 점입니다.

"FB"가 자체 저장할 수 있는 메모리공간이 있는데

이 메모리공간을 "Instance DB"를 통해 활용합니다.

이 "Instance DB"에는 "FB"에서 선언한 파라미터 및 변수들이 저장됩니다.

IN , OUT, IN_OUT, STAT이 그것들이며,

TEMP는 저장이 되지 않는 변수라서 저장이 되지 않습니다.

즉 그냥 간단히 얘기해서

FB = FC+DB라고 생각하면 편합니다.

(정확하진 않지만 너무 복잡하게 생각할 필요 없습니다.)

왜냐하면 여러분들이 대부분 짜는 프로그램은 "FC"만으로도..

혹은 "OB1"만으로도 다 되거든요.ㅎㅎㅎㅎㅎㅎ

멀티 인스턴스 DB의 개념은 복잡하니까 나중에 따로 FB를

자세히 이야기 할 때 알아보겠습니다.

오늘은 S7-300의 Block 중에서 "FB"에 대해서

이야기 해 보았습니다.

"DB"에 대한 내용까지 같이 하려고 했으나

내용이 너무 길어질 것 같아서

다음 포스팅에서 이어가겠습니다.

아래 포스팅을 참조해 주세요~



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

 

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

자 이제 "Block"의 마지막 내용입니다. Siemens PLC를 다룸에 있어서 변수와 어드레스, Block 개념만 확실히 하면 절반이상 끝난거라고 생각하셔도 좋습니다. 그리고 Siemens PLC의 특징이 구조화가 잘 되

mech19.tistory.com

 

 

 

 

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

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

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

공개로 부탁드립니다.

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

힘이 된답니다. :)

감사합니다.

반응형

댓글