สอบถาม ตัวอย่างโค้ด การใช้งาน modbus rtu หรือ modbus TCP กับ node mcu กับ blynk app ครับ

รบกวนสอบถาม ตัวอย่างโค้ด การใช้งาน modbus rtu หรือ modbus TCP กับ node mcu กับ blynk app ครับ คือผมอยากเอาไปติดต่อกับ อุปกรณ์ modbus device ครับ

ใช้อะไรเขียนครับ Visual Basic หรอ

คือผมจะเอา data จาก modbus device หรือ PLC ขึ้น internet เพื่อ control ,mornitor ผ่าน App หรือ dashboard อะครับ พอจะมาแนวทางไหมครับ หรือ ว่าต้องใช้ node-red ครับ พอดีกำลังศึกษาอะครับ

ตอนนี้มีดาต้า output ที่จะส่งไป app หรือยังครับ

มีแล้วครับ จาก modbus PLC mitsu ครับ ขอบคุณครับ

ขอดูชนิดของข้อมูลหน่อยครับว่าส่งค่าอะไรมาบ้าง ชนิดไหนบ้าง และส่งผ่าน potocal อะไรได้บ้าง

Analog , in , out , digital in ,out integer 16 ,32 bit ผาน Modbus RTU , TCP ครับ

ส่งผ่านทาง Tx Rx ได้ครับ ประมาณนี้

icp_ _blynk_modbus_device

Modbus

ใช้ MODBUS แบบไหน ถ่ายมาดูหน่อยครับ
มีแบบ RS485 และ RS232 ถ้าใช้ 232
โค้ต ประมาณนี้

#include <ModbusMaster232.h>


// Instantiate ModbusMaster object as slave ID 1
ModbusMaster232 node(1);

//functions modbus
//node.readHoldingRegisters(,)
//node.writeSingleRegister(,)
// node.readInputRegisters(,);
// node.writeSingleCoil(,)
// node.readWriteMultipleRegisters(,,,)

const int analogInPin = A0; 
int led = 0 ;
int response = 0;
  
// Define one address for reading
#define address 1
// Define the number of bits to read
#define bitQty 1

void setup()
{
    pinMode(4, OUTPUT);
  // Initialize Modbus communication baud rate
  node.begin(19200);
  delay(100);
}


void loop()
{


 /// Write Digital Outputs - Holding Register[4]  /->  [5] ////////////
 response = node.readHoldingRegisters(4, 1); 
  /// get value - captura valor
 int led = node.getResponseBuffer(0);
 // GPIO 04 
 digitalWrite(4,led);
 // Clear the response buffer
 node.clearResponseBuffer();
    
  delay(100);
  
  // Send Random Value  - Holding Register[5]    /->  [6]  ////////////
  node.writeSingleRegister(5, random(1, 999 )); 
  
 delay(100);
  
  //Read Analog Input - Holding Register[6]     /->  [7] ////////////
  node.writeSingleRegister(6, analogRead(analogInPin) ); 


 delay(100);

 // Clear the response buffer
 node.clearResponseBuffer();
  

}

หรือ




void setup() {

  // Note: For viewing data in the serial monitor, you should open
  // the Serial at the same speed
  Serial.begin(9600);
  delay(100);

  //Print hello message.
  Serial.println("Hello this is RS-232 communication receive data example.");
}



void loop() { 

  // If data in response buffer
  if (Serial.available())
  {
    while (Serial.available()) {
      // Read one byte from the buffer      
      // Print data received in the serial monitor    
      Serial.print(char(Serial.read()));
    }

    Serial.print("\n");
  }

  delay(100);

}

ต้วนี้ library ที่ต้องใช้

ดึงค่ามาอ่านที่ MCU ให้ได้เรื่องส่งไป blynk ไม่ยากค่อยต่อไปอีก step หนึ่งครับ

รบกวนสอบถามครับ มีแบบrs485ไหมครับ ?ถ้าไม่มีผมคงหา หัวแปลงจาก 232 เป็น485ครับ ยังไงก็ขอบคุณมากๆครับ

ส่วนใหญ่จะใช้ Max485 ร่วมด้วยครับ

ใช้ code ที่ให้มาทดสอบ กับ mxa 485ได้เลยครับ ขอบคุณมากครับ