ABCelectronique : portail d'information dans le domaine de l'électronique

Merci de ne pas poster des messages en relation avec le piratage.


    Forums de Abcelectronique > Software / Péri-informatique
  » Arduino, fonctions absentes
Identifiant Se souvenir de moi ?
Mot de passe
Répondre     Nouvelle discussion
Arduino, fonctions absentes

 

gemau
gemau ★★☆☆☆☆☆ 30/09/2016, 22h05 #1  
Bonjour

Je suis à la recherche d'un système programmable. J'ai approché arduino, mais eu la surprise de constater l'absence de fonctions telles que temporisation, comptage, détection "front montant, descendant". Pas question d'utiliser delay, qui interrompt le programme.

Professionnellement j'ai beaucoup programmé en step5, step7 de Siemens, ou Omron. J'avoue ma surprise et désenchantement. C'est fonctions sont indispensables.

Existe-t-il un système incluant ces fonctions?

D'avance merci

Gérard
Gilles
Gilles ★★★★★☆☆ 30/09/2016, 23h10 #2  
Bonjour

Perso, je n'aime pas beaucoup pas beaucoup le langage Arduino, mais il me semble que tu n'as pas beaucoup cherché pour tes problèmes de fonctions.
Par exemple, pour du temporel non bloquant, on trouve des infos ici: http://forum.arduino.cc/index.php?topic=106156.0 sinon tu cherches "Non Blocking Function"
Pour les détections sur des fronts ou des "on-change", on en parle ici: https://www.arduino.cc/en/Reference/AttachInterrupt
Pour le comptage je te laisse chercher.

Gilles
gemau
gemau ★★☆☆☆☆☆ 30/09/2016, 23h49 #3  
Bonjour Gilles

Je veux que chaque cycle scrute entièrement le programme (fonctions parallèles), sans utiliser le mode "interruption".La fonction comptage est destinée à remplacer les temporisations inexistantes.
J'envisage donc un générateur de temps externe (temps long, 10secondes, avec porte nand 4093 sur une entrée), et un bit de contrôle bc, permettant de ne prendre en compte le bit d'entrée que pendant un cycle, un bit de départ bdT1 et un bit de fin bfT1. Le comptage se faisant par incrémentation d'une variable dédiée (VT1 par ex). Plusieurs tempos peuvent se dérouler en même temps, avec la même base de temps. Cela donnerait en langage plus ou moins généraliste:

Début programme
Si pas ebt, rset bc (ebt, entrée base de temps. bc, bit contrôle ebt)
Si pas bdT1, VT1=0

interne programme
Si bitx=1, bdT1=1
Si bdT1=1, et ((ebt et pas bc) et pas bfT1), VT1=VT1+1 (incrémentation) VT1, mot valeur de T1
Si VT1 >= consigne , bfT1=1 (fin tempo)
Si bitx=1, et bfT1=1, poursuivre

fin programme
Si ebt, set bc

C'est le principe, ça reste à organiser au mieux.

Je constate que beaucoup se trouvent confrontés au même problème. En tous cas, quand on a connu le langage "contacts" ou organigramme, c'est la douche froide.

A plus

Gérard

Dernière modification par gemau 01/10/2016 à 00h35.
gemau
gemau ★★☆☆☆☆☆ 01/10/2016, 01h05 #4  
Pour plus de clarté:

Une tempo pourrait comporter:
-un mot VCT1 (valeur courante de T1)
-un mot CT1 (valeur de consigne de T1
-un bit bdT1 (bit de départ T1)
-un bit bfT1 (bit de fin T1)

L'appel dans le programme serait:
Si bitx=1, bdT1=1, CT1=XXXX
Si bitx=1 et bfT1=1, poursuivre

La gestion de la tempo et de la base de temps seraient en tête ou en fin du programme:

Si pas ebt, rset cbt (ebt, entrée base de temps. cbt, contrôle base de temps (front montant ebt)
Si pas bdT1, bft1=0, VCT1=0
Si bdT1 et pas bfT1 et (ebt et pas cbt), incr. VCT1
Si VCT1 >= CT1, bfT1=1
Autres tempos éventuellement en parallèle
Si ebt=1, set cbt

C'est un peu plus structuré

Dernière modification par gemau 01/10/2016 à 01h47.
DAUDET78
DAUDET78 ★★★★★★★ 01/10/2016, 01h11 #5  
Un µC ne se programme pas avec la mentalité d'un programme pour automate programmable . Tu oublies tout ce que tu as appris !
PS : Un automate programmable est fait avec , à la base, un µC. Mais il y aune couche logiciel qui permet à un électromécanicien de le programmer avec une approche "relais" qui est le seul concept qui lui est accessible
__________________
L'age n'est pas un handicap .... Encore faut-il arriver jusque là !
gemau
gemau ★★☆☆☆☆☆ 01/10/2016, 01h31 #6  
Bonjour DAUDET78

Pas toujours, effectivement la programmation "contacts" est courante, mais j'ai aussi beaucoup programmé en liste (Booléen), en particulier step5 ou 7 de Siemens et en Qbasic, que j'aimerais bien retrouver sur windows 10, mais c'est incertain.

Les exemples que je donne sont dans un langage plus ou moins généraliste, ne connaissant pas l'arduino, et je veux vérifier la faisabilité d'un programme (relativement) complexe avant de l'aborder en profondeur. En particulier l'instruction delay (comme "pause en Qbasic), qui stoppe la scrutation, et empêche le déroulement d'autres fonctions est inutilisable.

En informatique, on fait souvent une chose à la fois, mais en ce qui concerne la commande de systèmes, tout se déroule en parallèle, réseau ferroviaire par exemple, ou système d'arrosage, etc. On ne peut interrompre les scrutations (chien de garde dans les automates, qui met en stop).

On peut toujours contourner le problème, c'est ce que j'entreprends. Il y a un gouffre entre le prix d'une unité centrale d'un automate, et l'arduino, on ne peut en attendre autant.

Salutations

Gérard

Dernière modification par gemau 01/10/2016 à 01h56.
Thyratron
Thyratron ★★★★★☆☆ 01/10/2016, 07h28 #7  
Posté par gemau

Bonjour

Je suis à la recherche d'un système programmable. J'ai approché arduino, mais eu la surprise de constater l'absence de fonctions telles que temporisation, comptage, détection "front montant, descendant". Pas question d'utiliser delay, qui interrompt le programme.

Professionnellement j'ai beaucoup programmé en step5, step7 de Siemens, ou Omron. J'avoue ma surprise et désenchantement. C'est fonctions sont indispensables.

Existe-t-il un système incluant ces fonctions?

D'avance merci

Gérard


Bonjour,

La facilité d'utilisation de l'arduino n'est qu'un leurre qui renvoie tôt ou tard vers la vraie vie. Il n'est que le clone en nom du circuit AVR.
En se dirigeant vers la documentation Atmel, il deviendra évident que le circuit est capable de faire tout ce qui en est attendu. Problème, il faut se farcir la documentation et la digérer avant.
Pour développer en µcontroller, il faut raisonner avec l'architecture du µcontroller.
elektrax
elektrax ★★★★★☆☆ 01/10/2016, 07h45 #8  
le delay d'arduino est bloquant
et en asm il n'y pas de boucles de temporisation ?
c'est vrai que si digitalwrite(ledpin, high); prends 400 coups d'horloges a 16mhz avec le fuse ckdiv8 enabled, çà fait long
le langage arduino n'a pas été créé en vue d'applications professionnelles haut de game (ni basse), comparé à picaxe, e-bloks, pinguino, et les autres
easypic et mikrobasic, mikroc, mikroetc.. est sans doute meilleur, son coût aussi
pierrelec
pierrelec ★★★★★☆☆ 01/10/2016, 08h26 #9  
Posté par gemau

Je suis à la recherche d'un système programmable. J'ai approché arduino, mais eu la surprise de constater l'absence de fonctions telles que temporisation, comptage, détection "front montant, descendant". Pas question d'utiliser delay, qui interrompt le programme.



Bonjour, ton affirmation est fausse.
Ne pas confondre automate programmable et microcontrôleur.
Bien que je ne suis pas fanatique d'Arduino, les exemples ci-dessous démontre ce que tu cherches.

Temporisation:
https://zestedesavoir.com/tutoriels...fonction-millis

Comptage:
http://www.robot-maker.com/ouvrages...avec-le-timer1/

front montant, descendant:
https://www.arduino.cc/en/Reference/AttachInterrupt

Maintenant le choix du hard dépend un peu du cahier des charges.
Si tu as l'habitude de programmer des APIs, tu peux utiliser le Zelio de Schneider qui peut être avantageux.
gemau
gemau ★★☆☆☆☆☆ 01/10/2016, 09h21 #10  
Bonjour

Les fonctions tempo, compteur, etc sont préprogrammées dans un automate. S'il est possible de les créer dans le système arduino, pas de problème. Je n'aurai pas besoin des dizaines voire centaines de tempos/compteurs que peut comporter un programme industriel.

Par contre, une caractéristique est éliminatoire:
L'adressage d'une variable doit pouvoir se faire sur le mot (numérique), et sur un des bits du même mot. Si on considère le mot 10:
Load x, transfert 10
Si 10.15=1, (test du bit 15 du mot 10 (signe)), ou
Si 10.15=1, rset 10.15
Si 10.15=0, set 10.15 (inversion du signe)

Rien dans la doc ne m'a permis jusqu'à présent de lever le doute. La syntaxe d'adressage n'apparaît nulle part. Il n'est pas facile de déterminer si l'arduino est adapté ou pas. C'est la raison de mes messages sur le site, voir si d'autres ont déjà parcouru le même cheminement.

A plus

Gérard
jarek
jarek ★★★★☆☆☆ 01/10/2016, 10h26 #11  
Voir ce qui a déja été dit.
Utilise le µC de la carte arduino avec le IDE Atmel.
__________________
Sauf erreur ou omission . . .
gemau
gemau ★★☆☆☆☆☆ 01/10/2016, 11h01 #12  
La temporisation n'est qu'un compteur de temps, c'est pourquoi la fonction compteur (incrémentation) m'intéresse. D'autre part, je veux faire défiler plusieurs tempos simultanément, ce qui exclut "millis". Je veux pouvoir détecter les fronts dans le programme, sans "interruption". Je pense que la structure que j'ai présentée plus haut devrait fonctionner, donc cet aspect me semble résolu.

C'est l'adressage des mots et bits mémoire qui m'interpelle le plus. S'il n'est pas possible d'adresser un mot mémoire à la fois sous forme numérique, et digital sur un bit du même mot, alors je ne poursuivrai pas plus loin avec arduino.

Schneider et Siemens (logo) ont effectivement des micro-automates que je connais bien d'ailleurs, mais onéreux.

A plus

Gérard

Dernière modification par gemau 01/10/2016 à 11h15.
pierrelec
pierrelec ★★★★★☆☆ 01/10/2016, 11h57 #13  
1/ Prétendre ne pas vouloir utiliser les interruptions d'un microcontrôleur c'est me décourager de continuer la discussion.
2/ Tu peux créer X tempos avec des mots qui sont incrémentés par Millis ou par un timer interne.
3/ Prétendre que le Zelio est onéreux est faux.
Il suffit de comparer une solution Arduino (Carte Arduino + Alimentation + interfaces E/S + mise en boîte) avec un Zelio à une centaine d'euro sur Ebay.
Pour comparer il faut le cahier des charges du projet
.
Je te conseille de télécharger l'excellent cours sur les microcontrôleurs de
Bigonoff pour comprendre les possibilités des microcontrôleurs: https://www.abcelectronique.com/bigonoff/

Un API est une boîte noire prête à être utilisée alors qu'un microcontrôleur est fait pour broder autour.

Dernière modification par pierrelec 01/10/2016 à 16h29.
DAUDET78
DAUDET78 ★★★★★★★ 01/10/2016, 14h09 #14  
Posté par gemau

Pas toujours, effectivement la programmation "contacts" est courante, mais j'ai aussi beaucoup programmé en liste (Booléen), en particulier step5 ou 7 de Siemens

Tout ça, c'est du langage relais

et en Qbasic, que j'aimerais bien retrouver sur windows 10, mais c'est incertain.

Qbasic, c'est mourru . Tu trouveras , en Basic, du VB.NET (et du VB6 obsolete)

Les exemples que je donne sont dans un langage plus ou moins généraliste, ne connaissant pas l'arduino, et je veux vérifier la faisabilité d'un programme (relativement) complexe avant de l'aborder en profondeur. En particulier l'instruction delay (comme "pause en Qbasic), qui stoppe la scrutation, et empêche le déroulement d'autres fonctions est inutilisable.

La fonction Delay, elle ne devrait pas exister !

En informatique, on fait souvent une chose à la fois, mais en ce qui concerne la commande de systèmes, tout se déroule en parallèle, réseau ferroviaire par exemple, ou système d'arrosage, etc. On ne peut interrompre les scrutations (chien de garde dans les automates, qui met en stop).

on fait toujours une chose à la fois (si on a qu'un seul CPU, le cas général). Mais tellement rapidement que, pour un système, il semble qu'on fait plusieurs choses à la fois !

On peut toujours contourner le problème, c'est ce que j'entreprends.

C'est ce que fait un automate avec un seul CPU

Il y a un gouffre entre le prix d'une unité centrale d'un automate, et l'arduino, on ne peut en attendre autant.

C'est le prix à payer pour avoir un truc "clef en main" pour un automaticien habitué aux relais
__________________
L'age n'est pas un handicap .... Encore faut-il arriver jusque là !
gemau
gemau ★★☆☆☆☆☆ 01/10/2016, 16h57 #15  
Je faisais justement mentalement la comparaison entre l'arduino et ses à-côtés, et le zèlio ou logo, en me disant effectivement que les 100 et quelques euros étaient compétitifs, avec la certitude du résultat.

Le problème des tempos est pratiquement résolu. Mais à chaque cycle, le micro doit exécuter l'intégralité du programme, ce qui exclut les delay, boucles, etc.

La difficulté avec l'arduino, c'est de réunir les informations complètes pour s'assurer qu'il colle bien avec l'application. Je vais aller voir le site Bignonoff pour tenter de répondre à mes interrogations.

La programmation "contacts" est très utile lorsqu'on a plusieurs dizaines d'opérandes sur une seule sortie. cela donne une vision immédiate que ne donnerait pas l'équation Booléenne équivalente. Mais j'ai beaucoup programmé aussi sur mots, et j'entendais souvent dire que j'avais une approche plus informatique que classique des automates, avec des adressages indirects, et l'utilisation de sous programmes, avec une programmation des automatismes très particulière et très dynamique. Donnant des machines "intelligentes", au dire des opérateurs. Et toujours selon eux, c'était le jour et la nuit par rapport à la situation précédente. C'était effectivement ma spécialité, effacement et reprogrammation de chaînes et machines. En faisant disparaître le commutateur auto/manu classique pour un mode automatisme et opérateur, où au lieu d'être classiquement en opposition, ils étaient complémentaires.

J'ai chargé le cours qui semble en effet détaillé. Dommage qu'il ne concerne pas l'arduino.

Merci pour vos informations

Gérard

Dernière modification par gemau 01/10/2016 à 17h43.
jarek
jarek ★★★★☆☆☆ 01/10/2016, 20h14 #16  
Posté par gemau

J'ai chargé le cours qui semble en effet détaillé. Dommage qu'il ne concerne pas l'arduino.


Le cours en question concerne des µC, arduino n'est pas un µC.
__________________
Sauf erreur ou omission . . .
pierrelec
pierrelec ★★★★★☆☆ 02/10/2016, 08h02 #17  
Posté par jarek

Le cours en question concerne des µC, arduino n'est pas un µC.


Comme le Coeur de l'Arduino est un microcontrôleur Atmega328, c'est quoi ?
OK, les cours de Bigonoff sont plutôt orientés PIC, mais les bases restent les mêmes.
jarek
jarek ★★★★☆☆☆ 02/10/2016, 10h16 #18  
Posté par pierrelec

Comme le Coeur de l'Arduino est un microcontrôleur Atmega328, c'est quoi ?


Un truc pour s'amuser sans avoir à comprendre comment ça marche.

Un µC + un IDE dédié + un langage simpliste propriétaire + un compilateur propriétaire + un bootloader + un service commercial efficace
On pourrait faire un arduino avec n'importe quel µC.
__________________
Sauf erreur ou omission . . .
Floppi
Floppi ★★★☆☆☆☆ 02/10/2016, 12h24 #19  
@jarek :

J'interviens non pas parce que j'ai des parts dans ce que tu dis être "propriétaire" mais parce qu'il faut quand même que si quelqu'un atterri ici, il puisse avoir un avis différent du tien qui semble très négatif.
L'arduino permet à n'importe qui de mettre le doigt dans l'univers des microcontrôleurs grâce à sa simplicité. Et si on a envie d'aller plus loin les infos, libres de droit, sont faciles à trouver pour descendre un cran plus bas en achetant un simple atmega328 que l'on flashe soi-même et puis on en arrive à utiliser un programmateur, et puis on achète d'autre micro-controlleur ( attiny etc... ).

Et donc, pour ceux qui savent, ça agace fortement que "n'importe qui" puisse faire n'importe quoi sans passer autant de temps qu'eux à l'apprendre.
Mais il faut être réaliste. Très vite on aura besoin des connaissances de ceux qui savent. Parce que dès qu'on va un peu plus loin, le monde arduino est trop simpliste pour répondre aux besoins de nos connaissances qui évoluent.
Mais quand on en est arrivé là, on a déjà beaucoup appris, et finalement on continu à pas de poucet à se rapprocher de ceux qui savent pour devenir celui qui est aigri que les autres apprennent avec encore moins de travail...
jarek
jarek ★★★★☆☆☆ 02/10/2016, 12h45 #20  
Posté par Floppi

. . . il faut quand même que si quelqu'un atterri ici, il puisse avoir un avis différent du tien qui semble très négatif.


Je répond simplement à la question "alors c'est quoi un arduino ?" et ma réponse, qui n'est pas un avis mais une tentative de définition, n'a rien de négatif.
__________________
Sauf erreur ou omission . . .
gemau
gemau ★★☆☆☆☆☆ 02/10/2016, 13h40 #21  
Bonjour

Le problème du µC, c'est qu'il exige toute une infrastructure, y compris le circuit, etc, et une programmation "machine, ou assembleur". L'arduino comprend tout ceci, plus un langage "évolué". L'ennui, comme je le disais, c'est qu'il manque quelques fonctions.

J'ai voulu voir un détail aujourd'hui sur le site référence arduino Français, mais site inaccessible.

A plus

Gérard
Thyratron
Thyratron ★★★★★☆☆ 02/10/2016, 17h12 #22  
Posté par gemau

Bonjour

Le problème du µC, c'est qu'il exige toute une infrastructure, y compris le circuit, etc, et une programmation "machine, ou assembleur". L'arduino comprend tout ceci, plus un langage "évolué". L'ennui, comme je le disais, c'est qu'il manque quelques fonctions.

J'ai voulu voir un détail aujourd'hui sur le site référence arduino Français, mais site inaccessible.

A plus

Gérard


Bonjour,
Reset général.
L'arduino utilise un µC.
Son utilisation propose un logiciel de développement théoriquement facile, dans la pratique un peu lourd (taille du code machine importante) donc lent.

Le µC peut être programmé pour réaliser toute sorte d'application, en utilisant les solutions gratuites du fournisseur Atmel en langage évolué ou assembleur (spécialistes).
Nécessite quelque temps pour arriver à maitriser la documentation.
A partir de là, il appartient au développeur de créer les fonctions qui l'intéresse en respectant les performances attendues.
gemau
gemau ★★☆☆☆☆☆ 02/10/2016, 17h31 #23  
Bonjour

Je voulais parler du µC seul. bien entendu, tout système informatique dispose d'un µC ou microprocesseur, mais aussi le circuit d'horloge, d'adressage, les ports, etc.

J'ai fini par trouver les instructions que je cherchais:

word var =
bitread(var,n)
bitwrite(var,n,x)

Il me manque encore la fonction = (égalité en Booléen) du style:
c=a*b, c étant toujours le résultat de (a et b). C'est pourtant la moindre des choses, ça n'apparaît nulle part clairement.

Gérard

Dernière modification par gemau 02/10/2016 à 18h02.
ARMmaniac
ARMmaniac ☆☆☆☆☆☆ 02/10/2016, 18h27 #24  
"Bonjour, j'ai une voiture, je voudrais passer au scooter. Mais qu'est-ce que c'est pénible, y'a pas de volant, pas de ceinture, pas de coffre, pas assez de sièges pour les enfants etc, etc."

C'est exactement la teneur de cette "discussion" rageuse sur le ton "le MCU c'est de la m.e.r.d.e, c'est pas programmable comme mon automate". Bah non, si ça l'était, ce serait un automate.

Si tu n'es pas prêt à remettre en cause ta conception de la programmation et accepter le fait qu'effectivement on travaille sur des taches successives ou par interruption sur micro, reste sur automate.

Pour reprendre le point sur le test de bits, bah non ça n'existe pas tel quel parce qu'un micro travaille sur des octets, voire sur des mots de 32 bits pour les plus courants. Ca n'en fait pas des incapables pour autant, mais il faut extraire les bits des octets ou des mots et les traiter ensuite.

Concernant l'Arduino lui-même, ce n'est effectivement pas une solution industrielle mais un outil conçu à la base pour des gens qui n'ont aucune connaissance en électronique et voulaient gérer quelques boutons, quelques leds. Les fonctions se sont étoffées avec le temps mais ça n'en reste pas moins, dans son état de base, qu'un outil de base.

Maintenant, il est toujours possible de s'attaquer à l'AVR dans l'Arduino et là, les performances vont exploser. Mieux encore, travailler sur un RTOS type FreeRTOS qui te permettra de reproduire le parallélisme des automates. Attention toutefois, ça n'en fera toujours pas un automate, et le développement sera conséquent, et pas à la portée du premier venu.
__________________
Celui qui ne fait pas d'efforts ne mérite pas d'aide
gemau
gemau ★★☆☆☆☆☆ 02/10/2016, 21h09 #25  
Le fait de travailler sur des mots ne me rebute pas, au contraire, je l'ai couramment fait sur les automates, au plan professionnel, y compris toutes les fonctions sur mot, telles que décalages, andw, orw, etc. La difficulté n'est pas d'ailleurs l'arduino, mais la recherche des instructions, et syntaxes.

C'est aussi ce qui se produit quand on passe d'un automate à celui d'une autre marque. Il y a forcément un temps de latence et de recherche.

Je ne cherche pas à reproduire, mais vérifier la faisabilité de ce que je veux obtenir, quelle-qu'en soit la forme. Je ne porte aucun jugement négatif sur arduino. Les instructions sont intéressantes. Il est probable que la dernière incertitude est possible, mais n'apparaît pas clairement. Ce qui n'est pas étonnant, car une documentation complète est toujours volumineuse. J'ai aperçu dans les exemples une fonction: running=!running, et était décrite comme une inversion de la variable "running", Booléenne. Mais dans la documentation, = ne s'adresse qu'à des variables numériques. Je pense donc qu'elle est incomplète, et toujours en évolution.

Au point où j'en suis, je pense passer aux test réels. L'avantage de l'arduino étant le nombre d'entrées-sorties assez important.

Quant aux automates actuels, tout en conservant leurs caractéristiques, ils disposent aussi de nombreuses instructions mathématiques, les positionnements se faisant par codeurs incrémentaux, et les entraînements par variateurs de fréquence et liaison série.

Salutations

Gérard

Dernière modification par gemau 02/10/2016 à 21h30.
DAUDET78
DAUDET78 ★★★★★★★ 02/10/2016, 21h41 #26  
Posté par gemau

L'avantage de l'arduino étant le nombre d'entrées-sorties assez important.

Sauf que c'est des entrées qui acceptent du 0/5V et qui ne sont aucunement protégées
Sauf que c'est des sorties qui donnent du 0/5V sans puissance et qui ne sont aucunement protégées

Quant aux automates actuels, tout en conservant leurs caractéristiques, ils disposent aussi de nombreuses instructions mathématiques, les positionnements se faisant par codeurs incrémentaux, et les entraînements par variateurs de fréquence et liaison série.

Forcement ! Il y a un microcalculateur dedans !

J'ai l'impression que tu ne vois pas la différence entre un automate et un µC ... sinon que c'est moins cher !

Un automate, c'est un µC avec un programme qui permet une utilisation simple(?) par un électromécanicien.
Un automate, c'est un µC avec un environnement HardWare qui permet un branchement simple de capteurs industriels et d'actionneurs industriels (moteur en 230V AC, électrovanne en 24DC , panneau de visualisation etc etc) . Le tout avec des isolations galvaniques et une qualification CEM.

Bon, tu veux te faire ton automate tout seul . C'est louable ! Mais quand tu l'auras refait, le gain au niveau coût sera faible . Par contre , la fiabilité, j'ai de gros doute .
__________________
L'age n'est pas un handicap .... Encore faut-il arriver jusque là !
gemau
gemau ★★☆☆☆☆☆ 02/10/2016, 22h15 #27  
Tout à fait d'accord sur la structure de l'automate et le programme d'exploitation, et programmation. Il en est de même des ordinateurs. J'avais d'ailleurs dans les années 80 programmé le ZX81 en langage machine, je mesure toute la différence.

L'arduino est d'ailleurs proche de l'automate, avec ses entrées-sorties.Toutes proportions gardées bien entendu. Il mériterait peut-être plus de souplesse quant à leur traitement. Faire des expérience en robotique par exemple, avec des déplacements simultanés. Là encore je n'ai certainement pas fait le tour de ses possibilités, et je crois que la doc est toujours en évolution.

Il y a bien sûr la solution logo ou zélio, mais ici, les entrées sont en 220V ou 24V, et ne comportent généralement que deux entrées ana, sauf extension, mais le prix grimpe vite.

Il y a donc plusieurs pistes.

Salutations

Gérard
DAUDET78
DAUDET78 ★★★★★★★ 02/10/2016, 22h39 #28  
Posté par gemau

L'arduino est d'ailleurs proche de l'automate, avec ses entrées-sorties.

Tu fais une fixation sur le ArduiMachin ! Mais ce n'est qu'un µC sur un circuit imprimé ...
Son avantage ?
- il y a un langage évolué (assez spécifique)
- Il y a une communauté qui a développé des bibliothèques de programmes qui facilitent (compliquent ?) le pilotage des périphériques
- Il y a des tas de cartes d'interface ( des Shields en Français)

Toutes proportions gardées bien entendu. Il mériterait peut-être plus de souplesse quant à leur traitement.

C'est le langage qui complique un peu

Faire des expérience en robotique par exemple, avec des déplacements simultanés.

ca a certainement déjà était fait !

Je te rappelle, si tu n'as pas déjà capté, que le simultané n'existe pas avec un seul µC !
Par contre, il travaille tellement vite, qu'à l'échelle humaine, il peut faire plusieurs choses à la fois. Mais ce n'est qu'une apparence.
__________________
L'age n'est pas un handicap .... Encore faut-il arriver jusque là !
gemau
gemau ★★☆☆☆☆☆ 02/10/2016, 22h51 #29  
Bien entendu, il traite les instructions une après l'autre de manière séquentielle, ce qui détermine son cycle plus ou moins long suivant la taille du programme, mais dans ce cycle, il peut gérer un nombre important d'événements, et les mouvements sont eux simultanés, ce qui exige une scrutation intégrale du programme à chaque cycle et surtout pas de "delay". Avec une restriction en entrée pour les impulsions trop brèves. Selon la tradition une impulsion devait durer au moins deux fois le temps de scrutation(généralement quelques ms). Sauf pour les entrées rapides destinées aux codeurs.

Je ne suis plus dans le domaine industriel (retraite). C'est la continuité naturelle avec le système d'arrosage. Pour l'entreprise, je ne serais pas sur le site, les automates industriels répondent en effet à des normes strictes en ce qui concerne la sécurité en particulier.

Gérard

Dernière modification par gemau 02/10/2016 à 23h20.
DAUDET78
DAUDET78 ★★★★★★★ 02/10/2016, 23h24 #30  
Posté par gemau

ce qui exige une scrutation intégrale du programme à chaque cycle

Non ....
Les entrées sont testées par un timer qui regarde toutes les entrées toutes les X millisecondes (disons 5ms par exemple).
On compare l'état de l'entrée 4 (par exemple) avec son état mémorisé à la scrutation précédente :
  • Lu "0" mémorisé "0" -> pas de changement
  • Lu "1" mémorisé "1" -> pas de changement
  • Lu "0" mémorisé "1" -> Transition "1" ->"0"
  • Lu "1" mémorisé "0" -> Transition "0" ->"1"
Si il y a une transition, on positionne un flag qui va exécuter un programme spécifique dans le "main"
Comme ce programme "timer" est en interruption et qu'il est très court, il ne prend que très peu de temps CPU

Avec une restriction en entrée pour les impulsions trop brèves.

brèves ? C'est combien ? Dans mon exemple, c'est moins de 10ms. Donc probablement un parasite.

et surtout pas de "delay".

J'ai déjà dit que "delay"est à proscrire
__________________
L'age n'est pas un handicap .... Encore faut-il arriver jusque là !
pierrelec
pierrelec ★★★★★☆☆ 03/10/2016, 07h13 #31  
Posté par gemau

ce qui exige une scrutation intégrale du programme à chaque cycle et surtout pas de "delay". Avec une restriction en entrée pour les impulsions trop brèves. Selon la tradition une impulsion devait durer au moins deux fois le temps de scrutation(généralement quelques ms). Sauf pour les entrées rapides destinées aux codeurs.


Bonjour,
Un document qui peut t'aider à comprendre:
http://forum.snootlab.com/viewtopic.php?f=24&t=1381
Thyratron
Thyratron ★★★★★☆☆ 03/10/2016, 07h28 #32  
Posté par gemau


Je ne suis plus dans le domaine industriel (retraite). etc....

Gérard


Bonjour,
Pour l'ambiance, aujourd'hui ce sera bonne fête!!!

Pour le détail, un automate possède la même sécurité que tout système à µC c'est à dire aucune.
C'est la redondance avec l'introduction d'un dispositif de surveillance qui peut conduire à cet état, en l'approchant seulement.
gemau
gemau ★★☆☆☆☆☆ 03/10/2016, 08h56 #33  
Bonjour

Merci pour la St Gérard.

Pour les automates, il y a la sécurité temps de cycle, appelée "chien de garde". Si ce temps est dépassé, l'automate se met en "stop" et toutes ses sorties passent à 0.

Aujourd'hui, d'autres processus existent pour rendre les automates compatibles avec les circuits de sécurité, du moins sur certaines cartes d'entrées-sorties avec redondance. Mais tout ceci dans le domaine industriel, pour les besoin domestiques ce n'est pas utile.

Pour la suite, je vais réorganiser les neurones, c'est un bon exercice.

A plus

Gérard
gemau
gemau ★★☆☆☆☆☆ 03/10/2016, 12h56 #34  
Bonjour

J'évolue: Toute application peut s'écrire de différente manière, il est préférable coller au mieux avec le matériel.

Les différentes fonctions (intervalles, actions) peuvent s'écrire dans des sous-programmes, le programme principal les appelant dans un ordre donné, ce qui me rappelle d'ailleurs la structure step5, step7 de Siemens.

Par ailleurs, le mot "compteur" millis est transférable dans une variable. Celle-ci divisée par 500 et résultat transféré dans une seconde variable permet d'avoir le bit de poids faible de celle-ci cadencé à la seconde qui peut alors être utilisé comme base de temps. Avec les instructions incrément, if, then, else et goto, voire for pour les tempos dans les sous-programmes. Ceci colle mieux avec l'arduino.

A plus

Gérard
eddyness
eddyness ☆☆☆☆☆☆ 29/11/2016, 22h00 #35  
Hello,

Tout ce que vous voulez faire est faisable avec un arduino soit vous utilisez des librairies soit vous créez vos propres libraires... Dans le second car il sera nécessaire d'avoir un bon bagage en C et C++ , de connaître comment fonctionne le µC ( surtout les registres).

Voici un lien qui vous explique parfaitement comment on programme et utilise les timers sur cet avr : http://www.instructables.com/id/Ard...mer-Interrupts/

cordialement
gemau
gemau ★★☆☆☆☆☆ 01/12/2016, 18h53 #36  
Bonjour

Il y a au moins deux manières d'aborder un système comme arduino:

- Evaluation, ou envie d'aborder la programmation. Dans ce cas, on ne se pose pas de question, on achète, et on progresse pas à pas.

- On dispose d'une application, et l'on veut vérifier la faisabilité avec le système avant l'achat. C'est dans ce cas que se pose le problème. Les présentations de arduino ne permettent pas de trancher rapidement. Notamment en ce qui concerne les traitements Booléens, tempos, compteurs, différents modes d'adressage (n-mot/n-bit), etc. indispensables dans toutes gestions de systèmes automatisés.

Comme vous dites, bien entendu, il est indispensable de connaître le système que l'on programme. Mais s'il faut l'étudier à fond, pour en faire le choix, c'est excessif.

Pourtant, avec ses entrées/sorties, il semble intéressant à prime abord. Dans un automate, les tempos/compteurs sont des fonctions préprogrammées. Arduino est brut, et elles doivent donc être crées. C'est cette possibilité qui doit être vérifiée.

J'ai constaté sur différents forums, que cette interrogation est courante, notamment venant de gens ayant pratiqué les automates. J'en appelle donc aux développeurs d'arduino pour clarification à ce sujet.

Salutations.

Dernière modification par gemau 01/12/2016 à 19h22.
eddyness
eddyness ☆☆☆☆☆☆ 01/12/2016, 22h45 #37  
Salut,

ben pour faire simple , c'est un automate vide sans rien à vous de tout créer. Vous devenez celui qui à créé l'automate , voila un peu le concept. C'est pour ça que les personnes venant du milieu des automates se retrouvent dépourvues.

Le langage arduino est une sur couche à un autre langage , il facilite les choses avec des libraires , comme l'attribution des pins , certaines fonctions dont les timers ( voir librairie ) , l'utilisation du port serie , ect . Car sans le langage arduino il aurait fallu tout déclarer et créé comme on le ferait en utilisant un µc brut.

ce lien explique très bien vos interrogations : http://damien-monni.fr/blog/article...ation-atmel-avr

cordialement
gemau
gemau ★★☆☆☆☆☆ 04/12/2016, 03h07 #38  
Bonjour

Ce qui pose problème en réalité, c'est le traitement Booléen, ou de bits. Les variables Booléennes déclarées occupent apparemment 8 bits, ou 1 octet (un comble).

Il semble possible d'adresser un bit en lecture ou écriture, mais avec lourdeur. J'ai même vu dans un exemple lire l'état d'un bit dans un octet par masque. Une fois ou deux dans un programme, ça passe, mais des dizaines de fois!

Sur le plan numérique, les choses sont claires et complètes. Mais côté Booléen , indispensable dans tout système de contrôle à entrées/sorties, ce sujet est insuffisamment abordé. Ecrire par exemple la simple et courante fonction a=(a+b)*c, (auto-maintien typique, avec a, bobine; b, poussoir marche; c, poussoir arrêt).

L'adressage direct (mot ou octet, bit) si possible, n'apparaît pas non plus. Bien entendu, si l'on prend le langage step 7 de Siemens (automates), il comprenait 7 volumes de la taille des anciens annuaires téléphoniques, avant l'an 2000. Un tel développement est un travail imposant. Même si pour arduino il serait plus court, il faut tout de même le réaliser, et souvent par des bénévoles. C'est pourquoi je ne critique pas, je remarque seulement.

Ceci dit, dans le cas d'un choix pour une application déterminée, avant achat, il est très incertain de déterminer si arduino est adapté.

Salutations

Gérard

Dernière modification par gemau 04/12/2016 à 03h12.
maî
maî ★★★★★☆☆ 04/12/2016, 05h30 #39  
Bonjour

gemau, une réponse simple à toutes vos questions et si vous passiez à ASM. vous avez avec le jeux instructions tout ce que vous voulez pour résoudre vos problèmes .(et plus vous montez en gamme et plus les jeux sont importants) .Pour arduino c'est comme si vous traitiez un texte de philosophie avec comme outil du texto, tout de suite et sans trop d'effort. J'ai choisi, bien sur au prix d'un effort certain et d'un travail sûrement.

enfin si j'ai bien compris

Je suis à la recherche d'un système programmable. J'ai approché arduino, mais eu la surprise de constater l'absence de fonctions telles que temporisation, comptage, détection "front montant, descendant". Pas question d'utiliser delay, qui interrompt le programme.


A+

Pour .. mais en C, les structures de bits cela existent exact, mais ......

Si vous êtes intéresse par MICROCHIP (ET) la programmation, vous pouvez nous retrouver en ici http://www.fantaspic.fr/index.php
__________________
le souffle du vent passe ...........

Dernière modification par maî 04/12/2016 à 06h54.
eddyness
eddyness ☆☆☆☆☆☆ 05/12/2016, 13h25 #40  
Hello,

Ce qui pose problème en réalité, c'est le traitement Booléen, ou de bits. Les variables Booléennes déclarées occupent apparemment 8 bits, ou 1 octet (un comble).


Voir langage C et fonctionnement µC

Ne pas perdre à l'esprit que arduino est issue du monde open source contrairement au steps7...
Si vous voulez des fonctions qui se limitent à leur plus simple expression , vous devez les créer , arduino mache le boulot mais ne fait pas tout.
Si vous voulez faire principalement du code à porte logique faut se diriger vers du FPGA,CLD,PCLD et compagnie.

A+
Cordialement

Dernière modification par eddyness 05/12/2016 à 13h33.
Répondre