Monday, January 11, 2010

Basic BACnet: Object Types 1 - I/O objects

With all the Smart Grid activities I've been assigned to these days, it's a little hard to keep up with the BACnet world and keep this blog moving. Last Thursday, for example, I had a Smart Grid teleconference that overrode the BACnet Testing Labs call. (I remarked on the possibility of overload to a coworker last week and his less-than-sympathetic response was "It's all committees and you thrive on that!" Thanks, Larry.)


Anyway, the next item on the Basic BACnet agenda is to describe the various BACnet object types, which is not always easy without going into details, But the details are beyond the scope of "Basic BACnet" so I'll give it a try.


The first problem is categorization. The BACnet standard does not do this, so I have had to invent my own. And I've done it like this:


ANALOG Objects:

There are three objects in this category: Analog Input, Analog Output and Analog Value. We looked at the Analog Input in the previous post in this series; it represents a physical input, typically a sensor -- and don't forget that it provides not only the sensor value but additional information including Units.


The Analog Output is the counterpart, it controls some kind of linear output control (or "semi-linear" -- perhaps a value can only be set from 0% to 100% in 0.5% increments).


The third object in the ANALOG set is the Analog Value object. This is a rather peculiar object: although it seems intended to represent storage or control values (you would likely set a thermostat's temperature setpoint in one of these, for example) it can also be used to represent a sensor input or control output. There is not much reason to use an Analog Value for a sensor input, but there may be reason to use one for a control output: it does not require the implementation of a "Priority Array", unlike the Analog Output object -- but the Priority Array is a topic for a future technical post. Let's just note that it requires additional memory to implement.


BINARY Objects:

There are, um, analogs to the Analog object but restricted to binary values (think on/off). There are the Binary Input (is the switch on or off?), the Binary Output (order the relay to be open/closed) and the Binary Value object (again, an input, lightweight output or for storage).


MULTI-STATE Objects:

The final set of I/O objects, the Multi-state Objects is a little more difficult to explain. The easiest is the Multi-state Output, which may be best modeled by the common fan-speed switch: Off, Low and High (or Off, Low, Medium and High). It has a limited and predetermined number of "states," of which it is always in one of the set. The Multi-state Input operates similarly; whatever the source of the input it is placed into one of a predetermined set of a categories. And finally, the Multi-state Value is similar to its Analog and Binary equivalents -- either input, lightweight output, or storage.


I should note that it is possible to have BACnet-readable text strings that describe each of the states in Multi-state objects.


Next up: System objects

No comments:

Post a Comment