[SoMachine] Variable de fonctions dans biblio
Posté : 27 août 2021, 11:06
bonjour,
je souhaite me créer une bibliothèque contenant certaines fonctions que j'utilise de façon récurrentes mais j'ai un comportement avec les variables que je ne comprends pas
la la partie déclaration
//----------------------------------------------------------------------
FUNCTION RegLin : CoeffRegLineaire
VAR_INPUT
TabData : ARRAY [0..10]OF point ;
END_VAR
VAR
n :INT; // nombre de point
fSumX :REAL ; // somme des X
fSumY :REAL; //somme des Y
fSumXY :REAL; //sommme des XY
fSumX2 :REAL; //somme des X²
i: INT;
END_VAR
//--------------------------------------------------------------------
la partie code
//---------------------------------------------------------------------
n:=SIZEOF(TabData)/SIZEOF (Point) ;
fSumX := 0.0 ;
fSumY := 0.0 ;
fSumXY := 0.0 ;
fSumX2 := 0.0 ;
FOR i:=0 TO n -1 DO
fSumX := fSumX + TabData.x ;
fSumy := fSumy + TabData.y;
fSumXY := fSumXY + ( TabData.x * tabData.y);
fsumX2:= fsumX2 + (TabData.x * TabData.x ) ;
END_FOR
regLin.a := ((fSumx*fSumY )- n*fSumXY)/((fSumX * fSumX) - (n * fsumX2));
Quand j'exécute ce code , mes variables fSum* qui sont supposées contenir la sommation de valeurs ne contient que la derniere valeur .
quand je prends en mode "pas à pas" , même à la l'intérieur de la boucle FOR , c'est le comportement que j'observe .
Ces variables sont definies commes de variables locales mais pour obtenir un résultat , il faut que je les déclare en VAR_STAT ce qui est un non sens !!
Quelqu'un a une idée ?
je souhaite me créer une bibliothèque contenant certaines fonctions que j'utilise de façon récurrentes mais j'ai un comportement avec les variables que je ne comprends pas
la la partie déclaration
//----------------------------------------------------------------------
FUNCTION RegLin : CoeffRegLineaire
VAR_INPUT
TabData : ARRAY [0..10]OF point ;
END_VAR
VAR
n :INT; // nombre de point
fSumX :REAL ; // somme des X
fSumY :REAL; //somme des Y
fSumXY :REAL; //sommme des XY
fSumX2 :REAL; //somme des X²
i: INT;
END_VAR
//--------------------------------------------------------------------
la partie code
//---------------------------------------------------------------------
n:=SIZEOF(TabData)/SIZEOF (Point) ;
fSumX := 0.0 ;
fSumY := 0.0 ;
fSumXY := 0.0 ;
fSumX2 := 0.0 ;
FOR i:=0 TO n -1 DO
fSumX := fSumX + TabData.x ;
fSumy := fSumy + TabData.y;
fSumXY := fSumXY + ( TabData.x * tabData.y);
fsumX2:= fsumX2 + (TabData.x * TabData.x ) ;
END_FOR
regLin.a := ((fSumx*fSumY )- n*fSumXY)/((fSumX * fSumX) - (n * fsumX2));
Quand j'exécute ce code , mes variables fSum* qui sont supposées contenir la sommation de valeurs ne contient que la derniere valeur .
quand je prends en mode "pas à pas" , même à la l'intérieur de la boucle FOR , c'est le comportement que j'observe .
Ces variables sont definies commes de variables locales mais pour obtenir un résultat , il faut que je les déclare en VAR_STAT ce qui est un non sens !!
Quelqu'un a une idée ?