Archive for May, 2008

How do you put more than 32 devices on a single RS485 trunk ?

The simple answer is use a repeater but in practice one isn’t always necessary.

The RS485 standard is based on 32 devices. Since the standard was developed most RS485 chips present less than the full unit load originally specified. Today you get half and quarter load devices. Thus to see how many devices you can install you simply get the data sheets and add the loads. Look for “UL” on the data sheet. It stands for Unit Load.

Did you like this post?

Subscribe To The RSS Feed!
To catch many more articles like this in the future, make it easy on yourself and subscribe to me via RSS. You will not regret it!

Do you have a question?
We will do our best to try and solve any building automation, protocol, integration problem you may have

Google AdWords: Building an effective keyword list

The most important thing to remember when creating your keyword list, is to think like one of your potential customers. What terms will they use to describe your products and services? Once you’ve finished generated a generic keyword list for your products and services you will need to expand it to include as many variations a possible. You can do this by adding alternate spelling (Light, lite), synonyms and plurals. The Google Keyword Tool will help you a lot with this exercise.

After running your ad campaigns for a while you will need to refine your keywords by removing the broad and irrelevant one’s. Broad keywords usually generate a lot of impressions but few clicks. You can do this by adding more descriptive language to your broad keywords, making them more specific, or use negative keywords to reduce irrelevant impressions. For example using the keywords “bags” for your luggage goods campaign can generate impressions for searches with “tea bags” and “paper bags” etc. These impressions are completely irrelevant to your product. This will help you to receive more qualified clicks.

Also make use of the keyword Matching Options provides by Google AdWords. These options will help you to generate more targeted keywords. This may reduce your impressions but could generate you more clicks. This can also reduce your cost per click (CPC) and in turn increase your ROI.

Did you like this post?

Subscribe To The RSS Feed!
To catch many more articles like this in the future, make it easy on yourself and subscribe to me via RSS. You will not regret it!

Do you have a question?
We will do our best to try and solve any building automation, protocol, integration problem you may have

BACnet Change of Value (COV)

1.0 – Introduction

Most field devices are passive servers. They wait passively for a system to poll them for data and only then do the devices respond. A consequence of this is that the data client only knows the value of an object property when it polls for the value. If the duration of an event (change of value) is shorter than the interval between polls then the data client will not know the event occurred.

BACnet provides a solution for this by defining services to report events. These services allow a device to be transformed from a passive server to an active server since it is now capable of sending messages reporting the value of an object property based on some event rules. BACnet COV is a sub-set of the ‘Alarm and Event Services’.
This article discusses how the technology operates and then provides a discussion on some weaknesses in the COV system.

2.0 – A simplified definition of BACnet COV

Data clients subscribe to an object for COV reporting. The device monitors the value of the object property, monitors the subscription list and the change criteria. When the change criteria are met the devices sends notifications of the new value to the subscribers.

3.0 – Not all devices / objects support COV

The BACnet COV system is not a mandatory part of the protocol. Each vendor decides if they want to support it. In addition, each vendor gets to decide which properties of which objects support COV.

The device object of a COV server indicates whether there is support for COV. Beyond that you have to look for the presence of certain properties such a “COV Increment’ to tell if an object supports COV or you have to refer to the vendor documentation.

4.0 – How COV Works

Subscribe

Data Client sends messages to the device to subscribe to COV notifications.

The server must accept the subscription.

Monitor

COV Server device monitors the property values of subscribed objects and the COV change criteria.

Notify

When a change has occurred that meets the COV change criteria the server sends notifications to the subscribers or for those objects with a COV Period defined, notifications are sent based on the period if there has been no change.

Process Notification

The data client must process the notification and update the display, log, etc.

Unsubscribe / Renew Subscription

If the data client no longer needs the subscription it unsubscribe. If it needs the subscription maintained then the client should periodically re-subscribe.

The system is a little more complex than this. For example, subscriptions have durations and there is more than one way the notification can be sent.

5.0 - Key Elements of the COV Technology

COV Server :

A BACnet device that supports COV, accepts subscriptions and sends COV notifications messages to a COV Client.

COV Client :

A BACnet device, typically a SCADA or Logging application, which can subscribe for COV notification and which can process the notification messages.

Subscription :

Establishes a relationship between a COV Server and a COV Client.

Subscriptions have the following attributes :

  • Subscription to an Object or to a Property
    BACnet provides two services for subscription. One subscribes to an object and the other to a property of an object.
  • Identification of the Subscriber
    The server needs to know where to send the notifications.
  • Object Identifier
    Eg. Analog Input 1
    If subscribing to a property then the property must be identified too.
  • Lifetime
    Is indefinite or a specific number of seconds. Values can be large.
  • Notification Type
    Notification can be sent with/without requiring confirmation from the data client.
  • COV Increment
    This parameter is only used in subscriptions to object properties. If not specified in the subscription the object uses its own increment.

Notification :

A message which reports the current value of the changed property as well as the current state of the objects Status Flag property if it exists. The notification also contains the number of seconds remaining to the subscription. Confirmed notifications require a response from the COV client.

6.0 - Change Criteria

The change criteria are based on the type of subscription

Subscribe to the object :

Either of these cases trigger notification:
1) If the status flags change at all
2) If the Present Value changes:

  • Binary, Life Safty and Multistate Objects : any change to Present Value
  • Analog, Loop and Pulse Objects: change by COV_Increment

Subscribe to a property :

Either of these cases trigger notification:
1) If the status flags change at all (if the object has status flags)
2) If the Property Value changes:

  • Property is of type REAL : change by COV_Increment ( which may be defined in the subscription or may be the native increment defined in the device).
  • Property is of some other type: any change to Present Value

7.0 - Discussion and Limitations of COV

7.1 General Discussion

There are some intrinsic problems with event or change reporting systems.

In our experience it is fairly common to learn that a well configured system failed to deliver the critical information only after a significant failure. We learn the hard way that we polled for data too slowly, the logger was offline when the notification was sent or that the logger was swamped with data because of the failure of incoming feed. With this in mind we draw your attention to some if the issues you should consider.

7.1.1 - The deluge of changes problem

These event reporting systems are commonly implemented to reduce the bandwidth requirements for monitoring remote devices or to ensure that the data client sees changes whose durations are less than their minimum polling interval. When a client reduces the frequency of its polls for data or reduces which objects it polls this reduces the bandwith requirements of the system. To compensate for the lower frequency of updates a COV system may be employed.

If COV systems are employed to ‘guarantee the delivery of criticial data’ great care should be taken is assessing the so called ‘guarantee’. The guarantee is often based on the assumption that changes are infrequent and small in scope but this isn’t always the case. Often a single change can spawn a number of changes and those changes can spawn more changes in a system similar to a nuclear reaction. The more changes that occur the more notifications that must be sent. If all the changes occur in a short interval then it easy to foresee a situation where a network or data client can be deluged with notifications. Now we have to assume there is enough bandwidth to handle sending them all and that each client can handle all the incoming messages quickly. If the notifications require confirmation then the speed of the client in processing the messages is material. If there is no notification required then it is conceivable in a poor BACnet implementation that the client could drop messages when its buffer is full.

It is very difficult to test these conditions because the test requires monitoring large data sets and the test setup requires a knowledge of how changes can spawn other changes within a device and / or a system. A consequence of these difficulties is that the performance of COV systems can be unpredictable.

7.1.2 – The offline Subscriber problem

A subscriber may be offline when a notification is sent. If the subscription required confirmed notification then this could present a temporary but significant loss of bandwidth while the COS server waits the timeout period before sending the next notification. If no confirmation was required then there is no way of knowing that the subscriber was offline and even if it wanted to the COS server device cannot signal this in anyway.

The COV system does not require vendors to manage notifications sent to offline subscribers. Thus the COV server does not have to queue them and resend them. Thus, it is possible for a COV client to lose its data synchronization with the Server. The only way around this is to use occasional polling. However, if the data client was a logging system then the damage is already done and the log records will not be made.

7.2 - Specific Limitations of BACnet COV

7.2.1 – Subscriptions may be lost on reset

The BACnet spec does not require vendors to maintain the subscriptions if the device resets. Thus a reset may result in the loss of all subscriptions. Now the system is dependent on the frequency of the re-subscription by the data client. That frequency is a vendor choice too and some systems don’t send periodic re-subscriptions.

7.2.2 – Single/Multiple Subscriptions

A single data client can potentially subscribe more than once to the same data object. This is possible because in identifying itself, in the subscription, the client provides two elements of information – identifier and handle. The identifier tells the server where to send responses. The handle is a number allocated by the client for some internal purpose. Changing the handle is enough to make a subscription unique and hence it is possible to have multiple subscriptions to the same object from the same client.

7.2.3 – Subscribing to Arrays

The spec allows vendors to choose whether to support subscriptions to all or particular elements of the array.

7.2.4 – Variable Number of Subscriptions

Each vendor chooses how many subscriptions to an object / property are supported. The spec requires that at least one must be supported. You should assume the list is finite and fairly short.

Its conceivable that subscription space could be wasted by temporary subscriptions from test equipment of software thus denying room for important subscriptions.

It is important to understand how your COV client application handles and reports failed subscriptions as these events can be as important as the event they are attempting to monitor.

7.2.5 – Unconfirmed Notifications can be sent without Subscription

The spec allows a device to send unconfirmed notifications for any property of any object to any other device on the network. Thus a device can send changes of a object property that has a wide area interest such as an outside air temperature. The vendor chooses if they wish to implement this, which objects, which properties and the frequency of the notification.

7.2.6 – Notifications can be sent without a change of value

The criteria for triggering notification messages requires notifications to be sent if the Status Flags associated with the object change even if the value hasn’t changed. This is potentially, important information but a number of data client systems ignore this element of the notification data.

8.0 – Read more

Additional information on BACnet may be found at www.chipkin.com/articles

Did you like this post?

Subscribe To The RSS Feed!
To catch many more articles like this in the future, make it easy on yourself and subscribe to me via RSS. You will not regret it!

Do you have a question?
We will do our best to try and solve any building automation, protocol, integration problem you may have

Organize your Google AdWords account for maximum effectiveness

A well organized and structured account is much easier to manage and will allow you to target your audience more effectively.

The fist step will be to organize your campaign by topic. By creating separate campaigns for each of your product lines, brands, resources and services. This will help you to monitor them individually and make the necessary adjustments to improve your campaigns performance. Set goals for each of your campaigns and structure them to achieve those goals. Refer to the Google AdWords help center for more information on how you can structure your campaign.

The next step will be to chouse your campaigns target language and location settings. You can also set your daily budget as well as some other settings. Make sure that you only target the languages and locations that are relevant to your business. For example if you only ship your product to locations in a specific district you should only target the country, territory, region or city related to that area, not all categories.

The next step will be to create highly specific ad groups. Each ad groups should center on a specific product or service making sure that your ad reaches the most qualified users. Build a general keyword list then separate them in to related ad group. Then create ads that pertain directly to that list. For example let say one of your product’s is an mp4 player you can create different campaigns for each brand and then multiple ad groups based on the models of each brand.

Lastly you need to avoid duplicate keywords across your ad groups. Google only shows one ad per advertiser on a particular keyword. Identical keywords will compete against each other and the better performing keyword will trigger your ad.

Did you like this post?

Subscribe To The RSS Feed!
To catch many more articles like this in the future, make it easy on yourself and subscribe to me via RSS. You will not regret it!

Do you have a question?
We will do our best to try and solve any building automation, protocol, integration problem you may have

BACnet models control devices as a collection of Objects

The data structure of information inside a BACnet device isn’t important to the outside world and can be structured by the manufacturer in a way that seams fit. What is important is a definition of a standard representation of this data to the outside world. BACnet has taken the object orientated approach in solving this problem. A set of 18 standard objects have been defined in Clause 12 of the BACnet specification. Each of these objects in turn consisting of a standard set of “properties”. These “properties” describes the object and its current state to other BACnet devices on the internetwork. These objects do not only provide a standardized way of representing the information to the rest of the internetwork but also provides a framework for building the application layer services. These services are then used to access and manipulate the properties of these standard objects. Mapping these changes to the real data structures inside a BACnet device is again up to the manufacturer. Each BACnet device can thus be modeled as a combination of these standard objects. The table below lists all the objects that get specified in the BACnet specification.

Object

Usage

Analog Input

Sensor input

Analog Output

Control output

Analog Value

Setpoint or other analog control system parameter

Binary Input

Switch input

Binary Output

Relay output

Binary Value

Binary (digital) control system parameter

Calendar

Defines a list of dates, such as holidays or special events, for scheduling.

Command

Writes multiple values to multiple objects in multiple devices to accomplish a specific purpose, such as day-mode to night-mode, or emergency mode.

Device

Properties tell what objects and services the device supports, and other device-specific information such as vendor, firmware revision, etc.

Event Enrollment

Describes an event that might be an error condition (e.g., “Input out of range”) or an alarm that other devices to know about. It can directly tell one device or use a Notification Class object to tell multiple devices.

File

Allows read and write access to data files supported by the device.

Group

Provides access to multiple properties of multiple objects in a read single operation.

Loop

Provides standardized access to a “control loop.”

Multi-state Input

Represents the status of a multiple-state process, such as a refrigerator’s On, Off, and Defrost cycles.

Multi-state Output

Represents the desired state of a multiple-state process (such as It’s Time to Cool, It’s Cold Enough and it’s Time to Defrost).

Notification Class

Contains a list of devices to be informed if an Event Enrollment object determines that a warning or alarm message needs to be sent.

Program

Allows a program running in the device to be started, stopped, loaded and unloaded, and reports the present status of the program.

Schedule

Defines a weekly schedule of operations (performed by writing to specified list of objects with exceptions such as holidays. Can use a Calendar object for the exceptions.

A BACnet device does not need to consist of all the objects types in the BACnet standard to conform to the standard. In addition to this some of the properties of these standard objects are also optional. In Clause 12 each object is summarized by a property list. This summary includes the property identifier, the data type of the property and one of the following specifiers:

O – Optional

R – Required and readable

W – Required, readable and writable.

As indicated the object properties specified by O is optional and does not need to be part of the BACnet standard object of that type. But the properties specified by R and W are required and need to be present in the BACnet standard object of that type. Supported properties, if they are required or not, need to always return the data type specified in the BACnet standard. An object property on the other hand does not always need to return the entire range of values for a specific data type, unless specified otherwise by the BACnet specification. The restrictions just need to be specified in the protocol implementation conformance statement (PICS) of that specific devise.

Although the BACnet standard tries to be comprehensive as possible with their collection of object types, they still leave implementers the freedom to define additional nonstandard object types or additional nonstandard properties for standard object types. This leaves the room for innovative changes to be accommodated without having to wait for changes in the BACnet standard. Nonstandard object types are still required to have the following properties:

  • Object_Identifier BACnetObjectIdentifier
  • Object_Name CharecterString
  • Object_type BACnetObjectType

These properties also need to behave the same way as in a standard BACnet objects. This means that the Object_Name and Object_Identifier properties still need to be unique within the BACnet device that maintains them. The Object_Name also needs to be at least one character in length and can only consist of printable characters.

Frequently properties of certain BACnet objects need to be represented as a collection of data elements of the same datatype. These datatypes in some cases have a fixed number of elements and in other cases a variable number of elements. The BACnet standard introduces two forms of data types to solve this problem namely the “BACnetARRAY” and “List of” data types.

A “BACnetARRAY” is defined as a structured datatype consisting of an ordered form of data elements of the same datatype. The notation “BACnetARRAY[N] of datatypeX” can be used to instantiate an object property with a ordered sequence of N data elements consisting of datatypeX. The array index N can then be used to individually access an element in position N of the array. By using the array without an index on the other hand will return all the elements in that array. The index N = 0 will returns the number of data elements in the array.

A ”List of” datatype is defined as a structured datatype consisting of a sequence of zero or more data elements of the same datatype. The notation “List of datatypeX” can be used to instantiate an object property with a sequence of zero or more data elements of daratypeX. The length of each “List of” can be variable. Unless otherwise specified no maximum size should be assumed for any “List of” implementation.

There are only two fundamental differences between the “BACnetARRAY” and “List of” datatypes. The first difference is that the elements of an array can be accessed by an array index while the elements of the “List of” property cannot. The second difference is that the size of the array can be accessed by reading the array index 0, while the size of the “List of” can only be determined by reading the entire property value and performing a count.

Several objects in Clause 12 of the BACnet specification have a property called “Reliability”. This property is an enumerator datatype that can consist of different enumerations for different object types. The table below lists a superset of all possible values for this property for all object types. The range of values that can be returned for this property for each specific object gets defined in the object type definition.

Enumerator

Description

NO_FAULT_DETECTED

Preset value is reliable

NO_SENSOR

No sensor is connected

OVER_RANGE

Sensor reading higher than normal

operating range

UNDER_RANGE

Sensor reading lower than normal

operating range

OPEN_LOOP

Connection indicating a open circuit

SHORTED_LOOP

Connection indicating a short circuit

NO_OUTPUT

No physical device is connected to the output object

PROCESS_ERROR

A process error was encountered

MULTI_STATE_FAULT

The Present_Value of the Multi-state object is equal to one of the states in the Fault_Value property and no other fault has been detected.

Did you like this post?

Subscribe To The RSS Feed!
To catch many more articles like this in the future, make it easy on yourself and subscribe to me via RSS. You will not regret it!

Do you have a question?
We will do our best to try and solve any building automation, protocol, integration problem you may have

Google AdWords most commonly used terms

When starting your first Google AdWords campaign you will be introduced to some new terminology. Some of the most commonly used AdWords terms you will need to understand are listed below.

Cost-per-click (CPC): Under its cost-per-click (CPC) pricing model, AdWords charges your account for each click your ad(s) receives. No cost will be incurred if your ad was displayed for a search query but not clicked on by the user.

Quality Score: Quality Score is the basis for measuring the quality of your keyword and ad and determining your minimum bid. Quality Score is determined by your keyword’s clickthrough rate (CTR), relevance of your ad text, historical keyword performance, and other relevancy factors. The higher your Quality Score, the lower your minimum bid and price you’ll pay per click.

Minimum bid: The amount assigned to a given keyword in your account based on its quality (or Quality Score). The minimum bid is usually the least amount you can pay per click in order for your keyword to show ads.

Clickthrough Rate (CTR): Your clickthrough rate (CTR) is a metric that helps show how your ads are performing. The more relevant your ads are, the more often users will click on them, resulting in a higher CTR. Your CTR are calculated as follows: The (number of ad clicks)/(number of ad impressions) x 100.

Did you like this post?

Subscribe To The RSS Feed!
To catch many more articles like this in the future, make it easy on yourself and subscribe to me via RSS. You will not regret it!

Do you have a question?
We will do our best to try and solve any building automation, protocol, integration problem you may have

Google AdWords Account Structure

A Google AdWords account are divided into three levels, they are account level, campaign level, and ad group level.

At the first level, your account level, your account gets associated with your unique email address, password and billing information.

At the next level, the campaign level, you can setup your daily budget, Google Network distribution preferences, geographic and language targeting as well as campaign end dates.

At the third level, ad group level, you can create your ads and choose your keywords. You can then set bids for your ad groups or individual keywords or sites. Within each of your ad groups you can create one or more ads and select a set of keywords to trigger those ads. When you create multiple ads for you ad group they will be rotated by Google.

Did you like this post?

Subscribe To The RSS Feed!
To catch many more articles like this in the future, make it easy on yourself and subscribe to me via RSS. You will not regret it!

Do you have a question?
We will do our best to try and solve any building automation, protocol, integration problem you may have

Targeting the correct market with your Google AdWords campaign

The main objective for using a Google AdWords account is to attract more relevant traffic to your site witch in turn might lead to business transactions. If you don’t target your market correctly or you have a very niche market with lots of competition you can easily lose money with your Google AdWords campaign. There are lots of techniques out there to make your Google AdWords campaign more profitable but the most fundamental one is to define and understand your target market. You need to try and think like your potential customer and present a solution for their problems with your AdWords ad. If the user sees something that might solve his problem he is much more likely to click on it. This will in turn increase your click through rate CTR.

You will be able to define your target market by having a close look at the products and services you offer. The more narrowly you can define your target market the better you will be able to define the problems your AdWords ads should address. The better you address the users problem the more likely you will be able to attract the right clicks.

With Google AdWords advertising just like any other advertising medium it is still important to apply the fundamentals marketing principals, like for instance to defining your target market etc.

Did you like this post?

Subscribe To The RSS Feed!
To catch many more articles like this in the future, make it easy on yourself and subscribe to me via RSS. You will not regret it!

Do you have a question?
We will do our best to try and solve any building automation, protocol, integration problem you may have

Keyword matching options by Google AdWords

These keyword matching options help you to refine your ad targeting market, to control your cost and to increase your ROI. The four keyword matching options provided by the Google keyword editor are broad matches, phase matches, exact matches and negative keywords. These options control how broad or narrow you are targeting your market.

The broad matching option is the default option used by Google. With broad matching your ads will be displayed for all searches that contain your keywords in any order as well as for relevant synonyms and plurals. The problem with the broad matching option is that it can easily generate unwanted impressions and clicks. This can drive cost up and produces a lower CTR.

With Phrase matching you can narrow it down more. Your ads will only be displayed if the order and words of your phrase terms matches some of the user search words. This can be achieved by placing your keyword phrase in double quotes (“Keyword phrase”).

If you what to narrow it down even more you use the exact match option. Your ad will only be displayed if the searcher uses your exact keyword and will not be displayed if any other words are used in the search. This can be achieved by placing square brackets around your keyword ([Keyword phrase]). This option is by far the most targeted option and should not be neglected.

Another alternative to the exact match option is the negative keyword option. This option can be used very effectively if you have a specific list of words you know you want to filter out. Your ad won’t be displayed when the search include any of your negative keywords. This can be achieved by placing a minus sign in front of your negative keyword (-keyword).

Time must me taken to evaluate and test the different matching techniques. The default broad matching option might not necessarily be the best option.

Did you like this post?

Subscribe To The RSS Feed!
To catch many more articles like this in the future, make it easy on yourself and subscribe to me via RSS. You will not regret it!

Do you have a question?
We will do our best to try and solve any building automation, protocol, integration problem you may have

Google AdWords: Other ways of achieving a higher CTR

The most obvious way to achieve a better CTR is to write relevant ads. Relevant ads needs to contain most or all of the keywords the user typed in the search box. Thus in each of your Ad Groups only write ads that contain the keywords you bid on. These keywords can be placed anywhere in your ads, but the most effective way is in the headline of your ad. This is because the keywords in the headline of your ad will automatically be bold and clickable, attracting the user’s attention. One way to automatically include the users keywords in your ads heading is to add the dynamic keyword code {keyword:}. This will automatically place the user’s search keyword in your ads heading for every relevant search.

After running your ad campaign for a while, it is very important to remove the keywords that only get impressions but no clicks. These keywords will only drag down your CTR and by removing them you can improve your CTR.

Did you like this post?

Subscribe To The RSS Feed!
To catch many more articles like this in the future, make it easy on yourself and subscribe to me via RSS. You will not regret it!

Do you have a question?
We will do our best to try and solve any building automation, protocol, integration problem you may have