Connexion 1510SP-1 et enregistreur E+H RSG35

Forum traitant des automates industriels de marque Siemens.
Avatar du membre
andala
Créateur de langage
Créateur de langage
Messages : 505
Enregistré le : 19 déc. 2016, 10:24
Localisation : Atlantide

Re: Connexion 1510SP-1 et enregistreur E+H RSG35

Message par andala »

DurandO a écrit : 04 mars 2022, 18:01 Bonjour,
si ta valeur est un entier, ta conversion est bonne : int ->Dint, Dint--> Real.
Pour ta table d'émission, tu peux déclarer des datas dans tes paramètres de bloc FB comme ceci :

Code : Tout sélectionner

	Input									
	Valeur1	Int	0	Non rémanent	True	True	True	False		
	Valeur2	Int	0	Non rémanent	True	True	True	False		
	Valeur3	Int	0	Non rémanent	True	True	True	False		
	Valeur4	Int	0	Non rémanent	True	True	True	False		
	Valeur5	Int	0	Non rémanent	True	True	True	False		
	Output									
	InOut									
	Static									
	Data1	Struct		Non rémanent	True	True	True	False		
	Byte0	Byte	16#00	Non rémanent	True	True	True	False		
	Byte1	Byte	16#80	Non rémanent	True	True	True	False		
	Value	Real	0.0	Non rémanent	True	True	True	False		
	Data2	Struct		Non rémanent	True	True	True	False		
	Data3	Struct		Non rémanent	True	True	True	False		
	Data4	Struct		Non rémanent	True	True	True	False		
	Data5	Struct		Non rémanent	True	True	True	False		
	Temp									
	EntierDouble	DInt								
	Constant									
										

Tu fait ta conversion simplement comme ceci : Exemple
Waou ! y a-t-il plus claire comme réponse ! simple, concise,détaillé,... MERCI !
Je test ce matin est je vous tiens informés
Par contre, je ne vois pas comment de #data_value1 tu inscrit les valeurs dans Byte0 et Byte1.
Et le "EntierDouble" en Dint, je le recopie autant de fois qu'il y a de valeur d'entrée ? ou un seul suffit ?
Pour finir, pour le MB_DATA_PTR le registre 200, 201 et 202 pour la première entrée, une partie est en Int et l'autre en real. je fait comment du coup ? je met tout en real ?
Une bonne action en entraine toujours une autre
Avatar du membre
andala
Créateur de langage
Créateur de langage
Messages : 505
Enregistré le : 19 déc. 2016, 10:24
Localisation : Atlantide

Re: Connexion 1510SP-1 et enregistreur E+H RSG35

Message par andala »

Apres plusieurs noeud au cerveau, j'ai fini pas m'y retrouver un minimum.
j'ai ecris ça :
TEST.png
Le imput_value est converti en Dint puis en Real vers output_value
les input_int_1 et 2 sont envoyé respectivement vers Output_register1 et 2 (vers mon PTR correspondant)

Ça vous parait cohérent ? :D
Une bonne action en entraine toujours une autre
DurandO
Maître du binaire
Maître du binaire
Messages : 482
Enregistré le : 21 mars 2021, 15:31

Re: Connexion 1510SP-1 et enregistreur E+H RSG35

Message par DurandO »

Bonjour,
andala a écrit : 07 mars 2022, 08:34 Pour finir, pour le MB_DATA_PTR le registre 200, 201 et 202 pour la première entrée, une partie est en Int et l'autre en real. je fait comment du coup ? je met tout en real ?
Je ne comprends pas que tu pose encore cette question.
les input_int_1 et 2 sont envoyé respectivement vers Output_register1 et 2 (vers mon PTR correspondant)
Je ne comprends pas ce tu essais de faire avec ça.

As-tu regardé mon exemple ?
philou77
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 2142
Enregistré le : 21 oct. 2015, 10:00
Localisation : Ile de France

Re: Connexion 1510SP-1 et enregistreur E+H RSG35

Message par philou77 »

andala a écrit : 04 mars 2022, 14:43 Philou77 :
Quand tu dit : " Il y a pas de conversion a faire, il faut juste mettre les octets de ton réal d'origine au bon endroit dans la zone que tu va transférer !" Il n'y a pas de real d'origine; je suis en int pour ma donnée
puis : "Et encore une fois, le mot #080 N'EST PAS un REAL mais un simple WORD" tu veux dire que c'est juste cette valeur la qui est en Word ou les 3 registre a envoyer ?
Oui, il semblerai vu l'adressage dans la doc page 9, qu'il faille le status #080 pour chaque real, vu que les adresses vont de 3 registres en 3 registres (soit 6 octets pour du real 32 bit)

Ok alors oui il faut convertir ton int en Dint puis en Rreal

oui, #080 est en word, l'autre en real. mais ne perds pas de vue qu'en Modbus tu transfères des octets qui se suivent, peux importe ce qu'il représentent !
donc un word suivi de un real = 6 Octets (2 pour le word, 4 pour le real).

Donc tu transfères 6 Octets à partir de l'octet xxx
Disons donc que
MW200 est ton word en ecrivant dans MW200 tu écris dans MB200 et MB201
MD202 est ton real en écrivant dans MD202 tu écris dans MB202,MB203,MB204,MB205

Tu transfères 6 Octets à l'adresse de départ MB200
Donc au final ça va transférer
MB200
MB201
MB202
MB203
MB204
MB205

Si tu utilises une structure comme te l'as indiqué DurandO, utilise DATA1.BYTE0 comme adresse de départ, ça fera pareil !

à toi d'adapter les adresses !
Si vous avez compris tout ce que je viens d'écrire, c'est que j'ai dû faire une erreur quelque part ! :D
Avatar du membre
andala
Créateur de langage
Créateur de langage
Messages : 505
Enregistré le : 19 déc. 2016, 10:24
Localisation : Atlantide

Re: Connexion 1510SP-1 et enregistreur E+H RSG35

Message par andala »

Bonjour à tous,
Il y a quelque problème au niveau de la doc on dirait car, en faisant des tests hier, j'ai remarqué que l'on utilise pas 3 registre comme c'est mentionné.
En envoyant seulement dans le registre 200 la valeur 16#80 en int et dans le 201 la valeur 100 par exemple en real, j'ai bien ma lecture de valeur à 100 sur mon enregistreur. Merci la doc !

Par contre j'ai un dernier problème :
Lorsque je veux envoyer mes données, j’inscris donc dans MB_DATA_ADRESS = 40201, MB_DATA_LEN = 6 puis dans MB_DATA_PTR :
Struct :
Status4 Int 16#80
Value4 Real 0.0
Status5 Int 16#80
Value5 Real 0.0
Status6 Int 16#80
Value6 Real 0.0

Je suis obligé d’écrire en struct pour envoyer des données en int et real dans le même groupe

Cependant, la programmation ci dessus me renvoi dans mon block MB_CLIENT une erreur 818B qui correspond a :
The MB_DATA_PTR parameter has an invalid pointer. You should also check the values of the MB_DATA_ADDR and MB_DATA_LEN parameters.

Erreur pas logique étant donnée que je dois bien envoyer 6 valeurs donc bien 6 pointeurs...
une idée ?
Je vais bien finir par y arriver ! :lol:
Une bonne action en entraine toujours une autre
DurandO
Maître du binaire
Maître du binaire
Messages : 482
Enregistré le : 21 mars 2021, 15:31

Re: Connexion 1510SP-1 et enregistreur E+H RSG35

Message par DurandO »

Bonjour,
andala a écrit : 08 mars 2022, 08:37 En envoyant seulement dans le registre 200 la valeur 16#80 en int et dans le 201 la valeur 100 par exemple en real, j'ai bien ma lecture de valeur à 100 sur mon enregistreur. Merci la doc !
Tu n'as pas compris semble-t-il.
Lorsque tu envoies un real à l'adresse 201 ( 100.0 dans ton exemple) cette valeur real (32bits) occupe 2 mots ( 201 et 202).
Donc, la documentation est claire à ce niveau.
Lorsque je veux envoyer mes données, j’inscris donc dans MB_DATA_ADRESS = 40201, MB_DATA_LEN = 6 puis dans MB_DATA_PTR :
Qu'as-tu mis dans MB_MODE?

Peux-tu faire une impression écran de ta structure et de l'appel du bloc MB_CLIENT dans chacun des cas :
- celui qui marche
- celui qui ne marche pas.
Avatar du membre
andala
Créateur de langage
Créateur de langage
Messages : 505
Enregistré le : 19 déc. 2016, 10:24
Localisation : Atlantide

Re: Connexion 1510SP-1 et enregistreur E+H RSG35

Message par andala »

J'ai compris pourquoi j'ai cette erreur : il aime pas trop le struct dans le PTR.

Tout fonctionne parfaitement maintenant.
C'est le dernier message de Durand0 qui m'a orienté dans la bonne direction

Merci à tous pour l'aide ! maintenant je saurais faire
Une bonne action en entraine toujours une autre
philou77
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 2142
Enregistré le : 21 oct. 2015, 10:00
Localisation : Ile de France

Re: Connexion 1510SP-1 et enregistreur E+H RSG35

Message par philou77 »

Re !

Il aurait été sympa de poster ton erreur et de mettre ta solution aussi.
Si vous avez compris tout ce que je viens d'écrire, c'est que j'ai dû faire une erreur quelque part ! :D
Avatar du membre
andala
Créateur de langage
Créateur de langage
Messages : 505
Enregistré le : 19 déc. 2016, 10:24
Localisation : Atlantide

Re: Connexion 1510SP-1 et enregistreur E+H RSG35

Message par andala »

philou77 a écrit : 08 mars 2022, 13:26 Re !

Il aurait été sympa de poster ton erreur et de mettre ta solution aussi.
Oui ne t’inquiète pas, je vérifiais juste si tout s’enregistre bien :D .
Voici la solution que j'ai apporté :
Ici la structure du %FB3 (j'ai converti ma variable à envoyer ailleurs dans le programme en REAL):
part1.png
Et la, le traitement de mes données :
part2.png
L'envoi des données était a faire en INT et pas en REAL, dans le MB_DATA_PTR. C'est la ou je me suis emmêlé les pinceaux a vouloir absolument les envoyer en REAL.

encore merci a tous pour votre aide ;)
Une bonne action en entraine toujours une autre
philou77
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 2142
Enregistré le : 21 oct. 2015, 10:00
Localisation : Ile de France

Re: Connexion 1510SP-1 et enregistreur E+H RSG35

Message par philou77 »

Re !

Je comprends pas tout mais l'essentiel est que ça fonctionne :)
Si vous avez compris tout ce que je viens d'écrire, c'est que j'ai dû faire une erreur quelque part ! :D
Répondre