PolarSoft BACnet Stacks

If you're a software developer tasked with implementing BACnet, the international standard for building and control systems networking, you've come to the right place. If you've looked at the BACnet standard, you know that it's very complex, and you probably don't have the time to become that much of a BACnet expert. You probably don't have the time or resources necessary to develop BACnet support from the ground up. You need a source for reliable platforms to help jumpstart the process of getting your products communicating with other BACnet devices. You may even have multiple platforms that require a customized BACnet solution to fit your products. You need PolarSoft®.

 

Whether you need Windows or Linux or embedded applications down to the smallest of devices, our extensive collection of BACnet products is the first place to look.

 

Windows Applications - Binary Deployment

PolarSoft provides a Windows BACnet stack that is licensed based on binary deployment. This means that you pay a small royalty fee for each copy that you distribute. The pricing model makes this an attractive choice for applications that are deployed on PCs.

The BACdoor OEM Client/Server (BACDOC) is a Windows DLL that allows programs in C, C++, VB and .net to make use of an extensive collection of functions covering both client and server applications. The API provides multiple schemes for interacting with application programs, including windowed and windowless operation, and synchronous/asynchronous calls.

PolarSoft FreeRange is a set of modular software component modules that provide BACnet client and server application layer, network layer and media access (MAC) layer communications services to embedded systems programs. FreeRange is written entirely in the C language for ease of portability to various platforms.

 

FreeRange interfaces with the embedded system through simple function calls. FreeRange provides entrypoints that your application program must call periodically or under certain circumstances. Also, your application program must provide certain routines that FreeRange may call when needed, for example to send and receive characters from a serial port for MS/TP, or to handle specific service requests. An application template source file contains empty shells for these functions.

 

The FreeRange BACnet Stack implements generic handling for BACnet services, passing control to routines in your application program when particular services are requested.

 

Specific types of communications media, such as Ethernet 8802-3, ARCNET, MS/TP and BACnet/IP are handled by MAC layer drivers that interface with the FreeRange stack. The diagram illustrates the relationship of these programs with each other.

 

FreeRange automatically handles various services such as Who-Is, I-Am, and DeviceCommunicationControl execution. The FreeRange stack pre-qualifies ReadProperty and WriteProperty services and passes the parameters for these requests directly to your application. This allows your application to enforce whatever policies that you want on interpretation of BACnet object identifiers. The only exception is that most of the properties of the Device object are handled directly within FreeRange. ReadPropertyMultiple and WritePropertyMultiple are automatically reduced to single property reads and writes by the stack, simplifying implementation of these common services.

 

The stack is logically divided into five parts: core functions, stack routines, client routines, application routines and MAC drivers. Typically, you will only modify the application template and MAC drivers for a given implementation.

 

The stack also includes full routing functionality and a high-performance MAC layer interface. You can use FreeRange with a single media type, or with multiple ports with N-way routing. The BACnet device object may be homed on any single media type.

 

Supported Services

nameinitiateexecute
Who-IsXX
I-AmXX
Who-HasXX
I-HaveXX
DeviceCommunicationControlX
TimeSynchronizationXX
UTCTimeSynchronizationXX
ReinitializeDeviceX
Confirmed/UnconfirmedTextMessageXX
Confirmed/UnconfirmedPrivateTransferXX
AcknowledgeAlarmXX
Confirmed/UnconfirmedCOVNotificationXX
Unsubscribed COVNotificationXX
Confirmed/UnconfirmedEventNotificationXX
GetAlarmSummaryX
GetEventInformationX
GetEnrollmentSummaryX
SubscribeCOVXX
AtomicReadFileXX
AtomicWriteFileXX
AddListElementXX
RemoveListElementXX
CreateObjectX
DeleteObjectX
ReadPropertyXX
WritePropertyXX
ReadPropertyMultipleXX
WritePropertyMultipleXX
ReadPropertyConditionalXX
ReadRangeXX
VT-OpenX
VT-DataXX
VT-CloseXX

 

Major Supported Options

  • Segmentation
  • N-way Routing
  • BBMD functionality
  • MS/TP Proxy functionality

 

Specifications

Operating System:
Operating System-Independent (multi-threading OS recommended)
32 bit Processor, >256K RAM, >512K Flash, 1ms timer resolution Recommended

LANs:
BACnet/IP, MS/TP, Ethernet 8802-3, ARCNET, PTP

Licensing:
FreeRange is licensed on a one-time fee basis. The license provides for the unrestricted use of the development libraries, and their code components, for the development of BACnet products to be resold in binary form. The development libraries, and components, may not be resold or sublicensed or redistributed. License fees include fully commented source code, documentation, and one year warranty on all code produced by PolarSoft.