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
	
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              | 
			                         | 
		
	
	
IDs, ranges and commands¶
	
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                   | 
		
	
	
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                                                             | 
		
	
	
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                 | 
			                            | 
		
	
	
Units¶
	
	- Date: year 2B, month 1B, day 1B
 
		- Time: hour 1B, minute 1B, second 1B, subsecond 1B
 
	
	
Multipacket-Strings¶
	
		
			| Address  | 
			Type           | 
		
		
			|  0x0        | 
			 Package count    | 
		
		
			|  0x1        | 
			 Package number   | 
		
		
			|  0x2..0x3   | 
			 Data             | 
		
	
	
Actuator introduction¶
	When introduction is requested by system command, each device must send description for each subid.
	
Example¶
	
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        | 
		
	
	
Usecases¶
	
	- simple actors can filter message to "Global actuator" messages, at least "system commands" 
 
		- There are 14 or 28 Filters on STM32Fs
 
	
	
ID Assigning¶
	Some STM32 have an internal 96-bit unique ID.
	
	
		
			| 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                                                             | 
		
	
	
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                                                             | 
		
	
	
Diagnose¶