questions diverses
-
- Mi homme - Mi automate
- Messages : 2079
- Enregistré le : 21 oct. 2015, 10:00
- Localisation : Ile de France
Re: questions diverses
Salut !
tu peux déclarer tes tempos en STAT de ton FB Type de donnée (SFB3 = TP, SFB4=TON, SFB5 =TOF)
elles deviennent alors des instances de ton FB !
tu peux déclarer tes tempos en STAT de ton FB Type de donnée (SFB3 = TP, SFB4=TON, SFB5 =TOF)
elles deviennent alors des instances de ton FB !
Si vous avez compris tout ce que je viens d'écrire, c'est que j'ai dû faire une erreur quelque part !
Re: questions diverses
Salut,
En général j'utilise la technique décrite par philou77.
Sinon, si tu ne veux pas changer ton code, tu déclares en entrée de bloc une donnée de type "timer" (de mémoire). Et tu colle tes numéros de tempo sur tes appels de bloc...
En général j'utilise la technique décrite par philou77.
Sinon, si tu ne veux pas changer ton code, tu déclares en entrée de bloc une donnée de type "timer" (de mémoire). Et tu colle tes numéros de tempo sur tes appels de bloc...
Re: questions diverses
Bonsoir,
Je vous remercie pour vos réponses.finalement,j'ai utilisé la méthode de philou 77, et c'est nickel. Merci encore et bonne soirée.
Cordialement
Je vous remercie pour vos réponses.finalement,j'ai utilisé la méthode de philou 77, et c'est nickel. Merci encore et bonne soirée.
Cordialement
Re: questions diverses
Bonsoir,
Je cherche à concaténer 2 chaines de caractères:
Jusque la tout se passe bien :
Par contre lorsque j'utilise le bloc fonction FC2 qui permet de concaténer les 2 chaines, je n'ai pas le résultat espéré:
#result_1 est une variable STAT. Merci pour vos réponses.
Mickael
Je cherche à concaténer 2 chaines de caractères:
Jusque la tout se passe bien :
Par contre lorsque j'utilise le bloc fonction FC2 qui permet de concaténer les 2 chaines, je n'ai pas le résultat espéré:
#result_1 est une variable STAT. Merci pour vos réponses.
Mickael
-
- Code son premier grafcet
- Messages : 50
- Enregistré le : 23 mai 2017, 17:07
- Localisation : Rennes
Re: questions diverses
Salut,
çà fonctionne mais il faut que tu déclares une string [12] ou [14] (à vérifier) car Siemens Step7 réserve toujours 2 octets supplémentaires pour les variables de Type String.
C'est pourquoi je préfère utiliser des tableaux de caractères : Array of Char.
Ta string IN1 occupe 6 octets. Ta string IN2 occupe 6 octets.
Donc la concaténation prendra au minimum 12 octets + (peut être) 2 octets pour la déclaration de la string RESULT.
Après il faut que tu retravailles ta chaîne RESULT pour enlever les caractères qui ne t’intéressent pas...Par exemple en faisant un transfert Octet par Octet dans un tableau de caractères des octets que tu souhaitent.
Pour info une variable de Type String n'est q'un tableau de caractères avec 2 octets système en entête.
Tu trouveras dans l'aide la description des 2 octets.
Franck
çà fonctionne mais il faut que tu déclares une string [12] ou [14] (à vérifier) car Siemens Step7 réserve toujours 2 octets supplémentaires pour les variables de Type String.
C'est pourquoi je préfère utiliser des tableaux de caractères : Array of Char.
Ta string IN1 occupe 6 octets. Ta string IN2 occupe 6 octets.
Donc la concaténation prendra au minimum 12 octets + (peut être) 2 octets pour la déclaration de la string RESULT.
Après il faut que tu retravailles ta chaîne RESULT pour enlever les caractères qui ne t’intéressent pas...Par exemple en faisant un transfert Octet par Octet dans un tableau de caractères des octets que tu souhaitent.
Pour info une variable de Type String n'est q'un tableau de caractères avec 2 octets système en entête.
Tu trouveras dans l'aide la description des 2 octets.
Franck
la théorie c'est quand on sait tout mais que rien ne marche. La pratique c'est quand tout fonctionne et qu'on ne sait pas pourquoi.
Re: questions diverses
Salut Franck,
Merci pour ta réponse. J'ai modifié comme tu me l'as conseillé, et malgré tout je n'arrive pas au résultat souhaité.
J'ai ajouté 2 octets dans IN1 et IN2 ainsi que dans la variable #result_1. Par contre je ne retrouve pas le 'PR' dans la variable #result_1 Sinon pour la méthode que tu utilises:
Une fois les caractères dans le tableau comment fais tu pour la concaténation?
Bonne soirée
Merci pour ta réponse. J'ai modifié comme tu me l'as conseillé, et malgré tout je n'arrive pas au résultat souhaité.
J'ai ajouté 2 octets dans IN1 et IN2 ainsi que dans la variable #result_1. Par contre je ne retrouve pas le 'PR' dans la variable #result_1 Sinon pour la méthode que tu utilises:
Une fois les caractères dans le tableau comment fais tu pour la concaténation?
Bonne soirée
-
- Mi homme - Mi automate
- Messages : 2079
- Enregistré le : 21 oct. 2015, 10:00
- Localisation : Ile de France
Re: questions diverses
Salut!
J'ai fait le test.
Le FC2 fonctionne bien.
si tu as des strings partout.. ca doit aller.
tu déclares une string de 4, elle occupe 'en vrai' 6 octets, les deux premier étantle nb max de caractere de la chaine, le second le nombre actuel de caractères.
Mais c'est transparent pour toi.
Donc 2 string de 4 tiennent dans une string de 8 ! tout va bien
je pense que tu ne passe pas bien tes strings, la première étant introuvable dans le résultat (ton premier post) , je chercherai de ce côté là.
quand a un array of char et bien c'est un tableau
donc c'est facile de manipuler les éléments comme on veut
J'ai fait le test.
Le FC2 fonctionne bien.
si tu as des strings partout.. ca doit aller.
tu déclares une string de 4, elle occupe 'en vrai' 6 octets, les deux premier étantle nb max de caractere de la chaine, le second le nombre actuel de caractères.
Mais c'est transparent pour toi.
Donc 2 string de 4 tiennent dans une string de 8 ! tout va bien
je pense que tu ne passe pas bien tes strings, la première étant introuvable dans le résultat (ton premier post) , je chercherai de ce côté là.
quand a un array of char et bien c'est un tableau
donc c'est facile de manipuler les éléments comme on veut
Si vous avez compris tout ce que je viens d'écrire, c'est que j'ai dû faire une erreur quelque part !
Re: questions diverses
Salut!
Merci pour ta réponse, effectivement il y avait un problème de placement des variables string. il affiche bien dans mon DB d'instance 'PRODUIT1', mais lorsque je redémarre mon simulateur. Il m'affiche ceci:
La seule "façon" que j'ai trouvé pour le moment c'est de modifier les adresses des variables des DB4.DBD.., (par exemple: db4.dbd0 et db4.dbd4) de transférer sur le simulateur puis ensuite remettre les anciennes adresses (db4.dbd2 et db4.dbd6) et de transférer de nouveau. Ensuite l’affichage est correct dans la variable #result_1
Je pense qui y ait une autre façon de faire.
Merci pour vos réponses
Bonne journée
Merci pour ta réponse, effectivement il y avait un problème de placement des variables string. il affiche bien dans mon DB d'instance 'PRODUIT1', mais lorsque je redémarre mon simulateur. Il m'affiche ceci:
La seule "façon" que j'ai trouvé pour le moment c'est de modifier les adresses des variables des DB4.DBD.., (par exemple: db4.dbd0 et db4.dbd4) de transférer sur le simulateur puis ensuite remettre les anciennes adresses (db4.dbd2 et db4.dbd6) et de transférer de nouveau. Ensuite l’affichage est correct dans la variable #result_1
Je pense qui y ait une autre façon de faire.
Merci pour vos réponses
Bonne journée
-
- Mi homme - Mi automate
- Messages : 2079
- Enregistré le : 21 oct. 2015, 10:00
- Localisation : Ile de France
Re: questions diverses
RE !
Aie , j'ai mal à la tête à te lire..
Je comprends ni le problème, ni la solution !
Aie , j'ai mal à la tête à te lire..
Je comprends ni le problème, ni la solution !
Si vous avez compris tout ce que je viens d'écrire, c'est que j'ai dû faire une erreur quelque part !
Re: questions diverses
Re!
Désolé, pas évident à expliquer
Je vais tenter de faire mieux!
Dans ma variable STRING [8], présente dans mon DB10 je retrouve correctement mon commentaire "PRODUIT1".
Jusque là tout va bien.
Admettons je ferme mon PC, le lendemain j'ouvre mon programme, je démarre mon simulateur PLCSIM, je transfère mon programme, dans mon DB 10, il m'affichera un commentaire incohérent. Alors que la veille,j'avais enregistré mon programme avant de le fermer, donc il est identique.
La seule façon que j'a trouvé pour y remédier, c'est de modifier cette partie de programme :
L DW#16#50524F44
T DB4.DBD2
L DW#16#55495431
T DB4.DBD6
modification et transfert forcément à ce moment là, mon commentaire ne veut rien dire
L DW#16#50524F44
T DB4.DBD0
L DW#16#55495431
T DB4.DBD2
De ce fait, je reviens comme à l'initial, je transfert, et ce coup ci mon commentaire est affiché correctement "PRODUIT1"
Sans faire cette étape, ça ne fonctionne pas pour moi! Tant que le simulateur n'est pas coupé, je n'ai aucun problème.J'ai testé sur un autre PC, est c'est identique.
Désolé pour le mal de tête, bonne journée
Désolé, pas évident à expliquer
Je vais tenter de faire mieux!
Dans ma variable STRING [8], présente dans mon DB10 je retrouve correctement mon commentaire "PRODUIT1".
Jusque là tout va bien.
Admettons je ferme mon PC, le lendemain j'ouvre mon programme, je démarre mon simulateur PLCSIM, je transfère mon programme, dans mon DB 10, il m'affichera un commentaire incohérent. Alors que la veille,j'avais enregistré mon programme avant de le fermer, donc il est identique.
La seule façon que j'a trouvé pour y remédier, c'est de modifier cette partie de programme :
L DW#16#50524F44
T DB4.DBD2
L DW#16#55495431
T DB4.DBD6
modification et transfert forcément à ce moment là, mon commentaire ne veut rien dire
L DW#16#50524F44
T DB4.DBD0
L DW#16#55495431
T DB4.DBD2
De ce fait, je reviens comme à l'initial, je transfert, et ce coup ci mon commentaire est affiché correctement "PRODUIT1"
Sans faire cette étape, ça ne fonctionne pas pour moi! Tant que le simulateur n'est pas coupé, je n'ai aucun problème.J'ai testé sur un autre PC, est c'est identique.
Désolé pour le mal de tête, bonne journée