07.Mitsubishi PLC 사칙연산, 왜 꼭 알아야 할까요?

Mitsubishi plc 사칙연산

자동화 설비를 설계하다 보면 단순 ON/OFF 제어만으로는 부족할 때가 많습니다. 생산 개수 집계, 불량률 계산, 속도·온도 보정, 레시피 연산 등 대부분의 작업에 Mitsubishi PLC 사칙연산이 들어가게 됩니다.

예를 들어 “현재 카운터 값에 오늘 생산 수량을 더해 누적 수량을 관리하고 싶다”, “아날로그 입력 값을 스케일링해서 실제 온도로 표현하고 싶다”와 같은 요구 사항은 모두 Mitsubishi PLC 사칙연산으로 해결할 수 있는 전형적인 사례입니다.

이 글에서는 초보자분들도 따라 하기 쉽도록, Mitsubishi PLC에서 사칙연산을 구현하는 기본 개념부터 실무에서 바로 쓸 수 있는 예제까지 차근차근 설명드리겠습니다. 처음 Mitsubishi PLC 사칙연산을 배우시는 분들도, 현장에서 이미 쓰고 계신 분들도 정리용으로 활용하시기 좋도록 구성했습니다.


Mitsubishi PLC에서 사용하는 대표 사칙연산 명령

Mitsubishi PLC 계열(FX, Q, L, R 시리즈 등)에서는 기본적으로 아래와 같은 사칙연산 명령을 제공합니다.

  • ADD : 덧셈(+, 정수)
  • SUB : 뺄셈(-, 정수)
  • MUL : 곱셈(×, 정수)
  • DIV : 나눗셈(÷, 정수)
  • ADDF / SUBF / MULF / DIVF : 실수(Float) 사칙연산

프로그램을 설계할 때는 “어떤 데이터 타입을 쓸 것인지(정수/실수)”와 “결과를 어느 디바이스에 저장할 것인지(D 레지스터 등)”를 먼저 정한 후, 거기에 맞춰 Mitsubishi PLC 사칙연산 명령을 선택하시는 것이 좋습니다.

사칙연산 명령 자체는 단순하지만,

  • 데이터 타입(16비트, 32비트, 실수)
  • 사용 디바이스(D, R 등)
  • 결과 값의 범위(오버플로우 가능성)
    이 세 가지를 제대로 이해하지 못하면 실무에서 예상치 못한 값이 나오기 쉽습니다.

디바이스와 데이터 타입 이해하기

1) D 레지스터를 기준으로 생각하기

Mitsubishi PLC에서 Mitsubishi PLC 사칙연산을 다룰 때 가장 많이 사용하는 메모리 영역은 D 레지스터입니다.

  • D0, D1, D2 ...
  • 각각 1워드(16비트) 크기를 가지며, 보통 부호 있는 정수(-32768 ~ +32767)로 사용하는 경우가 많습니다.
  • 32비트 연산이나 실수 연산을 할 때는 2개의 연속된 D 레지스터를 묶어서 사용하는 방식으로 처리합니다. 예) D0~D1 한 쌍, D2~D3 한 쌍 등

사칙연산 명령을 쓸 때는 **소스(입력)**와 **데스티네이션(결과 저장 위치)**가 어떤 D 레지스터를 기준으로 하는지 항상 체크해 두셔야 합니다.

2) 16비트 정수 vs 32비트 정수

실무에서 Mitsubishi PLC 사칙연산을 사용할 때 자주 헷갈리는 부분이 바로 “값의 크기”입니다.

  • 16비트 정수(워드) : 대략 -32768 ~ +32767
  • 32비트 정수(더블 워드) : 훨씬 큰 범위(약 ±21억)까지 표현 가능

제품 수량이 수만 개를 넘어서거나, 아날로그 값을 여러 번 곱하고 나누는 연산에서는 16비트 범위를 쉽게 초과할 수 있습니다. 이럴 때는:

  • 16비트 전용 명령이 아니라,
  • 32비트용 사칙연산 명령(확장 명령) 또는
  • 실수 연산 명령(ADDF, MULF 등)을 사용하는 것이 안전합니다.

사전 설계 단계에서 “최대 얼마까지 값이 커질 수 있는지”를 대략 계산해 본 뒤, 그에 맞춰 Mitsubishi PLC 사칙연산 구조를 잡아 두시면 나중에 오버플로우 문제를 크게 줄일 수 있습니다.


가장 기본적인 예제: 덧셈(ADD)으로 누적 생산량 계산하기

먼저 가장 많이 쓰는 상황부터 보겠습니다. 센서 신호를 카운터로 집계하고, 그 값을 누적 생산량에 더하는 예제입니다.

  • 현재 사이클에서 생산된 수량 → D10
  • 누적 생산 수량 → D20

이때 누적 생산량을 계산하는 Mitsubishi PLC 사칙연산의 기본 구조는 다음과 같은 형태가 됩니다.

  1. 한 사이클 종료 신호(X 접점) ON
  2. D10의 사이클 수량을 D20에 더하기(ADD)
  3. 다음 사이클을 위해 D10 초기화(0으로 리셋)

이 과정을 PLC 래더로 표현하면 (표현 방식은 소프트웨어마다 조금씩 다르지만) 예를 들면 이렇게 생각하시면 됩니다.

  • [사이클 완료 신호]ADD D10 D20
  • [사이클 완료 신호]MOV K0 D10

이렇게 작성하면 사이클이 끝날 때마다 D10에 쌓인 수량이 D20에 누적되고, 다시 D10은 0부터 새로 카운트됩니다.

생산 장비에서는 이 패턴만 잘 이해해도 Mitsubishi PLC 사칙연산의 절반은 이미 익히셨다고 봐도 좋습니다. 대부분의 누적 값·카운트·합계 계산이 이 구조를 조금씩 변형해서 사용하기 때문입니다.


뺄셈(SUB)으로 재고/잔량 계산하기

다음으로 많이 쓰이는 Mitsubishi PLC 사칙연산이 바로 **SUB(뺄셈)**입니다.

예를 들어,

  • 전체 목표 생산 수량 → D30
  • 현재까지 생산된 수량(누적) → D20
  • 남은 목표 수량(잔량) → D40

이렇게 설정했다면, 남은 목표 수량을 계산하는 로직은 아래처럼 구성할 수 있습니다.

  1. 장비 시작 시 또는 목표 변경 시 D30에 목표 수량 입력
  2. 생산이 진행될 때마다 D20에 실시간 누적 수량이 갱신
  3. 주기적으로 또는 화면 갱신 때마다 D30 - D20을 계산하여 D40에 저장

사칙연산 로직은 다음과 같은 흐름입니다.

  • SUB D20 D30 D40 (표기 방식은 사용하는 소프트웨어에 따라 다를 수 있음)

이렇게 하면 HMI나 GOT 화면에서 D40만 보여줘도 “목표까지 남은 수량”을 즉시 보여줄 수 있습니다.

실무에서 Mitsubishi PLC 사칙연산을 활용해 잔량이나 재고를 표시하면, 작업자분들이 “지금 얼마나 남았는지” 직관적으로 이해할 수 있어서 작업 효율이 크게 올라갑니다.


곱셈(MUL)과 나눗셈(DIV)의 전형적인 활용 패턴

1) MUL – 단가 계산, 비율 계산에 활용

**MUL(곱셈)**은 양이 늘어날수록 같이 늘어나는 값을 구할 때 자주 활용됩니다.

  • 단가 × 수량 = 금액
  • 기준값 × 배율 = 목표 값
  • 펄스 수 × 이송 단위 = 거리

예를 들어, 펄스 수를 거리로 환산하는 간단한 Mitsubishi PLC 사칙연산 예제를 생각해 보겠습니다.

  • 펄스 카운터 값 → D50
  • 1펄스당 이송 거리(예: 0.01mm) → D52
  • 계산된 실제 위치(mm) → D54

이때,

  • MUL D50 D52 D54

와 같이 작성해두면, 언제든지 D54를 읽어서 현재 위치를 mm 단위로 표시할 수 있습니다.

다만 곱셈을 많이 사용할수록 값이 급격하게 커지기 때문에, **정수 범위(16비트/32비트)**를 반드시 고려하시고, 필요한 경우 32비트 또는 실수 연산으로 설계하시는 것이 좋습니다.

2) DIV – 평균값, 비율, 스케일링에 필수

**DIV(나눗셈)**은 평균값 계산이나 비율 계산에 필수적인 Mitsubishi PLC 사칙연산 명령입니다.

  • 총 합계 ÷ 개수 = 평균값
  • 현재 값 ÷ 기준 값 = 비율(%)

예를 들어, 온도 센서에서 읽어온 값을 0~100%로 스케일링하고 싶다면,

  1. 센서의 원시값(예: 0~4000)을 D60에 저장
  2. 최대값 4000을 기준으로 현재 값의 비율을 구함
  3. 그 결과를 0~100 사이의 값으로 변환

과 같은 과정을 거치게 됩니다.

이때는 단순히 DIV만 쓰기보다는, MUL과 DIV를 조합하여:

  • (현재 값 × 100) ÷ 4000

형태의 Mitsubishi PLC 사칙연산을 구현하는 방식이 흔합니다. 이 부분은 뒤에서 “스케일링 실전 예제”와 함께 조금 더 자세히 설명드리겠습니다.


여기까지가 Mitsubishi PLC 사칙연산의 기본 개념과 대표 명령, 그리고 실무에서 자주 쓰이는 간단 예제들에 대한 1차 정리입니다.

이어서

  • 나눗셈에서 꼭 조심해야 할 0 나누기 에러 처리 방법,
  • 실수(ADDF, MULF 등)를 사용하는 상황과 주의점,
  • 아날로그 스케일링, 평균값 계산, 퍼센트 계산 같은 실전 예제,
  • 현장에서 자주 발생하는 버그와 디버깅 팁

나눗셈(DIV)에서 꼭 확인해야 할 0 나누기(Zero Divide) 문제

Mitsubishi PLC 사칙연산 중에서 나눗셈(DIV, DIVF)을 사용할 때 가장 조심해야 할 부분이 바로 0으로 나누는 상황입니다.

예를 들어, 평균값을 구하기 위해

  • 총합 → D70
  • 개수 → D72
  • 평균 → D74

이렇게 설계했다고 가정해 보겠습니다. 평소에는 D72에 1 이상 값이 들어가 있으니 문제가 없지만, 초기 상태에서 아직 데이터가 없을 때는 D72가 0일 수 있습니다. 이 상태에서 DIV D70 D72 D74 명령을 수행하면, PLC마다 다음과 같은 문제가 발생할 수 있습니다.

  • 에러 플래그가 올라가거나
  • 결과 값이 비정상적인 값으로 고정되거나
  • 프로그램이 예기치 못한 동작을 보이기도 함

그래서 실무에서는 Mitsubishi PLC 사칙연산을 사용할 때, 나눗셈 앞에 반드시 “0인지 검사하는 조건”을 넣는 습관을 들이는 것이 중요합니다.

예시 패턴은 다음과 같습니다.

  1. D72가 0인지 비교(=, >, ≥ 명령 활용)
  2. 0이면 평균 계산을 스킵하고, 별도의 초기값을 넣거나 경고 표시
  3. 0이 아니면 그때 DIV 명령 실행

이렇게만 구성해도, 나눗셈에서 발생하는 대표적인 오류의 상당수를 미리 예방할 수 있습니다.


실수 연산(ADDF, MULF 등)을 써야 하는 상황

대부분의 단순 제어에서는 정수 기반의 Mitsubishi PLC 사칙연산만으로도 충분합니다. 하지만 다음과 같은 경우에는 실수(Float) 연산을 고려하시는 것이 좋습니다.

  • 온도, 압력, 유량처럼 소수점 단위의 정밀한 값이 필요한 경우
  • 비율, 퍼센트, 보정 계수 등에서 0.1 단위 이하의 세밀한 계산이 필요한 경우
  • 센서 스케일링 과정에서 곱셈·나눗셈이 여러 번 겹쳐 오차가 커지는 경우

Mitsubishi PLC에서는 보통 아래와 같은 실수형 사칙연산 명령을 제공합니다.

  • ADDF : 실수 덧셈
  • SUBF : 실수 뺄셈
  • MULF : 실수 곱셈
  • DIVF : 실수 나눗셈

실수 연산을 사용할 때는 다음을 꼭 기억해 두시면 좋습니다.

  1. 실수용 디바이스 영역을 사용해야 함 (예: D, R 중 실수로 사용하는 영역)
  2. 실수와 정수를 섞어 쓸 경우, **형 변환 명령(정수→실수, 실수→정수)**을 적절히 사용
  3. HMI나 GOT에서 표시할 때, 소수점 자리수 설정을 맞춰줘야 현장에서 보기 편함

실수 연산은 정수 연산보다 약간 더 무겁지만, 최근 PLC 성능을 고려하면 일반적인 설비에서는 크게 부담되지 않습니다. 오히려 계산 결과를 직관적으로 확인할 수 있어, Mitsubishi PLC 사칙연산의 활용성을 크게 높여 줍니다.


아날로그 스케일링 실전 예제

이번에는 현장에서 정말 자주 쓰는 예제 하나를 통해 Mitsubishi PLC 사칙연산을 어떻게 조합하는지 살펴보겠습니다.

예제 조건

  • 아날로그 입력 : 4~20mA → PLC 내부 값 0~4000으로 변환
  • 이 값을 실제 온도 0~200℃로 표시하고 싶음
  • 원시값 → D100
  • 스케일링 후 온도 값 → D110

스케일링 공식은 다음과 같습니다.

온도(℃) = (현재값 ÷ 4000) × 200

이 식을 정수 기반 Mitsubishi PLC 사칙연산으로 구현하면, 다음과 같이 바꾸어 생각할 수 있습니다.

온도(℃) = (현재값 × 200) ÷ 4000

PLC에서는 곱셈 후 나눗셈 순서로 구현하는 것이 일반적입니다. 예를 들어,

  1. MUL D100 K200 D108 → 중간 계산 값 저장
  2. DIV D108 K4000 D110 → 최종 온도 값 저장

이렇게 구성하면 D110에 0~200 사이의 값이 정수로 들어갑니다.

조금 더 정밀한 값(예: 0.1℃ 단위)으로 표현하고 싶다면,

  • (현재값 × 2000) ÷ 4000 → 0~2000 → HMI에서 소수점 1자리로 표시

와 같이 설계하거나, 아예 **실수 연산(ADDF, MULF, DIVF)**로 처리하는 방식도 많이 사용합니다.

이처럼 아날로그 스케일링은 Mitsubishi PLC 사칙연산을 가장 직관적으로 이해할 수 있는 대표적인 실전 예제입니다. 실제 설비에서도 압력, 유량, 레벨, 속도 등 거의 모든 아날로그 처리에 비슷한 패턴이 반복됩니다.


평균값 계산 로직 구성하기

생산 데이터나 센서 데이터를 평균값으로 처리하고 싶을 때도 Mitsubishi PLC 사칙연산이 유용합니다. 간단한 패턴은 아래와 같습니다.

  • 각 측정값 → 순서대로 D200, D201, D202 ...
  • 합계 → D210
  • 개수 → D212
  • 평균 → D214

로직 흐름은 다음과 같이 구성할 수 있습니다.

  1. 새 데이터가 들어올 때마다 D210에 해당 값을 더함 (ADD)
  2. 데이터 개수 카운터 D212를 1씩 증가 (ADD K1 D212)
  3. 특정 시점(버튼 입력, 주기 타이머 등)에 D210 ÷ D212를 계산해 D214에 저장(DIV)
  4. 다음 평균 계산을 위해 D210, D212를 초기화

이 과정에서 다시 한 번 0 나누기 방지를 위해, D212가 0이 아닐 때만 DIV를 수행하도록 조건을 걸어주는 것이 안정적입니다.

이처럼 평균값 로직을 한 번 만들어 두면, 설비 상태 모니터링, 품질 데이터 분석, 이상 감지 기준 값 설정 등 여러 곳에 재사용할 수 있어, Mitsubishi PLC 사칙연산의 활용도가 크게 올라갑니다.


사칙연산 명령 사용할 때 자주 하는 실수와 체크 포인트

현장에서 Mitsubishi PLC 사칙연산을 적용하다 보면 다음과 같은 실수가 자주 발생합니다. 프로그램을 작성한 뒤 아래 항목들을 한 번씩 점검해 보시면 좋습니다.

  1. 트리거 조건 누락
    • 연산 명령을 항상 ON인 조건에 걸어두면, 스캔할 때마다 계속 더해져서 값이 폭주하는 경우가 있습니다.
    • ADD, SUB, MUL, DIV는 보통 원샷(1펄스) 신호에 물려서 한 번만 실행되도록 설계하는 것이 안전합니다.
  2. 입·출력 디바이스 범위 중복 사용
    • 같은 D 레지스터를 여러 곳에서 동시에 사용하면서, 이전 계산 값이 덮어써지는 문제가 자주 생깁니다.
    • 중요한 데이터는 용도별로 디바이스 범위를 나누어 설계하고, 설계 문서나 주석에 정리해 두면 편합니다.
  3. 초기화(Reset)를 빼먹는 문제
    • 합계, 평균, 누적값 계산 후 초기화를 하지 않으면, 다음 사이클에 이전 값이 섞여 버립니다.
    • “계산 시점”과 “초기화 시점”을 미리 정의해 두고 래더에 명확히 표현하는 것이 좋습니다.
  4. 데이터 타입 혼용
    • 정수 영역에 실수 명령을 걸거나, 실수 값을 강제로 정수 레지스터에서 읽어 사용하는 경우 이상한 값이 나올 수 있습니다.
    • “이 레지스터는 정수인지, 실수인지”를 설계 단계에서부터 분명하게 구분해 두는 것이 중요합니다.

디버깅(오류 확인) 팁 – 값이 이상할 때 이렇게 확인해보세요

Mitsubishi PLC 사칙연산을 적용했는데 값이 기대와 다르게 나올 때는 다음 순서로 점검해 보시면 좋습니다.

  1. 입력 값(D 레지스터)부터 하나씩 확인
    • ADD, SUB, MUL, DIV에 들어가는 입력 소스 레지스터 값이 정상인지 모니터링 화면에서 먼저 확인합니다.
    • 입력 값이 잘못되어 있으면, 계산 결과도 당연히 잘못 나옵니다.
  2. 연산 순서와 실행 타이밍 체크
    • 필요한 명령이 실제로 언제 실행되는지, 트리거 조건이 맞는지 래더에서 추적해 봅니다.
    • 특히 누적 연산(ADD, SUB)은 한 스캔에 여러 번 실행되지 않는지 확인해야 합니다.
  3. 중간 계산값을 위한 D 레지스터 활용
    • 복잡한 Mitsubishi PLC 사칙연산일수록 중간 결과를 D300, D302 등 별도의 레지스터에 저장해 두고 단계별로 값을 확인하는 것이 좋습니다.
    • 이렇게 하면 어느 단계에서 값이 틀어지는지 쉽게 찾을 수 있습니다.
  4. 최대·최소 범위 확인(오버플로우 체크)
    • 계산 후 값이 갑자기 음수로 튀거나 이상하게 변한다면, 데이터 범위를 초과했는지 의심해 보셔야 합니다.
    • 이 경우 16비트 대신 32비트 연산, 또는 실수 연산으로 전환하는 방향을 검토해 보셔야 합니다.

마무리 정리 – Mitsubishi PLC 사칙연산을 잘 쓰는 요령

마지막으로 지금까지 설명드린 내용을 정리해 보겠습니다.

  1. ADD, SUB, MUL, DIV 기본 패턴을 먼저 익히기
    • 누적 수량, 잔량, 단가 계산, 스케일링 등 대표 패턴을 몇 개 만들어 두면 다른 설비에도 응용하기 쉽습니다.
  2. 데이터 타입과 디바이스 설계를 먼저 결정
    • 16비트 정수로 충분한지, 32비트 또는 실수가 필요한지 미리 계산해 보고, D 레지스터 범위를 용도별로 나누어 쓰는 것이 좋습니다.
  3. 0 나누기와 오버플로우를 항상 의식하기
    • 나눗셈 앞에는 0 체크, 곱셈·누적 연산에는 값의 최대 범위를 고려해 설계하는 것이 Mitsubishi PLC 사칙연산의 기본 안전장치입니다.
  4. 아날로그 스케일링·평균값 계산 패턴을 템플릿으로 만들기
    • 실제 현장에서는 이 두 가지 패턴만 잘 만들어도 대부분의 연산 요구사항을 처리할 수 있습니다.
  5. 모니터링과 중간값 확인으로 디버깅하기
    • 값이 이상할 때는 소스 값 → 중간 계산 값 → 최종 결과 순서로 차근차근 확인하면 원인을 쉽게 찾을 수 있습니다.

이 글에서 다룬 개념과 예제들을 기반으로, 직접 프로그램을 작성해 보시면 Mitsubishi PLC 사칙연산이 생각보다 단순하면서도 강력하다는 것을 체감하실 수 있을 것입니다. 나중에는 “이 계산을 HMI나 엑셀로 할까?”보다 “PLC 안에서 바로 처리해 버리자”라는 생각이 자연스럽게 드실 거예요.

TIP! 사칙연산의 경우 16bit와 32bit의 D영역 최대값을 정확히 이해하고 사용하는 것이 좋습니다. 16bit에서 사용가능한 숫자 범위를 벗어나면 쓰레기값으로 변환되어 이상한 값이 결과로 나오므로 16bit에서 사용가능한 최대 범위 숫자를 잘 생각해서 32bit로 계산식을 만드는 것이 좋습니다. 현장에서는 사용자가 숫자를 입력하는 것이 아니라 바코드나 다른 데이터값을 계산하는 경우가 많은데 이 경우 숫자 범위가 초과하는 경우가 자주 발생합니다.

LS 사칙연산 공부하기

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

위로 스크롤