This symbol is ideal for wind-reliant industries that needs historical data of wind speeds.
WindRoseSymbols.zip contains the above files
Wind_Rose_Demo_App.zip contains the demo application showing how this symbol is used
1) Wind Rose Symbol: EncodedData (string), non-default colors (user selectable)
2) Wind Rose Info Display: EndDateTag, MaxSpdDateTag, MaxWindDirTag, MaxWindSpdTag, sMaxWinDirTag, StartDateTag, TotSamplesTag
Description: This advanced symbol uses one string tag containing: The percentage of “0” wind speed samples (disregarding any direction), the encoded directional wind count percentage for each of the 16 cardinal directions (e.g., N, NNE, NE, ENE, E, etc.) starting at 0 degrees, ending at 359.99 degrees, that are segregated into six levels of:
Level 0 > 0 To 5
Level 1 > 5 To 10
Level 2 > 10 To 15
Level 3 > 15 To 20
Level 4 > 20 To 25
Level 5 > 25
and a dynamic multiplier value based on the largest sum of wind speeds from any given direction. Each petal is constructed using a unique resize animation expression that extracts its particular information out of the encoded data string tag. The Wind Rose Info Display shows statistical information for the data being displayed in the Wind Rose. It is not required to use this in order to make the Wind Rose symbol operate, and is broken out separately from the Wind Rose in the symbol folder, if needed; and also there is a symbol version included containing both objects together as shown in the demo app.
Demo Application: The demo application contains support for the Wind Rose Linked Symbol that parses the text-based data file (the Nov 2015 WeatherCat monthly log file for the example below) and creates the encoded data string. Users wanting to use the Wind Rose Symbol will need to create their own individual routines to encode their wind data. Details and examples are discussed below and also in the comments of the subroutine in the demo app.
The attached demo application reads rows from the data file and updates the Wind Rose, however it is not necessary to adhere to this scheme. Users can query and parse their own data before displaying the result, or as in the application, dynamically update the Wind Rose symbol. The full description of the operation of the application is documented in the comments of the procedure called “ParseWindData”.
Encoded Data String: The encoded data string passed to the linked symbol through the custom property is comprised of the data (count-percentages and petal locations) for 49 groups: (1 group of “0” wind speed, then 6 wind speed groups for each of the 16 cardinal directions) of of 3-byte (characters) strings each representing a percentage of the total samples, plus 1 group of 4-byte (characters) as the multiplier at the end, assembled as described in the following order:
The first set of 3 characters is the count of:
(“Wind 0 mph”)/total samples [Read: “The count of ‘Wind 0 mph’ samples divided by total samples”]
The 2nd set of 3 characters is:
(the count of “N Level 0”)/total samples
The 3rd set of 3 characters is:
(the sum of the count of “N Level 0 “+ the count of “N Level 1”)/total samples
This scheme continues on until the 96th set of 3 characters is:
(the sum of the count of “NNW Level 0+1+2+3+4”)/total samples
and finally the 97th set of 3 characters is:
(the sum of the count of “NNW Level 0+1+2+3+4+5”)/total samples
Finally, the last set of 4 characters in the string (includes the embedded decimal place) is a multiplier of 0.00 to 99.9 (4.60 in the following example) to control the size of the petals and ring value displays, which is based on the size of the largest petal. Each total petal size is the sum of the 6 wind speed groups for that wind direction.
An example of an assembled string (taken from the “Startup” Script) which initializes the Wind Rose when the project initially starts is shown here broken up and explained:
This is the same encoded string tag assignment (copied from startup script of the demo app) and formatted with added spaces and CR/LF’s between the groups so you can read it easier:
Multiplier: Using this example, the largest petal (read on the bottom line) is SSE at 20.6% (.206 * 100), so the multiplier value for the string is calculated by:
(0.9476 / [largest petal percentage (.206)] = 4.60
This constant of 0.9476 can be adjusted as necessary to calibrate the ring value displays against the physical size of the largest petal, which is scaled to touch the outside ring. If this value is changed, then the 5 value displays for the rings also need to have their constant changed to reflect the new size calibration for the symbol.
- This symbol contains only native IWS objects.
- Colors can be changed by adding new color values or tags containing the new color values to make them dynamic.
- Code implementation is documented in the subroutime in the demo application.
Ideas for improvement:
- Add different colors
- Add different statistics
- Use a different database or data storage method/query method
Unzip and save the folder “WindRose” containing the symbols into your Symbol folder where InduSoft Web Studio is installed. This is usually “C:\Program Files (x86)\Wonderware InduSoft Web Studio v8.0\Symbol” or similar.