Bonjour je suis actuellement sur un projet de BTS Electrotechnique et je suis chargé de la partie automatisme. Je suis actuellement sur la programmation d'un API pour une station d'épuration où le but est de faire de la régulation d'eau. Mon but est de réaliser deux parties dans un même programme: 1) visualiser la hauteur de la cuve sachant qu'il y a un débit de 5M^3/h et qu'à partir de 2m de hauteur d'eau une pompe A se met en route progressivement et atteint les 6m^3/h quand elle est à moins de 4m de hauteur d'eau. 2)visualiser la hauteur de la cuve sachant qu'il y a un débit de 7M^3/h et qu'à partir de 2m de hauteur d'eau une pompe A se met en route progressivement et atteint les 6m^3/h quand elle est à moins de 4m de hauteur d'eau et arriver à cette hauteur une pompe B se déclenche et pompe 2m^3/h d'eau. je réalise mon programme en list sur twido suite 2.0: 0 LD %S13 1 JMPCN %L6 2 [ TEMPS_DE_FONC := 0.0 ] (* INITIALISATION DU TEMPS DE FONCTIONNEMENT *) 3 %L6: 4 LD MARCHE (* %M1=1 POUR MARCHE *) 5 JMPCN %L24 (* SI %M1=0 SAUT À L'ÉTIQUETTE 24 *) 6 LD MARCHE 7 IN TEMPS 8 [ TEMPS_MW := TEMPS.V ] 9 [ TEMPS_F := INT_TO_REAL( TEMPS_MW ) ]
10 [ VOLUME := C_5M3 * TEMPS_F ] 11 [ H_REMP_BAS := VOLUME / SURFACE ] 12 [ V_POMPE_1 := V_POMPE_A * TEMPS_F ] 13 [ H_POMPE_A := V_POMPE_1 / SURFACE ] (* VOLUME POMPAGE POMPE A *) 14 [ H_REMP_BAS_2 := H_REMP_BAS - H_POMPE_A ] (* HAUTEUR FINAL POUR 5M3 *) 15 16 [ VOLUME := C_7M3 * TEMPS_F ] (* CALCUL VOLUME POUR 7M3 *) 17 [ H_REMP_BAS := VOLUME / SURFACE ] (* CALCUL DE LA HAUTEUR D'EAU *) 18 [ V_POMPE_1 := V_POMPE_A * TEMPS_F ] 19 [ H_POMPE_A := V_POMPE_1 / SURFACE ] 20 [ H_REMP_BAS_2 := H_REMP_BAS - H_POMPE_A ] (* NOUVELLE HAUTEUR AVEC LA DIFFERENCE DE LA HAUTEUR DE POMPAGE*) 21 [ V_POMPE_2 := V_POMPE_B * TEMPS_F ] (* CALCUL DE POMPAGE POMPE B*) 22 [ H_POMPE_B := V_POMPE_2 / SURFACE ] 23 [ H_REMP_BAS_3 := H_REMP_BAS_2 - H_POMPE_B ] (* HAUTEUR FINAL POUR LE CYCLE 7M3 *) 24 %L24:
Voici mon programme sous list, j'ai attribué ces mots donc mots mémoires (temps_mw = %MW0), bit mémoire (marche=%M1), des constantes flottantes (C_5M3=%KF0, C_7M3=%KF2, surface =%KF4) le reste sont des mots flottants de %MF21 à %MF47.
ma question est donc: comment faire soit le choix de débiter la partie avec 5m3/h soit la partie avec 7m3/h (les deux parties séparer par la ligne 15) tout en laissant la parti commune (ligne 0 à 9)?
j'ai essayer de mettre des saut conditionnelle quand la logique précédente est égale à 1 (JMPC) ou 0 (JMPCN) rien ni fait la magélis de mon camarade via modbus arrive à communiquer mais je ne trouve pas comment séparer ces deux parties.
Marsh Posté le 28-05-2015 à 23:32:12
Bonjour
je suis actuellement sur un projet de BTS Electrotechnique et je suis chargé de la partie automatisme.
Je suis actuellement sur la programmation d'un API pour une station d'épuration où le but est de faire de la régulation d'eau.
Mon but est de réaliser deux parties dans un même programme:
1) visualiser la hauteur de la cuve sachant qu'il y a un débit de 5M^3/h et qu'à partir de 2m de hauteur d'eau une pompe A se met en route progressivement et atteint les 6m^3/h quand elle est à moins de 4m de hauteur d'eau.
2)visualiser la hauteur de la cuve sachant qu'il y a un débit de 7M^3/h et qu'à partir de 2m de hauteur d'eau une pompe A se met en route progressivement et atteint les 6m^3/h quand elle est à moins de 4m de hauteur d'eau et arriver à cette hauteur une pompe B se déclenche et pompe 2m^3/h d'eau.
je réalise mon programme en list sur twido suite 2.0:
0 LD %S13
1 JMPCN %L6
2 [ TEMPS_DE_FONC := 0.0 ] (* INITIALISATION DU TEMPS DE FONCTIONNEMENT *)
3 %L6:
4 LD MARCHE (* %M1=1 POUR MARCHE *)
5 JMPCN %L24 (* SI %M1=0 SAUT À L'ÉTIQUETTE 24 *)
6 LD MARCHE
7 IN TEMPS
8 [ TEMPS_MW := TEMPS.V ]
9 [ TEMPS_F := INT_TO_REAL( TEMPS_MW ) ]
10 [ VOLUME := C_5M3 * TEMPS_F ]
11 [ H_REMP_BAS := VOLUME / SURFACE ]
12 [ V_POMPE_1 := V_POMPE_A * TEMPS_F ]
13 [ H_POMPE_A := V_POMPE_1 / SURFACE ] (* VOLUME POMPAGE POMPE A *)
14 [ H_REMP_BAS_2 := H_REMP_BAS - H_POMPE_A ] (* HAUTEUR FINAL POUR 5M3 *)
15
16 [ VOLUME := C_7M3 * TEMPS_F ] (* CALCUL VOLUME POUR 7M3 *)
17 [ H_REMP_BAS := VOLUME / SURFACE ] (* CALCUL DE LA HAUTEUR D'EAU *)
18 [ V_POMPE_1 := V_POMPE_A * TEMPS_F ]
19 [ H_POMPE_A := V_POMPE_1 / SURFACE ]
20 [ H_REMP_BAS_2 := H_REMP_BAS - H_POMPE_A ] (* NOUVELLE HAUTEUR AVEC LA DIFFERENCE DE LA HAUTEUR DE POMPAGE*)
21 [ V_POMPE_2 := V_POMPE_B * TEMPS_F ] (* CALCUL DE POMPAGE POMPE B*)
22 [ H_POMPE_B := V_POMPE_2 / SURFACE ]
23 [ H_REMP_BAS_3 := H_REMP_BAS_2 - H_POMPE_B ] (* HAUTEUR FINAL POUR LE CYCLE 7M3 *)
24 %L24:
Voici mon programme sous list, j'ai attribué ces mots donc mots mémoires (temps_mw = %MW0), bit mémoire (marche=%M1), des constantes flottantes (C_5M3=%KF0, C_7M3=%KF2, surface =%KF4) le reste sont des mots flottants de %MF21 à %MF47.
ma question est donc: comment faire soit le choix de débiter la partie avec 5m3/h soit la partie avec 7m3/h (les deux parties séparer par la ligne 15) tout en laissant la parti commune (ligne 0 à 9)?
j'ai essayer de mettre des saut conditionnelle quand la logique précédente est égale à 1 (JMPC) ou 0 (JMPCN) rien ni fait la magélis de mon camarade via modbus arrive à communiquer mais je ne trouve pas comment séparer ces deux parties.
Merci pour votre aide.