ข้ามไปที่เนื้อหาหลัก

Mach3 I/O Mod Bus With Arduino ตอนที่1

จากบทความ Mach3 กับ Serial Port  การใช้ Serial Communication ได้ในสถานะ ส่งข้อมูลจาก Mach3 ออกมา ในทางกลับกัน เราก็มีความต้องการที่จะส่งคำสั่งเพื่อคุม Mach3 เช่นกัน เช่น ปุ่มคำสั่งต่าง ๆ Start,Stop,LimitSwitch เป็นต้น ช่องทางเดิมคือช่อง Printer หรือ Parallel Port แต่ช่อง Parallel Port ดังกล่าวมีข้อจำกัดคือ ปริมาณ I/O ไม่เพียงพอกับความต้องการใช้งาน ใน Mach3 มีช่องทางที่รองรับอีกช่องทางคือ MOD BUS คุณสามารถหาความรู้เพิ่มเติม ได้ตาม Link นี้ครับ

ในที่นี้จะกล่าวถึงการติดตั้ง Modbus พื้นฐานสำหรับ Mach3 ด้วย Arduino ศึกษาเพิ่มเติมได้จาก Link เดิมนี้ครับ

การเตรียมการทดลอง

1.Mach3 CNC Controller
2.Arduino Board (UNO,Nano)
3.Arduino IDE
4.อุปกรณ์ประกอบอิเลคทรอนิคส์ เช่น สายเชื่อมสัญญาน
5.Software Serial Monitor
6.Software Modbus Tester

ขั้นตอนทดลอง

1.Setup Mach3 Modbus







2. Upload firmware To Arduino

Code: 

int pin = 2;  //Cycle Start button
int in_buffer[8]; // receiving buffer
int reply_1[] ={0x01, 0x04, 0x02, 0x00, 0x01, 0x78, 0xF0};
int reply_0[] ={0x01, 0x04, 0x02, 0x00, 0x00, 0xB9, 0x30};

void setup()
{
  Serial.begin(9600);            // Init serial communication
  pinMode(pin, INPUT);           // Set pin to input
  digitalWrite(pin, HIGH);       // Turn on pullup resistor
}

void loop()
{
   if ( Serial.available() == 8 ) {
     
     // read ModBus command from Mach3
     // in this example we only read, don't check anything 
     for (int i=0; i < 8; i++) in_buffer[ i ] = Serial.read();
     
     // Read Input PIN and reply with 0 or 1
     // Reply is inverted because PIN default state is HIGH and we connect to GND
     if ( digitalRead(2) == 0 ) 
         for (int i=0; i < 7; i++) Serial.write(reply_1[ i ]);
        else 
         for (int i=0; i < 7; i++) Serial.write(reply_0[ i] );
  
   }   

}


 3. Run "Modbus Serial Tester" เพื่อทำการทดสอบ Modbus Firmware Connect Serialport ตามที่ Board Arduino ได้ Configure ใว้ใน Computer กำหนด ความเร็วรับส่ง ที่ 9600 ใส่ค่า 01 04 00 00 00 01ลงในช่อง แล้วกด Send จากนั้น ทำการ connect PIN2 Arduino กับ GND 01 04 00 00 00 01ลงในช่อง แล้วกด Send อีกครั้ง จะเห็นการเปลี่ยนแปลงตามรูป





Credit : https://www.buildlog.net/blog/2011/02/modbus-arduino-mach3-and-brains-oh-my/





4.ทดสอบการใช้ Modbus "สร้าง Brain กดปุ่ม Cycle Start"

4.1. ปิดโปรแกรม สื่อสาร Comport ทั้งหมด.
4.2. Run Mach3 only และ  open Brain editor. Click on '+', go to ModBus และกำหนดตามล่างนี้


Save file to Mach3\Brains 'Cycle_Start_button.brn'.
ไปที่ Brian control, click 'ReloadAll', enable ต่อไปคือ  'ViewBrain'.

การทดสอบ
ขณะที PIN2 Arduinoลอย จะเห็น Input เป็น 0. หาก  connect to GND  Input จะเป็น 1.



 Input ที่คุณเห็นสามารถติดต่อกับ ทุก function ใน Mach3. 
ตัวอย่างนี้เพื่อทดสอบปุ่ม Cycle Start 

กลับไปที่ Brain editor, mark Input และ '+' เพี่อเพิ่ม Input
ทำการ mark อีกครั้งและไปที่  Mach3 function '1000- CycleStart' ตามภาพ


Save Brain และ Reload




รายละเอียดเพิ่มเติม ตาม Linkนี้ครับ https://www.machsupport.com/forum/index.php?topic=23759.0





ความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

คีย์ลัดที่ใช้ในโปรแกรมเขียนแบบ Autocad

การใช้คีย์ลัด จะช่วยให้การเขียนแบบ มีความรวดเร็วขึ้น AR = ARRAY ในแบบกำหนดจำนวนและระยะห่าจากจุดอ้างอิง A = ARC เขียนเส้นโค้ง BR = BREAK ตัดเส้นที่ต่อเนื่องกัน ณ จุดที่เราทำการ break B = BLOCK ทำ block ใหม่ให้กับชิ้นงานที่เขียนขึ้นแล้ว CO,CP = COPY ทำชิ้นส่วนภาพที่เราเลือกไว้ให้สร้างขึ้นมาใหม่ ในลักษณะ เหมือนเดิมทุกประการ C = CIRCLE เขียนวงกลม CH = CHCOLOR เปลี่ยนสี CHA = CHAMFER ตัดมุมของรูปเหลี่ยมต่าง ๆ DT = DTEXT เขียนตัวหนังสือ DB = DIM VASELINE ให้ dimension แบบต่อเนื่องในแนวเส้นแรก DC = DIM CONTINUE ให้ dimension แบบต่อเนื่องในแนวและระดับเดียวกันหมด DV = DIM HORIZONTAL ให้ dimension แบบอยู่ในแนวเส้นราบ DD = DIM DIAMETER ให้ dimension แบบเส้นผ่านศูนย์กลางของวงกลม DS = DIM SCALE ตัวคูณ factor ของขนาดสเกลของ dimension DN = DIM NEWTEXT เปลี่ยน text DM = DIM MOVE การขยับ text ไปมา DAN = DIM ANGULAR วิธีการให้ dimension แบบเส้นโค้งเพื่อแสดงขนาดของมุม DL = DIM LEADER วิธีการให้dimension แบบชี่จุดตำแห่งที่เราต้องการ...

LinuxCNC สำหรับผู้เริ่มต้น

LinuxCNC  (เดิมชื่อ Enhanced Machine Controller หรือ EMC2) เป็นระบบซอฟต์แวร์โอเพ่นซอร์สฟรีของ Linux ที่ใช้ความสามารถในการควบคุมเชิงตัวเลขโดยใช้คอมพิวเตอร์เอนกประสงค์เพื่อควบคุมเครื่อง CNC ออกแบบโดยนักพัฒนาอาสาสมัครหลายคนที่ linuxcnc.org โดยทั่วไปจะรวมเป็นไฟล์ ISO กับ Ubuntu Linux เวอร์ชัน 32 บิตที่แก้ไขแล้วซึ่งมีเคอร์เนลตามเวลาจริงที่จำเป็น LinuxCNC เป็นระบบซอฟต์แวร์สำหรับควบคุมเครื่องจักรเชิงตัวเลข เช่น เครื่องกัด เครื่องกลึง เครื่องตัดพลาสม่า เราเตอร์ เครื่องตัด หุ่นยนต์ และเฮกซาพอด สามารถควบคุมได้ถึง 9 แกนหรือข้อต่อของเครื่อง CNC โดยใช้ G-code (RS-274NGC) เป็นอินพุต มี GUI หลายแบบที่เหมาะกับการใช้งานเฉพาะ (หน้าจอสัมผัส การพัฒนาแบบโต้ตอบ) สามารถใช้ประโยชน์จากเคอร์เนลที่แก้ไขตามเวลาจริงอย่างกว้างขวาง และสนับสนุนทั้งไดรฟ์แบบสเต็ปและเซอร์โว LinuxCNC ใช้โมเดลของ 'ความรู้สึก วางแผน กระทำ' ในการโต้ตอบกับฮาร์ดแวร์ตัวอย่างเช่น จะอ่านตำแหน่งแกนปัจจุบัน คำนวณตำแหน่ง/แรงดันเป้าหมายใหม่ แล้วเขียนข้อมูลนั้นไปยังฮาร์ดแวร์ ไม่มีการบัฟเฟอร์ของคำสั่งและไม่อนุญาตให้อ่านหรือเขียนที่เริ่มต้นจากภ...

การแก้ปัญหาการติดตั้ง โปรแกรม Artcam Pro9 ใน Windows10

ใน windows10 การเรียกใช้งานโปรแกรม Artcam Pro9 อาจมีอาการค้างหรือ Hang เนื่องจากการเรียกใช้ โปรแกรมให้ ทดลองปรับแต่งตามนี้ครับ 1.  2.ที่ Short Cut Icon