تماس و مشورت با مدرس دوره : 09120821418

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

مشخصا اندیس ها و شاخص های بسیار زیادی در جایابی مکان تولید تاثیر گذار هستند. درحالت کلی، این شاخص ها را به شاخص های الکتریکی، مکانیکی، زیست محیطی و … می توان تقسیم بندی کرد. با استفاده از نرم افزار DIgSILENT، تنها می توانیم شاخص های الکتریکی را محاسبه و با یکدیگر مقایسه کنیم.

هدف این DPL این است که یک ژنراتور را روی پستهای (Station) مختلف شبکه جابه جا کند و با توان های اکتیو تولیدی مختلف، تلفات اکتیو شبکه را حساب نماید. به منظور ساده تر نمودن بحث، در این مثال تنها یک واحد نیروگاهی را در نظر گرفته ایم و موقعیت و مقدار توان تولیدی آن را تغییر داده ایم و در هر حالت میزان تلفات شبکه را محاسبه نموده ایم. به طور خلاصه، شاخص جایابی تولید را تلفات توان اکتیو شبکه در نظر گرفته ایم.

نتیجه ی برنامه ی DPL این است که حالات مختلف وصل ژنراتور به شبکه را بررسی کند و تلفات آنها را در یک فایل متنی نمایش دهد. بدین ترتیب، با مقایسه ی نتایج فایل متنی، می توان بهترین موقعیت برای نصب یک ژنراتور را مشخص نمود.

واضح است که امکان توسعه ی این DPL برای حالتی که چند ژنراتور را بخواهیم در شبکه جایابی کنیم، وجود دارد. مسلما پیچیدگی های برنامه نویسی با این روش افزایش خواهد داشت. ضمنا، بهتر این است که خود نرم افزار بهینه سازی شاخص تلفات را انجام دهد و نتیجه ی نهایی را به کاربر اعلام کند. توصیه می کنیم در حالت جایابی چند واحد نیروگاهی، ارتباطی بین نرم افزار DIgSILENT و MATLAB انجام دهیم و از جعبه ابزار بهینه سازی نرم افزار MATLAB کمک بگیریم. نرم افزار MATLAB فرمان نصب ژنراتور به پست های مختلف را صادر می کند و DIgSILENT محاسبات پخش بار و تلفات را انجام داده و نتیجه را به MATLAB اعلام می نماید.

در ادامه، نحوه اجرای برنامه ی فوق برای یک واحد ژنراتوری را بررسی می کنیم. درابتدا روی صفحه ی گرافیکی یک ژنراتور تعریف می کنیم. این ژنراتور نباید به جایی متصل باشد. برای تعریف این ژنراتور، ابتدا آن را به یک باسبار دلخواه متصل می نماییم. سپس، روی ژنراتور کلیک راست می نماییم و گزینه ی Disconnect Element را انتخاب می کنیم. بدین ترتیب ژنراتور از باسبار جدا می شود

آیکون ژنراتوری که باید به باسبارهای مختلف وصل شود

روی آیکون ژنراتور کلیک راست می کنیم و برای آن یک نام دلخواه مثلاMyGenerator تعیین می کنیم. از آنجا که ژنراتور به جایی وصل نیست، روی آن کلیک راست می نماییم و گزینه ی Out of Service را فعال می کنیم. از این ژنراتور در داخل DPL استفاده می کنیم و آن را به باسبارهای مختلف شبکه متصل خواهیم کرد.

در شکل زیر صفحه ی Basic Options این DPL را ملاحظه می کنید. با توجه به شکل دیده می شود که در قسمت External Objects ژنراتور را به DPL معرفی نموده ایم و نام آن را MyGenerator گذاشته ایم.

علاوه بر آن، در قسمت External Objects دو پست S1 و S2 از نوع Station نیز معرفی نموده ایم. هدف این است که ژنراتور به هر یک از این دو پست متصل شود و مقدار تلفات شبکه در هر حالت محاسبه گردد.

در قسمت External Objects علاوه بر معرفی واحد تولید و پست های پیشنهادی برای نصب ژنراتور ، یک Cubicle به نام CUB را در قسمت External Objects معرفی نموده ایم. CUB یک bay در یکی از پست های شبکه است که همه ی کلیدهای آن بسته است. باید توجه داشت که ژنراتور نمی تواند مستقیما به پست های شبکه متصل شود و باید از طریق یک bay متصل گردد. به همین علت، یک bay به نام CUB در External Objects تعریف کردیم تا بتوانیم ژنراتور را به کمک آن به پست های موجود در شبکه وصل کنیم. تاکید می کنیم که پستها باید از نوع Station تعریف شوند و ژنراتور از طریق Cubicle به آنها متصل خواهد شد.

لازم به ذکر است که خازن و رآکتور هم نمی توانند مستقیما به پست های شبکه متصل شود و باید از طریق یک Cubicle متصل گردند. بنابراین اگر قصد نوشتن برنامه ی جایابی خازن و راکتور را داشته باشیم، بایستی مشابه این DPL خازن را با Cubicle به پستی که از نوع Station تعريف شده است، متصل کنیم.قسمت اول این برنامه را ملاحظه می نمایید.

در ابتدای برنامه، متغیرهای object و double مورد نیاز برنامه نویسی را تعریف می کنیم. سپس، صفحه ی خروجی را پاک می کنیم و با دستور ()ResetCalculation محاسبات قبلی را متوقف می کنیم. با دستور EchoOff() واسط کاربر را غیر فعال می نماییم تا سرعت انجام محاسبات بالاتر رود و اطلاعات غیر ضروری در صفحه ی خروجی نمایش داده نشوند.

با دستور printf، در صفحه ی خروجی اطلاعات دلخواه را می نویسیم و یک پخش بار انجام می دهیم.

سپس، با استفاده از ))SummaryGrid ، تلفات شبکه را محاسبه می نماییم و با استفاده از دستور printf مقدار آن را در صفحه ی خروجی نمایش میدهیم. مجددا از دستور ()ResetCalculation برای توقف محاسبات قبلی استفاده می کنیم.با دستور AddCopy از bay تعریف شده در External Objects، یک کپی در دو پست موجود در شبکه قرار میدهیم و آنها را CUBG1 و CUBG2 نام گذاری می کنیم.

اگر بخواهیم ژنراتور را به پست اول اتصال دهیم، از دستورات زیر استفاده می کنیم:

;CUBG1:Obj_id=MyGenerator

;CUBG2:Obj_id=NULL

با دستور اول، ژنراتور را به bay پست اول متصل می کنیم. با دستور دوم، bay پست دوم را Null می کنیم. این بدین معنا است که به bay تعریف شده در پست دوم هیچ عنصری متصل نگردیده است. ضمنا برای اطمینان از اینکه ژنراتور در مدار است یا خیر، از دستور 0= MyGenerator : outserv استفاده می کنیم.

با دستور printf در صفحه ی خروجی نشان می دهیم که ژنراتور به پست اول متصل شده است. سپس، متغیر PG را برابر با 0.25 قرار میدهیم و تا زمانی که توان اکتیو ژنراتور کمتر از 2 باشد، حلقه ی while تکرار خواهد شد. با دستورات زیر، توان اکتیو ژنراتور را PG و ماکزیمم و مینیمم توان راکتیو ژنراتور را به ترتیب 2/3*PG و 1/3*PGانتخاب می کنیم.

;MyGenerator:pgini=PG

;MyGenerator:cQ max=PG*2/3

;MyGenerator:cQ min=-1/3*PG

در ادامه ی برنامه، به ازای هر پله از توان اکتیو ژنراتور متصل به پست اول، میزان تلفات اکتیو را محاسبه می کنیم و در صفحه ی خروجی نمایش میدهیم. به این وسیله می توان بهترین میزان تولید را برای ژنراتور، در حالت اتصال به پست اول به دست آورد. سپس، ژنراتور را به پست دوم متصل نموده و عملیات مشابه را تکرار می نماییم تا بهترین پست و بهینه ترین میزان تولید در آن پست، جهت کاهش تلفات اکتیو تعیین گردد. ادامه ی برنامه را ملاحظه می کنید.

مقدار توان اکتیو را در صفحه ی خروجی نمایش میدهیم. محاسبات پخش بار را انجام می دهیم به کمک دستور SummaryGrid، تلفات اکتیو را محاسبه می کنیم و در صفحه ی خروجی نمایش می دهیم. در انتهای حلقهی while، به مقدار PG ، 0.25 مگاوات می افزاییم و حلقه مجددا تکرار خواهد شد. بدین ترتیب، حلقهی مذکور برای توان های 0.25، 0.5، 0.75،…، 2 اجرا خواهد شد.

در مرحله ی بعدی، ژنراتور را به پست دوم متصل می کنیم. با استفاده از دستور هم زمان، با استفاده از دستور CUBG2 : Obj _ id = MyGenerator ، ژنراتور را به bay موجود در پست دوم متصل می کنیم. به طورهمزمان موجود در پست اول را CUBG1:Obj_id=NULL می کنیم. با دستور printf، این تغییر را در صفحه ی خروجی نمایش میدهیم.

مجددا PG را برابر 0.25 قرار میدهیم و تازمانی که PG از ۲ کمتر باشد، توان اکتیو ژنراتور را PG و ماکزیمم و مینیمم توان راکتیو آن را به ترتیب2/3*PG و -1/3 *PG انتخاب می کنیم.در این حالت نیز پخش بار انجام می شود و با دستور SummaryGrid تلفات سیستم را محاسبه می کنیم و نمایش میدهیم.سپس، ژنراتور را از bay پست دوم نیز جدا می نماییم و CUBG1 و CUBG2 را Null می کنیم.در انتها، با استفاده از دستور EchoOn مجدد واسط کاربر را فعال می کنیم تا کلیه پیغامها در صفحه ی خروجی ظاهر شوند. ژنراتور را مجددا از مدار خارج می کنیم و دو bay اضافی را پاک می کنیم.