# BACnet (Building Automation and Control Network)

BACnet(Building Automation and Control Network)은 빌딩 자동화 및 제어 시스템 간의 상호 운용성을 보장하기 위해 ASHRAE(American Society of Heating, Refrigerating and Air-Conditioning Engineers)가 개발한 통신 프로토콜이다. 이 프로토콜은 HVAC(Heating, Ventilation, and Air Conditioning), 조명 제어, 화재 탐지 시스템 등 다양한 빌딩 자동화 시스템을 통합하기 위해 설계되었다. BACnet은 장치 간의 데이터 교환을 위한 표준화된 방법을 제공하며, 이는 제조업체 간 상호 운용성을 보장하는 데 중요한 역할을 한다.

#### BACnet의 아키텍처와 모델

BACnet은 OSI(Open Systems Interconnection) 모델을 기반으로 설계되었으며, 애플리케이션 레벨에서 통신을 수행하는 구조를 가지고 있다. 이 프로토콜은 객체 지향적 데이터 모델을 사용하여 장치 간의 데이터를 표현하고 교환한다. BACnet의 주요 요소는 '객체(Object)'와 '속성(Property)'로 구성되며, 각 객체는 특정 기능을 수행하는 하나의 엔티티로 간주된다. 이러한 객체는 예를 들어 아날로그 입력, 디지털 출력, 프로그램 등과 같은 빌딩 시스템 구성 요소를 나타낸다.

BACnet은 여러 네트워크 계층을 지원하는 유연한 구조를 가지고 있다. 이는 다양한 물리적 매체와 네트워크 프로토콜을 통해 통신할 수 있도록 한다. 대표적인 네트워크 계층 옵션으로는 BACnet/IP, BACnet/MSTP, BACnet/Arcnet 등이 있다. 각 계층은 서로 다른 네트워크 환경에 적합하게 설계되었으며, 다양한 빌딩 자동화 요구를 충족시킬 수 있다.

#### BACnet의 객체와 서비스

BACnet 프로토콜은 데이터를 교환하기 위해 여러 가지 객체 유형과 그에 상응하는 서비스를 정의한다. BACnet 객체는 시스템 내의 특정 요소를 나타내며, 각 객체는 속성을 통해 세부 정보를 제공한다. 예를 들어, 아날로그 입력 객체는 센서로부터 얻은 값을 나타내며, 이 값은 객체의 속성으로 관리된다.

BACnet 서비스는 이러한 객체의 속성에 접근하고 조작하는 기능을 제공한다. BACnet의 서비스는 크게 데이터 읽기/쓰기, 알람 및 이벤트 관리, 장치 관리 등으로 구분된다. 예를 들어, 'Read Property' 서비스는 특정 객체의 속성을 읽는 데 사용되며, 'Write Property' 서비스는 특정 속성의 값을 변경할 수 있다. 'COV(Change of Value)' 서비스는 객체의 값이 변화할 때 이를 알리는 기능을 제공하며, 이는 실시간 모니터링 및 제어에 유용하다.

#### BACnet의 통신 방법 및 네트워크 계층

BACnet은 여러 물리적 및 데이터 링크 계층 프로토콜을 통해 통신할 수 있다. BACnet/IP는 이더넷 네트워크에서 BACnet 메시지를 전송하는 가장 일반적인 방법이다. 이는 TCP/IP 프로토콜을 기반으로 하며, 인터넷 또는 사내 네트워크를 통해 장치 간의 통신을 가능하게 한다. BACnet/IP는 높은 데이터 전송 속도와 네트워크의 확장성을 제공하여 대규모 빌딩 자동화 시스템에서 주로 사용된다.

BACnet/MSTP는 RS-485 시리얼 통신을 기반으로 하는 프로토콜로, 주로 소규모 또는 분산형 네트워크에서 사용된다. 이 프로토콜은 마스터-슬레이브 방식으로 작동하며, 각 장치는 네트워크 버스에서 데이터 전송을 순차적으로 수행한다. 이 방식은 비교적 낮은 전송 속도를 가지지만, 설치 비용이 적고 신뢰성이 높아 소규모 시스템에 적합한다.

BACnet/Arcnet은 저속 네트워크 환경에서 사용되는 또 다른 옵션이다. Arcnet은 토큰 버스 프로토콜을 사용하여 네트워크에서 충돌 없이 데이터를 전송할 수 있도록 한다. 이는 신뢰성이 중요한 환경에서 BACnet 통신을 구현하는 데 사용될 수 있다.

#### BACnet의 확장성과 상호 운용성

BACnet은 다양한 규모와 복잡성을 가진 시스템에서 확장성을 보장하기 위해 설계되었다. 이 프로토콜은 수백 개의 장치가 있는 대규모 시스템에서도 효율적으로 작동할 수 있으며, 작은 시스템에서는 단순한 구성으로도 사용할 수 있다. BACnet의 객체와 서비스는 시스템의 요구에 따라 유연하게 조정될 수 있으며, 이는 다양한 제조업체의 장치 간 상호 운용성을 보장하는 핵심 요소이다.

BACnet은 또한 네트워크 간의 상호 연결성을 강화하기 위해 BBMD(BACnet Broadcast Management Device)와 같은 메커니즘을 제공한다. 이는 서로 다른 서브넷에 위치한 BACnet 장치 간의 통신을 가능하게 하여, 대규모 네트워크에서도 일관된 성능을 유지할 수 있게 한다.

***

관련 자료:

* ANSI/ASHRAE Standard 135-2020, BACnet—A Data Communication Protocol for Building Automation and Control Networks
* Understanding BACnet, by H. Michael Newman, 2nd Edition, Momentum Press
* BACnet International, BACnet.org, 공식 웹사이트, 다양한 자료 및 백서
