본문 바로가기
디지털 전환 솔루션/HMI & SCADA

HMI 프로젝트 배포와 Runtime 사용 구조

by eplus 2026. 8. 19.

HMI에서 프로젝트 배포는 Builder에서 설계한 화면과 설정을 Runtime이 실행할 수 있는 형태로 변환해 현장 PC에 설치하는 과정입니다.

핵심은 다음처럼 구분하는 것입니다.

구분역할
eHMI Builder 프로젝트 설계·검증·배포
배포 패키지 Runtime용 화면과 설정
eHMI Runtime 패키지를 읽어 감시·제어
운영 데이터 알람·로그·레시피·작업이력
 
 
 

1. 프로젝트 파일 구분

Builder 원본과 Runtime 배포 파일은 분리하는 것이 좋습니다.

Builder 프로젝트

개발자가 편집할 수 있는 원본입니다.

FactoryLine.ehmi
├─ 프로젝트 설정
├─ 화면
├─ 태그
├─ 통신 설정
├─ 알람
├─ 로깅
├─ 레시피
├─ 사용자·권한
├─ 스크립트
└─ 이미지·라이브러리
 

확장자 예:

FactoryLine.ehmi
 

Builder에서만 열고 수정할 수 있습니다.

Runtime 배포 패키지

실제 실행에 필요한 내용만 포함한 파일입니다.

확장자 예:

FactoryLine_1.0.0.ehpkg
 

배포 패키지에는 다음 항목이 포함됩니다.

manifest.json
project.json
devices.json
tags.json
alarms.json
logging.json
recipes.json
users.json
screens/
scripts/
assets/
 

Builder의 편집정보, 선택상태, 안내선 등은 배포 패키지에서 제외할 수 있습니다.


2. 프로젝트 배포 절차

1단계: 프로젝트 저장

Builder에서 현재 편집 내용을 저장합니다.

저장하지 않은 변경내용이 있으면 배포 전에 다음 메시지를 표시합니다.

저장하지 않은 변경내용이 있습니다.
저장 후 배포하시겠습니까?
 

2단계: 프로젝트 검증

배포 전에 전체 프로젝트를 검사합니다.

검사항목:

  • 존재하지 않는 태그
  • 중복 태그
  • 잘못된 PLC 주소
  • 통신장치 누락
  • 없는 화면으로 전환
  • 이미지 파일 누락
  • 알람 조건 오류
  • 스크립트 문법 오류
  • 권한 설정 오류
  • 태그 자료형 불일치
  • Runtime 미지원 오브젝트
  • 화면 밖에 배치된 오브젝트

오류는 배포를 중단하고, 경고는 사용자가 확인 후 계속할 수 있도록 합니다.

3단계: Runtime 호환성 검사

프로젝트가 대상 Runtime에서 실행 가능한지 검사합니다.

프로젝트 버전: 1.2.0
필요 Runtime: 1.3 이상
대상 Runtime: 1.4.2
호환 결과: 정상
 

Runtime 버전이 낮으면 배포를 차단하거나 Runtime 업데이트를 안내합니다.

4단계: 배포 패키지 생성

프로젝트를 Runtime용으로 변환합니다.

처리 과정:

  • JSON 유효성 검사
  • 불필요한 편집정보 제거
  • 이미지 최적화
  • 스크립트 검사
  • 프로젝트 압축
  • 파일 해시 생성
  • 전자서명 또는 암호화
  • 버전정보 기록

5단계: 대상 Runtime 선택

배포할 현장 PC 또는 HMI 단말기를 선택합니다.

  • 현재 PC
  • 네트워크 Runtime
  • USB 저장장치
  • 지정 폴더
  • 중앙 배포 서버

6단계: 배포 실행

Runtime의 임시 배포 영역으로 파일을 전송합니다.

파일을 현재 실행 폴더에 바로 덮어쓰지 않고 먼저 임시 폴더에 저장해야 합니다.

Runtime/
├─ Active/
├─ Staging/
├─ Backup/
└─ Data/
 
  • Active: 현재 실행 프로젝트
  • Staging: 새 배포 패키지
  • Backup: 이전 프로젝트
  • Data: 운영 데이터

7단계: 설치와 활성화

Runtime이 새 패키지를 검사한 후 활성화합니다.

  • 파일 해시 확인
  • 프로젝트 ID 확인
  • 버전 확인
  • 패키지 압축 해제
  • 기존 프로젝트 백업
  • 신규 프로젝트 적용
  • 통신 재시작
  • 초기화면 표시
  • 실행상태 확인

8단계: 배포 결과 기록

다음 정보를 배포이력에 기록합니다.

  • 프로젝트명
  • 프로젝트 버전
  • 배포 대상
  • 배포 사용자
  • 배포 일시
  • 배포 방식
  • 성공·실패
  • 이전 버전
  • 오류내용
  • 파일 해시

3. 전체 배포와 부분 배포

전체 배포

프로젝트 전체를 다시 설치합니다.

다음 경우에 사용합니다.

  • 최초 설치
  • 프로젝트 구조 변경
  • 통신 드라이버 변경
  • Runtime 버전 변경
  • 화면과 태그의 대규모 변경
  • 프로젝트 ID 변경

부분 배포

변경된 파일만 전송합니다.

예:

  • 특정 화면 수정
  • 이미지 교체
  • 알람 메시지 수정
  • 태그 설명 변경
  • 문자열표 수정

초기 버전에서는 전체 배포만 구현하는 것이 안전합니다. 제품이 안정된 후 부분 배포를 추가하는 것이 좋습니다.


4. Runtime에서 프로젝트 설치

Runtime에서는 다음 두 가지 방법을 지원할 수 있습니다.

자동 설치

Builder가 네트워크로 패키지를 전송하면 Runtime이 자동으로 설치합니다.

Builder → Runtime 연결
→ 패키지 전송
→ 검사
→ 백업
→ 활성화
→ 결과 반환
 

수동 설치

USB 또는 파일을 이용합니다.

Runtime 메뉴:

시스템 설정
└─ 프로젝트 관리
├─ 프로젝트 가져오기
├─ 설치
├─ 활성화
├─ 이전 버전 복원
└─ 설치 이력
 

수동 설치는 네트워크 연결이 어려운 현장에서 유용합니다.


5. Runtime 프로젝트 실행 순서

Runtime이 시작되면 다음 순서로 실행합니다.

1단계: Runtime 환경 확인

  • Runtime 버전
  • 라이선스
  • 저장공간
  • 로컬 DB
  • 로그 폴더
  • 네트워크 상태

2단계: 활성 프로젝트 확인

Active 폴더의 프로젝트를 확인합니다.

활성 프로젝트가 없으면 프로젝트 선택 또는 설치 화면을 표시합니다.

3단계: 프로젝트 무결성 검사

  • 필수 파일 존재 여부
  • 프로젝트 해시
  • JSON 형식
  • 화면 정의
  • 태그 정의
  • 통신장치 정의

오류가 있으면 실행하지 않고 이전 버전 복원을 제안합니다.

4단계: 통신 엔진 시작

프로젝트에 등록된 통신 드라이버를 생성합니다.

PLC01 → Modbus TCP
PLC02 → LS XGT Ethernet
Meter01 → Modbus RTU
 

연결 실패 시 Runtime 전체를 종료하지 않고 통신오류 상태로 표시합니다.

5단계: 태그 엔진 시작

등록된 태그를 주기별로 수집합니다.

고속 태그: 100~200ms
일반 태그: 500ms
저속 태그: 1~5초
 

6단계: 알람·로깅 시작

  • 알람 조건 감시
  • 알람 발생·복구 기록
  • 주기 데이터 로깅
  • 통신상태 기록
  • 저장공간 관리

7단계: 초기화면 표시

프로젝트에서 지정한 초기화면을 표시합니다.

초기화면: 001 종합현황
 

8단계: Runtime 운영 시작

  • 실시간 화면 갱신
  • 버튼 명령 처리
  • 사용자 인증
  • 레시피 적용
  • 트렌드 조회
  • 스크립트 실행

6. 프로젝트와 운영 데이터 분리

가장 중요한 설계 원칙입니다.

프로젝트 데이터

Builder에서 만들어 배포하는 정보입니다.

  • 화면
  • 태그
  • 통신 설정
  • 알람 정의
  • 로깅 정의
  • 레시피 기본값
  • 사용자 권한 정의

운영 데이터

Runtime 사용 중 생성되는 정보입니다.

  • 알람 이력
  • 로깅 데이터
  • 사용자 작업이력
  • 생산실적
  • 실제 레시피값
  • 통신 장애이력
  • 감사로그

운영 데이터는 다음처럼 별도 폴더에 저장합니다.

Runtime/Data/
├─ runtime.db
├─ alarms/
├─ logs/
├─ recipes/
└─ audit/
 

프로젝트를 새로 배포해도 운영 데이터는 삭제하면 안 됩니다.


7. 배포 시 데이터 처리 옵션

배포 화면에서 다음 옵션을 제공하면 좋습니다.

☑ 기존 알람 이력 유지
☑ 기존 로깅 데이터 유지
☑ 운영 레시피 유지
☑ 사용자 작업이력 유지
☑ 통신 설정 유지
☐ 운영 데이터 초기화
 

기본값은 모두 유지입니다.

운영 데이터 초기화는 관리자 권한과 재확인을 요구해야 합니다.

알람, 로깅, 레시피 데이터가 삭제됩니다.
이 작업은 복구하기 어렵습니다.
 
프로젝트명 입력: FactoryLine
 

XP-Builder의 기존 모니터 데이터 모두 삭제와 같은 기능이지만 자체 HMI에서는 데이터 종류별로 세분화하는 것이 안전합니다.


8. 레시피 배포 정책

레시피는 기본값과 운영값을 분리해야 합니다.

프로젝트 레시피

Builder에서 설계한 표준값입니다.

운영 레시피

현장에서 수정해 실제 사용하는 값입니다.

배포 시 선택할 수 있도록 합니다.

  • 운영 레시피 유지
  • 신규 레시피만 추가
  • 프로젝트 기본값으로 교체
  • 사용자에게 비교 후 선택

권장 기본 동작은 다음과 같습니다.

기존 운영 레시피 유지
+ 신규 레시피만 추가
 

기존 레시피를 자동으로 덮어쓰면 설비 설정값이 갑자기 바뀔 수 있습니다.


9. Runtime 프로젝트 전환

하나의 Runtime에 여러 프로젝트를 설치할 수도 있습니다.

설치된 프로젝트
├─ 프레스라인 1.2.0 [활성]
├─ 조립라인 1.0.3
└─ 테스트라인 0.9.0
 

프로젝트 전환 순서:

  1. 사용자 권한 확인
  2. 현재 작업 종료 확인
  3. PLC 쓰기 작업 중지
  4. 로깅 데이터 저장
  5. 통신 연결 종료
  6. 새 프로젝트 검사
  7. 새 통신 설정 적용
  8. 태그·알람 엔진 시작
  9. 초기화면 표시

설비 가동 중에는 프로젝트 전환을 제한하는 것이 좋습니다.


10. 배포 실패와 자동 복원

신규 프로젝트 실행에 실패하면 이전 프로젝트로 자동 복구해야 합니다.

신규 프로젝트 활성화 실패
→ 통신·화면 초기화 실패
→ 신규 프로젝트 비활성화
→ 이전 프로젝트 복원
→ Runtime 재시작
→ 관리자에게 오류 표시
 

백업 폴더 예:

Backup/
├─ FactoryLine_1.0.0/
├─ FactoryLine_1.1.0/
└─ FactoryLine_1.2.0/
 

최근 3~5개 버전을 보관하는 방식이 적당합니다.


11. Runtime 프로젝트 관리화면

Runtime의 시스템 설정에 다음 화면을 구성합니다.

현재 프로젝트

  • 프로젝트명
  • 프로젝트 ID
  • 버전
  • 배포일시
  • 배포자
  • Runtime 요구 버전
  • 현재 상태

설치된 프로젝트

  • 프로젝트 목록
  • 버전
  • 설치일시
  • 활성 여부
  • 삭제
  • 활성화

배포이력

  • 배포 성공·실패
  • 이전 버전
  • 오류내용
  • 복원 여부

프로젝트 가져오기

  • USB
  • 로컬 파일
  • 네트워크
  • 중앙 서버

이전 버전 복원

복원할 버전을 선택하고 프로젝트만 복원할지 운영 데이터도 함께 복원할지 선택합니다.


12. Builder 배포화면 구성

Builder 메뉴는 다음과 같이 구성할 수 있습니다.

배포
├─ 프로젝트 검증
├─ 배포 패키지 생성
├─ 로컬 Runtime 실행
├─ Runtime으로 전송
├─ USB 배포파일 생성
├─ 배포 대상 관리
├─ 배포이력
└─ 프로젝트 회수
 

배포 설정 항목

항목내용
프로젝트 배포 프로젝트
버전 1.2.0
대상 Runtime 현장 HMI PC
접속 방식 로컬·네트워크·USB
배포 방식 전체·부분
적용 시점 즉시·재시작 시
기존 데이터 유지·초기화
이전 버전 백업 사용
실패 시 복원 자동

13. 권장 배포 패키지 정보

manifest.json에는 다음 정보가 필요합니다.

 
{
"projectId": "FACTORY_LINE_01",
"projectName": "프레스라인 HMI",
"version": "1.2.0",
"createdAt": "2026-08-19T10:30:00+09:00",
"requiredRuntimeVersion": "1.0.0",
"startScreenId": "SCREEN_001",
"packageHash": "SHA256 값",
"preserveRuntimeData": true
}
 

Runtime은 이 정보를 먼저 읽고 설치 가능 여부를 판단합니다.


14. C# 배포 서비스 구조

 
public interface IProjectDeploymentService
{
Task<ValidationResult> ValidateAsync(
HmiProject project);
 
Task<string> BuildPackageAsync(
HmiProject project,
string version);
 
Task<DeploymentResult> DeployAsync(
string packagePath,
RuntimeTarget target);
 
Task<DeploymentResult> RollbackAsync(
RuntimeTarget target,
string version);
}
 

Runtime에는 설치 서비스를 둡니다.

 
public interface IRuntimeProjectInstaller
{
Task VerifyPackageAsync(string packagePath);
Task BackupCurrentProjectAsync();
Task InstallAsync(string packagePath);
Task ActivateAsync();
Task RestorePreviousAsync();
}
 

15. 초기 개발 권장범위

1단계

  • Builder 프로젝트 저장
  • 프로젝트 검증
  • .ehpkg 패키지 생성
  • 로컬 폴더 배포
  • Runtime 프로젝트 읽기
  • Runtime 재시작
  • 이전 프로젝트 백업

2단계

  • USB 배포
  • 네트워크 배포
  • Runtime 상태 확인
  • 배포이력
  • 자동 롤백
  • 운영 데이터 유지

3단계

  • 부분 배포
  • 여러 Runtime 일괄 배포
  • 원격 업데이트
  • 중앙 배포 서버
  • 전자서명
  • 예약 배포

결론

HMI 프로젝트 배포는 단순히 파일을 복사하는 기능이 아닙니다.

프로젝트 검증, 패키지 생성, 버전 확인, 기존 프로젝트 백업, Runtime 활성화와 실패 시 복원까지 하나의 절차로 구성해야 합니다.

가장 중요한 원칙은 다음 세 가지입니다.

  1. Builder 원본과 Runtime 패키지 분리
  2. 프로젝트와 운영 데이터 분리
  3. 배포 실패 시 이전 버전 자동복원

초기 버전에서는 전체 패키지를 로컬 또는 USB로 배포하고 Runtime을 재시작하는 방식으로 개발하는 것이 안정적입니다. 이후 네트워크 배포와 부분 업데이트를 추가하면 전문 HMI 제품으로 확장할 수 있습니다.

반응형