Page 2 sur 3
Re: Création d'un DFB dans somachine Basic
Posté : 23 avr. 2020, 05:22
par itasoft
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
Re: Création d'un DFB dans somachine Basic
Posté : 24 avr. 2020, 15:45
par Cedric39
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
Re: Création d'un DFB dans somachine Basic
Posté : 25 avr. 2020, 08:21
par Squale
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.
Re: Création d'un DFB dans somachine Basic
Posté : 25 avr. 2020, 16:50
par itasoft
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
Re: Création d'un DFB dans somachine Basic
Posté : 26 avr. 2020, 00:19
par Squale
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.
Re: Création d'un DFB dans somachine Basic
Posté : 26 avr. 2020, 01:12
par philou77
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 ?
Re: Création d'un DFB dans somachine Basic
Posté : 26 avr. 2020, 01:44
par itasoft
@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
Re: Création d'un DFB dans somachine Basic
Posté : 26 avr. 2020, 02:00
par philou77
Lol
Dans le même rung ça marche pas ?
Re: Création d'un DFB dans somachine Basic
Posté : 26 avr. 2020, 02:41
par itasoft
non un bloc ou une tempo doit être seul dans le RUNG, on peut rien mettre d'autre
Re: Création d'un DFB dans somachine Basic
Posté : 26 avr. 2020, 07:09
par Squale
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
