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