**زبان اسمبلی متغیر** (به انگلیسی: **Variable Assembly Language**) یک سیستم کنترل و زبان رایانه ای است که مخصوص استفاده برای ربات‌های صنعتی (به انگلیسی: Unimation Inc) طراحی شده‌است.

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

یک ویژگی مناسب یا VAL توانایی استفاده از کتابخانه‌ها است؛ بنابراین، عملیات ترکیبی ممکن است به راحتی و با ترکیب کارهای فرعی از پیش تعریف شده، به سرعت برنامه‌ریزی شود.

زبان VAL از دستورها مانیتور و دستورالعمل‌های برنامه تشکیل شده‌است. از دستورها monitor برای تهیه سیستم برای اجرای برنامه‌های نوشته شده توسط کاربر استفاده می‌شود. دستورالعمل‌های برنامه رپرتوار لازم برای ایجاد برنامه‌های VAL را برای کنترل اقدامات ربات فراهم می‌کند.

اصطلاحات
--------

اصطلاحات زیر اغلب در عملیات مربوط به VAL استفاده می‌شوند.

### مانیتور

مانیتور VAL یک برنامه رایانه ای اجرا کننده است که بر عملکرد یک سیستم نظارت می‌کند. مانیتور ورودی کاربر را می‌پذیرد و پاسخ مناسب را آغاز می‌کند. دستورالعمل‌های برنامه‌های نوشته شده توسط کاربر را برای هدایت ربات دنبال می‌کند و محاسبات لازم برای کنترل ربات را انجام می‌دهد.

### ویرایشگر

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

### موقعیت

تعریف موقعیت مکان یک جسم در فضا و جهت‌گیری آن است. از آن‌ها برای تعریف مکانها و جهت‌گیری‌هایی که ابزار ربات در هنگام اجرای برنامه در نظر گرفته استفاده می‌شود.

برنامه‌نویسی VAL
----------------

چندین قرارداد برای مقادیر عددی اعمال می‌شود تا به دستورها و دستورالعمل‌های VAL ارائه شود. ابتدای هر دستور مانیتور، دو علامت هستند که نشانگر زمان تایپ دستور توسط کاربر هستند. یک نقطه (.) نشانگر این است که VAL در حالت مانیتور سطح بالایی قرار دارد و هیچ برنامه کاربر اجرا نمی‌شود (یعنی وقتی که سیستم از یک نقطه استفاده می‌کند). یک ستاره (\*) نشان می‌دهد که همزمان می‌توان فرمان را اجرا کرد (یعنی وقتی که فرمان سیستم یک ستاره است). اگر هر دو نماد وجود داشته باشد، دستور را می‌توان در هر دو حالت اجرا کرد. بیشتر دستورها مانیتور و دستورالعمل‌های برنامه را می‌توان به صورت مختصر بیان کرد. هنگام وارد کردن هر دستور مانیتور یا دستورالعمل برنامه، نام تابع را می‌توان به تعداد نویسه‌هایی که برای منحصر به فرد بودن نام لازم است، کوتاه کرد.

در دستورها و دستورالعمل‌ها، از براکت‌های <> برای محصور کردن موردی که توصیف آرگومان واقعی را نشان می‌دهد، استفاده می‌شود؛ بنابراین برنامه‌نویس هنگام وارد کردن دستور یا دستورالعمل می‌تواند مورد مناسب را در آن موقعیت تهیه کند. توجه داشته باشید که این براکت‌های استفاده شده در اینجا برای شفاف سازی است و هرگز نباید به عنوان بخشی از یک دستور یا دستورالعمل درج شود.

بسیاری از دستورها و دستورها VAL آرگومان‌های اختیاری دارند. برای علامت گذاری، آرگومان‌های اختیاری در [] محصور شده‌اند. اگر به دنبال چنین آرگومانی ویرگول وجود داشته باشد، در صورت عدم حذف آرگومان باید ویر گول حفظ شود، مگر اینکه چیزی در پشت آن باشد. به عنوان مثال، دستور BASE مانیتور به صورت زیر است:

```
[<BASE [<dx>] , [<dy>] , [<dz
[<rotation>]
```

برای تعیین فقط یک تغییر ۳۰۰ میلی‌متری در جهت Z، می‌توان دستور را به هر روش زیر وارد کرد:

* BASE 0،۰٬۳۰۰٬۰
* ۳۰۰ ،BASE
* BASE ،۳۰۰

توجه داشته باشید که ویرگول‌های قبل از عدد ۳۰۰ باید وجود داشته باشند تا عدد با تغییر جهت Z مرتبط شود. مانند براکت‌های زاویه ای، براکت‌های مربع هرگز به عنوان بخشی از یک دستور یا دستور وارد نمی‌شوند.

انواع مختلفی از آرگومان‌های عددی می‌توانند در دستورها و دستورالعمل‌ها ظاهر شوند. برای هر نوع محدودیت‌هایی در مقادیر وجود دارد که توسط VAL پذیرفته می‌شود. قوانین زیر باید رعایت شود:

1. فاصله‌ها برای تعیین مکان‌هایی که ربات باید به آنها حرکت کند وارد می‌شوند. واحد اندازه‌گیری مسافت‌ها میلی‌متر است، اگرچه هرگز واحدها به‌طور واضح برای هر مقداری وارد نمی‌شوند. مقادیر وارد شده برای مسافت می‌تواند مثبت یا منفی باشد، اندازه‌های آنها توسط تعدادی نماینده حداکثر دسترسی ربات محدود می‌شود (به عنوان مثال، ۱۰۲۴) میلی‌متر و ۷۰۰ میلی‌متر برای ربات‌های PUMA 500 و PUMA 250 به ترتیب). در محدوده حاصل، مقادیر فاصله را می‌توان با افزایش ۰٫۰۱ تعیین کرد میلی‌متر اما توجه داشته باشید که برخی از مقادیر نمی‌توانند به صورت داخلی نشان داده شوند و به عنوان نزدیکترین مقدار قابل نمایش ذخیره می‌شوند.
2. زاویه‌ها بر حسب درجه وارد می‌شوند تا جهت‌گیری‌هایی را که قرار است ربات در مکان‌های مشخص شده تعریف کند و تغییر دهد، و موقعیت‌های زاویه ای اتصالات ربات را توصیف کند. مقادیر زاویه می‌تواند مثبت یا منفی باشد، بسته به نوع استفاده، اندازه آنها در ۱۸۰۰ یا ۳۶۰۰ محدود می‌شود. در محدوده، مقادیر زاویه را می‌توان با افزایش ۰٫۰۱ درجه تعیین کرد. مقادیر را نمی‌توان به صورت داخلی نشان داد، با این حال به عنوان نزدیکترین مقدار قابل نمایش ذخیره می‌شوند

سیستم VAL
---------

عملکرد VAL تنظیم و کنترل یک سیستم ربات با پیروی از دستورها یا دستورالعمل‌های کاربر است. VAL علاوه بر اینکه یک سیستم مستقل جمع و جور است، بسیار تعاملی طراحی شده‌است تا زمان برنامه‌ریزی را به حداقل برساند و حتی الامکان کمک برنامه‌نویسی ارائه دهد.

### ارتباطات خارجی

سیستم استاندارد VAL از کنسول اپراتور و جعبه کنترل دستی برای وارد کردن دستورها و داده‌های کاربر استفاده می‌کند. کنسول اپراتور به عنوان وسیله ارتباطی اصلی عمل می‌کند و می‌تواند یک ترمینال پخش مستقیم یا یک ترمینال چاپ باشد. تعامل با سایر دستگاه‌ها در یک سلول خودکار معمولاً با نظارت بر کانالهای ورودی و تعویض خروجی انجام می‌شود. به این معنی که ربات می‌تواند یک سلول متوسط را بدون نیاز به سایر دستگاه‌های قابل برنامه‌ریزی کنترل کند.

### سیستم عامل VAL

کنترل‌کننده دارای دو سطح یا عملکرد است:

* به سطح بالا، سیستم عامل VAL یا مانیتور گفته می‌شود، زیرا عملیات سیستم را مدیریت می‌کند، از جمله تعامل با کاربر.
* سطح دوم برای کارهای تشخیصی روی سخت‌افزار کنترل‌کننده استفاده می‌شود. مانیتور سیستم یک برنامه رایانه ای است که حافظه فقط خواندنی قابل برنامه‌ریزی (PROM) را در رایانه ذخیره می‌کند.

حافظه PROM محتویات خود را کاملاً حفظ می‌کند و بنابراین VAL با روشن شدن کنترل‌کننده بلافاصله در دسترس قرار می‌گیرد. مانیتور وظیفه کنترل ربات را بر عهده دارد و دستورها آن از واحد کنترل دستی، ترمینال سیستم یا برنامه‌ها است. برای افزایش قابلیت انعطاف‌پذیری و انعطاف‌پذیری، مانیتور VAL می‌تواند دستورها خود را حتی هنگام اجرای یک برنامه کاربر انجام دهد. دستوراتی که می‌توانند از این طریق پردازش شوند شامل مواردی برای کنترل وضعیت سیستم، تعیین مکان ربات‌ها، ذخیره و بازیابی اطلاعات دیسک و ایجاد و ویرایش برنامه‌های کنترل ربات هستند.

منابع
-----

* کتابچه راهنمای PUMA 560 VAL