Connexion transparente d’appareils RS-485

zontragon

Connexion transparente d’appareils RS-485


J’ai un ordinateur principal doté d’une carte RS-485. Il communique avec ses sous-systèmes via cette carte de communication.
J’ai également un ordinateur de test connecté à la carte principale via le canal RS-485. Il sera utilisé pour tester et mettre à jour les sous-systèmes utilisant ces canaux RS-485.

Je veux que l’ordinateur principal se comporte de manière transparente pour tester l’ordinateur afin que l’ordinateur principal ne soit pas au courant de l’algorithme de test. Je ne veux pas mettre à jour l’ordinateur principal lorsque les algorithmes de test changent.
Si j’avais conçu mon matériel, j’utiliserais un FPGA pour connecter physiquement l’ordinateur de test aux sous-systèmes afin que l’ordinateur de test connecte directement les sous-systèmes et que l’ordinateur principal ne soit pas au courant des tests, mais j’utilise un ordinateur standard et une communication carte.

Que feriez-vous pour connecter l’ordinateur de test et les sous-systèmes sans ajouter d’algorithmes liés aux tests à l’ordinateur principal.

diagramme

RBerteig

RS-485 permet un câblage multipoint. Dans cette configuration, il pourrait y avoir aussi peu qu’un seul bus RS-485 commun, où chaque nœud individuel tape simplement les fils, sans commutation ni relecture de paquets.

Réponses


 Darron

Eh bien, il existe de nombreuses solutions possibles … mais vous n’avez pas vraiment donné suffisamment d’informations sur l’apparence de la communication entre l’ordinateur de test et les sous-systèmes. Est-ce à vous de décider quoi mettre en œuvre? Je vais supposer que c’est le cas, mais la solution changerait probablement si le protocole sur RS485 était déjà défini ou sélectionné.

La plupart des protocoles de communication à ce niveau contiennent un type d’ adressage intégré.

Si vous êtes à l’aise avec l’envoi de structures binaires, définissez simplement une structure avec laquelle chaque message commence et qui contient:

  • La longueur en octets du message entier
  • L’adresse du sous-système auquel vous essayez de parler
  • L’adresse du sous-système dont vous parlez (facultatif)
  • La commande que vous essayez d’émettre sur le sous-système

Vous commenceriez chaque message avec cet en-tête, puis transmettriez toutes les données nécessaires, et enfin vous pourriez éventuellement (mais il est fortement recommandé sur les liens de style RS485) envoyer une somme de contrôle ou CRC de l’en-tête et des données.

À ce stade, l’ordinateur principal n’a pas besoin de faire autre chose que de lire l’en-tête du message, de voir la longueur et de la transmettre au sous-système approprié. Il n’a même pas besoin de savoir où sont les adresses … vous pouvez simplement diffuser le message aux trois sous-systèmes. À mesure que les commandes changent et que les données changent, le format du message ne change pas … la logique de l’ordinateur principal peut donc rester la même.

La réponse du sous-système doit être au même format.

Il est utile de mettre l’adresse du nœud FROM afin que le sous-système sache à qui répondre. Dans certaines situations, cela ne changera jamais, vous pouvez donc coder en dur cela. Je préfère généralement mettre l’adresse du nœud FROM de toute façon car vous ne savez jamais comment la topologie du réseau pourrait changer plus tard.

Sur la dernière chose. Puisque vous appelez cela « l’ordinateur principal », je suppose que vous parlez peut-être d’un vrai PC. Avec de vrais PC exécutant un système d’exploitation moderne comme Windows, OS / X ou Linux, vous allez avoir une latence dans la rapidité avec laquelle l’application sur cet ordinateur peut répondre … alors créez des délais d’attente suffisamment longs dans votre protocole. De nombreux protocoles basés sur la série sont une vraie douleur dans le cul sur les PC modernes en raison des délais courts autorisés sur les réponses, etc. Vous ne pourriez probablement pas passer MODBUS via un PC moderne de la manière que vous décrivez, par exemple … du moins pas sans pilote de périphérique série spécial ou sans violation du timing (ce qui est parfois acceptable pour les solutions fixes) Au moment où l’ordinateur principal lit la réponse de l’ordinateur de test, la diffuse aux sous-systèmes, obtient les réponses et la rediffuse à l’ordinateur de test plusieurs centaines de millisecondes pourraient s’écouler.

RBerteig

Il est extrêmement difficile d’implémenter même Modbus sur un PC moderne d’une manière entièrement compatible avec tous les délais. Mais Modbus est probablement le meilleur point de départ comme référence au genre de choses à penser. Principalement parce qu’il est testé sur le terrain, existe depuis un certain temps et vraiment bien documenté à de nombreux niveaux.

 

connexion, d’appareils, RS-485, transparente?

 

google

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *