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

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

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

 

자 이제 "Block"의 마지막 내용입니다.

 

Siemens PLC를 다룸에 있어서 

변수와 어드레스, Block 개념만 확실히 하면

절반이상 끝난거라고 생각하셔도 좋습니다.

 

그리고 Siemens PLC의 특징이 구조화가 잘 되어 있어서

배우기는 어렵지만 배우고 나면 사용하기는 매우 쉽습니다.

(물론 고수분들은 배우기가 어렵다는 것도 동의하지 않으시겠지요 ㅎㅎㅎㅎㅎ)

 

그 만큼 중요한 내용이니 꼭 반복숙달 하시기 바랍니다.

 

 

아 "OB"와 "FC", "FB"의 내용은

아래 포스팅에서 참조 부탁드립니다.



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

 

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

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

mech19.tistory.com



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

 

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

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

mech19.tistory.com

 

그럼 오늘 배울 내용인 "DB"에 대하여 시작해 보겠습니다.

 

 

먼저 "DB"라고 하면 보통 Data Base를 많이 생각하시지요?

그렇지만 지멘스에서 "DB"는 Data Base가 아니고 Data Block입니다.

우리가 프로그램을 작성할때 사용하는 "FC", "FB"같은 Block이라는 거죠.

 

 

 

 

 

 

1. 데이터 메모리 영역

자... 우리는 기계를 제어하기 위해서

어떤 데이터들을 PLC외부로 부터 입력을 받아서

계산과정을 거쳐서 출력을 합니다.

이 과정에서 우리가 외부로 받은 데이터 혹은 계산과정에서 발생한 데이터들을

순간순간마다 저장을 하거나 혹은 장시간 저장을 할 필요성이 생기게 됩니다.

인간도 마찬가지에요.

(4+5) x 100 + 50 = ????

위 의 계산과정을 거칠 때 암산을 한다고 하더라도,

제일 먼저 계산의 우선순위에 따라

소괄호 안의 4+5를 먼저 계산을 하고

그 뒤에 곱하기 100을 하고 나서

마지막으로 더하기 50을 하게 되는데

각각의 순서에 따라 계산된 결과값을 우리 뇌에서

순간순간이나마 기억을 하게되죠?

PLC도 마찬가지 입니다.

이렇게 데이터를 저장하는 곳을 "Memory"(메모리) 라고 부릅니다.

그런데 순간순간 아주 짧은 시간동안만 기억해도 되는 데이터들이 있을거고

좀 장시간 기억해도 되는 데이터들도 있을거고,

한동안 꽤 오랫동안 저장해야 하는 데이터들이 있을텐데

이런 데이터들을 전부 짬뽕으로 모아 둘 순 없죠.

그래서 메모리를 여러구역으로 나누어서 데이터의 종류나 목적에 맞게

나누어 저장하게 됩니다.

메모리의 구역을 나누어 어떤 데이터가 저장되는 공간의 주소를

우리는 "address"(어드레스)라고 부르는 겁니다.

이해가 되시는지요??

 

자 그럼 메모리 구역을 어떻게 나누어 놓았는지

알아봐야겠죠??

Siemens S7 PLC에서는 아래와 같이 분류되어 있습니다.

간단하게 하나씩 알아보겠습니다.

I는 입력( INPUT ) 데이터 메모리이며, PII(Process Image Input)라고도 부릅니다.

Q는 출력( OUTPUT ) 데이터 메모리 이며, PIO(Process Image Output)라고도 부릅니다.

Peripheral (페리퍼럴)은 특수모듈과 PLC CPU간의 데이터 송수신을 위한 메모리 영역이며,

최소 메모리 단위가 Byte단위로 접근이 가능합니다.

I나 Q는 PLC의 매 스캔타임마다 데이터가 업데이트 되지만,

Peripheral은 사용자 프로그래밍에 의해서 필요할 때만 업데이트가 됩니다.

L stack은 Local stack(로컬스택)이라는 의미입니다.

로컬스택은 임시변수를 처리하기 위한 PLC 내부 메모리 영역입니다.

대표적인 임시변수는 "FC"의 "TEMP"가 있지요?

또한 LAD 프로그램에서의 중간 중간의 연산 결과 데이터들이 모두 여기에 저장됩니다.

다음으로 오늘 가장 중요한 "Data Blocks" 입니다.

이곳은 아시다시피 사용자의 필요에 의해서 생성되어지는 영역입니다.

자세한 내용은 잠시 후에 자세히 다루도록 하겠습니다.

기타 영역으로 "Timer"와 "Counter"영역이 있습니다.

각각 약자로 T와 C 영역으로 호출이 가능합니다.

 

 

 

2. DB (Data Blcok)

자... 이제 오늘은 메인메뉴인 "DB"에 대해서 이야기 해 보겠습니다.

"DB"는 사용자 데이터를 저장하는데 사용됩니다.

로직프로그램의 "FC"나 "FB" 또는 "OB"처럼 사용자 메모리의 영역을

차지합니다.

"DB"는 그 안에 담기는 데이터의 용도에 따라 두가지로 나뉩니다.

"Shared DB"와 "Instance DB"입니다.

"Shared DB"는 "Global DB"라고도 불리며

"OB1"을 포함하는 모든 로직 블록에서 액세스 가능합니다.

즉 모든 블록이 공유하는 데이터가 담긴다는 의미이죠.

반면에 "Instance DB"는 특정 "FB"에 할당됩니다.

즉 할당된 "FB"에서만 해당"DB"의 데이터를

사용할 수 있다는 의미입니다.

이것은 "DB"를 만들때 정할 수 있습니다.

만약에 "Instance DB"로 만들고자 한다면 아래와 같이

생성된 "FB"중에서 선택을 해야 합니다.

1) Shared DB

먼저 공유DB부터 이야기 해 보겠습니다.

아까 위에서 이야기 했던것과 같이 "Shared DB"에는

모든 로직 블록이 공유하는 글로벌 데이터가 저장됩니다.

그럼 "Shared DB"를 한번 만들어 보겠습니다.

"DB20"을 "Share DB"로 만들겠습니다.

위와 같이 "Name and type"을 지정하고 "OK"를 누르면 됩니다.

그럼 "DB20"이 생성되었네요.

더블클릭하여 열어보겠습니다.

아직 아무것도 만들지 않은 상태라 텅 비어있습니다.

이제 여기에 내용을 추가해 보겠습니다.

이미 생성된 라인에서 우클릭을 해보면

아래와 같이 라인을 추가할 수 있습니다.

자 라인을 추가해 보았습니다.

여기에 필요한 내용을 기입하면 됩니다.

"Name"은 "Symbol"이라고 생각하시면 되고

"Type"은 Data Type입니다.

"Inintial value"는 초기값 지정입니다.

자 저는 "RUN_STATUS"를 만들어 보았습니다.

어떤 기계의 가동상태를 확인하는 변수죠.

그래서 "Data Type"은 "BOOL"입니다.

가동하면 1(True), 정지하면 0(False)겠지요.

그럼 이걸 직접 프로그램 로직 블록에서 땡겨가서 써봐야겠죠?

먼저 "FC"입니다.

지난 포스팅에서 작성했던 프로그램이네요.

여기서 Network 2의 최종 출력코일인 "run"을

제가 만든 "DB20"의 "RUN_STATUS"로 바꿔보겠습니다.

변경하기 위해 해당 코일 변수를 찍으니 아래와 같이 변수 목록이 나오고

"DB20"도 포함되어 있는걸 확인 할 수 있네요.

그럼 "DB20"을 더블클릭해서 하위 카테고리를

열어서 "DB20"에 들어있는 Address를 확인해 보겠습니다.

자 제가 만든 "RUN_STATUS"를 찾았습니다.

이제 더블클릭하거나 엔터를 치면 됩니다.

그럼 아래와 같이 "DB20.DBX2.0"으로 바뀐것을 확인 할 수 있습니다.

여기서 "DB20.DBX2.0"는 절대어드레스(address) 입니다.

지난 시간에 배웠죠?

DB의 어드레스 체계에 대해서 기억이 잘 안나시면

위에서 언급한 지난 포스팅을 확인해 주십시오.

자~ 이제 "Shared DB" 사용법을 간단하게 확인해 보았습니다.

저는 FC에서 호출해 보았지만, FB, OB 모두에서 사용이 가능합니다.

그래서 공유DB, 글로벌DB라고 불리는 겁니다.

2) Instance DB

다음으로 "Instance DB"입니다.

"Instance DB"는 종속된 "FB"를 위한 메모리 영역입니다.

"FB"의 파라미터와 "STAT" (Static) 변수가 저장되며 관리됩니다.

"Instance DB"는 "Fuction Block"에 의해 생성됩니다.

지난번 포스팅에서 확인을 했던 내용이니 넘어가도록 하겠습니다.

"FB"와 "Instance DB"의 사용법은 아래 포스팅에서 확인 해 주십시오


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

 

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

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

mech19.tistory.com

 

 

 

 

 

 

3. Block Tree

이제 Block들의 기본적인 사용법은 모두 익히셨을 겁니다.

그럼 이 Block들의 상관관계에 대해서 부분부분 알아보았던 내용을

정리해 보겠습니다.

1) OB는 반복실행을 하는 Block으로 OB에 직접 로직프로그램을 작성할 수도 있고,

FC또는 FB를 호출하는 Block 입니다.

2) FC는 Shared DB와 연계 할 수 있습니다.

3) FC는 다른 FC를 호출 할 수 있고, FB도 호출 할 수 있습니다.

4) FB는 Shared DB와 연계 할 수 있고, Instance DB가 할당 됩니다.

5) FB는 다른 FB를 호출 할 수 있고, FC도 호출 할 수 있습니다.

SFC는 System Function, SFB는 System Function Block으로

특수기능 FC, FB라고 생각하시면 됩니다.

나중에 따로 언급하겠습니다.

자. 이렇게 어느정도 내용 정리가 된 느낌이네요.

이해가 잘 안되시는 분들은 직접 해보면서 감을 잡으셔야 합니다.

그리고 반복하셔야 합니다.

반복! 연습! 만큼 우리를 완벽하게 해주는 것은 없습니다.

오늘은 여기까지하겠습니다.

 

 

 

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

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

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

공개로 부탁드립니다.

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

힘이 된답니다. :)

감사합니다.



 

반응형

댓글