[RESOLU] READ_VAR rs485 modbus

Forum traitant des automates industriels de marque Schneider - Telemecanique
kosbor
Aguerri de l'automation
Aguerri de l'automation
Messages : 83
Enregistré le : 23 oct. 2015, 18:29

Re: READ_VAR rs485 modbus

Message par kosbor »

bonjour,

Alors des nouvelles hier matin j'ai avancé, alors l'erreur le code 07 venait l'adresse 100 je m'en suis apercu quand j'ai passé la carte en esclave le max est 99 :shock: j'avais mis parce que mon esclave en reglage usine etait à 100
Alors la led clignote bien en Rx Tx et quand il n'y a pas d'esclave la led error n'est pas en rouge
Je n'ai pas pus testé sur l'esclave donc j'ai essayé avec les USB 485 (celui du cable schneider ne fonctionne pas il refuse d'ouvrir le COM ou il est )
Je pense qu'il y a un probleme avec mes USB 485 (acheté pas cher) entre les 2 le RTU passe sans probleme mais avec l'automate il y a un probleme de synchro j'ai fais une petite capture pour voir les trames IcQ37QPayWA Sinon j'ai fais le READ_VAR plus propre je met le code si ça peut servir

Code : Tout sélectionner

(*****************************************************************)
(*                  READ                                         *)
(*****************************************************************)
(*requete*)
IF Impuls100ms THEN
  Rc_Com_Lec.Query:=true;
END_IF;

IF Rc_Com_Lec.Query AND NOT Rc_Com_Lec.Busy AND NOT Rc_Com_Ecr.Busy THEN
  
  MOVE_INT_ARINT (IN := 0, OUT =>Rc_Com_Lec.TableEchange (*ANY_ARRAY_INT*));
  Rc_Com_Lec.Busy           :=True;
  Rc_Com_Lec.TableEchange[2]:= 1; (*200ms timeout*)
  (*64 bits  sont lus au niveau de l'esclave 10 et placés dans le buffer*)
  READ_VAR (ADR  :=ADDR('0.1.1.10')(*ANY_ARRAY_INT*),
            OBJ  :='%M' (*STRING*),
            NUM  := 0 (*DINT*),
            NB   := 64 (*INT*),
            GEST := Rc_Com_Lec.TableEchange(*ANY_ARRAY_INT*),
            RECP => Rc_Com_Lec.Buffer(*ANY_ARRAY_INT*));
END_IF;

(*Analyse des résultats*)
IF Rc_Com_Lec.Busy  AND NOT Rc_Com_Lec.TableEchange[0].0 THEN
  Rc_Com_Lec.Query:=False;
  Rc_Com_Lec.Busy:=False;
  IF Rc_Com_Lec.TableEchange[1]<>0 THEN
    Rc_Com_Lec.NumberExchangeNOk:=MOD (Rc_Com_Lec.NumberExchangeNOk,32000);
    INC(Rc_Com_Lec.NumberExchangeNOk);  
    Rc_Com_Lec.Pointer:=MOD (Rc_Com_Lec.Pointer,51);
    MOVE_INT_ARINT (IN := 0, OUT =>Rc_Com_Lec.Buffer (*ANY_ARRAY_INT*)); 
    Rc_Com_Lec.Log[Rc_Com_Lec.Pointer].Horraire  :=HeureActuelle_DT;
    Rc_Com_Lec.Log[Rc_Com_Lec.Pointer].CodeErreur:=Rc_Com_Lec.TableEchange[1];
    INC(Rc_Com_Lec.Pointer);
  END_IF;
END_IF;

Avatar du membre
itasoft
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 7162
Enregistré le : 20 oct. 2015, 10:15
Localisation : Lyon
Contact :

Re: READ_VAR rs485 modbus

Message par itasoft »

slts,

Rc_Com_Lec.Buffer (*ANY_ARRAY_INT*));

ça veut dire: ARRAY[0..3] OF INT

?
Automaticien privé (de tout)
itasoft@free.fr
kosbor
Aguerri de l'automation
Aguerri de l'automation
Messages : 83
Enregistré le : 23 oct. 2015, 18:29

Re: READ_VAR rs485 modbus

Message par kosbor »

declaré ARRAY[0..25] OF INT j'ai mis de la marge comme c'est une structure
Avatar du membre
Bernardo59
Dieu du process
Dieu du process
Messages : 970
Enregistré le : 20 oct. 2015, 05:48
Localisation : Nimes

Re: READ_VAR rs485 modbus

Message par Bernardo59 »

Bonjour Kosbor,

On ne peut malheureusement pas trop te répondre car on ne sait pas trop ce que tu fais.
Je pense que tu essayes de réaliser une communication Modbus RS485 vers un équipement mais en terme de cablage, qu'est-ce que tu as réalisé ?
kosbor
Aguerri de l'automation
Aguerri de l'automation
Messages : 83
Enregistré le : 23 oct. 2015, 18:29

Re: READ_VAR rs485 modbus

Message par kosbor »

Bernardo59 a écrit :Bonjour Kosbor,

On ne peut malheureusement pas trop te répondre car on ne sait pas trop ce que tu fais.
Je pense que tu essayes de réaliser une communication Modbus RS485 vers un équipement mais en terme de cablage, qu'est-ce que tu as réalisé ?
slt
Le probleme est resolu testé sur l'esclave j'ai viré aussi l'impulsion de 100ms dès qu'il est pas busy on balance la requete,j'ai laisé tourné la journée et aucune erreur
Le cablage est montré dans la page précedente
Du coup les USB485 entre eux ils marchent , mais pas avec un partenaire classique
Avatar du membre
itasoft
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 7162
Enregistré le : 20 oct. 2015, 10:15
Localisation : Lyon
Contact :

Re: READ_VAR rs485 modbus

Message par itasoft »

slts,
Bravo,
dommage que on ne sait toujours pas entre quoi et quoi tu veux communique (ex: types d'esclaves)
LOL
Automaticien privé (de tout)
itasoft@free.fr
kosbor
Aguerri de l'automation
Aguerri de l'automation
Messages : 83
Enregistré le : 23 oct. 2015, 18:29

Re: READ_VAR rs485 modbus

Message par kosbor »

C'est une telecomande de la marque jay avec son tranceiver
J'ai donc fais une communication bidirectionnelle (120ms entre 2 transactions)
Mais je me serais bien passé du modbus RTU
Répondre