Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Maîtriser Modbus sur Arduino : Guide étape par étape

Composants et fournitures

Composant Quantité
Arduino UNO 1
Shield RS422 / RS485 professionnel pour Arduino 1
Convertisseur USB vers RS485 1
Plaque d'essai (breadboard) 1
LED (générique) 1
Résistance 10 kΩ 1
Résistance 221 Ω 1
Fils de connexion (jumper wires) 1
Bouton poussoir 12 mm (SparkFun) 1

Applications et services en ligne

À propos de ce projet

Modbus, une norme de communication série, est devenu un protocole de communication standard de facto et constitue désormais un moyen couramment disponible pour connecter des appareils électroniques industriels. Dans Modbus RTU et Modbus ASCII, la couche physique utilisée est le RS485. Il est possible d'utiliser un Arduino comme esclave (et avec certaines restrictions aussi comme maître) dans des applications Modbus, mais une interface RS485 est nécessaire. Notre shield RS422/RS485 est un shield de communication série entièrement isolé galvaniquement, conçu pour être utilisé avec l'Arduino UNO et d'autres cartes compatibles comme l'Arduino 101, STM Nucleo... Ce shield est le choix idéal pour ce type d'applications.

L'objectif de ce document est de montrer comment créer, avec un Arduino UNO, un périphérique esclave Modbus simple. Nous utiliserons un PC comme maître Modbus.

Outils et matériaux

Optionnel

Logiciels

Câblage RS485

Maîtriser Modbus sur Arduino : Guide étape par étape

Le câblage est très simple. Il suffit de connecter les bornes A et B du shield aux lignes A et B du système Modbus. Les bornes Y et Z ne sont pas utilisées pour ce type d'application. Pour de longues distances, il est recommandé d'utiliser des paires torsadées pour A et B.

Câblage Arduino (Optionnel)

Il est recommandé d'ajouter une LED et un bouton à l'Arduino pour visualiser certains effets de la communication Modbus. C'est optionnel et non indispensable.

Maîtriser Modbus sur Arduino : Guide étape par étape

Réglage des commutateurs DIP

Le shield RS422/RS485 comporte 3 banques de commutateurs DIP. Vous devez les régler pour Modbus comme indiqué sur l'image ci-dessous.

* Selon la position du shield RS422/RS485 sur la ligne Modbus, vous devez activer ou désactiver la résistance de terminaison. Mettez la résistance sur ON uniquement si le shield se trouve à une extrémité de la ligne de bus. Dans tous les autres cas, mettez la résistance de terminaison sur OFF.

Maîtriser Modbus sur Arduino : Guide étape par étape

Réglage des jumpers

On trouve 3 zones de jumpers sur le shield. Le plus important est le jumper JP1 pour la tension d'alimentation. L'Arduino UNO fonctionne en 5V en interne. Vous devez placer ce jumper sur la position 5V (pour les cartes 3.3V comme l'Arduino 101, sur la position 3.3V).

Ensuite, réglez les jumpers pour les ports de communication dans le coin supérieur gauche comme sur l'image ci-dessus. L'UART interne sur les ports 0 et 1 sera ainsi connecté à l'interface RS485 du shield.

Enfin, nous devons régler le jumper pour le port de contrôle RX/TX. Nous n'utilisons pas ce jumper car la commutation automatique RX/TX est configurée.

Maîtriser Modbus sur Arduino : Guide étape par étape
Maîtriser Modbus sur Arduino : Guide étape par étape

Installation du logiciel Modbus Tester sur PC

Nous utiliserons le PC comme maître Modbus. Vous devez télécharger Modbustester. Décompressez l'archive zip dans un nouveau répertoire sur votre disque dur. Ouvrez le logiciel et modifiez les champs indiqués comme sur l'image ci-dessous. Vous devez connecter l'adaptateur USB-RS485 avant de choisir le bon port COM pour cet adaptateur dans Modbustester.

Maîtriser Modbus sur Arduino : Guide étape par étape

Logiciel Arduino

Chargez le firmware dans l'Arduino IDE pour la compilation et la programmation.

Testez votre travail

C'est maintenant le moment de tester votre travail !

Vous pouvez appuyer sur le bouton "Read" dans Modbustester. Cette commande lira 8 octets de la mémoire de notre nouvel esclave. À l'adresse 400008, vous trouverez l'état du bouton. Les adresses 400001 à 400006 contiennent les valeurs des ports ADC.

Avec le bouton "Write", vous pouvez manipuler les registres de l'esclave. Vous pouvez entrer à l'adresse 400007 un 0 ou un 1 pour allumer ou éteindre la LED.

Maîtriser Modbus sur Arduino : Guide étape par étape

Code

Exemple de code pour Arduino UNO

/* 
 * Programme de test pour Arduino RS422/RS485 Shield
 * Version 1.0
 * Copyright (C) 2018 Hartmut Wendt www.zihatec.de
 * (basé sur les sources de https://github.com/angeloc/simplemodbusng)
 * Ce programme est un logiciel libre...
 */
#include <SimpleModbusSlave.h>
#define ledPin 12 // led intégrée
#define buttonPin 7 // bouton poussoir

// Registres de l'esclave
enum {
  ADC0, ADC1, ADC2, ADC3, ADC4, ADC5,
  LED_STATE, BUTTON_STATE, TOTAL_ERRORS,
  TOTAL_REGS_SIZE
};
unsigned int holdingRegs[TOTAL_REGS_SIZE];

void setup() {
  modbus_configure(9600, 1, 6, TOTAL_REGS_SIZE, 0);
  pinMode(ledPin, OUTPUT);
  pinMode(buttonPin, INPUT);
}

void loop() {
  holdingRegs[TOTAL_ERRORS] = modbus_update(holdingRegs);
  for (byte i = 0; i < 6; i++) {
    holdingRegs[i] = analogRead(i);
    delayMicroseconds(50);
  }
  byte buttonState = digitalRead(buttonPin);
  holdingRegs[BUTTON_STATE] = buttonState;
  byte ledState = holdingRegs[LED_STATE];
  if (ledState) {
    digitalWrite(ledPin, HIGH);
  } else {
    digitalWrite(ledPin, LOW);
    holdingRegs[LED_STATE] = 0;
  }
}

Schémas

Câblage de quelques composants de test sur l'Arduino

Maîtriser Modbus sur Arduino : Guide étape par étape

Processus de fabrication

  1. Maîtriser les Files C# (Queue) : Enqueue, Dequeue et Opérations Premier Entré Premier Sorti
  2. Contrôler la Luminosité de LEDs par PWM avec un Bouton Poussoir sur Arduino Mega
  3. Construire un jeu gyroscopique temps réel avec Arduino Nano et capteur MPU-6050
  4. Unopad : contrôleur MIDI Arduino fluide pour Ableton Live
  5. Capteur d'obstacle IR simple avec Arduino — LED IR + Photodiode
  6. Find Me : Localisateur d'objets intelligent avec Arduino et Bluetooth
  7. Volant Joystick Arduino Personnalisé pour Jeux Vidéo
  8. Utiliser une thermistance facilement : Guide étape par étape Arduino
  9. Générer des Sons Musicaux avec Arduino : Guide Pas à Pas