Table of Contents

HMI Programming: Modular Pi + CFNET I/O

본 장에서는 Modular PiCFNET I/O 모듈(CFDI, CFDO 등)을 활용하여 PyQt 기반의 HMI(Human-Machine Interface) 프로그램을 구현하는 표준 방법을 설명합니다.

1. 시스템 아키텍처 및 동작 방식

HMI 시스템은 사용자 인터페이스(UI)와 실제 하드웨어 제어 로직이 상호작용하는 구조로 동작합니다.

동작 흐름: UI 위젯 동작 ↔ Python 프로그램(main.py) 로직 ↔ CFNET I/O 제어(CFRASP.py)

2. 프로젝트 필수 구성 요소

HMI 프로젝트를 실행하기 위해서는 Modular Pi의 동일한 프로젝트 폴더 내에 아래 3가지 필수 파일이 포함되어야 합니다.

파일명 역할 상세 설명
main.py 제어 로직 UI 로드, 이벤트 처리, 하드웨어 I/O 통신 실행
.ui 파일 화면 설계 Qt Designer에서 제작된 위젯 배치 및 객체 이름 정의
CFRASP.py 라이브러리 CFNET I/O(DI/DO/AD/DA) 제어를 위한 전용 함수 제공

3. 주요 구현 내용

1) UI 위젯 객체 연결 (Front-end)

* UI Form 구성: Qt Designer에서 각종 위젯을 드래그 앤 드롭 방식으로 배치하여 디자인합니다. * 객체 이름 정의: 버튼(Button), 라벨(Label) 등 각 요소에 고유한 Object Name을 부여하여 Python 코드에서 호출할 수 있도록 합니다.

2) Python 프로그램 로직 (Back-end)

main.py는 전체 시스템의 컨트롤러 역할을 수행합니다.

* 실시간 모니터링: QTimer를 사용하여 300ms 주기로 CFDI 입력 값을 읽어 UI에 실시간 반영합니다. * 하드웨어 제어: 사용자가 UI 버튼을 누르면 CFDO의 특정 포트로 ON/OFF 출력 신호를 전송합니다. * 클래스 구조: MyWindow 클래스가 QMainWindow를 상속받아 버튼 클릭 이벤트, 입출력 모니터링, UI 갱신 로직을 통합 관리합니다.

4. 관련 리소스

* 동영상 가이드:

* 다운로드: (다운로드) HMI 패키지 (CFRASP.py, main.py, .ui, .img)


Python을 이용한 CFNET I/O 개발 가이드로 돌아가기