Page 14 sur 15
Re: questions diverses
Posté : 19 juin 2020, 12:29
par philou77
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 !
Re: questions diverses
Posté : 20 juin 2020, 15:50
par R26R
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...
Re: questions diverses
Posté : 27 juin 2020, 22:36
par Mick1903
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
Re: questions diverses
Posté : 04 juil. 2020, 22:09
par Mick1903
Bonsoir,
Je cherche à concaténer 2 chaines de caractères:

- 1.PNG (3.84 Kio) Vu 5500 fois
Jusque la tout se passe bien :

- 2.PNG (2.96 Kio) Vu 5500 fois
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é:

- 4.PNG (4.24 Kio) Vu 5500 fois

- 5.PNG (5.64 Kio) Vu 5500 fois
#result_1 est une variable STAT. Merci pour vos réponses.
Mickael
Re: questions diverses
Posté : 05 juil. 2020, 13:05
par kcnarf
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
Re: questions diverses
Posté : 07 juil. 2020, 22:03
par Mick1903
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

- 6.PNG (1.11 Kio) Vu 5421 fois
Sinon pour la méthode que tu utilises:
kcnarf a écrit : ↑05 juil. 2020, 13:05
C'est pourquoi je préfère utiliser des tableaux de caractères : Array of Char.
Une fois les caractères dans le tableau comment fais tu pour la concaténation?
Bonne soirée
Re: questions diverses
Posté : 07 juil. 2020, 23:07
par philou77
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
Re: questions diverses
Posté : 23 juil. 2020, 09:27
par Mick1903
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
Re: questions diverses
Posté : 23 juil. 2020, 11:27
par philou77
RE !
Aie , j'ai mal à la tête à te lire..
Je comprends ni le problème, ni la solution !
Re: questions diverses
Posté : 23 juil. 2020, 12:34
par Mick1903
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