Hoe kunnen we helpen?

Print

Lezen en ophalen van gegevens van een TF-Luna LiDAR-afstandssensor via de RS232/485-poort van de ACE

 

Hier gaan we zien hoe je gegevens uit een HEXA frame haalt. Een voorbeeld met een LiDAR-sensor

Deze radar heeft een TTL seriële uitgang. Er moet een TTL naar RS232 converter worden toegevoegd om hem aan te sluiten op een ACE RS232.

Gegevens en analyse

Deze LiDAR verstuurt standaard elke 10 ms een dataframe:

  • Dist: Afstand in cm
  • Amp: Indicator signaalsterkte
  • Temp: Celsius temperatuur = Temp / 8 – 256℃

In dit voorbeeld zullen we zien hoe we de gegevens Dist Amp Temp positie 2 tot 7 in het gegevensframe kunnen extraheren.

Voorbeeld voor Dist:

De gegevens bestaan uit 2 bytes, positie 2 en 3.

Voor een afstand van 157 cm ontvangen we deze gegevens : 59599D003C07780913. We willen de vetgedrukte waarde eruit halen: 9D 00

  • 9D in HEXA (basis 16) = 157 in DEC (basis 10) : het is het minst significante bit (LSB)
  • 00 in HEXA (basis 16) = 0 in DEC (basis 10) : dit is het meest significante bit (MSB)

Als we het gewicht toepassen op de MSB: [ 157 ] [0 * 256 ] = 157, het getal dat we als resultaat willen!

Als de afstand 587 zou zijn, zou het zijn : [ 75 ] [2 * 256 ] = 587

De eerste startcode van het dataframe is 59 in HEXA = 89 in DECIMAL

Gegevensanalyse op de PC met de realterm software

vBuilder: Luister naar de seriële poort van ACE

  • luistert naar de seriële poort en wacht op de ontvangst van “Start Character” 89 (59 in HEXA)
  • telt het aantal ontvangen bytes
  • slaat het gegevensframe op in de ontvangstarray RX[ ], met een lengte die wordt bepaald door het aantal ontvangen bits Ontvangen bytes
  • Minimale onderbreking bepaalt de minimale stille tijd waarmee rekening moet worden gehouden om aan te nemen dat het hele frame is ontvangen (tijd tussen 2 frames)

Controleer het gegevensframe

Na ontvangst van het gegevensframe kunnen we controleren of het 1e en 2e teken 89 zijn

Als dit klopt, kunnen we verder met stap 2.

Bereken elke waarde, Dist, Amp en Temp

Temp : Température Celsius = Temp / 8 – 256℃

Probeer de subroutine

U kunt het programma hierdownloaden