Posted on

วิธีการใช้งาน Arduino Opta PLC อย่างง่าย

วิธีการใช้งาน Arduino Opta  PLC อย่างง่าย

  • พูดถึง Ardunio เป็นแพลตฟอร์มยอดนิยมของคนที่สนใจการเขียนโปรแกรมเพื่อควบคุมฮาร์แวร์ทั้งในแบบเป็นงานอดิเรก หรือแม้กระทั้งนำไปใช้ในระดับมืออาชีพ แต่สำหรับ Arduino Opta PLC ตัวนี้ เพิ่งเปิดตัวมาได้ไม่นาน มันเกิดจากความร่วมมือกันระหว่าง Arduino และผู้ผลิตPLC ที่มีชื่อดังยี่ห้อ Finder ต่อไปเราจะเรียก PLC ตัวนี้ สั้นๆ ว่า Opta อ่านว่า ออปต้า

รูปที่1

  • ในปัจจุบัน Opta มีทั้งหมดสามรุ่นได้แก่ Opta Lite, Opta RS485, และ Opta WiFi ในบทความนี้จะได้ทดลองใช้ Opta RS485 หมายถึง ในรุ่นนี้จะมีช่องทางการสื่อสาร RS485 ให้ด้วยที่จะมีประโยชน์มาก ซึ่งจะกล่าวเพิ่มเติมในภายหลัง
  • แพลตฟอร์ม Arduino ที่ได้รับการจดจำมากที่สุดตลอดกาลตอนนี้ก็คือ Arduino Uno มันสามารถทำให้ผู้ที่ยังไม่เคยใช้งานการเขียนโปรแกรมมาก่อนสามารถเริ่มต้นได้อย่างรวดเร็ว รวมถึงการมีไลเบอรีจำนวนมากให้สามารถนำมาต่อยอดใช้งานได้ทันที ที่สำคัญคือฮาร์ดแวร์ที่เป็นมาตรฐานลดระยะเวลาที่ต้องออกแบบ PCB ใหม่ ทั้งหมดทำให้ผู้ใช้สามารถใช้งานได้ง่ายและนำไปต่อยอดได้อย่างรวดเร็ว
  • จากที่กล่าวมาทั้งหมดนี้ ผู้ผลิตสัญญาณว่า จะนำแนวคิดที่กล่าวมาข้างต้นนี้ มาใช้กับArduino Opta เช่นเดียวกัน โดยสามารถรองรับการเขียนโปรแกรมบน Arduino IDE และได้เพิ่ม PLC IDE ที่สามารถรองรับภาษา PLC ตามมาตรฐาน  IEC 61131-3 ซึ่งเป็นภาษาที่ใช้ในการเขียนโปรแกรม PLC ที่ช่างเทคนิค วิศวกร ต่างๆ คุ้นเคยกันอยู่แล้ว ผมคิดว่า ทาง Arduino พยายามที่นำ แพลตฟอร์ม Arduino เข้าสู่โลกของอุตสาหกรรม ที่ต้องการความน่าเชื่อถือ ความเข้ากันได้ของอินพุตและเอาต์พุต ร่วมถึงภาษาที่ใช้ในการพัฒนาซึ่งบุคคลากรในอุตสาหกรรมคุ้นเคยกันอยู่แล้ว

ผมสามารถสรุปข้อดีของ Arduino Opta ได้ดังนี้

  1. สามารถเขียนโปรแกรมแบบคลาสสิค ด้วยภาษาซี บน Arduino IDE หรือจะใช้ PLC IDE ซึ่งเขียนด้วยภาษา PLC ตามมาตรฐาน IEC 61131-3 ก็ได้ แล้วแต่ความถนัดของผู้ใช้งาน
  2. รองรับโปรโตคอลการสื่อสาร Fieldbus และ Modbus
  3. รองรับ WiFi (เฉพาะรุ่นที่มี)
  4. รองรับ Arduino Cloud
  5. มีการออกแบบที่ทนทาน พร้อมตัวยึดรางแบบ Dinrail

คุณลักษณะของ Arduino Opta

ในส่วนนี้ เราจะมีสำรวจสเปคของ Arduino Opta กัน ซึ่งสามารถทำตารางสรุปได้ดังนี้

รูปที่2

โดยทุกรุ่นมีสเปคคร่าวๆ ดังนี้

  • แรงดันไฟเลี้ยง สามารถใช้ได้ตั้งแต่ 12 ถึง 24 โวลต์
  • อินพุต 8 ช่อง สามารถกำหนดเป็น ดิจิตอล อินพุต หรือ เป็นอนาลอกอินพุต ก็ได้
  • เอาต์พุตเป็น รีเลย์ 4 ช่อง หน้าสัมผัสทดกระแสได้ 10 แอมป์
  • ตัวประมวลผล เป็นแบบแกนคู่ จาก ST เบอร์ STM32H747XI
  • หน่วยความจำแรม 1 เมกะไบต์
  • หน่วยความจำแฟลต 2 เมกะไบต์

อินพุตของ Arduino Opta

  • ตามเอกสารจากดาต้าชีส ตัว Opta สามารถกำหนดอินพุตให้สามารถรับได้ทั้งอนาลอกและดิจิตอล โดยเมื่อกำหนดให้อินพุตเป็นแบบดิจิตอล สามารถรองรับสัญญาณ LOW หรือ HIGH ได้ แต่เมื่อกำหนดเป็นอินพุตอนาลอก สามารถรองรับแรงดัน 0 ถึง 10 โวลต์ดีซี

เอาต์พุตของ Arduino Opta

  • เอาต์พุตของ Opta เป็นหน้าสัมผัสรีเลย์แบบ ปกติเปิด (normally open NO) โดยรีเลย์แต่ละตัวจะมีหน้าสัมผัสทนกระแสได้ 10A 250VAC

 

ทดลองเขียนโปรแกรมภาษาซี บนArduino IDE

  • เราสามารถเขียนโปรแกรมภาษาซีบน Arduino IDE แล้วโปรแกรมเข้าไปยังตัว Opta ได้แบบเดียวกับบอร์ด Arduino ทั่วไป ในบทความนี้ได้ทดสอบบน Arduino IDE 2.0.4
  • เมื่อเปิด Arduino IDE ขึ้นมา ให้ไปที่  Tools à Board à Board Manager

รูปที่ 3

ในช่องค้นหา ใส่คำว่า opta มองหา Arduino Mbed OS Opta Boards by Arduino จากนั้นคลิ๊กติดตั้งให้เรียบร้อย

รูปที่ 4

  • ขั้นต่อไป กลับมาที่ ตัว Opta ให้ต่อสายไฟเลี้ยงเข้า สามารถใช้ได้ตั้งแต่ 12 ถึง 24 โวลต์ ให้สังเกตดีๆ  เพราะมีช่องบวก สองช่อง ช่องลบ สองช่อง

รูปที่ 5

  • สุดท้ายเป็นการต่อสาย USB type C เข้ากับตัว Opta สายนี้ใช้เพื่อโหลดโค้ดและมอนิเตอร์ค่าระหว่างการทำงานได้

รูปที่ 6

  • กลับมาที่หน้าต่างของ Arduino IDE ไปที่ Tools à board àArduino Mbed OS Opta Boardà Opta

รูปที่ 7

  • ส่วนการเลือกพอร์ตให้ไปที่ Tools à Port

รูปที่ 8

  • ถึงขั้นตอนนี้ เราสามารถเริ่มต้นการเขียนโปรแกรมได้แล้ว โดยตัวอย่างโปรแกรมเป็นดังนี้

ภาพรวมของโปรแกรมจะส่งสัญญาณไปควบคุมLED ให้กะพริบในรูปแบบที่เรียกว่า Kinght Rider คือจะกะพริบแบบสแกนวนไปทั้งซ้ายและขวา ที่ตำแหน่งของ LED status ตัวอย่างโค้ด บรรทัดที่16 ถึง 25 จะสร้างการกะพริบจากตัวแรก ไปยังตัวสุดท้าย ส่วนโค้ดบรรทัดที่ 28 ถึง 37 จะสร้างการกะพริบจากท้ายกลับมายังตัวแรก วนกลับไปมาเรื่อย

รูปที่ 9

Posted on

ชุดรางเลื่อนสไลด์ สายพานไทม์มิ่งขับ Gantry linear Slide Timing belt Drive W45X 2-Axis XY

ชุดรางเลื่อนสไลด์ สายพานไทม์มิ่งขับ Gantry linear rail guide precision High-speed 45X 2-Axis 3XY

  • HTD3M-W15mm Timing Belt Synchronous Timing Pulleys HTD3M-24T Drive
  • ความกว้างราง 45mm

ในชุดประกอบด้วย

  1. 1pcs x X Axis High Speed Stepping Motor Linear Slide Timing Belt Stroke Double Shaft Diameter 12mm
  2. 1pcs x X Axis High Speed Stepping Motor Linear Slide Timing Belt Stroke Shaft Diameter 12mm
  3. 1pcs x Y Axis High Speed Stepping Motor Linear Slide Timing Belt Stroke  Shaft Diameter 12mm 
  4. 1pcs x แกนเพลาสแตนเลส Stainless Steel Linear Shafts Diameter 12mm
  5. 2pcs x คัปปลิ้ง ข้อต่อเพลา ตรงอลูมิเนียม Diaphragm Coupling 8x12mm
  6. 2pcs x คัปปลิ้ง ข้อต่อเพลา ตรงอลูมิเนียม Diaphragm Coupling 12x12mm
  7. 4pcs x 45X Footing Base
  8. 2pcs x 45X XY Cross Connnection
  9. 2pcs x LSTB94 อุปกรณ์ติดตั้งมอเตอร์ 45X Accessories 45/60 Nema23 Motor Installation
  10. 2pcs x Stepper Motor
Posted on

วงจรรีเลย์กลับทางหมุนมอเตอร์ Motor reversing relay circuit

วงจรรีเลย์กลับทางหมุนมอเตอร์ Motor reversing relay circuit ทางหมุนมอเตอร์ (Motor Drive) เป็นระบบที่ใช้ในการควบคุมมอเตอร์หรือเครื่องขับเคลื่อนอื่น ๆ ซึ่งสามารถปรับความเร็วหรือทิศทางการหมุนของมอเตอร์ได้ตามที่ต้องการ เมื่อนำทั้งวงจรรีเลย์และทางหมุนขั้วมอเตอร์มาใช้ร่วมกัน จะได้วงจรควบคุมมอเตอร์ที่สามารถเปิด-ปิดหรือควบคุมการทำงานของมอเตอร์ได้ตามที่ต้องการ ต่อไปนี้คือตัวอย่างวงจรที่ใช้ร่วมกันระหว่างรีเลย์และ มอเตอร์ ในที่นี้, การปิดหรือเปิดของรีเลย์จะทำให้มอเตอร์เปิดหรือปิดตามนั้น โดยสวิทช์หรือสัญญาณควบคุมจะถูกนำมาใช้ควบคุมรีเลย์ และจากนั้นรีเลย์จะควบคุมการทำงานของมอเตอร์.

วงจรควบคุมมอเตอร์ด้วยรีเลย์เบื้องต้น

  • RY1 Relay1 , RY2 Relay2 รีเลย์ 2 ชุด (SPDT Relay)
  • MT มอเตอร์

การทำงาน

  • Relay 1 = ON / Relay 2 = OFF  มอเตอร์หมุน CW
  • Relay 1 = OFF / Relay 2 = ON มอเตอร์หมุน CCW

Posted on

แบบรางสกรู XY 2 แกน XYZ 3 แกน สำหรับระบบอัตโนมัติของหุ่นยนต์อุตสาหกรรม แขนหุ่นยนต์คาร์ทีเซียนหลายแกนเคลื่อนที่เชิงเส้น

รางบอลสกรู 2-axis 3-axis  XY / XYZ /XZ สำหรับระบบอัตโนมัติ หุ่นยนต์อุตสาหกรรม แขนหุ่นยนต์คาร์ทีเซียนหลายแกน เคลื่อนที่เชิงเส้น รางนำบอลสกรู Stroke ขนาด 50 – 1000mm. ใช้ระบบขับเคลื่อน สเต็ปเปอร์มอเตอร์ / ไดร์เวอร์ / คอนโทรลเลอร์ / ลิมิตสวิตช์ ขอบเขตการใช้งาน เครื่องพิมพ์ 3 มิติ สายการผลิตอัตโนมัติ เครื่องตรวจจับพลาสมา, แขนหุ่นยนต์

โครงตั้ง 3 แกน XYZ Gantxry Type

คานยื่น 3 แกน XYZ Cantilever Type 

โครงตั้ง 2 แกน 2XY Gantxry Type

ตัวที 2 แกน XZ T Type

 

คานยื่น 2 แกน XY Cantilever Type

 

ข้าม 2 แกน XY Gantry Cross Type

 

Posted on

สายพานซิงโครนัส ประเภทต่างๆ Different types of synchronous belts

สายพานซิงโครนัส ประเภทต่างๆ

ฟันรูปสี่เหลี่ยมคางหมู Trapezoidal teeth MXL, XL, L, H, XH, XXH

ฟันโค้งวงกลม Circular arc teeth HTD3M, 5M, 8M, 14M

ฟันโค้งครึ่งวงกลม Semi-circular arc teeth S3M, S4, 5M, S5M, S8M, S14M, S20M

Posted on

ขนาดสายพานไทม์มิ่งและพูลเลย์ Timing belt and pulley sizes

ความหมายของ สายพานไทม์มิ่งและพูลเลย์ Timing Pulley Pitch ขนาด

Aluminum/Steel/Stainless Steel, Round Arc Tooth HTD-3M 5M 8M 14M

Aluminum/Steel/Stainless Steel, Round Arc Tooth STS-S2M S3M S5M S8M S14M

Aluminum/Steel/Stainless Steel, Trapezoidal Tooth MXL XL LH

Aluminum/Steel/Stainless Steel, Trapezoidal Tooth T2.5 T5 T10 T20

Aluminum/Steel/Stainless Steel, Trapezoidal Tooth XH XXH

Aluminum/Steel/Stainless Steel, Trapezoidal Tooth AT5 AT10

Posted on

การอ่านค่าจากขาอะนาล็อก 10 บิต บอร์ด Arduino

การอ่านค่าจากขาอะนาล็อก 10 บิต บอร์ด Arduino

Read Analog Voltage

BOARD OPERATING VOLTAGE USABLE PINS MAX RESOLUTION

Uno

5 Volts

A0 to A5

10 bits

Code

analogRead()
[Analog I/O]

การอ่านค่าจากขาอะนาล็อก 10 บิต บอร์ด Arduino มีตัวแปลงแอนะล็อกเป็นดิจิทัลแบบหลายช่องสัญญาณ 10 บิต ซึ่งหมายความว่าจะแมปแรงดันอินพุตระหว่าง 0 และแรงดันใช้งาน (5V หรือ 3.3V) เป็นค่าจำนวนเต็มระหว่าง 0 ถึง 1023 ตัวอย่างเช่น บน Arduino UNO ค่านี้จะให้ความละเอียดระหว่างการอ่าน: 5 โวลต์ / 1024 หน่วย หรือ , 0.0049 โวลต์ (4.9 มิลลิโวลต์) ต่อหน่วย

  • ช่วงอินพุตสามารถเปลี่ยนได้โดยใช้ analogReference() ในขณะที่สามารถเปลี่ยนความละเอียดได้ (สำหรับบอร์ด Zero, Due และ MKR เท่านั้น) โดยใช้ analogReadResolution()
  • บนบอร์ดที่ใช้ ATmega (UNO, Nano, Mini, Mega) จะใช้เวลาประมาณ 100 ไมโครวินาที (0.0001 วินาที) ในการอ่านอินพุตแบบอะนาล็อก ดังนั้นอัตราการอ่านสูงสุดจึงอยู่ที่ประมาณ 10,000 ครั้งต่อวินาที
  • ในโปรแกรมด้านล่าง สิ่งแรกที่คุณจะทำคือในฟังก์ชันการตั้งค่า เพื่อเริ่มการสื่อสารแบบอนุกรมที่ข้อมูล 9600 บิตต่อวินาที ระหว่างบอร์ดและคอมพิวเตอร์ของคุณด้วยสาย:
Serial.begin(9600);
  • ในลูปหลักของโค้ดต้องสร้างตัวแปรเพื่อเก็บค่าความต้านทาน (ซึ่งจะอยู่ระหว่าง 0 ถึง 1023 เหมาะสำหรับประเภทข้อมูล int) ที่มาจากโพเทนชิออมิเตอร์
int sensorValue = analogRead(A0);
  • หากต้องการเปลี่ยนค่าจาก 0-1023 เป็นช่วงที่สอดคล้องกับแรงดันไฟฟ้าที่พินกำลังอ่านจะต้องสร้างตัวแปรอื่น เช่น Float หากต้องการปรับขนาดตัวเลขระหว่าง 0.0 ถึง 5.0 ให้หาร 5.0 ด้วย 1023.0 แล้วคูณด้วย sensorValue :
float voltage= sensorValue * (5.0 / 1023.0);
  • สุดท้ายต้อง Print ข้อมูลนี้ไปยัง Serial Monitor  สามารถทำได้โดยใช้คำสั่ง Serial.println() ในโค้ดบรรทัดสุดท้าย:
Serial.println(voltage)
  • เมื่อเปิด Serial Monitor ใน Arduino IDE (โดยคลิกที่ไอคอนทางด้านขวาของแถบสีเขียวด้านบน หรือกด Ctrl+Shift+M) จะเห็นตัวเลขต่อเนื่องตั้งแต่ 0.0 – 5.0 เมื่อ หมุน Potentiometer  ค่า จะเปลี่ยนตามแรงดันไฟที่เข้าขา A0
Posted on

แรงบิดหมายถึงอะไร What does Torque mean?

หน่วยแรงบิดที่ใช้กันทั่วไป:

1 nm = 10 kg.cm = 0.1 kg.m

แรงบิดมาตรฐานของมอเตอร์คือ 10 kg.cm สมมติว่าใช้รอกในการหมุน รัศมีของรอกคือ 1 cm.
ความตึงของสายพานคือ 10 kg ถ้ารัศมีของรอกคือ 2 cm. ความตึงของสายพานจะเท่ากับ 5 kg.

แนวคิดเกี่ยวกับแรงบิด:

  • แรงบิด = แรงตึงตั้งฉากกับแกนยื่น arm (น้ำหนักที่ยก) x แกนยื่น arm

ตัวอย่างเช่น: การยกถัง

ภาพด้านซ้าย

  • รัศมีการหมุน = แกนยื่น arm = 10 cm.
  • น้ำหนักการยก = 5 kg.
  • แรงบิดที่ต้องการ = 5 kg x 10cm = 50 kg.cm

ภาพด้านขวา

  • มีรัศมีการหมุน = แกนยื่น arm = 5 cm.
  • น้ำหนักที่ยก = 5 kg.
  • แรงบิดที่ต้องการ = 5 kg x 5 cm =25 kg.cm

จากตัวอย่างนี้ จะเห็นได้ว่า แกนยื่น มีความสำคัญมาก และแรงบิดในการยกที่น้ำหนักเท่ากันนั้นแตกต่างกัน

Posted on

ระบบสกาด้า (Scada System)

ระบบสกาด้า (Scada System) เป็นระบบควบคุมและจัดการกระบวนการหรือระบบที่มีความซับซ้อนในอุตสาหกรรม โดยส่วนใหญ่ใช้ในการควบคุมและตรวจสอบกระบวนการการผลิตในอุตสาหกรรม เช่น การควบคุมเครื่องจักรหรือเครื่องมือที่ใช้ในการผลิต รวมถึงการจัดเก็บข้อมูลและการตรวจสอบประสิทธิภาพของระบบในเวลาจริง

ระบบสกาด้าประกอบด้วยส่วนประกอบหลายส่วนที่ทำงานร่วมกัน เช่น

  1. ส่วนการควบคุม: เป็นส่วนที่รับข้อมูลจากเซ็นเซอร์และอุปกรณ์ต่างๆ เพื่อควบคุมการทำงานของระบบ เช่น เปิด-ปิดเครื่องจักร ปรับอุณหภูมิ หรือควบคุมระดับน้ำ
  2. ส่วนการติดต่อสื่อสาร: เป็นส่วนที่ใช้สื่อสารระหว่างระบบสกาด้ากับอุปกรณ์ที่เชื่อมต่อ เช่น ส่งข้อมูลสัญญาณควบคุม หรือรับข้อมูลการทำงาน
  3. ส่วนการแสดงผล: เป็นส่วนที่แสดงผลข้อมูลและข้อมูลการทำงานของระบบในรูปแบบที่เข้าใจง่ายแก่ผู้ใช้ เช่น จอแสดงผลกราฟิกส์หรือตัวเลข
  4. ส่วนฐานข้อมูล: เป็นส่วนที่ใช้เก็บข้อมูลที่สรุปและวิเคราะห์การทำงานของระบบ เพื่อให้สามารถดึงข้อมูลออกมาใช้ในการวิเคราะห์หรือการตัดสินใจ

ในระบบสกาด้า (Scada System) มักใช้ร่วมกับ PLC (Programmable Logic Controller) เพื่อควบคุมและควบคุมกระบวนการในอุตสาหกรรม ซึ่ง PLC เป็นอุปกรณ์ที่ใช้ในการควบคุมเครื่องจักรหรือระบบอื่นๆ ที่มีความซับซ้อนในอุตสาหกรรม

PLC ทำหน้าที่รับสัญญาณอินพุตจากเซ็นเซอร์หรืออุปกรณ์ต่างๆ และประมวลผลเพื่อส่งสัญญาณออกเป็นเอาต์พุตเพื่อควบคุมการทำงานของระบบ รูปแบบของโปรแกรมภายใน PLC สามารถปรับแก้ไขได้เพื่อให้สอดคล้องกับการทำงานของระบบในอุตสาหกรรมที่แตกต่างกัน

เมื่อ PLC และระบบสกาด้าทำงานร่วมกัน ระบบสกาด้าจะรับข้อมูลจาก PLC เพื่อแสดงผลข้อมูลและจัดเก็บข้อมูลเพื่อวิเคราะห์หรือรายงาน โดยระบบสกาด้าสามารถติดต่อสื่อสารกับ PLC ผ่านพอร์ตการสื่อสารหรือโพรโทคอลต่างๆ เช่น Modbus, Profibus, OPC เพื่อรับข้อมูลและส่งคำสั่งควบคุมกลับไปยัง PLC ตามที่ต้องการในกระบวนการผลิต

ในการสื่อสารระยะไกลในระบบสกาด้า (Scada System) มักใช้โพรโทคอลหรือโปรแกรมสื่อสารที่รองรับการสื่อสารแบบแต่ละโพรโทคอลต่างๆ โดยบางโปรโทคอลที่ใช้ระบบสกาด้าสำหรับการสื่อสารระยะไกลได้แก่:

  1. Modbus: Modbus เป็นโปรโทคอลที่ใช้สื่อสารระหว่างอุปกรณ์อิเล็กทรอนิกส์และคอมพิวเตอร์ โดยมีความสามารถในการสื่อสารผ่านการเชื่อมต่อแบบแมสเตอร์/สเลฟสเตชันหรือผ่านระบบสื่อสารทางเคเบิล เช่น RS-232, RS-485, TCP/IP เป็นต้น
  2. OPC (OLE for Process Control): OPC เป็นเฟรมเวิร์กสำหรับการสื่อสารระหว่างอุปกรณ์และแอปพลิเคชันที่ใช้ในอุตสาหกรรม โดยมีความสามารถในการสื่อสารและแลกเปลี่ยนข้อมูลระหว่างแอปพลิเคชันกับอุปกรณ์ต่างๆ ที่สนับสนุน OPC ผ่านการใช้งานของโปรโทคอลต่างๆ เช่น OPC DA (Data Access), OPC UA (Unified Architecture)
  3. DNP3 (Distributed Network Protocol): DNP3 เป็นโปรโทคอลที่ใช้สื่อสารในระบบสกาด้าและระบบควบคุมแบบกระจาย มักใช้ในระบบพลังงานและระบบจัดการน้ำ เป็นต้น
  4. MQTT (Message Queuing Telemetry Transport): MQTT เป็นโปรโทคอลที่ใช้สำหรับการสื่อสารแบบแต่ละคลิเอนต์/แคลิเอนต์ (Client/Client) โดยมักนำมาใช้ในระบบสกาด้าสำหรับการสื่อสารผ่านอินเทอร์เน็ต