سیستم های کنترل خودکار CPU و ایمنی صنعتی. LabView Lab View را بشناسید

سلام همکاران!

در یک مقاله نسبتا کوتاه می خواهم در مورد زبان برنامه نویسی LabVIEW صحبت کنم. این محصول بسیار جالب متأسفانه از محبوبیت بالایی برخوردار نیست و مایلم خلأ موجود را تا حدودی پر کنم.

LabVIEW چیست؟

LabVIEW یکی از محصولات شاخص National Instruments است. اول از همه، لازم به ذکر است که LabVIEW مخفف است که مخفف آن است آزمایشگاهسخنوری Vمجازی منابزار دقیق Eمهندسی دبلیومیز ارک. در حال حاضر در نام می توان جهت گیری به سمت تحقیقات آزمایشگاهی، اندازه گیری ها و جمع آوری داده ها را دنبال کرد. در واقع، ساختن یک سیستم SCADA در LabVIEW تا حدودی ساده تر از استفاده از ابزارهای توسعه "سنتی" است. در این مقاله، من می خواهم نشان دهم که دامنه احتمالی LabVIEW تا حدودی گسترده تر است. این یک زبان برنامه نویسی اساساً متفاوت است، یا اگر می خواهید یک "فلسفه" برنامه نویسی کامل داشته باشید. یک زبان کاربردی که باعث می شود شما متفاوت فکر کنید و گاهی اوقات فرصت های فوق العاده ای را برای توسعه دهنده فراهم می کند. آیا LabVIEW اصلا یک زبان برنامه نویسی است؟ این یک موضوع بحث برانگیز است - هیچ استانداردی در اینجا وجود ندارد، مثلاً ANSI C. در حلقه های باریک توسعه دهندگان، ما می گوییم که به زبان "G" می نویسیم. به طور رسمی، چنین زبانی وجود ندارد، اما این زیبایی این ابزار توسعه است: از نسخه ای به نسخه دیگر، ساختارهای جدید بیشتری به زبان معرفی می شوند. تصور اینکه برای مثال در تناسخ بعدی C، ساختار جدیدی برای حلقه for ظاهر شود، دشوار است. و در LabVIEW این کاملا امکان پذیر است.
با این حال، لازم به ذکر است که LabVIEW در رتبه بندی TIOBE زبان های برنامه نویسی گنجانده شده است و در حال حاضر جایگاه سی ام را اشغال می کند - جایی بین Prolog و Fortran.

NI LabVIEW - تاریخچه خلقت

نشنال اینسترومنتز در سال 1976 توسط سه بنیانگذار - جف کودوسکی، جیمز تروچارد و بیل نولین در شهر آستین، تگزاس آمریکا تأسیس شد. تخصص اصلی شرکت بودند ابزاربرای اندازه گیری و اتوماسیون تولید.
اولین نسخه LabVIEW ده سال پس از تاسیس شرکت - در سال 1986 منتشر شد (نسخه ای برای اپل مک). مهندسان NI تصمیم گرفتند زبان های برنامه نویسی "سنتی" را به چالش بکشند و یک محیط توسعه کاملا گرافیکی ایجاد کردند. جف به ایدئولوگ اصلی رویکرد گرافیکی تبدیل شد. سال به سال نسخه های جدید منتشر شده است. اولین نسخه کراس پلتفرم (شامل ویندوز) نسخه 3 در سال 1993 منتشر شد. نسخه فعلی 8.6 است که سال گذشته منتشر شد.

دفتر مرکزی این شرکت تا به امروز در آستین است. امروزه این شرکت تقریباً چهار هزار نفر را استخدام می کند و دفاتر آن تقریباً در چهل کشور جهان واقع شده اند (یک دفتر در روسیه نیز وجود دارد)

معرفی من به LabVIEW

معرفی من به LabVIEW تقریبا ده سال پیش اتفاق افتاد. من با یک قرارداد جدید شروع به کار کردم و رئیس وقتم یک بسته سی دی به من داد که روی آن نوشته شده بود «حالا تو روی این کار خواهی کرد». LabVIEW را نصب کردم (نسخه پنجم بود) و بعد از مدتی بازی کردن، گفتم که کار جدی نمی توان در این مورد انجام داد، بهتر است از دلفی "به روش قدیمی" استفاده کنید ... که به من گفت - تو فقط طعمش را نچشیده ای یک یا دو هفته کار کنید. بعد از مدتی متوجه می‌شوم که نمی‌توانم روی چیزی غیر از 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 ذخیره می شوند. VIها بلوک های سازنده برنامه LabVIEW هستند. هر برنامه LabVIEW حداقل دارای یک VI است. از نظر زبان C، می‌توانید با خیال راحت یک قیاس با یک تابع رسم کنید، تنها تفاوت این است که در LabVIEW یک تابع در یک فایل قرار دارد (شما همچنین می‌توانید کتابخانه‌های ابزار ایجاد کنید). ناگفته نماند که یک VI را می توان از VI دیگر فراخوانی کرد. اساساً هر VI از دو بخش تشکیل شده است - بلوک دیاگرام و پنل جلو. بلوک دیاگرام یک کد برنامه است (به طور دقیق تر، یک تصویر بصری نمایش گرافیکیکد) و پنل جلویی رابط است. در اینجا یک نمونه کلاسیک از Hello, World! به نظر می رسد:

در قلب LabVIEW پارادایم جریان داده است. در مثال بالا، ترمینال ثابت و نشانگر توسط یک خط به هم متصل شده اند. این خط Wire نام دارد. می توانید آن را "سیم" بنامید. سیم ها داده ها را از یک عنصر به عنصر دیگر منتقل می کنند. کل این مفهوم جریان داده نامیده می شود. ماهیت بلوک دیاگرام گره ها (گره ها) است، خروجی برخی از گره ها به ورودی گره های دیگر متصل می شود. گره تنها زمانی شروع به اجرا می کند که تمام داده های لازم برای کار وارد شود. دو گره در نمودار بالا وجود دارد. یکی از آنها ثابت است. این گره به خودی خود کافی است - بلافاصله شروع به اجرا می کند. گره دوم یک نشانگر است. داده‌هایی را که ثابت ارسال می‌کند نمایش می‌دهد (اما نه بلافاصله، بلکه به محض اینکه داده‌ها از ثابت می‌رسند).

در اینجا یک مثال کمی پیچیده تر است: جمع و ضرب دو عدد. در زبان های سنتی ما چیزی شبیه به این می نویسیم

int a, b, sum, mul;
//...
مجموع = a + b;
mul = a*b;

در LabVIEW چه شکلی به نظر می رسد:

توجه داشته باشید که جمع و ضرب به طور خودکار به صورت موازی انجام می شوند. در یک ماشین دو پردازنده، هر دو پردازنده به طور خودکار فعال می شوند.

و در اینجا ساختار حلقه‌های while / for و if / then / else چگونه است:

همانطور که قبلا ذکر شد، تمام عناصر به صورت موازی اجرا می شوند. نیازی نیست به این فکر کنید که چگونه یک کار را به چندین رشته که می توانند به صورت موازی روی چندین پردازنده اجرا شوند، موازی کنید. AT آخرین نسخه هاحتی می توانید به صراحت مشخص کنید که این یا آن حلقه while باید روی کدام یک از پردازنده ها اجرا شود. اکنون افزونه هایی برای زبان های متنی وجود دارد که به شما امکان می دهد به راحتی از سیستم های چند پردازنده ای پشتیبانی کنید، اما این احتمالاً در هیچ کجا به سادگی در LabVIEW اجرا نمی شود. (خب، من هنوز در مقایسه با زبان های متنی لغزش کردم). اگر قبلاً در مورد چند رشته ای صحبت می کنیم ، باید توجه داشت که یک توسعه دهنده ابزارهای زیادی برای همگام سازی موضوعات - سمافورها ، صف ها ، قرار ملاقات و غیره دارد.

LabVIEW شامل مجموعه ای غنی از عناصر برای ساخت رابط کاربری است. رابط‌ها در دلفی به سرعت به چه چیزی «حمله» شدند، و در 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 مورد نیاز نیست.

توضیحات بیشتر و دقیق تر از ویژگی های بسته خارج از محدوده این مقاله است، اما من فقط پیشنهاد می کنم آن را امتحان کنید (لینک ها در زیر آورده شده است). همانطور که بزرگان گفتند: "... تنها راه یادگیری یک زبان برنامه نویسی جدید، نوشتن برنامه در آن است." خوب، برنامه نویسان با تجربه می توانند دانش به دست آمده را به نیازهای خود تعمیم دهند.

سلام همکاران!

در یک مقاله نسبتا کوتاه می خواهم در مورد زبان برنامه نویسی LabVIEW صحبت کنم. این محصول بسیار جالب متأسفانه از محبوبیت بالایی برخوردار نیست و مایلم خلأ موجود را تا حدودی پر کنم.

LabVIEW چیست؟

LabVIEW یکی از محصولات شاخص National Instruments است. اول از همه، لازم به ذکر است که LabVIEW مخفف است که مخفف آن است آزمایشگاهسخنوری Vمجازی منابزار دقیق Eمهندسی دبلیومیز ارک. در حال حاضر در نام می توان جهت گیری به سمت تحقیقات آزمایشگاهی، اندازه گیری ها و جمع آوری داده ها را دنبال کرد. در واقع، ساختن یک سیستم SCADA در LabVIEW تا حدودی ساده تر از استفاده از ابزارهای توسعه "سنتی" است. در این مقاله، من می خواهم نشان دهم که دامنه احتمالی LabVIEW تا حدودی گسترده تر است. این یک زبان برنامه نویسی اساساً متفاوت است، یا اگر می خواهید یک "فلسفه" برنامه نویسی کامل داشته باشید. یک زبان کاربردی که باعث می شود شما متفاوت فکر کنید و گاهی اوقات فرصت های فوق العاده ای را برای توسعه دهنده فراهم می کند. آیا LabVIEW اصلا یک زبان برنامه نویسی است؟ این یک موضوع بحث برانگیز است - هیچ استانداردی در اینجا وجود ندارد، مثلاً ANSI C. در حلقه های باریک توسعه دهندگان، ما می گوییم که به زبان "G" می نویسیم. به طور رسمی، چنین زبانی وجود ندارد، اما این زیبایی این ابزار توسعه است: از نسخه ای به نسخه دیگر، ساختارهای جدید بیشتری به زبان معرفی می شوند. تصور اینکه برای مثال در تناسخ بعدی C، ساختار جدیدی برای حلقه for ظاهر شود، دشوار است. و در LabVIEW این کاملا امکان پذیر است.
با این حال، لازم به ذکر است که LabVIEW در رتبه بندی TIOBE زبان های برنامه نویسی گنجانده شده است و در حال حاضر جایگاه سی ام را اشغال می کند - جایی بین Prolog و Fortran.

NI LabVIEW - تاریخچه خلقت

نشنال اینسترومنتز در سال 1976 توسط سه بنیانگذار - جف کودوسکی، جیمز تروچارد و بیل نولین در شهر آستین، تگزاس آمریکا تأسیس شد. تخصص اصلی شرکت ابزار اندازه گیری و اتوماسیون تولید بود.
اولین نسخه LabVIEW ده سال پس از تأسیس شرکت - در سال 1986 (این نسخه برای Apple Mac بود) منتشر شد. مهندسان NI تصمیم گرفتند زبان های برنامه نویسی "سنتی" را به چالش بکشند و یک محیط توسعه کاملا گرافیکی ایجاد کردند. جف به ایدئولوگ اصلی رویکرد گرافیکی تبدیل شد. سال به سال نسخه های جدید منتشر شده است. اولین نسخه کراس پلتفرم (شامل ویندوز) نسخه 3 در سال 1993 منتشر شد. نسخه فعلی 8.6 است که سال گذشته منتشر شد.

دفتر مرکزی این شرکت تا به امروز در آستین است. امروزه این شرکت تقریباً چهار هزار نفر را استخدام می کند و دفاتر آن تقریباً در چهل کشور جهان واقع شده اند (یک دفتر در روسیه نیز وجود دارد)

معرفی من به LabVIEW

معرفی من به LabVIEW تقریبا ده سال پیش اتفاق افتاد. من با یک قرارداد جدید شروع به کار کردم و رئیس وقتم یک بسته سی دی به من داد که روی آن نوشته شده بود «حالا تو روی این کار خواهی کرد». LabVIEW را نصب کردم (نسخه پنجم بود) و بعد از مدتی بازی کردن، گفتم که کار جدی نمی توان در این مورد انجام داد، بهتر است از دلفی "به روش قدیمی" استفاده کنید ... که به من گفت - تو فقط طعمش را نچشیده ای یک یا دو هفته کار کنید. بعد از مدتی متوجه می‌شوم که نمی‌توانم روی چیزی غیر از 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 ذخیره می شوند. VIها بلوک های سازنده برنامه LabVIEW هستند. هر برنامه LabVIEW حداقل دارای یک VI است. از نظر زبان C، می‌توانید با خیال راحت یک قیاس با یک تابع رسم کنید، تنها تفاوت این است که در LabVIEW یک تابع در یک فایل قرار دارد (شما همچنین می‌توانید کتابخانه‌های ابزار ایجاد کنید). ناگفته نماند که یک VI را می توان از VI دیگر فراخوانی کرد. اساساً هر VI از دو بخش تشکیل شده است - بلوک دیاگرام و پنل جلو. بلوک دیاگرام کد برنامه است (به طور دقیق تر، نمایش گرافیکی بصری کد)، در حالی که پنل جلویی رابط است. در اینجا یک نمونه کلاسیک از Hello, World! به نظر می رسد:

در قلب LabVIEW پارادایم جریان داده است. در مثال بالا، ترمینال ثابت و نشانگر توسط یک خط به هم متصل شده اند. این خط Wire نام دارد. می توانید آن را "سیم" بنامید. سیم ها داده ها را از یک عنصر به عنصر دیگر منتقل می کنند. کل این مفهوم جریان داده نامیده می شود. ماهیت بلوک دیاگرام گره ها (گره ها) است، خروجی برخی از گره ها به ورودی گره های دیگر متصل می شود. گره تنها زمانی شروع به اجرا می کند که تمام داده های لازم برای کار وارد شود. دو گره در نمودار بالا وجود دارد. یکی از آنها ثابت است. این گره به خودی خود کافی است - بلافاصله شروع به اجرا می کند. گره دوم یک نشانگر است. داده‌هایی را که ثابت ارسال می‌کند نمایش می‌دهد (اما نه بلافاصله، بلکه به محض اینکه داده‌ها از ثابت می‌رسند).

در اینجا یک مثال کمی پیچیده تر است: جمع و ضرب دو عدد. در زبان های سنتی ما چیزی شبیه به این می نویسیم

int a, b, sum, mul;
//...
مجموع = a + b;
mul = a*b;

در LabVIEW چه شکلی به نظر می رسد:

توجه داشته باشید که جمع و ضرب به طور خودکار به صورت موازی انجام می شوند. در یک ماشین دو پردازنده، هر دو پردازنده به طور خودکار فعال می شوند.

و در اینجا ساختار حلقه‌های while / for و if / then / else چگونه است:

همانطور که قبلا ذکر شد، تمام عناصر به صورت موازی اجرا می شوند. نیازی نیست به این فکر کنید که چگونه یک کار را به چندین رشته که می توانند به صورت موازی روی چندین پردازنده اجرا شوند، موازی کنید. در نسخه های اخیر، حتی می توانید به صراحت مشخص کنید که این یا آن حلقه while باید روی کدام یک از پردازنده ها اجرا شود. اکنون افزونه هایی برای زبان های متنی وجود دارد که به شما امکان می دهد به راحتی از سیستم های چند پردازنده ای پشتیبانی کنید، اما این احتمالاً در هیچ کجا به سادگی در LabVIEW اجرا نمی شود. (خب، من هنوز در مقایسه با زبان های متنی لغزش کردم). اگر قبلاً در مورد چند رشته ای صحبت می کنیم ، باید توجه داشت که یک توسعه دهنده ابزارهای زیادی برای همگام سازی موضوعات - سمافورها ، صف ها ، قرار ملاقات و غیره دارد.

LabVIEW شامل مجموعه ای غنی از عناصر برای ساخت رابط کاربری است. رابط‌ها در دلفی به سرعت به چه چیزی «حمله» شدند، و در 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 نیازی نیست.

توضیحات بیشتر و دقیق تر از ویژگی های بسته خارج از محدوده این مقاله است، اما من فقط پیشنهاد می کنم آن را امتحان کنید (لینک ها در زیر آورده شده است). همانطور که بزرگان گفتند: "... تنها راه یادگیری یک زبان برنامه نویسی جدید، نوشتن برنامه در آن است." خوب، برنامه نویسان با تجربه می توانند دانش به دست آمده را به نیازهای خود تعمیم دهند.

تقریباً همه توسعه دهندگان دستگاه های میکروکنترلر، چه آماتور یا حرفه ای، دیر یا زود نیاز دارند یک دستگاه میکروکنترلر را به «برادر بزرگ» خود، یعنی رایانه شخصی متصل کنند. اینجاست که این سوال پیش می آید که برای تبادل با میکروکنترلر، تحلیل و پردازش داده های دریافتی از آن از چه نرم افزاری استفاده کنیم؟ اغلب، برای تبادل MK با یک کامپیوتر، از رابط و پروتکل RS232 استفاده می کنند - قدیمی خوب پورت COMدر یک اجرا یا دیگری

در سمت کامپیوتر، برنامه های ترمینال مختلفی استفاده می شود که صدها مورد از آنها وجود دارد. اما این برنامه ها فقط دریافت و انتقال اطلاعات را فراهم می کنند. پردازش و تجسم آن به شکل بصری دشوار است.

برخی از افراد چنین نرم افزارهایی را به تنهایی در برخی از زبان های برنامه نویسی (Delphi، C ++) می نویسند و به آنها عملکردهای لازم را می دهند. اما این کار آسان نیست، شما باید علاوه بر زبان خود، دستگاه را نیز بشناسید سیستم عامل، روش های کار با پورت های ارتباطی، بسیاری از جزئیات فنی دیگر که توجه را از چیز اصلی منحرف می کند - اجرای الگوریتم برنامه. به طور کلی، در طول مسیر یک برنامه نویس ویندوز/یونیکس باشید.

در پس زمینه این رویکردها، مفهوم ابزار مجازی (vi) به شدت متفاوت است. این مقاله بر روی محصول نرم افزار Nationals Instruments LabView تمرکز خواهد کرد. من تازه شروع به تسلط بر این محصول فوق العاده کرده ام، بنابراین می توانم اشتباهات و خطاها را مرتکب شوم. متخصصان اصلاح خواهند کرد :-)) در واقع، LabView چیست؟

LabView یک محیط توسعه و پلتفرم برای اجرای برنامه های نوشته شده است زبان گرافیکیبرنامه نویسی "G" شرکت National Instruments.

صحبت کردن زبان ساده, LabView - این محیطی برای ایجاد برنامه های کاربردی برای وظایف جمع آوری، پردازش، تجسم اطلاعات از دستگاه های مختلف، امکانات آزمایشگاهی و غیره است. همچنین برای مدیریت فرآیندهای تکنولوژیکیو دستگاه ها با این حال، با کمک LabView، می توانید نرم افزار کاربردی کاملاً معمولی ایجاد کنید. هدف من توصیف دقیق این محصول و کار با آن نیست. LabView هزاران صفحه مستند عالی و صدها کتاب دارد. اینترنت مملو از منابع مرتبط با LabView است که در آن می توانید پاسخ تمام سوالات خود را بیابید.

هدف مقاله این است که نشان دهد در مقایسه با برنامه نویسی سنتی چقدر می توانید برنامه های کاربردی برای رایانه شخصی ایجاد کنید و LabView چه قدرتی دارد. (در واقع قابل بحث است، زیرا در برنامه نویسی سنتی، روی همان دلفی، انجام این کار دشوارتر نیست. و از نظر کارایی، اگر نگوییم بهتر است، به سختی بدتر است. اما برای این کار، شما باید دلفی را بسیار طولانی تر مطالعه کنید. همه چیز را مطالعه کنید. سریع و واضح است تقریباً بلافاصله چند کتابچه راهنما را مطالعه کردم و پیش از آن همه نوع صفحه را حصار کردم. بنابراین برای برنامه نویسان این مانند پای پنجم سگ است، اما برای رفقای دور از رایانه ای مانند من، همین است. ساعت، وقتی برای اولین بار LabView را دیدم، یک سیستم بی رحمانه با استفاده از کنترل دستی آبیاری و گرمایش برای یک گلخانه کنفی ساختم. با انواع کنترلرهای PID. من به پتانسیومترها و سنسورهای پایه آزمایشگاهی که در فناوری ما بود آوردم و این واحد جهنمی را راه اندازی کرد. و همه چیز فوراً بدون اشکال زدایی کار کرد. اتفاقاً همه تجهیزات برخورد دهنده هادرون در LabView و همچنین تجهیزات علمی زیادی کار می کنند. توجه داشته باشید DI HALT)به هر حال، اکثر مهندسان الکترونیک با برنامه نویسی برای رایانه شخصی بیگانه هستند، درست است؟ این چیزی است که ما در حال تلاش برای رفع آن هستیم. برای اینکه اسب های خلاء کروی را مطالعه نکنیم، خودمان را تنظیم کرده و یک کار ساده را اجرا می کنیم. کار واقعا ساده است، اما بر اساس آن، می توانید اصول اولیه برنامه نویسی در LabView را درک کنید. ما از LabView نسخه 2010 استفاده خواهیم کرد. برای نسخه های دیگر، تفاوت ها حداقل خواهد بود.

یک وظیفه
ما یک هزینه داریم میکروکنترلر AVRاز طریق RS232 به کامپیوتر متصل می شود. کنترلر با سیستم عامل بارگذاری می شود که بر اساس آن کنترل کننده مقدار ولتاژ را در یکی از ورودی های ADC اندازه گیری می کند و کد ADC (از 0 تا 1023) را از طریق یک کانال سریال به رایانه ارسال می کند. باید یک برنامه کامپیوتری بنویسید که جریان داده را از ADC دریافت کند، کد ADC را نمایش دهد، کد ADC را به مقدار ولتاژ بر حسب ولت تبدیل کند، مقدار ولتاژ را بر حسب ولت نمایش دهد، تغییر ولتاژ را در طول زمان رسم کند.

خوب، احتمالاً شعر کافی است، شاید شروع کنیم!

بنابراین آنچه برای کار نیاز داریم:

  • در واقع خود LabView. می توانید نسخه آزمایشی آن را از وب سایت NI دانلود کنید: http://www.ni.com/trylabview/. همچنین نسخه دزدی به راحتی در گوگل جستجو می شود. به هر حال، در rutracker.org، علاوه بر ورطه دزدان دریایی، یک نسخه لینوکس نیز وجود دارد که به نظر می رسد ثبت نام برای آن اصلاً لازم نیست. NI تصمیم گرفت منبع باز ملاقات کند؟
  • همچنین باید کامپوننت NI VISA را دانلود کنید. بدون این برنامه، LabView پورت COM را روی رایانه «نمی‌بیند». VISA شامل توابعی برای کار با پورت های ارتباطی و موارد دیگر است. می توانید آن را از joule.ni.com دانلود کنید. LabView و VISA را نصب کنید. نصب این نرم افزار به صورت استاندارد است، هیچ ویژگی خاصی ندارد.

اول از همه باید مطمئن شویم که VISA یک پورت COM در سیستم پیدا کرده و با آن به درستی کار می کند. شما می توانید این را به صورت زیر بررسی کنید: برنامه Measurement & Automation را اجرا کنید. با LabView همراه است. اگر نصب نیست، می توانید آن را به صورت دستی نصب کنید. روی دیسک (تصویر با LabView آن را دارد).

در سمت چپ پنجره، سخت افزار موجود در سیستم را می بینیم. در میان چیزهای دیگر، ما پورت COM خود را پیدا می کنیم. در سمت راست دکمه پنل تست Open Visa وجود دارد. با آن می توانید دستگاه انتخاب شده را تست کنید. در مورد پورت COM، می توانید یک دنباله کاراکتر پیش فرض یا دلخواه را در آنجا ارسال یا دریافت کنید. اگر همه چیز با پورت درست است، می توانید مستقیماً به ایجاد برنامه ما ادامه دهید.

ما LabView را شروع می کنیم. در پنجره Getting Started، Blank Vi را انتخاب کنید که به معنای ابزار مجازی جدید است.

ما چیزی شبیه به این دریافت می کنیم:

خیله خب پس ما چه چیزی داریم. فضای کاری شامل دو پانل بزرگ پنل جلویی و بلوک دیاگرام است. در پنل جلویی، رابط برنامه خود را با استفاده از کنترل‌های پنل Controls می‌سازیم. این عناصر دستگیره های مقاومت های متغیر آشنا برای ما، LED ها، دکمه ها، دستگاه های اشاره گر، صفحه نمایش اسیلوسکوپ و غیره هستند. آنها برای وارد کردن اطلاعات به برنامه و نمایش نتایج اجرا هستند. در پنل Block Diagram، کد برنامه به طور مستقیم قرار دارد. در اینجا باید کمی به عقب برگردیم و اصل برنامه نویسی در LabView را توضیح دهیم. یک مثال کوچک مرسوم است که کار بر روی برنامه را با طراحی رابط و سپس پیاده سازی الگوریتم کار بر روی نمودار بلوک شروع می کنیم. بیایید ساده ترین برنامه را برای ضرب دو عدد بسازیم. برای انجام این کار، با کشیدن سه کنترل، مثلاً کلیدهای Knob و Numeric Indicator را در پنل جلویی قرار می دهیم تا نتیجه نمایش داده شود.

ما رابط را همانطور که دلمان می خواهد شکل می دهیم، به عنوان مثال:

خوب، اکنون باید ضرب واقعی را پیاده سازی کنیم. به پنل Block diagram بروید و ببینید که برای هر یک از کنترل های ما یک آیکون مربوطه ایجاد شده است. بهتر است بلافاصله حالت نمایش را به شکل پایانه ها تغییر دهید. نمودار چندان درهم و برهم نخواهد بود. علاوه بر این در پایانه ها، نوع داده هایی که این یا آن کنترل با آن کار می کند قابل مشاهده است. برای انجام این کار، روی نماد کلیک راست کرده و تیک View as icon را بردارید. در بالای صفحه، کنترل به صورت یک ترمینال، در پایین و در سمت راست به صورت یک نماد است. برای پیکربندی نمای بلوک دیاگرام به صورت پیش‌فرض، باید آیتم منوی Tools-> Options را انتخاب کنید، Block diagram را در سمت چپ انتخاب کنید و علامت Place panel front panels as icons را بردارید. برای نمایش کمک زمینه بسیار مفید است. می توانید آن را با ترکیب Ctrl + H نمایش دهید. این پنجره اطلاعاتی در مورد شیئی که مکان نما در حال حاضر روی آن قرار گرفته است را نمایش می دهد. مگا مورد مفید

حالا باید تابع ضرب را به بلوک دیاگرام اضافه کنیم. روی بلوک دیاگرام کلیک راست کرده و تابع Multiply را از پالت Numeric انتخاب کنید. بیایید آن را روی یک نمودار قرار دهیم. شایان ذکر است که LabView دارای مجموعه ای عظیم از ویژگی ها است. این شامل ریاضیات مختلف، آمار، تجزیه و تحلیل سیگنال، کنترل PID، پردازش ویدئو، صدا و تصویر است. شما نمی توانید همه چیز را فهرست کنید.

مهمترین مفهوم در برنامه نویسی LabView مفهوم DataFlow است. نتیجه نهایی این است: برخلاف زبان های برنامه نویسی امری، که در آنها دستورات به ترتیب متوالی اجرا می شوند، در LabView توابع تنها زمانی کار می کنند که اطلاعاتی در مورد همه ورودی های تابع وجود داشته باشد (هر تابع دارای مقادیر ورودی و خروجی است). تنها پس از آن تابع الگوریتم خود را پیاده سازی می کند و نتیجه به خروجی ارسال می شود که می تواند توسط تابع دیگری استفاده شود. بنابراین، در همان VI، توابع می توانند مستقل از یکدیگر کار کنند.

حال برای احیای مثال خود باید این مفهوم را دنبال کنیم و مقادیر عددی را که کنترل ها را تنظیم کرده ایم به ورودی تابع بدهیم و نتیجه را از خروجی بگیریم و نمایش دهیم.

برای اتصال عناصر در یک بلوک دیاگرام، از ابزار Connect Wire از پانل Tools استفاده کنید. آن را انتخاب کنید و اتصالات ما را رسم کنید.

این همه است، شما می توانید این برنامه احمقانه را برای اجرای چرخه ای اجرا کنید و دستگیره ها را بچرخانید و نتیجه ضرب را مشاهده کنید.

همانطور که می بینید، به نظر می رسد هیچ چیز پیچیده ای وجود ندارد. اما در عین حال، LabView به شما اجازه می دهد تا مشکلات هر پیچیدگی را حل کنید! Ept، سیستم کنترل TANK روی آن ساخته شده است! به طوری که.

خب حالا بیایید بیشتر کار کنیم چیزهای جالب، یعنی ما ساده ترین ولت متر خود را می سازیم که در همان ابتدا در مورد آن صحبت کردم.

پس چه کار باید بکنیم. ابتدا باید پیکربندی و مقداردهی اولیه کنید درگاه سریال. یک حلقه بی پایان را شروع کنید. در حلقه از تابع برای خواندن از پورت و دریافت اطلاعات استفاده می کنیم. بیایید اطلاعات را برای نمایش روی نمودار تبدیل کنیم، کد ADC را دوباره به مقدار ولتاژ بر حسب ولت محاسبه کنیم. هنگام خروج از حلقه، پورت را می بندیم.
بنابراین در رابط برنامه ما هیچ عنصر کنترلی به جز دکمه Stop وجود نخواهد داشت، اما فقط نتیجه نمایش داده می شود، ما این کار را انجام می دهیم: ابتدا یک نمودار بلوک ایجاد می کنیم و سپس عناصر گم شده را به آن اضافه می کنیم. پنل جلویی اگرچه باید برعکس عمل کنید! اما در این مورد، راحت تر است.

در پنل بلوک دیاگرام، عنصر while Loop را از پالت Structures قرار می دهیم، این حلقه بی نهایت ما است. منطقه را با یک قاب چرخه، به اندازه ای که در داخل الگوریتم قرار می گیرد، دور می زنیم. یک نقطه قرمز در گوشه پایین سمت راست وجود دارد، روی آن کلیک راست کرده و Create Control را انتخاب کنید. دکمه Stop بلافاصله در پنل جلویی ظاهر می شود. وقتی روی آن کلیک کنید، برنامه ما به پایان می رسد.

حال در خارج از حلقه باید توابع اولیه و بستن پورت را قرار دهیم. مقداردهی اولیه در سمت چپ، بسته شدن در سمت راست. مجدداً کلیک راست کرده و توابع Configure Port، Read و Close را انتخاب کنید. این توابع در پالت Instrument I/O –> Serial یافت می شوند. تابع خواندن در داخل حلقه قرار می گیرد. خروجی ها و ورودی توابع را با استفاده از سیم پیچ با سیم وصل می کنیم. برای تابع Read باید تعداد بایت هایی که می پذیرد را مشخص کنیم. روی ورودی وسط تابع Read راست کلیک می کنیم و Create-> Constant را انتخاب می کنیم، یک مقدار مثلاً 200 را وارد می کنیم. در این مرحله باید مانند تصویر ظاهر شود.

شما باید کنترل هایی را برای تابع مقداردهی اولیه پورت ایجاد کنید. دو مورد برای ما کاملاً کافی است - سرعت پورت و نام پورت. همانطور که یک ثابت برای تابع خواندن ایجاد کردیم، کنترل ها را نیز ایجاد می کنیم. RMB در ورودی های مورد نیاز تابع و مورد مقداردهی اولیه

Create->Control.

ما به دو ورودی علاقه مندیم: نام منبع ویزاو نرخ باد(پیش فرض 9600). حال به پنل جلویی می رویم و اجزای لازم یعنی صفحه رسم نمودار و برچسب های نمایش کد ADC و ولتاژ را بر حسب ولت اضافه می کنیم.
بر این اساس، اینها عناصر نمودار شکل موج از پالت Graph و دو عنصر Numeric Indicator از پالت Numeric هستند.

بیایید به نمودار بلوک برگردیم و عناصری که در داخل حلقه ظاهر شده اند را جابجا کنیم. ما در حال تکمیل هستیم! تنها چیزی که وجود دارد این است که ما هنوز باید رشته کاراکترهایی را که از خروجی تابع Read می آیند به قالبی تبدیل کنیم که اندیکاتورهای ما هضم شوند. و همچنین برای پیاده سازی ساده ترین ریاضیات برای ترجمه کد ADC به ولت. در زیر اسکرین شات هایی از پنل جلویی و بلوک دیاگرام در این مرحله مشاهده می شود:

برای تبدیل یک رشته، از تابع Scan from string از پالت String استفاده می کنیم. داخل حلقه قرار می دهیم. حالا ریاضی برای تبدیل کد ADC به مقدار ولتاژ بر حسب ولت، باید کد را در مقدار ولتاژ مرجع ضرب کنید (در مورد من پنج ولت است) و مقدار حاصل را بر 1023 تقسیم کنید (زیرا ADC دارای یک ظرفیت 10 بیتی). توابع ضروری ضرب و تقسیم و همچنین ثابت (5 و 1023) در یک حلقه قرار خواهند گرفت. من از هر اتصال اسکرین شات نمی گیرم، زیرا از قبل تصاویر dofiga وجود دارد. صفحه نهایی تمام اتصالات را می دهم. همه چیز در آنجا بسیار ساده است.

فکر می کنم همه چیز واضح است، اگر سوالی دارید در نظرات بپرسید. بیایید با هم بفهمیم :-))) در این بین برنامه آماده است.

بیایید به رابط کاربری خود برویم و نمودار را کمی تغییر دهیم. مقدار پایین را در محور Y انتخاب کنید و آن را روی 0 قرار دهید. مقدار بالایی را انتخاب کرده و آن را روی 5 قرار دهید. بنابراین، مقیاس ما در محور Y در محدوده 0-5 ولت است. خوب ، پورت COM را انتخاب می کنیم ، نرخ ارز را وارد می کنیم ، برنامه خود را با استفاده از دکمه فلش اجرا می کنیم و مقاومت روی برد را به شدت می چرخانیم ، در حالی که نتیجه کار خود را روی صفحه مشاهده می کنیم. بر روی دکمه Stop کلیک کنید تا برنامه متوقف شود.

همانطور که می بینید، همه چیز بسیار ساده است. این مثالاین تنها بخش کوچکی از همه امکانات LabView است. اگر این مقاله به کسی کمک کند، خوشحال خواهم شد. فقط در نظرات سخت نگیرید، من یک حرفه ای نیستم. یک ترفند کوچک دیگر. اگر نمودار شبیه Cthulhu است، می توانید از دکمه CleanUp Diagram استفاده کنید. این نمودار را به شکلی کم و بیش الهی در می آورد، اما باید با احتیاط از آن استفاده کرد. در اینجا نتیجه کار او است

و همچنین می توانید قطعات را در بلوک های کاربردی ترکیب کنید تا مدار را به هم نریزند.

تقریباً همه توسعه دهندگان دستگاه های میکروکنترلر، چه آماتور یا حرفه ای، دیر یا زود نیاز دارند یک دستگاه میکروکنترلر را به «برادر بزرگ» خود، یعنی رایانه شخصی متصل کنند. اینجاست که این سوال پیش می آید که برای تبادل با میکروکنترلر، تحلیل و پردازش داده های دریافتی از آن از چه نرم افزاری استفاده کنیم؟ اغلب، برای مبادله MK با یک کامپیوتر، از رابط و پروتکل RS232 استفاده می کنند - پورت خوب قدیمی COM در یک پیاده سازی یا دیگری.

در سمت کامپیوتر، برنامه های ترمینال مختلفی استفاده می شود که صدها مورد از آنها وجود دارد. اما این برنامه ها فقط دریافت و انتقال اطلاعات را فراهم می کنند. پردازش و تجسم آن به شکل بصری دشوار است.

برخی از افراد چنین نرم افزارهایی را به تنهایی در برخی از زبان های برنامه نویسی (Delphi، C ++) می نویسند و به آنها عملکردهای لازم را می دهند. اما این کار آسان نیست، شما باید علاوه بر زبان خود، دستگاه سیستم عامل، نحوه کار با پورت های ارتباطی، و بسیاری از ظرافت های فنی دیگر که از چیز اصلی - اجرای برنامه - منحرف می شود، بدانید. الگوریتم به طور کلی، در طول مسیر یک برنامه نویس ویندوز/یونیکس باشید.

در پس زمینه این رویکردها، مفهوم ابزار مجازی (vi) به شدت متفاوت است. این مقاله بر روی محصول نرم افزار Nationals Instruments LabView تمرکز خواهد کرد. من تازه شروع به تسلط بر این محصول فوق العاده کرده ام، بنابراین می توانم اشتباهات و خطاها را مرتکب شوم. متخصصان اصلاح خواهند کرد :-)) در واقع، LabView چیست؟

LabView یک محیط توسعه و پلتفرم برای اجرای برنامه های نوشته شده به زبان برنامه نویسی گرافیکی G National Instruments است.

به زبان ساده، LabView محیطی برای ایجاد برنامه های کاربردی برای کارهای جمع آوری، پردازش، تجسم اطلاعات از ابزارهای مختلف، تنظیمات آزمایشگاهی و غیره است. و همچنین برای کنترل فرآیندها و دستگاه های تکنولوژیکی. با این حال، با کمک LabView، می توانید نرم افزار کاربردی کاملاً معمولی ایجاد کنید. هدف من توصیف دقیق این محصول و کار با آن نیست. LabView هزاران صفحه مستند عالی و صدها کتاب دارد. اینترنت مملو از منابع مرتبط با LabView است که در آن می توانید پاسخ تمام سوالات خود را بیابید.

هدف مقاله این است که نشان دهد در مقایسه با برنامه نویسی سنتی چقدر می توانید برنامه های کاربردی برای رایانه شخصی ایجاد کنید و LabView چه قدرتی دارد. (در واقع قابل بحث است، زیرا در برنامه نویسی سنتی، روی همان دلفی، انجام این کار دشوارتر نیست. و از نظر کارایی، اگر نگوییم بهتر است، به سختی بدتر است. اما برای این کار، شما باید دلفی را بسیار طولانی تر مطالعه کنید. همه چیز را مطالعه کنید. سریع و واضح است تقریباً بلافاصله "من چند کتابچه راهنما را مطالعه کردم و پیش از آن همه نوع شماره گیری را حصار کردم. بنابراین برای برنامه نویسان این مانند پای پنجم سگ است، اما برای رفقای دور از کامپیوتر که من هستم، همین است. در نیم ساعت، وقتی برای اولین بار LabView را دیدم، یک سیستم بی رحمانه با استفاده از کنترل دستی آبیاری و گرمایشی نازک برای گلخانه کنفی ساختم. با انواع کنترلرهای PID. من به پتانسیومترها و سنسورهای پایه آزمایشگاهی که در آن بود، آوردم. متخصص ما و این واحد جهنمی را راه اندازی کرد. و همه چیز بلافاصله و بدون اشکال زدایی کار کرد. اتفاقاً، تمام تجهیزات برخورد دهنده هادرون در LabView و همچنین تجهیزات علمی زیادی کار می کنند. توجه داشته باشید DI HALT)به هر حال، اکثر مهندسان الکترونیک با برنامه نویسی برای رایانه شخصی بیگانه هستند، درست است؟ این چیزی است که ما در حال تلاش برای رفع آن هستیم. برای اینکه اسب های خلاء کروی را مطالعه نکنیم، خودمان را تنظیم کرده و یک کار ساده را اجرا می کنیم. کار واقعا ساده است، اما بر اساس آن، می توانید اصول اولیه برنامه نویسی در LabView را درک کنید. ما از LabView نسخه 2010 استفاده خواهیم کرد. برای نسخه های دیگر، تفاوت ها حداقل خواهد بود.

یک وظیفه
ما یک برد با میکروکنترلر AVR داریم که از طریق RS232 به کامپیوتر متصل است. کنترلر با سیستم عامل بارگذاری می شود که بر اساس آن کنترل کننده مقدار ولتاژ را در یکی از ورودی های ADC اندازه گیری می کند و کد ADC (از 0 تا 1023) را از طریق یک کانال سریال به رایانه ارسال می کند. باید یک برنامه کامپیوتری بنویسید که جریان داده را از ADC دریافت کند، کد ADC را نمایش دهد، کد ADC را به مقدار ولتاژ بر حسب ولت تبدیل کند، مقدار ولتاژ را بر حسب ولت نمایش دهد، تغییر ولتاژ را در طول زمان رسم کند.

خوب، احتمالاً شعر کافی است، شاید شروع کنیم!

بنابراین آنچه برای کار نیاز داریم:

  • در واقع خود LabView. می توانید نسخه آزمایشی آن را از وب سایت NI دانلود کنید: http://www.ni.com/trylabview/. همچنین نسخه دزدی به راحتی در گوگل جستجو می شود. به هر حال، در rutracker.org، علاوه بر ورطه دزدان دریایی، یک نسخه لینوکس نیز وجود دارد که به نظر می رسد ثبت نام برای آن اصلاً لازم نیست. NI تصمیم گرفت منبع باز ملاقات کند؟
  • همچنین باید کامپوننت NI VISA را دانلود کنید. بدون این برنامه، LabView پورت COM را روی رایانه «نمی‌بیند». VISA شامل توابعی برای کار با پورت های ارتباطی و موارد دیگر است. می توانید آن را از joule.ni.com دانلود کنید. LabView و VISA را نصب کنید. نصب این نرم افزار به صورت استاندارد است، هیچ ویژگی خاصی ندارد.

اول از همه باید مطمئن شویم که VISA یک پورت COM در سیستم پیدا کرده و با آن به درستی کار می کند. شما می توانید این را به صورت زیر بررسی کنید: برنامه Measurement & Automation را اجرا کنید. با LabView همراه است. اگر نصب نیست، می توانید آن را به صورت دستی نصب کنید. روی دیسک (تصویر با LabView آن را دارد).

ما چیزی شبیه به این دریافت می کنیم:


خیله خب پس ما چه چیزی داریم. فضای کاری شامل دو پانل بزرگ پنل جلویی و بلوک دیاگرام است. در پنل جلویی، رابط برنامه خود را با استفاده از کنترل‌های پنل Controls می‌سازیم. این عناصر دستگیره های مقاومت های متغیر آشنا برای ما، LED ها، دکمه ها، دستگاه های اشاره گر، صفحه نمایش اسیلوسکوپ و غیره هستند. آنها برای وارد کردن اطلاعات به برنامه و نمایش نتایج اجرا هستند. در پنل Block Diagram، کد برنامه به طور مستقیم قرار دارد. در اینجا باید کمی به عقب برگردیم و اصل برنامه نویسی در LabView را توضیح دهیم. یک مثال کوچک مرسوم است که کار بر روی برنامه را با طراحی رابط و سپس پیاده سازی الگوریتم کار بر روی نمودار بلوک شروع می کنیم. بیایید ساده ترین برنامه را برای ضرب دو عدد بسازیم. برای انجام این کار، با کشیدن سه کنترل، مثلاً کلیدهای Knob و Numeric Indicator را در پنل جلویی قرار می دهیم تا نتیجه نمایش داده شود.

خوب، اکنون باید ضرب واقعی را پیاده سازی کنیم. به پنل Block diagram بروید و ببینید که برای هر یک از کنترل های ما یک آیکون مربوطه ایجاد شده است. بهتر است بلافاصله حالت نمایش را به شکل پایانه ها تغییر دهید. نمودار چندان درهم و برهم نخواهد بود. علاوه بر این در پایانه ها، نوع داده هایی که این یا آن کنترل با آن کار می کند قابل مشاهده است. برای انجام این کار، روی نماد کلیک راست کرده و تیک View as icon را بردارید. در بالای صفحه، کنترل به صورت یک ترمینال، در پایین و در سمت راست به صورت یک نماد است. برای پیکربندی نمای بلوک دیاگرام به صورت پیش‌فرض، باید آیتم منوی Tools-> Options را انتخاب کنید، Block diagram را در سمت چپ انتخاب کنید و علامت Place panel front panels as icons را بردارید. برای نمایش کمک زمینه بسیار مفید است. می توانید آن را با ترکیب Ctrl + H نمایش دهید. این پنجره اطلاعاتی در مورد شیئی که مکان نما در حال حاضر روی آن قرار گرفته است را نمایش می دهد. مگا مورد مفید

مهمترین مفهوم در برنامه نویسی LabView مفهوم DataFlow است. نتیجه نهایی این است: برخلاف زبان های برنامه نویسی امری، که در آنها دستورات به ترتیب متوالی اجرا می شوند، در LabView توابع تنها زمانی کار می کنند که اطلاعاتی در مورد همه ورودی های تابع وجود داشته باشد (هر تابع دارای مقادیر ورودی و خروجی است). تنها پس از آن تابع الگوریتم خود را پیاده سازی می کند و نتیجه به خروجی ارسال می شود که می تواند توسط تابع دیگری استفاده شود. بنابراین، در همان VI، توابع می توانند مستقل از یکدیگر کار کنند.

حال برای احیای مثال خود باید این مفهوم را دنبال کنیم و مقادیر عددی را که کنترل ها را تنظیم کرده ایم به ورودی تابع بدهیم و نتیجه را از خروجی بگیریم و نمایش دهیم.

برای اتصال عناصر در یک بلوک دیاگرام، از ابزار Connect Wire از پانل Tools استفاده کنید. آن را انتخاب کنید و اتصالات ما را رسم کنید.

همانطور که می بینید، به نظر می رسد هیچ چیز پیچیده ای وجود ندارد. اما در عین حال، LabView به شما اجازه می دهد تا مشکلات هر پیچیدگی را حل کنید! Ept، سیستم کنترل TANK روی آن ساخته شده است! به طوری که.

خوب، حالا بیایید کارهای جالب تری انجام دهیم، یعنی ساده ترین ولت متر خود را که در همان ابتدا در مورد آن صحبت کردم، می سازیم.

پس چه کار باید بکنیم. ابتدا باید پورت سریال را پیکربندی و مقداردهی اولیه کنید. یک حلقه بی پایان را شروع کنید. در حلقه از تابع برای خواندن از پورت و دریافت اطلاعات استفاده می کنیم. بیایید اطلاعات را برای نمایش روی نمودار تبدیل کنیم، کد ADC را دوباره به مقدار ولتاژ بر حسب ولت محاسبه کنیم. هنگام خروج از حلقه، پورت را می بندیم.
بنابراین در رابط برنامه ما هیچ عنصر کنترلی به جز دکمه Stop وجود نخواهد داشت، اما فقط نتیجه نمایش داده می شود، ما این کار را انجام می دهیم: ابتدا یک نمودار بلوک ایجاد می کنیم و سپس عناصر گم شده را به آن اضافه می کنیم. پنل جلویی اگرچه باید برعکس عمل کنید! اما در این مورد، راحت تر است.

در پنل بلوک دیاگرام، عنصر while Loop را از پالت Structures قرار می دهیم، این حلقه بی نهایت ما است. منطقه را با یک قاب چرخه، به اندازه ای که در داخل الگوریتم قرار می گیرد، دور می زنیم. یک نقطه قرمز در گوشه پایین سمت راست وجود دارد، روی آن کلیک راست کرده و Create Control را انتخاب کنید. دکمه Stop بلافاصله در پنل جلویی ظاهر می شود. وقتی روی آن کلیک کنید، برنامه ما به پایان می رسد.

شما باید کنترل هایی را برای تابع مقداردهی اولیه پورت ایجاد کنید. دو مورد برای ما کافی است - سرعت پورت و نام پورت. همانطور که یک ثابت برای تابع خواندن ایجاد کردیم، کنترل ها را نیز ایجاد می کنیم. RMB در ورودی های مورد نیاز تابع و مورد مقداردهی اولیه

Create->Control.

Create->Control.

ما به دو ورودی علاقه مندیم: نام منبع ویزاو نرخ باد(پیش فرض 9600). حال به پنل جلویی می رویم و اجزای لازم یعنی صفحه رسم نمودار و برچسب های نمایش کد ADC و ولتاژ را بر حسب ولت اضافه می کنیم.
بر این اساس، اینها عناصر نمودار شکل موج از پالت Graph و دو عنصر Numeric Indicator از پالت Numeric هستند.

بیایید به نمودار بلوک برگردیم و عناصری که در داخل حلقه ظاهر شده اند را جابجا کنیم. ما در حال تکمیل هستیم! تنها چیزی که وجود دارد این است که ما هنوز باید رشته کاراکترهایی را که از خروجی تابع Read می آیند به قالبی تبدیل کنیم که اندیکاتورهای ما هضم شوند. و همچنین برای پیاده سازی ساده ترین ریاضیات برای ترجمه کد ADC به ولت. در زیر اسکرین شات هایی از پنل جلویی و بلوک دیاگرام در این مرحله مشاهده می شود:



برای تبدیل یک رشته، از تابع Scan from string از پالت String استفاده می کنیم. داخل حلقه قرار می دهیم. حالا ریاضی برای تبدیل کد ADC به مقدار ولتاژ بر حسب ولت، باید کد را در مقدار ولتاژ مرجع ضرب کنید (در مورد من پنج ولت است) و مقدار حاصل را بر 1023 تقسیم کنید (زیرا ADC دارای یک ظرفیت 10 بیتی). توابع ضروری ضرب و تقسیم و همچنین ثابت (5 و 1023) در یک حلقه قرار خواهند گرفت. من از هر اتصال اسکرین شات نمی گیرم، زیرا از قبل تصاویر dofiga وجود دارد. صفحه نهایی تمام اتصالات را می دهم. همه چیز در آنجا بسیار ساده است.


فکر می کنم همه چیز واضح است، اگر سوالی دارید در نظرات بپرسید. بیایید با هم بفهمیم :-))) در این بین برنامه آماده است.

بیایید به رابط کاربری خود برویم و نمودار را کمی تغییر دهیم. مقدار پایین را در محور Y انتخاب کنید و آن را روی 0 قرار دهید. مقدار بالایی را انتخاب کرده و آن را روی 5 قرار دهید. بنابراین، مقیاس ما در محور Y در محدوده 0-5 ولت است. خوب ، پورت COM را انتخاب می کنیم ، نرخ ارز را وارد می کنیم ، برنامه خود را با استفاده از دکمه فلش اجرا می کنیم و مقاومت روی برد را به شدت می چرخانیم ، در حالی که نتیجه کار خود را روی صفحه مشاهده می کنیم. بر روی دکمه Stop کلیک کنید تا برنامه متوقف شود.

و همچنین می توانید قطعات را در بلوک های کاربردی ترکیب کنید تا مدار را به هم نریزند.



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 را نشان می دهد.این نمودار از دو گره (جمع و ضرب) و سه ورودی (A، B و C) تشکیل شده است. ابتدا A و B اضافه می شوند. کد گره ضرب تا زمانی که هر دو پایانه ورودی آن داده را دریافت نکرده باشند اجرا نمی شود و بنابراین منتظر نتیجه گره جمع می شود. به محض رسیدن نتیجه جمع به اولین ورودی گره ضرب، کد (A+B)*C آن اجرا می شود.

اگرچه زبان G به شما اجازه می دهد تا نوع داده را به صراحت مشخص کنید، اما یکی از تفاوت های قابل توجه این زبان با سایر زبان ها وجود هادی هایی است که عملکرد متغیرها را انجام می دهند. به جای انتقال متغیرها بین توابع، انتقال داده با اتصالات سیمی تعریف می شود. از سوی دیگر، زبان G ساختارهای استانداردی برای زبان‌های دیگر نیز دارد، مانند حلقه‌های شرطی، حلقه‌های شمارنده، ساختارهای انتخاب، پاسخ‌های تماس و توابع بولی.

راه اندازی تعاملی به عنوان پایه برنامه نویسی
در سال 2003، National Instruments NI LabVIEW 7 Express را منتشر کرد که پیشگام فناوری Express VI بود، فناوری طراحی شده برای ساده‌تر کردن فرآیند توسعه الگوریتم‌های کاربردی. برخلاف VIهای معمولی، Express VIها ساختارهای زبانی انتزاعی هستند که یک تکنیک برنامه نویسی را بر اساس پیاده سازی می کنند راه اندازی تعاملیاجزاء.


شکل 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 VIs کنترل و پیکربندی سطح پایین حالت عملکرد دستگاه را که با استفاده از VIهای معمولی پیاده سازی می شود، ارائه نمی دهد. کاربران تازه وارد LabVIEW می توانند از یک تابع داخلی استفاده کنند که یک Express VI را که قبلاً پیکربندی شده است به دنباله ای از VIهای معمولی تبدیل می کند. این می تواند به مبتدیان کمک کند تا کدهای سطح پایین را یاد بگیرند. کافی است خط Open Front Panel in را انتخاب کنید منوی زمینهبیان 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 امکان پذیر بوده است

مزایای اصلی این رویکرد عبارتند از:

  • . Encapsulation: Encapsulation ترکیبی از داده ها و متدها در یک کلاس است به طوری که فقط از طریق VIهایی که اعضای کلاس هستند قابل دسترسی است. این رویکرد به شما امکان می دهد بخش هایی از کد را ایزوله کنید و اطمینان حاصل کنید که تغییر آنها بر روی کد بقیه برنامه تأثیر نمی گذارد.
  • . وراثت: وراثت به کلاس های موجود اجازه می دهد تا به عنوان پایه ای برای توصیف کلاس های جدید استفاده شوند. هنگامی که یک کلاس جدید ایجاد می شود، انواع داده ها و اعضای VI کلاس را به ارث می برد و بنابراین ویژگی ها و متدهای کلاس والد را پیاده سازی می کند. همچنین امکان افزودن VI های سفارشی برای تغییر عملکرد یک کلاس وجود دارد.
  • . Dynamic Dispatching: متدها را می توان با استفاده از چندین VI با همین نام در سلسله مراتب کلاس تعریف کرد. این روش دیسپاچینگ پویا نامیده می شود، زیرا تصمیم گیری در مورد اینکه کدام VI فراخوانی شود در زمان اجرای برنامه گرفته می شود.
این ویژگی های OOP به شما امکان می دهد کد را قابل درک تر و مقیاس پذیرتر کنید و همچنین در صورت لزوم دسترسی به VI را محدود کنید.

مدل سازی و شبیه سازی
مدل سازی و شبیه سازی سیستم های فیزیکی- یک رویکرد محبوب در توسعه سیستم هایی که با معادلات دیفرانسیل توصیف می شوند. مطالعه مدل این امکان را فراهم می کند که ویژگی های سیستم های دینامیکی آشکار شود و یک واحد کنترل با رفتار مورد نیاز توسعه یابد.

شکل 9 حلقه کنترل و شبیه سازی را نشان می دهد که یک معادله دیفرانسیل را با استفاده از الگوریتم های ساخته شده در LabVIEW در زمان واقعی در یک دوره زمانی مشخص حل می کند. این رویکرد برنامه نویسی نیز مانند زبان G مبتنی بر جریان داده است، اما معمولاً به عنوان جریان سیگنال شناخته می شود. همانطور که در شکل 9 نشان داده شده است، می توانید تکنیک های مدل سازی ریاضی را با تکنیک های دیگر مانند جریان داده های G و گره MathScript ترکیب کنید.


برنج. 9. نمودار شبیه سازی انتشار سیگنال، سخت افزار I/O و یک گره MathScript را نشان می دهد.


حلقه کنترل و شبیه‌سازی از توابعی پشتیبانی می‌کند که برای پیاده‌سازی مدل‌های سیستم ثابت خطی در دستگاه‌هایی با سیستم‌عامل بی‌درنگ نصب شده استفاده می‌شوند. شما می توانید از این توابع برای تعریف مدل های گسسته با تعیین یک تابع انتقال، یک نمودار قطب صفر و یک سیستم معادلات دیفرانسیل استفاده کنید. ابزارهای تجزیه و تحلیل دامنه زمان و فرکانس مانند پاسخ گام-زمان یا توابع نمودار بادی به شما امکان می دهند رفتار حلقه های کنترل/شبیه سازی باز و بسته را به صورت تعاملی تجزیه و تحلیل کنید. همچنین می توانید از ابزارهای داخلی تبدیل مدل که در محیط برنامه نویسی The MathWorks, Inc. توسعه یافته اند استفاده کنید. Simulink®، که به آنها امکان استفاده در محیط LabVIEW را می دهد. این سیستم‌های پویا را می‌توان بر روی دستگاه‌هایی با سیستم‌عامل بلادرنگ بدون گذراندن مراحل مختلف تبدیل برنامه نصب کرد، به لطف عملکرد کتابخانه ماژول Real-Time LabVIEW، که برای توسعه نمونه‌های اولیه سیستم کنترل و برنامه‌های شبیه‌سازی عالی است.

نمودارهای حالت
ماژول Statechart NI LabVIEW این توانایی را در اختیار توسعه‌دهنده قرار می‌دهد تا عملکرد سیستم را به انتزاعی‌ترین شکل ممکن با استفاده از نمودارهای حالت توصیف کند. ادغام کد LabVIEW در حالت های نمودار به شما این امکان را می دهد که یک مشخصات کاری مجازی برای برنامه خود ایجاد کنید. ماژول Statechart NI LabVIEW تودرتوی سلسله مراتبی و اجرای موازی را به عملکرد نمودار حالت مرسوم اضافه می کند. لازم به ذکر است که نمودارهای حالت به شما امکان می دهد واکنش سیستم را به رویدادها توصیف کنید که آنها را به ابزاری بسیار مناسب برای توسعه سیستم های واکنشی مانند دستگاه های تعبیه شده، سیستم های کنترل و رابط های کاربری پیچیده تبدیل می کند.


برنج. ده ماژول Statechart LabVIEW یک سیستم مبتنی بر نمودار وضعیت را توصیف می کند.


اغلب، نمودارهای حالت برای تقسیم یک برنامه کاربردی به زیرسیستم هایی مانند جمع آوری داده، خروجی داده، ارتباطات شبکه، ثبت داده ها و مدیریت رابط کاربری استفاده می شود. در این حالت، نمودارهای حالت تعیین می کنند که چه اطلاعاتی بین حالت ها (زیر سیستم ها) منتقل می شود و به چه ترتیبی عمل می کنند.

معماری برنامه مبتنی بر نمودار وضعیت توسعه کارآمدتر سیستم‌های نرم‌افزاری پیچیده، به‌ویژه سیستم‌های رویداد محور مانند کنترل‌کننده‌های سیستم پویا، رابط‌های کاربری پیچیده و پروتکل‌های ارتباط دیجیتال را امکان‌پذیر می‌سازد.

VHDL برای FPGA
ماژول LabVIEW FPGA به شما امکان می دهد از زبان G برای نوشتن کد برای FPGA استفاده کنید. با این حال، مانند سایر تکنیک‌های توسعه، می‌توانید از کدهای از پیش نوشته شده استفاده کنید یا به سادگی نحوه اجرای برنامه را انتخاب کنید. اکثر FPGA ها با استفاده از زبان برنامه نویسی جریانی مبتنی بر متن VHDL برنامه ریزی می شوند. به جای بازنویسی بلوک‌های G IP موجود، می‌توانید کد VHDL را با استفاده از گره IP سطح مؤلفه (CLIP) وارد کنید. معمولاً برای تنظیم رابط بین عناصر بلوک دیاگرام به یک فایل CLIP XML نیاز دارید، اما LabVIEW یک CLIP Import Wizard برای انجام خودکار این کار ارائه می دهد. همانطور که در شکل نشان داده شده است، ورودی ها و خروجی های بلوک IP را لیست می کند، که می توان آنها را با ماوس روی نمودار بلوک کشیده و در برنامه استفاده کرد. یازده


برنج. یازده گره CLIP.


از آنجایی که NI از Xilinix FPGA و جعبه ابزار نرم افزار Xilinx در ماژول LabVIEW FPGA استفاده می کند، می توانید از Xilinx Core Generator برای ایجاد یک هسته سازگار استفاده کنید. همچنین می توانید از کیت توسعه جاسازی شده Xilinx برای ایجاد هر ریزپردازنده نرم افزاری استفاده کنید. و در نهایت، بسیاری توسعه دهندگان شخص ثالثفراهم کند انواع متفاوتبلوک های IP برای مدیریت گذرگاه، پردازش سیگنال و هسته های خاص.

ادغام کدهای C مانند
شما می توانید از کدهای متنی متوالی در بلوک دیاگرام VIs خود به روش های مختلفی استفاده کنید. راه اول Formula Node است که از نحوی شبیه به C پشتیبانی می کند، با تعاریف متغیر و نیم ویرگول در انتهای خطوط.

گره C Inline شبیه به Formula Node است و فراهم می کند ویژگی های اضافیبرنامه نویسی سطح پایین و پشتیبانی از فایل هدر بدون سربار فراخوانی رویه. می‌توانید از گره C Inline برای جاسازی هر کد C، از جمله دستورات #defines که به صورت نحوی در داخل پرانتز در کد C قرار می‌گیرند، استفاده کنید.

تعامل با فایل های اجرایی
هنگام برنامه نویسی در محیط LabVIEW، اغلب لازم است که به فایل ها و کتابخانه های کامپایل شده از برنامه ای که در محیط LabVIEW نوشته شده است دسترسی داشته باشید تا از الگوریتم هایی که قبلاً در محیط های دیگر توسعه یافته اند استفاده مجدد کنید. همچنین هنگام ایجاد پروژه، دسترسی به اپلیکیشن های نوشته شده به زبان LabVIEW از سایر اپلیکیشن ها ضروری است.

برای حل این مشکلات، LabVIEW طیف گسترده ای از ابزارهای مختلف را ارائه می دهد. ابتدا، LabVIEW می تواند توابع DLL را فراخوانی کند و همچنین از رابط های ActiveX و .NET استفاده کند.

ثانیاً، برنامه ای که به زبان LabVIEW نوشته شده است، می تواند عملکرد خود را به عنوان یک DLL یا با استفاده از ابزارهای ActiveX در اختیار برنامه دیگری قرار دهد.

اگر کد منبع C دارید که می خواهید در برنامه LabVIEW خود استفاده کنید، می توانید کامپایل کنید DLLو با استفاده از گره Call Library Function آن را متصل کنید. مثلا می توانید ترتیب دهید محاسبات موازیبا استفاده از الگوریتم های نوشته شده در C، در حالی که یک برنامه نوشته شده در LabVIEW رشته های در حال اجرا موازی را مدیریت می کند. برای ساده‌تر کردن کار با کتابخانه‌های خارجی، LabVIEW دارای یک جادوگر کتابخانه اشتراک‌گذاری واردات است که به شما امکان می‌دهد به طور خودکار یک بسته‌بندی برای فراخوانی کتابخانه‌های مناسب ایجاد یا به‌روزرسانی کنید (ویندوز. فایل dll، فایل .framework سیستم عامل مک یا فایل .so لینوکس).

همچنین با استفاده از System Exec.vi می توانید از اینترفیس استفاده کنید خط فرمانسیستم عامل.

ترکیب چندین تکنیک برنامه نویسی در یک محیط توسعه، استفاده مجدد از الگوریتم های توسعه یافته در زبان های دیگر را ممکن می سازد. علاوه بر این، توسعه دهنده می تواند عملیات سطح بالا و سطح پایین را در یک برنامه ترکیب کند و کد را انعطاف پذیرتر و بصری تر کند. سطوح مختلف انتزاع اجازه می دهد تا الگوریتم های پیچیده را با حفظ برنامه های کاربردی و کنترل سخت افزار سطح پایین تجسم کنند. با یکپارچگی سخت افزاری فشرده، می توانید از هر دو روش برای پردازش سیگنال در پلتفرم هایی با پردازنده های چند هسته ای، FPGA و پردازنده های تعبیه شده استفاده کنید.

مشکلات معمولاً چندین راه حل دارند و محیط برنامه نویسی LabVIEW به اندازه کافی منعطف است که به شما امکان می دهد بهترین روش حل را انتخاب کنید.

Simulink® یک علامت تجاری ثبت شده The MathWorks, Inc است.

ARM، Keil و µVision علائم تجاری و علائم تجاری ثبت شده ARM Ltd یا شرکت های تابعه آن هستند.