Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| cubloc:laddernumber:index [2026/03/04 20:50] – [연산 주의] admin | cubloc:laddernumber:index [2026/03/25 03:38] (current) – [잘못된 사용 예시] admin | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| ====== 수 시스템 (Number System) ====== | ====== 수 시스템 (Number System) ====== | ||
| - | 레더로직에서 사용하는 기본 데이터 처리 단위는 **워드(16비트)**와 **더블워드(32비트)**입니다. \\ 큐블록 레더 환경은 시스템 예약 주소와의 간섭을 방지하기 위해 엄격한 수치 범위를 준수해야 합니다. | + | 래더로직에서 사용하는 기본 데이터 처리 단위는 **워드(16비트)**와 **더블워드(32비트)**입니다. \\ 큐블록 레더 환경은 시스템 예약 주소와의 간섭을 방지하기 위해 엄격한 수치 범위를 준수해야 합니다. |
| ===== 1. 메모리 구조 (D영역) ===== | ===== 1. 메모리 구조 (D영역) ===== | ||
| Line 10: | Line 10: | ||
| ===== 2. 데이터 타입 및 범위 제한 ===== | ===== 2. 데이터 타입 및 범위 제한 ===== | ||
| - | 본 시스템은 하드웨어 제어 포트(P, WP, PI, PO 등)와의 데이터 충돌을 방지하기 위해 **부호 없는 양수(Unsigned Integer)** 사용을 원칙으로 합니다. | + | 본 시스템은 하드웨어 제어 포트(P, WP 등)와의 데이터 충돌을 방지하기 위해 **부호 없는 양수(Unsigned Integer)** 사용을 원칙으로 합니다. |
| ^ 단위 ^ 비트 수 ^ 10진수 사용 범위 ^ 16진수 사용 범위 ^ | ^ 단위 ^ 비트 수 ^ 10진수 사용 범위 ^ 16진수 사용 범위 ^ | ||
| | 워드 (Word) | 16-bit | 0 ~ 65,535 | 0000H ~ FFFFH | | | 워드 (Word) | 16-bit | 0 ~ 65,535 | 0000H ~ FFFFH | | ||
| | 더블워드 (D-Word) | 32-bit | 0 ~ 2, | | 더블워드 (D-Word) | 32-bit | 0 ~ 2, | ||
| - | |||
| - | > **중요 알림:** 워드(Word)와 더블워드(D-Word) 모두 **양수(Unsigned)** 처리를 권장합니다. 특히 더블워드는 시스템 예약 주소 영역(0x7FFF1000 이상)을 침범하지 않도록 상한치 **0x7FFEFFFF** 이내에서만 사용해야 합니다. | ||
| ===== 3. 상한치 제한 ===== | ===== 3. 상한치 제한 ===== | ||
| - | {{ : | ||
| ==== 시스템 예약 주소와의 충돌 ==== | ==== 시스템 예약 주소와의 충돌 ==== | ||
| * **0x7FFF1000 ~ 0x7FFFFFFF** 영역은 하드웨어 입출력 포트(P0, WP0 등)를 제어하기 위한 **Memory-Mapped I/O** 주소로 예약되어 있습니다. | * **0x7FFF1000 ~ 0x7FFFFFFF** 영역은 하드웨어 입출력 포트(P0, WP0 등)를 제어하기 위한 **Memory-Mapped I/O** 주소로 예약되어 있습니다. | ||
| - | * **음수(2의 보수) 사용 금지:** 음수를 표현하기 위해 최상위 비트(MSB)를 1로 설정할 경우(예: 0x80000000 이상), 시스템은 이를 숫자가 아닌 | + | * ** 워드(Word)와 더블워드(D-Word) 모두 |
| - | | + | |
| - | ==== 연산 주의 ==== | ||
| - | * 연산 결과값이 **2, | ||
| - | * 입력 및 연산 과정에서 이 상한치를 초과하지 않도록 사전에 로직 상에서 필터링이 필요합니다. | ||
| ==== 잘못된 사용 예시 ==== | ==== 잘못된 사용 예시 ==== | ||
| Line 40: | Line 33: | ||
| {{ : | {{ : | ||
| - | > **작업 팁:** VB6 기반 도구 사용 시 `CLng` 함수는 0x80000000 이상의 값을 음수로 처리하여 상한 검사를 우회할 수 있으므로, | ||
| - | [[cubloc: | + | 아래와 같이 음수를 DWMOV로 넣을 수는 있지만, 이는 예기치 못한 시스템 에러가 발생할 수 있으므로, |
| + | |||
| + | {{ : | ||
| + | |||
| + | [[cubloc: | ||
