Hi Leute,
ich hab ein Programm das mir jeweils zwei Werte aus einem CAN Signal herausliest, daraus die Differenz bildet und die Steigung berechnet.
Nur wenn ich die Messung starte und das Signal bei, sagen wir 70 liegt, vergleicht er auch dieses Signal mit dem Wert 0 und errechnet dementsprechend die Steigung.
Das soll er nicht tun
Mir wurde zwar etwas von inkrement oder so gesagt aber ich komm auf keinen grünen Zweig.
Jemand ne Ahnung wie ich die Abfrage am Anfang übergehe (ohne Delay).
GRuß
metman
ich hab ein Programm das mir jeweils zwei Werte aus einem CAN Signal herausliest, daraus die Differenz bildet und die Steigung berechnet.
Nur wenn ich die Messung starte und das Signal bei, sagen wir 70 liegt, vergleicht er auch dieses Signal mit dem Wert 0 und errechnet dementsprechend die Steigung.
Das soll er nicht tun
Code:
/*@@var:*/
variables {
byte fp_posi[2];
int delta_posi;
int m;
double delta_t = 0.05; //abtastfrequenz 20 Hz
message 0x0c000003x TSC1_TE = {
DLC = 8,
DIR = TX,
byte(0) = 0x00,
byte(1) = 0xFF,
byte(2) = 0xFF,
byte(3) = 0xFF,
byte(4) = 0xFF,
byte(5) = 0xFF,
byte(6) = 0xFF,
byte(7) = 0xFF
};
message 0xCF00300x EEC2 = {
DLC = 8,
DIR = TX,
byte(0) = 0xFF,
byte(1) = 0xFF,
byte(2) = 0xFF,
byte(3) = 0xFF,
byte(4) = 0xFF,
byte(5) = 0xFF,
byte(6) = 0xFF,
byte(7) = 0xFF
};
}
/*@@end*/
/*@@msg:test::EEC2 (0xCF00300X):*/
on message EEC2
{
fp_posi[1] = fp_posi[0];
EEC2.byte(0) = this.byte(0);
EEC2.byte(1) = this.byte(1);
EEC2.byte(2) = this.byte(2);
EEC2.byte(3) = this.byte(3);
EEC2.byte(4) = this.byte(4);
EEC2.byte(5) = this.byte(5);
EEC2.byte(6) = this.byte(6);
EEC2.byte(7) = this.byte(7);
fp_posi[0] = this.byte(1) * 0.4; // Das is der erste Wert
delta_posi = fp_posi[0]-fp_posi[1]; // Differenz
m = ((delta_posi ) / (delta_t) ); // Steigung
// delta_fp_posi
// Steigung m = ------------------- // 0.05
if (m > 200)
{
write("Steigung ist gleich %d",m);
}
else if (m < -200)
{
write("Steigung ist gleich %d",m);
}
}
/*@@end*/
/*@@caplFunc:speedcontrol():*///function
void speedcontrol (void)
{
}
/*@@end*/
/*@@msg:test::TSC1_TE (0xC000003X):*/
on message TSC1_TE
{
}
/*@@end*/
/*@@startStart:Start:*/
on start
{
}
/*@@end*/
/*@@end*/
Mir wurde zwar etwas von inkrement oder so gesagt aber ich komm auf keinen grünen Zweig.
Jemand ne Ahnung wie ich die Abfrage am Anfang übergehe (ohne Delay).
GRuß
metman