내장 된 시스템, Linux, MacOS, BSD 및 Windows 용 BACNET 오픈 소스 프로토콜 스택 C 라이브러리 http://bacnet.sourceforge.net/
Bacnet의 멋진 세계와 진정한 장치 상호 운용성에 오신 것을 환영합니다!
이 라이브러리는 자동화 된 연속 통합 서비스를 사용하여 자동 컴파일, 유효성 검사, 라인팅, 보안 스캔 및 장치 테스트를 지원하여 강력한 C 코드 및 BACNET 기능을 생성합니다.
GitHub 워크 플로 : Ubuntu, Windows 및 MacOS의 라이브러리 및 데모 앱의 CMAKE 빌드
GitHub 워크 플로 : BBMD, BACNET/IPv6, BACNET 이더넷 및 BACNET MSTP 데모 앱, 게이트웨이, 라우터, 라우터 -IPV6, Router-MSTP, Arm Ports (STM, STM, Router-IPV6)가 포함 된 Bacnet/IP 데모 앱의 Ubuntu Makefile GCC 빌드. Atmel), AVR 포트 및 BACNET/IP 데모 앱은 MingW32로 컴파일되었습니다.
GitHub 워크 플로 : Scan-Build (LLVM Clang Tools), CPPCHECK, CODESPELL, UNIT TESTS 및 CODE COVERAGE.
GitHub 워크 플로우 CodeQL 분석
이 BACNET 프로토콜 스택 라이브러리는 BACNET 애플리케이션 계층, 네트워크 계층 및 MAC (Media Access)를 제공합니다. RTO 또는 베어 메탈 임베디드 시스템을위한 오픈 소스, 로열티 프리 라이브러리 또는 Windows, Linux, MacOS 또는 BSD와 같은 전체 OS입니다.
BACNET- 자동화 및 제어 네트워크 구축을위한 데이터 통신 프로토콜 - bacnet.org를 참조하십시오. BACNET은 자동화 및 제어 네트워크를 구축하기위한 표준 데이터 통신 프로토콜입니다. BACNET은 공개 프로토콜로, 누구나 표준에 기여할 수 있으며 누구나 사용할 수 있습니다. 유일한 경고는 BACNET 표준 문서 자체가 Ashrae에 의해 저작권을 갖고 있으며 표준을 개발하고 유지하는 데 드는 비용 (IEEE 또는 ANSI 또는 ISO와 유사)을 돕기 위해 문서를 판매한다는 것입니다.
소프트웨어 개발자의 경우 BACNET 프로토콜은 다른 BACNET 호환 장치에서 이해되는 데이터를 포함하는 메시지를 보내고받는 표준 방법입니다. BACNET 표준은 데이터 링크/물리적 레이어 (이더넷, EIA-485, EIA-232, Arcnet 및 Lontalk)로 알려진 다양한 와이어 또는 라디오를 통해 통신하는 표준 방법을 정의합니다. BACNET 표준은 또한 UDP, IP, HTTP (Web Services) 및 WebSockets를 사용하여 통신하는 표준 방법을 정의합니다.
이 BACNET 프로토콜 스택 구현은 ECOS와 같은 예외 라이센스가있는 GPL을 사용하여 임베디드 BACNET 어플라이언스를 위해 특별히 설계되었으며, 이는 배포 된 핵심 코드의 변경 사항이 공유되지만 BACNET 라이브러리는 독점 코드에 연결할 수 있음을 의미합니다. 독점 코드가 GPL이되지 않으면. 각 소스 파일에 포함 된 GPL 예외의 텍스트는 다음과 같습니다.
* SPDX-License-Identifier: GPL-2.0-or-later WITH GCC-exception-2.0
소스 파일 중 일부는 해골 또는 예제 또는 템플릿 파일로 설계되었으며 GPL로 저작권이 없습니다. 이 파일에 대한 라이센스 텍스트는 다음과 같이 각 소스 파일에 지정됩니다.
* SPDX-License-Identifier: MIT
* SPDX-License-Identifier: Apache-2.0
소프트웨어 청구서는 Grep을 사용하여 생성 할 수 있습니다.
$ grep -nrw SPDX --include=*.[c,h]
이 코드는 휴대 성을 위해 C로 작성되며 단위 테스트 (PC 기반 단위 테스트)를 포함합니다. 코드는 휴대용으로 설계되었으므로 GCC와 Clang 또는 IAR과 같은 다른 컴파일러와 컴파일됩니다.
BACNET 프로토콜은 ASHRAE/ANSI/ISO 표준 이므로이 라이브러리는 해당 표준을 준수합니다. BACNET에는 로열티 나 라이센스 제한이 없으며 BACNET 공급 업체 ID에 대한 등록은 무료입니다.
이 라이브러리 아키텍처에 대한 개요 및 사용 방법은 https://sourceforge.net/p/bacnet/src/ci/master/tree/doc/readme.developer를 참조하십시오.
이 스택에는 Project Root 디렉토리 "Make Test"의 MakeFile을 사용하여 실행할 수있는 단위 테스트가 포함됩니다. 단위 테스트는 개별 메이크 호출을 사용하여 실행할 수도 있습니다. 장치 테스트는 PC를 실행하고 지속적인 통합 환경 내의 모든 커밋으로 계속 그렇게합니다.
BACNET 스택은 다양한 컨트롤러 및 워크 스테이션뿐만 아니라 다양한 도구를 사용하여 기능적으로 테스트되었습니다. BTL 테스트를 성공적으로 완료 한 많은 제품에 포함되었습니다.
프로젝트 루트 디렉토리의 MakeFile을 사용하면 Windows 또는 Linux에서 실행되는 12 개의 샘플 응용 프로그램이 작성됩니다. BACNET/IPv4 Datalink 레이어를 기본적으로 통신에 사용하지만 BACNET IPv6, 이더넷, Arcnet 또는 MS/TP를 사용하도록 컴파일 할 수 있습니다.
Linux/Unix/Cygwin
$ make clean all
Windows Mingw Bash
$ make win32
Windows 명령 줄
c:> build.bat
BACNET 스택은 다양한 컴파일러로 컴파일 할 수 있습니다. 가장 일반적인 무료 컴파일러는 GCC (또는 Windows의 Mingw)입니다. MakeFiles는 기본적으로 GCC를 사용합니다.
라이브러리는 또한 다양한 IDE 또는 컴파일러에 대한 프로젝트 또는 makefiles를 생성 할 수있는 CMake를 사용하도록 계측되어 있습니다. 예를 들어, 코드를 생성하려면 :: 블록 프로젝트 :
$ mkdir build
$ cd build/
$ cmake .. -G"CodeBlocks - Unix Makefiles"
c:> mkdir build
c:> cd build/
c:> cmake .. -G"CodeBlocks - MinGW Makefiles"
단위 테스트는 CMAKE를 사용하며 명령 순서로 실행될 수 있습니다.
$ make test
장치 테스트 프레임 워크는 약간 수정 된 Ztest를 사용하며 테스트는 테스트/ 폴더에 있습니다. 장치 테스트 빌더는 CMAKE를 사용하고 테스트 범위는 LCOV를 사용합니다. 장치 테스트 커버리지의 HTML 결과는 테스트/빌드/lcoverage/index.html 파일에서 시작할 수 있습니다.
데모 애플리케이션은 하나의 서버 애플리케이션 및 하나의 게이트웨이 응용 프로그램, 두 개의 라우터 응용 프로그램 및 몇 개의 MS/TP 특정 응용 프로그램을 제외한 하나의 주요 BACNET 서비스를 제공하는 모든 클라이언트 응용 프로그램입니다. 각 응용 프로그램은 명령 줄 매개 변수를 허용하고 출력을 stdout 또는 stderr로 인쇄합니다. 클라이언트 응용 프로그램은 명령 줄 기반이며 스크립트 또는 문제 해결에 사용할 수 있습니다. 데모 애플리케이션은 환경 변수를 사용하여 네트워크 옵션을 설정합니다. 옵션은 각 개별 데모를 참조하십시오.
ARM7, AVR, RTOS-32, PIC 및 기타 포트/ 디렉토리에는 프로젝트도 있습니다. 이러한 각 프로젝트에는 특정 하드웨어에 대한 데모 응용 프로그램이 있습니다. ARM7 및 AVR의 경우 MakeFile은 GCC 컴파일러와 함께 작동하며 IAR Embedded Workbench 및 Rowley Crossworks 용 프로젝트 파일이 있습니다.
프로젝트 문서는 Doc/ Directory에 있습니다. 비슷한 문서는 프로젝트 웹 사이트 (http://bacnet.sourceforge.net/)에 있습니다.
이 프로젝트에 기여하고 C 코딩 기술을 사용하려면 https://github.com/bacnet-stack/bacnet-stack/ 또는 https://sourceforge.net/p/bacnet/src/를 통해 우리와 함께하십시오. 포크 또는 브랜치를 만들고 결국 코드를 포함시키기위한 풀 요청.
이 프로젝트에서 버그를 찾으면 https://sourceforge.net/p/bacnet/bugs/ 또는 https://github.com/bacnet-stack/bacnet-stack/issues에 대해 알려주십시오.
지원 요청이 있으면 https://sourceforge.net/p/bacnet/support-requests/에 게시 할 수 있습니다.
기능 요청이 있으면 https://sourceforge.net/p/bacnet/feature-requests/에 게시 할 수 있습니다.
이 라이브러리가 장치에서 작동하도록하는 데 문제가 있거나 BACNET 질문이있는 경우 http://lists.sourceforge.net/mailman/listinfo/bacnet-developers에 가입하거나 질문을 게시하십시오. https://sourceforge.net/p/bacnet/discussion/의 공개 토론, 개발자 또는 도움말 포럼
BACNET 장치가 작동하기를 바랍니다!
Steve Karg, 버밍엄, 앨라배마 미국 [email protected]
ASHRAE® 및 BACNET®는 미국 난방, 냉장 및 에어컨 엔지니어, American Society의 등록 상표입니다. 180 Technology Parkway NW, Peachtree Corners, Georgia 30092 US.