[۱۰] “SPI Block Guide V03.06 “ Motorola inc. , 2001
[۱۱] http://zone.ni.com/reference/en-XX/help/371361K-01/
پیوست الف: جدول ترموکوپل نوع K
پیوست ب: Reentrant در نرمافزار LabVIEW
Reentrant چیست؟
وقتی که در روال برنامه نیاز دارید از یک SubVI (زیر برنامه) در چند نقطه بطور همزمان استفاده کنید یا SubVI مذکور در طول پردازشهای خود به دادههایی که در RAM رایانه قرار میدهد نیاز دارد. باید از این تکنیک استفاده نمایید.
انواع Reentrant در نرمافزار LabVIEW و چگونگی استفاده از آن
-
- Non - reentrant execution
وقتی که یک SubVI در حالت Reentrant نباشد و آن را در چند نقطه مختلف بطور همزمان صدا بزنند، باید به صورت نوبتی این SubVI اجرا شود یعنی برای هر بار استفاده باید بقیه نقاط منتظر بمانند تا کار نقطه قبل تمام شود سپس نوبت به بعدی برسد (شکل ب-۱).
-
- دلیل این امر این است که وقتی یک VI در حالت Reentrant نیست فقط از یک فضا برای اجرای روتین برنامه استفاده می کند.
به عنوان مثال فرض کنید از یک SubVI وقتی در حالت Non - reentrant execution (حالت پیش فرض LabVIEW) است، در سه نقطه بطور همزمان بخواهیم استفاده کنیم.
شکل ب-۱: Non - reentrant execution
-
- Shared clone reentrant execution
وقتی کهSubVI در حالت Shared clone reentrant execution باشد، اولین بار که صدا زده شود فقط دو فضا ایجاد می کند و در هر فضا یک کپی از SubVI مربوطه قرار میدهد که معلوم نیست کدام یک از دو فضای مربوطه را به نقطهای که آن را صدا زده اختصاص میدهد، این فضاها به صورت گردشی و تصادفی به نقاط دیگر نیز اختصاص داده میشوند (شکل ب-۲).
-
- در این حالت تا زمانی که نیاز نباشد فضای اضافهای را ایجاد نمیکند.
به عنوان مثال اگر ۲۰ بار صدا زده شود ولی همه آنها در یک زمان نباشند یا بیشتر از ۲ تای آنها در یک زمان نباشند فضای اضافهای ایجاد نمیکند؛ بنابراین چون فقط به تعداد نیاز فضا ایجاد می کند، میتوان گفت در مصرف حافظه بهینه عمل می کند، اما داده ها پس از انجام کار از بین میروند.
شکل ب-۲: Shared clone reentrant execution
-
- Preallocated clone reentrant execution
وقتی که یک SubVI در حالت Preallocated clone reentrant execution داشته باشید قبل از این که صدا زده شوند برای هر نقطهای که از این SubVI استفاده می کند یک فضای اختصاصی ایجاد می کند، مثلاً اگر ۲۰ نقطه وجود داشته باشد ۲۰ فضای مجازی ایجاد می کند حتی زمانی که در یک لحظه فقط از ۲ تای آنها به صورت همزمان استفاده شده باشد نیز این کار را انجام میدهد (شکل ب-۳).
از این روش زمانی استفاده می شود که برنامه نوشته شده داده های قبلی را برای اجراهای مجدد نیاز داشته باشد و از روش Shared clone reentrant execution نمی توان بدین منظور استفاده کرد زیرا هیچ وقت نمیدانیم فضای استفاده شده کدام است؛ از این رو ممکن است داده ها با هم تداخل کنند.
-
- بزرگترین مشکل این حالت فضای زیادی را اشغال می کند.
شکل ب-۳: Preallocated clone reentrant execution
-
- اگر چند front panel با یک SubVI یکسان را، بطور همزمان اجرا نمایید دیگر Reentrant SubVI به شما کمکی نمیکند. برای حل این مشکل دو روش دارید:
-
- SubVI مربوطه را کپی کنید، نامهای متفاوتی به آنها دهید و در Block Diagram خود از آنها استفاده نمایید تا هر کدام فضای مجزایی داشته باشند.
-
- اگر برای شما مهم نیست که فضای مجزایی داشته باشید میتوانید SubVI خود را باVI Server صدا بزنید و دادههایتان را هر بار ذخیره نمایید.
روش تغییر Reentrant برای یک SubVI
بدین منظور کاربر باید در SubVI که میخواهد به آدرس File>>VI Properties برود و پس از باز شدن پنجرهای مانند شکل ب-۴، سربرگ Execution را انتخاب کند سپس در کادر قرمز رنگ، Reentrant مورد نظر خود را تغییر دهد.
شکل ب-۴: پنجره VI Properties
پیوست پ: نمونه ای از نمودارهای بارگذاری شده
شکل پ-۱: نمودار داده های دریافتی برای مدت زمان ۵۶ ساعت با نرخ ذخیرهسازی ۱ ثانیه یک بار برای ۲۹ کانال را نشان میدهد.
شکل پ-۲: نمودار قرمز رنگ (کانال ۱) مربوط به دمای آبی است که در حال سرد شدن میباشد.