Tuesday, September 14, 2010

Labview Block Diagrams



ที่ผ่านมาเราจะพบว่าเราสามารถสร้าง Front Panel ได้ให้เป็นไปตามต้องการของเรา ซึ่งไม่ใช่สิ่งที่ยากมากนักสำหรับ LabVIEW แต่สิ่งที่จะยุ่งยากมากกว่าคือการกำหนดให้สิ่งต่างๆ หรือที่เราเรียกว่า Object นั้นให้มีขั้นตอนหรือมีกระบวนการของการวิเคราะห์ต่างๆ ตามที่เราต้องการ เพราะเราจะต้องกำหนดการทำงานที่เกิดขึ้นหลังฉาก Front Panel เหล่านั้น นั่นคือหลังจากการที่เราออกแบบ GUI เรียบร้อยแล้วขั้นต่อไปก็คือการกำหนดการทำงานของ GUI เหล่านั้นนั่นเอง และส่วนที่มีหน้าที่นั้นคือ Block Diagram ในเบื้องต้นนี้เราอาจมอง Block Diagram ว่าเป็น Data Flow Chart และตัวโปรแกรมหรือ code ของ LabVIEW ก็ได้ การเขียน Block Diagram ก็คือการเขียน code ในภาษา G นั่นเอง ซึ่งก็เหมือนกับการเขียน code ในภาษา C หรือ FORTRAN นั่นเอง ความแตกต่างที่สำคัญระหว่าง code ในภาษา C หรือ FORTRAN กับ Block Diagram ใน LabVIEW ก็คือ Block Diagram นั้นพร้อมที่จะ execute หรือทำการประมวลผลตลอดเวลา นั่นคือในระหว่างที่เราสร้าง Block Diagram อยู่ LabVIEW จะตรวจสอบการทำงานของ VI อยู่ตลอดเวลา ตัวอย่างของ Block Diagram เป็นไปตามรูป
ถ้าหากเราพิจารณาองค์ประกอบใน Block Diagram เราจะพบว่าในส่วนของ Block Diagram จะมีส่วนประกอบที่สำคัญ 3 ส่วน คือ
Terminal
Node
Wire
ทั้งสามส่วนจะมีหน้าที่หลักคือการควบคุมการส่งผ่านหรือเราอาจเรียกว่าการไหลของข้อมูล (Data Flow) และกำหนดถึงวิธีการประมวลผลข้อมูล

Terminal
    ทุกครั้งที่เราสร้าง Control หรือ Indicator บน Front Panel ใน Window ของ Block Diagram จะปรากฏ Terminal ขึ้น Terminal ก็คล้ายกับสถานีของข้อมูลคือจะเป็นทั้งสถานีต้นทางของข้อมูลถ้า Terminal นั้นเป็น Terminal ของ Controls และขณะเดียวกันจะเป็นทั้งสถานีปลายทางของข้อมูลถ้า Terminal นั้นเป็น Terminal ของ Indicator
    ข้อที่ควรเข้าใจอย่างหนึ่งก็คือ Object นี้เกิดขึ้นจากการเขียนขึ้นบน Front Panel ดังนั้นเมื่อเราจะไม่สามารถลบ Terminal ออกจาก Block Diagram ได้ และถ้าหากเราจะลบ Control หรือ Indicator นั้นออกไปจาก Front Panel แล้ว Terminal เหล่านี้ก็จะหายไปจาก Block Diagram เช่นกัน สำหรับลักษณะของตัวแปรต่างๆเราจะกล่าวในบทต่อไป

Node
    Node เป็นคำที่ใช้เรียก object ที่ทำกรรมวิธีใดๆ เพื่อประมวลข้อมูลใน Block Diagram เช่นเดียวกับที่เราเขียน Flow Chart แล้วใช้สัญลักษณ์ต่างๆแทนวิธีการวิเคราะห์ข้อมูล เมื่อมีข้อมูลเข้าสู่ node สิ่งที่เกิดขึ้นภายใน node ก็จะขึ้นอยู่กับว่าจะกำหนดให้ข้อมูลที่ส่งเข้าไปนั้น จะมีการประมวลผลอย่างไร ซึ่งอาจจะเป็นการบวก ลบ คูณ หาร หาราก ยกกำลัง หรือเป็นประเภทการเปรียบเทียบข้อมูล ว่ามากหรือน้อยกว่า หรืออื่นๆ ซึ่งจะเป็นการประมวลผลทางคณิตศาสตร์ทั่วไป นอกเหนือจากนั้น node นี้จะมีส่วนที่เรียกว่า Function แบบต่างๆ ซึ่งจะเหมือนกับ Function สำเร็จรูปเช่น sine, cosine, log เป็นต้น ซึ่งก็จะเหมือนกับในภาษาที่เป็นตัวอักษรทั่วๆ ไป
    รูปต่อไปนี้แสดงถึงลักษณะของ Node และ Terminal ที่บรรจุอยู่ภายใน Block Diagram ของ LabVIEW
นอกเหนือจากการประมวลผลทางคณิตศาสตร์แล้ว เรายังมี node ประเภท Structure หรือ Control Flow อีกด้วย (ในภาษาตัวอักษร Structure Command จะเป็น คำสั่งจำพวก IF...THEN, FOR..., WHILE... เป็นต้น)

Wires
ขณะที่เรามีที่มาของข้อมูล ส่วนประมวลหรือปรับแต่งข้อมูล และส่วนแสดงผลข้อมูลเรียบร้อยแล้ว ขั้นต่อไปคือเราจะต้องสามารถควบคุมการส่งผ่านข้อมูลให้เป็นไปตามที่เราต้องการ อุปกรณ์ที่ใช้ใน LabVIEW ก็คือ การต่อสาย หรือ Wires ซึ่งจะเป็นการเชื่อมการส่งข้อมูลระหว่าง terminal หรือ node ต่างๆที่มีใน Block Diagram นี้เข้าด้วยกัน โดย wires นี้จะเป็นการกำหนดเส้นทางของข้อมูลว่าเมื่อออกจาก terminal หนึ่งแล้ว จะกำหนดการไหลไปที่ node ใดบ้าง มีลำดับเป็นอย่างไร และสุดท้ายจะให้แสดงผลที่ terminal ใดนั่นเอง ซึ่งการเชื่อมต่อสายนี้จะทำให้เราเข้าใจถึงหลักการของ Data Flow Programming ได้ดีขึ้น
    เนื่องจากข้อมูลนั้นมีหลายแบบไม่ว่าจะเป็นเลขทศนิยม, เลขจำนวนจริง, ตัวอักษร หรือค่าจริง-เท็จ (Boolean) ดังนั้นเพื่อแสดงถึงความแตกต่างของข้อมูลแต่ละแบบ LabVIEW จึงได้กำหนดให้ลักษณะของ wires สำหรับข้อมูลแต่ละแบบมีลักษณะของเส้นและสีที่แตกต่างกัน นอกจากนั้นข้อมูลแต่ละแบบดังกล่าวยังอาจมีลักษณะเป็น scalars, 1-D array, 2-D array ได้ซึ่งลักษณะของเส้นของข้อมูลแต่ละแบบก็จะแตกต่างออกไปอีก

เราจะเข้าใจหลักการของ Data Flow Programming ได้ในขณะที่เราต่อสายระหว่าง terminal และ Node ต่างๆ เข้าด้วยกัน ซึ่งหลักการทำงานของ Data Flow Programming จะต่างจากการเขียนโปรแกรมโดยใช้ตัวอักษร เพราะในโปรแกรมตัวอักษรคำสั่งจะถูกส่งเข้าสู่ส่วนประมวลผลทีละบรรทัด เพื่อการคำนวณตามลำดับบรรทัด แต่ใน Data Flow นั้น โปรแกรมจะคำนวณเมื่อมีข้อมูลส่งเข้ามาถึง Input ของ Node นั้นๆ ครบ และเมื่อข้อมูลส่งครบเข้าถึง Node นั้นแล้ว จะมีการประมวลผลและส่งค่าที่ได้ออกไปตามการต่อเชื่อมสาย การคำนวณจะเสร็จสิ้นในแต่ละรอบเมื่อข้อมูลส่งข้ามไปถึง Terminal สุดท้าย การประมวลผลไม่ได้เป็นไปตามลำดับการจัดวางคือไม่ได้ทำจากซ้ายไปขวาหรือบนลงล่าง แต่เป็นไปตามขั้นตอนการเดินทางของข้อมูลซึ่งในการเขียนโปรแกรมในเบื้องต้นผู้ที่คุ้นเคยกับภาษาตัวหนังสือโดยทั่วไปอาจจะต้องใช้เวลาสักระยะเพื่อที่จะทำความเข้าใจการทำงานของ LabVIEW

2 comments:

tonkub said...

ขอบคุณครับ

กำลังศึกษาอยู่พอดีเลย

Anonymous said...

อยากจะปรึกษาเกี่ยวกับ labview panyaphasingsri@hotmail.com

Post a Comment