Files
HC900-Crawler/docs/PT100-RTD-양자화-원인분석-RTD레인지설정.md
windpacer fc197465d4 docs: PT100 RTD 온도값 양자화 원인분석 — RTD 레인지(high/low) 설정 문제
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>
2026-06-12 12:21:31 +09:00

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) → cont0NN(dtat + col01colNN).
    • 예: 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(0120) vs TICA-6111A(0500) 레인지 다른데 °C step 동일 기각
"온도종류"/계기 둔감 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.3790.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.ptnamemapping(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로 Ω 환산.