serial-industrial-modbus-3.ino

BIOSSTAR BIWCL-PAT: 3.5" Industrial SBC with Intel Wildcat Lake · File : serial-industrial-modbus-3.ino · Language : python · Use case : Lecture de données d'un automate industriel via un port série RS485 configuré en Modbus RTU.

Python example showing RS485 serial port configuration for Modbus RTU communication.

BIOSOTAR serial ports are mapped to /dev/ttySx. RS485 is common for industrial automation. Ensure port mode (RS232/422/485) is set in BIOS or via hardware jumpers if applicable. Use 'pyserial' library.

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

← Back to the board