Arduino Modbus RTU | EP.3 แนะนำการใช้งาน Arduino Modbus RTU Master (พร้อมตัวอย่าง)
ฝัง
- เผยแพร่เมื่อ 27 มิ.ย. 2020
- แนะนำการใช้งาน Arduino Modbus RTU Master เพื่อให้ Arduino สามารถดึงข้อมูลจากอุปกรณ์ที่มีมาตรฐานการสื่อสารผ่าน Modbus RTU Protocol
อุปกรณ์ที่ใช้
1. Arduino uno
2. TTL to RS485 : AC-3B485 จาก www.smicrothai.com/smicro_9.php
3. USB to RS485 : www.arduinoall.com/product/57...
4. Modbus Simulator : ModRSim2
5. Modbus Library : github.com/4-20ma/ModbusMaster - วิทยาศาสตร์และเทคโนโลยี
หากเพื่อนๆท่านใดมีข้อสงสัย ติชม สามารถคอมเมนต์ลงในช่องคอมเมนต์ได้นะครับ
โจทย์ ข้อนี้ต่อลักษณะเดียวกันได้ไหมครับ eleceasy.com/t/code-arduino-ec-sensor/3894/6?u=remy_martin
ถ้าอุปกรณ์นั้นเป็น modbus protocol ก็ลักษณะเดียวกันครับ ทดลองเอา usb to rs485 ต่อกับอุปกรณ์ผ่านขา A+, B- และลองอ่านค่าด้วย modbus simulator program ดูครับ ถ้าอ่านได้แสดงว่าสามารถใช้ arduino อ่านด้วย modbus rtu ได้ครับ
@@by4972 อันกลับทางกันครับ ใช้ arduino อ่านค่ากลับมาจาก เซนเซอร์ เราใช้ เสียบที่ Tx Rx ของ Arduino เลยใช่ไหมครับ
ต้องถามก่อนว่า output ที่ออกมาจาก sensor คืออะไรครับ จากที่ผมดูอุปกรณ์ประกอบด้วย 2 ส่วน คือ
1. sensor ใช้อ่านค่าที่ต้องการวัด
2. Trasnmitter แปลงค่าจาก sensor ไปเป็น modbus rtu protocol
หาก output ของ sensor เป็น 4-20ma หรือ 0-5V ก็ใช้ arduino อ่านค่าผ่าน analog input ครับ ถ้าเป็นกรณีนี้จะต่อเข้าที่ Rx และ Tx ไม่ได้ครับ
@@by4972 อ่อครับขอบคุณครับ
เยี่ยมมากเลยคับ ขอบคุณคับ
อาจารย์ครับ ถ้าเราจะให้ ทางฝั่ง Arduino เป็น slave แล้ว เรามี library ของ modbus rtu slave ในฝั่ง arduino มั๊ย ครับ
มีแนวทางเขียน code slave ไหมครับ ขอบคุณมากครับ
ตัวแปรอะเรย์ Data_Modbus[xx] ค่าสูงสุดของ xx กำหนดได้กี่ค่าครับ?
ถ้าต้องการเขียนไป modbus ทำไงครับ ขอบคุณครับ
มีรับสอน modbus ส่วนตัว ไหมครับ?
ผมใช้max232 แทน ttl to rs485 อัพลงบอดได้แล้วแต่มันไม่อ่านค่าเลยครับ
รบกวนขอcodeตัว Master และ Slave ด้วยครับ
รบกวนขอ Code เพื่อใช้กับ Arduino Mega 2560 ด้วยครับ..
อยากติดต่อสอบถามครับ
รอ slave อยู่ครับผม เคยใช้แต่ ตัวที่ตัวคุม RE DE จะลองซื้อมาทดลองบ้าง
เดี่ยวจะรีบจัดให้ รอติดตามได้เลยครับผม
@@by4972 ขอบคุณครับพี่
ขออีเมล์หน่อยครับ จะส่งตัวอย่างให้ ไม่มีเวลาทำคลิปเลยครับ
@@by4972 manza12298@gmail.com ครับผม
แบบ slave ลองยังคับ ใช้ libary ตัวไหนคับ
เคยลองทำครับ จะอัพเดทให้อีกทีครับ
ผมเอามาใช้กับ PM2200 ได้ไหมครับ
ใช้ได้ครับ แต่ต้องรู้ modbus address ครับ
อันนี้ยังไม่ได้ลองเขียนค่ากลับไปใช่ไหมครับ
ยังไม่ได้เขียนค่ากลับครับผม
@@by4972 สอนเขียนกลับหน่อยครับ
ขอ Code ตัวอย่างหน่อยครับ
wichian4406@gmail.com
ส่งให้แล้วครับ
ไม่มี code แจก หรือครับ
apisak2514@yahoo.co.th ขอบคุณครับ
ส่งให้แล้วครับ
มี code เขียนไป modbus ไหมครับ
หรือ อ่านได้อย่างเดียวครับ
ขอ code ตัวอย่างได้มั๊ยครับ kaki_kh@hotmail.com
พี่ครับ ผมขอ code ตัวอย่างเชื่อมต่อกับ slave หน่อยครับ Email : Phitthaya.yawi@bumail.net ขอบคุณครับ
ส่งเมล์ให้แล้วนะครับผม
ขอบคุณครับได้รับแล้วครับ พี่ครับถ้าผมใช้บอร์ด mega 2560 เป็น mater ต้องปรับเปลี่ยนcodeตรงไหนบ้างครับ
@@by4972 ขอด้วยคนนะครับ aekk123-456@hotmail.com
ส่งให้แล้วครับผม
@@by4972 ขอ code slave ด้วยคนครับ sukrit.ktit@gmail.com
ผมเขียนตามแล้วครับ ,มัน erorr ตรง
Data_Modbus[0] = ReadModbus8bits(1, 0);
Data_Modbus[1] = ReadModbus8bits(1, 1);
error
exit status 1
'readHoldingRegisters' was not declared in this scope
ขอดูโค้ดเต็มๆหน่อยครับ
@@by4972
#include
#include
ModbusMaster node;
SoftwareSerial mySerial(6,7);
float Data_Modbus[5];
void setup()
{
Serial.begin(19200);
mySerial.begin(9600);
node.begin(1,mySerial);
}
void loop()
{
Data_Modbus[0] = ReadModbus8bits(1, 0);
Data_Modbus[1] = ReadModbus8bits(1, 1);
Serial.println("");
Serial.println("Address 0 Value" = + String(Data_Modbus[0]));
Serial.println("Address 1 Value" = + String(Data_Modbus[1]));
}
float ReadModbus8bits(char addr, uint8_t REC);
{
float i = 0;
uint8_t j;
int8_t result;
int8_t data[1];
int8_t Value = 8;
node.begin(addr, mySerial);
result = node.readHoldingRegisters (REG,5);
delay(1000);
if (result == node.ku8MBSuccess);
{
for (j = 0; j < 1 j++)
{
data[j] =node.getResponseBuffer(j);
}
Value = data[0];
i = Value
return 1;
}
elif
{
Serial.print("Connec fail REC >>>>");
Serial.println(REC, HEX);
delay(1000);
return 0;
}
}
@@by4972 อ.โต้ง มีเฟสบุ๊ค หรือเปล่าครับขอคำปรึกษาหน่อยได้หรือเปล่าครับ
rooster diy ครับ
@@sharing6507 ทำยังไงครับของผมก็ขึ้น erorr