A Data Communication Protocol for Building Automation and Control Networks
Contact us: 1-866-383-1657, Email: info001@chipkin.com
Chipkin automation systems BACnet stack is an application layer BACnet library for an embedded system and application development. The BACnet stack can function both as a server (Field device, ect...) or as a client (HMI, ect...). 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, for example. 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 is royalty free, and free of charge.
Instead of charging for the BACnet Stack, we charge for 100 hours of support to help you integrate the BACnet stack in to your device or application.
Anther option that is highly recommended is sending one of our engineers to work along side your engineers at your offices, for the cost of air travel and accommodation.
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.

![]() Download |
BACnet IP Server - This server will create an object {Device(9), Analog Input(1000), Analog Output(1001)}. The present value of Analog Input(1000) is tied to the amount of sent bytes. Works with the BACnet IP Client example or the CAS BACnet Explorer BACnet IP Client - This client will continually request {IP: 192.168.1.117, device(9), Analog Input(1000)} once every 3 second and display the results to the screen. Works with the BACnet IP Server example. BACnet IP Client CSharp - Command line utility that can read/write values from a BACnet server. Works with the BACnet IP Server example. BACnet IP Server Callback - This example will create a BACnet IP server that uses call back functions to query the system for data. Works with the BACnet IP Client example. * Binaries and source code included, BACnet API not included. |
Q: Does your code use any third party libraries?
A: No.
Q: What language is your library written in?
A: ANSI C/C++, A C# client wrapper have been created for .net projects.
Q: Do you support GCC
A: Yes, The CAS BACnet stack is ANSI C/C++ and can be compiled under GCC
Q: Is this the same stack at bacnet.sourceforge.net ?
A: No, CAS BACnet Stack is not based upon or uses any code from the sourceforge.net open source BACnet stack.
Q: Which communication library your code is using for 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: None, The CAS BACnet stack is a transport layer independent library. Example code is provided for IP, Ethernet, RS232 and RS485
Q: Do you support whole ASHRAE® BACnet standard?
A: Some of it, See Services supported section. We are adding new services as they are requested or required.
Q: Do you support COV?
A: Soon. We will be supporting COV messages with in the next few months.
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: Can you be a BBMD Server
A: Not currently. We are planning on providing this ability as we add COV.
Q: Do you support runtime (re-)configuration
A: Yes
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: info001@chipkin.com
| BACnet Service | Client | Server |
|---|---|---|
| Alarm and Event Services | ||
| acknowledgeAlarm (0) | ||
| confirmedCOVNotification (1) | ||
| confirmedEventNotification (2) | ||
| getAlarmSummary (3) | ||
| getEnrollmentSummary (4) | ||
| lifeSafetyOperation (37) | ||
| subscribeCOVProperty (38) | Yes | |
| getEventInformation (39) | ||
| subscribeCOV (5) | Yes | |
| atomicReadFile (6) | ||
| atomicWriteFile (7) | ||
| Object Access Services | ||
| addListElement (8) | ||
| removeListElement (9) | ||
| createObject (10) | ||
| deleteObject (11) | ||
| readProperty (12) | Yes | Yes |
| readPropertyConditional (13) | Yes | Yes |
| readPropertyMultiple (14) | Yes | Yes |
| readRange (35) | Yes | Yes |
| writeProperty (15) | Yes | Yes |
| writePropertyMultiple (16) | Yes | Yes |
| Remote Device Management Services | ||
| deviceCommunicationControl (17) | ||
| confirmedPrivateTransfer (18) | ||
| confirmedTextMessage (19) | ||
| reinitializeDevice (20) | ||
| utcTimeSynchronization (36) | ||
| Virtual Terminal Services | ||
| vtOpen (21) | ||
| vtClose (22) | ||
| vtData (23) | ||
| Security Services | ||
| authenticate (24) | ||
| requestKey (25) | ||
| Unconfirmed Services | ||
| i_Am (26) | Yes | Yes |
| who_Is (34) | Yes | Yes |
| i_Have (27) | Yes | Yes |
| who_Has (33) | Yes | Yes |
| unconfirmedCOVNotification (28) | Yes | Yes |
| unconfirmedEventNotification (29) | Yes | Yes |
| unconfirmedPrivateTransfer (30) | Yes | Yes |
| unconfirmedTextMessage (31) | Yes | Yes |
| timeSynchronization (32) | Yes | Yes |
| Object Types | Supported |
|---|---|
| access_door (30) | Partial |
| accumulator (23) | Partial |
| analog_input (0) | Full |
| analog_output (1) | Full |
| analog_value (2) | Full |
| averaging (18) | Partial |
| binary_input (3) | Full |
| binary_output (4) | Full |
| binary_value (5) | Full |
| calendar (6) | Partial |
| command (7) | Partial |
| device (8) | Full |
| event_enrollment (9) | Partial |
| event_log (25) | Partial |
| file (10) | Partial |
| group (11) | Partial |
| life_safety_point (21) | Partial |
| life_safety_zone (22) | Partial |
| load_control (28) | Partial |
| loop (12) | Partial |
| multi_state_input (13) | Full |
| multi_state_output (14) | Full |
| multi_state_value (19) | Full |
| notification_class (15) | Partial |
| program (16) | Partial |
| pulse_converter (24) | Partial |
| schedule (17) | Full |
| structured_view (29) | Partial |
| trend_log (20) | Partial |
| trend_log_multiple (27) | Partial |