BACnet/IP (HVAC / 빌딩 자동화)
BACnet (Building Automation and Control networks) 는 빌딩 자동화 (BA) 영역의 표준 통신 규약입니다. 공조 (HVAC), 조명, 화재 감지, 출입 제어 등에서 가장 널리 쓰이며, BACnet 위에 IP 를 얹은 BACnet/IP 가 현재 사실상의 기본입니다.
이 게이트웨이는 공통 통합 엔진을 통해 BACnet/IP 를 읽기 모드 로 지원합니다.
BACnet 은 일반 산업용 PLC 가 아니라 BMS (Building Management System) 컨트롤러 (Honeywell, Johnson Controls, Schneider Andover, Delta Controls, Siemens Desigo 등) 에서 주로 만납니다. 이미 BMS 가 운영 중이라면 굳이 직접 폴링하지 말고 BMS 의 게이트웨이 / 통합 API 를 우선 검토해 보세요.
등록 폼 입력값
| 입력 칸 | 무엇을 적나요 | 예시 |
|---|---|---|
| IP 주소 | BACnet 컨트롤러의 IP | 192.168.10.50 |
| 포트 | BACnet/IP 포트 | 47808 (= 0xBAC0, 표준) |
| Device ID (device-id) | BACnet 디바이스 인스턴스 번호 | 1001 |
| 응답 타임아웃 | 응답 대기 (ms) | 3000 |
BACnet 은 IP + Device ID 의 조합으로 디바이스를 식별합니다. YABE (Yet Another BACnet Explorer) 같은 무료 툴로 네트워크를 스캔하면 디바이스 인스턴스 번호 / 객체 목록을 한눈에 볼 수 있습니다. BMS 도면 (Submittal) 의 BACnet PICS 문서에도 명시되어 있습니다.
BACnet/MSTP (시리얼) 라면
현장에 깔린 게 BACnet/MSTP (RS-485) 라면 PlantPulse Edge 가 직접 통신할 수 없습니다. 다음 중 하나가 필요합니다.
| 방법 | 비고 |
|---|---|
| BACnet 라우터 (Cimetrics B6020, Contemporary Controls BASrouter 등) | MSTP ↔ IP 변환. 가장 일반적 |
| BMS 측에 IP 모듈 추가 | 컨트롤러 펌웨어/모듈 업그레이드 |
| 통합 게이트웨이 (Niagara, Tridium) 경유 | 큰 사이트의 표준 |
태그의 PLC 주소 표기
BACnet 객체는 <objectType>:<instance> 형식으로 입력합니다.
| 표기 | 의미 |
|---|---|
analogValue:1 | Analog Value 1 (온도/습도/유량 같은 실수형) |
analogInput:5 | Analog Input 5 (센서 직결 입력) |
analogOutput:2 | Analog Output 2 (밸브 / 댐퍼 명령) |
binaryValue:10 | Binary Value 10 (불 값) |
binaryInput:5 | Binary Input 5 (디지털 입력 / 접점) |
binaryOutput:3 | Binary Output 3 (릴레이 명령) |
multiStateValue:1 | Multi-State Value 1 (모드 / 상태) |
자주 쓰는 객체 타입.
| 타입 | 코드 | 용도 |
|---|---|---|
| Analog Input / Value / Output | analogInput / analogValue / analogOutput | 실수 (온도, 풍량 등) |
| Binary Input / Value / Output | binaryInput / binaryValue / binaryOutput | 0/1 (운전, 알람) |
| Multi-State Input / Value / Output | multiStateInput / multiStateValue / multiStateOutput | 1, 2, 3, … (운전모드) |
데이터 형식 매칭
| BACnet 객체 | 데이터 형식 | 형식 보조 |
|---|---|---|
| analogValue / analogInput / analogOutput | Float | REAL |
| binaryValue / binaryInput / binaryOutput | Boolean | (비움) |
| multiStateValue / multiStateInput / multiStateOutput | Integer | (비움) |
| (속성) Object Name 등 문자열 | String | (비움) |
기본으로 객체의 Present_Value 속성을 읽습니다. 다른 속성 (예: Status_Flags, Out_Of_Service) 이 필요하면 고급 — REST API 에서 직접 호출하세요.
흔한 문제와 해결
| 증상 | 가능한 원인 | 해결 |
|---|---|---|
| “No response” / timeout | Device ID 불일치, 47808 포트 차단, BBMD 미설정 | YABE 로 디바이스 검색해 ID 확인, 방화벽 47808/UDP 허용 |
| 다른 서브넷의 디바이스가 안 보임 | BACnet 은 기본적으로 같은 broadcast 도메인 | BBMD (BACnet Broadcast Management Device) 또는 Foreign Device Registration 설정 |
| 값은 오는데 의미가 모호 | Engineering Units 가 객체 속성에 저장됨 | YABE / BMS 도면에서 객체별 단위 (°C, kPa, %, …) 확인 |
| 멀티스테이트 숫자만 보임 | State_Text 는 별도 속성 | BMS 매핑 표 (1=정지, 2=운전, 3=알람 등) 와 계산식 으로 라벨 변환 |
다음 단계
- 고급 — REST API 의 BACnet 예제
- 빌딩 사이트 통합은 보통 Niagara / Tridium 위에 올리는 것이 단순합니다 — BMS 팀과 협의하세요.