Création d'un DFB dans somachine Basic
- itasoft
- Mi homme - Mi automate

- Messages : 7807
- Enregistré le : 20 oct. 2015, 10:15
- Localisation : Lyon
- Contact :
Re: Création d'un DFB dans somachine Basic
slts,
s'incrémentent correctement mais quand je recopie dans des MW j'obtiens des valeurs incohérentes.
d'après la capture d'écran, tu ne les copies pas mais tu les additionnes
les copier c'est comme dans l'exemple d'appel du bloc et copie de PARAM0 dans %MW0 de cedric39
s'incrémentent correctement mais quand je recopie dans des MW j'obtiens des valeurs incohérentes.
d'après la capture d'écran, tu ne les copies pas mais tu les additionnes
les copier c'est comme dans l'exemple d'appel du bloc et copie de PARAM0 dans %MW0 de cedric39
Automaticien privé (de tout)
itasoft@free.fr
itasoft@free.fr
Re: Création d'un DFB dans somachine Basic
Oui tu fait %MW20:= %MW20+PARAM0 a tout les cycles automates, donc ca peut pas marcher.
Mais je vois ta question. Est ce ce que les valeurs dans les dfb sont sauvegardé en cas de coupure. Je ne sais pas.
Pour palier, tu peut copier au premier cycle automate la valeur de %MW20 qui lui est sauvegardé (Operation PARAM0:=%MW20) Et seulement au premier cycle automate
Ou alors avant l'appel du DFB
PARAM0:=%MW20
Dans le dfb, il faudra conditionner PARAM0:=PARAM0+1
Après le dbf %MW20:=PARAM0
Mais je vois ta question. Est ce ce que les valeurs dans les dfb sont sauvegardé en cas de coupure. Je ne sais pas.
Pour palier, tu peut copier au premier cycle automate la valeur de %MW20 qui lui est sauvegardé (Operation PARAM0:=%MW20) Et seulement au premier cycle automate
Ou alors avant l'appel du DFB
PARAM0:=%MW20
Dans le dfb, il faudra conditionner PARAM0:=PARAM0+1
Après le dbf %MW20:=PARAM0
-
Squale
- Générateur de blocs fonctions

- Messages : 105
- Enregistré le : 05 sept. 2018, 06:17
- Localisation : TAHITI
Re: Création d'un DFB dans somachine Basic
Slts,
dans mon idée j'additionne la valeur du mot MW20 avec la valeur de l'incrémentation du compteur et je donne le résultat pour valeur à MW20.
Comme la valeur du compteur est remise à 0 à chaque cold start, le mot MW20 reprend sa valeur et l'incrémentation reprend, c'est pour ca que j'avais fait une addition.
Si je met %MW20 := DFB1_x.PARAM0, à chaque redémarrage de l'automate le mot va prendre la valeur 0.
Par contre l'idée de Cédric de faire UDFB1_x.PARAMO := %MW20 est une piste intéressante mais je ne sais pas comment faire pour qu'il ne s'exécute que sur le premier cycle de scrutation.
dans mon idée j'additionne la valeur du mot MW20 avec la valeur de l'incrémentation du compteur et je donne le résultat pour valeur à MW20.
Comme la valeur du compteur est remise à 0 à chaque cold start, le mot MW20 reprend sa valeur et l'incrémentation reprend, c'est pour ca que j'avais fait une addition.
Si je met %MW20 := DFB1_x.PARAM0, à chaque redémarrage de l'automate le mot va prendre la valeur 0.
Par contre l'idée de Cédric de faire UDFB1_x.PARAMO := %MW20 est une piste intéressante mais je ne sais pas comment faire pour qu'il ne s'exécute que sur le premier cycle de scrutation.
- itasoft
- Mi homme - Mi automate

- Messages : 7807
- Enregistré le : 20 oct. 2015, 10:15
- Localisation : Lyon
- Contact :
Re: Création d'un DFB dans somachine Basic
slts,
autre solution bestiale
---clic dessus pour zoom ------- --- -----------
(* Conversion en H/MN/S *)
HEURES :=%PARAM0 / 3600
RESTE :=%PARAM0 REM 3600
MINUTES :=RESTE / 60
SECONDES :=RESTE REM 60
autre solution bestiale
---clic dessus pour zoom ------- --- -----------
(* Conversion en H/MN/S *)
HEURES :=%PARAM0 / 3600
RESTE :=%PARAM0 REM 3600
MINUTES :=RESTE / 60
SECONDES :=RESTE REM 60
Modifié en dernier par itasoft le 26 avr. 2020, 09:01, modifié 1 fois.
Automaticien privé (de tout)
itasoft@free.fr
itasoft@free.fr
-
Squale
- Générateur de blocs fonctions

- Messages : 105
- Enregistré le : 05 sept. 2018, 06:17
- Localisation : TAHITI
Re: Création d'un DFB dans somachine Basic
Slts,
j'ai peut être une autre solution avec le bit système %S93 qui permet d'enregistrer les mots mémoire dans le mot système %SW148 puis le bit système %S94 qui restaure les données sauvegardées.
J'ai aussi compris pourquoi les mots sont réinitialisés à chaque fois que je modifie le programme, j'ai oublié de décocher "réinitialiser les mémoires" dans les paramètres de chargement.
j'ai peut être une autre solution avec le bit système %S93 qui permet d'enregistrer les mots mémoire dans le mot système %SW148 puis le bit système %S94 qui restaure les données sauvegardées.
J'ai aussi compris pourquoi les mots sont réinitialisés à chaque fois que je modifie le programme, j'ai oublié de décocher "réinitialiser les mémoires" dans les paramètres de chargement.
-
philou77
- Mi homme - Mi automate

- Messages : 2142
- Enregistré le : 21 oct. 2015, 10:00
- Localisation : Ile de France
Re: Création d'un DFB dans somachine Basic
Salut !
Suffit juste de faire
param = %MW20
Appel dfb
%MW20 = param
il me semble que les bits système c'est pour forcer le système a sauver ou restaurer ses variables rémanentes non ?
Suffit juste de faire
param = %MW20
Appel dfb
%MW20 = param
il me semble que les bits système c'est pour forcer le système a sauver ou restaurer ses variables rémanentes non ?
Modifié en dernier par philou77 le 26 avr. 2020, 01:59, modifié 1 fois.
Si vous avez compris tout ce que je viens d'écrire, c'est que j'ai dû faire une erreur quelque part ! 
- itasoft
- Mi homme - Mi automate

- Messages : 7807
- Enregistré le : 20 oct. 2015, 10:15
- Localisation : Lyon
- Contact :
Re: Création d'un DFB dans somachine Basic
@philou,
oui ça marche, mais la présentation est moins compacte et moins élégante, param=%MW20 dans le RUN précédent et %MW20:=param dans le RUNG suivant. Bon d'accord on est pas dans un défile de mode pour faire dans l'élégance, LOL
oui ça marche, mais la présentation est moins compacte et moins élégante, param=%MW20 dans le RUN précédent et %MW20:=param dans le RUNG suivant. Bon d'accord on est pas dans un défile de mode pour faire dans l'élégance, LOL
Automaticien privé (de tout)
itasoft@free.fr
itasoft@free.fr
-
philou77
- Mi homme - Mi automate

- Messages : 2142
- Enregistré le : 21 oct. 2015, 10:00
- Localisation : Ile de France
Re: Création d'un DFB dans somachine Basic
Lol
Dans le même rung ça marche pas ?
Dans le même rung ça marche pas ?
Si vous avez compris tout ce que je viens d'écrire, c'est que j'ai dû faire une erreur quelque part ! 
- itasoft
- Mi homme - Mi automate

- Messages : 7807
- Enregistré le : 20 oct. 2015, 10:15
- Localisation : Lyon
- Contact :
Re: Création d'un DFB dans somachine Basic
non un bloc ou une tempo doit être seul dans le RUNG, on peut rien mettre d'autre
Automaticien privé (de tout)
itasoft@free.fr
itasoft@free.fr
-
Squale
- Générateur de blocs fonctions

- Messages : 105
- Enregistré le : 05 sept. 2018, 06:17
- Localisation : TAHITI
Re: Création d'un DFB dans somachine Basic
Le truc c'est que les variables persistantes sont réinitialisées après activation du bit système %S0 et ce bit système passe à 1 lors du 1er cycle de scrutation après un cold start...J'ai intérêt à faire gaffe à l'état de la pile 