SIMENS STEP 7 CPU315-2DP programme en LIST
Posté : 07 juin 2018, 09:52
Bonjour,
J'ai essayé de faire le plus clair possible, donc je suis désolé si ça ne l'est pas.
Je sus actuellement stagiaire et mon travail est de modifier un automate afin d'améliorer son fonctionnement. Mais je fais fasse à beaucoup trop de questionnements car je débute en Siemens. Je vous explique donc ma situation.
J’ai 2 programmes : celui fournit par l’entreprise qui a programmé l’automate, très mal commenté et en allemand que j’appellerai programme 1, et l’autre programme est celui récupéré sur l’automate sans aucun commentaires, ce qui est normal (selon mes recherches) que j’appellerai programme 2. Il se peut que les termes que j’utiliserais soient donc allemands, n’hésitez pas à me corriger.
------ La partie que je pense devoir modifier est, sur le programme 1 en SCL ce qui me semblait passablement compréhensible puisqu’il y avait quelques ressemblances avec les langages que je connais déjà. Mais dans le programme 2 le programme est maintenant en LIST. Les langages ne peuvent être changés, en tous les cas même lorsqu’il m’est possible de la changer, rien ne bouge. (Le LADDER me manque ) Avez-vous une idée pour remettre le langage de base ?
J’essaie donc de comprendre ce que fait le programme 2 afin de comprendre ensuite le 1. Je voulais donc lancer le programme en ligne sur mon PC. Mais je suis toujours perdue. Je vais donc vous poser toutes mes questions. En espérant que vous puissiez y répondre.
Voici une image pour que ce soit plus clair. A droite, en rouge voilà ce que j’avais dans le programme 1 et à gauche ce que j’ai récupéré de l’automate.
Image Forum 0
------ L 0
T #TEMP6
Dans ce cas, ce qu’on fait c’est bien mettre 0 dans ACCU1 puis ACCU1 soit 0 dans#TEMP6 ?
De plus, à propos de #TEMP6 qui est qui est indiqué dans l’interface dans TEMP, nous somme bien d’accord que ce sont des temporisations (les TEMPs)? Car mon automate a des entrées qui sont des sondes de températures, j’ai donc un doute car je sais également que le but de ce bloc est de détecter des erreurs de températures. Il y a notamment des comparaisons de TEMP. Donc je voudrais être sûre de comprendre.
------ D’ailleurs, y a-t-il un moyen d’afficher toutes les mémoires, entrées et sorties du programme avec leurs valeurs ? Aussi est-ce possible de ne réaliser qu’une partie du programme, je m’explique. EN SCL, il était possible de mettre des points pour n’exécuter que certaines parties. C’est possible de faire ça pour les autres langages ? Car je voudrais vraiment comment tout est réalisé.
------ J’ai également cette partie qui est vague. Je comprends ce qui devrait être fait mais ce n’est pas ce qui est fait donc je suis –encore- perdue.
Image Forum 1
Selon moi dans la colonne STANDARD il devrait y avoir 28 mais il y a 23. Je ne comprends donc pas ce qui est réellement réalisé.
------ Ensuite il y a : L #TEMP6
Si ça avait été L L#TEMP6 j’aurai compris grâce à un document pdf dans lequel il est indiqué que l’on charge TEMP6 dans l’accumulateur 1 mais dans le cas que j’ai, je ne comprends pas.
------ J’ai également : L W#16#0
Alors ici je pense comprendre qu’on met quelque chose dans l’accumulateur 1, d’où le L. Mais on y met un mot ? Mais lequel ? Je n’ai pas trouvé d’explications, juste des exemples qui ne m’ont pas éclairés.
A la suite de tests en ligne, j’ai aussi remarqué que toutes les lignes de mon FC n’étaient pas réalisées. En effet au bout de 41 lignes, le logiciel n’affiche plus les états des d’accumulateurs, registres, etc. Est-ce normal, où y a-t-il une manipulation à faire ? Car dans mon programme il y a des jumps à M001 ou 2 etc. J’ai réalisé que certaines lignes n’étaient pas affichées, mais celle-ci se rapportent alors à la modification d’autres variables que les accumulateurs et autre, dans mon cas ce sont des lignes qui s’affichaient avant comme L #TEMP6
------ LAR1
Ce qu’on me dit pour cette fonction c’est que l’on charge le contenu de l'accumulateur 1 dans registre d'adresse 1. Ce que je comprendre c’est qu’on copie la valeur de ACCU1 ou dans mon cas STRANDARD et qu’on colle le résultat dans AR1 (le registre d’adresse 1). Mais quand je teste en ligne j’ai ceci : Image Forum 2
J’ai donc 10 dans ACCU1 et 2 dans AR1 alors que j’avais 222 juste avant. Quelque chose est bien réalisé mais je ne comprends pas quoi ni pourquoi.
------ T DBW [AR1, P#0.0]
On écrit le poids faible de l'accu1, grâce au pointeur vers un double mot. Mais lequel ? Comment je peux vérifier que ça a bine été fait ?
Je n'ai pas finit de tout regarder, mais cela fait déjà beaucoup donc je m'arrête là et en fonction de ce que j'aurais, je reviendrais vers vous.
Bazinga
J'ai essayé de faire le plus clair possible, donc je suis désolé si ça ne l'est pas.
Je sus actuellement stagiaire et mon travail est de modifier un automate afin d'améliorer son fonctionnement. Mais je fais fasse à beaucoup trop de questionnements car je débute en Siemens. Je vous explique donc ma situation.
J’ai 2 programmes : celui fournit par l’entreprise qui a programmé l’automate, très mal commenté et en allemand que j’appellerai programme 1, et l’autre programme est celui récupéré sur l’automate sans aucun commentaires, ce qui est normal (selon mes recherches) que j’appellerai programme 2. Il se peut que les termes que j’utiliserais soient donc allemands, n’hésitez pas à me corriger.
------ La partie que je pense devoir modifier est, sur le programme 1 en SCL ce qui me semblait passablement compréhensible puisqu’il y avait quelques ressemblances avec les langages que je connais déjà. Mais dans le programme 2 le programme est maintenant en LIST. Les langages ne peuvent être changés, en tous les cas même lorsqu’il m’est possible de la changer, rien ne bouge. (Le LADDER me manque ) Avez-vous une idée pour remettre le langage de base ?
J’essaie donc de comprendre ce que fait le programme 2 afin de comprendre ensuite le 1. Je voulais donc lancer le programme en ligne sur mon PC. Mais je suis toujours perdue. Je vais donc vous poser toutes mes questions. En espérant que vous puissiez y répondre.
Voici une image pour que ce soit plus clair. A droite, en rouge voilà ce que j’avais dans le programme 1 et à gauche ce que j’ai récupéré de l’automate.
Image Forum 0
------ L 0
T #TEMP6
Dans ce cas, ce qu’on fait c’est bien mettre 0 dans ACCU1 puis ACCU1 soit 0 dans#TEMP6 ?
De plus, à propos de #TEMP6 qui est qui est indiqué dans l’interface dans TEMP, nous somme bien d’accord que ce sont des temporisations (les TEMPs)? Car mon automate a des entrées qui sont des sondes de températures, j’ai donc un doute car je sais également que le but de ce bloc est de détecter des erreurs de températures. Il y a notamment des comparaisons de TEMP. Donc je voudrais être sûre de comprendre.
------ D’ailleurs, y a-t-il un moyen d’afficher toutes les mémoires, entrées et sorties du programme avec leurs valeurs ? Aussi est-ce possible de ne réaliser qu’une partie du programme, je m’explique. EN SCL, il était possible de mettre des points pour n’exécuter que certaines parties. C’est possible de faire ça pour les autres langages ? Car je voudrais vraiment comment tout est réalisé.
------ J’ai également cette partie qui est vague. Je comprends ce qui devrait être fait mais ce n’est pas ce qui est fait donc je suis –encore- perdue.
Image Forum 1
Selon moi dans la colonne STANDARD il devrait y avoir 28 mais il y a 23. Je ne comprends donc pas ce qui est réellement réalisé.
------ Ensuite il y a : L #TEMP6
Si ça avait été L L#TEMP6 j’aurai compris grâce à un document pdf dans lequel il est indiqué que l’on charge TEMP6 dans l’accumulateur 1 mais dans le cas que j’ai, je ne comprends pas.
------ J’ai également : L W#16#0
Alors ici je pense comprendre qu’on met quelque chose dans l’accumulateur 1, d’où le L. Mais on y met un mot ? Mais lequel ? Je n’ai pas trouvé d’explications, juste des exemples qui ne m’ont pas éclairés.
A la suite de tests en ligne, j’ai aussi remarqué que toutes les lignes de mon FC n’étaient pas réalisées. En effet au bout de 41 lignes, le logiciel n’affiche plus les états des d’accumulateurs, registres, etc. Est-ce normal, où y a-t-il une manipulation à faire ? Car dans mon programme il y a des jumps à M001 ou 2 etc. J’ai réalisé que certaines lignes n’étaient pas affichées, mais celle-ci se rapportent alors à la modification d’autres variables que les accumulateurs et autre, dans mon cas ce sont des lignes qui s’affichaient avant comme L #TEMP6
------ LAR1
Ce qu’on me dit pour cette fonction c’est que l’on charge le contenu de l'accumulateur 1 dans registre d'adresse 1. Ce que je comprendre c’est qu’on copie la valeur de ACCU1 ou dans mon cas STRANDARD et qu’on colle le résultat dans AR1 (le registre d’adresse 1). Mais quand je teste en ligne j’ai ceci : Image Forum 2
J’ai donc 10 dans ACCU1 et 2 dans AR1 alors que j’avais 222 juste avant. Quelque chose est bien réalisé mais je ne comprends pas quoi ni pourquoi.
------ T DBW [AR1, P#0.0]
On écrit le poids faible de l'accu1, grâce au pointeur vers un double mot. Mais lequel ? Comment je peux vérifier que ça a bine été fait ?
Je n'ai pas finit de tout regarder, mais cela fait déjà beaucoup donc je m'arrête là et en fonction de ce que j'aurais, je reviendrais vers vous.
Bazinga