2017-05-31 1 views
0

J'ai un problème étrange avec multi-maître dans Modbus TCP/IP. Je sais que Modbus Serial ne supporte pas le multi master. Mais quand j'ai vu certains documents, ils ont dit que Modbus TCP supporte multi master.Multi-maître dans Modbus TCP

J'ai composé trois clients tcp en tant que maître Modbus TCP et un serveur en tant qu'esclave TCP Modbus. Chaque maître Modbus TCP demande à l'esclave Modbus TCP d'obtenir des données toutes les 2 secondes régulièrement. Et j'utilise la pile Modbus TCP pour le périphérique maître, qui est faite par Triangle MicroWorks. Je m'attendais à ce que chaque maître puisse recevoir des données de l'esclave, mais en réalité, un maître ne communiquait qu'avec l'esclave, les autres maîtres ne pouvaient pas recevoir de données. Ils ont seulement reçu un statut de retour "3", ce qui signifie "MBCHNL_RESP_STATUS_CANCELED".

Dans cette composition, ce comportement est-il correct? Je me demande si "multi-master/multiple same request" ne peut pas être supporté par la pile ou s'il y a d'autres façons de se comporter en multi-master.

Répondre

1

J'ai trouvé une réponse à ce problème. En bref, les masters étaient trop rapides et le canal esclave était occupé. Je ne peux pas garantir que tous les types de pile Modbus fonctionnent de la sorte, mais dans ce cas-là. Le message de retour, "MBCHNL_RESP_STATUS_CANCELED", provenait de la file d'attente des messages dans le code de la pile TMW, car il y a du code pour vérifier que ce n'est pas une demande en double. Le canal esclave ne pouvait donc pas traiter les messages de trois maîtres simultanément, et les messages de chaque maître restaient dans leur propre file d'attente.

J'ai posé la même question à Triangle Microworks, j'ai reçu leur opnion la semaine dernière. "... Vous avez le droit d'avoir plusieurs canaux (chaque canal doit avoir une combinaison ip/port unique.) 2 secondes peuvent être trop rapides pour seulement 1 canal ... Essayez de changer la période à 3 secondes et ainsi de suite. "

Je pense que ce n'est pas la réponse parfaite, donc j'ai amélioré la logique pour demander comme ci-dessous. - Envoyer par 2 secondes, mais si je n'ai reçu que la réponse.

La communication est plus fluide qu'elle ne l'était. Il semble plus continu. Parfois, les maîtres ne peuvent pas recevoir quelques secondes, mais après quelques secondes, ils communiquent à nouveau bien.

Je sais que ce n'est pas une réponse parfaite aussi bien. Si j'ai trouvé une meilleure réponse, je l'écrirai à nouveau.