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

کاربرد MPI

بلاک X_RCV

عملکرد بلاک 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 است.

بلاک X_RCV

شکل 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 به معنی وجود دیتا در صف است.

عملکرد بلاک X_RCV

شکل 2-2

هر گاه دیتا در صف قرار داشته باشد، با فعال نمودن (یک نمودن) پارامتر EN_DT، می‌توان اطلاعات مورد نظر را از صف به حافظه دلخواه منتقل نمود. به شکل 3-2 توجه فرمایید.

عملکرد بلاک X_RCV

شکل 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 مبدا (کلاینت) منقل نمود.

بلاک X_GET (SFC 67)

شکل 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 مقصد (سرور) منتقل نمود.

بلاک X_PUT (SFC 68)

شکل 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 دریافت مقدار یک منطقی از این پایه، به معنی اشتغال به ارسال اطلاعات توسط بلاک است

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

پیام بگذارید