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

SIEMENS STEP7 PLC Simatic Manager Programing 기초 응용 ( 지멘스 PLC 변수, 어드레스 체계 )

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

절대 어드레스 Address, 심볼 어드레스 Symbol, Bit Memory, 전역변수, 지역변수 개념과 체계

 

자 오늘은 어드레스와 변수의 체계에 대해서 이야기 해 보려고 합니다.

많은분들이 헷갈려 하시지요.

조금 다른 이야기이기도 합니다만

컴퓨터 프로그래밍 언어 ( C, C++, Python, JAVA 등등)을 배울때

변수와 어드레스 및 자료형에 대해서 확실히 알면

반은 끝난거다 라는 말이 있을 정도 입니다.

그만큼 어떤 컨트롤러의 프로그래밍이든

변수와 어드레스의 개념은 중요한 겁니다.

일단 변수와 어드레스에 대한 기본적인 내용은

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



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

 

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

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

mech19.tistory.com

 

 

오늘은 전체적인 개념을 헷갈리지 않도록 잡기 위한 공부입니다.

오늘 내용을 시작하도록 하겠습니다.

전체적인 개념을 시각화 해서 보고 시작하겠습니다.

어드레스에는 절대 어드레스와 심볼 어드레스가 있습니다.

(상세한 설명은 아래에서~~~~~)

변수에는 글로벌변수(전역변수)와 로컬변수(지역변수)가 있습니다.

로컬변수에는 또 임시변수와 정적변수가 있습니다.

 

이걸 통합개념으로 전체적으로 보면

아래와 같습니다.

자 그럼 이제 하나씩 설명을 해보겠습니다.

 

1. 글로벌 변수 (전역변수)

변수에는 글로벌 변수와 로컬 변수가 있는데

그 중에서 글로벌 변수는 우리가 생성한 프로젝트 내에서

어디서든 사용할 수 있는 변수입니다.

"OB", "FC", "FB" 어디서든 접근이 가능하고, 사용이 가능합니다.

이 글로벌 변수를 표현하는 방법으로

절대 어드레스와 심볼 어드레스가 있는 겁니다.

지난번에 이야기한대로

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

심볼 어드레스는 "국회의사당"이 되는겁니다.

(택시 타면 주소를 직접 불러줘도 되고, 국회의사당이라고 불러줘도 되죠? 그런 개념인겁니다.)

위와 같이 "I0.0, Q22.1, M10.0 Q2.1" 같은 방식으로

직접 메모리 주소를 입력하는 방식이 절대 어드레스 입니다.

반대로 심볼 어드레스는 메모리 주소에 부여된 심볼을 기입하는 방식이겠죠?

(심볼에 메모리 주소를 부여하든 메모리 주소에 심볼을 부여하든

1:1매칭이기 때문에 어차피 동일한 이야기 입니다.)

이 작업은 심볼 에디터(Symbol Editor)를 통하여

심볼테이블(Symbol Table)을 편집하여 수행합니다.

처음에 심볼에디터를 열어보면 아무것도 없습니다.

PUMP_START, PUMP_STOP, PUMP_RUN을 각각

입력, 입력, 출력 어드레스를 부여하여 생성해 보겠습니다.

자~ 완성하였습니다.

이렇게 심볼을 만들고 나면

어디서든 I 5.0을 대신해서 PUMP_START라는 심볼로

사용이 가능해 집니다.

심볼 편집기로 만든 심볼 테이블은 글로벌 변수이기 때문에

어디서든 사용이 가능합니다.

그리고 글로벌 변수의 데이터 (주로 큰 값들)들을 저장하고 싶다면

"Shared DB"를 사용합니다.

"Shared DB"는 "Instance DB"와는 다르게

전체 프로젝트 내의 모든 프로그램과 공동으로 사용이 가능합니다.

자 이제 감이 잡히셨나요???

이제 로컬 변수에 대해서 이야기 할 차례 입니다.

2. 로컬 변수 (지역변수)

로컬 변수는 글로벌 변수와는 다르게,

프로젝트 내의 모든 프로그램에서 접근이나 사용이 불가능합니다.

로컬 변수를 선언한 해당 "FC"나 "FB"에서만

사용이 가능합니다.

또 로컬변수에는 임시 변수와 정적 변수가 있습니다.

임시 변수는 말그대로 임시로 선언되는 변수이고,

정적 변수는 나름 메모리를 차지하는 변수입니다.

1) 임시변수

"FC"에서 선언되는 변수들은 모두 임시 변수입니다.

"FC"를 실행시키면 상단의 "Interface"항목이 보이는데

이곳에 변수 선언 창입니다.

여기서 선언된 변수들은 해당 "FC"에서만 사용이 가능하고,

해당"FC"가 실행되는 동안에만 로컬 메모리 스택이라는

메모리 공간을 잠시 빌려서 데이터를 저장하거나 주고 받다가

해당 "FC"가 실행이 종료되면 할당받았던

메모리 공간을 빼앗기기 때문에 가지고 있던 데이터는 모두 휘발됩니다.

그리고 아래에서 보듯이 변수의 심볼에 해당하는 "Name"만 있을뿐

변수의 주소에 해당하는 "Address"는 없습니다.

고정된 메모리를 할당 받지 못하기 때문입니다.

반면에 정적변수는 다릅니다.

이제 정적 변수에 대해서 알아보겠습니다.

2) 정적변수

"FB"에서 선언하는 변수들은

해당 "FB"에 할당되는 "Instance DB"에 저장이 됩니다.

이 "Instance DB"는 메모리를 가지기 때문에

변수들이 가지고 있는 데이터들은

해당 "FB"가 실행이 종료되더라도 데이터를 소실하지 않습니다.

정적변수 또한 로컬변수이기 때문에

해당 "FB"에서만 접근이 가능하고 사용할 수 있습니다.

"FB"를 실행하면 아래와 같이 변수 선언창을 볼 수 있습니다.

생긴건 "FC"와 똑같이 생겼습니다.

그러나 열어보면

"FC"변수 선언창과는 달리 "Address"항목이 보입니다.

이 어드레스는 해당 "FB"에 할당된 "Instance DB"의 어드레스로

"Instance DB"를 실행시켜서 열어보면

동일한 내용이 저장되어 있는 것을 확인 할 수 있습니다.

DB의 Address는 아래와 같은 방법으로 절대 어드레스 호출이 가능합니다.

데이터블록 bit address : DB번호.DBX0.1, DB번호.DBX0.2....

데이터블록 byte address : DB번호.DBB 0, DB번호.DBB 1, DB번호.DBB 2............

데이터블록 word address : DB번호.DBW 0, DB번호.DBW 1, DB번호.DBW 2..............

데이터블록 double word address : DB번호.DBD 0, DB번호.DBD 1, DB번호.DBD 2,,,,,,,,,,,,,,,,,,,,,,

여기까지가 변수와 어드레스의 체계에 대한 전반적인 모든 내용입니다.

어느정도 감이 잡히시나요??

이해가 안되신다면 몇번 반복해서 읽어보시기 바랍니다.

오늘은 별로 긴 내용은 아니니....

이건 확실히 머리속에 개념을 정립하고 가시는게 좋습니다.

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

 

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

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

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

공개로 부탁드립니다.

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

힘이 된답니다. :)

감사합니다.

반응형

댓글