Windmill Software Ltd
Windows Engineering Software

Monitor
April 2004

Monitor Archive

Home
Newsletters
Catalogue
Contents
Search

-------------------------Monitor------------------------
The Newsletter for PC-Based Data Acquisition and Control
Issue 69          www.windmill.co.uk          April 2004
--------------------ISSN 1472-0221----------------------

Welcome to April's Monitor.  We hope you find it useful, 
but should you wish to cancel your subscription please 
do so at 
http://www.windmill.co.uk/newsletter.html

CONTENTS
========
* Windmill News: Windmill Detects PLC Communications
* Monitoring Current Signals
* Windmill Notes: Parsing Data with the Free Windmill
* Excel Corner: Scrolling through a Chart
________________________________________________________
________________________________________________________

Windmill News: 
Windmill Detects Siemens PLC Communications
________________________________________________________

The Siemens S5 programmable logic controllers have been 
widely used for automation purposes around the world. 
Although now superseded by the S7, there are many still 
in use. One of our readers was studying the properties 
of the S5's serial connection, with a view to writing 
his own software to communicate with this plc. He 
downloaded Windmill comDebug and found that..."it was 
the most simple way to detect the right data used for 
communication".  Windmill speeded up his programming 
task and helped him identify and eliminate data transfer 
errors.

You can download Windmill comDebug from
http://www.windmill.co.uk/serial.html
________________________________________________________
________________________________________________________

Monitoring Current Signals
________________________________________________________

Current is often used to transmit signals in noisy 
environments, especially where there is a long distance 
between the measurement point and the data acquisition 
system.  This is because current is much less affected 
by environmental noise pick-up. 

The full scale range of the current signal is normally 
either 4-20 mA or 0-20 mA. A 4-20 mA signal has the 
advantage that even at minimum signal value there 
should be a detectable current flowing. The absence 
of this indicates a wiring problem. 

Before the data acquisition equipment can digitise the 
current signal and transfer it to the computer, a 
current-sensing resistor is usually used to convert 
the current to a voltage. The resistor should be of 
high precision (consider how much resolution the 
analogue-to-digital converter will give you).  It 
should also match the signal to an input range of the 
analogue input hardware. For 4-20 mA signals a 50 ohm 
resistor will give a voltage of 1 V for a 20 mA signal 
(V=IR). Choose 0.03% or 0.01% resistor accuracy.  The 
accuracy is a measure of the long-term stability of 
the resistor and its tolerance to temperature changes.
________________________________________________________
________________________________________________________

Windmill Notes: Parsing Data with the Free Windmill
________________________________________________________

If you have an instrument or device which you can plug 
into the PC's COM port, and it communicates using ASCII 
messages, chances are you can use the free Windmill 
software to collect its data.  This is because 
Windmill's free LabIML driver was designed to be as 
flexible as possible and accommodate almost any 
instrument with an RS232 port.  However, this 
flexibility has meant that the initial set up can be a 
case of trial and error.  These notes should reduce the 
error and help you decide the best way to interpret, or 
parse, the messages from your instrument.  (Our latest 
serial driver is more transparent, see 
http://www.windmillsoft.com/comiml.html for details.)  

When an instrument sends a message it rarely just 
contains data.  All sorts of extra characters and codes 
are in there. Here are some examples of messages.

A weighing scale might send:
+  125.32  g

A GPS receiver might send:
$GPGLL,5330.12,N,00215.31,W,134531,A

A Parallax BASIC Stamp might send:
+66.4

A spectrophotometer might send:
DR/4000U S/N: 9807U0000905 2.303-APR-04  
10:05:56  MULTI-WAVELENGTHGroup 0000  Sample 
0002 -0.000 ABSA=K1A1+K2A2  
665.0 nm   -0.004 ABS  K1:  1.0000  750.0 nm   -
0.004 ABS  K2: -1.0000

These examples show why Windmill needs to be flexible in 
extracting the relevant data from the message.

It's not only message formats that vary.  Some 
instruments need a command prompt from Windmill before 
they will send data, others initiate data transfer 
themselves - often regularly sending data. In this case 
the message can be considered as a continuous stream of 
data that has a recurring pattern.  

LabIML calls an instrument that sends one message after 
a command a Request/Response instrument.  Devices which 
constantly send data are called Continuous Flow 
instruments. 

To set up parsing instructions use the Windmill ConfIML 
software and select the LabIML driver. Go to the 
Channels settings.

The first thing to do is to locate the data. You can do 
this by:
1. Searching for specific characters in the message 
   string.
2. Ignoring characters until one of the ones in which 
   you are interested appears.
3. Ignoring a number of characters in the message 
   string.

At first glance methods 1 and 2 seem to do the same job.  
However, when you search for characters the next action 
occurs AFTER the searched for characters. When you 
ignore characters the next action occurs ON the 
specified character.  So if you searched for a + sign you 
would not be able to extract it, but if you ignored 
all characters until the + sign you would. Also, a search 
will look for the entire string specified (eg "abc"), 
whilst ignoring characters will stop at any of the 
characters specified (eg "a" or "b" or "c").

Be aware that with instruments that constantly send data 
LabIML will not know where the beginning of the message 
is. So, using the GPS example above, it's no use 
ignoring 8 characters and expecting the next value to 
be a latitude reading.  Instead search for a unique 
string such as $GPGLL.

Once you've located the data you need to extract it. 
There are two ways to do this:
1. Extract until a specified character.
2. Extract the next so many characters.

Using the GPS receiver as an example again
$GPGLL,5330.12,N,00215.31,W,134531,A
The data we might want to record from this string is the 
latitude and the longitude.  These are the 5330.12 and 
00215.31 figures respectively.  We should have already 
created 2 channels: one to hold the latitude readings 
and one to hold the longitude. For the latitude channel 
we might:
Search for $GPGLL, and extract until ,
For the longitude we might:
Search for N, and extract until ,

As another example, the BASIC Stamp might continually 
send a reading comprising a leading sign character, a trailing 
carriage return to mark the end of data and a maximum length of 
six characters. For example -55.27 or +66.4 (where 
 is the carriage return. In this case we could 
ignore all characters until we reach the + or - sign, 
and then extract all data up to the carriage return. 
This translates in LabIML's parse string to 
\I"+-"\E"\C013"

When you are extracting several channels of data from a 
string, note that if you have chosen a continuous flow 
protocol, the parsing proceeds along the string for each 
channel.  For a request/response protocol though, the 
parser goes back to the beginning of the string each 
time for each channel. 

--

Further Reading:

The LabIML Help file. You can download the latest 
version of this from http://www.windmill.co.uk/help.html

Our web notes on interfacing - 
GPS receivers
Sartorius balances
Mettler Toledo balances
Desoutter torque meters
Molytek loggers
Parallax BASIC Stamps
________________________________________________________
________________________________________________________

Excel Corner: Scrolling through a Chart
________________________________________________________

With a continuous data logging program like Windmill 
Logger, you can very quickly collect a vast amount of 
data.  There are times when you might want to replay the 
data as a moving chart. The best way to do this is to 
use the Windmill Replay program. This will re-run the 
data and lets you fast-forward, rewind and zoom in and 
out. It also display a table of data that, when you 
double-click a point on the chart, shows you the exact 
value of that point. For more on Replay see
http://www.windmill.co.uk/replay.html

However, if you prefer to use Excel rather than Replay, 
with a little ingenuity you can create a chart which you 
can scroll through. The speed the chart moves depends on 
how fast you drag the scroll bar control. Our 
explanation of how to do this (below) will probably be 
easier to understand if you download our example 
spreadsheet from 
http://www.windmill.co.uk/scrollchart.xls. (This is an 
Excel 2002 spreadsheet. For earlier versions of Excel 
you can download our example Logger file, 
http://www.windmill.co.uk/scroll.wl, and follow the 
instructions below.)

Our solution makes use of dynamic named ranges and the 
fact that you can link a scroll bar to a cell, where 
scrolling causes the cell's value to change.

Say you have imported a Windmill Logger file into Excel 
which has time in the first column (A) and voltage 
readings in the second column (B).  You want to chart 
the voltage signal against time.

Defining Dynamic Ranges with the Offset Function
================================================

First you need to define two dynamic ranges. To do this 
we're going to use the Offset function, which returns a 
cell reference according to your settings.  

To create our ranges:
1. From the Insert menu choose Name then Define.
2. Type Time into the Names box and 
   =OFFSET(Sheet1!$A$6,Sheet1!$E$5,0,Sheet1!$E$6,1) 
   into the Refers to box. 
   Click Add.
3. Type Signal into the Names box and 
   =OFFSET(Sheet1!$A$6,Sheet1!$E$5,1,Sheet1!$E$6,1) 
   into the Refers to box. 
   Click Add.
4. Click OK.

This is the syntax of Offset: 

OFFSET(reference, rows, cols, height, width)

Reference is the location from which you want to base 
the offset.  In our example this is the leftmost cell 
immediately above the data: A6. 

Rows and columns define how far away the offset is from 
the reference cell.  We want the row number to change as 
we scroll the chart, so we don't use an absolute value 
for rows.  Instead, we'll put the rows value into cell 
E5, and link this to the scroll bar.

Columns tells us whether we are referring to time 
(column 0) or voltage (column 1) readings. 

In our example, height is the number of rows of data to 
be displayed at any one time on the chart.  That is, the 
number of data items to be shown.  We could enter a 
number for this, 30 say.  However, if we enter the 
height value into a cell and reference that, we can then 
change this value and zoom in and out of the chart. 
We'll use E6 to store the number of data points to be 
displayed.

Finally the width value. This is the number of columns 
of the returned reference, or, in our example, the 
number of data series in the chart. For our chart this 
is 1.

Entering the Row Number and Data Points to be Displayed
=======================================================

We now need to set our row number (E5) and number of 
data points displayed (E6).  Enter 1 into E5 and 30 into 
E6.  (Remember, dragging the scroll bar will change the 
value in E5 and hence the row of data displayed.)

Creating the Chart
==================

We can now create the chart.
1. From the Insert menu choose Chart. 
2. Select Line as the Chart type and press Next.
3. Click the Series Tab. Press Add. Type into the boxes 
   as follows:
   Name: Chan_1
   Values: =Sheet1!Signal
   Category (X) axis labels: =Sheet1!Time
   
You should see a chart of the first 30 data values. 

You now need to fix the y axis, so it doesn't expand or 
contract when another set of data is shown. 
1. Right-click the y axis.
2. Select Format axis and the Scale tab.
3. Clear all the auto boxes and make sure that the 
   maximum and minimum values span your data. In our 
   example these are +10 and -10 (Volts).

Inserting the Scrollbar
=======================

The next step is to insert a scrollbar control.

1. From the View menu select Toolbars and show the 
   Control Toolbox.
2. Click the scrollbar control. (Click off the chart to 
   do this.)
3. On the worksheet, drag the scrollbar to the size you 
   want.
4. Right-click the scrollbar and select properties.
5. Enter E5 as the Linked Cell.
6. Set the minimum value to be 1 and the maximum value 
   to be the number of rows of data you have.
7. Click the Set-Square and Pencil icon on the Control 
   Toolbox to exit Design mode.

Zooming Into the Chart
======================

To zoom into the chart simply change the figure in E6: 
the number of data points displayed. The less data 
points the greater the magnification and vice versa.

--

Further Reading:

Our method is a modified version of Andy Pope's 
scrolling chart example - 
http://www.andypope.info/charts/Scrolling.htm

Other Excel Charting Tips
http://www.windmill.co.uk/xlchart.html

More on Windmill Replay
http://www.windmill.co.uk/replay.html
________________________________________________________
________________________________________________________

* Copyright Windmill Software Ltd
* Reprinting permitted with this notice included
* For more articles see http://www.windmill.co.uk

We are happy for you to copy and distribute this 
newsletter, and use extracts from it on your own web site 
or publication, providing the above notice is 
included and a link back to our website is in place.


An archive of previous issues is at 
http://www.windmill.co.uk/newsletter.html

Windmill Software Ltd, PO Box 58, North District Office,
Manchester, M8 8QR, UK
Telephone: +44 (0)161 833 2782
Facsimile: +44 (0)161 833 2190
E-mail: monitor@windmill.co.uk
http://www.windmill.co.uk/
http://www.windmillsoft.com/

Do you have a question, comment or suggestion on this 
newsletter? Fill in this form to contact the editor.
Comments: Name: Email:

Subscribing

To receive Monitor every month please fill in your e-mail address below. We will not pass your address to any third parties, nor send you any unsolicited e-mail.


Previous Issue Next Issue

Recommend this Monitor newsletter to a Friend


Home | On-Line Shop | Free Literature and Software Demos | Contents | Search

Copyright Windmill Software Ltd 2004
PO Box 58, North District Office, Manchester, M8 8QR, UK.
E-mail:monitor@windmillsoft.com,
Tel:+44 161 833 2782
http://www.windmill.co.uk/
Data Acquisition News Feed (RSS) Free measurement news feed...
Designed by Studholme.net
Newsletter Archive: