تالار گفتگوی سایت مهندس ماهر

Notifications
Clear all

مشکل در کار کردن با FC و FB  

  RSS

alirezaalmas
(@alirezaalmas)
New Member
عضو شده: 6 سال قبل
ارسال‌ها: 2
۳۱/۰۱/۱۳۹۸ ۹:۵۱ ب.ظ  

با سلام

من داشتم، کتاب سطح پیشرفته (صفحه 291) مهندس ماهر رو میخوندم. یه جایی با یه مشکلی روبرو شدم. ممنون میشم اگه کسی از دوستان کمکم کنه.

من یه بلوک FC ساختم و اون رو دو بار در OB1 اضافه کردم و به اون ورودی ها و خروجی های مختلفی اختصاص دادم با ست شدن ورودی یکی ، خروجی بقیه هم تغییر میکنه .  به نظرتون مشکل از کجاست ؟ 

آیا مثلا اگر 5 موتور یکسان رو بخوایم فرمان بدیم باید از 5 بلوک FC متفاوت استفاده کنیم ؟ 

 


نقل‌قول
kolahi
(@kolahi)
Estimable Member
عضو شده: 7 سال قبل
ارسال‌ها: 234
۰۱/۰۲/۱۳۹۸ ۹:۵۹ ق.ظ  

سلام 

بله این مشکل در FC  در برخی موارد رخ میده و RLO  مقدارش را از FC  قبلی حفظ میکنه

اگر از FB  استفاده کنید مشکل حل میشه چون هر FB  یک DB  جداگانه داره . بنابراین یک FB   برای موتور طراحی کنید 5 بار صدا بزنید هر بار با یک DB  جدید


پاسخنقل‌قول
alirezaalmas
(@alirezaalmas)
New Member
عضو شده: 6 سال قبل
ارسال‌ها: 2
۰۱/۰۲/۱۳۹۸ ۱:۴۱ ب.ظ  

سلام 

ممنون از پاسختون ، با FB ها امتحان کردم ولی باز هم همون مشکل وجود داشت ولی بعد متوجه شدم مشکل از حافظه موقت (TEMP) هست، یعنی وقتی شما یک بیت رو در حافظه TEMP یک کنید ، برای همه بلوک های FC  و FB مشابه یک در نظر میگیره و این گاهی باعث اشتباه در خروجی برنامه میشه (مخصوصا وقتی اون بیت مستقیم به خروجی مرتبط باشه).

راه حل ماجرا هم استفاده از FB  و بکارگیری حافظه STAT بجای TEMP هست.

بازم ممنون


پاسخنقل‌قول
SGH
 SGH
(@sgh)
Trusted Member
عضو شده: 7 سال قبل
ارسال‌ها: 91
۲۱/۰۲/۱۳۹۸ ۱۰:۱۴ ب.ظ  

با سلام

البته بسیاری از برنامه ها که در Library زیمنس هستند، با FC نوشته شده اند و هیچگاه تداخل حافظه های Temp بین آنها رخ نمی دهد.

به نظر بنده دلیل آن استفاده از زبان سطح بالاتر برنامه نویسی یعنی SCL است که FC های زیمنس با آن زبان نوشته شده اند.

بنده در تست عملی که در برنامه مشابه انجام دادم متوجه شدم که فانکشن هایی که با SCL برنامه نویسی می شوند، هرگز دچار این مشکل نمی شوند. گویا کدهای کامپایل در SCL با رجیستری سازگاری کاملی دارند.

موفق باشید


پاسخنقل‌قول
Share: