serial_rs485_modbus_master-7.ino

Ordinateur industriel monocarte BPI-5202 Loongson 2K1000LAi · Fichier : serial_rs485_modbus_master-7.ino · Langage : python · Usage : Communiquer avec un périphérique Modbus RTU via le port série RS485 isolé.

Lis des données Modbus RTU depuis des capteurs industriels connectés aux ports RS485 isolés de la carte.

Les ports RS485 sont isolés et nécessitent une gestion du demi-duplex. Sous Linux, vérifiez les permissions d'accès à /dev/ttySx. L'architecture LoongArch utilise la pile série standard du noyau. Assurez-vous que le matériel de la carte IO ou du port onboard est configuré pour le mode RS485 si un GPIO de contrôle est requis.

serial_rs485_modbus_master-7.ino

#!/usr/bin/env python3
"""
BPI-5202 RS485 Modbus Master
Prérequis : pip install pymodbus
Le port RS485 nécessite souvent un contrôle RTS pour le demi-duplex (vérifier GPIO ou auto-direction)."""
from pymodbus.client import ModbusSerialClient
import time

def main():
    # Configuration typique RS485 BPI-5202 (port série UART dédié)
    # /dev/ttySx dépend de la carte d'extension ou des ports onboard
    client = ModbusSerialClient(
        port='/dev/ttyS1',  # À adapter selon le port physique
        baudrate=9600,
        bytesize=8,
        stopbits=1,
        parity='N',
        timeout=1
    )
    
    try:
        client.connect()
        print("Connecté au bus RS485...")
        while True:
            # Lecture de 10 registres de maintien à partir de l'adresse 0
            # Device ID à adapter (ex: 1)
            result = client.read_holding_registers(address=0, count=10, slave=1)
            if not result.isError():
                print(f"Registres lus: {result.registers}")
            else:
                print("Erreur de lecture Modbus")
            time.sleep(1)
    except Exception as e:
        print(f"Erreur: {e}")
    finally:
        client.close()

if __name__ == '__main__':
    main()

← Retour à la fiche