Float in Byte umwandeln

Du kannst keine Zeiger auf lokale nicht-statische Variablen zurückgeben. Der Speicher hört am Ende der Funktion auf zu existieren! Außerdem wird returnVal nie beschrieben.

Erstelle das Array außerhalb der Funktion und übergebe den Zeiger als Paramter:

byte* S7Float_to_Byte(const float inFloat, byte* buffer)
{ 
    byte* bytes = (byte*)&inFloat;

    buffer[0] = bytes[3];
    buffer[1] = bytes[2];
    buffer[2] = bytes[1];
    buffer[3] = bytes[0];
 
    return buffer;    
}

Und dann so aufrufen:

byte bigEndian[4];
S7Float_to_Byte(value, bigEndian);

Alternativ kannst du auch das Array innerhalb der Funktion als static deklarieren. Dann sind die 4 Bytes halt immer belegt. Wie eine globale Variable mit lokalem Scope.