รบกวนสอบถามข้อมูลหน่อยครับ
เนื่องจากตอนนี้ผมกำลัง ทำการติดต่อสื่อสารระหว่าง NodeMCU และ PLC FX3U ผ่าน Modbus RTU Protocal โดยใช้อุปกรณ์แปลงสัญญาณ TTL to RS485 แต่ติดปัญหาที่ไม่สามารถเชื่อมต่อกันได้ (ไฟแสดงสถานะการเชื่อมต่อของ TTL to RS485 ไม่แสดง (ไฟ RX TX ที่ตัวอุปกรณ์ TTL to RS485)) พอจะทราบไหมครับว่าผมจะต้องตั้งค่าหรือแก้ไขโค้ดส่วนใดของ NodeMCU เพิ่มเติมครับ
รายละเอียดอุปกรณ์
- NodeMCU V3 ESP8266
- TTL to RS485 : http://wow.in.th/vbUu
โดยกำหนดให้การเชื่อมต่อมีดังนี้
- อัตราการส่งผ่านข้อมูลอยู่ที่ 9600
- กำหนดให้ NodeMCU เป็น Master
- กำหนดให้ PLC FX3U เป็น Slave *** โค้ดที่ตัว PLC ไม่มีปัญหา
*ข้อมูลการเชื่อมต่อ NodeMCU
- เชื่อมต่อ NodeMCU เข้ากับ TTL to RS485 โดยขา D7 ต่อกับ TX และ D8 ต่อกับ TX ของ TTL to RS485
*** รบกวนช่วยเช็คโค้ดให้หน่อยได้ไหมครับว่าผมมีใดผิดหรือไม่ ถ้าหากโค้ดถูกแล้วผมจะต้องตั้งค่าส่วนใดเพิ่มเติมไหมครับก่อนที่จะอ
---------------------------------------------------------------------------------------------------------
Code in NodeMCU :
#include <ModbusMaster232.h>
#include <SoftwareSerial.h>
// Instantiate ModbusMaster object as slave ID 1
ModbusMaster232 node(1);
void setup()
{
Serial.begin(9600);
delay(100);
node.begin(9600); // Modbus RTU
delay(100);
Serial.println("Connected ");
Serial.println("Modbus RTU Master Online");
}
void loop()
{
///////// Holding Register [0] A [9] = 10 Holding Registers Escritura
///////// Holding Register [0] A [9] = 10 Holding Registers Writing
int Mdelay = 0;
node.readHoldingRegisters(0, 1);
Serial.print("[0] ");
Serial.print(node.getResponseBuffer(0));
node.clearResponseBuffer();
delay(Mdelay);
node.readHoldingRegisters(1, 1);
Serial.print(" [1] ");
Serial.print(node.getResponseBuffer(0));
node.clearResponseBuffer();
delay(Mdelay);
node.readHoldingRegisters(2, 1);
Serial.print(" [2] ");
Serial.print(node.getResponseBuffer(0));
node.clearResponseBuffer();
delay(Mdelay);
node.readHoldingRegisters(3, 1);
Serial.print(" [3] ");
Serial.print(node.getResponseBuffer(0));
node.clearResponseBuffer();
delay(Mdelay);
node.readHoldingRegisters(4, 1);
Serial.print(" [4] ");
Serial.print(node.getResponseBuffer(0));
node.clearResponseBuffer();
delay(Mdelay);
node.readHoldingRegisters(5, 1);
Serial.print(" [5] ");
Serial.print(node.getResponseBuffer(0));
node.clearResponseBuffer();
delay(Mdelay);
node.readHoldingRegisters(6, 1);
Serial.print(" [6] ");
Serial.print(node.getResponseBuffer(0));
node.clearResponseBuffer();
delay(Mdelay);
node.readHoldingRegisters(7, 1);
Serial.print(" [7] ");
Serial.print(node.getResponseBuffer(0));
node.clearResponseBuffer();
delay(Mdelay);
node.readHoldingRegisters(8, 1);
Serial.print(" [8] ");
Serial.print(node.getResponseBuffer(0));
node.clearResponseBuffer();
delay(Mdelay);
node.readHoldingRegisters(9, 1);
Serial.print(" [9] ");
Serial.println(node.getResponseBuffer(0));
node.clearResponseBuffer();
delay(Mdelay);
///////// Holding Register [10] A [19] = 10 Holding Registers Lectura
///// Holding Register [10] A [19] = 10 Holding Registers Reading
node.writeSingleRegister(10, random(1, 10 ));
node.writeSingleRegister(11, random(1, 100 ));
node.writeSingleRegister(12, random(1, 10 ));
node.writeSingleRegister(13, random(1, 10 ));
node.writeSingleRegister(14, random(1, 10 ));
node.writeSingleRegister(15, random(1, 10 ));
node.writeSingleRegister(16, random(1, 10 ));
node.writeSingleRegister(17, random(1, 1000 ));
node.writeSingleRegister(18, random(1, 10 ));
node.writeSingleRegister(19, random(1, 1000 ));
}
ต้องขออภัย ที่ร้านยังไม่มีข้อมูล support สำหรับ PLC FX3U ครับ
ทำอย่างไรหรือครับไม่ทราบว่ามีตัวอย่างการต่อวงจรมั้ยครับ ผมก็ติดปัญหาเหมือนกันมา 1 เดือนแล้วยังแก้ไม่ได้เลยครับ