Σελίδα 2 από 2 ΠρώτηΠρώτη 1 2
Εμφάνιση αποτελεσμάτων : 11 έως 14 από 14

Θέμα: Έλεγχος MX2 omron inverter με RS485 modbus rtu

  1. #11
    Μέλος
    Όνομα
    Γιάννης
    Εγγραφή
    Jul 2012
    Περιοχή
    Κοζάνη
    Μηνύματα
    372

    Προεπιλογή

    Παράθεση Αρχικό μήνυμα από picdev Εμφάνιση μηνυμάτων
    Η θα βρεις έτοιμη βιβλιοθήκη η θα υλοποιήσεις το πρωτόκολλο

    Sent from my Redmi 4X using Tapatalk
    Κώδικας:
    /**
    * Modbus master example 1:
    * The purpose of this example is to query an array of data
    * from an external Modbus slave device. 
    * The link media can be USB or RS232.
    *
    * Recommended Modbus slave: 
    * diagslave http://www.modbusdriver.com/diagslave.html
    *
    * In a Linux box, run 
    * "./diagslave /dev/ttyUSB0 -b 19200 -d 8 -s 1 -p none -m rtu -a 1"
    * This is:
    * serial port /dev/ttyUSB0 at 19200 baud 8N1
    * RTU mode and address @1
    */
    
    #include <ModbusRtu.h>
    
    // data array for modbus network sharing
    uint16_t au16data[16];
    uint8_t u8state;
    
    /**
    * Modbus object declaration
    * u8id : node id = 0 for master, = 1..247 for slave
    * u8serno : serial port (use 0 for Serial)
    * u8txenpin : 0 for RS-232 and USB-FTDI 
    * or any pin number > 1 for RS-485
    */
    Modbus master(0,0,9); // this is master and RS-232 or USB-FTDI, PIN 9 PARA INDICAR QUE TRASMITO
    
    /**
    * This is an structe which contains a query to an slave device
    */
    modbus_t telegram;
    
    unsigned long u32wait;
    
    void setup() {
    master.begin( 9600 ); // baud-rate at 19200
    master.setTimeOut( 2000 ); // if there is no answer in 2000 ms, roll over
    u32wait = millis() + 1000;
    u8state = 0; 
    }
    
    void loop() {
    switch( u8state ) {
    case 0: 
    if (millis() > u32wait) u8state++; // wait state
    break;
    case 1: 
    telegram.u8id = 1; // slave address
    telegram.u8fct = 5; // function code (this one is registers read)
    telegram.u16RegAdd = 0; // start address in slave
    telegram.u16CoilsNo = 2; // number of elements (coils or registers) to read
    //telegram.au16reg = au16data; // pointer to a memory array in the Arduino
    
    // PARA EL VARIADOR OMRON MX1: MODBUS RTU 01 05 00 00 FF 00 -> START
    // 01 -> SLAVE (VFD OMRON)
    // 05 -> WRITE COIL
    // 00 00 -> ADDRESS COIL
    // FF 00 -> VALUES TO WRITE IN the COIL FOR RUN
    
    
    telegram.au16reg[0] = 0; 
    telegram.au16reg[1] = 0;
    telegram.au16reg[2] = 0;
    telegram.au16reg[3] = 0;
    telegram.au16reg[4] = 0;
    telegram.au16reg[5] = 0;
    telegram.au16reg[6] = 0;
    telegram.au16reg[7] = 0;
    
    telegram.au16reg[8] = 1;
    telegram.au16reg[9] = 1;
    telegram.au16reg[10] = 1;
    telegram.au16reg[11] = 1;
    telegram.au16reg[12] = 1;
    telegram.au16reg[13] = 1;
    telegram.au16reg[14] = 1;
    telegram.au16reg[15] = 1;
    
    
    master.query( telegram ); // send query (only once)
    delay(3500);
    
    telegram.u8id = 1; // slave address
    telegram.u8fct = 6; // function code (this one is registers read)
    telegram.u16RegAdd = 1; // start address in slave
    telegram.u16CoilsNo = 4; // number of elements (coils or registers) to read
    //telegram.au16reg = au16data; // pointer to a memory array in the Arduino
    //telegram.au16reg = 0000000111110100;
    
    // PARA EL VARIADOR OMRON MX1: MODBUS RTU 01 06 00 01 01 F4 -> CHANGE FQ
    // 01 -> SLAVE (VFD OMRON)
    // 06 -> WRITE IN REGISTE
    // 00 01 -> REGISTER ADDRESS
    // 01 F4 -> VALUE TO WRITE IN THE REGISTER TO CHANGE THE MOTOR FREQUENCY
    
    telegram.au16reg[0] = 0;
    telegram.au16reg[1] = 0;
    telegram.au16reg[2] = 0;
    telegram.au16reg[3] = 0;
    telegram.au16reg[4] = 0;
    telegram.au16reg[5] = 0;
    telegram.au16reg[6] = 0;
    telegram.au16reg[7] = 1;
    
    telegram.au16reg[8] = 1;
    telegram.au16reg[9] = 1;
    telegram.au16reg[10] = 1;
    telegram.au16reg[11] = 1;
    telegram.au16reg[12] = 0;
    telegram.au16reg[13] = 1;
    telegram.au16reg[14] = 0;
    telegram.au16reg[15] = 0;
    
    master.query( telegram ); // send query (only once)
    delay(3500);
    telegram.u8id = 1; // slave address
    telegram.u8fct = 5; // function code (this one is registers read)
    telegram.u16RegAdd = 1; // start address in slave
    telegram.u16CoilsNo = 2; // number of elements (coils or registers) to read
    //telegram.au16reg = au16data; // pointer to a memory array in the Arduino
    
    // PARA EL VARIADOR OMRON MX1: MODBUS RTU 01 05 00 00 00 00 -> STOP
    // 01 -> SLAVE (VFD OMRON)
    // 05 -> WRITE COIL
    // 00 00 -> COIL'S ADDRESS
    // 00 00 -> VALUE TO WRITE FOR STOP
    
    telegram.au16reg[0] = 0;
    telegram.au16reg[1] = 0;
    telegram.au16reg[2] = 0;
    telegram.au16reg[3] = 0;
    telegram.au16reg[4] = 0;
    telegram.au16reg[5] = 0;
    telegram.au16reg[6] = 0;
    telegram.au16reg[7] = 0;
    telegram.au16reg[8] = 0;
    telegram.au16reg[9] = 0;
    telegram.au16reg[10] = 0;
    telegram.au16reg[11] = 0;
    telegram.au16reg[12] = 0;
    telegram.au16reg[13] = 0;
    telegram.au16reg[14] = 0;
    telegram.au16reg[15] = 0;
    master.query( telegram ); // send query (only once)
    delay(3500);
    u8state++;
    break;
    case 2:
    master.poll(); // check incoming messages
    if (master.getState() == COM_IDLE) {
    u8state = 0;
    u32wait = millis() + 100; 
    }
    break;
    }
    }
    Ο κώδικας που βρήκα για το inverter omron MX2 είναι ο παραπάνω. Το θέμα είναι ότι δεν καταλαβαίνω πως δουλεύει. Ο δημιουργός του αναφέρει ότι δεν μπόρεσε να τον
    κάνει να λειτουργήσει. Την βιβλιοθήκη την έχω εγκαταστήσει σωστά αλλά δεν αναφέρει την συνδεσμολογία του RE, DE στο ΜΑΧ485.
    Πως αναλύει την εντολή MODBUS RTU 01 05 00 00 FF 00 -> START

    Αν μπορεί κάποιος να βοηθήσει τον ευχαριστώ προκαταβολικά.


    0 Not allowed! Not allowed!

  2. #12
    Μέλος Το avatar του χρήστη picdev
    Όνομα
    akis
    Εγγραφή
    Jul 2007
    Περιοχή
    ____
    Μηνύματα
    7.375

    Προεπιλογή

    Νομίζω ότι σου λείπουν βασικές γνώσεις για το modbus .
    Το έχεις μελετήσει ?
    Σε τι επίπεδο προγραμματισμού βρίσκεσαι ?
    Δεν είναι και δύσκολο το modbus αλλά πρέπει να ξέρεις να φτιάχνεις πακέτα να δουλεύεις με tasks, να υπολογίσεις ένα crc

    Sent from my Redmi 4X using Tapatalk

    0 Not allowed! Not allowed!

  3. #13
    Μέλος
    Όνομα
    Γιάννης
    Εγγραφή
    Jul 2012
    Περιοχή
    Κοζάνη
    Μηνύματα
    372

    Προεπιλογή

    Παράθεση Αρχικό μήνυμα από picdev Εμφάνιση μηνυμάτων
    Νομίζω ότι σου λείπουν βασικές γνώσεις για το modbus .
    Το έχεις μελετήσει ?
    Σε τι επίπεδο προγραμματισμού βρίσκεσαι ?
    Δεν είναι και δύσκολο το modbus αλλά πρέπει να ξέρεις να φτιάχνεις πακέτα να δουλεύεις με tasks, να υπολογίσεις ένα crc

    Sent from my Redmi 4X using Tapatalk
    Η αλήθεια είναι ότι γνωρίζω μόνο από στοιχειώδη προγραμματισμό PLC σε επίπεδο ladder - FB.
    Προς το παρόν αυτό που με ενδιαφέρει είναι να πετύχω βασικές κινήσεις με μΕ arduino όπως START, REF FREQ, STOP, REVERSE.

    0 Not allowed! Not allowed!

  4. #14
    Μέλος Το avatar του χρήστη picdev
    Όνομα
    akis
    Εγγραφή
    Jul 2007
    Περιοχή
    ____
    Μηνύματα
    7.375

    Προεπιλογή

    Δεν νομίζω να μπορείς το κάνεις τόσο εύκολα , αφού στο PLC υπάρχουν όλα έτοιμα .
    Εκτός αν βρεις κάποια έτοιμη βιβλιοθήκη

    Sent from my Redmi 4X using Tapatalk

    0 Not allowed! Not allowed!

Σελίδα 2 από 2 ΠρώτηΠρώτη 1 2

Παρόμοια Θέματα

  1. Απαντήσεις: 20
    Τελευταίο Μήνυμα: 08-05-18, 13:48
  2. Modbus Address Model
    By picdev in forum Αυτοματισμοί
    Απαντήσεις: 6
    Τελευταίο Μήνυμα: 27-06-17, 14:25
  3. RS485 3.3V
    By acmilangr in forum Γενικά
    Απαντήσεις: 6
    Τελευταίο Μήνυμα: 16-12-11, 18:01
  4. RS485 TO ETHERNET
    By ΜΓΙΕΧΩΑΡΛΓΗΙΣΑ in forum Κυκλώματα για Η/Υ
    Απαντήσεις: 3
    Τελευταίο Μήνυμα: 08-07-11, 06:37

Tags for this Thread

Δικαιώματα - Επιλογές

  • Δημιουργία θεμάτων: Όχι
  • Υποβολή μηνυμάτων: Όχι
  • Σύναψη αρχείων: Όχι
  • Επεξεργασία μηνυμάτων: Όχι
  •  
  • BB code: σε λειτουργία
  • Smilies: σε λειτουργία
  • [IMG]: σε λειτουργία
  • [VIDEO] code is σε λειτουργία
  • HTML: εκτός λειτουργίας