Page 1 sur 2

Timer SoMachine Basic

Posté : 30 nov. 2018, 10:29
par MyK0n
Bonjour,

Petite présentation : en étude d'ingénieur, je réalise un projet pour l'école, et dans ce projet nous utilisons un automate Modicon M221CE16R. Pour programmer dessus nous nous servons de SoMachine Basic.

Ayant peu d'expérience sur ce logiciel et n'ayant pas trouvé de réponse dans la documentation, je rencontre un problème avec un Timer TON. Celui-ci est censé se déclencher toutes les 10ms, suite à quoi on incrémente un compteur et on enregistre les mesures sur les entrées analogiques. Hors, vu la vitesse d'incrémentation du compteur, il est évident que le timer ne fonctionne pas correctement.

Sur le lien suivant, le screenshot de mon LADDER si celà peut aider :
https://puu.sh/Ca4ky/86ec94debb.png

Cordialement,

Julien

Re: Timer SoMachine Basic

Posté : 30 nov. 2018, 11:18
par Béryl
10ms, tu dois pas être très loin du temps de cycle, non ?

Re: Timer SoMachine Basic

Posté : 30 nov. 2018, 11:19
par philou77
Salut,

10ms, passer par une tâche périodique, ce sera certainement bien plus précis !

de plus, une tempo doit voir son équation d'entrée passer de 0 à 1 pour se lancer, hors, dans ton exemple, %M1
- va pas passer à 0 à la fin de tempo
- Puis à 1 le segment d'après.
donc quand il revient à l'équation de la tempo, il n'a pas changé d'état, si je ne me trompe pas.

En réalisant un clignoteur avec une tempo, tu perd forcément un temps de cycle automate (nécessaire pour évaluer le changement d'état de la condition de la tempo). Pour supprimer le cycle automate perdu, il faut évaluer la tempo 2 fois à 2 endroits du programme. En siemens, ça marche, jamais testé sur Télé. De plus, si ton temps de cycle s'allonge, tu vas rater des période de 10ms..

Plus simple de tout faire dans une tâche périodique..(attention, elle se déclenchera n'importe où dans ton programme principal)
Si pas %M0, Raz compteur, fin de la tâche
si %M0 alors comptage...

bon courage

Re: Timer SoMachine Basic

Posté : 30 nov. 2018, 11:25
par JC87
Bonjour,

Tous les set/reset se font sur un tour de cycle, résultat la tempo n'est jamais relancée et le compteur doit s'incrémenter a chaque tour de cycle et donc arriver à 3000 en un rien de temps. Il faut que le bit qui lance la tempo passe à zéro au moins un tour de cycle pour qu'elle se relance. Cette notion de temps de cycle automate est fondamentale en automatismes et se retrouve sur tous les automates quelques soient la marque ou le logiciel.

JC

Re: Timer SoMachine Basic

Posté : 30 nov. 2018, 13:42
par Relax1485
Bonjour,
Pour utiliser une incrémentation sur 10ms il faut utiliser le bit système %S4 qui est cadencé sur l'horloge interne au contrôleur M221

Re: Timer SoMachine Basic

Posté : 30 nov. 2018, 18:03
par MiGaNuTs
Pourquoi tu n'utilise pas un TM0.Q inversé comme entrée pour ta tempo TM0.
Ça te donnerais ce que tu voudrait, c'est a dire que la sortie TM0.Q de ta tempo ne sera a un pendant seulement 1 cycle de scrutation toutes les 10ms.
Et puis ça rends ta petite cuisine avec tes bits internes dans tous les sens inutile.

Sinon un bon vieux front montant sur le bit %S4 ça marche aussi (vu qu'il est 5ms a 1 puis 5 ms a 0) et c'est encore plus simple.

Re: Timer SoMachine Basic

Posté : 30 nov. 2018, 18:15
par itasoft
slts,
Plus simple de tout faire dans une tâche périodique..(attention, elle se déclenchera n'importe où dans ton programme principal)
Si pas %M0, Raz compteur, fin de la tâche
si %M0 alors comptage...


faire ce que dit philou77

Re: Timer SoMachine Basic

Posté : 03 déc. 2018, 14:24
par Mantysse
itasoft a écrit : 30 nov. 2018, 18:15 slts,
Plus simple de tout faire dans une tâche périodique..(attention, elle se déclenchera n'importe où dans ton programme principal)
Si pas %M0, Raz compteur, fin de la tâche
si %M0 alors comptage...


faire ce que dit philou77
Saint Schneider (AKA Chorus) a parlé :lol:

Re: Timer SoMachine Basic

Posté : 03 déc. 2018, 15:11
par philou77
Salut,

Par curiosité, je viens de tester en lançant deux fois la même tempo, sous schneider ça fonctionne pas bien.
La tempo se décale d'environ 10 S sur 1 minute (sur une base de temps de 10ms x 100) !

Donc reste le bit système %S4 évalué sur front montant et descendant, ou bien la tâche périodique !

une autre astuce pour faire rapidement des puissances de 2 d'une tempo base de temps 1 S :
Cela date du temps ou les tempos n'étaient pas nombreuses et aucun bit de cadence n'étaient dans les cpu !!
Ecrit en siemens de cette manière, on possède de M0.0 jusqu'à M0.xxx des bits clignotants.
Chaque bit suivant est le double du précédent..soit x1,x2,x4,x8,x16 etc....

UN M10.0
LKT 10.1
SE T1
U T1
= M10.0

U M10.0
BEB (fin de bloc conditionnelle)

UN M0.0
= M0.0
BEB (fin de bloc conditionnelle)

UN M0.1
= M0.1
BEB (fin de bloc conditionnelle)

UN M0.2
= M0.2
BEB (fin de bloc conditionnelle)

Re: Timer SoMachine Basic

Posté : 04 déc. 2018, 03:59
par itasoft
Slts,
Petite piqûre de rappel pour les débutants :
Une tempo c’est pas une horloge atomique, plus la base de temps et grande et plus la valeur de présélection est petite plus c’est faux.
En conclusion il ne faut pas utiliser une tempo là ou il faut une horloge.