Uncategorized

Function Block

Function Block Diagram (FBD) เป็นภาษามาตราฐานที่ใช้เขียนโปรแกรมใน RSLogix5000 เป็นตามข้อกำหนดของ IEC 61131-3 โดยนำบล็อคคำสั่งหลายๆอัน มาเชื่อมต่อกันด้วยเส้น (Line) ลงบนแผ่นงาน (Sheet) คล้ายลอจิกไดอะแกรม ดังรูปด้านล่าง ภาษา Function Block จึงเหมาะกับระบบที่ทำงานต่อเนื่องกัน เช่น Continuous process เป็นต้น

 

FB1

Function Block ประกอบด้วย 2 ส่วนคือ อินพุต/เอาต์พุต และ โปรแกรมหรืออัลกอรึทึ่มสั่งงาน     ข้อมูลอินพุตจากอุปกรณ์หรือ Tag ส่งผ่าน Input reference (IREF) เข้าไปยังตัว Function Block เพื่อประมวลผลแล้วจึงส่งค่าออกไปยังอุปกรณ์หรือ Tag ด้วย Output reference (OREF) ในกรณีเชื่อม Function Block ที่อยู่คนละแผ่นงานหรือเชื่อม Function Block หนึ่งไปยังอีกหลายๆบล็อคคำสั่ง เราจะใช้ Output wire connection (OCON) บอกตำแหน่งต้นทางและ Input wire connection บอกปลายทางแทน คล้ายกับคำสั่ง Label

ลำดับการทำงานของบล็อคคำสั่งที่ต่อเข้าด้วยกันถูกกำหนดโดยทิศทางของข้อมูล (Data Flow) จาก input (ซ้าย)ไปยัง output(ขวา) โดยข้อมูลของ Tag ใน Input reference (IREF) จะคงค่า(Latched) ไว้จนกว่าบล็อคคำสั่งทำงานครบและส่งค่าไปยัง Tag ใน Output reference (OREF) ดังรูปด้านล่าง

FB2ถ้ามีการป้อนกลับจาก Output มายัง Input ของบล็อคคำสั่งที่มากกว่า 1 ตัวขึ้นไป จะทำให้เกิดลูบขึ้น ซึ่ง Controller ไม่สามารถรู้ได้ว่าบล็อคคำสั่งไหนจะทำงานก่อนหลัง ดังนั้น เราจึงต้องกำหนด input ที่ทำให้เกิดลูบด้วย Assume Data Available ในรูปคือ input ของบล็อคคำสั่งที่ 1 นั่นเอง

FB3

เปรียบเทียบคำสั่งภาษา Function Block Diagram และ Ladder Logic

คำสั่งของ Function Block Diagram โดยส่วนใหญ่จะมีเหมือน Ladder Logic ยกเว้นคำสั่งพิเศษบางคำสั่ง ชื่อคำสั่งต่างๆของ Function Block Diagram อาจแตกต่างไปบ้าง แต่อย่างไรก็ตามโปรแกรมที่เขียนขึ้นด้วยภาษา Function Block Diagram และ Ladder Logic สามารถทำงานให้ผลลัพธ์ออกมาเช่นเดียวกัน ดังตัวอย่างด้านล่าง

 

ชุดคำสั่ง Move/Logical

FB4

FB5

FB6

FB7

FB8

ชุดคำสั่ง Timer/Counter

FB9

FB10FB11

ชุดคำสั่ง Compare

 

FB12

FB13

ชุดคำสั่ง Compute/Math

FB14

FB15

ตัวอย่าง

โรงงานบำบัดน้ำเสียต้องสูบน้ำที่ผ่านการบำบัดแล้วออกจากบ่อพักไปยังแหล่งน้ำภายนอก โดยใช้ปั๊ม 2 ตัว (P101 และ P102) ทำงานโดยขึ้นกับความสูงของระดับน้ำซึ่งวัดจากลูกลอย ปั๊ม P101 เริ่มทำงานเมื่อระดับน้ำสูงเกิน High Level และหยุดทำงานเมื่อระดับน้ำลดลงถึง Low Level ปั๊ม P102 ทำงานเมื่อระดับน้ำสูงเกิน High High Level หรือเมื่อปั๊ม P101 มี Fault เกิดขึ้น

 

FB16

จากข้อกำหนดข้างต้น เราสามารถเขียนโปรแกรม Function Block Diagram ได้ดังนี้

 

1) คลิ๊กขวาที่ MainProgram แล้วเลือก New Routine

FB17

2) พิมพ์ชื่อ Routine ลงในช่อง Name และ เลือกภาษาที่ใช้เขียนโปรแกรมเป็น Function Block Diagram ในช่อง Type เสร็จแล้วคลิ๊กปุ่ม OK

FB18

3) คลิ๊กแท็บ Add on แล้วลากคำสั่ง Motor Starter ที่เราสร้างขึ้น มาวางบนแผ่นงาน

FB19

4) คลิ๊ก Properties button แล้วทำเครื่องหมายถูกในช่อง Vis เพื่อเลือกพารามิเตอร์ที่ต้องการแสดงบนบล็อคคำสั่ง ดังรูป

FB20

5) คลิ๊กแท็บ Tag แล้วตั้งชื่อเป็น P101และ P102 ตามลำดับ เสร็จแล้วกดปุ่ม OK

FB21

6) ปั๊ม P101 ทำงานเมื่อระดับน้ำถึง High Level ดังนั้นให้ลากคำสั่ง Input reference (IREF) ของ Tag High Level ต่อเข้าบล็อคคำสั่ง P101 ที่พารามิเตอร์ Start ดังรูป

FB22

7) ปั๊ม P101 หยุดทำงานเมื่อระดับน้ำลดต่ำกว่า Low Level (Off/0 ) ดังนั้นให้ลากคำสั่ง Input reference (IREF) ของ Tag Low Level ต่อเข้าบล็อคคำสั่ง BNOT เพื่อเปลี่ยนให้เป็น ON/1 แล้วนำเอาพุตท์ของคำสั่ง BNOT ไปต่อเข้ากับบล็อคคำสั่ง P101 ที่พารามิเตอร์ Stop

FB23

8) ลากคำสั่ง Input reference (IREF) ของ Tag P101_Aux และ P101_Reset ต่อเข้าบล็อคคำสั่ง P101 ที่พารามิเตอร์ Aux และ Reset ตามลำดับ

FB24

9) ลากคำสั่ง Output reference (OREF) ของ Tag P101_Output ต่อเข้าบล็อคคำสั่ง P101 ที่พารามิเตอร์ Out เพื่อส่งสัญญาณออกไปสตาร์ทมอเตอร์

FB25

10) ปั๊ม P102 ทำงานทันทีเมื่อระดับน้ำเกิน High High Level หรือมี Fault เกิดขึ้นที่ปั๊ม P101 และระดับน้ำสูงเกิน High Level ดังนั้นให้ลากคำสั่ง Input reference (IREF) ของ Tag High Level และ พารามิเตอร์ Fault มาต่อเข้าบล็อคคำสั่งBAND แล้วนำเอาท์พุตมาต่อกับ BOR ของ Tag High High Level ดังรูป

FB26

11) นำเอาท์พุตของบล็อคคำสั่ง BOR มาต่อกับ บล็อคคำสั่ง P102 ที่พารามิเตอร์ Start

FB27

12) ปั๊ม P102 หยุดทำงานตามเงื่อนไขเดียวกันกับ P101 ดังนั้นสามารถลากเส้นจากพารามิเตอร์ Out ของคำสั่ง BNOT ไปยังพารามิเตอร์ Start ของ P102 ได้เลย แต่เราจะใช้คำสั่ง Wire Connection แทน โดยให้นำคำสั่ง Output Wire Connector (OCON) ต่อที่ Out ของบล็อคคำสั่ง BNOT แล้วตั้งชื่อว่า Low_Level_Con1

FB28

13) นำคำสั่ง Input Wire Connector (ICON) ต่อเข้ากับบล็อคคำสั่ง P102 ที่พารามิเตอร์ Stop แล้วเลือกConnection ชื่อว่า Low_Level_Con1

FB29

14) ลากคำสั่ง Input reference (IREF) ของ Tag P102_Aux และ P102_Reset ต่อเข้ากับบล็อคคำสั่ง P102 ที่พารามิเตอร์ Aux และ Reset ตามลำดับ

FB30

15) ลากคำสั่ง Output reference (OREF) ของ Tag P102_Output ต่อเข้ากับบล็อคคำสั่ง P102 ที่พารามิเตอร์ Out เพื่อส่งสัญญาณออกไปสตาร์ทมอเตอร์

FB31

16) ตรวจสอบความถูกต้องของโปรแกรม โดยคลิ๊ก Verify Routine เป็นขั้นตอนสุดท้าย ถ้ามี Error ให้แก้ไขให้ถูกต้อง

FB32

17) Download โปรแกรม ลง Controller แล้วออนไลน์โปรแกรมเพื่อตรวจสอบการทำงาน

FB33

หากมีข้อสงสัย อีเมลล์มาถามได้ที่ thaicontrol01@gmail.com หรือ Fan Page https://www.facebook.com/thaicontrol01 ครับ

 

 

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s