The Cimetrics uBACstac saves man-years of development when your company needs to develop low volume or high volume BACnet-compliant applications that run on small devices with or without OS! BACstac with source code will provide you with example programs and reference ports to three hardware platforms with or without Free RTOS - ATmega, ARM-7, Cortex-M4.
Many Building Automation and Controls manufacturers use a Cimetrics uBACstac protocol stack because of our reputation for delivering high-quality software and excellent technical support. Cimetrics does the heavy lifting of testing the uBACstac on different hardware platforms and implementing the new Addenda approved by the BACnet Committee in a timely fashion. We keep our customers UP-TO-DATE with the latest BACnet features and make sure that the code is compatible with a growing number of hardware platforms.
uBACstac features:
A small-footprint BACnet stack for small devices with or without OS.Implements state-of-the-art MS/TP and BACnet/IP with - - Foreign Device. A single firmware image may support both data links.
Provides truly portable code—the same core uBACstac library, the portable MS/TP implementation and the example application run on all platforms unmodified, including bare-metal microcontrollers and embedded OSs.
Supports a wide range of processors, from entry level 8-bit AVR to powerful 32-bit ARM7 and Cortex-M, or even more powerful 64-bit processors running Linux. Supports little-endian and big-endian architectures.
Provides the stack in source code form, with example programs and reference ports to a few hardware platforms, both with embedded OS and without OS. Also, for ease of application development, includes a port to Linux and even Linux-on-Windows as an "instrumental" platform.
Implements a modular design, with clean separation between platform-dependent and portable code.
Provides highly configurable source code: unwanted features can be turned off, decreasing the executable memory footprint.
Makes it possible to implement a device conforming to the BACnet B-SS, B-SA, B-ASC, and B-AAC profiles, optionally with COV notifications and more.
Provided example programs support the following BACnet application services:
RP/RPM/WP/WPM/Who-Is/Who-Has/DCC/ReinitializeDevice/EventNotification/AcknowledgeAlarm/GetEventInformation/TimeSync/GetEventInformation/COV notifications/COV subscription/ File transfer/ Confirmed and Unconfirmed Private Transfer.1
Supports BACnet segmentation on receive and transmit. Supports initiation and execution of confirmed and unconfirmed requests.
Customers may enhance the source code to implement additional BACnet functionality.
Includes detailed documentation, including a User's Guide and a Porting Guide.
BACnet Building Blocks supported in the current example: DS-RP-B, DS-RPM-B, DS-WP-B, DS-WPM-B, DM-DDB-B, DM-DOB-A,B, DM-DCC-B, AE-N-I-B, AE-ACK-B, AE-INFO-B, SCHED-I-B, DM-TS-B, DM-UTC-B, DM-RD-B, DS-RP-A, DS-WP-A (it is also possible to implement other services and building blockse.g. COV/COVP/Add-remove list element/file transfer etc..) BACnet objects types supported in the current example: Accumulator, Analog Input, Analog Output, Analog Value, Binary Input, Binary Output, Binary Value, Device, File, Multi-state Input, Multi-state Value, Multi-state Output, Notification Class, Calendar, Schedule.
This is a BACnet protocol stack designed for the development of low and high volume BACnet-compliant devices with or without OS. It allows a simple, easy and quick way porting on a new hardware. You can make a device with B-AAC profile and more. Supports following device profiles: BSS, BSA, B-ASC, B-AAC.
Data links: BACnet/IP, MS/TP.
Support for Foreign Device operation in BACnet/IP Data Link.
Hardware platforms supported: Support for any platforms from 8, 32 to 64 bit processor from 8MHz frequency and more. If you use hardware without OS it should have at least 32K program memory and 3KB RAM is sufficient. If you use hardware with OS then you need more memory. For MS/TP use you need EIA-485 transceiver. Also if you use hardware with OS for MS/TP then you need Real Time Operating System. The OS should have TCP/IP supports.
Our example runs on these platforms:
1. ATmega2560 (Arduino Mega 2560 with DFRobot RS485 Shield) - 8 bit
2. ATmel ARM7 (AT91SAM7SE256-EK evaluation board), with and without FreeRTOS - 32 bit
3. ARM Cortex-M4 (STM32F429ZI evaluation board DFRobot RS485 Shield) running FreeRTOS+lwIP, supports MS/TP and BACnet/IP in one image - 32 bit.
4. Linux and Linux-on-Windows, - 32 and 64 bit, Little or Big Endian, Intel, ARM or MIPS.
Tested on the following platforms: Ubuntu and Debian Linux on Intel desktop, Raspberry Pi, BeagleBone Black (will also work on BeagleBone Green, BeagleBone Blue, BeagleBone-xM, BeagleBone-x15); Linux-on-Windows (Windows Subsystem for Linux a.k.a. WSL); Linux on MIPS emulator (QEMU) and more.
.
Development environment supported: GNU toolchain (gcc, gnu Make).
Code provided:Source code for all libraries (MS/TP and BACnet/IP datalinks, Transaction State Machines, ASN.1 encoders/decoders). Also a full-fledged BACnet device source code is provided as an example. All code is written in portable C language. Source code for different platforms is also provided (in C language).
BACnet Building Blocks supported in the example: DS-RP-B, DS-RPM-B, DS-WP-B, DS-WPM-B, DM-DDB-A,B, DM-DOB-B, DM-DCC-B, AE-N-I-B, AE-ACK-B, AE-INFO-B, SCHED-I-B, SCHED-WS-I-B, DM-TS-B, DM-UTC-B, DM-RD-B, DM-R-B, DS-COV-B, DS-COVU-B, DS-RP-A, DS-WP-A..
BACnet objects types supported in the supplied example Device implementation: Accumulator, Analog Input, Analog Output, Analog Value, Binary Input, Binary Output, Binary Value, Device, File, Multi-state Input, Multi-state Value, Multi-state Output, Notification Class, Calendar, Schedule. (it is possible to implement any other BACnet objects in your device)
Documentation provided: User's Guide, and Porting Guide
Support: first year included. $2500 thereafter
Join the BACnet Global Community! Do not spend countless hours, months and years developing your product. Use Cimetrics uBACstac!
You can create devices for the embedded systems including small footprint BACnet Devices and Application Specific Controllers and Advanced Application Controller, especially ones with MS/TP. You can also add BACnet support to existing products, including hardware platforms with OS and TCP/IP protocol. Different platforms have different memory requirements but the good rule of thumb is to have at least 40KB program memory (FLASH) and 4K RAM for uBACstac. Processor capacity depends on the platform too. E.g. ATMega (an 8-bit microprocessor running at 16MHz) is capable of supporting all standard MS/TP baud rates including 115200bps.
More than 150 manufacturers are registered members of the BACnet community. This group includes prestigious companies like Siemens, Honeywell, Secom, JVC, Trane, KMC Controls, LG Electronics, Priva, Loytec, Matsushita, Matrikon, Mitsubishi, Samsung, Sauter, Trend, Wago, and many more.
ALL of these companies mentioned using the Cimetrics BACstac!
Our role in the industry is to keep these well-known companies UP-TO-DATE with the latest BACnet features and to make sure that this code is compatible with the more and more hardware platforms.
uBACstac Data Sheet Porting Guide (included with purchase) User's Guide (included wit purchase)
A: It does support COV - DS-COV-B.
uBACstac can receive COV subscriptions and can send confirmed and unconfirmed COV. The user will just need to integrate his/her code which changes Present Value value and values of other relevant properties, like Reliability. COV is already implemented in an example.
A: Probably yes, but you will have to adjust your project properties accordingly. Specifically, list new *.c files and list paths to include files (*.h). Also, you will have to wrap the .h files which are included in your C++ code with extern "C" { declaration. https://en.wikipedia.org/wiki/Compatibility_of_C_and_C%2B%2B#Linking_C _and_C++_code
A: uBACstac should be compatible with Keil Arm. It does not use gcc-specific directives on Arduino platform, so it should compile. However, we did not try it.
Our customers use Atmel Studio 7.
http://www.microchip.com/mplab/avr-support/atmel-studio-7
Using IDE requires proper configuration of the project, so that the IDE finds all required files, and if your project is written in C++, you will have to use 'extern "C"' wrapping. wrap the .h files which are included in your C++ code with extern "C" { declaration.
https://en.wikipedia.org/wiki/Compatibility_of_C_and_C%2B%2B#Linking_C_and_C++_code