Intro¶
With the TDT-Protocol sensors can send their values on the BUS without necessarily knowing about complex object catalogue.
An monitor-software is able to display sensor values of nodes without knowing anything about the sensors or their configuration.
An XML file can be used for supplement for an monitor software.
The CANId consists of an function code and the node id. Like CANOpen the function code is 4 Bits and the Node-ID is 7 Bit.
In CAN2.0A there can only be 128 Nodes.
CAN 2.0A: 0..0x7FF
CANOpen: 4 Bit Function code, 7 Bit Node-ID
Node-Id: 0..0x7F
Function-Code Mask: 0x780
There are 14 or 28 Filters on STM32Fs
Some STM32 have an internal 96-bit unique ID.
Bits |
Area |
Decription |
Examples |
4 |
CAN-Id |
Function code |
Send object |
7 |
NodeId |
Sensemux WZ |
16 |
Data |
Object |
Set illumination |
8 |
Unit |
promilPwm |
8 |
Flags |
Confirmation required |
32 |
Value |
350‰ |
64Bits Data |
|
|
|
NMT
MMP
Alerts
Function code¶
Function code can be 0..15 / 0x00..0x0F
Code |
Decription |
Examples |
0x0 |
NMT-Write |
|
0x1 |
NMT-Send |
|
0x2 |
NMT-Introduce |
Device sends UID only |
0x3 |
NMT-setId |
Set NodeId on Device |
0x4 |
Alarms |
Send by nodes |
0x5 |
Write object |
Set Date, illumination |
0x6 |
Read object |
Get product codes |
0x7 |
Send object |
Send temperature |
0x8 |
Resend object |
Replay recorded data |
0x9 |
data blob |
|
Node-ID¶
Depending on the function code, the Node-ID can be the target or the source. Node-ID '0' means every node should inspect the message.
Function code |
Node-ID interpretation |
NMT-Write |
Destination or 0 |
NMT-Send |
Source |
NMT-Introduce |
Source |
NMT-setId |
New Node-ID |
Alarms |
Source |
Write object |
Destination or 0 |
Read object |
Targeted Source |
Send object |
Source |
Resend object |
Replayed Source |
data blob |
Destination |
IDs, ranges and commands¶
Node IDs¶
- 11-Bit-Identifier, (CAN 2.0A); 2048; 0x0 ... 0x7F0; 0x0 ... 0x7F with function code
- 29-Bit-Identifier, (CAN 2.0B); 0x20000000
Range |
Decription |
Examples |
0x01-0x0F |
Network Manager |
PC |
0x10-0x2F |
Active controller |
CANDis |
0x30-0x4F |
Actor |
CANSwitch |
0x50-0x6F |
Sending sensors |
Sensemux, CANIO |
0x70-0x7F |
Passive Sensors |
CANRec |
CAN data structutre¶
Size |
Decription |
Examples |
2 |
Object |
Set ambient illumination |
1 |
Unit |
hz, Float, Time, Date, Percent, promilPwm, centiCelsius, canId, room, Multipacket-String |
1 |
Flags |
Confirmation required |
4 |
Value |
The kind of data that was specified in 'unit' |
Objects¶
Code |
Description |
none |
|
ambientLight |
|
plantLight |
|
multimediaSwitch |
|
mainSwitch |
|
date |
|
time |
|
dummy |
|
plantSensor |
|
plantSensor [0-7] |
|
firmwareVersion |
|
firmwareDate |
|
hardwareRevision |
|
hardwareDate |
|
temperatureIntern [0-7] |
|
temperatureExtern [0-7] |
|
humidity |
|
VOC |
|
Replay |
|
Data-Dump (SD-Card) |
|
Units¶
- Date: year 2B, month 1B, day 1B
- Time: hour 1B, minute 1B, second 1B, subsecond 1B
Example: Turn on the lights¶
Data |
Size |
Description |
0x300 |
29 Bits |
Function code: Write Object; All nodes. |
0x0 |
2 Byte |
Object: Ambient illumination |
0x1 |
1 Byte |
Data-Type: PWM Permill |
0x1 |
1 Byte |
Flags: None |
1000 |
4 Byte |
Value: Full Brightness |
Allerts¶
Data |
Size |
Description |
0x300 |
29 Bits |
Function code: Write Object; All nodes. |
0x0 |
1 Byte |
Component |
0x0 |
1 Byte |
Data-Type |
0x0 |
2 Byte |
Allert-Code |
1000 |
4 Byte |
Value; Voltage etc. |
The component has to be defined befor including the event-header.
The unit is part of the code in the header files.