본문 바로가기
econtop econtop

PLC 아날로그 신호에서 이동평균 필터를 적용하는 방법과 원리

takshout 읽는 시간 약 8분

흔들리는 센서 값 때문에 골치 아프신가요

산업 현장이나 자동화 시스템을 다루다 보면 센서에서 들어오는 데이터가 눈에 띄게 널뛰는 현상을 자주 마주하게 됩니다. 온도, 압력, 유량, 레벨 등을 측정하는 아날로그 센서는 주변의 미세한 전기적 노이즈나 실제 공정의 급격하지 않은 물리적 변화에도 민감하게 반응하여 값이 계속해서 변합니다.

이러한 떨림 현상을 그대로 방치하면 PLC 프로그램 내부의 연산이 불안정해지고, 최종 구동기인 밸브나 모터가 불필요하게 빈번하게 작동하여 기계적 마모를 촉진할 뿐만 아니라 제어의 품질을 떨어뜨립니다. 이 문제를 해결하기 위해 가장 쉽고 널리 쓰이는 소프트웨어적 해결책이 바로 이동평균 필터입니다.

아날로그 신호가 불안정한 근본적인 이유

PLC가 현장의 센서로부터 아날로그 신호를 읽어 들일 때, 신호는 항상 완벽하게 깨끗한 상태를 유지하지 못합니다. 인근에 있는 대용량 모터나 인버터에서 발생하는 전자기 간섭, 전원 장치의 리플 전류, 그리고 센서 자체의 미세한 내부 노이즈가 원인입니다.

또한 실제 물리적 환경도 완벽히 정지해 있지 않습니다. 배관 속의 물은 눈에 보이지 않게 미세하게 소용돌이치고, 온도는 미풍에도 미세하게 흔들립니다. 센서는 이러한 미세한 변화까지 너무 솔직하게 측정하기 때문에 PLC 화면에 표시되는 숫자는 가만히 있어도 1~2퍼센트씩 오르내리기 쉽습니다.

이동평균 필터의 기본 원리와 동작 방식

이동평균 필터는 영어로 Moving Average Filter라고 부르며, 이름 그대로 최근에 측정된 데이터들의 평균을 실시간으로 계산하여 출력하는 방식입니다.

이해하기 쉬운 예를 들어 보겠습니다. 최근 5개의 측정값을 기억하는 필터를 만든다고 가정해 봅시다. 센서가 1초마다 값을 보내온다면, 현재 시점의 값과 직전 4개 시점의 값, 총 5개의 값을 더한 뒤 5로 나눕니다. 다음 1초가 지나 새로운 값이 들어오면 가장 오래된 데이터를 버리고 새로운 데이터를 포함하여 다시 5개의 평균을 냅니다.

이 과정이 매 스캔 타임마다 연속적으로 일어나기 때문에 데이터의 흐름이 부드러워집니다. 마치 굽이치는 파도 위를 지나가는 큰 배처럼, 작은 파도는 무시하고 전체적인 수면의 높이만 부드럽게 따라가는 것과 같습니다.

PLC에서 구현할 수 있는 주요 필터 종류

현장의 요구 조건에 따라 이동평균 필터도 몇 가지 방식으로 나누어 구현할 수 있습니다. 각각의 특성을 이해하면 시스템에 가장 잘 맞는 방식을 선택할 수 있습니다.

단순 이동평균 필터의 특징과 한계

가장 직관적인 방식으로, 최근 N개의 데이터에 동일한 가중치를 부여하여 평균을 구합니다. 구현이 매우 쉽고 메모리를 적게 차지한다는 장점이 있습니다.

하지만 데이터의 개수가 많아질수록 필터링 효과는 좋아지지만 응답 속도가 느려진다는 단점이 있습니다. 실제 값이 급격하게 변했음에도 불구하고 필터가 과거의 데이터와 평균을 내느라 반응이 한 박자 늦게 나타나는 현상이 발생합니다.

가중 이동평균 필터로 응답성과 안정성 잡기

단순 이동평균의 느린 응답 속도를 개선하기 위해 고안된 방식입니다. 오래된 데이터보다는 가장 최근에 들어온 최신 데이터에 더 높은 가중치를 부여합니다.

예를 들어 최근 5개 데이터 중 가장 최신 값에는 40퍼센트의 비중을 주고, 가장 오래된 값에는 10퍼센트의 비중을 주는 식입니다. 이렇게 하면 노이즈는 효과적으로 걸러내면서도 실제 값의 변화에는 훨씬 민감하게 반응할 수 있습니다.

지수 이동평균 필터의 실용성과 장점

산업용 PLC에서 가장 선호되는 방식 중 하나입니다. 많은 개수의 과거 데이터를 배열로 저장하고 있을 필요 없이, 바로 직전의 필터링된 값과 현재의 입력값만 알면 간단한 공식으로 계산할 수 있습니다.

알파값이라고 불리는 필터 상수를 조절하여 필터의 강도를 자유롭게 바꿀 수 있습니다. 메모리를 거의 소모하지 않고도 강력한 필터링 효과를 낼 수 있어 대규모 포인트 제어에 매우 유리합니다.

실전 프로그래밍에서 고려해야 할 유용한 팁

PLC에서 이동평균 필터를 직접 래직이나 구조적 텍스트로 구현할 때 몇 가지 실무적인 조언을 참고하면 시행착오를 줄일 수 있습니다.

첫째, 스캔 타임의 안정성이 중요합니다. 이동평균 필터는 시간 간격이 일정하다는 전제하에 작동하므로, PLC의 주기적인 태스크 인터럽트 안에서 필터 연산을 수행하는 것이 좋습니다.

둘째, 배열의 크기나 필터 상수는 처음부터 너무 크게 잡지 않는 것이 좋습니다. 지나치게 강한 필터링은 실제 비상 상황이나 중요한 공정 변화를 PLC가 뒤늦게 알아차리게 만들어 안전사고나 품질 불량을 유발할 수 있습니다.

셋째, 필터링 전의 원본 데이터와 필터링 후의 결과 데이터를 HMI 화면에 동시에 띄워두고 비교할 수 있게 만드세요. 현장에서 디버깅을 할 때 필터가 너무 느리게 반응하는지, 아니면 노이즈를 제대로 잡지 못하는지 눈으로 확인해야 최적의 파라미터를 찾을 수 있습니다.

비용 부담 없는 소프트웨어 필터의 가치

아날로그 신호의 노이즈를 잡기 위해 고가의 하드웨어 아이솔레이터나 노이즈 필터링 모듈을 추가하는 방법도 있습니다. 물론 전기적 환경이 극도로 열악한 곳에서는 하드웨어 대책이 필수적입니다.

하지만 대부분의 일반적인 환경에서는 추가적인 비용을 들여 하드웨어를 교체하기보다 PLC 내부에서 소프트웨어로 이동평균 필터를 구현하는 것이 비용 효율면에서 압도적으로 유리합니다. 추가 예산이나 배선 변경 없이 프로그램 수정만으로 시스템의 신뢰성을 단번에 끌어올릴 수 있기 때문입니다.

자주 묻는 질문과 명쾌한 답변

필터링을 거치면 제어 응답이 느려지지 않나요

데이터를 모아서 평균을 내는 방식의 특성상 응답 속도가 미세하게 느려지는 것은 피할 수 없습니다. 따라서 공정의 특성에 맞게 데이터 개수나 필터 강도를 타협점 수준으로 조절해야 합니다. 실시간성이 절대적으로 중요한 압력 제어 등에서는 필터 크기를 작게 설정하고, 온도처럼 변화가 느린 공정에서는 필터를 강하게 걸어주는 것이 요령입니다.

센서가 고장 났는지 필터 때문인지 어떻게 구분하나요

PLC 프로그램 내에 원본 아날로그 값과 필터링된 값이 모두 보이도록 태그를 구성해 두어야 합니다. 원본 값은 가만히 있는데 필터 값만 엉뚱한 곳에 있다면 필터 로직이나 배열 인덱스에 오류가 있을 가능성이 높습니다. 반대로 원본 값 자체가 비정상적으로 튄다면 센서 배선이나 접지 상태를 점검해야 합니다.

지수 이동평균에서 필터 상수는 어떻게 정해야 하나요

정답은 없지만 보통 0.1에서 0.3 사이의 값을 먼저 적용해 보고 현장 테스트를 거치는 것이 일반적입니다. 값이 1에 가까워질수록 필터를 거의 거치지 않은 원본에 가깝고, 0에 가까워질수록 변화에 둔감해집니다. 공정이 안정될 때까지 현장 작업자와 함께 모니터링하며 최적의 숫자를 찾아가는 과정이 필요합니다.

현장 적용 시 흔히 저지르는 실수들

이동평균 필터를 처음 다루는 엔지니어들이 가장 흔하게 범하는 실수는 설비가 정지해 있을 때만 테스트하고 만족하는 것입니다. 설비가 가동을 시작하면 주변 기기에서 발생하는 노이즈의 양이 평소와 완전히 달라지기 때문에 반드시 부하가 걸린 실제 운전 상황에서 필터 성능을 검증해야 합니다.

또한 PLC가 처음 켜질 때의 초기화 과정을 간과하는 경우도 많습니다. 전원이 켜진 직후에는 배열 데이터가 모두 0으로 채워져 있기 때문에, 필터 값이 정상 범위로 올라오는 동안 과도기적인 오차가 발생할 수 있습니다. 이를 방지하기 위해 초기 스캔 시 현재 센서 값으로 배열 전체를 채워주는 로직을 추가하는 것이 현장 노하우입니다.

takshout

takshout
함께 보면 좋은 글

댓글 0

첫 댓글을 남겨보세요.

광고 차단 알림

광고 클릭 제한을 초과하여 광고가 차단되었습니다.

단시간에 반복적인 광고 클릭은 시스템에 의해 감지되며, IP가 수집되어 사이트 관리자가 확인 가능합니다.