Anuncio TOP B1 Mensaje

Colapsar

Anuncio TOP B4 Mensaje (Mobile)

Colapsar

Anuncio

Colapsar
No hay anuncio todavía.

Ayuda Arduino Slave Modbus + Softlogix5800

Colapsar
X
 
  • Filtrar
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes

  • Ayuda Arduino Slave Modbus + Softlogix5800

    Que tal ings.

    estoy haciendo un proyecto hobby, he intentado comunicar Arduino UNO R3 por modbus rtu hacia softlogix 5800 por puerto USB/serial a TTL para el arduino, se que funciona un ing. conocido ya lo hizo pero oh! sorpresa no me quiere pasar el sketch por mas que hicimos un trato apalabrado se echo para atras XD jaja lo comprendo le tomo mucho desarrollarlo según el(con librerias y el .acd del rslogix5000 tomadas de internet gratuitas etc etc lo que logro hacer el, que yo no, es la conexion con el softlogix. por que no entiendo quizas si me falta algo en el sketch de arduino(soy muy nuevo en arduino) o no configuro bien el Archivo maestro en rslogix5000.

    yo he desarrollado mi sketch ya logre que el arduino hable modbus rtu probandolo con el software Mtester leeo y escribo sin problemas en el arduino, leeo las entradas y salidas en 2 palabras de 16 bits una para entradas y una para salidas en modbus los registros 40001 y 40002, asi como otros 9 registros mas 6 entradas analogas en los registros 40003 al 40007 y 3 salidas analogas en los registros 40008 al 40010.

    por que utilice solo holdingregisters por la sencilla razon de que no se usar bien la libreria simple modbus y modificar mucho el sketch ya que no le se casi nada al arduino.

    en otra libreria habia logrado comunicar con el Mtester registros de bits inputs y coils pero me daba muchos problemas de comunicacion por lo que deje de lado esa libreria.

    el sketch es el siguiente:
    Código:
    #include <SimpleModbusSlave.h>
    
    enum 
    {     
      ADC_VAL,     
      PWM_VAL,    
      HOLDING_REGS_SIZE = 11 // leave this one
    
    };
    
    unsigned int holdingRegs[HOLDING_REGS_SIZE];
    
    void setup()
    {
      
    	
      modbus_configure(&Serial, 9600, SERIAL_8N2, 2, 2, HOLDING_REGS_SIZE, holdingRegs);
    
      modbus_update_comms(9600, SERIAL_8N2, 2);
      
      pinMode(3, INPUT);
      pinMode(4, INPUT);
      pinMode(5, INPUT);
      pinMode(6, INPUT);
    
      pinMode(7, OUTPUT);
      pinMode(8, OUTPUT);
      pinMode(12, OUTPUT);
      pinMode(13, OUTPUT);
    
    
     // Pines 9, 10 y 11 son salidas analogas 
    
      pinMode(9, OUTPUT);
      pinMode(10, OUTPUT);
      pinMode(11, OUTPUT);
    
    }
    
    void loop()
    {
    
      
      modbus_update();
      
    // leer pineas de entradas
      boolean p1 = digitalRead(3);
      boolean p2 = digitalRead(4);
      boolean p3 = digitalRead(5);
      boolean p4 = digitalRead(6);
    
      
      int total = (p1 * 1) + (p2 * 2) + ( p3 * 4) + ( p4 * 8); // + ( p5 * 16) + ( p6 * 32);  //Aqui se supone que pasa de binario a decimal y suma cada entrada 
    
    // Entradas digitales del pin 3 al 6
         holdingRegs[0] = total;
    
    // Salidas digitales del pin 7,8,12 y 13   
    
    int WordOutputs = holdingRegs[1];
    
    int uno = 1;
    int intPin7 = WordOutputs & uno;
    int Pin7 = intPin7/1;
    
    digitalWrite(7, Pin7);
    
    int dos = 2;
    int intPin8 = WordOutputs & dos;
    int Pin8 = intPin8/2;
    
    digitalWrite(8, Pin8);
    
    int cuatro = 4;
    int intPin12 = WordOutputs & cuatro;
    int Pin12 = intPin12/4;
    
    digitalWrite(12, Pin12);
    
    int ocho = 8;
    int intPin13 = WordOutputs & ocho;
    int Pin13 = intPin13/8;
    
    // Entrdas Analogas
    
       holdingRegs[2] = analogRead(A0);
       holdingRegs[3] = analogRead(A1);
       holdingRegs[4] = analogRead(A2);
       holdingRegs[5] = analogRead(A3);
       holdingRegs[6] = analogRead(A4);
       holdingRegs[7] = analogRead(A5);
    
    // Salidas Analogas
    
        analogWrite(9, holdingRegs[8]/4);
        analogWrite(10, holdingRegs[9]/4);
        analogWrite(11, holdingRegs[10]/4);
      
    }
    este es el ModbusMaster.ACD V16 que es la que estoy usando(la misma que usa el ing. que conosco) de rockwell lo puedes bajar de la pagina de rockwell pero para facilitarles les paso el enlace de google drive.

    https://drive.google.com/open?id=0B-...kI4bWprMUpfX0U


    si alguien puede ayudarme le puedo pasar los software para trabajar en el desarrollo.

  • #2
    Buenas tardes, encontró la solución?

    Comentario

    Anuncio Footer B3 Mensaje

    Colapsar

    Anuncio Footer B5 Mensaje (Mobile) 300x600

    Colapsar
    Trabajando...
    X