Page 1 sur 1

M221 et hmi5st lire et comparé un code ascii aléatoire

Posté : 03 sept. 2019, 11:25
par Fubukichan
Bonjour,
J'essaye depuis un petit moment de crée un code en ascii sous cette forme: Valeur1/Valeur2 (de A à Z ou de 0 à 9 pour chaque valeurs) se qui donne par exemple: A9.

J'essaye de généré se code depuis la date et l'heure au moment ou mon procès est finit, pour éviter que l'opérateur truande :twisted: en lui demandant de validé la fin du cycle en rentrant se code. Donc il faut donc comparé le code rentré par l'opérateur sur l'hmi (hmistu855w) et celui généré par l'automate (un tm221ce40t) et la arrive mon problème, je ne sais pas comment le comparé et encore moins le générer en lui donnant une limite :?
donc si il y a possibilité que quelqu’un m'aide il me sauverais la vie :D

Re: M221 et hmi5st lire et comparé un code ascii aléatoire

Posté : 03 sept. 2019, 14:21
par Fubukichan
J'ai trouvé je vous donne la solution quand j'aurais finit de le programmer merci quand même de votre aide c:

Re: M221 et hmi5st lire et comparé un code ascii aléatoire

Posté : 03 sept. 2019, 21:27
par itasoft
slts,
pourquoi le traiter en ASCII ???

Après ce que je comprends, l’opérateur doit entrer dans le mot ex :%MW1 une valeur décimale identique à la valeur résultante
de la fin du procès

(*Mémorisation de la valeur résultante en fin du process à comparer avec %MW1 *)
%MW0 :=%SW51

Re: M221 et hmi5st lire et comparé un code ascii aléatoire

Posté : 04 sept. 2019, 09:52
par Fubukichan
Car le code cycle demander par l'opérateur et générer à base de l'heure et de la date ainsi que de la référence du produit(qui peut êtres alpha/numérique, j'ai oublier de le préciser celui-ci my bad :/).

Je dois remontée cette "clef de fin cycle" dans une chaîne sur l'écran pour que l'opérateur rentre la même chose pour validé l’exécution du cycle et que ce cycle sois lier avec mon article et enregistré dans une journalisation de donnée.
J'ai réussi à comparé la valeur rentrée et celle générée en prenant la valeur binaire des deux chaines grâce à ton conseil mais j'arrive pas à afficher le bon "code cycle" dans l'encadré de l'écran qui doit être de nature alpha numérique et posséder deux valeur :cry: .

Re: M221 et hmi5st lire et comparé un code ascii aléatoire

Posté : 05 sept. 2019, 11:31
par pfe
c'est pas simple de connaitre tout le problème, il faut en dire plus sur tes code produit et autres...
et il le connait comment ce code d'abord ?

mais à la base, tu peux essayer ça, juste pour générer ton code alpha-num aléatoire :

Code : Tout sélectionner

if Fin_De_Cycle then
    graine_1 := shr(%sw50,4) or %sw51;(* heure et seconde -> 1 int aleatoires *)
    graine_2 := shr(%sw50,8) or %sw51;(* heure et seconde -> 1 second int aleatoire différent *)
    code_1 := MOD (IN1 := graine_1, IN2 := 25) + 1; (* modulo 25 +1  : A..Z *)
    code_2 := MOD (IN1 := graine_1, IN2 := 9); (* modulo 9 : 0..9 *)
    
    (* brutalement en ascii dans le bon sens : 1er caract=A-Z poids faible ; 2nd caract=0-9 poids fort ; *)
    (* code doit être localisé en %mw si le superviseur doit afficher une String de 2 caracteres *)
    code := code_1 + 16#40 OR shl(code_2+ 16#30, 8); 
end_if;

(* code_ecrit doit être localisé en %mw , le superviseur doit écrire une String de 2 caracteres *)
OK := code = code_ecrit

Re: M221 et hmi5st lire et comparé un code ascii aléatoire

Posté : 05 sept. 2019, 14:25
par Fubukichan
J'utilise somachine, et le code article est un vulgaire numéros de série ou un code barre, je ne peux pas mettre de douchette donc l'utilisateur le rentre à la main, actuellement je génère le code cette façons vue que la date et l'heure son "unique" je me suis dit que mon code le serrais aussi, j'ai réussit à dissuader mon client de laisser tomber le coter alphanumérique pour le code cycle:
code cycle.PNG
Je les compare actuellement de cette façons:
capture comp code.PNG
et je bloque mon code et le remonte sur l'hmi de cette façons par la variable %mw400:
remontée code.PNG
remontée code.PNG (8.83 Kio) Vu 3072 fois
il me reste plus que à comparer les deux à la fin du cycle et de les sauvegarder pour avoir un historique des nettoyage ^^