Modbus 아래의 신호 계층: 4-20 mA, HART, 필드버스, 그리고 디스크리트 I/O
📍 현재 위치: 2부 · 공정 포착하기 — 12장. 11장은 Modbus와 S7 — 적어도 숫자를 돌려주는 디지털 프로토콜 — 을 읽었습니다. 이 장은 그 아래 한 계층 더 깊이, 그것들 밑의 물리 신호로 갑니다. 전류로 보고하는 센서, 24볼트 선인 밸브, 루프에 디지털 데이터를 겹치는 송신기 — 그리고 각각을 같은 정준의 단위 보유 태그로 안전하게 읽습니다.
숫자를 보내는 프로토콜 밑에 전기를 보내는 계층이 있습니다. 가장 오래되고 가장 흔한 산업 센서는 "1.85 bar"를 전송하지 않습니다. 4와 20 밀리암페어 사이의 전류를 전송하고, 4 mA는 범위의 바닥을, 20 mA는 꼭대기를 뜻합니다 — 디지털 표시가 아니라 바늘인 연료 게이지처럼요. 그 와이어에는 단위도, 이름도, 심지어 센서가 "나 고장 났어"라고 말할 방법조차 없습니다 — 한 가지 영리한 관례를 빼고는요. 전류가 약 3.6 mA 아래로 떨어지거나 21 위로 오르면 무언가 실패한 것입니다. 건강한 센서는 결코 그런 값을 보내지 않기 때문입니다. 24볼트 선은 더 단순합니다 — 켜짐 또는 꺼짐, 밸브 열림 또는 닫힘. 이 장은 그 물리 신호 계층을 읽고, 전류를 의미로 바꾸는 관례를 적용하고, 모든 판독값을 다른 모든 것과 같은 정준 태그에 안착시킵니다. 그것은 레거시 프로토콜 장과 같은 일입니다 — 엣지 계층이 와이어가 누락하는 것을 공급하는 — 다만 여기 와이어는 더 많이 누락합니다.
이 장에서 다루는 내용
11장은 원시 정수를 돌려주는 레거시 디지털 프로토콜 — Modbus와 S7 — 에 닿았습니다. 그러나 계기 랙으로 걸어가 보면 많은 신호는 디지털 프로토콜에 전혀 닿지 않습니다. 그것들은 I/O 모듈이나 게이트웨이가 Modbus 모양의 무언가가 존재하기 전에 변환하는 아날로그 전류, 전압 선, 필드버스 텔레그램입니다. 우리는 다음을 다룹니다.
- 물리 신호 계층 — 왜 4-20 mA 전류, 24V 선, HART 오버레이, Profibus 텔레그램이 디지털 프로토콜 아래에 앉는지, 그리고 왜 그것들이 Modbus보다 더 적은 의미를 나르는지.
- 4-20 mA 전류 루프 — 밀리암페어에서 공학 단위로의 선형 스케일링, 그리고 아날로그 계층의 품질 플래그 사촌인 NAMUR NE43 고장 검출을, 실행 가능한 코드로.
- HART — 4-20 mA 루프에 겹쳐진, 기본 변수를 그 단위 및 디바이스 정체성과 함께 자원하는 디지털 신호로, 그 밑의 맨 전류보다 더 많이 나름.
- 디스크리트 24V I/O와 필드버스 — 단일 비트 신호와 Profibus/Profinet의 주기적이고 이미 타입 지정된 데이터.
- 정준 모델에 안착시키기 — 모든 신호-계층 채널을 바이오리액터 정보 모델이 선언하는 같은 단위 보유 태그에,
examples/chapters/12-the-signal-layer/signal_layer.py를 통해 매핑.
디지털 프로토콜 아래
레거시 스키드 장은 한 계층 아래에서 더 날카로워지는 요점을 폈습니다. 프로토콜은 당신이 가정하는 것보다 적은 의미를 나르고, 엣지 계층이 나머지를 공급합니다. Modbus는 단위·타임스탬프·품질 없는 원시 정수를 돌려주었습니다. 그 밑의 신호 계층은 더 적게 돌려줍니다 — 흔히 숫자가 전혀 아니라, I/O 모듈이 먼저 하나로 변환해야 하는 물리량을.
일꾼은 4-20 mA 전류 루프로, 반세기 동안 지배적인 아날로그 계측 신호입니다. 압력이나 온도 송신기는 값을 보내지 않습니다. 자기 루프에 흐르는 전류를 4 mA(교정된 범위의 바닥)와 20 mA(꼭대기) 사이로 변조합니다. "살아 있는 영점(live zero)"으로 0이 아니라 4 mA를 고른 것은 의도적이고 영리합니다. 진정으로 영인 전류는 실제 낮은 판독이 아니라 끊긴 선을 뜻하므로, 신호 범위 자체가 기본 무결성 점검을 부호화합니다. 그러나 그 전류는 공학 단위도, 태그 이름도, 타임스탬프도, 데이터형도 나르지 않습니다 — Modbus 레지스터보다 엄격히 적은데, 그것은 적어도 누군가 데이터시트에서 읽어 낼 숫자를 담습니다. 아날로그 입력 모듈이 전류를 표본화하여 엣지 계층에 밀리암페어 단위의 부동소수를 건네고, 그 밖의 모든 것 — 어떤 물리량을, 어떤 단위로, 어떻게 스케일하여 나타내는지, 그리고 그것이 유효하기나 한지 — 은 엣지 계층의 몫입니다.
다른 세 가지 신호-계층 종류가 실제 바이오리액터 스위트를 채웁니다. HART(Highway Addressable Remote Transducer)는 같은 4-20 mA 와이어에 저수준 디지털 신호를 겹치므로, HART 송신기는 아날로그 전류 와 그 기본 변수를 실제 단위 및 디바이스 정체성과 함께 나르는 디지털 메시지를 둘 다 보냅니다 — 맨 루프가 할 수 없는 것을 자원합니다. 디스크리트 24V I/O는 단일 비트입니다. 켜지거나 꺼진 24볼트 선, 열리거나 닫힌 밸브, 작동했거나 아닌 레벨 스위치. 그리고 필드버스 — Profibus와 그 이더넷 후속 Profinet — 는 제어기와 그 필드 디바이스 사이에 주기적이고 이미 타입 지정된 공정 데이터를 나르며, 신호 계층의 더 풍부한 끝입니다. 엣지 계층의 일은 그것들 전반에 같고, Modbus 장의 것과 동일합니다. 각 신호를 플랫폼의 정준 태그로 스케일하고, 이름 붙이고, 단위 붙이고, 품질 도장 찍는 것입니다.
4-20 mA: 전류를 스케일하기, 그리고 NAMUR NE43
밀리암페어에서 의미로의 변환은 직선이고, 코드로 볼 값어치가 있습니다 — 고장 절반이 사람들이 건너뛰는 부분이기 때문입니다. 모듈 examples/chapters/12-the-signal-layer/signal_layer.py는 4 mA가 0 bar이고 20 mA가 3 bar이도록 교정된 4-20 mA 압력 송신기를 모델링합니다:
# examples/chapters/12-the-signal-layer/signal_layer.py (excerpt)
def scale_4_20(loop: Loop4to20, mA: float) -> dict:
"""Linear 4-20 mA -> engineering unit, with NAMUR NE43 fault detection."""
# NAMUR NE43: the 3.8-20.5 mA band is valid signal; outside it is a diagnosed fault,
# NOT a real reading. This is the analog layer's only 'quality flag', and the edge
# layer must assert it -- the current itself does not say 'I am broken'.
if mA < 3.6: return {"tag": loop.tag, "quality": "BAD", "fault": "under-range (sensor/loop fault)"}
if mA > 21.0: return {"tag": loop.tag, "quality": "BAD", "fault": "over-range (sensor/loop fault)"}
eu = loop.lo_eu + (mA - 4.0) / 16.0 * (loop.hi_eu - loop.lo_eu)
q = "GOOD" if 3.8 <= mA <= 20.5 else "UNCERTAIN"
return {"tag": loop.tag, "value": round(eu, 3), "unit": loop.unit, "quality": q}
선형 스케일은 뻔한 부분입니다. 12 mA는 절반이므로 1.5 bar입니다. 하중을 지는 부분은 NAMUR NE43으로, 송신기가 4-20 mA 루프에서 고장을 어떻게 신호하는지 표준화하는 업계 권고입니다. 건강한 센서는 오직 3.8-20.5 mA만 구동하므로, 그 밴드 밖의 판독은 실제 낮거나 높은 값이 아니라 진단된 센서나 루프 실패입니다(타 버린 센서는 전류를 3.6 mA 아래의 고정 하향값으로 몰고, 단락은 상향으로 몹니다). NE43은 아날로그 계층의 OPC UA Good/Uncertain/Bad 품질의 유일한 등가물이고, 엣지 계층이 단언해야 하는 것입니다 — 전류 자체는 "나 고장 났어"라고 말할 수 없고, 건강한 센서라면 결코 내지 않을 값에 앉아 있을 수 있을 뿐이기 때문입니다. 3.4 mA 고장 전류를 실제 판독인 양 스케일하는 엣지 계층은 확신에 차고, 틀리고, 범위-안처럼-보이는 압력을 기록합니다 — 정확히 레거시 장이 경고한 소리 없는 오염 실패가, 이제 한 계층 더 아래에서입니다.
HART와 필드버스: 신호 계층이 더 많이 자원할 때
모든 신호-계층 프로토콜이 맨 전류만큼 말이 없는 것은 아닙니다. HART는 중요한 중간 경우입니다. 그것은 4-20 mA 아날로그 루프를 유지하면서(그래서 레거시 아날로그-입력 시스템도 여전히 읽습니다) 디바이스의 기본 변수를 그 공학 단위와 함께, 추가 변수, 디바이스 태그, 상태 바이트를 나르는 디지털 FSK 신호를 겹칩니다. HART 온도 송신기는 디지털로 읽으면 37.05 Cel을 디바이스 정체성과 함께 건넵니다 — 단위와 정체성이 엣지 계층의 스케일링 표가 아니라 와이어 위에서 도착합니다. 따라서 HART는 의미 문제에 대한 신호 계층의 부분적 답입니다. 그것을 쓸 수 있는 곳에서는 디지털 판독을 선호하세요, 그것이 아날로그 루프가 누락하는 것을 자원하기 때문입니다.
Profibus와 Profinet은 더 풍부한 끝에 앉습니다. 필드버스 마스터가 디바이스 프로파일(GSD 파일)에 따라 필드 디바이스와 주기적이고 이미 타입 지정된 I/O를 교환하므로, 교반기의 가변 주파수 구동기는 자기 속도를 맨 전류가 아니라 min-1의 타입 지정 값으로 보고할 수 있습니다. 거래는 익숙한 것입니다. 와이어 위에 더 많은 의미, 그러나 더 복잡한 마스터와 디바이스-프로파일 의존성. 모듈은 그 스펙트럼을 명시적으로 만듭니다 — 각 신호-계층 종류에 대해 와이어가 무엇을 자원하는지 대 엣지 계층이 무엇을 더해야 하는지 기록합니다. python signal_layer.py를 실행하면 변환과 그 비교를 그대로 출력합니다:
the signal layer below Modbus — 4-20 mA, HART, discrete 24V, fieldbus
each physical signal -> a canonical, unit-bearing tag (the edge layer supplies what the wire omits)
-- 4-20 mA pressure transmitter (no unit, no identity on the wire) --
4.0 mA -> 0.000 bar [GOOD] BR101.Pressure.PV
11.6 mA -> 1.425 bar [GOOD] BR101.Pressure.PV
20.0 mA -> 3.000 bar [GOOD] BR101.Pressure.PV
3.4 mA -> --- [BAD] under-range (sensor/loop fault)
-- 4-20 mA + HART temperature transmitter (HART overlays digital PV + unit + tag) --
HART PV = 37.05 Cel device-tag=BR101.Temp.PV (unit + identity came digitally)
-- discrete 24V level switch (one bit; the edge layer names the state) --
24 V -> True BR101.LevelSwitch.High
0 V -> False BR101.LevelSwitch.High
-- Profibus DP agitator VFD (fieldbus carries cyclic, already-typed data) --
cyclic word -> 142.0 min-1 BR101.Agitation.PV (typed + unit by GSD device profile)
-- WHAT EACH SIGNAL-LAYER PROTOCOL VOLUNTEERS (True) vs the edge layer must ADD --
protocol value unit identity fault/quality
4-20 mA True False False NE43 only (edge asserts)
4-20 mA + HART True True True HART status byte
discrete 24V True False False line-fault only
Profibus DP True True True diagnostic telegram
비교 표를 이 장의 척추로 읽으세요. 네 신호-계층 종류는 와이어가 얼마나 많은 의미를 나르는지의 스펙트럼을 이룹니다. 맨 4-20 mA와 24V 비트는 값만(과 거친 고장만) 자원하므로 엣지 계층이 단위·정체성·품질을 공급하고, HART와 Profibus는 단위와 정체성을 디지털로 자원하므로 엣지 계층이 더 적게 공급합니다. 그러나 목적지는 넷 모두에 동일합니다 — 바이오리액터 정보 모델의 BR101.Pressure.PV 같은 정준의 단위 보유 태그입니다. 신호 계층은 공장의 물리학이 그 데이터 모델과 만나는 곳이고, 엣지 계층은 전류를 무언가 뜻하게 만드는 번역기입니다.
디지털 프로토콜 밑의 신호 계층: 네 물리 채널 — 맨 4-20 mA 전류(스케일되고, NE43이 고장과 실제 판독을 가름), 단위와 정체성을 디지털로 자원하는 HART 루프, 디스크리트 24V 비트, 타입 지정 데이터를 나르는 Profibus 필드버스 — 모두 엣지 계층에 의해 바이오리액터 모델이 선언하는 같은 정준 단위 보유 태그로 변환됩니다. 와이어가 나르는 의미가 적을수록 엣지 계층이 더 많이 공급해야 합니다.
저자가 AI의 도움을 받아 직접 제작한 그림입니다.
왜 중요한가
신호 계층은 바이오리액터 데이터의 놀랄 만큼 많은 부분이 실제로 발원하는 곳입니다 — 압력과 온도 송신기, 질량-유량 제어기, 레벨 스위치, 교반기 구동기 — 그리고 정확히 전류가 그토록 단순해 보이기에 부주의하게 읽힐 가능성이 가장 큰 계층입니다. 그것이 부르는 두 실패가 이 장이 막아 내는 것입니다. 첫째, 고장 검출 없는 스케일링입니다. 3.4 mA 고장 전류를 포함해 모든 밀리암페어 값을 선형 스케일하는 엣지 계층은 순전한 센서 실패인, 권위 있어 보이는 압력을 기록하고, 다운스트림 모델이나 검토자는 그것을 볼 길이 없습니다 — 그래서 NE43은 선택적 장식이 아니라 데이터 무결성 통제, 품질 플래그의 아날로그 사촌이며, 어떤 GMP 통제와도 같은 검토와 적격성 평가 아래 듭니다. 둘째, 와이어가 나르지 않는 의미를 가정하기입니다. 4-20 mA 루프는 단위도 정체성도 없으므로, 단위와 정준 이름은 전적으로 검토된 엣지 구성에서 오며, 정확히 Modbus에 대해서처럼 — 그 스케일링 표를 소수점 하나라도 틀리면 기록을 소리 없이 오염시킵니다. 옳게 하면 신호 계층은 다른 모든 소스와 같은 정준의 단위 보유, 품질 도장 찍힌 태그를 먹이므로, 다운스트림의 소프트 센서나 에이전트형 연결 도구는 판독값이 OPC UA 노드로 시작했는지 12 mA 전류로 시작했는지 구별할 수 없습니다 — 그리고 구별할 필요도 없습니다. 그 균일함이 온전한 요점입니다. 공장의 가장 지저분하고 가장 물리적인 계층이 가장 깨끗한 계층과 같은 정준 모델을 말하게 됩니다.
현실 세계에서는
신호 계층은 레거시 잡설이 아닙니다. 그것은 공장 계측의 살아 있는 다수입니다. 4-20 mA는 전 세계에서 지배적인 공정-계측 신호로 남아 있고, NAMUR NE43은 송신기가 그 루프에서 고장을 어떻게 신호하는지에 대한 보편적으로 적용되는 권고입니다 — 3.8-20.5 mA 유효 밴드와 하향/상향 고장 전류는 벤더 전반의 표준입니다 [1]. HART는 4-20 mA 루프를 버리지 않고 디지털 데이터를 더하기에 정확히 매우 큰 필드-디바이스 기반에 설치되어 있고, FieldComm Group이 그것을 Profibus 및 Profinet — 주기적 I/O의 지배적 필드버스 — 과 함께 유지합니다 [2][3]. 이 시리즈를 추동하는 RFP는 정확히 이 신호의 펼침을 — 아날로그 4-20 mA, HART, Modbus RTU/TCP, Profibus, RS-232/485, 디스크리트 24V — 자기 계기 표(압력·온도 송신기, 질량-유량 제어기, 연동 펌프, 교반기, 레벨 스위치) 전반에 이름 붙여, 실제 바이오리액터 스위트가 신호 계층을 같은 스키드 위에서 디지털 프로토콜과 섞는다는 것을 확인합니다 [4]. 두 정직한 단서가 루프를 닫습니다. 첫째, 디바이스-상태 쪽이 성숙하고 있습니다. NAMUR NE107은 NE43의 이진 고장을 넘어, HART와 OPC UA 컴패니언 스펙이 점점 나르는 더 풍부한 네-상태 디바이스 건강(Good / Maintenance Required / Out of Specification / Failure)을 표준화합니다 [1]. 둘째, 보안 이야기는 Modbus의 것과 같습니다. 아날로그 루프에는 깨뜨릴 인증이 없지만, 이 신호들을 모으는 I/O 모듈·HART 멀티플렉서·필드버스 마스터는 OT 네트워크에 앉아 NIST SP 800-82와 IEC 62443 아래 같은 존-컨듀잇 분할 의무를 물려받습니다 [5]. 오픈소스-대-상용 선도 유효합니다. 오픈소스 엣지 도구는 I/O 모듈이나 HART/필드버스 게이트웨이가 이 신호들을 디지털화한 뒤 그것들을 스케일하고 품질 도장 찍지만, 그 디지털화 하드웨어 — 아날로그-입력 카드, HART 모뎀, Profibus 마스터 — 는 벤더 장비이므로, 신호 계층은 "오픈소스가 디바이스에 닿는다"가 그것이 대체하지 않는 물리 게이트웨이와 만나는 곳입니다.
핵심 용어
- 신호 계층(signal layer) — 디지털 프로토콜 아래의 물리 계측 신호(아날로그 전류, 전압, 필드버스). I/O 모듈이나 게이트웨이가 Modbus 모양 값이 존재하기 전에 그것들을 숫자로 변환하고, 엣지 계층이 와이어가 누락하는 단위·정체성·고장 의미론을 공급함.
- 4-20 mA 전류 루프(4-20 mA current loop) — 지배적 아날로그 계측 신호: 송신기가 루프 전류를 4 mA(범위 바닥)와 20 mA(꼭대기) 사이로 변조하며, 와이어에는 단위·이름·데이터형이 없음. 4 mA의 "살아 있는 영점"은 끊긴 선(0 mA)을 실제 낮은 판독과 구별 가능하게 함.
- NAMUR NE43 — 4-20 mA 루프의 고장 신호를 표준화하는 권고: 3.8-20.5 mA 밴드는 유효 신호이고, 약 3.6 mA 미만이나 21 초과의 전류는 실제 판독이 아니라 진단된 센서/루프 고장. 아날로그 계층의 유일한 품질 플래그이며 엣지 계층이 단언해야 함.
- HART (Highway Addressable Remote Transducer) — 4-20 mA 루프에 겹쳐져 기본 변수를 그 공학 단위, 추가 변수, 디바이스 정체성, 상태 바이트와 함께 나르는 디지털 신호. 맨 전류가 누락하는 것을 자원하므로 신호 계층의 의미 문제에 대한 부분적 답.
- 디스크리트 24V I/O (discrete 24V I/O) — 단일 비트 신호: 켜지거나 꺼진 24볼트 선(밸브 열림/닫힘, 레벨 스위치 작동), 엣지 계층이 불리언 태그로 이름 붙임.
- Profibus / Profinet — 디바이스 프로파일(GSD)에 따라 제어기와 필드 디바이스 사이에 주기적이고 이미 타입 지정된 공정 데이터를 나르는 필드버스. 와이어가 타입 지정 값과 단위를 자원하는, 신호 계층의 더 풍부한 끝.
- NAMUR NE107 — HART와 OPC UA 컴패니언 스펙이 점점 나르는, NE43의 이진 고장을 넘어선 더 풍부한 디바이스-상태 신호(Good / Maintenance Required / Out of Specification / Failure)에 대한 권고.
- 엣지-계층 번역(edge-layer translation) — 각 신호-계층 채널을 플랫폼의 정준 단위 보유 태그로 스케일·이름붙이기·단위붙이기·품질도장찍기. Modbus 장과 같은 일이되, 여기 와이어가 더 많이 누락함.
이것이 이끄는 곳
우리는 이제 포착 스택의 맨 바닥 — 모든 디지털 프로토콜 밑의 물리 전류와 전압 — 에 닿았고, 그것들을 다른 모든 것과 같은 정준 태그로 끌어올렸습니다. 업스트림 그림은 완성되었습니다. 자기 기술 OPC UA 바이오리액터에서 맨 4-20 mA 루프까지, 모든 신호가 모델을 말합니다. 다음으로 우리는 제품을 정제로 따라갑니다. 다운스트림 포착: 크로마토그래피 및 여과 스키드는 Protein A 포획 주기의 적재·세척·용출·스트립 단계를 결정을 짊어진 이벤트로 바꿉니다 — 수확이 원료의약품이 되는 순간이자, 우리가 수집해 온 시계열이 정제 이야기를 들려주기 시작하는 순간입니다.