در PLC زیمنس ، لوگو 8 و نرم افزار LOGO Soft Comfort برای کنترل یک مقدار آنالوگ
از تابع PI Controller استفاده می کنیم .
فرض رو بر این بگیرید ما سخت افزار جهت تست برنامه و اعمال نتیجه تغییرات خروجی انالوگ به سیستم را نداریم .
برای مثال شما درصد باز شدن یک شیر تدریجی بخار را تغییر می دهید تا مقدار دما افزایش یابد .
اما در محیط Simulation بخار و سنسور دمایی وجود ندارد تا افزایش دما را به ما نشان دهد .
ما این کار را در Simulation Logo Soft Comfort با یک کانتر انجام دادیم .
شمارنده افزایش و کاهش پیدا می کند و برای اعمال فیدبک به PI Controller از همین شمارنده به عنوان
ورودی آنالوگ تابع PI استفاده کردیم .
در این آموزش از تابع PWM نیز استفاده کردیم تا جنبه آموزشی پروژه افزایش یابد .
و به نوعی یک بار دیگر با کاربردی از PWM آشنا شویم .
با PWM ، می توان درصد ON یا OFF بودن خروجی دیجیتال را مشخص کرد .
حال ما با استفاده از دو تایمر که در زمان های ON,OFF خروجی PWM مدام روشن و خاموش می شوند ،
پالسی ایجاد کرده و آنرا به شمارنده اعمال کردیم .
دقت داشته باشید در زمان ON خروجی PWM شمارنده به صورت صعودی می شمارد .
و در زمان خاموش بودن خروجی PWM ، شمارنده به صورت نزولی می شمارد .
یعنی در زمان شمارش نزولی هر دو پایه Cnt و Dir را باید فعال کنیم .
مقدار Periodic time تابع PWM با استفاده از یک تابه ریاضی به برنامه معرفی شده است .
برای مثال مقدار آنرا 1000 میلی ثانیه می گذاریم .
حال اگر مقدار ON کمتر از OFF باشد ، تعداد شمارش نزولی کانتر از شمارش صعودی ان بیشتر شده
و در نتیجه مقدار کانتر کاهش می یابد .
همچنین اگر زمان روشن بودن خروجی PWM از زمان خاموش بودن ان کمتر باشد .
تعداد پالس ها در حالت صعودی از نزولی بیشتر بوده و در نتیجه مقدار عددی کانتر افزایش خواهد یافت .
با افزایش یا کاهش مقدار کانتر ، دوباره خروجی PI Controller تغییر کرده و به نوعی خود را اصلاح می کند .
حالت بسته به اینکه Parameter set در تابع PI Controller کدام حالت باشد ، پاسخ سیستم سریع یا کند تر خواهد بود .
برای مثال انتخاب فشار واکنش را سریع تر از کنترل با دما خواهد کرد .
اگر مقدار زمانی تایمر های پالس بیشتر باشد ، جبران کنندگی کند تر و در نتیجه تغییرات نرم تر خواهد بود .
برای اینکه بعد از دانلود بتوان به راحتی از قسمت Set Parameter اقدام به تغییر ست پوینت ها کرد ،
می توان برای بلوک ها در قسمت Block name اسمی انتخاب کرد .