<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Chipkin Automation Systems - Articles &#187; Scott Cosby</title>
	<atom:link href="http://www.chipkin.com/articles/category/scott-cosby/feed" rel="self" type="application/rss+xml" />
	<link>http://www.chipkin.com/articles</link>
	<description>Resources and News for industrial automation</description>
	<lastBuildDate>Tue, 07 Feb 2012 14:30:53 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>BACnet Device Backup and Restore Procedures</title>
		<link>http://www.chipkin.com/articles/bacnet-device-backup-and-restore-procedures</link>
		<comments>http://www.chipkin.com/articles/bacnet-device-backup-and-restore-procedures#comments</comments>
		<pubDate>Tue, 06 Nov 2007 17:00:29 +0000</pubDate>
		<dc:creator>scotflwriter</dc:creator>
				<category><![CDATA[BACnet]]></category>
		<category><![CDATA[Scott Cosby]]></category>

		<guid isPermaLink="false">http://www.chipkin.com/articles/bacnet-device-backup-and-restore-procedures</guid>
		<description><![CDATA[The automation developer should be aware of the BACnet procedures concerning device Backup and Restore activities. Both procedures are defined in detail by the standard in Clause 19 for future reference. The procedures may involve either network visible BACnet objects and/or non-network visible settings. Backup and Restore procedures employ File objects to contain and move [...]]]></description>
			<content:encoded><![CDATA[<p>The automation developer should be aware of the BACnet procedures concerning device <strong>Backup </strong>and <strong>Restore </strong>activities. Both procedures are defined in detail by the standard in <em>Clause 19 </em>for<em> </em>future reference. The procedures may involve either network visible BACnet objects and/or non-network visible settings.</p>
<p>Backup and Restore procedures employ <a href="/articles/bacnet-the-file-object"><em>File </em>objects</a> to contain and move configuration data. The specific content and format of this data is a concern for the developer. In addition, the choice of whether to use stream-based or record-based files is also a matter of decision for the developer.</p>
<p>The following is a list of services required for both Backup and Restore procedures from the standard:</p>
<ul>
<li>Reinitialize Device</li>
<li>Read Property</li>
<li>Write Property</li>
<li>Atomic Read</li>
<li>Atomic Write</li>
<li>Create Object (optional)</li>
</ul>
<p>Both of these procedures operate in a similar with only a singular difference. The standard further defines the following events to perform the Backup or Restore procedures:</p>
<ul>
<li>Procedure Initiation</li>
<li>Procedure Preparation</li>
<li>Load Parameters (Backup Procedure only)</li>
<li>Configuration of Files</li>
<li>Procedure Ending</li>
</ul>
<p>In the Initiation phase, a Reinitialize Device message is sent from one device to another using the following structure:</p>
<ul>
<li>ReinitializeDevice(STARTBACKUP or RESTORE, &lt;password&gt;)</li>
</ul>
<p>The sender device will wait for a response from the receiver device before continuing either procedure.</p>
<p>The Preparation phase entails receiving an approval or rejection from the previous phase. The following codes will indicate approval or rejection conditions:</p>
<ul>
<li>&#8216;Result(+)&#8217; &#8211; Approval</li>
<li>&#8216;Result(-)&#8217;  &#8211; Rejection</li>
</ul>
<p>The Backup procedure has an additional step referred to as: Loading Parameters. At receiving an approval result, the sender device will the Configuration_Files property within the Device object. These configuration files contains vendor-specific data related to the procedures.</p>
<p>The next phase involves the actual Backup or Restore operation. This task is accomplished with the information from the Configuration_Files property, and through the Atomic Read and Write services.</p>
<p>The Ending phase for both procedures involves another Reinitialize Device message from the sender to the receiver device in the following structure from the standard:</p>
<ul>
<li>ReinitializeDevice (ENDBACKUP or RESTORE, &lt;password&gt;)</li>
</ul>
<p>Both of the procedures will end with the approval and receipt from the previous message.</p>
<p>In building control applications, many automation devices have configuration data developed by the manufacturer. The developer should be aware of the procedures that the BACnet standard will use if an interoperable device Backup and Restore feature is made available in the automation device.</p>
<p><strong>Written by:</strong> <a href="http://www.chipkin.com/articles/scott-cosby/">Scott Cosby</a><br />
<small>© Chipkin Automation Systems 2007</small></p>
]]></content:encoded>
			<wfw:commentRss>http://www.chipkin.com/articles/bacnet-device-backup-and-restore-procedures/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>BACnet: Priority Array</title>
		<link>http://www.chipkin.com/articles/bacnet-priority-array</link>
		<comments>http://www.chipkin.com/articles/bacnet-priority-array#comments</comments>
		<pubDate>Tue, 30 Oct 2007 17:00:35 +0000</pubDate>
		<dc:creator>Steven</dc:creator>
				<category><![CDATA[BACnet]]></category>
		<category><![CDATA[Scott Cosby]]></category>

		<guid isPermaLink="false">http://www.chipkin.com/articles/bacnet-priority-array</guid>
		<description><![CDATA[The BACnet Priority Array is a specific property type described by the standard as one of the command prioritization mechanisms. The developer should be aware of the manner in which this property type functions concerning priorities within building control systems. The Priority Array is further defined by the standard as a read-only property that consists [...]]]></description>
			<content:encoded><![CDATA[<p>The BACnet Priority Array is a specific property type described by the standard as one of the command prioritization mechanisms.</p>
<p>The developer should be aware of the manner in which this property type functions concerning priorities within building control systems.</p>
<p>The Priority Array is further defined by the standard as a read-only property that consists of commands that categorized by priority levels of decreasing order. NULLs may also exist in this property type as well. The highest priority will reside with the lowest array index and a non-NULL value will represent the active command.</p>
<p>Prioritized commands are essentially those commands that are specific towards commandable properties. The following is a parameter example from the BACnet standard:</p>
<ul>
<li>Property Identifier: Commandable_Property</li>
<li>Property Value: Desired Value</li>
<li>Priority: Priority</li>
</ul>
<p>The following table from the BACnet standard will examine the common command priorities of the priority array:</p>
<table width="100%">
<tr>
<td align="center"><strong>Priority Level</strong></td>
<td align="center"><strong>Application</strong></td>
</tr>
<tr>
<td align="center">1</td>
<td align="center">Manual-Life Safety</td>
</tr>
<tr>
<td align="center">2</td>
<td align="center">Automatic-Life Safety</td>
</tr>
<tr>
<td align="center">3</td>
<td align="center">Available</td>
</tr>
<tr>
<td align="center">4</td>
<td align="center">Available</td>
</tr>
<tr>
<td align="center">5</td>
<td align="center">Critical Equipment Control</td>
</tr>
<tr>
<td align="center">6</td>
<td align="center">Minimum On/Off</td>
</tr>
<tr>
<td align="center">7</td>
<td align="center">Available</td>
</tr>
<tr>
<td align="center">8</td>
<td align="center">Manual Operator</td>
</tr>
<tr>
<td align="center">9</td>
<td align="center">Available</td>
</tr>
<tr>
<td align="center">10</td>
<td align="center">Available</td>
</tr>
<tr>
<td align="center">11</td>
<td align="center">Available</td>
</tr>
<tr>
<td align="center">12</td>
<td align="center">Available</td>
</tr>
<tr>
<td align="center">13</td>
<td align="center">Available</td>
</tr>
<tr>
<td align="center">14</td>
<td align="center">Available</td>
</tr>
<tr>
<td align="center">15</td>
<td align="center">Available</td>
</tr>
<tr>
<td align="center">16</td>
<td align="center">Available</td>
</tr>
</table>
<p>Command entities are assigned one of the sixteen priority levels. These assignments are usually a matter for the developer.</p>
<p>The table may include other commands such as the following building automation related applications mentioned in the BACnet standard:</p>
<ul>
<li>Temperature Override</li>
<li>Demand Limiting</li>
<li>Duty Cycling</li>
<li>Scheduling</li>
</ul>
<p>The following priority array structure example from an actual building automation application was obtained from the Synergy lighting control system developed by Lithonia<br />
Lighting. The following are the local priorities used for the Synergy system:</p>
<p>#define PRIO_PRIORITY_ON 3 /* Synergy Unique */<br />
#define PRIO_PRIORITY_OFF 4 /* Synergy Unique */<br />
#define PRIO_MANUAL_OPERATION 8 /* only used with flash to find */<br />
#define PRIO_NORMAL_OPERATION 10 /* Synergy Unique */<br />
#define PRIO_PRIORITY_LOW 13 /* Synergy Unique */</p>
<p>Because the BACnet standard does not specifically indicate the automation application of lighting controls. The developers at Lithonia Lighting essentially made their own priority decisions when they implemented the BACnet protocol in the Synergy design.</p>
<p>The following paragraph was obtained from a PDF source that describes the priority assignment for effective operation of the lighting control system by Lithonia Lighting:</p>
<p>&#8220;It is strongly suggested that writes intending to turn lighting ON be made at command priority 10 and writes intending to turn lighting OFF write a NULL unless the intention is to forcibly override the normal functioning of the lighting controls.&#8221;</p>
<p><strong>Written by:</strong> <a href="http://www.chipkin.com/articles/scott-cosby/">Scott Cosby</a><br />
<small>© Chipkin Automation Systems 2007</small></p>
]]></content:encoded>
			<wfw:commentRss>http://www.chipkin.com/articles/bacnet-priority-array/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Wireless Sensor And Web Applications Product</title>
		<link>http://www.chipkin.com/articles/wireless-sensor-and-web-applications-product</link>
		<comments>http://www.chipkin.com/articles/wireless-sensor-and-web-applications-product#comments</comments>
		<pubDate>Tue, 23 Oct 2007 17:00:08 +0000</pubDate>
		<dc:creator>Steven</dc:creator>
				<category><![CDATA[Scott Cosby]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://www.chipkin.com/articles/wireless-sensor-and-web-applications-product</guid>
		<description><![CDATA[The Arch Rock Corporation has developed an effective wireless sensor and web services system in their Primer Pack/IP product. This product has unique qualities that would be beneficial to the following areas of building automation: Data Management Building Safety Security Applications Environmental Controls The Primer Pack/IP will offer the end-user the option to move from [...]]]></description>
			<content:encoded><![CDATA[<p>The Arch Rock Corporation has developed an effective wireless sensor and web services system in their Primer Pack/IP product.</p>
<p>This product has unique qualities that would be beneficial to the following areas of building automation:</p>
<ul>
<li>Data Management</li>
<li>Building Safety</li>
<li>Security Applications</li>
<li>Environmental Controls</li>
</ul>
<p>The Primer Pack/IP will offer the end-user the option to move from a static, wired system to a dynamic wireless network able to share valuable data and information to all areas of operation through Ethernet, WiFi, and other connections. The wireless network allows the user a more effective and simple integration process as well.</p>
<p>The Primer Pack/IP is described as a complete standards-based, wireless sensor network (WSN) application development and deployment platform. Composed of a service-oriented architecture (SOA), Internet Protocol (IP)-based networking, and a secure, reliable, responsive, low-power mesh networking.</p>
<p><strong>Primer Pack/IP Set-up</strong></p>
<p>The process requires the separation of the logical communication of data in such functions as naming, routing and security from the physical links that carry the data.</p>
<p>Recently, developers of communication networks have adopted the Internet Protocol (IP) as their common routing protocol, along with transport protocols that enable data bits to be delivered properly to their destination.<br />
The Primer Pack/IP product should work well within BACnet due to the protocol&#8217;s communication through RS232, RS485, Ethernet, and others that conform to BACnet.</p>
<p>Another advantage for the BACnet protocol would be through the various services included in the protocol. Such as the following services:</p>
<ul>
<li>Data Sharing</li>
<li>Alarms</li>
<li>Scheduling</li>
<li>Remote Device Management</li>
</ul>
<p>Primer Pack/IP users can actually develop custom applications to monitor physical conditions without special programming that&#8217;s usually required to build sensor network applications. Sensor data becomes immediately available to the plant manager or field worker on the desired mobile IP device, or to the office worker in a web browser environment.</p>
<p>This technology removes the limitations of wired sensors, and develops networks to make that information readily accessible. In addition, the leading internet and web technology provides a platform for the networks and to further the development of varying information sources.</p>
<p>The San Francisco-based Arch Rock Corporation is a developer that concentrates on products and technology for wireless sensor networks. The corporation&#8217;s goal is to connect the physical and digital world through wireless sensor networks, where the data can be simply viewed, analyzed, and managed by the user.</p>
<p>For more information about the Arch Rock Corporation and its products, visit the following link: <a href="http://www.archrock.com/">http://www.archrock.com/</a><br />
<strong>Written by:</strong> <a href="http://www.chipkin.com/articles/scott-cosby/">Scott Cosby</a><br />
<small>© Chipkin Automation Systems 2007</small></p>
]]></content:encoded>
			<wfw:commentRss>http://www.chipkin.com/articles/wireless-sensor-and-web-applications-product/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>BACnet: Life Safety Objects</title>
		<link>http://www.chipkin.com/articles/bacnet-life-safety-objects</link>
		<comments>http://www.chipkin.com/articles/bacnet-life-safety-objects#comments</comments>
		<pubDate>Tue, 16 Oct 2007 17:00:38 +0000</pubDate>
		<dc:creator>Steven</dc:creator>
				<category><![CDATA[BACnet]]></category>
		<category><![CDATA[Scott Cosby]]></category>

		<guid isPermaLink="false">http://www.chipkin.com/articles/bacnet-life-safety-objects</guid>
		<description><![CDATA[The BACnet standard describes two types of Life Safety objects. The two types of these objects include: Life Safety Point Object Type Life Safety Zone Object Type The Life Safety Point object type is defined by the standard as those objects related to fire, safety, and security applications. The condition of this object type is [...]]]></description>
			<content:encoded><![CDATA[<p>The BACnet standard describes two types of Life Safety objects. The two types of these objects include:</p>
<ul>
<li>Life Safety Point Object Type</li>
<li>Life Safety Zone Object Type</li>
</ul>
<p>The Life Safety Point object type is defined by the standard as those objects related to fire, safety, and security applications. The condition of this object type is determined by the following two factors:</p>
<ul>
<li>Mode</li>
<li>State</li>
</ul>
<p>The object mode is usually under the control of the device operator. The object state indicates the controller condition depending on the internal logic of the device.</p>
<p>Life Safety Point object applications can include the following automation related devices:</p>
<ul>
<li>Automatic Fire Detectors</li>
<li>Sirens</li>
<li>Pull Stations</li>
</ul>
<p>The following table will present the properties and related datatypes of the Life Safety Point object from the BACnet standard:</p>
<table width="100%">
<tr>
<td align="center"><strong>Property</strong></td>
<td align="center"><strong>Datatype</strong></td>
</tr>
<tr>
<td align="center">Object_Identifier</td>
<td align="center">BACnet Object Identifier</td>
</tr>
<tr>
<td align="center">Object_Name</td>
<td align="center">Character String</td>
</tr>
<tr>
<td align="center">Object_Type</td>
<td align="center">BACnet Object Type</td>
</tr>
<tr>
<td align="center">Present_Value</td>
<td align="center">BACnet Life Safety State</td>
</tr>
<tr>
<td align="center">Tracking_Value_</td>
<td align="center">BACnet Life Safety State</td>
</tr>
<tr>
<td align="center">Description</td>
<td align="center">Character String</td>
</tr>
<tr>
<td align="center">Device_Type</td>
<td align="center">Character String</td>
</tr>
<tr>
<td align="center">Status_Flags</td>
<td align="center">BACnet Status Flags</td>
</tr>
<tr>
<td align="center">Event_State</td>
<td align="center">BACnet Event State</td>
</tr>
<tr>
<td align="center">Reliability</td>
<td align="center">BACnet Reliability</td>
</tr>
<tr>
<td align="center">Out_of_Service</td>
<td align="center">Boolean</td>
</tr>
<tr>
<td align="center">Mode</td>
<td align="center">BACnet Life Safety Mode</td>
</tr>
<tr>
<td align="center">Accepted_Modes</td>
<td align="center">List of BACnet Life Safety Mode</td>
</tr>
<tr>
<td align="center">Time_Delay</td>
<td align="center">Unsigned</td>
</tr>
<tr>
<td align="center">Notification_Class</td>
<td align="center">Unsigned</td>
</tr>
<tr>
<td align="center">Life_Safety_Alarm_Values</td>
<td align="center">List of BACnet Life Safety State</td>
</tr>
<tr>
<td align="center">Alarm_Values</td>
<td align="center">List of BACnet Life Safety State</td>
</tr>
<tr>
<td align="center">Fault_Values</td>
<td align="center">List of BACnet Life Safety State</td>
</tr>
<tr>
<td align="center">Event_Enable</td>
<td align="center">BACnet Event Transition Bits</td>
</tr>
<tr>
<td align="center">Acked_Transitions</td>
<td align="center">BACnet Event Transition Bits</td>
</tr>
<tr>
<td align="center">Notify_Type</td>
<td align="center">BACnet Notify Type</td>
</tr>
<tr>
<td align="center">Event_Time_Stamps</td>
<td align="center">BACnet Array (3) of BACnet Time Stamp</td>
</tr>
<tr>
<td align="center">Silenced</td>
<td align="center">BACnet Silenced State</td>
</tr>
<tr>
<td align="center">Operation_Expected</td>
<td align="center">BACnet Life Safety Operation</td>
</tr>
<tr>
<td align="center">Maintenance_Required</td>
<td align="center">BACnet Maintenance</td>
</tr>
<tr>
<td align="center">Setting</td>
<td align="center">Unsigned</td>
</tr>
<tr>
<td align="center">Direct_Reading</td>
<td align="center">Real</td>
</tr>
<tr>
<td align="center">Units</td>
<td align="center">BACnet Engineering Units</td>
</tr>
<tr>
<td align="center">Member_Of</td>
<td align="center">List of BACnet Device Object Reference</td>
</tr>
<tr>
<td align="center">Profile_Name</td>
<td align="center">Character String</td>
</tr>
</table>
<p>The Life Safety Zone object type has similar conditional and property qualities as the Life Safety Point object type, but the focus is concentrated on a group of Life Safety Point and Zone objects.</p>
<p>The following table will present the properties and related datatypes of the Life Safety Zone object from the BACnet standard:</p>
<table width="100%">
<tr>
<td align="center"><strong>Property</strong></td>
<td align="center"><strong>Datatype</strong></td>
</tr>
<tr>
<td align="center">Object_Identifier</td>
<td align="center">BACnet Object Identifier</td>
</tr>
<tr>
<td align="center">Object_Name</td>
<td align="center">Character String</td>
</tr>
<tr>
<td align="center">Object_Type</td>
<td align="center">BACnet Object Type</td>
</tr>
<tr>
<td align="center">Present_Value</td>
<td align="center">BACnet Life Safety State</td>
</tr>
<tr>
<td align="center">Tracking_Value</td>
<td align="center">BACnet Life Safety State</td>
</tr>
<tr>
<td align="center">Description</td>
<td align="center">Character String</td>
</tr>
<tr>
<td align="center">Device_Type</td>
<td align="center">Character String</td>
</tr>
<tr>
<td align="center">Status_Flags</td>
<td align="center">BACnet Status Flags</td>
</tr>
<tr>
<td align="center">Event_State</td>
<td align="center">BACnet Event State</td>
</tr>
<tr>
<td align="center">Reliability</td>
<td align="center">BACnet Reliability</td>
</tr>
<tr>
<td align="center">Out_of_Service</td>
<td align="center">Boolean</td>
</tr>
<tr>
<td align="center">Mode</td>
<td align="center">BACnet Life Safety Mode</td>
</tr>
<tr>
<td align="center">Accepted_Modes</td>
<td align="center">List of BACnet Life Safety Mode</td>
</tr>
<tr>
<td align="center">Time_Delay</td>
<td align="center">Unsigned</td>
</tr>
<tr>
<td align="center">Notification_Class</td>
<td align="center">Unsigned</td>
</tr>
<tr>
<td align="center">Life_Safety_Alarm_Values</td>
<td align="center">List of BACnet Life Safety State</td>
</tr>
<tr>
<td align="center">Alarm_Values</td>
<td align="center">List of BACnet Life Safety State</td>
</tr>
<tr>
<td align="center">Fault_Values</td>
<td align="center">List of BACnet Life Safety State</td>
</tr>
<tr>
<td align="center">Event_Enable</td>
<td align="center">BACnet Event Transition Bits</td>
</tr>
<tr>
<td align="center">Acked_Transitions</td>
<td align="center">BACnet Event Transition Bits</td>
</tr>
<tr>
<td align="center">Notify_Type</td>
<td align="center">BACnet Notify Type</td>
</tr>
<tr>
<td align="center">Event_Time_Stamps</td>
<td align="center">BACnet Array (3) of BACnet Time Stamp</td>
</tr>
<tr>
<td align="center">Silenced</td>
<td align="center">BACnet Silenced State</td>
</tr>
<tr>
<td align="center">Operation_Expected</td>
<td align="center">BACnet Life Safety Operation</td>
</tr>
<tr>
<td align="center">Maintenance_Required</td>
<td align="center">Boolean</td>
</tr>
<tr>
<td align="center">Zone_Members</td>
<td align="center">List of BACnet Device Object Reference</td>
</tr>
<tr>
<td align="center">Member_Of</td>
<td align="center">List of BACnet Device Object Reference</td>
</tr>
<tr>
<td align="center">Profile_Name</td>
<td align="center">Character String</td>
</tr>
</table>
<p>The developer should pay attention to the Mode and State qualities of both Life Safety object types.</p>
<p>The following structure example from the standard will examine both Life Safety object types from actual automation applications. Specifically, the Point object will focus on a building smoke detector. The Zone object will examine the fire zone within a building.</p>
<p><strong>Life Safety Point Object Example:</strong><br />
Property: Object_Identifier = (Life Safety Point, Instance 2)<br />
Property: Object_Name = &#8220;SMK3W&#8221;<br />
Property: Object_Type = LIFE_SAFETY_POINT<br />
Property: Present_Value = PREALARM<br />
Property: Tracking_Value = PREALARM<br />
Property: Description = &#8220;Floor 3, West Zone Smoke Detector&#8221;<br />
Property: Device_Type = &#8220;Old Smokey model 123&#8243;<br />
Property: Status_Flags = {TRUE, FALSE, FALSE, FALSE}<br />
Property: Event_State = LIFE_SAFETY_ALARM<br />
Property: Reliability = NO_FAULT_DETECTED<br />
Property: Out_Of_Service = FALSE<br />
Property: Mode = ON<br />
Property: Accepted_Modes = {ENABLED, DISABLED, TEST}<br />
Property: Time_Delay = 10<br />
Property: Notification_Class = 39<br />
Property: Life_Safety_Alarm_Values = (ALARM)<br />
Property: Alarm_Values = (PREALARM)<br />
Property: Fault_Values = (FAULT)<br />
Property: Event_Enable = {TRUE, TRUE, TRUE}<br />
Property: Acked_Transitions = {TRUE, TRUE, TRUE}<br />
Property: Notify_Type = ALARM<br />
Property: Event_Time_Stamps = ((23-MAR-95, 18:50:21.2), (*-*-*, *:*:*.*),(23-MAR-95, 19:01:34.0))<br />
Property: Silenced = SILENCE_AUDIBLE<br />
Property: Operation_Expected = RESET_ALARM<br />
Property: Maintenance_Required = NONE<br />
Property: Setting = 50<br />
Property: Direct_Reading = 84.3<br />
Property: Units = PERCENT-OBSCURATION-PER-METER<br />
Property: Member_Of = ((Life Safety Zone, Instance 5))</p>
<p><strong>Life Safety Zone Object Example:</strong><br />
Property: Object_Identifier = (Life Safety Zone, Instance 2)<br />
Property: Object_Name = &#8220;SMK3&#8243;<br />
Property: Object_Type = LIFE_SAFETY_ZONE<br />
Property: Present_Value = PREALARM<br />
Property: Tracking_Value = PREALARM<br />
Property: Description = &#8220;Floor 3 Smoke&#8221;<br />
Property: Status_Flags = {TRUE FALSE, FALSE, FALSE}<br />
Property: Event_State = LIFE_SAFETY_ALARM<br />
Property: Reliability = NO_FAULT_DETECTED<br />
Property: Out_Of_Service = FALSE<br />
Property: Mode = ON<br />
Property: Accepted_Modes = {ENABLED, DISABLED, TEST}<br />
Property: Time_Delay = 10<br />
Property: Notification_Class = 39<br />
Property: Life_Safety_Alarm_Values = (ALARM)<br />
Property: Alarm_Values = (PREALARM)<br />
Property: Fault_Values = (FAULT)<br />
Property: Event_Enable = {TRUE, TRUE, TRUE}<br />
Property: Acked_Transitions = {TRUE, TRUE, TRUE}<br />
Property: Notify_Type = ALARM<br />
Property: Event_Time_Stamps = ((23-MAR-95, 18:50:21.2), (*-*-*, *:*:*.*),(23-MAR-95,19:01:34.0))<br />
Property: Silenced = UNSILENCED<br />
Property: Operation_Expected = SILENCE_AUDIBLE<br />
Property: Maintenance_Required = NONE<br />
Property: Zone_Members = ((Life Safety Point, Instance 22),(Life Safety Point, Instance 23))<br />
Property: Member_Of = ((Life Safety Zone, Instance 5))</p>
<p><strong>Written by:</strong> <a href="http://www.chipkin.com/articles/scott-cosby/">Scott Cosby</a></p>
<p><small>© Chipkin Automation Systems 2007</small></p>
]]></content:encoded>
			<wfw:commentRss>http://www.chipkin.com/articles/bacnet-life-safety-objects/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>BACnet: Averaging Object</title>
		<link>http://www.chipkin.com/articles/bacnet-averaging-object</link>
		<comments>http://www.chipkin.com/articles/bacnet-averaging-object#comments</comments>
		<pubDate>Tue, 09 Oct 2007 17:00:41 +0000</pubDate>
		<dc:creator>Steven</dc:creator>
				<category><![CDATA[BACnet]]></category>
		<category><![CDATA[Scott Cosby]]></category>

		<guid isPermaLink="false">http://www.chipkin.com/articles/bacnet-averaging-object</guid>
		<description><![CDATA[The Averaging object is described by the BACnet standard as a recording medium of visible value characteristics over a specific time interval.These specific sampled values may take the following forms in the object: Boolean Integer Unsigned Enumerated Real The following table will present the actual properties and associated datatypes of the Averaging object from the [...]]]></description>
			<content:encoded><![CDATA[<p>The Averaging object is described by the BACnet standard as a recording medium of visible value characteristics over a specific time interval.These specific sampled values may take the following forms in the object:</p>
<ul>
<li>Boolean</li>
<li>Integer</li>
<li>Unsigned</li>
<li>Enumerated</li>
<li>Real</li>
</ul>
<p>The following table will present the actual properties and associated datatypes of the Averaging object from the BACnet standard:</p>
<table width="100%">
<tr>
<td align="center"><strong>Property</strong></td>
<td align="center"><strong>Datatype</strong></td>
</tr>
<tr>
<td align="center">Object_Identifier</td>
<td align="center">BACnet Object Identifier</td>
</tr>
<tr>
<td align="center">Object_Name</td>
<td align="center">Character String</td>
</tr>
<tr>
<td align="center">Object_Type</td>
<td align="center">BACnet Object Type</td>
</tr>
<tr>
<td align="center">Minimum_Value</td>
<td align="center">Real</td>
</tr>
<tr>
<td align="center">Minimum_Value_Timestamp</td>
<td align="center">BACnet Date Time</td>
</tr>
<tr>
<td align="center">Average_Value</td>
<td align="center">Real</td>
</tr>
<tr>
<td align="center">Variance_Value</td>
<td align="center">Real</td>
</tr>
<tr>
<td align="center">Maximum_Value</td>
<td align="center">Real</td>
</tr>
<tr>
<td align="center">Maximum_Value_Timestamp</td>
<td align="center">BACnet Date Time</td>
</tr>
<tr>
<td align="center">Description</td>
<td align="center">Character String</td>
</tr>
<tr>
<td align="center">Attempted_Samples</td>
<td align="center">Unsigned</td>
</tr>
<tr>
<td align="center">Valid_Samples</td>
<td align="center">Unsigned</td>
</tr>
<tr>
<td align="center">Object_Property_Reference</td>
<td align="center">BACnet Device Object Property Reference</td>
</tr>
<tr>
<td align="center">Window_Interval</td>
<td align="center">Unsigned</td>
</tr>
<tr>
<td align="center">Window_Samples</td>
<td align="center">Unsigned</td>
</tr>
<tr>
<td align="center">Profile_Name</td>
<td align="center">Character String</td>
</tr>
</table>
<p>The developer should pay particular attention to the following properties of this object:</p>
<ul>
<li>Window_Interval property</li>
<li>Window_Samples property</li>
<li>Object_Property_Reference property</li>
</ul>
<p>The Window_Interval property indicates the period of time, usually in seconds which the minimum, maximum, and average values are calculated.</p>
<p>The Window_Samples property represents the number of samples to be taken during the timeperiod within the Window_Interval property. In addition, the Window_Samples must be greater than zero and all implementations should support at least 15 samples. The sample may represent an instant or continuously calculated sample, which will be considered a matter for the developer.</p>
<p>The Object_Property_Reference property identifies the object and property whose value will be sample during the Window_Interval. The referenced object may reside in the device that contains the Averaging object or within other supported devices.</p>
<p>The Averaging object uses a specialized technique referred by the standard as a &#8220;sliding window&#8221; that maintains a buffer of samples distributed over the specified time interval. At every time interval a new sample is replaces the oldest sample from the buffer.</p>
<p>The buffer maintains an indication for each sample that permits the average calculation and minimum/maximum algorithm to determine the number of valid samples in the buffer.</p>
<p>The following example from the BACnet standard will present the Averaging object structure from an actual automation application. Specifically, this example focuses on the average and maximum electrical usage in kilowatts (KW) on a specific floor of a building:</p>
<p><strong>Property: </strong>Object_Identifier = (Averaging, Instance 1)<br />
<strong> Property:</strong> Object_Name = &#8220;FLR 12 DEMAND&#8221;<br />
<strong> Property:</strong> Object_Type = AVERAGING<br />
<strong> Property:</strong> Minimum_Value = 2.4<br />
<strong> Property:</strong> Minimum_Value_Timestamp = (16-DEC-1999,13:15:07.32)<br />
<strong> Property:</strong> Average_Value = 12.7<br />
<strong> Property:</strong> Maximum_Value = 18.8<br />
<strong> Property:</strong> Maximum_Value_Timestamp = (16-DEC-1999,13:06:12.19)<br />
<strong> Property:</strong> Description = &#8220;Floor 12 Electrical Demand&#8221;<br />
<strong> Property:</strong> Attempted_Samples = 15<br />
<strong> Property:</strong> Valid_Samples = 14<br />
<strong> Property:</strong> Object_Property_Reference = (Analog Input, Instance 12)<br />
<strong> Property:</strong> Window_Interval = 900<br />
<strong> Property:</strong> Window_Samples = 15</p>
<p><strong>Written by:</strong> <a href="http://www.chipkin.com/articles/scott-cosby/">Scott Cosby</a></p>
<p><small>© Chipkin Automation Systems 2007</small></p>
]]></content:encoded>
			<wfw:commentRss>http://www.chipkin.com/articles/bacnet-averaging-object/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>BACnet: Pulse Converter Object</title>
		<link>http://www.chipkin.com/articles/bacnet-pulse-converter-object</link>
		<comments>http://www.chipkin.com/articles/bacnet-pulse-converter-object#comments</comments>
		<pubDate>Tue, 02 Oct 2007 17:00:27 +0000</pubDate>
		<dc:creator>Steven</dc:creator>
				<category><![CDATA[BACnet]]></category>
		<category><![CDATA[Scott Cosby]]></category>

		<guid isPermaLink="false">http://www.chipkin.com/articles/bacnet-pulse-converter-object</guid>
		<description><![CDATA[The Pulse Converter object is described by the BACnet standard as a process monitor represented by counts or pulses. The type of processes monitored can include those tasks in maintaining a building. Such as the following examples: Power Usage Water Usage Natural Gas Usage The Pulse Converter object might represent a physical input. As an [...]]]></description>
			<content:encoded><![CDATA[<p>The Pulse Converter object is described by the BACnet standard as a process monitor represented by counts or pulses.</p>
<p>The type of processes monitored can include those tasks in maintaining a building. Such as the following examples:</p>
<ul>
<li>Power Usage</li>
<li>Water Usage</li>
<li>Natural Gas Usage</li>
</ul>
<p>The Pulse Converter object might represent a physical input. As an alternative, it might acquire the data from the Present_Value of an Accumulator object, representing an input in the same device as the Pulse Converter object.</p>
<p>The following table will present the actual properties and associated datatypes of the Group object from the BACnet standard:</p>
<table border="1" width="100%">
<tr>
<td align="center"><strong>Property</strong></td>
<td align="center"><strong>Datatype</strong></td>
</tr>
<tr>
<td align="center">Object_Identifier</td>
<td align="center">BACnet Object Identifier</td>
</tr>
<tr>
<td align="center">Object_Name</td>
<td align="center">Character String</td>
</tr>
<tr>
<td align="center">Object_Type</td>
<td align="center">BACnet Object Type</td>
</tr>
<tr>
<td align="center">Description</td>
<td align="center">Character String</td>
</tr>
<tr>
<td align="center">Present_Value</td>
<td align="center">Real</td>
</tr>
<tr>
<td align="center">Input_Reference</td>
<td align="center">BACnet Object Property Reference</td>
</tr>
<tr>
<td align="center">Status_Flags</td>
<td align="center">BACnet Status Flags</td>
</tr>
<tr>
<td align="center">Event_State</td>
<td align="center">BACnet Event State</td>
</tr>
<tr>
<td align="center">Reliability</td>
<td align="center">BACnet Reliability</td>
</tr>
<tr>
<td align="center">Out_of_Service</td>
<td align="center">Boolean</td>
</tr>
<tr>
<td align="center">Units</td>
<td align="center">BACnet Engineering Units</td>
</tr>
<tr>
<td align="center">Scale_Factor</td>
<td align="center">Real</td>
</tr>
<tr>
<td align="center">Adjust_Value</td>
<td align="center">Real</td>
</tr>
<tr>
<td align="center">Count</td>
<td align="center">Unsigned</td>
</tr>
<tr>
<td align="center">Update_Time</td>
<td align="center">BACnet Date Time</td>
</tr>
<tr>
<td align="center">Count_Change_Time</td>
<td align="center">BACnet Date Time</td>
</tr>
<tr>
<td align="center">Count_Before_Change</td>
<td align="center">Unsigned</td>
</tr>
<tr>
<td align="center">COV_Increment</td>
<td align="center">Real</td>
</tr>
<tr>
<td align="center">COV_Period</td>
<td align="center">Unsigned</td>
</tr>
<tr>
<td align="center">Notification_Class</td>
<td align="center">Unsigned</td>
</tr>
<tr>
<td align="center">Time_Delay</td>
<td align="center">Unsigned</td>
</tr>
<tr>
<td align="center">High_Limit</td>
<td align="center">Real</td>
</tr>
<tr>
<td align="center">Low_ Limit</td>
<td align="center">Real</td>
</tr>
<tr>
<td align="center">Deadband</td>
<td align="center">Real</td>
</tr>
<tr>
<td align="center">Limit_Enable</td>
<td align="center">BACnet Limit Enable</td>
</tr>
<tr>
<td align="center">Event_Enable</td>
<td align="center">BACnet Event Transition Bits</td>
</tr>
<tr>
<td align="center">Acked_Transitions</td>
<td align="center">BACnet Event Transition Bits</td>
</tr>
<tr>
<td align="center">Notify_Type</td>
<td align="center">BACnet Notify Type</td>
</tr>
<tr>
<td align="center">Event_Time_Stamps</td>
<td align="center">BACnet Array (3) of BACnet Time Stamp</td>
</tr>
<tr>
<td align="center">Profile_Name</td>
<td align="center">Character String</td>
</tr>
</table>
<p>The developer should pay close attention to a specific property in the preceding table. The specific property is the Adjust_Value property. This property allows the developer to adjust the Present_Value property by writing to the Adjust_Value property, which also causes an adjustment to the Count property as well.</p>
<p>The following example from the BACnet standard will present the Pulse Converter object structure from an actual automation application. This example will specifically focus on the utility usage in a building:</p>
<p><strong>Property:</strong> Object_Identifier = (Pulse Converter, Instance 1)<br />
<strong>Property:</strong> Object_Name = &#8220;Meter 5&#8243;<br />
<strong>Property:</strong> Object_Type = PULSE_CONVERTER<br />
<strong>Property:</strong> Description = &#8220;&#8221;<br />
<strong>Property:</strong> Present_Value = 125.0<br />
<strong>Property:</strong> Input_Reference = ((Accumulator, Instance 1), Present_Value)<br />
<strong>Property:</strong> Status_Flags = {FALSE, FALSE, FALSE, FALSE}<br />
<strong>Property:</strong> Event_State = NORMAL<br />
<strong>Property:</strong> Out_Of_Service = FALSE<br />
<strong>Property:</strong> Units = LITERS_PER_HOUR<br />
<strong>Property:</strong> Scale_Factor = 0.5<br />
<strong>Property:</strong> Adjust_Value = 500.0<br />
<strong>Property:</strong> Count = 250<br />
<strong>Property:</strong> Update_Time = (10-JUL-01,11:40:21.0),<br />
<strong>Property:</strong> Count_Change_Time = (10-JUL-01,11:30:01.0),<br />
<strong>Property:</strong> Count_Before_Change = 523<br />
<strong>Property:</strong> COV_Increment = 10.0<br />
<strong>Property:</strong> COV_Period = 3600<br />
<strong>Property:</strong> Notification_Class = 5<br />
<strong>Property:</strong> Time_Delay = 0<br />
<strong>Property:</strong> High_Limit = 1000.0<br />
<strong>Property:</strong> Low_Limit = 0.0<br />
<strong>Property:</strong> Deadband = 0.0<br />
<strong>Property:</strong> Limit_Enable = {FALSE, TRUE}<br />
<strong>Property:</strong> Event_Enable = {TRUE, FALSE, TRUE}<br />
<strong>Property:</strong> Acked_Transitions = {TRUE, TRUE, TRUE}<br />
<strong>Property:</strong> Notify_Type = ALARM<br />
<strong>Property:</strong> Event_Time_Stamps = ((12-JUL-01,18:50:21.2), (*-*-*,*:*:*.*), (12-JUL-01,19:01:34.0))</p>
<p><strong>Written by:</strong> <a href="http://www.chipkin.com/articles/scott-cosby/">Scott Cosby</a></p>
<p><small>© Chipkin Automation Systems 2007</small></p>
]]></content:encoded>
			<wfw:commentRss>http://www.chipkin.com/articles/bacnet-pulse-converter-object/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>BACnet Architecture</title>
		<link>http://www.chipkin.com/articles/bacnet-architecture</link>
		<comments>http://www.chipkin.com/articles/bacnet-architecture#comments</comments>
		<pubDate>Tue, 25 Sep 2007 17:00:08 +0000</pubDate>
		<dc:creator>Steven</dc:creator>
				<category><![CDATA[BACnet]]></category>
		<category><![CDATA[Scott Cosby]]></category>

		<guid isPermaLink="false">http://www.chipkin.com/articles/bacnet-architecture</guid>
		<description><![CDATA[BACnet has an interesting architecture that all developers should know about for the effective operation of such building automation devices. The BACnet architecture is predominately limited to HVAC, lighting controls, and gateways. BACnet emphasizes efficient, lightweight communication and optimized for small networks, small inter-networks, and short messages. BACnet consists of a collapsed architecture that corresponds [...]]]></description>
			<content:encoded><![CDATA[<p>BACnet has an interesting architecture that all developers should know about for the effective operation of such building automation devices. The BACnet architecture is predominately limited to HVAC, lighting controls, and gateways.</p>
<p>BACnet emphasizes efficient, lightweight communication and optimized for small networks, small inter-networks, and short messages.</p>
<p>BACnet consists of a collapsed architecture that corresponds to four layers of the Open Systems Interconnection (OSI) model. The seven layer reference model is an international standard for conceptualizing network communication protocols and is widely used as the basis of many data communications standards.</p>
<p>The four layers from the OSI model within the BACnet architecture includes:</p>
<ul>
<li>Application</li>
<li>Network</li>
<li>Data Link</li>
<li>Physical</li>
</ul>
<p>Since BACnet is a non-connection protocol, the need for message segmentation and end-to-end error checking is much less than in a connection-based protocol. Thus, the overhead of a discrete transport layer is not justified and the functions normally in a transport layer are delegated to the application layer. In addition, the session layer is not needed, and since BACnet uses a fixed encoding scheme and offloads security to the application layer, a separate presentation layer is not needed.</p>
<p>The following figure from the standard examines the basic structure of the OSI model:</p>
<p style="text-align: center"><img src="http://www.chipkin.com/articles/wp-content/uploads/2007/08/screen1.gif" alt="screen1.gif" /></p>
<p align="center"><strong>Figure 1.</strong> Basic OSI Structure.</p>
<p>The next figure from the standard will present the BACnet architecture with the equivalent OSI layers to the developer:</p>
<p align="center">&nbsp;</p>
<p style="text-align: center"><img src="http://www.chipkin.com/articles/wp-content/uploads/2007/08/screen2.gif" alt="screen2.gif" /></p>
<p><strong>Figure 2. </strong>BACnet Architecture.The collapsed architecture was chosen due to the specific features and requirements of BAC networks, including a requirement that the protocol overhead be minimized as much as possible.</p>
<p>BAC networks are local area networks (LAN). This is true even though in some applications it is necessary to exchange information with devices in a building that is very far away. The long-distance communication is done through telephone networks. The routing, relaying, and guaranteed delivery issues are handled by the telephone system and can be considered external to the BAC network.</p>
<p>BAC devices are static. They don&#8217;t move from place to place and the functions that they are asked to perform do not change in the sense that a manufacturing device may make one kind of part today and some very different part tomorrow.</p>
<p>BACnet defines a protocol optimized for reliable and brief object messaging on a LAN. Based on the OSI model, BACnet is readily extended to many domains outside of the building automation and control networks for which it was originally intended, such as management applications and embedded control. In many of these applications, a specific part of BACnet can be applied with great benefit.</p>
<p>All developers should maintain an understanding of the BACnet architecture, especially when selecting devices for building automation applications.</p>
<p><strong>Written by:</strong> <a href="http://www.chipkin.com/articles/scott-cosby/">Scott Cosby</a></p>
<p><small>© Chipkin Automation Systems 2007</small></p>
]]></content:encoded>
			<wfw:commentRss>http://www.chipkin.com/articles/bacnet-architecture/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>BACnet: The Group Object</title>
		<link>http://www.chipkin.com/articles/bacnet-the-group-object</link>
		<comments>http://www.chipkin.com/articles/bacnet-the-group-object#comments</comments>
		<pubDate>Tue, 18 Sep 2007 17:00:39 +0000</pubDate>
		<dc:creator>Steven</dc:creator>
				<category><![CDATA[BACnet]]></category>
		<category><![CDATA[Scott Cosby]]></category>

		<guid isPermaLink="false">http://www.chipkin.com/articles/bacnet-the-group-object</guid>
		<description><![CDATA[The Group object is described by the BACnet standard as a collection of other objects, and one or more of their properties. The Group object is essentially used to simplify the information exchange between BACnet devices through a shorthand method to specify all group members at once. The developer should be aware that a group [...]]]></description>
			<content:encoded><![CDATA[<p>The Group object is described by the BACnet standard as a collection of other objects, and one or more of their properties.</p>
<p>The Group object is essentially used to simplify the information exchange between BACnet devices through a shorthand method to specify all group members at once.</p>
<p>The developer should be aware that a group can be formed through any combination of object types.</p>
<p>The following table will present the actual properties and associated datatypes of the Group object from the BACnet standard:</p>
<p align="center">
<table border="1" width="100%">
<tr>
<td align="center"><strong>Property</strong></td>
<td align="center"><strong>Datatype</strong></td>
</tr>
<tr>
<td align="center">Object_Identifier</td>
<td align="center">BACnet Object Identifier</td>
</tr>
<tr>
<td align="center">Object_Name</td>
<td align="center">Character String</td>
</tr>
<tr>
<td align="center">Object_Type</td>
<td align="center">BACnet Object Type</td>
</tr>
<tr>
<td align="center">Description</td>
<td align="center">Character String</td>
</tr>
<tr>
<td align="center">List_of_Group_Members</td>
<td align="center">List of Read Access Specification(s)</td>
</tr>
<tr>
<td align="center">Present_Value</td>
<td align="center">List of Read Access Result(s)</td>
</tr>
<tr>
<td align="center">Profile_Name</td>
<td align="center">Character String</td>
</tr>
</table>
<p>The developer should pay close attention to two properties in the preceding table. The properties include:</p>
<ul>
<li><strong>List_of_Group_Members </strong>property</li>
<li><strong>Present_Value </strong>property</li>
</ul>
<p>The List_of_Group_Members represents a list of read access specification(s) that defines the group members that will be referenced when the object is specified in a standard transaction.</p>
<p>The Present_Value property represents the result from the read access specification(s). This property is a list that contains the values of all the properties specified in the List_Of_Group_Members. This is a &#8220;read only&#8221; property; and it cannot be used to write a set of values to the members of the group. The Present_Value list is reconstructed each time the property is read by retrieving the member properties. This requirement is required to reduce problems that could result if the Present_Value were stored.</p>
<p>Each of these read access specification(s) contains two essential parts:</p>
<ul>
<li>Object_Identifier</li>
<li>Property Reference List</li>
</ul>
<p>In addition, all group members should be objects that are in the same device that maintains the Group object.</p>
<p>The following example from the BACnet standard will present the Group object structure from an actual automation application. This example will specifically reference the air temperatures in a particular area or &#8220;zone&#8221; of a building:</p>
<p><strong>Property: Object_Identifier</strong> = (Group, Instance 1)<br />
<strong>Property: Object_Name</strong> = &#8220;ZONE1_TEMPS&#8221;<br />
<strong>Property: Object_Type</strong> = GROUP<br />
<strong>Property: Description</strong> = &#8220;Zone 1 Temperature Group&#8221;<br />
<strong>Property: List_Of_Group_Members</strong> = (((Analog Input, Instance 8),(Present_Value,   Reliability, Description)), ((Analog Input, Instance 9),(Present_Value, Reliability, Description)), ((Analog Input, Instance 10), (Present_Value, Reliability, Description)),<br />
((Analog Input, Instance 11),(Present_Value, Reliability, Description)),((Analog Input, Instance 12),(Present_Value, Reliability, Description)))<br />
<strong>Property: Present_Value</strong> = (((Analog Input, Instance 8), Present_Value, 69.7, Reliability, NO_FAULT_DETECTED, Description, &#8220;Room 1&#8243;), ((Analog Input, Instance 9), Present_Value, 71.2, Reliability, NO_FAULT_DETECTED, Description, &#8220;Room 2&#8243;),<br />
((Analog Input, Instance 10), Present_Value, -50.0, Reliability, UNRELIABLE_OTHER, Description, &#8220;Room 3&#8243;), ((Analog Input, Instance 11), Present_Value, 69.7, Reliability,<br />
NO_FAULT_DETECTED, Description, &#8220;Room 4&#8243;), ((Analog Input, Instance 12), Present_Value, 73.3, Reliability, NO_FAULT_DETECTED, Description, &#8220;Room 5&#8243;))</p>
<p><strong>Written by:</strong> <a href="http://www.chipkin.com/articles/scott-cosby/">Scott Cosby</a></p>
<p><small>© Chipkin Automation Systems 2007</small></p>
]]></content:encoded>
			<wfw:commentRss>http://www.chipkin.com/articles/bacnet-the-group-object/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>BACnet: The File Object</title>
		<link>http://www.chipkin.com/articles/bacnet-the-file-object</link>
		<comments>http://www.chipkin.com/articles/bacnet-the-file-object#comments</comments>
		<pubDate>Tue, 11 Sep 2007 17:00:02 +0000</pubDate>
		<dc:creator>Steven</dc:creator>
				<category><![CDATA[BACnet]]></category>
		<category><![CDATA[Scott Cosby]]></category>

		<guid isPermaLink="false">http://www.chipkin.com/articles/bacnet-the-file-object</guid>
		<description><![CDATA[The File object is defined by the BACnet standard as data files that are described by the object’s properties, and accessed through File Services. File Services is listed in the standard as Clause 14. The clause describes the access and manipulation of files within BACnet devices. The developer has two options regarding file types accessed [...]]]></description>
			<content:encoded><![CDATA[<p>The File object is defined by the BACnet standard as data files that are described by the object’s properties, and accessed through File Services.</p>
<p>File Services is listed in the standard as Clause 14. The clause describes the access and manipulation of files within BACnet devices. The developer has two options regarding file types accessed through File Services:</p>
<ul>
<li>Vendor defined files</li>
<li>Bacnet standard files</li>
</ul>
<p>Any file accessible through File Services has a related File object in a BACnet device.</p>
<p>The primary purpose of the File object is to identify a specific file through the following descriptions:</p>
<ul>
<li>File Name</li>
<li>File Size</li>
<li>Creation Date</li>
<li>File Type</li>
</ul>
<p>The following table will present the actual properties and associated datatypes of the File object from the BACnet standard:</p>
<table border="1">
<tr>
<td><strong>Property</strong></td>
<td><strong>Datatype</strong></td>
</tr>
<tr>
<td>Object_Identifier</td>
<td>BACnet Object Identifier</td>
</tr>
<tr>
<td>Object_Name</td>
<td>Character String</td>
</tr>
<tr>
<td>Object_Type</td>
<td>BACnet Object Type</td>
</tr>
<tr>
<td>Description</td>
<td>Character String</td>
</tr>
<tr>
<td>File_Type</td>
<td>Character String</td>
</tr>
<tr>
<td>File_Size</td>
<td>Unsigned</td>
</tr>
<tr>
<td>Modification_Date</td>
<td>BACnet Date Time</td>
</tr>
<tr>
<td>Archive</td>
<td>Boolean</td>
</tr>
<tr>
<td>Read_Only</td>
<td>Boolean</td>
</tr>
<tr>
<td>File_Access_Method</td>
<td>BACnet File Access Method</td>
</tr>
<tr>
<td>Record_Count</td>
<td>Unsigned</td>
</tr>
<tr>
<td>Profile_Name</td>
<td>Character String</td>
</tr>
</table>
<p>The developer should be aware that File Services has two specific operations:</p>
<ul>
<li>Atomic Read</li>
<li>Atomic Write</li>
</ul>
<p>The meaning of Atomic is defined in the standard as a singular operation in that no other similar operation is permitted for the same file. In addition, the synchronization of these operations is matter for the developer.</p>
<p>The following two tables will examine the structure of the Atomic Read and Write operations:</p>
<p align="center"> <strong>Atomic Read Structure Table</strong></p>
<table border="1" width="100%">
<tr>
<td><strong>Parameter Name</strong></td>
<td align="center"><strong>Request</strong></td>
<td align="center"><strong>Indication</strong></td>
<td align="center"><strong>Response</strong></td>
<td align="center"><strong>Confirm</strong></td>
</tr>
<tr>
<td>Argument</td>
<td align="center">M</td>
<td align="center">M(=)</td>
<td align="center">&nbsp;</td>
<td align="center">&nbsp;</td>
</tr>
<tr>
<td>File Identifier</td>
<td align="center">M</td>
<td align="center">M(=)</td>
<td align="center">&nbsp;</td>
<td align="center">&nbsp;</td>
</tr>
<tr>
<td>Stream Access</td>
<td align="center">S</td>
<td align="center">S(=)</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>File Start Position</td>
<td align="center">M</td>
<td align="center">M(=)</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>Requested Octet Count</td>
<td align="center">M</td>
<td align="center">M(=)</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>Record Access</td>
<td align="center">S</td>
<td align="center">S(=)</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>File Start Record</td>
<td align="center">M</td>
<td align="center">M(=)</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>Requested Record Count</td>
<td align="center">M</td>
<td align="center">M(=)</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>Result(+)</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td align="center">S</td>
<td align="center">S(=)</td>
</tr>
<tr>
<td>End Of File</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td align="center">M</td>
<td align="center">M(=)</td>
</tr>
<tr>
<td>Stream Access</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td align="center">S</td>
<td align="center">S(=)</td>
</tr>
<tr>
<td>File Start Position</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td align="center">M</td>
<td align="center">M(=)</td>
</tr>
<tr>
<td>File Data</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td align="center">C</td>
<td align="center">C(=)</td>
</tr>
<tr>
<td>Record Access</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td align="center">S</td>
<td align="center">S(=)</td>
</tr>
<tr>
<td>File Start Record</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td align="center">M</td>
<td align="center">M(=)</td>
</tr>
<tr>
<td>Returned Record Count</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td align="center">M</td>
<td align="center">M(=)</td>
</tr>
<tr>
<td>File Record Data</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td align="center">C</td>
<td align="center">C(=)</td>
</tr>
<tr>
<td>Result(-)</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td align="center">S</td>
<td align="center">S(=)</td>
</tr>
<tr>
<td>Error Type</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td align="center">M</td>
<td align="center">M(=)</td>
</tr>
</table>
<p align="center"><strong>Atomic Write Structure Table:</strong></p>
<table border="1" width="100%">
<tr>
<td><strong>Parameter Name</strong></td>
<td align="center"><strong>Request</strong></td>
<td align="center"><strong>Indication</strong></td>
<td align="center"><strong>Response</strong></td>
<td align="center"><strong>Confirm</strong></td>
</tr>
<tr>
<td>Argument</td>
<td align="center">M</td>
<td align="center">M(=)</td>
<td align="center">&nbsp;</td>
<td align="center">&nbsp;</td>
</tr>
<tr>
<td>File Identifier</td>
<td align="center">M</td>
<td align="center">M(=)</td>
<td align="center">&nbsp;</td>
<td align="center">&nbsp;</td>
</tr>
<tr>
<td>Stream Access</td>
<td align="center">S</td>
<td align="center">S(=)</td>
<td align="center">&nbsp;</td>
<td align="center">&nbsp;</td>
</tr>
<tr>
<td>File Start Position</td>
<td align="center">M</td>
<td align="center">M(=)</td>
<td align="center">&nbsp;</td>
<td align="center">&nbsp;</td>
</tr>
<tr>
<td>File Data</td>
<td align="center">M</td>
<td align="center">M(=)</td>
<td align="center">&nbsp;</td>
<td align="center">&nbsp;</td>
</tr>
<tr>
<td>Record Access</td>
<td align="center">S</td>
<td align="center">S(=)</td>
<td align="center">&nbsp;</td>
<td align="center">&nbsp;</td>
</tr>
<tr>
<td>File Start Record</td>
<td align="center">M</td>
<td align="center">M(=)</td>
<td align="center">&nbsp;</td>
<td align="center">&nbsp;</td>
</tr>
<tr>
<td>Record Count</td>
<td align="center">M</td>
<td align="center">M(=)</td>
<td align="center">&nbsp;</td>
<td align="center">&nbsp;</td>
</tr>
<tr>
<td>File Record Data</td>
<td align="center">M</td>
<td align="center">M(=)</td>
<td align="center">&nbsp;</td>
<td align="center">&nbsp;</td>
</tr>
<tr>
<td>Result(+)</td>
<td align="center">&nbsp;</td>
<td align="center">&nbsp;</td>
<td align="center">S</td>
<td align="center">S(=)</td>
</tr>
<tr>
<td>Stream Access</td>
<td align="center">&nbsp;</td>
<td align="center">&nbsp;</td>
<td align="center">S</td>
<td align="center">S(=)</td>
</tr>
<tr>
<td>File Start Position</td>
<td align="center">&nbsp;</td>
<td align="center">&nbsp;</td>
<td align="center">M</td>
<td align="center">M(=)</td>
</tr>
<tr>
<td>Record Access</td>
<td align="center">&nbsp;</td>
<td align="center">&nbsp;</td>
<td align="center">S</td>
<td align="center">S(=)</td>
</tr>
<tr>
<td>File Start Record</td>
<td align="center">&nbsp;</td>
<td align="center">&nbsp;</td>
<td align="center">M</td>
<td align="center">M(=)</td>
</tr>
<tr>
<td>Result(-)</td>
<td align="center">&nbsp;</td>
<td align="center">&nbsp;</td>
<td align="center">S</td>
<td align="center">S(=)</td>
</tr>
<tr>
<td>Error Type</td>
<td align="center">&nbsp;</td>
<td align="center">&nbsp;</td>
<td align="center">M</td>
<td align="center">M(=)</td>
</tr>
</table>
<p>M &#8211; Mandatory parameter.<br />
C &#8211; Conditional parameter.<br />
S &#8211; Selection parameter from a collection of two or more possible parameters.</p>
<p>The code &#8220;=&#8221; following one of the codes M, C, or S indicates that the parameter is equivalent to the parameter to its immediate left in the table.</p>
<p>The following example from the BACnet standard will present the File object structure from an actual automation application. This example will specifically examine a File object that contains trend information:</p>
<p>Property: Object_Identifier = (File, Instance 7)<br />
Property: Object_Name = &#8220;TREND_AI1&#8243;<br />
Property: Object_Type = FILE<br />
Property: Description = &#8220;Trend of AI1&#8243;<br />
Property: File_Type = &#8220;TREND&#8221;<br />
Property: File_Size = 750<br />
Property: Modification_Date = (1-NOV-1995, 08:30:49.0)<br />
Property: Archive = FALSE<br />
Property: Read_Only = FALSE<br />
Property: File_Access_Method= RECORD_ACCESS<br />
Property: Record_Count = 150</p>
<p><strong>Written by:</strong> <a href="http://www.chipkin.com/articles/scott-cosby/">Scott Cosby</a></p>
<p><small>© Chipkin Automation Systems 2007</small></p>
]]></content:encoded>
			<wfw:commentRss>http://www.chipkin.com/articles/bacnet-the-file-object/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>BACnet: Event Enrollment Object</title>
		<link>http://www.chipkin.com/articles/bacnet-event-enrollment-object</link>
		<comments>http://www.chipkin.com/articles/bacnet-event-enrollment-object#comments</comments>
		<pubDate>Tue, 04 Sep 2007 17:00:48 +0000</pubDate>
		<dc:creator>Steven</dc:creator>
				<category><![CDATA[BACnet]]></category>
		<category><![CDATA[Scott Cosby]]></category>

		<guid isPermaLink="false">http://www.chipkin.com/articles/bacnet-event-enrollment-object</guid>
		<description><![CDATA[The Event Enrollment object is defined by the standard as information related to the management of events for BACnet systems. Events are essentially changes in the value of any property concerning any object that meets specific criteria. The central purpose for the Event Enrollment object is to define an event, and offer the developer a [...]]]></description>
			<content:encoded><![CDATA[<p>The Event Enrollment object is defined by the standard as information related to the management of events for BACnet systems. Events are essentially changes in the value of any property concerning any object that meets specific criteria.</p>
<p>The central purpose for the Event Enrollment object is to define an event, and offer the developer a connection between the event occurrence and the transmission of notification messages.</p>
<p>The Event Enrollment object contains the following information for effective operation:</p>
<ul>
<li>Event Type Description</li>
<li>Event Occurrence Notification</li>
<li>Device Notification</li>
</ul>
<p>The following table will present the actual properties and associated datatypes of the Event Enrollment object from the BACnet standard:</p>
<table border="1" width="100%">
<tr>
<td>Property</td>
<td>Datatype</td>
</tr>
<tr>
<td>Object_Identifier</td>
<td>BACnet Object Identifier</td>
</tr>
<tr>
<td>Object_Name</td>
<td>Character String</td>
</tr>
<tr>
<td>Object_Type</td>
<td>BACnet Object Type</td>
</tr>
<tr>
<td>Description</td>
<td>Character String</td>
</tr>
<tr>
<td>Event_Type</td>
<td>BACnet Event Type</td>
</tr>
<tr>
<td>Notify_Type</td>
<td>BACnet Notify Type</td>
</tr>
<tr>
<td>Event_Parameters</td>
<td>BACnet Event Parameter</td>
</tr>
<tr>
<td>Object_Property_Reference</td>
<td>BACnet Device Object Property Reference</td>
</tr>
<tr>
<td>Event_State</td>
<td>BACnet Event State</td>
</tr>
<tr>
<td>Event_Enable</td>
<td>BACnet Event Transition Bits</td>
</tr>
<tr>
<td>Acked_Transitions</td>
<td>BACnet Event Transition Bits</td>
</tr>
<tr>
<td>Notification_Class</td>
<td>Unsigned</td>
</tr>
<tr>
<td>Event_Time_Stamps</td>
<td>BACnet Array (3) of BACnet Time Stamp</td>
</tr>
<tr>
<td>Profile_Name</td>
<td>Character String</td>
</tr>
</table>
<p>The BACnet standard states that there’s a specific relationship among three properties:</p>
<ul>
<li>Event_Type</li>
<li>Event_State</li>
<li>Event_Parameters</li>
</ul>
<p>The Event_Type represents the algorithm used to determine the Event_State. The Event_Parameters property provides certain parameters required by the algorithm. The developer should pay special attention to the relationship of these three properties.</p>
<p>The following table from the standard will examine the three properties and their associated values:</p>
<table border="1" width="100%">
<tr>
<td>Event_Type</td>
<td>Event_State</td>
<td>Event_Parameters</td>
</tr>
<tr>
<td>Change_of_ Bitstring</td>
<td>Normal<br />
OffNormal</td>
<td>Time_Delay<br />
Bitmask<br />
List_of_Bitstring_Values</td>
</tr>
<tr>
<td>Change_of_State</td>
<td>Normal<br />
OffNormal</td>
<td>Time_Delay<br />
List_of_Values</td>
</tr>
<tr>
<td>Change_of_Value</td>
<td>Normal<br />
OffNormal</td>
<td>Time_Delay<br />
Bitmask<br />
Referenced_Property_Increment</td>
</tr>
<tr>
<td>Command_Failure</td>
<td>Normal<br />
OffNormal</td>
<td>Time_Delay<br />
Feedback_Property_Reference</td>
</tr>
<tr>
<td>Floating_Limit</td>
<td>Normal<br />
High_Limit<br />
Low_Limit</td>
<td>Time_Delay<br />
Setpoint_Reference<br />
Low_Diff_Limit<br />
High_Diff_Limit<br />
Deadband</td>
</tr>
<tr>
<td>Out_of_Range</td>
<td>Normal<br />
High_Limit<br />
Low_Limit</td>
<td>Time_Delay<br />
Low_ Limit<br />
High_ Limit<br />
Deadband</td>
</tr>
<tr>
<td>Buffer_Ready</td>
<td>Normal</td>
<td>Notification_Theshold</td>
</tr>
<tr>
<td>Change_of_Life_Safety</td>
<td>Normal<br />
OffNormal<br />
Life_Safety_Alarm</td>
<td>Time_Delay<br />
List_of_Alarm_Values<br />
List_of_Life_Safety_Alarm_Values<br />
Mode_Property_Reference</td>
</tr>
</table>
<p>The next two examples from the standard will reveal the Event Enrollment object structure from an actual automation application. Specifically, the two examples will involve temperature control in a certain room of a building:</p>
<p><code>Property: Object_Identifier = (Analog Input, Instance 2)<br />
Property: Object_Name = "Zone1_Temp"<br />
Property: Object_Type = ANALOG_INPUT<br />
Property: Present_Value = 86.0<br />
Property: Description = "Receptionist Lobby Temp"<br />
Property: Device_Type = "PT 3K RTD"<br />
Property: Status_Flags = {FALSE, FALSE, FALSE, FALSE}<br />
Property: Event_State = NORMAL<br />
Property: Reliability = NO_FAULT_DETECTED<br />
Property: Out_Of_Service = FALSE<br />
Property: Update_Interval = 5<br />
Property: Units = DEGREES_FAHRENHEIT<br />
Property: Min_Pres_Value = 55.0<br />
Property: Max_Pres_Value = 95.0<br />
Property: Resolution = 0.1</code></p>
<p>The Analog_Input object above is assumed for the following Change_of_Value Event example, and the object is located in Device 12.</p>
<p><code>Property: Object_Identifier = (Event Enrollment, Instance 2)<br />
Property: Object_Name = "Zone1TempCOV"<br />
Property: Object_Type = EVENT_ENROLLMENT<br />
Property: Description = "Zone 1 Temperature COV"<br />
Property: Event_Type = CHANGE_OF_VALUE<br />
Property: Notify_Type = EVENT<br />
Property: Event_Parameters = (5, 0.25)<br />
Property: Object_Property_Reference = ((Device, Instance 12),(Analog Input, Instance 2), Present_Value)<br />
Property: Event_State = NORMAL<br />
Property: Event_Enable = (TRUE, FALSE, FALSE)<br />
Property: Acked_Transitions = (TRUE, TRUE, TRUE)<br />
Property: Event_Time_Stamps = ((23-MAR-95,18:50:21.2),(*-*-*,*:*:*.*),(23-MAR-95,19:01:34.0))</code></p>
<p><strong>Written by:</strong> <a href="http://www.chipkin.com/articles/scott-cosby/">Scott Cosby</a></p>
<p><small>© Chipkin Automation Systems 2007</small></p>
]]></content:encoded>
			<wfw:commentRss>http://www.chipkin.com/articles/bacnet-event-enrollment-object/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

