S7-300 Calcul mathématique un peu complexe
Posté : 20 juin 2016, 09:02
Bonjour à toutes et tous. Je vous expose mon problème :
Je souhaite réaliser un calcul assez complexe sur un ET200S CPU 8 ( équivalent S7-300 ).
Ce calcul fait appel à des fonctions Y x 10n.
Sous Unity, j'ai décomposé ce calcul comme suit, et ça fonctionne, sous TIA Portal, je sèche...
Calcul d'un volume de liquide en fonction de son pH :
"___________ 10 exp ( -14 + pH_cuve_1 ) X Volume_cuve
"Volume_T = -------------------------------------------------------
" __________ 10 exp ( -pH_cuve_2 )
Volume_T : Réel.
Volume_cuve_1 : Réel ( de 0.00 à 1000.00 ).
pH_cuve_1: Réel ( de 0.00 à 14.00 )
pH_cuve_2: Réel ( de 0.00 à 14.00 ).
------------------------
(* Calcul du dividende de l'opération *)
M_calcul_Real_3 := pH_cuve_2 _Reel - 14.0 ;
M_calcul_Real_4 := EXPT_REAL_REAL ( IN1 := 10.0 , IN2 := M_calcul_Real_3 ) ;
Dividende := M_calcul_Real_4 * INT_TO_REAL ( Volume_cuve ) ;
Dividende := EXPT_REAL_REAL ( IN1 := 10.0 , IN2 := ( -14.0 + pH_cuve_2 ) * INT_TO_REAL ( Volume_cuve )) ;
(* Calcul du diviseur de l'opération *)
Diviseur := EXPT_REAL_REAL ( IN1 := 10.0 , IN2 := INT_TO_REAL ( pH_cuve_2 )) ;
if Diviseur = 0.0 then diviseur := 0.01 ; end_if ;
Volume_T_calculé := Dividende / Diviseur ;
---------------
Je cherche en fait une fonction mathématique pour calculer une puissance de 10 avec un exposant sous forme décimale...
en SCL j'ai trouvé la fonction EXPD, mais j'ai l'impression qu'elle ne peut utiliser que des exposant entier et non pas décimaux....
Si vous avez des suggestions, je suis preneur.
Merci.
Je souhaite réaliser un calcul assez complexe sur un ET200S CPU 8 ( équivalent S7-300 ).
Ce calcul fait appel à des fonctions Y x 10n.
Sous Unity, j'ai décomposé ce calcul comme suit, et ça fonctionne, sous TIA Portal, je sèche...
Calcul d'un volume de liquide en fonction de son pH :
"___________ 10 exp ( -14 + pH_cuve_1 ) X Volume_cuve
"Volume_T = -------------------------------------------------------
" __________ 10 exp ( -pH_cuve_2 )
Volume_T : Réel.
Volume_cuve_1 : Réel ( de 0.00 à 1000.00 ).
pH_cuve_1: Réel ( de 0.00 à 14.00 )
pH_cuve_2: Réel ( de 0.00 à 14.00 ).
------------------------
(* Calcul du dividende de l'opération *)
M_calcul_Real_3 := pH_cuve_2 _Reel - 14.0 ;
M_calcul_Real_4 := EXPT_REAL_REAL ( IN1 := 10.0 , IN2 := M_calcul_Real_3 ) ;
Dividende := M_calcul_Real_4 * INT_TO_REAL ( Volume_cuve ) ;
Dividende := EXPT_REAL_REAL ( IN1 := 10.0 , IN2 := ( -14.0 + pH_cuve_2 ) * INT_TO_REAL ( Volume_cuve )) ;
(* Calcul du diviseur de l'opération *)
Diviseur := EXPT_REAL_REAL ( IN1 := 10.0 , IN2 := INT_TO_REAL ( pH_cuve_2 )) ;
if Diviseur = 0.0 then diviseur := 0.01 ; end_if ;
Volume_T_calculé := Dividende / Diviseur ;
---------------
Je cherche en fait une fonction mathématique pour calculer une puissance de 10 avec un exposant sous forme décimale...
en SCL j'ai trouvé la fonction EXPD, mais j'ai l'impression qu'elle ne peut utiliser que des exposant entier et non pas décimaux....
Si vous avez des suggestions, je suis preneur.
Merci.