تالار گفتگوی سایت مهندس ماهر
با سلام
برخی از همکاران در مورد نحوه برنامه نویسی OB86 سوال می کنند . این OB در زمان وقوع فالت Profibus و در زمان برطرف شدن فالت Profibus توسط سیستم عامل فراخوان می شود. به عنوان مثال وقتی یک Node پروفی باس از دسترس خارج میشود بلافاصله OB86 اجرا می شود و وقتی که این Node به حالت عادی بازگشت باز این OB اجرا می گردد.
ساده ترین حالت برنامه نویسی در OB86 اینست که یک بیت Set شده و یک آلارم تولید شود و وقتی مشکل برطرف شد این بیت توسط اپراتور Reset گردد .
راه اصولی تر اینست که برنامه ای بنویسیم که اولا مشخص کند فالت رخ داده یا بر طرف شده سپس آدرس Node که مشکل پیدا کرده را گزارش کند . در ضمن اگر CPU چند پورت DP داشته باشد مشخص کند که فالت مربوط به کدام پورت است. قطعا برنامه نویسی برای این منظور با زبان های LAD/FBD/STL دشوار خواهد بود . زبان SCL می تواند یک گزینه مناسب باشد.
برای این منظور ابتدا لازم است با متغیر های Temp در بلوک OB86 آشنا شویم و ببینیم چه اطلاعاتی را بر می گردانند
Local Byte 0 : این بایت اگر عدد 57 دسیمال را بر گرداند یعنی خطا به وقوع پیوسته و اگر عدد 56 را بر گرداند یعنی فالت بر طرف شده است
Local word 6 : این word آدرس پورت DP که مشکل داشته یا مشکل آن برطرف شده را بر می گرداند .
Local Byte 11 : این بایت آدرس Node که فالت گرفته یا فالت آن بر طرف شده را بر می گرداند.
با توجه به نکات فوق برنامه به زبان SCL نوشته شده است این برنامه کل Node های شبکه پروفی باس را در یک حلقه For اسکن می کند اگر فالت هر کدام رخ داده در DB1 آدرس مربوطه یک و اگر فالت بر طرف شده صفر می گردد. در انتقال بایت به Memory word دقت کنید .
ORGANIZATION_BLOCK OB86
VAR_TEMP
info : ARRAY[0..19] OF BYTE;
k:INT;
END_VAR
mb0:= info[11];
mb1:=mb0;
mb0:=0;
mb3:=info[0];
mb2:=0;
FOR k:=1 TO 127 DO
IF WORD_TO_INT(mw2)=57 then
IF k= WORD_TO_INT(mw0) THEN db1.dbw [(k-1)*2] :=1; END_IF;
END_IF;
IF WORD_TO_INT(mw2)=56 then
IF k= WORD_TO_INT(mw0) THEN db1.dbw [k*2] :=0; END_IF;
END_IF;
END_FOR;
;
END_ORGANIZATION_BLOCK
فایل زیپ شده پروژه به پیوست است.
اگر چند شبکه پروفی باس به پورت های مختلف CPU وصل شوند ابتدا لازم است LW6 آنالیز شود سپس حلقه FOR برای هر شبکه اجرا گردد.
عالی بود ممنون مثل همیشه از زکات علم شما بهره بردیم
سپاس از لطف شما جناب مهندس فضلی