questions diverses

Forum traitant des automates industriels de marque Siemens.
R26R
Aguerri de l'automation
Aguerri de l'automation
Messages : 90
Inscription : 19 juin 2016, 20:04

Re: questions diverses

Message par R26R »

Salut,

Je peux me tromper, mais sur la vue de l'OB1 a gauche et à droite c'est strictement la même chose. C'est juste que a gauche tu as la représentation actuelle de la façon d'appeler un bloc, et a droite ça doit être la vue du code compilé dans l'automate voire la notation S5.

Après avec la vue de droite (que tu peux taper dans ton programme sans problème), il doit y avoir moyen de rendre les paramètres dynamique (via pointeur). Et je suppose que c'est la même avec les FB, ça doit pouvoir permettre d'indexer le DB d'instance.

A prendre avec des pincettes, tant que personne ne confirme, mais si tu veux creuser toi même je pense que c'est une bonne piste de recherche.
Mick1903
Aguerri de l'automation
Aguerri de l'automation
Messages : 80
Inscription : 05 nov. 2018, 21:52

Re: questions diverses

Message par Mick1903 »

Salut R26R26

Merci pour ta réponse, je vais essayer de voir si cette hypothèse se confirme, ou avoir la confirmation d'une autré personne.Pour ma part je ne vois l'utilité d'insérer les même variable dans l'OB 1 ET QUE FC10
Avatar de l’utilisateur
djé
Dieu du process
Dieu du process
Messages : 776
Inscription : 20 oct. 2015, 09:55
Localisation : Bretagne, Pays de la Loire, Nantes

Re: questions diverses

Message par djé »

Salut,

La différence entre une instruction CALL et UC (ou CC) c'est que l'instruction CALL est un niveau au dessus des autres instruction car elle intègre automatiquement les paramètres formels de la fonction appelée lors de son utilisation, alors que l'instruction UC (ou CC) non.

Sur l'image de gauche on voit les paramètres formels (paramètres du blocs) qui sont affecté par les paramètres effectifs (paramètres actuel).
Tu n'as pas d'autres choix que d’affecter ces paramètres (pour un FC) sinon l’éditeur se met en erreur.

Au final (a confirmer) le code le plus bas niveau correspond à l'image du milieu qui utilise la fonction UC avec affectation des paramètres effectifs.

L'instruction UC permet l'appel de fonction sans paramètres. Au contraire de l'instrution CALL, tu peux grâce à cette instruction appeler un bloc FB sans avoir à spécifier un DB d'instance (si tu programmes un FB sans données STAT et sans paramètres!).
Le monde se divise en 10 catégories:les personnes qui comprennent le binaire,et les autres.

Dans tout ce que vous apprenez, seuls 10% vont vous servir,mais vous ne savez pas lesquels ...
philou77
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 2076
Inscription : 21 oct. 2015, 10:00
Localisation : Ile de France

Re: questions diverses

Message par philou77 »

+1 avec Djé

Pour utiliser la fonction UC (ou CC) il faut :

- (FC) que les fonctions appelées n'aient aucun paramètre de bloc,
- (FB) que les blocs fonctionnels appelés n'aient aucun bloc de données d'instance, mais aussi aucun paramètre de bloc ni aucune donnée locale statique.

Sinon, ça marche pas, et il faut utiliser CALL

Pour en revenir aux 'paramètres' :

- La fonction (FC) effectue toujours le même 'travail' avec des paramètres (qui changent) en fonction de l'appel.
Lors de l'appel on dit avec quels paramètres la fonction DOIT exécuter sont travail.

Par exemple si tu veux calculer la surface d'un rectangle :
Le travail est toujours le même : surface = petit côté x grand côté
- tu as donc :
2 paramètres IN : Petit Côté et grand Côté
1 paramètre OUT : Surface

Tu fera l'appel de ta fonction avec
Petit Côté = xxx
Grand Côté = yyy
et ta fonction te retournera le résultat SURFACE !

Il est donc normal de faire l'appel de la fonction en précisant ses paramètre dans l'OB1

C'est utile si tu doit répéter cette opération plein de fois dans le programme :
Si vous avez compris tout ce que je viens d'écrire, c'est que j'ai dû faire une erreur quelque part ! :D
Mick1903
Aguerri de l'automation
Aguerri de l'automation
Messages : 80
Inscription : 05 nov. 2018, 21:52

Re: questions diverses

Message par Mick1903 »

@Djé et philou77 . Merci encore, expliqué de cette façon ça rend la compréhension plus simple.grâce à vos réponses ça me permets de mieux appréhender mes différents sujets et de progresser. Merci encore :D

Pour revenir au données locales, par exemple dans un FC la donnée doit être écrite puis lu que dans ce même FC et nulle part ailleurs? Ensuite est ce que par exemple je peux avoir la donnée L 4.0 dans le FC10 et en avoir une autre dans le FC 15?Pour finir ces variables est ce que l'on peut les retrouver dans les mnémonique ou référence croisée mais je ne pense pas.
philou77
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 2076
Inscription : 21 oct. 2015, 10:00
Localisation : Ile de France

Re: questions diverses

Message par philou77 »

Salut !

T'as tout bon...
Si vous avez compris tout ce que je viens d'écrire, c'est que j'ai dû faire une erreur quelque part ! :D
Mick1903
Aguerri de l'automation
Aguerri de l'automation
Messages : 80
Inscription : 05 nov. 2018, 21:52

Re: questions diverses

Message par Mick1903 »

philou77 a écrit : 12 nov. 2018, 11:02
Pour en revenir aux 'paramètres' :

- La fonction (FC) effectue toujours le même 'travail' avec des paramètres (qui changent) en fonction de l'appel.
Lors de l'appel on dit avec quels paramètres la fonction DOIT exécuter sont travail.

Par exemple si tu veux calculer la surface d'un rectangle :
Le travail est toujours le même : surface = petit côté x grand côté
- tu as donc :
2 paramètres IN : Petit Côté et grand Côté
1 paramètre OUT : Surface

Tu fera l'appel de ta fonction avec
Petit Côté = xxx
Grand Côté = yyy
et ta fonction te retournera le résultat SURFACE !

Il est donc normal de faire l'appel de la fonction en précisant ses paramètre dans l'OB1

C'est utile si tu doit répéter cette opération plein de fois dans le programme :
Bonsoir à tous,

Je reviens sur les différents messages sur lesquels vous m'avez répondu, je continu d'assimiler mais j'ai encore quelques interrogations:

Par exemple je créé dans une fonction (ex FC3) un système qui me permet la régulation d'une cuve de produit.Cette fonction, je la reprends pour X cuves. Dans ce cas là, je peux utiliser cette fonction dans un autre FC. Je pense donc dans ce cas la, lorsque j’intègre mon FC3, je peux y insérer mes paramètres d'entrée et sorties aux différentes "branches" de mon FC3. C'est à ce moment là que je me demande à quoi sert de le déclarer dans la fonction CALL les paramètres de la fonction comme sur l'exemple ci dessus de philou77.

Merci

Cordialement, ;)
philou77
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 2076
Inscription : 21 oct. 2015, 10:00
Localisation : Ile de France

Re: questions diverses

Message par philou77 »

Salut !

Non tu as UN SEUL FC3 !

mais dans le programme, tu l'appelles autant de fois que nécessaire :
1 Call FC3 avec les paramètres de la cuve n°1
1 call FC 3 avec les paramètres de la cuve n°2
etc...
Si vous avez compris tout ce que je viens d'écrire, c'est que j'ai dû faire une erreur quelque part ! :D
hdseraf
Apprend le binaire
Apprend le binaire
Messages : 2
Inscription : 21 nov. 2018, 17:53

Re: questions diverses

Message par hdseraf »

Bonjour à tous,
Je viens vous demander de l'aide sur la compréhension du langage List.
Ma première question:
A l'ouverture d'un bloc FB avec un DB instance quelle est la valeur par défaut de AR1 et AR2?

Merci par avance
Mick1903
Aguerri de l'automation
Aguerri de l'automation
Messages : 80
Inscription : 05 nov. 2018, 21:52

Re: questions diverses

Message par Mick1903 »

Bonsoir à tous,

Eh oui, désolé je reviens sur les données locales, aujourd'hui ma question est la suivante: ci-dessous dans mon FB, on peut voir que ma donnée locale U L 0.3 est testée, mais dans mon bloc FB nulle part elle est écrite. Justement dans mes paramètres TEMP, est ce qu'il y aurait un lien avec L0.3.Si ce n'est pas le cas, comment pourrait-il écrire cette donnée dans mon bloc pour exploiter ensuite.

Merci par avance

Bien cordialement,


Capture DL.PNG
Répondre