BACnet과 Modbus 비교 BACnet Modbus

시스템 통합 담당자가 가장 자주 접하는 두 프로토콜입니다. 둘 다 배선을 통해 장치 사이에 값을 전달한다는 같은 문제를 정반대 방향에서 해결합니다. Modbus는 1979년 공장 현장에서 등장했으며 작고 단순하고 보편적입니다. BACnet은 1995년 건물을 위해 만들어졌으며 규모가 크고 명확한 구조를 가지며 스스로를 설명합니다. 현장 장비가 이미 프로토콜을 정해 두므로 둘 중 하나를 직접 선택할 일은 드뭅니다. 하지만 차이를 정확히 알면 배선 전에 통합 비용을 가늠할 수 있습니다. 가장 근본적인 차이는 Modbus 레지스터에는 의미 정보가 없지만 BACnet 객체는 자신을 설명한다는 점입니다.

두 가지 철학: 레지스터와 객체

Modbus는 번호가 붙은 슬롯으로 이루어진 네 개의 평면 테이블을 노출합니다. 단일 비트인 코일과 이산 입력, 16비트 워드인 입력 레지스터와 가 전부입니다. 40012는 16비트일 뿐이며, 프로토콜에는 이름이나 단위, 스케일 정보가 없습니다. 552를 "55.2 °F"로 변환하려면 통신 외부의 PDF에 있는 제조사 레지스터 맵이 필요합니다. 처음 보는 Modbus 장치를 읽으면 범례 없는 숫자 격자만 얻습니다.

BACnet은 이름이 있는 속성을 가진 형식 지정 객체를 노출합니다. 온도는 Present_Value가 실수이고 Units 속성에 degrees-fahrenheit가 명시되며 Object_Name과 Description이 용도를 설명하는 Analog Input 객체입니다. 설명은 데이터와 함께 전달됩니다. 처음 보는 BACnet 장치를 탐색해도 각 포인트가 무엇인지 장치가 알려 줍니다. 자기 기술 정보가 별도 문서가 아니라 프로토콜의 일부이기 때문입니다. 이 한 가지 설계 선택이 이 페이지의 거의 모든 다른 차이로 이어집니다.

하나의 물리 포인트를 두 방식으로 표현 화씨 55.2도를 측정하는 급기 온도 센서 하나가 위쪽에서 두 패널로 연결됩니다. 왼쪽 Modbus 패널은 홀딩 레지스터 40012에 값 552가 들어 있음을 보여 주며, 이 값이 부호 있는 화씨 온도에 10을 곱한 값이라는 정보는 별도로 받아야 한다고 설명합니다. 오른쪽 BACnet 패널은 Present Value 55.2, Units degrees-fahrenheit, Object Name SA-T, Description 급기 온도 속성을 가진 Analog Input 객체를 보여 줍니다. 객체가 자신을 설명합니다. 동일한 물리 포인트 급기 온도 = 55.2 °F MODBUS 홀딩 레지스터 40012 0x0228 = 552 (16비트, 레이블 없음) 통신 외부에서 알아야 할 정보: • 온도 값임 • 스케일은 °F × 10 • 부호 있는 값임 잘못된 맵 → 잘못된 숫자 BACNET Analog Input, 인스턴스 2 Present_Value 55.2 Units degrees-fahrenheit Object_Name SA-T Description 급기 온도 Status_Flags / Reliability도 함께 전달 객체가 자신을 설명합니다.

항목별 비교

같은 작업에 서로 다른 도구를 사용합니다. 아래 표는 현장에 관련된 항목을 요약하며, 이어지는 절에서는 실제 업무 방식에 영향을 주는 차이를 자세히 설명합니다.

항목ModbusBACnet
기원Modicon, 1979 — 산업용 PLCASHRAE, 1995(현재 ISO 16484-5) — 건물 자동화
데이터 모델번호가 붙은 레지스터·비트의 평면 테이블 네 개이름이 있는 속성을 가진 형식 지정 객체
자기 기술없음 — 의미 정보는 제조사 레지스터 맵에 존재내장 — Object_Name, Units, Description이 값과 함께 전달
데이터 형식원시 16비트 워드와 비트, 사용자가 해석형식 지정 — 실수, 부호 없는 정수, 불리언, 열거형, 문자열
장치 탐색없음 — 주소를 별도로 전달받아야 함Who-Is / I-Am 동적 바인딩
주소 지정유닛/슬레이브 ID + 레지스터 번호장치 인스턴스 + 객체 식별자(+ 네트워크 번호)
값 변경없음 — 클라이언트가 계속 폴링COV — 구독 후 장치가 변경값을 푸시
명령 조정마지막 쓰기가 우선, 레지스터당 값 하나16단계 +
경보프로토콜에 없음 — 상위 관리 시스템에서 구현고유/알고리즘 이벤트 + 알림 클래스
스케줄·트렌드프로토콜에 없음표준 Schedule, Calendar, Trend Log 객체
전송 방식RTU / ASCII(RS-485 직렬), TCP(Ethernet)MS/TP(RS-485), BACnet/IP, Ethernet, BACnet/SC
적합성사실상 제조사 레지스터 맵이 계약 역할공식 체계 — BIBB, 장치 프로파일, 공개 PICS
일반 장비각종 계량기, VFD, BTU 계량기, 게이트웨이, 특수 장비HVAC 컨트롤러, VAV 박스, 플랜트 컨트롤러, BMS
바이트 순서 함정악명 높음 — 32비트 값의 레지스터 쌍에서 워드 순서와 바이트 스왑이 정의되지 않음형식 지정 값에 인코딩 포함, 스왑을 추측할 필요 없음

매일 체감하는 장치 탐색과 값 변경

위 표의 두 항목은 모든 현장에서 문제를 일으킬 수 있습니다. 첫 번째는 장치 탐색입니다. 도구를 BACnet 네트워크에 연결해 Who-Is를 보내면 모든 장치가 자신의 장치 인스턴스를 담은 I-Am으로 응답하므로 몇 초 만에 목록을 만들 수 있습니다. Modbus에는 "어떤 장치가 있는가"에 해당하는 기능이 없습니다. 유닛 ID와 레지스터 맵을 전달받아 Modbus 장치를 커미셔닝합니다. 계량기의 DIP 스위치는 슬레이브 7인데 도면에는 슬레이브 3이라고 적혀 있어도 통신망에서 이를 바로잡아 주지 않습니다. 5자리 레지스터 함정과 바이트 순서 추측도 같은 사실에서 비롯됩니다. 자기 기술 정보가 없으면 모든 숫자를 문서에 의존해 해석해야 합니다.

두 번째는 폴링과 푸시입니다. Modbus는 엄격한 폴링·응답 방식입니다. 클라이언트가 레지스터 40012를 요청하면 서버가 응답하고, 변경을 확인하려면 클라이언트가 다시 요청합니다. 그래픽 화면을 실시간처럼 보이게 하려면 초당 백 번 요청할 수도 있습니다. BACnet도 폴링하지만 COV, 즉 값 변경(Change of Value) 기능도 제공합니다. 포인트를 구독하고 유효 기간이 끝나기 전에 구독을 갱신하면, 아날로그 값이 COV_Increment보다 크게 변할 때 장치가 알립니다. 바이너리와 다중 상태 포인트는 상태가 바뀔 때마다 알립니다. 트래픽이 많은 트렁크에서는 계속 메시지를 주고받는 것과 변화가 있을 때만 통신하는 것의 차이가 됩니다. 다만 항상 지원되는 것은 아닙니다. 장치의 BIBB에 서버 역할이 포함되어야 COV를 푸시하므로 사용하기 전에 확인해야 합니다.

포인트 명령과 장치 기능 확인

쓰기 방식에서도 차이가 드러납니다. Modbus에서는 레지스터에 값을 쓰면 누군가 다시 쓸 때까지 유지됩니다. 마지막 쓰기가 우선하며 누가 왜 썼는지는 기억하지 않습니다. 두 마스터가 한 코일을 두고 충돌해도 레지스터에는 마지막에 도착한 값만 남습니다. BACnet은 출력을 16단계 우선순위 배열로 감쌉니다. 위쪽에는 인명 안전 명령, 중간에는 자동 제어, 그보다 높은 위치에는 운영자 강제 조작이 있으며, 모든 단계가 해제됐을 때 사용할 가 맨 아래에 있습니다. 값은 "그냥 덮어써지는" 것이 아닙니다. 활성 명령 중 우선순위가 가장 높은 명령이 적용되고, 하나를 해제하면 다음으로 낮은 명령이 제어권을 되찾습니다. 구조가 더 복잡한 이유는 건물에서 같은 댐퍼에 정당하게 명령하려는 주체가 여럿이기 때문입니다.

마지막은 장치가 수행할 수 있는 기능을 파악하는 방법입니다. Modbus에서는 제조사 PDF가 그 정보를 제공합니다. 레지스터 맵 자체가 인터페이스 계약이며, PICS 같은 기능 명세나 확인할 장치 프로파일이 없습니다. 따라서 두 "Modbus" 장치의 공통점은 프레이밍뿐입니다. Modbus Organization도 적합성 인증 프로그램을 운영하지만 장치별 기능 선언이 아니라 TCP 서버 동작을 시험합니다. BACnet은 바로 이 정보를 공식화합니다. 장치는 PICS(Protocol Implementation Conformance Statement, 프로토콜 구현 적합성 명세서)를 공개하며, 그 안에 장치 프로파일, 정확한 BIBB, 지원 객체 유형을 나열하므로 배선 전에 통합 가능 여부를 판단할 수 있습니다. 어느 방식이든 문서를 읽어야 하지만 BACnet은 문서에 포함할 내용을 표준화합니다.

어느 쪽이 더 적합한가

어느 쪽도 절대적으로 우수하지 않으며 서로 다른 작업에 최적화되어 있습니다. Modbus는 적용 범위가 강점입니다. 프로세서가 있는 거의 모든 장치에 넣을 수 있을 만큼 작아서 계량기, 드라이브, 특수 장비에 널리 탑재됩니다. BACnet은 건물에 강합니다. BMS에 필요한 장치 탐색, 형식 지정 포인트, 우선순위 명령, 경보, 스케줄, 트렌드가 프로토콜에 포함되어 있습니다. 어느 쪽이 "더 낫다"고 묻는 것은 렌치와 드라이버 중 무엇이 더 낫냐고 묻는 것과 같습니다.

현장에서는 전력량계, VFD, BTU 계량기, 자체 컨트롤러를 갖춘 패키지 장비 같은 말단에서 Modbus를 접합니다. 중앙에서는 BACnet이 HVAC 컨트롤러와 을 연결합니다. 두 영역의 접점에는 게이트웨이가 있습니다. 한쪽에서 Modbus 장치의 레지스터를 폴링하고 다른 쪽에서 BACnet 객체로 다시 제공합니다. 레지스터 맵은 게이트웨이 구성에 한 번만 입력하며, 건물의 나머지 시스템에는 명확한 자기 기술형 포인트가 보입니다.

Modbus와 BACnet을 연결하는 게이트웨이 왼쪽의 Modbus RTU 전력량계가 가운데 프로토콜 게이트웨이에 연결되고, 게이트웨이는 오른쪽의 BACnet/IP 건물 관리 시스템에 연결됩니다. 게이트웨이가 레지스터 맵을 한 번 저장하고 계량기의 레지스터를 BACnet 객체로 다시 제공한다고 설명합니다. kW 계량기 Modbus RTU 폴링 게이트웨이 레지스터 맵 여기에 한 번 저장 객체 BMS BACnet/IP 레지스터 입력, 자기 기술형 객체 출력 — 맵은 게이트웨이에 한 번만 입력

실무적인 결론은 "하나를 고르라"는 것이 아닙니다. 눈앞의 프로토콜을 구분하고, Modbus 포인트에는 맵이 필요하지만 BACnet 포인트는 자체 정보를 포함한다는 점을 이해하며, 두 프로토콜이 만나는 곳에는 게이트웨이가 필요하다고 예상해야 합니다. Modbus와 BACnet 기초 페이지에서는 각 프로토콜을 자세히 설명하고, 이 페이지는 둘 사이를 연결합니다.

← 학습으로 돌아가기