BACnet 서비스 BACnet

BACnet 기초에서는 일상적인 읽기, 쓰기, 알림의 거의 전부를 처리하는 다섯 가지 서비스를 짚고 넘어갔습니다. 이 페이지에서는 그 내용을 더 자세히 다룹니다. 서비스란 실제로 무엇인지, 확인형과 비확인형은 어떻게 다른지, 서비스는 어떤 계열로 나뉘는지, 그리고 두 장치가 실제로 통신할 수 있는지를 결정하는 BIBB와 장치 프로파일은 무엇인지 설명합니다. 객체가 BACnet의 명사이고 속성이 형용사라면 서비스는 동사입니다. 장치는 자신의 적합성 명세에 선언된 동작만 수행하며, 페이지 후반부에서 이를 살펴봅니다.

서비스란 무엇인가

서비스는 객체 모델을 대상으로 정의된 요청·응답 메시지입니다. 클라이언트는 속성을 읽거나 쓰고, 경보를 확인하거나, 값 변경을 구독하기 위해 이 메시지를 통신망으로 보냅니다. 한 장치가 서비스를 개시하고(클라이언트), 다른 장치가 서비스를 실행합니다(서버). 하나의 물리적 장치가 두 역할을 모두 맡는 경우가 많습니다. 컨트롤러는 워크스테이션이 자신을 읽을 때는 서버이고, 트렁크 하위의 센서를 읽을 때는 클라이언트입니다. ASHRAE 135에는 약 서른여섯 가지 서비스가 정의되어 있지만, 실제 작업의 대부분은 그중 몇 가지가 담당합니다.

먼저 이해해야 할 구분은 확인형(confirmed)과 비확인형(unconfirmed)입니다. 확인형 서비스는 응답을 요구합니다. 개시자가 요청을 보내고 기다리면 실행자는 결과를 담은 확인 응답 또는 BACnet-Error를 반환합니다. ReadProperty와 WriteProperty는 확인형이므로 성공 여부를 항상 알 수 있습니다. 비확인형 서비스는 보내고 응답을 기다리지 않습니다. 보통 브로드캐스트로 전송되며 상대 장치에는 응답 의무가 없습니다. 장치 탐색(Who-Is / I-Am)과 시간 동기화가 여기에 속합니다. Who-Is에 대한 "응답"인 I-Am조차 확인 응답이 아니라 그 자체로 비확인형 브로드캐스트입니다.

확인형 서비스와 비확인형 서비스 위쪽 확인형 구간에서는 왼쪽 클라이언트 상자가 오른쪽 서버 상자로 ReadProperty 요청 화살표를 보내고, 서버는 확인 응답 또는 오류 화살표를 클라이언트로 돌려보냅니다. 아래쪽 비확인형 구간에서는 왼쪽 장치가 점선으로 표시된 오른쪽 브로드캐스트 도메인으로 Who-Is 브로드캐스트를 보냅니다. I-Am 응답도 그 자체로 비확인형이므로 별도의 확인 응답이 필요하지 않다고 설명합니다. 확인형 클라이언트 (A) 워크스테이션 / JACE 서버 (B) 컨트롤러 ReadProperty 요청 ACK + 값 또는 Error 개시자는 기다립니다. 모든 요청은 확인되거나 거부됩니다. 비확인형 모든 장치 개시자 브로드캐스트 도메인 모든 장치가 수신 Who-Is (브로드캐스트) 응답 의무가 없습니다. 돌아오는 I-Am도 그 자체로 비확인형입니다.

서비스 계열

표준은 서비스를 데이터 공유, 경보·이벤트, 스케줄링, 트렌딩, 장치·네트워크 관리라는 상호운용 영역으로 묶습니다. 데이터 공유 서비스는 매일 접하지만 나머지는 해당 기능을 사용할 때 나타납니다. 아래 표는 약 서른여섯 가지 전체 목록이 아니라 현장에서 주로 쓰는 서비스만 정리한 것입니다.

서비스유형영역기능
ReadProperty확인형데이터 공유한 객체의 속성 하나를 가져오는 일상적인 읽기 서비스입니다.
ReadPropertyMultiple확인형데이터 공유여러 객체의 여러 속성을 한 요청으로 가져옵니다. 그래픽 화면이 컨트롤러의 값을 폴링할 때 사용합니다.
WriteProperty확인형데이터 공유속성 하나를 설정합니다. 흔히 우선순위 배열에 포인트의 값을 씁니다.
WritePropertyMultiple확인형데이터 공유여러 속성을 한 요청으로 설정합니다.
SubscribeCOV확인형데이터 공유폴링하는 대신 장치가 알림을 푸시하도록 요청하며, 값 변화가 COV_Increment를 넘을 때마다 알림을 받습니다.
ConfirmedCOVNotification확인형데이터 공유구독 시 수신 확인을 요구한 경우 장치가 보내는 값 변경 알림입니다.
UnconfirmedCOVNotification비확인형데이터 공유수신 확인 없이 같은 알림을 보냅니다. 부담은 적지만 유실될 수 있습니다.
ConfirmedEventNotification확인형경보·이벤트수신 확인이 필요한 대상에게 경보 또는 이벤트를 전달합니다.
UnconfirmedEventNotification비확인형경보·이벤트수신 확인 없이 경보 또는 이벤트를 전달합니다.
AcknowledgeAlarm확인형경보·이벤트운영자가 경보를 인지했음을 확인합니다. 워크스테이션이 보내는 "ACK"입니다.
GetEventInformation확인형경보·이벤트현재 활성 상태이거나 확인되지 않은 이벤트 상태인 객체 목록을 가져옵니다.
Who-Is / I-Am비확인형장치 관리"어떤 장치가 있는가?"와 "여기에 device 1001이 있다"라는 탐색 서비스입니다. 둘 다 브로드캐스트입니다.
Who-Has / I-Have비확인형장치 관리이름이나 번호로 지정한 객체를 어느 장치가 보유하는지 찾습니다.
ReinitializeDevice확인형장치 관리장치를 웜 스타트 또는 콜드 스타트합니다. 암호로 보호됩니다.
DeviceCommunicationControl확인형장치 관리장치 통신을 중지하거나 다시 활성화합니다. 암호로 보호되며, "왜 트렁크의 절반이 조용해졌는가"를 설명하는 전형적인 원인이기도 합니다.
TimeSynchronization / UTC…비확인형장치 관리현재 시간(현지 시각 또는 UTC)을 네트워크에 브로드캐스트합니다.
AtomicReadFile / …WriteFile확인형파일 접근File 객체를 청크 단위로 읽거나 씁니다. 펌웨어, 트렌드 업로드, 구성에 사용됩니다.
CreateObject / DeleteObject확인형객체 접근실행 중 객체를 생성하거나 제거합니다. 동적 객체를 지원하는 컨트롤러를 구성할 때 사용합니다.

일상적인 작업에서는 두 가지를 기억하면 됩니다. 첫째, …Multiple 변형은 클라이언트가 그래픽 화면에 필요한 수십 개 포인트를 여러 번 왕복하지 않고 한 번에 읽거나 쓰도록 마련되었습니다. 단수형만 지원하는 장치도 동작하지만 더 느리고 통신량이 많습니다. 둘째, COV(Change of Value, 값 변경)는 Modbus식 폴링에 대한 BACnet의 해법입니다. 계속 질문하는 대신 한 번 구독하고 값이 바뀔 때 알림을 받습니다. 다만 특정 장치가 이 두 기능을 실제로 지원하는지는 보장되지 않습니다. 다음 절에서 바로 그 점을 다룹니다.

BIBB — 장치가 실제로 지원하는 기능

"BACnet 장치"라고 해서 모든 기능을 지원하는 것은 아닙니다. 소형 유닛 컨트롤러는 ReadProperty에만 응답할 수 있고, 상위 관리 장치는 표준의 모든 서비스를 개시할 수도 있습니다. 장치가 어떤 기능을 지원한다고 선언하는지 나타내는 단위가 BIBB(BACnet Interoperability Building Block, BACnet 상호운용성 구성 블록)입니다. 각 BIBB는 하나의 서비스와 하나의 역할을 짝지으며, 이름은 상호운용 영역, 서비스, A 또는 B의 세 부분으로 구성됩니다.

역할 문자는 자주 반대로 이해하는 부분입니다. A는 클라이언트, 즉 서비스를 개시하는 요청 장치입니다. B는 서버, 즉 서비스를 실행하는 응답 장치입니다. 요청이 응답보다 먼저 오듯 A가 B보다 먼저 온다고 기억하면 됩니다. 따라서 읽기 가능한 컨트롤러는 DS-RP-B(ReadProperty에 응답)를 선언하고, 이를 읽는 워크스테이션에는 DS-RP-A(ReadProperty 개시)가 필요합니다. 한 장치가 서비스를 제공하면서 개시도 해야 한다면 양쪽 기능을 모두 선언합니다.

BIBB 구성: DS-RP-B BIBB 이름 DS-RP-B를 이름표가 붙은 세 부분으로 나눕니다. DS는 데이터 공유 상호운용 영역, RP는 ReadProperty 서비스, B는 서버 역할입니다. 즉 이 장치는 요청에 응답하며, A 장치는 요청을 개시합니다. DS - RP - B 데이터 공유 상호운용 영역 — 기능 계열 ReadProperty 특정 서비스 B = 서버 역할 이 장치는 응답하고 A 장치는 개시합니다 읽히는 컨트롤러는 DS-RP-B, 이를 읽는 워크스테이션은 DS-RP-A입니다

상호운용 영역 코드는 간단합니다. DS는 데이터 공유, AE는 경보·이벤트, SCHED는 스케줄링, T는 트렌딩, DM은 장치 관리, NM은 네트워크 관리입니다. 제어 시스템 사양서에서 흔히 볼 수 있는 BIBB는 다음과 같습니다.

BIBB서비스A / B 역할
DS-RP-A / -BReadPropertyA가 읽음 · B가 읽힘
DS-RPM-A / -BReadPropertyMultipleA가 여러 값을 읽음 · B가 응답
DS-WP-A / -BWritePropertyA가 씀 · B에 값이 기록됨
DS-WPM-A / -BWritePropertyMultipleA가 여러 값을 씀 · B가 수락
DS-COV-A / -B구독형 값 변경A가 구독 · B가 알림
DS-COVU-A / -B비구독형 COVA가 수신 · B가 브로드캐스트
AE-N-A / -B이벤트·경보 알림A가 알림을 받음 · B가 알림
AE-ACK-A / -B경보 확인A가 확인 · B가 상태를 추적
DM-DDB-A / -B동적 장치 바인딩 — Who-Is / I-AmA가 탐색 · B가 응답
DM-DOB-A / -B동적 객체 바인딩 — Who-Has / I-HaveA가 탐색 · B가 응답
DM-RD-A / -BReinitializeDeviceA가 명령 · B가 재시작
DM-DCC-A / -BDeviceCommunicationControlA가 명령 · B가 실행
DM-TS-A / -B, DM-UTC-…시간 동기화A가 시간을 전송 · B가 시계를 설정

그래서 두 장치가 모두 "완전한 BACnet 장치"라고 해도 필요한 기능을 함께 수행하지 못할 수 있습니다. 실시간 갱신을 원하는 워크스테이션에는 DS-COV-A가, 현장 컨트롤러에는 DS-COV-B가 필요합니다. 컨트롤러가 DS-RP-B만 지원한다면 선택의 여지 없이 폴링해야 합니다. 배선 전에 양쪽 BIBB 목록을 확인하면 견적에 포함한 연동이 실제로 가능한지 판단할 수 있습니다.

장치 프로파일과 PICS

BIBB를 하나씩 나열하는 일은 번거롭기 때문에 표준은 이를 장치 프로파일로 묶습니다. 장치 프로파일은 장치가 충족하겠다고 약속하는 최소 기능 집합에 이름을 붙인 것입니다. "B-BC"라고 말하면 다른 엔지니어도 장치의 대략적인 기능을 알 수 있습니다. 제어 현장에서 흔히 쓰는 프로파일은 다음과 같습니다.

프로파일장치일반적인 특성
B-BC빌딩 컨트롤러JACE나 플랜트 컨트롤러 같은 프로그래밍 가능한 상위 관리 컨트롤러입니다. 다양한 BIBB를 지원하며 클라이언트와 서버 역할을 모두 수행합니다.
B-AAC고급 애플리케이션 컨트롤러고급이지만 고정된 프로그램을 실행합니다. B-ASC보다 기능이 많지만 BACnet을 통한 현장 프로그래밍을 완전히 지원하지는 않습니다.
B-ASC특정 용도 컨트롤러VAV 박스나 팬코일 같은 고정 기능 유닛 컨트롤러입니다. 주로 서버로 동작하며 BIBB 집합이 더 작습니다.
B-SA스마트 액추에이터읽기와 쓰기에 응답하는 액추에이터입니다.
B-SS스마트 센서값을 보고하는 소형 서버이며, 읽기 전용인 경우가 많습니다.
B-OWS운영자 워크스테이션프런트엔드/BMS입니다. 읽기, 쓰기, 구독, 경보 확인을 개시하는 주요 클라이언트입니다.
B-GW게이트웨이BACnet과 다른 프로토콜을 연결합니다. 노출하는 기능은 반대편 프로토콜에 따라 달라집니다.

프로파일이 분류표라면 PICS는 세부 명세입니다. PICS(Protocol Implementation Conformance Statement, 프로토콜 구현 적합성 명세서)는 각 제조사가 장치별로 발행하는 문서입니다. 장치 프로파일, 정확한 BIBB 목록, 지원 객체 유형, 세그멘테이션 지원 여부, 문자 집합, 데이터 링크 옵션을 담고 있습니다. 장치가 어떤 기능을 "지원해야 하는데" 동작하지 않을 때, 원래부터 그 기능을 수행할 수 있는지 PICS에서 확인할 수 있습니다. BACnet 장치 매뉴얼에서 가장 유용한 자료이지만 많은 기술자가 열어보지 않습니다.

프로파일을 보면 그 뒤의 객체 모델도 어느 정도 예상할 수 있습니다. B-BC는 객체 전체와 출력의 우선순위 배열을 제공하지만, B-SS는 Analog Input 하나만 노출할 수도 있습니다. 프로파일과 객체 참조표를 함께 보면 장치를 네트워크에 연결하기 전에도 포인트 목록의 대부분을 예측할 수 있습니다.

이 페이지에서 다루지 않은 내용

전체 BIBB 카탈로그는 의도적으로 제외했습니다. BIBB는 백 개가 훨씬 넘으며, 대부분 제어 기술자가 사양에 넣는 일이 드문 스케줄링, 트렌딩, 네트워크 관리, BACnet/SC 블록입니다. Notification_Class 객체, 이벤트 상태, 수신자 목록을 포함한 경보·이벤트 알림의 세부 동작도 별도 주제입니다. 세그멘테이션, 즉 하나의 에 담기 어려울 만큼 큰 서비스 응답을 나누는 기능도 따로 다룰 가치가 있습니다. 메시지가 라우터와 브로드캐스트 도메인을 통과하는 방식은 BACnet 네트워킹을, 서비스가 작용하는 객체 모델은 BACnet 기초를 참고하세요. 서비스 실패 시 장치가 반환하는 숫자는 BACnet 오류 코드 디코더에서 확인할 수 있습니다.

← 학습으로 돌아가기