<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/2.3.1" -->
<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/"
	>

<channel>
	<title>PolarViews</title>
	<link>http://blog.polarsoft.com</link>
	<description>David Fisher is President of PolarSoft Inc., BACnet Evangelist and Old School Coder</description>
	<pubDate>Mon, 14 Jul 2008 20:41:21 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.3.1</generator>
	<language>en</language>
			<item>
		<title>Correct Names for BACnet MAC Layers</title>
		<link>http://blog.polarsoft.com/?p=22</link>
		<comments>http://blog.polarsoft.com/?p=22#comments</comments>
		<pubDate>Tue, 08 Jul 2008 19:37:41 +0000</pubDate>
		<dc:creator>David</dc:creator>
		
		<category><![CDATA[BACnet for Newbies]]></category>

		<guid isPermaLink="false">http://blog.polarsoft.com/?p=22</guid>
		<description><![CDATA[I fielded a question today that contained a lot of misunderstandings about terminology for BACnet MAC Layers, in particular what the difference between BACnet 8802-3 and BACnet/IP is all about. It made reference to an article by FieldServer that also contains some misleading information:
http://www.fieldserver.com/products/appnotes/009_bacnetprotocols.asp
http://www.fieldserver.com/docs/pdf/AN009.pdf
Here&#8217;s the real story.
BACnet/IP is the correct term, NOT BACnet IP.
BACnet/IP has [...]]]></description>
			<content:encoded><![CDATA[<p>I fielded a question today that contained a lot of misunderstandings about terminology for BACnet MAC Layers, in particular what the difference between BACnet 8802-3 and BACnet/IP is all about. It made reference to an article by FieldServer that also contains some misleading information:</p>
<p><a href="http://www.fieldserver.com/products/appnotes/009_bacnetprotocols.asp">http://www.fieldserver.com/products/appnotes/009_bacnetprotocols.asp</a></p>
<p><a href="http://www.fieldserver.com/docs/pdf/AN009.pdf">http://www.fieldserver.com/docs/pdf/AN009.pdf</a></p>
<p>Here&#8217;s the real story.</p>
<p>BACnet/IP is the correct term, NOT BACnet IP.</p>
<p>BACnet/IP has nothing to do with TCP/IP and does not make use of TCP/IP in any way. BACnet/IP uses UDP/IP for its transport. When using BACnet/IP although it is overwhelmingly most common to use an Ethernet MAC layer it is not required. There are many examples such as 802.11, VPN technology and other types of WAN that are not Ethernet but work just fine with BACnet/IP. The whole point of BACnet/IP is to isolate BACnet from such dependency.</p>
<p>Other &#8220;correct&#8221; terms:</p>
<ul>
<li>BACnet over 8802-3 Ethernet or more simply BACnet 8802-3</li>
<li>BACnet over ARCNET or ARC156K</li>
<li>BACnet over MS/TP</li>
</ul>
<p>The slashes and capitalization are important</p>
<p>MS/TP means &#8220;Master-Slave / Token Passing&#8221;<</p>
<p>There is no good vs. bad issue regarding BACnet/IP and BACnet 8802-3. These are just different approaches for different circumstances and in many cases one is just as good as the other. BACnet 8802-3 makes use of a "raw Ethernet" MAC layer using the 8802-3 form of Ethernet packet rather than the older but widely used "DIX or Ethernet II" form. The 8802-3 form used with BACnet includes an ISO8802-2 UI frame that adds 3 octets of overhead. This is where the magic number 1497 octets comes from: 1500 octet Ethernet payload minus 3 octets of 8802-2 UI frame header. The remainder of the message is a BACnet NPDU. When IP (as in TCP/IP and UDP/IP) transports are used on Ethernet it is possible to also use 8802-3/8802-2 to transport them. However, this is rarely done and most systems instead use the older DIX frame with 0x0800 frame type (IP). The payload is an IP header and its payload. In the case of BACnet/IP the IP header is followed by a UDP header, then a BACnet BVLL header THEN the very same NPDU that would appear in a BACnet 8802-3 frame. So BACnet/IP is considerably larger overhead than BACnet 8802-3, although this doesn't really have a speed impact. The IP header (20 octets) and UDP header (8 octets) and BVLL header (4 octets) take away 32 octets from the 1500 available leaving actually 1468 octets. BACnet/IP allows the NPDU to be as large as 1497 though which will cause fragmentation and actually generate two packets although this is invisible to the sending software.</p>
<p>If the whole Ethernet network is one logical segment connected by Ethernet hubs and/or switches, then BACnet 8802-3 is preferable because it is lower overhead and can make full use of the maximum packet sizes without fragmenting.</p>
<p>If you are also using IP based devices on the same infrastructure AND they share the same IP subnet, or ALL of the BACnet/IP devices share the same IP subnet, then BACnet/IP is nearly as good but slightly slower.</p>
<p>If there are any IP routers in place that divide the infrastructure into two or more IP subnets AND ANY of the BACnet devices are separated from the other BACnet devices by an IP router AND the IP router doesn't have Ethernet bridging capability, then BACnet/IP is preferable because of the need to bridge BACnet 8802-3 segments together which is not necessary with BACnet/IP, However, when there are multiple IP subnets AND there are BACnet/IP devices on more than one of those subnets, there is a need for broadcast management across the subnets. </p>
<p>This can be solved one of two ways:</p>
<p>1. Have a BBMD on each BACnet/IP subnet<br />
or<br />
2. Have at least one BBMD (on one of the subnets) that supports Foreign Device Registration AND use BACnet/IP devices on the other subnets that can register as Foreign Devices. This can be tricky because:</p>
<ul>
<li>Not all subnets necessarily have BBMDs</li>
<li>Not all BBMDs support Foreign Device registration, and may be limited in number if they do</li>
<li>Not all BACnet/IP devices support registering as Foreign Devices</li>
</ul>
<p>Bottom line:<br />
BACnet 8802-3 is simpler and more efficient for &#8220;non-IP router&#8221; infrastructures</p>
<p>BACnet/IP is better when there are any IP routers in the infrastructure</p>
<p>but, using BACnet/IP with multiple subnets has more complex configuration and BBMD requirements.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.polarsoft.com/?feed=rss2&amp;p=22</wfw:commentRss>
		</item>
		<item>
		<title>Core Values</title>
		<link>http://blog.polarsoft.com/?p=7</link>
		<comments>http://blog.polarsoft.com/?p=7#comments</comments>
		<pubDate>Fri, 28 Dec 2007 04:16:50 +0000</pubDate>
		<dc:creator>David</dc:creator>
		
		<category><![CDATA[Lame and Unfriendly]]></category>

		<guid isPermaLink="false">http://blog.polarsoft.com/?p=7</guid>
		<description><![CDATA[I had occasion today to go searching for an image of core memory to contribute to Coleman&#8217;s blog. I found a really nice close up shot at audilab.bmed.mcgill.ca on Google images, but when I clicked through on the Google link I got this annoying popup:

Since all I wanted to do was to access the image [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.polarsoft.com/wp-content/uploads/2007/12/mcgill.jpg" title="McGill Popup"></a>I had occasion today to go searching for an image of core memory to contribute to Coleman&#8217;s blog. I found a really nice close up shot at audilab.bmed.mcgill.ca on Google images, but when I clicked through on the Google link I got this annoying popup:</p>
<p><a href="http://blog.polarsoft.com/wp-content/uploads/2007/12/mcgill.jpg" title="McGill Popup"><img src="http://blog.polarsoft.com/wp-content/uploads/2007/12/mcgill.jpg" alt="McGill Popup" /></a></p>
<p>Since all I wanted to do was to access the image from Google images&#8217; reference, I had no user name or password. Clicking Cancel or X box closing, simply redisplayed the popup. In fact I was unable to close the browser, except finally by using task manager to croak the whole IE process. This is very unfriendly and earns the &lt;LAME&gt; stamp for this week.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.polarsoft.com/?feed=rss2&amp;p=7</wfw:commentRss>
		</item>
		<item>
		<title>BTL Requirements Create Conflict for Multi-port Devices</title>
		<link>http://blog.polarsoft.com/?p=16</link>
		<comments>http://blog.polarsoft.com/?p=16#comments</comments>
		<pubDate>Mon, 24 Sep 2007 20:33:21 +0000</pubDate>
		<dc:creator>David</dc:creator>
		
		<category><![CDATA[BACnet Developers]]></category>

		<guid isPermaLink="false">http://blog.polarsoft.com/?p=16</guid>
		<description><![CDATA[We were recently advising a client who was making a BACnet device that supports multiple ports, in this case 8802-3 and several MS/TP ports. Since each device object is required to associate with one and only one network number and MAC address, the application entity (AE) must be homed on a specific port. In their case, [...]]]></description>
			<content:encoded><![CDATA[<p>We were recently advising a client who was making a BACnet device that supports multiple ports, in this case 8802-3 and several MS/TP ports. Since each device object is required to associate with one and only one network number and MAC address, the application entity (AE) must be <em>homed</em> on a specific port. In their case, the Ethernet 8802-3 port was the home port.</p>
<p>We started answering a line of questioning about the MS/TP properties in the Device object, such as Max_Info_Frames, and how these should NOT appear in the Device object in their case because the device was not homed on MS/TP. However, since their device was a router also this caused some issues when they were preparing a BTL Checklist based on this table:</p>
<table border="0" width="599" cellPadding="0" cellSpacing="0" style="color: blue">
<tr>
<td colSpan="3" width="599" vAlign="top">
<b>MS/TP - Master Node</b>
</td>
</tr>
<tr>
<td width="32" vAlign="top">
<p align="center">X</p>
</td>
<td width="42" vAlign="top">
<p align="center">R</p>
</td>
<td width="525" vAlign="top">Base Requirements</td>
</tr>
<tr>
<td width="32" vAlign="top">
<p align="center">&nbsp;</p>
</td>
<td width="42" vAlign="top">
<p align="center">C<sup>1</sup></p>
</td>
<td width="525" vAlign="top">Supports writable Max_Master property</td>
</tr>
<tr>
<td width="32" vAlign="top">
<p align="center">&nbsp;</p>
</td>
<td width="42" vAlign="top">
<p align="center">C<sup>1</sup></p>
</td>
<td width="525" vAlign="top">Supports read only Max_Master property</td>
</tr>
<tr>
<td width="32" vAlign="top">
<p align="center">&nbsp;</p>
</td>
<td width="42" vAlign="top">
<p align="center">C<sup>2</sup></p>
</td>
<td width="525" vAlign="top">Contains configurable Max_Info_Frames property</td>
</tr>
<tr>
<td width="32" vAlign="top">
<p align="center">&nbsp;</p>
</td>
<td width="42" vAlign="top">
<p align="center">C<sup>2</sup></p>
</td>
<td width="525" vAlign="top">Contains non-configurable Max_Info_Frames property</td>
</tr>
<tr>
<td width="32" vAlign="top">
<p align="center">X</p>
</td>
<td width="42" vAlign="top">
<p align="center">O</p>
</td>
<td width="525" vAlign="top">Is a BACnet router</td>
</tr>
<tr>
<td colSpan="3" width="599" vAlign="top"><sup>1</sup> Exactly one of these options is required in order to claim conformance to this BIBB.<br />
<sup>2</sup> Exactly one of these options is required in order to claim conformance to this BIBB.</td>
</tr>
</table>
<p>
Since (according to the table) neither choice for C1 and C2 applies to this device, it therefore can&#8217;t claim that it is an MS/TP master. This is silly because of course any of its MS/TP ports are MS/TP masters, but they don&#8217;t have an explicit device object.</p>
<p>This is one of the many reasons why BTL tests are too rigid.</p>
<p>Their device is both a router, and a controller. Because it has an application entity (AE) with a device object, BACnet requires that the AE have a &#8220;home&#8221; meaning a unique network and MAC where the device object lives.</p>
<p>They&#8217;ve chosen to home the AE on the Ethernet port, and that&#8217;s fine.</p>
<p>Because they have 3 MSTP ports, each one could potentially have different settings for Max_Master and Max_Info_Frames so unless there is a device object for each one of those networks there is no way to make those parameters unique for each port AND readable/writable through BACnet unless they make proprietary properties in their Ethernet-homed device object.</p>
<p>So there are four ways to go:</p>
<ol>
<li>Claim the device is a router, then fight with BTL about the fact that you are a valid master node on each of the three MSTP networks but without a BACnet-visible property for Max_Master and Max_Info_Frames.</li>
<li>Make proprietary properties for Max_Master and Max_Info_Frames in your device object for each of the three MSTP ports (six proprietary properties), Then argue with BTL that this means you are a configurable C2 and writable C1.</li>
<li>Change your device to be homed on one of the MSTP ports, add the  Max_Master and Max_Info_Frames properties to the device object and force each port to use the same settings (yuck).</li>
<li>Make unique device objects for each port (four device objects) with four device instance numbers and put configurable MSTP properties in each device object. This is nasty for you though because you would have to support device object behavior on all four ports.</li>
</ol>
<p>My choice would be (2). I would argue to BTL that the standard is weak in anticipating this kind of application, and in fact that there are several proposals before the SSPC to deal with multi-port MSTP devices.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.polarsoft.com/?feed=rss2&amp;p=16</wfw:commentRss>
		</item>
		<item>
		<title>RE: Mohamad Mansour 5 Dec 2000 - Against BACnet</title>
		<link>http://blog.polarsoft.com/?p=15</link>
		<comments>http://blog.polarsoft.com/?p=15#comments</comments>
		<pubDate>Sun, 09 Sep 2007 19:34:10 +0000</pubDate>
		<dc:creator>David</dc:creator>
		
		<category><![CDATA[The Case for BACnet]]></category>

		<guid isPermaLink="false">http://blog.polarsoft.com/?p=15</guid>
		<description><![CDATA[Back in December 2000, Mssr. Mohamad Mansour posted a comment to the BACnet-Arabia forum that drew some responses. Recently  our colleague Sabry An-Naggar has spoken out again about this posting and that motivated me to write my own reply. Mssr. Mansour&#8217;s original post is reproduced as a block quote below.
I have no wish to fuel [...]]]></description>
			<content:encoded><![CDATA[<p><em>Back in December 2000, Mssr. Mohamad Mansour posted a comment to the BACnet-Arabia forum that drew some responses. Recently  our colleague Sabry An-Naggar has spoken out again about this posting and that motivated me to write my own reply. Mssr. Mansour&#8217;s original post is reproduced as a block quote below.</em></p>
<p>I have no wish to fuel any old enmities, but perhaps my perspective can help to unite our thinking in the same direction. The goal in this case is to find methods that allow building owners to invest in automation and controls systems that can serve them for long periods of time and realize return on their investments. At the same time, these purchases should also support the reduction of costs in other related areas such as training, maintenance, energy use, system integration and interoperability, unified operations, etc. </p>
<p>These are not new ideas. In my own case I have worked for 25 years to help get different people&#8217;s views to come together on these points, and happily through many people&#8217;s efforts this has been a huge success in many applications all over the world. After a long period of discussion and debate, and then a long period of development under an open consensus process supervised by ASHRAE, a standard method for building automation system interoperability was created, and you all are familiar with this standard called BACnet which was initially released in 1995.By 2001, BACnet had also become an INTERNATIONAL standard through ISO.Today, millions of BACnet-based systems and devices are installed and available in every country. </p>
<p>In 2000 Mssr. Mansour expressed his legitimate concerns about the future of the standard, and we should not fault him today for those views. Fortunately, each of his concerns has had a favorable outcome for BACnet, and it may be beneficial to list those concerns again here: </p>
<p><font color="#0000ff">&#8220;nobody can resist but joining the club of future &#8230;.It is a nice dream , yet still a dream.&#8221;</font></p>
<p>Today interoperability between BACnet-based devices is no dream, but a daily reality for millions of BACnet devices and systems. No other method exists that is an international standard, and also so widely adopted worldwide for BAS as BACnet. </p>
<p><font color="#0000ff">&#8220;&#8230;let us &#8230; try to identify interoperability ? we have two basic questions :1) do we want Honeywell Controllers to speak to Johnson Controllers , Siemens Controllers , Sauter Controllers , Invensys Controllers in the same installation ?&#8221;</font> </p>
<p>Most definitely YES. This is routine and easy in most instances to do with BACnet.It is rarely true that a system designer intentionally mixes parts and pieces of different vendor&#8217;s components in the same subsystem. Of course this usually would be unnecessary. But the issue is that in order to have the flexibility to evolve, change, and switch to alternative vendors or sources of supply, it is important to NOT be locked-in to proprietary technology that makes this impossible or very costly. Since BAS systems must be designed for longer term operation, many facilities will have the need to change, and interoperability technology makes this possible. </p>
<p><font color="#0000ff">&#8221; or 2) do we want Honeywell Controllers to speak to Schindler Elevators ,   XXX Generators , YYY Boilers , ZZZ Chillers ,..etc.&#8221;</font> </p>
<p>Most definitely YES. Again this is regular and routine for BACnet. Since 2000, many new companies have joined in supporting BACnet and new companies announce BACnet products nearly every month.  </p>
<p>Again, the intent is not always to require integration across system types (elevators talking to HVAC for example) but it is nice to be able to do this when it IS desirable. Obvious high energy using systems such as HVAC and Lighting have many opportunities for energy savings when they can perform interoperable activities easily. This lowers operating costs aswell as system design costs. </p>
<p><font color="#0000ff">&#8220;for the first question what will be the benefit to end user to have a mix  of products for which he has to stock larger amounts of spares and to  pay more for the cost of maintenance and training&#8221;</font></p>
<p>I think this is the wrong question. If the owner is forced to have multiple vendors because of procurement issues, bad service, failed contracts with vendors or any of the many reasons possible, what kind of strategy can insulate the owner from these costly investment failures? What kind of technology can provide flexibility for procurement, integration, AND the opportunity for energy saving strategies? What kind of technology can actually ease the training and maintenance costs of supporting multiple vendors?</p>
<p>The answer is that BACnet can provide all of these benefits and more, right now.The use of true international consensus standardization assures a large degree of the investment is secured against obsolescence, and accidental or intentional vendor failure. Using common standardized technology such as BACnet means that much of the training and maintenance is also standard across vendors, resulting in net savings, and providing leverage not only to training investments, but also access to a wider base of trained people.</p>
<p><font color="#0000ff">&#8220;&#8230;for the second question &#8230;what is the case for non HVAC equipment manufacturers ? are they going to adapt BACnet and why not any other well established industrial standard protocols like MODBUS .&#8221;</font></p>
<p>The answer is YES, and we see many other kinds of equipment vendors adopting BACnet in response to the growing number of systems and owners who want BACnet interoperability from related equipment. Lighting, Access Control, Fire/LifeSafety, sensors, VFD, electrical/motor, lifts control, etc.</p>
<p>There are some companies, historically, that have used MODBUS because their markets overlap with industrial controls where MODBUS is more common. These systems (industrial, boiler control, etc.) tend to be smaller with highly centralized control. This is quite different from modern decentralized DDC systems. So the centralized master/slave approach of MODBUS is at a significant disadvantage in typical BAS applications. The other problem with MODBUS is that its concept for data access is &#8220;memory file&#8221; oriented which places the burden of understanding and structuring information on the controller that is asking for data. In a centralized system, where the big brain is in one location, that is less of an issue. For decentralized BAS systems that is a design and maintenance disaster.  </p>
<p><font color="#0000ff">&#8220;BACnet capabilities could be a plus , but how many of the large control companies  in the world today have native BACnet controllers?&#8221;</font></p>
<p>All of them.</p>
<p>Regarding Sabry&#8217;s comments about Sauter controllers, I don&#8217;t know that it is constructive to make judgments about what a vendor&#8217;s real agenda might be, based on their apparent design choices. I think it&#8217;s more helpful to owners if we can illuminate best practices for interoperability and point to practices that may not be in their best interest. </p>
<p>As you know, BACnet does not impose any particular hierarchy onto BAS systems so that a designer can make a BACnet system that is &#8220;flat&#8221; or structured into many tiers in a hierarchy of small controllers, larger supervisory controllers, workstations and so forth.  Regrettably some vendors have chosen to draw the line at some point in their hierarchy and say that below the line they will continue to use their own proprietary methods of communications, and above the line they will support BACnet.</p>
<p>I think Sabry&#8217;s point is that it is in the best interest of the owner that this line is pushed to the lowest practical point in the hierarchy. This gives the owner the most flexibility to add new components or to replace individual elements or subsystems should the need arise in the future. It also gives the maximum amount of access to information and control influence at lower levels of the system.</p>
<p>Yes, of course, this is not ALWAYS REQUIRED. But it is a desirable quality and for the most part this is free when BACnet is used. If an owner allows proprietary portions of the system, they must realize that these portions potentially will always be &#8220;owned&#8221; by that vendor who may not be so kind in the future.  As a result, it is an advantage to the owner to have, or to specify, this &#8220;native BACnet&#8221; capability at all principal levels of the automation system hierarchy at least down to the smallest controllers. Mssr. Mansour is correct, this kind of requirement &#8220;eliminates&#8221; some vendors. So would &#8220;requirements&#8221; for proper insurance, quality control, fuses, insulation and other &#8220;optional features.&#8221; </p>
<p>Having said all this, one must not be unduly harsh in analyzing the technology approach to bringing BACnet to specific products. Much has been said about BACnet &#8220;gateways&#8221; and this is a complex topic with many important fine points that owners or specifiers do not care to know. The important issues are network architecture. If a vendor makes a controller that is BACnet on one side, and &#8220;internally&#8221; it is something proprietary, that&#8217;s OK. as long as the box you buy from this vendor has a BACnet connection, as far as you are concerned it&#8217;s a BACnet box. However, when that box has other connections to external devices, that is when you must ask the question: why aren&#8217;t those connections ALSO using BACnet? If the connections are for simple sensors, then well OK that&#8217;s not so important. But if those connections go to smaller &#8220;sub-controllers&#8221; then in effect you aren&#8217;t buying just this box, you are really buying the whole collection of the box and all of the sub-controllers as well.</p>
<p>This approach is generally not good for owners, because it is the &#8220;line&#8221; and below the line everything is not standardized.</p>
<p>Some vendors have both BACnet controllers AND proprietary controllers in their product line. An owner has to be careful when asking for BACnet that they are getting BACnet EVERYWHERE that they want it. For example sometimes a vendor will provide all proprietary controllers with a single BACnet &#8220;gateway&#8221; controller in the system. So other BACnet devices must talk through the gateway in order to interact with any of the proprietary devices. This may make it very hard or impossible to replace one or more proprietary controllers in the future with equivalent BACnet devices from other vendors.</p>
<blockquote><p>From &#8220;m.mansour&#8221; &lt;mansoor@gega.net&gt;<br />
Subject: BACnet Forum<br />
Date: Tue, 5 Dec 2000 02:42:05 +0200<br />
To: BACnet-Arabia Forum<br />
Dear Sirs,<br />
It was very intersting to recieve arguments and comments and exchange ideas,problems,solutions and point of views among several participants at this wide scale.To say the least , nobody can resist but joining the club of future , with all these futuristic ideas of open systems and standard protocoles , It is like dreaming of one language on the planet earth , or even one common currency , or one big country on the earth shared and used by everybody on it.It is a nice dream , yet still a dream. But before inventing a problem and try to find a sloution , let us start from the basics and try to identify interoperability ? we have two basic questions :<br />
1) do we want Honeywell Controllers to speak to Johnson Controllers , Siemens Controllers , Sauter Controllers , Invensys Controllers in the same installation ? or<br />
2) do we want Honeywell Controllers to speak to Schindler Elevators , XXX Generators , YYY Boilers , ZZZ Chillers ,..etc.</p>
<p>For the first question what will be the benifit to end user to have a mix of products for which he has to stock larger amounts of spares and to pay more for the cost of maintenance and training . nevertheless in buildings with different sources of controls accumulated over many years of operation problem is solved either by using one system with a mixture of field devices or interfaces between two systems at a higher level without the need to have a &#8220;native&#8221; single protocole for controllers .<br />
For the second question if HVAC equipment manufacturers have some sort of communication with each other and ASHRAE to encourge interoperability ,what is the case for non HVAC equipment manufacturers ? are they going to adapt BACnet and why not any other well established industrial standard protocoles like MODBUS. BACnet could be the future , we appriciate efforts done in the direction of improving HVAC industry but it should not be used today commercially to eleminate some vendors specially when the word &#8220;native BACnet&#8221; is used in tender specifications ? BACnet capabilities could be a plus , but how many of the large control companies in the world today have native BACnet controllers?<br />
Regards<br />
Mohamed Mansour</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://blog.polarsoft.com/?feed=rss2&amp;p=15</wfw:commentRss>
		</item>
		<item>
		<title>NPDU and APDU sizes</title>
		<link>http://blog.polarsoft.com/?p=18</link>
		<comments>http://blog.polarsoft.com/?p=18#comments</comments>
		<pubDate>Mon, 27 Aug 2007 21:05:29 +0000</pubDate>
		<dc:creator>David</dc:creator>
		
		<category><![CDATA[BACnet Developers]]></category>

		<guid isPermaLink="false">http://blog.polarsoft.com/?p=18</guid>
		<description><![CDATA[A client recently asked us why the Device object  Max_APDU_Length_Supported property has a value of 1476 for his Ethernet 8802-3 based device and where did that number come from?  The standard mentions a maximum NPDU length of 1497.  However when they read our code the value calculates out to 1496.  What is the difference between APDU and NPDU [...]]]></description>
			<content:encoded><![CDATA[<p>A client recently asked us why the Device object  Max_APDU_Length_Supported property has a value of 1476 for his Ethernet 8802-3 based device and where did that number come from?  The standard mentions a maximum NPDU length of 1497.  However when they read our code the value calculates out to 1496.  What is the difference between APDU and NPDU they asked?</p>
<p>The numbers aren&#8217;t magic, but they aren&#8217;t intuitive either.</p>
<p>The 1497 number (for 8802-3 Ethernet) comes from a max 8802-3 payload of 1500 minus 3 octets for the 8802-2 UI frame header.</p>
<p>The MAXAPDU size of 1476 comes from the maximum sized NPDU header subtracted from this value:</p>
<p>version            1<br />
control             1<br />
dnet                 2<br />
dlen                  1<br />
dadr                 6 worst case for 8802-3<br />
snet                 2<br />
slen                  1<br />
sadr                 6 worst case for 8802-3<br />
hopcount         1<br />
total                 21<br />
1497-21 = 1476</p>
<p>So really the MAXAPDU is the MAC layer payload size - 21. For ARCNET that&#8217;s 501-21 = 480, same for MSTP and PTP.</p>
<p>The NPDU is a MAC layer payload containing a BACnet network layer header and APDU. An APDU contains an application layer header plus parameters.</p>
<p>This is a picture of the NPDU fields, not all of which are present at the same time.</p>
<p><a href="http://blog.polarsoft.com/wp-content/uploads/2007/12/npdu.jpg" title="npdu"><img src="http://blog.polarsoft.com/wp-content/uploads/2007/12/npdu.jpg" alt="npdu" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.polarsoft.com/?feed=rss2&amp;p=18</wfw:commentRss>
		</item>
		<item>
		<title>LCDs vs. CRTs</title>
		<link>http://blog.polarsoft.com/?p=6</link>
		<comments>http://blog.polarsoft.com/?p=6#comments</comments>
		<pubDate>Mon, 24 Jul 2006 04:02:24 +0000</pubDate>
		<dc:creator>David</dc:creator>
		
		<category><![CDATA[Ergonomics]]></category>

		<category><![CDATA[ergonomics]]></category>

		<guid isPermaLink="false">http://blog.polarsoft.com/?p=6</guid>
		<description><![CDATA[It is said that the scanning electron beam used in CRTs produces radiation that over a long period of time may cause some physical harm to humans who spend a lot of time in front of the CRT. I don’t know if this is true, or if it is as serious as claimed, but that [...]]]></description>
			<content:encoded><![CDATA[<p>It is said that the scanning electron beam used in CRTs produces radiation that over a long period of time may cause some physical harm to humans who spend a lot of time in front of the CRT. I don’t know if this is true, or if it is as serious as claimed, but that this the claim.</p>
<p>However, I think the most serious issue for CRT users is “flickering” which in the past was caused by a refresh rate of 60Hz (or in Europe/ME 50Hz) for refreshing the screen. Slight differences in the circuitry for the CRT can cause a minute delay that introduces a phase difference between the refreshing of the screen and ambient lighting powered by the same AC source. When fluorescent lighting is used, this phase difference produces “zero beating” much like two musical instruments being tuned together.</p>
<p>When their frequencies are close but not the same a secondary pulsing harmonic can be heard. For the CRT this appears as a slight flickering (darkening and lightening alternately) which is especially noticeable on light (e.g. white) background areas. This modulation causes involuntary eye twitching as the eyes attempt to follow the “motion” which can lead to eye strain and headaches.</p>
<p>Today, nearly all CRT monitors and video adapters are capable of much higher refresh rates (e.g. 85Hz) which most importantly are not close to 50/60Hz. These don’t exhibit flicker even when used with fluorescent lighting. So the “headache” claims about CRTs are very much a thing of the past. Regrettably many people don’t take the time to make this simple adjustment to their monitor/adapter settings and so they see flicker anyway.</p>
<p>I was recently asked to comment on <a target="_blank" href="http://localhost/blog/postfiles/LCD_vs_CRT_AH.PDF">this white paper on LCD vs. CRT</a>. It is clearly written by someone wanting to promote LCDs. Many of its points are valid, but I would differ in several points:</p>
<p><strong>1. Visual Performance: CRT is slower than LCD<br />
</strong>This is completely false. Until very recently, typical LCD screens had a 25ms response time. That’s 40Hz or 40 refreshes per second. The CRT I am writing this on is 120Hz, or 3 times faster by my arithmetic.</p>
<p>We are just now seeing some LCDs with active pulse technology that claim 3ms response time, but sadly these are not available in 1600&#215;1200 resolution yet. For now this is an overstated claim.</p>
<p><strong>2. CRT is prone to flicker<br />
</strong>Not if the adapter and monitor use 70Hz or better refresh. At 85Hz I think you would need instruments even to detect it.</p>
<p><strong>3. Image brightness is uneven in CRTs<br />
</strong>That’s not been my experience. LCDs rely on fluorescent backlighting for brightness and there is often uneveness in their images especially in larger displays.</p>
<p><strong>4. Image Sharpness: lower in CRT<br />
</strong>That depends entirely on the pitch in the CRT mask. Typical LCDs use a much coarser pitch than top grade CRTs. Unless you are buying really low end CRTs it is typical to have 0.22mm or smaller pitch in a nice CRT. That’s much finer than the most expensive LCDs. Properly converged CRTs with fine pitch are at least as crisp as LCDs with equivalent resolution.</p>
<p><strong>5. Specular screen glare: possible in CRTs<br />
</strong>True, but again better monitors use a glare filter. This is far less of an issue than off-axis distortion and loss of brightness that is common for LCDs but not at all an issue for CRTs. This is especially bad on the vertical axis in LCDs.</p>
<p>The main reason I haven’t switched to using dual 1600&#215;1200 LCDs is that in the configuration I use (two bent at an angle) there are important color changes in LCDs that don’t occur in CRTs.</p>
<p>So, don’t get me wrong. LCDs are great and have many advantages including size/weight/heat and so forth. But for quality of color rendering and fineness of image, they are not yet on a par with CRT technology. In 17” 1280&#215;1024 sizes though there are many good choices.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.polarsoft.com/?feed=rss2&amp;p=6</wfw:commentRss>
		</item>
		<item>
		<title>Masaman Chicken Curry</title>
		<link>http://blog.polarsoft.com/?p=14</link>
		<comments>http://blog.polarsoft.com/?p=14#comments</comments>
		<pubDate>Mon, 09 Feb 2004 04:07:33 +0000</pubDate>
		<dc:creator>David</dc:creator>
		
		<category><![CDATA[Recipes]]></category>

		<guid isPermaLink="false">http://blog.polarsoft.com/?p=14</guid>
		<description><![CDATA[Ingredients:


1 litre
coconut cream


1 kg
chicken pieces


3
potatoes, peeled and quartered


1
onion, halved


125 g
peanuts


10 ml
salt


45 ml
masaman curry paste


45 ml
fish sauce


15 ml
tamarind juice


15 ml
sugar


Instructions:

Bring the coconut cream to a boil in a large saucepan.
Add the chicken, potatoes, onion, peanuts and salt, and simmer for 20 minutes.
Remove a ladleful of coconut cream from the pan, and pour it into a frying [...]]]></description>
			<content:encoded><![CDATA[<p>Ingredients:</p>
<table border="0" cellPadding="0" cellSpacing="0" style="width: 532px; height: 142px" class="rte_tbl">
<tr>
<td>1 litre</td>
<td>coconut cream</td>
</tr>
<tr>
<td>1 kg</td>
<td>chicken pieces</td>
</tr>
<tr>
<td>3</td>
<td>potatoes, peeled and quartered</td>
</tr>
<tr>
<td>1</td>
<td>onion, halved</td>
</tr>
<tr>
<td>125 g</td>
<td>peanuts</td>
</tr>
<tr>
<td>10 ml</td>
<td>salt</td>
</tr>
<tr>
<td>45 ml</td>
<td><a href="http://blog.polarsoft.com/?p=13">masaman curry paste</a></td>
</tr>
<tr>
<td>45 ml</td>
<td>fish sauce</td>
</tr>
<tr>
<td>15 ml</td>
<td>tamarind juice</td>
</tr>
<tr>
<td>15 ml</td>
<td>sugar</td>
</tr>
</table>
<p>Instructions:</p>
<ol>
<li>Bring the coconut cream to a boil in a large saucepan.</li>
<li>Add the chicken, potatoes, onion, peanuts and salt, and simmer for 20 minutes.</li>
<li>Remove a ladleful of coconut cream from the pan, and pour it into a frying pan. Add the masaman curry paste. Stir until the mixture thickens.</li>
<li>Pour the curry over the chicken. Add the fish sauce, tamarind juice and sugar and stir well. Simmer for a further 15 minutes.</li>
<li>Serve with plain rice or bread. Cucumber sauce is also a popular accompaniment.</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://blog.polarsoft.com/?feed=rss2&amp;p=14</wfw:commentRss>
		</item>
		<item>
		<title>Masaman Curry Paste</title>
		<link>http://blog.polarsoft.com/?p=13</link>
		<comments>http://blog.polarsoft.com/?p=13#comments</comments>
		<pubDate>Mon, 09 Feb 2004 04:05:20 +0000</pubDate>
		<dc:creator>David</dc:creator>
		
		<category><![CDATA[Recipes]]></category>

		<guid isPermaLink="false">http://blog.polarsoft.com/?p=13</guid>
		<description><![CDATA[Ingredients:


10
dried red chilies


5 ml
cumin seeds


15 ml
coriander seeds


2
cardamom pods


3
cloves


90 ml
chopped garlic


60 ml
chopped shallots


15 ml
oil


10
peppercorns


30 ml
chopped lemon grass


5 ml
chopped galangal


5 ml
chopped bergamot skin


5 ml
chopped coriander root


5 ml
shrimp paste, grilled


250 g
palm sugar


15 ml
salt


60 ml
tamarind juice


Instructions:

Coarsely chop the chilies and soak in water for 10 minutes. Drain.
Dry-fry the cumin and coriander seeds, cardamom pods and cloves over medium heat [...]]]></description>
			<content:encoded><![CDATA[<p class="postcontent">Ingredients:</p>
<table border="0" cellPadding="0" cellSpacing="0" style="width: 506px; height: 240px" class="rte_tbl">
<tr>
<td>10</td>
<td>dried red chilies</td>
</tr>
<tr>
<td>5 ml</td>
<td>cumin seeds</td>
</tr>
<tr>
<td>15 ml</td>
<td>coriander seeds</td>
</tr>
<tr>
<td>2</td>
<td>cardamom pods</td>
</tr>
<tr>
<td>3</td>
<td>cloves</td>
</tr>
<tr>
<td>90 ml</td>
<td>chopped garlic</td>
</tr>
<tr>
<td>60 ml</td>
<td>chopped shallots</td>
</tr>
<tr>
<td>15 ml</td>
<td>oil</td>
</tr>
<tr>
<td>10</td>
<td>peppercorns</td>
</tr>
<tr>
<td>30 ml</td>
<td>chopped lemon grass</td>
</tr>
<tr>
<td>5 ml</td>
<td>chopped galangal</td>
</tr>
<tr>
<td>5 ml</td>
<td>chopped bergamot skin</td>
</tr>
<tr>
<td>5 ml</td>
<td>chopped coriander root</td>
</tr>
<tr>
<td>5 ml</td>
<td>shrimp paste, grilled</td>
</tr>
<tr>
<td>250 g</td>
<td>palm sugar</td>
</tr>
<tr>
<td>15 ml</td>
<td>salt</td>
</tr>
<tr>
<td>60 ml</td>
<td>tamarind juice</td>
</tr>
</table>
<p>Instructions:</p>
<ol>
<li>Coarsely chop the chilies and soak in water for 10 minutes. Drain.</li>
<li>Dry-fry the cumin and coriander seeds, cardamom pods and cloves over medium heat for 1-2 minutes until they are aromatic and slightly browned.</li>
<li>Saute the chilies, garlic and shallots in the oil until lightly browned.</li>
<li>Pound the spices in the following order:
<ul>
<li>garlic, shallots and chilies</li>
<li>coriander, cardamom pods, cumin, cloves and peppercorns</li>
<li>lemon grass, galangal, bergamot, coriander roots</li>
</ul>
</li>
<li>Place the shrimp paste on a piece of foil and cook it over a flame or burner for 1-2 minutes, or in a hot oven (220 degrees) until the outside is slightly burnt. Mix the shrimp paste with all the above ingredients plus the sugar, salt and tamarind juice to form a fine paste.</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://blog.polarsoft.com/?feed=rss2&amp;p=13</wfw:commentRss>
		</item>
		<item>
		<title>Potatoes Roesti</title>
		<link>http://blog.polarsoft.com/?p=12</link>
		<comments>http://blog.polarsoft.com/?p=12#comments</comments>
		<pubDate>Mon, 09 Feb 2004 04:03:28 +0000</pubDate>
		<dc:creator>David</dc:creator>
		
		<category><![CDATA[Recipes]]></category>

		<guid isPermaLink="false">http://blog.polarsoft.com/?p=12</guid>
		<description><![CDATA[Ingredients:


3
Potatoes


½
Onion


30 ml
margarine


7.5 ml
cooking oil


Instructions:

Peel and grate three potatoes.
Peel and chop ½ onion. Mix with the potatoes.
Melt together in a pan, 15 ml. margarine, with 7.5 ml cooking oil, at 350 degrees.
Spread the potatoes and onions evenly in the bottom of the skillet. Sprinkle with salt and pepper if you wish.
Reduce the heat in the pan [...]]]></description>
			<content:encoded><![CDATA[<p class="postcontent">Ingredients:</p>
<table border="0" cellPadding="0" cellSpacing="0" style="width: 250px; height: 58px" class="rte_tbl">
<tr>
<td>3</td>
<td>Potatoes</td>
</tr>
<tr>
<td>½</td>
<td>Onion</td>
</tr>
<tr>
<td>30 ml</td>
<td>margarine</td>
</tr>
<tr>
<td>7.5 ml</td>
<td>cooking oil</td>
</tr>
</table>
<p>Instructions:</p>
<ol>
<li>Peel and grate three potatoes.</li>
<li>Peel and chop ½ onion. Mix with the potatoes.</li>
<li>Melt together in a pan, 15 ml. margarine, with 7.5 ml cooking oil, at 350 degrees.</li>
<li>Spread the potatoes and onions evenly in the bottom of the skillet. Sprinkle with salt and pepper if you wish.</li>
<li>Reduce the heat in the pan to 300 degrees, and cook for 7-8 minutes.</li>
<li>Carefully turn the potato cake over, and add 15 ml. more margarine then cook until golden or satisfying for your taste.</li>
<li>Serve immediately.</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://blog.polarsoft.com/?feed=rss2&amp;p=12</wfw:commentRss>
		</item>
		<item>
		<title>Sautéed Beef with Crispy Basil</title>
		<link>http://blog.polarsoft.com/?p=11</link>
		<comments>http://blog.polarsoft.com/?p=11#comments</comments>
		<pubDate>Mon, 09 Feb 2004 04:01:43 +0000</pubDate>
		<dc:creator>David</dc:creator>
		
		<category><![CDATA[Recipes]]></category>

		<guid isPermaLink="false">http://blog.polarsoft.com/?p=11</guid>
		<description><![CDATA[Ingredients:


3
cloves of garlic, pounded


4
small red chilies, crushed


30 ml
fish sauce


 
salt


 
freshly ground black pepper


500 g
beef fillet, cut into thin strips


250 ml
basil leaves


250 ml
oil


Instructions:

Mix together the garlic, chilies, fish sauce, salt and black pepper, then marinate the beef in this mixture for 5 minutes.
Fry the basil leaves in the oil until they become transparent. Drain and put to [...]]]></description>
			<content:encoded><![CDATA[<p class="postcontent">Ingredients:</p>
<table border="0" cellPadding="0" cellSpacing="4" style="width: 481px; height: 150px" class="rte_tbl">
<tr>
<td>3</td>
<td>cloves of garlic, pounded</td>
</tr>
<tr>
<td>4</td>
<td>small red chilies, crushed</td>
</tr>
<tr>
<td>30 ml</td>
<td>fish sauce</td>
</tr>
<tr>
<td> </td>
<td>salt</td>
</tr>
<tr>
<td> </td>
<td>freshly ground black pepper</td>
</tr>
<tr>
<td>500 g</td>
<td>beef fillet, cut into thin strips</td>
</tr>
<tr>
<td>250 ml</td>
<td>basil leaves</td>
</tr>
<tr>
<td>250 ml</td>
<td>oil</td>
</tr>
</table>
<p>Instructions:</p>
<ol>
<li>Mix together the garlic, chilies, fish sauce, salt and black pepper, then marinate the beef in this mixture for 5 minutes.</li>
<li>Fry the basil leaves in the oil until they become transparent. Drain and put to one side.</li>
<li>Remove most of the oil, leaving about 45 ml in the pan. Turn up the heat, add the meat and stir –fry for 2-3 minutes.</li>
<li>When the meat is almost cooked, stir in half the fried basil leaves. Remove from heat immediately and sprinkle the meat with the remaining basil leaves. Serve with plain rice.</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://blog.polarsoft.com/?feed=rss2&amp;p=11</wfw:commentRss>
		</item>
	</channel>
</rss>
