About the stack

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.

Features

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

Licensing/Price

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.

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.

Source code examples


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.

FAQ

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

Services supported

BACnet ServiceClientServer
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)YesYes
readPropertyConditional (13)YesYes
readPropertyMultiple (14)YesYes
readRange (35)YesYes
writeProperty (15)YesYes
writePropertyMultiple (16)YesYes
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)YesYes
who_Is (34)YesYes
i_Have (27)YesYes
who_Has (33)YesYes
unconfirmedCOVNotification (28)YesYes
unconfirmedEventNotification (29)YesYes
unconfirmedPrivateTransfer (30)YesYes
unconfirmedTextMessage (31)YesYes
timeSynchronization (32)YesYes

Object types supported

Object TypesSupported
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