Forum Replies Created
-
AuthorPosts
-
johnkay
Participant** Thanks for the good advice**
I don’t know the total data point count/rate at this moment.
I think I will create a C library for each of the serial inputs, so I can do the required endian and engineering units conversion locally.
For example, I receive the following struct at 10Hz on COM1:
typedef struct Status_Packet_T0_Plus
{
// Packet Headeruint8_t Start_Flag; // Always 0xAD
uint8_t Packet_Type;
uint8_t Message_Sequence_Number; // Start at 0 and rolls over at 255.// SSI Timer Identification
uint16_t SSI_Timer_Serial_Number;
// SSI Timer State
uint8_t Timer_State;
uint8_t Timer_Count[3];
uint8_t Fire_Switch_Excitation_Flags;
uint8_t Flight_Computer_Bad_Flags;
uint8_t Trigger_Before_T1_Flags;// Hardware State
uint8_t Hardware_State;
uint8_t Flight_Computer_Triggers;// Battery State
uint8_t Battery_State_Information[3]; // Little Endian[3];
// Power Supply and Temperature
uint8_t Volts_28_Supply; // 1 count equals 150 mV
uint8_t Volts_4_Digital_Supply; // 1 count equals 150 mV// Pressure Sensor Information
uint8_t Absolute_pressure_reading_from_MEMS[3];
uint16_t Temperature_reading_from_MEMS;
uint8_t Computed_altitude_based_on_pressure[3];// SSI Channel Information
T0_Plus_SSI_Timer_Channel_Information Channel_1;
T0_Plus_SSI_Timer_Channel_Information Channel_2;
T0_Plus_SSI_Timer_Channel_Information Channel_3;
T0_Plus_SSI_Timer_Channel_Information Channel_4;uint16_t Packet_CRC; // Big endian, poly = 0x1021, all bytes
} Status_Packet_T0_Plus;I’ll do the CRC check, voltage calculations, and endian swaps in the C driver BEFORE committing to the database.
The other input channels are mostly just dumping floating point data.
I’m going to write some code but I’ll be back.
johnkay
ParticipantIt’s not a protocol, per se, it’s just i open ten (10) serial ports, each of which receives a different serial data packet ending with a CRC32; if the CRC is ok, i use data data, otherwise, i discard it.
All of the data is described in tables like this and I am just starting to
build the c structs…
So, let’s say I receive and validate a battery voltage, amperage, temperature using a standalone C program running on the same computer as RapidSCADA is installed.
From here, I see multiple approaches
1/ use POST? PUT? commands to put the data in the database
2/ create a simulated MODBUS rtu for each COM channel and follow the video
3/ write my updates into a separate database and sync with the RapidSCADA databaseI’m hoping to use RS for collecting and displaying rocket launch telemetry data so ALL my data comes in on RS-422 serial ports, so ingest speed would be my main goal.
Thank you.
-
AuthorPosts