rs485-modbus-master.py

Ordinateur industriel monocarte BPI-5202 Loongson 2K1000LAi · Fichier : rs485-modbus-master.py · Langage : Python · Usage : Lire les données d'un capteur industriel via le port RS485 isolé en utilisant le protocole Modbus RTU.

Script Python utilisant la bibliothèque pyserial pour communiquer sur le port série RS485 isolé de la carte.

Installez pyserial via pip. Le BPI-5202 possède deux ports RS485 isolés. Identifiez le bon périphérique (/dev/ttySx) via dmesg. Assurez-vous que le capteur est alimenté par la sortie 24V si nécessaire.

rs485-modbus-master.py

import serial
import time

# Configuration du port série RS485 (ex: /dev/ttyS1)
# Attention: Vérifier les paramètres de débit (baudrate) selon votre capteur
port = '/dev/ttyS1'
baudrate = 9600
parity = serial.PARITY_NONE
stopbits = serial.STOPBITS_ONE
bytesize = serial.EIGHTBITS

try:
    ser = serial.Serial(
        port=port,
        baudrate=baudrate,
        parity=parity,
        stopbits=stopbits,
        bytesize=bytesize,
        timeout=1
    )
    print(f"Ouverture du port {port} réussie.")
    
    # Exemple de trame Modbus RTU pour lire un registre (Adresse 1, Fonction 03, Registre 0, Quantité 1)
    # Note: Ceci est une trame brute, l'utilisation d'une bibliothèque comme 'pymodbus' est recommandée
    # pour la gestion CRC correcte. Ici, on simule l'envoi.
    command = b'\x01\x03\x00\x00\x00\x01\x84\x0A'
    
    while True:
        ser.write(command)
        response = ser.read(7) # Lecture d'une réponse type (7 octets)
        if response:
            print(f"Données reçues: {response.hex()}")
        else:
            print("Aucune réponse")
        time.sleep(1)

except Exception as e:
    print(f"Erreur: {e}")
finally:
    if 'ser' in locals() and ser.is_open:
        ser.close()

← Retour à la fiche