Projekt

Allgemein

Profil

TDT-Protocol on CAN » Historie » Revision 45

Revision 44 (Maximilian Seesslen, 20.01.2023 11:21) → Revision 45/104 (Maximilian Seesslen, 20.01.2023 11:22)

h1. Intro

With the TDT-Protocol sensors can just send their values on the BUS without complex object catalogue.
An monitor-software is able to display values without knowing anything about the sensors or their configuration.
The CANId of sensors is actually their configurable ID or an global command.

CAN 2.0A: 0..0x7FF
CANOpen: 4 Bit Function code, 7 Bit Node-ID
Node-Id: 0..0x7F
Function-Code Mask: 0x780

h2. Function code

|_. Code |_. Decription |_. Examples |
| 0x0 | NMT | |
| 0x1 | Alarms | |
| 0x6 | Write object | Set Date, illumination |
| 0x7 | Read object | Get product codes |
| 0x8 | Send object | Send temperature |
| 0x9 | data blob | |
| 0xC | log | |

h1. IDs, ranges and commands

h2. CAN 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 |
| 0x70-0x7F | Passive Sensors | CANRec |



h2. Object Bbject structutre

|_. Size |_. Decription |_. Examples |
| 2 | Object | Plain Sensor value; Set illumination |
| 1 | Data type | Int, Float, Time, Date, Percent, Promil, Multipacket-String |
| 1 | Unit | Hz, °C, Time, Date, PWM, CAN-ID, Name, Description, Room |
| 4 | Value | 32Bit |



h2. Objects

|_. Code |_. Description |
| none | |
| ambientLight | |
| plantLight | |
| multimediaSwitch | |
| mainSwitch | |
| date | |
| time | |
| dummy | |
| plantSensor | |
| plantSensor0 | |
| plantSensor1 | |
| plantSensor2 | |
| plantSensor3 | |
| plantSensor4 | |
| firmwareVersion | |
| firmwareDate | |
| hardwareRevision | |
| hardwareDate | |
| temperatureIntern | |
| temperatureIntern1 | |
| temperatureIntern2 | |
| temperatureIntern3 | |
| temperatureIntern4 | |
| temperatureExtern | |
| temperatureExtern1 | |
| temperatureExtern2 | |
| temperatureExtern3 | |
| temperatureExtern4 | |
| humidity | |
| voc | |

h2. Units

* Date: year 2B, month 1B, day 1B
* Time: hour 1B, minute 1B, second 1B, subsecond 1B

h1. Multipacket-Strings

|_. Address |_. Type |
| 0x0 | Package count |
| 0x1 | Package number |
| 0x2..0x3 | Data |

h1. Actuator introduction

When introduction is requested by system command, each device must send description for each subid.

h1. Example

h2. Turn on the lights

|_.Data |_.Size |_.Description |
|0x100 | 29 Bits | CAN-Id: Global command |
|0x0 | 1 Byte | Message-Type: Global command |
|0x0 | 1 Byte | Sub-Id: Set ambient light |
|0x1 | 1 Byte | Data-Type: Integer |
|0x1 | 1 Byte | PWM: PWM permilli |
|1000 | 4 Byte | Value: Full Brightness |

h1. Usecases

* simple actors can filter message to "Global actuator" messages, at least "system commands"
* There are 14 or 28 Filters on STM32Fs

h1. ID Assigning

Some STM32 have an internal 96-bit unique ID.

h1. V2

|_. Size |_. Decription |_. Examples |
| 1 | Packet type | Standard TDT packet |
| 1 | Sub-Id; | Futher index; Sub-Sensor or more specifi kind of thing to be set |
| 1 | Data type | Int, Float, Time, Date, Percent, Promil, Multipacket-String |
| 1 | Unit | Hz, °C, Time, Date, PWM, CAN-ID, Name, Description, Room |
| 4 | Value | 32Bit |

h2. Multimessage package

There should be the posssibillity to write the complete SPI-Flash even if it takes forever.
Not every slave needs to be able to send super big blocks. But every slave should be able to
send e.g. descriptions.

* Is order of messages an issue? Multiple Mailboxes.

|_. Size |_. Decription |_. Examples |
| 1 | Packet type | Multimessage package |
| 1 | count | Number of packages |
| 1 | number | 0: value=data length in bytes |
| 4 | Value | 32Bit |

|_. Size |_. Decription |_. Examples |
| 1 | Packet type | Multimessage package 2 |
| 1 | id | Mailbox |
| 1 | number | 0: value=data length in bytes |
| | | 1: value=number of messages |
| | | 2..x: data |
| 4 | Value | 32Bit |

h2. Diagnose