This application can also control a GW Instek PSS-3203 through an Agilent/Keysight 82357B USB/GPIB adapter.
Required PC setup:
- Install the 82357B driver.
- Install Keysight IO Libraries Suite.
- Open Keysight Connection Expert and confirm that the 82357B adapter is visible.
- Confirm that the PSS-3203 appears as a VISA resource such as
GPIB0::5::INSTR. - If PyVISA reports
Could not locate a VISA implementation, the Keysight/IVI VISA backend is not installed or not registered for the current Python process.
Deployment note for another PC:
- Copying only
PPS_Controller_SW.exeis usually not enough for GPIB control. - Install Keysight IO Libraries Suite on the target PC before running the program.
- Connect the 82357B adapter and confirm Windows recognizes the driver.
- Use Keysight Connection Expert to confirm the PSS-3203 appears as a VISA
resource such as
GPIB0::8::INSTR. - PyVISA is only the Python API layer. The actual VISA runtime and USB-GPIB adapter driver must be installed on the PC that runs the application.
- If the VISA resource is not visible in Connection Expert,
Scan VISAin this application will not be able to find the PSS-3203 either.
Safe live test:
python tools\gpib_scan.py
python tools\pss3203_live_test.py --resource GPIB0::5::INSTR --voltage 5.0 --current 0.1 --ovp 6.0 --output-test no--output-test defaults to no. Use --output-test yes only when the connected
load is known and the 5.0 V / 0.1 A condition is safe.
In the GUI, select GW Instek PSS-3203 via GPIB, scan or enter the VISA resource,
connect, then run Identify before Output ON is enabled. The program attempts
Output OFF on disconnect and exit.
Troubleshooting checklist:
- 82357B is visible in Windows Device Manager and Keysight Connection Expert.
- The GPIB cable is firmly connected.
- The PSS-3203 GPIB address matches the VISA resource.
- Keysight VISA is installed; PyVISA alone is not a VISA backend.
- Timeout is long enough for the instrument.
- Output state is OFF before starting a test.
Additional Korean documents are maintained under docs/.
docs/help_ko.md: 설치 및 사용 메뉴얼docs/development_guide_ko.md: 다른 파워서플라이 추가 개발 가이드docs/revision_notes.md: 리비전 노트
The application name and standalone build target are now model-neutral:
PPS Controller SW
PPS_Controller_SW.exe
Windows PC에서 GW Instek PSP-603 Programmable DC Power Supply를 제어하는 Python GUI 프로그램입니다. PySide6 화면에서 COM 포트 연결, 상태 읽기, 전압 설정, 전류 제한 설정, Output ON/OFF, 1초 주기 모니터링, CSV 저장을 할 수 있습니다.
psp603_ui_control/
app.py
requirements.txt
drivers/
psp603_driver.py
gui/
main_window.py
services/
monitor_worker.py
log_manager.py
data/
logs/
tests/
test_parser.py
README.md
현재 저장소 루트에서 바로 python app.py로 실행하도록 구성되어 있습니다.
Python 3.12 이상을 설치합니다.
python --version
python -m venv .venv
.\.venv\Scripts\Activate.ps1
python -m pip install --upgrade pip
pip install -r requirements.txtpython app.pyPySide6 또는 pyserial이 설치되어 있지 않으면 pip install -r requirements.txt를 먼저 실행하세요.
- PSP-603의 RS-232C 포트를 PC 또는 USB-RS232 어댑터에 연결합니다.
- 장비 통신 조건을 확인합니다.
- Baud rate: 2400
- Data bit: 8
- Parity: None
- Stop bit: 1
- Flow control: None
- Command terminator: CR
- Return terminator: CRLF 또는 CRCRLF
- 매뉴얼은 PC 연결에
GTL-232Acustom RS-232C cable 사용을 요구합니다. - 프로그램에서 COM Port를 선택하고 Connect를 누릅니다.
매뉴얼의 rear DB-9 pin assignment:
- Pin 2: RxD
- Pin 3: TxD
- Pin 4: +12V
- Pin 5: GND
- Pin 1, 6, 7, 8, 9: No connection
매뉴얼 주의사항: DTR은 소프트웨어로 미리 설정해야 하며, 그렇지 않으면 PSP 쪽에 12V가 출력되지 않아 readback response가 없을 수 있습니다. 이 프로그램은 기본 연결값을 DTR ON, RTS OFF, CR로 둡니다.
Windows 장치 관리자에서 "포트(COM & LPT)" 항목을 확인합니다. USB-RS232 어댑터를 연결하면 보통 COM3, COM4 같은 이름으로 표시됩니다.
프로그램의 Refresh 버튼을 누르면 현재 사용 가능한 COM 포트 목록을 다시 검색합니다.
- 장비와 PC를 RS-232C로 연결합니다.
- 프로그램을 실행합니다.
- COM Port를 선택합니다.
- Connect를 누릅니다.
- 연결 후 자동으로
L명령 상태 읽기를 시도합니다. - Voltage set 또는 Current limit 값을 입력하고 설정 버튼을 누릅니다.
- Output ON을 누르면 확인창이 표시됩니다.
- Monitoring Start를 누르면 지정 주기로 상태를 읽고 테이블과 그래프에 표시합니다.
- Save CSV를 눌러
data/logs폴더에 로그를 저장합니다.
- COM Port 검색
- Connect / Disconnect
L명령 상태 읽기- 현재 전압, 전류, 전력 표시
- 전압 설정
SV - 전류 제한 설정
SI - 전압 제한
SU, 전력 제한SP - Output ON/OFF
KOE,KOD - 1~10초 주기 모니터링
- 최근 100개 데이터 그래프 표시
- 로그 테이블 표시
- CSV 저장
- Output ON/OFF 반복 시퀀스
- 명령 실행 로그 및 명령 CSV 저장
현재 COM4에 연결된 PSP-603은 PC에서 보낸 설정 명령을 정상 수신하는 것이 확인되었습니다.
확인된 제어 명령:
KOD Output OFF
SV 01.00 전압 설정 1.00 V
SI 0.10 전류 제한 0.10 A
장비 전면 패널에서 위 설정이 정상 반영되었습니다. 따라서 PC -> PSP-603 송신 경로는 동작합니다.
다만 PSP-603 -> PC readback 응답은 아직 확인되지 않았습니다. F, V, A, W, L query 모두 응답 payload가 없었습니다. 이 경우 GUI의 설정값 표시는 장비에서 읽어온 실제값이 아니라 “명령을 보낸 setpoint”로 표시될 수 있습니다.
모니터링, 현재 전압/전류/전력 readback, CSV 자동 측정 로그는 장비 -> PC 수신 경로가 정상화되어야 완전하게 사용할 수 있습니다.
Output Sequence 영역에서 Output ON/OFF 반복 시험을 실행할 수 있습니다.
입력 항목:
Cycles: ON/OFF 반복 횟수ON time: Output ON 유지 시간OFF time: Output OFF 유지 시간
사용 순서:
- COM Port를 선택하고 Connect를 누릅니다.
- 필요한 전압/전류 제한을 먼저 설정합니다.
Cycles,ON time,OFF time을 입력합니다.Sequence Start를 누릅니다.- 확인창에서 조건을 확인한 뒤 Yes를 누릅니다.
- 중간에 멈추려면
Sequence Stop을 누릅니다.
시퀀스는 별도 thread에서 실행되므로 GUI는 멈추지 않습니다. 각 ON/OFF 명령은 Command Log 테이블에 기록됩니다.
모든 주요 제어 명령은 Command Log에 남습니다.
저장 컬럼:
timestampcommandactionrequested_stateverification_statusraw_responsemessage
verification_status 의미:
verified: 명령 후 readback을 수행했고, 요청한 상태와 장비 응답이 일치함sent_unverified: 명령은 송신했지만 장비 readback 응답이 없어 실제 상태를 PC에서 확인하지 못함verify_mismatch: readback은 되었지만 요청 상태와 응답 상태가 다름failed: 명령 송신 중 오류 발생sent: readback 검증 대상이 아닌 일반 설정 명령 송신 완료
현재 확인된 장비 연결 상태에서는 설정 명령이 실제 장비 패널에 반영되지만 readback 응답이 없습니다. 따라서 Output ON/OFF 시퀀스 로그는 대부분 sent_unverified로 남을 수 있습니다. 이 상태는 “명령을 보냈으나 PC가 장비 응답으로 실제 동작을 확인하지 못했다”는 뜻입니다.
Command Log는 Save Command CSV 버튼으로 저장합니다.
매뉴얼과 코드, 실제 장비 테스트를 대조한 결과 현재 상태 읽기 실패의 1순위 원인은 소프트웨어 설정이 아니라 PSP-603 TXD -> PC RXD 수신 경로 문제입니다.
근거:
- 매뉴얼의 통신 조건은
2400 baud,8 data bit,parity none,1 stop bit,flow control none입니다. 드라이버도 동일하게 설정합니다. - 매뉴얼의 query 명령은
L<CR>,V<CR>,A<CR>,W<CR>,F<CR>형식입니다. 프로그램도 같은 형식으로 송신합니다. - 응답 종료 문자는
CRLF또는CRCRLF일 수 있습니다. 프로그램은 두 형식을 모두 정리해서 파싱합니다. - 실제 장비에서
SV 01.00,SI 0.10,KOD명령은 정상 반영되었습니다. 즉PC TXD -> PSP-603 RXD송신 경로는 동작합니다. - 하지만
F,V,A,W,Lquery는 10초 timeout으로 기다려도0 byte응답입니다. 즉 장비 응답이 깨진 것이 아니라 PC로 아무 바이트도 들어오지 않습니다.
따라서 우선 확인할 하드웨어 포인트:
- PSP-603 DB-9 pin 3
TxD가 USB-to-Serial 어댑터의RxD로 연결되어 있는지 확인합니다. - PSP-603 DB-9 pin 2
RxD가 USB-to-Serial 어댑터의TxD로 연결되어 있는지 확인합니다. - PSP-603 DB-9 pin 5
GND와 어댑터 GND가 연결되어 있는지 확인합니다. - PSP-603 DB-9 pin 4
+12V/PC DTR 관련 배선이 매뉴얼의 GTL-232A pinout과 맞는지 확인합니다. - USB-to-Serial 어댑터의 RXD 핀이 정상인지 loopback 테스트로 확인합니다.
일반 DB-9 straight 케이블이나 일부 null modem 케이블은 송신 한 방향만 우연히 동작하고 readback은 안 될 수 있습니다. PSP-603은 매뉴얼에서 GTL-232A custom RS-232C cable only를 요구합니다.
- Voltage: 0~60 V 범위 제한
- Current limit: 0~3.5 A 범위 제한
- Power limit: 0~200 W 범위 제한
- Output ON 전 사용자 확인창 표시
- 연결 해제 시 모니터링 자동 중지
- 종료 시 Output OFF 여부 확인
- 통신 실패 시 경고창 표시
이 저장소에서 실제 COM4에 대해 안전한 읽기 명령 L, V, A, W, U, I, P, F를 테스트했을 때 포트 open은 성공했지만 응답 payload가 없었습니다. 매뉴얼 기준 기본값인 2400 8N1, DTR ON, RTS OFF, CR에서도 같은 결과였습니다. 프로그램에서는 이 경우 다음 메시지를 표시합니다.
No response from PSP-603. Check COM port, RS-232 cable type, instrument remote/communication setting, and DTR.
확인 순서:
- RS-232 케이블이
GTL-232A또는 동일한 custom pinout인지 확인합니다. 일반 DB-9 straight 케이블이면 동작하지 않을 수 있습니다. - USB-RS232 어댑터의 TX/RX/DTR/GND 배선이 매뉴얼 pinout과 맞는지 확인합니다.
- PSP-603 전면 패널 또는 설정 메뉴에서 RS-232/Remote/통신 기능이 활성화되어 있는지 확인합니다.
- 장비 통신 조건이 2400, 8 data bit, no parity, 1 stop bit, flow control none인지 확인합니다.
- 다른 터미널 프로그램이
COM4를 점유하고 있지 않은지 확인합니다. - GUI에서
DTR은 켠 상태로 연결하고, 필요 시CRLFterminator도 선택해 재연결해 봅니다.
안전한 진단 스크립트도 포함되어 있습니다. 이 스크립트는 읽기 명령만 보내며 출력 ON/OFF나 설정 변경을 하지 않습니다.
python tools\serial_diagnostic.py --port COM4- COM 포트가 맞는지 확인하세요.
- RS-232C 케이블 또는 USB-RS232 어댑터 방향과 드라이버를 확인하세요.
- 장비 통신 속도가 2400 baud인지 확인하세요.
- USB-RS232 드라이버가 설치되어 있는지 확인하세요.
- 장치 관리자에서 COM 포트가 보이는지 확인하세요.
- 프로그램에서 Refresh를 누르세요.
- 다른 프로그램이 같은 COM 포트를 사용 중일 수 있습니다.
- 기존 터미널 프로그램, 장비 제어 프로그램을 종료한 뒤 다시 연결하세요.
일부 PSP-603 연결에서는 DTR 설정이 필요할 수 있습니다. 이 프로그램은 연결 직후 dtr = True를 설정합니다. 그래도 응답이 없으면 USB-RS232 어댑터 또는 케이블 결선을 확인하세요.
- 장비가 켜져 있는지 확인하세요.
- 케이블 결선과 COM 포트를 확인하세요.
- 장비가 느리게 응답할 수 있으므로 반복 클릭하지 말고 잠시 기다리세요.
실제 장비 없이 parser 테스트를 실행할 수 있습니다.
pytestPyInstaller로 단일 exe 파일을 만들 수 있습니다.
pyinstaller --onefile --windowed app.py생성된 실행 파일은 dist 폴더에 만들어집니다.