본문으로 건너뛰기

M-Bus (미터링)

M-Bus (Meter-Bus) 는 EN 13757 으로 표준화된 유틸리티 미터링 전용 통신 규약입니다. 열량계 / 가스 미터 / 전력량계 / 수도 미터가 주력 시장입니다.

게이트웨이의 M-Bus 드라이버는 M-Bus over TCP (M-Bus master 게이트웨이를 통한 wireless 또는 wired 미터에서 TCP 로 변환된 형태) 를 지원합니다.


등록 폼 입력값

입력 칸무엇을 적나요예시
IP 주소M-Bus 게이트웨이 IP192.168.0.150
포트M-Bus TCP 포트10001 (Relay / Sentec / ETM 류 제조사 표준)
보드레이트 (baudrate)게이트웨이 ↔ 미터2400 (표준) / 9600
응답 타임아웃 (request-timeout)미터 응답 대기 (ms)5000
미터 한 개 vs 여러 개

M-Bus 한 라인에는 최대 250 개 미터를 달 수 있습니다. 게이트웨이는 한 “연결” 에 여러 미터를 동시 등록할 수 있도록 미터 단위 주소 (primary 또는 secondary) 를 태그 측 표기에 포함합니다.


태그의 PLC 주소 표기

M-Bus 는 미터마다 다양한 “레코드” (instantaneous value, 누적값, 단위 등) 를 가집니다. 표기는 <미터선택>:<레코드> 두 부분으로 나뉩니다.

미터 선택

표기의미
addr:5Primary address 5
select:12345678:KAM:01:04Secondary 선택 — <id>:<mfg>:<ver>:<med>
select:12345678Secondary id 만 (mfg/ver/med 는 와일드카드 FF)

mfg 는 3 자리 제조사 코드 (예: KAM = Kamstrup), ver 는 펌웨어 버전, med 는 미디엄 (1=Oil, 4=Heat, 7=Water 등).

레코드 (data block index)

미터의 응답에는 여러 데이터 블록 (DIB/VIB) 이 있고 순서대로 0, 1, 2, ... 인덱스가 붙습니다. 게이트웨이는 인덱스 + 서브필드 표기로 노출합니다.

표기의미
1:0데이터 블록 1 의 0 번 필드 (대개 “현재 값”)
1:unit데이터 블록 1 의 단위 (문자열)
1:tariff데이터 블록 1 의 tariff (요금 구분)
1:storage데이터 블록 1 의 storage number

전체 표기 예: addr:5:1:0 — primary 5 미터의 데이터 블록 1 의 값.

또는: select:12345678:KAM:01:04:3:0 — Kamstrup 열량계의 데이터 블록 3 의 값.


데이터 형식 매칭

M-Bus 값데이터 형식형식 보조
누적값 / 측정값 (실수)FloatREAL
정수형 카운터IntegerDW (32-bit) 또는 (비움)
단위 / 제조사 코드StringSTR[8]
Tariff / Storage 번호Integer(비움)

M-Bus 미터는 BCD / 32-bit 정수 / 64-bit 정수 / IEEE 실수 등 다양한 인코딩을 섞어 씁니다. 드라이버가 DIB / VIB 헤더로 자동 디코딩 후 “물리값” 으로 노출하므로 대부분 Float : REAL 로 받으시면 됩니다.


흔한 문제와 해결

증상 / 메시지가능한 원인해결
“Address not responding”primary 가 미사용 / 충돌게이트웨이 측 “M-Bus scan” 으로 실제 응답하는 primary 확인
“Invalid secondary”secondary 4 필드 (id/mfg/ver/med) 중 하나 오타미터 라벨의 8자리 시리얼과 라벨에 적힌 mfg 3 글자 코드 재확인
값이 너무 큼 / 작음 (1000 배)scaling 오류M-Bus 는 보통 자동 scaling. 그래도 이상하면 계산식 으로 보정
“Timeout” 자주 발생보드레이트 불일치게이트웨이 ↔ 미터 보드레이트 통일 (대부분 2400)
데이터 블록 번호 불명확미터마다 순서가 다름게이트웨이의 “M-Bus telegram view” 로 raw 응답을 보고 인덱스 매핑
Primary vs Secondary 어느 쪽?

한 라인에 미터가 5~10 개 이내라면 primary 가 단순합니다. 100+ 미터를 운영하거나 primary 가 동적으로 바뀌는 시스템이라면 secondary (시리얼 기반) 가 안정적입니다.


자주 쓰는 예시

열량계 (heat meter) 한 대의 표준 등록:

태그 이름주소데이터 형식형식 보조
누적 열량 (kWh)addr:5:1:0FloatREAL
누적 유량 (m³)addr:5:2:0FloatREAL
순시 출력 (kW)addr:5:3:0FloatREAL
공급 온도 (°C)addr:5:4:0FloatREAL
환수 온도 (°C)addr:5:5:0FloatREAL
미터 일련번호addr:5:0:idStringSTR[8]

더 자세한 예제 / 자동화 등록

고급 — REST API 의 M-Bus 예제를 참고하세요.