آموزش PROFIBUS– قسمت هجدهم
7-3-3 برنامهنویسی سیستم Master-Master با استفاده از سرویس FDL
همانطور که قبلا نیز اشاره شد، برای برنامهنویسی این روش میتوان از بلاکهای AG_SEND (FC5) و AG_RECV (FC6) استفاده نمود. شکل 7-77 مسیر فراخوانی این بلاکها را نشان میدهد.
شکل 7-77
شکل 7-78 نقش بلاکهای AG_SEND و AG_RECV را در ارسال و دریافت اطلاعات نشان میدهد.
شکل 7-78
بررسی پایهها و عملکرد بلاکهای AG_SEND (FC5) و AG_RECV (FC6)
شکل 7-79 بلاکهای AG_SEND و AG_RECV را در زبان LAD نشان میدهد.
الف) بلاک FC5 (AG_SEND) |
ب) بلاک FC6 (AG_RECV) |
شکل 7-79 |
در جدولهای 7-12 و 7-13 پارامترهای بلاکهای AG_SEND و AG_RECV و عملکرد آنها توضیح شده است.
جدول 7-12 پارامترهای (AG_SEND) FC5
نام پایه (پارامتر) | نوع (ورودی/خروجی) | Data Type | توضیح |
ACT | ورودی | BOOL | کنترل ارسال دیتا توسط این پارامتر انجام میشود، اگر مقدار یک بگیرد دیتا را ارسال میکند. اگر مقدار صفر بگیرد، ارسال دیتا انجام نمیشود. |
ID |
ورودی |
INT | ID مربوط به کانکشن FDL که در مرحله پیکربندی تنظیم میشود. |
LADDR | ورودی | WORD | آدرس بیس کارت CP که در مرحله پیکربندی نشان داده میشود. |
SEND | ورودی | ANY | آدرس ناحیهای که دیتا از آنجا ارسال میشود، به فرم Pointer |
LEN | ورودی | INT | تعداد بایتهای قابل ارسال از پایه SEND |
DONE | خروجی | BOOL | نشاندهنده پایان ارسال دیتا بدون وجود خطا (با نشاندادن مقدار1)، نشان دادن مقدار صفر یعنی در حال ارسال دیتا |
ERROR | خروجی | BOOL | نشاندهنده وجود خطا (با نشان دادن مقدار1) |
STATUS | خروجی | WORD | کد وضعیت (بیانگر صحت عملکرد یا بروز خطا و مشخص نمودن نوع خطا) |
جدول 7-13 پارامترهای (AG_RECV) FC6
نام پایه (پارامتر) | نوع (ورودی/خروجی) | Data Type | توضیح |
ID | ورودی | INT | ID مربوط به کانکشن FDL که در مرحله پیکربندی تنظیم میشود. |
LADDR | ورودی | WORD | آدرس بیس کارت CP که در مرحله پیکربندی نشان داده میشود. |
RECV | ورودی | ANY | آدرس حافظه دریافت دیتا به فرم Pointer |
NDR | خروجی | BOOL | نشان دهنده دریافت کامل اطلاعات (با نشان دادن مقدار 1)، نشان دادن مقدار صفر یعنی در حال دریافت دیتا |
ERROR | خروجی | BOOL | نشاندهنده وجود خطا (با نشان دادن مقدار1) |
STATUS | خروجی | WORD | کد وضعیت (بیانگر صحت عملکرد یا بروز خطا و مشخص نمودن نوع خطا) |
LEN | خروجی | BYTE | تعداد بایتهای قابل دریافت از پایه RECV |
نکات مهم در استفاده از بلاکهای AG_SEND و AG_RECV
- بلاک AG_SEND در سمت فرستنده اطلاعات استفاده میشود.
- بلاک AG_RECV در سمت گیرنده اطلاعات استفاده میشود.
- استفاده از بلاک AG_SEND باید بهصورت کنترلشده انجام پذیرد. برای کنترل ارسال دیتا در بلاک AG_SEND باید پایه ACT را به نحو مناسب کنترل نمود.
- برای اختصاص ID و LADDR نیازی به وارد نمودن آن به صورت دستی نیست و میتوان روی پایه LADDR راستکلیک نموده و سپس از طریق گزینه Connection، ارتباط را برقرار نمود.
عملکرد FC5 (AG_SEND)
شکل 7-80 چگونگی عملکرد بلاک FC5 (AG_SEND) را نشان میدهد.
شکل 7-80
شرح عملکرد:
همانظور که در شکل 7-80 نیز مشخص است، عملیات ارسال دیتا با یک شدن پارامتر ACT (ACT=1) شروع میشود. پس از آن ارسال دیتا به صورت سیکلی ادامه پیدا مینماید. قبل از پایان ارسال اطلاعات، لازم است مقدار ACT برابر صفر شود، در صورتیکه ارسال بدون خطا به پایان رسد، مقدار متغیر DONE برابر یک میشود (DONE=1) و بیانگر ارسال صحیح اطلاعات است.
کدهای دریافتی از متغیرهای ERROR و STATUS نیز نقش مهمی در تشخیص وقوع یا عدم وقوع خطا و نیز شروع یا پایان ارسال اطلاعات دارند. جدول 7-14 برخی از کدهای مربوط به متغیرهای DONE, ERROR و STATUS را نشان میدهد.
جدول 7-14
همانطور که در جدول 7-14 نیز مشخص است، اگر مقدار متغیرهای DONE, ERROR, STATUS برابر 0, 0, 8181 باشد یعنی ارسال اطلاعات انجام شده ولی هنوز به پایان نرسیده است. اگر مقدار متغیرهای DONE, ERROR, STATUS برابر 1, 0, 0000 باشد یعنی ارسال اطلاعات بدون خطا به پایان رسیده است. این مورد در شکل 7-80 نیز به وضوح قابل مشاهده است.
نکته: شرح کامل کدهای پارامترهای FC5 (AG_SEND) در HELP زیمنس آورده شده است.
عملکرد FC6 (AG_RECV)
عملکرد بلاک AG_RECV بدینصورت است که میتواند به طور سیکلی اطلاعات ارسالی توسط بلاک AG_SEND را دریافت نماید. کدهای درج شده در پارامترهای NDR, ERROR , STATUS بیانگر وضعیت دریافت دیتا میباشند. هر گاه دریافت دیتا به طور کامل انجام شود، پارامتر NDR دارای مقدار یک میشود (NDR=1). جدول 7-15 برخی از کدهای مربوط به پارامترهای بلاک AG_RECV را نشان میدهد.
جدول 7-15
مثال 7-8 با استفاده از ارتباط FDL، 40Byte اطلاعات از Master1 به Master2 ارسال نمایید.
پاسخ:
اصول کار در سمت Master1
1- در ایستگاه مربوط به Master1 وارد OB1 شده و در Network1، بلاک FC5 (AG_SEND) را فراخوانی نمایید.
2- روی گزینه LADDR راستکلیک نموده و گزینه Connection را انتخاب نمایید. سپس مطابق شکل 7-81 کانکشن موجود را انتخاب نموده و روی گزینه OK کلیک نمایید.
شکل 7-81
3- سایر تنظیمات بلاک AG_SEND را به صورت نشان داده شده در شکل 7-82 انجام دهید.
شکل 7-82
4- در OB1 دو نتورک نشان داده شده در شکل 7-83 را نیز ایجاد و برنامهنویسی نمایید.
شکل 7-83
5- در سمت Master1، بلاک OB100 را ایجاد و سپس برنامه نشان داده شده در شکل 7-84 را در آن پیادهسازی نمایید.
شکل 7-84
6- تنظیمات را ذخیره سازی نمایید.
شرح عملکرد برنامه Master1:
- همانطور که در Network1 در OB1 مشخص است، بلاک AG_SEND فراخوانی شده و در پایه ID و LADDR شماره کانکشن و نیز آدرس شروع CP342-5 وارد شدهاند.
- در پایه SEND آدرس 40 بایت با شروع 0 داده شده است که در حقیقت همان دیتای ارسالی به Master2 است.
- در پایه LEN تعداد بایت قابل ارسال که همان 40 است، وارد شده است.
- در پایه DONE آدرس 0 وارد شده است که توسط آن میتوان از پایان صحیح ارسال دیتا اطلاع پیدا نمود.
- در پایههای ERROR و STATUS به ترتیب آدرسهای 1 و MW2 وارد شده است.
- در پایه ACT آدرس 0 وارد شده است و در حقیقت با استفاده از این آدرس، ارسال دیتا توسط بلاک AG_SEND کنترل میشود.
- در OB100 مقدار 0 برابر یک منطقی میگردد، یعنی هرگاه CPU روشن شود (یا از حالت STOP به حالت RUN در آید) مقدار M100.0 برابر 1 شده و در نتیجه عمل ارسال دیتا توسط بلاک AG_SEND شروع میشود.
- در برنامه OB1 و در Network2 مقدار 0 برابر صفر منطقی قرار داده میشود. هرگاه ارسال دیتا توسط بلاک AG_SEND بهطور صحیح به پایان رسید، بیت DONE (M0.0) مقدار یک منطقی میگیرد. در این حالت توسط برنامه نوشته شده در Network3 مقدار M100.0 برابر یک شده و در نتیجه ارسال دیتای جدید شروع میشود و این چرخه مرتبا تکرار میشود.
اصول کار در سمت Master2
1- در سمت Master2 وارد محیط OB1 شده و برنامه زیر را پیادهسازی نمایید.
شکل 7-85
همانطور که در شکل 7-85 نیز مشخص است:
- در پایه ID و LADDR شماره کانکشن و نیز آدرس شروع کارت CP342-5 نصب شده در Master2 وارد شده است.
- در پایه RECV مقدار 40 بایت با آدرس شروع 0 آدرسدهی شده است. دلیل آدرس دهی 40 بایت، ارسال 40 بایت از سمت Master1 توسط بلاک AG_SEND است.
- در سایر پایههای آدرسهای دلخواه وارد شده است.
2- تنظیمات را ذخیره سازی نمایید.
تمرین 7-7 برنامه را به گونهای طراحی نمایید که 20 بایت از سمت Master2 به Master1 منتقل گردد.
پاسخ: بر عهده دانشجویان گرامی