Giỏ hàng
Danh mục sản phẩm

Lập Trình Mobus Biến tần LS IG5A Arduino PLC Công nghiệp

Đăng bởi Trần Văn Bùi ngày bình luận

Lập Trình Mobus Biến tần LS IG5A  Arduino PLC  Công nghiệp 
Hôm nay mình giới thiệu các bạn kết nối modbus Biến tần LS IG5A 
Đầu tiên các bạn đọc manual Modbus RTU
  • Drv = 3
  • Frq = 7
  • I59 = 0
  • I60 = 1
  • I61 = 3
  • I62 = 0
  • I65 = 2
  • Cài đặt các thông số như sau
  • _Ta vào hàm DRV-03 chọn (3) cài đặt kiểu điều khiển (Drive mode) qua truyền thông RS485.

    _Ta vào hàm DRV-04 chọn (7) cài đặt kiểu thay đổi tần số (Freq mode) qua truyền thông  RS485.

    _Ta vào hàm I/O-60 chọn (1~250) cài đặt địa chỉ trạm cần kết nối với biến tần.

    _Ta vào hàm I/O-61 chọn (9,600 . . . ) cài đặt tốc độ truyền.

    _Ta vào hàm I/O-59 chọn (1) kiểu truyền thông LS BUS, chọn (0) kiểu truyền thông Modbus-RTU.

  • Các thông số lập trình MODBUS RTU

  •  

  • Chúng ta quan tâm ô nhớ 0x0005 là tần số truyền vào chạy biến tần

  • ô nhớ 0x0006 là chiều quay ,Chạy và dừng 

  • + Frequency Reference: 0005 – 1 = 4 (hex)

    + Run Command: 0006 – 1 = 5 (hex)

  • Set 5 (hex) = 2 > Forward run
  • Set 5 (hex) = 4 > Reverse run
  • Set 5 (hex) = 0 > Stop
  • Chương trình chạy như sau Arduino 
  • #include "ModbusMaster.h"               

    #define MAX485_DE      3
    #define MAX485_RE_NEG  2

    ModbusMaster node;   
    #define SW1 A15                
    #define SW2 A14
    #define SW3 A13
    #define SW4 A12
    #define SW5 A11
    #define SW6 A10
    void preTransmission()  {        
      digitalWrite(MAX485_RE_NEG, 1);             
      digitalWrite(MAX485_DE, 1);
    }

    void postTransmission(){
      digitalWrite(MAX485_RE_NEG, 0);
      digitalWrite(MAX485_DE, 0);
    }

    void setup() {  
      pinMode(MAX485_RE_NEG, OUTPUT);
      pinMode(MAX485_DE, OUTPUT);
      
      pinMode(SW1,INPUT_PULLUP);    // STOP
      pinMode(SW2,INPUT_PULLUP);    // FWD
      pinMode(SW3,INPUT_PULLUP);    // 20  HZ
      pinMode(SW4,INPUT_PULLUP);    // 40  HZ
      pinMode(SW5,INPUT_PULLUP);   // 60  HZ
      pinMode(SW6,INPUT_PULLUP);   // 100 HZ
      
      digitalWrite(MAX485_RE_NEG, 0);
      digitalWrite(MAX485_DE, 0);

      Serial2.begin(9600);             

      node.begin(1, Serial2);                         //Slave ID as 6
      node.preTransmission(preTransmission);         //Callback for configuring RS-485 Transreceiver correctly
      node.postTransmission(postTransmission);
    }

    void loop()
    {
      
      int a= digitalRead(SW1);                            
     int b= digitalRead(SW2);
      int c= digitalRead(SW3);
      int d= digitalRead(SW4);                            
      int e= digitalRead(SW5);
      int f= digitalRead(SW6);
    //node.writeSingleRegister(0x40005,2);  
     //node.writeSingleRegister(0x40004,2000); 
      // register -1 dari register normal di datasheet modbus LS-IG5A 40006 (CMD)
      
      if (a == 0){ node.writeSingleRegister(0x40005,2);   }    // putar FWD
      if (b == 0){ 
        node.writeSingleRegister(0x40005,0);                   // stop
        node.writeSingleRegister(0x40004,0);                   // ubah frequensi ke 0 Hz
        } 

      // register -1 dari register normal di datasheet modbus LS-IG5A 40005 (Frekuensi)
      if (c == 0){ node.writeSingleRegister(0x40004,2000); }        // tulis Freq 20 Hz
      if (d == 0){ node.writeSingleRegister(0x40004,4000); }        // tulis Freq 40 Hz
      if (e == 0){ node.writeSingleRegister(0x40004,6000); }        // tulis Freq 60 Hz
      if (f == 0){ node.writeSingleRegister(0x40004,1000); }       // tulis Freq 100 Hz
     
    }

  • Thư viện :https://github.com/4-20ma/ModbusMaster

  • Link tải chương trình mẫu tham khảo ,Với các địa chỉ vào ra các bạn tự thay đổi phù hợp board 

  • https://drive.google.com/file/d/1--gQ97sSK8k11Ca9UQ9qCDMvEsRRt3BN/view

  •  


Cũ hơn Mới hơn