ciao a tutti ragazzi. Non ne vengo più a capo e chiedo il vostro aiuto!
Sto facendo un codice di controllo per una simulazione in simulink, di un motore asincrono. Ho la necessità di creare un'array di 16 elementi, e per popolarlo devo fare delle prove con dei valori di corrente..
Vi scrivo il codice che mi viene meglio:
[CODE]if ((counter_commissioning>=300)&&(counter_commissioning<=1100)) {
itestLUT[i]=0;
for (i=0;i<3;i++){
itestLUT[i]=itestLUT[i-1]+0.3125;
vtestLUT[i]=AVG(&itestLUT,50);
counter_commissioning+=50;
LUTerr[i]=(3/4)*(vtestLUT[i]-(Rstot*itestLUT[i]));
}
}[/CODE]
Queste sono le righe del controllo, in pratica devo creare una LUT (lookup-table) di valori (16 nel mio caso) di [I]errore di tensione[/I] (LUTerr). Per fare questa devo avere due array di tensione e corrente (rispettivamente chiamati [I]vtestLUT [/I]e [I]itestLUT[/I]). La tensione viene da una funzione che fa la media degli ultimi campioni acquisiti, mentre la corrente è a scatti di 0.3125A.
[CODE]double AVG(int *itestpar, double durata){
tmp1=0;
isdq_ref.q=0;
isdq_ref.d=*itestpar;
Current_loop();
_invrot(vsdq_ref.d, vsdq_ref.q, SinCos_ref.sin, SinCos_ref.cos, vsab_ref.alpha, vsab_ref.beta);
if ((tmp1==durata-10)&&(tmp1<durata)){
vtest+=vsab_ref.alpha;
vtest=vtest/10;
}
tmp1++;
return vtest;
}
[/CODE]
Questa è la funzione che accumula campioni di corrente, li manda ad un regolatore PI di corrente ([B]Current_loop()[/B] e fa la media dei valori di tensione generati degli ultimi 10 valori.
Non riesco ad assegnare correttamente il valore della corrente a questa funzione AVG. Dove sbaglio? Presumo sia un problema di sintassi e di puntatori, ma non ne vengo a capo.
Ho capito che l'array in realtà quando lo si definisce è come un puntatore al suo primo elemento, infatti nella funzione lo passo come puntatore..
Vi ringrazio per qualsiasi dritta!
Segnalibri