TI-6111C/TI-9211C가 소수점 5자리까지 반복되는 현상의 원인 규명. field_hist 원본 대조로 데이터·이관·OPC·하드웨어 기각, P2(low+F0) 대조군 실측으로 RTD 레인지 설정(high 1000°C스팬 vs low 500°C스팬)이 분해능·정확도 2배 차이의 단독 원인임을 확정. 해법=레인지를 low로 변경. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
6.7 KiB
6.7 KiB
PT100 RTD 온도값 양자화 원인 분석 — RTD 레인지 설정 문제
작성일: 2026-06-12 대상: TI-6111C(P6/C3), TI-9211C(P9/C4) 등 일부 온도점의 값이 소수점 5자리까지 반복되는 현상 결론: 데이터·이관·OPC·하드웨어 모두 정상. 원인은 해당 채널의 RTD 입력 레인지가 불필요하게 넓은 "high(-184~816°C)"로 설정된 것. 레인지를 "low(-184~316°C)"로 바꾸면 분해능·정확도가 동시에 2배 개선됨.
1. 발단 (현상)
hc900.history_table에서 TI-6111C.PV의 24시간(2026-05-09, KST) 최대값 84.14166이 30초 간격으로 정확히 46회 반복됨. "현장 실데이터인데 소수점 5자리까지 수십 번 동일할 수 있는가?"라는 의문에서 출발.
- 하루 distinct 값이 단 6개(83.808 / 83.875 / 83.941 / 84.008 / 84.075 / 84.142), 간격 일정(0.06677).
2. 데이터 출처 확인
- 같은 PostgreSQL 서버에 별도 DB
field_hist= 신암정유㈜ Experion 히스토리안 덤프 (dtat 범위 2026-02-05~06-05, local=KST).- 구조:
ptlist(태그) →mapping(pid→tid/oit) →tblist(cont001017) →colNN).cont0NN(dtat + col01 - 예: TI-6111C.PV =
/ASSETS/P6/TI-6111C.PV=cont009.col48.
- 구조:
field_hist원본과hc900.history_table값이 완전히 일치 → 이관/저장 artifact 아님. 양자화는 원본부터 존재.- 출처 체인: 센서(PT100) → HC900 → Experion 서버 → OPC Classic → DB 서버 덤프.
3. 가설 검증 (기각 과정)
| 가설 | 검증 | 결과 |
|---|---|---|
| 데이터 이관/저장 손상 | field_hist 원본과 일치 | ❌ 기각 |
| 전송(OPC Classic/Experion) 양자화 | 양자화가 저항(Ω) 영역에서 일정(°C는 변해도 Ω 고정). OPC/Experion은 °C(EU)만 봄 | ❌ 기각 |
| EU 레인지 스케일링 | TI-6111C(0 |
❌ 기각 |
| "온도종류"/계기 둔감 | PICA-6111(압력)·P10 온도 8채널은 풀 해상도(연속) | ❌ 기각 |
| 컨트롤러 하드웨어 세대(C3 구형 vs C4 신형) | 양자화 TI-9211C와 연속 TI-10111C가 둘 다 C4 | ❌ 기각 |
| 입력 모듈 버전 차이 | P9·P10 동일 버전 AI 모듈 | ❌ 기각 |
| ADC 비트수 부족(12-bit) | 데이터시트상 15-bit | ❌ (비트수 자체는 충분) |
4. 핵심 — 센서/ADC/필터/레인지의 역할 분리
- PT100 센서: 아날로그(온도비례 연속저항). 양자화 안 함.
- 양자화 발생 지점: HC900 Universal Analog Input 모듈의 ADC + 선형화(저항→디지털). 저항 영역에서 일정한 격자.
- 모듈 분해능: ControlEdge HC900 Universal Analog Input = 15-bit.
- LSB = (RTD 레인지 저항 스팬) ÷ 2^bits → 레인지가 넓을수록 LSB가 거칠어짐.
데이터시트(11p) RTD 정확도/레인지 (100 Pt.)
| 레인지 | °C 범위 | °C 스팬 | 정확도(±°C) |
|---|---|---|---|
| low | -184 ~ 316 | 500 | ±0.5 |
| mid | -184 ~ 649 | 833 | ±0.8 |
| high | -184 ~ 816 | 1000 | ±1.0 |
주의: 위 표의 0.5/0.8/1.0은 정확도(accuracy, 참값 대비 오차) 이며, 분해능(resolution, 최소 스텝)과 별개. 분해능(
0.030.066°C)이 오히려 정확도(±0.5°C)보다 더 곱다.
5. 결정적 실측 (필터 0 고정, 레인지만 비교)
P2 채널들은 low 레인지(-184~316°C) + FILTER 0 으로 설정되어 있어, 필터를 0으로 고정한 채 레인지 효과만 단독 분리 가능 (대조군).
| 그룹 (설정) | 채널 | °C_LSB | Ω_LSB |
|---|---|---|---|
| P2 (low, F0) | TICA-2111, TI-2111A, TI-2111B, TIA-2121A, TI-2121B, TI-2121C | 0.0329 (6채널 동일) | 0.0126 Ω |
| 거친 기준 (F0) | TI-6111C | 0.0660 | 0.0253 Ω |
| 거친 기준 (F0) | TI-9211C | 0.0656 | 0.0252 Ω |
- P2 6채널 모두 0.0126Ω로 일치, TI-6111C·TI-9211C는 정확히 2.0배 거친 0.0253Ω.
- 양쪽 다 FILTER 0 → 차이는 레인지 단독 효과.
- °C 스팬 비율 low:high = 500:1000 = 정확히 2배 → 관측 LSB 비율(2.01배)과 일치 → TI-6111C·TI-9211C는 "high" 레인지, P2는 "low" 레인지 임이 수치로 확정.
6. 최종 결론 (완결 모델)
| 무엇이 | 무엇으로 결정 |
|---|---|
| 분해능(LSB) | RTD 레인지 (low=0.033°C 고움 / high=0.066°C 거침) |
| 정확도 | RTD 레인지 (low ±0.5°C / high ±1.0°C) |
| 연속 vs 양자화 "겉모습" | 입력 FILTER (0=raw 격자 노출 / 1=디지털 평활로 연속처럼 보임) |
- TI-6111C·TI-9211C가 거친 진짜 이유: 동작점이 84°C인데 RTD 레인지가 불필요하게 넓은 high(-184~816°C) 로 설정됨 → 15-bit를 1000°C에 펴 쓰니 LSB 2배 거침 + 정확도 ±1.0°C.
- P10(TI-10111x)이 연속처럼 보이는 이유: FILTER 1(평활). 참 분해능은 별개이며 필터는 겉모습 + 응답 지연만 추가(참 정확도는 ADC/레인지가 결정).
- TI-6111C가 6레벨로 보이는 이유: high 레인지(거친 LSB) + 안정 공정(하루 0.33°C). 같은 필터 0이라도 P2 민감단처럼 넓게 움직이면 distinct가 많아짐.
7. 권장 조치
TI-6111C, TI-9211C(및 동일 증상 채널)의 RTD 입력 레인지를 "100 Pt (low, -184~316°C)"로 변경.
- 동작점 84°C가 low 범위에 충분히 포함됨.
- 효과: 분해능 2배 개선(0.066 → 0.033°C) + 정확도 2배 개선(±1.0 → ±0.5°C).
- 필터·센서·모듈 교체 불필요. HC900 Designer의 레인지 파라미터 변경만으로 해결.
- (선택) 겉보기 평활이 필요하면 FILTER도 정책적으로 통일. 단, 필터는 참 분해능을 올리지 못하고 응답을 느리게 함.
더 높은 raw 분해능이 필요하다면 (레인지 외 옵션)
- PT1000 센서(저항 10배 → 같은 ADC에서 °C/LSB ~10배 개선), 또는 고분해능 입력 모듈. 단 동일 모듈 공유 시 전 채널 동일 적용.
부록 A. 참고 수치
- PT100 IEC 60751: R(T)=100(1+A·T+B·T²), A=3.9083e-3, B=-5.775e-7. dR/dT ≈ 0.379
0.388 Ω/°C (0100°C). - 15-bit = 32768 counts. LSB(°C) ≈ 레인지 °C 스팬 ÷ 유효 counts.
- 관측 LSB: low 레인지 ≈ 0.0126Ω/0.033°C, high 레인지 ≈ 0.0253Ω/0.066°C.
부록 B. 조회 경로 (재현용)
- 원본 DB:
postgresql://.../field_hist - 태그→컬럼:
ptlist.ptname→mapping(pid→tid,oit)→tblist(tid→tblname)→cont0NN.colNN- TI-6111C.PV=cont009.col48, TI-9211C.PV=cont013.col13, TICA-2111.PV=cont005.col20, TI-10111C.PV=cont015.col01
- 컨트롤러 매핑:
hc900.tag_metadata.controller_id(TI-6111C=C3, TI-9211C/TI-10111x=C4, TICA-2111=C2) - 양자화 LSB 측정: 해당 컬럼의 distinct 값 정렬 후 인접 최소 간격(min gap) → PT100 dR/dT로 Ω 환산.