Download as pdf or txt
Download as pdf or txt
You are on page 1of 78

1

บทที่ 1
บทนา

1.1 ความสาคัญของปัญหา

เนื่ องด้วยโลกเราในปั จจุ บนั เทคโนโลยีไ ด้เข้ามาเป็ นส่ วนหนึ่ ง ภาคอุ ตสาหกรรมของ
ประเทศ ซึ่ งมีการขยายตัวเป็ นจานวนมาก โดยเครื่ องจักรถูกนาเข้ามาช่ วยในกระบวนการต่างๆ ใน
อุ ตสาหกรรม ไม่ ว่า จะเป็ นขั้นตอนการผลิ ต ขั้นตอนการบรรจุ ล งในหี บ ห่ อต่ า งๆ หรื อแม้แ ต่
ขั้นตอนการขนส่ งก็เช่ นกัน ซึ่ งเครื่ องจักรต่างๆ ที่ใช้ในกระบวนการเหล่านั้น มีความจาเป็ นต้องมี
ระบบสมองกลเข้ามาช่วยในการควบคุมการทางาน ซึ่ งเรามักจะใช้ PLC (Programmable Logic
Controller) ในการควบคุมเครื่ องจักรต่างๆ และการสื่ อสารกันของเครื่ องจักร จึงมีความสาคัญมาก
เพื่อให้กระบวนการต่า งๆเป็ นไปได้อย่า งถู ก ต้องและรวดเร็ ว[1] โดยมักจะใช้การสื่ อสารด้วย
โปรโตคอลมอดบัส ซึ่ งเป็ นการสื่ อสาร ข้อมูลอินพุต / เอาต์พุต และรี จิสเตอร์ ภายใน PLC ซึ่ งถูก
คิดค้นโดย บริ ษทั Modicon (ปั จจุบนั คือบริ ษทั Schneider Electric) และโปรโตคอลมอดบัสนี้ ได้
เป็ นที่ ยอมรั บกันอย่างกว้างขวาง ในการติ ดต่อสื่ อสารที่ เป็ นแบบ Network Protocol อัน
เนื่องมาจากมอดบัสเป็ นระบบเปิ ด ไม่มีค่าใช้จ่าย รวมทั้งเชื่ อมต่อและพัฒนาง่าย และยังสามารถนา
โปรโตคอลนี้ ไปใช้งานร่ วมกับอุปกรณ์ อื่นๆ เช่ น Power Meter, Remote I/O, PLC เป็ นต้น
นอกจากนี้ โปรโตคอลมอดบัส ยังสามารถรองรับและใช้งานร่ วมกับ Application จาพวก SCADA
และ HMI Software ได้อีกด้วย
ในการส่ งสัญญาณการสื่ อสารไร้สายในโรงงานอุตสาหกรรมที่มีเครื่ องจักรกลขนาดใหญ่
มักจะพบกับปั ญหาสัญญาณรบกวนที่เกิ ดจากคลื่ นแม่เหล็กไฟฟ้ า การส่ งข้อมูลในบริ เวณดังกล่าว
อาจพบกับปั ญหาความผิดพลาดของข้อมูลเนื่ องจากสัญญาณรบกวน การติดต่อสื่ อสารแบบไร้สาย
ด้วยแสงที่มองเห็น VLC (Visible Light Communication) จึงเป็ นทางเลือกที่ใช้เป็ นตัวส่ งผ่าน
สัญญาณข้อมูลดิจิตอลที่มีศกั ยภาพและมีความน่าสนใจในการพัฒนาเนื่ องจากการสื่ อสารด้วยแสงที่
มองเห็นอาจหลอด LEDs (Light Emitting Diodes) ในการกาเนิ ดแสงพร้อมกับการส่ องสว่าง ที่
ไม่ได้รับผลกระทบจากสัญญาณรบกวนที่ มาจากคลื่ นแม่เหล็กไฟฟ้ า ดังนั้นการพัฒนาระบบการ
ติดต่อแบบไร้สายเพื่อใช้ในการสื่ อสารไร้สายในโรงงานอุตสาหกรรมที่มีสัญญาณรบกวนจากคลื่น
แม่เหล็กไฟฟ้ าจึ งมีความจาเป็ น และเป็ นที่ มาของการนาการติ ดต่อสื่ อสารแบบไร้ สายด้วยแสงที่
มองเห็ นได้ มาใช้งานร่ วมกับ โปรโตคอลมอดบัส ในโครงงานชิ้ นนี้ เพื่ อที่ จะแก้ปั ญหาการเดิ น
2

สายสัญญาณเชื่อมโยงระหว่างตัวอุปกรณ์ต่างๆ และลดทอนปั ญหาที่เกิดจากคลื่นแม่เหล็กไฟฟ้ า ทั้ง


ยังเป็ นการประยุกต์สิ่งที่มีอยูแ่ ล้วเดิมให้มีความสามารถใช้งานได้หลากหลายมากขึ้นอีกด้วย

1.2 วัตถุประสงค์ของโครงงาน
- เพื่อที่จะศึก ษาวิธี ก ารใช้ง านรวมทั้ง ข้อดี และข้อเสี ย ของการติ ดต่ อสื่ อสารแบบ
โปรโตคอลมอดบัสผ่านแสงที่มองเห็นได้
- เพื่อที่ จะศึ กษาระบบการติดต่อสื่ อสารด้วยโปรโตคอลมอดบัสที่ ใช้กบั อุปกรณ์ ต่างๆ
ในภาคอุตสาหกรรม
- เพื่อที่จะพัฒนารู ปแบบการติดต่อสื่ อสารของอุปกรณ์ ให้มีความสะดวกรวดเร็ วมาก
ยิง่ ขึ้น

1.3 ขอบเขตของโครงงาน
- มีชุดจาลองการสื่ อสารด้วยโปรโตคอลมอดบัส RTU ผ่านแสงที่มองเห็นได้
- สามารถรับสัญญาณ RS-485 เพื่อนาไปใช้ในชุดการสื่ อสาร
- ระยะห่างการสื่ อสารไร้สายไม่นอ้ ยกว่า 3 เมตร
- มีอุปกรณ์แม่ข่าย 1 ตัว และลูกข่าย 3 ตัว ที่สามารถใช้กบั ตัวกระตุน้ ที่แตกต่างกันได้
- มีชุดคู่มือที่อ่านง่าย และมีรายละเอียดต่างๆของโครงงาน
3

1.4 โครงสร้ างของโครงงาน

ภาพที่ 1.1 โครงสร้างโครงงาน

1.5 ประโยชน์ ของโครงงาน

- ได้รับความรู ้เกี่ยวกับระบบโปรโตคอลมอดบัส
- ได้รับความรู ้เกี่ยวกับการติดต่อสื่ อสารแบบไร้สายด้วยแสงที่มองเห็นได้ (VLC)
- ได้มีชุดทดลองสาหรับเรี ยนรู้ไว้ให้ผทู้ ี่สนใจระบบการติดต่อสื่ อสารแบบไร้สายด้วย
แสงที่มองเห็นได้ ได้ทาการศึกษาและทดลอง
4

บทที่ 2
ทฤษฎีที่เกีย่ วข้ อง

2.1 โปรโตคอลมอดบัส (Modbus Protocol)[2]

มอดบัสเป็ นการสื่ อสารที่ อาศัย หลัก การแม่ข่ ายและลู กข่า ย สื่ อสารแบบอนุ กรมที่เป็ น
โครงข่าย (Serial Communication Network ) และจะมีเพียงแม่ข่ายเพียงตัวเดียวเท่านั้น ที่ควบคุม
การสื่ อสารบนโครงข่าย ที่ มีลูกข่ายจานวนหลายตัว และตามมาตรฐานนั้น สามารถมี ลูกข่ายใน
โครงข่ายได้สูงสุ ดอยูท่ ี่ 247 ตัว การสื่ อสารโดยโปรโตคอลมอดบัสจะต้องเริ่ มต้นการติดต่อสื่ อสารที่
แม่ข่ายเสมอ โดยที่ ตวั ลูกข่ายจะไม่สามารถตอบสนองหรื อส่ งข้อมูลใดๆได้ ถ้าไม่มีการร้ องขอ
จากแม่ข่าย และระหว่างตัวลูกข่ายด้วยกันนั้น จะไม่มีการสื่ อสารระหว่างกัน แม่ข่ายสามารถส่ งการ
ร้องขอไปยังลูกข่ายได้ 2 ลักษณะ คือ
1. แบบโหมดยูนิคาสต์ (Unicast Mode) ในลักษณะนี้ แม่ข่ายจะใช้หมายเลขแบบระบุตวั
ลูกข่าย หลังจากที่ลูกข่ายรับข้อมูล ก็จะประมวลผลการร้องขอนั้นของแม่ข่าย จากนั้นจะทางาน
ตามชุ ดข้อมูล นั้นของแม่ ข่า ย และจะตอบกลับโดยที่ เฟรมข้อมูลจะมี หมายเลขของลู กข่ ายตอบ
กลับไปยังแม่ข่ายด้วยในโหมดนี้ และการสื่ อสารนั้นจะมี 2 ชุ ดข้อมูล คือ 1. ข้อมูลการร้องขอ
จากแม่ข่าย และ 2. ข้อมูลการตอบสนองกลับจากลูกข่าย โดยที่แต่ละข้อมูลการสื่ อสารนั้นต้องมี
หมายเลขของลูกข่ายอยูใ่ นช่วงจาก 1 ถึง 247 และไม่ซ้ ากัน จึงจะมีความอิสระจากลูกข่ายตัวอื่นๆ

ภาพที่ 2.1 การสื่ อสารโหมดยูนิคาสต์


5

2. แบบโหมดบรอดคาสต์ (Broadcast Mode) ในโหมดนี้ แม่ข่ายจะสามารถส่ งการร้องขอ


ไปยังลูกข่ายทุกตัวในเวลาเดียวกันได้ แต่จะไม่มีขอ้ มูลตอบกลับมาจากลูกข่ายใดๆ ซึ่ งการร้องขอใน
โหมดนี้ มกั เป็ นคาสั่ง ประเภทให้ทาแบบต้องยอมรับคาขอนี้ โดยสาหรับฟั งก์ชนั่ ประเภทเขียนใน
โหมดบรอดคาสต์น้ ี ในส่ วนของหมายเลขลูกข่ายจะเป็ นหมายเลข 0 ในการกาหนดชุ ดข้อมูลการ
ร้องขอไปยังลูกข่าย

ภาพที่ 2.2 การสื่ อสารโหมดบรอดคาสต์

โครงสร้างของโปรโตคอลมอดบัสที่ใช้ในการสื่ อสารนั้น มีดว้ ยกัน 3 ชนิด ซึ่งข้อมูล


แตกต่างกันออกไปตามรหัสคาสัง่ ซึ่ งโครงสร้างโดยรวมจะเป็ นดังต่อไปนี้
1. โปรโตคอลมอดบัสชนิด RTU จะมีชุดเฟรมข้อมูลดังต่อไปนี้
- ส่ วนที่ 1 ในชุ ดเฟรมข้อมูล จะเป็ นการส่ งสัญญาณเพื่อเริ่ มต้นของชุ ดข้อมูลที่จะทาการ
ส่ ง โดยวิธีการหยุดส่ งข้อมูลเป็ นเวลามากว่าหรื อเท่ากับ 3.5 เท่า ของเวลาที่ใช้ในการส่ งข้อมูล 1
ตัวอักษร
- ส่ วนที่ 2 ในชุ ดเฟรมข้อมู ล จะเป็ นส่ วนของหมายเลขของอุ ป กรณ์ (Address) ซึ่ งมี
ขนาด 1 ไบต์ โดยในเฟรมร้องขอนี้จะใช้ระบุถึงตัวลูกข่าย ที่จะรับคาร้องขอที่ส่งไปถึง และในส่ วน
ของเฟรมการตอบสนองจะเริ่ ม ต้นด้วยหมายเลขของลู ก ข่ า ยที่ ตอบสนองกลับ เช่ นเดี ย วกัน ใน
โครงข่ายของโปรโตคอลมอดบัส โดยตามมาตรฐานนั้นหมายเลขของลูกข่ายจะอยูใ่ นช่วงระหว่าง 1
ถึง 247 ลูกข่าย และในทางปฏิบตั ิ แม่ข่ายหนึ่ งตัว มักจะมีลูกข่าย อยูท่ ี่ 1 ถึง 10 ตัวเท่านั้น เพราะ
เมื่อมีจานวนลูกข่ายมาก ประสิ ทธิ ภาพของการสื่ อสารก็จะลดลงตามไปด้วย
- ส่ วนที่ 3 ในชุ ดเฟรมข้อมูล คือ ส่ วนของรหัสคาสั่ง ซึ่ งมีขนาด 1 ไบต์ โดยในการร้อง
ขอของแม่ข่ายจะระบุรหัสคาสั่งที่ให้ตวั ลูกข่ายดาเนิ นการ ซึ่ งเมื่อลูกข่ายดาเนิ นการตามรหัสคาสั่ง
ตามที่ร้องขอได้แล้วนั้น ลูกข่ายจะตอบสนองโดยใช้หมายเลขคาสั่งเดียวกันเพื่อยืนยัน
6

- ส่ วนที่ 4 ในชุ ดเฟรมข้อมูล คือ ส่ วนของข้อมูล ซึ่ งมีขนาดตามรหัสคาสั่งนั้นที่ใช้ใน


เฟรมร้องขอของแม่ข่าย และในส่ วนของเฟรมตอบกลับของลูกข่ายจะมีขนาดเท่ากับข้อมูลที่แม่ข่าย
ร้องขอในรู ปแบบยืนยัน
- ส่ วนที่ 5 จะเป็ น 2 ไบต์สุดท้ายของเฟรมข้อมูล ซึ่ งจะเป็ นการตรวจสอบข้อผิดพลาดค่า
ข้อมูล ที่เป็ นตัวเลขที่ถูกคานวณโดยใช้วธิ ีการ CRC-16 ซึ่ งเป็ นการตรวจสอบเพื่อที่จะทาให้แน่ใจว่า
อุปกรณ์จะไม่ตอบสนองคาขอที่มีความผิดพลาด
- ส่ วนที่ 6 ของเฟรมข้อมูล จะเป็ นการส่ งสัญญาณเพื่อหยุดของชุ ดข้อมูลที่จะทาการส่ ง
และเป็ นการเริ่ มต้นชุ ดข้อมูลถัดไปอีกด้วย โดยวิธีการหยุดส่ งข้อมูลเป็ นเวลามากว่าหรื อเท่ากับ 3.5
เท่า ของเวลาที่ใช้ในการส่ งข้อมูล 1 ตัวอักษร

ตารางที่ 2.1 แสดงรู ปแบบทัว่ ไปของโครงสร้างของโปรโตคอลมอดบัส RTU


Start หมายเลข รหัสคาสั่ง ชุดข้ อมูล CRC Stop (Start)
≥ 3.5 Character time 1 ไบต์ 1 ไบต์ N x 1 ไบต์ 2 ไบต์ ≥ 3.5 Character time

3. โปรโตคอลมอดบัสชนิ ด ASCII จะมีความแตกต่างจากโหมด RTU ตรงที่ในโหมด


RTU ข้อมูลที่ จะส่ งขนาด 1 ไบต์ นามารวมกับบิตประกอบต่างๆ เป็ นชุ ดข้อมูล แต่สาหรับชนิ ด
ASCII จะมองข้อมูล 1 ไบต์ นั้นออกมาเป็ นตัวอักษร 2 ตัว จากนั้นก็จะทาการค้นหารหัส ASCII
ของตัวอักษรทั้ง 2 ตัวนั้นแล้วทาการส่ งรหัส ASCII ทั้ง 2 ค่านี้ ออกไป ซึ่ งจะได้ผลเท่ากับการส่ ง
ข้อมูลขนาด 1 ไบต์ ในโหมด RTU จะมีชุดเฟรมข้อมูลดังต่อไปนี้
- ส่ วนที่ 1 ในชุ ดเฟรมข้อมูล จะเป็ นการส่ งสัญญาณเพื่อเริ่ มต้นของชุ ดข้อมูลที่จะทาการ
ส่ ง ขนาด 1 ตัวอักษร
- ส่ วนที่ 2 ในชุดเฟรมข้อมูล จะเป็ นส่ วนของหมายเลขของอุปกรณ์เหมือนกับชนิ ด RTU
ซึ่ง เป็ นข้อมูล ASCII ที่จะมีขนาด 2 ตัวตัวอักษร
- ส่ วนที่ 3 ในชุ ดเฟรมข้อมูล คือ ส่ วนของรหัสคาสั่งเหมือนกับชนิ ด RTU ซึ่ งเป็ นข้อมูล
ASCII ที่จะมีขนาด 2 ตัวตัวอักษร
- ส่ วนที่ 4ในชุดเฟรมข้อมูล คือ ส่ วนของข้อมูลที่มีขนาด 2~252 ตัวอักษรขึ้นอยูก่ บั ชนิ ด
ของรหัสคาสั่งที่ใช้งาน
- ส่ วนที่ 5 จะเป็ น 2 ไบต์สุดท้ายของเฟรมข้อมูล ซึ่ งจะเป็ นการตรวจสอบข้อผิดพลาดค่า
ข้อมูล โดยใช้วิธีการ LRC ซึ่ งเป็ นการตรวจสอบเพื่อที่จะทาให้แน่ใจว่าอุปกรณ์จะไม่ตอบสนองคา
ขอที่มีความผิดพลาด
7

- ส่ วนที่ 6 ของเฟรมข้อมูล จะเป็ นการส่ งสัญญาณเพื่อหยุดของชุ ดข้อมูลที่จะทาการส่ ง


และเป็ นการเริ่ มต้นชุดข้อมูลถัดไปอีกด้วย โดยมีขนาด 2 ตัวอักษร

ตารางที่ 2.2 แสดงรู ปแบบทัว่ ไปของโครงสร้างของโปรโตคอลมอดบัส ASCII


Start หมายเลข รหัสคาสั่ง ชุดข้ อมูล LRC Stop
1 Character 2~252 2 Character
2 Character 2 Character 2 Character
time Character CR,LF

3. โปรโตคอลมอดบัสชนิ ด TCP/IP ใช้งานในเครื อข่าย Ethernet โดยจะใช้ Gateway


ติดต่อและแปลงรู ปแบบการสื่ อสารข้อมูล โดยการสื่ อสารของโปรโตคอลมอดบัส RTU/ASCII นั้น
จะเป็ นการสื่ อสารผ่านทาง RS-232/422/485 นั้นจะถู ก Gateway แปลงให้เป็ นโปรโตคอลชนิ ด
TCP/IP เพื่อใช้ในการติดต่อสื่ อสารในเครื อข่าย Ethernet ต่อไป

ตารางที่ 2.3 แสดงช่วงตาแหน่งการเก็บข้อมูลและประเภทของข้อมูล และรหัสคาสั่งที่ถูกใช้ในการ


สื่ อสารผ่านโปโตคอลมอดบัสตามแต่ละรหัสคาสั่งตามมาตรฐาน
รหัส ขนาดในการ ตาแหน่ งเก็บ
รายละเอียด ประเภท
คาสั่ง ควบคุม ข้ อมูล
01 1 บิต อ่านค่าบิต (Read Coils)
05 1 บิต สัง่ บิตทางาน (Write Single Coil) 00001 - 10000 อ่าน-สัง่
15 N × 1 บิต สัง่ บิตทางานแบบชุด (Write Multiple Coils)
02 1 บิต อ่านค่าอินพุต (Read Discrete Inputs) 10001 - 20000 อ่าน
03 16 บิต อ่านสถานะข้อมูล (Read Holding Registers)
06 16 บิต แก้ไขค่าข้อมูล (Write Single Register) 40001 - 50000 อ่าน-สัง่
16 N × 16 บิต แก้ไขค่าข้อมูลแบบชุด (Write Multiple Registers)
04 16 บิต อ่านค่าข้อมูล (Read Input Register) 30001 - 40000 อ่าน
8

2.1.1 รหัสคาสั่ ง 01 : อ่านค่ าบิต (Read Coils)


ชุดรหัสคาร้องขอ ของรหัสคาสั่งนี้จะใช้ในการอ่านสถานะของบิตเอาต์พุตในอุปกรณ์ลูก
ข่าย โดยคาขอจะระบุหมายเลขของลูกข่ายหมายเลข 1-247 ที่มีขนาด 1 ไบต์ ตามด้วยรหัสคาสั่ง 01
ขนาด 1 ไบต์ และตามด้วยตาแหน่งเริ่ มต้นของบิตเอาต์พุตที่ตอ้ งการรู้สถานะ ที่มีขนาด 2 ไบต์
และต่อมาจะระบุจานวนที่ตอ้ งการทราบสถานะของบิตเอาต์พุตได้ 1-2000 ชุด ที่มีขนาด 2 ไบต์
เช่นเดียวกัน

ตารางที่ 2.4 เฟรมร้องขอรหัส 01


ตรวจสอบความผิดพลาด
หมายเลขลูกข่ าย รหัสคาสั่ง ตาแหน่ งเริ่มต้ น จานวน
(CRC 16)
1 to 247 01 00000 to 65535 1 to 2000 Check from Data
0x01 to 0xF7 0x01 0x0000 to 0xFFFF 0x0001 to 0x07D0 Check from Data
1 ไบต์ 1 ไบต์ 2 ไบต์ 2 ไบต์ 2 ไบต์

ชุ ดรหัสข้อความตอบกลับ จะแสดงหมายเลขลู กข่าย ที่ มีขนาด 1 ไบต์ ตามด้วยรหัส


คาสั่งที่มีขนาด 1 ไบต์ ตามด้วยจานวนไบต์ ของสถานะข้อมูลที่ได้ทาการตอบกลับมา ที่มีขนาด 1
ไบต์ และตามด้วยชุดสถานะของข้อมูล ซึ่ งสถานะของข้อมูลจะแสดงเป็ นบิต 1 = ON และ 0 =
OFF ของบิตเอาต์พุต และถ้าหากปริ มาณการส่ งกลับมาไม่ครบ 8 บิตในไบต์ ก็จะแสดงศูนย์
เพื่อให้ครบไบต์ที่สมบูรณ์ของข้อมูล มีขนาด 1 ไบต์ × จานวนไบต์ ของสถานะข้อมูลที่ได้ทาการ
ตอบกลับมา

ตารางที่ 2.5 เฟรมตอบกลับรหัส 01


จานวนไบต์ ของ ตรวจสอบความผิดพลาด
หมายเลขลูกข่ าย รหัสคาสั่ง สถานะของข้ อมูล
ข้ อมูล (CRC 16)
1 to 247 01 จานวนไบต์ แสดงสถานะ Check from Data
0x01 to 0xF7 0x01 จานวนไบต์ แสดงสถานะ Check from Data
1 ไบต์ 1 ไบต์ 1 ไบต์ N ไบต์ 2 ไบต์
9

2.1.2 รหัสคาสั่ ง 02 : อ่ านค่ าอินพุต (Read Discrete Inputs)


ชุดรหัสคาร้องขอ ของรหัสคาสั่งนี้ จะใช้ในการอ่านสถานะของบิตอินพุต ในอุปกรณ์ลูก
ข่าย โดยคาขอจะระบุหมายเลขของลูกข่ายหมาย 1-247 ที่มีขนาด 1 ไบต์ ตามด้วยรหัสคาสั่ง 02
ขนาด 1 ไบต์ และตามด้วยตาแหน่งเริ่ มต้นของบิตอินพุตที่ตอ้ งการรู้สถานะ ที่มีขนาด 2 ไบต์ และ
ต่อมาจะระบุจานวนที่ตอ้ งการที่ตอ้ งการทราบสถานะของบิตอินพุตได้ 1-2000 ชุ ด ที่มีขนาด 2 ไบต์
เช่นเดียวกัน

ตารางที่ 2.6 เฟรมร้องขอรหัส 02


ตรวจสอบความผิดพลาด
หมายเลขลูกข่ าย รหัสคาสั่ง ตาแหน่ งเริ่มต้ น จานวน
(CRC 16)
1 to 247 02 00000 to 65535 1 to 2000 Check from Data
0x01 to 0xF7 0x02 0x0000 to 0xFFFF 0x0001 to 0x07D0 Check from Data
1 ไบต์ 1 ไบต์ 2 ไบต์ 2 ไบต์ 2 ไบต์

ชุดรหัสข้อความตอบกลับ จะแสดงหมายเลขลูกข่าย ที่มีขนาด 1 ไบต์ ตามด้วยรหัสคาสั่ง


ที่มีขนาด 1 ไบต์ ตามด้วยจานวนไบต์ ของสถานะข้อมูลที่ได้ทาการตอบกลับมา ที่มีขนาด 1 ไบต์
และตามด้วยชุดสถานะของข้อมูล ซึ่ งสถานะของข้อมูลจะแสดงเป็ นบิต 1 = ON และ 0 = OFF ของ
บิตอินพุต หากปริ มาณการส่ งออกกลับมาไม่ครบ 8 บิต ในไบต์จะแสดงศูนย์เพื่อให้ครบไบต์ที่
สมบูรณ์ของข้อมูล มีขนาด 1 ไบต์ × จานวนไบต์ ของสถานะข้อมูลที่ได้ทาการตอบกลับมา

ตารางที่ 2.7 เฟรมตอบกลับรหัส 02


จานวนไบต์ ของ ตรวจสอบความผิดพลาด
หมายเลขลูกข่ าย รหัสคาสั่ง สถานะของข้ อมูล
ข้ อมูล (CRC 16)
1 to 247 02 จานวนไบต์ แสดงสถานะ Check from Data
0x01 to 0xF7 0x02 จานวนไบต์ แสดงสถานะ Check from Data
1 ไบต์ 1 ไบต์ 1 ไบต์ N × 1 ไบต์ 2 ไบต์
10

2.1.3 รหัสคาสั่ ง 03 : อ่ านสถานะข้ อมูล (Read Holding Registers)


ชุ ดรหัสคาร้องขอ ของรหัสคาสั่งนี้ จะใช้ในการอ่านสถานะของ อนาล็อกเอาต์พุตใน
อุปกรณ์ลูกข่าย โดยคาขอจะระบุหมายเลขของลูกข่ายหมาย 1-247 ที่มีขนาด 1 ไบต์ ตามด้วยรหัส
คาสั่ง 03 ขนาด 1 ไบต์ และตามด้วยตาแหน่งเริ่ มต้นของอนาล็อกเอาต์พุต ที่ตอ้ งการรู้สถานะ ที่มี
ขนาด 2 ไบต์ และต่อมาจะระบุจานวน ที่ตอ้ งการที่ตอ้ งการทราบสถานะของอนาล็อกเอาต์พุตได้ 1-
2000 ชุด ที่มีขนาด 2 ไบต์ เช่นเดียวกัน

ตารางที่ 2.8 เฟรมร้องขอรหัส 03


ตรวจสอบความ
หมายเลขลูกข่ าย รหัสคาสั่ง ตาแหน่ งเริ่มต้ น จานวน
ผิดพลาด (CRC 16)
1 to 247 03 00000 to 65535 1 to 2000 Check from Data
0x01 to 0xF7 0x03 0x0000 to 0xFFFF 0x0001 to 0x07D0 Check from Data
1 ไบต์ 1 ไบต์ 2 ไบต์ 2 ไบต์ 2 ไบต์

ชุดรหัสข้อความตอบกลับ จะแสดงหมายเลขลูกข่าย ที่มีขนาด 1 ไบต์ ตามด้วยรหัสคาสั่ง


ที่มีขนาด 1 ไบต์ ตามด้วยจานวนไบต์ ของสถานะข้อมูลที่ได้ทาการตอบกลับมาที่มีขนาด 2 ไบต์
และตามด้วยชุดสถานะของข้อมูล ซึ่ งสถานะของข้อมูลจะแสดงเป็ นข้อมูลขนาด 2 ไบต์ × จานวน
ไบต์ ของสถานะข้อมูลที่ได้ทาการตอบกลับมา

ตารางที่ 2.9 เฟรมตอบกลับรหัส 03


จานวนไบต์ ของ ตรวจสอบความ
หมายเลขลูกข่ าย รหัสคาสั่ง สถานะของข้ อมูล
ข้ อมูล ผิดพลาด (CRC 16)
1 to 247 03 จานวนไบต์ แสดงสถานะ Check from Data
0x01 to 0xF7 0x03 จานวนไบต์ แสดงสถานะ Check from Data
1 ไบต์ 1 ไบต์ 1 ไบต์ N × 2 ไบต์ 2 ไบต์
11

2.1.4 รหัสคาสั่ ง 04 : อ่ านค่ าข้ อมูล (Read Input Register)


ชุ ดรหัสคาร้องขอ ของรหัสคาสั่งนี้ จะใช้ในการอ่านสถานะของอนาล็อกเอาต์พุต ใน
อุปกรณ์ลูกข่าย โดยคาขอจะระบุหมายเลขของลูกข่ายหมาย 1-247 ที่มีขนาด 1 ไบต์ ตามด้วยรหัส
คาสั่ง 04 ขนาด 1 ไบต์ และตามด้วยตาแหน่งเริ่ มต้นของอนาล็อกเอาต์พุต ที่ตอ้ งการรู้สถานะ ที่มี
ขนาด 2 ไบต์ และต่อมาจะระบุจานวนที่ตอ้ งการที่ตอ้ งการทราบสถานะของอนาล็อกเอาต์พุตได้ 1-
2000 ชุด ที่มีขนาด 2 ไบต์ เช่นเดียวกัน

ตารางที่ 2.10 เฟรมร้องขอรหัส 04


ตรวจสอบความ
หมายเลขลูกข่ าย รหัสคาสั่ง ตาแหน่ งเริ่มต้ น จานวน
ผิดพลาด (CRC 16)
1 to 247 04 00000 to 65535 1 to 2000 Check from Data
0x01 to 0xF7 0x04 0x0000 to 0xFFFF 0x0001 to 0x07D0 Check from Data
1 ไบต์ 1 ไบต์ 2 ไบต์ 2 ไบต์ 2 ไบต์

ชุดรหัสข้อความตอบกลับ จะแสดงหมายเลขลูกข่าย ที่มีขนาด 1 ไบต์ ตามด้วยรหัสคาสั่ง


ที่มีขนาด 1 ไบต์ ตามด้วยจานวนไบต์ ของสถานะข้อมูลที่ได้ทาการตอบกลับมา ที่มีขนาด 1 ไบต์
และตามด้วยชุดสถานะของข้อมูล ซึ่ งสถานะของข้อมูลจะแสดงเป็ นข้อมูลขนาด 2 ไบต์ × จานวน
ไบต์ ของสถานะข้อมูล ที่ได้ทาการตอบกลับมา

ตารางที่ 2.11 เฟรมตอบกลับรหัส 04


จานวนไบต์ ของ ตรวจสอบความ
หมายเลขลูกข่ าย รหัสคาสั่ง สถานะของข้ อมูล
ข้ อมูล ผิดพลาด (CRC 16)
1 to 247 04 จานวนไบต์ แสดงสถานะ Check from Data
0x01 to 0xF7 0x04 จานวนไบต์ แสดงสถานะ Check from Data
1 ไบต์ 1 ไบต์ 1 ไบต์ N × 2 ไบต์ 2 ไบต์
12

2.1.5 รหัสคาสั่ ง 05 : สั่ งบิตทางาน (Write Single Coil)


ชุดรหัสคาร้องขอ ของรหัสคาสั่งนี้จะใช้ในการควบคุม หรื อเปลี่ยนแปลงสถานะของบิต
เอาต์พุต ในอุปกรณ์ลูกข่าย โดยคาขอจะระบุหมายเลขของลูกข่ายหมาย 1-247 ที่มีขนาด 1 ไบต์
ตามด้วยรหัสคาสั่ง 05 ขนาด 1 ไบต์ และตามด้วยตาแหน่งของบิตเอาต์พุต ที่ตอ้ งการควบคุม ที่มี
ขนาด 2 ไบต์ และต่ อมาจะระบุส ถานะที่ต้องการให้บิ ตเอาต์พุ ต นั้นมี ค่า ที่ มีข นาด 2 ไบต์
เช่นเดียวกัน

ตารางที่ 2.12 เฟรมร้องขอรหัส 05


ตรวจสอบความ
หมายเลขลูกข่ าย รหัสคาสั่ง ตาแหน่ ง เอาต์ พตุ ค่ าของ เอาต์ พุต
ผิดพลาด (CRC 16)
1 to 247 05 00000 to 65535 0 or 1 Check from Data
0x01 to 0xF7 0x05 0x0000 to 0xFFFF 0x0000 or 0xFF00 Check from Data
1 ไบต์ 1 ไบต์ 2 ไบต์ 2 ไบต์ 2 ไบต์

ชุดรหัสข้อความตอบกลับ จะแสดงหมายเลขลูกข่ายที่มีขนาด 1 ไบต์ ตามด้วยรหัสคาสั่งที่


มีขนาด 1 ไบต์ ตามด้วยตาแหน่งของบิตเอาต์พุตที่ควบคุม จานวน 2 ไบต์ ตามด้วยสถานะของ
ข้อมูลที่ได้ทาการควบคุม ซึ่งสถานะของข้อมูลจะแสดงเป็ นบิต 1 = ON และ 0 = OFF ของบิต หาก
ปริ มาณการส่ งกลับมาไม่ครบ 8 บิต ในไบต์ จะแสดงศูนย์เพื่อให้ครบไบต์ที่สมบูรณ์ของข้อมูล มี
ขนาด 2 ไบต์ ของสถานะข้อมูลที่ทาการตอบกลับมา

ตารางที่ 2.13 เฟรมตอบกลับรหัส 05


ตรวจสอบความ
หมายเลขลูกข่ าย รหัสคาสั่ง ตาแหน่ ง เอาต์ พตุ ค่ าของ เอาต์ พุต
ผิดพลาด (CRC 16)
1 to 247 05 00000 to 65535 0 or 1 Check from Data
0x01 to 0xF7 0x05 0x0000 to 0xFFFF 0x0000 or 0xFF00 Check from Data
1 ไบต์ 1 ไบต์ 2 ไบต์ 2 ไบต์ 2 ไบต์
13

2.1.6 รหัสคาสั่ ง 06 : แก้ ไขค่ าข้ อมูล (Write Single Register)


ชุดรหัสคาร้องขอ ของรหัสคาสั่งนี้จะใช้ในการควบคุมหรื อเปลี่ยนแปลงสถานะอนาล็อก
เอาต์พุตในอุปกรณ์ ลูกข่าย โดยคาขอจะระบุหมายเลขของลูกข่ายหมาย 1-247 ที่มีขนาด 1 ไบต์
ตามด้วยรหัสคาสั่ง 06 ขนาด 1 ไบต์ และตามด้วยตาแหน่งของอนาล็อกเอาต์พุต ที่ตอ้ งการควบคุม
ที่มีขนาด 2 ไบต์ และต่อมาจะระบุสถานะที่ตอ้ งการให้อนาล็อกเอาต์พุต นั้นมีค่า ที่มีขนาด 2 ไบต์
เช่นเดียวกัน

ตารางที่ 2.14 เฟรมร้องขอรหัส 06


ตรวจสอบความ
หมายเลขลูกข่ าย รหัสคาสั่ง ตาแหน่ ง เอาต์ พตุ ค่ าของ Register
ผิดพลาด (CRC 16)
1 to 247 06 00000 to 65535 0 or 65535 Check from Data
0x01 to 0xF7 0x06 0x0000 to 0xFFFF 0x0000 or 0xFFFF Check from Data
1 ไบต์ 1 ไบต์ 2 ไบต์ 2 ไบต์ 2 ไบต์

ชุดรหัสข้อความตอบกลับ จะแสดงหมายเลขลูกข่าย ที่มีขนาด 1 ไบต์ ตามด้วยรหัสคาสั่ง


ที่มีขนาด 1 ไบต์ ตามด้วยตาแหน่ งของบิตเอาต์พุตที่ควบคุม จานวน 2 ไบต์ ตามด้วยสถานะของ
ข้อมูลที่ได้ทาการควบคุม ซึ่งสถานะของข้อมูลจะแสดงเป็ นข้อมูล 0 - 65535 ซึ่งมีขนาด 2 ไบต์

ตารางที่ 2.15 เฟรมตอบกลับรหัส 06


ตรวจสอบความ
หมายเลขลูกข่ าย รหัสคาสั่ง ตาแหน่ ง เอาต์ พตุ ค่ าของ Register
ผิดพลาด (CRC 16)
1 to 247 06 00000 to 65535 0 or 65535 Check from Data
0x01 to 0xF7 0x06 0x0000 to 0xFFFF 0x0000 or 0xFFFF Check from Data
1 ไบต์ 1 ไบต์ 2 ไบต์ 2 ไบต์ 2 ไบต์
14

2.1.7 รหัสคาสั่ ง 15 : สั่ งบิตทางานแบบชุ ด (Write Multiple Coils)


ชุดรหัสคาร้องขอ ของรหัสคาสั่งนี้ จะใช้ในการควบคุม หรื อเปลี่ยนแปลงสถานะของบิต
เอาต์พุต ในอุปกรณ์ลูกข่ายเป็ นกลุ่มโดยคาขอจะระบุหมายเลขของลูกข่ายหมาย 1-247 ที่มีขนาด 1
ไบต์ ตามด้วยรหัสคาสั่ง 15 ขนาด 1 ไบต์ และตามด้วยตาแหน่งเริ่ มต้นของบิตเอาต์พุตที่ตอ้ งการ
ควบคุมที่มีขนาด 2 ไบต์ และต่อมาจะระบุจานวนที่ตอ้ งการที่ตอ้ งการควบคุ มสถานะของบิต
เอาต์พุต ที่มีขนาด 2 ไบต์ และต่อมาจะระบุจานวนไบต์ของข้อมูลที่ควบคุมที่มีขนาด 1 ไบต์ และ
ตามด้วยสถานะที่ตอ้ งการควบคุมให้บิตเอาต์พุต ชุ ดนั้นมีค่า 1 ไบต์ × จานวนไบต์ ของข้อมูลที่ได้
ทาการควบคุม

ตารางที่ 2.16 เฟรมร้องขอรหัส 15


ตรวจสอบความ
หมายเลข รหัส จานวนบิต
ตาแหน่ งเริ่มต้ น ค่ าของ เอาต์ พุต ผิดพลาด
ลูกข่ าย คาสั่ง เอาต์ พตุ
(CRC 16)
1 to 247 15 00000 to 65535 1 to 1968 0 or 1 Check from Data
0x01 to 0xF7 0x0F 0x0000 to 0xFFFF 0x0001 to 0x07B0 0x0000 or 0xFF00 Check from Data
1 ไบต์ 1 ไบต์ 2 ไบต์ 2 ไบต์ N x 1 ไบต์ 2 ไบต์

ชุ ดรหัสข้อความตอบกลับ จะแสดงหมายเลขลู กข่าย ที่ มีขนาด 1 ไบต์ ตามด้วยรหัส


คาสัง่ ที่มีขนาด 1 ไบต์ ตามด้วยตาแหน่งของบิตเอาต์พุตชุ ดที่ควบคุม จานวน 2 ไบต์ ตามด้วย
จานวนข้อมูลที่ได้ทาการควบคุมที่มีขนาด 2 ไบต์

ตารางที่ 2.17 เฟรมตอบกลับรหัส 15


จานวน ตรวจสอบความ
หมายเลขลูกข่ าย รหัสคาสั่ง ตาแหน่ ง เอาต์ พตุ
บิตเอาต์ พุต ผิดพลาด (CRC 16)
1 to 247 15 00000 to 65535 1 to 1968 Check from Data
0x01 to 0xF7 0x0F 0x0000 to 0xFFFF 0x0001 to 0x07B0 Check from Data
1 ไบต์ 1 ไบต์ 2 ไบต์ 2 ไบต์ 2 ไบต์
15

2.1.8 รหัสคาสั่ ง 16 : แก้ ไขค่ าข้ อมูลแบบชุ ด (Write Multiple Registers)


ชุ ดรหัสคาร้องขอ ของรหัสคาสั่งนี้ จะใช้ในการควบคุ มหรื อเปลี่ ยนแปลงสถานะของ
ข้อมูล ในอุปกรณ์ ลูกข่ายเป็ นกลุ่ม โดยคาขอจะระบุหมายเลขของลูกข่ายหมาย 1-247 ที่มีขนาด 1
ไบต์ ตามด้วยรหัสคาสั่ง 16 ขนาด 1 ไบต์ และตามด้วยตาแหน่งเริ่ มต้นของอนาล็อกเอาต์พุตที่
ต้องการควบคุม ที่มีขนาด 2 ไบต์ และต่อมาจะระบุจานวนที่ตอ้ งการที่ตอ้ งการควบคุมสถานะของ
อนาล็อกเอาต์พุต ที่มีขนาด 2 ไบต์ และต่อมาจะระบุจานวนไบต์ของข้อมูลที่ควบคุม ที่มีขนาด 1
ไบต์ และตามด้วยสถานะที่ตอ้ งการควบคุมให้อนาล็อกเอาต์พุตชุ ดนั้นมีค่า 2 ไบต์ × จานวนไบต์
ของข้อมูลที่ได้ทาการควบคุม

ตารางที่ 2.18 เฟรมร้องขอรหัส 16


ตรวจสอบความ
หมายเลข จานวนไบต์
รหัสคาสั่ง ตาแหน่ งเริ่มต้ น จานวน Register ค่ าของเอาต์ พุต ผิดพลาด
ลูกข่ าย ของข้ อมูล
(CRC 16)
1 to 247 16 00000 to 65535 1 to 1968 จานวนไบต์ 0 or 1 Check from Data
0x01 to 0xF7 0x10 0x0000 to 0xFFFF 0x0001 to 0x07B0 จานวนไบต์ 0x0000 or 0xFF00 Check from Data
1 ไบต์ 1 ไบต์ 2 ไบต์ 2 ไบต์ 1 ไบต์ N x 2 ไบต์ 2 ไบต์

ชุดรหัสข้อความตอบกลับ จะแสดงหมายเลขลูกข่าย ที่มีขนาด 1 ไบต์ ตามด้วยรหัสคาสั่ง


ที่มีขนาด 1 ไบต์ ตามด้วยตาแหน่ งของอนาล็อกเอาต์พุตชุ ดที่ควบคุม จานวน 2 ไบต์ ตามด้วย
จานวนข้อมูลที่ได้ทาการควบคุม ที่มีขนาด 2 ไบต์

ตารางที่ 2.19 เฟรมตอบกลับรหัส 16


ตรวจสอบความผิดพลาด
หมายเลขลูกข่ าย รหัสคาสั่ง ตาแหน่ ง เอาต์ พตุ จานวน Register
(CRC 16)
1 to 247 16 00000 to 65535 1 to 1968 Check from Data
0x01 to 0xF7 0x10 0x0000 to 0xFFFF 0x0001 to 0x07B0 Check from Data
1 ไบต์ 1 ไบต์ 2 ไบต์ 2 ไบต์ 2 ไบต์
16

2.2 ทฤษฎีของการติดต่อสื่อสารผ่านแสงที่มองเห็นได้ (Visible Light


Communication)[3]
2.2.1 องค์ ประกอบของแสงที่มองเห็นได้
แสงขาว ประกอบด้วยแสงหลายสี ที่รวมกัน ซึ่ งประกอบด้วยเจ็ดสี ได้แก่ ม่วง คราม น้ า
เงิน เขียว เหลือง ส้ม แดง โดยสี ม่วงจะมีพลังงานมากสุ ด (ความยาวคลื่ นสั้น) และพลังงานจะ
ลดลงเรื่ อยๆ ตามลาดับ จนกระทัง่ สี แดงที่มีพลังงานต่าสุ ด (ความยาวคลื่นยาว)
ปรากฏการณ์การแยกสี ของแสงขาว เช่น นาปริ ซึมไปวางให้แสงส่ องผ่าน เมื่อแสงเดิ น
ทางผ่านตัวกลางที่มีดชั นี หกั เหแตกต่างกัน ด้วยความยาวคลื่นที่ต่างกันจะหักเหด้วยมุมที่ไม่เท่ากัน
เราจึงมองเห็ น สี แสงขาวแยกออกเป็ นสี ต่า งๆ ได้ และเมื่ อนาฉากไปรั บก็ จะแสดงปรากฏการณ์
ธรรมชาติอย่างหนึ่ ง คือ การเกิ ดรุ ้ ง ซึ่ งเกิดจากการที่แสงเดิ นทางผ่านหยดไอน้ าในอากาศ ทาให้
เกิดการหักเหของแสงเกิดเป็ นการแยกสี ของแสงขาวขึ้น

ภาพที่ 2.3 การหักเหของแสงเมื่อเดินทางผ่านปริ ซึม

2.2.2 สเปกตรัมของแสงขาว (Spectrum of Visible Light)


คลื่นแสงที่ตาของมนุษย์สามารถมองเห็นได้อยูใ่ นช่วงประมาณ 380-780 nm ถ้านัยน์ตา
ถูกกระตุน้ ด้วยแสงตลอดทั้งช่วงความยาวคลื่น (380-780 nm) ผลก็คือ จะมองเห็นแสงนั้นเป็ นแสง
ขาว แต่ถา้ คลื่นแสงถูกดูดกลืนแสงไปบางส่ วน แสงที่ตามองเห็นจะเป็ นสี ผสม (Complementary)

ภาพที่ 2.4 ความยาวของคลื่นแสงแต่ละประเภท


17

2.2.3 พัฒนาการมาตรฐานการสื่ อสารทางแสงทีม่ องเห็นได้


การใช้งานความถี่ ย่านแสงที่มองเห็ น คือระหว่างความยาวคลื่น 380 – 780 nm หรื อ
ความถี่ 380 – 780 THz ซึ่ งย่านความถี่ดงั กล่าว เป็ นย่านความถี่ที่มากกว่าย่านความถี่ 3 THz ซึ่ งเป็ น
ย่านความถี่สูงสุ ดที่หน่วยงานกากับดูแลการใช้งานคลื่นความถี่ของแต่ละประเทศมีการควบคุมการ
ใช้งาน โดยที่เครื อข่ายการสื่ อสารด้วยแสง สามารถแบ่งตามลักษณะการใช้งาน ดังนี้
1. โครงข่ายพื้นฐาน (Infrastructure)
- ถูกติดตั้งในตาแหน่งที่แน่นอน ไม่สามารถเคลื่อนย้ายไปตาแหน่งอื่น
- มีพลังงานใช้อย่างไม่จากัด
- ไม่ถูกจากัดด้านขนาดหรื อรู ปทรง
- แหล่งกาเนิดแสงสามารถให้ค่าความสว่างได้มาก สามารถนาไปใช้ในการ
สื่ อสารได้ท้ งั ระยะใกล้และระยะไกล
- ความเร็ วในการสื่ อสารสามารถรองรับได้ท้ งั การสื่ อสารความเร็ วต่าและการ
สื่ อสารความเร็ วสู ง
2. เคลื่อนที่ได้ (Mobile)
- อุปกรณ์จะไม่ถูกติดตั้งอยูก่ บั ที่
- มีขอ้ จากัดด้านพลังงานและขนาดของอุปกรณ์
- แหล่งกาเนิดแสงให้ความสว่างได้จากัด
- ส่ งผลต่อระยะทางการสื่ อสารที่ไม่ไกล
- ความเร็ วในการสื่ อสารที่มีความเร็ วต่า
3. ยานพาหนะ (Vehicle)
- มีขอ้ จากัดอยูร่ ะหว่างกลาง คือ ตาแหน่งของอุปกรณ์จะเคลื่อนที่ได้ แต่พลังงาน
ยังคงจากัดอยู่
- ใช้ในการสื่ อสารระยะไกลที่ความเร็ วในการสื่ อสารไม่สูงนัก
4. สเปกตรัมในสภาวะการกล้ าสัญญาณ
- สามารถจาแนกความแตกต่างระหว่างสภาวะปกติที่ไม่มีการกล้ าสัญญาณและ
สภาวะที่มีการกล้ าสัญญาณได้
- ทาให้ทราบถึงช่วงเวลาที่ช่องทางการสื่ อสารไม่ถูกใช้งานได้ (Clear Channel
Assessment : CCA)
18

5. สถาปัตยกรรมของมาตรฐาน ประกอบด้วย
- ชั้นฟิ สิ กคอล (Physical Layer : PHY) กาหนดมาตรฐานในส่ วนประกอบของ
อุปกรณ์รับ–ส่ งแสง และกลไกการควบคุมทางวงจรต่างๆ
- ชั้นแมท (Medium Access control Layer : MAC)

ภาพที่ 2.5 โครงสร้างสถาปัตยกรรมของมาตรฐาน

ภาพที่ 2.6 รู ปแบบชั้นฟิ สิ กคอล


19

รู ปแบบ PHY I
- เพื่อใช้งานภายนอกอาคาร
- ใช้กบั ความเร็ วของการสื่ อสารทีไม่สูงมากนักในช่วงประมาณหลักร้อย Kbps
- ใช้เทคนิคการกล้ า OOK (On-Off Keying : OOK) และเทคนิคการกล้ า VPPM
(Variable Pulse Position Modulation : VPPM)
รู ปแบบ PHY II
- เพื่อใช้งานภายในอาคาร
- ใช้กบั ความเร็ วของการสื่ อสารระดับกลางในช่วงประมาณหลักสิ บ Mbps
- ใช้เทคนิคการกล้ า OOK (On-Off Keying : OOK) และเทคนิคการกล้ า VPPM
(Variable Pulse Position Modulation : VPPM)
รู ปแบบ PHY III
- เพื่อใช้การประยุกต์ใช้กบั การสื่ อสารที่มีจานวนตัวรับและตัวส่ งหลายตัว
- ใช้กบั ความเร็ วของการสื่ อสารอยูใ่ นช่วงประมาณหลักสิ บ Mbps
- ใช้เทคนิคการกล้ า CSK (Color-Shift Keying : CSK)

2.2.4 มาตรฐานการสื่ อสารด้ วยแสงทีม่ องเห็นได้ IEEE 802.15.7[4]


เป็ นการส่ งข้อมูลโดยการกล้ าความเข้มของแหล่งกาเนิ ดแสง เช่น แอลอีดี (LEDs) และ
เลเซอร์ ไ ดโอด (LDS) ที่ มีค วามเร็ วมากกว่า การรั บ รู ้ ถึง การเปลี่ ยนแปลงของตามนุ ษ ย์ ซึ่ ง ใน
มาตรฐานนี้มีการกาหนดคุณลักษณะสาคัญ ดังนี้
1. โทโพโลยีของเครื อข่ายในรู ปแบบการส่ งผ่านข้อมูลด้วยโทโพโลยีสตาร์ เพียร์ ทูเพียร์
หรื อการกระจาย
2. การกาหนดแอดเดรสสั้น 16 บิต หรื อยาว 64 บิต
3. การกาหนดการเข้าถึงตัวกลางในลักษณะการกาหนดเวลาเข้าถึง หรื อการกาหนดให้
เข้าถึงแบบสุ่ มที่มีกลไกป้ องกันการชน
4. โปรโตคอลการตอบกลับเมื่อได้รับข้อมูล เพื่อเสถียรภาพน่าเชื่อถือ
5. การกาหนดดัชนีช้ ีวดั คุณภาพ (Wavelength Quality Indication : WQI)
6. รองรับการมองเห็นได้ของแสง
7. รองรับการปรับเปลี่ยนสี
8. รองรับความมีเสถียรภาพของสี
20

2.2.5 มาตรฐานการสื่ อสารทางแสงแบบไร้ สาย CP1223 (Visible Light Beacon System


for Multimedia Applications)[5]
มาตรฐานนี้ ก าหนดความหมายของการสื่ อ สารทิ ศ ทางเดี ย วโดยผ่า นตัว กลางแสงที่
มองเห็น ด้วยการส่ งรหัสระบุตวั ต้นข้อมูลสาหรับอุปกรณ์มลั ติมีเดียด้วยแสงที่สามารถมองเห็นได้

ภาพที่ 2.7 แสงที่สามารถมองเห็นได้สาหรับอุปกรณ์มลั ติมีเดีย

โปรโตคอล คื อ โครงสร้ า งของอิ น เตอร์ เ ฟซด้า นบนจุ ด เชื่ อ มต่ อ (a) ที่ ก าหนดโดย
มาตรฐานนี้ โปรโตคอลที่ประกอบด้วยโครงสร้างของสองระนาบ ในการส่ งมอบระนาบข้อมูล
และระนาบรหัสระบุตวั ตน ในจานวนการส่ งออกนั้นชั้นฟิ สิ กคอล (L1: PHYSICAL) และชั้นเฟรม
ของ ชั้นที่สอง (L2: FRAME) คือชั้นที่ใช้ร่วมกันระนาบข้อมูลและระนาบรหัสระบุตวั ตน ส่ วนชั้น
ที่ สามและชั้นที่ อยู่เหนื อขึ้ นไปมี การแบ่ งออกเป็ นระนาบข้อมู ลและระนาบรหัส ระบุ ตวั ตน ให้
ข้อมูลของแสงที่สามารถมองเห็นได้จะได้รับการจัดตาแหน่งในของบุคคลที่สามชั้น ( L3 : ID ) และ
การส่ ง ข้อมูล โดยตรงจากรหัส ระบุ ตวั ตนที่ ได้รับการสร้ างขึ้ นมาจากข้อมู ลที่ ช้ นั (L3: DATA)
เป็ นไปได้ที่จะใช้ช้ นั ข้อมูลและชั้นรหัสระบุตวั ตนพร้อมกันในครั้งเดียวในชั้นที่สองได้
21

ภาพที่ 2.8 โครงสร้างของข้อมูลในโปรโตคอลอินเตอร์ เฟซ

เป็ นระบบการส่ งข้อมูลสาหรั บการกล้ าสัญญาณของแสงที่ มองเห็ นได้ดว้ ยวิธี 4 PPM


จะต้องถูกนามาใช้เป็ นวิธีการเข้ารหัสสัญญาณดังกล่าว ซึ่ งมีวิธีต่างๆ เช่น I-4PPM ( กลับด้านจาก 4
PPM ) เพื่อที่จะเฉลี่ยค่าความเข้มแสง ให้อยูใ่ นระดับที่ไม่มีผลกระทบต่อสายตามนุษย์

ภาพที่ 2.9 การกล้ าสัญญาณ I-4 PPM


22

2.3 PLC (Programmable Logic Controller) และไมโครคอนโทรลเลอร์


(Microcontroller)[6]
PLC เป็ นอุปกรณ์ควบคุมอิเล็กทรอนิกส์ ที่มีหน่ วย ความจาในการเก็บโปรแกรม สาหรับ
ควบคุ มการท างานของอุ ปกรณ์ ต่างๆ หรื อเครื่ องควบคุ มเชิ งตรรกะที่สามารถโปรแกรมได้ เป็ น
เครื่ องควบคุ ม อัตโนมัติที่สามารถโปรแกรมได้ PLC นั้นถู กสร้ าง และพัฒนาขึ้ นมาเพื่ อแทนที่
วงจรรี เลย์ อันเนื่องมาจากความต้องการที่อยากได้เครื่ องควบคุมที่มีราคาถูก และสามารถใช้งานได้
อย่างอเนกประสงค์ รวมทั้งสามารถเรี ยนรู ้การใช้งานได้ง่าย

2.3.1 โครงสร้ างทัว่ ไปของ PLC


ลักษณะโครงสร้างทัว่ ไป เหมือนกับอุปกรณ์ไมโครคอนโทรลเลอร์ (Microcontroller) คือ
อุปกรณ์ ควบคุ มขนาดเล็ก ซึ่ งบรรจุความสามารถที่คล้ายคลึงกับระบบคอมพิวเตอร์ โดยใน PLC
ได้รวมเอาซี พี ยู หน่ ว ยความจา พอร์ ต อิ นพุ ต -เอาต์พุ ต และหน่ วยจ่ า ยพลัง งานไฟฟ้ า ซึ่ ง เป็ น
ส่ วนประกอบหลักส าคัญของระบบคอมพิวเตอร์ เข้า ไว้ด้วยกัน โดยทาการบรรจุ เข้าไว้ในตัวถัง
เดียวกัน หรื อแยกเป็ นชุดประกอบกันได้

ภาพที่ 2.10 ลักษณะโครงสร้างทัว่ ไปของ PLC


23

โครงสร้างโดยทัว่ ไป ของ PLC นั้น สามารถแบ่งออกมาได้เป็ น 4 ส่ วนใหญ่ๆ ดังต่อไปนี้


1. หน่ วยประมวลผลกลางหรื อซี พียู (CPU : Central Processing Unit) ทาหน้าที่
ประมวลผลและควบคุ ม ซึ้ งเปรี ยบเสมือนสมองของ PLC ภายในประกอบด้วยวงจรลอจิกหลาย
ชนิดและมีไมโครโปรเซสเซอร์ เบส (Micro Processor Based) เพื่อให้ผใู้ ช้สามารถออกแบบวงจรได้
CPU จะยอมรับข้อมูลจากอุปกรณ์อินพุทต่างๆ จากนั้นจะทาการประมวลผลและเก็บข้อมูลโดยใช้
โปรแกรมจากหน่วยความจา หลังจากนั้นจะส่ งส่ งข้อมูลที่เหมาะสมและถูกต้องออกไปยังอุปกรณ์
เอาต์พุต
2. หน่วยความจา (Memory) ทาหน้าที่เก็บรักษาโปรแกรมและข้อมูลที่ใช้ในการทางาน โดย
ขนาดของหน่วยความจาจะถูกแบ่งออกเป็ นบิตข้อมูล(Data Bit) ภายในหน่วยความจา 1 บิต ก็จะมี
ค่าสภาวะทางลอจิก 0 หรื อ 1แตกต่างกันแล้วแต่คาสั่ง หน่วยความจาภายในระบบของ PLC จะแบ่ง
ออกเป็ น 2 ประเภท คือ
- Volatile Memory จะเป็ นหน่วยความจาชนิ ดที่ขอ้ มูล จะสู ญหาย เมื่อไม่มีการจ่ายกาลัง
งานไฟฟ้ าให้กบั หน่ วยความจา หน่ วยความจาแบบนี้ จะง่ ายในการเปลี่ ยนแปลง หรื อ ลบ ข้อมูล
หน่วยความจาประเภทนี้ ได้แก่ RAM เป็ นต้น
- Non-Volatile Memory จะเป็ นหน่วยความจาที่สามารถเก็บข้อมูล ไว้ได้ขณะที่ไม่มี การ
จ่ายกาลังงานไฟฟ้ าให้กบั หน่ วยความจา แต่หน่วยความจาแบบนี้ จะยากในการเปลี่ ยนแปลง หรื อ
แก้ไข ข้อมูลภายใน หน่วยความจาประเภทนี้ ได้แก่ ROM, EPROM และ EEPROM เป็ นต้น
3. ส่ วนติดต่อกับอุปกรณ์ ภายนอก ซึ่ งมีดว้ ยกัน 2 ลักษณะคือ พอร์ ตอินพุต และพอร์ ตส่ ง
สัญญาณหรื อพอร์ ตเอาต์พุต ส่ วนนี้จะใช้ในการเชื่อมต่อกับอุปกรณ์ภายนอก ถือว่าเป็ นส่ วนที่สาคัญ
มาก ใช้ ร่ ว มกัน ระหว่ า งพอร์ ต อิ น พุ ต เพื่ อ รั บ สั ญ ญาณอาจจะด้ว ยการกดสวิ ต ช์ เพื่ อ น าไป
ประมวลผลและส่ งไปพอร์ ตเอาต์พุต เพื่อแสดงผล
4. หน่วยจ่ายพลังงานไฟฟ้ า ( Power supply unit ) ทาหน้าที่ ปรับระดับแรงดันไฟฟ้ าให้มี
ระดับที่เหมาะสมที่จะจ่ายให้กบั หน่วยประมวลผลกลาง , หน่วยอินพุท ,หน่วยเอาต์พุตนอกจากนี้
ยังจ่ายแรงดันไฟฟ้ าให้กบั การสื่ อสารข้อมูลระหว่างหน่ วยประมวลผลกลาง กับอุปกรณ์ ภายนอก
เช่น โมดูลอินพุทและเอาต์พุตระยะไกล(Input Module / Remote Output) , อุปกรณ์ที่ใช้ในการเขียน
โปรแกรม(Programmer) เป็ นต้น
ซึ่ งหน่วยจ่ายพลังงานไฟฟ้ า ของ PLC สามารถที่จะเลือกได้วา่ จะใช้กบั แรงดัน AC ( 120-
220 VAC ) หรื อ DC ( 24-125 VDC ) ขึ้นอยูก่ บั ความต้องการของผูใ้ ช้ ดังนั้น จึงจาเป็ นจะต้อง
เลือกใช้หน่วยจ่ายกาลังไฟฟ้ าที่เหมาะสมกับการใช้งาน
24

บทที่ 3
การออกแบบทางโครงงาน

3.1 การออกแบบชุดทดลอง PLC สาหรับติดต่อสื่อสารด้ วยโปรโตคอลมอดบัส


เพื่ อ ออกแบบชุ ด ทดลอง PLC ส าหรั บ เป็ นชุ ด การเรี ย นรู้ แ ละศึ ก ษาการสื่ อ สารด้ว ย
โปรโตคอลมอดบัส ที่สามารถใช้งานร่ วมกับอุปกรณ์ ที่มีใช้งานจริ งในภาคอุตสาหกรรม จึงมีการ
เลือกใช้งานอุปกรณ์ที่เหมาสมสาหรับชุดทดลองดังต่อไปนี้
3.1.1 เลือกรุ่ นของ PLC ทีเ่ หมาะสมสาหรับชุ ดทดลอง
PLC ยี่ห้อ Mitsubishi รุ่ น FX3S-30MR/ES เป็ น PLC ขนาดเล็ก แต่ประสิ ทธิ ภาพสู ง และ
ยังสามารถต่อขยายเพิ่มฟั งก์ชนั สาหรับการเชื่ อมต่อการสื่ อสารด้วยโปรโตคอลมอดบัส RS-485 ได้
อี ก ด้ว ย ซึ่ งเหมาะส าหรั บ ชุ ด ทดลองนี้ เป็ นอย่า งมาก และลัก ษณะการเขี ย นโปรแกรมควบคุ ม
เหมือนกันกับ PLC ชุดที่มีขนาดใหญ่ ซึ่ งทาให้นาไปประยุกต์ใช้งานเกี่ยวกับการควบคุมอุปกรณ์ได้
มากมายอีกด้วย

ภาพที่ 3.1 Mitsubishi PLC รุ่ น FX3S-30MR/ES


ตารางที่ 3.1 คุณสมบัติของ Mitsubishi PLC รุ่ น FX3S-30MR/ES
ความจุโปรแกรมภายใน 4,000 Step EEPROM, 16,000 Step ใช้งาน
ชนิดคาสัง่ Sequence, Step Ladder
แหล่งจ่ายไฟ AC : 100 ~ 240V, 50/60 Hz.
กระแสกระชากตอนเปิ ดวงจร AC : Max 28A, ไม่เกิน 5ms/AC200V
แหล่งจ่ายไฟภายใน DC : 24V, 400mA
รายละเอียดอินพุต 16 จุด, DC : 24V, 7mA
รายละเอียดเอาต์พตุ 14 จุด, 2A/1 จุด, 8A/4 จุดร่ วม, AC 250V, DC 30V
ช่องการสื่ อสาร RS-422 : 1 ch, USB(MINI B) : 1 ch
25

3.1.2 เลือกอุปกรณ์ ต่อเสริมฟั งก์ ชันพอร์ ตสื่ อสารมอดบัส RS-485 ให้ กบั PLC
อุ ป กรณ์ ต่อเสริ มฟั งก์ชันยี่ห้อ Mitsubishi รุ่ น MFX3S-30MR/ES เป็ นอุ ปกรณ์ ต่อเสริ ม
ฟังก์ชนั สาหรับ PLC ที่เป็ นตัวแปลงพิเศษสาหรับการสื่ อสารแบบ RS-485 ที่ใช้โปรโตคอลมอดบัส

ภาพที่ 3.2 อุปกรณ์ต่อเสริ มฟั งก์ชนั FX3U-485ADP-MB


คุณสมบัติ
- Communication Interface : RS-485
- Transmission Speed : 300,600,1200,2400,4800,9600,19200 bps
- Transmission Distance : Up to 500m
- Protocol : Modbus RTU or Modbus ASCII
- Maximum Slaves : 16 Slaves
- Maximum Write Data : 123 words or 1968 coils
- Maximum Read Data : 125 words or 2000 coils
- Slave Number : 1 to 247

3.1.3 เขียนโปรแกรมกาหนดค่ าให้ PLC ทางาน


การใช้งาน PLC จาเป็ นต้องเขี ยนโปรแกรมลาดับการทางานของส่ วนต่างๆให้ก ับ
Mitsubishi PLC นั้นใช้ซอฟแวร์ GX-Work2 ในการเขียนโปรแกรม ซึ่ งสามารถเขียนได้หลากหลาย
ลักษณะตามแต่ผใู ้ ช้งานต้องการ เช่น Sequential Function Chart (SFC) language, Ladder Logic,
Function Block Diagram (FBD) และ Structured Text เป็ นต้น
26

ภาพที่ 3.3 หน้าต่างซอฟแวร์ GX-Work2

3.1.3.1 การเขี ย นโปรแกรมให้ ก ับ PLC ท างานเป็ นแม่ ข่ า ย จ าเป็ นต้อ งก าหนด


ค่ า พารามิ เ ตอร์ ที่ จ าเป็ น เพื่ อ ที่ จ ะให้ แ ม่ ข่ า ยนั้น ท างานได้อ ย่า งถู ก ต้อ ง ซึ่ งมี ข้ ัน ตอนการเขี ย น
โปรแกรมดังต่อไปนี้

ภาพที่ 3.4 ตัวอย่างคาสั่งกาหนดค่าพารามิเตอร์ สาหรับมอดบัสแม่ข่าย


27

1. การกาหนดค่าพารามิเตอร์ การสื่ อสารให้กบั Device : D8400 ซึ่ งจากรู ปแบบที่ใช้งาน


โปโตคอลมอดบัสแม่ข่ายนั้น จากรายละเอียดตามตารางกาหนดค่า D8400 จึงได้ค่า D8400 = H1081
(Connection type: RS485, Baud rate: 9600 bps, Stop bit: 1 bit, Parity: Not provide, Data length: 8
bit)

ตารางที่ 3.2 การกาหนดค่า Device : D8400

2. การกาหนดค่าโปรโตคอลให้กบั Device : D8401 ซึ่ งจากรู ปแบบที่ใช้งานโปโตคอลม


อดบัสร่ วมกับการติ ดต่อสื่ อสารผ่านแสงที่ มองเห็ นได้ CP1223 นั้น จากรายละเอี ยดตามตาราง
กาหนดค่า D8401 จึงได้ค่า D8401 = H1 ( Modbus serial, Modbus Master, RTU Mode)

ตารางที่ 3.3 การกาหนดค่า Device : D8401

3. การกาหนดค่าส่ วนอื่นนั้น สามารถใช้ค่าตามตัวอย่างได้เลย


28

3.1.3.2 การเขียนโปรแกรมคาสั่งให้ PLC แม่ข่ายสั่งงาน ลูกข่ายตามรหัสคาสั่งต่างๆ นั้น


จะใช้คาสั่ง ADPRW เป็ นรหัสใช้งานฟั งก์ชนั่ สื่ อสารด้วยโปรโตคอลมอดบัสของ Mitsubishi PLC
ซึ่ งต้องกาหนดค่าในรหัสฟังก์ชนั่ ดัง่ นี้

ภาพที่ 3.5 รู ปแบบฟังก์ชนั่ ADPRW ของ Mitsubishi PLC

- ส่ วนที่ 1 เป็ นการประกาศใช้งานฟังก์ชนั่ ADPRW


- ส่ วนที่ 2 (S) เป็ นการกาหนดหมายเลขลูกข่ายที่ตอ้ งการติดต่อสื่ อสารด้วย
- ส่ วนที่ 3 (S2) เป็ นการกาหนดรหัสคาสัง่ ของโปรโตคอลมอดบัส
- ส่ วนที่ 4 ถึง 6 เป็ นการกาหนดค่าพารามิเตอร์ เฉพาะของแต่ละรหัสคาสั่งของโปรโต
คอลมอดบัส ซึ่ งสามารถดูรายละเอียดได้จากตารางต่อไปนี้

ตารางที่ 3.4 กาหนดค่าพารามิเตอร์ ของฟังก์ชนั่ ADPRW


29

5. การส่ งข้อมูลเพื่อที่จะให้ลูกข่ายทางานอย่างถูกต้องนั้น จาเป็ นต้องกาหนดตาแหน่งของ


หน่วยความจาให้ถูกต้อง ซึ่ ง Mitsubishi PLC นั้นมีหมายเลขหน่วยความจาต่างๆสาหรับโปรโตคอล
มอดบัสดังต่อไปนี้

ตารางที่ 3.5 ตารางตาแหน่งของหน่วยความจา Mitsubishi PLC


30

3.1.3.1 การเขี ย นโปรแกรมให้ ก ับ PLC ท างานเป็ นลู ก ข่ า ย จ าเป็ นต้อ งก าหนด


ค่ า พารามิ เ ตอร์ ที่ จ าเป็ น เพื่ อ ที่ จ ะให้ แ ม่ ข่ า ยนั้น ท างานได้อ ย่า งถู ก ต้อ ง ซึ่ งมี ข้ ัน ตอนการเขี ย น
โปรแกรมดังต่อไปนี้

ภาพที่ 3.6 ตัวอย่างคาสั่งกาหนดค่าพารามิเตอร์ สาหรับมอดบัสลูกข่าย

1. การกาหนดค่าพารามิเตอร์ การสื่ อสารให้กบั Device : D8400 ซึ่ งจากรู ปแบบที่ใช้งาน


โปโตคอลมอดบัสแม่ข่ายนั้น จากรายละเอียดตามตารางกาหนดค่า D8400 จึงได้ค่า D8400 = H1081
(Connection type: RS485, Baud rate: 9600 bps, Stop bit : 1 bit, Parity: Not provide, Data length: 8
bit)
31

ตารางที่ 3.6 การกาหนดค่า Device : D8400

2. การกาหนดค่าโปรโตคอลให้กบั Device : D8401 ซึ่ งจากรู ปแบบที่ใช้งานโปโตคอลม


อดบัสร่ วมกับการติ ดต่อสื่ อสารผ่านแสงที่ มองเห็ นได้ CP1223 นั้น จากรายละเอี ยดตามตาราง
กาหนดค่า D8401 จึงได้ค่า D8401 = H11 ( Modbus serial, Modbus Slave, RTU Mode)

ตารางที่ 3.7 การกาหนดค่า Device : D8401

3. การกาหนดค่าหมายเลขลูกข่ายให้กบั PLC ลูกข่ายนั้น ต้องกาหนดค่าให้กบั Device :


D8414 ซึ่งหมายเลขที่ Mitsubishi PLC สามารถกาหนดได้คือ 1 ถึง 247
4. การกาหนดค่าส่ วนอื่นนั้น สามารถใช้ค่าตามตัวอย่างได้เลย
32

3.1.4 การออกแบบโครงสร้ างชุ ดทดลอง PLC สาหรับสื่ อสารด้ วยโปรโตคอลมอดบัส


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

ภาพที่ 3.7 โครงสร้างกล่องอเนกประสงค์สาหรับชุดทดลอง PLC


33

3.2 การออกแบบชุดทดลองไมโครคอนโทรลเลอร์ อเนกประสงค์ Arduino


สาหรับติดต่ อสื่อสารด้วยโปรโตคอลมอดบัส
เพื่อออกแบบชุดทดลองไมโครคอนโทรลเลอร์ อเนกประสงค์ Arduino สาหรับเป็ นชุ ด
การเรี ยนรู ้ และศึกษาการสื่ อสารด้วยโปรโตคอลมอดบัส ที่สามารถนามาประยุกต์ใช้งานได้อย่าง
หลากหลาย จึงทาให้ตอ้ งมีการเลือกใช้งานอุปกรณ์ที่เหมาสมสาหรับชุดทดลองดังต่อไปนี้

3.2.1 เลือกรุ่ นของบอร์ ดไมโครคอนโทรลเลอร์ อเนกประสงค์ Arduino ทีเ่ หมาะสม


สาหรับชุ ดทดลอง
บอร์ ด Arduino UNO R3 เป็ นบอร์ ดไมโครคอนโทรลเลอร์ ที่ใช้ AVR ขนาดเล็กเป็ นตัว
ประมวลผลและสั่งงานเหมาะสาหรับนาไปใช้ในการศึกษาเรี ยนรู ้ระบบไมโครคอนโทรลเลอร์ และ
นาไปประยุกต์ใช้งานเกี่ยวกับการควบคุมอุปกรณ์ อินพุต / เอาต์พุต ต่างๆ ได้มากมาย และยังมี
พอร์ ตสื่ อสารที่สามารถนามาต่ออุปกรณ์เสริ มเพื่อที่จะใช้งานกับโปโตคอลมอดบัส RS-485 ได้อีก
ด้วย

ภาพที่ 3.8 บอร์ ด Arduino UNO R3

ตารางที่ 3.8 คุณสมบัติ Arduino UNO R3


Microcontroller ATmega328
Operating Voltage 5V
Input Voltage (recommended) 7-12V
Input Voltage (limits) 6-20V
Digital I/O Pins 14 (of which 6 provide PWM output)
Analog Input Pins 6
DC Current per I/O Pin 40 mA
Flash Memory 32 KB (ATmega328) of which 0.5 KB used by bootloader
SRAM 2 KB (ATmega328)
EEPROM 1 KB (ATmega328)
Clock Speed 16 MHz
34

ภาพที่ 3.9 โครงสร้างของบอร์ด Arduino UNO R3

3.2.2 เลือกอุปกรณ์ ต่อเสริมสาหรับสื่ อสารมอดบัส RS-485 ให้ กบั Arduino UNO R3


บอร์ดแปลงสัญญาณ 3B-RS485 ที่ทาหน้าที่แปลงสัญญาณ RS-485 เป็ น UART เนื่องด้วย
Arduino UNO R3 ใช้งานวงจรสื่ อสารแบบ UART (Universal Asynchronous Receiver
Transmitter) ทาให้จาเป็ นต้องมีการแปลงสัญญาณ RS-485 เป็ น UART แบบรับและส่ งข้อมูลคนละ
ช่วงเวลา (Half-Duplex) ที่ใช้การเปรี ยบเทียบระดับแรงดันของสัญญาณรับและส่ งระหว่างสายส่ ง 2
เส้น และใช้ติดต่อสื่ อสารด้วยโปรโตคอลมอดบัส

ภาพที่ 3.10 บอร์ ดแปลงสัญญาณ 3B-RS485


35

คุณสมบัติ
- แปลงสัญญาณ RS-485/UART
- ชิพ Driver MAX13487 (Auto Direction)
- สามารถส่ งสัญญาณได้ระยะไกลสู งสุ ด 1.2 km.
- อัตราการสื่ อสารสู งสุ ด 500kbps
- อัตรากระแสรับ-ส่ งสัญญาณ 250µA
- แรงดันไฟเลี้ยงที่ 5 VDC

ภาพที่ 3.11 โครงสร้างของ IC MAX13487

3.2.3 เขียนโปรแกรมชุ ดคาสั่ งให้ Arduino

การเขี ยนโปรแกรมชุ ดคาสั่งให้บอร์ ด Arduino จาเป็ นต้องใช้ซอฟแวร์ Arduino IDE


(Integrated Development Environment) ในการเขียนโปรแกรมให้บอร์ ด Arduino ซึ งใช้งานได้ท้ งั
บนระบบปฏิบตั ิการ Window ทุกระบบปฏิบตั ิการ และมีข้ นั ตอนการเขียนโปรแกรมดังต่อไปนี้
1. เลือกชนิดของบอร์ด Arduino ที่นามาใช้งาน ซึ่ งมีดว้ ยกันหลายชนิด ผูใ้ ช้งานจาเป็ นต้อง
ทราบรุ่ นของบอร์ ดที่นามาใช้งานด้วย โดยในโครงงานชิ้นนี้ใช้รุ่น Arduino Uno

ภาพที่ 3.12 เลือกบอร์ด Arduino ที่ใช้งาน


36

2. เลือกพอร์ ตที่ใช้สื่อสารระหว่างคอมพิวเตอร์ กบั บอร์ ด Arduino ซึ่ งมีความจาเป็ นอย่าง


มาก เพราะคอมพิวเตอร์ น้ นั จาเป็ นต้องกาหนดพอร์ ตใช้งานเพื่อให้สามารถสื่ อสารได้อย่างถูกต้อง

ภาพที่ 3.13 เลือกพอร์ตที่ใช้งาน

3. ทาการเขียนโปรแกรมให้ Arduino สื่ อสารด้วยโปรโตคอลมอดบัสสาหรับแม่ข่าย โดย


การประกาศตัวแปลแบบ Array ที่มีลาดับตามเฟรมของรหัสคาสั่งนั้นๆที่ตอ้ งการ เช่น ชุ ดรหัสคาสั่ง
02 เป็ นต้น

ภาพที่ 3.14 เขียนโปรแกรมโปรโตคอลมอดบัสแม่ข่าย

4. ทาการเขียนโปรแกรมให้ Arduino สื่ อสารด้วยโปรโตคอลมอดบัสสาหรับลูกข่าย โดย


การประกาศตัวแปลแบบ Array สาหรับจัดเก็บข้อมูลที่รับเข้ามา จากนั้นทาการเขียนโปรแกรม
ตรวจสอบความถูกต้องของชุ ดข้อมูล และให้อุปกรณ์ลูกข่ายนี้ทางานตามคาสั่ง เช่น ชุ ดรหัสคาสั่ง
05 ให้บิตเอาต์พุตมีสถานะเป็ น ON เป็ นต้น

ภาพที่ 3.15 เขียนโปรแกรมโปรโตคอลมอดบัสลูกข่าย


37

3.3 การออกแบบโปรแกรมใช้ งานโปรโตคอลมอดบัสกับการติดต่ อสื่อสารผ่าน


แสงที่มองเห็นได้ ด้ วยชุดการเรียนรู้ VLC-CP1223 Development board v1.0
เพื่อออกแบบชุ ดทดลองการใช้งานโปรโตคอลมอดบัสกับการติ ดต่อสื่ อสารผ่านแสงที่
มองเห็นได้ ด้วยชุดการเรี ยนรู้ VLC-CP1223 Development board v1. นั้น ต้องมีการเขียนโปรแกรม
ประยุกต์ใช้งานดังต่อไปนี้

3.3.1 ชุ ดทดลอง VLC-CP1223 Development board v1.0


ชุดทดลอง VLC-CP1223 Development board v1.0 ประมวลผลข้อมูลใหม่ ทาให้สามารถ
รับข้อมูลโปรโตคอลมอดบัส และนามาแปลงเป็ นชุดเป็ นชุดทดลองที่พฒั นาระบบการสื่ อ สารด้วย
แสงสว่างตามมาตรฐาน CP1223 เมื่อนามาทาการเขียนโปรแกรมข้อมูล CP1223 และ I-4PPM เพื่อ
การสื่ อสารด้วยแสงสว่างที่มองเห็นได้

ภาพที่ 3.16 ชุดทดลอง VLC-CP1223 Development board v1.0

คุณสมบัติ
- เป็ นชุดอุปกรณ์ที่สามารถเขียนโปรแกรมควบคุมการทางานของ
ไมโครคอนโทรลเลอร์ได้ Arduino Pro Micro (mini Leonardo)
- มีความถี่นาฬิกา 16 MHz
- มีอุปกรณ์ส่งข้อมูลส่ องสว่างด้วยหลอด LED High Brightness 1W แสงสี ขาวที่มี
ค่าความเข้มการส่ องสว่าง 100 lm
- มีอุปกรณ์รับข้อมูล Photodiode SFH213 ที่มีพ้นื ที่รับสัญญาณ 1 mm 2 และการ
ตอบสนอง 0.65 A/W และช่วงของความยาวคลื่นที่ 400 nm ถึง 1100 nm
38

ภาพที่ 3.17 โครงสร้างวงจรของชุดทดลอง VLC-CP1223 Development board v1.0

3.3.2 เขียนโปรแกรมชุ ดคาสั่ งให้ VLC-CP1223 Development board v1.0 สื่ อสารด้ วย
โปรโตคอลมอดบัสบนการติดต่ อสื่ อสารผ่านแสงทีม่ องเห็นได้ CP1223
การเขียนโปรแกรมให้ VLC-CP1223 Development board v1.0 สื่ อสารด้วยโปรโตคอล
มอดบัสบนการติดต่อสื่ อสารผ่านแสงที่มองเห็นได้ CP1223 นั้น จาเป็ นต้องดาวน์โหลด Library ที่
ชื่อว่า SARGMET_VLC_CP1223 เข้ามาในซอฟแวร์ Arduino IDE เพื่อใช้ในการเขียนโปรแกรมให้
บอร์ด Arduino ทางานได้ และสามารถนาตัวอย่างโปรแกรมมาประยุกต์ใช้งานได้ โดยมีข้ นั ตอนการ
เขียนโปรแกรมดังต่อไปนี้
1. ทาการเปิ ดโปรแกรม Arduino IDE ขึ้นมา
2. ทาการเลือกเมนู Sketch > Include Library > Add .ZIP Library….
3. เลือกไฟย์ที่เก็บ Library : SARGMET_VLC_CP1223 ไว้ แล้วทาการกด Open
4. เลือกตัวอย่างจากเมนู File > Examples > VLC-CP1223_QuickStarterCode
39

ภาพที่ 3.18 ขั้นตอนการดาวน์โหลด Library เข้ามาในซอฟแวร์ Arduino IDE

ภาพที่ 3.19 ขั้นตอนการดาวน์โหลด Library เข้ามาในซอฟแวร์ Arduino IDE

3.3.3 เขียนโปรแกรมรับค่ าชุ ดข้ อมูลโปรโตคอลมอดบัส และส่ งข้ อมูลด้ วย VLC CP1223
เขียนโปรแกรมรับค่าชุดข้อมูลโปรโตคอลมอดบัส และส่ งข้อมูลด้วย VLC CP1223 จะใช้
วิธีนาตัวอย่างโปรแกรม EX1_Transmitter มาประยุกต์ใช้งาน ซึ่ งมีการเขียนโปรแกรมดังนี้
1. ประกาศตัวแปลสาหรับเก็บข้อมูลโปรโตคอลมอดบัสที่รับเข้ามาชนิ ด unsigned char
แบบ array ขนาด 17 ข้อมูล เช่น unsigned char msg[17]={}; เป็ นต้น
2. เขียนคาสัง่ ตรวจสอบการรับข้อมูลผ่าน serial port เช่น if (Serial1.available()) เป็ นต้น
3. เขียนเงื่อนไขสาหรับเก็บข้อมูลไปยังตัวแปลที่ได้ประกาศไว้ เช่น
for(j=0;j<16;j++)
{
msg[j] = (unsigned char)Serial1.read();
}

4. เขียนเงื่อนไขสาหรับส่ งชุดข้อมูลที่เก็บไว้ดว้ ย VLC CP1223 เช่น


setupDATA('0',msg);
for(int i=0; i<20;i++)
{
transmitALL();
}
40

3.3.4 เขียนโปรแกรมรับข้ อมูลด้ วย VLC CP1223 และส่ งค่ าชุ ดข้ อมูลโปรโตคอลมอดบัส
เขียนโปรแกรมรับข้อมูลด้วย VLC CP1223 และส่ งค่าชุดข้อมูลโปรโตคอลมอดบัส จะใช้
วิธีนาตัวอย่างโปรแกรม EX2_Receiver_Serial มาประยุกต์ใช้งาน ซึ่ งมีการเขียนโปรแกรมดังนี้
1. ประกาศตัวแปลสาหรับเก็บข้อมูล VLC ที่รับเข้ามาชนิด unsigned char แบบ array
ขนาด 17 ข้อมูล เช่น unsigned char VLCin[17]={}; เป็ นต้น
2. เขียนคาสัง่ ตรวจสอบการรับข้อมูล VLC เช่น if(VLCread()==1)เป็ นต้น
3. เขียนเงื่อนไขสาหรับเก็บข้อมูลไปยังตัวแปลที่ได้ประกาศไว้ เช่น
for(int x=1;x<9;x++)
{
VLCin = PAYLOAD_IN[x];
}

4. เขียนเงื่อนไขสาหรับส่ งข้อมูลผ่าน serial port เช่น


for(int x=1;x<9;x++)
{
Serial1.write(VLCin[x]);
}
41

บทที่ 4
การทดลองและผลการทดลอง

4.1 การทดลองชุดทดลอง PLC สาหรับติดต่ อสื่อสารด้ วยโปรโตคอลมอดบัส


4.1.1 วัตถุประสงค์
เพื่อทดสอบการติดต่อสื่ อสารโปรโตคอลมอดบัสกับชุ ดทดลอง PLC ที่ได้ทาการเขียน
โปรแกรมจัดการข้อมูลโปรโตคอลมอดบัส

4.1.2 ขั้นตอนการทดลอง
1. กาหนดชุดรหัสคาสั่งโปรโตคอลมอดบัสที่ตอ้ งการทดสอบ
- 01 อ่านค่าบิต (Read Coils)
- 02 อ่านค่าอินพุต (Read Discrete Inputs)
- 04 อ่านค่าข้อมูล (Read Input Register)
- 05 สั่งบิตทางาน (Write Single Coil)
- 15 สั่งบิตทางานแบบชุด (Write Multiple Coils)
2. เขียนโปรแกรมให้ PLC รับ-ส่ งข้อมูลมอดบัสตามรหัสคาสัง่ ที่ได้กาหนดไว้
3. ทาการติดตั้งชุดทดลอง PLC เข้ากับโครงขาตั้งสาหรับทดลองในห้องปฏิบตั ิการ

ภาพที่ 4.1 การติดตั้งชุดทดลอง PLC เข้ากับโครงขาตั้งสาหรับทดลองในห้องปฏิบตั ิการ


42

4. ทาการต่อสายเชื่ อมโยงโครงข่ายโปรโตคอลมอดบัสเข้ากับชุดทดลอง PLC

ภาพที่ 4.2 การต่อสายเชื่อมโยงโครงข่ายโปรโตคอลมอดบัสกับ PLC

ภาพที่ 4.3 การต่อสายเชื่อมโยงโครงข่ายโปรโตคอลมอดบัสกับ FX3U-485ADP-MB

5. ทาการทดสอบการติดต่อสื่ อสาร และบันทึกผลการทดสอบ


43

ตารางที่ 4.1 ผลการทดลองสื่ อสารโปรโตคอลมอดบัส กับชุดทดลอง PLC


ผลการทางาน
อันดับ รหัสคาสั่ง ตาแหน่งทีต
่ ด
ิ ต่อ
ได ้ ไม่ได ้
1 01 M100 
2 01 M101 
3 01 M102 
4 02 X00 
5 02 X01 
6 02 X02 
7 05 Y00 
8 05 Y01 
9 05 Y02 
10 15 Y00 ~ Y02 
11 15 Y03 ~ Y04 

4.1.3 วิจารณ์ผลการทดลอง
จากการทดลอง ทาให้สามารถเข้าใจถึ งการเขียนโปรแกรมใช้งาน Mitsubishi PLC
ส าหรั บ การก าหนดค่ า พารามิ เ ตอร์ และการใช้ง านฟั ง ก์ ชั่น ADPRW ให้ส ามารถสื่ อ สารด้ว ย
โปรโตคอลมอดบัสระหว่า งแม่ ข่า ย และลู ก ข่า ย พร้ อมทั้งการต่ อสายสัญญาณสื่ อสารเชื่ อมโยง
โครงข่ายด้วย RS-485 ได้ ซึ่ งจากผลการทดลองแสดงให้เห็นว่า ชุ ดทดลอง PLC สามารถใช้งาน
โปรโตคอลมอดบัสรหัสคาสั่ง 01, 02, 05 และ 15 ได้
44

4.2 การทดลองชุดทดลองไมโครคอนโทรลเลอร์ อเนกประสงค์ Arduino


สาหรับติดต่ อสื่อสารด้ วยโปรโตคอลมอดบัส

4.2.1 วัตถุประสงค์
เพื่อทดสอบการติดต่อสื่ อสารด้วยโปรโตคอลมอดบัสกับบอร์ ด Arduino ที่ได้ทาการเขียน
โปรแกรมจัดการข้อมูลโปรโตคอลมอดบัส

4.2.2 ขั้นตอนการทดลอง
1. กาหนดชุดรหัสคาสั่งโปรโตคอลมอดบัสที่ตอ้ งการทดสอบ
- 01 อ่านค่าบิต (Read Coils)
- 02 อ่านค่าอินพุต (Read Discrete Inputs)
- 04 อ่านค่าข้อมูล (Read Input Register)
- 05 สัง่ บิตทางาน (Write Single Coil)
- 15 สั่งบิตทางานแบบชุด (Write Multiple Coils)
2. ทาการเขียนโปรแกรมให้บอร์ด Arduino แม่ข่ายทางานตามรหัสคาสั่งที่กาหนด
3. ทาการติดตั้งชุดทดสอบ Arduino ร่ วมกับอุปกรณ์แปลงสัญญาณ 3B-RS485

ภาพที่ 4.4 การติดตั้งชุดทดสอบ Arduino ร่ วมกับอุปกรณ์แปลงสัญญาณ 3B-RS485


45

4. ทาการทดสอบการติดต่อสื่ อสาร
5. ทาการบันทึกผลการทดสอบ
6. ทาการสรุ ปผลการทดสอบ

ตารางที่ 4.2 ผลการทดลองสื่ อสารโปรโตคอลมอดบัส กับบอร์ ด Arduino


ตาแหน่งขาที่ ผลการทางาน
อันดับ รหัสคาสั่ง
ทดสอบ ได ้ ไม่ได ้
1 01 4 
2 01 5 
3 01 6 
4 02 4 
5 02 5 
6 02 6 
7 04 A0 
8 04 A1 
9 04 A2 
10 05 8 
11 05 9 
12 05 10 
13 15 8 ~ 10 
14 15 11 ~12 

4.2.3 วิจารณ์ผลการทดลอง
จากการทดลอง ทาให้ส ามารถเข้าใจถึ ง การเขี ย นโปรแกรมคาสั่ ง ให้กบั บอร์ ด Arduino
สามารถสื่ อ สารด้ว ยโปรโตคอลมอดบัส และสามารถใช้ ร่ ว มกับ อุ ป กรณ์ แ ปลงสั ญ ญาณ RS-
485/UART ด้วยบอร์ ดแปลงสัญญาณ 3B-RS485 ได้ ซึ่ งจากผลการทดลองแสดงให้เห็ นว่าชุ ด
ทดลอง บอร์ด Arduino สามารถใช้งานโปรโตคอลมอดบัสคาสั่ง 01, 02, 04, 05 และ 15 ได้
46

4.3 การทดลองชุดทดลอง PLC ติดต่ อสื่อสารด้ วยโปรโตคอลมอดบัส ผ่านแสง


ทีม่ องเห็นได้ด้วยชุดการเรียนรู้ VLC-CP1223 Development board v1.0
4.3.1 วัตถุประสงค์
เพื่อทดสอบชุดทดลอง PLC ที่ติดต่อสื่ อสารด้วยโปรโตคอลมอดบัส ผ่านแสงที่มองเห็นได้
ด้วยชุดการเรี ยนรู้ VLC-CP1223 Development board v1.0 ที่ได้ทาการเขียนโปรแกรมจัดการข้อมูล
การติดต่อสื่ อสาร

4.3.2 ขั้นตอนการทดลอง
1. กาหนดชุดรหัสคาสั่งโปรโตคอลมอดบัสที่ตอ้ งการทดสอบ
- 05 สั่งบิตทางาน (Write Single Coil)
- 15 สั่งบิตทางานแบบชุด (Write Multiple Coils)
2. เขียนโปรแกรมให้ PLC รับ-ส่ งข้อมูลมอดบัสตามรหัสคาสั่งที่ได้กาหนดไว้
3. ทาการติดตั้งชุดทดลอง PLC เข้ากับชุดการเรี ยนรู ้ VLC-CP1223 Development board
v1.0 ผ่านพอร์ ต RS-485

ภาพที่ 4.5 การติดตั้งชุดทดลอง PLC เข้ากับชุดการเรี ยนรู ้ VLC-CP1223 Development board v1.0
47

4. ทาการทดสอบการติดต่อสื่ อสาร
5. ทาการบันทึกผลการทดสอบ
6. ทาการสรุ ปผลการทดสอบ

ตารางที่ 4.3 ผลการทดลองสื่ อสารโปรโตคอลมอดบัสบน VLC-CP1223


ผลการทางาน
อันดับ รหัสคาสั่ง ตาแหน่งทีต
่ ด
ิ ต่อ
ได ้ ไม่ได ้
1 05 Y00 
2 05 Y01 
3 05 Y02 
4 15 Y00 ~ Y02 
5 15 Y03 ~ Y04 

4.3.3 วิจารณ์ผลการทดลอง
จากการทดลอง ทาให้สามารถเข้าใจถึงการเขียนโปรแกรมคาสั่งให้กบั ชุ ดการเรี ยนรู ้ VLC-
CP1223 Development board v1.0 สามารถสื่ อสารด้วยโปรโตคอลมอดบัส ร่ วมกับการสื่ อสารผ่าน
แสงที่มองเห็นได้ CP1223 และสามารถใช้ร่วมกับอุปกรณ์แปลงสัญญาณ RS-485/UART ด้วยบอร์ ด
แปลงสัญญาณ 3B-RS485 ได้ ซึ่ งจากผลการทดลองแสดงให้เห็ นว่าชุ ดทดลองสามารถใช้งาน
โปรโตคอลมอดบัสคาสั่ง 05 และ 15 ได้ ซึ่ งช่วยเพิ่มประสิ ทธิ ภาพในการสื่ อสารให้กบั โปรโตคอล
มอดบัส ให้สามารถมีระยะในการส่ งข้อมูลไกลขึ้น มีโครงข่ายเพิ่มขึ้น เนื่ องจากการสื่ อสารผ่านแสง
ที่มองเห็นได้ CP1223 นั้น มีลกั ษณะเป็ นบอร์ ดคราส ที่ไม่ตอ้ งการตอบรับข้อมูลตอบกลับจากลู ก
ข่าย ทาให้สามารถมี จานวนลู กข่ายได้มากขึ้ น และมี ขอ้ เสี ยคื อการสื่ อสารผ่านแสงที่ มองเห็ นได้
CP1223 นั้น มีการกาหนดความเร็ วในการสื่ อน้อยกว่าโปรโตคอลมอดบัส ทาให้เกิ ดข้อจากัดมาก
ขึ้น
48

4.4 การทดลองประสิ ทธิภาพการรับ-ส่ งของมูลผ่ านแสงที่มองเห็นได้ ด้วยชุ ด


ทดลอง VLC-CP1223 Development board v1.0 ด้ วยการวัดระยะรับข้ อมูล
4.4.1 วัตถุประสงค์
เพื่อศึกษาการทางาน และประสิ ทธิภาพการรับ-ส่ งข้อมูลผ่านแสงที่มองเห็นได้ ของชุด
ทดลอง VLC-CP1223 Development board v1.0 ในลักษณะต่างๆ เพื่อประกอบการตัดสิ นใจ
เลือกใช้งานอุปกรณ์รับ-ส่ งข้อมูลผ่านแสงที่มองเห็นได้ในโครงงานชิ้นนี้

4.4.2 ขั้นตอนการทดลอง
1. จัดเตรี ยมอุปกรณ์ที่จะใช้ในการทดลอง
- ชุดทดลอง VLC-CP1223 Development board v1.0
- ลักซ์มิเตอร์
- คอมพิวเตอร์
- ตลับเมตร
2. ทาการเขียนโปรแกรมสาหรับส่ งข้อมูลเพื่อทดสอบ โดยเขียนโปรแกรมกาหนดจานวน
ครั้งในการส่ งข้อมูล ให้มีจานวนครั้งที่ 10, 20, 30, 40, 50 และ 60 ครั้ง

ภาพที่ 4.6 การเขียนโปรแกรมส่ งข้อมูล VLC

3. ทาการติดตั้งอุปกรณ์ตวั ส่ งข้อมูลที่ระยะสู งกว่า 3.5 เมตร และทาการติดตั้งอุปกรณ์ตวั รับ


พร้อมกับลักซ์มิเตอร์ ที่ระยะในแนวตรงที่ 25, 50, 75, 100, 150, 200, 250, 300 และ 350 ซม.
ตามลาดับ
49

ภาพที่ 4.7 การติดตั้งอุปกรณ์ตวั ส่ ง-ตัวข้อมูลที่ทดสอบแนวตรง

4. ปิ ดสวิตซ์แสงไฟภายนอก จากนั้นอ่านค่าความเข้มแสงที่บริ เวณตัวรับ และจานวนครั้งที่


รับค่าได้ และบันทึกผลลงตาราง
5. เปิ ดสวิตซ์แสงไฟภายนอก และอ่านค่าจานวนครั้งที่รับค่าได้ และบันทึกผลลงตาราง

ภาพที่ 4.8 การทดลองส่ งสัญญาณข้อมูลในระยะแนวตรง


50

ตารางที่ 4.4 ผลการทดลองส่ งสัญญาณข้อมูลในระยะแนวตรง


ในที่มีแสงสว่าง 300-400 ลักซ์ ในที่มีแสงสว่างน้อยกว่า 10 ลักซ์
ระยะความสูง (ซม.) จานวนครั้งที่ส่ง/จานวนครั้งที่รับได้ จานวนครั้งที่ส่ง/จานวนครั้งที่รับได้
10 20 30 40 50 60 10 20 30 40 50 60
25 3 7 11 14 20 23 5 9 13 17 21 24
50 3 8 11 15 19 24 4 9 13 18 19 23
75 3 7 12 14 19 25 5 8 15 17 19 25
100 3 8 11 14 18 24 5 9 11 17 21 27
150 3 8 12 16 19 26 5 8 12 19 18 25
200 3 7 10 15 18 24 5 8 13 19 20 27
250 4 8 11 16 18 23 5 8 11 18 19 22
300 4 8 12 16 19 21 4 9 13 16 21 24
350 4 8 10 15 18 22 5 8 9 14 18 21
อัตราการรับข้อมูล (%) 33.3 38.3 37.0 37.5 37.3 39.3 47.8 42.2 40.7 43.1 39.1 40.4

จานวนครงที
ั้ ร่ ับได้ในทีม ี สงสว่าง 300-400 ล ักซ ์
่ แ
30
10
ั้ ร่ ับได้

20 20
จานวนครงที

10 30
40
0
25 75 125 175 225 275 325 50

ระยะความสูง (ซม.) 60

ภาพที่ 4.9 ผลการทดลองจานวนครั้งที่รับได้ในที่มีแสงสว่าง 300-400 ลักซ์

จานวนครงที
ั้ ร่ ับได้ในทีม ี สงสว่างน้อยกว่า 10 ล ักซ ์
่ แ
30
10
ั้ ร่ ับได้

20 20
จานวนครงที

10 30
40
0
25 75 125 175 225 275 325 50

ระยะความสูง (ซม.) 60

ภาพที่ 4.10 ผลการทดลองจานวนครั้งที่รับได้ในที่มีแสงสว่างน้อยกว่า 10 ลักซ์


51

6. ทาการติดตั้งอุปกรณ์ ตวั รับพร้อมกับลักซ์มิเตอร์ ที่ระยะในแนวรัศมีที่ 25, 50, และ 75


ซม. ตามลาดับ

ภาพที่ 4.11 การทดลองส่ งสัญญาณข้อมูลในระยะแนวรัศมี

7. ปิ ดสวิตซ์แสงไฟภายนอก จากนั้นอ่านค่าความเข้มแสงที่บริ เวณตัวรับ และจานวนครั้งที่


รับค่าได้ และบันทึกผลลงตาราง
8. เปิ ดสวิตซ์แสงไฟภายนอก และอ่านค่าจานวนครั้งที่รับค่าได้ และบันทึกผลลงตาราง

ภาพที่ 4.12 การทดลองส่ งสัญญาณข้อมูลในระยะแนวรัศมี


52

ตารางที่ 4.5 ผลการทดลองส่ งสัญญาณข้อมูลในระยะแนวรัศมี


จานวนครั้งที่รับได้ จานวนครั้งที่รับได้
ที่มีแสงสว่าง 300-400 ลักซ์ ที่มีแสงสว่างน้อยกว่า 10 ลักซ์
ระยะความสูง (ซม.)
ส่ ง 30 ครั้ง ที่ระยะรัศมี (ซม.) ส่ง 30 ครั้ง ที่ระยะรัศมี (ซม.)
25 50 75 25 50 75
25 9 0 0 12 0 0
50 13 0 0 11 0 0
75 11 9 0 13 10 0
100 10 8 0 11 12 0
150 11 10 0 12 11 0
200 9 9 8 11 12 9
250 10 8 9 10 10 8
300 8 9 8 8 8 10
350 9 10 9 10 8 9
อัตราการรับข้อมูล (%) 33.3 23.3 12.6 36.3 26.3 13.3

จานวนครงที
ั้ ร่ ับได้ ทีม ี สงสว่าง 300-400 ล ักซ ์
่ แ
15
ั้ ร่ ับได้

10
จานวนครงที

25
5
50
0 75
25 75 125 175 225 275 325
ทีร่ ะยะร ัศมี (ซม.)

ภาพที่ 4.13 ผลการทดลองจานวนครั้งที่รับได้ในที่มีแสงสว่าง 300-400 ลักซ์

จานวนครงที
ั้ ร่ ับได้ทม ี สงสว่างน้อยกว่า 10 ล ักซ ์
ี่ แ
15
ั้ ร่ ับได้

10
จานวนครงที

25
5
50
0 75
25 75 125 175 225 275 325
ทีร่ ะยะร ัศมี (ซม.)

ภาพที่ 4.14 ผลการทดลองจานวนครั้งที่รับได้ในที่มีแสงสว่างน้อยกว่า 10 ลักซ์


53

4.4.3 วิจารณ์ผลการทดลอง
จากการทดลองแสดงให้เห็นว่าชุดทดลอง VLC-CP1223 Development board v1.0 นั้นได้มี
การแก้ไขปั ญหาผลกระทบจากแสงรบกวนภายนอกในระดับที่สามารถใช้งานในสภาวะการทางาน
ปกติในพื้นที่ปิด ที่มีแสงจากแหล่งกาเนิดแสงจากหลอดไฟ

4.5 การทดสอบผลกระทบจากแสงภายนอก กับชุดทดลอง VLC-CP1223


Development board v1.0

4.5.1 วัตถุประสงค์
เพื่อศึกษาผลกระทบที่เกิดขึ้นจากแสงภายนอก ที่มีผลกับการสื่ อสารผ่านแสงที่มองเห็นได้
รวมทั้งประสิ ทธิ ภาพของอุปกรณ์ ตวั รับข้อมูลผ่านแสงที่มองเห็นได้น้ ี อีกด้วย และยังเป็ นการทราบ
ถึงข้อจากัดในการนาชุ ดทดลอง VLC-CP1223 Development board v1.0ไปติดตั้งใช้งานจริ งได้อีก
ด้วย

4.5.2 ขั้นตอนการทดลอง
1. จัดเตรี ยมอุปกรณ์ที่จะใช้ในการทดลอง
- ชุดทดลอง VLC-CP1223 Development board v1.0
- ลักซ์มิเตอร์
- คอมพิวเตอร์
- ตลับเมตร
- โคมไฟ
2. ทาการเขียนโปรแกรมสาหรับส่ งข้อมูลเพื่อทดสอบ โดยเขียนโปรแกรมกาหนดจานวน
ครั้งในการส่ งข้อมูล ให้มีจานวนครั้งที่ 30 ครั้ง

ภาพที่ 4.15 การเขียนโปรแกรมส่ งข้อมูล VLC


54

3. ทาการติดตั้งอุปกรณ์ ตวั รั บข้อมูลพร้ อมกับลักซ์มิเตอร์ และติ ดตั้งตัวส่ งที่ ระยะในแนว


ตรงที่ 30, 40, 50, 60, 70, 80, 90 และ 100 ซม. ตามลาดับ

ภาพที่ 4.16 การติดตั้งอุปกรณ์ตวั รับข้อมูลร่ วมกับลักซ์มิเตอร์ และโคมไฟ

4. ติดตั้งแสงไฟภายนอก ให้มีค่าความเข้มแสงที่บริ เวณตัวรับอยูท่ ี่ 100, 200, 300, 400, 600,


800, 1000, 1500 และ 2000 ลักซ์
5. เปิ ดตัวส่ ง VCL จากนั้นอ่านค่าการรับข้อมูล และความเข้มแสงรวมที่บริ เวณตัวรับ และ
บันทึกผลลงตาราง

ภาพที่ 4.17 การติดตั้งอุปกรณ์ตวั รับข้อมูลพร้อมกับลักซ์มิเตอร์


55

ตารางที่ 4.6 ผลการทดลองแสงรบกวนภายนอกระยะความสู งในแนวตรง


ระยะ แสงรบกวนภายนอก/แสงรวมที่เกิดขึ้น (ลักซ์)
ความ 100 200 300 400 600 800 1000 1500 2000
สูง รับ แสง รับ แสง รับ แสง รับ แสง รับ แสง รับ แสง รับ แสง รับ แสง รับ แสง
(ซม.) ค่า รวม ค่า รวม ค่า รวม ค่า รวม ค่า รวม ค่า รวม ค่า รวม ค่า รวม ค่า รวม
30 ได้ 1400 ได้ 1400 ได้ 1450 ได้ 1520 ได้ 1620 ได้ 1750 ได้ 1780 ได้ 2020 ได้ 2390
40 ได้ 1000 ได้ 1000 ได้ 1100 ได้ 1230 ได้ 1420 ได้ 1650 ได้ 1650 ได้ 1980 ได้ 2370
50 ได้ 700 ได้ 700 ได้ 830 ได้ 960 ได้ 1220 ได้ 1370 ได้ 1480 ได้ 1920 ได้ 2310
60 ได้ 600 ได้ 600 ได้ 720 ได้ 820 ได้ 1040 ได้ 1260 ได้ 1410 ได้ 1850 ไม่ได้ 2250
70 ได้ 400 ได้ 500 ได้ 600 ได้ 700 ได้ 890 ได้ 1160 ได้ 1360 ได้ 1770 ไม่ได้ 2190
80 ได้ 300 ได้ 430 ได้ 530 ได้ 620 ได้ 810 ได้ 1080 ได้ 1220 ได้ 1720 ไม่ได้ 2160
90 ได้ 180 ได้ 370 ได้ 480 ได้ 570 ได้ 780 ได้ 980 ได้ 1190 ไม่ได้ 1610 ไม่ได้ 2110
100 ได้ 160 ได้ 300 ได้ 420 ได้ 530 ได้ 760 ได้ 960 ได้ 1140 ไม่ได้ 1570 ไม่ได้ 2050

การทดลองแสงรบกวนภายนอกระยะความสูงในแนวตรง
2500

100
2000
้ (ล ักซ์)

200

1500 300
แสงรวมทีเ่ กิดขึน

400
1000 600
800
500
1000

0 1500
30 40 50 60 70 80 90 100 2000
ระยะความสูง (ซม.)

ภาพที่ 4.18 ผลการทดลองแสงรบกวนภายนอกระยะความสู งในแนวตรง

4.5.3 วิจารณ์ผลการทดลอง
จากการทดลองแสดงให้เห็นว่าชุ ดทดลอง VLC-CP1223 Development board v1.0 นั้นมี
ข้อจากัดในการสื่ อสาร ในสถานที่ที่มีแสงรบกวนภายนอก ซึ่ งการนาไปติดตั้งใช้งานนั้น จาเป็ นต้อง
คานึงถึงแสงรบกวนจากภายนอกด้วย
56

4.6 ทดลองตัวส่ งสัญญาณแสงชนิดต่ างๆ และตัวรับสัญญาณแสงชนิดที่มี


วงจรขยายสัญญาณในตัว

4.6.1 วัตถุประสงค์
เพื่อศึกษาสภาวะการรับสัญญาณของอุปกรณ์ตวั รับชนิดมีวงจรขยายสัญญาณในตัว และใน
ลักษณะต่างๆ เช่ น IC TSL12S เพื่อประกอบการตัดสิ นใจเลือกใช้งานอุปกรณ์รับสัญญาณแสงที่
มองเห็นได้ในโครงงานชิ้นนี้

4.6.2 ขั้นตอนการทดลอง
1. จัดเตรี ยมอุปกรณ์ที่จะใช้ในการทดลอง
- IC TSL12S
- LED แสงสี ขาว
- ตัวต้านทานขนาด 250 Ω
- Oscilloscope
- ตลับเมตร
2. ทาการทดลองส่ งสัญญาณด้วยหลอด LED 1 หลอด ในพื้นที่มืด และติ ดตั้งตัวรั บ
สัญญาณที่ระยะ 4, 8, 12, 16 และ 20 ซม.
3. ติดตั้ง Oscilloscope กับสัญญาณเอาต์พุตของตัวรับ
4. อ่านค่าสัญญาณ และบันทึกผลลงในตาราง

ภาพที่ 4.19 การทดลองส่ งสัญญาณด้วยหลอด LED 1 หลอด ในพื้นที่มืด


57

ตารางที่ 4.7 ผลการทดลองส่ งสัญญาณด้วยหลอด LED 1 หลอด ในพื้นที่มืด


แรงดันตอบสนองด ้านรับ (V)
ระยะห่าง
อันดับ แรงดันด ้านส่ง (V) ความต่างของ
(cm) สัญญาน + สัญญาน -
สัญญาณ
1 4 4 4.2 2.4 1.8
2 8 4 3 2.2 0.8
3 12 4 2.6 2.2 0.4
4 16 4 2.4 2.2 0.2
5 20 4 2.2 2.1 0.1

5. ทาการทดลองส่ งสัญญาณด้วยหลอด LED 1 หลอด ในพื้นที่มีแสงสว่าง และติดตั้งตัวรับ


สัญญาณที่ระยะ 4, 8, 12, 16 และ 20 ซม.
6. ติดตั้ง Oscilloscope กับสัญญาณเอาต์พุตของตัวรับ
7. อ่านค่าสัญญาณ และบันทึกผลลงในตาราง

ภาพที่ 4.20 การทดลองส่ งสัญญาณด้วยหลอด LED 1 หลอด ในพื้นที่สว่าง

ตารางที่ 4.8 ผลการทดลองส่ งสัญญาณด้วยหลอด LED 1 หลอด ในพื้นที่สว่าง


แรงดันตอบสนองด ้านรับ (V)
ระยะห่าง แรงดันด ้านส่ง
อันดับ ความต่างของ
(cm) (V) สัญญาน + สัญญาน -
สัญญาณ
1 4 4 4.4 4.4 0
2 8 4 4.4 4.4 0
3 12 4 4.4 4.4 0
4 16 4 4.4 4.4 0
5 20 4 4.4 4.4 0

8. ทาการทดลองส่ งสัญญาณด้วยหลอด LED Array ในพื้นที่มีมืด และติดตั้งตัวรับสัญญาณ


ที่ระยะ 50, 100, 150, 200, 250 และ 300 ซม.
9. ติดตั้ง Oscilloscope กับสัญญาณเอาต์พุตของตัวรับ
10. อ่านค่าสัญญาณ และบันทึกผลลงในตาราง
58

ภาพที่ 4.21 การทดลองส่ งสัญญาณด้วยหลอด LED Array ในพื้นที่มืด

ตารางที่ 4.9 ผลการทดลองส่ งสัญญาณด้วยหลอด LED Array ในพื้นที่มืด


แรงดันตอบสนองด ้านรับ (V)
แรงดันด ้านส่ง
อันดับ ระยะห่าง (cm) ความต่างของ
(V) สัญญาน + สัญญาน -
สัญญาณ
1 50 4.0 4.2 1.6 2.6
2 100 4.0 4.0 1.6 2.4
3 150 4.0 3.2 1.4 1.8
4 200 4.0 1.8 1.2 0.6
5 250 4.0 1.5 1.0 0.5
6 300 4.0 1.4 1.0 0.4

11. ทาการทดลองส่ งสัญญาณด้วยหลอด LED Array ในพื้นที่ มีมืด และติ ดตั้งตัวรั บ


สัญญาณที่ระยะ 50, 100, 150, 200, 250 และ 300 ซม.
12. ติดตั้ง Oscilloscope กับสัญญาณเอาต์พุตของตัวรับ
13. อ่านค่าสัญญาณ และบันทึกผลลงในตาราง

ภาพที่ 4.22 การทดลองส่ งสัญญาณด้วยหลอด LED Array ในพื้นที่สว่าง


59

ตารางที่ 4.10 ผลการทดลองส่ งสัญญาณด้วยหลอด LED Array ในพื้นที่สว่าง


แรงดันตอบสนองด ้านรับ (V)
แรงดันด ้านส่ง
อันดับ ระยะห่าง (cm) ความต่างของ
(V) สัญญาน + สัญญาน -
สัญญาณ
1 50 4.0 4.4 4.4 0.0
2 100 4.0 4.4 4.4 0.0
3 150 4.0 4.4 4.4 0.0
4 200 4.0 4.4 4.4 0.0
5 250 4.0 4.4 4.4 0.0
6 300 4.0 4.4 4.4 0.0

4.6.3 วิจารณ์ผลการทดลอง
จากการทดลองแสดงให้เห็นถึ งผลกระทบจากแสงสว่างอื่น มีผลต่อการติดต่อสื่ อสารผ่าน
แสงที่มองเห็นได้ ที่ทาให้ตวั รับไม่สามารถแยกแยะสัญญาณข้อมูลที่ส่งเข้ามาที่ตวั รับได้ เนื่ องจาก
วงจรขยายสัญญาณภายในของอุปกรณ์ตอบสนองสัญญาณแสงนั้น มีการขยายที่ไม่สามารถกาหนด
อัตราการขยายได้ จึงทาให้เกิดข้อจากัดของการนาไปใช้งานในสถานที่ที่มีแสงภายนอกรบกวน
60

บทที่ 5
สรุปผลการทาโครงงาน

โครงงานนี้ ได้ท าการศึ กษาการสื่ อสารด้วยโปรโตคอลมอดบัส การสื่ อสารผ่านแสงที่


มองเห็นได้ตามมาตรฐาน CP1223 ของประเทศญี่ปุ่น การใช้งานอุปกรณ์ Mitsubishi PLC และได้
ทาการออกแบบชุ ดทดลองโดยท าการประยุกต์การสื่ อสารด้วยแสงที่ มองเห็ นได้ตามมาตรฐาน
CP1223 บนอุปกรณ์ PLC ที่ใช้โปรโตคอลมอดบัส โดยให้ PLC ทาหน้าที่เป็ นชุ ดอุปกรณ์แม่ข่าย
และลู ก ข่ า ยที่ รั บ ส่ ง ข้อ มู ล ด้ว ยโปรโตคอลมอดบัส และประยุ ก ต์ใ ช้ชุ ด พัฒ นา VLC-CP1223
Development board v1.0 เพื่อเป็ นอุปกรณ์แปลงสัญญาณของโปรโตคอลมอดบัส RS-485 เป็ น
สัญญาณแสงตามมาตรฐาน CP1223 และจากการทดลองแสดงให้เห็ นว่าโปรโตคอลมอดบัสได้มี
ข้อจากัดจากอุปกรณ์ของผูผ้ ลิตที่ทาให้สามารถใช้งานได้จริ งที่ระยะความยาวของสายสัญญาณอยูท่ ี่
500 เมตร และมีลูกข่ายได้สูงสุ ด 16 ลูกข่าย โดยการติดต่อสื่ อสารผ่านแสงที่มองเห็ นได้น้ นั ทาให้
ข้อ จ ากัด ของอุ ป กรณ์ น้ ั น ลดน้ อ ยลง คื อ มี ร ะยะการติ ด ต่ อ สื่ อ สารที่ ม ากขึ้ น เมื่ อ น าระยะของ
สายสัญญาณมาร่ วมกับระยะของการติดต่อสื่ อสารด้วยแสง และทาให้มีจานวนลูกข่ายมากขึ้นเท่ากับ
จานวนลูกข่ายที่สามารถรับค่าจากแสงของอุปกรณ์ ส่งสัญญาณแสงได้ เนื่ องจากไม่มีการตอบกลับ
ของสัญญาณจากลูกข่ายนั้นเอง และข้อจากัดของอุปกรณ์ส่งสัญญาณแสงนั้น จากการทดลองที่ 4.4
มี ร ะยะการติ ด ต่ อ สื่ อ สารผ่า นแสงที่ ม องเห็ น ได้ม ากกว่า 3.5 เมตรในแนวตรง และมี รั ศ มี ก าร
ติดต่อสื่ อสารผ่านแสงตามรัศมีของโคม และจากการทดลองที่ 4.5 แสดงให้เห็ นว่าไม่สามารถรั บ
ข้อมูลได้ในขณะที่มีแสงรบกวนจากผ่านนอกมากกว่า 1,500 ลักซ์ ที่ระยะห่ างในแนวตรงมากกว่า
80 ซม. ทาให้การสื่ อสารผ่านแสงที่มองเห็ นได้น้ ี เหมาะสมกับการนาไปใช้งานกับสถานที่ที่ไม่มี
แสงรบกวนจากผ่านนอก แต่ขอ้ จากัดอื่นๆ ของการสื่ อสารผ่านแสงที่มองเห็นได้ CP1223 นั้น ยังมี
ความจาเป็ นที่ตอ้ งทดลอง เพิ่มเติม เพื่อให้ได้ขอ้ มูลมากพอสาหรับการออกแบบเพื่อนาไปใช้งาน
ร่ วมกับระบบที่มีขนาดใหญ่มากขึ้น
61

เอกสารอ้างอิง

[1] บริ ษทั ริ เวอร์ พลัส จากัด “ซอฟแวร์ ควบคุมระบบการผลิตแบบกึ่งอัตโนมัติ และแบบอัตโนมัติ


การควบคุมคุณภาพวิเคราะห์ขอ้ มูลเชิงสถิติ” http://riverplusblog.com/2011/08/18/plc-protocol-
การสื่ อสารแบบ-modbus-protocol/
[2] MODBUS.ORG, "MODBUS Application Protocol Specification V1.1b3", 2012
[3] ปรี ชา กอเจริ ญ และคณะ, เอกสารประกอบประกอบการฝึ กอบรมครั้งที่ ๒: โครงการกองทุน
กสทช.โครงการพัฒนาความพร้อมระดับประเทศของการสื่ อสารด้วยแสงสว่าง: การถ่ายทอด
เทคโนโลยีการพัฒนาบุคลากรด้านกิจการโทรคมนาคม การจัดทาร่ างมาตรฐาน และสื่ อ (Visible
Light communications for Thailand: Technology Transfer, Human Resource Development,
Industrial Standard Survey, and Its Publications),มหาวิทยาลัยศรี ปทุม, 2558.
[4] IEEE Communications Society, “IEEE 802.15.7 visible light communication: modulation
schemes and dimming support” 2012
[5] Japan Electronics and Information Technology Industries Association (JEITA) guidelines,
“JEITA CP-1223 Visible Light Beacon System”,
http://www.jeita.or.jp/japanese/standard/book/CP-1223/#page=1
[6] MELSEC FX Series Programmable Contrillers User's Manual, "FX3U MODBUS Serial
Communication Edition", Mitsubishi Electric, 2007
62

ภาคผนวก

1. โปรแกรม PLC สื่ อสารด้วยโปรโตคอลมอดบัสสาหรับแม่ข่าย


63
64
65
66
67

2. โปรแกรม PLC สื่ อสารด้วยโปรโตคอลมอดบัสสาหรับลูกข่าย


68
69

3. โปรแกรม Arduino สื่ อสารด้วยโปรโตคอลมอดบัสสาหรับลูกข่าย

#include <modbus.h>
#include <modbusDevice.h>
#include <modbusRegBank.h>
#include <modbusSlave.h>
/* PINS
Add more registers if needed
Digital input pins 2,3,4,5,6,7
Digital output pins 8,9,12,13
Analog output pins 10,11 (PWM)
Analog input pins 0,1,2,3,4,5
*/
modbusDevice regBank;
modbusSlave slave;
int AI0,AI1,AI2,AI3,AI4,AI5;

void setup()
{
regBank.setId(1); ///Set Slave ID

//Add Digital Input registers


regBank.add(10002);
regBank.add(10003);
regBank.add(10004);
regBank.add(10005);
regBank.add(10006);
regBank.add(10007);
// Add Digital Output registers
regBank.add(8);
70

regBank.add(9);
regBank.add(12);
regBank.add(13);
//Analog input registers
regBank.add(30001);
regBank.add(30002);
regBank.add(30003);
regBank.add(30004);
regBank.add(30005);
regBank.add(30006);
//Analog Output registers
regBank.add(40010);
regBank.add(40011);

slave._device = &regBank;
slave.setBaud(9600);

pinMode(2,INPUT);
pinMode(3,INPUT);
pinMode(4,INPUT);
pinMode(5,INPUT);
pinMode(6,INPUT);
pinMode(7,INPUT);
pinMode(8,OUTPUT);
pinMode(9,OUTPUT);
pinMode(12,OUTPUT);
pinMode(13,OUTPUT);
}
void loop(){

while(1){
71

//Digital Input
byte DI2 = digitalRead(2);
if (DI2 >= 1)regBank.set(10002,1);
if (DI2 <= 0)regBank.set(10002,0);
byte DI3 = digitalRead(3);
if (DI3 >= 1)regBank.set(10003,1);
if (DI3 <= 0)regBank.set(10003,0);
byte DI4 = digitalRead(4);
if (DI4 >= 1)regBank.set(10004,1);
if (DI4 <= 0)regBank.set(10004,0);
byte DI5 = digitalRead(5);
if (DI5 >= 1)regBank.set(10005,1);
if (DI5 <= 0)regBank.set(10005,0);
byte DI6 = digitalRead(6);
if (DI6 >= 1)regBank.set(10006,1);
if (DI6 <= 0)regBank.set(10006,0);
byte DI7 = digitalRead(7);
if (DI7 >= 1)regBank.set(10007,1);
if (DI7 <= 0)regBank.set(10007,0);

//Digital output
int DO8 = regBank.get(8);
if (DO8 <= 0 && digitalRead(8) == HIGH)digitalWrite(8,LOW);
if (DO8 >= 1 && digitalRead(8) == LOW)digitalWrite(8,HIGH);
int DO9 = regBank.get(9);
if (DO9 <= 0 && digitalRead(9) == HIGH)digitalWrite(9,LOW);
if (DO9 >= 1 && digitalRead(9) == LOW)digitalWrite(9,HIGH);
int DO12 = regBank.get(12);
if (DO12 <= 0 && digitalRead(12) == HIGH)digitalWrite(12,LOW);
if (DO12 >= 1 && digitalRead(12) == LOW)digitalWrite(12,HIGH);
72

int DO13 = regBank.get(13);


if (DO13 <= 0 && digitalRead(13) == HIGH)digitalWrite(13,LOW);
if (DO13 >= 1 && digitalRead(13) == LOW)digitalWrite(13,HIGH);

//Analog input ***READ Twice deliberately


AI0 = analogRead(0);
delay(10);
AI0 = analogRead(0);
regBank.set(30001, (word) AI0);
delay(10);
AI1 = analogRead(1);
delay(10);
AI1 = analogRead(1);
regBank.set(30002, (word) AI1);
delay(10);
AI2 = analogRead(2);
delay(10);
AI2 = analogRead(2);
regBank.set(30003, (word) AI2);
delay(10);
AI3 = analogRead(3);
delay(10);
AI3 = analogRead(3);
regBank.set(30004, (word) AI3);
delay(10);
AI4 = analogRead(4);
delay(10);
AI4 = analogRead(4);
regBank.set(30005, (word) AI4);
delay(10);
73

AI5 = analogRead(5);
delay(10);
AI5 = analogRead(5);
regBank.set(30006, (word) AI5);
delay(10);

//Analog output
word AO10 = regBank.get(40010);
analogWrite(10,AO10);
delay(10);
word AO11 = regBank.get(40011);
analogWrite(11,AO11);
delay(10);

slave.run();
}
}
74

4. โปรแกรม Arduino สาหรับรับค่าชุดข้อมูลโปรโตคอลมอดบัส และส่ งข้อมูลด้วย VLC CP1223

/*
Example 1 VLC-CP1223 Course
Transmit Multi VLC-CP1223 DATA
created 10 NOV 2015
modified 22 NOV 2015
By. Kata Jaruwongrungsee
Credit:
This work used the VLC-CP1223 driver-code VLC_CP1223_QSC.h
"VLC-CP1223 QUICK STARTER CODE", Kata Jaruwongrungsee, CC-BY
Which is licensed under a Creative Commons Attribution 4.0 International License.
To view a copy of this license, visit http://creativecommons.org/licenses/by/4.0/
*/

#include"VLC_CP1223_QSC.h" //Add this file & include it first

void setup() {
startVLC_OUT(5); //SET VLC_out PIN (default = 5)
//PWM PIN IS NEEDED (3,5,6,9,10 for Leonardo)
Serial1.begin(9600);
}

void loop() {
//SET MESSAGE TO SEND
//--->> FUNCTION: setupMessage( FTYPE(1 byte) , STRING DATA(max 16 byte) )
//Ex. setupMessage('1',"VLC-CP1223 DEMO ");
//PRINT SENDING MESSAGE AT DEFAULT SERIAL PORT (Serial.begin(XX); is needed)
//--->> FUNCTION: printPAYLOAD();
//Ex. printPAYLOAD();
75

char j;
unsigned char msg[17]={};
while(true){
transmitALL();
//save serial input
if (Serial1.available()) {
for(j=0;j<16;j++)
{
unsigned char inModbus = (unsigned char)Serial1.read();
msg[j] = inModbus;
delay(100);
}

//--->> TRANSMIT DATA - FUNCTION: transmitALL();


setupDATA('0',msg);
for(int i=0; i<20;i++){
transmitALL();
}
}
}
}
76

5. โปรแกรม Arduino สาหรับรับข้อมูลด้วย VLC CP1223 และส่ งค่าชุดข้อมูลโปรโตคอลมอดบัส

/*
Example 2 VLC-CP1223 Course
Show Received VLC DATA on Serial Port
created 10 NOV 2015
modified 12 JAN 2015
By. Kata Jaruwongrungsee
Credit:
This work used the VLC-CP1223 driver-code VLC_CP1223_QSC.h
"VLC-CP1223 QUICK STARTER CODE", Kata Jaruwongrungsee, CC-BY
Which is licensed under a Creative Commons Attribution 4.0 International License.
To view a copy of this license, visit http://creativecommons.org/licenses/by/4.0/
*/

#include"VLC_CP1223_QSC.h" //Add this file & include it first

#define LED1 4
#define LED2 6
#define LED3 8

void setup() {
startVLC_IN(7); //SET VLC_IN PIN (default 7);
startVLC_OUT(5); //SET VLC_OUT PIN (default 5);

pinMode(LED1, OUTPUT); digitalWrite(LED1,0);


pinMode(LED2, OUTPUT); digitalWrite(LED2,0);
pinMode(LED3, OUTPUT); digitalWrite(LED3,0);
Serial1.begin(9600);
}
77

void loop() {
unsigned int errcount = 0; //NO-DATA TIMEOUT
unsigned char Serialout [8];
//Main Function is "VLCread()"
//which return 1(integer) when data is correct
//and return 0(integer) when no data detected
//IF DATA IS DETECTED PAYLOAD_IN[0-17] (byte) will be updated
//PAYLOAD_IN[0] = FTYPE, ID
//PAYLOAD_IN[1-17] = MESSAGE

while(true)
{
if(VLCread()==1)
{ //<<----- VLC Signal Detecting
errcount = 0;
if(PAYLOAD_IN[2]==0x05)
{ digitalWrite(LED1,0);digitalWrite(LED2,1);digitalWrite(LED3,0);
for(int x=1;x<9;x++)
{
unsigned char VLCin = PAYLOAD_IN[x];
Serial1.write(VLCin);
}
delay(1000);
}
else if(PAYLOAD_IN[2]==0x0F)
{ digitalWrite(LED1,0);digitalWrite(LED2,0);digitalWrite(LED3,1);
for(int x=1;x<11;x++)
{
unsigned char VLCin = PAYLOAD_IN[x];
78

Serial1.write(VLCin);
}
delay(1000);
}
else {digitalWrite(LED1,1);digitalWrite(LED2,0);digitalWrite(LED3,0);
}
}
}
}

You might also like