products:mpino_studio2:memory
차이
문서의 선택한 두 판 사이의 차이를 보여줍니다.
| 양쪽 이전 판이전 판다음 판 | 이전 판 | ||
| products:mpino_studio2:memory [2026/09/08 16:58] – 바깥 편집 127.0.0.1 | products: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 메모리의 차이**, 주소 표기, 메모리 영역 설정, 사용 위치 확인, 특수 |
| - | ^ 기준 보드 ^ 완료 목표 ^ | + | {{ : |
| - | | MPINO-8A4R(T)-S | 메모리 | + | |
| - | {{ : | + | ===== 1. PLC 기본 |
| - | ===== 1. 메모리란? ===== | + | Arduino와 다르게 PLC에서는 P,M,D,C,T,R 메모리를 사용합니다. Arduino code에서 PLC에 할당된 |
| 메모리는 프로그램이 실행되는 동안 입력 상태, 내부 조건, 계산 결과, 타이머 값과 같은 데이터를 보관하는 공간입니다. MPINO Studio 2의 래더 로직과 Arduino C 코드는 이 메모리를 공유하여 사용할 수 있습니다. | 메모리는 프로그램이 실행되는 동안 입력 상태, 내부 조건, 계산 결과, 타이머 값과 같은 데이터를 보관하는 공간입니다. MPINO Studio 2의 래더 로직과 Arduino C 코드는 이 메모리를 공유하여 사용할 수 있습니다. | ||
| 줄 23: | 줄 22: | ||
| | '' | | '' | ||
| | '' | | '' | ||
| + | |||
| + | ==== Arduino 코드와 래더 로직의 메모리 공유 ==== | ||
| + | |||
| + | 래더 로직과 Arduino 코드는 P·M·D·C·T·R 메모리의 같은 저장 공간을 사용합니다. 한쪽에서 값을 쓰면 다른 쪽에서 같은 주소로 읽을 수 있습니다. | ||
| + | |||
| + | {{ : | ||
| + | |||
| + | Arduino 코드에서는 래더 주소와 같은 이름을 그대로 사용하거나 배열 형식으로 쓸 수 있습니다. 두 표기는 같은 메모리를 가리킵니다. | ||
| + | |||
| + | * 래더의 '' | ||
| + | * 래더의 '' | ||
| + | * 래더의 '' | ||
| + | |||
| + | <code cpp> | ||
| + | void loop() { | ||
| + | M0 = true; // 래더의 M0 비트 접점을 ON 상태로 만듭니다. | ||
| + | D0 = 120; // 래더와 Arduino 코드가 D0의 정숫값을 공유합니다. | ||
| + | R0 = 23.5f; | ||
| + | |||
| + | ladderLoop(); | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | 래더 로직에서 변경한 값은 '' | ||
| + | |||
| + | > **입출력 매핑 주의:** P 영역과 보드 기능에 매핑된 C 영역은 래더 스캔 중 실제 입출력과 동기화됩니다. 이 영역을 Arduino 코드와 공유할 때는 **설정 → 래더 핀맵 설정**에서 주소와 입출력 방향을 먼저 확인하십시오. | ||
| > **P 주소 주의:** P 주소는 **보드의 핀 편집**에서 확인하고 수정할 수 있습니다. P 주소의 입출력 방향과 실제 단자는 프로젝트에서 선택한 보드의 정의를 따릅니다. | > **P 주소 주의:** P 주소는 **보드의 핀 편집**에서 확인하고 수정할 수 있습니다. P 주소의 입출력 방향과 실제 단자는 프로젝트에서 선택한 보드의 정의를 따릅니다. | ||
| 줄 28: | 줄 53: | ||
| > **R 값 오차 주의:** 32비트 실수는 부동 소수점 연산의 한계로 '' | > **R 값 오차 주의:** 32비트 실수는 부동 소수점 연산의 한계로 '' | ||
| - | ===== 2. MPINO-8A4R(T)-S의 기본 | + | ===== 2. 메모리 |
| MPINO-8A4R(T)-S를 선택했을 때의 기본 메모리 개수는 다음과 같습니다. | MPINO-8A4R(T)-S를 선택했을 때의 기본 메모리 개수는 다음과 같습니다. | ||
| - | **설정 → 메모리 영역 설정**에서 메모리의 사용 개수를 수정할 수 있습니다. | + | **설정 → 메모리 영역 설정**에서 메모리의 사용 개수를 수정할 수 있습니다. |
| - | {{ : | + | {{ : |
| ^ 영역 ^ 기본 개수 ^ 기본 주소 범위 ^ | ^ 영역 ^ 기본 개수 ^ 기본 주소 범위 ^ | ||
| 줄 51: | 줄 76: | ||
| MPINO-8A4R(T)-S에서는 '' | MPINO-8A4R(T)-S에서는 '' | ||
| + | |||
| + | 매핑 메모리는 **설정 → 래더 핀맵 설정**에서 변경할 수 있습니다. | ||
| + | |||
| + | > **아날로그·PWM 출력 주의:** 아날로그 출력 또는 PWM 출력에 메모리를 매핑하면 매핑한 주소의 값으로 출력되므로 Arduino 코드에서 '' | ||
| {{ : | {{ : | ||
| 줄 60: | 줄 89: | ||
| | '' | | '' | ||
| - | > **중요:** 이 보드에서 '' | + | > **중요:** 이 보드에서 '' |
| - | 다른 MPINO 제품은 메모리 개수와 핀 매핑이 다를 수 있습니다. | + | 매핑된 주소는 보드별로 |
| - | ===== 3. 데이터 | + | ===== 3. 데이터 |
| 데이터 폭은 한 번에 읽거나 저장할 비트 수입니다. 값이 가질 수 있는 범위와 사용하는 메모리 양이 달라집니다. | 데이터 폭은 한 번에 읽거나 저장할 비트 수입니다. 값이 가질 수 있는 범위와 사용하는 메모리 양이 달라집니다. | ||
| 줄 82: | 줄 111: | ||
| ===== 4. 메모리 주소 읽는 방법 ===== | ===== 4. 메모리 주소 읽는 방법 ===== | ||
| - | 긴 주소는 | + | 메모리 |
| - | {{ : | + | {{ : |
| - | 예를 들어 | + | - '' |
| + | - '' | ||
| + | - '' | ||
| + | - '' | ||
| - | - '' | + | ==== 메모리 |
| - | - '' | + | |
| - | - '' | + | |
| - | - '' | + | |
| - | ==== 메모리가 묶이는 구조 ==== | + | 비트, 바이트, 워드, 더블워드, |
| - | + | ||
| - | 아래 그림은 MP STUDIO 사용설명서의 메모리 구조 | + | |
| {{ : | {{ : | ||
| 줄 103: | 줄 130: | ||
| D·C·T 영역은 주소 하나가 WORD입니다. 연속된 WORD 두 개를 묶으면 DWORD가 되며, '' | D·C·T 영역은 주소 하나가 WORD입니다. 연속된 WORD 두 개를 묶으면 DWORD가 되며, '' | ||
| - | ==== 폭 접두어와 비트 접근 ==== | + | ===== 5. 프로젝트에서 사용한 메모리 찾기 ===== |
| - | + | ||
| - | ^ 표기 ^ 사용할 수 있는 영역 ^ 예 ^ | + | |
| - | | '' | + | |
| - | | '' | + | |
| - | | '' | + | |
| - | | '' | + | |
| - | + | ||
| - | 여기서 '' | + | |
| - | + | ||
| - | 다음 표기는 사용할 수 없습니다. | + | |
| - | + | ||
| - | * '' | + | |
| - | * R 영역에 폭 접두어를 붙이는 표기 | + | |
| - | * R 영역에 '' | + | |
| - | + | ||
| - | 주소 입력창에서 오류가 표시되면 철자만 고치기 전에 **선택한 영역에서 그 폭과 비트 접근을 지원하는지** 확인하십시오. | + | |
| - | + | ||
| - | ===== 5. 메모리 영역 크기 확인하기 ===== | + | |
| - | + | ||
| - | 메뉴에서 **설정 → 메모리 영역 설정**을 선택하거나 '' | + | |
| - | + | ||
| - | 다음 순서로 확인합니다. | + | |
| - | + | ||
| - | - 창 위쪽에서 현재 프로젝트의 보드가 **MPINO-8A4R(T)-S**인지 확인합니다. | + | |
| - | - P, M, D, C, T, R 입력칸의 개수를 확인합니다. | + | |
| - | - 값을 바꾸지 않은 빈 입력칸은 선택한 보드의 기본값을 사용합니다. | + | |
| - | - 아래쪽의 예상 SRAM 사용량과 전체 SRAM을 확인합니다. | + | |
| - | - 전체 용량을 넘으면 표시가 빨간색으로 바뀌고 저장할 수 없습니다. | + | |
| - | - 변경이 필요하면 값을 입력하고 **저장**을 누릅니다. | + | |
| - | - 창을 닫은 뒤 '' | + | |
| - | + | ||
| - | 특별한 이유가 없다면 보드 기본값을 유지하는 것이 좋습니다. 메모리 개수를 늘리면 사용할 수 있는 주소가 늘지만 SRAM도 더 사용합니다. 개수를 줄이면 기존 래더나 Arduino C 코드가 범위를 벗어난 주소를 참조할 수 있으므로, | + | |
| - | + | ||
| - | ===== 6. 프로젝트에서 사용한 메모리 찾기 ===== | + | |
| - | + | ||
| - | 메뉴에서 **보기 → 사용 메모리 맵**을 선택하거나 '' | + | |
| - | + | ||
| - | {{ : | + | |
| - | + | ||
| - | 사용 메모리 맵은 다음과 같이 사용합니다. | + | |
| - | + | ||
| - | - 위쪽의 '' | + | |
| - | - 래더와 코드 필터로 확인할 소스를 좁힙니다. | + | |
| - | - 주소 검색란에 주소를 입력하고 '' | + | |
| - | - 색이 표시된 주소 셀은 현재 프로젝트에서 사용 중인 메모리입니다. | + | |
| - | - 사용 중인 셀을 클릭하면 아래쪽에 참조 위치가 표시됩니다. | + | |
| - | - 참조 항목을 선택하면 해당 래더 셀 또는 코드 위치로 이동할 수 있습니다. | + | |
| - | - 창을 닫았다 다시 열어도 탭과 스크롤 위치는 유지됩니다. 앱을 다시 시작하면 초기화됩니다. | + | |
| - | ==== Phase 1 프로젝트로 확인하기 ==== | + | 메뉴에서 **설정 → 사용한 메모리**를 선택하거나 '' |
| - | | + | {{ : |
| - | | + | |
| - | - '' | + | |
| - | - '' | + | |
| - | - '' | + | |
| - | - '' | + | |
| 주소를 바꾸기 전과 메모리 영역 크기를 줄이기 전에 이 화면을 확인하면 중복 사용과 범위 오류를 줄일 수 있습니다. | 주소를 바꾸기 전과 메모리 영역 크기를 줄이기 전에 이 화면을 확인하면 중복 사용과 범위 오류를 줄일 수 있습니다. | ||
| - | ===== 7. 시간에 따라 동작하는 | + | ===== 6. 특수 |
| - | '' | + | '' |
| - | + | ||
| - | {{ : | + | |
| ^ 형식 ^ 동작 ^ 예 ^ | ^ 형식 ^ 동작 ^ 예 ^ | ||
| + | | '' | ||
| + | | '' | ||
| | '' | | '' | ||
| | '' | | '' | ||
| + | |||
| + | '' | ||
| + | |||
| + | {{ : | ||
| '' | '' | ||
| 줄 178: | 줄 156: | ||
| '' | '' | ||
| - | {{ : | + | {{ : |
| - | 특수 | + | 특수 |
| - | * 시간 단위는 밀리초(ms)입니다. | + | * '' |
| * 괄호를 쓰지 않습니다. '' | * 괄호를 쓰지 않습니다. '' | ||
| - | * 접점 | + | * 비트 |
| * 출력 코일 주소에는 사용하지 않습니다. | * 출력 코일 주소에는 사용하지 않습니다. | ||
| - | * 임의의 '' | ||
| - | |||
| - | ===== 8. 실습 · P32를 1초 간격으로 점멸시키기 ===== | ||
| - | |||
| - | Phase 1 회로의 '' | ||
| - | |||
| - | - Phase 1 프로젝트를 연 뒤 **파일 → 다른 이름으로 저장**을 사용해 '' | ||
| - | - 출력 부하가 분리되어 있는지 확인합니다. | ||
| - | - '' | ||
| - | - '' | ||
| - | - 주소를 '' | ||
| - | - 출력 코일 주소는 '' | ||
| - | - '' | ||
| - | - MP 다운로드 케이블을 연결하고 오른쪽 아래에서 포트를 선택합니다. | ||
| - | - '' | ||
| - | - Phase 1에서 모니터링 포트를 설정했다면 '' | ||
| - | - '' | ||
| - | |||
| - | 실습이 끝난 뒤 실제 입력으로 다시 시험하려면 접점 주소를 '' | ||
| - | |||
| - | ===== 9. 상황별 메모리 선택 기준 ===== | ||
| - | |||
| - | ^ 저장하려는 값 ^ 먼저 검토할 영역 ^ 확인할 내용 ^ | ||
| - | | 실제 디지털 입력·출력 | '' | ||
| - | | 래더 내부 ON/OFF 조건 | '' | ||
| - | | 일반 정수와 계산 결과 | '' | ||
| - | | 카운터 현재값 | '' | ||
| - | | 타이머 경과값 | '' | ||
| - | | 소수점이 있는 값 | '' | ||
| - | | 일정 주기의 접점 조건 | '' | ||
| - | |||
| - | ===== 10. 완료 확인 ===== | ||
| - | |||
| - | 다음 항목을 모두 설명하거나 직접 확인할 수 있으면 Phase 2를 완료한 것입니다. | ||
| - | |||
| - | * '' | ||
| - | * MPINO-8A4R(T)-S의 '' | ||
| - | * BIT, BYTE, WORD, DWORD의 크기와 부호 있는 값의 범위를 확인했습니다. | ||
| - | * '' | ||
| - | * '' | ||
| - | * '' | ||
| - | * '' | ||
| - | * 실습 프로젝트를 별도 이름으로 저장하고 빌드 결과를 확인했습니다. | ||
| ===== 문제해결방법 ===== | ===== 문제해결방법 ===== | ||
| 줄 235: | 줄 170: | ||
| | 입력한 주소가 허용되지 않습니다. | 영역 문자, 주소 범위, B/W/D 접두어 지원 여부, '' | | 입력한 주소가 허용되지 않습니다. | 영역 문자, 주소 범위, B/W/D 접두어 지원 여부, '' | ||
| | 메모리 영역 설정을 저장할 수 없습니다. | 예상 SRAM 사용량이 전체 SRAM을 넘어서 빨간색으로 표시되었는지 확인합니다. | | | 메모리 영역 설정을 저장할 수 없습니다. | 예상 SRAM 사용량이 전체 SRAM을 넘어서 빨간색으로 표시되었는지 확인합니다. | | ||
| - | | 사용 메모리 | + | | 사용한 메모리에서 주소가 보이지 않습니다. | 올바른 영역 탭과 래더·코드 필터를 선택했는지 확인하고 주소를 입력한 뒤 '' |
| | C 카운터 값이 예상과 다릅니다. | MPINO-8A4R(T)-S의 '' | | C 카운터 값이 예상과 다릅니다. | MPINO-8A4R(T)-S의 '' | ||
| - | | '' | + | | '' |
| - | | P32가 점멸하지 않습니다. | '' | + | |
| ===== 관련 문서 ===== | ===== 관련 문서 ===== | ||
| + | |||
| + | * [[products: | ||
| + | |||
| + | * [[products: | ||
| + | |||
| + | * [[products: | ||
| * [[products: | * [[products: | ||
products/mpino_studio2/memory.1788854308.txt.gz · 마지막으로 수정됨: 저자 127.0.0.1
