BACnet 組み込みシステム、Linux、MacOS、BSD、および Windows 用のオープン ソース プロトコル スタック C ライブラリ http://bacnet.sourceforge.net/
BACnet と真のデバイス相互運用性の素晴らしい世界へようこそ!
このライブラリは、自動化された継続的インテグレーション サービスを使用して、自動化されたコンパイル、検証、リンティング、セキュリティ スキャン、単体テストを支援し、堅牢な C コードと BACnet 機能を生成します。
GitHub ワークフロー: Ubuntu、Windows、MacOS でのライブラリおよびデモ アプリの CMake ビルド
GitHub ワークフロー: Ubuntu Makefile GCC ビルドのライブラリ、BBMD ありまたはなしの BACnet/IP デモ アプリ、BACnet/IPv6、BACnet Ethernet、BACnet MSTP デモ アプリ、ゲートウェイ、ルーター、router-ipv6、router-mstp、ARM ポート (STM、 Atmel)、AVR ポート、および MinGW32 でコンパイルされた BACnet/IP デモ アプリ。
GitHub ワークフロー: scan-build (LLVM Clang Tools)、cppcheck、codespell、単体テスト、およびコード カバレッジ。
GitHub ワークフロー CodeQL 分析
この BACnet プロトコル スタック ライブラリは、BACnet アプリケーション層、ネットワーク層、およびメディア アクセス (MAC) 層の通信サービスを提供します。これは、RTOS またはベア メタル組み込みシステム、または 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 サービス)、および Websocket を使用して通信する標準方法も定義しています。
この BACnet プロトコル スタックの実装は、組み込み BACnet アプライアンス向けに特別に設計されており、例外ライセンス (eCos など) 付きの GPL を使用します。つまり、配布されるコア コードへの変更は共有されますが、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 を参照してください。
このスタックには、プロジェクト ルート ディレクトリ「make test」内の Makefile を使用して実行できる単体テストが含まれています。単体テストは、個別の make 呼び出しを使用して実行することもできます。単体テストでは PC が実行され、継続的インテグレーション環境内のコミットごとに継続して実行されます。
BACnet スタックは、さまざまなツール、さまざまなコントローラ、ワークステーションを使用して機能テストされました。 BTL テストを正常に完了した多くの製品に組み込まれています。
プロジェクトのルート ディレクトリにある Makefile を使用して、Windows または Linux で実行される 12 個のサンプル アプリケーションが作成されます。デフォルトでは通信に BACnet/IPv4 データリンク層を使用しますが、BACnet IPv6、イーサネット、ARCNET、または MS/TP を使用するようにコンパイルすることもできます。
Linux/Unix/Cygwin
$ make clean all
Windows MinGW Bash
$ make win32
Windows コマンドライン
c:> build.bat
BACnet スタックは、さまざまなコンパイラでコンパイルできます。最も一般的な無料コンパイラは GCC (Windows では MinGW) です。 Makefile はデフォルトで GCC を使用します。
このライブラリは、さまざまな IDE またはコンパイラ用のプロジェクトまたは Makefile を生成できる CMake を使用するようにも装備されています。たとえば、Code::Blocks プロジェクトを生成するには、次のようにします。
$ 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 を使用し、テストは test/ フォルダーにあります。単体テスト ビルダーは CMake を使用し、テスト カバレッジは LCOV を使用します。単体テスト カバレッジの HTML 結果は、test/build/lcoverage/index.html ファイルから入手できます。
デモ アプリケーションは、1 つのサーバー アプリケーションと 1 つのゲートウェイ アプリケーション、2 つのルーター アプリケーション、および 2 つの MS/TP 固有のアプリケーションを除く、1 つの主要な BACnet サービスを提供するすべてのクライアント アプリケーションです。各アプリケーションはコマンド ライン パラメーターを受け入れ、出力を stdout または stderr に出力します。クライアント アプリケーションはコマンド ライン ベースであり、スクリプトまたはトラブルシューティングに使用できます。デモ アプリケーションでは、環境変数を使用してネットワーク オプションを設定します。オプションについては、それぞれのデモを参照してください。
ports/ ディレクトリには、ARM7、AVR、RTOS-32、PIC などのプロジェクトもあります。これらの各プロジェクトには、特定のハードウェア用のデモ アプリケーションがあります。 ARM7 および AVR の場合、それらのメイクファイルは GCC コンパイラで動作し、ARM 用の IAR Embedded Workbench および Rowley Crossworks 用のプロジェクト ファイルがあります。
プロジェクトのドキュメントは doc/ ディレクトリにあります。同様のドキュメントがプロジェクト Web サイト 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 of Heating, Refrigerating and Air-Conditioning Engineers, Inc. 180 Technology Parkway NW, Peachtree Corners, Georgia 30092 US の登録商標です。