BACnet Stack


BACnet Stacks

CAS has a well tested and easy to use stack that has been designed to maximize your productivity and minimize your learning curves.

BACnet Ethernet: Stack exists – legacy.

BACNet IP: Well tested

BACNet MSTP: Well tested

Chipkin Automation Systems (CAS) BACnet stack is an application layer BACnet library for embedded systems and application development. The BACnet stack can function both as a server (Field device, etc…) or as a client (HMI, etc…). The BACnet stack is transport layer independent library, making it easy to use with any transport layer such as MSTP, IP, Ethernet and even PTP and ARCnet. By giving you control of the transport layer you can optimize bandwidth and performance by exploiting the resources at your disposal such as multi-threading to exploit multiple simultaneous connections. The BACnet stack is particularly well suited to most contemporary programming styles as the API uses XML to transfer requests for packet building as well as for handling back parsed packets.

The CAS BACnet stack can save man-years of development when your company needs to add BACnet to their products.

Two Ways of Purchasing

Simple – Work with api manual and tech support

Full – Partner with our development Engineers

Need high performance

One of our customers used the stack on a multi-threaded machine to achieve 284,000 present value reads per minute.



  • OS independent (tested with WinCE/Win32/Win64, Linux, FreeROTS)
  • Transport layer independent
  • Client/Server functionality
  • Example code for both client/server on a variety of transport layers; TCP/IP, Ethernet (IEEE 802.3), RS232 (EIA-232, Serial) and RS485 (EIA-485, MSTP)
  • XML strings for all incoming/outgoing messages
  • Build with modern coding practices and design patterns.
  • Thread safe, Extensive unit testing, ect..

 OSI Model

The CAS BACnet stack implements the Application, Presentation and Session layers of the OSI model. The BACnet stack is transport layer indepenent. This allowes you to use any transport layer that you want to including; TCP/IP, Ethernet (IEEE 802.3), RS232 (EIA-232, Serial) and RS485 (EIA-485, MSTP), PTP or ARCnet.

Data unit Layer Function
BACnet Stack
7. Application * Network process to application
6. Presentation * Data representation, encryption and decryption, convert machine dependent data to machine independent data
5. Session * Interhost communication, managing sessions between applications
Segments 4. Transport End-to-end connections, reliability and flow control
Packet/Datagram 3. Network Path determination and logical addressing
Frame 2. Data link Physical addressing
Bit 1. Physical Media, signal and binary transmission


* Handled by the BACnet Stack


The CAS BACnet stack is royalty free

Source code examples


BACnet IP Server – This server will create an object {Device(389002), Analog Input(3333), Analog Output(3)}. Works with the BACnet IP Client example or the CAS BACnet Explorer

BACnet IP Client – This client will continually request {IP:, device(389202), Analog Input(3333)} once every 3 second and display the results to the screen. Works with the BACnet IP Server example.


Do you support GCC
A: Yes, The CAS BACnet stack is ANSI C/C++ and can be compiled under GCC

Q: Do you support CSharp/.Net/Java
A: Yes, with a DLL wrapper

Q: Do you support COV?
A: Yes

Q: Do you support WhoIS/WhoHas/IAM/IHave?
A: Yes

Q: Do you support ReadProperty/ReadPropertyMultiple/WriteProperty/WritePropertyMultiple ?
A: Yes

Q: Do you support ARM processors?
A: Yes, our stack can be compiled with GCC

Q: Do you support runtime (re-)configuration?
A: Yes

Q: Has your stack been tested at a BACnet plugfest
A: Yes, several times with several different products.

Q: Could I make a BACnet IP Server with this BACnet stack?
A: Yes

Q: Do you support Linux
A: Yes

Q: Do you support 32/64bit
A: Yes, we have both 32/64bit libaries and DLLs for windows and linux

Q: Does your code use any third party or open source libraries?
A: No.

Q: What language is your library written in?
A: ANSI C/C++, A C#/Java/Delphi client wrapper have been created

Q: Is this the same stack at ?
A: No, CAS BACnet Stack is not based upon or uses any code from the open source BACnet stack.

Q: How much RAM and code space does the stack take?
A: It depends on the features you need and amount of objects in your device. We have implemented the stack with as little as 8k of RAM

Q: Which communication library does the CAS BACnet stack using for TCP/IP? (ACE, winsock,…)
A: None, The CAS BACnet stack is a transport layer independent library and does not depend on any communication library

Q: How many communication interfaces your code supports? (IP, RS232, RS485,…)
A: All of them. The CAS BACnet stack is a transport layer independent library. Example code is provided for IP, Ethernet, RS232 and RS485

Q: What version of the BACnet protocol do you support?
A: 7, We will be updating the stack to support 12 soon

Q: Do you support BBMD functions?
A: Soon. We are in the process of adding BBMD

Q: Do you support whole ASHRAE® BACnet standard?
A: Most of it, See Services supported section. We are adding new services as they are requested or required.

Q: Why is the CAS BACnet stack royalty free and free of charge?
A: We want out BACnet stack in as many devices as possible. Offering the stack free of charge while charging for support will help us ensure that it works in as many many devices as possible.

Q: What happens if I discover a bug?
A: You can report bugs with our bug tracker and we will do our best to resolve any issues. Any updates to the library will become available to everyone that has purchased the BACnet stack

Q: I’m confused, is the CAS BACnet stack free or do I have to pay for it?
A: The CAS BACnet stack is royalty free, and free of charge but we require you to buy 100 hours of support to help you integrate the BACnet stackin to your device.

Q: Do you support BACnet segmentation?
A: Not at this time but It can be added at a users request.

Q: Where are you located
A: Vancouver, BC, Canada

Q: I have more questions, how do I get in contact with you?
A: Contact us: 1-866-383-1657, Email:

Supported BACnet protocol services

Additional services and object types can be added on request.

  • DS-RP-A – Data Sharing – ReadProperty – A
  • DS-RP-B – Data Sharing – ReadProperty – B
  • DS-RPM-A – Data Sharing – ReadPropertyMultiple – A
  • DS-RPM-B – Data Sharing – ReadPropertyMultiple – B
  • DS-WP-A – Data Sharing – WriteProperty – A
  • DS-WP-B – Data Sharing – WriteProperty – B
  • DS-COV-A – Data Sharing-COV-A
  • DS-COV-B – Data Sharing-COV-B
  • DS-COVP-A – Data Sharing-COVP-A
  • DS-COVP-B – Data Sharing-COVP-B
  • DS-COVU-A – Data Sharing-COV-Unsolicited-A
  • DS-COVU-B – Data Sharing-COV-Unsolicited-B
  • DM-DDB-A – Device Management – Dynamic Device Binding – A
  • DM-DDB-B – Device Management – Dynamic Device Binding – B
  • DM-DOB-A – Device Management – Dynamic Object Binding – A
  • DM-DOB-B – Device Management – Dynamic Object Binding – B

Device Profiles

  • B-ASC – BACnet Application Specific Controller
  • B-SA – BACnet Smart Actuator
  • B-SS – BACnet Smart Sensors

Communication interfaces supported

The CAS BACnet stack is transport layer independent and can be implemented on top of any transport layer you provide. We have working examples of the CAS BACnet stack working with IP, Ethernet, RS232 and RS485.


CAS is a member of BACnet International

BACnet Internatl member of logo



If you liked this post;
  • Please consider subscribing to our RSS feed