# ZLAC8015D V4 RS485 슬레이브 ID 운용 가이드 ZLTECH ZLAC8015D V4 듀얼 드라이버의 RS485(Modbus RTU) 슬레이브 ID를 확인/변경하기 위한 파이썬 스크립트 모음. 프로토콜 세부 사항은 동봉된 `ZLAC8015D V4 Series RS485 Communication Version 1.06` 매뉴얼 기준. ## 사전 준비 ```bash python3 -m venv .venv ./.venv/bin/pip install -r requirements.txt # pymodbus + pyserial ``` - 통신 라이브러리로 `pymodbus`(ModbusSerialClient, RTU) 사용 - RS485-USB 어댑터로 드라이버와 연결 (A/B 라인, GND 공통) - 기본 통신 설정: Baud rate 115200, 8 data bit, No parity, Stop bit 1 - 드라이버 출고 시 기본 슬레이브 ID는 **1** - 실제 하드웨어 운용 테스트는 우분투 환경에서 진행 예정 (개발/문법 검증은 macOS에서 완료) ## 파일 구성 | 파일 | 역할 | |---|---| | `zltech_modbus.py` | pymodbus 기반 통신 공용 함수 (read/write register) | | `zltech_scan_ids.py` | 버스에 연결된 슬레이브 ID 스캔 | | `zltech_set_id.py` | 슬레이브 ID 변경 (EEPROM 저장 포함) | | `requirements.txt` | 의존 패키지 (pymodbus, pyserial) | ## 1. 슬레이브 ID 확인 (스캔) ```bash ./.venv/bin/python zltech_scan_ids.py --port /dev/tty.usbserial-XXXX --range 1 16 ``` - `--port`: 시리얼 포트 (Ubuntu: `/dev/ttyUSB0` 등, macOS: `/dev/tty.usbserial-XXXX`, Windows: `COM5` 등) - `--baud`: 기본값 115200 - `--range START END`: 스캔할 ID 범위 (기본 1~16) 응답한 ID 목록이 출력됨. ## 2. 슬레이브 ID 변경 (1과 2로 설정) ⚠️ **두 드라이버 모두 기본 ID가 1**이라, 동시에 버스에 연결하면 응답이 충돌합니다. **반드시 한 번에 하나씩만 연결**한 상태로 진행하세요. ### 순서 1. 드라이버 A만 연결 → 기본값 그대로 ID 1 유지 (변경 불필요) 2. 드라이버 A 전원 off, 분리 3. 드라이버 B만 연결 → ID를 2로 변경 ```bash ./.venv/bin/python zltech_set_id.py --port /dev/tty.usbserial-XXXX --old-id 1 --new-id 2 ``` 4. 드라이버 B 전원을 껐다 켜서(파워사이클) 변경 사항 완전 반영 5. 이제 드라이버 A(ID 1), B(ID 2)를 같은 버스에 함께 연결 6. 확인: ```bash ./.venv/bin/python zltech_scan_ids.py --port /dev/tty.usbserial-XXXX --range 1 2 ``` ID 1, 2 모두 응답하면 성공. ## 참고: 레지스터 주소 | 주소 | 이름 | 범위 | 비고 | |---|---|---|---| | `0x2001` | RS485 Custom Drive Node Number | 1~127 | 기본값 1 | | `0x2002` | RS485 custom communication baud rate | 1~6 (128000~9600bps) | 기본값 2 (115200bps) | | `0x2010` | RW 속성 파라미터 EEPROM 저장 | 0/1 | 1 = 저장 | 자세한 레지스터 목록은 동봉 매뉴얼의 "Address Directionary" 섹션 참고.