serial-industrial-modbus-3.ino

BIOSSTAR BIWCL-PAT: SBC industrial de 3,5" con Intel Wildcat Lake · Archivo : serial-industrial-modbus-3.ino · Lenguaje : python · Uso : Lecture de données d'un automate industriel via un port série RS485 configuré en Modbus RTU.

Exemple Python montrant la configuration d'un port série RS485 pour la communication Modbus RTU.

Los puertos serie de BIOSOTAR se mapean a /dev/ttySx. RS485 es común para automatización industrial. Asegúrese de que el modo del puerto esté configurado en BIOS o mediante jumpers. Use la librería 'pyserial'.

serial-industrial-modbus-3.ino

import serial
import time

# Configuration du port série pour RS485 sur BIWCL-PAT
# Les ports série sont généralement ttyS0 à ttyS3. Vérifier avec 'dmesg' ou 'ls /dev/ttyS*'
PORT = '/dev/ttyS0' 
BAUDRATE = 9600
TIMEOUT = 1

try:
    # Ouverture du port
    ser = serial.Serial(PORT, BAUDRATE, timeout=TIMEOUT)
    print(f"Port {PORT} ouvert.")

    # Exemple de trame Modbus RTU Master (Lecture de registres) 
    # Adresse: 01, Fonction: 03 (Read Holding Registers), Start: 0000, Qty: 0001, CRC: X X
    # Note : Le calcul CRC doit être fait dynamiquement dans un vrai projet (bibliothèque pymodbus recommandée)
    request_cmd = b'\x01\x03\x00\x00\x00\x01\x84\x0A'
    
    while True:
        # Envoi de la commande
        ser.write(request_cmd)
        time.sleep(0.1) # Délai de réponse de l'esclave Modbus
        
        # Lecture de la réponse
        response = ser.read(ser.in_waiting if ser.in_waiting else 7)
        
        if response:
            print(f"Reçu (Hex): {response.hex()}")
            # Ici, vous décoderiez les données selon la trame Modbus
        else:
            print("Aucune réponse de l'esclave RS485.")
            
        time.sleep(1)

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

← Volver a la ficha