9
© www.thaicontrol.wordpress.com 145 บทที 21 โครงสร้างการเขียนโปรแกรม ทาง Digital แบ่ง Logic ตามหลักการทํางานได้เป็น 2 ชนิด คือ Combinational logic และ Sequential logic โดยที Combinational logic นันค่า output จะขึนอยู ่กับค่าของ Input ปัจจุบันเพียงอย่างเดียวเท่านัน ตรงกันข้ามกับ Sequential logic ทีค่า output ไม่ได้ขึนอยู ่กับค่าของ Input เพียงอย่างเดียวแต่ขึนกับสถานะ (State) ของตัวเองด้วย ดังรูปด้านล่าง ในการเขียนโปรแกรม Ladder เราสามารถเขียนได้ทังแบบ Combination logic และแบบ Sequential logic โดยมีหลักการเหมือนกันคือแบ่งการทํางานของเครืองจักรหรือกระบวนการออกเป็นส่วนย่อยๆตามฟังก์ชัการทํางาน ส่วนย่อยๆเหล่านันอาจจะทํางานเป็นอิสระหรืออินเตอร์ล็อคซึงกันและกันตามตัวอย่างด้านล่าง ตัวอย่าง เครืองใส่ผลแอ็ปเปิลลงกล่อง ประกอบด้วย 2 สายพาน คือสายพานลําเลียงผลแอ็ปเปิลและสายพานลําเลียง กล่อง โดยมีเซ็นเซอร์ SE1 นับจํานวนผลผลแอ็ปเปิลและเซ็นเซอร์ SE2 เช็คตําแหน่งของกล่อง เมือเครืองอยู ่ในโหมด Auto และพนักงานกดปุ ่ ม Start เครืองจะเริมทํางาน โดยป้ อนผลแอ็ปเปิลลงกล่อง กล่องละ 10 ผล เมือครบตามจํานวนแล้ว สายพานลําเลียงผลแอ็ปเปิล จะหยุดรอจนกว่ากล่องเปล่าเลือนเข้า มายังตําแหน่งของ เซ็นเซอร์ SE2 จากนันสายพานลําเลียงผลแอปเปิลจึงเริมทํางานอีกครัง เป็นอย่างนีเรือยไป จนกว่าพนักงานกดปุ ่ ม Stop หรือมี Alarm เกิดขึน ได้แก่ ผลแอ็ปเปิลติดขวางปากกล่อง, ไม่มีผลแอ็ปเปิลลงกล่อง หรือไม่มีกล่องป้ อนเข้า มาบนสายพาน ถ้ามี Alarm เกิดขึน พนักงานต้องกดปุ ่ ม Reset เพือรีเซ็ต Alarm จากนันให้กดปุ ่ ม Start เครืองจึงกลับมา ทํางานใหม่อีกครัง ในโหมด Manual พนักงานสามารถสังงานอุปกรณ์ได้โดยตรงจากการปุ ่ มกดควบคุมแต่ละอุปกรณ์

Allen Bradley ControlLogix PLC programming Vol I - Body R2...Allen Bradley ControlLogix PLC programming Vol I - Body R2 Author Moo Created Date 8/31/2020 9:44:11 PM

  • Upload
    others

  • View
    17

  • Download
    0

Embed Size (px)

Citation preview

  • © www.thaicontrol.wordpress.com 145

    บทที� 21 โครงสร้างการเขียนโปรแกรม ทาง Digital แบง่ Logic ตามหลกัการทํางานได้เป็น 2 ชนิด คือ Combinational logic และ Sequential logic โดยที� Combinational logic นั �นคา่ output จะขึ �นอยูก่บัคา่ของ Input ปัจจบุนัเพียงอยา่งเดียวเทา่นั �น ตรงกนัข้ามกบั Sequential logic ที�คา่ output ไมไ่ด้ขึ �นอยูก่บัคา่ของ Input เพียงอยา่งเดียวแตข่ึ �นกบัสถานะ (State) ของตวัเองด้วย ดงัรูปด้านลา่ง

    ในการเขียนโปรแกรม Ladder เราสามารถเขยีนได้ทั �งแบบ Combination logic และแบบ Sequential logic โดยมีหลกัการเหมือนกนัคือแบง่การทํางานของเครื�องจกัรหรือกระบวนการออกเป็นสว่นยอ่ยๆตามฟังก์ชั�นการทํางาน สว่นยอ่ยๆเหลา่นั �นอาจจะทํางานเป็นอิสระหรืออินเตอร์ลอ็คซึ�งกนัและกนัตามตวัอยา่งด้านลา่ง ตัวอย่าง เครื�องใสผ่ลแอ็ปเปิ�ลลงกลอ่ง ประกอบด้วย 2 สายพาน คือสายพานลาํเลยีงผลแอ็ปเปิ�ลและสายพานลาํเลยีงกลอ่ง โดยมีเซ็นเซอร์ SE1 นบัจํานวนผลผลแอ็ปเปิ�ลและเซ็นเซอร์ SE2 เช็คตาํแหนง่ของกลอ่ง เมื�อเครื�องอยูใ่นโหมด Auto และพนกังานกดปุ่ ม Start เครื�องจะเริ�มทํางาน โดยป้อนผลแอ็ปเปิ�ลลงกลอ่ง กลอ่งละ 10 ผล เมื�อครบตามจํานวนแล้ว สายพานลาํเลยีงผลแอป็เปิ�ล จะหยดุรอจนกวา่กลอ่งเปลา่เลื�อนเข้ามายงัตาํแหนง่ของ เซ็นเซอร์ SE2 จากนั �นสายพานลาํเลยีงผลแอปเปิ�ลจึงเริ�มทํางานอีกครั �ง เป็นอยา่งนี �เรื�อยไป จนกวา่พนกังานกดปุ่ ม Stop หรือมี Alarm เกิดขึ �น ได้แก่ ผลแอ็ปเปิ�ลติดขวางปากกลอ่ง, ไมม่ีผลแอ็ปเปิ�ลลงกลอ่ง หรือไมม่ีกลอ่งป้อนเข้ามาบนสายพาน ถ้ามี Alarm เกิดขึ �น พนกังานต้องกดปุ่ ม Reset เพื�อรีเซ็ต Alarm จากนั �นให้กดปุ่ ม Start เครื�องจึงกลบัมาทํางานใหมอ่กีครั �ง ในโหมด Manual พนกังานสามารถสั�งงานอปุกรณ์ได้โดยตรงจากการปุ่ มกดควบคมุแตล่ะอปุกรณ์

    http://www.thaicontrol.wordpress.com

  • © www.thaicontrol.wordpress.com 146

    โปรแกรมแบบ Combination logic เอาท์พตุของอปุกรณ์จะทํางานตามอินพตุซึ�งเราจะแบง่โปรแกรมออกเป็นสว่นยอ่ยๆ โดยใช้ Subroutine ดงันี �

    - MainRoutine เป็นรูทีนหลกัใช้ Jump ไป Subroutine ตา่งๆ - Alarm เป็นรูทีนสาํหรับเขียนเงื�อนไข Alarm ของเครื�อง - Box_Conveyor ใช้ควบคมุการทํางานของ Box conveyor - Machine_Status ใช้แสดงสถานะของเครื�อง ได้แก่ Ready, Running, Fault, Auto และ Manual - Part_Conveyor ใช้ควบคมุการทํางานของ Apple conveyor

    MainRoutine

    Alarm Routine Rung 0 -> Alarm เนื�องจากผลแอ็บเปิ�ลตดิขวางทางลงกลอ่งนานเกิน 5 วินาที Rung 1 -> รีเซ็ต Alarm และเปิดหลอดไฟแสดง Alarm

    http://www.thaicontrol.wordpress.com

  • © www.thaicontrol.wordpress.com 147

    Rung 2 -> Alarm เนื�องจากไมม่ีผลแอ็บเปิ�ลลงกลอ่งนานเกิน 20 วินาที Rung 3 -> รีเซ็ต Alarm และเปิดหลอดไฟแสดง Alarm Rung4 -> Alarm เนื�องจากไมม่กีลอ่งถกูป้อนเข้ามานานเกิน 2 วินาที Rung 5 -> รีเซ็ต Alarm และเปิดหลอดไฟเตือน Alarm

    http://www.thaicontrol.wordpress.com

  • © www.thaicontrol.wordpress.com 148

    Box_Conveyor โปรแกรมแบบ Combination logic เอาท์พตุของอปุกรณ์ทํางานตามอนิพตุดงันั �น Box_Conveyor จะทํางานเมื�อ Part_Counter นบัผลแอ็ปเปิ�ลครบแล้ว หรือยงัไมม่ีกลอ่งอยูใ่นตําแหนง่ (Box_Present มีสถานะเป็น Fault) อยา่งไรก็ตามถ้าเครื�องหยดุรัน สายพานต้องหยดุทํางานด้วย เราจงึต้องนําบิต System_Running มาตอ่อนกุรมเข้าไป สว่น Part_Counter จะถกูรีเซ็ตหลงัจากกลอ่งเคลื�อนที�พ้นเซ็นเซอร์ Box_Present แล้ว

    http://www.thaicontrol.wordpress.com

  • © www.thaicontrol.wordpress.com 149

    Machine_Status Rung 0 -> แสดงสถานะเครื�องจกัรพร้อมทํางาน (Ready) เมื�อไมม่ี Emergency Stop และ Fault เกิดขึ �น Rung 1 -> แสดงสถานะเครื�องจกัรกําลงัทํางาน (Running) เมื�ออยูส่ถานะ Ready ในโหมด Auto และกด ปุ่ ม Start Rung 2 -> รวมเงื�อนไข Fault ของเครื�อง Rung 3 -> สวิตซ์เลอืกโหมด Auto Rung4 -> สวิตซ์เลอืกโหมด Manual

    http://www.thaicontrol.wordpress.com

  • © www.thaicontrol.wordpress.com 150

    Part_Conveyor โปรแกรมแบบ Combination logic เอาท์พตุของอปุกรณ์ทํางานตามอินพตุดงันั �น Part_Conveyor ทํางานเมื�อ Part_Counter ยงันบัผลแอป็เปิ�ลไมค่รบและกลอ่งยงัอยูใ่นตาํแหนง่รับผลแอ๊บเปิ�ล อยา่งไรก็ตาม ถ้าเครื�องหยดุรัน สายพานต้องหยดุทํางานด้วย เราจึงต้องนําบิต System_Running มาตอ่อนกุรมเข้าไป

    สาํหรับโปรแกรมแบบ Sequential logic เอาท์พตุของอปุกรณ์จะทํางานตามอินพตุและ State (หรือ Step) ซึ�งแบง่โครงสร้างโปรแกรมออกเป็นสว่นยอ่ยๆ โดยใช้ Subroutine ได้ดงันี �

    - MainRoutine เป็นรูทีนหลกัใช้ Jump ไป Subroutine - Alarm เป็นรูทีนสาํหรับเขียนเงื�อนไข Alarm ของเครื�อง - Machine_Status ใช้แสดงสถานะของเครื�อง ได้แก่ Ready, Running, Fault, Auto และ Manual - Output ใช้ Step ไปสั�งงาน Output ของอปุกรณ์ตา่งๆ - State_Machine ใช้กําหนดขั �นตอน(Step) และเงื�อนการเปลี�ยน Step ของเครื�องจกัร (Transition)

    ตามตวัอยา่งมีอยู ่2 ขั �นตอนได้แก่ ขั �นตอนการเลื�อนกลอ่ง(Feed Box)และขั �นตอนการป้อนผลแอป็ เปิ�ลลงกลอ่ง (Fill Part) ดงั State diagram ด้านลา่ง สงัเกตวุา่เครื�องจกัรเข้าสูข่ั �นตอน Feed Box ได้นั �น ระบบต้องอยูใ่นสถานะ Running และเมื�อเข้าสูข่ั �นตอน Feed Box แล้วเราจะนํา Tag ของ Step ไปสั�งงาน Output เพื�อขบัสายพานของกลอ่ง จากนั �นจึงเปลี�ยนเข้าขั �นตอน Fill Part เมื�อเซ็นเซอร์ SE2 เช็ควา่มกีลอ่งอยูใ่นตาํแหนง่แล้ว ในขั �นตอน Fill Part เราจะนํา Tag ของ Step ไปสั�งงาน Output เพื�อขบัสายพานป้อนผลแอ็ปเปิ�ลและเมื�อ Counter นบัผลผลแอ็ปเปิ�ลได้ตามที�กําหนดไว้ เครื�องจะกลบัเริ�มต้นที�ขั �นตอน Feed Box อีกครั �ง สลบักนัไปเรื�อยๆ อยา่งไรก็ตามการเปลี�ยนจาก Step หนึ�งไปยงัอีก Step ต้องเปลี�ยนทีละ หนึ�ง Step และอยูใ่นสถานะ Running เทา่นั �น

    http://www.thaicontrol.wordpress.com

  • © www.thaicontrol.wordpress.com 151

    MainRoutine

    Output Rung 0 -> ถ้าอยูใ่นขั �นตอนป้อนกลอ่งและเครื�องมีสถานะ Running ให้สั�งให้ Box Conveyor ทํางาน Rung 1 -> ถ้าอยูใ่นขั �นตอนป้อนแอ๊บเปิ�ลและเครื�องมีสถานะ Running ให้สั�งให้ Apple Conveyor ทํางาน

    Feed Box

    Fill Box

    Box Present & Running

    Counter = 10 & Running

    Running

    http://www.thaicontrol.wordpress.com

  • © www.thaicontrol.wordpress.com 152

    State_Machine ใช้กําหนดขั �นตอน(Step)และเงื�อนไขการเปลี�ยน Step (Transition) สถานะของแตล่ะ Step ถกูแทนด้วยบิต(BOOL) หรือตวัเลขจํานวนเต็ม (Integer) ก็ได้ ดงันั �นรูปแบบการเขียน State ทั�วไปมีอยู ่2 วิธีคือ

    1) Latch-Unlatch ใช้กบั Step แบบบิต 2) Move ใช้กบั Step แบบจํานวนเต็ม

    แบบ Latch-Unlatch (Bool)

    แบบ Move (Integer)

    http://www.thaicontrol.wordpress.com

  • © www.thaicontrol.wordpress.com 153

    อยา่งไรก็ตาม เรามกันําใช้วธีิการเขียนโปรแกรมทั �งสองแบบมาใช้ร่วมกนั เพราะถ้าใช้ State machine เพียงอยา่งเดยีว เราต้องเขียน State ให้ครอบคลมุทกุๆเงื�อนไข ซึ�งมีจํานวนมากและวุน่วายพอควร ดงันั �นถ้าสว่นไหนมีการทํางานไมซ่บัซ้อนก็เขียนโปรแกรมแบบ Combination แตถ้่าสว่นไหนมีลาํดบัขั �นตอนที�แนน่อน ก็เขียนแบบ State machine ช่วย

    http://www.thaicontrol.wordpress.com