การประยุกต ใช ไมโครคอนโทรลเลอร...
TRANSCRIPT
การประยุกตใชไมโครคอนโทรลเลอรทําหนาที่เปน PLCPROGRAMMABLE LOGIC CONTROLLER USING MICROCONTROLLER
สวรส กิตติโสภาอมรรัตน จันทรศรี
ปริญญานิพนธนี้เปนสวนหนึ่งของการศึกษาตามหลักสูตรปริญญาวิศวกรรมศาสตรบัณฑิตภาควิชาวิศวกรรมไฟฟา คณะวิศวกรรมศาสตร
มหาวิทยาลัยบูรพาปการศึกษา 2551
การประยุกตใชไมโครคอนโทรลเลอรทําหนาที่เปน PLCPROGRAMMABLE LOGIC CONTROLLER USING MICROCONTROLLER
สวรส กิตติโสภาอมรรัตน จันทรศรี
โครงงานนี้เปนสวนหนึ่งของการศึกษาตามหลักสูตรปริญญาวิศวกรรมศาสตรบัณฑิต
ภาควิชาวิศวกรรมไฟฟา คณะวิศวกรรมศาสตรมหาวิทยาลัยบูรพาปการศึกษา 2551
PROGRAMMABLE LOGIC CONTROLLER USING MICROCONTROLLER
Sawaros KittisopaAmornrat Junsri
A THESIS SUBMITTED IN PARTIAL FULFILLMENT OF REQUIREMENTFOR THE DEGREE OF BACHELOR OF ENGINEERING
DEPARTMENT OF ELECTRICAL ENGINEERINGBURAPHA UNIVERSITY 2008
ปริญญานิพนธ การประยุกตใชไมโครคอนโทรลเลอรทําหนาที่เปน PLCโดย นางสาวสวรส กิตติโสภา
นางสาวอมรรัตน จันทรศรี อาจารยที่ปรึกษา ดร.เฉลิมภัณฑ ฟองสมุทรจํานวนหนา 77 หนาปการศึกษา 2551
ภาควิชาวิศวกรรมไฟฟา คณะวิศวกรรมศาสตร มหาวิทยาลัยบูรพา อนุมัติโครงงานทางวิศวกรรมนี้เปนสวนหนึ่งของการศึกษาตามหลักสูตรปริญญาวิศวกรรมศาสตรบัณฑิต
...................................................ประธานกรรมการสอบปริญญานิพนธ(อาจารยบัณฑร จิตตสุภาพ)
...................................................กรรมการสอบปริญญานิพนธ(อาจารยดร.มนตรี โพธิโสโนทัย)
...................................................อาจารยที่ปรึกษา(อาจารยดร.เฉลิมภัณฑ ฟองสมุทร)
...................................................หัวหนาภาควิชาวิศวกรรมไฟฟา(ผูชวยศาสตราจารยดร.ณยศ คุรุกิจโกศล)
บทคัดยอ
โปรแกรมเมเบิลลอจิกคอนโทรลเลอร หรือ PLC เปนอุปกรณที่ใชควบคุมการทํางานของเครื่องจักร หรือระบบตางๆ แทนวงจรรีเลยแบบเกาที่มีขอเสียคือการเดินสายและการเปลี่ยนแปลงเงื่อนไขในการควบคุมมีความยุงยาก ในปจจุบันโปรแกรมเมเบิลลอจิกคอนโทรลเลอรจึงเขามาทดแทนวงจรรีเลย เพราะโปรแกรมเมเบิลลอจิกคอนโทรลเลอรใชงานไดงายกวา โครงงานเลมนี้นําเสนอการใชประโยชนจากไมโครคอนโทรลเลอร และมีการอธิบายการทํางานของไมโครคอนโทรลเลอรโครงงานเลมนี้เปนตัวอยางสําหรับนักศึกษาที่สนใจนําไมโครคอนโทรลเลอรไปใชงานเนื่องจากมีการอธิบายวงจรและตัวอยางซอฟตแวรใหอยางละเอียดสามารถนําไปสรางใชงานไดมีการศึกษาวงจรสวนตางๆของโปรแกรมเมเบิลลอจิกคอนโทรลเลอรอุตสาหกรรมสวนฮารดแวรที่นํามาเผยแพรไดมีการทดลอง และสรุปผลการทดลอง
ในดานซอฟตแวรการสั่งไมโครคอนโทรลเลอรใหทํางานตามความตองการของผูใช โครงงานนี้จึงมีการพัฒนาใหการสั่งงานจากผูใชสามารถทําไดงายและรวดเร็วมากขึ้น และทดสอบแนวคิดดวยการเขียนโปรแกรมขึ้นมาทดลองใชงาน มีการคิดชุดคําสั่งเพื่อใหไมโครคอนโทรลเลอรทํางานแตละคําสั่งไดเร็วที่สุด วิธีนี้มีขอดีที่ลดอุปกรณและตนทุนลง และมีความยืดหยุนกวา เพราะสามารถปรับการใชงานใหเหมาะสมกับงานได
โครงงานนี้สรางอุปกรณทํางานพื้นฐานไดเหมือนโปรแกรมเมเบิลลอจิกคอนโทรลเลอรแตไมสามารถแทนโปรแกรมเมเบิลลอจิกคอนโทรลเลอรไดในทุกกรณี ปริญญานิพนธนี้ไดระบุความบกพรองหรือความสามารถที่ขาดไป ไวเปนแนวทางการพัฒนาตอ และยังแสดงใหเห็นแนวทางหรือกระบวนการคิดในการสรางฮารดแวร และซอฟตแวรรวมทั้งทดสอบแสดงการใชงานแบบจําลองทดสอบไฟจราจรและการกลับทางหมุนมอเตอรไฟตรง
คําสําคัญ: โปรแกรมเมเบิลลอจิกคอนโทรลเลอร, พีแอลซี, แลดเดอรไดอะแกรม, ไมโครคอนโทรลเลอร
Abstract
PLC (Programmable logic controller) is most widely used in the control processespecially the production line of many industries. PLC is also capable for replacing the use of conventional circuits of relay. The reason is that, the main disadvantages of the conventional circuit are the difficulty of wiring and the change of controlling condition occurred frequently. Nowadays, the conventional circuit of relay has been already replaced by PLC because we can use the PLC in many proposes of control easily.
This project aims to design the PLC by using microcontroller PIC18F4550 as a central control unit. The designed PLC with C# program is used to control electronic circuits and there are command package in our proposed PLC. It allows user enter commands PLC simply.
This project proposed the PLC by using microcontroller that it mostly works the same of commercial PLCs. However, the designed PLC is not available for all cases, i.e., sequential and non-sequential commands. The experimental results show that the designed PLC is capable for controlling traffic light and for rotating electric motor. Finally, the disadvantages of our PLC were concluded as a guide for future improvement.
Keywords: Programmable logic controller, PLC, Ladder Diagram, Microcontroller
กิตติกรรมประกาศ
การจัดทําโครงงานทางวิศวกรรมศาสตรนี้สําเร็จลุลวงไปดวยดี ทางคณะผูจัดทําขอขอบพระคุณผูชวยศาสตราจารยดร.ณยศ คุรุกิจโกศล หัวหนาภาควิชาวิศวกรรมไฟฟา อาจารยดร.เฉลิมภัณฑ ฟองสมุทร ที่ปรึกษาการทําโครงงานครั้งนี้ และคณาจารยทุกทานในภาควิชาวิศวกรรมไฟฟาที่ใหการสนับสนุนและใหความรวมมือในการจัดทําโครงงาน ตลอดจนใหแนวคิด แนวทางการแกไขปญหา และใหความชวยเหลือเสมอม รวมทั้งคุณสรไกร ไกรปุย คุณนพรัตน นิลสําราญ ที่ใหความชวยเหลือและแนะนําในการทําโครงงานครั้งนี้รวมถึงเพื่อนนักศึกษาทุกทานที่เอื้อเฟออุปการณตางๆ ในการทดลอง
ที่สําคัญที่สุดขอขอบพระคุณบิดา มารดา อันเปนที่เคารพรักยิ่ง ซึ่งเลี้ยงดูและใหการสนับสนุนเสมอมา และใหโอกาสทางการศึกษาใหกําลังใจในทุกๆดาน ขอกราบขอบพระคุณมา ณ ที่นี้
สารบัญ
หนาบทคัดยอ………………………………………………………………………..…………….……..…… iiAbstract……………………………………………………………………………..……….…..………. iiiกิตติกรรมประกาศ…………………………………………………………………..…….……..……… ivสารบัญ……………………………………………………………………………..……….……..…….. vสารบัญรูป……………………………………...………………………………………………..……….. viiiสารบัญตาราง……………………………………………………………………………….…....……… xii
บทที่ 1 บทนํา……………………………………………………………………………….......……….. 11.1 บทนํา………………………………………………………………………..…..….......... 11.2 วัตถุประสงค…………………………………………………………………………….... 21.3 ขอบเขตของการทําโครงงาน………………………………………………..…..……..... 21.4 ประโยชนที่คาดวาจะไดรับ...……………………………………………………...…...... 2
บทที่ 2 ทฤษฎีเบื้องตน…………………….………………………………………………………..….. 32.1 โปรแกรมเมเบิลลอจิกไมโครคอนโทรลเลอร………………………………………........ 3
2.1.1 ประวตัิโปรแกรมเมเบิลลอจิกไมโครคอนโทรลเลอร…..……………………....... 32.1.2 การจําแนกขนาดของโปรแกรมเมเบิลลอจิกไมโครคอนโทรลเลอร…………….. 42.1.3 การจําแนกโครงสรางภายนอกโปรแกรมเมเบิลลอจิกไมโครคอนโทรลเลอร …. 52.1.4 การจําแนกโครงสรางภายในโปรแกรมเมเบิลลอจิกไมโครคอนโทรลเลอร…….. 62.1.5 การทํางานของโปรแกรมเมเบิลลอจิกไมโครคอนโทรลเลอร..…………............ 92.1.6 ชนิดของสัญญาณโปรแกรมเมเบิลลอจิกไมโครคอนโทรลเลอร........................ 102.1.7 ระบบควบคุมเดิม………………………………………………………...………. 102.1.8 การเขียนโปรแกรม………………………………………………………...…….. 102.1.9 การโปรแกรมอุปกรณโปรแกรมเมเบิลลอจิกไมโครคอนโทรลเลอร……………. 112.1.10 การใชโปรแกรมเมเบิลลอจิกไมโครคอนโทรลเลอร…………………………… 112.1.11 แผนผังการใชโปรแกรมเมเบิลลอจิกไมโครคอนโทรลเลอร……………....…..2.1.12 การเขียนโปรแกรมภาษาแลดเดอร (Ladder)………………….………..……..
12 13
2 2.22 2.3
วงจรอิเล็กทรอนิกส…………………..…………………………………………………. Microcontroller ตระกูล PIC…………………………………………………..………..
22 23
สารบัญ (ตอ)
2.4 ออปโตคัปเปลอร (Optocoupler).............................................................................2.5 ULN2803………………………………………………………………………………….2.6 รีเลย (Relay)………………………………………….……..…………….………........2.7 74LS07…………………………………………………………………….……………..
หนา 25
2729
31
บทที่ 3 หลักการ แนวคิด และการออกแบบโครงงาน………………………………………………..….……………… 333.1 หลักการและแนวคิด………………………………………………………..……………. 333.2 การออกแบบฮารดแวร…………………………………………………...……………… 3.2.1 การออกแบบดานอินพุต………………………………………………….………. 3.2.2 การออกแบบดานเอาทพุต…………………………………………….………….. 3.2.3 การออกแบบวงจรเบิรน (เปนสวนการรับโปรแกรม) และโหมดแสดงผล…….… 3.2.4 การออกแบบแหลงจายไฟ………………………………………….……………..
33 34 36 38 40
3.3 การออกแบบซอฟตแวร…………………………………………...…………………….. 3.3.1 โปรแกรมการทํางาน………………………………………………………………. 3.3.2 สวนติดตอกับผูใช...........................................................................................3.4 รูปแบบซอฟตแวร…………………………….…………………………………………..
42 42 42 44
บทที่ 4 ผลการทดลองและการอภิปรายผลการทดลอง………………………….…………………..…. 474.1 การทดลองการควบคุมไฟจราจร………….……………………………….…………… 674.2 การทดลองการกลับทางหมุนของมอเตอรไฟตรง……………………….……………..4.3 ผลการทดลองการควบคุมไฟจราจร…………………………………….….………..….4.4 ผลการทดลองการกลับทางหมุนของมอเตอรไฟตรง………………………..…….……
7847555759
บทที่ 5 สรุปผลโครงงานและขอเสนอแนะ…………………………………………………...……...….. 615.1 สรุปผลโครงงาน…………………..………………………………..…………………….. 615.2 ปญหาที่เกิดขึ้น…………………...………………………………………...…………….5.3 ขอเสนอแนะ............................................................................................................
61 62
สารบัญ (ตอ)
เอกสารอางอิง…………………………………………………………………………………………....หนา 63
ภาคผนวก…………………………………………………………………………………………...…… 64ภาคผนวก ก แผนลําดับการทํางานและโปรแกรมการทํางานของ PLC Program………… 65ภาคผนวก ข โปรแกรมการทํางานการประยุกตใชไมโครคอลโทลเลอรทําหนาที่เปน โปรแกรมเมเบิลลอจิกไมโครคอนโทรลเลอร………………………………….ภาคผนวก ค คูมือการใชงานการประยุกตใชไมโครไมโครคอนโทรลเลอรทําหนาที่เปน โปรแกรมเมเบิลลอจิกไมโครคอนโทรลเลอร...............................................
66
73
สารบัญรูป
รูปที่ หนา2.1 เครื่องโปรแกรมเมเบิลลอจิกคอนโทรลเลอร………………….…………………………………. 52.2 Siemens LOGO และ โปรแกรมเมเบิลคอนโทรลเลอร ที่มีโครงสรางแบบ Compact …..….... 62.3 โครงสรางภายในของโปรแกรมเมเบิลคอนโทรลเลอร……………………………………..….… 72.4 พร็อกซิมิตี้สวิตซ………...……………………………………………………….………...…….. 82.5 ลิมิตสวิตซตางๆ…………………………………………………………………………...……… 82.6 ไทเมอร………………………………………………………………………………….…...…… 82.7 โฟโตอิเล็กทริกสวิตซ……………………………………………………………………..……… 92.8 เอ็นโคดเดอร……………………………………………………………………………….….…. 92.9 การทํางานของโปรแกรมเมเบิลคอนโทรลเลอร………………………………………….……… 92.10 Flowchart การทํางานของโปรแกรมเมเบิลคอนโทรลเลอร ………………………….….…… 122.11 แลดเดอร (Ladder) 3 อินพุตแบบออเกต (or gate)…………………………………….…….. 132.12 แลดเดอร 3 อินพุตแบบ AND gate ……………………………………………..……….…… 142.13 แลดเดอร 3 อินพุตแบบ OR gate ………………………………….………………….……... 142.14 วงจรแลดเดอร (Ladder) แบบ NOT gate ……………………………………….……….….. 152.15 วงจรแลดเดอรแบบคงสภาวะ……………………………………………………....………….. 152.16 วงจรแลดเดอร (Ladder) แบบเซต/รีเซต (SET/RESET)…………………………..………… 162.17 ลักษณะของพัลซ (Pulse)……………………………………………………….….………….. 162.18 ฟงกชันการตรวจจับพัลซ (Pulse) ในขอบขาขึ้น…………………………………….….….…. 172.19 การทํางานของ Timer Delay ON …………………………………………………..…….…… 172.20 การทํางานของ Timer Delay OFF ………………………………………………….………… 182.21 การทํางานของ Up Counter ……………………………………………………….….………. 192.22 Timing diagram การทํางานของตัวนับแบบเพิ่มคา (Up Counter)………………….…….…. 192.23 การทํางานของตัวนับแบบลดคา (Up-Down Counter)………………………….….………… 202.24 การทํางานของ Shift Register……………………………………………………….………… 212.25 ไมโครคอนโทรลเลอร PIC 18F4550………………………………………………………….. 242.26 โครงสรางของ PIC18F4550………………………………………………………..…….…… 242.27 แสดงสัญลักษณอุปกรณเชื่อมตอทางแสง…………………………………………………….. 25
สารบัญรูป (ตอ)
รูปที่ หนา2.28 โครงสรางของ LVT-847……….………………………………………………………………. 252.29 ความสัมพันธระหวาง VCE และ IF ………………………………………………………..…… 262.30 ความสัมพันธระหวาง IC และ VCE …………………………………………………….….…… 272.31 แสดงการหนวงสัญญาณของออปโตคัปเปลอร…………………………………….………..… 272.32 ULN 2803…………………………………………….……………………………….…..…… 272.33 แสดง Logic Diagram…………………….…………………………….……………….…..…. 282.34 Outline Dimension …………………………………………….…….…………………..……. 282.35 แสดง Representative Schematic Diagrams ………………………………………...…….. 282.36 ULN2803 Input Current versus Input Voltage ………………………………….……..….. 292.37 รีเลย และ สัญลักษณของรีเลย……………………………………………………………..….. 302.38 หนาสัมผัสรีเลย………………………………………………………………………………..... 312.39 Pin Arrangement………………………………………………………………………………. 31 2.40 Test Method…………………………………………………………………………………… 323.1 วงจรอินพุต………………………………………………………………………………….….… 353.2 วงจรเอาตพุต…………………………………………………………………………….….…… 373.3 วงจรเบิรน (เปนสวนการรับโปรแกรม) และสวนแสดงผล……………………………………… 393.4 วงจรแหลงจายไฟ………………………………………………………………………………………..…………… 413.5 บล็อกไดอะแกรมการทํางานของโปรแกรม……………………………………………..…….… 423.6 Flowchart สวนติดตอกับผูใช............................................................................................... 433.7 PLC Program…………………………………………………………………………….………. 443.8 แสดงการเลือกพอรตอินพุต……………………………………………………………………… 443.9 แสดงการเลือกอินพุต เอาตพุตและ Delay (ms)…………………………………………....…. 453.10 แสดงการกําหนดอินพุตและเอาตพุตที่เราตองการใชงานตามขั้นตอนที่กําหนด …...……… 453.11 เมื่อกดปุมรันโปรแกรมจะทําการคอมไพลคําสั่งเปน File.hex……………………………. 463.12 File.hex ที่ไดจากการ Compile program……………………………………………………… 464.1 PLC PROGRAM…………………………………………………………………………….……. 474.2 การกําหนดอินพุตโดยพอรต A0 และ A1 ทําการดําเนินการ And กันทาง ลอจิก……………... 48
สารบัญรูป (ตอ)
รูปที่ หนา4.3 กํานดเอาตพุตพอรต D7 และกําหนดคา Delay…………………………………………...…… 484.4 กดปุม Add จะปรากฏขอมูลที่ผูใชเลือกดานซายมือเปนขั้นตอนที่ 1………….………………. 494.5 การเลือกพอรต D6 ปอนคา Delay 6 วินาที แลวกดปุม Add เปนขั้นตอนที่ 2….………...… 494.6 การเลือกพอรต D4 ปอนคา Delay 10 วินาที แลวกดปุม Add เปนขั้นตอนที่ 3………………. 504.7 File.hex สําหรับเบิรนใส PIC18F4550………………………………………………………….. 504.8 กดสวิตซเลือกโหมดรันเพื่อเบิรน PIC18F4550………………………………………………… 514.9 กดปุม Detect เพื่อหา PIC18F4550…………………………………………………………….. 514.10 กดปุม Erase เพื่อลบขอมูลใน PIC18F4550………………………………………………….. 524.11 กดปุมเปดแฟมเพื่อเลือก PLC.hex…………………………………………………………..… 524.12 เลือกที่ Setting………………………………………………………………………………..… 534.13 รูปการเลือกเครื่องหมายถูกออก……………………………………………………………..… 534.14 กดปุม Program All…………………………………………………………………………..… 544.15 การเปลี่ยนเปนโหมดโปรแกรม……………………………………………………………….... 544.16 เลือกอินพุตพอรต A0…………………………………………………………………………... 554.17 แสดงขั้นตอนที่ 1………..………………………………………………………………….…… 554.18 การเลือกพอรตเอาตพุต และกําหนดคา Delay……………………………………………….. 564.19 แสดงการกําหนดคา ขั้นตอนที่ 2…….…………………………………………………………. 564.20 กดสวิตซ A0 และ A1……………………………………………………………………………. 574.21 ไฟจราจรสีแดงทํางาน………………………………………………………………………….... 574.22 ไฟจราจรสีเหลืองทํางาน……………………………………………………………………..… 584.23 ไฟจราจรสีเขียวทํางาน…………………………………………………………………….……. 584.24 มอเตอรทํางานโดยหมุนไปทางซาย…………………….……………………………………… 594.25 มอเตอรทํางานโดยหมุนทางขวา……………………………………….………………………. 60ก.1 แผนลําดับการทํางานการประยุกตใชไมโครคอนโทรลเลอรทําหนาที่เปน PLC…………….…. 66ค.1 สวนของโปรแกรมสั่งการทํางาน……………………………………………………………….… 73ค.2 สวนการเบิรนโปรแกรม…………………………………………………………………………... 73ค.3 สวนวงจร………………………………………………………………………………………….. 74
etectetectetect
etect
สารบัญรูป (ตอ)
รูปที่ หนาค.4 สวนวงจรแสดงผล………………………………………………………………………………… 74ค.5 ไอคอนโปรแกรม………………………………………………………………………………….. 75ค.6 การปอนคําสั่งอินพุต และเอาทพุทการใช……………………………………………………….. 75ค.7 เลือกโหมดโปรแกรมเปลี่ยนเปนหลอดไดโอดเปลงแสงสีแดง………………………………….. 76ค.8 ไอคอนโปรแกรม WinPic800……………………………………………………………………. 76ค.9 การเบิรนโปรแกรมเสร็จสมบูรณ…………………………………………………………………. 77ค.10 เครื่อง PLC ทํางานตามโปรแกรมที่สั่งไว…………………………………………………...…. 77
สารบัญตาราง
ตารางที่ หนาตารางที่ 2.1 ขอมูลการจําแนกขนาดของโปรแกรมเมเบิลลอจิกคอนโทรลเลอร…………………….. 4ตารางที่ 2.2 เปรียบเทียบวงจรรีเลยกับโปรแกรมเมเบิลคอนโทรลเลอร…………….….…………… 23ตารางที่ 2.3 Absolute Maximum Ratings (Ta=25 C) ของ Optocoupler LTV-847……………… 26
บทที่ 3
หลักการ แนวคิด และการออกแบบโครงงาน
เนื่องจากในปจจุบันไดมีการใช เครื่องโปรแกรมเมเบิลลอจิกคอนโทรลเลอรในโรงงานอุตสาหกรรมอยางแพรหลายซึ่งเคร่ืองโปรแกรมเมเบิลลอจิกคอนโทรลเลอรนั้นมีราคาสูงมาก ดังนั้นจึงไดทําเครื่องโปรแกรมเมเบิลลอจิกคอนโทรลเลอรที่มีการประยุกตใชไมโครคอนโทรลเลอรทําหนาที่เปนโปรแกรมเมเบิลลอจิกคอนโทรลเลอรขึ้นโดยการปอนคาอินพุตและเอาตพุตในสวนติดตอกับผูใชที่สรางขึ้นมาแลวทําการโปรแกรมผานชุดเบิรนไปท่ีไมโครคอนโทรลเลอร (PIC18F4550) ซึ่งในการทํางานจะแบงออกเปน 2 โหมด คือ 1.โหมดโปรแกรม 2.โหมดรัน ในโหมดโปรแกรมจะปอนอินพุต เอาตพุต ดีเลย เมื่อกดปุม Add จะทําการตรวจคําสั่งและคาที่ผูใชปอนใหโปรแกรม และสงคาไปที่หนวยความจําที่ใชเก็บคา แลวอานจากหนวยความจํา แลวแสดงผลที่สวนติดตอกับผูใชวาโปรแกรมทําอะไรไปบาง โหมดรัน คือ เมื่อกดปุมรันจะเปนโหมดที่แปลงรหัสที่เก็บจากหนวยความจําไปเปนโคดที่จะทําใหไมโครคอนโทรลเลอรทํางานแทนไดเสมือนโปรแกรมเมเบิลลอจิกคอนโทรลเลอร
3.1 หลักการและแนวคิด
การออกแบบนั้นตองคํานึงถึงสวนตางๆที่จะมีในโครงงานทั้งสวนฮารดแวร และซอฟตแวรในสวนฮารดแวรจะมีวงจรการปอนอินพุต การแสดงผลเอาตพุต สวนการรับโปรแกรมและสวนแสดงผล ดังนั้น การออกแบบของโครงงานจึงแบงออกเปน 2 สวน คือ 1.การออกแบบฮารดแวร 2.การออกแบบซอฟตแวร โดยวงจรทั้ง 2 สวนสามารถแสดงรายละเอียดได ดังนี้
3.2 การออกแบบฮารดแวร
โดยการออกแบบฮารดแวรแบงเปนสวนตางดังนี้1. การออกแบบดานอินพุต2. การออกแบบดานเอาตพุต3. การออกแบบวงจรเบิรน (เปนสวนการรับโปรแกรม) และวงจรแสดงผล4. การออกแบบแหลงจายไฟ
3.2.1 การออกแบบดานอินพุต
โปรแกรมเมเบิลลอจิกคอนโทรลเลอรปกติจะมีภาคอินพุตหลายแบบใหเลือกติดตั้งใชงานให เหมาะกับงานแตละแบบ เชน การรับคาแบบอนาลอก หรือ เปนอินพุตแบบดิจิตอลสวนไมโครคอนโทรลเลอร (PIC 18F4550) ปกติภาคอินพุตก็มีใหเลือกใชทั้งแบบอนาลอกและดิจิตอล (Analog and Digital) ทําใหตอกับแหลงกําเนิดสัญญาณไดโดยตรง การเชื่อมตอโดยตรงนี้จะไดความสามารถตรวจจับสัญญาณสูงสุดที่ไมโครคอนโทรลเลอร (PIC 18F4550) ทําได แตการเชื่อมตอโดยตรงอาจทําใหไมโครคอนโทรลเลอรเสียหายไดโดยตรงจากความผิดปกติจากอินพุต ดังนั้นเราจึงมีการสรางภาคอินพุตเปนบัฟเฟอร (Buffer) ปองกันไมโครคอนโทรลเลอรเสียหายซึ่งมีขอดี คือ ทนแรงดันกระชากไดสูงโดยไมเสียหาย ทําการตอสลับขั้วบวก,ลบโดยไมเสียหาย แยกวงจรทางไฟฟาระหวางอินพุตและโปรแกรมเมเบิลลอจิกคอนโทรลเลอรออกจากกัน เมื่อมีแรงดันสูงมากเขามาจะชํารุดเฉพาะภาคอินพุตโดยไมมีผลกระทบตอภาคประมวลผล และขอมูลในหนวยความจํา ทนสัญญาณรบกวนไดดีขึ้น สวนขอเสีย คือ ไมสามารถวัดสัญญาณอนาลอกไดใชไดแตลอจิก “0” และ “1” มีการหนวงสัญญาณไปเล็กนอย (lag) มีผลกระทบจากอุณหภูมิเล็กนอย ทําใหความสามารถในการแยกความแตกตางของลอจิก 0 และ 1 ลดลง อินพุตอิมพิแดนซลดลงมาก ไมสามารถวัดสัญญาณความถี่สูงๆไดเสมือนการตอตรงเขากับไมโครคอนโทรลเลอร
ก ารทํ า งานนั้ น ใ ช ก า ร เชื่ อ ม โยงทางแสงด วยออปโตคัป เปลอรทํ า ให อิ นพุ ต แล ะไมโครคอนโทรลเลอรแยกกันทางไฟฟาออปโตคัปเปลอรที่ใชคือเบอร LTV847 ซึ่งเปนทรานซิสเตอรออปโตคัปเปลอร ในการแยกการอินเตอรเฟสกับอุปกรณภายนอกสวนใหญก็เปนสวิตซ หรือไมก็หนาคอนแทคของรีเลยโดยผานไฟ 24 โวลต เขาอินพุต
รูปที่ 3.1 วงจรอินพุต
470
R1
470
R2
470
R3
470
R4
470
R5
470
R6
470
R7
470
R8
470
R9
470
R10
470
R11
470
R12
LED2LED
LED3LED
LED4LED
LED5LED
LED6LED
LED7LED
LED8LED
LED9LED
LED10LED
LED11LED
LED1LED
LED12LED
C1R12 R23R34 R4
5 R56 R67 R78
R89RP1
RP4k7
C1 R12
R23 R34R45 R5
6 R67 R78 R89
RP2
*
5V
5V
1
23
45
67
8 9
1011
1213
1415
16
U1
1
23
45
67
8 9
1011
1213
1415
16
U3
1
23
45
67
8 9
1011
1213
1415
16
U2
12
CON1
*
12
CON2
*
12
CON3
*
12
CON4
*
12
CON5
*
12
CON6
*
12
CON7
*
12
CON8
*
12
CON9
*
12
CON10
*
12
CON11
*
12
CON12
*
DIN 6DIN 5DIN 4DIN 3DIN 2DIN 1
DIN 7DIN 8DIN 9DIN 10DIN 11DIN 12
5V
3.2.2 การออกแบบดานเอาตพุต
ใชสงขอมูลที่ไมโครคอนโทรลเลอรประมวลผลเสร็จแลวไปแสดงผลโดยในที่นี้ใหเปนวงจรรีเลยเพื่อควบคุมเอาตพุตโดยใช ไอซี ULN 2803 ทําหนาที่ในการขับกระแสไฟฟาไปที่รีเลย
2.4k
R21
2.4k
R19
2.4k
R23
LED17 LED18 LED19LED16
L1
L2
NO
NC
C
RY1RELAY 24 V
L1
L2
NO
NC
C
RY2RELAY 24V
L1
L2
NO
NC
C
RY3RELAY 24 V
L1
L2
NO
NC
C
RY4RELAY 24 V
L1
L2
NO
NC
C
RY5RELAY 24 V
L1
L2
NO
NC
C
RY6RELAY 24 V
L1
L2
NO
NC
C
RY7RELAY 24 V
L1
L2
NO
NC
C
RY8RELAY 24V
2.4k
R25
2.4k
R27
2.4k
R29
2.4k
R31
2.4k
R33
LED20 LED21 LED22 LED23
+24V +24V +24V+24V+24V+24V+24V+24V
in11
in22
in33
in44
in55
in66
in77
in88
GND9 VCC 10
out8 11out7 12out6 13out5 14out415out3 16out2 17out1 18
U6
*
+24V
DOUT0DOUT1DOUT2DOUT3DOUT4DOUT5DOUT6DOUT7
1 2 3
CON13HEADER 3
1 2 3
CON14HEADER 3
1 2 3
CON15HEADER 3
1 2 3
CON16HEADER 3
1 2 3
CON17HEADER 3
1 2 3
CON18HEADER 3
1 2 3
CON19HEADER 3
1 2 3
CON20HEADER 3
1
DIODE
500R18
2
DIODE
3
DIODE
500R20
500R22
4
DIODE
500R24
D1
DIODE
500R26
D2
DIODE
500R28
500R30
D3
DIODE
D4
DIODE
500R32
รูปที่ 3.2 วงจรเอาตพุต
3.2.3 การออกแบบวงจรเบิรน (เปนสวนการรับโปรแกรม) และโหมดแสดงผล
ขา ACK และ IC 74LS07 ใชเช็คการตอของสายดาวนโหลดระหวางคอมพิวเตอรเขากับบอรด หากสายขาดหรือมีความผิดปกติ โดยถาการตอสายถูกตองโปรแกรมที่ใชเขียนไมโครคอนโทรลเลอรจะเช็คโดยการสงลอจิก “0” มาตามสายที่ตอเขากับบอรดแลว ลอจิก “0” จะถูกสงไปที่ IC 74LS07 และสงกลับมาตามสาย ACK เขาสูคอมพิวเตอร ดังนั้นโปรแกรมจะทราบไดทันทีวาสายตอถูกหรือไมโดยดูจากลอจิก “0” ที่สงไปนั้นถูกสงกลับมาตามสาย ACK หรือไม
การทํางานนั้นเมื่อกดปุมรันจากสวนติดตอกับผูใชทําการแปลงโคดเสร็จแลวจะสงผานขอมูลจากคอมพิวเตอรไปยังไมโครคอนโทรลเลอร
วงจรแสดงโหมดรัน และโหมดโปรแกรมโดยหลอดไดโอดเปลงแสงทั้ง 2 หลอด ถาหลอดไดโอดเปลงแสงสีเขียวทํางานแสดงวาอยูในโหมดรันตามปกติ ถาหลอดไดโอดเปลงแสงสีแดงทํางาน คือ อยูในโหมดโปรแกรม
A11
Y12
A23
Y24
A35
Y36
GND7
Y48
A49
Y510
A511
Y612
A613
VCC14
U4
74LS07
11
22
33
44
55
66
7 7
88
J1
RJ-8P
C1
R1 2
R23
R3 4
R45
RP3
R-PACK5PIN
MCLR/VPP1
RA0/AN02
RA2/AN2/VREF-4
RA3/AN3/VREF+5
RA1/AN13
RA4/T0CKI6
RA5/AN4/SS7
OSC1/CLKIN13
OSC2/CLKOUT14
RC0/T1OSO/T1CKI15
RC1/T1OSI/CCP2 16
RC2/CCP117
RC3/SCK/SCL 18
RC4/SDI/SDA23
RC5/SDO24
RC6/TX/CK25
RC7/RX/DT26
RB0/INT 33
RB134
RB235
RB3/PGM36
RB437
RB538
RB6/PGC39
RB7/PGD40
RE0/RD/AN58
RE1/WR/AN69
RE2/CS/AN710
VDD11
VSS12
RD0/PSP019
RD1/PSP120
RD2/PSP2 21
RD3/PSP322
RD4/PSP4 27
RD5/PSP528
RD6/PSP6 29
RD7/PSP730
VSS31
VDD 32
U5
PIC18F4550
5V
5V
X-TAL1
*100nFC3
100nFC2
SW1
*470R
R135V
LED13
RUN
LED14
PGM
VPP
PIC_PGD
PIC_PGC
PIC_VPPRx
Rx
Rx
5V
10kR14
SW2SW-PB
5V
DIN 1DIN 2DIN 3DIN 4DIN 5DIN 6
Q1
PNP
+14V
4.7k
R17
1kR15
LED15VPP
2kR16
100nFC5
DATA
CLK
VSS
DATAACK
VSS
CLK
DATAD0
D3D1
DOUT0DOUT1DOUT2DOUT3DOUT4
DOUT5
DOUT6DOUT7
0.1uFC1
Cap
0.1uF
C4
Cap
DIN 7DIN 8DIN 9
DIN 10
DIN 11DIN 12
รูปที่ 3.3 วงจรเบิรน (เปนสวนการรับโปรแกรม) และสวนแสดงผล
3.2.4 การออกแบบแหลงจายไฟ
ภาคจายไฟไดมีการออกแบบใหสวนประมวลผลกลาง (ไมโครคอนโทรลเลอร) ทํางานตอไปไดชั่วระยะเวลาหนึ่งเมื่อไฟดับ โดยใชตัวเก็บประจุสํารองไฟ ธรรมชาติของตัวเก็บประจุเมื่อมีการจายกระแสออกมาแรงดันจะลดลงเรื่อยๆ เมื่อแรงดันต่ํามากๆ หนวยประมวลผลจะเร่ิมทํางานผิดพลาดแตกอนที่สวนประมวลผลกลางจะทํางานผิดพลาดภายในไมโครคอนโทรลเลอร (PIC 18F4550) มีวงจรตรวจระดับแรงดันไฟเลี้ยงต่ํากวาที่กําหนดหรือเรียกวา บราวนเอาตดีเท็ค (Brown-out detect :BOD) หากพบวาไฟเลี้ยงของไมโครคอนโทรลเลอรต่ําลงถึงจุดที่กําหนดก็จะกําเนิดสัญญาณรีเซ็ตภายในสงไปยังสวนประมวลผลกลาง เพื่อเริ่มตนการทํางานใหม ถาหากไฟเลี้ยงกลับมาอยูในระดับปกติระบบจะสามารถปฏิบัติงานตอไปไดอยางไมติดขัด การใชบราวนเอาตดีเท็คจะชวยแกปญหาไมโครคอนโทรลเลอรทํางานผิดพลาดหรือหยุดการทํางานจากความไมสม่ําเสมอของไฟเลี้ยง ดังนั้นเงื่อนไข คือ ตองมีไฟเลี้ยงปกติ 5 โวลต หรือไมต่ํากวา 3.7 โวลต
รูปที่ 3.4 วงจรแหลงจายไฟ
BRIDGE1
BRIDGE
12
CON21
18VACC112200uF
C10
0.1uF5V
+14V
C9 0.1uF
C7
0.1uF +
100uFC6
+
100uFC8
5DIODE
+24V
J2
JACK-DC
IN1 OUT 3
GN
D2
IC?
7805
IN1 OUT 3
GN
D2
IC?
78XX
3.3 การออกแบบซอฟตแวร
การออกแบบซอฟตแวรแบงเปน 2 สวน มีดังนี้1. โปรแกรมการทํางาน2. สวนติดตอกับผูใช
3.3.1 โปรแกรมการทํางาน
ในสวนติดตอกับผูใชไดใชโปรแกรม Microsoft visual studio 8 สรางโปรแกรมสําหรับใชงานกับ PLC ที่สรางขึ้น เรียกโปรแกรมนี้วา “PLC PROGRAM” เขียนโดยใชภาษาซีชารปเมื่อเรากดปุมรันที่โปรแกรม โปรแกรมจะทําการแปลงขอมูลที่ผูใชทําการเลือกลงไปในโปรแกรมเปนภาษาซีที่ใชสําหรับโปรแกรม CCSC.exe ใชสําหรับเขียนไมโครคอนโทรลเลอร PIC18F4550 และทําการเรียกโปรแกรม CCSC.exe มาคอมไพลใหเปน File.hex โดยมีบล็อกไดอะแกรมการทํางานของโปรแกรม ดังนี้
รูปที่ 3.5 บล็อคไดอะแกรมการทํางานของโปรแกรม
3.3.2 สวนติดตอกับผูใช
1.สวนอินพุต มีพอรตอินพุตใหเลือกใชงานทั้งหมด 12 อินพุต สามารถเลือกใชงานไดครั้งละหลายอินพุต
โดยสามารถนําอินพุตมาดําเนินการ And หรือ Or (Boolean logic) กันไดตามตองการเมื่อเลือกไดแลวกด Add อินพุตที่เราตองการใชไปที่ชองอินพุต
2.สวนเอาตพุต มีพอรตเอาตพุตใหเลือกทั้งหมด 8 เอาตพุต สามารถเลือกใชงานไดครั้งละหลายเอาตพุต
แตละเอาตพุตสามารถกําหนดคา Delay ไดตามตองการของผูใช3.การทํางานของสวนติดตอกับผูใช การทํางานของโปรแกรมจะทํางานเปนขั้นตอนและทํางานเปนลําดับเทานั้นโดยการเลือก
อินพุตที่จะใหทํางานและเลือกตัวดําเนินการ And (And Operator) ของอินพุตหรือตัวดําเนินการ Or (Or Operator) ของอินพุตแลวกดสงคาไปที่หนาจอแสดงผลสามารถเคลียร (Clear) คําสั่งอินพุตไดถา
ภาษาซีชารปPLC PROGRAM
ภาษาซีFile.c
File.hex
กําหนดคาผิด และกําหนดคาเอาตพุต และกําหนดใหเอาตพุตสามารถ Delay ไดสามารถสั่งไดหลายขั้นตอนตามความตองการของผู ใช เมื่อกดปุมรันจะทําให เปน File.hex เพื่อ เตรียมเบิรนลงไปไมโครคอนโทรลเลอร (PIC 18F4550)
4. Flowchart แสดงการทํางานของสวนติดตอกับผูใช
รูปที่ 3.6 Flowchart สวนติดตอกับผูใช
No
Yes
PLC.hex
END
Yes
Press “RUN”
Press“Ando”
Save SelectionNo
Select inputs
Start
Set Boolean logic
Set Output
Press “Add”
Set Delay
Show info
3.4 รูปแบบซอฟตแวร
แสดงลักษณะรูปแบบโปรแกรมที่ใชกับเครื่อง PLC ดังรูปที่ 3.7
การปอนพอรตอินพุตหลายอินพุตโดยเลือกตัวดําเนินการ AND หรือ OR กันทางบูลีนลอจิก ดั งรูปที่ 3.8
รูปที่ 3.7 PLC Program
เมื่อทําการกําหนดพอรตอินพุตตามที่ตองการเสร็จแลวจึงกําหนดพอรตเอาตพุตที่ตองการใชและกําหนดคา Delay ที่ตองการใหเอาตพุต Delay ดังรูปที่ 3.9
รูปที่ 3.9 แสดงการเลือกอินพุต เอาตพุตและ Delay (ms)
เมื่อทําการกําหนดพอรตอินพุต เอาตพุต และกําหนดคา Delay เสร็จแลวทําการกดปุม Add เปนขั้นตอนที่ 1 ซึ่งถาผูใชตองการใหทําหลายๆขั้นตอนตามตองการกําหนดใหปอนคําสั่งเพิ่มโดยทําตามขั้นตอนเดิม ดังรูปที่ 3.10
รูปที่ 3.8 แสดงการเลือกพอรตอินพุต
รูปที่ 3.10 แสดงการ Add อินพุตและเอาตพุตที่ผูใชตองการตามขั้นตอนที่กําหนด
เมื่อ Add คําสั่งตามที่ตองการแลวกดปุมรัน PLC program จะเรียกโปรแกรมคอมไพล ไฟล PLC.c ใหเปน PLC.hex ดังรูปที่ 3.11
รูปที่ 3.11 เมื่อกดปุมรันโปรแกรมจะทําการคอมไพลคําสั่งเปน File.hex (CCSC Compiler by Palitroquez)
เมื่อกดรันแลวจะได PLC.hex ดังรูป 3.12
รูปที่ 3.12 File.hex ที่ไดจากการ Compile program
บทที่ 4
ผลการทดลองและการอภิปรายผลการทดลอง
4.1 การทดลองการควบคุมไฟจราจร
วิธีการใชโปรแกรมอธิบายจากการทดสอบการควบคุมไฟจราจร คือ ควบคุมการติดดับของไฟแดง ไฟเหลือง และไฟเขียวโดยใหไฟแดงทํางานเปนเวลา 10 วินาที และหยุดการทํางานขั้นตอนตอไป คือ ไฟเหลืองทํางานเปนเวลา 6 วินาที และหยุดการทํางาน และขั้นตอนตอไป คือ ไฟเขียวทํางานเปนเวลา 10 วินาที และหยุดการทํางานทํางานวนรอบไปเรื่อยๆจะกวาจะทําการโปรแกรมเขาไปใหม โดยมีขั้นตอนการทดลองดังนี้
1. ปอนโปรแกรมใหอินพุต A0 และ A1 ทําการดําเนินการ AND (And Operator) กันทางลอจิก (ถาสั่งพอรตไหนใหทํางานใหอินพุตหรือเอาตพุตนั้นเปนลอจิก High) และเลือกพอรต D7 ใหเปนเอาตพุตไฟแดงและใหไฟแดงทํางานเปนเวลา 10 วินาทีกําหนดชอง Delay 10000 ms เพราะมีหนวยเปน ms (ปฏิบัติตามขั้นตอนในการปอนโปรแกรม ดังรูปท่ี 4.1)
รูปที่ 4.1 PLC PROGRAM
รูปที่ 4.2 การ Add อินพุตโดยพอรต A0 และ A1 ทําการดําเนินการ AND กันทางลอจิก
รูปที่ 4.3 กําหนดเอาตพุตพอรต D7 และกําหนดคา Delay
รูปที่ 4.4 ปุมAdd ถูกกดจะปรากฏขอมูลที่ผูใชกําหนดดานซายมือเปนขั้นตอนที่ 1
2. เลือกพอรต D6 ใหเปนเอาตพุตไฟเหลืองและกําหนดใหไฟเหลืองทํางานเปนเวลา 6 วินาทีกําหนดชอง Delay 6000 ms เพราะมีหนวยเปนมิลลิวินาที แลวปุม Add ถูกกดจะปรากฏจอแสดงผลดานซายมือ (ปฏิบัติตามขั้นตอนในการปอนโปรแกรม ดังรูปที่ 4.5)
รูปที่ 4.5 กําหนดพอรต D6 และกําหนดคา Delay 6 วินาที เมื่อปุม Add ถูกกดเปนขั้นตอนที่ 2
3. กําหนดพอรต D4 ใหเปนเอาตพุตไฟเขียวและใหไฟเขียวทํางานเปนเวลา 10 วินาทีกําหนดคา Delay 10000 ms เพราะหนวยเปน ms เมื่อปุม Add ถูกกด ขอมูลที่ถูกปอนจะปรากฏอยูจอแสดงผลดานซายมือ (ปฏิบัติตามขั้นตอนในการปอนโปรแกรม ดังรูปที่ 4.6)
รูปที่ 4.6 กําหนดพอรต D4 กําหนดคาคา Delay 10 วินาทีเมื่อปุม Add ถูกกดเปนขั้นตอนที่ 3
4. เมื่อทําการปอนคําสั่งไดตามขั้นตอนที่ตองการและปุมรัน (Run) ถูกกดโปรแกรมจะคอมไพลโปรแกรมใหเปน File.hex เพื่อเบิรนใส PIC18F4550 แลวนําไปใชงานได (ปฏิบัติตามขั้นตอนดังรูปที่ 4.7)
รูปที่ 4.7 File.hex สําหรับเบิรนใส PIC18F4550
5. เมื่อได File.hex นําไปเบิรนลง PIC18F4550 โดยใชโปรแกรม Winpic800 เปดโปรแกรมWinpic800 และกดปุมเลือกโหมดรันที่บอรดโปรแกรมเมเบิลลอจิกไมโครคอนโทรลเลอรจะมีปุมเลือกโหมดถาเลือกโหมดรันหลอดไดโอดเปลงแสงสีแดง (LED) จะทํางาน (ปฏิบัติตามขั้นตอนดังรูปที่ 4.8)
รูปที่ 4.8 กดสวิตซเลือกโหมดรันเพื่อเบิรน PIC18F4550
6. เมื่อเปดโปรแกรมแลวใหกดปุม Detect วาตรงกับ PIC ที่ผูใชกําหนด
รูปที่ 4.9 กดปุม Detect เพื่อตรวจหา PIC18F4550
กดปุมDetect
ปุมกดเลือกโหมด
หลอดไดโอดเปลงแสงสีแดงทํางาน
7. กดปุม Erase เพื่อทําการลบโปรแกรมที่มีอยูใน PIC18F4550 เพื่อทําการเบิรนโปรแกรมลงไปอีกครั้ง
รูปที่ 4.10 กดปุม Erase เพื่อลบขอมูลใน PIC18F4550
8.เปดหนาตาง Open ขึ้นมาเพื่อเลือก File ชื่อ PLC.hex แลวกด Open
รูปที่ 4.11 กดปุมเปดแฟมเพื่อเลือก PLC.hex
กดปุมErase
9. เมื่อเลือกแฟม และกดปุม Setting เพื่อทําการตั้งคา
รูปที่ 4.12 กําหนดที่ Setting
10. เลือกเครื่องหมายถูกที่ชอง CP2, CP3, CPD, EBTR2, EBTR3, LVP ออก
รูปที่ 4.13 รูปการเลือกเครื่องหมายถูกออก
etect
เลือก Setting
etect
11. กดปุม Program All เสร็จสิ้นการเบิรน
รูปที่ 4.14 กดปุม Program All
12. เปลี่ยนโหมดมาเปนโหมดโปรแกรมโดยกดปุมที่เครื่องโปรแกรมเมเบิลลอจิกไมโครคอนโทรลเลอรใหหลอดไดโอดเปลงแสงเปนสีเขียว
รูปที่ 4.15 การเปลี่ยนเปนโหมดโปรแกรม
13. วงจรเริ่มการทํางานตามโปรแกรมที่ผูใชปอนคา
กดปุมProgram All
etect
กดปุมเปลี่ยนโหมด
หลอดไดโอดเปลงแสงสีเขียวทํางาน
etect
4.2 การทดลองการกลับทางหมุนของมอเตอรไฟตรง
การควบคุมใหมอเตอรกลับทางหมุนแบบอัตโนมัติ คือเมื่อสวิตซถูกกดมอเตอรไฟตรงหมุนไปทางซาย 10 วินาที และหมุนขวา 10 วินาที โดยปฏิบัติตามขั้นตอน ดังนี้
1. กําหนดพอรตฝงอินพุตใหเปน A0 เลือกเอาตพุตพอรต D2 และ กําหนดคา Delay 6000 ms มอเตอรทํางานโดยหมุนไปทางซาย
รูปที่ 4.16 เลือกอินพุตพอรต A0
2. เมื่อปุม Add ถูกกดจะแสดงคําสั่งทางจอแสดงผลดานซายของโปรแกรมเปนขั้นตอนที่ 1
รูปที่ 4.17 แสดงขั้นตอนที่ 1
3. เลือกเอาตพุตพอรต D7 และใหกําหนดคา Delay เปนเวลา 6 วินาที และมอเตอรทํางานโดยหมุนไปทางขวาเมื่อปอนคาที่ตองการเรียบรอยแลวกดปุม Add โปรแกรมจะแสดงขั้นตอนที่ 2 ที่จอแสดงผลดานซายมือของโปรแกรม
รูปที่ 4.18 การเลือกพอรตเอาตพุต และกําหนดคา Delay
รูปที่ 4.19 แสดงการปอนคาขั้นตอนที่ 2
4. กดปุมรันจะไดไฟลชื่อ PLC.hex5. เปดโปรแกรม Winpic800 เพื่อทําการเบิรนไฟล PLC.hex ลงใน PIC18F4550 โดยขั้นตอน
การเบิรนปฏิบัติเหมือนการควบคุมไฟจราจร6. การตอมอเตอรเขากับเทอรมินอลเอาตพุตพอรตของเครื่องพีแอลซี
4.3 ผลการทดลองการควบคุมไฟจราจร
1. เมื่อสวิตซ A0 และ A1 ซึ่งฝงอินพุตของการทดลองนํามาผานตัวดําเนินการ And คือเมื่อสวิตซที่ตอพอรต A0 ถูกกดจะเปลี่ยนสภาวะลอจิกเปน High และสวิตซที่ตอกับพอรต A1 ถูกกดจะเปลี่ยนสาภวะลอจิกเปน High สวิตซทั้งสองจะตองถูกกดเพื่อใหอยูในสภาวะทํางาน High แลวการควบคุมไฟจราจรจะเริ่มทํางาน
รูปที่ 4.20 สวิตซ A0 และ A1 ถูกกด
2. เมื่อสวิตซถูกกดพรอมกัน 2 อินพุต (การทดลองสั่งใหสวิตซนํามาผานตัวดําเนินการ AND) เอาตพุตไฟแดงทํางาน และ Delay เปนเวลา 10 วินาที
รูปที่ 4.21 ไฟจราจรสีแดงทํางาน
3. เมื่อไฟแดงทํางานเปนเวลา 10 วินาทีแลวจะดับตอมาไฟเหลืองจะทํางานเปนเวลา 6 วินาทีแลวจะหยุดทํางาน (จากการสั่งทางโปรแกรม)
รูปที่ 4.22 ไฟจราจรสีเหลืองทํางาน
4. เมื่อไฟเหลืองทํางานเปนเวลา 6 วินาที และหยุดการทํางานตอมาไฟเขียวจะทํางานเปนเวลา 10 วินาทีและจะหยุดการทํางาน (จากการสั่งทางโปรแกรม)
รูปที่ 4.23 ไฟจราจรสีเขียวทํางาน
5. เมื่อไฟเขียวหยุดทํางาน และจะวนลูป (Loop) ไปเรื่อยๆ คือเริ่มจากไฟจราจรสีแดงทํางาน 10 วินาที และหยุดการทํางานตอมาไฟจราจรสีเหลืองทํางานเปนเวลา 6 วินาที และหยุดการทํางานตอมาไฟเขียวทํางานเปนเวลา 10 วินาที และหยุดการทํางานซึ่งจะทํางานวนลูปแบบนี้ไปเรื่อยๆ จนกวาจะมีการโปรแกรมใหมหรือปดสวิตซ หรืออินพุตเขามาไมเปนไปตามที่โปรแกรมไว
4.4 ผลการทดลองการกลับทางหมุนของมอเตอรไฟตรง
1. เมื่อสวิตซที่ตออยูกับอินพุตพอรต A0 ถูกกดหลอดไดโอดเปลงแสงสีแดงที่อยูขางอินพุต A0 จะสวาง เปนลอจิก high ทํางานเมื่อมีอินพุตเขามาเอาตพุตพอรต D2 จะเปน High ทําใหมีไฟไปเลี้ยงมอเตอรทําใหมอเตอรหมุนไปทางซาย เปนเวลา 6 วินาที แลวหลอดไดโอดเปลงแสง จะดับแลวทํางานขั้นตอน ตอไป
รูปที่ 4.24 มอเตอรทํางานโดยหมุนไปทางซาย
2. เมื่อมอเตอรทํางานโดยหมุนไปทางซายเปนเวลา 6 วินาที และหยุดการทํางานพอรต D7 ฝงเอาตพุตจะทํางานเปนขั้นตอนที่ 2 หลอดไดโอดเปลงสีแดงขางเอาตพุตพอรต D7 ทํางานแสดงวารีเลยของพอรตเอาตพุต D7 ทํางานเปนผลทําใหมอเตอรทํางานโดยหมุนไปทางขวาเปนเวลา 6 วินาทีแลวหลอดไดโอดเปลงแสงจะหยุดการทํางานแสดงวารีเลยของเอาตพุตพอรต D7 หยุดทํางาน และวนลูปตามที่โปรแกรมไวจนกวาจะมีการกดรีเซต (Reset) หรือไมมีอินพุตเขามา
รูปที่ 4.25 มอเตอรทํางานโดยหมุนไปทางขวา
บทที่ 5
สรุปผลโครงงานและขอเสนอแนะ
5.1 สรุปผลโครงงาน
จากการทดลองจะเห็นวา การประยุกตใชไมโครคอนโทรลเลอรทําหนาที่เปนเมเบิลโลจิกคอนโทรลเลอร สามารถสั่งการใหไฟจราจรสามารถทํางาน หยุดการทํางาน และหนวงเวลาไดตามตองการโดยการใชไมโครคอนโทรลเลอร เพื่อเปนตัวสั่งการทํางานผาน ULN2803 เพื่อขับกระแสใหรีเลยทํางาน ตามคําสั่ง ไฟแดงทํางาน 10 วินาที และหยุดการทํางานขั้นตอนตอไป คือ ไฟเหลืองทํางานเปนเวลา 6 วินาที และหยุดการทํางาน และไฟเขียวทํางาน 10 วินาที และหยุดการทํางานโดยมีอินพุตเปนสวิตซผานตัว LTV847 เปนออปโตคัปเปลอร เพื่อเปนการแยกวงจรทางไฟฟาอยางชัดเจน และสงขอมูลไปยังไมโครคอนโทรลเลอรใหทํางานตามโปรแกรมที่กําหนด
ในการควบคุมการกลับทางหมุนของมอเตอรก็สามารถทําไดตามโปรแกรมกําหนดเปนอยางดี ผานรีเลย 2 ตัว ใหกลับทางหมุนของมอเตอรไฟตรงโดยทํางานหมุนไปทางซาย และหมุนไปทางขวาไดตามเวลาที่กําหนดใหโปรแกรม
จากการทํางานการประยุกตใชไมโครคอนโทรลเลอรทําหนาที่เปนโปรแกรมเมเบิลโลจิกคอนโทรลเลอรนั้น มีประสิทธิภาพการทํางานตรงตามวัตถุประสงคที่ผูจัดทําโครงงานกําหนดไว
5.2 ปญหาที่เกิดขึ้น
1. รีเลยที่ใชสามารถขับกระแสไดขาละ 500 mA เทานั้น จึงไมสามารถนําไปใชกับโหลดที่ตองการกระแสมากๆ ได
2. เนื่องจากไมสามารถเขียนโปรแกรมแปลงแลดเดอรไดอะแกรมเปนภาษาซีสําหรับสั่งไมโครคอนโทรลเลอรได จึงเปลี่ยนมาใชวิธีการสั่งการทํางานโดยตรงจากพอรตไมโครคอนโทรลเลอร
3. ไมสามารถรับสัญญาณอินพุตเปนสัญญาณแบบดิจิตอลไดสามารถรับไดเฉพาะสัญญาณแบบอนาลอก
5.3 ขอเสนอแนะ
1. ควรใชไอซี TIP32 แทน ULN2803 จะทําใหขับกระแสไดมากขึ้น 2. ควรคิดวิธีการเขียนโปรแกรมสั่งการทํางานเครื่องพีแอลซีเปนภาษาแลดเดอร สําหรับผูที่ตองการ
ศึกษาภาษาแลดเดอรซึ่งเปนภาษาที่นิยมใชงานกับเครื่องพีแอลซี 3. ควรปรับปรุงโครงงานใหสามารถรับอินพุตเปนสัญญาณแบบดิจิตอลได
เอกสารอางอิง
[1] สุขชาตรี ประสมสุข “PLC คอมพิวเตอรชวยงานดานอุตสาหกรรม”, dss.go.th [Online]. แหลงที่มา: http://www.dss.go.th/dssweb/st-articles/files/sti_1_2545_plc.pdf [พฤศจิกายน 2551].
[2] พรจิต ประทุมสุวรรณ “แมคคาทรอนิกส”, chontech.ac.th [online].แหลงที่มา:http://www.chontech.ac.th/~electric/html/plc.htm [พฤศจิกายน 2551].
[3] TOTAL TECHNOLOGY SUPPLY CO., LTD., tts2001.com [Online]. แหลงที่มา :http://www.tts2001.com/plcs/basicplc.htm [กันยายน 2551].
[4] Jeed “การเขียนโปรแกรมภาษาแลดเดอร”, kmitl.ac.th [online]. แหลงที่มา:http://webserv.kmitl.ac.th/~taweepolsuesut/plcbook/chap6.pdf [สิงหาคม 2551].
[5] เกริก ภิรมยโสภา “ไมโครคอนโทรลเลอร PIC18F4550”, mcudevzone.com [online]. แหลงที่มา:http://www.mcudevzone.com/archives/Manual/TRAINING%20PIC18F4550/TRAINING%20PIC 18F4550.pdf [พฤศจิกายน 2551].
[6] อาจารยสุรีย โปทาสาย “ออปโตคัปเปลอร”, sptc.ac.th [Online]. แหลงที่มา:http://www.sptc.ac.th/prapruet/devicesweb/books/book_16.htm [พฤศจิกายน 2551].
[7] อาจารยบัณฑิต จามรภูมิ. คูมือการใชงาน Protel Dxp [Altium Designer]. เชียงใหม: บัณฑิตเพรส,2550
[8] ดอนสัน ปงผาบ. การเขียนโปรแกรมภาษาซีในงานควบคุม. พิมพครั้งที่ 6. กรุงเทพ: สํานักพิมพ ส.ส.ท.สมาคมสงเสริมเทคโนโลยี (ไทย-ญี่ปุน), 2546
[9] ประจิน พลังสันติกุล. เรียนรูและใชงาน CCS C คอมไพเลอร. พิมพครั้งที่ 1. กรุงเทพ: บริษัทอินโนเวตีฟ เอ็กเพอริเมนต จํากัด, 2551
ภาคผนวก
ภาคผนวก ก
แผนลําดับการทํางานและโปรแกรมการทํางานของ PLC Program
แผนลําดับการทํางานการประยุกตใชไมโครคอนโทรลเลอรทําหนาที่เปนโปรแกรมเมเบิลลอจิกคอนโทรลเลอร
รูปที่ ก.1 แผนลําดับการทํางานการประยุกตใชไมโครคอนโทรลเลอรทําหนาที่เปนโปรแกรมเมเบิลลอจิกคอนโทรลเลอร
NoYes
Yes
No
PLC.hex
END
Press “RUN”
Press“Undo” Save
Select inputs
Start
Set Boolean
Set Output
Press “Add”
Set Delay
Show info
ภาคผนวก ข
โปรแกรมการทํางานการประยุกตใชไมโครคอลโทลเลอรทําหนาที่เปนโปรแกรมเมเบิลลอจิกคอนโทรลเลอร
/** Created by SharpDevelop.* User: sorn* Date: 6/2/2552* Time: 23:11* * To change this template use Tools | Options | Coding | Edit Standard Headers.*/
using System;using System.Collections.Generic;using System.Drawing;using System.Windows.Forms;using System.IO;using System.Diagnostics;namespace ControlPLC{
/// <summary>/// Description of MainForm./// </summary>
public partial class MainForm : Form{
private List<String> outText = new List<string>();private List<Storage> listStep = new List<Storage>();
public MainForm(){
//// The InitializeComponent() call is required for Windows Forms designer support.
//InitializeComponent();
//// TODO: Add constructor code after the InitializeComponent() call.//
}
void loadInputItem(){inputModel.Items.Clear();for(int i=0; i<6; i++){
inputModel.Items.Add("A"+i.ToString());}{
inputModel.Items.Add("C1"); inputModel.Items.Add("C2"); inputModel.Items.Add("C6"); inputModel.Items.Add("C4"); inputModel.Items.Add("C5");
}}void MainFormLoad(object sender, EventArgs e){
loadInputItem();}void CmdAddClick(object sender, EventArgs e){
Storage store = new Storage();String tmp = "";tmp += "\r\nOutput : ";for (int i=0;i<listOut.Items.Count ;i++ ) {
if (listOut.GetItemChecked(i)) {String tmpItem = listOut.Items[i].ToString();store.output.Add(tmpItem);tmp += tmpItem + " ";
}
}tmp += "\r\nInput : ";for (int i=0;i<listInput.Items.Count ;i++ ) {
String tmpItem = listInput.Items[i].ToString();store.input.Add(tmpItem);tmp += tmpItem + " ";
}store.delay = Convert.ToInt32(tbDelay.Text);listStep.Add(store);tmp += "\r\ndelay : " + tbDelay.Text + " ms";tmp += "\r\n-------------------\r\n";outText.Add(tmp);String[] item = outText.ToArray();tbConsole.Clear();for (int i=0;i<item.Length; i++) {
tbConsole.AppendText("Step " + (i+1).ToString());tbConsole.AppendText(item[i]);
}groupStep.Text = "Step " + (outText.Count + 1);clearValue();
}void clearValue(){
for (int i=0;i<listOut.Items.Count ;i++ ) {listOut.SetItemChecked(i,false);
}loadInputItem();listInput.Items.Clear();tbDelay.Text = "0";
}void CmdInputItemInClick(object sender, EventArgs e){
if(inputModel.SelectedIndex > -1 ){int size = listInput.Items.Count;String item = (String)inputModel.SelectedItem;if(size > 0)
listInput.Items.Add("AND");listInput.Items.Add(item);inputModel.Items.Remove(item);
}}void ListInputClick(object sender, EventArgs e){
int index = listInput.SelectedIndex;String logic = (String)listInput.SelectedItem;if (logic == "AND")
listInput.Items[index] = "OR";else if(logic == "OR")
listInput.Items[index] = "AND";}void createPlcCode(){
FileStream aFile = new FileStream("PLC.c", FileMode.Create);StreamWriter sw = new StreamWriter(aFile);sw.WriteLine("#include <18F4450.h>");sw.WriteLine("#device adc=8");sw.WriteLine("");sw.WriteLine("#FUSES NOWDT");sw.WriteLine("#FUSES WDT128");sw.WriteLine("#FUSES HS");sw.WriteLine("#FUSES NOPROTECT");sw.WriteLine("#FUSES BROWNOUT");sw.WriteLine("#FUSES BORV20");sw.WriteLine("#FUSES NOPUT");sw.WriteLine("#FUSES VREGEN");sw.WriteLine("#FUSES STVREN");sw.WriteLine("#FUSES NODEBUG");sw.WriteLine("#FUSES LVP");sw.WriteLine("#FUSES NOWRT");sw.WriteLine("#FUSES LPT1OSC");sw.WriteLine("");sw.WriteLine("#use delay(clock=20000000)");
sw.WriteLine("#use fast_io(B)");sw.WriteLine("");sw.WriteLine("#use fast_io(C)");sw.WriteLine("void main()");sw.WriteLine("{");sw.WriteLine("setup_adc_ports(NO_ANALOGS|VSS_VDD);");sw.WriteLine("setup_adc(ADC_OFF|ADC_TAD_MUL_0);");sw.WriteLine("setup_wdt(WDT_OFF);");sw.WriteLine("setup_timer_0(RTCC_INTERNAL);");sw.WriteLine("setup_timer_1(T1_DISABLED);");sw.WriteLine("setup_timer_2(T2_DISABLED,0,1);");sw.WriteLine("set_tris_a(0b11111111);");sw.WriteLine("set_tris_c(0b00111111);");sw.WriteLine("set_tris_d(0x00);");sw.WriteLine("output_d(0);");sw.WriteLine("while (TRUE){");foreach(Storage s in listStep){
if(s.input.Count > 0){String tmpIn = "while(";foreach(String sIn in s.input){
if((sIn != "AND") && (sIn != "OR")){tmpIn += "(input(PIN_" + sIn +"))";}else {tmpIn += (sIn == "AND") ? "||" : "&&";}
}tmpIn += ");";sw.WriteLine("\t" + tmpIn);
}if(s.output.Count > 0) {
foreach(String output in listOut.Items){String outCode = "output_low(PIN_";foreach(String sOut in s.output){
if(sOut == output){outCode = "output_high(PIN_";
break;}
}//tmpOut += outCode + output + ");\n\t";sw.WriteLine("\t" + outCode + output + ");");
}//sw.WriteLine("\t" + tmpOut);
}sw.WriteLine("\tdelay_ms(" + s.delay.ToString() + ");");
}sw.WriteLine("}");sw.WriteLine("}");sw.Close();
}void CmdRunClick(object sender, EventArgs e){
createPlcCode();try{ProcessStartInfo info = new ProcessStartInfo();
info.FileName = "ccsc"; info.Arguments = "+FH I=\"C:\\Program Files\\PICC\\Devices\" PLC.c"; //MessageBox.Show(info.Arguments); Process.Start(info);
}catch(Exception){}
progress.Visible = true; progress.Maximum = 1000; for (int i = 0; i < 1000; i++) { progress.Value = i; } progress.Visible = false;
}void CmdUndoClick(object sender, EventArgs e){
if(listStep.Count > 0){int size = listStep.Count;listStep.RemoveAt(size - 1);outText.RemoveAt(size - 1);groupStep.Text = "Step " + (listStep.Count + 1).ToString();tbConsole.Clear();int i = 1;foreach(String s in outText){
tbConsole.AppendText("Step " + i.ToString());tbConsole.AppendText(s);i++;
}}
}void CmdClearInputClick(object sender, EventArgs e){
loadInputItem();listInput.Items.Clear();
}
private void inputModel_SelectedIndexChanged(object sender, EventArgs e)}
}
ภาคผนวก ค
คูมือการใชงานการประยุกตใชไมโครคอลโทลเลอรทําหนาที่เปนโปรแกรมเมเบิลลอจิกคอนโทรลเลอร
รายละเอียดของการประยุกตใชไมโครคอลโทลเลอรทําหนาที่เปน โปรแกรมเมเบิลลอจิกคอนโทรลเลอร
การประยุกตใชไมโครคอลโทลเลอรทําหนาที่เปน โปรแกรมเมเบิลลอจิกคอนโทรลเลอร ประกอบดวย สวนของโปรแกรมสั่งการทํางาน ดังรูป ค.1 สวนการเบิรนโปรแกรม ดังรูป ค.2 สวนวงจรเบิรน ดังรูป ค.3 สวนวงจรแสดงผล ดังรูป ค.4
รูปที่ ค.2 สวนการเบิรนโปรแกรม
รูปที่ ค.1 สวนของโปรแกรมสั่งการทํางาน
รูปที่ ค.3 สวนวงจรเบิรน
รูปที่ ค.4 สวนวงจรแสดงผล
วิธีการใชงานการประยุกตใชไมโครคอลโทลเลอรทําหนาที่เปนโปรแกรมเมเบิลลอจิกคอนโทรลเลอร
1.ทําการเปดโปรแกรมสั่งการทํางานของโปรแกรมเมเบิลลอจิกคอนโทรลเลอร ขึ้นมาเพื่อปอนคาคําสั่งโปรแกรมการทํางาน
2. ทําการปอนคําสั่งการใชงาน
รูปที่ ค.5 ไอคอนโปรแกรม controlPLC
รูปที่ ค.6 การปอนคําสั่งอินพุท และเอาทพุทการใชงาน
3. กดปุมรันเพื่อแปลงคําสั่งเปน file.hex 4. กดปุมโปรแกรมที่เครื่องโปรแกรมเมเบิลลอจิกคอนโทรลเลอร เปลี่ยนใหเปนหลอด
ไดโอดเปลงแสงสีแดงเพื่อทําการเบิรนโปรแกรม
5. เปดโปรแกรม WinPic800.exe ขึ้นมาเลือก file.hex เพื่อเบิรนโปรแกรม
รูปที่ ค.7 เลือกโหมดโปรแกรมเปลี่ยนเปนหลอดไดโอดเปลงแสงสีแดง
รูปที่ ค.8 ไอคอนโปรแกรม WinPic800
6. ทําการเบิรนโปรแรมลงเครื่องโปรแกรมเมเบิลลอจิกคอนโทรลเลอร
7. กดปุมรันที่ เครื่ อง โปรแกรมเมเบิลลอจิกคอนโทรลเลอร เปลี่ ยนให เปนหลอดไดโอดเปลงแสงสีเขียว เพื่อทําการรันโปรแกรม
รูปที่ ค.9 การเบิรนโปรแกรมเสร็จสมบูรณ
รูปที่ ค.10 เครื่องโปรแกรมเมเบิลลอจิกคอนโทรลเลอร ทํางานตามโปรแกรมที่สั่งไว