به گروه آموزشی مهندس فرجی خوش آمدید
گروه آموزشی مهندس فرجی|آموزش اتوماسیون صنعتیگروه آموزشی مهندس فرجی|آموزش اتوماسیون صنعتیگروه آموزشی مهندس فرجی|آموزش اتوماسیون صنعتی
09190263668
info@mrfaraji.ir

آموزش PROFIBUS- قسمت هجدهم

بلاك‌هاي AG_SEND (FC5) و AG_RECV (FC6)

آموزش PROFIBUS– قسمت هجدهم

7-3-3 برنامه‌نویسی سیستم Master-Master با استفاده از سرویس FDL

همانطور که قبلا نیز اشاره شد، برای برنامه‌نویسی این روش می‌توان از بلاک‌های AG_SEND (FC5) و AG_RECV (FC6) استفاده نمود. شکل 7-77 مسیر فراخوانی این بلاک‌ها را نشان می‌دهد.

بلاک‌های AG_SEND (FC5) و AG_RECV (FC6)
شکل 7-77

شکل 7-78 نقش بلاک‌های AG_SEND و AG_RECV را در ارسال و دریافت اطلاعات نشان می‌دهد.

بلاک‌های AG_SEND (FC5) و AG_RECV (FC6)

شکل 7-78

بررسی پایه‌ها و عملکرد بلاک‌های AG_SEND (FC5) و AG_RECV (FC6)

شکل 7-79 بلاک‌های AG_SEND و AG_RECV را در زبان LAD نشان می‌دهد.

بلاک FC5 (AG_SEND) بلاک FC6 (AG_RECV)

الف) بلاک 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) را نشان می‌دهد.

عملکرد بلاک FC5 (AG_SEND)

شکل 7-80

شرح عملکرد:

همانظور که در شکل 7-80 نیز مشخص است، عملیات ارسال دیتا با یک شدن پارامتر ACT (ACT=1) شروع می‌شود. پس از آن ارسال دیتا به صورت سیکلی ادامه پیدا می‌نماید. قبل از پایان ارسال اطلاعات، لازم است مقدار ACT برابر صفر شود، در صورتی‌که ارسال بدون خطا به پایان رسد، مقدار متغیر DONE برابر یک می‌شود (DONE=1) و بیانگر ارسال صحیح اطلاعات است.

کدهای دریافتی از متغیرهای ERROR و STATUS نیز نقش مهمی در تشخیص وقوع یا عدم وقوع خطا و نیز شروع یا پایان ارسال اطلاعات دارند. جدول 7-14 برخی از کدهای مربوط به متغیرهای DONE, ERROR و STATUS را نشان می‌دهد.

جدول 7-14

متغیرهای DONE, ERROR و STATUS

 

همانطور که در جدول 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

عملکرد FC6 (AG_RECV)

  

مثال 7-8 با استفاده از ارتباط FDL، 40Byte اطلاعات از Master1 به Master2 ارسال نمایید.

پاسخ:

اصول کار در سمت Master1

1- در ایستگاه مربوط به Master1 وارد OB1 شده و در Network1، بلاک FC5 (AG_SEND) را فراخوانی نمایید.

2- روی گزینه LADDR راست‌کلیک نموده و گزینه Connection را انتخاب نمایید. سپس مطابق شکل 7-81 کانکشن موجود را انتخاب نموده و روی گزینه OK کلیک نمایید.

Connection

شکل 7-81

3- سایر تنظیمات بلاک AG_SEND را به صورت نشان‌ داده شده در شکل 7-82 انجام دهید.

تنظیمات بلاک AG_SEND

شکل 7-82

4- در OB1 دو نتورک نشان داده شده در شکل 7-83 را نیز ایجاد و برنامه‌نویسی نمایید.

OB1 دو نتورک

شکل 7-83

5- در سمت Master1، بلاک OB100 را ایجاد و سپس برنامه نشان داده شده در شکل 7-84 را در آن پیاده‌سازی نمایید.

بلاک OB100

شکل 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 شده و برنامه زیر را پیاده‌سازی نمایید.

محیط OB1

شکل 7-85

همانطور که در شکل 7-85 نیز مشخص است:

  • در پایه ID و LADDR شماره کانکشن و نیز آدرس شروع کارت CP342-5 نصب شده در Master2 وارد شده است.
  • در پایه RECV مقدار 40 بایت با آدرس شروع 0 آدرس‌دهی شده است. دلیل آدرس دهی 40 بایت، ارسال 40 بایت از سمت Master1 توسط بلاک AG_SEND است.
  • در سایر پایه‌های آدرس‌های دلخواه وارد شده است.

2- تنظیمات را ذخیره سازی نمایید.

 

تمرین 7-7 برنامه را به گونه‌ای طراحی نمایید که 20 بایت از سمت Master2 به Master1 منتقل گردد.

پاسخ: بر عهده دانشجویان گرامی

 

پیام بگذارید