CH09문제 해결과 유지보수
압력 · 피크 · 베이스라인 이상을 증상별로 진단하고, 일상 점검 · 장비 종료 · 보관 절차까지 익혀 실물 장비 사용에 대비합니다.
학습 목표#
- 압력이 높을 때 유로를 뒤에서부터 끊어 보며 막힌 구간(플로셀 · 컬럼 · 열교환기 · 샘플러 · 퍼지 밸브)을 찾고, 압력이 낮거나 출렁일 때 퍼지 밸브 · 누설 · 기포 · 체크 밸브를 순서대로 확인할 수 있습니다.
- 피크의 꼬리 끌림 · 앞 끌림 · 갈라짐 · 넓어짐, 머무름 시간 변화, 베이스라인의 드리프트 · 노이즈 · 고스트 피크를 보고 가장 가능성 높은 원인을 두세 개로 좁힐 수 있습니다.
- 시뮬레이터 고장 시나리오 모드에서 관찰 → 가설 → 확인 → 조치 → 재검증 순서로 무작위 고장 3개를 진단하고, 정상 크로마토그램으로 복구한 근거를 기록할 수 있습니다.
- 분석 전 점검, 분석 후 컬럼 세척 · 보관, 램프 끄기 → 유속 낮추기 → 펌프 정지 → 온도조절기 끄기 종료 순서를 수행하고, 소모품 교체 시점을 카운터로 판단할 수 있습니다.
- 장비 사용 기록(logbook) · 이상 보고 · 실물 실습 안전 수칙을 정리해, 실물 1260 을 처음 쓰기 전에 확인할 나만의 점검 체크리스트를 만들 수 있습니다.
이론#
1교시 — 증상별 고장 진단#
이 단원에서 할 일#
ch03 ~ ch08 에서는 장비가 "정상" 이라는 전제로 조건을 바꾸고 결과를 읽었습니다. 실제 분석실에서는 그 전제가 자주 깨집니다. 압력이 평소보다 높거나, 피크가 갈라지거나, 어제와 RT 가 다릅니다. 이번 단원에서는 이런 증상에서 출발해 원인 부품을 찾아가는 방법을 익힙니다.
- 비교할 정상 기준값을 정합니다(ch06 · ch07 의 카페인 메서드).
- 증상을 압력 → 피크 모양 → 머무름 → 베이스라인 네 갈래로 나누고, 갈래마다 원인 후보와 확인 방법을 정리합니다.
- 시뮬레이터 고장 시나리오 모드에서 무작위 고장 3개를 진단 5단계로 풀고 정상으로 복구합니다.
3D 장비 모델(assets/robot/robot.json)은 강좌 진행에 맞춰 추가됩니다. 차시 머리에 3D 뷰어 버튼이 보이지 않으면 아직 준비 중입니다. 모델이 준비되면 펌프 출구 → 샘플러 → 열교환기 → 컬럼 → 검출기로 이어지는 캐필러리를 3D 로 따라가며, 이번 단원의 끊는 지점 ① ~ ⑤ 가 실제로 어느 피팅인지 확인해 봅니다. 그 전에는 아래 Playground 계산 실습으로 같은 판단을 숫자로 연습합니다.
진단의 출발점 — 정상 기준값#
"압력이 높다" 는 말은 무엇보다 높은지가 있어야 뜻이 있습니다. 이 강좌는 ch06 · ch07 의 기준 메서드를 정상 기준으로 씁니다.
| 항목 | 정상 기준값 | 어디서 읽나 | 출처 |
|---|---|---|---|
| 메서드 | PRAC_ISO_W70M30_v01 — C18 150 × 4.6 mm, 5 µm · 물:메탄올 70:30 · 1.0 mL/min · 30 °C · 273 nm | <b>Method › Open Method</b> | ch06 |
| 압력 | 118 bar, 30 s 창 리플 RSD 약 0.3 % | 펌프 제어 E 영역 | ch03 · ch08 |
| 카페인(STD-CAF-50) | RT 5.16 min, w½ 0.161 min, 대칭도 T 1.07, N 약 5700 | 데이터 분석 · SST 보고서 | ch06 · ch07 |
| 불감 시간 t₀ | 1.62 min | ch04 계산 | ch04 |
| 베이스라인 (273 nm) | 노이즈 0.1 mAU 이하, 드리프트 2 mAU/h 이하 | 검출기 설정 D 영역 | ch04 |
진단의 절반은 "평소 값" 이 정합니다. 실물 장비에서는 같은 메서드 · 같은 컬럼으로 매일 처음 평형한 뒤의 압력 · 램프 사용 시간 · SST 결과를 장비 사용 기록(2교시)에 남깁니다. 기록이 쌓이면 "어제보다 15 bar 높다" 처럼 작은 변화도 일찍 알아챕니다.
고장 시나리오 모드 화면#
모드 › 고장 시나리오(Ctrl+Shift+T)는 시뮬레이터 장비에 고장을 하나 숨겨 두고, 학생이 증상만 보고 원인을 찾게 하는 화면입니다. 원인 이름은 재검증을 통과할 때까지 보이지 않습니다.| 영역 | 하는 일 |
|---|---|
| A 증상 카드 | 문제 번호와 "사용자 신고" 문장, 비교할 기준 메서드와 기준값. 원인은 숨겨져 있음 |
| B 진단 도구 | 구간 분리 시험 · 누설 점검 · 블랭크 주입 · 램프 강도 시험 · 퍼지 / 체크 밸브 점검 · 부품 교체 / 세척. 도구를 쓸 때마다 C 에 한 줄이 기록됨 |
| C 진단 기록 | ① 관찰 ② 가설 ③ 확인 ④ 조치 ⑤ 재검증 칸. 앞 칸을 비우면 다음 칸이 잠김 |
| D 크로마토그램 비교 | 정상 기준(점선)과 지금 결과(실선)를 겹쳐 그림 |
| E 압력 · 신호 기록 | 시간에 따른 압력 · 검출기 신호. 구간 분리 시험 때 끊은 시점이 표시됨 |
| F 판정 | 재검증 기준(압력 ± 5 %, RT ± 2 %, T 0.9 ~ 1.5, w½ 기준의 1.2배 이하, 노이즈 ≤ 0.1 mAU, 드리프트 ≤ 2 mAU/h, 누설 없음)을 모두 통과하면 ✔ 복구 확인 |
진단 5단계 — 관찰 → 가설 → 확인 → 조치 → 재검증#
| 단계 | 하는 일 | 예 (압력 208 bar) |
|---|---|---|
| ① 관찰 | 숫자로 적습니다. "이상함" 이 아니라 "기준보다 몇 bar · 몇 % 다름" | 118 → 208 bar(+76 %), 리플 정상, RT 정상 |
| ② 가설 | 가능성이 큰 원인 두세 개를 적습니다 | 컬럼 입구 프릿 막힘 / 샘플러 막힘 / 유속 · 조성 설정 오류 |
| ③ 확인 | 가설을 하나씩 가르는 시험을 합니다. 한 번에 한 가지만 바꿉니다 | 메서드 설정 확인 → 구간 분리 시험 |
| ④ 조치 | 확인된 원인만 고칩니다. 부품을 바꿨으면 무엇을 바꿨는지 기록 | 가드 카트리지 교체 |
| ⑤ 재검증 | 기준 메서드로 다시 평형 · 주입해 기준값과 비교합니다 | 압력 119 bar, RT 5.17, T 1.08 → 통과 |
증상을 보자마자 "컬럼이 죽었다" 며 컬럼을 바꾸면, 원인이 샘플러였을 때 새 컬럼만 버리게 됩니다. 가장 싸고 빠르고 되돌릴 수 있는 확인부터 합니다: 설정(메서드 · 조성 · 유속) → 용매(잔량 · 병 라벨) → 눈으로 보는 누설 → 구간 분리 → 부품 교체.
압력이 높을 때 — 뒤에서부터 끊어 보기#
펌프가 표시하는 압력은 펌프 출구부터 폐액까지 모든 저항의 합입니다. 그래서 압력만 보고는 어디가 막혔는지 모릅니다. 유로를 검출기 쪽(뒤)부터 한 곳씩 끊어 그 뒤의 저항을 빼 가며 압력을 읽으면, 압력이 크게 떨어지는 구간이 막힌 곳입니다.
| 끊는 곳 | 그때 빠지는 구간 | 정상 압력 (bar) | 정상 구간 강하 (bar) |
|---|---|---|---|
| (전체 연결) | — | 118 | — |
| ① 검출기 입구 | 플로셀 · 폐액 라인 | 117 | 1 |
| ② 컬럼 출구 | 컬럼 출구 ~ 검출기 캐필러리 | 116 | 1 |
| ③ 컬럼 입구 (컬럼 빼기) | 컬럼 | 11 | 105 |
| ④ 샘플러 출구 | 열교환기 · 캐필러리 | 8 | 3 |
| ⑤ 펌프 출구 | 샘플러(니들 시트 · 루프 · 주입 밸브) · 펌프 ~ 샘플러 캐필러리 | 2 | 6 |
| — | 퍼지 밸브 · PTFE 프릿 | — | 2 |
값은 이 시뮬레이터의 기준 조건(물:메탄올 70:30, 1.0 mL/min, 30 °C) 값입니다. 실물은 캐필러리 길이 · 내경, 컬럼에 따라 다르므로 자기 장비에서 정상일 때 한 번 재 두는 것이 가장 좋은 기준입니다.
- 각 구간의 강하 = (그 지점에서 끊었을 때 압력) − (한 칸 앞, 펌프 쪽 지점에서 끊었을 때 압력)입니다. 정상 강하보다 10 bar 이상 · 20 % 이상 큰 구간을 막힘으로 봅니다.
- 컬럼(③)이 원인이면: 가드 컬럼 · 인라인 필터가 있으면 그것부터 바꿉니다. 컬럼 자체는 제조사가 허용하는 경우에만 검출기에서 떼고 역방향 저유속 세척을 해 보고, 그래도 높으면 교체합니다(컬럼 사용 설명서 확인).
- 샘플러(⑤ 구간)가 원인이면: 니들 시트 · 니들이 흔한 원인입니다. 시료 여과(ch06)를 빠뜨렸는지도 확인합니다.
- 퍼지 밸브 프릿이 원인이면: 퍼지 밸브를 연 상태에서도 압력이 수 bar 이상 나옵니다(2교시 소모품 표).
- 완충액을 쓴 뒤라면 석출을 먼저 의심하고, 끊기 전에 염이 없는 물로 저유속 세척을 해 봅니다(ch03 오류 6번).
검출기 플로셀은 컬럼보다 훨씬 낮은 압력만 견딥니다(VWD 표준 플로셀은 수십 bar 수준 — 모델별 매뉴얼 확인). 폐액 라인이 꺾이거나 막혀 ① 구간 강하가 커지면 플로셀 창이 깨질 수 있습니다. ① 구간 강하가 정상보다 크면 즉시 유속을 낮추고 폐액 라인부터 확인합니다. 또 컬럼을 역방향으로 씻을 때는 컬럼 출구를 검출기에 연결하지 않습니다(입자가 플로셀로 감).
따라하기 — 구간 분리 시험#
- <b>파일 › 시나리오 불러오기</b>(<kbd>Ctrl</kbd>+<kbd>O</kbd>)에서
CH09_TROUBLE을 엽니다. 기준 메서드가 장비에 보내져 있고, 압력이 208 bar 근처입니다. - 먼저 설정을 확인합니다. 펌프 제어(<kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>F</kbd>)의 유속
1.000· 조성70 / 30, 컬럼 · 온도(<kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>H</kbd>)의30.0 °C가 메서드와 같은지 봅니다. 같으면 C 영역 ① 관찰 · ② 가설 칸을 채웁니다. - B 영역에서 구간 분리 시험을 고릅니다. 3D 뷰에 끊는 지점 ① ~ ⑤ 가 번호로 표시됩니다.
- ① 을 클릭합니다. 시뮬레이터가 펌프를 끄고(<kbd>F9</kbd> 와 같음) 압력이 0 이 된 뒤 피팅을 풀어 폐액 비커로 돌리고, 같은 유속으로 다시 켭니다. 압력이 안정되면 E 영역에 값이 찍힙니다.
- ② → ③ → ④ → ⑤ 순서로 같은 방법을 반복합니다. 압력이 정상 표와 비슷해지는 순간 멈춰도 됩니다. 그 바로 앞 구간이 막힌 곳입니다.
- 모두 다시 연결을 누릅니다. 피팅마다 조임 표시가 초록인지 확인하고, B 영역 누설 점검을 한 번 실행합니다(오류 1번).
- 막힌 부품을 B 영역 부품 교체 · 세척에서 고치고, 기준 메서드로 평형한 뒤 STD-CAF-50 을 주입(<kbd>F5</kbd>)해 F 영역 판정을 봅니다.
압력이 낮거나 출렁일 때#
| 보이는 것 | 가장 먼저 의심 | 확인 | 조치 |
|---|---|---|---|
| 분석 유속인데 수 bar · 피크 없음 | 퍼지 밸브 열림 | 3D 뷰 퍼지 밸브 손잡이 · 로그 Purge valve open | <kbd>]</kbd> 로 끝까지 닫음(ch03) |
| 평소보다 10 ~ 20 % 낮고 RT 가 늦어짐 | 펌프 뒤 누설(유속 일부가 새어 나감) | 누설 점검 · 피팅 주변 물방울 · 누설 받침 | 펌프 정지 후 피팅 다시 조임, 상하면 교체 |
| 피스톤 주기마다 아래로 꺼지는 톱니 | 펌프 헤드 기포 | 흡입 튜브의 기포 · 용매 잔량 · 흡입 필터 위치 | 원인 해결 후 해당 채널 퍼지(ch03) |
| 퍼지해도 톱니가 남음 · 한 채널만 | 체크 밸브 고착 · 오염 | 채널별로 100 % 흘려 비교, 체크 밸브 점검 도구 | 이소프로판올 · 물로 세척, 안 되면 교체 |
| 압력이 0 으로 떨어지고 펌프 정지 | 용매 소진 · 큰 누설 | 로그 below lower limit · 누설 센서 오류 | 용매 보충 · 누설 처리 후 퍼지 |
- 출렁임(리플) 은 ch03 의 기준(30 s 창 RSD 0.5 % 이하)으로 판단합니다. 리플이 크면 유속도 흔들리므로 RT 반복성이 같이 나빠집니다(ch07 SST).
- 누설은 압력이 낮아지는 곳보다 아래쪽에서 찾습니다. 시뮬레이터 누설 점검은 피팅마다 색으로 보여 주지만, 실물에서는 휴지 끝을 피팅에 대 보거나 누설 받침 · 깔때기에 고인 액체, 마른 흰 결정(완충액 누설 흔적)을 찾습니다.
피크 모양 이상#
| 모양 | 판단 기준 | 원인 후보 | 확인 · 조치 |
|---|---|---|---|
| 꼬리 끌림 (tailing) | T > 1.5 (SST 기준 2.0 에 가까워짐) | ① 염기성 물질과 실라놀의 2차 상호작용 ② 컬럼 오염 · 노화 ③ 피팅 틈의 죽은 부피 | 한 피크만이면 ①: 이동상 pH · 완충액 확인(ch08). 모든 피크면 ③ → 피팅 다시 연결, 그다음 ② → 컬럼 세척 · 교체 |
| 앞 끌림 (fronting) | T < 0.9 | ① 과부하(농도 · 주입량) ② 이동상보다 강한 시료 용매 ③ 컬럼 입구 공극 | 주입량을 절반으로 → 좋아지면 ①. 시료 용매를 이동상과 같게 → 좋아지면 ② |
| 갈라짐 (split) | 꼭대기가 둘, 어깨 | ① 컬럼 입구 공극(void) · 막힌 프릿 ② 강한 시료 용매 ③ 실제로 두 성분 | 모든 피크가 갈라지면 ①(유로 문제), 앞쪽 피크만이면 ②, 한 피크만이면 ③(DAD 스펙트럼으로 확인) |
| 넓어짐 (broad) | w½ 가 기준의 1.2배 이상, RT 는 그대로 | ① 컬럼 밖 부피(길거나 굵은 캐필러리, 큰 플로셀) ② 이동상 예열 꺼짐(ch08) ③ 컬럼 노화 ④ 주입량 과다 | 최근 바꾼 배관이 있는지 → 예열 설정 → 표준 시험으로 N 비교 |
피크 모양 진단에서 가장 먼저 볼 것은 이상이 한 피크에만 있는지, 모든 피크에 있는지입니다. 모든 피크에 같은 이상이 있으면 유로 · 컬럼 입구 같은 물리적 원인, 특정 피크에만 있으면 그 물질의 화학적 성질(pH, 상호작용) 쪽입니다.
머무름 시간이 흔들릴 때#
RT 가 바뀌었을 때 불감 시간 t₀ 도 같이 바뀌었는지를 보면 원인이 둘로 갈립니다. t₀ 는 머무르지 않는 성분이 나오는 시간이라 유속에만 반응합니다.
| 패턴 | 뜻 | 원인 후보 |
|---|---|---|
| t₀ 와 tR 가 같은 비율로 늦어짐 (k 그대로) | 컬럼을 지나는 유속이 줄었음 | 펌프 뒤 누설, 기포 · 체크 밸브로 유속 부족, 메서드 유속 오류 |
| t₀ 그대로, k 가 변함 | 컬럼 안 분리 조건이 바뀌었음 | 조성 오류(병 · 채널 바뀜, 메서드 조성), 온도 변화, 완충액 pH, 컬럼 노화 |
| 첫 주입만 다르고 뒤는 안정 | 평형 부족 | 시퀀스 전 평형 시간 부족(ch05) |
| 주입마다 조금씩 한 방향으로 흐름 | 평형 · 온도가 아직 바뀌는 중 | 후처리 시간 부족(ch08), 온도조절기 꺼짐 · 실온 변화, 휘발로 조성 변화(뚜껑 열린 병) |
| 앞뒤로 무작위로 흔들림 | 유속 불안정 | 기포 · 체크 밸브 · 작은 누설 (리플 확인) |
- 온도는 1 °C 에 k 를 대략 1 ~ 2 % 바꿉니다(ch08). 온도조절기를 끈 채 실온이 오르내리면 하루 동안 RT 가 천천히 움직입니다.
- 조성 오류는 생각보다 흔합니다. 메탄올 30 % 가 25 % 가 되면 카페인이 5.16 → 약 7.0 min 으로 늦어집니다. 병 라벨 · 흡입 필터가 꽂힌 병 · 메서드 조성을 순서대로 대조합니다.
베이스라인 이상#
| 증상 | 원인 후보 | 확인 방법 |
|---|---|---|
| 드리프트 (> 2 mAU/h) | 램프 예열 중 · 컬럼 온도 미안정 · 평형 부족 · 그래디언트(용매 흡광도 차이) | 예열 막대 · 온도 안정 표시 확인, 펌프만 돌리며 10분 기록(ch04) |
| 노이즈 (> 0.1 mAU) | 램프 노후(빛이 약함) · 플로셀 기포 · 플로셀 창 오염 · 컷오프 근처 파장 | 램프 강도 시험(<b>검출기 설정 › 진단 › 강도 시험</b>). 노이즈 주기가 펌프 리플과 같으면 펌프 쪽 |
| 고스트 피크 | 오염된 물 · 용매 · 첨가제, 앞 주입의 캐리오버, 앞 분석의 늦게 나오는 피크 | 블랭크 주입: 주입 없이(0 µL) 돌려도 나오면 이동상, 블랭크 바이알에서만 나오면 캐리오버 · 바이알 |
| 스파이크 | 플로셀을 지나는 기포, 탈기 부족 | 유속을 잠시 올렸다 내림, 탈기기 상태 확인 |
- 램프: 시뮬레이터 VWD 램프 카운터 기준은 2000 h 입니다(ch04). 시간이 기준에 가깝고 강도 시험이
Fail이면 2교시의 램프 교체 절차를 따릅니다. - 플로셀: 기포는 유속을 잠깐 올려 밀어내고, 오염은 물 → 이소프로판올 순서로 씻습니다(실물은 매뉴얼의 플로셀 세척 절차 확인).
- 용매 오염: 새로 연 HPLC 등급 물로 바꿔 고스트가 사라지면 물이 원인입니다. 물 · 완충액은 오래 두면 미생물이 자랍니다(ch03).
따라하기 — 고장 시나리오 3문제#
- <b>모드 › 고장 시나리오</b>(<kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>T</kbd>)를 엽니다. 위쪽 무작위 3문제를 누르면 문제 1 의 증상 카드(A)가 나타납니다.
- ① 관찰: 펌프 제어 E 영역, D 영역 크로마토그램, 이벤트 로그(ch01 의 D 영역)를 보고 기준값과 다른 숫자를 C 의 ① 칸에 적습니다. 숫자가 둘 이상 다르면 압력부터 적습니다.
- ② 가설: 위 네 개 표에서 후보를 두세 개 골라 적습니다.
- ③ 확인: B 영역 도구 가운데 가설을 가르는 것 하나를 고릅니다. 예: 압력이 높으면 구간 분리 시험, 고스트 피크면 블랭크 주입, 노이즈면 램프 강도 시험. 결과가 C 에 자동으로 한 줄 기록됩니다.
- ④ 조치: 확인된 원인을 B 영역 부품 교체 · 세척(또는 3D 뷰의 퍼지 밸브 · 피팅 조작)으로 고칩니다. 부품을 바꾸는 조치는 펌프가 멈춘 상태에서만 열립니다.
- ⑤ 재검증: 기준 메서드를 장비에 보내고(<b>Method › Send to Instrument</b>) 평형 · Balance(<kbd>Z</kbd>) 후 STD-CAF-50 을 주입(<kbd>F5</kbd>)합니다. F 영역이
✔ 복구 확인이면 원인 이름이 공개되고 다음 문제로 넘어갑니다. - 세 문제가 끝나면 진단 보고서(<b>Report › Export PDF</b>)를 저장합니다. 문제마다 5단계 기록, 걸린 시간, 쓴 도구 수가 들어 있습니다.
- 기준값 없이 "압력이 좀 높은 것 같다" 로 시작합니다 → 정상 기준 표의 숫자와 비교해 몇 bar · 몇 % 로 적습니다.
- 한 번에 두 가지를 바꿉니다(예: 피팅을 다시 조이면서 컬럼도 교체) → 무엇이 원인이었는지 모릅니다. 시나리오 채점에서도 감점됩니다.
- 구간 분리 후 다시 연결하면서 조임을 빠뜨립니다 → 다음 문제에서 누설 오류가 납니다(오류 1번).
- 압력 상한(350 bar)에 걸려 펌프가 멈추자 상한을 올립니다 → 상한은 컬럼과 플로셀을 지키는 장치입니다. 원인을 찾기 전까지 올리지 않습니다.
- 조치 뒤 평형 없이 바로 재검증 주입을 합니다 → RT · 베이스라인이 기준을 못 맞춰 "복구 실패" 로 나옵니다(오류 6번).
단축키 · 메뉴 정리 (1교시)#
| 동작 | 메뉴 | 단축키 |
|---|---|---|
| 시나리오 불러오기 | <b>파일 › 시나리오 불러오기</b> | <kbd>Ctrl</kbd>+<kbd>O</kbd> |
| 고장 시나리오 화면 | <b>모드 › 고장 시나리오</b> | <kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>T</kbd> |
| 펌프 제어 / 컬럼 · 온도 | <b>모드 › 펌프 제어</b> / <b>모드 › 컬럼 · 온도</b> | <kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>F</kbd> / <kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>H</kbd> |
| 펌프 켜기 / 끄기 | 상단 도구 막대 펌프 | <kbd>F9</kbd> |
| 퍼지 밸브 열기 / 닫기 | 손잡이 선택 후 | <kbd>[</kbd> / <kbd>]</kbd> |
| 램프 강도 시험 | <b>검출기 설정 › 진단 › 강도 시험</b> | — |
| Balance (오토 제로) | 검출기 설정 D 영역 | <kbd>Z</kbd> |
| 한 번 주입 | <b>Run › Single Run</b> | <kbd>F5</kbd> |
| 진단 보고서 저장 | <b>Report › Export PDF</b> | — |
단축키는 시뮬레이터 버전에 따라 바뀔 수 있습니다. <b>도움말 › 단축키 목록</b>(<kbd>?</kbd>)에서 최신 목록을 확인합니다.
결과 확인#
CH09_TROUBLE의 구간 분리 시험에서 ② → ③ 사이(컬럼)의 강하가 정상보다 약 90 bar 크게 나오고, 조치 후 압력이 118 ± 6 bar 로 돌아왔습니다.- 무작위 3문제 모두 C 영역 5단계가 채워졌고, F 영역이
✔ 복구 확인입니다. - 진단 보고서 PDF 에 문제마다 원인 · 조치 · 재검증 수치가 남아 있습니다.
Python 으로 RT 변화 패턴 가르기#
RT 가 바뀌었을 때 t₀ 와 k 를 함께 계산해 유속 문제인지 조건 문제인지 가르는 계산입니다.
T0, TR = 1.62, 5.16 # 정상: 불감 시간, 카페인 RT (min)
cases = {"오늘 A": (1.88, 6.00), "오늘 B": (1.62, 7.05), "오늘 C": (1.62, 4.95)}
k_ref = (TR - T0) / T0
print(f"정상: t0 {T0:.2f}, tR {TR:.2f}, k {k_ref:.2f}")
for name, (t0, tr) in cases.items():
k = (tr - t0) / t0
r_t0, r_tr, r_k = t0 / T0, tr / TR, k / k_ref
if abs(r_t0 - 1) > 0.03 and abs(r_k - 1) < 0.03:
why = "t0 와 tR 가 같은 비율로 변함, k 그대로 -> 유속 문제(누설 · 펌프)"
elif abs(r_t0 - 1) <= 0.03 and abs(r_k - 1) >= 0.03:
why = "t0 그대로, k 변함 -> 조성 · 온도 · 컬럼 문제"
else:
why = "둘 다 변함 -> 여러 원인, 하나씩 확인"
print(f"{name}: t0 x{r_t0:.2f}, tR x{r_tr:.2f}, k {k:.2f} (x{r_k:.2f}) -> {why}")- 오늘 A 는 t₀ 와 tR 가 모두 1.16 배 → 컬럼을 지나는 유속이 약 0.86 mL/min 으로 줄었다는 뜻입니다. 펌프 압력도 그만큼 낮다면 펌프 뒤 누설을 찾습니다.
- 오늘 B(k 1.53 배)는 조성, 오늘 C(k 0.94 배)는 온도를 먼저 의심합니다. 둘을 가르려면 컬럼 · 온도 화면의 실제 온도와 병 라벨 · 메서드 조성을 대조합니다.
2교시 — 일상 점검 · 종료 · 보관 절차#
이 단원에서 할 일#
고장의 상당수는 점검 · 종료를 빠뜨려서 생깁니다. 완충액을 그대로 두고 퇴근하면 다음 날 압력이 높고, 램프 시간을 보지 않으면 분석 도중 노이즈가 커집니다. 이번 단원에서는 하루 분석의 앞과 뒤에 하는 일을 순서대로 익히고, 실물 장비로 넘어가기 전에 확인할 체크리스트를 만듭니다.
- 유지보수 화면에서 소모품 카운터와 분석 전 점검표를 봅니다.
- ch08 의 완충액 메서드를 쓴 장비를 세척 → 보관 용매 → 끄기 → 기록 순서로 종료합니다.
- 소모품 교체 주기를 정리하고 램프 교체를 한 번 따라 합니다.
- 장비 사용 기록 · 이상 보고 · 실물 안전 수칙을 정리하고 시뮬레이터 이수 체크를 마칩니다.
유지보수 화면#
모드 › 유지보수(Ctrl+Shift+E)는 소모품 카운터 · 교체 안내 · 점검표 · 사용 기록을 한 화면에 모은 시뮬레이터 화면입니다. 실물에서는 장비 진단 소프트웨어(Agilent Lab Advisor 등)의 유지보수 카운터와 종이 · 전자 logbook 이 이 역할을 나눠 맡습니다.| 영역 | 하는 일 |
|---|---|
| A 소모품 카운터 | 부품별 사용량 / 기준. 90 % 이상 노랑, 기준 초과 빨강. 교체 후 카운터 초기화 |
| B 교체 절차 | 부품을 고르면 3D 뷰에서 그 부품이 강조되고 단계별 안내가 나옴. 조건(펌프 정지 · 램프 꺼짐)이 맞지 않으면 다음 단계가 잠김 |
| C 분석 전 점검표 | 용매 잔량 · 폐액 · 누설 · 압력 · 램프 항목. 자동으로 판정되는 항목과 학생이 직접 체크하는 항목이 섞여 있음 |
| D 장비 사용 기록 | 날짜 · 사용자 · 메서드 · 압력 · 램프 시간 · 이상 사항. 새 줄 <kbd>Ctrl</kbd>+<kbd>L</kbd> |
분석 전 점검 체크리스트#
| 항목 | 어디서 | 기준 (이 강좌) | 안 맞으면 |
|---|---|---|---|
| 용매 잔량 | 용매 관리(<kbd>Ctrl</kbd>+<kbd>M</kbd>) · 병 눈금 | 오늘 쓸 양의 1.5배 이상, 흡입 필터가 바닥 가까이 잠김 | 새 이동상 조제(같은 병에 덧붓지 않음), 퍼지 |
| 폐액 | 폐액 통 표시 · 3D 뷰 | 오늘 나올 양의 1.5배 이상 여유, 뚜껑 · 배수관 고정 | <b>편집 › 폐액 통 비우기</b> (실물은 기관의 폐액 규정에 따름) |
| 누설 | 3D 뷰 피팅 · 누설 받침, 이벤트 로그 | 물방울 · 흰 결정 · 누설 센서 경고 없음 | 펌프 정지 → 피팅 확인 · 조임 |
| 압력 | 펌프 제어 E 영역 | 평형 후 평소 값 ± 10 %, 리플 RSD ≤ 0.5 % | 1교시 진단 |
| 램프 | 검출기 설정 A 영역 | 사용 시간 확인, 강도 시험 Pass, 예열 완료 후 노이즈 ≤ 0.1 mAU | 예열 기다림 · 교체 준비 |
| 컬럼 | 컬럼 정보(<kbd>I</kbd>) | 메서드와 같은 컬럼, 방향 화살표, 허용 압력 · pH | ch04 |
오늘 쓸 양은 (유속 × 1회 시간 × 주입 수) + 평형 · 세척 양으로 어림합니다. 예: 1.0 mL/min × (10 + 2) min × 20회 + 평형 · 세척 50 mL ≈ 290 mL → 잔량 440 mL 이상, 폐액 여유 440 mL 이상.
분석 후 컬럼 세척과 보관#
ch03 에서 본 것처럼 완충액(염)이 든 이동상을 곧바로 유기 용매로 바꾸면 염이 석출되어 컬럼 · 캐필러리를 막습니다. 그래서 세척은 두 단계입니다.
| 단계 | 용매 (채널 A = 물, B = 메탄올) | 양 | 목적 |
|---|---|---|---|
| 1 완충액 빼기 | 물:메탄올 90:10 (염 없음) | 컬럼 부피의 10배 이상 | 염 · 완충액을 녹여 빼냄. 유기 용매를 조금 넣어 젖음을 유지 |
| 2 보관 용매 | 메탄올:물 80:20 (또는 성적서 권장 용매) | 컬럼 부피의 10배 이상 | 미생물이 자라지 않고 정지상이 안정한 상태로 보관 |
- 시간은 ch08 의 재평형 계산과 같은 방식으로 정합니다: (V_D + 10 × V₀) ÷ 유속 = (1.0 + 10 × 1.62) ÷ 1.0 ≈ 17.2 min (단계마다).
- 완충액을 쓰지 않은 날(물:메탄올만)은 1 단계를 건너뛰고 2 단계만 합니다.
- 컬럼만이 아니라 라인도 씻습니다. 완충액이 들어 있던 채널 A 의 흡입 필터를 물 병으로 옮기고 그 채널을 퍼지해야 펌프 헤드 · 체크 밸브에 염이 남지 않습니다. 실물 펌프에 씰 세척(seal wash) 이 있으면 완충액을 쓰는 날 켜 둡니다(장비 구성에 따라 다름 — 확인 필요).
- 컬럼을 장비에서 떼어 보관할 때는 양 끝을 마개로 막아 마르지 않게 하고, 라벨에 보관 용매 · 날짜 · 주입 횟수를 적습니다.
인산염 완충액(채널 A) → 메탄올 80 % 로 한 번에 바꾸면, 완충액이 남아 있는 라인과 컬럼 입구에서 염이 석출됩니다. 반드시 물이 많은 용매(염 없음) 를 먼저 흘립니다. ch03 확인 문제와 같은 규칙입니다.
장비 종료 순서#
| 순서 | 동작 | 이유 |
|---|---|---|
| 3 램프 끄기 (<kbd>F10</kbd>) | 세척 · 보관 용매 교체가 끝나 더 볼 신호가 없을 때 끔 | 램프 수명은 켜져 있는 시간으로 줄어듦. 사용 시간을 기록 |
| 4 유속 낮추기 | 1.0 → 0.5 → 0.2 → 0 mL/min, 30 s 간격 | 압력을 천천히 낮춰 컬럼 충전층 · 피스톤 씰에 충격을 줄임 |
| 5 펌프 정지 (<kbd>F9</kbd>) | 압력이 0 bar 근처인지 확인 | 압력이 남은 상태에서 피팅을 풀면 용매가 튐 |
| 6 온도조절기 끄기 | 컬럼 · 온도 화면에서 OFF | 흐름이 없는 컬럼을 계속 데우면 이동상이 증발 · 농축될 수 있음 |
| 7 기록 (<kbd>Ctrl</kbd>+<kbd>L</kbd>) | 사용 기록 · 폐액 · 잔량 | 다음 사용자가 장비 상태를 알 수 있게 |
- 실험실에 따라 밤사이 낮은 유속으로 계속 흘려 두는 운영을 하기도 합니다(예: 0.1 ~ 0.2 mL/min). 이 경우에도 완충액 세척과 보관 용매 교체는 같습니다. 기관 SOP 를 따릅니다.
- 다음 사용 예정이 길면(며칠 이상) 컬럼을 떼어 보관하고, 장비 라인도 유기 용매가 섞인 용매로 채워 둡니다.
따라하기 — 분석 종료 시나리오#
- <b>파일 › 시나리오 불러오기</b>(<kbd>Ctrl</kbd>+<kbd>O</kbd>)에서
CH09_SHUTDOWN을 엽니다. ch08 의APC_TAB_GRD분석이 막 끝난 상태로, 채널 A = 20 mM 인산염 완충액(pH 2.5), 채널 B = 메탄올, 50 °C, 램프 켜짐입니다. - 펌프를 끕니다(<kbd>F9</kbd>). <b>모드 › 용매 관리</b>(<kbd>Ctrl</kbd>+<kbd>M</kbd>)에서 채널 A 흡입 필터를 끌어 HPLC 등급 물 병에 옮기고 병 정보를
물로 고칩니다. - 3D 뷰에서 퍼지 밸브를 <kbd>[</kbd> 로 열고 채널 A 를 퍼지한 뒤, 유속을 낮추고 <kbd>]</kbd> 로 닫습니다(ch03).
- 펌프 제어(<kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>F</kbd>)에서 %A
90· %B10, 유속1.000으로 펌프를 켜고(<kbd>F9</kbd>) 17.2 min 이상 흘립니다. 기다리기 길면 <b>보기 › 시간 배속</b>(<kbd>Ctrl</kbd>+<kbd>]</kbd>)을 씁니다. 압력이 완충액 때보다 조금 내려가며 안정되는 것을 E 영역에서 봅니다. - 조성을 %A
20· %B80으로 바꿔 다시 17.2 min 이상 흘립니다. 메탄올이 늘어 압력이 바뀌다가 안정되면 보관 용매로 다 바뀐 것입니다. - 램프를 끕니다(<kbd>F10</kbd>). 로그에
Lamp off와 누적 사용 시간이 남습니다. - 유속을
0.5→0.2→0mL/min 으로 30 s 간격으로 낮추고, 펌프를 끕니다(<kbd>F9</kbd>). B 패널 압력이 0 bar 근처인지 확인합니다. - <b>모드 › 컬럼 · 온도</b>(<kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>H</kbd>)에서 온도 조절을 OFF 로 바꿉니다.
- <b>모드 › 유지보수</b>(<kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>E</kbd>) D 영역에서 <kbd>Ctrl</kbd>+<kbd>L</kbd> 로 새 줄을 만들고, 사용한 메서드 · 시작 / 끝 압력 · 램프 시간 · 보관 용매 · 이상 사항(없으면
없음)을 적습니다. 폐액이 70 % 를 넘었으면 <b>편집 › 폐액 통 비우기</b>를 합니다. - 상단에 종료 점검 결과가 뜹니다. 순서 · 세척량 · 기록 항목이 모두 초록이면 시나리오를 마칩니다.
소모품 교체 주기#
교체 주기는 사용량 · 용매 · 시료에 따라 크게 달라서, 날짜보다 증상과 카운터로 판단합니다. 아래 "시뮬레이터 기준" 은 이 시뮬레이터의 카운터 값이며, 실물은 장비 매뉴얼 · 기관 SOP 를 따릅니다.
| 부품 | 위치 (ch02) | 교체 신호 (증상) | 시뮬레이터 기준 |
|---|---|---|---|
| 흡입 필터 (solvent inlet filter) | 용매 병 속 튜브 끝 | 기포가 자주 생김, 필터 색이 변함 · 막힘, 미생물 | 180 일 |
| 퍼지 밸브 PTFE 프릿 | 펌프 퍼지 밸브 안 | 퍼지 밸브를 연 상태에서 물 5 mL/min 일 때 압력 강하가 10 bar 를 넘음(Agilent 펌프 매뉴얼의 점검 방법 — 해당 모델 매뉴얼로 확인) | 강하 10 bar |
| 니들 시트 (needle seat) | 샘플러 | 샘플러 구간 압력 상승(1교시 ⑤), 주입 누설, 캐리오버 · 면적 RSD 나빠짐 | 10 000 회 주입 |
| 중수소 램프 (VWD) | 검출기 | 노이즈 증가, 강도 시험 Fail, 점등 실패(ch04 오류 6번) | 2 000 h |
| 피스톤 씰 (piston seal) | 펌프 헤드 | 헤드 아래 누설 · 흰 결정, 리플 증가, 유속 부정확 | 50 L 송액 |
- 교체한 뒤에는 반드시 카운터 초기화 → 누설 점검 → 압력 · 성능 확인 → 기록 을 합니다. 초기화를 빠뜨리면 다음 사람이 교체 시점을 잘못 판단합니다(오류 5번).
- 새 피스톤 씰은 길들이기(run-in) 절차가 필요한 경우가 있습니다(매뉴얼 확인). 실물 교체는 담당자 또는 교육받은 사람이 합니다.
따라하기 — 램프 교체와 퍼지 밸브 프릿 점검#
- <b>모드 › 유지보수</b>(<kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>E</kbd>)를 엽니다. A 영역에서 VWD 램프가 1870 / 2000 h(노랑)입니다.
- A 영역의 램프 줄을 고르고 교체 시작을 누릅니다. B 영역 1 단계가 램프가 꺼졌는지(<kbd>F10</kbd>) 확인합니다. 시뮬레이터는 끈 뒤 냉각 대기를 표시합니다(실물 램프는 매우 뜨거움).
- 대기가 끝나면 3D 뷰에서 검출기 앞판을 열고(<kbd>O</kbd>) 강조된 램프의 커넥터 → 고정 나사 → 램프 순서로 분리하고, 새 램프를 반대 순서로 장착합니다. 실물에서는 유리 부분을 맨손으로 만지지 않습니다(지문이 빛을 막고 수명을 줄임).
- 앞판을 닫고 <kbd>F10</kbd> 으로 켭니다. 예열이 끝나면 <b>검출기 설정 › 진단 › 강도 시험</b>이
Pass인지 봅니다. - B 영역 5 단계에서 카운터 초기화를 누르고, D 영역에
VWD 램프 교체, 강도 시험 Pass를 기록합니다. - 이번에는 A 영역의 퍼지 밸브 프릿 줄(빨강, 강하 12 bar)을 고릅니다. 안내대로 퍼지 밸브를 <kbd>[</kbd> 로 열고 채널 A(물) 5 mL/min 으로 흘려 압력 강하를 확인한 뒤, 프릿을 교체하고 다시 재어 수 bar 로 내려간 것을 확인합니다.
장비 사용 기록(logbook)과 이상 보고#
장비 사용 기록은 "누가 · 언제 · 어떤 상태로" 장비를 썼는지 남기는 문서입니다. 고장 진단의 평소 값도, 데이터 신뢰성(ch07 의 감사 추적)도 여기서 나옵니다.
| 칸 | 예 |
|---|---|
| 날짜 · 시각 · 사용자 | 2026-10-11 09:02 – 11:40, 실습 3조 |
| 장비 · 컬럼 | HPLC-SIM-01, C18 150 × 4.6 mm (컬럼 ID · 누적 주입 수) |
| 메서드 · 이동상 | PRAC_ISO_W70M30_v01, 물:메탄올 70:30 (조제일) |
| 시작 / 끝 상태 | 압력 118 / 118 bar, 램프 1870 h, 폐액 30 % |
| 이상 사항 · 조치 | 예: "10:15 압력 208 bar → 가드 카트리지 교체 → 119 bar" |
| 교체 부품 · 보관 상태 | 없음 / 메탄올:물 80:20 보관, 온도조절기 OFF |
이상 보고는 스스로 고칠 수 없거나 고치지 말아야 할 때 하는 일입니다. 실물 장비에서 학생이 다음 상황을 만나면 조치하지 말고 멈춘 뒤 담당자에게 알립니다.
- 누설 센서 경고, 바닥이나 장비 아래로 흐르는 용매
- 압력이 계속 오르거나 원인을 모르는 펌프 정지
- 램프 · 전원 · 타는 냄새 등 전기적 이상
- 장비 부품을 열어야 하는 조치(씰 · 체크 밸브 · 플로셀 · 램프)
보고에는 무엇이 · 언제부터 · 어떤 조건에서 · 내가 한 일 네 가지를 적습니다. "고장 났어요" 보다 "09:40 부터 1.0 mL/min, 70:30 에서 압력이 118 → 208 bar, 펌프 정지 후 손대지 않음" 이 진단 시간을 크게 줄입니다.
실물 실습 전 안전 수칙#
실물 장비 실습의 안전 확인은 아래 실습 (실물) 의 안전 확인 상자에 모았습니다. 시뮬레이터에서는 다치지 않지만, 같은 순서를 손에 익혀 두면 실물에서 실수가 줄어듭니다.
- 용매: 메탄올 · 아세토니트릴은 인화성이고 흡입 · 피부로 흡수되면 해롭습니다. 조제는 후드에서, 사용 전 안전보건자료(SDS)를 읽습니다.
- 보호구: 보안경, 화학용 장갑(니트릴 등 — 용매에 맞는 재질 확인), 실험복, 막힌 신발.
- 누설 대응: 펌프 정지(<kbd>F9</kbd> 와 같은 동작) → 흐름이 멈춘 것 확인 → 흡수재로 닦기 → 환기 → 보고. 전기 부품 쪽으로 흐르면 전원 차단은 담당자가 합니다.
- 고압: 피팅을 풀기 전 펌프 정지 · 압력 0 bar 를 확인합니다. 압력이 걸린 캐필러리를 풀면 용매가 눈 높이로 튈 수 있습니다.
시뮬레이터 이수 체크#
실물 1260 을 처음 쓰기 전에, 아래 항목을 시뮬레이터에서 혼자 할 수 있는지 확인합니다. 하나라도 자신 없으면 해당 차시로 돌아가 다시 해 봅니다.
- 완충액 메서드 뒤에 곧바로 메탄올 80 % 로 바꿉니다 → 염이 석출되어 다음 날 압력이 높습니다(오류 4번).
- 채널 A 라인은 씻지 않고 컬럼만 씻습니다 → 펌프 헤드 · 체크 밸브에 완충액이 남아 마르며 결정이 생깁니다.
- 유속을 1.0 에서 바로 0 으로 끄고 펌프를 멈춥니다 → 압력 충격. 단계적으로 낮춥니다.
- 램프를 켜 둔 채 퇴근합니다 → 램프 사용 시간이 헛되이 늘어납니다. 반대로 분석 직전에 켜면 예열이 끝나지 않아 드리프트가 생깁니다.
- 부품을 바꾸고 카운터 초기화 · 기록을 빠뜨립니다 → 다음 사람이 교체 시점을 잘못 압니다.
- 사용 기록에 "이상 없음" 만 적습니다 → 압력 · 램프 시간 같은 숫자를 적어야 다음 진단의 평소 값이 됩니다.
단축키 · 메뉴 정리 (2교시)#
| 동작 | 메뉴 | 단축키 |
|---|---|---|
| 유지보수 화면 | <b>모드 › 유지보수</b> | <kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>E</kbd> |
| 사용 기록 새 줄 | 유지보수 D 영역 | <kbd>Ctrl</kbd>+<kbd>L</kbd> |
| 용매 관리 (흡입 필터 이동) | <b>모드 › 용매 관리</b> | <kbd>Ctrl</kbd>+<kbd>M</kbd> |
| 램프 켜기 / 끄기 | 상단 도구 막대 램프 | <kbd>F10</kbd> |
| 펌프 켜기 / 끄기 | 상단 도구 막대 펌프 | <kbd>F9</kbd> |
| 컬럼 온도 OFF | <b>모드 › 컬럼 · 온도</b> | <kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>H</kbd> |
| 앞판 열기 | 모듈 선택 후 | <kbd>O</kbd> |
| 폐액 통 비우기 | <b>편집 › 폐액 통 비우기</b> | — |
| 시간 배속 | <b>보기 › 시간 배속</b> | <kbd>Ctrl</kbd>+<kbd>]</kbd> / <kbd>Ctrl</kbd>+<kbd>[</kbd> |
결과 확인#
CH09_SHUTDOWN의 종료 점검 결과가 모두 초록이고, 채널 A 병이물로, 컬럼이 메탄올:물 80:20 으로 바뀌었습니다.- 유지보수 화면에서 램프 카운터가 0 h 로 초기화되고, 퍼지 밸브 프릿 강하가 기준 아래로 내려왔습니다.
- 사용 기록 D 영역에 오늘 사용 · 교체 내역이 숫자와 함께 남아 있습니다.
- 시뮬레이터 이수 체크 11 항목을 모두 체크했습니다(자신 없는 항목은 해당 차시 번호를 적어 둡니다).
실습 (시뮬레이터)#
세 사례의 "뒤에서부터 끊어 보기" 압력이 주어집니다. 각 사례에서 막힌 구간을 찾습니다.
- 끊은 지점별 압력 목록에서 구간 강하(이번 지점 압력 − 한 칸 펌프 쪽 지점 압력)를 계산하는
segment_drops()를 완성합니다. 마지막 펌프 출구 값은 그대로 퍼지 밸브 · 프릿 구간의 강하로 씁니다. - 정상 강하와 비교해 10 bar 이상이면서 정상의 20 % 이상 큰 구간에
막힘 의심표시를 붙입니다. - 사례마다 차이가 가장 큰 구간을 원인 구간으로 출력합니다.
# 뒤에서부터 끊어 보기 - 끊은 지점마다 펌프에서 읽은 압력 (bar, 1.0 mL/min, 물:메탄올 70:30, 30 C)
POINTS = ["전체 연결", "검출기 입구", "컬럼 출구", "컬럼 입구", "샘플러 출구", "펌프 출구"]
SEGMENTS = ["플로셀 · 폐액 라인", "컬럼 출구 캐필러리", "컬럼", "열교환기 · 캐필러리",
"샘플러 · 펌프-샘플러 캐필러리", "퍼지 밸브 · 프릿"]
NORMAL = [118, 117, 116, 11, 8, 2]
cases = {
"사례 1": [212, 211, 210, 11, 8, 2],
"사례 2": [196, 195, 194, 89, 86, 2],
"사례 3": [161, 117, 116, 11, 8, 2],
}
def segment_drops(p):
# TODO 1: [p[0]-p[1], p[1]-p[2], ..., p[4]-p[5], p[5]] 를 돌려주세요
return [0] * len(p)
normal_drop = segment_drops(NORMAL)
for name, p in cases.items():
drop = segment_drops(p)
print(f"{name}: 전체 {p[0]} bar (정상 {NORMAL[0]} bar)")
# TODO 2: 구간마다 강하 · 정상 강하 · 차이를 출력하고 기준을 넘으면 "막힘 의심" 표시
# TODO 3: 차이가 가장 큰 구간을 원인 구간으로 출력# 뒤에서부터 끊어 보기 - 끊은 지점마다 펌프에서 읽은 압력 (bar, 1.0 mL/min, 물:메탄올 70:30, 30 C)
POINTS = ["전체 연결", "검출기 입구", "컬럼 출구", "컬럼 입구", "샘플러 출구", "펌프 출구"]
SEGMENTS = ["플로셀 · 폐액 라인", "컬럼 출구 캐필러리", "컬럼", "열교환기 · 캐필러리",
"샘플러 · 펌프-샘플러 캐필러리", "퍼지 밸브 · 프릿"]
NORMAL = [118, 117, 116, 11, 8, 2]
cases = {
"사례 1": [212, 211, 210, 11, 8, 2],
"사례 2": [196, 195, 194, 89, 86, 2],
"사례 3": [161, 117, 116, 11, 8, 2],
}
def segment_drops(p):
# 구간 압력 강하 = 이번 지점 압력 - 한 칸 앞(펌프 쪽) 지점 압력, 마지막은 펌프 출구 값 그대로
return [p[i] - p[i + 1] for i in range(len(p) - 1)] + [p[-1]]
normal_drop = segment_drops(NORMAL)
for name, p in cases.items():
drop = segment_drops(p)
print(f"{name}: 전체 {p[0]} bar (정상 {NORMAL[0]} bar, +{p[0] - NORMAL[0]} bar)")
worst, worst_excess = None, 0
for seg, d, n in zip(SEGMENTS, drop, normal_drop):
excess = d - n
mark = " <- 막힘 의심" if excess > max(10, 0.2 * n) else ""
print(f" {seg:18s} 강하 {d:4d} bar (정상 {n:4d}) 차이 {excess:+4d}{mark}")
if excess > worst_excess:
worst, worst_excess = seg, excess
print(f" => 원인 구간: {worst} (+{worst_excess} bar)\n")- 사례 1: 컬럼 구간 강하가 199 bar(정상 105) → 컬럼(입구 프릿 · 가드). 컬럼을 빼자 압력이 정상(11 bar)으로 돌아온 것이 근거입니다.
- 사례 2: 컬럼을 빼도 89 bar 로 높고, 샘플러 출구에서 끊어도 86 bar → 펌프 출구(2 bar)와의 사이, 샘플러(니들 시트 등)입니다. 컬럼을 바꿨다면 헛수고였을 사례입니다.
- 사례 3: 검출기 입구에서 끊자마자 161 → 117 bar → 플로셀 · 폐액 라인. 플로셀이 44 bar 를 받고 있었으므로 위험한 상태입니다(1교시 위험 상자). 폐액 라인 꺾임부터 확인합니다.
시뮬레이터 고장 시나리오 13개의 관찰값을 줄여 옮긴 표가 있습니다. 관찰값을 받아 가설을 내는 diagnose() 와, 조치 후 결과를 판정하는 verify() 를 만듭니다.
diagnose()에 압력 → 피크 모양 → 머무름 → 베이스라인 순서로 규칙을 넣습니다. 기준: 압력 > 정상 × 1.3 막힘, < 20 bar 퍼지 밸브 · 큰 누설, 리플 > 1.0 % 기포 · 체크 밸브, 압력 < 정상 × 0.9 이면서 RT > 정상 × 1.05 누설 / T > 1.5 꼬리, < 0.9 앞 끌림, 갈라짐, w½ > 정상 × 1.3(RT 그대로) 넓어짐 / 압력이 정상 근처인데 RT 5 % 넘게 변함 → 조성 / 고스트, 드리프트 > 2, 노이즈 > 0.1.verify()는 고장 시나리오 F 영역 기준(압력 ± 5 %, 리플 ≤ 0.5 %, RT ± 2 %, T 0.9 ~ 1.5, 갈라짐 없음, w½ ≤ 정상 × 1.2, 노이즈 ≤ 0.1, 드리프트 ≤ 2, 고스트 없음)으로 불합격 항목 목록을 돌려줍니다.random.seed()로 3문제를 뽑아 관찰 → 가설 → 재검증(조치 전 · 조치 후)을 출력하고, 13개 전체에 대해 가설이 하나 이상 나오는지 확인합니다.
import random
# 정상 기준 - PRAC_ISO_W70M30_v01, STD-CAF-50 (ch06 · ch07 값)
NORMAL = {"p": 118.0, "ripple": 0.3, "rt": 5.16, "w": 0.161, "T": 1.07,
"noise": 0.04, "drift": 0.5, "split": False, "ghost": False, "nopeak": False}
# 시뮬레이터 고장 시나리오 가운데 13개를 줄여 옮긴 관찰값 (바뀐 값만 적음)
SCENARIOS = {
"F-P01": {"p": 212},
"F-P02": {"p": 196},
"F-P03": {"p": 4, "nopeak": True},
"F-P04": {"p": 109, "ripple": 3.8, "rt": 5.31, "noise": 0.12},
"F-P05": {"p": 101, "rt": 5.98, "w": 0.190},
"F-K01": {"T": 2.35, "w": 0.196},
"F-K02": {"T": 0.72, "w": 0.214, "rt": 5.09},
"F-K03": {"split": True, "w": 0.290},
"F-K04": {"w": 0.236, "T": 1.18},
"F-R01": {"p": 115, "rt": 7.05, "w": 0.205},
"F-B01": {"noise": 0.38},
"F-B02": {"drift": 7.5, "rt": 4.95, "p": 112},
"F-B03": {"ghost": True, "drift": 2.6},
}
def observe(code):
obs = dict(NORMAL)
obs.update(SCENARIOS[code])
return obs
def diagnose(o):
n = NORMAL
found = []
# TODO 1: 압력 규칙 (if / elif 로 하나만)
# TODO 1: 피크 모양 규칙
# TODO 1: 머무름 규칙 (피크가 없으면 건너뜀)
# TODO 1: 베이스라인 규칙
return found or ["정상 범위"]
def verify(o):
fails = []
# TODO 2: 기준을 벗어난 항목 이름("압력", "리플", "RT", "피크 모양", "베이스라인")을 fails 에 추가
return fails
random.seed(9) # 같은 seed 면 같은 3문제
picked = random.sample(sorted(SCENARIOS), 3)
for code in picked:
o = observe(code)
print(f"[{code}] 압력 {o['p']:.0f} bar, RT {o['rt']:.2f} min, T {o['T']:.2f}")
for h in diagnose(o):
print(" 가설:", h)
# TODO 3: 조치 전 verify(o) 와 조치 후 verify(dict(NORMAL, p=119.0, rt=5.17)) 출력import random
# 정상 기준 - PRAC_ISO_W70M30_v01, STD-CAF-50 (ch06 · ch07 값)
NORMAL = {"p": 118.0, "ripple": 0.3, "rt": 5.16, "w": 0.161, "T": 1.07,
"noise": 0.04, "drift": 0.5, "split": False, "ghost": False, "nopeak": False}
# 시뮬레이터 고장 시나리오 가운데 13개를 줄여 옮긴 관찰값 (바뀐 값만 적음)
SCENARIOS = {
"F-P01": {"p": 212},
"F-P02": {"p": 196},
"F-P03": {"p": 4, "nopeak": True},
"F-P04": {"p": 109, "ripple": 3.8, "rt": 5.31, "noise": 0.12},
"F-P05": {"p": 101, "rt": 5.98, "w": 0.190},
"F-K01": {"T": 2.35, "w": 0.196},
"F-K02": {"T": 0.72, "w": 0.214, "rt": 5.09},
"F-K03": {"split": True, "w": 0.290},
"F-K04": {"w": 0.236, "T": 1.18},
"F-R01": {"p": 115, "rt": 7.05, "w": 0.205},
"F-B01": {"noise": 0.38},
"F-B02": {"drift": 7.5, "rt": 4.95, "p": 112},
"F-B03": {"ghost": True, "drift": 2.6},
}
def observe(code):
obs = dict(NORMAL)
obs.update(SCENARIOS[code])
return obs
def diagnose(o):
n = NORMAL
found = []
# 1) 압력 - 먼저 봅니다
if o["p"] > n["p"] * 1.3:
found.append("압력 높음 -> 막힘. 뒤에서부터 끊어 보기로 구간 찾기")
elif o["p"] < 20:
found.append("압력 수 bar -> 퍼지 밸브 열림 또는 큰 누설")
elif o["ripple"] > 1.0:
found.append("압력 출렁임 -> 펌프 헤드 기포 · 체크 밸브. 흡입 필터 · 잔량 확인 후 퍼지")
elif o["p"] < n["p"] * 0.9 and o["rt"] > n["rt"] * 1.05:
found.append("압력 낮음 + RT 늦어짐 -> 펌프 뒤 누설(유속 손실). 피팅 점검")
# 2) 피크 모양
if o["split"]:
found.append("갈라짐 -> 컬럼 입구 공극 · 막힌 프릿 · 시료 용매 확인")
elif o["T"] > 1.5:
found.append("꼬리 끌림 -> 2차 상호작용 · 컬럼 오염 · 죽은 부피")
elif o["T"] < 0.9:
found.append("앞 끌림 -> 과부하(농도 · 주입량) 또는 강한 시료 용매")
elif o["w"] > n["w"] * 1.3 and abs(o["rt"] - n["rt"]) / n["rt"] < 0.03:
found.append("넓어짐(RT 그대로) -> 컬럼 밖 부피(긴 · 굵은 캐필러리) · 컬럼 노화")
# 3) 머무름 - 압력이 정상 근처인데 RT 가 크게 바뀜
if not o["nopeak"] and abs(o["rt"] - n["rt"]) / n["rt"] > 0.05 and 0.9 * n["p"] <= o["p"] <= 1.3 * n["p"]:
found.append("RT 크게 바뀜(압력 정상 근처) -> 조성 오류(병 · 채널 · 메서드) 확인")
# 4) 베이스라인
if o["ghost"]:
found.append("고스트 피크 -> 블랭크 주입으로 용매 · 시료 오염 · 캐리오버 구분")
if o["drift"] > 2.0 and not o["ghost"]:
found.append("드리프트 -> 온도 · 평형 · 램프 예열 확인")
if o["noise"] > 0.1 and o["p"] > 20 and o["ripple"] <= 1.0:
found.append("노이즈 -> 램프 강도 시험 · 플로셀 기포 · 오염")
return found or ["정상 범위"]
def verify(o):
# 재검증 기준 - 고장 시나리오 F 영역과 같음
n = NORMAL
fails = []
if abs(o["p"] - n["p"]) > n["p"] * 0.05:
fails.append("압력")
if o["ripple"] > 0.5:
fails.append("리플")
if o["nopeak"] or abs(o["rt"] - n["rt"]) > n["rt"] * 0.02:
fails.append("RT")
if o["T"] > 1.5 or o["T"] < 0.9 or o["split"] or o["w"] > n["w"] * 1.2:
fails.append("피크 모양")
if o["noise"] > 0.1 or o["drift"] > 2.0 or o["ghost"]:
fails.append("베이스라인")
return fails
random.seed(9) # 같은 seed 면 같은 3문제
picked = random.sample(sorted(SCENARIOS), 3)
for code in picked:
o = observe(code)
peak = "피크 없음" if o["nopeak"] else f"RT {o['rt']:.2f} min"
print(f"[{code}] 압력 {o['p']:.0f} bar, 리플 {o['ripple']:.1f} %, {peak}, "
f"w1/2 {o['w']:.3f}, T {o['T']:.2f}, 노이즈 {o['noise']:.2f} mAU, 드리프트 {o['drift']:.1f} mAU/h"
+ (", 갈라짐" if o["split"] else "") + (", 고스트" if o["ghost"] else ""))
for h in diagnose(o):
print(" 가설:", h)
print(" 조치 전 재검증 불합격 항목:", ", ".join(verify(o)))
fixed = dict(NORMAL, p=119.0, rt=5.17) # 조치 후 다시 주입한 결과(예)
print(" 조치 후 재검증:", "합격" if not verify(fixed) else verify(fixed))
print("\n--- 전체 시나리오 점검 ---")
for code in sorted(SCENARIOS):
print(code, "|", " / ".join(diagnose(observe(code))))
print("정상 |", " / ".join(diagnose(dict(NORMAL))))seed 9 에서는 F-P01 · F-P03 · F-K03 이 뽑힙니다. 각각 압력 높음(막힘 → 구간 분리), 압력 4 bar · 피크 없음(퍼지 밸브 열림), 모든 피크 갈라짐(컬럼 입구 공극)이 가설로 나오고, 조치 전 재검증은 압력 / 압력 · RT / 피크 모양에서 불합격입니다. 13개 전체가 가설을 하나 이상 내고, 정상 입력은 정상 범위 를 냅니다. 시뮬레이터의 실제 원인은 다음과 같습니다: P01 가드 카트리지 막힘, P02 니들 시트 막힘, P03 퍼지 밸브 열림, P04 채널 B 흡입 필터 노출(기포), P05 컬럼 입구 피팅 누설, K01 이동상 pH 오류(완충액 없이 물), K02 고농도 시료 과부하, K03 컬럼 입구 공극, K04 굵고 긴 캐필러리로 교체됨, R01 메탄올 25 % 로 잘못 조제, B01 램프 노후, B02 컬럼 온도 35 °C 로 잘못 설정(아직 오르는 중), B03 오염된 물. 규칙 진단기는 가설을 좁히는 도구일 뿐입니다. F-B02 처럼 RT 변화가 작은 온도 문제는 드리프트만 잡히므로, ③ 확인 단계에서 온도 표시를 직접 봐야 원인이 드러납니다.
기준 압력이 118 bar 인 장비가 오늘 205 bar 입니다. 검출기 입구 · 컬럼 출구에서 끊어도 203 bar, 컬럼을 빼자 96 bar, 샘플러 출구에서 끊자 9 bar 가 되었습니다. 막힌 곳은?
- 플로셀
- 컬럼
- 열교환기 또는 샘플러 ~ 컬럼 사이 캐필러리
- 퍼지 밸브 프릿
정답 보기
③ — 컬럼을 빼도 96 bar(정상 11 bar)로 높으므로 컬럼 앞쪽이 문제입니다. 샘플러 출구에서 끊자 9 bar(정상 8 bar)로 돌아왔으므로, 샘플러 출구 ~ 컬럼 입구 사이(열교환기 · 캐필러리)의 강하가 3 bar → 87 bar 로 커졌습니다. 컬럼 구간 강하는 203 − 96 = 107 bar 로 정상(105)과 비슷해 ② 가 아닙니다.카페인 표준을 주입했더니 RT 가 5.16 → 6.00 min, 불감 시간(t₀ 표시 피크)이 1.62 → 1.88 min 으로 늦어졌고, 압력은 118 → 101 bar 로 낮아졌습니다. 가장 먼저 확인할 것은?
- 이동상 메탄올 비율이 낮게 조제되었는지
- 펌프 뒤 피팅 누설 (누설 점검 · 누설 받침)
- 컬럼 온도가 낮아졌는지
- 램프 강도 시험
정답 보기
② — t₀ 와 tR 가 같은 비율(1.16배)로 늦어지고 k 는 그대로(2.19)입니다. 컬럼을 지나는 **유속**이 줄었다는 뜻이고, 압력도 함께 낮으므로 펌프 뒤에서 이동상이 새고 있을 가능성이 큽니다. ① · ③ 은 t₀ 는 그대로 두고 k 를 바꿉니다. ④ 는 RT 와 관계없습니다.학생이 기록한 종료 절차가 올바른 순서인지 검사하고, 세척 · 보관 용매 교체 시간을 계산합니다.
RULES의 (앞 단계, 뒤 단계, 이유) 목록을 써서, 순서가 틀리거나 빠진 단계를 찾는check_order()를 완성합니다.- 컬럼 부피 V₀ = 1.62 mL, 지연 부피 V_D = 1.0 mL, 유속 1.0 mL/min 에서 컬럼 부피 n 배를 흘리는 시간 (V_D + n × V₀) ÷ 유속을
wash_minutes()로 계산합니다. - 올바른 절차와 잘못된 절차(펌프부터 끄고 기록 빠뜨림)를 각각 검사해 출력합니다.
V0 = 1.62 # 컬럼 부피 (mL), C18 150 x 4.6 mm
VD = 1.0 # 지연 부피 (mL)
FLOW = 1.0 # 세척 유속 (mL/min)
plan = [("wash_water", 10), ("store_organic", 10), ("lamp_off", 0), ("flow_down", 0),
("pump_stop", 0), ("thermo_off", 0), ("logbook", 0)]
RULES = [
("wash_water", "store_organic", "완충액을 물로 먼저 빼야 염이 석출되지 않음"),
("store_organic", "lamp_off", "세척 · 보관 용매 교체를 끝낸 뒤 램프를 끔"),
("lamp_off", "flow_down", "램프 끄기 -> 유속 낮추기 순서"),
("flow_down", "pump_stop", "유속을 단계적으로 낮춘 뒤 펌프 정지"),
("pump_stop", "thermo_off", "흐름이 멈춘 뒤 온도조절기를 끔"),
("thermo_off", "logbook", "모든 조작이 끝난 뒤 사용 기록 작성"),
]
def check_order(steps):
errors = []
# TODO 1: 단계 이름 -> 위치 사전을 만들고, RULES 마다 빠졌거나 순서가 뒤집힌 것을 errors 에 추가
return errors
def wash_minutes(cv):
# TODO 2: (VD + cv * V0) / FLOW
return 0.0
print("순서 점검:", check_order(plan) or "통과")
# TODO 3: 세척 단계별 시간과 합계, 잘못된 절차 검사 결과 출력V0 = 1.62 # 컬럼 부피 (mL), C18 150 x 4.6 mm
VD = 1.0 # 지연 부피 (mL) - 혼합점에서 컬럼 입구까지
FLOW = 1.0 # 세척 유속 (mL/min)
# 학생이 기록한 종료 절차 (ch08 의 인산염 완충액 메서드를 쓴 뒤)
plan = [
("wash_water", 10), # 물:메탄올 90:10 (염 없음) 으로 컬럼 부피 10배 세척
("store_organic", 10), # 메탄올:물 80:20 으로 컬럼 부피 10배 - 보관 용매
("lamp_off", 0),
("flow_down", 0), # 1.0 -> 0.5 -> 0.2 -> 0 mL/min 단계적으로
("pump_stop", 0),
("thermo_off", 0),
("logbook", 0),
]
# 앞에 와야 하는 단계 -> 뒤에 와야 하는 단계
RULES = [
("wash_water", "store_organic", "완충액을 물로 먼저 빼야 염이 석출되지 않음"),
("store_organic", "lamp_off", "세척 · 보관 용매 교체를 끝낸 뒤 램프를 끔"),
("lamp_off", "flow_down", "램프 끄기 -> 유속 낮추기 순서"),
("flow_down", "pump_stop", "유속을 단계적으로 낮춘 뒤 펌프 정지(압력 충격 방지)"),
("pump_stop", "thermo_off", "흐름이 멈춘 뒤 온도조절기를 끔"),
("thermo_off", "logbook", "모든 조작이 끝난 뒤 사용 기록 작성"),
]
def check_order(steps):
pos = {name: i for i, (name, _) in enumerate(steps)}
errors = []
for a, b, why in RULES:
if a not in pos or b not in pos:
errors.append(f"빠진 단계: {a if a not in pos else b}")
elif pos[a] > pos[b]:
errors.append(f"{a} 는 {b} 보다 먼저: {why}")
return errors
def wash_minutes(cv):
# 바뀐 조성이 컬럼 입구에 닿는 지연 시간 + 컬럼 부피 cv 배를 흘리는 시간
return (VD + cv * V0) / FLOW
errs = check_order(plan)
print("순서 점검:", "통과" if not errs else "")
for e in errs:
print(" -", e)
total = 0.0
for name, cv in plan:
if cv:
m = wash_minutes(cv)
total += m
print(f" {name:14s} 컬럼 부피 {cv:2d}배 -> {m:5.1f} min")
print(f"세척 · 보관 용매 교체에 최소 {total:.1f} min (유속 {FLOW} mL/min)")
bad = [plan[0], plan[1], plan[4], plan[3], plan[2], plan[5]] # 펌프부터 끄고 logbook 빠짐
print("\n잘못된 예:")
for e in check_order(bad):
print(" -", e)올바른 절차는 통과, 세척 17.2 min + 보관 용매 17.2 min = 최소 34.4 min 입니다. 하루 일정에 종료 시간 40분 안팎을 미리 넣어 두어야 하는 이유입니다. 잘못된 예에서는 lamp_off 는 flow_down 보다 먼저, flow_down 는 pump_stop 보다 먼저, 빠진 단계: logbook 세 가지가 나옵니다. 하나의 실수(펌프를 먼저 끔)가 순서 규칙 두 개를 함께 깨뜨린다는 것을 볼 수 있습니다.
유지보수 화면 A 영역의 카운터 값으로 소모품 상태를 판정하고, 분석 전 · 분석 후 항목을 붙여 한 장짜리 체크리스트를 출력합니다.
- 부품마다 사용률(현재 ÷ 기준)을 계산해 100 % 이상
교체, 90 % 이상곧 교체 - 부품 준비, 그 밖양호로 판정합니다. - [ ]체크박스 형식으로 [소모품] · [분석 전] · [분석 후] 세 묶음을 출력합니다.- 맨 아래에 이번에 교체할 부품 목록을 출력합니다.
- 출력 결과를 복사해 자기 실험실 장비 이름 · 기준으로 고쳐 실물용 체크리스트로 만듭니다.
counters = {
"VWD 중수소 램프": {"now": 1870, "limit": 2000, "unit": "h"},
"펌프 피스톤 씰": {"now": 41.5, "limit": 50.0, "unit": "L"},
"샘플러 니들 시트": {"now": 9300, "limit": 10000, "unit": "회"},
"흡입 필터 (A~D)": {"now": 95, "limit": 180, "unit": "일"},
"퍼지 밸브 PTFE 프릿": {"now": 12, "limit": 10, "unit": "bar"},
}
WARN = 0.9
print("=== 나만의 점검 체크리스트 - HPLC-SIM-01 ===")
print("\n[소모품]")
for part, c in counters.items():
ratio = 0.0 # TODO 1: 사용률 계산
state = "?" # TODO 1: 교체 / 곧 교체 / 양호 판정
print(f"- [ ] {part:16s} {c['now']:>7} / {c['limit']} {c['unit']:3s} {state}")
# TODO 2: [분석 전] · [분석 후] 항목 출력
# TODO 3: 교체할 부품 목록 출력# 유지보수 화면(모드 > 유지보수)의 카운터 - 시뮬레이터 장비 HPLC-SIM-01
counters = {
"VWD 중수소 램프": {"now": 1870, "limit": 2000, "unit": "h"},
"펌프 피스톤 씰": {"now": 41.5, "limit": 50.0, "unit": "L"},
"샘플러 니들 시트": {"now": 9300, "limit": 10000, "unit": "회"},
"흡입 필터 (A~D)": {"now": 95, "limit": 180, "unit": "일"},
"퍼지 밸브 PTFE 프릿": {"now": 12, "limit": 10, "unit": "bar"}, # 퍼지 열고 5 mL/min 물에서 압력 강하
}
WARN = 0.9 # 기준의 90 % 를 넘으면 "곧 교체"
print("=== 나만의 점검 체크리스트 - HPLC-SIM-01 ===")
print("\n[소모품]")
due = []
for part, c in counters.items():
ratio = c["now"] / c["limit"]
if ratio >= 1.0:
state = "교체"
due.append(part)
elif ratio >= WARN:
state = "곧 교체 - 부품 준비"
else:
state = "양호"
print(f"- [ ] {part:16s} {c['now']:>7} / {c['limit']} {c['unit']:3s} ({ratio * 100:5.1f} %) {state}")
print("\n[분석 전]")
for item in ["용매 잔량 > 이번 분석 사용량 x 1.5", "폐액 통 여유 > 사용량 x 1.5, 뚜껑 · 배수관 고정",
"피팅 · 누설 받침 마른 상태", "압력 = 평소 값 +-10 %, 리플 RSD <= 0.5 %",
"램프 사용 시간 · 강도 시험 Pass, 노이즈 <= 0.1 mAU"]:
print(f"- [ ] {item}")
print("\n[분석 후]")
for item in ["완충액 -> 물 많은 용매로 세척", "보관 용매(유기 용매 많음)로 교체",
"램프 끄기 -> 유속 낮추기 -> 펌프 정지 -> 온도조절기 끄기",
"장비 사용 기록(logbook) 작성 - 압력 · 이상 · 교체 부품"]:
print(f"- [ ] {item}")
print(f"\n이번에 교체할 부품: {', '.join(due) if due else '없음'}")램프(93.5 %)와 니들 시트(93.0 %)는 곧 교체 - 부품 준비, 퍼지 밸브 프릿(120 %)은 교체 입니다. 피스톤 씰(83 %)과 흡입 필터(53 %)는 양호합니다. "곧 교체" 단계를 두는 이유는 부품을 미리 주문해 두기 위해서입니다. 분석 도중 램프가 꺼지면 시퀀스 전체를 다시 해야 합니다. 실물용으로 바꿀 때는 부품 이름 · 기준을 자기 장비 매뉴얼과 기관 SOP 값으로 고치고, [분석 전] 에 "보호구 착용" · "SDS 확인" 같은 안전 항목을 더합니다.
인산염 완충액(채널 A) / 메탄올(채널 B) 그래디언트 분석을 마쳤습니다. 장비를 하룻밤 보관하는 순서로 가장 알맞은 것은?
- 펌프 정지 → 램프 끄기 → 메탄올 100 % 로 세척 → 기록
- 채널 A 를 물로 바꿔 퍼지 → 물:메탄올 90:10 세척 → 메탄올:물 80:20 → 램프 끄기 → 유속 낮추기 → 펌프 정지 → 온도조절기 끄기 → 기록
- 메탄올:물 80:20 으로 바로 바꿔 세척 → 램프 끄기 → 펌프 정지
- 완충액 그대로 0.1 mL/min 으로 흘려 둔다
정답 보기
② — 완충액은 염이 없는 물이 많은 용매로 먼저 빼고(라인 · 펌프 헤드 포함), 그다음 유기 용매가 많은 보관 용매로 바꿉니다. 그 뒤 램프 → 유속 → 펌프 → 온도 → 기록 순서입니다. ① · ③ 은 완충액을 곧바로 유기 용매와 만나게 해 석출 위험이 있고, ④ 는 염이 든 이동상을 밤새 두는 것이라 피합니다.유지보수 카운터에서 VWD 램프가 1950 / 2000 h 이고 강도 시험은 Pass 입니다. 내일 20 시간짜리 시퀀스를 돌려야 할 때 가장 알맞은 판단은?
- 강도 시험이 Pass 이므로 아무것도 하지 않는다
- 카운터를 0 으로 초기화해 경고를 없앤다
- 새 램프를 준비해 두고, 시퀀스 전 노이즈 · 강도 시험을 다시 확인한다(필요하면 미리 교체)
- 램프를 끄지 않고 계속 켜 두어 예열 시간을 아낀다
정답 보기
③ — 97.5 % 로 "곧 교체" 단계입니다. 강도 시험이 Pass 라 바로 바꿀 필요는 없지만, 긴 시퀀스 도중 램프가 약해지면 전체를 다시 해야 하므로 부품을 준비하고 시작 전에 다시 확인합니다. ② 는 기록을 거짓으로 만드는 일이고, ④ 는 램프 수명을 더 줄입니다.실습 (실물)#
실물 1260 실습은 담당자(조교 · 장비 관리자)의 입회 아래, 이 강좌의 시뮬레이터 이수 체크를 마친 사람만 합니다. 첫 실물 실습은 분석보다 점검 · 종료 절차를 실물로 한 번 해 보는 것을 목표로 합니다.
- 담당자와 함께 장비 사용 기록부에서 어제의 압력 · 램프 시간 · 보관 상태를 읽습니다. 이것이 오늘의 "평소 값" 입니다.
- 2교시의 분석 전 점검 체크리스트를 실물로 수행합니다. 용매 잔량은 병 눈금으로, 누설은 피팅 · 누설 받침을 눈으로 확인합니다. 시뮬레이터에 없던 것(병 라벨 글씨, 흰 결정, 냄새)이 있으면 기록합니다.
- 담당자가 정한 메서드로 평형하고 압력 · 리플 · 베이스라인을 기록합니다. 시뮬레이터 값과 다른 것은 정상입니다 — 자기 장비의 정상값을 기록하는 것이 목적입니다.
- 실습 D 에서 만든 체크리스트를 실물 장비 이름 · 기준으로 고치고, 담당자 확인 서명을 받습니다.
- 담당자 입회 아래 2교시 종료 순서대로 장비를 종료하고 사용 기록을 작성합니다.
퍼지 밸브를 일부러 열어 두거나 피팅을 풀어 압력을 재는 구간 분리 시험은 실물에서 학생 혼자 하지 않습니다. 고압 용매가 튀거나 플로셀 · 컬럼이 상할 수 있습니다. 실물 고장 진단은 담당자가 하고, 학생은 관찰 · 기록 · 보고까지 합니다.
자주 나는 오류와 해결#
1) 구간 분리 시험 뒤 누설 오류로 펌프가 멈춤#
[Leak] Leak detected - Multicolumn Thermostat (column inlet fitting)
[Pump] Pump stopped by leak sensor- 원인: 다시 연결하면서 피팅 조임 단계를 건너뛰었거나, 페룰이 다른 깊이로 눌린 피팅을 다른 포트에 끼웠습니다(ch02).
- 해결: 3D 뷰에서 오류 모듈의 피팅을 클릭해 조임 상태를 확인하고 조입니다. 누설 받침의 액체를 닦은(시뮬레이터: 누설 받침 닦기) 뒤 펌프를 다시 켭니다. 실물에서는 펌프 정지 · 압력 0 확인 후 피팅을 손으로 조이고, 더 새면 담당자에게 알립니다.
2) 진단 중 압력 상한에 계속 걸려 펌프가 멈춤#
[Pump] Pressure above upper limit (350 bar) - pump stopped- 원인: 막힌 장비에 기준 유속 1.0 mL/min 을 그대로 넣었습니다.
- 해결: 상한을 올리지 않습니다. 구간 분리 시험을 0.5 mL/min 으로 하고, 정상 표의 압력도 절반으로 보고 비교합니다(압력은 유속에 비례).
3) 컬럼을 역방향으로 씻은 뒤 검출기 노이즈 · 압력이 늘어남#
[VWD] noise 0.42 mAU (limit 0.10) [Pump] Pressure 131 bar (was 118 bar before backflush)- 원인: 역방향 세척 때 컬럼 출구(원래 입구)를 검출기에 연결해, 프릿에 쌓였던 입자가 캐필러리 · 플로셀로 갔습니다.
- 해결: 역방향 세척은 컬럼 출구를 폐액 비커로 돌려서 합니다. 이미 들어갔다면 플로셀을 세척하고, 컬럼 출구 ~ 검출기 캐필러리를 구간 분리로 확인합니다.
4) 다음 날 켜자마자 압력이 평소보다 높고 계속 오름#
[Pump] Pressure 165 -> 182 -> 204 bar at 1.000 mL/min (expected 118 bar)
[Logbook] previous user: storage solvent "MeOH 80 %" - buffer wash: not recorded- 원인: 전날 완충액 메서드 뒤 물 세척 없이 보관 용매로 바꿔 염이 석출되었습니다.
- 해결: 유속을 0.2 mL/min 으로 낮추고 따뜻한 물(염 없음) 로 오래 씻어 염을 녹입니다(시뮬레이터: 석출 세척 도구). 그래도 높으면 구간 분리로 막힌 곳을 찾습니다. 사용 기록에 원인을 적고, 종료 절차의 1 단계를 빠뜨리지 않습니다.
5) 램프를 교체했는데 카운터 경고가 계속 뜸#
[Maintenance] VWD lamp: 2003 h / 2000 h - replace
[VWD] Intensity test: Pass- 원인: 램프는 바꿨지만 유지보수 화면에서 카운터 초기화를 하지 않았습니다.
- 해결: <b>모드 › 유지보수</b> A 영역 램프 줄 → 카운터 초기화, D 영역에 교체 기록을 남깁니다. 반대로 램프를 바꾸지 않고 초기화만 하면 기록이 거짓이 되므로 하지 않습니다.
6) 조치를 했는데 재검증이 "복구 실패"#
[Fault] F-P01 verify FAIL: RT 5.02 min (5.16 +/- 2 %), drift 6.1 mAU/h (limit 2.0)
[Column] Equilibration 34 %- 원인: 원인은 고쳤지만 평형이 끝나기 전에 재검증 주입을 했습니다. 부품 교체 · 유로 분리 뒤에는 컬럼 · 검출기가 다시 안정될 시간이 필요합니다.
- 해결: 기준 메서드로 10 컬럼 부피(약 16 min) 이상 평형하고, 압력 안정 ·
베이스라인 안정· Balance(<kbd>Z</kbd>) 뒤에 다시 주입합니다.
7) Python 구간 분리 계산에서 원인이 엉뚱한 구간으로 나옴#
사례 2: ...
=> 원인 구간: 플로셀 · 폐액 라인 (+1 bar)- 원인:
segment_drops()에서 빼는 순서를 거꾸로(p[i + 1] - p[i]) 써서 강하가 모두 음수가 되었거나, 정상 목록과 사례 목록의 지점 순서가 다릅니다. - 해결: 강하 = (이번 지점 압력) − (한 칸 펌프 쪽 지점 압력) 이 양수인지 출력해 봅니다. 목록은 언제나 "전체 → 검출기 입구 → … → 펌프 출구" 순서로 맞춥니다.
과제 / 팀 미션#
아래 다섯 문제를 풀고, 각 답의 근거를 한 줄씩 적어 제출합니다. 고장 시나리오 3문제의 진단 보고서(PDF)와 실습 D 로 만든 체크리스트도 함께 냅니다.
- 압력이 높을 때 "뒤에서부터 끊어 보기" 에서 처음 끊는 곳은? ① 펌프 출구 ② 샘플러 출구 ③ 검출기 입구 ④ 퍼지 밸브
- 모든 피크가 똑같이 갈라졌습니다. 가장 먼저 의심할 것은? ① 특정 성분의 pH 상호작용 ② 컬럼 입구 공극 · 막힌 프릿 ③ 램프 노후 ④ 검출 파장
- 블랭크(주입 0 µL)에서도 같은 위치에 작은 피크가 나옵니다. 원인으로 가장 알맞은 것은? ① 앞 주입의 캐리오버 ② 이동상(물 · 용매) 오염 ③ 시료 과부하 ④ 니들 시트 막힘
- 장비 종료 순서로 옳은 것은? ① 펌프 정지 → 유속 낮추기 → 램프 끄기 → 온도조절기 끄기 ② 램프 끄기 → 유속 낮추기 → 펌프 정지 → 온도조절기 끄기 ③ 온도조절기 끄기 → 펌프 정지 → 램프 끄기 ④ 순서는 상관없다
- 퍼지 밸브를 연 상태로 물 5 mL/min 을 흘렸더니 압력 강하가 14 bar 입니다. 알맞은 조치는? ① 정상이다 ② 퍼지 밸브 PTFE 프릿 교체 ③ 컬럼 교체 ④ 램프 교체
정답 보기
1-③ 검출기 쪽(뒤)부터 끊어 그 뒤의 저항을 하나씩 뺍니다. 2-② 모든 피크에 같은 이상이 있으면 유로 · 컬럼 입구 같은 물리적 원인입니다(한 피크만이면 화학적 원인). 3-② 주입하지 않아도 나오므로 시료 · 니들이 아니라 이동상 쪽입니다. 블랭크 바이알에서만 나오면 ① 캐리오버입니다. 4-② 이 강좌의 종료 순서입니다(그 앞에 세척 · 보관 용매, 뒤에 기록). 5-② 퍼지 밸브를 열면 압력이 수 bar 여야 하는데 10 bar 를 넘으면 프릿이 막힌 것입니다.목표: 고장 시나리오 5문제를 팀이 릴레이로 진단 · 복구하고, 실물 1260 첫 실습에 쓸 팀 점검표 한 장을 만듭니다. 강좌의 마지막 미션입니다.
진행
- <b>모드 › 고장 시나리오</b>(<kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>T</kbd>)에서 팀 릴레이 5문제를 시작합니다. 문제마다 담당자가 바뀝니다.
- 담당자는 ① 관찰 ② 가설까지만 혼자 하고, ③ 확인 도구를 고르기 전에 팀에게 근거를 1분 안에 설명합니다. 팀이 동의하면 진행합니다.
- 복구가 끝나면 다음 사람이 이어받습니다. 이전 사람의 C 영역 기록만 보고 장비 상태를 파악해야 합니다(인수인계 연습).
- 5문제가 끝나면
CH09_SHUTDOWN종료 시나리오를 팀이 함께 수행합니다.
역할(문제마다 돌아가며)
- 진단 담당: 5단계 기록을 채우고 도구를 조작합니다.
- 기록 담당: 장비 사용 기록(<kbd>Ctrl</kbd>+<kbd>L</kbd>)에 관찰 숫자 · 조치 · 재검증 값을 적습니다.
- 검토 담당: "한 번에 하나만 바꿨는가", "가장 싼 확인부터 했는가" 를 점검합니다.
- 안전 담당: 실물이었다면 필요한 안전 조치(펌프 정지 · 압력 0 · 보호구 · 보고)를 한 줄씩 덧붙입니다.
제출물
- 진단 보고서 PDF(<b>Report › Export PDF</b>) — 5문제의 5단계 기록, 걸린 시간, 도구 수.
- 팀 점검표 한 장 — 분석 전 · 분석 후 · 소모품 · 안전 · 이상 보고 연락처. 실습 D 출력을 바탕으로 팀의 실물 장비 기준으로 고침.
- "시뮬레이터와 실물이 다를 것 같은 점" 세 가지와 그 대비책.
평가 기준: 복구 성공(30 %) · 진단 근거의 논리와 단계 순서(30 %) · 기록의 완전성(숫자 · 인수인계 — 20 %) · 점검표의 실용성(20 %). 쓸데없이 부품을 바꾼 횟수는 감점합니다.
참고자료#
- Agilent 1260 Infinity II Quaternary Pump (G7111B) User Manual — 퍼지 밸브 · PTFE 프릿 점검과 교체, 체크 밸브, 피스톤 씰 · 씰 세척, 누설 처리. Agilent 문헌 라이브러리에서 모델 번호로 검색: https://www.agilent.com/en/support
- Agilent 1260 Infinity II Variable Wavelength Detector (G7114A) · Vialsampler (G7129A) · Multicolumn Thermostat (G7116A) User Manual — 램프 교체 · 강도 시험, 플로셀 압력 한계 · 세척, 니들 · 니들 시트 교체, 열교환기 (같은 지원 페이지에서 모델 번호로 검색)
- Agilent Lab Advisor 소프트웨어 — 모듈 진단 시험과 유지보수 카운터(EMF): https://www.agilent.com/en/product/liquid-chromatography/hplc-software-informatics/lab-advisor-software
- J. W. Dolan, "LC Troubleshooting" 칼럼, LCGC North America — 압력 · 피크 모양 · 베이스라인 문제를 증상별로 다룬 연재: https://www.chromatographyonline.com
- L. R. Snyder, J. J. Kirkland, J. W. Dolan, Introduction to Modern Liquid Chromatography, 3rd ed., Wiley (2010) — 17장 문제 해결(troubleshooting), 컬럼 관리와 보관
- Agilent, The LC Handbook — Guide to LC Columns and Method Development (컬럼 세척 · 보관, 완충액 사용 주의): https://www.agilent.com/cs/library/primers/public/LC-Handbook-Complete-2.pdf
- 사용하는 컬럼의 제조사 사용 설명서 · 성적서 — 허용 압력 · pH · 온도, 역방향 세척 허용 여부, 권장 보관 용매 (제품마다 다름)
- 안전보건공단 화학물질정보(MSDS/SDS) 검색: https://msds.kosha.or.kr · PubChem 메탄올 https://pubchem.ncbi.nlm.nih.gov/compound/Methanol · 아세토니트릴 https://pubchem.ncbi.nlm.nih.gov/compound/Acetonitrile
- Python
random.sample·random.seed: https://docs.python.org/3/library/random.html - 이 사이트의 도구: Python Playground · 3D 뷰어 · 3D 시뮬레이터
- 이전 차시: ch08 실무 실험: 조건 최적화와 방법 개발 · 강좌 처음으로: ch01 시뮬레이터 시작하기