Arduino Modbus - Rtu slave con Raspberry pi usando MAX-485

0

Estoy intentando usar Arduino como esclavo Modbus-RTU y Raspberry Pi como maestro Modbus He interconectado Max485 (RS485 a TTL convertidor) con Arduino y Rs485 a USB en Raspberry Pi. Inicialmente, pude enviar datos de Arduino a Raspberry Pi, pero los datos parecen ser inconsistentes y no se pueden leer la mayoría de las veces

Estoy usando enlace para Arduino Modbus mínimo para la frambuesa pi

Conexiones: DI (max485) - TX (Arduino), DE (max485) -D4 (Arduino), RE (max485) - D4 (Arduino), Ro (max485) - RX (Arduino), Vcc (max485) -5v (Arduino), Gnd (max485) - GND (Arduino)

código para Arduino

#include <ModbusRtu.h>
uint16_t au16data[6] = {};
Modbus slave(5,0,4); 
void setup() {
  slave.begin(19200,SERIAL_8N1 ); 
 }
void loop() {
  au16data[0]=100;
  au16data[1]=200;
  au16data[2]=300;
  au16data[3]=400;
  au16data[4]=500;
  au16data[5]=600;
  slave.poll( au16data, 6 );
  delay(3000);
}

código python

import minimalmodbus
from datetime import datetime
import time

instrument = minimalmodbus.Instrument('/dev/ttyUSB0', 5)
instrument.serial.baudrate = 19200
instrument.serial.bytesize = 8
instrument.serial.parity = minimalmodbus.serial.PARITY_NONE
instrument.serial.stopbits = 1
instrument.serial.timeout =5
instrument.mode = minimalmodbus.MODE_RTU

while(1):
    try:
        val = instrument.read_registers(0,6)
        # Registernumber, number of decimals
        print val
    except IOError:
        error_msg = "Failed to read from device"
        error_time = datetime.now()
        print "IO Error Time",error_time.isoformat(),error_msg 

    except ValueError:
        error_msg = "Failed to read CRC"
        error_time = datetime.now()
        print "Value Error Time",error_time.isoformat(),error_msg
    time.sleep(2)
    
pregunta Zeref

0 respuestas

Lea otras preguntas en las etiquetas