serial_rs485_modbus_master-7.ino

BPI-5202 Loongson 2K1000LAi Embedded Single Board Industrial Computer · File : serial_rs485_modbus_master-7.ino · Language : python · Use case : Communiquer avec un périphérique Modbus RTU via le port série RS485 isolé.

Reads Modbus RTU data from industrial sensors connected to the card's isolated RS485 ports.

The isolated RS485 ports require half-duplex management. Under Linux, check access permissions for /dev/ttySx. The LoongArch architecture uses the standard kernel serial stack. Ensure the IO board or onboard port hardware is configured for RS485 mode if a control GPIO is required.

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

← Back to the board