DeltaV fhx 파일 추출, 자동 변환 프로그램으로 해결한 사례

제어 시스템에서 뽑아낸 텍스트 파일을 열어놓고, 필요한 값을 하나씩 찾아 엑셀에 옮겨 적는 일. 해보신 분은 아실 겁니다. 하루가 통째로 날아갑니다. 우리비엔씨가 아콘스(ACONS)와 함께 이 작업을 프로그램으로 대체한 이야기를 정리했습니다.

이 글의 요점

우리비엔씨는 DeltaV 제어 시스템의 fhx 텍스트 파일에서 필요한 데이터만 자동으로 파싱해, 항목별 시트로 나뉜 엑셀 파일을 만들어 주는 윈도우 프로그램 ACONS Delta-V Converter v1.0을 개발했습니다. 수일 걸리던 작업이 수 분으로 줄었고, 수기 입력에서 오던 오류는 사라졌습니다.

한눈에 보는 프로젝트 정보

프로그램명 ACONS Delta-V Converter v1.0
개발 우리비엔씨
발주 아콘스(ACONS)
한 줄 정의 DeltaV fhx 텍스트 파일 전용 데이터 추출·엑셀 변환 프로그램
입력 .fhx 파일 (EM / Phase / Unit 3종)
출력 항목별 시트로 구분된 Excel 파일
개발 환경 .NET Framework 4.5.2 이상 / Visual Studio 2022 / C# / DevExpress Winform

fhx 파일이 왜 골칫거리였을까

DeltaV는 에머슨(Emerson)에서 만든 분산제어시스템(DCS)입니다. 플랜트나 생산 설비 쪽에서는 꽤 익숙한 이름이죠. 이 시스템에서 제어 구성 정보를 내보내면 확장자가 .fhx인 텍스트 파일이 만들어집니다.

열어보면 압도적입니다. 중괄호가 몇 단계씩 중첩되고, 속성 이름과 값이 끝없이 이어지는 수천에서 수만 줄짜리 텍스트. 기계가 주고받으라고 만든 형식이지 사람이 읽으라고 만든 형식이 아닙니다. 그런데 정작 업무에 필요한 건 그 안에 흩어져 있는 몇 가지 항목뿐이고요.

그래서 현장에서는 이렇게 했습니다. 편집기로 파일을 열고, 스크롤을 내리며 눈으로 찾고, 찾은 값을 엑셀 셀에 옮겨 붙이고, 다시 파일로 돌아가고. 파일 하나에 몇 시간. 프로젝트 하나면 며칠. 그리고 사람이 하는 일이라 한 줄 건너뛰거나 열을 밀려 붙여넣는 실수가 잊을 만하면 나왔습니다.

해결 1. 파일 종류별로 다르게 읽는 파서

EM, Phase, Unit — 같은 fhx라도 구조가 다릅니다

DeltaV 배치 제어에서 Unit은 설비 단위, EM(Equipment Module)은 그 아래 장비 모듈, Phase는 실제로 실행되는 공정 단계를 뜻합니다. 계층도 역할도 다르니 fhx 안에 기록되는 방식도 다릅니다. 범용 파서 하나로 세 가지를 다 처리하려 들면 어느 한쪽은 반드시 어긋납니다.

그래서 타입별로 독립적인 파싱 로직을 따로 구현했습니다. 프로그램 상단의 ‘파일 구분’ 메뉴에서 EM / Phase / Unit 중 하나를 고르면, 그 양식에 맞춰 설계된 해석 규칙이 적용됩니다. 사용자 입장에서는 드롭다운 하나 고르는 게 전부지만, 내부에서는 완전히 다른 경로를 탑니다.

결과는 ‘바로 쓸 수 있는’ 엑셀로

추출한 데이터를 한 시트에 주르륵 뱉어놓으면, 결국 사람이 다시 나누고 정리해야 합니다. 자동화의 절반만 한 셈이죠. 이 프로그램은 발주처가 정한 분류 기준대로 데이터를 나눠 엑셀 파일 안의 개별 시트로 저장합니다. 변환이 끝난 파일은 손댈 곳 없이 그대로 업무에 넘어갑니다. 돌이켜보면 현장에서 가장 반응이 좋았던 부분이 바로 여기였습니다.

해결 2. 대량 작업을 눈으로 통제하는 화면

설정은 폴더 두 개면 끝

원본이 있는 폴더와 결과를 저장할 폴더를 ‘찾아보기’로 지정하면 준비가 끝납니다. 옵션창을 몇 겹씩 여는 구조를 일부러 만들지 않았습니다. 한 화면 안에서 모든 준비가 끝나야 매뉴얼 없이도 쓸 수 있으니까요.

지금 어디까지 됐는지 계속 보여줍니다

대량 변환 중 가장 불안한 순간은 “이게 돌고 있긴 한 건가” 싶을 때입니다. 프로그레스 바와 [5/5] 형태의 카운트로 진행 상황을 계속 보여주고, 폴더를 잘못 골랐다 싶으면 ‘변환 중단’으로 바로 멈출 수 있게 했습니다.

파일 하나하나의 상태를 목록으로

화면 아래 ‘변환 대상 파일 목록’ 그리드에 순번, 파일명, 개별 상태(‘완료’, ‘변환 중’ 등)가 아이콘과 함께 표시됩니다. 수십 개를 한 번에 돌려도 어디까지 처리됐는지 한눈에 들어오니, 빠뜨리고 넘어가는 파일이 생기지 않습니다.

무엇이 달라졌나

항목 수작업 시절 프로그램 도입 후
처리 시간 파일 하나에 수 시간, 묶으면 며칠 여러 파일 일괄 처리로 수 분
오류 발생 누락·오타·열 밀림이 수시로 동일 규칙 처리로 수기 오류 없음
산출물 작업자마다 서식이 제각각 항상 같은 규격의 다중 시트 엑셀
담당 인력 fhx 구조를 아는 숙련자만 가능 누구나 가능, 숙련자는 분석에 집중
진행 확인 기억과 메모에 의존 파일별 상태를 화면에서 실시간 확인

개발하면서 신경 쓴 것들

  • 매뉴얼이 필요 없을 것 — DevExpress 기반 윈폼 UI로 화면을 정돈하고, 버튼과 상태 표시만으로 흐름이 읽히도록 구성했습니다.
  • 중간에 멈출 수 있을 것 — 자동화 도구에서 ‘취소’가 없으면 사용자는 결국 프로그램을 강제 종료하게 됩니다.
  • 결과를 다시 손대지 않아도 될 것 — 시트 분리까지가 프로그램의 일이라고 봤습니다.
  • 양식이 늘어나도 감당될 것 — 타입별로 파싱 로직을 분리해 두어, 나중에 네 번째 양식이 생겨도 기존 코드를 건드리지 않고 붙일 수 있습니다.

Q & A

Q. fhx 파일은 어떤 파일인가요?

A. 에머슨의 분산제어시스템 DeltaV에서 제어 로직과 설정 정보를 내보낼 때 생성되는 텍스트 기반 파일입니다. 나름의 구조는 있지만 사람이 읽기 위한 형식이 아니라서, 필요한 값만 뽑으려면 별도의 파싱이 필요합니다.

Q. 왜 EM, Phase, Unit을 따로 처리하나요?

A. 셋은 계층과 역할이 다른 개념(설비 → 장비 모듈 → 공정 단계)이고, 그에 따라 fhx 안에 기록되는 구조도 다릅니다. 하나의 규칙으로 뭉뚱그리면 정확도가 떨어져서, 타입별 알고리즘을 따로 두었습니다.

Q. 파일을 한 번에 여러 개 처리할 수 있나요?

A. 네. 폴더를 지정하면 대상 파일이 목록에 올라오고 일괄 변환됩니다. 전체 진행률과 파일별 상태가 실시간으로 보이고, 중간에 중단할 수도 있습니다.

Q. 변환된 엑셀을 다시 정리해야 하나요?

A. 아닙니다. 분류 기준에 맞춰 시트가 나뉜 상태로 저장되므로 추가 가공 없이 바로 쓰실 수 있습니다.

Q. 우리 회사 파일 형식에도 만들어 줄 수 있나요?

A. 가능합니다. 이 프로그램의 본질은 “규칙이 있는 텍스트에서 필요한 값을 뽑아 구조화된 문서로 바꾸는 것”입니다. 설비 로그, 계측 데이터, 설정 파일 등 성격이 비슷한 업무라면 같은 방식으로 맞춤 개발이 됩니다. 쓰고 계신 파일 샘플을 보내주시면 적용 가능 여부를 먼저 검토해 드립니다.

반복 작업, 아직 사람이 하고 계신가요?

우리비엔씨는 2011년부터 산업 현장의 반복 업무를 프로그램으로 바꿔 왔습니다. 텍스트 파싱, 엑셀 자동화, 데이터 변환, 설비 연동처럼 “규칙은 분명한데 사람이 하고 있는” 일이 있다면 편하게 연락 주십시오.

홈페이지: http://www.wooribnc.com
연락처: 070-4809-7769 // 0 1 0 - 5 1 7 7 - 8 0 5 5
이메일: admin@wooribnc.com // lwjvegas@gmail.com
* KOSA 소프트웨어사업자 등록업체
* KOSA 소프트웨어기술자경력 특급기술자, 정보처리기사
* 가천대학교 가족회사 협약업체


WRITTEN BY
우리비엔씨
모든 프로그램 개발 가능합니다. 업무용 프로그램부터 특수 프로그램까지 상담문의 주시면 성의껏 답변드리겠습니다. 업무에 맞도록 소통하면서 원하시는 전산시스템을 구축해 드리고 있습니다.

,