Trouble shooting

Seungyun Lee·2026년 4월 26일

Lab

목록 보기
5/6

시스템 통제의 4대 핵심 계층 (Macro to Micro)

1. 전체 공정 지휘 : run_chi_experiments

  • 역할: "전극 집고 -> 씻고 -> EIS 측정하고 -> 도금해라"라는 전체 컨베이어 벨트의 타임라인을 쥐고 있는 메인 상태 머신입니다.

  • 통제권: 전체 실험의 흐름을 통제합니다. 특정 검사 단계를 생략하거나 순서를 뒤바꿀 때 (예: "시간 없으니 사전 EIS 검사는 빼고 바로 도금(CP)으로 넘어가") 조작해야 하는 최상위 스위치입니다.

2. 개별 행동 제어: move_to_tube & chi

  • 역할: 최상위 모듈의 호출을 받아 실제 기계 장치를 구동하는 하위 구동부입니다.

  • 통제권: 특정 순간의 단위 동작을 통제합니다. 로봇 팔의 세부적인 동선을 지시하거나 주사기를 조작할 때(move_to_tube), 또는 전위차계에 가할 전압/전류의 구체적인 크기와 시간 레시피를 바꿀 때(chi) 조작합니다.

3. 물리적 공간 맵핑: 좌표계 (Offset & Pitch)

  • 역할: 로봇 모터가 움직여야 할 목적지를 정량적인 수치로 변환해 주는 물리적 지도입니다.

  • 통제권: 하드웨어의 배치(Layout)를 통제합니다. 비커 랙을 실수로 건드려 위치가 틀어졌거나, 새로운 규격의 비커를 가져왔을 때 로봇 팔의 영점(Calibration)을 다시 잡기 위해 조작합니다.

4. 비상 생존 및 복구: reinit & kill

  • 역할: 하드웨어나 통신망이 물리적인 한계로 뻗었을 때 시스템을 강제로 살려내는 심폐소생술입니다.

  • 통제권: 예외 상황(Exception)을 통제합니다. 장비가 무한 대기(Deadlock)에 빠지거나 윈도우 COM 포트가 꼬였을 때, 사람의 개입 없이 코드가 스스로 프로세스를 셧다운 시키고 재연결하게 만들기 위해 조작합니다.


Trouble Shooting

도금 시간이나 검사 전압 범위를 수정하고 싶다

  • 조작할 곳: chi(case, filename, ...) 함수 내부의 각 case 블록.

  • 방법: * 도금 시간을 늘리려면 case 1에서 tc = 1200(초)를 원하는 시간으로 늘립니다.

  • 성능 평가 전압 범위를 바꾸려면 case 2나 case 4에서 Ev1, Ev2 값을 수정합니다.

로봇 팔을 특정 비커나 허공으로 바로 빼내고 싶다

  • 조작할 곳: 스크립트 맨 아래 testrun(robot_id) 함수 또는 별도의 디버깅 스크립트 작성.

  • 방법: * 전체 실험 루프(RobotControlThread)를 주석 처리하고, move_to_tube(1, robot, x좌표, y좌표, 0, 0) 한 줄만 작성해서 실행하면 로봇이 딱 그 위치로만 이동합니다. 하드웨어 캘리브레이션을 검증할 때 필수적인 방법입니다.

실험 레시피 변경

  • 새로운 혼합 비율을 테스트하라는 지시가 내려왔을 때 수정하는 유일한 곳입니다.
  • 수정 위치: RobotControlThread 클래스 내부의 ratios 변수

하드웨어 좌표 영점 조절

  • 수정 위치 1 (기준점): move_to_tube 함수 내부의 좌표 오프셋 수식

    • 66.5와 45.5로 적혀 있는 절대 원점(Origin) 숫자를, 로봇을 수동 조작하여 새로 읽어낸 기준점 좌표로 덮어씁니다.
  • 수정 위치 2 (높낮이): move_to_tube 호출 시 파라미터로 넘기는 z_height 및 z_down

    • 로봇이 비커 바닥을 들이받으면 이 마이너스 값을 더 작게(위로) 수정해야 합니다.
  • 수정 위치 3 (작업 순서): electrode_positions.txt, working_positions.txt 파일

    • 랙에 꽂힌 쌩 철망의 순서나 비커의 위치를 재배치할 때, 텍스트 파일 안의 [{"x":0, "y":0}, ...] 배열 순서를 바꿔줍니다.

화학 측정 파라미터 튜닝 (어떻게 전기를 쏠 것인가)

도금 시간을 늘리거나, 성능 측정 전압의 범위를 변경해야 할 때 수정합니다.

  • 수정 위치: chi 함수 내부의 case 1 ~ case 8 블록 및 타임아웃 세팅
  • 수정 방법: 각 레시피 블록 안에 있는 상수들을 요구사항에 맞게 변경합니다. 장비가 자주 뻗는다면 timeouts 배열의 시간(초)을 넉넉하게 늘려줍니다.
if case == 1:
    # Change 'tc' to adjust the electrodeposition time (in seconds)
    tc = 1200 
elif case == 2:
    # Adjust Ev1 and Ev2 to change the voltage sweep range for CV
    Ev1 = 0.3
    Ev2 = 1.2

공정 생략 및 AI 비상 우회 (무엇을 건너뛸 것인가)

시간 단축을 위해 불필요한 검사를 빼거나, 랩실 인터넷이 끊겨서 AI(GPT)가 판독 에러를 뿜으며 시스템을 멈춰 세울 때 응급조치하는 곳입니다.

수정 위치: run_chi_experiments 내부의 메인 루프

수정 방법: * 특정 공정을 빼고 싶다면 해당 move_to_tube(..., chi_case=...) 줄의 맨 앞에 #을 붙여 주석 처리합니다.

AI 통신 장애 시, AI 판독 함수(analyzer.analyze_...)를 주석 처리하고 변수에 1(합격)을 강제 할당하여 무조건 통과시킵니다.

# Bypass AI inspection during network errors and force a 'Pass' decision
# cp_decision = analyzer.analyze_cp(...) 
cp_decision = {"decision": 1}
profile
Design Verification engineer

0개의 댓글