Labview เป็นโปรแกรมสำเร็จรูปที่มีคำอธิบาย เทคนิคการเขียนโปรแกรมต่างๆ ใน ​​NI LabVIEW

สวัสดีเพื่อนร่วมงาน!

ในบทความสั้นๆ ผมอยากจะพูดถึงภาษาโปรแกรม LabVIEW น่าเสียดายที่ผลิตภัณฑ์ที่น่าสนใจนี้ไม่ได้รับความนิยมในวงกว้าง และฉันต้องการเติมเต็มช่องว่างที่มีอยู่ในระดับหนึ่ง

LabVIEW คืออะไร

LabVIEW เป็นหนึ่งในผลิตภัณฑ์หลักของ National Instruments ก่อนอื่น ควรสังเกตว่า LabVIEW เป็นตัวย่อที่ย่อมาจาก ห้องปฏิบัติการวาทศิลป์ วีเสมือน ฉันเครื่องมือวัด อีวิศวกรรม โต๊ะทำงาน ในชื่อแล้ว เราสามารถติดตามการวางแนวทางไปสู่การวิจัยในห้องปฏิบัติการ การวัด และการรวบรวมข้อมูล การสร้างระบบ SCADA ใน LabVIEW นั้นค่อนข้างง่ายกว่าการใช้เครื่องมือพัฒนาแบบ "ดั้งเดิม" ในบทความนี้ ฉันต้องการแสดงให้เห็นว่าขอบเขตที่เป็นไปได้ของ LabVIEW นั้นค่อนข้างกว้างขึ้น นี่เป็นภาษาโปรแกรมที่แตกต่างกันโดยพื้นฐาน หรือถ้าคุณต้องการ "ปรัชญา" ของการเขียนโปรแกรมทั้งหมด ภาษาการทำงานที่ทำให้คุณคิดต่างและบางครั้งก็มอบโอกาสที่ยอดเยี่ยมให้กับนักพัฒนา LabVIEW เป็นภาษาโปรแกรมหรือไม่? นี่เป็นปัญหาที่ถกเถียงกัน - ไม่มีมาตรฐานที่นี่เช่น ANSI C ในแวดวงนักพัฒนาแคบ ๆ เราบอกว่าเราเขียนด้วยภาษา "G" อย่างเป็นทางการ ไม่มีภาษาดังกล่าว แต่นี่คือความสวยงามของเครื่องมือพัฒนานี้: จากเวอร์ชันหนึ่งไปอีกเวอร์ชัน มีการนำเสนอโครงสร้างใหม่มากขึ้นเรื่อยๆ ในภาษา เป็นการยากที่จะจินตนาการว่าในการเกิดใหม่ของ C เช่น โครงสร้างใหม่สำหรับ for-loop จะปรากฏขึ้น และใน LabVIEW สิ่งนี้เป็นไปได้ทีเดียว
อย่างไรก็ตาม ควรสังเกตว่า LabVIEW รวมอยู่ในการจัดเรตของภาษาการเขียนโปรแกรมของ TIOBE ซึ่งครอบครอง ช่วงเวลานี้อันดับที่ 30 อยู่ระหว่าง Prologue และ Fortran

NI LabVIEW - ประวัติการสร้าง

National Instruments ก่อตั้งขึ้นในปี 1976 โดยผู้ก่อตั้งสามคน ได้แก่ Jeff Kodosky, James Truchard และ Bill Nowlin ในเมืองออสติน รัฐเท็กซัส ของสหรัฐอเมริกา ความเชี่ยวชาญหลักของบริษัทคือเครื่องมือสำหรับการวัดและระบบอัตโนมัติของการผลิต
LabVIEW เวอร์ชันแรกเปิดตัวสิบปีหลังจากก่อตั้งบริษัท - ในปี 1986 (เป็นเวอร์ชันสำหรับ Apple Mac) วิศวกรของ NI ตัดสินใจที่จะท้าทายภาษาการเขียนโปรแกรม "ดั้งเดิม" และสร้างสภาพแวดล้อมการพัฒนากราฟิกที่สมบูรณ์ เจฟฟ์กลายเป็นนักอุดมการณ์หลักของแนวทางกราฟิก เวอร์ชันใหม่ออกมาปีแล้วปีเล่า เวอร์ชันข้ามแพลตฟอร์มแรก (รวมถึง Windows) คือเวอร์ชัน 3 ที่ออกในปี 1993 เวอร์ชันปัจจุบันคือ 8.6 ซึ่งเปิดตัวเมื่อปีที่แล้ว

บริษัทมีสำนักงานใหญ่อยู่ที่เมืองออสตินจนถึงทุกวันนี้ วันนี้ บริษัท มีพนักงานเกือบสี่พันคนและสำนักงานตั้งอยู่ในเกือบสี่สิบประเทศ (มีสำนักงานในรัสเซียด้วย)

บทนำของฉันเกี่ยวกับ LabVIEW

การแนะนำ LabVIEW ของฉันเกิดขึ้นเมื่อเกือบสิบปีก่อน ฉันเริ่มทำงานภายใต้สัญญาฉบับใหม่ เจ้านายในตอนนั้นยื่นซีดีให้ฉันชุดหนึ่งพร้อมกับคำว่า "ตอนนี้คุณจะทำงานนี้" ฉันติดตั้ง LabVIEW (เป็นเวอร์ชันที่ห้า) และหลังจากลองเล่นไปสักพัก ฉันก็บอกว่าไม่มีอะไรร้ายแรงที่จะทำกับสิ่งนี้ได้ ควรใช้ Delphi "แบบเก่า" ดีกว่า ... ซึ่งเขาบอกฉันว่า - คุณไม่ได้ลิ้มรสมัน ทำงานหนึ่งหรือสองสัปดาห์ หลังจากนั้นไม่นาน ฉันจะเข้าใจว่าฉันจะไม่สามารถเขียนบนสิ่งอื่นใดนอกจาก LabVIEW ฉันตกหลุมรักภาษานี้ แม้ว่ามันจะไม่ใช่ "รักแรกพบ"

โดยทั่วไปแล้ว การเปรียบเทียบภาษาโปรแกรมแบบกราฟิกและแบบข้อความนั้นค่อนข้างยาก นี่อาจเป็นการเปรียบเทียบจากหมวดหมู่ของ "PC" กับ "MAC" หรือ "Windows" กับ "Linux" - คุณสามารถโต้แย้งได้มากเท่าที่คุณต้องการ แต่การโต้เถียงนั้นไม่มีความหมายเลย - แต่ละระบบมีสิทธิ์ที่จะมีอยู่ และแต่ละรายการจะมีทั้งผู้สนับสนุนและฝ่ายตรงข้าม นอกจากนี้ แต่ละผลิตภัณฑ์ยังมีช่องเฉพาะของตัวเองอีกด้วย LabVIEW เป็นเพียงเครื่องมือ แม้ว่าจะเป็นเครื่องมือที่ยืดหยุ่นมากก็ตาม

แล้ว LabVIEW คืออะไร?

LabVIEW เป็นสภาพแวดล้อมการพัฒนาแอปพลิเคชันกราฟิกข้ามแพลตฟอร์ม LabVIEW เป็นภาษาโปรแกรมสากลโดยพื้นฐานแล้ว และแม้ว่าบางครั้งผลิตภัณฑ์นี้จะมีความเกี่ยวข้องอย่างใกล้ชิดกับฮาร์ดแวร์ของ National Instruments แต่ก็ไม่ได้เชื่อมโยงกับเครื่องใดเครื่องหนึ่ง มีเวอร์ชันสำหรับ Windows, Linux, MacOS ซอร์สโค้ดพกพาได้ และโปรแกรมจะมีลักษณะเหมือนกันในทุกระบบ โค้ดที่สร้างโดย LabVIEW ยังสามารถดำเนินการได้ใน วินโดวส์ โมบายหรือ PalmOS (ตามความเป็นจริงควรสังเกตว่าการสนับสนุน PalmOS ถูกยกเลิกแล้ว แต่ Palm เองมีข้อตำหนิมากกว่าที่นี่) ภาษานี้สามารถใช้เพื่อสร้างระบบขนาดใหญ่สำหรับการประมวลผลข้อความ รูปภาพ และการทำงานกับฐานข้อมูลได้สำเร็จ

LabVIEW เป็นภาษาระดับสูงมาก อย่างไรก็ตาม ไม่มีอะไรขัดขวางคุณจากการรวมโมดูล "ระดับต่ำ" ในโปรแกรม LabVIEW แม้ว่าคุณต้องการใช้แอสเซมเบลอร์แทรก - เป็นไปได้เช่นกัน คุณเพียงแค่ต้องสร้าง DLL และแทรกการโทรลงในโค้ด ในทางกลับกัน ภาษาระดับสูงช่วยให้คุณดำเนินการกับข้อมูลได้อย่างง่ายดาย ซึ่งในภาษาปกติอาจต้องใช้โค้ดหลายบรรทัด (หากไม่ใช่หลายสิบบรรทัด) อย่างไรก็ตาม เพื่อความเป็นธรรม ควรสังเกตว่าการดำเนินการบางอย่างของภาษาระดับต่ำ (เช่น การทำงานกับพอยน์เตอร์) นั้นไม่ง่ายนักที่จะนำไปใช้ใน LabVIEW เนื่องจากเป็น "ระดับสูง" แน่นอน ภาษา LabVIEW มีโครงสร้างการควบคุมพื้นฐานที่มีอะนาล็อกในภาษา "ดั้งเดิม":

  • ตัวแปร (ท้องถิ่นหรือทั่วโลก)
  • การแตกแขนง (โครงสร้างกรณี)
  • สำหรับ - ลูปที่มีและไม่มีการตรวจสอบการสิ้นสุด
  • ในขณะที่วนซ้ำ
  • การดำเนินการจัดกลุ่ม

LabVIEW - คุณสมบัติของโปรแกรมและภาษา

ใน LabVIEW ได้รับการพัฒนา โมดูลซอฟต์แวร์เรียกว่า “เวอร์ชวล อินสทรูเมนท์” (Virtual Instruments) หรือเรียกง่ายๆ ว่า VI จะถูกบันทึกไว้ในไฟล์ *.vi VIs เป็นองค์ประกอบพื้นฐานที่ประกอบกันเป็นโปรแกรม LabVIEW ทุกโปรแกรม LabVIEW มี VI อย่างน้อยหนึ่งรายการ ในแง่ของภาษา C คุณสามารถวาดการเปรียบเทียบกับฟังก์ชันได้อย่างปลอดภัย โดยมีข้อแตกต่างเพียงอย่างเดียวคือใน LabVIEW ฟังก์ชันหนึ่งจะบรรจุอยู่ในไฟล์เดียว (คุณสามารถสร้างไลบรารีเครื่องมือได้ด้วย) ไม่ต้องบอกว่า VI หนึ่งสามารถเรียกจาก VI อื่นได้ โดยทั่วไป VI ทุกอันประกอบด้วยสองส่วน - บล็อกไดอะแกรมและแผงด้านหน้า บล็อกไดอะแกรมคือ รหัสโปรแกรม(แม่นยำยิ่งขึ้น การแสดงรหัสด้วยภาพกราฟิก) และแผงด้านหน้าเป็นอินเทอร์เฟซ ต่อไปนี้เป็นตัวอย่างคลาสสิกของ Hello, World!

หัวใจของ LabVIEW คือกระบวนทัศน์การไหลของข้อมูล ในตัวอย่างข้างต้น ค่าคงที่และขั้วตัวบ่งชี้เชื่อมต่อกันด้วยเส้น เส้นนี้เรียกว่าเส้นลวด คุณสามารถเรียกมันว่า "ลวด" สายนำข้อมูลจากองค์ประกอบหนึ่งไปยังอีกองค์ประกอบหนึ่ง แนวคิดทั้งหมดนี้เรียกว่า Data Flow สาระสำคัญของ Block Diagram คือโหนด (โหนด) เอาต์พุตของบางโหนดเชื่อมต่อกับอินพุตของโหนดอื่น โหนดจะเริ่มดำเนินการก็ต่อเมื่อข้อมูลทั้งหมดที่จำเป็นสำหรับการทำงานมาถึง มีสองโหนดในไดอะแกรมด้านบน หนึ่งในนั้นคือค่าคงที่ โหนดนี้เพียงพอในตัวเอง - มันเริ่มดำเนินการทันที โหนดที่สองเป็นตัวบ่งชี้ จะแสดงข้อมูลที่ค่าคงที่ผ่าน (แต่ไม่ทันที แต่ทันทีที่ข้อมูลมาถึงจากค่าคงที่)

นี่เป็นอีกเล็กน้อย ตัวอย่างที่ซับซ้อน: การบวกและการคูณของสองจำนวน ในภาษาดั้งเดิมเราจะเขียนเช่น

int a, b, ผลรวม, มัล;
//...
ผลรวม = a + b;
มัล = a*b;

นี่คือสิ่งที่ดูเหมือนใน LabVIEW:

โปรดทราบว่าการบวกและการคูณจะทำควบคู่กันไปโดยอัตโนมัติ ในเครื่องที่ใช้โปรเซสเซอร์คู่ โปรเซสเซอร์ทั้งสองจะถูกเปิดใช้งานโดยอัตโนมัติ

และนี่คือลักษณะของ while / สำหรับลูปและถ้า / แล้ว / โครงสร้างอื่น:

ตามที่กล่าวมาแล้ว องค์ประกอบทั้งหมดจะถูกดำเนินการแบบขนาน คุณไม่จำเป็นต้องคิดถึงวิธีทำให้งานเป็นแบบขนานกันเป็นหลายเธรดที่สามารถทำงานแบบขนานบนโปรเซสเซอร์หลายตัว ใน เวอร์ชันล่าสุดคุณยังสามารถระบุได้อย่างชัดเจนว่าตัวประมวลผลใดควรดำเนินการนี้หรือในขณะที่วนลูป ขณะนี้มีส่วนเสริมสำหรับภาษาข้อความที่ช่วยให้คุณสามารถรับการสนับสนุนได้อย่างง่ายดาย ระบบมัลติโปรเซสเซอร์แต่เรียบง่ายเหมือนใน LabVIEW สิ่งนี้อาจไม่ได้นำไปใช้ที่ใดก็ได้ (ฉันยังแอบไปเปรียบเทียบกับภาษาข้อความ) หากเรากำลังพูดถึงมัลติเธรดแล้ว ควรสังเกตว่านักพัฒนามีเครื่องมือให้เลือกมากมายสำหรับการซิงโครไนซ์เธรด - สัญญาณ, คิว, นัดพบ ฯลฯ

LabVIEW มีชุดองค์ประกอบมากมายสำหรับสร้างส่วนติดต่อผู้ใช้ อินเทอร์เฟซใน Delphi ถูก "โจมตี" อย่างรวดเร็วจากสิ่งใด และใน LabVIEW กระบวนการนี้เร็วยิ่งขึ้นไปอีก

การส่งมอบมาตรฐานของ LabVIEW ยังรวมถึงบล็อกสำหรับการทำงานกับไฟล์ ini, รีจิสทรี, ฟังก์ชันสำหรับการทำงานกับไบนารีและไฟล์ทดสอบ, ฟังก์ชันทางคณิตศาสตร์, เครื่องมือที่มีประสิทธิภาพสำหรับการลงจุด (และหากไม่มีในห้องปฏิบัติการ) และนอกเหนือจากความเป็นไปได้ที่กล่าวถึงแล้ว จากการเรียก DLL นั้น LabVIEW ช่วยให้คุณทำงานกับคอมโพเนนต์ ActiveX และ .net ได้ เริ่มตั้งแต่เวอร์ชันที่แปด การสนับสนุนสำหรับคลาสถูกเพิ่มเข้ามาใน LabVIEW - ภาษากลายเป็นเชิงวัตถุ การสนับสนุนที่นำไปใช้นั้นไม่สามารถเรียกได้ว่าสมบูรณ์ แต่มีคุณสมบัติหลักของภาษาเชิงวัตถุ - การสืบทอดและความหลากหลาย นอกจากนี้ ฟังก์ชันการทำงานของภาษายังสามารถขยายได้ด้วยโมดูลเพิ่มเติม เช่น NI Vision Toolkit - สำหรับการประมวลผลภาพและวิชันซิสเต็ม และอื่นๆ และด้วยความช่วยเหลือของโมดูล Application Builder คุณสามารถสร้างไฟล์ exe ที่เรียกใช้งานได้ ด้วย Internet Toolkit คุณสามารถทำงานกับ เซิร์ฟเวอร์ ftpโดยใช้ชุดเครื่องมือการเชื่อมต่อฐานข้อมูล - กับฐานข้อมูล ฯลฯ

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

เป็นเวลานานพอสมควรในขณะที่เขียนโปรแกรมใน LabVIEW ฉันเชื่อมั่นอย่างสมบูรณ์ว่า LabVIEW เป็นล่ามและบล็อกไดอะแกรมจะถูกตีความอย่างต่อเนื่องโดยเคอร์เนล หลังจากพูดคุยกับวิศวกรของ NI กลับกลายเป็นว่าไม่เป็นเช่นนั้น LabVIEW เป็นคอมไพเลอร์ (อย่างไรก็ตาม คุณภาพของการสร้างโค้ดยังเป็นที่ต้องการอีกมาก) แต่การรวบรวมเกิดขึ้น "ทันที" - ตลอดเวลาระหว่างการพัฒนาโปรแกรมพร้อมที่จะทำงานเสมอ นอกจากนี้ โค้ด LabVIEW ยังสามารถคอมไพล์เป็นไฟล์ปฏิบัติการเต็มรูปแบบที่สามารถเรียกใช้บนคอมพิวเตอร์โดยไม่ต้องติดตั้ง LabVIEW (แม้ว่าจะต้องใช้ LabVIEW Run-Time) คุณยังสามารถคอมไพล์ตัวติดตั้งแพ็คเกจการติดตั้ง ยูทิลิตี้ของบุคคลที่สามไม่จำเป็นต้องใช้ประเภท InstallShield

คำอธิบายโดยละเอียดเพิ่มเติมเกี่ยวกับคุณลักษณะของแพ็คเกจนั้นอยู่นอกเหนือขอบเขตของบทความนี้ แต่ฉันแค่แนะนำให้ลองใช้ (ลิงก์แสดงอยู่ด้านล่าง) ดังที่ผู้ยิ่งใหญ่กล่าวไว้ว่า "... ทางเดียวที่จะเชี่ยวชาญ ภาษาใหม่การเขียนโปรแกรม - เขียนโปรแกรมบนนั้น โปรแกรมเมอร์ที่มีประสบการณ์จะสามารถประเมินความรู้ที่ได้รับตามความต้องการของตนเองได้

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

ด้านคอมพิวเตอร์ มีการใช้โปรแกรม Terminal ต่างๆ ซึ่งมีหลายร้อยโปรแกรม แต่โปรแกรมเหล่านี้มีเพียงการรับและส่งข้อมูลเท่านั้น เป็นการยากที่จะประมวลผลและทำให้เห็นภาพในรูปแบบภาพ

บางคนเขียนซอฟต์แวร์ดังกล่าวด้วยตนเองในภาษาโปรแกรมบางภาษา (Delphi, C ++) โดยให้ฟังก์ชันที่จำเป็นแก่พวกเขา แต่งานนี้ไม่ใช่เรื่องง่ายคุณต้องรู้นอกจากภาษาแล้วอุปกรณ์ ระบบปฏิบัติการ, วิธีการทำงานกับพอร์ตการสื่อสาร, รายละเอียดปลีกย่อยทางเทคนิคอื่น ๆ อีกมากมายที่หันเหความสนใจจากสิ่งสำคัญ - การใช้อัลกอริทึมของโปรแกรม โดยทั่วไปแล้ว คุณจะต้องเป็นโปรแกรมเมอร์ Windows/Unix ไปพร้อมกัน

แนวคิดของเครื่องมือเสมือน (vi) แตกต่างจากเบื้องหลังของแนวทางเหล่านี้ แตกต่างอย่างมาก บทความนี้จะพูดถึง ผลิตภัณฑ์ซอฟต์แวร์ LabView โดย Nationals Instruments ฉันเพิ่งเริ่มต้นที่จะเชี่ยวชาญในผลิตภัณฑ์ที่ยอดเยี่ยมนี้ ดังนั้นฉันจึงสามารถสร้างความไม่ถูกต้องและข้อผิดพลาดได้ ผู้เชี่ยวชาญจะแก้ไข :-)) จริงๆ แล้ว LabView คืออะไร?

LabView เป็นสภาพแวดล้อมและแพลตฟอร์มการพัฒนาสำหรับการดำเนินการโปรแกรมที่เขียนด้วยภาษาการเขียนโปรแกรมแบบกราฟิก G ของ National Instruments

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

จุดประสงค์ของบทความนี้คือการแสดงให้เห็นว่าง่ายและสะดวกเพียงใดเมื่อเทียบกับการเขียนโปรแกรมแบบดั้งเดิม คุณสามารถสร้างแอปพลิเคชันสำหรับพีซีและพลังงานที่ LabView มีอยู่ (อันที่จริง เป็นที่ถกเถียงกันอยู่ เพราะในการเขียนโปรแกรมแบบดั้งเดิม บน Delphi เดียวกัน มันไม่ได้ยากกว่าที่จะทำ และในแง่ของประสิทธิภาพ ก็แทบจะแย่กว่าถ้าไม่ดีกว่า แต่สำหรับสิ่งนี้ คุณต้องศึกษา Delphi นานกว่านี้มาก ทุกอย่าง รวดเร็วและชัดเจนในแทบจะในทันที "ฉันศึกษาคู่มือสองสามเล่มและก้าวไปข้างหน้าเพื่อล้อมหน้าปัดทุกประเภท ดังนั้นสำหรับโปรแกรมเมอร์แล้ว มันก็เหมือนกับขาที่ห้าของสุนัข แต่สำหรับสหายที่อยู่ไกลจากคอมพิวเตอร์อย่างฉัน แค่นั้นแหละ ครั้งหนึ่ง ในเวลาครึ่งชั่วโมง เมื่อฉันเห็น LabView เป็นครั้งแรก ฉันได้สร้างระบบที่โหดร้ายโดยใช้การควบคุมการให้น้ำและความร้อนด้วยมือแบบบางสำหรับโรงปลูกกัญชง ด้วยตัวควบคุม PID ทุกชนิด ฉันนำโพเทนชิออมิเตอร์และเซ็นเซอร์ของแท่นวางในห้องปฏิบัติการมาให้ ช่างเทคนิคของเราและเปิดตัวหน่วยนรกนี้ และทุกอย่างทำงานได้ทันทีโดยไม่ต้องดีบั๊ก ยังไงก็ตาม อุปกรณ์ทั้งหมดของ Hadron Collider ทำงานบน LabView เช่นเดียวกับอุปกรณ์วิทยาศาสตร์จำนวนมาก หมายเหตุ DI HALT)ท้ายที่สุดแล้ว วิศวกรอิเล็กทรอนิกส์ส่วนใหญ่ไม่ชอบการเขียนโปรแกรมสำหรับพีซีใช่ไหม นี่คือสิ่งที่เรากำลังพยายามแก้ไข เพื่อไม่ให้ศึกษาม้าสุญญากาศทรงกลม เราตั้งค่าตัวเองและใช้งานง่ายๆ งานนี้ง่ายมาก แต่จากพื้นฐานนี้ คุณสามารถเข้าใจหลักการพื้นฐานของการเขียนโปรแกรมใน LabView ได้ เราจะใช้ LabView เวอร์ชัน 2010 สำหรับเวอร์ชันอื่นๆ ความแตกต่างจะน้อยมาก

งาน
เรามีบอร์ดที่มีไมโครคอนโทรลเลอร์ AVR เชื่อมต่อกับคอมพิวเตอร์ผ่าน RS232 ตัวควบคุมถูกโหลดด้วยเฟิร์มแวร์ตามที่ตัวควบคุมวัดค่าแรงดันไฟฟ้าที่หนึ่งในอินพุต ADC และส่งรหัส ADC (จาก 0 ถึง 1023) ไปยังคอมพิวเตอร์ผ่านช่องสัญญาณอนุกรม จำเป็นต้องเขียนโปรแกรมพีซีที่จะรับสตรีมข้อมูลจาก ADC, แสดงรหัส ADC, แปลงรหัส ADC เป็นค่าแรงดันเป็นโวลต์, แสดงค่าแรงดันเป็นโวลต์, วางแผนการเปลี่ยนแปลงแรงดันเมื่อเวลาผ่านไป

เนื้อเพลงน่าจะพอแล้ว มาเริ่มกันเลย!

ดังนั้นสิ่งที่เราต้องทำงาน:

  • จริงๆ แล้ว LabView เอง คุณสามารถดาวน์โหลดเวอร์ชันทดลองได้จากเว็บไซต์ NI: http://www.ni.com/trylabview/ ยัง googles โดยไม่มีปัญหา รุ่นละเมิดลิขสิทธิ์. อย่างไรก็ตามบน rutracker.org นอกเหนือจากก้นบึ้งของการละเมิดลิขสิทธิ์แล้วยังมีเวอร์ชัน Linux ที่ไม่จำเป็นต้องลงทะเบียนเลย NI ตัดสินใจที่จะพบกับโอเพ่นซอร์ส?
  • คุณต้องดาวน์โหลดส่วนประกอบ NI VISA ด้วย หากไม่มีโปรแกรมนี้ LabView จะไม่ "เห็น" พอร์ต COM บนคอมพิวเตอร์ VISA มีฟังก์ชันสำหรับการทำงานกับพอร์ตสื่อสารและอีกมากมาย คุณสามารถดาวน์โหลดได้จาก joule.ni.com ติดตั้ง LabView และ VISA การติดตั้งซอฟต์แวร์นี้เป็นมาตรฐาน ไม่มีคุณสมบัติพิเศษใดๆ

ก่อนอื่น เราต้องแน่ใจว่า VISA พบพอร์ต COM ในระบบและทำงานได้อย่างถูกต้อง คุณสามารถตรวจสอบได้ดังนี้: เรียกใช้โปรแกรมการวัดและการทำงานอัตโนมัติ มันมาพร้อมกับ LabView หากยังไม่ได้ติดตั้ง คุณสามารถติดตั้งได้ด้วยตนเอง บนดิสก์ (ภาพที่มี LabView มี)

เราได้รับสิ่งนี้:


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

ตกลง ตอนนี้เราต้องใช้การคูณจริง ไปที่แผงไดอะแกรมบล็อกและดูว่ามีการสร้างไอคอนที่เกี่ยวข้องสำหรับการควบคุมแต่ละรายการของเรา เป็นการดีที่สุดที่จะเปลี่ยนโหมดการแสดงผลในรูปแบบของเทอร์มินัลทันที ไดอะแกรมจะไม่รกมาก นอกจากในเทอร์มินัลแล้ว ประเภทของข้อมูลที่คอนโทรลทำงานด้วยจะมองเห็นได้ โดยคลิกขวาที่ไอคอนและยกเลิกการเลือกดูเป็นไอคอน ที่ด้านบนของหน้าจอ ตัวควบคุมจะอยู่ในรูปของเทอร์มินัล ที่ด้านล่างและด้านขวาจะอยู่ในรูปของไอคอน ในการกำหนดค่ามุมมองบนไดอะแกรมบล็อกเป็นเทอร์มินัลตามค่าเริ่มต้น คุณต้องเลือกรายการเมนูเครื่องมือ->ตัวเลือก เลือกบล็อกไดอะแกรมทางด้านซ้ายและยกเลิกการเลือกวางเทอร์มินัลที่แผงด้านหน้าเป็นไอคอน มีประโยชน์มากในการแสดงบริบทความช่วยเหลือ คุณสามารถแสดงด้วยชุดค่าผสม Ctrl + H หน้าต่างนี้แสดงข้อมูลเกี่ยวกับวัตถุที่เคอร์เซอร์วางทับอยู่ รายการที่มีประโยชน์มาก

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

ตอนนี้เพื่อฟื้นตัวอย่างของเราเราต้องทำตามแนวคิดนี้และให้ฟังก์ชันป้อนค่าตัวเลขที่เราตั้งค่าการควบคุมและรับผลลัพธ์จากเอาต์พุตและแสดงผล

ในการเชื่อมต่อองค์ประกอบบนบล็อกไดอะแกรม ให้ใช้เครื่องมือ Connect Wire จากแผงเครื่องมือ เลือกและวาดการเชื่อมต่อของเรา

เท่าที่เห็นก็ดูเหมือนจะไม่มีอะไรซับซ้อน แต่ในเวลาเดียวกัน LabView ช่วยให้คุณแก้ปัญหาที่ซับซ้อนได้! Ept, ระบบควบคุม TANK ถูกสร้างขึ้น! ดังนั้น.

ทีนี้มาทำสิ่งที่น่าสนใจกันดีกว่านั่นคือเราจะสร้างโวลต์มิเตอร์ที่ง่ายที่สุดซึ่งฉันได้พูดถึงในตอนต้น

แล้วเราต้องทำอย่างไร ก่อนอื่นคุณต้องกำหนดค่าและเริ่มต้นพอร์ตอนุกรม เริ่มวนซ้ำไม่สิ้นสุด ในลูปเราใช้ฟังก์ชันอ่านจากพอร์ตและรับข้อมูล มาแปลงข้อมูลเพื่อแสดงบนกราฟ คำนวณรหัส ADC ใหม่เป็นค่าแรงดันเป็นโวลต์ เมื่อออกจากลูปเราจะปิดพอร์ต
ดังนั้นในอินเทอร์เฟซของโปรแกรมของเราจะไม่มีองค์ประกอบควบคุมอื่นนอกจากปุ่มหยุด แต่จะแสดงผลเท่านั้น เราจะทำสิ่งนี้: ก่อนอื่นเราจะสร้างบล็อกไดอะแกรมจากนั้นเพิ่มองค์ประกอบที่ขาดหายไป แผงด้านหน้า แม้ว่าคุณจะต้องทำตรงกันข้าม! แต่ในกรณีนี้จะสะดวกกว่า

บนแผงไดอะแกรมบล็อก เราวางองค์ประกอบ while วนซ้ำจากแผงโครงสร้าง ซึ่งเป็นการวนซ้ำไม่สิ้นสุดของเรา เราวนพื้นที่ด้วยกรอบวงจร เพียงพอที่จะใส่เข้าไปในอัลกอริทึม มีจุดสีแดงที่มุมขวาล่าง คลิกขวาที่จุดนั้นแล้วเลือก Create Control ปุ่มหยุดจะปรากฏขึ้นที่แผงด้านหน้าทันที เมื่อคุณคลิกโปรแกรมของเราจะสิ้นสุดลง

คุณต้องสร้างการควบคุมสำหรับฟังก์ชันการเริ่มต้นพอร์ต สองอย่างเพียงพอสำหรับเรา - ความเร็วพอร์ตและชื่อพอร์ต ในทำนองเดียวกับที่เราสร้างค่าคงที่สำหรับฟังก์ชันการอ่าน เราก็สร้างตัวควบคุม RMB บนอินพุตที่จำเป็นของฟังก์ชันการเริ่มต้นและรายการ

สร้าง -> ควบคุม

สร้าง -> ควบคุม

เราสนใจสองปัจจัย: ชื่อทรัพยากรของวีซ่าและ อัตราบอด(ค่าเริ่มต้น 9600) ตอนนี้ไปที่แผงด้านหน้าและเพิ่มส่วนประกอบที่จำเป็น ได้แก่ หน้าจอการวาดกราฟและป้ายกำกับสำหรับแสดงรหัส ADC และแรงดันไฟฟ้าเป็นโวลต์
ดังนั้น องค์ประกอบเหล่านี้คือองค์ประกอบแผนภูมิรูปคลื่นจากจานสีกราฟและองค์ประกอบตัวบ่งชี้ตัวเลขสองรายการจากจานสีตัวเลข

กลับไปที่บล็อกไดอะแกรมและย้ายองค์ประกอบที่ปรากฏภายในลูป เราใกล้จะเสร็จแล้ว! สิ่งเดียวคือเรายังต้องแปลงสตริงอักขระที่มาจากเอาต์พุตของฟังก์ชัน Read ให้เป็นรูปแบบที่ตัวบ่งชี้ของเราจะแยกย่อย และยังใช้คณิตศาสตร์ที่ง่ายที่สุดในการแปลรหัส ADC เป็นโวลต์ ด้านล่างนี้เป็นภาพหน้าจอของแผงด้านหน้าและบล็อกไดอะแกรม ขั้นตอนนี้:



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


ฉันคิดว่าทุกอย่างชัดเจนหากคุณมีคำถามให้ถามในความคิดเห็น ลองคิดดูด้วยกัน :-))) ในระหว่างนี้โปรแกรมก็พร้อม

ไปที่อินเทอร์เฟซของเราและปรับแต่งกราฟเล็กน้อย เลือกค่าล่างบนแกน Y และตั้งค่าเป็น 0 เลือกค่าบนและตั้งค่าเป็น 5 ดังนั้นสเกลของเราบนแกน Y จะอยู่ในช่วง 0-5 โวลต์ เราเลือกพอร์ต COM ป้อนอัตราแลกเปลี่ยนเปิดโปรแกรมของเราโดยใช้ปุ่มที่มีลูกศรและบิดตัวต้านทานบนกระดานอย่างรุนแรงในขณะที่สังเกตผลงานของเราบนหน้าจอ คลิกที่ปุ่มหยุดเพื่อหยุดโปรแกรม

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

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

ด้านคอมพิวเตอร์ มีการใช้โปรแกรม Terminal ต่างๆ ซึ่งมีหลายร้อยโปรแกรม แต่โปรแกรมเหล่านี้มีเพียงการรับและส่งข้อมูลเท่านั้น เป็นการยากที่จะประมวลผลและทำให้เห็นภาพในรูปแบบภาพ

บางคนเขียนซอฟต์แวร์ดังกล่าวด้วยตนเองในภาษาโปรแกรมบางภาษา (Delphi, C ++) โดยให้ฟังก์ชันที่จำเป็นแก่พวกเขา แต่งานนี้ไม่ใช่เรื่องง่ายคุณต้องรู้นอกเหนือจากภาษาอุปกรณ์ของระบบปฏิบัติการวิธีทำงานกับพอร์ตการสื่อสารและรายละเอียดปลีกย่อยทางเทคนิคอื่น ๆ อีกมากมายที่หันเหความสนใจจากสิ่งสำคัญ - การใช้งานโปรแกรม อัลกอริทึม โดยทั่วไปแล้ว คุณจะต้องเป็นโปรแกรมเมอร์ Windows/Unix ไปพร้อมกัน

แนวคิดของเครื่องมือเสมือน (vi) แตกต่างจากเบื้องหลังของแนวทางเหล่านี้ แตกต่างอย่างมาก บทความนี้จะมุ่งเน้นไปที่ผลิตภัณฑ์ซอฟต์แวร์ Nationals Instruments LabView ฉันเพิ่งเริ่มต้นที่จะเชี่ยวชาญในผลิตภัณฑ์ที่ยอดเยี่ยมนี้ ดังนั้นฉันจึงสามารถสร้างความไม่ถูกต้องและข้อผิดพลาดได้ ผู้เชี่ยวชาญจะแก้ไข :-)) จริงๆ แล้ว LabView คืออะไร?

LabView เป็นสภาพแวดล้อมและแพลตฟอร์มการพัฒนาสำหรับการดำเนินการโปรแกรมที่เขียนด้วยภาษาการเขียนโปรแกรมแบบกราฟิก G ของ National Instruments

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

จุดประสงค์ของบทความนี้คือการแสดงให้เห็นว่าง่ายและสะดวกเพียงใดเมื่อเทียบกับการเขียนโปรแกรมแบบดั้งเดิม คุณสามารถสร้างแอปพลิเคชันสำหรับพีซีและพลังงานที่ LabView มีอยู่ (อันที่จริง เป็นที่ถกเถียงกันอยู่ เพราะในการเขียนโปรแกรมแบบดั้งเดิม บน Delphi เดียวกัน มันไม่ได้ยากกว่าที่จะทำ และในแง่ของประสิทธิภาพ ก็แทบจะแย่กว่าถ้าไม่ดีกว่า แต่สำหรับสิ่งนี้ คุณต้องศึกษา Delphi นานกว่านี้มาก ทุกอย่าง รวดเร็วและชัดเจนเกือบจะในทันที ฉันศึกษาคู่มือ 2-3 เล่มและเดินหน้าล้อมหน้าปัดทุกประเภท ดังนั้น สำหรับโปรแกรมเมอร์ก็เหมือนขาที่ 5 ของสุนัข แต่สำหรับสหายที่ห่างไกลจากคอมพิวเตอร์อย่างฉัน ก็แค่นั้นแหละ ครั้งหนึ่งในครึ่งปี เมื่อฉันเห็น LabView เป็นครั้งแรก ฉันได้สร้างระบบที่โหดร้ายโดยใช้การควบคุมการให้น้ำและความร้อนแบบแมนนวลสำหรับโรงปลูกกัญชง ด้วยตัวควบคุม PID ทุกชนิด ฉันนำโพเทนชิออมิเตอร์และเซ็นเซอร์ของแท่นวางห้องปฏิบัติการซึ่งอยู่ในอุปกรณ์เทคโนโลยีของเราไปยังโพเทนชิออมิเตอร์และเซ็นเซอร์ เปิดตัวหน่วยนรกนี้ และทุกอย่างทำงานได้ทันทีโดยไม่ต้องดีบั๊ก ยังไงก็ตาม อุปกรณ์ทั้งหมดของ Hadron Collider ทำงานบน LabView เช่นเดียวกับอุปกรณ์วิทยาศาสตร์จำนวนมาก หมายเหตุ DI HALT)ท้ายที่สุดแล้ว วิศวกรอิเล็กทรอนิกส์ส่วนใหญ่ไม่ชอบการเขียนโปรแกรมสำหรับพีซีใช่ไหม นี่คือสิ่งที่เรากำลังพยายามแก้ไข เพื่อไม่ให้ศึกษาม้าสุญญากาศทรงกลม เราตั้งค่าตัวเองและใช้งานง่ายๆ งานนี้ง่ายมาก แต่จากพื้นฐานนี้ คุณสามารถเข้าใจหลักการพื้นฐานของการเขียนโปรแกรมใน LabView ได้ เราจะใช้ LabView เวอร์ชัน 2010 สำหรับเวอร์ชันอื่นๆ ความแตกต่างจะน้อยมาก

งาน
เรามีบอร์ดที่มีไมโครคอนโทรลเลอร์ AVR เชื่อมต่อกับคอมพิวเตอร์ผ่าน RS232 ตัวควบคุมถูกโหลดด้วยเฟิร์มแวร์ตามที่ตัวควบคุมวัดค่าแรงดันไฟฟ้าที่หนึ่งในอินพุต ADC และส่งรหัส ADC (จาก 0 ถึง 1023) ไปยังคอมพิวเตอร์ผ่านช่องสัญญาณอนุกรม จำเป็นต้องเขียนโปรแกรมพีซีที่จะรับสตรีมข้อมูลจาก ADC, แสดงรหัส ADC, แปลงรหัส ADC เป็นค่าแรงดันเป็นโวลต์, แสดงค่าแรงดันเป็นโวลต์, วางแผนการเปลี่ยนแปลงแรงดันเมื่อเวลาผ่านไป

เนื้อเพลงน่าจะพอแล้ว มาเริ่มกันเลย!

ดังนั้นสิ่งที่เราต้องทำงาน:

  • จริงๆ แล้ว LabView เอง คุณสามารถดาวน์โหลดเวอร์ชันทดลองได้จากเว็บไซต์ NI: http://www.ni.com/trylabview/ นอกจากนี้ เวอร์ชันละเมิดลิขสิทธิ์ยัง Googled ได้อย่างง่ายดาย อย่างไรก็ตามบน rutracker.org นอกเหนือจากก้นบึ้งของการละเมิดลิขสิทธิ์แล้วยังมีเวอร์ชัน Linux ที่ไม่จำเป็นต้องลงทะเบียนเลย NI ตัดสินใจที่จะพบกับโอเพ่นซอร์ส?
  • คุณต้องดาวน์โหลดส่วนประกอบ NI VISA ด้วย หากไม่มีโปรแกรมนี้ LabView จะไม่ “เห็น” พอร์ต COM บนคอมพิวเตอร์ VISA มีฟังก์ชันสำหรับการทำงานกับพอร์ตสื่อสารและอีกมากมาย คุณสามารถดาวน์โหลดได้จาก joule.ni.com ติดตั้ง LabView และ VISA การติดตั้งซอฟต์แวร์นี้เป็นมาตรฐาน ไม่มีคุณสมบัติพิเศษใดๆ

ก่อนอื่น เราต้องแน่ใจว่า VISA พบพอร์ต COM ในระบบและทำงานได้อย่างถูกต้อง คุณสามารถตรวจสอบได้ดังนี้: เรียกใช้โปรแกรมการวัดและการทำงานอัตโนมัติ มันมาพร้อมกับ LabView หากยังไม่ได้ติดตั้ง คุณสามารถติดตั้งได้ด้วยตนเอง บนดิสก์ (ภาพที่มี LabView มี)

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

เราเริ่มต้น LabView ในหน้าต่างเริ่มต้นใช้งาน ให้เลือก Blank Vi ซึ่งหมายถึงเครื่องมือเสมือนใหม่

เราได้รับสิ่งนี้:

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

เราจะสร้างอินเทอร์เฟซตามที่ใจต้องการ เช่น

ตกลง ตอนนี้เราต้องใช้การคูณจริง ไปที่แผงไดอะแกรมบล็อกและดูว่ามีการสร้างไอคอนที่เกี่ยวข้องสำหรับการควบคุมแต่ละรายการของเรา เป็นการดีที่สุดที่จะเปลี่ยนโหมดการแสดงผลในรูปแบบของเทอร์มินัลทันที ไดอะแกรมจะไม่รกมาก นอกจากในเทอร์มินัลแล้ว ประเภทของข้อมูลที่คอนโทรลทำงานด้วยจะมองเห็นได้ โดยคลิกขวาที่ไอคอนและยกเลิกการเลือกดูเป็นไอคอน ที่ด้านบนของหน้าจอ ตัวควบคุมจะอยู่ในรูปของเทอร์มินัล ที่ด้านล่างและด้านขวาจะอยู่ในรูปของไอคอน ในการกำหนดค่ามุมมองบนไดอะแกรมบล็อกเป็นเทอร์มินัลตามค่าเริ่มต้น คุณต้องเลือกรายการเมนูเครื่องมือ->ตัวเลือก เลือกบล็อกไดอะแกรมทางด้านซ้ายและยกเลิกการเลือกวางเทอร์มินัลที่แผงด้านหน้าเป็นไอคอน มีประโยชน์มากในการแสดงบริบทความช่วยเหลือ คุณสามารถแสดงด้วยชุดค่าผสม Ctrl + H หน้าต่างนี้แสดงข้อมูลเกี่ยวกับวัตถุที่เคอร์เซอร์วางทับอยู่ รายการที่มีประโยชน์มาก

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

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

ตอนนี้เพื่อฟื้นตัวอย่างของเราเราต้องทำตามแนวคิดนี้และให้ฟังก์ชันป้อนค่าตัวเลขที่เราตั้งค่าการควบคุมและรับผลลัพธ์จากเอาต์พุตและแสดงผล

ในการเชื่อมต่อองค์ประกอบบนบล็อกไดอะแกรม ให้ใช้เครื่องมือ Connect Wire จากแผงเครื่องมือ เลือกและวาดการเชื่อมต่อของเรา

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

เท่าที่เห็นก็ดูเหมือนจะไม่มีอะไรซับซ้อน แต่ในเวลาเดียวกัน LabView ช่วยให้คุณแก้ปัญหาที่ซับซ้อนได้! Ept, ระบบควบคุม TANK ถูกสร้างขึ้น! ดังนั้น.

ทีนี้มาทำสิ่งที่น่าสนใจกันดีกว่านั่นคือเราจะสร้างโวลต์มิเตอร์ที่ง่ายที่สุดซึ่งฉันได้พูดถึงในตอนต้น

แล้วเราต้องทำอย่างไร ก่อนอื่นคุณต้องกำหนดค่าและเริ่มต้นพอร์ตอนุกรม เริ่มวนซ้ำไม่สิ้นสุด ในลูปเราใช้ฟังก์ชันอ่านจากพอร์ตและรับข้อมูล มาแปลงข้อมูลเพื่อแสดงบนกราฟ คำนวณรหัส ADC ใหม่เป็นค่าแรงดันเป็นโวลต์ เมื่อออกจากลูปเราจะปิดพอร์ต
ดังนั้นในอินเทอร์เฟซของโปรแกรมของเราจะไม่มีองค์ประกอบควบคุมอื่นนอกจากปุ่มหยุด แต่จะแสดงผลเท่านั้น เราจะทำสิ่งนี้: ก่อนอื่นเราจะสร้างบล็อกไดอะแกรมจากนั้นเพิ่มองค์ประกอบที่ขาดหายไป แผงด้านหน้า แม้ว่าคุณจะต้องทำตรงกันข้าม! แต่ในกรณีนี้จะสะดวกกว่า

บนแผงไดอะแกรมบล็อก เราวางองค์ประกอบ while วนซ้ำจากแผงโครงสร้าง ซึ่งเป็นการวนซ้ำไม่สิ้นสุดของเรา เราวนพื้นที่ด้วยกรอบวงจร เพียงพอที่จะใส่เข้าไปในอัลกอริทึม มีจุดสีแดงที่มุมขวาล่าง คลิกขวาที่จุดนั้นแล้วเลือก Create Control ปุ่มหยุดจะปรากฏขึ้นที่แผงด้านหน้าทันที เมื่อคุณคลิกโปรแกรมของเราจะสิ้นสุดลง

ตอนนี้ นอกลูป เราต้องวางฟังก์ชันสำหรับการเริ่มต้นและปิดพอร์ต การเริ่มต้นทางด้านซ้าย การปิดทางด้านขวา คลิกขวาอีกครั้งแล้วเลือกฟังก์ชัน Configure Port, Read and Close ฟังก์ชันเหล่านี้พบได้ใน Instrument I/O –> Serial palette ฟังก์ชันการอ่านจะอยู่ภายในลูป เราเชื่อมต่อเอาต์พุตและอินพุตของฟังก์ชันโดยใช้ขดลวดกับสายไฟ สำหรับฟังก์ชัน Read เราต้องระบุจำนวนไบต์ที่จะยอมรับ เราคลิกขวาที่อินพุตตรงกลางของฟังก์ชั่น Read แล้วเลือก Create-> Constant ป้อนค่าเช่น 200 ในขั้นตอนนี้ควรปรากฏตามภาพหน้าจอ

คุณต้องสร้างการควบคุมสำหรับฟังก์ชันการเริ่มต้นพอร์ต สองอย่างเพียงพอสำหรับเรา - ความเร็วพอร์ตและชื่อพอร์ต ในทำนองเดียวกับที่เราสร้างค่าคงที่สำหรับฟังก์ชันการอ่าน เราก็สร้างตัวควบคุม RMB บนอินพุตที่จำเป็นของฟังก์ชันการเริ่มต้นและรายการ

สร้าง -> ควบคุม

เราสนใจสองปัจจัย: ชื่อทรัพยากรของวีซ่าและ อัตราบอด(ค่าเริ่มต้น 9600) ตอนนี้ไปที่แผงด้านหน้าและเพิ่มส่วนประกอบที่จำเป็น ได้แก่ หน้าจอการวาดกราฟและป้ายกำกับสำหรับแสดงรหัส ADC และแรงดันไฟฟ้าเป็นโวลต์
ดังนั้น องค์ประกอบเหล่านี้คือองค์ประกอบแผนภูมิรูปคลื่นจากจานสีกราฟและองค์ประกอบตัวบ่งชี้ตัวเลขสองรายการจากจานสีตัวเลข

กลับไปที่บล็อกไดอะแกรมและย้ายองค์ประกอบที่ปรากฏภายในลูป เราใกล้จะเสร็จแล้ว! สิ่งเดียวคือเรายังต้องแปลงสตริงอักขระที่มาจากเอาต์พุตของฟังก์ชัน Read ให้เป็นรูปแบบที่ตัวบ่งชี้ของเราจะแยกย่อย และยังใช้คณิตศาสตร์ที่ง่ายที่สุดในการแปลรหัส ADC เป็นโวลต์ ด้านล่างนี้คือภาพหน้าจอของแผงด้านหน้าและแผนภาพบล็อกในขั้นตอนนี้:

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

ฉันคิดว่าทุกอย่างชัดเจนหากคุณมีคำถามให้ถามในความคิดเห็น ลองคิดดูด้วยกัน :-))) ในระหว่างนี้โปรแกรมก็พร้อม

ไปที่อินเทอร์เฟซของเราและปรับแต่งกราฟเล็กน้อย เลือกค่าล่างบนแกน Y และตั้งค่าเป็น 0 เลือกค่าบนและตั้งค่าเป็น 5 ดังนั้นสเกลของเราบนแกน Y จะอยู่ในช่วง 0-5 โวลต์ เราเลือกพอร์ต COM ป้อนอัตราแลกเปลี่ยนเปิดโปรแกรมของเราโดยใช้ปุ่มที่มีลูกศรและบิดตัวต้านทานบนกระดานอย่างรุนแรงในขณะที่สังเกตผลงานของเราบนหน้าจอ คลิกที่ปุ่มหยุดเพื่อหยุดโปรแกรม

อย่างที่คุณเห็นทุกอย่างค่อนข้างง่าย ตัวอย่างนี้เป็นเพียงส่วนเล็กๆ ของความเป็นไปได้ทั้งหมดของ LabView หากบทความนี้ช่วยใครได้ฉันจะดีใจ อย่าแสดงความคิดเห็นแรง ๆ ฉันไม่ใช่มืออาชีพ อีกเคล็ดลับเล็กน้อย หากไดอะแกรมดูเหมือนคธูลู คุณสามารถลองใช้ปุ่ม CleanUp Diagram มันจะนำแผนภาพไปสู่รูปแบบของพระเจ้าไม่มากก็น้อย แต่ต้องใช้ด้วยความระมัดระวัง นี่คือผลงานของเธอ

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

สวัสดีเพื่อนร่วมงาน!

ในบทความสั้นๆ ผมอยากจะพูดถึงภาษาโปรแกรม LabVIEW น่าเสียดายที่ผลิตภัณฑ์ที่น่าสนใจนี้ไม่ได้รับความนิยมในวงกว้าง และฉันต้องการเติมเต็มช่องว่างที่มีอยู่ในระดับหนึ่ง

LabVIEW คืออะไร

LabVIEW เป็นหนึ่งในผลิตภัณฑ์หลักของ National Instruments ก่อนอื่น ควรสังเกตว่า LabVIEW เป็นตัวย่อที่ย่อมาจาก ห้องปฏิบัติการวาทศิลป์ วีเสมือน ฉันเครื่องมือวัด อีวิศวกรรม โต๊ะทำงาน ในชื่อแล้ว เราสามารถติดตามการวางแนวทางไปสู่การวิจัยในห้องปฏิบัติการ การวัด และการรวบรวมข้อมูล การสร้างระบบ SCADA ใน LabVIEW นั้นค่อนข้างง่ายกว่าการใช้เครื่องมือพัฒนาแบบ "ดั้งเดิม" ในบทความนี้ ฉันต้องการแสดงให้เห็นว่าขอบเขตที่เป็นไปได้ของ LabVIEW นั้นค่อนข้างกว้างขึ้น นี่เป็นภาษาโปรแกรมที่แตกต่างกันโดยพื้นฐาน หรือถ้าคุณต้องการ "ปรัชญา" ของการเขียนโปรแกรมทั้งหมด ภาษาการทำงานที่ทำให้คุณคิดต่างและบางครั้งก็มอบโอกาสที่ยอดเยี่ยมให้กับนักพัฒนา LabVIEW เป็นภาษาโปรแกรมหรือไม่? นี่เป็นปัญหาที่ถกเถียงกัน - ไม่มีมาตรฐานที่นี่เช่น ANSI C ในแวดวงนักพัฒนาแคบ ๆ เราบอกว่าเราเขียนด้วยภาษา "G" อย่างเป็นทางการ ไม่มีภาษาดังกล่าว แต่นี่คือความสวยงามของเครื่องมือพัฒนานี้: จากเวอร์ชันหนึ่งไปอีกเวอร์ชัน มีการนำเสนอโครงสร้างใหม่มากขึ้นเรื่อยๆ ในภาษา เป็นการยากที่จะจินตนาการว่าในการเกิดใหม่ของ C เช่น โครงสร้างใหม่สำหรับ for-loop จะปรากฏขึ้น และใน LabVIEW สิ่งนี้เป็นไปได้ทีเดียว
อย่างไรก็ตาม ควรสังเกตว่า LabVIEW รวมอยู่ในการจัดอันดับภาษาการเขียนโปรแกรมของ TIOBE ซึ่งปัจจุบันอยู่ในอันดับที่สามสิบ - อยู่ระหว่าง Prolog และ Fortran

NI LabVIEW - ประวัติการสร้าง

National Instruments ก่อตั้งขึ้นในปี 1976 โดยผู้ก่อตั้งสามคน ได้แก่ Jeff Kodosky, James Truchard และ Bill Nowlin ในเมืองออสติน รัฐเท็กซัส ของสหรัฐอเมริกา ความเชี่ยวชาญหลักของบริษัทคือเครื่องมือสำหรับการวัดและระบบอัตโนมัติของการผลิต
LabVIEW เวอร์ชันแรกเปิดตัวสิบปีหลังจากก่อตั้งบริษัท - ในปี 1986 (เป็นเวอร์ชันสำหรับ Apple Mac) วิศวกรของ NI ตัดสินใจที่จะท้าทายภาษาการเขียนโปรแกรม "ดั้งเดิม" และสร้างสภาพแวดล้อมการพัฒนากราฟิกที่สมบูรณ์ เจฟฟ์กลายเป็นนักอุดมการณ์หลักของแนวทางกราฟิก เวอร์ชันใหม่ออกมาปีแล้วปีเล่า เวอร์ชันข้ามแพลตฟอร์มแรก (รวมถึง Windows) คือเวอร์ชัน 3 ที่ออกในปี 1993 เวอร์ชันปัจจุบันคือ 8.6 ซึ่งเปิดตัวเมื่อปีที่แล้ว

บริษัทมีสำนักงานใหญ่อยู่ที่เมืองออสตินจนถึงทุกวันนี้ วันนี้ บริษัท มีพนักงานเกือบสี่พันคนและสำนักงานตั้งอยู่ในเกือบสี่สิบประเทศ (มีสำนักงานในรัสเซียด้วย)

บทนำของฉันเกี่ยวกับ LabVIEW

การแนะนำ LabVIEW ของฉันเกิดขึ้นเมื่อเกือบสิบปีก่อน ฉันเริ่มทำงานภายใต้สัญญาฉบับใหม่ เจ้านายในตอนนั้นยื่นซีดีให้ฉันชุดหนึ่งพร้อมกับคำว่า "ตอนนี้คุณจะทำงานนี้" ฉันติดตั้ง LabVIEW (เป็นเวอร์ชันที่ห้า) และหลังจากลองเล่นไปสักพัก ฉันก็บอกว่าไม่มีอะไรร้ายแรงที่จะทำกับสิ่งนี้ได้ ควรใช้ Delphi "แบบเก่า" ดีกว่า ... ซึ่งเขาบอกฉันว่า - คุณไม่ได้ลิ้มรสมัน ทำงานหนึ่งหรือสองสัปดาห์ หลังจากนั้นไม่นาน ฉันจะเข้าใจว่าฉันจะไม่สามารถเขียนบนสิ่งอื่นใดนอกจาก LabVIEW ฉันตกหลุมรักภาษานี้ แม้ว่ามันจะไม่ใช่ "รักแรกพบ"

โดยทั่วไปแล้ว การเปรียบเทียบภาษาโปรแกรมแบบกราฟิกและแบบข้อความนั้นค่อนข้างยาก นี่อาจเป็นการเปรียบเทียบจากหมวดหมู่ของ "PC" กับ "MAC" หรือ "Windows" กับ "Linux" - คุณสามารถโต้แย้งได้มากเท่าที่คุณต้องการ แต่การโต้เถียงนั้นไม่มีความหมายเลย - แต่ละระบบมีสิทธิ์ที่จะมีอยู่ และแต่ละรายการจะมีทั้งผู้สนับสนุนและฝ่ายตรงข้าม นอกจากนี้ แต่ละผลิตภัณฑ์ยังมีช่องเฉพาะของตัวเองอีกด้วย LabVIEW เป็นเพียงเครื่องมือ แม้ว่าจะเป็นเครื่องมือที่ยืดหยุ่นมากก็ตาม

แล้ว LabVIEW คืออะไร?

LabVIEW เป็นสภาพแวดล้อมการพัฒนาแอปพลิเคชันกราฟิกข้ามแพลตฟอร์ม LabVIEW เป็นภาษาโปรแกรมสากลโดยพื้นฐานแล้ว และแม้ว่าบางครั้งผลิตภัณฑ์นี้จะมีความเกี่ยวข้องอย่างใกล้ชิดกับฮาร์ดแวร์ของ National Instruments แต่ก็ไม่ได้เชื่อมโยงกับเครื่องใดเครื่องหนึ่ง มีเวอร์ชันสำหรับ Windows, Linux, MacOS ซอร์สโค้ดพกพาได้ และโปรแกรมจะมีลักษณะเหมือนกันในทุกระบบ โค้ดที่สร้างโดย LabVIEW สามารถรันบน Windows Mobile หรือ PalmOS ได้ด้วย (พูดตามตรง การสนับสนุน PalmOS ถูกทิ้ง แม้ว่า Palm เองจะตำหนิมากกว่าก็ตาม) ภาษานี้สามารถใช้เพื่อสร้างระบบขนาดใหญ่สำหรับการประมวลผลข้อความ รูปภาพ และการทำงานกับฐานข้อมูลได้สำเร็จ

LabVIEW เป็นภาษาระดับสูงมาก อย่างไรก็ตาม ไม่มีอะไรขัดขวางคุณจากการรวมโมดูล "ระดับต่ำ" ในโปรแกรม LabVIEW แม้ว่าคุณต้องการใช้แอสเซมเบลอร์แทรก - เป็นไปได้เช่นกัน คุณเพียงแค่ต้องสร้าง DLL และแทรกการโทรลงในโค้ด ในทางกลับกัน ภาษาระดับสูงช่วยให้คุณดำเนินการกับข้อมูลได้อย่างง่ายดาย ซึ่งในภาษาปกติอาจต้องใช้โค้ดหลายบรรทัด (หากไม่ใช่หลายสิบบรรทัด) อย่างไรก็ตาม เพื่อความเป็นธรรม ควรสังเกตว่าการดำเนินการบางอย่างของภาษาระดับต่ำ (เช่น การทำงานกับพอยน์เตอร์) นั้นไม่ง่ายนักที่จะนำไปใช้ใน LabVIEW เนื่องจากเป็น "ระดับสูง" แน่นอน ภาษา LabVIEW มีโครงสร้างการควบคุมพื้นฐานที่มีอะนาล็อกในภาษา "ดั้งเดิม":

  • ตัวแปร (ท้องถิ่นหรือทั่วโลก)
  • การแตกแขนง (โครงสร้างกรณี)
  • สำหรับ - ลูปที่มีและไม่มีการตรวจสอบการสิ้นสุด
  • ในขณะที่วนซ้ำ
  • การดำเนินการจัดกลุ่ม

LabVIEW - คุณสมบัติของโปรแกรมและภาษา

ใน LabVIEW โมดูลซอฟต์แวร์ที่พัฒนาขึ้นเรียกว่า "เครื่องมือเสมือน" (Virtual Instruments) หรือเรียกสั้นๆ ว่า VI จะถูกบันทึกไว้ในไฟล์ *.vi VIs เป็นองค์ประกอบพื้นฐานที่ประกอบกันเป็นโปรแกรม LabVIEW ทุกโปรแกรม LabVIEW มี VI อย่างน้อยหนึ่งรายการ ในแง่ของภาษา C คุณสามารถวาดการเปรียบเทียบกับฟังก์ชันได้อย่างปลอดภัย โดยมีข้อแตกต่างเพียงอย่างเดียวคือใน LabVIEW ฟังก์ชันหนึ่งจะบรรจุอยู่ในไฟล์เดียว (คุณสามารถสร้างไลบรารีเครื่องมือได้ด้วย) ไม่ต้องบอกว่า VI หนึ่งสามารถเรียกจาก VI อื่นได้ โดยทั่วไป VI ทุกอันประกอบด้วยสองส่วน - บล็อกไดอะแกรมและแผงด้านหน้า บล็อกไดอะแกรมคือรหัสโปรแกรม (ให้ชัดเจนยิ่งขึ้น คือการแสดงรหัสด้วยภาพกราฟิก) ในขณะที่แผงด้านหน้าเป็นส่วนต่อประสาน ต่อไปนี้เป็นตัวอย่างคลาสสิกของ Hello, World!

หัวใจของ LabVIEW คือกระบวนทัศน์การไหลของข้อมูล ในตัวอย่างข้างต้น ค่าคงที่และขั้วตัวบ่งชี้เชื่อมต่อกันด้วยเส้น เส้นนี้เรียกว่าเส้นลวด คุณสามารถเรียกมันว่า "ลวด" สายนำข้อมูลจากองค์ประกอบหนึ่งไปยังอีกองค์ประกอบหนึ่ง แนวคิดทั้งหมดนี้เรียกว่า Data Flow สาระสำคัญของ Block Diagram คือโหนด (โหนด) เอาต์พุตของบางโหนดเชื่อมต่อกับอินพุตของโหนดอื่น โหนดจะเริ่มดำเนินการก็ต่อเมื่อข้อมูลทั้งหมดที่จำเป็นสำหรับการทำงานมาถึง มีสองโหนดในไดอะแกรมด้านบน หนึ่งในนั้นคือค่าคงที่ โหนดนี้เพียงพอในตัวเอง - มันเริ่มดำเนินการทันที โหนดที่สองเป็นตัวบ่งชี้ จะแสดงข้อมูลที่ค่าคงที่ผ่าน (แต่ไม่ทันที แต่ทันทีที่ข้อมูลมาถึงจากค่าคงที่)

นี่เป็นตัวอย่างที่ซับซ้อนกว่าเล็กน้อย: การบวกและคูณเลขสองตัว ในภาษาดั้งเดิมเราจะเขียนเช่น

int a, b, ผลรวม, มัล;
//...
ผลรวม = a + b;
มัล = a*b;

นี่คือสิ่งที่ดูเหมือนใน LabVIEW:

โปรดทราบว่าการบวกและการคูณจะทำควบคู่กันไปโดยอัตโนมัติ ในเครื่องที่ใช้โปรเซสเซอร์คู่ โปรเซสเซอร์ทั้งสองจะถูกเปิดใช้งานโดยอัตโนมัติ

และนี่คือลักษณะของโครงสร้าง while / for loop และ if / then / else:

ตามที่กล่าวมาแล้ว องค์ประกอบทั้งหมดจะถูกดำเนินการแบบขนาน คุณไม่จำเป็นต้องคิดถึงวิธีทำให้งานเป็นแบบขนานกันเป็นหลายเธรดที่สามารถทำงานแบบขนานบนโปรเซสเซอร์หลายตัว ในเวอร์ชันล่าสุด คุณยังสามารถระบุได้อย่างชัดเจนว่าตัวประมวลผลใดควรเรียกใช้งานสิ่งนี้หรือตัวประมวลผลแบบ while-loop ขณะนี้มีส่วนเสริมสำหรับภาษาข้อความที่ช่วยให้คุณสามารถรองรับระบบมัลติโปรเซสเซอร์ได้อย่างง่ายดาย แต่สิ่งนี้อาจไม่ได้นำไปใช้ทุกที่เช่นเดียวกับใน LabVIEW (ฉันยังแอบไปเปรียบเทียบกับภาษาข้อความ) หากเรากำลังพูดถึงมัลติเธรดแล้ว ควรสังเกตว่านักพัฒนามีเครื่องมือให้เลือกมากมายสำหรับการซิงโครไนซ์เธรด - สัญญาณ, คิว, นัดพบ ฯลฯ

LabVIEW มีชุดองค์ประกอบมากมายสำหรับสร้างส่วนติดต่อผู้ใช้ อินเทอร์เฟซใน Delphi ถูก "โจมตี" อย่างรวดเร็วจากสิ่งใด และใน LabVIEW กระบวนการนี้เร็วยิ่งขึ้นไปอีก

การส่งมอบมาตรฐานของ LabVIEW ยังรวมถึงบล็อกสำหรับการทำงานกับไฟล์ ini, รีจิสทรี, ฟังก์ชันสำหรับการทำงานกับไบนารีและไฟล์ทดสอบ, ฟังก์ชันทางคณิตศาสตร์, เครื่องมือที่มีประสิทธิภาพสำหรับการลงจุด (และหากไม่มีในห้องปฏิบัติการ) และนอกเหนือจากความเป็นไปได้ที่กล่าวถึงแล้ว จากการเรียก DLL นั้น LabVIEW ช่วยให้คุณทำงานกับคอมโพเนนต์ ActiveX และ .net ได้ เริ่มตั้งแต่เวอร์ชันที่แปด การสนับสนุนสำหรับคลาสถูกเพิ่มเข้ามาใน LabVIEW - ภาษากลายเป็นเชิงวัตถุ การสนับสนุนที่นำไปใช้นั้นไม่สามารถเรียกได้ว่าสมบูรณ์ แต่มีคุณสมบัติหลักของภาษาเชิงวัตถุ - การสืบทอดและความหลากหลาย นอกจากนี้ ฟังก์ชันการทำงานของภาษายังสามารถขยายได้ด้วยโมดูลเพิ่มเติม เช่น NI Vision Toolkit - สำหรับการประมวลผลภาพและวิชันซิสเต็ม และอื่นๆ และด้วยความช่วยเหลือของโมดูล Application Builder คุณสามารถสร้างไฟล์ exe ที่เรียกใช้งานได้ เมื่อใช้ Internet Toolkit คุณสามารถทำงานกับเซิร์ฟเวอร์ ftp โดยใช้ Database Connectivity Toolkit - กับฐานข้อมูล ฯลฯ

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

เป็นเวลานานพอสมควรในขณะที่เขียนโปรแกรมใน LabVIEW ฉันเชื่อมั่นอย่างสมบูรณ์ว่า LabVIEW เป็นล่ามและบล็อกไดอะแกรมจะถูกตีความอย่างต่อเนื่องโดยเคอร์เนล หลังจากพูดคุยกับวิศวกรของ NI กลับกลายเป็นว่าไม่เป็นเช่นนั้น LabVIEW เป็นคอมไพเลอร์ (อย่างไรก็ตาม คุณภาพของการสร้างโค้ดยังเป็นที่ต้องการอีกมาก) แต่การรวบรวมเกิดขึ้น "ทันที" - ตลอดเวลาระหว่างการพัฒนาโปรแกรมพร้อมที่จะทำงานเสมอ นอกจากนี้ โค้ด LabVIEW ยังสามารถคอมไพล์เป็นไฟล์ปฏิบัติการเต็มรูปแบบที่สามารถเรียกใช้บนคอมพิวเตอร์โดยไม่ต้องติดตั้ง LabVIEW (แม้ว่าจะต้องใช้ LabVIEW Run-Time) คุณยังสามารถสร้างตัวติดตั้งแพ็คเกจการติดตั้งได้ โดยไม่จำเป็นต้องใช้ยูทิลิตี้ของบุคคลที่สาม เช่น InstallShield

คำอธิบายโดยละเอียดเพิ่มเติมเกี่ยวกับคุณลักษณะของแพ็คเกจนั้นอยู่นอกเหนือขอบเขตของบทความนี้ แต่ฉันแค่แนะนำให้ลองใช้ (ลิงก์แสดงอยู่ด้านล่าง) ดังที่ผู้ยิ่งใหญ่กล่าวไว้ว่า "... วิธีเดียวที่จะเรียนรู้ภาษาโปรแกรมใหม่คือการเขียนโปรแกรมในนั้น" โปรแกรมเมอร์ที่มีประสบการณ์จะสามารถประเมินความรู้ที่ได้รับตามความต้องการของตนเองได้



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

เทคนิคการเขียนโปรแกรมคืออะไร

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


คุณสามารถนำเสนอโค้ดที่เขียนโดยใช้เทคนิคต่างๆ บนบล็อกไดอะแกรม เช่นเดียวกับการสตรีมโค้ด G และ LabVIEW จะรวบรวมคำแนะนำสำหรับอุปกรณ์เป้าหมายที่เหมาะสม (เดสก์ท็อปพีซีปกติ, แพลตฟอร์ม RTOS, FPGA, อุปกรณ์เคลื่อนที่, อุปกรณ์ฝังตัวแบบ ARM)

รูปที่ 1 แพลตฟอร์มและเทคนิคการเขียนโปรแกรมที่หลากหลายใน LabVIEW



การถ่ายโอนข้อมูลระหว่างส่วนต่างๆ ของโค้ดที่เขียนด้วยวิธีการต่างๆ นั้นจัดอยู่ใน LabVIEW ค่อนข้างเรียบง่าย การไหลของข้อมูลคือการเชื่อมโยงระหว่างโมเดลการคำนวณและภาษาต่างๆ ในภาษา G อินพุต/เอาท์พุตของข้อมูลจะดำเนินการโดยใช้อินเทอร์เฟซผู้ใช้เฉพาะ (แผงด้านหน้า) อินเทอร์เฟซเครือข่าย ไลบรารีการวิเคราะห์ ฐานข้อมูล และเครื่องมืออื่นๆ

G การเขียนโปรแกรม
การถือกำเนิดของการเขียนโปรแกรมสตรีมในปี 1986 ถือเป็นนวัตกรรมอย่างแท้จริง ลำดับของการดำเนินการกับข้อมูลในภาษา G ไม่ได้กำหนดตามลำดับที่ปรากฏ แต่โดยการมีอยู่ของข้อมูลที่อินพุตของโหนดเหล่านี้ คำสั่งที่ไม่ได้เชื่อมต่อกันด้วยกระแสข้อมูลจะถูกดำเนินการแบบขนานในคำสั่งโดยพลการ

โหนดไดอะแกรมเป็นคำสั่งอย่างง่ายหรือชุด - ฟังก์ชัน, เครื่องมือเสมือน (VI) การดำเนินการตามคำสั่งของโหนดจะเกิดขึ้นหลังจากข้อมูลปรากฏบนเทอร์มินัลอินพุตทั้งหมดของโหนดเท่านั้น หลังจากดำเนินการตามคำสั่งแล้ว ผลลัพธ์จะถูกส่งผ่านขั้วต่อเอาต์พุตของโหนดไปยังอินพุตของโหนดต่อไปนี้


รูปที่ 2 ในตัวอย่างนี้ เพิ่ม A และ B ผลรวมที่เป็นผลลัพธ์จะถูกคูณด้วย C และผลลัพธ์จะแสดงขึ้น


รูปที่ 2 แสดงตัวอย่างนิพจน์ทางคณิตศาสตร์ในภาษา G แผนภาพประกอบด้วยโหนด 2 โหนด (การบวกและการคูณ) และอินพุต 3 ตัว (A, B และ C) เพิ่ม A และ B ก่อน รหัสโหนดการคูณจะไม่ดำเนินการจนกว่าเทอร์มินัลอินพุตทั้งสองจะได้รับข้อมูล ดังนั้น จะรอผลลัพธ์ของโหนดการบวก ทันทีที่ผลลัพธ์ของการบวกมาถึงอินพุตแรกของโหนดการคูณ รหัสของมัน (A+B)*C จะถูกดำเนินการ

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

การตั้งค่าแบบโต้ตอบเป็นพื้นฐานของการเขียนโปรแกรม
ในปี 2546 National Instruments ได้เปิดตัว NI LabVIEW 7 Express ซึ่งเป็นผู้บุกเบิกเทคโนโลยี Express VI ซึ่งเป็นเทคโนโลยีที่ออกแบบมาเพื่อลดความซับซ้อนของขั้นตอนการพัฒนาอัลกอริทึมของแอปพลิเคชัน ซึ่งแตกต่างจาก VIs ทั่วไป Express VIs เป็นโครงสร้างภาษานามธรรมที่ใช้เทคนิคการเขียนโปรแกรมตามการกำหนดค่าแบบโต้ตอบของส่วนประกอบ


รูปที่ 3 จานสี Express VI การวาง Express VI บนบล็อกไดอะแกรม และการแสดง Express VI ในโหมดภาพขนาดย่อ


คุณสามารถแยกแยะ VP ด่วนจาก VP ปกติได้ด้วยไอคอนสีน้ำเงินขนาดใหญ่ เมื่อคุณวาง Express VI บนบล็อกไดอะแกรมเป็นครั้งแรก กล่องโต้ตอบการตั้งค่าที่เกี่ยวข้องจะปรากฏขึ้น หลังจากปรับแต่งเสร็จแล้ว LabVIEW จะสร้างโค้ดโดยอัตโนมัติตามการกำหนดค่า Express VI ที่สร้างขึ้น คุณสามารถดูและแก้ไขโค้ดนี้หรือเปลี่ยนการตั้งค่า Express VI ได้โดยเปิดกล่องโต้ตอบอีกครั้งโดยดับเบิลคลิกที่ไอคอน Express VI

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

เพียงระบุช่องอ่าน/เขียนในการตั้งค่า DAQ Assistance Express VI และกำหนดค่าพารามิเตอร์ เช่น อัตราตัวอย่าง สเกล เวลา และทริกเกอร์ นอกจากนี้ Express VI ยังให้ความสามารถในการรวบรวมข้อมูลล่วงหน้าจากอุปกรณ์เพื่อตรวจสอบว่าการตั้งค่าการรวบรวมข้อมูลที่เลือกนั้นถูกต้อง


รูปที่ 4 DAQ Assistant Express VI ช่วยลดความยุ่งยากในการตั้งค่าทริกเกอร์ไทม์มิ่งและพารามิเตอร์แชนเนล



รูปที่ 5 รหัส G เทียบเท่ากับ DAQ Assistant Express VI


แม้จะมีข้อดีทั้งหมด แต่ Express VI ก็ไม่ได้ให้การควบคุมระดับต่ำและการกำหนดค่าของโหมดการทำงานของอุปกรณ์ ซึ่งใช้งานโดยใช้ VI ทั่วไป ผู้ใช้ที่เพิ่งเริ่มใช้ LabVIEW สามารถใช้ฟังก์ชันในตัวที่แปลง Express VI ที่กำหนดค่าไว้ก่อนหน้านี้เป็นลำดับของ VI ปกติ สิ่งนี้สามารถช่วยให้ผู้เริ่มต้นเรียนรู้โค้ดระดับต่ำได้ ก็เพียงพอที่จะเลือกบรรทัด Open Front Panel เข้ามา เมนูบริบทแสดง VI บนบล็อกไดอะแกรม โปรดทราบว่า Express VI ใดๆ สามารถแทนที่ด้วย VI ปกติหลายตัวรวมกันได้ และรุ่น LabVIEW Professional Development System ช่วยให้คุณสร้าง Express VI ของคุณเองได้

ไฟล์สคริปต์ support.m
ด้วยโมดูล LabVIEW MathScript RT คุณสามารถนำเข้า แก้ไข และเรียกใช้สคริปต์ไฟล์ *.m ที่ใช้กันทั่วไปในการสร้างแบบจำลองทางคณิตศาสตร์และการวิเคราะห์ การประมวลผลสัญญาณ และการคำนวณทางคณิตศาสตร์ที่ซับซ้อน คุณสามารถใช้กับรหัส G เพื่อสร้างแอปพลิเคชันแบบสแตนด์อโลนสำหรับเดสก์ท็อปหรือฮาร์ดแวร์แบบเรียลไทม์

มีหลายวิธีในการทำงานกับ MathScript ใน LabVIEW หากต้องการทำงานกับสคริปต์แบบโต้ตอบ ให้ใช้หน้าต่าง MathScript ที่แสดงในรูป 6


รูปที่ 6 การพัฒนาเชิงโต้ตอบของอัลกอริทึมข้อความในหน้าต่าง MathScript


หากต้องการใช้สคริปต์ *.m ในแอปพลิเคชัน LabVIEW และรวมพลังของโปรแกรมข้อความและกราฟิก ให้ใช้โหนด MathScript ที่แสดงในรูปที่ 7 การใช้โหนด MathScript ทำให้คุณสามารถฝังอัลกอริทึมข้อความในโค้ด VI และใช้ความสามารถด้านกราฟิกของอินเทอร์เฟซเพื่อควบคุมพารามิเตอร์ของสคริปต์ (ปุ่ม แถบเลื่อน ส่วนควบคุม กราฟิก และองค์ประกอบอื่นๆ)


รูปที่ 7 โหนด MathScript ทำให้ง่ายต่อการใช้ scripts.m ในโค้ด G


โมดูล LabVIEW MathScript RT มีเอ็นจิ้นสคริปต์ *.m ของตัวเองและไม่ต้องการการติดตั้งของบุคคลที่สาม ซอฟต์แวร์. การใช้โหนด MathScript ช่วยให้คุณสามารถรวมข้อดีของอัลกอริทึมข้อความไว้ในแอปพลิเคชันเดียว ระดับสูงการรวม LabVIEW เข้ากับฮาร์ดแวร์ ส่วนติดต่อผู้ใช้แบบโต้ตอบ และเทคนิคการเขียนโปรแกรมอื่นๆ ที่กล่าวถึงในบทความนี้

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


รูปที่ 8 วิธีการเชิงวัตถุขึ้นอยู่กับคลาส (ตัวอย่างในภาพ) และคุณสมบัติและฟังก์ชันที่เกี่ยวข้องของ VI


การใช้ OOP ใน LabVIEW เป็นไปได้ตั้งแต่เวอร์ชัน 8.2

ข้อได้เปรียบหลักของแนวทางนี้คือ:

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

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

รูปที่ 9 แสดง Control & Simulation Loop ซึ่งแก้สมการเชิงอนุพันธ์โดยใช้อัลกอริทึมที่สร้างขึ้นใน LabVIEW ตามเวลาจริงในช่วงเวลาหนึ่ง แนวทางการเขียนโปรแกรมนี้ยังใช้การไหลของข้อมูลเช่นเดียวกับภาษา G แต่โดยทั่วไปเรียกว่าการไหลของสัญญาณ ดังที่แสดงในรูปที่ 9 คุณสามารถรวมเทคนิคการสร้างแบบจำลองทางคณิตศาสตร์เข้ากับเทคนิคอื่นๆ เช่น G data streams และ MathScript Node


ข้าว. 9. แผนภาพจำลองแสดงการแพร่กระจายสัญญาณ ฮาร์ดแวร์ I/O และโหนด MathScript


Control & Simulation Loop รองรับฟังก์ชันที่ใช้ในการสร้างโมเดลเชิงเส้น ระบบเครื่องเขียนบนอุปกรณ์ที่ติดตั้งระบบปฏิบัติการตามเวลาจริง คุณสามารถใช้ฟังก์ชันเหล่านี้เพื่อกำหนดแบบจำลองที่ไม่ต่อเนื่องได้โดยการระบุ ฟังก์ชั่นการถ่ายโอนไดอะแกรมขั้วศูนย์และระบบสมการเชิงอนุพันธ์ เครื่องมือวิเคราะห์โดเมนเวลาและความถี่ เช่น การตอบสนองตามขั้นตอนเวลาหรือฟังก์ชันพล็อตเป็นลาง ช่วยให้คุณวิเคราะห์พฤติกรรมของลูปควบคุม/การจำลองแบบเปิดและปิดแบบโต้ตอบได้ คุณยังสามารถใช้เครื่องมือการแปลงโมเดลในตัวที่พัฒนาขึ้นในสภาพแวดล้อมการเขียนโปรแกรม The MathWorks, Inc. Simulink® ซึ่งจะอนุญาตให้ใช้ในสภาพแวดล้อม LabVIEW ระบบไดนามิกเหล่านี้สามารถติดตั้งบนอุปกรณ์ที่มี OS แบบเรียลไทม์โดยไม่ต้องผ่านขั้นตอนการแปลงโปรแกรมต่างๆ ด้วยการทำงานของไลบรารี LabVIEW Real-Time Module ซึ่งเหมาะสำหรับการพัฒนาต้นแบบระบบควบคุมและแอปพลิเคชันการจำลอง

ไดอะแกรมของรัฐ
โมดูล Statechart ของ NI LabVIEW ช่วยให้นักพัฒนาสามารถอธิบายการทำงานของระบบในลักษณะที่เป็นนามธรรมที่สุดเท่าที่จะเป็นไปได้โดยใช้ statecharts การรวมรหัส LabVIEW เข้ากับสถานะไดอะแกรมช่วยให้คุณสร้างข้อกำหนดการทำงานเสมือนจริงสำหรับแอปพลิเคชันของคุณ โมดูล Statechart ของ NI LabVIEW เพิ่มการซ้อนลำดับชั้นและการดำเนินการแบบขนานให้กับฟังก์ชัน statechart ทั่วไป ควรสังเกตว่าไดอะแกรมสถานะช่วยให้คุณสามารถอธิบายปฏิกิริยาของระบบต่อเหตุการณ์ ซึ่งทำให้เป็นเครื่องมือที่สะดวกมากในการพัฒนาระบบปฏิกิริยา เช่น อุปกรณ์ฝังตัว ระบบควบคุม และอินเทอร์เฟซผู้ใช้ที่ซับซ้อน


ข้าว. 10. โมดูล LabVIEW Statechart อธิบายระบบตามแผนภูมิสถานะ


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

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

VHDL สำหรับ FPGA
โมดูล LabVIEW FPGA ช่วยให้คุณใช้ภาษา G ในการเขียนโค้ดสำหรับ FPGA อย่างไรก็ตาม เช่นเดียวกับเทคนิคการพัฒนาอื่นๆ คุณสามารถใช้โค้ดที่เขียนไว้ล่วงหน้าหรือเพียงแค่เลือกวิธีการนำโปรแกรมไปใช้ได้ FPGA ส่วนใหญ่ตั้งโปรแกรมโดยใช้ภาษาโปรแกรมสตรีมแบบข้อความ VHDL แทนที่จะเขียนบล็อก G IP ที่มีอยู่ใหม่ คุณสามารถนำเข้ารหัส VHDL โดยใช้โหนด Component-Level IP (CLIP) โดยปกติแล้ว คุณต้องมีไฟล์ CLIP XML เพื่อตั้งค่าส่วนต่อประสานระหว่างองค์ประกอบไดอะแกรมบล็อก แต่ LabVIEW มีตัวช่วยสร้างการนำเข้า CLIP เพื่อดำเนินการนี้โดยอัตโนมัติ จะแสดงรายการอินพุตและเอาต์พุตของบล็อก IP ซึ่งสามารถลากด้วยเมาส์ไปยังบล็อกไดอะแกรมและใช้ในแอปพลิเคชัน ดังแสดงในรูปที่ สิบเอ็ด


ข้าว. สิบเอ็ด โหนด CLIP


เนื่องจาก NI ใช้ Xilinix FPGA และชุดเครื่องมือซอฟต์แวร์ Xilinx ในโมดูล LabVIEW FPGA คุณจึงสามารถใช้ Xilinx Core Generator เพื่อสร้างคอร์ที่เข้ากันได้ คุณยังสามารถใช้ Xilinx Embedded Development Kit เพื่อสร้างซอฟต์แวร์ไมโครโปรเซสเซอร์ และสุดท้าย นักพัฒนาบุคคลที่สามจำนวนมากให้บริการ หลากหลายชนิดบล็อก IP สำหรับการจัดการบัส การประมวลผลสัญญาณ และคอร์เฉพาะ

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

Inline C Node นั้นคล้ายกับ Formula Node และให้ คุณลักษณะเพิ่มเติมการเขียนโปรแกรมระดับต่ำและการสนับสนุนไฟล์ส่วนหัวโดยไม่มีค่าใช้จ่ายในการเรียกขั้นตอน คุณสามารถใช้ Inline C Node เพื่อฝังโค้ด C ใดๆ รวมถึงคำสั่ง #defines ที่อยู่ในวงเล็บในโค้ด C

การโต้ตอบกับไฟล์ปฏิบัติการ
เมื่อเขียนโปรแกรมในสภาพแวดล้อม LabVIEW มักจะจำเป็นต้องเข้าถึงไฟล์และไลบรารีที่คอมไพล์แล้วจากแอปพลิเคชันที่เขียนในสภาพแวดล้อม LabVIEW เพื่อ ใช้ซ้ำอัลกอริทึมที่พัฒนาก่อนหน้านี้ในสภาพแวดล้อมอื่น นอกจากนี้ เมื่อสร้างโครงการ จำเป็นต้องเข้าถึงแอปพลิเคชันที่เขียนด้วยภาษา LabVIEW จากแอปพลิเคชันอื่นๆ

เพื่อแก้ปัญหาเหล่านี้ LabVIEW มีเครื่องมือต่างๆ มากมาย ประการแรก LabVIEW สามารถเรียกใช้ฟังก์ชัน DLL รวมทั้งใช้อินเทอร์เฟซ ActiveX และ .NET

ประการที่สอง แอปพลิเคชันที่เขียนด้วยภาษา LabVIEW สามารถมอบฟังก์ชันการทำงานของแอปพลิเคชันอื่นเป็น DLL หรือใช้เครื่องมือ ActiveX

ในกรณีที่คุณมี แหล่งที่มา C ที่คุณต้องการใช้ในแอปพลิเคชัน LabVIEW ของคุณ คุณสามารถคอมไพล์ DLL และรวมไว้โดยใช้โหนด Call Library Function ตัวอย่างเช่น คุณสามารถจัดระเบียบ การคำนวณแบบขนานโดยใช้อัลกอริทึมที่เขียนด้วยภาษา C ในขณะที่โปรแกรมที่เขียนด้วย LabVIEW จะจัดการเธรดที่ทำงานแบบขนาน เพื่อลดความซับซ้อนในการทำงานกับไลบรารี่ภายนอก LabVIEW มีตัวช่วยสร้างนำเข้าไลบรารีที่ใช้ร่วมกันซึ่งช่วยให้คุณสร้างหรืออัปเดต wrapper โดยอัตโนมัติเพื่อเรียกไลบรารีที่เหมาะสม (Windows . ไฟล์ .dll, ไฟล์ Mac OS .framework หรือไฟล์ Linux .so)

นอกจากนี้ การใช้ System Exec.vi คุณสามารถใช้อินเทอร์เฟซได้ บรรทัดคำสั่งระบบปฏิบัติการ.

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

ปัญหามักจะมีวิธีแก้ไขหลายวิธี และสภาพแวดล้อมการเขียนโปรแกรม LabVIEW ก็มีความยืดหยุ่นเพียงพอที่จะให้คุณเลือกวิธีแก้ไขที่เหมาะกับคุณที่สุด

Simulink® เป็นเครื่องหมายการค้าจดทะเบียนของ The MathWorks, Inc.

ARM, Keil และ µVision เป็นเครื่องหมายการค้าและเครื่องหมายการค้าจดทะเบียนของ ARM Ltd หรือบริษัทในเครือ



กำลังโหลด...
สูงสุด