스마트팩토리 수질 관리, pH·전도도·탁도 데이터를 EASY LOGGER로 운영하는 방법

안녕하세요. pH가 7.12로 보여도 수질 상태를 바로 판단할 수는 없어요. 전도도·탁도가 같은 시각인지, 센서·PLC 주소와 단위·배율, 마지막 수신·MQTT 상태가 맞는지 함께 봐야 해요. EASY LOGGER 흐름을 전제로 하며, 모델·태그·datatype·unit·scale·Node ID·주소는 현장 매뉴얼과 승인된 필드 맵으로 확인해요. EASY LOGGER는 연결된 소스 값을 수집·기록·전달해요.
세 값을 같이 봐야 해요
화면에는 data type, 단위, scale, 수집 주기, source timestamp, 마지막 수신 시각, quality, 전달 상태를 함께 남겨 보세요. pH 7.12, 전도도 412.5 µS/cm, 탁도 18.4 NTU는 설명용 예시이며 실제 단위·배율은 계측기·PLC 설정을 따라야 해요. 예시 주기 10초에서 마지막 수신이 늦으면 별도 표시하고, bad·uncertain·timeout을 0으로 덮지 않아야 센서, PLC 매핑, 전송 단절을 이력에서 나눌 수 있어요.
데이터가 흐르는 길을 나눠요
현실적인 흐름은 수질 계측기·트랜스미터 → PLC 또는 OPC UA 서버 → EASY LOGGER → MQTT (compare HTTP API, MySQL, Firebase)와 운영 화면이에요. OPC UA를 센서의 고유 방식으로 단정하지 말고 PLC·서버가 노출한 값을 읽는 상위 구간으로 분리해 보세요. 모델과 주소·node 매핑은 현장마다 달라요. EASY LOGGER는 소스 값의 수집, 저장 이력, MQTT 전달 상태, Runtime Status와 대시보드 운영을 맡아요. 별도 게이트웨이가 센서 통신을 PLC 쪽으로 변환할 때만 EASY-LINK 같은 연결 계층을 검토하면 돼요. 한 공정에서 시작해 단계적으로 범위를 넓혀요.

수질 데이터 흐름 예시예요.

승인된 EASY LOGGER 공식 제품 이미지예요.
주소 맵과 품질을 먼저 맞춰요
아래 주소와 값은 제품 기본값이 아닌 필드 맵 설명용 예시예요. WORD 또는 UInt16 원시값에 scale을 적용한다고 가정하지만 실제 datatype과 주소 간격은 매뉴얼과 PLC·OPC UA 설정을 대조해야 해요.
| 항목 | PLC 주소(예시) | 원시값 → 표시값(예시) |
|---|---|---|
| pH | D0100 | 712 × 0.01 → 7.12 pH |
| 전도도 | D0102 | 4125 × 0.1 → 412.5 µS/cm |
| 탁도 | D0104 | 184 × 0.1 → 18.4 NTU |
D0100, D0102, D0104는 모두 예시예요. source timestamp와 EASY LOGGER 마지막 수신 시각을 구분하고 결측·품질 불량은 정상 추세와 분리해요.

세 값과 수신 상태를 보는 개념 일러스트예요.
EASY LOGGER MQTT 예제
WQ_PLC, WATER_QUALITY_WORDS, D0100·D0102·D0104·D0110과 모든 topic은 예시예요. 세 주소는 수질 원시값, D0110은 운영자 확인 플래그에 대응한다고 가정하며 실제 필드 맵과 대조해요.
READ TOPIC: WQ_PLC/WATER_QUALITY_WORDS/READ
WRITE TOPIC: WQ_PLC/WATER_QUALITY_WORDS/WRITE
READ JSON payload의 세 D 주소는 표의 원시값 예시와 대응하고 timestamp·quality는 실제 계약과 대조해야 해요.
{"plc_name":"WQ_PLC","config_name":"WATER_QUALITY_WORDS","data_type":"word","timestamp":"2026-08-05T10:15:00+09:00","values":{"D0100":712,"D0102":4125,"D0104":184},"quality":"good"}
이 JSON은 제품 기본 payload가 아닌 READ mapping 예시예요. 다음 WRITE는 운영자 확인 플래그 테스트예요.
{"plc_name":"WQ_PLC","config_name":"WATER_QUALITY_ACK","data_type":"word","values":{"D0110":1}}
위 WRITE JSON의 D0110은 쓰기 주소 예시예요. 쓰기 가능 여부와 허용값은 PLC 인터록·수동 절차로 확인해요.
Subscribe to the WRITE Topic.
테스트 주소만 사용합니다.
최소 권한만 부여합니다.
허용 주소 범위를 제한합니다.
PLC 인터록을 확인합니다.
수동 복구 절차를 준비합니다.
Automatic Topic Preview에서 topic 생성을, Runtime Status에서 broker와 마지막 전달 상태를, Payload Log에서 timestamp·주소·quality를 확인해요. 외부 수신 측 소비는 수신 로그로 따로 대조해요.
EASY LOGGER OPC UA 예제
이 예제는 PLC 또는 OPC UA 서버가 값을 node로 노출하고 EASY LOGGER가 읽는 구조예요. 다음 블록은 D0100·D0102·D0104를 UInt16으로 읽고 D0110을 확인 플래그로 쓰는 예시예요.
ENDPOINT (예시): opc.tcp://192.0.2.50:4840/water-quality/
NODE ID pH (예시): ns=2;s=WQ_PLC/WaterQuality/D0100
NODE ID 전도도 (예시): ns=2;s=WQ_PLC/WaterQuality/D0102
NODE ID 탁도 (예시): ns=2;s=WQ_PLC/WaterQuality/D0104
NODE ID 쓰기 (예시): ns=2;s=WQ_PLC/WaterQuality/D0110
DATATYPE (예시): UInt16
READ MAPPING (예시): D0100·712 × 0.01 → pH 7.12
READ MAPPING (예시): D0102·4125 × 0.1 → 전도도 412.5 µS/cm
READ MAPPING (예시): D0104·184 × 0.1 → 탁도 18.4 NTU
WRITE MAPPING (예시): D0110·1 → 운영자 확인 플래그
Automatic Node Preview에서 endpoint·Node ID·datatype과 권한을, Runtime Status에서 서버 연결·마지막 읽기·품질 상태를 확인해요. 오래됐거나 bad인 값은 정상값으로 취급하지 않고 쓰기 노드는 승인된 PLC 로직과 수동 절차 안에서만 검증해요.
테스트 노드만 사용합니다.
최소 권한만 부여합니다.
허용 노드 범위를 제한합니다.
PLC 인터록을 확인합니다.
수동 복구 절차를 준비합니다.
운영 체크리스트
- 측정 검증 (센서 데이터 수집): 센서·트랜스미터와 PLC 원시값, 모델·단위·datatype·scale을 같은 기준으로 확인해요.
- 통신 검증 (통신 장애 점검): PLC·OPC UA endpoint, 주소·Node ID. quality를 확인해요.
- 전달 검증: MQTT READ topic, WRITE 권한, broker, Runtime Status와 Payload Log, 수신 측 로그를 대조해요.
- 이력 비교 (데이터 추세 분석): 세 값을 같은 시간 구간으로 비교하고 지연·결측을 분리해요.
- 에스컬레이션·수동 복구: stale·매핑 불일치는 자동 조작으로 이어가지 않고 인터록·승인·수동 절차로 넘겨요. 이 글만으로 펌프·밸브 동작이나 규제 준수를 보장하지 않아요.
현장 연결 가능 여부를 확인할 때는 센서 모델, PLC 태그 주소표, OPC UA Node ID, datatype·unit·scale, 주기, MQTT broker·권한, 이력 보존 기준을 적어 보세요. PLC·OPC UA가 값을 이미 노출하면 EASY LOGGER 중심으로, 별도 센서 연결 변환이 필요할 때만 EASY-LINK 계층을 판단하면 돼요.
여기까지 스마트팩토리 수질 데이터를 운영하는 기준을 정리해 봤어요. 숫자 세 개에 매핑, 시각, 품질, 전달 상태와 이력을 붙여야 다음 점검 단계가 선명해져요.