Full FreeRange (FFR)
Embedded BACnet Stack for 32 bit Processors
If you're a developer of microcomputer-based equipment, with applications in commercial buildings, you probably know about BACnet, the international standard for building and control systems networking. Many of your customers are specifying BACnet for new equipment. If you've looked at the BACnet standard, you know that even simple communications functions can present some daunting problems, and you probably don't have the time to become that much of a BACnet expert. You may not have the time or resources necessary to convert all of your existing products to BACnet, but you don't want to be excluded from consideration just because your products don't yet support BACnet. You need a reliable platform to help jumpstart the process of getting your existing products communicating with BACnet devices. But you need to be able to completely customize your BACnet solution to fit your products. You need FreeRange™.
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, 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
name | initiate | execute |
Who-Is | X | X |
I-Am | X | X |
Who-Has | X | X |
I-Have | X | X |
DeviceCommunicationControl | X | |
TimeSynchronization | X | X |
UTCTimeSynchronization | X | X |
ReinitializeDevice | X | |
Confirmed/UnconfirmedTextMessage | X | X |
Confirmed/UnconfirmedPrivateTransfer | X | X |
AcknowledgeAlarm | X | X |
Confirmed/UnconfirmedCOVNotification | X | X |
Unsubscribed COVNotification | X | X |
Confirmed/UnconfirmedEventNotification | X | X |
GetAlarmSummary | X | |
GetEventInformation | X | |
GetEnrollmentSummary | X | |
SubscribeCOV | X | X |
AtomicReadFile | X | X |
AtomicWriteFile | X | X |
AddListElement | X | X |
RemoveListElement | X | X |
CreateObject | X | |
DeleteObject | X | |
ReadProperty | X | X |
WriteProperty | X | X |
ReadPropertyMultiple | X | X |
WritePropertyMultiple | X | X |
ReadPropertyConditional | X | X |
ReadRange | X | X |
VT-Open | X | |
VT-Data | X | X |
VT-Close | X | X |
Major Supported Options
- Segmentation
- N-way Routing
- BBMD functionality
- MS/TP Proxy functionality
- Virtual Device functionality
FreeRange Router/Controller (FR-RC)
Not all applications require the power and flexibility of FFR. For this reason we also license a subset of FFR called FR-RC at a reduced cost. This version does not include all of the FFR functionality and is similar to our VSBHP product. Unlike VSBHP though, FR-RC includes:
- Optional Segmentation
- Optional N-way Routing
- Optional BBMD functionality
- Optional Virtual Device functionality
Specifications
32 bit Processor, >256K RAM, >512K Flash, 1ms timer resolution Recommended