프로젝트 배경
HMI는 온도 데이터 수집, 산업 카메라 미리보기와 이미지 저장, 장비 상태 표시, 공정 스크립트 실행을 담당합니다. 현장 피드백은 온도 곡선 누락, 이미지 저장 주기 불안정, 미리보기 지연, Sub 온도 설정 후 하드웨어 측 변화가 기대와 다른 문제에 집중되었습니다.
문제 진단
진단은 현장 로그, DB 기록, 시리얼 통신 경로, 카메라 스레드 모델을 기준으로 진행했습니다. COM5는 9600 baud에서 여러 Modbus 온도 컨트롤러에 연결되어 있었고, 기존 폴링은 넓은 레지스터 범위를 자주 읽어 일반 응답이 약 75바이트였습니다. 카메라 경로도 GUI 이벤트 루프, DB 느린 배치, 캡처 상태 잠금의 영향을 받았습니다.
수정 구현
고빈도 온도 폴링은 PV/SP/WorkingSP 레지스터 1~5로 줄여 일반 응답을 약 15바이트로 낮췄습니다. Ramp Rate는 독립적인 저빈도 하드웨어 읽기로 변경했습니다. 설정값은 섭씨 값으로 처리하고, Sub 쓰기 성공은 PC 시리얼 쓰기 바이트 수가 아니라 정확한 0x06 응답 일치와 SP 레지스터 읽기 확인으로 판단하도록 수정했습니다.
카메라 경로 조정
카메라 수집은 GUI 타이머 의존에서 작업 스레드 자체 구동으로 변경했습니다. 원본 프레임과 미리보기 이벤트는 처리 중 작업을 최대 1개로 제한하고, QPixmap은 GUI 스레드에서만 사용합니다. JPEG 저장은 새 프레임으로 트리거하고 실제 캡처 시간을 기록합니다. 캡처 정지와 저장 스케줄에는 watchdog을 추가했습니다.
검증 결과
납품 단계에서 고객 장비와 로컬 소스의 12개 파일 SHA-256 일치 확인, Debug 빌드 종료 코드 0을 확인했습니다. 비대화형 원격 세션에서 카메라와 시리얼 자원을 점유하지 않기 위해 SSH로 프로그램을 실행하지 않았습니다. 장시간 현장 검증은 고객이 로컬 데스크톱에서 실행한 뒤 기록해야 합니다.
적용 시나리오
이 납품 방식은 기존 산업 HMI, 장비 제어 소프트웨어, 현장 데이터 수집 시스템에서 간헐 장애, 스레드 정지, 시리얼 프로토콜 확인 부족, 카메라 수집과 저장 경로 결합 문제가 있을 때 적용할 수 있습니다. 생산 적용, 연속 운전, 장비 안전 연동은 현장 검수 기준과 고객 기록을 기준으로 해야 합니다.