serial-industrial-modbus-3.ino

BIOSSTAR BIWCL-PAT : SBC industrielle 3,5" Intel Wildcat Lake · Fichier : serial-industrial-modbus-3.ino · Langage : python · Usage : 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.

Les ports série de la BIOSOTAR sont mappés sur /dev/ttySx. Pour l'automatisation industrielle, RS485 est courant. Assurez-vous que le mode du port (RS232/422/485) est configuré dans le BIOS ou via les sauts matériels si applicable. Utilisez la bibliothèque '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()

← Retour à la fiche