사용자 도구

사이트 도구


products:mpino_studio2:memory

문서의 이전 판입니다!


MPINO STUDIO 2 Phase 2 · 메모리 이해하기

P·M·D·C·T·R 메모리의 차이, 주소 표기, 메모리 영역 설정, 사용 위치 확인, 시간에 따라 동작하는 특수 비트 메모리를 설명합니다.

기준 보드 완료 목표
MPINO-8A4R(T)-S 메모리 주소를 구분하고 프로젝트에서 사용 위치를 찾을 수 있음

Phase 2에서 메모리를 익히는 순서

1. PLC 기본 메모리

Arduino와 다르게 PLC에서는 P,M,D,C,T,R 메모리를 사용합니다. Arduino code에서 PLC에 할당된 메모리를 제외하고 남은 메모리에서 변수를 할당할 수 있습니다.

메모리는 프로그램이 실행되는 동안 입력 상태, 내부 조건, 계산 결과, 타이머 값과 같은 데이터를 보관하는 공간입니다. MPINO Studio 2의 래더 로직과 Arduino C 코드는 이 메모리를 공유하여 사용할 수 있습니다.

기본 주소는 영역을 나타내는 문자 + 0부터 시작하는 번호로 씁니다. 예를 들어 M10은 M 영역의 11번째 주소이고, D0은 D 영역의 첫 번째 주소입니다.

P M D C T R 메모리 영역 비교

영역 단위 저장 형태 값의 범위
P BIT 보드의 디지털 입력·출력 상태 0 또는 1
M BIT 내부 BIT 메모리 0 또는 1
D WORD 부호 있는 내부 WORD 메모리 -32,768 ~ 32,767
C WORD 카운터 값 (부호 있는 내부 WORD 메모리) -32,768 ~ 32,767
T WORD 타이머 현재값 (부호 있는 내부 WORD 메모리) -32,768 ~ 32,767
R Floating Point (32비트) 내부 Floating Point 메모리 (실수 메모리) 약 -3.4028235E38 ~ +3.4028235E38
P 주소 주의: P 주소는 보드의 핀 편집에서 확인하고 수정할 수 있습니다. P 주소의 입출력 방향과 실제 단자는 프로젝트에서 선택한 보드의 정의를 따릅니다.
R 값 오차 주의: 32비트 실수는 부동 소수점 연산의 한계로 0.1 + 0.2의 결과가 정확한 0.3이 아니라 약 0.30000001로 저장될 수 있습니다. 이는 IEEE 754 32비트 부동 소수점을 사용하는 제어기에서 공통적으로 고려해야 하는 특성입니다.

2. 메모리 영역

MPINO-8A4R(T)-S를 선택했을 때의 기본 메모리 개수는 다음과 같습니다.

설정 → 메모리 영역 설정에서 메모리의 사용 개수를 수정할 수 있습니다. (단축키: Ctrl + Shift + M)

그림 1. 메모리 영역별 사용 개수와 예상 SRAM 사용량을 확인하는 메모리 영역 설정 창

영역 기본 개수 기본 주소 범위
P 64 P0 ~ P63
M 1,024 M0 ~ M1023
D 200 D0 ~ D199
C 100 C0 ~ C99
T 128 T0 ~ T127
R 50 R0 ~ R49

메모리 영역 설정 창: P·M·D·C·T·R 입력칸을 비워 두면 보드 기본값을 사용합니다. 값을 입력하면 해당 프로젝트의 사용 개수를 변경하며, 창 아래에서 예상 SRAM 사용량과 전체 SRAM을 함께 확인할 수 있습니다.

개수와 마지막 주소를 혼동하지 마십시오. 번호가 0부터 시작하므로 D 메모리 200개는 D0부터 D199까지입니다.

C 영역과 보드 핀 매핑

MPINO-8A4R(T)-S에서는 C0 ~ C10 메모리에 아날로그 입력, NTC 온도 입력, PWM이 연결되어 있습니다.

매핑 메모리는 설정 → 래더 핀맵 설정에서 변경할 수 있습니다.

아날로그·PWM 출력 주의: 아날로그 출력 또는 PWM 출력에 메모리를 매핑하면 매핑한 주소의 값으로 출력되므로 Arduino 코드에서 analogWrite 관련 함수를 사용할 수 없습니다. analogWrite 관련 함수를 사용하려면 설정 → 래더 핀맵 설정에서 해당 출력의 사용을 체크 해제하십시오.

MPINO-8A4R(T)-S의 C 메모리와 보드 핀 매핑

C 주소 보드 기능 MCU 핀
C0 ~ C5 아날로그 입력 A0 ~ A5
C6 ~ C7 NTC 온도 입력 A6 ~ A7
C8 ~ C10 PWM 출력 D21 ~ D23
C11 ~ C99 위 기능에 직접 배정되지 않은 C 영역 사용 목적을 확인한 뒤 선택
중요: 이 보드에서 C0 ~ C10을 일반 카운터 주소로 정하면, 같은 주소를 사용하는 보드 기능과 데이터가 겹칠 수 있습니다. 카운터 주소를 정하기 전에 보드·메모리 정보의 핀맵사용 메모리 맵을 함께 확인하십시오.

매핑된 주소는 보드별로 다릅니다. 또한 사용자가 변경할 수 있으므로 설정 → 래더 핀맵 설정에서 확인하십시오.

3. 데이터 형식

데이터 폭은 한 번에 읽거나 저장할 비트 수입니다. 값이 가질 수 있는 범위와 사용하는 메모리 양이 달라집니다.

BIT BYTE WORD DWORD 데이터 폭과 값의 범위

데이터 폭 크기 부호 있는 값의 범위 대표 용도
BIT 1비트 0 또는 1 접점, 코일, ON/OFF 상태
BYTE 8비트 -128 ~ 127 작은 정수
WORD 16비트 -32,768 ~ 32,767 일반 정수, D·C·T의 기본 값
DWORD 32비트 -2,147,483,648 ~ 2,147,483,647 WORD 범위를 넘는 큰 정수

R은 32비트를 사용하지만 DWORD 정수가 아니라 실수를 저장하는 별도의 영역입니다. 숫자 크기가 32비트라는 이유만으로 DWORD 접근과 R 메모리를 같은 방식으로 사용하면 안 됩니다.

값을 정할 때는 현재 값만 보지 말고 계산 후의 최댓값도 확인하십시오. 예를 들어 1일 동안 1ms마다 증가하는 누적값은 86,400,000이므로 WORD 범위를 넘습니다.

4. 메모리 주소 읽는 방법

메모리 주소는 단순한 형식부터 필요한 요소를 하나씩 더해 읽습니다.

M0, D0, D0.1, WM1.2 메모리 주소 형식

  1. M0: M 영역의 0번 BIT 주소입니다.
  2. D0: D 영역의 0번 WORD 주소입니다.
  3. D0.1: D0 WORD 안의 두 번째 비트입니다. 비트 번호는 0부터 시작합니다.
  4. WM1.2: M 영역을 WORD로 묶은 WM1 안의 세 번째 비트입니다. M18과 같은 비트를 가리킵니다.

메모리 구조

비트, 바이트, 워드, 더블워드, 실수의 메모리 구조입니다.

P M 비트 메모리와 D C T WORD 메모리가 BYTE WORD DWORD로 묶이는 구조

P·M 영역은 각각의 BIT 주소를 8개, 16개, 32개씩 묶어 BYTE·WORD·DWORD로 읽습니다. 낮은 주소가 최하위 비트가 되므로 WM0.0M0, WM1.3M19와 같은 비트를 가리킵니다.

D·C·T 영역은 주소 하나가 WORD입니다. 연속된 WORD 두 개를 묶으면 DWORD가 되며, DD0D0D1, DD1D2D3을 결합합니다. C와 T도 DC0, DT0처럼 같은 규칙을 사용합니다.

5. 프로젝트에서 사용한 메모리 찾기

메뉴에서 보기 → 사용 메모리 맵을 선택하거나 Ctrl+Shift+L을 누릅니다.

그림 2. 사용 메모리 맵에서 주소와 사용 위치를 확인하는 화면

주소를 바꾸기 전과 메모리 영역 크기를 줄이기 전에 이 화면을 확인하면 중복 사용과 범위 오류를 줄일 수 있습니다.

6. 시간에 따라 동작하는 특수 비트 메모리

@로 시작하는 특수 비트 메모리는 일반 P·M 메모리 주소와 달리 시간이 흐르면 MPINO Studio 2가 상태를 자동으로 갱신합니다. 래더의 접점 또는 상승·하강 엣지 셀에서 사용할 수 있습니다.

@100과 @F1000 특수 비트 메모리의 시간 동작 비교

형식 동작
@<ms> 지정한 시간 경계를 지날 때 한 번, 한 스캔 동안만 ON @100은 100ms마다 한 스캔 ON
@F<ms> 지정한 시간만큼 ON, 같은 시간만큼 OFF를 반복 @F1000은 1초 ON, 1초 OFF 반복

@100은 프로그램 스캔이 정확히 100ms 시각과 일치하지 않아도 경계를 지나갔다면 한 번 ON됩니다. 주기적으로 값 하나를 증가시키거나 일정 간격으로 작업을 시작할 때 사용할 수 있습니다.

@F1000은 점멸 상태를 직접 뒤집는 코드를 작성하지 않아도 1초 간격의 ON/OFF 조건을 만듭니다.

그림 3. 래더 셀에 특수 접점을 입력한 예

특수 접점 입력 규칙은 다음과 같습니다.

  • 시간 단위는 밀리초(ms)입니다.
  • 괄호를 쓰지 않습니다. @F(1000)이 아니라 @F1000으로 입력합니다.
  • 접점 셀 또는 상승·하강 엣지 셀에서만 사용합니다.
  • 출력 코일 주소에는 사용하지 않습니다.
  • 임의의 @ON 같은 이름은 사용할 수 없습니다.

문제해결방법

증상 확인할 항목
입력한 주소가 허용되지 않습니다. 영역 문자, 주소 범위, B/W/D 접두어 지원 여부, .n 비트 접근 지원 여부를 차례로 확인합니다.
메모리 영역 설정을 저장할 수 없습니다. 예상 SRAM 사용량이 전체 SRAM을 넘어서 빨간색으로 표시되었는지 확인합니다.
사용 메모리 맵에서 주소가 보이지 않습니다. 올바른 영역 탭과 래더·코드 필터를 선택했는지 확인하고 주소를 입력한 뒤 Enter를 누릅니다.
C 카운터 값이 예상과 다릅니다. MPINO-8A4R(T)-S의 C0 ~ C10 보드 핀 매핑과 주소 중복을 먼저 확인합니다.
@F1000을 입력할 수 없습니다. 출력 코일이 아닌 접점 또는 엣지 셀인지, 괄호 없이 입력했는지 확인합니다.

관련 문서

products/mpino_studio2/memory.1788875803.txt.gz · 마지막으로 수정됨: 저자 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki