기술 개발 사례

반도체 MBE 장비 다중 프로토콜 제어 소프트웨어 안정화 및 Windows 납품 사례

Winge Technology는 반도체 공정 장비용 Windows Qt 제어 소프트웨어를 진단하고 안정화했으며, Modbus 온도 조절기 10대, EI-BISYNCH 밸브, Galaxy 산업용 카메라, SQLite 기록, 설치 패키지와 현장 인수 계획을 포함한 독립 아키텍처 시험 버전을 구축했습니다.

반도체 MBE 장비 다중 프로토콜 제어 소프트웨어 안정화 및 Windows 납품 사례

프로젝트 개요

이 프로젝트는 반도체 공정 장비에 사용되는 Windows 상위 제어 소프트웨어를 대상으로 했다. Qt/C++ 응용 프로그램이 온도 조절기, 니들 밸브, 진공 게이지, 셔터 제어기, 산업용 카메라와 통신하고 SQLite에 장비 샘플, 명령 이벤트, 카메라 프레임 메타데이터를 저장한다. 현장 프로그램을 중단하지 않은 상태에서 온도 데이터 단절, 불충분한 명령 확인, 카메라 프레임률 회귀, 저장 경로의 무음 정지를 진단하는 것이 범위였다.

납품은 두 개의 격리된 경로로 진행했다. 유지보수 경로는 기존 응용 프로그램에 범위가 제한되고 되돌릴 수 있는 수정을 적용해 Windows x64 설치 패키지를 만들었다. v2 경로는 별도 디렉터리와 AppId에서 직렬 포트, 데이터베이스, 카메라 작업자, 스크립트 실행의 소유권을 검증했다. 기존 설정과 기록 데이터는 유지했으며, 현장 담당자가 안전 시간을 승인하지 않은 상태에서는 장비에 연결할 수 있는 프로그램을 실행하지 않았다.

시스템 범위와 기술 구성

영역기술 또는 장비수행 작업
상위 제어Windows 10/11 x64, Qt 5.12.12, C++, MSVC진단, 안정화 수정, Release 빌드, 설치 패키지
온도 제어9600 baud Modbus RTU 조절기 10대읽기 축소, 직렬 트랜잭션, 쓰기 응답과 SP 재읽기
밸브와 셔터EI-BISYNCH 및 장비별 응답프로토콜 파싱, ACK/NAK, 상태 검증
산업용 카메라Galaxy SDK, 기준 노출 125 ms최신 프레임, ACK 수정, 캡처·저장 감시
데이터와 스크립트SQLite, JPEG, 공정 스크립트단일 쓰기 경로, 시간 분리, 모의 실행과 실패 경계

현장 증거에 기반한 진단

약 8.89시간의 과거 로그와 데이터베이스를 읽기 전용으로 확인했다. COM5에서는 수신 버퍼가 128바이트를 초과한 뒤 5,168회의 버퍼 초기화가 기록되었고, 10대 온도 조절기의 유효 갱신 간격은 설정된 2초보다 뚜렷하게 길었다. 코드상 고주파 폴링은 각 장치에서 약 35개 레지스터를 읽고 약 75바이트의 응답을 받았다. GUI 스케줄링, 느린 데이터베이스 배치, 150 ms 대기 구간이 늦은 응답과 다음 요청의 혼합 가능성을 높였다.

같은 PC의 과거 카메라 기록에서 기존 기준은 JPEG를 8.006 FPS로 기록했지만 회귀 버전은 3.919 FPS였다. 두 샘플 모두 인접 JPEG가 완전히 같은 경우는 없었다. 원시 프레임 ACK가 카메라 작업자 큐로 다시 들어가고 다음 블로킹 캡처가 ACK보다 먼저 실행되는 구조가 원인이었다. 이 수치는 회귀를 확인하고 원인을 찾기 위한 자료이며 수정 버전의 현장 인수 결과가 아니다.

기존 응용 프로그램의 제한적 수정

유지보수 경로는 기존 UI, 장비 설정, 데이터 폴더, 공정 스크립트 진입점을 유지했다. 파일을 교체하기 전에 백업했고 패치 아카이브와 설치 파일의 SHA-256을 기록했다. 설치 프로그램은 기존 MBE_Data, Scriptfile, 장비 설정을 보존하며 설치가 끝난 뒤 제어 프로그램을 자동 실행하지 않는다.

  • 고주파 온도 읽기를 PV, SP, Working SP에 필요한 레지스터로 줄여 대표 응답을 약 75바이트에서 약 15바이트로 변경했다.
  • Sub 온도 쓰기는 Modbus 0x06 응답을 정확히 비교한 뒤 SP를 다시 읽으며, 응답 누락이나 값 불일치는 실패로 처리한다.
  • 카메라는 작업자 주도로 캡처하고, 미리보기와 원시 저장은 각각 한 개의 진행 중 프레임만 유지한다.
  • 섭씨 공학값에 대한 상태 표시와 구형 경로의 두 번째 나누기 10을 제거했다.

Ramp Rate 하드웨어 판독

Ramp Rate 셀은 소프트웨어가 만든 고정값 대신 --로 시작하며 장비 레지스터 0x0023을 읽은 뒤 값을 표시한다. 정상 상태에서는 3초마다 한 대를 읽어 10대가 약 30초에 한 순환을 마친다. Ramp Rate를 PV/SP 고주파 요청에 포함하지 않아 9600 baud 버스의 모든 응답이 길어지는 것을 피한다.

이 변경은 표시값의 출처를 바로잡는다. UI는 장비 데이터가 도착한 뒤에만 숫자를 표시한다. 현장 패널에서 설정을 바꾼 뒤 동기화되는지는 1.0.3 실장비 실행에서 확인해야 하므로 구현 완료를 하드웨어 인수 완료로 표현하지 않는다.

카메라 캡처와 저장 경로

미리보기와 기록은 최신 프레임 방식을 사용한다. GUI나 JPEG 인코더가 일시적으로 느리면 중간 프레임을 교체하고 이벤트 큐가 계속 커지지 않게 한다. 원시 프레임 ACK는 다음 블로킹 캡처 뒤에 대기하지 않고 원자 플래그를 직접 해제한다. 파일명과 데이터베이스에는 실제 캡처 시간을 기록하고 저장 시작과 완료 시간은 별도 필드로 둔다.

1.0.3에는 두 감시 경로가 있다. 카메라가 열린 상태에서 3초 동안 원시 프레임이 없으면 캡처를 닫았다 다시 열고, 재시작 요청에는 10초 냉각 시간을 둔다. 저장 작업이나 마지막 영속화 이후 시간이 3초를 넘으면 정지 상태를 해제하고 현재 프레임으로 다시 시도한다. 드라이버, USB 링크, 디스크 처리량, 데이터베이스 오류의 현장 진단은 별도로 필요하다.

격리된 v2 아키텍처 시험 경로

v2는 별도 소스 트리, AppId, 설치 디렉터리를 사용해 실행 중인 구형 프로그램을 교체하지 않는다. 기본 상태에서는 직렬 포트 연결, 모니터링 시작, 카메라 열기, 시작 시 셔터 명령 전송을 하지 않는다. 하나의 물리 포트는 하나의 PortWorker만 소유하며 폴링, 수동 명령, 스크립트 명령은 하나의 우선순위 트랜잭션 큐로 들어간다.

SQLite 쓰기 연결은 하나이며 장비 샘플과 카메라 메타데이터를 시간 또는 배치 기준으로 커밋한다. 이력 조회는 독립 읽기 전용 연결을 사용한다. 캡처, 미리보기, JPEG 기록을 분리하고 스크립트는 짧은 상태 기계 단계로 진행한다. 명령 응답이나 목표값 재읽기가 실패하면 실행을 중단한다.

빌드, 패키징, 데이터 보존

유지보수 버전 1.0.3은 CMake와 MSVC Release x64로 빌드하고 Inno Setup 6.7.3으로 패키징했다. Release 실행 파일은 1,727,488바이트다. 설치 스테이지에는 78개 파일, 총 66,292,772바이트가 포함되며 Galaxy SDK, Qt, SQLite 드라이버, VC Runtime, 장비 설정을 확인했고 Qt Debug DLL은 포함하지 않았다.

설치 버전은 1.0.3.20260728이고 크기는 19,884,961바이트다. 실행 파일, 패치, 설치 파일의 전체 SHA-256은 납품 기록에 보관했다. Authenticode 서명은 적용되지 않아 Windows가 알 수 없는 게시자 메시지를 표시할 수 있다.

검증 증거와 적용 경계

검증 항목기록된 결과적용 경계
과거 데이터 진단8.89시간 로그, COM5 버퍼 초기화 5,168회구형 문제를 확인하지만 수정 결과는 아님
과거 카메라 비교기준 8.006 FPS, 회귀 3.919 FPSACK 회귀 진단용이며 1.0.3 현장 시험이 아님
유지보수 ReleaseWindows x64 빌드와 정적 확인 6개 완료컴파일·코드 경로 확인이며 하드웨어 인수가 아님
유지보수 CTest종료 0, 출력은 No tests were found자동 테스트 미등록으로 기록
v2 시험 프로그램Debug 전체 빌드, CTest 1/1, 무장비 검사 11개 그룹프로토콜·상태·스크립트·저장, 장비 미연결
현장 하드웨어1.0.3과 v2 연결 시험 미실시Ramp Rate, 복구, Sub 쓰기, 8시간 운전은 인수 대기

현장 안전과 인수 계획

응용 프로그램은 시작 후 직렬 장비와 카메라에 연결하고 제어 명령을 보낼 수 있다. 따라서 원격 빌드 작업에서는 무인 데스크톱에서 새 버전을 실행하거나 기존 프로세스를 중단하지 않았다. 현장 담당자가 안전 상태를 확인한 뒤 모니터링, 단일 명령, 카메라, 밸브와 셔터, 스크립트, 통합 운전 순서로 확인해야 한다.

  • 30분 모니터링 후 각 온도 조절기의 샘플 간격, 타임아웃률, 최대 공백을 계산한다.
  • 안전한 Sub 목표를 여러 번 쓰고 0x06 응답, SP 재읽기, 장비 패널, PV를 비교한다.
  • 노출, 해상도, 저장 위치를 고정해 캡처 FPS, 저장 FPS, 건너뛴 프레임, 종단 지연을 측정한다.
  • 카메라 링크를 끊고 복원해 감시 로그와 미리보기·저장 복구를 확인한다.
  • 8시간 통합 기록 후 구형 프로그램 교체 여부를 결정한다.

재사용 가능한 엔지니어링 방식

이 방식은 운영 지속과 되돌리기가 필요한 기존 산업용 Windows 소프트웨어에 적용할 수 있다. 반도체 장비, 진공 시스템, 온도 제어, 산업용 카메라, 다중 포트 수집, 실험 장비, 공정 스크립트가 예다. 로그, 데이터베이스, 프로토콜 경로에서 재현 가능한 근거를 먼저 만들고 위험에 따라 제한 수정과 격리된 아키텍처 시험을 구분한다.

유사 프로젝트에 필요한 입력

초기 검토에는 장비 프로토콜, 직렬 토폴로지, 레지스터 맵, 카메라 SDK와 샘플, 현재 소스와 빌드 환경, 과거 로그와 데이터베이스, 현장 안전 경계, 롤백 방법, 샘플 주기·명령 성공·프레임률·지연·연속 운전의 수치 조건이 필요하다. 실장비 시간이 없어도 정적 진단, 무장비 시험, 설치 패키지 확인, 인수 계획을 진행할 수 있지만 현장 인수를 대신하지는 않는다.

자주 묻는 질문

신규 개발인가요, 기존 시스템 유지보수인가요?

두 경로를 함께 사용했다. 유지보수 경로는 제한 수정과 1.0.3 설치 파일을 만들었고 v2는 스레드, 트랜잭션, 데이터 소유권을 검증하는 독립 시험 경로다.

왜 원격 SSH에서 새 버전을 실행하지 않았나요?

실행하면 카메라와 직렬 포트를 점유하고 장비 명령을 보낼 수 있다. 현장 안전 상태가 확인되지 않아 소스, 빌드, 패키징, 정적 점검만 수행했다.

8.006 FPS가 수정 후 측정값인가요?

아니다. 같은 PC의 과거 기준 기록이며 3.919 FPS는 회귀 버전이다. ACK 스케줄링 문제를 찾기 위한 비교이고 수정 버전은 조건을 고정해 다시 측정해야 한다.

모든 장비 기능을 테스트했나요?

아니다. 유지보수 프로젝트에는 자동 테스트가 등록되지 않았고 v2의 한 시험 프로그램이 11개 무장비 검사 그룹을 통과했다. 실제 장비와 장시간 운전은 현장 인수 항목이다.

현장 데이터와 설정은 어떻게 보호했나요?

변경 전 백업과 해시 기록, 데이터·스크립트·기존 설정 보존, v2의 별도 AppId와 설치 경로를 적용했다. 버전 전환은 현장 인수 결과에 따라 결정한다.

유사 프로젝트 상담

장비 프로토콜, 직렬 포트 구성, 카메라 모델, 현재 소프트웨어 버전, 현장 안전 조건과 인수 지표를 보내 주세요.

Online
Phone
13910119357
WeChat
WhatsApp
Winge Technology WhatsApp QR code Scan or click to contact us
Top