Current Harware Version: 0.0.2 Current Firmware version:
Got to http://www.grodansparadis.com for up to date info
No firmware release yet.
Old file are available here http://www.dosilos.se/download/hardware/vilnius
Vilnius is a general 10-bit A/D module with four buffered channels that can scale the input with voltage divider if needed. The module can be bought in a variant for 0-3V (B33, 0-5V(B50), 0-10V(B10=, 1-12V(B12), 0-28V(B28) versions
The Firmware is written to handle eight channels.
Register 0(0x00) - Zone. Read/write.
Register 1(0x01) - Subzone 0. Read/write. Register 2(0x02) - Subzone 1. Read/write. Register 3(0x03) - Subzone 2. Read/write. Register 4(0x04) - Subzone 3. Read/write. Register 5(0x05) - Subzone 4. Read/write. Register 6(0x06) - Subzone 5. Read/write. Register 7(0x07) - Subzone 6. Read/write. Register 8(0x08) - Subzone 7. Read/write.
The firmware can handle up to eight channels. Each channel can have its own subzone.
Register 9(0x09) - MSB of A/D value for channel 0. Read Only. Register 10(0x0A) - LSB of A/D value for channel 0. Read Only. Register 11(0x0B) - MSB of A/D value for channel 1. Read Only. Register 12(0x0C) - LSB of A/D value for channel 1. Read Only. Register 13(0x0D) - MSB of A/D value for channel 2. Read Only. Register 14(0x0E) - LSB of A/D value for channel 2. Read Only. Register 15(0x0F) - MSB of A/D value for channel 3. Read Only. Register 16(0x10) - LSB of A/D value for channel 3. Read Only. Register 17(0x11) - MSB of A/D value for channel 4. Read Only. Register 18(0x12) - LSB of A/D value for channel 4. Read Only. Register 19(0x13) - MSB of A/D value for channel 5. Read Only. Register 20(0x14) - LSB of A/D value for channel 5. Read Only. Register 21(0x15) - MSB of A/D value for channel 6. Read Only. Register 22(0x16) - LSB of A/D value for channel 6. Read Only. Register 23(0x17) - MSB of A/D value for channel 7. Read Only. Register 24(0x18) - LSB of A/D value for channel 7. Read Only.
Direct A/D values can be read here. 0-1024.
Register 25(0x19) - Channel 0 Control Register. Read/Write Register 26(0x1A) - Channel 1 Control Register. Read/Write Register 27(0x1B) - Channel 2 Control Register. Read/Write Register 28(0x1C) - Channel 3 Control Register. Read/Write Register 29(0x1D) - Channel 4 Control Register. Read/Write Register 30(0x1E) - Channel 5 Control Register. Read/Write Register 31(0x1F) - Channel 6 Control Register. Read/Write Register 32(0x20) - Channel 7 Control Register. Read/Write
The channel control bits enable/disable intelligent channel functionality
Register 33(0x21) - On/off sample time Channel 0 (milli-seconds) MSB. Read/Write Register 38(0x26) - On/off sample time Channel 0 (milli-seconds) LSB. Read/Write Register 39(0x27) - On/off sample time Channel 1 (milli-seconds) MSB. Read/Write Register 40(0x28) - On/off sample time Channel 1 (milli-seconds) LSB. Read/Write Register 41(0x29) - On/off sample time Channel 2 (milli-seconds) MSB. Read/Write Register 42(0x2A) - On/off sample time Channel 2 (milli-seconds) LSB. Read/Write Register 43(0x2B) - On/off sample time Channel 3 (milli-seconds) MSB. Read/Write Register 44(x02C) - On/off sample time Channel 3 (milli-seconds) LSB. Read/Write Register 45(0x2D) - On/off sample time Channel 4 (milli-seconds) MSB. Read/Write Register 46(0x2E) - On/off sample time Channel 4 (milli-seconds) LSB. Read/Write Register 47(0x2F) - On/off sample time Channel 5 (milli-seconds) MSB. Read/Write Register 48(0x30) - On/off sample time Channel 5 (milli-seconds) LSB. Read/Write Register 49(0x31) - On/off sample time Channel 6 (milli-seconds) MSB. Read/Write Register 50(0x32) - On/off sample time Channel 6 (milli-seconds) LSB. Read/Write Register 51(0x33) – On/off pulse time Channel 7 (milli-seconds) MSB. Read/Write Register 52(0x34) – On/off pulse time Channel 7 (milli-seconds) LSB. Read/Write
This is the sample time for the each channel expressed in milli-seconds. The min pulse time is 10 milli-seconds and the max time is 65535 mili-seconds which is about 1 minute. Set to zero (default) for no sample time.
If periodic events are enabled they will be sent with the period set here.
If event on change is enabled they will be sent with the period set here if the value has changed since the last read with a hysteresis set in the hysteresis register.
If stream is enabled stream events will be sent out when the stream buffer is full (2 samples).
If A/D change values are enabled be careful not to have a low sample period as this will most certain flood the bus.
Register 53(0x35) - Hysteresis for a changed value. Read/Write.
Register 54(0x36) - # available channels. Read only.
Different hardware modules can have different number channels. The available number of channels can be read in this register.
Register 55(0x37) - MSB low alarm level for channel 0. Read/Write. Register 56(0x38) - LSB low alarm level for channel 0. Read/Write. Register 57(0x39) - MSB low alarm level for channel 1. Read/Write. Register 58(0x3A) - LSB low alarm level for channel 1. Read/Write. Register 59(0x3B) - MSB low alarm level for channel 2. Read/Write. Register 60(0x3C) - LSB low alarm level for channel 2. Read/Write. Register 61(0x3D) - MSB low alarm level for channel 3. Read/Write. Register 62(0x3E) - LSB low alarm level for channel 3. Read/Write. Register 53(0x3F) - MSB low alarm level for channel 4. Read/Write. Register 64(0x40) - LSB low alarm level for channel 4. Read/Write. Register 65(0x41) - MSB low alarm level for channel 5. Read/Write. Register 66(0x42) - LSB low alarm level for channel 5. Read/Write. Register 67(0x43) - MSB low alarm level for channel 6. Read/Write. Register 68(0x44) - LSB low alarm level for channel 6. Read/Write. Register 69(0x45) - MSB low alarm level for channel 7. Read/Write. Register 70(0x46) - LSB low alarm level for channel 7. Read/Write.
An alarm event will be sent out if the A/D channel is lower then this value. Alarm state is reseted for level + hysterersis. Flag must also be set to generate alarm.
Register 71(0x47) - MSB high alarm level for channel 0. Read/Write. Register 72(0x48) - LSB high alarm level for channel 0. Read/Write. Register 73(0x49) - MSB high alarm level for channel 1. Read/Write. Register 74(0x4A) - LSB high alarm level for channel 1. Read/Write. Register 75(0x4B) - MSB high alarm level for channel 2. Read/Write. Register 76(0x4C) - LSB high alarm level for channel 2. Read/Write. Register 77(0x4D) - MSB high alarm level for channel 3. Read/Write. Register 78(0x4E) - LSB high alarm level for channel 3. Read/Write. Register 79(0x4F) - MSB high alarm level for channel 4. Read/Write. Register 80(0x50) - LSB high alarm level for channel 4. Read/Write. Register 81(0x51) - MSB high alarm level for channel 5. Read/Write. Register 82(0x52) - LSB high alarm level for channel 5. Read/Write. Register 83(0x53) - MSB high alarm level for channel 6. Read/Write. Register 84(0x54) - LSB high alarm level for channel 6. Read/Write. Register 85(0x55) - MSB high alarm level for channel 7. Read/Write. Register 86(0x56) - LSB high alarm level for channel 7. Read/Write.
An alarm event will be sent out if the A/D channel is higher then this value. Alarm state is reseted for level - hysterersis. Flag must also be set to generate alarm.
Register 87(0x57) - MSB scaling 'k' for channel 0 forming a signed integer. Read/Write. Register 88(0x58) - LSB scaling 'k' for channel 0 forming a signed integer. Read/Write. Register 89(0x59) - MSB scaling 'k' for channel 1 forming a signed integer. Read/Write. Register 90(0x5A) - LSB scaling 'k' for channel 1 forming a signed integer. Read/Write. Register 91(0x5B) - MSB scaling 'k' for channel 2 forming a signed integer. Read/Write. Register 92(0x5C) - LSB scaling 'k' for channel 2 forming a signed integer. Read/Write. Register 93(0x5D) - MSB scaling 'k' for channel 3 forming a signed integer. Read/Write. Register 94(0x5E) - LSB scaling 'k' for channel 3 forming a signed integer. Read/Write. Register 95(0x5F) - MSB scaling 'm' for channel 0 forming a signed integer. Read/Write. Register 96(0x60) - LSB scaling 'm' for channel 0 forming a signed integer. Read/Write. Register 97(0x61) - MSB scaling 'm' for channel 1 forming a signed integer. Read/Write. Register 98(0x62) - LSB scaling 'm' for channel 1 forming a signed integer. Read/Write. Register 99(0x63) - MSB scaling 'm' for channel 2 forming a signed integer. Read/Write. Register 100(0x64) - LSB scaling 'm' for channel 2 forming a signed integer. Read/Write. Register 101(0x65) - MSB scaling 'm' for channel 3 forming a signed integer. Read/Write. Register 102(0x66) - LSB scaling 'm' for channel 3 forming a signed integer. Read/Write.
Register 103(0x67) - Datacoding for channel 0. Read/Write. Register 104(0x68) - Datacoding for channel 1. Read/Write. Register 105(0x69) - Datacoding for channel 2. Read/Write. Register 106(0x6A) - Datacoding for channel 3. Read/Write.
Register 107(0x6B) - Measurement type for channel 0. Read/Write. Register 108(0x6C) - Measurement type for channel 1. Read/Write. Register 109(0x6D) - Measurement type for channel 2. Read/Write. Register 110(0x6F) - Measurement type for channel 3. Read/Write.
Register 111(0x70) - Signed char for number of decimals for channel 0. Read/Write. Register 112(0x71) - Signed char for number of decimals for channel 1. Read/Write. Register 113(0x72) - Signed char for number of decimals for channel 2. Read/Write. Register 114(0x73) - Signed char for number of decimals for channel 3. Read/Write.
The scaling is used with the formula
value = k * A/D-value + m
where value is calculated as a signed long (4 bytes).
The value is always sent as a normalized integer of Class=10 (0x0a) Measurement. The datacoding is should be set to 0b100xx000 where xx is the type for the measurement (0b00 if default) see http://www.vscp.org/wiki/doku.php?id=vscp_specification_data_coding.
Finally the measurement type is one of the types defined for Class=10 (0x0a) Measurement.
Register 119(0x6A) - Index into decision matrix (0-15 - 16 rows.) Register 120(0x70) - 127(0x7f) - Decision Matrix ( one element visible)
The module have a decision matrix with seven entries.
0(0x00) - NOOP, No action.
1(0x01) - Send state. Can be used for sync requests.
Argument (byte) should have a bit set for all channels that should be reported.
Can be sent on configurable intervals or on value changes.
Class: 0x015 Type: 0x02
Package:
Byte 0: Data coding: 0xc0 + channel. Byte 1: MSB of A/D value. Byte 2: LSB of A/D value.
If enabled the event is sent when a channel goes from active to inactive.
Class: 0x001 Type: 0x02
Package:
Byte 0: index. Byte 1: Zone Byte 2: Subzone
Index is 0 for channel 0, 1 for channel 1 and so on.
A stream event is sent on intervals to report I/O channel state.
Class: 0x014 Type: 0x26
Package:
Byte 0: Zone Byte 1: Subzone Byte 2: Index Byte 3: MSB of A/D value sample i Byte 4: LSB of A/D value sample i+1 Byte 5: MSB of A/D value sample i+2 Byte 6: LSB of A/D value sample i+3
Index is increase for every event sent out.
This is open hardware / software that is made by Ake Hedman, eurosource, Sweden. It is free to use for commecial or non commercial use.
Email: vscp@eurosource.se
Company:
eurosource Brattbergavagen 17 820 50 LOS SWEDEN info@eurosource.se http://www.eurosource.se Phone: +46 657 413430 Fax: +46 657 413503
Modules and components are sold at http://www.eurosource.se/catalog
More info about the VSCP and CANAL protocol can be found at http://www.vscp.org
Discussion