미쓰비시 PLC에서 스케일 변환(아날로그 입력값을 실제 물리량으로 환산)을 XCALL 재사용 함수로 만드는 방법을 다룹니다.
채널·유닛마다 입력 레인지를 바꿔가며 똑같은 환산식을 복사하지 않고, 함수 하나로 어디서든 호출하는 것이 목표입니다.
PLC를 함수화하는 시리즈의 첫 글로, 가장 빈번하게 쓰이는 스케일 변환부터 시작합니다.

1. 스케일 변환이란
A/D 변환 모듈이나 인버터·계측기에서 들어오는 값은 대부분 디지털 정수입니다.
예를 들어 0~10V 입력이 디지털값 0~32000 으로, 4~20mA 입력이 0~20000 같은 범위로 들어옵니다.
이 원시 디지털값을 사람이 읽을 수 있는 실제 물리량(압력 0~100bar, 온도 0~500℃ 등)으로 바꾸는 것이 스케일 변환입니다.
원리는 단순한 1차 비례식입니다.
출력값 = (입력값 - 입력최소) × (출력최대 - 출력최소) / (입력최대 - 입력최소) + 출력최소
입력 범위와 출력 범위 양 끝점만 알면, 그 사이 어떤 값이든 비례로 환산됩니다.
미쓰비시 PLC에는 스케일링 명령(SCL 등)도 있지만, 명령마다 지원 기종·인수 형식이 다르고 점 테이블을 별도로 구성해야 하는 경우가 있습니다.
위 1차식을 사칙연산 래더로 직접 구성하면 기종에 관계없이 동일하게 동작하고, 함수화하기에도 유리합니다.
2. 왜 함수로 만드는가
PLC는 그림 그리듯 래더라는 언어로 프로그램하는 뛰어난 자동화 제어장치입니다.
다만 같은 기능이라도 여러 유닛·채널에 맞춰 어드레스를 바꿔가며 일일이 복사해 코딩해야 하는 번거로움이 있습니다.
스케일 변환은 채널마다 입력 레인지(전압/전류)와 출력 물리량이 제각각이라, 환산식을 채널 수만큼 복사하면 프로그램이 금세 지저분해집니다.
CALL·XCALL 문으로 한 번 함수화해 두면 입력 범위·출력 범위·입력값만 인수로 넘겨 어느 채널에서든 같은 함수를 호출할 수 있습니다.
아래는 과거에 다룬 스케일 변환 프로그램(SCL 명령 버전과 래더 시퀀스 버전)을 XCALL 함수로 새로 정리한 예제입니다.
참고 — 래더 스케일 변경 프로그램 (SCL 명령어, 래더시퀀스 2개 버전)
3. 함수 사용 예제
함수에 입력 범위(최소·최대), 출력 범위(최소·최대), 변환할 입력값을 넘기면 환산 결과를 돌려받습니다.
아래는 CC-Link 64AD 모듈의 아날로그 입력을 스케일 변환에 활용하는 예제입니다.

스케일 변환은 정수 연산으로 처리하면 나눗셈 과정에서 소수점 이하가 버려지는 오차가 생깁니다.
정밀도가 필요하면 부동소수점(FLOAT) 연산을 쓰거나, 출력 범위를 10배·100배로 키워 정수로 계산한 뒤 표시 단계에서 자리를 맞추는 방식을 권장합니다.
마무리
스케일 변환을 함수로 만들어 두면 채널·유닛이 늘어나도 환산 로직을 다시 짤 필요 없이 인수만 바꿔 호출하면 됩니다.
다음 편에서는 계측기 통신에서 자주 만나는 함수화 2편: 콤마 구분 문자열 스플릿 을 다룹니다.
또한 이 스케일 변환 로직은 함수화 4편: 범위지정 랜덤값 생성 에서 난수를 원하는 범위로 환산하는 데 그대로 재활용됩니다.
'PLC 전기제어 기술자료 > PLC를 함수화 해보자!' 카테고리의 다른 글
| PLC 범용 CRC-16 함수화 : 다항식 가변으로 CCITT·XMODEM·ARC까지 (함수화 7편) (0) | 2023.05.09 |
|---|---|
| 미쓰비시 PLC CRC-16/MODBUS 함수화: XCALL 재사용 라이브러리 (함수화 6편) (0) | 2023.03.01 |
| 미쓰비시 PLC 랜덤 문자열 생성 함수화 : 테스트 데이터 만들기 (함수화 5편) (0) | 2022.04.26 |
| 미쓰비시 PLC 범위지정 랜덤값 생성 함수화 : RND 한계 극복 (함수화 4편) (0) | 2022.04.25 |
| 미쓰비시 PLC 체크섬 생성 함수화 : 시리얼 통신 데이터 검증 (함수화 3편) (1) | 2022.02.28 |
| 미쓰비시 PLC 문자열 스플릿 함수화 : 콤마 구분 데이터 분리 (함수화 2편) (1) | 2022.02.20 |