Prueba de RS-485 en la versión M-Duino PLUS
2 enero, 2019 por
Prueba de RS-485 en la versión M-Duino PLUS
Alejandro Jabalquinto

Introducción


En este post, se muestra cómo probar el RS-485 en Versión M-Duino PLUS.

Lo primero que debes saber es que la versión RS-485 PLUS tiene comunicación Full y Half-Duplex. Controlando el interruptor dip, debes seleccionar si quieres trabajar en Full o Half-Duplex. Hay internamente instalado un transmisor MAX485 Half duplex y MAX485. Si trabajas en Full-Duplex utilizará el MAX485 Half-Duplex para recibir los datos y el transmisor MAX485 para enviarlos.

La asignación de pines se muestra a continuación:

Max485Arduino Pins
RX (RO)RX Serial3 (15)
TX (DI)TX Serial3 (14)
RE (inverted logic)11
DE46

 

Requisitos 

Configuración

Para hacer la prueba Full-Duplex, debes conectar el A, B (receptores) al Y, X(transmisores). Para el Half-Duplex, debes conectarte con otro dispositivo con RS-485 y seleccionar si quieres transmitir o recibir datos con un comentario o descomentar el comando "#define":

En el boceto Half-Duplex:

  • Para transmitir:

#define TEST_RS485_TX
//#define TEST_RS485_RX
  • Para recibir

//#define TEST_RS485_TX
#define TEST_RS485_RX


Software

A continuación se muestra el esquema de prueba para Half-Duplex:

(por defecto está en modo transmisor)

#define TEST_RS485_TX
//#define TEST_RS485_RX
 
int _rs485DE = 46;
int _rs485RE = 11;

///////////////////////////////////////////////////////////////////////////////
void setup() {
  Serial.begin(9600L);
  Serial.println("M-Duino PLUS RS-485 test started");
  
  Serial3.begin(9600L);
  pinMode(_rs485RE, OUTPUT);
  digitalWrite(_rs485RE, LOW);
  pinMode(_rs485DE, OUTPUT);
  digitalWrite(_rs485DE, LOW);
}
//////////////////////////////////////////////////////////////////////////////
void loop() {

#if defined TEST_RS485_TX
  digitalWrite(_rs485RE, HIGH);
  digitalWrite(_rs485DE, HIGH);
  Serial3.write(0x12);
  Serial3.flush();
  digitalWrite(_rs485DE, LOW);
  digitalWrite(_rs485RE, LOW);
  delay(1000);
#endif // TEST_RS485_TX

#if defined TEST_RS485_RX
  if (Serial3.available()) {
    if (Serial3.read() == 0x12) {
      Serial.println("RX");
    }
   }
#endif // TEST_RS485_RX
}

 

A continuación se muestra el esquema de prueba para Full-Duplex:

int _rs485DE = 46;
int _rs485RE = 11;

///////////////////////////////////////////////////////////////////////////////
void setup() {
  Serial.begin(9600L);
  Serial.println("M-Duino PLUS RS-485 test started");
  
  Serial3.begin(9600L);
  pinMode(_rs485RE, OUTPUT);
  digitalWrite(_rs485RE, LOW);
  pinMode(_rs485DE, OUTPUT);
  digitalWrite(_rs485DE, LOW);
}
//////////////////////////////////////////////////////////////////////////////
void loop() {
  digitalWrite(_rs485RE, HIGH);
  digitalWrite(_rs485DE, HIGH);
  Serial3.write(0x12);
  Serial3.flush();
  digitalWrite(_rs485DE, LOW);
  digitalWrite(_rs485RE, LOW);
  delay(1000);

  if (Serial3.available()) {
    if (Serial3.read() == 0x12) {
      Serial.println("RX");
    }
   }
}


Ver también

Página de ayuda de la familia M-Duino RS-485

Prueba de RS-485 en la versión M-Duino PLUS
Alejandro Jabalquinto
2 enero, 2019
Compartir
Archivar

¿Buscas tu controlador lógico programable ideal?

Echa un vistazo a esta comparativa de producto de varios controladores industriales basados en Arduino.

Comparamos entradas, salidas, comunicaciones y otras especificaciones con las de los equipos de otras marcas destacadas.


Comparación PLC industrial>>>

¿Quieres más información?

¡Rellena el formulario!

¡Cuéntame más!