عملکرد بلاک X_SEND
در این بلاک، هرگاه پارامتر REQ دارای مقدار یک منطقی شود، ارسال اطلاعات به PLC که آدرس آن در شبکه MPI در پایه DEST_ID مشخص شده است، شروع میشود. اطلاعات مورد نظر از آدرسی که در پارامتر SD مشخص شده است، ارسال میشود. در طول زمان ارسال اطلاعات، پایه BUSY دارای مقدار یک منطقی است.
بلاک X_RCV
پس از اینکه اطلاعات توسط بلاک X_SEND به PLC مقصد ارسال شد، در یک حافظه (صف) موقت قرار داده میشود. در این زمان میتوان توسط بلاک X_RCV به اطلاعات فوق دسترسی پیدا نموده و آنرا در حافظه CPU ذخیرهسازی نمود. شکل 1-2 بلاک X_RCV یا SFC 66 را نشان میدهد. محل قرارگیری این بلاک در بخش Library > Standard Library > System Function Block است.
شکل 1-2
جدول1-2 پارامترهای SFC 66 “X_RCV” را نشان میدهد.
جدول 1-2
پارامتر | ورودی/خروجی | عملکرد |
EN_DT | Input | فعالساز دریافت دیتا توسط بلاک (با مقدار یک منطقی دریافت دیتا و ثبت آن در حافظه آغاز میشود) |
RET_VAL | Output | کد خطا در صورت بروز خطا در ارسال دیتا |
REQ_ID | Output | کد مشخصکننده جهت اطمینان از حصول دریافت اطلاعات توسط فرستنده |
NDA | Output | هرگاه پایه EN_DT دارای مقدار یک منطقی باشد و دریافت اطلاعات و ثبت آنها در حافظه به اتمام رسد، پارامتر NDA نیز دارای مقدار یک منطقی میگردد. در صورتیکه دریافت اطلاعات کامل نشده باشد و دیتایی در صف موقت وجود داشته باشد، مقدار صفر منطقی میگیرد.
همچنین اگر پایه EN_DT دارای مقدار صفر منطقی باشد و پارامتر NDA دارای دیتای یک منطقی باشد بیانگر وجود دیتا در صف موقت است که باید به حافظه منتقل شود. |
RD | Output | ناحیه ذخیرهسازی دیتای دریافتی به فرم Pointer، این آدرس باید مساوی یا بزرگتر از آدرس اختصاص داده شده جهت ارسال دیتا در بلاک X_SEND پارامتر SD است. |
عملکرد بلاک X_RCV {رفرنس2}
همانطور که در شکل 2-2 نیز مشخص است، زمانی که دیتا از سمت فرستنده دریافت شد؛ در صف موقت قرار داده میشود. در این زمان میتوان با استفاده از بلاک X_RCV دیتای مورد نظر را از صف به حافظه منتقل نمود. در صورتیکه پارامتر EN_DT در بلاک X_RCV دارای مقدار صفر منطقی باشد، با توجه به مقدار پارامتر NDA میتوان از وجود دیتا در صف مطلع شد:
- NDA=0 بیانگر عدم وجود دیتا در صف است.
- NDA=1 به معنی وجود دیتا در صف است.
شکل 2-2
هر گاه دیتا در صف قرار داشته باشد، با فعال نمودن (یک نمودن) پارامتر EN_DT، میتوان اطلاعات مورد نظر را از صف به حافظه دلخواه منتقل نمود. به شکل 3-2 توجه فرمایید.
شکل 3-2
با توجه به نکات فوق، میتوان موضوع را به صورت نشان داده شده در جدول 2-2 جمعبندی نمود.
وضعیت دیتا | مقدار پارامتر EN_DT | مقدار پارامتر NDA |
عدم وجود دیتا در صف | 0 | 0 |
وجود دیتا در صف | 0 | 1 |
دریافت دیتا و انتقال به حافظه | 1 | 0 |
پایان دریافت دیتا و انتقال به حافظه | 1 | 1 |
یک مثال ارتباطی جهت تبادل دیتا توسط این روش پیادهسازی و بهطور عملی تست شود.
مطالب مرتبط در فایل 20989875_S7BaseComm_XSEND_DOKU_v10_e وجود دارد.
3-1-3 سرویس ارتباطی X_PUT/X_GET
با استفاده از این سرویس میتوان به تبادل دیتا به صورت سرور/کلاینت پرداخت. در این روش برنامه با استفاده از بلاکهای X_GET و (یا) X_PUT فقط در سمت کلاینت نوشته شده و توسط آن میتوان دیتایی را از کلاینت به سرور منتقل (عمل Write با استفاده از بلاک X_PUT) و یا از سرور به کلاینت منتقل نمود(عمل Read با استفاده از بلاک X_GET). در ادامه به بررسی این بلاکها میپردازیم.
الف) بلاک X_GET (SFC 67)
محل قرارگیری این بلاک در بخش Library > Standard Library > System Function Block است. شکل 4-2 این بلاک را در زبان LAD نشان میدهد. با استفاده از این بلاک میتوان دیتایی را از CPU مقصد، Read نمود. یعنی دیتایی را از CPU مقصد (سرور) خوانده و به CPU مبدا (کلاینت) منقل نمود.
شکل 4-2
جدول 3-2 پارامترهای این بلاک و شرح عملکرد آنها را نشان میدهد.
جدول 3-2
پارامتر | ورودی/خروجی | Data Type | عملکرد |
REQ | Input | BOOL | فعالساز خواندن (دریافت) دیتا توسط بلاک (با اعمال مقدار یک منطقی ارسال دیتا آغاز میشود) |
CONT | Input | BOOL | مقدار صفر منطقی: یعنی پس از پایان ارسال دیتا، کانکشن منطقی ایجاد شده بین دو CPU غیرفعال شود. در این حالت منبع اختصاص داده شده به این ارتباط، برای سایر ارتباطات آزاد میشود.
مقدار یک منطقی: یعنی پس از پایان ارسال دیتا، همچنان ارتباط منطقی بین دو CPU برقرار بماند. بهتر است این پایه دارای مقدار همیشه صفر باشد. |
DEST_ID | Input | WORD | آدرس MPI مربوط به PLC ارسال کننده اطلاعات |
VAR_ADDR | ANY | آدرس مبدا جهت دیتایی که باید خوانده شود | |
RET_VAL | Output | INT | کد خطا در صورت بروز خطا در ارسال دیتا |
BUSY | Output | BOOL | دریافت مقدار یک منطقی از این پایه، به معنی اشتغال به ارسال اطلاعات توسط بلاک است. دریافت مقدار یک منطقی به معنی پایان ارسال اطلاعات و یا غیرفعال بودن بلاک است. |
RD | IN/OUT | ANY | آدرس مقصد برای ذخیرهسازی دیتا |
ب) بلاک X_PUT (SFC 68)
محل قرارگیری این بلاک در بخش Library > Standard Library > System Function Block است. شکل 5-2 این بلاک را در زبان LAD نشان میدهد. با استفاده از این بلاک میتوان دیتایی را در CPU مقصد، Write نمود. یعنی دیتایی را از CPU مبدا (کلاینت) به CPU مقصد (سرور) منتقل نمود.
شکل 5-2
جدول 4-2 پارامترهای این بلاک و شرح عملکرد آنها را نشان میدهد.
جدول 4-2
پارامتر | ورودی/خروجی | Data Type | عملکرد |
REQ | Input | BOOL | فعالساز ارسال دیتا توسط بلاک (با مقدار یک منطقی ارسال دیتا آغاز میشود) |
CONT | Input | BOOL | مقدار صفر منطقی: یعنی پس از پایان ارسال دیتا، کانکشن منطقی ایجاد شده بین دو CPU غیرفعال شود. در این حالت منبع اختصاص داده شده به این ارتباط، برای سایر ارتباطات آزاد میشود.
مقدار یک منطقی: یعنی پس از پایان ارسال دیتا، همچنان ارتباط منطقی بین دو CPU برقرار بماند. بهتر است این پایه دارای مقدار همیشه صفر باشد. |
DEST_ID | Input | WORD | آدرس MPI مربوط به PLC دریافتکننده اطلاعات |
VAR_ADDR | ANY | آدرس مقصد برای ارسال دیتا در آن | |
SD | Input | ANY | آدرس دیتا در مبدا |
RET_VAL | Output | INT | کد خطا در صورت بروز خطا در ارسال دیتا |
BUSY | Output | BOOL | دریافت مقدار یک منطقی از این پایه، به معنی اشتغال به ارسال اطلاعات توسط بلاک است |
یک مثال ارتباطی جهت تبادل دیتا توسط این روش پیادهسازی و بهطور عملی تست شود.