네파 안성 무게검스 프로젝트 회고

Essay

네파 안성 무게검수 프로그램 개발 프로젝트는 기존에 설치되어 있었으나 소프트웨어 부재로 활용되지 못하던 무게검수 설비를 재활용하여 검수 시스템을 구축한 프로젝트입니다.

이 프로젝트에선 뛰어난 2명의 개발자와 함께 했었습니다.

PLC 개발자는 레거시 PLC 메모리를 분석하여 무게검수 프로세스에 필요한 Conveyor Stop, Run 인터페이스를 추가하였습니다. SMS 개발자 역시 SMS 에 검수 결과를 현 레거시 시스템에 반영할 로직을 구성했습니다.

저는 막내로서 이번 프로젝트의 가장 작은 무게검수 데스크탑 앱 파트를 맡았습니다.

영혼 없는 설비

원피스 에메스

이 센터에 과거 어떤 일이 있었는지 모르겠지만 설비 하나가 역할을 하지 못한채 녹이 슬어가고 있었습니다. 무게를 측정할 하드웨어는 있었지만 측정된 값을 받아들이고 그 결과를 판단할 소프트웨어가 없었습니다.

육체는 있지만 영혼은 없는 상태였습니다.

소프트웨어는 무엇을 해야할까?

사실 해야할 일은 명확합니다. 무게를 읽어서 이 무게가 기준치를 벗어나면 멈추는 것입니다. (Reject 라인이 없음) 거기에 부가적으로 오차허용, 검수 무시 등 유틸기능들이 들어갈 뿐입니다.

---
config:
  layout: elk
---
flowchart TB
    SMS["SMS"]
    DB["DB"]
    PG["Weight Checker"]
    WEIGHT_CONVEYOR["Weight Conveyor"]
    BCR["BCR"]
    PLC["Conveyor PLC"]

    SMS <--> DB <--> PG

    PG -- "HTTP API" --> SMS
    PG -- "Serial" --> WEIGHT_CONVEYOR
    PG -- "Socket" --> BCR
    PG -- "Socket" --> PLC

시스템 구성은 심플합니다. 각각을 알맞는 인터페이스로 연동하여 운영을 만들어내면 됩니다.

사실 머리속으로는 맡은 역할이 작고 쉽겠다 라는 생각을 했었습니다. 하지만 예상치 못한 부분에서 이슈를 만났습니다.

피복이 있어도 노이즈가?

프로그램과 무게 컨베이어는 RS232를 통해 Serial 통신을 하는 방식이었습니다. 그런데 이상하게도 간헐적으로 데이터가 깨지거나 정상적이지 않은 값이 들어오는 현상이 발생했습니다.

원인을 확인하던 중 모터와 통신선이 서로 맞닿아 있다는 것을 발견했습니다. 그리고 모터가 동작할 때마다 통신 데이터에 이상이 발생하고 있었습니다. 전혀 예상하지 못했었습니다.

당시에는 경험이 많지 않았고 문제의 원인을 프로그램 내부에서만 찾으려고 했습니다. 시야가 좁았습니다. 노이즈가 있을 수 있다라는건 머리론 알고있었지만 몸으로 경험했습니다.

마치며

이번 프로젝트는 규모는 작았지만 다양한 통신 방식을 사용하여 여러 설비와 시스템을 연동해야 했던 프로젝트였습니다.

소프트웨어 개발이라고 해서 항상 코드만 바라보고 있어서는 안 된다는 것을 배웠습니다. 프로그램은 결국 실제 세상에서 동작하는 설비와 연결되어 있고 때로는 케이블 하나 전원 하나 주변 환경 하나가 프로그램의 동작에 영향을 줄 수 있습니다.

작은 무게검수 프로그램을 만드는 프로젝트였지만 저에게는 소프트웨어의 경계를 조금 넓게 바라보게 된 프로젝트였습니다.