Ultrasonic Wind Speed & Direction Sensor (ECO-40)
Windsonic-ECO-40 Ultrasonic anemometer is very robust with no moving parts, maintenance free , simultaneously output wind speed and direction. Each unit is factory calibrated in our wind-tunnel testing lab prior to shipping.
Windsonic-ECO-40 powers up with 7... 30 VDC and outputs serial data with a selectable communication protocol: MODBUS-R TU and NMEA 0183. Four alternative serial interfaces are selectable: RS- 232, RS-485 and The transmitter is equipped with a 4-pin M12 connector for Installation
The following options are available:
- Windows XP/WIN7 based testing software, which only support MODUBUS protocol
- USB to RS-232/RS-485 converter cable (1.5m)
- Mounting kits
Technical Specifications
|
Range |
Accuracy |
Resolution |
Wind speed |
0 - 40m/s |
±2% |
0.1m/s |
Wind Direction |
0 - 359° |
±2° |
1° |
Digital Output |
RS485 or RS232 |
Baud Rate |
4800 - 19200 bps |
Communication protocol |
ModBus-RTU , NMEA-0183 |
Protection Grade |
IP65 |
Operating Temperature |
-40°C - +80°C |
Storage Temperature |
-50°C - +80°C |
Working Humidity |
0 - 100% |
Power Supply |
VDC: 7-30V |
Power Consumption |
18mA@12V DC |
Dimension/Weight |
ABS: ø82x108mm,0.28Kg |
Material |
ABS engineering plastic |
Apperance Sketch
ABS Shell
There has three north markers on ABS shell for easy observation from downward, front upward.
WIRING
For RS485 output, communication cable is four cores, connected as below
Power |
RS485 |
Red |
Black |
Yellow |
Green |
V+ |
GND |
RS485 DA+ |
RS485 DB- |
Procedure of confirmation of communication and wiring
3 seconds after wiring of our Device and correctly configuring serial communication tool, our instrument will output characters “>System Startup” in ASCII(0A 3E 53 79 73 74 65 6D 20 53 74 61 72 74 75 70 0D 0A in HEX), which indicate that our instrument is powered up. We can simply test its response by inputting “enter setting mode” command “3E 2A 0D 0A”. Our instrument will immediately respond “>CONFIGURE MODE” in ASCII(3E 43 4F 4E 46 49 47 55 52 45 20 4D 4F 44 45 0D 0A in HEX). So far , the communication test is finished, device is proven to be communicated successfully
Installation Guidelines
The ECO-40 can be mounted on top mast posts, poles, tripods, etc. Depending on the application. Pole should have one holes for M4 screw 6mm lower than top of pole, put cable(waterproof aerial plug) through pole. ECO-40 should be mounted two to three meters above ground.
NOTE:
The user must have proper stress relief on the cable. T urn the plug and press it gently into the socket to connect the plug to the ECO-40 outlet. When the plug is connected, turn the outer sleeve clockwise and lock the plug. With 7 stainless steel screws, the ECO-40 can be fixed to the mounting pipe (the screw has a maximum installed torque of 4Nm).(Refer to picture on the bottom)
Orientation:
Use a standard compass to find correct geographic north direction then align north marker to it, then fix anemometer.
You will need to adjust the anemometer so that it is level. Use a bubble level or other leveling device to ensure the anemometer is level (leveling device not included).
Customers must ensure that the Windsonic-ECO-40 is installed in an open area so as to avoid obstacles to airflow or turbulence in the surrounding buildings.Do not install Windsonic-ECO-40 on the side of a high power radar or radio transmitter.
Installation Sketch
Following World Meteorological Organization (WMO) guidelines, a general recommendation is that there is at least 150 m open area in all directions from the mast. Any object of height (h) does not significantly disturb wind measurement at a minimum distance of 10 times the height of the object. The recommended minimum length (h) for the mast that is installed on top of a building is 1.5 times the height of the building (H). When the diagonal (W) is less than the height (h),the minimum length of the mast is 1.5 W . However , follow the application specific instructions and local regulations when placing Windsonic-ECO-40.
Communication Protocol
Modbus-RTU V10.7M
Serial port communication
Start Bit |
1 Bit |
Data Bit |
8 Bit |
Parity Bit |
NONE |
Stop Bit |
1 Bit |
Baud Rate |
9600 Baud |
Communication Mode
Communication mode:RS485 or RS232, default mode:RS485。
Communication protocol
MODBUS Protocol - RTU Mode
Protocol description
MODBUS protocol defines a simple protocol data unit(PDU) independent from basic communication layer .
MODBUS has two transmission mode: RTU and ASCII.
Our sensor adopts RTU mode.
RTU transmission Mode
When controllers are setup to communicate on a Modbus network using RTU (Remote Terminal Unit) mode, each eight-bit byte in a message contains two four-bit hexadecimal characters. The main advantage of this mode is that its greater character density allows better data throughput than ASCII for the same baud rate. Each message must be transmitted in a continuous stream.
Modbus RTU message frame
CRC check
RTU Mode has Cyclical Redundancy Checking(CRC) on all content of message, no matter if there is an odd-even check or not. CRC check code is a 16 bits value composed by two 8 bits value and added as tail of message. After calculation, lower byte first then high byte. CRC higher byte is the last byte of message.
The CRC check code is calculated by sender . Receiver will recalculate CRC check code and compare it with CRC code received, if they are dif ferent, then there is an error happen during transmission.
ModBus Communication mode
Data Coding
MODBUS use ”big-Endian” to indicate address and data, which means when there is several bytes be sent out, the most significant bit is sent and received first
Register Size |
Value |
16 Bit |
0 * 1234 |
Protocol of Device
Function code supported
Function Code Type |
Length |
Function Code (HEX) |
Description |
Data Access |
16 Bit |
03 |
Read data from internal register |
Data Access |
16 Bit |
10 |
Write data from multiple register |
Error code supported
Error Code |
Description |
01 |
Function Code Error |
02 |
Register Address Error |
03 |
Register Value Error |
04 |
Device Busy |
Internal Register Description
Register |
Length |
Data Type |
Definition |
Range |
Register 1 |
16 Bit |
16 Bit int |
Register 2 |
16 Bit |
16 Bit int |
Register 3 |
16 Bit |
32 Bit float |
Register 4 |
16 Bit |
Note: Starting address of registers is from zero, E.g. address of register 1 is 0x0000
32 bit float type formate
D3 |
D2 |
D1 |
D0 |
Higher byte |
Middle byte 1 |
Middle byte 2 |
Lower byte |
Parameters Setting Commands
Following parameters such as communication address or baud rate, system time, precipitation automatic clear period can be set by user
Commands |
Content |
Response |
Instruction1 |
ASCII |
>*\r\n |
>CONFIGUREMODE\r\n |
HEX |
3E 2A 0D 0A |
0A 3E 43 4F 4E 46 49 47 55 52 45 20 4D 4F 44 45 0D 0A |
Remark |
Enter Setting Mode |
Instruction2 |
ASCII |
>CUS96008-N-1 |
>CMD IS SET |
HEX |
3E 43 55 53 20 39 36 30 30 20 38 2D 4E 2D 31 0D 0A |
3E 43 4D 44 20 49 53 20 53 45 54 0D 0A |
Remark |
Configure serial port configuration as Baud Rate 9600bps ; Data bits : 8 bits ; Parity : NONE ; Stop bits : 1 bit |
Instruction3 |
ASCII |
>ID2\r\n |
>CMD IS SET |
HEX |
3E 49 44 20 32 0D 0A |
3E 43 4D 44 20 49 53 20 53 45 54 0D 0A |
Remark |
Configure address of device as 2. Inquiry address command is HEX : 3E 49 44 0D 0A |
Instruction4 |
ASCII |
>RESET\r\n |
System Start ok! \r\n |
HEX |
3E 52 45 53 45 54 0D 0A |
53 79 73 74 65 6D 20 73 74 61 72 74 20 6F 6B 21 0D 0A |
Remark |
Reboot device |
Instruction5 |
ASCII |
>!\r\n |
>NORMAL MODE \r\n |
HEX |
3E 21 0D 0A |
3E 4E 4F 52 4D 41 4C 20 4D 4F 44 45 0D 0A |
Remark |
Exit Setting Mode to Normal Mode |
Instruction6 |
ASCII |
>DEBUGEN\r\n |
Ustart In Debug Mode\r\n |
HEX |
3E 44 45 42 55 47 45 4E 0D 0A |
55 73 61 72 74 20 49 6E 20 44 65 62 75 67 20 4D 6F 64 65 0D 0A |
Remark |
Enter Secondary Setting Mode (only for WDS Series, WDS Series don't need to enter this mode) |
Appendix transform HEX to float data.
Use C language’s subfunction to transform 4 bytes(HEX) as float data( C language) union
{
float TestData_Float; unsigned char TestArray[4];
}TData;
Analysis example:
D3 |
D2 |
D1 |
D0 |
Higher byte of resgister 2 |
Lower byte of register 2 |
Higher byte of resgister 1 |
Lower byte of register 1 |
40 |
AC |
19 |
DF |
Higher byte |
Middle byte 1 |
Middle byte 2 |
Lower byte |
- After transformed to float data, value: 5.378
- Subfunction: float Tempfloat;
TData.T estArray [3]= 0x40; //input higher byte
TData.T estArray [2]= 0xac; //
TData.TestArray [1]= 0x19; //
TData.TestArray [0]= 0xdf; //input lower byte
Tempfloat = TData.T estData_Float;
Appendix VRC verification
The CRC we are using is 16 bits, lower byte comes first. The cyclic redundancy check (CRC) field is two bytes which contain 16 bits binary value.
The value of the CRC appended to the message is calculated by the transmitting device. When receiving the message, the receiving device recalculates the CRC value and compares the calculated result with the actual received CRC value. If the two values are not equal, it is an error.
During the generation of CRC, each 8-bits characters are XOR with the value in the register. The result then shifts 1 bit in the LSB direction, while the MSB position is charged to zero. Then extract and check LSB: if LSB is 1, the value in the register is XOR with a fixed preset value; if LSB is 0, no XOR operation is performed.
This process will be repeated until 8 shifts have been performed. After the last (8th) shift and related operations, the next 8-bit byte is XOR with the current value of the register, and then repeat 8 times as described above. The final value in the register obtained after all sub sections of the message are calculated is CRC.
Procedure of calculating a CRC:
- Load a 16 bit register with hexadecimal FFFF (all 1). Call it CRC register
- XOR the first byte of 8 bits in message with the low er byte of the 16 bit CRC register, and place the result in the CRC register
- Move the CRC register to the right by 1 bit (in the direction of LSB), fill the MSB with zero, extract and detect LSB
- If LSB is 0: repeat step 3 (do another shift) (if LSB is 1): conduct XOR operation with CRC register
- Repeat steps 3 and 4 until 8 shifts have been completed. When this is done, the full 8-bit byte operation will be completed.
- Repeat steps 2 to 5 for the next byte in the message, and continue the operation until all messages are processed.
- The final content in CRC register is CRC value
- When placing CRC value in message, as described below, higher and lower byte must be exchanged.