Dynamic COMPOSITE_ID in Segmented Packet

I’m mapping mapping the FTCAN protocol, using the new Composite Ids feature, I can map the data by viewing the CAN monitor and writing the Xml, but this protocol does not keep the COMPOSITE_ID fixed, each when there is a change when a sensor is added to the ECU it changes position, and can segment the data, to another segment.
I use what they call MeasureID in COMPOSITE_ID.

I thought if a dynamic COMPOSITE_ID could be made in which it is not necessary to determine the position.
And the formation of the data taking automatically in the next segment, if it is segmented.

Description of the protocol on page 139:
https://files.fueltech.net/manuals/FT450_FT550_FT550LITE_FT600.pdf


Thanks

As Fueltech devices can be configured to work with our current implementation, I don’t see value in implementing such a special case. At least not at this point.

I’ll explain what happens:

23 10:03:06.976 ch1 R 0x140811ff x| 00 00 34 00 04 0C 1C 00
24 10:03:06.977 ch1 R 0x140811ff x| 01 02 01 80 00 10 00 00
25 10:03:06.978 ch1 R 0x140811ff x| 02 00 12 00 00 00 22 00
26 10:03:06.979 ch1 R 0x140811ff x| 03 00 00 86 08 7A 00 8A
27 10:03:06.980 ch1 R 0x140811ff x| 04 00 00 00 92 00 00 00
28 10:03:06.981 ch1 R 0x140811ff x| 05 94 00 00 00 96 00 00
29 10:03:06.982 ch1 R 0x140811ff x| 06 00 98 00 00 00 9A 00



Segment Number
Red Measure ID 0x12 Batery voltage
Green Value : 00 00
Blue: Total sinze Bytes


I can read the Battery value with the following XML:

<frame id="0x140811ff:0x0012,3,1" endianess="big">
      <value targetId="12"offset="4" length="2" conversion="V/100"></value> <!-- Batery Voltage -->
	  	 	        
    </frame>

After adding the oil pressure sensor, I can no longer read the Battery voltage value.


The data looks like this:

27 10:17:56.676 ch1 R 0x140811ff x| 00 00 38 00 04 0C 1C 00
28 10:17:56.677 ch1 R 0x140811ff x| 01 02 00 F0 00 0A 19 5A
29 10:17:56.678 ch1 R 0x140811ff x| 02 00 10 00 00 00 12 00
30 10:17:56.679 ch1 R 0x140811ff x| 03 00 00 22 00 00 00 86
31 10:17:56.680 ch1 R 0x140811ff x| 04 06 C5 00 8A 00 00 00
32 10:17:56.681 ch1 R 0x140811ff x| 05 92 00 00 00 94 00 00
33 10:17:56.682 ch1 R 0x140811ff x| 06 00 96 00 00 00 98 00
34 10:17:56.684 ch1 R 0x140811ff x| 07 00 00 9A 00 01 00 A2

Note the one byte of the battery value has passed to another segment.

MeasureID:00 0A Oil pressure and Value :19 5A


Tks

I managed to minimize the situation.
There are 7 possibilities for COMPOSITE_ID to stay, I mapped 5 and they worked.
When it is at offset = 6 and 7, I have not been able to map.

  • at offset 6 one byte of the value passes to the next segment.
    -in offset 7 the two bytes of the value are passed to the next segment
	
	
     <frame id="0x140811ff:0x12,1,1" endianess="big">
         <value targetId="12"offset="2" length="2" conversion="V/100"></value> <!-- Batery Voltage -->
	  	 	        
    </frame>
				
	
    <frame id="0x140811ff:0x12,2,1" endianess="big">
       <value targetId="12"offset="3" length="2" conversion="V/100"></value> <!-- Batery Voltage -->
	  	 	        
    </frame>
	
    <frame id="0x140811ff:0x12,3,1" endianess="big">
       <value targetId="12"offset="4" length="2" conversion="V/100"></value> <!-- Batery Voltage -->
	  	 	        
    </frame>	
	
	
    <frame id="0x140811ff:0x12,4,1" endianess="big">
       <value targetId="12"offset="5" length="2" conversion="V/100"></value> <!-- Batery Voltage -->
	  	 	        
    </frame>
	
   <frame id="0x140811ff:0x12,5,1" endianess="big">
        <value targetId="12"offset="6" length="2" conversion="V/100"></value> <!-- Batery Voltage -->
	  	 	        
    </frame>

I found a way to read the other two possibilities, but When reading two composite IDs that appear in the same Segment, only the first one declared in the XML works, if I reverse the order in the XML it will work the other. which is the case with Composit ID 0x12 and 0x14.

Short XML:

<?xml version="1.0" encoding="utf-8"?>
<!-- RealDash CAN XML description file, version 2 Requires RealDash version 1.5.8 or newer -->
<RealDashCAN version="2">
  <!-- baseId [optional] is added to each frame canId. -->
  <!-- frames baseId="3200" -->
  <frames>
  
  <frame id="0x140811ff:0x14,6,1" endianess="big">
      <value targetId="64"offset="7" length="1" conversion="((V<<8)+ID293)"></value> <!-- Speed -->
	  	 	        
    </frame>
  
    <frame id="0x140811ff:0x12,2,1" endianess="big">
      <value targetId="12"offset="3" length="2" conversion="V/100"></value> <!-- Batery Voltage -->
	  	 	        
    </frame>       	 	     
  
	
   
	<frame id="0x140811ff:0x3,0,1">	
     <value targetId="293" offset="1" length="1"  ></value> <!-- Second byte in first byte in segment 3 -->
	 
    </frame>
	   
	
	  
	   
	
</frames>
</RealDashCAN>

Most complete file I’m writing:
FT_CAN_2.0_Beta.xml (8.58 KB)

Hey! Do you have this complete file? I will try to use realdash with ft550.

Thanks