사용자 도구

사이트 도구


products:mpino_studio2:memory

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판이전 판
다음 판
이전 판
products:mpino_studio2:memory [2026/09/08 22:56] – 바깥 편집 127.0.0.1products:mpino_studio2:memory [2026/09/14 12:24] (현재) – 바깥 편집 127.0.0.1
줄 1: 줄 1:
 ====== MPINO STUDIO 2 Phase 2 · 메모리 이해하기 ====== ====== MPINO STUDIO 2 Phase 2 · 메모리 이해하기 ======
  
-**P·M·D·C·T·R 메모리의 차이**, 주소 표기, 메모리 영역 설정, 사용 위치 확인, 시간에 따라 동작하는 특수 비트 메모리를 설명합니다.+**P·M·D·C·T·R 메모리의 차이**, 주소 표기, 메모리 영역 설정, 사용 위치 확인, 특수 비트 메모리를 설명합니다.
  
-^ 기준 보드 ^ 완료 목표 ^ +{{ :products:mpino_studio2:memory-learning-path.svg?1000 |메모리 이해 순서 }}
-| MPINO-8A4R(T)-S | 메모리 주소를 구분하고 프로젝트에서 사용 위치를 찾을 수 있음 | +
- +
-{{ :products:mpino_studio2:memory-learning-path.svg?1000 |Phase 2에서 메모리를 익히는 순서 }}+
  
 ===== 1. PLC 기본 메모리 ===== ===== 1. PLC 기본 메모리 =====
줄 25: 줄 22:
 | ''T'' | WORD | 타이머 현재값 (부호 있는 내부 WORD 메모리) | -32,768 ~ 32,767 | | ''T'' | WORD | 타이머 현재값 (부호 있는 내부 WORD 메모리) | -32,768 ~ 32,767 |
 | ''R'' | Floating Point (32비트) | 내부 Floating Point 메모리 (실수 메모리) | 약 -3.4028235E38 ~ +3.4028235E38 | | ''R'' | Floating Point (32비트) | 내부 Floating Point 메모리 (실수 메모리) | 약 -3.4028235E38 ~ +3.4028235E38 |
 +
 +==== Arduino 코드와 래더 로직의 메모리 공유 ====
 +
 +래더 로직과 Arduino 코드는 P·M·D·C·T·R 메모리의 같은 저장 공간을 사용합니다. 한쪽에서 값을 쓰면 다른 쪽에서 같은 주소로 읽을 수 있습니다.
 +
 +{{ :products:mpino_studio2:memory-sharing.svg?1000 |Arduino 코드와 래더 로직이 같은 PLC 메모리를 공유하는 구조 }}
 +
 +Arduino 코드에서는 래더 주소와 같은 이름을 그대로 사용하거나 배열 형식으로 쓸 수 있습니다. 두 표기는 같은 메모리를 가리킵니다.
 +
 +  * 래더의 ''M0'' ↔ Arduino 코드의 ''M0'' 또는 ''M[0]''
 +  * 래더의 ''D0'' ↔ Arduino 코드의 ''D0'' 또는 ''D[0]''
 +  * 래더의 ''R0'' ↔ Arduino 코드의 ''R0'' 또는 ''R[0]''
 +
 +<code cpp>
 +void loop() {
 +  M0 = true;    // 래더의 M0 비트 접점을 ON 상태로 만듭니다.
 +  D0 = 120;     // 래더와 Arduino 코드가 D0의 정숫값을 공유합니다.
 +  R0 = 23.5f;   // 래더와 Arduino 코드가 R0의 실숫값을 공유합니다.
 +
 +  ladderLoop(); // 위에서 저장한 값으로 래더 로직을 실행합니다.
 +}
 +</code>
 +
 +래더 로직에서 변경한 값은 ''ladderLoop()'' 실행이 끝난 뒤 Arduino 코드에서 읽을 수 있습니다. 같은 스캔 안에서 값을 읽고 쓰는 순서는 ''loop()''에서 ''ladderLoop()''를 호출한 위치를 따릅니다.
 +
 +> **입출력 매핑 주의:** P 영역과 보드 기능에 매핑된 C 영역은 래더 스캔 중 실제 입출력과 동기화됩니다. 이 영역을 Arduino 코드와 공유할 때는 **설정 → 래더 핀맵 설정**에서 주소와 입출력 방향을 먼저 확인하십시오.
  
 > **P 주소 주의:** P 주소는 **보드의 핀 편집**에서 확인하고 수정할 수 있습니다. P 주소의 입출력 방향과 실제 단자는 프로젝트에서 선택한 보드의 정의를 따릅니다. > **P 주소 주의:** P 주소는 **보드의 핀 편집**에서 확인하고 수정할 수 있습니다. P 주소의 입출력 방향과 실제 단자는 프로젝트에서 선택한 보드의 정의를 따릅니다.
줄 36: 줄 59:
 **설정 → 메모리 영역 설정**에서 메모리의 사용 개수를 수정할 수 있습니다. (단축키: ''Ctrl + Shift + M'') **설정 → 메모리 영역 설정**에서 메모리의 사용 개수를 수정할 수 있습니다. (단축키: ''Ctrl + Shift + M'')
  
-{{ :products:mpino_studio2:memory-settings-modal.png?430|그림 1. 메모리 영역별 사용 개수와 예상 SRAM 사용량을 확인하는 메모리 영역 설정 창}}+{{ :products:mpino_studio2:memory-settings-modal.png?430 |그림 1. 메모리 영역별 사용 개수와 예상 SRAM 사용량을 확인하는 메모리 영역 설정 창 }}
  
 ^ 영역 ^ 기본 개수 ^ 기본 주소 범위 ^ ^ 영역 ^ 기본 개수 ^ 기본 주소 범위 ^
줄 66: 줄 89:
 | ''C11'' ~ ''C99'' | 위 기능에 직접 배정되지 않은 C 영역 | 사용 목적을 확인한 뒤 선택 | | ''C11'' ~ ''C99'' | 위 기능에 직접 배정되지 않은 C 영역 | 사용 목적을 확인한 뒤 선택 |
  
-> **중요:** 이 보드에서 ''C0'' ~ ''C10''을 일반 카운터 주소로 정하면, 같은 주소를 사용하는 보드 기능과 데이터가 겹칠 수 있습니다. 카운터 주소를 정하기 전에 **보드·메모리 보의 핀맵**과 **사용 메모리 **을 함께 확인하십시오.+> **중요:** 이 보드에서 ''C0'' ~ ''C10''을 일반 카운터 주소로 정하면, 같은 주소를 사용하는 보드 기능과 데이터가 겹칠 수 있습니다. 카운터 주소를 정하기 전에 **정 → 래더 핀맵 설정**과 **설정 → 사용한 메모리**를 확인하십시오.
  
 매핑된 주소는 보드별로 다릅니다. 또한 사용자가 변경할 수 있으므로 **설정 → 래더 핀맵 설정**에서 확인하십시오. 매핑된 주소는 보드별로 다릅니다. 또한 사용자가 변경할 수 있으므로 **설정 → 래더 핀맵 설정**에서 확인하십시오.
줄 109: 줄 132:
 ===== 5. 프로젝트에서 사용한 메모리 찾기 ===== ===== 5. 프로젝트에서 사용한 메모리 찾기 =====
  
-메뉴에서 **보기 → 사용 메모리 **을 선택하거나 ''Ctrl+Shift+L''을 누릅니다.+메뉴에서 **설정 → 사용한 메모리**를 선택하거나 ''Ctrl+Shift+L''을 누릅니다.
  
-{{ :products:mpino_studio2:memory-map-modal.png?800 |그림 2. 사용 메모리 에서 주소와 사용 위치를 확인하는 화면 }}+{{ :products:mpino_studio2:memory-map-modal.png?800 |그림 2. 사용한 메모리에서 주소와 사용 위치를 확인하는 화면 }}
  
 주소를 바꾸기 전과 메모리 영역 크기를 줄이기 전에 이 화면을 확인하면 중복 사용과 범위 오류를 줄일 수 있습니다. 주소를 바꾸기 전과 메모리 영역 크기를 줄이기 전에 이 화면을 확인하면 중복 사용과 범위 오류를 줄일 수 있습니다.
  
-===== 6. 시간에 따라 동작하는 특수 비트 메모리 =====+===== 6. 특수 비트 메모리 =====
  
-''@''로 시작하는 특수 비트 메모리는 일반 P·M 메모리 주소와 달리 시간이 흐르면 MPINO Studio 2가 상태를 자동으로 갱신합니다. 래더의 접점 또는 상승·하강 엣지 셀에서 사용할 수 있습니다. +''@''로 시작하는 특수 비트 메모리는 MPINO Studio 2가 상태를 자동으로 갱신합니다. 래더의 비트 접점에서 사용할 수 있습니다.
- +
-{{ :products:mpino_studio2:special-memory-timing.svg?1000 |@100과 @F1000 특수 비트 메모리의 시간 동작 비교 }}+
  
 ^ 형식 ^ 동작 ^ 예 ^ ^ 형식 ^ 동작 ^ 예 ^
 +| ''@ON'' | 항상 ON | 비트 접점을 항상 참으로 유지 |
 +| ''@OFF'' | 항상 OFF | 비트 접점을 항상 거짓으로 유지 |
 | ''@<ms>'' | 지정한 시간 경계를 지날 때 한 번, 한 스캔 동안만 ON | ''@100''은 100ms마다 한 스캔 ON | | ''@<ms>'' | 지정한 시간 경계를 지날 때 한 번, 한 스캔 동안만 ON | ''@100''은 100ms마다 한 스캔 ON |
 | ''@F<ms>'' | 지정한 시간만큼 ON, 같은 시간만큼 OFF를 반복 | ''@F1000''은 1초 ON, 1초 OFF 반복 | | ''@F<ms>'' | 지정한 시간만큼 ON, 같은 시간만큼 OFF를 반복 | ''@F1000''은 1초 ON, 1초 OFF 반복 |
 +
 +''@ON''과 ''@OFF''는 대소문자를 구분하지 않으므로 ''@on''과 ''@off''도 사용할 수 있습니다.
 +
 +{{ :products:mpino_studio2:special-memory-timing.svg?1000 |@100과 @F1000 특수 비트 메모리의 시간 동작 비교 }}
  
 ''@100''은 프로그램 스캔이 정확히 100ms 시각과 일치하지 않아도 경계를 지나갔다면 한 번 ON됩니다. 주기적으로 값 하나를 증가시키거나 일정 간격으로 작업을 시작할 때 사용할 수 있습니다. ''@100''은 프로그램 스캔이 정확히 100ms 시각과 일치하지 않아도 경계를 지나갔다면 한 번 ON됩니다. 주기적으로 값 하나를 증가시키거나 일정 간격으로 작업을 시작할 때 사용할 수 있습니다.
줄 129: 줄 156:
 ''@F1000''은 점멸 상태를 직접 뒤집는 코드를 작성하지 않아도 1초 간격의 ON/OFF 조건을 만듭니다. ''@F1000''은 점멸 상태를 직접 뒤집는 코드를 작성하지 않아도 1초 간격의 ON/OFF 조건을 만듭니다.
  
-{{ :products:mpino_studio2:special-relay-example.png?500 |그림 3. 래더 셀에 특수 접점을 입력한 예 }}+{{ :products:mpino_studio2:special-relay-example.png?420 |그림 3. 래더 셀에 특수 비트 메모리를 입력한 예 }}
  
-특수 접점 입력 규칙은 다음과 같습니다.+특수 비트 메모리 입력 규칙은 다음과 같습니다.
  
-  * 시간 단위는 밀리초(ms)입니다.+  * ''@<ms>''와 ''@F<ms>''의 시간 단위는 밀리초(ms)입니다.
   * 괄호를 쓰지 않습니다. ''@F(1000)''이 아니라 ''@F1000''으로 입력합니다.   * 괄호를 쓰지 않습니다. ''@F(1000)''이 아니라 ''@F1000''으로 입력합니다.
-  * 접점 셀 또는 상승·하강 엣지 셀에서만 사용합니다.+  * 비트 접점에서만 사용합니다.
   * 출력 코일 주소에는 사용하지 않습니다.   * 출력 코일 주소에는 사용하지 않습니다.
-  * 임의의 ''@ON'' 같은 이름은 사용할 수 없습니다. 
  
 ===== 문제해결방법 ===== ===== 문제해결방법 =====
줄 144: 줄 170:
 | 입력한 주소가 허용되지 않습니다. | 영역 문자, 주소 범위, B/W/D 접두어 지원 여부, ''.n'' 비트 접근 지원 여부를 차례로 확인합니다. | | 입력한 주소가 허용되지 않습니다. | 영역 문자, 주소 범위, B/W/D 접두어 지원 여부, ''.n'' 비트 접근 지원 여부를 차례로 확인합니다. |
 | 메모리 영역 설정을 저장할 수 없습니다. | 예상 SRAM 사용량이 전체 SRAM을 넘어서 빨간색으로 표시되었는지 확인합니다. | | 메모리 영역 설정을 저장할 수 없습니다. | 예상 SRAM 사용량이 전체 SRAM을 넘어서 빨간색으로 표시되었는지 확인합니다. |
-| 사용 메모리 에서 주소가 보이지 않습니다. | 올바른 영역 탭과 래더·코드 필터를 선택했는지 확인하고 주소를 입력한 뒤 ''Enter''를 누릅니다. |+| 사용한 메모리에서 주소가 보이지 않습니다. | 올바른 영역 탭과 래더·코드 필터를 선택했는지 확인하고 주소를 입력한 뒤 ''Enter''를 누릅니다. |
 | C 카운터 값이 예상과 다릅니다. | MPINO-8A4R(T)-S의 ''C0'' ~ ''C10'' 보드 핀 매핑과 주소 중복을 먼저 확인합니다. | | C 카운터 값이 예상과 다릅니다. | MPINO-8A4R(T)-S의 ''C0'' ~ ''C10'' 보드 핀 매핑과 주소 중복을 먼저 확인합니다. |
-| ''@F1000''을 입력할 수 없습니다. | 출력 코일이 아닌 접점 또는 엣지 셀인지, 괄호 없이 입력했는지 확인합니다. |+| ''@F1000''을 입력할 수 없습니다. | 비트 접점인지, 괄호 없이 입력했는지 확인합니다. |
  
 ===== 관련 문서 ===== ===== 관련 문서 =====
 +
 +  * [[products:mpino_studio2:activity_bar|Phase 8 · 활동바와 사이드 패널]]
 +
 +  * [[products:mpino_studio2:menus_settings|Phase 7 · 메뉴와 환경설정]]
 +
 +  * [[products:mpino_studio2:monitoring|Phase 6 · 시리얼ㆍ래더 모니터링]]
  
   * [[products:mpino_studio2:first_project|Phase 1 · 첫 프로젝트 만들기]]   * [[products:mpino_studio2:first_project|Phase 1 · 첫 프로젝트 만들기]]
products/mpino_studio2/memory.1788875803.txt.gz · 마지막으로 수정됨: 저자 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki