엔지니어링 · 2022
연소 실험용 다채널 계측·모니터링 프로그램
NI CompactDAQ로 압력·유량·온도를 수집하고 연소 상태량을 실시간으로 계산하는 데스크톱 앱
연소기 시험대의 압력·유량·온도 센서를 한 화면에서 수집하고, 등가비와 층류 화염 속도처럼 실험 조건을 판단하는 데 필요한 값을 실시간으로 계산해 함께 기록하도록 만든 데스크톱 프로그램입니다.
- 고객
- 비공개 고객
- 분야
- 엔지니어링

개요
CMNA는 광학 접근이 가능한 고압 연소기 시험대의 계측을 담당하는 데스크톱 프로그램입니다. 연소기 압력, 공기와 연료의 저장·공급 압력, 세 계통의 유량, 네 지점의 온도를 한 화면에서 동시에 보여 주고, 시험 중의 데이터를 파일로 남깁니다.
프로그램은 이더넷으로 연결된 NI CompactDAQ 섀시(cDAQ-9185)와 통신해 전류 입력 모듈과 열전쌍 모듈의 신호를 함께 읽고, 센서마다 다른 전류 신호와 단위를 공학 단위로 바꾼 뒤 수치 표와 그래프에 동시에 반영합니다. 여기에 더해 측정값으로부터 등가비, 출구 속도, 층류 화염 속도를 매 샘플마다 계산해 측정 항목과 똑같이 다룹니다.

과제
연소 실험대의 계측에는 장비 제조사가 제공하는 범용 DAQ 소프트웨어를 사용할 수 있습니다. 그러나 이러한 소프트웨어는 주로 센서 데이터의 수집과 모니터링에 초점을 맞추고 있어, 실험 조건을 종합적으로 파악하는 데에는 한계가 있습니다.
특히 연소 실험의 핵심 지표인 등가비와 층류 화염 속도는 가스 혼합물의 조성과 열역학적 상태를 바탕으로 계산해야 합니다. 따라서 기존에는 실험 종료 후 별도의 데이터 분석 과정을 거쳐야 했으며, 실제 운전 조건이 목표한 실험 조건과 일치하는지 실시간으로 확인하기 어려웠습니다.
- 센서마다 출력 형태가 다릅니다. 압력 변환기와 질량 유량계는 4~20 mA 전류를, 열전쌍은 수십 mV의 전압을 보냅니다.
- 센서마다 단위가 다릅니다. 압력은 bar, kPa, psi에 절대압과 게이지압이 섞이고, 유량은 slpm, scfm, scfh, g/s가 섞입니다.
- 배기 온도가 한계를 넘으면 후단의 배압 조절기가 손상되므로, 실험 내내 그 값을 보고 있어야 합니다.
- 실험마다 연결하는 센서와 채널 구성이 바뀝니다. 구성이 바뀔 때마다 프로그램을 고칠 수는 없습니다.
해결 방법
측정 항목과 계산 항목을 구분하지 않고 한 화면에 올렸습니다. 화면 위쪽 표에는 17개 항목의 현재값과 평균, 표준편차가 함께 나오고, 아래쪽에는 여섯 개의 시간 이력 그래프가 있습니다.
- 압력 6개 항목: 배압 조절기 돔 압력, 연소기 압력, 공기와 연료의 저장·공급 압력
- 유량 3개 항목: 산화제 공기, 희석 공기, 연료
- 온도 4개 항목: 산화제 공기, 희석 공기, 연료, 배기
- 계산 4개 항목: 등가비, 출구 속도, 출구 면적, 층류 화염 속도
그래프 여섯 칸은 각각 어떤 항목을 그릴지 고를 수 있습니다. Y축 범위는 양끝을 잡는 슬라이더로 움직이고, 마우스 휠로 범위의 폭을, 오른쪽 클릭으로 중앙 복귀를 처리합니다. 체크 한 번으로 데이터에 맞춘 자동 범위로 바꿀 수 있고, X축 슬라이더로는 전체 수집 구간 중 최근 몇 초만 확대해서 볼 수 있습니다. 운전 중에 한 손으로 조작할 수 있는 범위에 맞춘 구성입니다.

채널 구성은 별도의 설정 창에서 다룹니다. 채널마다 모듈 주소, 센서의 측정 범위, 단위를 지정하고, 열전쌍은 타입을 고릅니다. 주소를 비워 둔 항목은 그 실험에서 연결하지 않은 센서로 보고 건너뜁니다. 구성 전체를 파일로 저장하고 불러올 수 있어, 실험 구성이 바뀌어도 프로그램은 그대로 둡니다.

수집한 데이터는 메뉴에서 CSV로 저장합니다. 항목 이름과 단위가 각 행 앞에 함께 들어가므로, 파일만 봐도 어떤 단위로 기록된 값인지 알 수 있습니다.
시스템 구조
계측은 NI CompactDAQ 플랫폼 위에 올렸습니다. 이더넷으로 연결하는 섀시에 신호 종류별 모듈을 꽂는 구성이라, 센서가 늘거나 종류가 바뀌어도 모듈만 더하면 됩니다.

프로그램이 직접 통신하는 NI 장비
CMNA가 다루는 대상은 이더넷으로 연결된 섀시 한 대와 거기 꽂힌 입력 모듈 두 장입니다. 프로그램이 섀시를 예약한 뒤, 두 모듈의 채널을 하나의 수집 태스크로 묶어 읽습니다.
- NI cDAQ-9185: 4슬롯 확장 온도 범위 이더넷 CompactDAQ 섀시. PC와 같은 서브넷에 두고 네트워크로 예약합니다. 네 슬롯 중 두 장만 쓰므로 나머지는 다른 측정을 위해 비워 두었습니다.
- NI 9208 (슬롯 4): 16채널 ±20 mA 24비트 전류 입력 모듈. 채널당 500 S/s이고 50/60 Hz 제거 기능이 있어 전원 노이즈에 강합니다. 압력 변환기 6개와 질량 유량계 3개, 모두 아홉 채널이 여기로 들어옵니다.
- NI 9212 (슬롯 1): 8채널 열전쌍 입력 모듈. ±78 mV, 24비트, 채널당 95 S/s 동시 샘플링에 등온 터미널 블록과 채널 간 절연을 갖췄고, K, J, T, E, N, S, R, B 타입을 지원합니다. 공기와 연료, 배기의 열전쌍 네 개가 여기로 들어옵니다.
분리해 둔 출력 계통
밸브와 전공 조절기로 나가는 전류 신호는 계측과 같은 섀시에 두지 않았습니다. 계측 프로그램이 멈춘 순간에 연료 유량을 줄일 수 없게 되는 상황을 피하기 위해서입니다. 출력은 별도 섀시와 전용 프로그램이 맡고, CMNA는 여기에 관여하지 않습니다.
- NI cDAQ-9181: 1슬롯 이더넷 CompactDAQ 섀시
- NI 9266: 8채널 0~20 mA 16비트 아날로그 출력 모듈. 전원 투입 시 출력을 0 mA로 두고 개방 회로를 감지합니다.
두 섀시와 모듈, DC 전원, 이더넷 허브, 와이어 터미널은 하나의 컨트롤러 벤치에 모여 있습니다. 센서에서 온 선은 모두 터미널을 거쳐 전원을 받고 해당 모듈 채널로 들어갑니다.

모듈에 연결한 장비
- Bronkhorst EL-FLOW Select 디지털 질량 유량계: 메탄 0.12~6 slm, 공기 1.2~60 slm과 9.6~480 slm 세 종류. 4~20 mA 출력이며 정확도는 읽은 값의 ±0.5%에 풀스케일의 ±0.1%입니다.
- Hanbay MCJ/MCL-050AF-3 전동 액추에이터: Swagelok과 Hoke 미터링 밸브에 장착해 4~20 mA 신호로 개도를 조절하고 개도를 피드백으로 돌려줍니다.
- Equilibar GSD 시리즈 돔 로딩식 배압 조절기와 QB1 전공 압력 조절기: 연소기 압력을 유지합니다.
- 열전쌍과 압력 변환기: 터미널 블록을 거쳐 입력 모듈로 들어옵니다.
데이터 흐름
- 프로그램이 섀시를 예약하고, 주소가 지정된 채널만 모아 하나의 수집 태스크를 만듭니다.
- 10 Hz 샘플 클럭으로 연속 수집하고, 한 샘플마다 전류값과 열전쌍 온도를 읽습니다.
- 전류값을 공학 단위로 바꾸고, 내부 계산을 위해 다시 표준 단위로 환산합니다.
- 환산된 값으로 등가비, 혼합기 상태, 층류 화염 속도, 출구 속도를 계산합니다.
- 설정한 수집 시간만큼만 남기는 이동 창에 값을 쌓고, 표와 그래프를 갱신합니다.
구현
NI-DAQmx 태스크 구성
주소가 비어 있지 않은 채널만 모아 태스크를 하나 만듭니다. 항목 이름에 온도가 들어가면 열전쌍 채널로, 나머지는 전류 채널로 등록하므로 서로 다른 모듈에 꽂힌 두 종류의 신호가 한 번의 읽기로 함께 돌아옵니다. 채널 주소는 NI MAX에서 확인한 물리 채널 이름을 그대로 쓰고, 샘플 클럭은 10 Hz 연속 모드로 잡습니다. 연결하지 않은 센서는 주소를 비워 두는 것으로 태스크에서 빠지므로, 실험마다 채널 수가 달라져도 같은 코드가 돕니다.
전류 신호 변환과 무효값 처리
4~20 mA 센서는 채널마다 지정한 최소·최대값으로 선형 변환합니다. 4 mA 미만은 센서가 끊겼거나 전원이 없는 상태이므로, 그대로 변환하면 물리적으로 불가능한 음수가 나옵니다. 이 구간을 따로 걸러 무효값으로 기록해, 끊긴 채널이 그래프를 망가뜨리지 않게 했습니다.
내부 표준 단위
화면에 보이는 단위와 계산에 쓰는 단위를 분리했습니다. 사용자는 bar, kPa, psi, slpm, scfm, g/s 중 익숙한 것을 고르고, 프로그램은 들어온 값을 Pa, K, cm/s, cm³/s 같은 한 벌의 표준 단위로 바꾼 뒤 계산합니다. 절대압과 게이지압의 구분도 이 단계에서 흡수합니다. 덕분에 단위 설정이 바뀌어도 계산식은 손대지 않습니다.
연소 상태량 계산
등가비는 공기와 연료의 체적 유량비에 연료 분자의 탄소·수소 원자 수를 반영해 구합니다. 원자 수는 연료 화학종 이름에서 Cantera가 읽어 오므로, 메탄에서 프로판으로 바꿔도 계수를 고쳐 쓸 필요가 없습니다.
층류 화염 속도는 공개된 상관식을 쓰되, 그 식에 들어갈 혼합기 온도와 압력을 Cantera로 먼저 구합니다. 공기와 연료 각각의 엔탈피를 유량으로 가중 평균해 혼합 상태를 잡고, 거기서 나온 온도와 연소기 압력을 상관식에 넣습니다. GRI 3.0 메커니즘으로 구한 밀도는 출구 속도 계산에도 함께 쓰입니다.
수집 루프와 화면
수집은 별도 스레드에서 돌고, 수집이 도는 동안에는 설정 변경과 저장 메뉴를 잠급니다. 설정을 바꾸는 중에 태스크가 재구성되는 일을 막기 위해서입니다. 값은 설정한 수집 시간만큼만 남기는 이동 창에 쌓이므로, 몇 시간을 돌려도 메모리가 늘지 않고 그래프는 항상 최근 구간을 보여 줍니다.
결과
실험 중에 등가비와 층류 화염 속도를 바로 볼 수 있게 되면서, 운전점이 의도한 조건인지 확인하는 일이 실험이 끝난 뒤가 아니라 실험 도중에 가능해졌습니다. 조건을 맞추기 위해 같은 실험을 다시 돌리는 일도 줄었습니다.
센서 구성과 단위를 설정 파일로 다루게 되면서, 실험대 구성이 바뀔 때 프로그램을 고치지 않고 설정만 바꾸게 되었습니다. 저장한 설정과 CSV 기록이 한 쌍으로 남으므로, 어떤 채널 구성과 단위로 받은 데이터인지 나중에도 되짚을 수 있습니다.
이 프로그램은 연소기 전용으로 만들었지만 채널과 단위가 모두 설정값이라, 압력·유량·온도를 함께 보는 다른 실험대에도 그대로 쓸 수 있는 구조입니다. 이후 버전에서는 미터링 밸브의 개도와 상류 압력으로 유량을 역산하는 가상 유량계와 밸브 개도 감시 화면이 더해졌고, 시스템 구성과 사용법은 별도 매뉴얼로 정리했습니다.
사용 기술
- Python
- wxPython
- matplotlib
- NumPy
- NI-DAQmx
- Cantera
화면





진행하려는 프로젝트가 있으신가요?
해결하려는 문제와 지금 상황을 알려 주시면, 어떤 방식이 맞을지 함께 검토합니다.
프로젝트 문의하기