사용자 도구

사이트 도구


products:mpino_studio2:memory

차이

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

차이 보기로 링크

양쪽 이전 판이전 판
다음 판
이전 판
products:mpino_studio2:memory [2026/09/08 16:58] – 바깥 편집 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)-| 메모리 주소를 구분하고 프로젝트에서 사용 위치를 찾을 수 있음 |+
  
-{{ :products:mpino_studio2:memory-learning-path.svg?1000 |Phase 2에서 메모리를 익히는 순서 }}+===== 1PLC 기본 메모리 =====
  
-===== 1. 메모리란? =====+Arduino와 다르게 PLC에서는 P,M,D,C,T,R 메모리를 사용합니다Arduino code에서 PLC에 할당된 메모리를 제외하고 남은 메모리에서 변수를 할당할 수 있습니다.
  
 메모리는 프로그램이 실행되는 동안 입력 상태, 내부 조건, 계산 결과, 타이머 값과 같은 데이터를 보관하는 공간입니다. MPINO Studio 2의 래더 로직과 Arduino C 코드는 이 메모리를 공유하여 사용할 수 있습니다. 메모리는 프로그램이 실행되는 동안 입력 상태, 내부 조건, 계산 결과, 타이머 값과 같은 데이터를 보관하는 공간입니다. MPINO Studio 2의 래더 로직과 Arduino C 코드는 이 메모리를 공유하여 사용할 수 있습니다.
줄 23: 줄 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 주소의 입출력 방향과 실제 단자는 프로젝트에서 선택한 보드의 정의를 따릅니다.
줄 28: 줄 53:
 > **R 값 오차 주의:** 32비트 실수는 부동 소수점 연산의 한계로 ''0.1 + 0.2''의 결과가 정확한 ''0.3''이 아니라 약 ''0.30000001''로 저장될 수 있습니다. 이는 IEEE 754 32비트 부동 소수점을 사용하는 제어기에서 공통적으로 고려해야 하는 특성입니다. > **R 값 오차 주의:** 32비트 실수는 부동 소수점 연산의 한계로 ''0.1 + 0.2''의 결과가 정확한 ''0.3''이 아니라 약 ''0.30000001''로 저장될 수 있습니다. 이는 IEEE 754 32비트 부동 소수점을 사용하는 제어기에서 공통적으로 고려해야 하는 특성입니다.
  
-===== 2. MPINO-8A4R(T)-S의 기본 메모리 =====+===== 2. 메모리 영역 =====
  
 MPINO-8A4R(T)-S를 선택했을 때의 기본 메모리 개수는 다음과 같습니다. MPINO-8A4R(T)-S를 선택했을 때의 기본 메모리 개수는 다음과 같습니다.
  
-**설정 → 메모리 영역 설정**에서 메모리의 사용 개수를 수정할 수 있습니다.+**설정 → 메모리 영역 설정**에서 메모리의 사용 개수를 수정할 수 있습니다. (단축키: ''Ctrl + Shift + M'')
  
-{{ :products:mpino_studio2:memory-settings-modal.png?430|그림 1. 메모리 영역별 사용 개수와 예상 SRAM 사용량을 확인하는 메모리 영역 설정 창}}+{{ :products:mpino_studio2:memory-settings-modal.png?430 |그림 1. 메모리 영역별 사용 개수와 예상 SRAM 사용량을 확인하는 메모리 영역 설정 창 }}
  
 ^ 영역 ^ 기본 개수 ^ 기본 주소 범위 ^ ^ 영역 ^ 기본 개수 ^ 기본 주소 범위 ^
줄 51: 줄 76:
  
 MPINO-8A4R(T)-S에서는 ''C0'' ~ ''C10'' 메모리에 아날로그 입력, NTC 온도 입력, PWM이 연결되어 있습니다. MPINO-8A4R(T)-S에서는 ''C0'' ~ ''C10'' 메모리에 아날로그 입력, NTC 온도 입력, PWM이 연결되어 있습니다.
 +
 +매핑 메모리는 **설정 → 래더 핀맵 설정**에서 변경할 수 있습니다.
 +
 +> **아날로그·PWM 출력 주의:** 아날로그 출력 또는 PWM 출력에 메모리를 매핑하면 매핑한 주소의 값으로 출력되므로 Arduino 코드에서 ''analogWrite'' 관련 함수를 사용할 수 없습니다. ''analogWrite'' 관련 함수를 사용하려면 **설정 → 래더 핀맵 설정**에서 해당 출력의 **사용**을 체크 해제하십시오.
  
 {{ :products:mpino_studio2:memory-c-map-8a4r-s.svg?1000 |MPINO-8A4R(T)-S의 C 메모리와 보드 핀 매핑 }} {{ :products:mpino_studio2:memory-c-map-8a4r-s.svg?1000 |MPINO-8A4R(T)-S의 C 메모리와 보드 핀 매핑 }}
줄 60: 줄 89:
 | ''C11'' ~ ''C99'' | 위 기능에 직접 배정되지 않은 C 영역 | 사용 목적을 확인한 뒤 선택 | | ''C11'' ~ ''C99'' | 위 기능에 직접 배정되지 않은 C 영역 | 사용 목적을 확인한 뒤 선택 |
  
-> **중요:** 이 보드에서 ''C0'' ~ ''C10''을 일반 카운터 주소로 정하면, 같은 주소를 사용하는 보드 기능과 데이터가 겹칠 수 있습니다. 카운터 주소를 정하기 전에 **보드·메모리 보의 핀맵**과 **사용 메모리 **을 함께 확인하십시오.+> **중요:** 이 보드에서 ''C0'' ~ ''C10''을 일반 카운터 주소로 정하면, 같은 주소를 사용하는 보드 기능과 데이터가 겹칠 수 있습니다. 카운터 주소를 정하기 전에 **정 → 래더 핀맵 설정**과 **설정 → 사용한 메모리**를 확인하십시오.
  
-다른 MPINO 제품은 메모리 개수와 핀 매핑이 를 수 있습니다. 다른 보드 프젝트에 위 주소표를 그대로 적용지 마십시오.+매핑된 주소는 보드별로 니다. 또한 사용자가 변경할 수 있으므로 **설정 → 래더 핀맵 설정**서 확인하십시오.
  
-===== 3. 데이터 폭 이해하기 =====+===== 3. 데이터 형식 =====
  
 데이터 폭은 한 번에 읽거나 저장할 비트 수입니다. 값이 가질 수 있는 범위와 사용하는 메모리 양이 달라집니다. 데이터 폭은 한 번에 읽거나 저장할 비트 수입니다. 값이 가질 수 있는 범위와 사용하는 메모리 양이 달라집니다.
줄 82: 줄 111:
 ===== 4. 메모리 주소 읽는 방법 ===== ===== 4. 메모리 주소 읽는 방법 =====
  
-긴 주소는 왼쪽부터 **데이터 폭 접두어**, **메모리 영역**, **주소 번호**, **비트 번호**로 누어 읽습니다.+메모리 주소는 단순한 형식부터 필요한 요를 하씩 더해 읽습니다.
  
-{{ :products:mpino_studio2:memory-addressing.svg?1000 |WM1.메모리 주소를 구성 요소별로 읽는 방법 }}+{{ :products:mpino_studio2:memory-addressing.svg?1000 |M0, D0, D0.1, WM1.메모리 주소 형식 }}
  
-예를 들어 ''WM1.3''은 다음 뜻입니다.+  - ''M0'': M 영역의 0번 BIT 주소입니다. 
 +  - ''D0'': D 영역의 0번 WORD 주소입니다. 
 +  - ''D0.1'': D0 WORD 안의 두 번째 비트입니다. 비트 번호는 0부터 시작합니다. 
 +  - ''WM1.2'': M 영역을 WORD로 묶은 ''WM1'' 안의 세 번째 비트니다. ''M18''과 같은 비트를 가리킵니다.
  
-  - ''W'': WORD 폭으로 묶어 봅니다. +==== 메모리 구조 ====
-  - ''M'': 내부 비트 메모리 영역입니다. +
-  - ''1'': 주소 묶음 번호입니다. +
-  - ''.3'': 그 WORD 안의 4번째 비트입니다. 비트 번호도 0부터 시작합니다.+
  
-==== 메모리가 묶는 구조 ==== +비트, 바트, 워드, 더블워드, 실수의 메모리 구조입니다.
- +
-아래 그림은 MP STUDIO 사용설명서의 메모리 구조 표현 방식을 참고하되, 현재 MPINO Studio 2에서 지원하는 주소 규칙에 맞춰 다시 구성한 것입니다.+
  
 {{ :products:mpino_studio2:memory-structure.svg?1000 |P M 비트 메모리와 D C T WORD 메모리가 BYTE WORD DWORD로 묶이는 구조 }} {{ :products:mpino_studio2:memory-structure.svg?1000 |P M 비트 메모리와 D C T WORD 메모리가 BYTE WORD DWORD로 묶이는 구조 }}
줄 103: 줄 130:
 D·C·T 영역은 주소 하나가 WORD입니다. 연속된 WORD 두 개를 묶으면 DWORD가 되며, ''DD0''은 ''D0''과 ''D1'', ''DD1''은 ''D2''와 ''D3''을 결합합니다. C와 T도 ''DC0'', ''DT0''처럼 같은 규칙을 사용합니다. D·C·T 영역은 주소 하나가 WORD입니다. 연속된 WORD 두 개를 묶으면 DWORD가 되며, ''DD0''은 ''D0''과 ''D1'', ''DD1''은 ''D2''와 ''D3''을 결합합니다. C와 T도 ''DC0'', ''DT0''처럼 같은 규칙을 사용합니다.
  
-==== 폭 접두어와 비트 접근 ==== +===== 5. 프로젝트에서 사용한 메모리 찾기 =====
- +
-^ 표기 ^ 사용할 수 있는 영역 ^ 예 ^ +
-| ''B'' 접두어 | ''P'', ''M'' | ''BP0'', ''BM1''+
-| ''W'' 접두어 | ''P'', ''M'' | ''WP0'', ''WM1''+
-| ''D'' 접두어 | ''P'', ''M'', ''D'', ''C'', ''T'' | ''DM0'', ''DD2'', ''DC31''+
-| ''.n'' 비트 번호 | P·M의 폭 접근, ''D'', ''C'' | ''WM1.3'', ''D0.15''+
- +
-여기서 ''DD2''의 첫 번째 ''D''는 **DWORD 폭 접두어**이고, 두 번째 ''D''는 **D 메모리 영역**입니다. 두 문자가 같은 모양이므로 한 글자씩 역할을 나누어 읽으십시오. +
- +
-다음 표기는 사용할 수 없습니다. +
- +
-  * ''BD0''처럼 D·C·T 영역 앞에 ''B'' 또는 ''W''를 붙이는 표기 +
-  * R 영역에 폭 접두어를 붙이는 표기 +
-  * R 영역에 ''.n'' 비트 번호를 붙이는 표기 +
- +
-주소 입력창에서 오류가 표시되면 철자만 고치기 전에 **선택한 영역에서 그 폭과 비트 접근을 지원하는지** 확인하십시오. +
- +
-===== 5. 메모리 영역 크기 확인하기 ===== +
- +
-메뉴에서 **설정 → 메모리 영역 설정**을 선택하거나 ''Ctrl+Shift+M''을 누릅니다. +
- +
-다음 순서로 확인합니다. +
- +
-  - 창 위쪽에서 현재 프로젝트의 보드가 **MPINO-8A4R(T)-S**인지 확인합니다. +
-  - P, M, D, C, T, R 입력칸의 개수를 확인합니다. +
-  - 값을 바꾸지 않은 빈 입력칸은 선택한 보드의 기본값을 사용합니다. +
-  - 아래쪽의 예상 SRAM 사용량과 전체 SRAM을 확인합니다. +
-  - 전체 용량을 넘으면 표시가 빨간색으로 바뀌고 저장할 수 없습니다. +
-  - 변경이 필요하면 값을 입력하고 **저장**을 누릅니다. +
-  - 창을 닫은 뒤 ''Ctrl+S''를 눌러 ''.mp2'' 프로젝트 파일에 변경 내용을 저장합니다. +
- +
-특별한 이유가 없다면 보드 기본값을 유지하는 것이 좋습니다. 메모리 개수를 늘리면 사용할 수 있는 주소가 늘지만 SRAM도 더 사용합니다. 개수를 줄이면 기존 래더나 Arduino C 코드가 범위를 벗어난 주소를 참조할 수 있으므로, 변경 전후에 사용 메모리 맵을 확인하십시오. +
- +
-===== 6. 프로젝트에서 사용한 메모리 찾기 ===== +
- +
-메뉴에서 **보기 → 사용 메모리 맵**을 선택하거나 ''Ctrl+Shift+L''을 누릅니다. +
- +
-{{ :products:mpino_studio2:memory-map-modal.png?800 |그림 2. 사용 메모리 맵에서 주소와 사용 위치를 확인하는 화면 }} +
- +
-사용 메모리 맵은 다음과 같이 사용합니다. +
- +
-  - 위쪽의 ''P'', ''M'', ''D'', ''C'', ''T'', ''R'' 탭에서 영역을 선택합니다. +
-  - 래더와 코드 필터로 확인할 소스를 좁힙니다. +
-  - 주소 검색란에 주소를 입력하고 ''Enter''를 눌러 바로 찾습니다. +
-  - 색이 표시된 주소 셀은 현재 프로젝트에서 사용 중인 메모리입니다. +
-  - 사용 중인 셀을 클릭하면 아래쪽에 참조 위치가 표시됩니다. +
-  - 참조 항목을 선택하면 해당 래더 셀 또는 코드 위치로 이동할 수 있습니다. +
-  - 창을 닫았다 다시 열어도 탭과 스크롤 위치는 유지됩니다. 앱을 다시 시작하면 초기화됩니다.+
  
-==== Phase 1 프로젝트로 확인기 ====+메뉴에서 **설정 → 사용한 메모리**를 선택거나 ''Ctrl+Shift+L''을 누릅니다.
  
-  Phase 1에서 저장한 프로젝트를 엽니다. +{{ :products:mpino_studio2:memory-map-modal.png?800 |그림 2. 사용한 메모리에서 주소와 사용 위치를 확인는 화면 }}
-  ''Ctrl+Shift+L''을 누릅니다. +
-  - ''P'' 탭을 선택합니다. +
-  - ''P0''과 ''P32''가 사용 중으로 표시되는지 확인합니다. +
-  - ''P0''을 선택해 ''ladderLoop''의 NO 접점 위치가 나오는지 확인합니다. +
-  - ''P32''를 선택해 출력 코일 위치가 나오지 확인합니다.+
  
 주소를 바꾸기 전과 메모리 영역 크기를 줄이기 전에 이 화면을 확인하면 중복 사용과 범위 오류를 줄일 수 있습니다. 주소를 바꾸기 전과 메모리 영역 크기를 줄이기 전에 이 화면을 확인하면 중복 사용과 범위 오류를 줄일 수 있습니다.
  
-===== 7시간에 따라 동작하는 특수 접점 =====+===== 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됩니다. 주기적으로 값 하나를 증가시키거나 일정 간격으로 작업을 시작할 때 사용할 수 있습니다.
줄 178: 줄 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'' 같은 이름은 사용할 수 없습니다. 
- 
-===== 8. 실습 · P32를 1초 간격으로 점멸시키기 ===== 
- 
-Phase 1 회로의 ''P0'' 접점을 ''@F1000'' 특수 접점으로 바꾸어 동작을 확인합니다. 
- 
-  - Phase 1 프로젝트를 연 뒤 **파일 → 다른 이름으로 저장**을 사용해 ''phase2-memory.mp2''로 저장합니다. 
-  - 출력 부하가 분리되어 있는지 확인합니다. 
-  - ''ladderLoop''에서 ''P0'' 접점 셀을 선택합니다. 
-  - ''Enter''를 누르거나 더블클릭해 셀 편집 창을 엽니다. 
-  - 주소를 ''@F1000''으로 바꾸고 확인합니다. 
-  - 출력 코일 주소는 ''P32''로 유지합니다. 
-  - ''Ctrl+R''로 빌드하고, 빌드 출력이 정상 종료되는지 확인합니다. 
-  - MP 다운로드 케이블을 연결하고 오른쪽 아래에서 포트를 선택합니다. 
-  - ''Ctrl+U''로 업로드합니다. 
-  - Phase 1에서 모니터링 포트를 설정했다면 ''Ctrl+M''으로 실시간 래더 모니터링을 켭니다. 
-  - ''@F1000'' 접점과 ''P32'' 코일이 약 1초 ON, 1초 OFF로 반복되는지 확인합니다. 
- 
-실습이 끝난 뒤 실제 입력으로 다시 시험하려면 접점 주소를 ''P0''으로 되돌리고 다시 빌드·업로드하십시오. 
- 
-===== 9. 상황별 메모리 선택 기준 ===== 
- 
-^ 저장하려는 값 ^ 먼저 검토할 영역 ^ 확인할 내용 ^ 
-| 실제 디지털 입력·출력 | ''P'' | 선택한 보드의 핀맵과 입출력 방향 | 
-| 래더 내부 ON/OFF 조건 | ''M'' | 다른 회로에서 같은 주소를 이미 사용하는지 | 
-| 일반 정수와 계산 결과 | ''D'' | WORD 범위를 넘는지 | 
-| 카운터 현재값 | ''C'' | 보드 핀에 매핑된 C 주소와 겹치는지 | 
-| 타이머 경과값 | ''T'' | 같은 타이머 주소를 중복 사용하지 않는지 | 
-| 소수점이 있는 값 | ''R'' | 실수 오차를 고려한 비교 조건 | 
-| 일정 주기의 접점 조건 | ''@<ms>'', ''@F<ms>'' | 한 스캔 펄스인지 반복 ON/OFF인지 | 
- 
-===== 10. 완료 확인 ===== 
- 
-다음 항목을 모두 설명하거나 직접 확인할 수 있으면 Phase 2를 완료한 것입니다. 
- 
-  * ''P'', ''M'', ''D'', ''C'', ''T'', ''R''의 용도를 구분할 수 있습니다. 
-  * MPINO-8A4R(T)-S의 ''C0'' ~ ''C10''이 보드 기능에 연결된다는 점을 알고 있습니다. 
-  * BIT, BYTE, WORD, DWORD의 크기와 부호 있는 값의 범위를 확인했습니다. 
-  * ''WM1.3''과 ''DD2''를 글자별 역할로 나누어 읽을 수 있습니다. 
-  * ''Ctrl+Shift+M''으로 메모리 영역 설정을 열 수 있습니다. 
-  * ''Ctrl+Shift+L''로 ''P0''과 ''P32''의 사용 위치를 찾았습니다. 
-  * ''@100''과 ''@F1000''의 동작 차이를 설명할 수 있습니다. 
-  * 실습 프로젝트를 별도 이름으로 저장하고 빌드 결과를 확인했습니다. 
  
 ===== 문제해결방법 ===== ===== 문제해결방법 =====
줄 235: 줄 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''을 입력할 수 없습니다. | 비트 접점인지, 괄호 없이 입력했는지 확인합니다. |
-| P32가 점멸하지 않습니다. | ''@F1000'' 접점과 ''P32'' 코일이 같은 회로에 있는지, 빌드·포트 선택·업로드가 정상 완료됐는지 확인합니다. |+
  
 ===== 관련 문서 ===== ===== 관련 문서 =====
 +
 +  * [[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.1788854308.txt.gz · 마지막으로 수정됨: 저자 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki