본문 바로가기
PLC 전기제어 기술자료/PLC를 함수화 해보자!

미쓰비시 PLC 스케일 변환 함수화 : XCALL로 아날로그 환산 재사용 (함수화 1편)

by 위치결정JP 2022. 2. 19.
728x90
반응형

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

PLC를 함수화하는 시리즈의 첫 글로, 가장 빈번하게 쓰이는 스케일 변환부터 시작합니다.

 

1. 스케일 변환이란

A/D 변환 모듈이나 인버터·계측기에서 들어오는 값은 대부분 디지털 정수입니다.
예를 들어 0~10V 입력이 디지털값 0~32000 으로, 4~20mA 입력이 0~20000 같은 범위로 들어옵니다.

이 원시 디지털값을 사람이 읽을 수 있는 실제 물리량(압력 0~100bar, 온도 0~500℃ 등)으로 바꾸는 것이 스케일 변환입니다.

원리는 단순한 1차 비례식입니다.

 

출력값 = (입력값 - 입력최소) × (출력최대 - 출력최소) / (입력최대 - 입력최소) + 출력최소

 

입력 범위와 출력 범위 양 끝점만 알면, 그 사이 어떤 값이든 비례로 환산됩니다.

📝 NOTE

미쓰비시 PLC에는 스케일링 명령(SCL 등)도 있지만, 명령마다 지원 기종·인수 형식이 다르고 점 테이블을 별도로 구성해야 하는 경우가 있습니다.
위 1차식을 사칙연산 래더로 직접 구성하면 기종에 관계없이 동일하게 동작하고, 함수화하기에도 유리합니다.

2. 왜 함수로 만드는가

PLC는 그림 그리듯 래더라는 언어로 프로그램하는 뛰어난 자동화 제어장치입니다.
다만 같은 기능이라도 여러 유닛·채널에 맞춰 어드레스를 바꿔가며 일일이 복사해 코딩해야 하는 번거로움이 있습니다.

스케일 변환은 채널마다 입력 레인지(전압/전류)와 출력 물리량이 제각각이라, 환산식을 채널 수만큼 복사하면 프로그램이 금세 지저분해집니다.

CALL·XCALL 문으로 한 번 함수화해 두면 입력 범위·출력 범위·입력값만 인수로 넘겨 어느 채널에서든 같은 함수를 호출할 수 있습니다.

아래는 과거에 다룬 스케일 변환 프로그램(SCL 명령 버전과 래더 시퀀스 버전)을 XCALL 함수로 새로 정리한 예제입니다.

참고 — 래더 스케일 변경 프로그램 (SCL 명령어, 래더시퀀스 2개 버전)

 

CC-Link 64AD_SCALE_FUNC_230227.gxw
1.10MB

3. 함수 사용 예제

함수에 입력 범위(최소·최대), 출력 범위(최소·최대), 변환할 입력값을 넘기면 환산 결과를 돌려받습니다.
아래는 CC-Link 64AD 모듈의 아날로그 입력을 스케일 변환에 활용하는 예제입니다.

 

⚠️ 주의

스케일 변환은 정수 연산으로 처리하면 나눗셈 과정에서 소수점 이하가 버려지는 오차가 생깁니다.
정밀도가 필요하면 부동소수점(FLOAT) 연산을 쓰거나, 출력 범위를 10배·100배로 키워 정수로 계산한 뒤 표시 단계에서 자리를 맞추는 방식을 권장합니다.

마무리

스케일 변환을 함수로 만들어 두면 채널·유닛이 늘어나도 환산 로직을 다시 짤 필요 없이 인수만 바꿔 호출하면 됩니다.

💡 TIP

다음 편에서는 계측기 통신에서 자주 만나는 함수화 2편: 콤마 구분 문자열 스플릿 을 다룹니다.
또한 이 스케일 변환 로직은 함수화 4편: 범위지정 랜덤값 생성 에서 난수를 원하는 범위로 환산하는 데 그대로 재활용됩니다.

728x90
반응형