ระบบควบคุมอัตโนมัติของ CPU และความปลอดภัยทางอุตสาหกรรม ทำความรู้จักกับมุมมอง LabView Lab

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

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

LabVIEW คืออะไร?

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

NI LabVIEW - ประวัติความเป็นมาของการสร้างสรรค์

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

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

การแนะนำ LabVIEW ของฉัน

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

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

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

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

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

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

LabVIEW - ความสามารถของโปรแกรมและภาษา

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

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

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

Int a, b, ผลรวม, มูล;
//...
ผลรวม = a + b;
มูล = a * b;

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

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

และนี่คือสิ่งที่ในขณะที่ / ดูเหมือน สำหรับลูปและโครงสร้าง if/then/else:

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

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

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

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

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

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

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

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

LabVIEW คืออะไร?

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

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

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

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

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

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

LabVIEW - ความสามารถของโปรแกรมและภาษา

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

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

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

Int a, b, ผลรวม, มูล;
//...
ผลรวม = a + b;
มูล = a * b;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

แล้วเราต้องการอะไรในการทำงาน:

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

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

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

เปิดตัว LabView ในหน้าต่างเริ่มต้นใช้งาน เลือกรายการ Blank Vi เพื่อสร้างอุปกรณ์เสมือนใหม่

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

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

มาสร้างอินเทอร์เฟซตามที่คุณต้องการกันเถอะ เช่นนี้:

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

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

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

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

หากต้องการเชื่อมต่อองค์ประกอบต่างๆ ในบล็อกไดอะแกรม ให้ใช้เครื่องมือเชื่อมต่อสายจากแผงเครื่องมือ เลือกมันและดึงการเชื่อมต่อของเรา

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

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

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

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

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

ตอนนี้อยู่นอกวงเราจะต้องวางฟังก์ชั่นสำหรับการเริ่มต้นและปิดพอร์ต ทางด้านซ้ายคือการเริ่มต้น ทางด้านขวาคือการปิด คลิกขวาอีกครั้งและเลือกฟังก์ชันกำหนดค่าพอร์ต อ่านและปิด ฟังก์ชันเหล่านี้อยู่ในแผง I/O ของเครื่องมือ -> แผงอนุกรม เราวางฟังก์ชันการอ่านไว้ในลูป เราเชื่อมต่อเอาต์พุตและอินพุตของฟังก์ชันโดยใช้ขดลวด สำหรับฟังก์ชัน Read เราต้องระบุจำนวนไบต์ที่จะได้รับ คลิกขวาที่อินพุตตรงกลางของฟังก์ชัน Read และเลือก Create->Constant ป้อนค่า เช่น 200 ในขั้นตอนนี้ควรมีลักษณะเหมือนภาพหน้าจอ

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

แล้วเราต้องการอะไรในการทำงาน:

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

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

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


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

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

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

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

หากต้องการเชื่อมต่อองค์ประกอบต่างๆ ในบล็อกไดอะแกรม ให้ใช้เครื่องมือเชื่อมต่อสายจากแผงเครื่องมือ เลือกมันและดึงการเชื่อมต่อของเรา

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

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

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

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

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

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

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

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

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



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


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

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

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



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

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

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


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

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



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

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

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


รูปที่ 2. ตัวอย่างนี้บวก A และ B คูณผลรวมผลลัพธ์ด้วย C และแสดงผลลัพธ์


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

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

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


รูปที่ 3 จานสี Express VI วาง Express VI บนบล็อกไดอะแกรม และแสดง Express VI ในมุมมองไอคอน


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

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

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


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



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


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

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

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


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


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


รูปที่ 7 โหนด MathScript ทำให้ง่ายต่อการใช้สคริปต์ .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 รองรับฟังก์ชันที่ใช้ในการปรับใช้โมเดลของระบบนิ่งเชิงเส้นบนอุปกรณ์ที่ใช้ระบบปฏิบัติการแบบเรียลไทม์ คุณสามารถใช้ฟังก์ชันเหล่านี้เพื่อกำหนดแบบจำลองแยกส่วนได้โดยการระบุฟังก์ชันถ่ายโอน แผนภาพขั้ว-ศูนย์ และระบบสมการเชิงอนุพันธ์ เครื่องมือวิเคราะห์โดเมนเวลาและความถี่ เช่น การตอบสนองตามขั้นตอนเวลาหรือ Bode Plot ช่วยให้คุณสามารถวิเคราะห์พฤติกรรมของการควบคุม/การจำลองแบบวงเปิดและแบบปิดแบบโต้ตอบได้ คุณยังสามารถใช้เครื่องมือการแปลงโมเดลในตัวที่พัฒนาขึ้นในสภาพแวดล้อมการเขียนโปรแกรม The MathWorks, Inc. Simulink® ซึ่งจะช่วยให้สามารถใช้งานได้ในสภาพแวดล้อม LabVIEW ระบบไดนามิกเหล่านี้สามารถติดตั้งบนอุปกรณ์ระบบปฏิบัติการแบบเรียลไทม์โดยไม่ต้องมีขั้นตอนการแปลงโปรแกรมหลายขั้นตอน เนื่องจากมีฟังก์ชันการทำงานของไลบรารี LabVIEW Real-Time Module ซึ่งเหมาะสำหรับการพัฒนาต้นแบบระบบควบคุมและแอปพลิเคชันการจำลองเฟิร์มแวร์

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


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


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

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

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


ข้าว. 11. โหนดคลิป


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

บูรณาการของรหัสคล้าย C
คุณสามารถใช้โค้ดข้อความตามลำดับในบล็อกไดอะแกรม VIs ได้หลายวิธี วิธีแรกคือ Formula Node ซึ่งสนับสนุนไวยากรณ์คล้าย 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 ได้รวม Import Shared Library Wizard ซึ่งช่วยให้คุณสามารถสร้างหรืออัปเดต wrapper โดยอัตโนมัติเพื่อเรียกใช้ไลบรารีที่เหมาะสม (Windows . ไฟล์ dll, ไฟล์ Mac OS .framework หรือไฟล์ Linux .so)

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

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

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

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

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