
If you're a developer of microcomputer-based equipment, with applications in commercial buildings, you
probably know about BACnetTM, 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 FreeRangeTM.
PolarSoft® FreeRange is a set of modular software component modules that provide
BACnetTM 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
|
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
|
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. License fees include fully commented source
code, documentation, and one year warranty on all code produced by PolarSoft.
Note: Specifications are subject to change without notice!
|