01. 실습 환경 준비
이 트랙은 실제 로봇 없이 PC 한 대로 HIWIN 산업용 로봇 통신을 재현합니다. 첫 편에서는 Python·pymodbus·pyserial을 설치하고, 대형 시뮬레이터를 모아 둔 _shared/ 공유 라이브러리 구조를 이해하며, 환경 자가진단 스크립트로 "준비 완료"를 확인합니다. 여기서 한 번만 제대로 맞춰 두면 이후 8편을 막힘 없이 진행할 수 있습니다.
이 강의에서 배우는 것
- 1Python · pymodbus · pyserial을 설치하고 버전을 확인한다
- 2각 편의 main.py가 _shared/ 공유 모듈을 불러오는 부트스트랩 구조를 이해한다
- 3실습 포트(로봇 1502 / 그리퍼 1503 / 비전 6000)와 502 회피 이유를 설명한다
- 4환경 자가진단 스크립트를 실행해 "통과"를 확인한다
소개
이 트랙은 HIWIN 로봇 통신 매뉴얼을 기반으로 한 **실습 중심 9편** 강좌입니다. 로봇·PLC·그리퍼·비전 같은 실장비 없이 **PC 한 대**로 전 과정을 따라할 수 있도록, 대형 시뮬레이터를 PC 프로그램으로 제공합니다. 대상은 자동화 엔지니어(프로그래밍 기초 보유, 산업 통신·Modbus는 처음)입니다.
핵심 개념
1) 무엇을 시뮬레이터로 대체하나
| 실제 장비 | 본 트랙의 대체 |
|---|---|
| 로봇(Modbus 슬레이브) | _shared/robot_server_sim.py |
| XEG 전동 그리퍼 | _shared/gripper_sim.py |
| 상위 PLC/마스터 | _shared/modbus_master.py |
| 비전/상위 시스템(TCP) | _shared/tcp_echo_server.py |
| RS-232 케이블 | com0com 가상 COM 포트(04편) |
2) _shared/ 공유 라이브러리 & 부트스트랩
대형 시뮬레이터를 편마다 복제하지 않고 lecture/_shared/ 에 한 번만 둡니다. 시뮬레이터는 별도 터미널에서 standalone 으로 띄워 TCP로 접속하고, word_tools·modbus_master 같은 헬퍼는 import 합니다. 편 파일은 깊이 들어가 있어 상위로 올라가며 _shared/ 를 탐색합니다.
import os, sys
_d = os.path.dirname(os.path.abspath(__file__))
while _d != os.path.dirname(_d) and not os.path.isdir(os.path.join(_d, "_shared")):
_d = os.path.dirname(_d)
sys.path.insert(0, os.path.join(_d, "_shared"))3) 실습 포트와 502 회피
| 역할 | 시뮬레이터 | 실습 포트 | 실제 |
|---|---|---|---|
| 로봇 | robot_server_sim.py | 1502 | 502 |
| 그리퍼 | gripper_sim.py | 1503 | 502 |
| 비전 | tcp_echo_server.py | 6000 | 임의 |
Windows에서 502 같은 1024 미만 포트는 관리자 권한이 필요할 수 있어 실습은 1502/1503을 씁니다.
핵심 예제
환경 자가진단: Python 버전·의존성·공유 모듈 import 와 변환값을 한 번에 점검합니다.
from word_tools import split_word, combine_word, ieee754_encode
a = split_word(90000) # -> (24464, 1)
assert combine_word(*a) == 90000
assert ieee754_encode(10.5) == 1093140480
print("환경 점검 통과 ✅")# 의존성 설치 (최초 1회)
cd lecture/_shared
python -m pip install -r requirements.txt
set PYTHONUTF8=1 # PowerShell: $env:PYTHONUTF8=1 (한글 깨짐 방지)
cd ../01_intro/01_setup
python src/setup_check/main.py # 마지막 줄 "환경 점검 통과 ✅" 면 준비 완료자주 하는 실수
Q. ModuleNotFoundError: No module named 'pymodbus'
A. 의존성 미설치 또는 다른 Python에 설치된 경우입니다. `python -m pip install -r ../../_shared/requirements.txt` 로 현재 Python 에 설치하세요.
Q. 한글이 ????나 깨진 문자로 나와요.
A. Windows 콘솔 기본 인코딩(cp949) 문제입니다. `set PYTHONUTF8=1`(PowerShell은 `$env:PYTHONUTF8=1`) 후 실행하세요.
Q. from word_tools import ... 에서 ModuleNotFoundError.
A. _shared/ 탐색 부트스트랩이 빠졌거나 파일을 _shared 밖으로 옮긴 경우입니다. 부트스트랩 코드가 main.py 최상단에 있는지 확인하세요.
정리
- PC만으로 로봇·그리퍼·비전·마스터를 시뮬레이션할 준비를 마쳤다
- 공유 코드는 _shared/ 에 모으고 각 편은 부트스트랩으로 불러온다
- 실습 포트는 1502(로봇)/1503(그리퍼)/6000(비전)을 쓴다
- 콘솔 한글은 PYTHONUTF8=1 로 보호한다
과제
- python src/setup_check/main.py 를 실행해 "환경 점검 통과 ✅" 와 종료코드 0 을 확인
- split_word(90000) 이 (24464, 1) 인 이유를 65536 기준으로 설명
- ieee754_encode(10.5) 와 combine_word 왕복이 맞는지 직접 검산