Menu

Show posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Show posts Menu

Messages - 108engineering

#1
สวัสดี เพื่อนชาว อิเล็กทูเดย์ ครับ ห่างหายไปนานกลับมาดูกระทู้ ยังมีเพื่อน  ๆ สนใจติดตามกันเยอะ เหมือนกันครับ
;) ;)
วันนี้เลยผมทำ คลิป วีดีโอ มาฝากครับ เป็นการใช้งานเจ้าตัว Arduino ที่เป็น Microcontroller มาเขียนโปรแกรมแบบ PLC Ladder Diagram
ชื่อ โปรแกรม SoapBox Snap ครับ ในวีดีโอ มีขั้นตอนในการ ติดตั้ง และการใช้งานครับ พอเป็นพื้นฐานให้เราได้เริ่มศึกษา กันอย่างง่ายมากครับ
ทดลองดูแล้วใช้ได้เลยทีเดียว ไปชมคลิปกันนะครับ

https://www.youtube.com/v/d0Dmm4rnvSA


;D ;D ;D ;D ;D ;D
http://www.108engineering.com
Engineering Knowledge Sharing
#2
สวัสดีทุก ๆ ท่านที่ติดตามนะครับ ต้องขอโทษด้วยครับหายไปนานครับ  8)

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

            ในวันนี้ ผมไม่ได้มาบอกให้ทุกท่าน ศึกษา PLC แต่จะมาเล่าให้ฟังว่า ท่านที่เขียน PLC นอกจากจะเจอกะ การเขียนแบบ Ladder ใน PLC แล้ว อุปกรณ์อื่น ๆ ที่เราจะไปติดต่อ ควบคุม ก็ยังหนีไม่พ้น  Text  Base เป็น ภาษา พื้นฐานเช่น ภาษาซี ภาษาเบสิค ภาษา แอสแซมบลี่ เช่นกัน

             เริ่มต้นที่เจ้า Robot  หรือ หุ่นยนต์ เป็นหุ่นยนต์อุตสาหกรรมนะครับ


       
               จากรูป เป็นหุ่นยนต์อุตสาหกรรม  6 แกน นะครับ จะเห็นได้ว่า จะมีโปรแกรมสำหรับให้เรา Simulate สำหรับการเคลื่อนที่และการ การกำหนดจังหวะการทำงาน
ต่าง ๆ จะต้องเขียนโปรแกรม  มีคำสั่ง MOVEL(เคลื่อนที่เชิงเส้น)  MOVEJ(เลื่อนที่ตามแนวหมุนแกน)  SETDO(สั่ง Output)  WAITDI (รอ Input)  อะไรประมาณนี้
ซึ่งส่วนใหญ่แล้ว Robot จะต้องติดต่อกับ PLC ดังนั้น เวลาเราทำงานด้าน Robot  เราก็จำเป็นต้อง เขียน Ladder บ้าง เขียน Text  Base บ้าง ครับ การเรียนรู้ Ladder
หรือ Text  Base นั้น ก็หนีกันไม่ออกนะครับ แต่ท่านที่ศึกษา Text  Base มาก่อน จะได้เปรียบครับ เพราะ Text  Base เขียนค่อนข้างลึกต้องเข้าใจถึง อุปกรณ์สัญญาณ
แต่ Ladder นั้นส่วนใหญ่จะ Fix  Hardware หรือ วิธีการติดต่อมาแล้ว ให้ใช้งานได้ง่ายขึ้น

                 ลองดูอีกตัวอย่าง ลองเป็นทัชสกรีน ด้านอุตสาหกรรม บ้างครับ



                 ในอุตสาหกรรม ทัชสกรีน ถูกออกแบบให้ติดต่อกับอุปกรณ์ได้หลากหลาย ผ่านสัญญาณแบบ Serial เช่น RS232 RS485 ซึ่งจะมีรูปแบบ หรือ Protocal ที่
แตกต่างกันออกไป และมีฟังก์ชันให้เราใช้ได้สบาย ๆ เช่น สร้างปุ่ม แสดงกราฟ รูปภาพ ใส่ค่าตัวเลข ตัวหนังสือ รวมถึง ทำการบันทึกค่า Data Logging แล้ว ยังมีอีกฟังก์ชัน
ที่เราจำเป็นต้องใช้งานในการทำงานบางอย่าง คือการเขียน Macro เป็นการเขี่ยนโปรแกรม บนหน้าจออีกครั้งด้วย Text  Base สามารถทำให้เราใช้งานได้อย่างเต็มประสิทธิภาพมากขึ้น  ในรูปจะเป็น ของ ภาษา ซี ครับ

                   :D นอกจากนี้ ยังมีความหลากหลาย ของการเขียนโปรแกรมให้ใช้กันอีกมากมายครับ ใน PLC เองก็ยังไม่การเขียนแบบ ST หรือ Structure Text หรือ ในการเขียนแบบ FB หรือ ฟังก์ชันบล๊อก ครับ ซึ่ง เราก็สามารถที่จะเขียน PLC  ด้วย  Text  Base ได้เช่นกันครับ เรียนรู้ไว้ ใช่ว่า ครับ  เห็นบางท่านสับสน และลังเล ที่จะเริ่มเรียนรู้จะบอกว่า ไม่ต้องลังเลครับ การเรียนรู้ ไม่มีที่สิ้นสุด ของให้เริ่มต้น ครับ ความสำเร็จอาจอยู่แค่ครึ่งทางของการเรียนรู้ทั้งชีวิตของเรา ลุย เลยครับ

เป็นกำลังใจให้ทุก ๆ การเรียนรู้ครับ  ^^"

http://www.108engineering.com
Engineering Knowledge Sharing
#3
สวัสดี สงกรานต์ สวัสดีวันปีใหม่ไทย ด้วยครับ  ;D ;D
      วันนี้พอมีเวลาหยุดยาวมาก ว่ากันต่อครับ ขอบคุณทุก ๆ ความคิดเห็นนะครับ ร่วมด้วยช่วยกันครับ วันนี้จากติดค้างมานานครับ มาดูเรื่อง หน่วยความจำ ในหน่วยประมวลผลกันครับ โดยปรกติในการประมวลผลของหน่วยประมวลผลต่าง ๆ จำเป็นอย่างยิ่งที่ต้องใช้หน่วยความจำ หรือ Memory ทั้งใน PLC และ MCU  โดยทั้ง PLC และ MCU เป็น โปรแกรมเมเบิล หรือเป็นหน่วยประมวลผลที่สามารถ โปรแกรมได้ ดั้งนั้น หน่วยความจำ จะแบ่งเป็น 2 ส่วนหลัก ๆ ในเบื้องต้นก่อนคือ หน่วยความจำของโปรแกรม และ หน่วยความจำที่ช่วยในการประมวลผล   หน่วยความจำโปรแกรม ใน MCU อาจเรียกส่วนนี้ว่า Flash Memory คือพื้นที่ในส่วนที่ เราเขียนโปรแกรมแล้วทำการโหลดโปรแกรมไปเก็บไว้นั้นเอง ใน PLC เองก็มีหน่วยความจำตรงส่วนนี้เช่นกัน และหน่วยความจำในส่วนนี้เองก็เป็นส่วนหนึ่งของข้อจำกัด ในการแบ่งรุ่นของหน่วยประมวลผล ที่มีความสามารถในการเขียนโปรแกรมได้เยอะขนาดไหนนั่นเอง  ในบางครั้ง ตัวแปรที่เป็นค่าคงที่บางอย่าง เช่น Pattern ของ การแสดงผล Dot matrix หรือ 7 Segment หรือ การแสดงผลภาพ ที่ใช้หน่วยความจำเยอะ  ๆ โปรแกรมเมอร์จะตัดสินใจเขียนไว้ในส่วนนี้บ้างเหมือนกัน เพื่อประหยัดพื้นที่ของหน่วยความจำที่ช่วยประมวลผล เปรียบได้เหมือน ตัวแปรที่เป็นค่าคงที่นั่นเอง
           อีกส่วนหนึ่งคือหน่วยความจำที่ช่วยในการประมวลผล เป็นหน่วยความจำที่เราสามารถ ให้โปรแกรมเข้าถึงได้ เขียนอ่าน ได้ ซึ่งก็จะแบ่งเป็น 2 ส่วนหลัก ๆ คือ หน่วยความจำที่ค้างค่าได้ และหน่วยความจำทั่วไปที่เมื่อเราปิดไฟแล้วข้อมูลจะหายไป ซึ่ง ทั้ง PLC และ MCU ก็มีหน่วยความจำทั้งสองนี้เหมือนกัน  ในส่วนของ MCU เราใช้ลักษณะการเขียนโปรแกรมแบบ Text Base เป็น ภาษา ซี บ้าง  Basic บ้าง การเข้าถึงหน่วยความจำเราจะใช้การประกาศ ตัวแปร เพื่อใช้เป็นตัวอย่างอิงในโปรแกรม และแน่นอน โดยพื้นฐานในการศึกษาการเขียนโปรแกรม เราก็ต้อง ไปทำความรู้จักกับ ชนิดของตัวแปร
       Bit   On/Off
       Byte   8 Bit
       Word   16 Bit
       Double   64 Bit (ทศนิยม)
       Long   64 Bit (จำนวนเต็ม)
       Float   32 Bit
       Char   16 Bit
       String   (ตัวแปรข้อความ)
       Unsigned    (นำหน้าตัวแปร ที่ไม่คิดเครื่องหมายลบ)
       ตัวอย่างเช่น
              int X;
              int Y;
              X = 20;
              Y = X - 5;
       ผลการรันโปรแกรม
           Y = 15
   
       อีกส่วนหนึ่งที่จะกล่าวถึงก็คือ หน่วยความจำของ Hardware เช่น Port Input Output ใน MCU เองเราก็ต้องทำการ ประกาศการเข้าถึง และบาง Port ก็ยังต้องกำหนด Config ในการ ทำงานของ Port นั้น ด้วย เนื่องด้วย Port นั้นถูกออกแบบให้สามารถทำงานได้หลายหน้าที่หลังจากประกาศตัวแปรแล้วเราก็สามารถ อ้างอิงชื่อของตัวแปร เพื่อ เข้าถึงข้อมูลของแต่ละหน่วยความจำได้ ในส่วนของ MCU จึงได้มีการ Include ไฟล์เพื่อ ให้ง่ายต่อการ ประกาศ หน่วยความจำ พื้นฐานของ CPU แต่ละตัวมาให้เราได้ใช้งานตรงตามชื่อก็สามารถทำให้เรา ประหยัดเวลาในการประกาศ อ้างอิงหน่วยความจำของ Hardware ไปพอสมควร   มาดูใน PLC กันบ้างครับ ใน PLC หน่วยความจำจะถูกจัดการแบ่งให้เราเรียบร้อยแล้ว ครั้งโดยทั่วไปจะแบ่งเป็นหน่วยความจำแบบ Bit และ  Word ครับ โดยใช้ตัวอักษรทำหน้า เพื่อแบ่งชนิดของหน่วยความจำและตามด้วยตัวเลขเปรียบเสมือนชื่อของหน่วยความจำ  นอกจากนี้ ช่วงของหน่วยความจำแต่ละตัว ยังเป็นช่วงแบบ Late หรือหน่วยความจำแบบค้างค่า เปรียบเสมือน เราเขียนค่าลงหน่วยความจำ EEProm ใน MCU นั้นเอง หรือ เราสามารถ จะกำหนดช่วงให้ค้างค่า หรือไม่ค้างได้ผ่าน โปรแกรม Parameter
       M0    Bit On/off
       M20   Bit On/Off
       D10   Word   (16 Bit)
       Y0   Output Bit
       X1   Input Bit
       K   (ค่าคงที่จำนวนเต็ม เช่น K5)
   
       ตัวอย่างเช่น

    --||---------------[MOV  K20 D0]    <<< X{D0} = 20;  * แก้ไข D0 K20 สลับกันครับ ^^
             |
                -----------[SUB D0 K5 D1]   <<< Y{D1} = X{D0} - 5;   
       ผลการรรันโปรแกรม
       D1 = 15

       ความรู้สึกแรก เมื่อเขียน MCU แล้ว มาเขียน PLC ทำไมตัวแปร มันประกาศ เป็นชื่อไม่ได้ แล้วเราจะจำมันได้ หรือเปล่า ถ้าเราใช้หน่วยความจำเยอะ ๆ แต่พอ ฝึนใจเขียนดู ทำให้เข้าใจว่า เมื่อเราแบ่งเป็นหน่วยความจำดังกล่าวแล้ว ทำให้เราวางแผนในการใช้งาน จัดการแบ่งช่วงต่าง ๆ ของหน่วยความจำออกก่อน  และอีกประเด็นที่สำคัญคือ การเข้าถึงจะทำได้ง่าย สามารถอ้างอิงตำแหน่งเป็นลักษณะของ Pointer หรือ Array ได้ง่าย ประเด็นที่แตกต่าง กันอย่างชัดเจนคือ  การเขียนแบบ Text Base หรือ MCU นั้นเราจะใช้การประกาศตัวแปร เป็นหลัก เพื่ออ้างอิงชนิดและการเข้าถึงหน่วยความจำ ส่วนการเขียน Ladder หรือ PLC นั้นพื้นฐานหน่วยความจำอยู่ที่เดิมที่ PLC ถึง Fix ไว้แล้ว ซึ่งถ้าเรามอง D0 D1 D2 D3 ... DXXXX หน่วยความจำเหล่านี้ Address จะต่อกัน ซึ่งก็เป็นรูปแบบ ของ Array อยู่แล้วนั่นเอง คราวนี้เวลาใช้จะใช้ รูปแบบของคำสั่ง เป็นสำคัญ
       ตัวอย่างเช่น
       MCU.
       int Data[4];
       for (i=0; i<4; i++)
       {
              Data = 20;
       }
       ผลการรันโปรแกรม
       Data[0] = 20
       Data[1] = 20
       Data[2] = 20
       Data[3] = 20

       PLC.

       --||----------[FMOV K20 D0 K4]
       ผลการรันโปรแกรม
       D0 = 20
       D1 = 20
       D2 = 20
       D3 = 20
   
       ในการศึกษาการเขียนโปรแกรม ทั้ง PLC และ MCU ก็เป็นลักษณะที่เหมือน ๆ กัน ขึ้นอยู่กับความเข้าใจของเราที่จะศึกษามันให้ลึกซึ้ง เข้าใจมันลึกขนาดไหน แต่ที่เห็นอย่างได้เปรียบคือ ท่านที่ศึกษาทั้งสองอย่าง จะทำให้มองภาพง่ายขึ้น ใน PLC เองก็จำเป็นต้องเข้าใจพื้นฐาน ในการเขียน Text Base อยู่เหมือนกัน เพราะนอกจาก PLC จะเขียนเป็น ภาษา Ladder ได้แล้ว ยังเขียนเป็น Text Base ได้อีกด้วยครับ เขียนเป็น SFC (Sequenc Function Chart) หรือ  STL (Structure Text)ก็ได้ ซึ่งก็ใช้พื้นฐานการเขียนโปรแกรม มาผสมผสานกัน ทำให้โปรแกรมเมอร์ คล่องตัวขึ้นครับ

เป็นกำลังใจให้ทุก ๆ การเรียนรู้ครับ Post นี้ก็พอเรียนรู้ ไปอีกระดับหนึ่งนะครับ ใน Post หน้า จะมาลงตัวอย่าง กันอีกทีนะครับ สุขสันต์วันสงกรานต์ครับ

http://www.108engineering.com
Engineering Knowledge Sharing
#4
 ;)       สวัสดีครับเพื่อนสมาชิกที่ติดตามบทความของ 108engineering มาโดยตลอดนะครับ สวัสดีปีใหม่ 2558 ด้วยนะครับ ช่วงที่ผ่านมายุ่ง ๆ กับการสร้างผลิตภัณฑ์ อยู่พักใหญ่ ๆ ได้มีโอกาสได้พูดคุย ปรึกษา วางแผนทำงานร่วมงานกับทีมงาน  โปรเจคนึงเป็นเครื่องอำนวยความสะดวกภายในบ้านครับ อีกโปรเจคคือเครื่องที่ใช้บริการในการซ่อมบำรุงรถ และอีกโปรเจคเป็นเครื่องมือสำหรับโรงงานอุตสาหกรรมครับ  วันนี้เลยขอลากเรื่องราวของการเขียนโปรแกรม กับการสร้างผลิตภัณฑ์ มาเล่าประสบการณ์แลกเปลี่ยนให้เพื่อนสมาชิกเพื่อเป็นแนวทางสำหรับ นักพัฒนาอย่างเรา ๆ นะครับคิดว่า เป็นประโยชน์ ไม่มากก็น้อยสำหรับเพื่อนสมาชิกที่เข้ามาอ่านนะครับ เพื่อเป็นแนวทาง รวมถึงเป็นกำลังใจให้กับ สิงโตหนุ่มอย่างคุณ ที่กำลังคิดการใหญ่อยู่นะครับ "ถ้ายังไม่สุด..อย่าหยุดที่จะคิด"  สู้ ๆ ครับสักวันต้องเป็นวันของเรา
   เริ่มต้นโปรเจคกันเลยครับ เรามาอยู่ในฐานะของ นักพัฒนากันครับสำหรับงานนี้ ดังนั้น ผมจะกล่าวถึง ส่วนที่เราเกี่ยวข้องโดยตรง ส่วน ภาพรวมของโปรเจค จะกล่าวถึงบางส่วนเท่าที่จะกล่าวได้นะครับ

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

   1 ฟังก์ชันที่เราต้องออกแบบและสร้างให้เหนือกว่าคู่แข่ง ในลำดับนี้ ต้องทำการวิเคราะห์ จุดแข็ง จุดอ่อน วิกฤต และ โอกาส (SWOT) กันอย่างเมามัน ผมเองก็ไม่ได้อยู่ในวงการของโปรเจคนี้เท่าไหร่ก็พอได้รู้อะไรลึก ๆ เกี่ยวกับผลิตภัณฑ์ มาพอสมควรครับ ในขั้นตอนนี้ เราได้เห็นภาพรวมของสินค้าตัว Top ของเรากันเลยทีเดียวครับว่าต้องมีความสามารถถึงขนาดไหนครับ ส่วนเรื่องขนาดของตลาด การวางตำแหน่งผลิตภัณฑ์ การนำสินค้าใหม่เข้าตลาด การประชาสัมพันธ์  การวางส่วนแบ่ง หรือกลยุทธทางการตลาดผมจะไม่กล่าวถึงนะครับ แต่บอกได้ว่า เริ่มต้น พร้อมกันครับ มีบริษัทที่จัดทำ Event จัดทำสื่อ ต่าง ๆ มาเป็น แพกเกจ ให้เลือก เลยครับ ตามงบตามกลุ่มเป้าหมาย รวมไปถึงการทดสอบมาตรฐาน ครับจากสถาบันต่าง ๆ ที่เข้ามาช่วยสนับสนุนให้ผลิตภัณฑ์ของเรามีความน่าเชื่อถือ และสามารถทำตลาดในบ้านเราได้ อีกอย่างที่ผมยังทึ่งคือ ทนายความ ทีมที่ปรึกษาครับ มองจุดของการจดสิทธิบัตร อนุสิทธิบัตร รวมไปถึงการใช้คำพูด หรือข้อความที่ทำให้ การจดสิทธิบัตรไม่ซ้ำ

   2 แบ่งระดับของสินค้าครับ เป็นไรที่ อืมม..  ครับ ทำไมรถยี่ห้อนึงมีกล้องมองหลัง ทำไมอีกยี่ห้อไม่ทำ ทั้งที่เป็นคู่แข่งกัน หรือ ทำไมรถรุ่น Top มี GPS แล้วรุ่นรองลงมาไม่มี... เป็นลูกเล่นของการตลาด ที่เราต้องช่วยเขาพัฒนาให้สามารถที่จะ แบ่ง Option ได้ครับ ความเป็นจริง เทคโนโลยี หรือ ฟังก์ชัน ที่เข้ามาเป็น Option นั้นเป็นเรื่องการตลาดล้วน ๆ ครับ ลูกค้าต้องตัดสินใจ แต่ในการตัดสินใจของลูกค้า ต้องเลือกว่าเป็น รุ่น Top หรือ รุ่น รอง Top เท่านั้น ไม่ให้ติดสินใจว่า เลือก ยี่ห้อ A  หรือ ยี่ห้อ B ดี ดังนั้นในการตลาดจะบอกว่า รุ่นนี้มีเพิ่มตรงนี้เข้ามาให้ เพิ่มตรงโน้นมาให้ แต่สำหรับการพัฒนาแล้วรุ่นนี้ ตัดอันนั้นออก รุ่นนี้ ตัดอันนั้นด้วยตัดอันนี้ด้วยครับ

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

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

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

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


ขอบคุณทุกท่านที่ติดตาม และขอเป็นกำลังใจให้ทุกท่าน และ ทุก ๆ การเรียนรู้ครับ
  ;) ;) 
..............................................

http://www.108engineering.com
Engineering Knowledge Sharing
#5
      สวัสดี เพื่อน ๆ ที่ติดตามอ่าน โพสของ 108engineering อีกครั้งครับ  ;) ;)   ขอบคุณ คุณ boe ด้วยนะครับที่ติดตามผมในทุก ๆ Post  ขอบคุณกำลังใจดี ๆ ใน Inbox และ หน้า webboard นี้ด้วยนะครับ
       
         หลังจากที่ได้เรียนรู้ แนวทางการเขียนโปรแกรม และการใช้งาน PLC  ไประดับหนึ่งแล้วนะครับวันนี้ ผมจะกล่าวถึงโครงสร้าง
ของ PLC และ MCU พอให้เพื่อน ๆ ได้เห็นภาพรวม เพื่อที่จะเป็นแนวทางในการศึกษาใช้งาน และ นำเอาการจัดการโครงสร้างของทั้ง PLC
และ MCU มาเป็นข้อมูลจะได้ใช้งานได้ง่ายขึ้นนะครับ    ;D
         ในแง่ของ Hardware  MCU นั้น นอกจากตัว Chip แล้วเราจะนึกถึง บอร์ดทดลอง หรือ Development Board เป็น บอร์ตที่ออกแบบมา
สำหรับทดลอง MCU ตัวนั้น ๆ โดยเฉพาะ ทำให้เรา ไม่ต้องเสียเวลา ต่อวงจรเพิ่มเติมก็ทำให้เราสามารถที่จะใช้ MCU นั้นได้ทันที ซึ่งในบ้านเรา
หลาย ๆ ค่ายก็ทำออกมาบ้าง นำเข้ามาบ้าง  เพราะ Chip MCU นั้นจำเป็นจะต้องมีวงจรภายนอกประกอบ ยกตัวอย่าง เช่น  X'Tal สำหรับสร้างจังหวะ
ในการประมวลผล R  Pull Up  หรือวงจร IC ต่าง ๆ ที่จะเข้ามาต่อพวง เพื่อเติมเต็มความสามารถของ MCU เช่น RS232  USB LAN ต่าง ๆ
ดังนั้น  การเริ่มต้น ศึกษา MCU ส่วนใหญ่เราก็จะเริ่มต้นกันที่ เลือกตัว MCU ที่เราสนใจ แล้ว ก็หาเลือก Development Board ที่ มีฟังก์ชันในการทดลอง
ครบ หรือตรงกับความต้องการของโปรเจคเรา หาข้อมูลในการศึกษาได้ง่าย ก็จัดซื้อจัดหา มาเพื่อทดลองเขียนโปรแกรม
   Development Board นั้น ออกแบบมาเพื่อวัตถุประสงค์สำหรับการเรียนรู้ และ ต้นทุนต่ำ สามารถศึกษาเรียนรู้ได้โดยทั่วไป ดังนั้น การ
ออกแบบจึงไม่ได้ คำนึงถึง เกรด ของอุปกรณ์ที่จะใช้ หรือ วงจร ที่เลือกใช้ในการออกแบบ  ว่าจะต้อง มีมาตรฐาน หรือข้อกำหนด
ที่จะนำไปใช้รวมถึง เงื่อนไขการทดสอบ เพื่อนำไปใช้งานจริง ดังนั้น Development Board นั้น จึงเหมาะสำหรับบาง โปรเจคเท่านั้น
ส่วนการพัฒนาสำหรับนักพัฒนา ที่จะสร้างสรรค์ ผลิตภัณฑ์ หรือสินค้า ต่าง ๆ  นั้น หลังจากขั้นตอนของการเขียนโปรแกรม ทดลองด้วย
Development Board แล้วนั้น ก็จะออกแบบวงจรให้เหมาะสมกับ ผลิตภัณฑ์ อีกที ซึ่งในช่วงแรกอาจจะมีต้นทุนที่สูง แต่ถ้าผลิตในจำนวน
เยอะ ก็เฉลี่ยแล้วถูกกว่า PLC แน่นอนครับ      :o

          จากที่กล่าวมาข้างต้นทำให้เราเห็นได้ว่า MCU นั้น ส่วนใหญ่ ที่เราเจอ จะมาพร้อมกับ Development Board แน่นอนถ้าพูดถึง
ต้นทุนและ ขอบข่ายของ Development Board ส่วนใหญ่เราจะทำการทดลองกันในระดับ Low Voltage  เป็น TTL  หลอดไฟ LED  ปุ่มกด ไมโครสวิสต์  และ IC
เบอร์ ต่าง ๆ ที่แต่ละบอร์ต ได้ออกแบบมาแข่งขันกัน ในต้นทุนที่เหมาะสมกับราคา และแข่งขันได้ จนกลายเป็นทางเลือกให้เรา ได้เลือกใช้งาน ได้หลากหลายขึ้น
แตกต่างจาก PLC ที่ออกแบบมาภายใต้มาตรฐานของ อุตสาหกรรม เพื่อรองรับอุปกรณ์ ต่อพวงอื่น ภายใต้มาตรฐานอุตสาหกรรม ซึ่งจะทำให้ PLC
มีราคาสูงขึ้นตามไปด้วยครับ     8)

         ในแง่ของ Software MCU นั้น บริษัท ที่จำหน่าย บอร์ด ก็จะมี โปรแกรมตัวอย่าง รวมถึง Dvier  หรือ Boot Loader หรือ .H (Include File)
มาประกอบเพื่อให้เรา สามารถใช้งาน บอร์ด ได้ง่าย ในเบื้องต้น และเนื่องด้วย Hardware ของ MCU อย่างเช่น IO หรือ Part UART นั้นมีความสามารถ
ที่จะ Config ให้สามารถใช้งานได้หลาย ๆ ฟังก์ชันในตำแหน่ง เดียวกัน เช่น จะกำหนด เป็น Input ก็ได้ หรือ Output ก็ได้ หรือใช้เป็น
ขาที่ใช้ในการสื่อสารก็ได้  ผลก็คือ Driver หรือ การกำหนด โครงสร้างของ ของโปรแกรม ให้ตรงตาม Hardware นั้น เราก็ต้องทำความเข้าใจ
ถึงโครงสร้าง Hardware  และเมื่อเรา เขียนโปรแกรมทดลองในบอร์ต แล้วจะนำไปสร้างวงจร เราเองก็ต้องถ่ายทอด โครงสร้างเหล่านี้ให้ตรง
กับโปรแกรมที่เราออกแบบไว้ด้วยถึงจะใช้งานโปรแกรมได้โดยไม่ต้องเปลี่ยน Driver หรือ Config ในโปรแกรมเราใหม่ และผมเข้าใจว่า ประเด็น
ของการ ทำ Config หรือ Driver นี้แหละที่ทำให้ มือใหม่ พลาดกันบ่อยครั้ง  เพราะเวลาเราทำการทดลองใน Development Board นั้น Drive
หรือ Boot Loader หรือ Include File ต่าง ๆ ผูกสร้างมาโดยผู้ผลิต ที่เข้าใจถึงโครงสร้างเป็นอย่างดี และ แนบมากับบอร์ตให้เราได้ใช้งานกัน
แล้วทำให้เราใช้งานกันได้ง่าย โดยข้ามผ่านการศึกษาเรียนรู้ โครงสร้างของ Hardware กับตัว Config หรือ Include ไฟล์ ต่างๆ ในเชิงลึก
ซึ่ง เข้าใจว่า จะอธิบาย กันให้เข้าใจก็ ยากอยู่พอสมควร เช่น ความสัมพันธ์ของ Register บางตัว กับขา ใช้งานบางขาของ MCU เพื่อให้ตรงกับ
บอร์ต ที่ออกแบบมา และเมื่อก็จะเกิดปัญหาขึ้น เช่น เราเคยทดลองใช้คำสั่งนี้ ฟังก์ชันนี้ มันได้ แต่ทำไมตอนนี้ มันใช้ไม่ได้ มีอะไรผิดพลาดไป
ถ้าไรไม่เข้าใจ เรื่อง Config การ Initial Register หรือการ เขียน Driver สำหรับ แต่ละ Hardware เหล่านี้ เราก็จะไม่สามารถวิเคราะห์หาสาเหตุ
ของปัญหาที่แท้จริง และก็ไม่สามารถที่จะแก้ปัญหาเหล่านั้นได้ครับ     :)

          ในส่วน PLC เนื่องด้วย Hardware ค่อนข้างจะกำหนด ตายตัว และมี Register ภายในสำหรับการเข้าถึงแบบตายตัว ดังนั้น Softwear
ของ PLC จะเข้าถึงได้ไม่ยากนัก และมีรูปแบบการเข้าถึงที่คล้าย ๆ กัน ส่วนการกำหนด Config เพื่อให้สอดคล้องกับการเปลี่ยนแปลงของ Hardware นั้น
PLC จะมี โปรแกรมเป็นลักษณะของ หน้าต่างเฉพาะ เพื่อให้สามารถ ปรับแต่ง Config ของ Hardware ที่เปลี่ยนแปลงไปให้ ตัวโปรแกรมหลัก สามารถ
เข้าถึง Regsiter ที่เพิ่มขึ้นได้  เสมือนกับการเปลี่ยนแปลง หรือแก้ไข Boot Loader  , Driver  หรือ Include File  นั่นเองครับ  ดังนั้นโดยส่วนใหญ่งาน MCU
จึงต้องศึกษา คู่กับ งานเขียนโปรแกรมบน PC  (PC Base) ควบคู่ไปด้วยเพื่อ การปรับ Config หรือ    Setting บางอย่างให้เหมาะกับแต่ละระบบ เมื่อเรานำ
MCU  ไปใช้งานครับ      :D

         ส่วนสำคัญที่จะกล่าวถึงคือ ในเมื่อ Hardware ของแต่ละ Developer นั้นไม่เหมือนกัน ดังนั้น แนวทางการศึกษา และการต่อยอด จึงทำได้ยาก
โครงสร้างของการออกแบบ Hardware และ Software หรือ ไดรเวอร์ จึงแยกกันออกไปของแต่ละ บอร์ต มีความแตกต่างกัน ดังนั้นเมื่อเรา
จะศึกษา ต่อยอด หรือศึกษาเพิ่มเติม แน่นอน เราแทบจะเริ่มต้นทำความเข้าใจเกี่ยวกับ Hardware กันใหม่เลยทีเดียว ปัญหาดังกล่าวเป็น
โจทย์สำคัญ ที่ทำให้เกิดเจ้า Arduino ขึ้นมา จะเห็นได้ว่า โครงสร้างในการทำ Hardware จะเปลี่ยนไป จากเป็น Single Board  ก็ถูกออกแบบ
ให้เป็น Multi Board เพื่อตอบสนองงานของ Developer ได้เป็นอย่างดี และ ทำการกำหนด Hardware ที่ตายตัว เพื่อง่ายต่อ การสร้าง Driver
หรือ โปรแกรมตัวอย่าง และ Function บางอย่างได้ เพราะ Hardware ที่ถูกกำหนด ตายตัว ถึงแม้จะ สร้างความลำบากที่จะไม่สามารถ ดัดแปลง
หรือ แก้ไขเพิ่มเติมเปลี่ยนแปลงได้ตามใจ เหมือน Development Board เมื่อก่อน แต่แน่นอนสิ่งที่ตามมาคือ โปรแกรมได้ง่ายขึ้น มีตัวอย่างที่
สามารถนำมาศึกษา ต่อยอด ใช้งานได้ง่ายขึ้นเยอะ ประกอบกับการหาข้อมูล ในเมื่อ Hardware ไม่แตกต่าง ตัวอย่างโปรแกรม หรือ Config Driver ต่าง ๆ
ก็สามารถหาได้ง่ายขึ้น นับว่าเป็นการก้าวหน้าไปอีกขึ้นสำหรับการศึกษา MCU ครับ   ::)

        ในครั้งต่อไป จะพาไปดูถึงข้อได้เปรียบเสียเปรียบในการจัดการ หน่วยความจำ ระหว่า MCU  และ PLC รวมถึงรูปแบบที่สอดคล้อง เพื่อนำเป็นเป็นตัวอย่าง
ศึกษา และพัฒนาปรับปรุงการออกแบบ และเขียนโปรแกรมของเราได้ครับ    

ขอบคุณทุกท่านที่ติดตาม และขอเป็นกำลังใจให้ทุกท่าน และ ทุก ๆ การเรียนรู้ครับ
  ;) ;) 
..............................................
http://www.108engineering.com
Engineering Knowledge Sharing
#6
 ;D ;D ;D  สวัสดีทุก ๆ ท่าน ครับ ขอบคุณสำหรับการติดตาม แลกเปลี่ยนความคิดเห็นครับ และให้กำลังใจกันมาจากทุก ๆ ท่านนะครับ

วันนี้ เรามาดู การเขียนโปรแกรม PLC และการ Simulate  Program PLC Mitsubishi สำหรับควบคุม ไฟจราจร กันครับ

วันนี้ มาส่งการบ้านนะครับ :D   ต้องขอโทษด้วยนะครับ เสียงใน VDO. ออกมา เหมือนอยู่ท่ามกลาง สายฝน กันเลยที่เดียวครับ :-[

ขอบคุณ suriya22 สำหรับการติดตามครับ  คุณ x-glove ดูจะเมามันเอามากนะครับ  และ คุณ boe ที่ร่วมแสดงความคิดเห็นครับ ส่วน โค้ด ผมไม่ค่อยได้เขียนนานแล้วครับ พอเป็นแนวทาง และใน  Code  C ผม มี Debounce  นะครับ ถ้าท่านใดได้ลอง โค้ด แจ้งผล กลับมาด้วยครับ ผิดพลาดยังไงต้องขออภัย ณ. ที่นี้ ด้วยครับ

http://www.youtube.com/v/nZ-Lg-CD52Y&feature=youtu.be

ขอบคุณทุกท่านที่ติดตาม และขอเป็นกำลังใจให้ทุกท่าน และ ทุก ๆ การเรียนรู้ครับ
  ;) ;) 
..............................................
http://www.108engineering.com
Engineering Knowledge Sharing
#7
 ;D ;D สวัสดีทุกท่านที่ติดตามเรามาครับ ขอบคุณทุกคำแนะนำ และติชมด้วยครับ
Counter สำหรับวงจรไฟฟ้า ก็จะสืบทอดคุณสมบัติของ Relay มาเหมือนกันครับ แต่จะ เปลี่ยนสถานะของ Contact ก็ต่อเมื่อมีการ On Coil และมีการ On ขาสัญญาณ เข้ามาครบตามจำนวนที่ตั้งไว้ครับ หน้าสัมผัสของ Counter ถึงจะทำงาน และจะหยุดทำงาน เมื่อมีการกด Reset ให้กับขา Counter



มาถึง Counter กันบ้างครั้ง Counter ก็คือ ฟังก์ชันในการนับครับ โดยทั่วไปมีหลาย เงื่อนไขด้วยกันครับ
แบ่งตามการนับ
    นับขึ้น     นับลง
แบ่งตามเงื่อนไขสัญญาณ
    ขอบขาขึ้น ขอบขาลง (X2  X4  นับทั้งขอบขาขึ้น ขอบขาลง)
แบ่งตามความถี่
    สัญญาณความถี่ต่ำ หรือ พัลล์ที่เข้ามาต่อเวลา มีจำนวนน้อย
    สัญญาณความถี่สูง หรือ พัลล์ที่เข้ามาต่อเวลา มีจำนวนมาก
แบ่งตามรูปแบบสัญญาณ
    สัญญาณ พัลล์ และ ทิศทาง เช่น ถ้า bit1 On สัญญาณที่เข้ามานับขึ้น หรือ bit1 Off สัญญาณที่เข้ามานับลง
    AB Phase เป็นการรับค่า พัลล์จาก Encoder เพื่อให้รับรู้ว่า ตอนนี้ Encoder หนุนไป ด้าน CW หรือ CCW
การประยุคก์
    ใช้ Timer ร่วมกับ Counter เพื่อ นับสัญญาณที่อยู่ภายในเวลา ในงานวัดความเร็วรอบ เป็นต้น

จะเห็นได้ว่า การใช้งาน Counter นั้นมีหลากหลายมากครับ ซึ่งใน MCU และ ใน PLC ก็ทำได้ เหมือน ๆ กัน แต่ใน PLC นั้นจะทำดีเพราะออกแบบ แยกฟังก์ชันสำหรับ Counter นี้มาโดยเฉพาะ ให้เราเลือกใช้งานกันได้ง่าย ๆ ครับรวมถึงการระบุ สเปคของการวัดสัญญาณให้ด้วยในส่วนของคำสั่ง รูปแบบ และความสามารถในการรับความถี่ ให้เราได้เลือกใช้งานกันครับ
ส่วน MCU นั้น เราจะต้องมาเขียนเองครับ ผมจะลองยกตัวอย่าง ง่าย ๆ อีกตัวนะครับ
สมมุติ  เรามี PB1 ให้เป็น X0   และ Lamp ให้เป็น Y0 
โจทย์คือ ต้องการ กดปุ่ม 3 ครั้ง  แล้วให้ Lamp  หรือ Y0 On  และให้ X1 เป็น ปุ่ม RESET ครับเมื่อกดให้ Y0 ดับ และ Reset Counter

ในการเขียน MCU เราก็จะใช้ ลักษณะของ  BackGround ForeGround เหมือนเดิมครับ
Quote
// MCU (ใช้ State  Machine )
int varDelayX0;
int varDelayX1;
int varCntX0;
int State;

void isr_timer(void) interrupt 1        // Interval 10mS.
{
    // Reload
    // To Do
    switch (State)
   {
        case 0:
                           if (X0 == 0)            // PB  Press           
                           {
                                    varDelayX0 = 0;     // Initial  Time
                                    State = 1;              // Change State to 1
                           }
                           if (X1 == 0)            // PB  Reset Press
                           {
                                     varDelayX1 = 0;     // Initial  Time
                                     State = 10;
                           }
                           break;
        case 1:
                           if (X0 == 0)            // PB  Press           
                           {
                                     varDelayX0 = varDelayX0 + 1;
                                     if (verDelayX0 >= 30)      // 10mS x 30 = 300mS.   Debounce
                                     {
                                               varCntX0 = varCntX0 +1;      // Counter UP
                                               if (varCntX0 == 3)
                                               {
                                                           Y0 = 1;                   //  LAMP ON
                                                          State = 2;               
                                               }
                                               else
                                               {
                                                          State = 2;
                                               }
                                      }   
                          }
                          else                  //PB Release    Bounce
                         {                                   
                                       State = 0;          // Change  State to 0
                          }
                         break;
      case 2:
                        if (X0 == 1)            // PB  Release         
                        {                                                           
                                      State = 0;          // Change  State to 0
                                      varDelayX0 = 0;     //Reset Counter Time
                        }
                        break;
      case 10:
                        if (X1 == 0)            // PB  Press           
                        {
                                     varDelayX1 = varDelayX1 + 1;
                                     if (verDelayX1 >= 30)      // 10mS x 30 = 300mS.   Debounce
                                     {
                                                Y0 = 0;           // LAMP OFF
                                                varCntX0 = 0; // Clear Counter
                                                State =0;
                                      }
                        }
                        else                  //PB Release    Bounce
                         {                                   
                                       State = 0;          // Change  State to 0
                          }
                         break;

        }
}

ยาวพอสมควร ในที่นี้ State แรก เราเชคว่า ปุ่ม X0  หรือ  X1 โดนกด เพราะ ผมเขียน if ไม่มี else ดังนั้น State 10 Reset จะสำคัญกว่า
ส่วนการเขียน ใน MCU เราต้องทำการ Debounce เองนะครับ ไม่งั้น กด 1 ครั้ง นับได้หลายพันครับ เร็วมาก ครับในส่วนนี้ PLC มีการกรองความถี่ ของสัญญาณ Input ไว้ให้แล้วครับดังนี้นเราจะเขียนได้ง่ายโดยไม่ต้องกังวลเรื่องของ Bounce ครับ

ส่วนใน PLC

|        X0
|------|||------------------(C0 K3)----|  // ขอบขาขึ้น X0 นับ 1 ครั้ง
|        C0                                        |
|------| |---------------------(Y0)-----|  // ครบ 3 ครั้ง Contact  C0 On
|        X1                                        |
|------| |--------------------(RST C0)-|  // กด X1 Reset Counter Contact จะ Reset ด้วย

8) 8) 8) 8) 8) 8) 8) 8)

เป็นไงกันบ้างครับ ถึงตอนนี้แล้ว ลองดูการบ้านกันดีมั๊ยครับ ผมจะตั้งโจทย์ทิ้งไว้ให้นะครับ

         

สัญญาณไฟ คนข้ามถนน ครับ

มีปุ่ม สำหรับกด ข้ามถนน  สองฝั่งครับ ให้เป็น X0  และ X1
มีไฟ แสดงผล เพื่อให้คนข้ามทราบครับ  ไฟแดง ห้ามข้าม Y0  ไฟเขียว ข้ามถนนได้ Y1
มีไฟ สำหรับแจ้งสัญญาณให้กับรถ ครับ ไฟแดง ไฟเหลือง ไฟเขียว  ให้เป็น Y10 Y11 Y12 ตามลำดับครับ (ไฟ ทำงานพร้อมกัน ทั้งซ้าย ขวา)

การทำงาน
    ในสถาวะปรกติ ให้ไฟแจ้งสัญญาณรถ เป็นเขียว และแจ้งคนข้าม เป็นแดง คือให้รถผ่านได้คนห้ามข้าม
    เมื่อมีการกดสัญญาณจากคน (ปุ่มเป็น กดติดปล่อยดับครับ) หนี่งครั้ง โปรแกรมจะเริ่มนับเวลา จนถึง 30 วินาที ให้แสดงไฟสัญญาณรถ  เปลี่ยนจาก เขียว เป็นเหลือง  และอีก 15 วินาที หลังจากนั้น เปลี่ยนจาก เหลือง เป็นแดง แล้วนับเวลาหลังจากแดงแล้ว 10  วินาที ไฟแจ้งสัญญาณ คนข้ามเปลี่ยนจาก แดง เป็นเขียว นับเวลาไปอีก 40 วินาที  ให้ไฟ ที่แจ้งสัญญาณคนข้าม เปลี่ยนเป็น  เขียวกระพริบ ทุก ๆ 1 วินาที 10 ครั้ง แล้ว จึงเปลี่ยนสัญณาณ ไฟคนข้ามเป็นสีแดง และไฟแจ้งสัญญาณรถ เป็นสีเขียว



ขอบคุณทุกท่านที่ติดตาม และเป็นกำลังใจให้ครับ   
   
..............................................
http://www.108engineering.com
Engineering Knowledge Sharing
#8
 ;D ;D  ครับ ขอบคุณ คุณ unseen ที่แนะนำ ครับต้องขอโทษด้วยครับ ผมไม่เคยใช้ เดี๋ยว จะลองดูนะครับ  :D


ขอบคุณทุกท่านที่ติดตาม และเป็นกำลังใจให้ครับ   
   
..............................................
http://www.108engineering.com
Engineering Knowledge Sharing