Crear Salidas RX TX

Claro, si yo tengo un Arduino Mega, y es con el que primero hice todo el SCADA y el programa. Lo que pasa es que como el programa que uso es el Acimut Monitoriza (usa Modbus RTU) y el servidor al minuto se colapsaba y dejaba de funcionar debido finalmente a lo que parece un error a la hora de leer los puertos....pues pensaba que era por el Arduino Mega con Acimut. Así que abrí este hilo para ver si con uno Nano podía hacerlo. Pero ya estoy con el Mega otra vez ya que me he dado cuenta de que el error está en algo de la programación. Solo para aclarar: Con el Arduino Mega y el SCADA consigo conectar todos los componentes (2 termopares a salidas digitales y los 2 phMetros a los RX3 TX3 RX2 TX2) y funciona tomando los datos, mostrandolos...todo perfecto, durante uno o dos minutos. Llegado a ese tiempo, es como si se colapsara el servidor de Acimut y deja de mostrar los datos. Entonces, entiendo que el fallo debe estar en la forma de recogerlos por parte de Arduino (mi programa). Espero haberme explicado bien y pido perdón por lo de los dos hilos que hice, pero porque entendía que eran dos cosas distintas. Ojalá pudierais ayudarme. Como he comentado, soy un poco nuevo en Arduino y lo que hice fue adaptar los programas que te vienen con el pHmetro y con el termopar (juntarlos y que lo hagan todo en el mismo programa). Muchas gracias de antemano. Todo esto es lo que tengo en el programa (además también tengo lo que es el protocolo Modbus para que funcione con el programa) en mi ARDUINO MEGA:

#include <Adafruit_MAX31856.h>
Adafruit_MAX31856 max_A = Adafruit_MAX31856(10, 11, 12, 13);
Adafruit_MAX31856 max_B = Adafruit_MAX31856(9, 11, 12, 13); 
String termoparstring_A = "";
String termoparstring_B = "";  
String inputstring = "";   
String sensorstring = "";
String inputstring1 = "";  
String sensorstring1 = ""; 
boolean input_string_complete = false;                
boolean sensor_string_complete = false;  
boolean input_string_complete1 = false;                
boolean sensor_string_complete1 = false;       
void configure_mb_slave(long baud, char parity, char txenpin);

int update_mb_slave(unsigned char slave, int *regs, unsigned int regs_size);
enum {
        COMM_BPS = 9600, 
        MB_SLAVE = 1,	 
        PARITY = 'n'     
};

enum {        
        T_1,
        T_2,
        pH_1,
        pH_2,  
        MB_REGS	 	 
};

int regs[MB_REGS];
unsigned long wdog = 0;         
unsigned long tprev = 0;         

void setup() {
          configure_mb_slave(COMM_BPS, PARITY, 0);
          Serial3.begin(9600);
          Serial2.begin(9600);
         inputstring.reserve(30);                            
         sensorstring.reserve(60);
         inputstring1.reserve(30);                            
        sensorstring1.reserve(60);
        max_A.begin();
        max_A.setThermocoupleType(MAX31856_TCTYPE_K);
        max_B.begin();
        max_B.setThermocoupleType(MAX31856_TCTYPE_K);
}
                          


void serialEvent3() {                                 
  sensorstring = Serial3.readStringUntil(13);         
  sensor_string_complete = true; 
  sensorstring1 = Serial2.readStringUntil(13);         
  sensor_string_complete1 = true;         
}


void loop() {
        update_mb_slave(MB_SLAVE, regs, MB_REGS);
        termoparstring_A =(max_A.readThermocoupleTemperature());
        termoparstring_B =(max_B.readThermocoupleTemperature());
    
       
        regs [T_1] = (max_A.readThermocoupleTemperature()*100);         
        regs [T_2] = (max_B.readThermocoupleTemperature()*100);       
        regs [pH_1] = (sensorstring.toFloat()*100); 
        regs [pH_2] = (sensorstring1.toFloat()*100); 
    
  sensorstring = "";
  sensorstring1 = "";                                  
  sensor_string_complete = false;
  sensor_string_complete1 = false;     
                                     
  }