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

HMI란? 핵심 기능과 자체 개발방법

by eplus 2026. 8. 18.

스마트공장이나 자동화 설비를 살펴보면 작업자가 설비 상태를 확인하고 운전하는
터치스크린 또는 모니터를 볼 수 있습니다.

이처럼 사람과 설비를 연결하는 시스템을 HMI라고 합니다.

HMI는 단순히 PLC 값을 보여주는 화면이 아니라 설비 운전, 이상 감시, 생산정보 수집을 담당하는
산업용 운영 시스템입니다.

이번 글에서는 HMI의 기능과 C# 기반 개발방법을 정리합니다.


1. HMI란?

HMI는 Human Machine Interface의 약자입니다.

사람과 PLC, 센서, 인버터, 로봇 등의
산업용 장비를 연결하는 사용자 화면입니다.

PLC가 설비를 직접 제어한다면 HMI는
PLC의 상태를 보여주고 작업자의 명령을
PLC에 전달하는 역할을 합니다.

예를 들어 작업자가 HMI에서
‘컨베이어 운전’ 버튼을 누르면 HMI는
PLC의 운전 비트에 값을 기록합니다.

PLC는 안전조건을 확인한 후
실제 컨베이어를 작동시킵니다.

설비의 온도, 압력, 속도, 생산수량도
PLC에서 읽어 HMI 화면에 표시합니다.


2. HMI의 주요 역할

HMI의 역할은 크게 다섯 가지입니다.

설비 상태 감시

PLC와 센서에서 수집한 값을 표시합니다.

  • 설비 운전·정지 상태
  • 온도·압력·유량
  • 모터 속도
  • 탱크 수위
  • 생산수량
  • 양품·불량수량
  • 통신 상태

설비 운전

작업자의 명령을 PLC로 전달합니다.

  • 운전·정지
  • 자동·수동 전환
  • 속도 설정
  • 목표 온도 설정
  • 밸브 열기·닫기
  • 설비 초기화
  • 알람 확인

이상상태 관리

설비 이상을 작업자에게 알려줍니다.

  • 알람 발생
  • 경고 메시지
  • 부저·경광등
  • 알람 확인
  • 알람 복구
  • 발생·복구 이력

데이터 저장

설비와 생산 데이터를 파일이나 DB에 저장합니다.

  • 온도·압력 이력
  • 생산실적
  • 설비 가동시간
  • 알람 이력
  • 사용자 조작이력
  • 레시피 적용이력

운영정보 분석

저장된 데이터를 그래프와 보고서로 제공합니다.

  • 실시간 트렌드
  • 과거 트렌드
  • 생산량 그래프
  • 가동률
  • 불량률
  • 설비 정지시간

3. HMI와 PLC의 차이

PLC와 HMI는 역할이 다릅니다.

구분PLCHMI

주요 역할 설비 제어 감시·조작
처리 대상 센서·모터·밸브 화면·알람·데이터
프로그램 래더·ST 화면·태그·스크립트
안전제어 PLC에서 처리 상태 표시와 명령
데이터 저장 제한적 로깅·이력관리

HMI가 멈추더라도 PLC는 안전하게
설비를 제어할 수 있어야 합니다.

비상정지, 과부하, 충돌방지 같은 기능은
반드시 PLC에서 처리해야 합니다.

HMI는 안전조건을 대신하는 시스템이 아닙니다.


4. HMI의 핵심 기능

XP-Builder와 같은 전문 제품을 기준으로 하면
HMI에는 다음 기능이 필요합니다.

화면 설계

설비를 표현하는 운전화면을 제작합니다.

  • 기본 운전화면
  • 설비 상세화면
  • 팝업 화면
  • 공통 메뉴
  • 상태표시줄
  • 그래픽 라이브러리
  • 화면 가져오기·내보내기

태그 관리

PLC 주소에 알아보기 쉬운 이름을 부여합니다.

예를 들어 PLC 주소 M100
Conveyor_Run으로 등록할 수 있습니다.

태그 주소를 변경하면 해당 태그를 사용하는
모든 화면에 자동으로 반영되어야 합니다.

통신 드라이버

HMI와 PLC를 연결합니다.

  • Ethernet
  • RS-232C
  • RS-485
  • Modbus TCP
  • Modbus RTU
  • LS XGT
  • Mitsubishi MC Protocol
  • Siemens S7
  • OPC UA

실시간 표시와 제어

PLC 값을 화면에 표시하거나 변경합니다.

  • 램프
  • 스위치
  • 숫자 표시기
  • 숫자 입력기
  • 문자 메시지
  • 게이지
  • 애니메이션
  • 슬라이더

알람 관리

비트나 수치 조건에 따라 알람을 발생시킵니다.

  • 발생·복구시간
  • 알람 등급
  • 미확인 알람
  • 미복구 알람
  • 조치방법
  • 담당자
  • 알람 이력

트렌드와 그래프

실시간 또는 저장 데이터를 그래프로 표시합니다.

  • 실시간 트렌드
  • 과거 트렌드
  • 막대그래프
  • 파이그래프
  • 미터그래프
  • 분포도
  • 상한·하한선

레시피 관리

품목별 설비 설정값을 저장합니다.

제품을 변경할 때 온도, 속도, 압력 등의
설정값을 PLC로 일괄 전송할 수 있습니다.

사용자와 권한

사용자별 조작범위를 제한합니다.

  • 작업자
  • 반장
  • 엔지니어
  • 관리자
  • 감사자

조회, 운전, 설정 변경, 사용자 관리 등의
권한을 구분해야 합니다.

스크립트

복잡한 계산과 자동동작을 처리합니다.

  • 조건 판단
  • 수식 계산
  • 단위 변환
  • 화면 전환
  • 태그값 변경
  • 문자열 처리
  • 일정 실행

데이터 로깅

설비 데이터를 주기 또는 조건에 따라 저장합니다.

  • 일정 주기 저장
  • 값 변경 시 저장
  • 알람 발생 시 저장
  • 작업 시작·종료 시 저장
  • CSV·DB 저장
  • 자동 백업

원격 모니터링

PC나 태블릿에서 설비 상태를 확인합니다.

원격 조회와 원격 제어는 구분해야 하며
외부 제어는 엄격하게 제한해야 합니다.

프로젝트 전송과 시뮬레이션

작성한 프로젝트를 실제 HMI에 배포하기 전에
PC에서 동작을 시험합니다.

  • 가상 태그값 입력
  • 화면 전환 시험
  • 알람 시험
  • 스크립트 시험
  • 오류 검사
  • 프로젝트 전송
  • 이전 버전 복원

5. HMI 프로그램의 기본 구성

자체 HMI는 다음 두 개의 실행 프로그램으로
구성하는 것이 적합합니다.

eHMI Builder

개발자와 관리자가 사용하는 설계 프로그램입니다.

  • 프로젝트 관리
  • 화면 설계
  • 태그 관리
  • 통신 설정
  • 알람 설정
  • 로깅 설정
  • 레시피 설정
  • 권한 설정
  • 시뮬레이션
  • 프로젝트 배포

eHMI Runtime

현장에서 사용하는 실제 운전 프로그램입니다.

  • 프로젝트 실행
  • PLC 통신
  • 실시간 화면 표시
  • 설비 운전
  • 알람 처리
  • 데이터 로깅
  • 레시피 적용
  • 사용자 로그인
  • 원격 모니터링

Builder에서 만든 프로젝트를 저장하면
Runtime이 프로젝트 파일을 읽어 실행합니다.


6. 권장 시스템 구조

전체 구조는 다음과 같이 구성할 수 있습니다.

flowchart TD
    A["eHMI Builder"] --> B["프로젝트 파일"]
    B --> C["eHMI Runtime"]
    C --> D["통신 엔진"]
    D --> E["PLC·설비"]
    C --> F["알람·로깅 엔진"]
    F --> G["SQLite·MariaDB"]

프로젝트 파일에는 다음 정보가 포함됩니다.

  • 화면
  • 오브젝트
  • 태그
  • PLC 연결정보
  • 알람 조건
  • 로깅 조건
  • 레시피
  • 사용자 권한
  • 스크립트

프로젝트 파일은 JSON 기반으로 시작하고
배포할 때 압축·암호화하는 방법이 실용적입니다.


7. C# 기반 개발환경

중소 제조업용 Windows HMI라면
C#을 이용하는 방법이 적합합니다.

권장 기술

  • 개발언어: C#
  • 화면: WinForms 또는 WPF
  • 로컬 DB: SQLite
  • 중앙 DB: MariaDB
  • 그래프: 상용 또는 오픈소스 차트
  • 프로젝트 파일: JSON
  • 로그: 파일과 DB 병행
  • 통신: 드라이버 인터페이스 방식

기존 MES Lite와 연계한다면
조직, 사원, 사용자, 권한, 설비정보를
공통으로 활용할 수 있습니다.


8. 화면 편집기 개발방법

Builder에서 가장 중요한 부분은
화면 편집기입니다.

사용자가 도구상자에서 객체를 선택하고
운전화면에 배치할 수 있어야 합니다.

기본 편집 기능

  • 객체 추가·삭제
  • 마우스 이동
  • 크기 조절
  • 복사·붙여넣기
  • 다중 선택
  • 정렬
  • 간격 통일
  • 그룹·그룹 해제
  • 앞·뒤 순서
  • 확대·축소
  • 격자 맞춤
  • 실행 취소·다시 실행

기본 오브젝트

  • 문자
  • 이미지
  • 버튼
  • 램프
  • 숫자 표시기
  • 숫자 입력기
  • 게이지
  • 막대그래프
  • 트렌드
  • 탱크
  • 모터
  • 밸브
  • 화면 전환버튼

각 오브젝트의 속성은 공통 구조로 관리합니다.

  • 위치
  • 크기
  • 색상
  • 글꼴
  • 태그
  • 표시조건
  • 동작조건
  • 권한
  • 설명

9. 통신 엔진 개발방법

통신 엔진은 화면과 분리해야 합니다.

화면에서 PLC를 직접 읽으면 객체가 많아질수록
통신량과 화면 부하가 증가합니다.

통신 엔진이 PLC 데이터를 수집하고
메모리의 태그 저장소에 기록한 다음
화면이 태그값을 참조하는 구조가 좋습니다.

기본 인터페이스 예

public interface IHmiDriver
{
    Task ConnectAsync();
    Task DisconnectAsync();
    Task<object?> ReadAsync(string address);
    Task WriteAsync(string address, object value);
    bool IsConnected { get; }
}

첫 번째 통신 드라이버는
Modbus TCP가 가장 적합합니다.

구조가 비교적 단순하고 PLC, 계측기,
인버터 등 다양한 장비에서 사용됩니다.

그다음 단계에서 LS XGT, Mitsubishi MC,
Siemens S7, OPC UA를 추가할 수 있습니다.


10. 태그 엔진 개발방법

태그는 HMI 전체 기능의 중심입니다.

태그명: Motor_Run
장치명: PLC01
주소: M100
자료형: BOOL
읽기주기: 200ms
권한: 읽기·쓰기
설명: 메인 컨베이어 운전상태

태그에는 다음 정보가 필요합니다.

  • 태그명
  • 장치명
  • PLC 주소
  • 자료형
  • 읽기·쓰기 구분
  • 갱신주기
  • 스케일
  • 단위
  • 최소·최대값
  • 현재값
  • 품질상태
  • 마지막 갱신시간

품질상태는 정상, 통신오류, 오래된 값,
잘못된 값 등으로 관리해야 합니다.


11. Runtime 개발방법

Runtime은 프로젝트 파일을 읽어
운전화면을 동적으로 생성합니다.

실행 순서는 다음과 같습니다.

  1. 프로젝트 파일 검사
  2. 사용자 인증
  3. 통신 드라이버 실행
  4. 태그 수집 시작
  5. 초기화면 표시
  6. 알람 엔진 실행
  7. 로깅 엔진 실행
  8. 스크립트 실행
  9. 장애 발생 시 자동복구

Runtime에서는 Builder 편집 기능을 제거하고
설비 운전기능만 제공해야 합니다.

전체화면 실행, 자동 시작, 화면 잠금,
비정상 종료 후 자동 재실행도 필요합니다.


12. 단계별 개발계획

1단계: 기본 HMI

  • 프로젝트 관리
  • 화면 편집기
  • 기본 오브젝트
  • 태그 관리
  • Modbus TCP
  • 실시간 표시
  • 버튼 제어
  • 오프라인 시뮬레이션
  • 프로젝트 실행

2단계: 현장 운영

  • 알람·이력
  • 데이터 로깅
  • 실시간 트렌드
  • 과거 트렌드
  • 레시피
  • 사용자·권한
  • 작업 이력
  • CSV 출력

3단계: 전문 HMI

  • 다중 PLC
  • 통신 드라이버 확장
  • 스크립트 엔진
  • 다국어
  • 사용자 라이브러리
  • 온라인 시뮬레이션
  • 프로젝트 버전관리
  • 원격 모니터링

4단계: HMI+SCADA

  • 여러 HMI 통합감시
  • 중앙 데이터베이스
  • 웹 대시보드
  • 모바일 조회
  • 설비별 KPI
  • 가동률·비가동 분석
  • MES 연계
  • FEMS 연계
  • 보고서 자동생성

13. 개발 시 중요한 안전 원칙

HMI 개발에서는 기능보다 안정성이 중요합니다.

  • 안전 인터록은 PLC에서 처리
  • 통신 끊김 상태를 명확히 표시
  • 오래된 값을 정상값처럼 표시하지 않기
  • 중요한 명령은 확인창 표시
  • 권한 없는 조작 차단
  • 모든 설정 변경 기록
  • 잘못된 레시피 적용 방지
  • Runtime 장애 자동복구
  • 프로젝트 이전 버전 복원
  • 네트워크 단절 시 로컬 저장

특히 운전·정지 명령은 버튼을 눌렀다는 이유로
성공 처리하면 안 됩니다.

PLC 응답과 실제 운전상태를 확인한 후
결과를 화면에 표시해야 합니다.


14. MES Lite와 연계하는 방법

HMI를 MES Lite와 연계하면
단순 설비화면을 넘어 생산관리까지 확장됩니다.

연계할 수 있는 정보

  • 사업장
  • 공장·라인
  • 설비
  • 공정
  • 작업지시
  • 품목
  • 생산 LOT
  • 작업자
  • 생산수량
  • 불량수량
  • 설비 가동시간
  • 비가동 사유
  • 에너지 사용량

HMI는 현장의 실시간 데이터를 담당하고
MES Lite는 생산계획과 실적을 관리합니다.

두 시스템은 분리해서 운영하되
설비, 작업지시, 생산실적을 연동하는 구조가
가장 안정적입니다.


마무리

HMI는 설비 상태를 보여주는 단순 화면이 아니라
현장 작업자와 자동화 설비를 연결하는
중요한 산업용 운영 시스템입니다.

전문 HMI를 개발하려면 화면 편집 기능뿐 아니라
태그, 통신, 알람, 로깅, 레시피, 보안,
시뮬레이션까지 함께 고려해야 합니다.

자체 개발 시에는 처음부터 모든 기능을
구현하기보다 화면, 태그, 통신, 실시간 표시를
중심으로 기본 HMI를 완성하는 것이 좋습니다.

이후 알람, 로깅, 트렌드, 레시피를 추가하고
마지막으로 SCADA와 MES 연계를 확장하면
중소 제조업에 적합한 실용적인 HMI 제품으로
발전시킬 수 있습니다.

반응형