rs485-modbus-master.py

Computador industrial de placa única BPI-5202 Loongson 2K1000LAi · Archivo : rs485-modbus-master.py · Lenguaje : Python · Uso : Lire les données d'un capteur industriel via le port RS485 isolé en utilisant le protocole Modbus RTU.

Script en Python que utiliza la biblioteca pyserial para comunicarse a través del puerto RS485 aislado.

Instale pyserial vía pip. El BPI-5202 tiene dos puertos RS485 aislados. Identifique el dispositivo correcto (/dev/ttySx) mediante dmesg. Asegúrese de que el sensor esté alimentado por la salida de 24V si es necesario.

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()

← Volver a la ficha