برنامهنویسی با استفاده از بلاکهای GET و PUT
این سرویس به منظور ارتباط سرور/کلاینت مورد استفاده قرار گرفته و خصوصیات آن عبارتست از:
- در این سرویس، کلاینت میتواند با استفاده از بلاک GET دیتایی را از سرور بخواند (Read) و با استفاده از بلاک PUT دیتایی را در سرور بنویسد (Write).
- در این سرویس برنامهنویسی فقط در سمت کلاینت انجام میشود و در سمت سرور نیازی به برنامهنویسی وجود ندارد.
- حجم دیتای قابل تبادل نسبت به استفاده از بلاکهای BSEND و BRCV خیلی کمتر است. این حجم در S7-300 حداکثر برابر 160 Bytesو در S7-400 برابر 4 × 100 bytes است.
- کار با این بلاکها نسبت به بلاکهای BSEND و BRCV، سادهتر است.
آشنایی با بلاک GET (FB14/SFB14)
این بلاک فقط در سمت PLC کلاینت مورد استفاده قرار گرفته و نیازی به برنامهنویس خاصی در PLC سرور وجود ندارد. با استفاده از این بلاک میتوان دیتایی را از PLC سرور خوانده و در حافظه مشخصی ذخیره نمود. در شکل 2-8 این بلاکها نشان داده شده است.
الف) FB14 مخصوص CPU-300 |
ب) SFB14 مخصوص CPU-400 |
شکل 2-8
همچنین در جدول 2-6 پارامترهای این بلاک و شرح عملکرد آنها نشان داده شده است.
جدول 2-6 پارامترهای بلاک GET (FB14)
پارامتر | ورودی/ خروجی | Data/Type | عملکرد |
REQ | Input | BOOL | فعالساز دریافت دیتا توسط بلاک (با اعمال مقدار یک منطقی دریافت دیتا آغاز میشود) |
ID | Input | WORD | ID مربوط به کانکشن تعریف شده در NetPro |
DONE | Output | BOOL | نشان دهنده پایان دریافت دیتا با گرفتن مقدار یک منطقی، مقدار صفر منطقی بیانگر این است که دریافت دیتا انجام نشده و یا به پایان نرسیده است. |
ERROR | Output | BOOL | مقدار یک منطقی بیانگر بروز خطا و مقدار صفر منطقی بیانگر عدم بروز خطا در ارسال اطلاعات است. |
STATUS | Output | WORD | کد وضعیت را نشان میدهد که در شرایط بروز خطا کد متناسب با نوع خطا را نشان میدهد. این کدها در Help بلاک موجود است. |
ADDR_i | IN_OUT | ANY | آدرس ناحیه مبدا جهت خواندن دیتا، به فرم Pointer مثلاً p# DB10.DBX5.0 Byte 10 |
RD_i | IN_OUT | ANY | آدرس ناحیه مقصد جهت ذخیرهسازی دیتا |
نکته: در S7-400 (با استفاده از SFB14) میتوان حدأکثر 4 دیتای مختلف را توسط پارامترهای ADDR_1 الی ADDR_4 و RD_1 الی RD_4 خوانده و در حافظه دلخواه قرار داد. ولی در S7-300 (با استفاده از FB14) فقط یک دیتا را میتوان خواند.
آشنایی با بلاک PUT (FB15/SFB15)
این بلاک فقط در سمت PLC کلاینت مورد استفاده قرار گرفته و نیازی به برنامهنویس خاصی در PLC سرور وجود ندارد. با استفاده از این بلاک میتوان دیتایی را در PLC سرور نوشت. شکل 2-9 این بلاک را در زبان LAD نشان میدهد.
الف) FB15 مخصوص CPU-300 |
ب) SFB15 مخصوص CPU-400 |
شکل 2-9
همچنین در جدول 2-7 پارامترهای این بلاک و شرح عملکرد آنها نشان داده شده است.
جدول 2-7 پارامترهای بلاک PUT
پارامتر | ورودی/ خروجی | Data/Type | عملکرد |
REQ | Input | BOOL | فعالساز ارسال دیتا توسط بلاک (با اعمال مقدار یک منطقی دریافت دیتا آغاز میشود) |
ID | Input | WORD | ID مربوط به کانکشن تعریف شده در NetPro |
DONE | Output | BOOL | نشان دهنده پایان ارسال دیتا با گرفتن مقدار یک منطقی، مقدار صفر منطقی بیانگر این است که دریافت دیتا انجام نشده و یا به پایان نرسیده است. |
ERROR | Output | BOOL | مقدار یک منطقی بیانگر بروز خطا و مقدار صفر منطقی بیانگر عدم بروز خطا در ارسال اطلاعات است. |
STATUS | Output | WORD | کد وضعیت را نشان میدهد که در شرایط بروز خطا کد متناسب با نوع خطا را نشان میدهد. این کدها در Help بلاک موجود است. |
ADDR_i | IN_OUT | ANY | آدرس ناحیه مقصد جهت ذخیرهسازی دیتا، به فرم Pointer مثلاً p# DB10.DBX5.0 Byte 10 |
SD_i | IN_OUT | ANY | آدرس ناحیه مبدا جهت خواندن دیتا |
نکته: در S7-400 (با استفاده از SFB15) میتوان حدأکثر 4 دیتای مختلف را توسط پارامترهای ADDR_1 الی ADDR_4 و RD_1 الی RD_4 در CPU مقصد نوشت(منتقل نمود)، ولی در S7-300 (با استفاده از FB15) فقط یک دیتا را میتوان منتقل نمود.
مثال 3 تبادل دیتا بین دو PLC با استفاده از بلاکهای GET و PUT
برنامهای بنویسید که اطلاعات IB1 در PLC1 را به QB4 در PLC2 منتقل نماید.
مراحل انجام تمرین:
- در سمت PLC1 وارد بلاک OB35 شده و برنامه نشان داده شده در شکل 2-10 را پیادهسازی نمایید.
شکل 2-10
- برنامه را به PLC1 دانلود نموده و تست نمایید.
2-4 ارتباطات Open با استفاده از Blocks SEND/RECIVE
این سرویس دارای مشخصات ذیل است:
- ارتباطات استاندارد توسط این سرویس پشتیبانی میشود.
- ارتباطات میتواند با استفاده از CP و یا پورت پروفینت روی CPU انجام شود (البته مطابق ملاحضات فنی)
- برای انجام ارتباطات نیاز به ایجاد کانکشن در Net Pro وجود دارد.
- به جز در سرویس UDP، تایید دریافت دیتا توسط گیرنده انجام میشود.
- تایید دریافت دیتا توسط “برنامه درون گیرنده” انجام نمیشود. توجه شود که این مفهوم با مفهوم “تایید دریافت توسط گیرنده” متفاوت است.
جدول 2-8 خصوصیات و بلاکهای مورد استفاده در این روش را نشان میدهد.
جدول 2-8 خصوصیات و بلاکهای مورد استفاده در ارتباطات Open
نکته: به جز سرویس ISO که فقط با استفاده از کارت CP قابل پیادهسازی است، سایر سرویسها را میتوان با استفاده از پورت پروفینت روی CPU نیز پیادهسازی نمود. البته در این حالت تنظیمات با استفاده از نرمافزار Open Communication Wizard انجام شده و با استفاده از بلاکهای AG_SEND و AG_REC امکانپذیر نمیباشد.
در جدول 2-8:
AG_xSEND به معنای امکان استفاده از بلاکهای AG_SEND، AG_LSEND و AG_SSEND است.
AG_xREC به معنای امکان استفاده از بلاکهای AG_RECV، AG_LRECV و AG_SRECV است.
جداول 2-9 و 9-10 بلاکهای مورد استفاده سرویس ارتباطی SEND/RECIVE را نشان میدهد.
جدول 2-9
جدول 2-10
جدول 2-11 محل قرارگیری این بلاکها در نرمافزار STEP7 را نشان میدهد.
جدول 2-11 محل قرارگیری بلاکهای ارتباطات Open در نرمافزار STEP7
نکته: در سرویس Fetch/Write کاربرد PLC S7 بعنوان سرور بوده و کلاینت میتواند دیتایی را از آن بخواند (Fetch) و یا در آن Write نماید. کلاینت میتواند یک سیستم غیر زیمنسی و یا مثلاً PLC S5 باشد.
2-5 بررسی سرویس ارتباطی ISO Transport (ISO)
این سرویس یک سرویس استاندارد محسوب شده و بهمنظور ارتباط با هر نوع سیستمی که قابلیت پشتیبانی از استاندارد ISO را داشته باشد، قابل استفاده است. برخی از خصوصیات این سرویس عبارتست از:
- انتقال دیتا میتواند با استفاده از سرویسهای SEND/RECEIVE و FETCH/WRITE انجام شود.
- تبادل دیتا بین ایستگاههای مختلف با استفاده از MAC address انجام میشود.
- حداکثر حجم دیتای ارسالی با استفاده از بلاکهای AG_SEND و AG_ RECV برابر 8 Kbytes است.
- دریافت دیتا توسط گیرنده، تایید میشود.
- انتقال دیتا در این روش دارای قابلیت اطمینان بسیار بالایی است.
- استفاده از Router یا مسیریاب را پشتیبانی نمیکند.
نکته: این سرویس در زیمنس، فقط با استفاده از کارت شبکه (CP) قابل استفاده است.
آشنایی با بلاکهای AG_SEND و AG_RECV
از آنجا که این دو بلاک در بخش Profibus تشریح شدند، از ذکر مجدد نکات آنها خودداری نموده و صرفاً یک مثال ارائه مینماییم.
مثال4 تبادل دیتا بین دو PLC با استفاده از سرویس ارتباطی ISO و بلاکهای AG_SEND و AG_RECV
برنامهای بنویسید که اطلاعات درون MB90 از PLC1 را به حافظه MB60 در PLC2 منتقل نماید.
مراحل انجام تمرین:
- دو عدد Station 300 تعریف نمایید.
- در محیط پیکربندی برای هر کدام از PLCها یک کارت CP343-1 قرار دهید.
- هر دو کارت CP343-1 را به یک شبکه اترنت واحد متصل نمایید.
- وارد محیط NetPro شده و بین دو PLC یک کانکشن از نوع ISO Transport ایجاد نمایید.
- تنظیمات را Compile نموده و سپس به هر دو PLC دانلود نمایید.
- در سمت PLC1 وارد بلاک OB35 شده و برنامه نشان داده شده در شکل 2-11 را پیادهسازی نمایید.
شکل 2-11
- در سمت PLC2 وارد OB1 شده و برنامه نشان داده شده در شکل 2-12 را پیادهسازی نمایید.
شکل 2-12