Page 1 sur 2
Réseau modbus TCP/IP
Posté : 22 déc. 2021, 20:04
par chgui
Bonjour à vous,
J’ai découvert un truc chelou,

lors d’un revamping d’un API, sur un réseau modbus TCP/IP, si je Ping à l’adreses xxx.xxx.xxx.050 et bien c’est le xxx.xxx.xxx.40 qui répond
Bon du coup j’ai enlevé le 0 devant le 50 et tout va bien, mais je trouve cela bizarre et surtout, je ne sais pas pourquoi !!!
Si quelqu’un saurait et aurait la gentillesse de m’expliquer.
Je précise que le masque sous réseau est 255.255.255.0.
Re: Réseau modbus TCP/IP
Posté : 23 déc. 2021, 07:08
par Béryl
Le 40 ne serait pas l'ordi avec lequel tu ping ?
Quand un ping ne répond pas, c'est l'IP du poste qui ping qui répond.
Re: Réseau modbus TCP/IP
Posté : 23 déc. 2021, 08:27
par chgui
Merci pour ta réponse,
En 40 c'est un coupleur TSX ETZ 510.
Ce que je trouve bizarre, c'est quand je mets 050 ça ping 40, mais quand je mets 50 ça donne pas de réponse (ce qui est logique

).
Re: Réseau modbus TCP/IP
Posté : 23 déc. 2021, 09:41
par AC23
Bonjour,
C'est uniquement cette valeur (le "050") qui crée ce phénomène? Ça ressemble à un débordement de mémoire... Mais c'est le débordement de mémoire le plus bizarre que j'ai jamais vu

. Ou il crée une addition avec la valeur 246 ? il faudrait tester avec d'autre valeurs pour voir.
Sinon, je me rappelle que sur certains vieux Microcontrôleurs quand on utilise des IDE récent pour convertir du C/C++ vers de l'assembleur, l'ajout de 0 (non nécessaire) dans des déclarations de variables était traduit par des shift left par le compilateur. Et donc on avait des valeurs complètement aléatoires.
Bien cordialement;
Re: Réseau modbus TCP/IP
Posté : 23 déc. 2021, 17:37
par steph68
Salut,
En C/C++ (et sûrement d'autres langages aussi), un 0 devant un nombre signifie qu'il est exprimé en octal (base 8).
050 (octal) = 5 x 8 = 40 (décimal), donc c'est logique ...
Plus d'infos ici :
https://fr.wikipedia.org/wiki/Syst%C3%A8me_octal
@+
Re: Réseau modbus TCP/IP
Posté : 23 déc. 2021, 17:50
par itasoft
slts,
je connaissais le 0x pour l'hexa mais pas le 0 pour octal, ceci dit j'utilise pas le octal tous les jours, lol
Re: Réseau modbus TCP/IP
Posté : 24 déc. 2021, 09:39
par AC23
steph68 a écrit : ↑23 déc. 2021, 17:37
Salut,
En C/C++ (et sûrement d'autres langages aussi), un 0 devant un nombre signifie qu'il est exprimé en octal (base 8).
050 (octal) = 5 x 8 = 40 (décimal), donc c'est logique ...
Plus d'infos ici :
https://fr.wikipedia.org/wiki/Syst%C3%A8me_octal
@+
Bien vu, je n'ai pas pensé à un changement de base.
itasoft a écrit : ↑23 déc. 2021, 17:50
slts,
je connaissais le
0x pour l'hexa mais pas le 0 pour octal, ceci dit j'utilise pas le octal tous les jours, lol
Idem, pour moi c'est : "std::oct" ou "std::Oct".
Re: Réseau modbus TCP/IP
Posté : 24 déc. 2021, 10:00
par chgui
Ok merci les gars,
bon je m’étais bien rendu compte que c'était une connerie
mais du coup ça m'a titilé!!! merci pour les explication.
Re: Réseau modbus TCP/IP
Posté : 31 déc. 2021, 00:16
par djé
steph68 a écrit : ↑23 déc. 2021, 17:37
Salut,
En C/C++ (et sûrement d'autres langages aussi), un 0 devant un nombre signifie qu'il est exprimé en octal (base 8).
050 (octal) = 5 x 8 = 40 (décimal), donc c'est logique ...
Plus d'infos ici :
https://fr.wikipedia.org/wiki/Syst%C3%A8me_octal
@+
Exact, c'est vraiment un truc à la con, je me suis déjà fait avoir comme ça.
Re: Réseau modbus TCP/IP
Posté : 31 déc. 2021, 08:17
par chgui
djé a écrit : ↑31 déc. 2021, 00:16
Exact, c'est vraiment un truc à la con, je me suis déjà fait avoir comme ça.
LOL!!! En même temps c'est une idée à la con que j'ai eu de mettre ce zéro!!!
