𝐏𝐨𝐰𝐞𝐫𝐅𝐚𝐜𝐭𝐨𝐫𝐲 𝐃𝐈𝐠𝐒𝐈𝐋𝐄𝐍𝐓 | آموزش نرم افزار دیگسایلنت پاورفکتوری
🔰 ادامه سطح 1 - بخش 8 🔰 🔹 Expression در شرطها در پستهای آینده بهصورت کامل با if کار خواهیم کرد. اما همین حالا میتوانیم ارتباط Expression و شرط را ببینیم: ! =================================== ! ✅ Telegram: @PowerFactoryDIgSILENT ! ==================…
🎯 تمرین شماره 8
در کد زیر Expressionها را پیدا کنید:
سؤال:
☜ Expression موجود در محاسبه
☜ Expression موجود در شرط
☜ مقدار نهایی
☜ آیا پیام نمایش داده میشود؟
#تمرین_سطح_1
#تمرین
در کد زیر Expressionها را پیدا کنید:
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
int a, b, result;
a = 20;
b = 30;
result = a + b;
if (result > 40)
{
printf('Result is greater than 40');
}
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
سؤال:
☜ Expression موجود در محاسبه
result چیست؟☜ Expression موجود در شرط
if چیست؟☜ مقدار نهایی
result چقدر است؟☜ آیا پیام نمایش داده میشود؟
#تمرین_سطح_1
#تمرین
🔰 سطح 1 - بخش 9 🔰
📌 Variable در DPL
در پستهای قبلی با Comment، Statement و Expression آشنا شدیم.
حالا به یکی از مهمترین مفاهیم برنامهنویسی میرسیم:
تقریباً در تمام برنامههای DPL که در ادامه دوره مینویسیم، با Variableها سروکار خواهیم داشت.
🔹 Variable چیست؟
Variable را میتوان یک محل نامگذاریشده برای نگهداری یک مقدار در نظر گرفت.
فرض کنید میخواهیم عدد
میتوانیم یک Variable به نام
حالا هرجا در برنامه از
🔹 چرا به Variable نیاز داریم؟
فرض کنید میخواهیم چند بار از عدد
اگر مقدار را مستقیماً در همهجا بنویسیم:
مدیریت برنامه سخت میشود.
اما اگر آن را داخل یک Variable قرار دهیم:
از این به بعد فقط کافی است از:
استفاده کنیم.
اگر مقدار power تغییر کند، فقط مقدار Variable را تغییر میدهیم.
🔹 تعریف Variable
در DPL باید نوع Variable را مشخص کنیم.
برای مثال یک Variable از نوع
در اینجا:
نوع Variable است.
و:
نام Variable است.
بنابراین:
یعنی یک Variable عدد صحیح به نام
🔹 مقداردهی به Variable
بعد از تعریف Variable میتوانیم به آن مقدار بدهیم.
در این برنامه:
1️⃣ مرحله اول
Variable تعریف میشود:
2️⃣ مرحله دوم
مقدار
3️⃣ مرحله سوم
مقدار Variable چاپ میشود:
خروجی:
🔄 مقدار Variable میتواند تغییر کند
یکی از ویژگیهای مهم Variable این است که مقدار آن ثابت نیست.
مثلاً:
خروجی:
یعنی ابتدا:
و بعد:
🔹 نامگذاری Variableها
انتخاب نام مناسب برای Variable بسیار مهم است.
نامهایی مانند:
ممکن است در مثالهای خیلی ساده قابل قبول باشند، اما در پروژههای واقعی خوانایی کد را کاهش میدهند.
بهتر است نام Variable نشاندهنده مفهوم آن باشد.
مثلاً:
این نامها خیلی خواناتر هستند.
مثلاً وقتی میبینیم:
تقریباً بدون توضیح هم متوجه منطق برنامه میشویم.
#سطح_1
#DIgSILENT #PowerFactory #DPL #PowerSystems #مهندسی_برق
✅ @PowerFactoryDIgSILENT
📌 Variable در DPL
در پستهای قبلی با Comment، Statement و Expression آشنا شدیم.
حالا به یکی از مهمترین مفاهیم برنامهنویسی میرسیم:
🔹 Variable یا متغیر چیست؟
تقریباً در تمام برنامههای DPL که در ادامه دوره مینویسیم، با Variableها سروکار خواهیم داشت.
🔹 Variable چیست؟
Variable را میتوان یک محل نامگذاریشده برای نگهداری یک مقدار در نظر گرفت.
فرض کنید میخواهیم عدد
100 را در برنامه نگهداری کنیم.میتوانیم یک Variable به نام
power داشته باشیم:power → 100
حالا هرجا در برنامه از
power استفاده کنیم، مقدار ذخیرهشده در آن را در اختیار خواهیم داشت.🔹 چرا به Variable نیاز داریم؟
فرض کنید میخواهیم چند بار از عدد
100 استفاده کنیم.اگر مقدار را مستقیماً در همهجا بنویسیم:
100
100
100
100
مدیریت برنامه سخت میشود.
اما اگر آن را داخل یک Variable قرار دهیم:
power = 100
از این به بعد فقط کافی است از:
power
استفاده کنیم.
اگر مقدار power تغییر کند، فقط مقدار Variable را تغییر میدهیم.
🔹 تعریف Variable
در DPL باید نوع Variable را مشخص کنیم.
برای مثال یک Variable از نوع
int:! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
int power;
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
در اینجا:
int
نوع Variable است.
و:
power
نام Variable است.
بنابراین:
int power;
یعنی یک Variable عدد صحیح به نام
power تعریف کن.🔹 مقداردهی به Variable
بعد از تعریف Variable میتوانیم به آن مقدار بدهیم.
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
int power;
power = 100;
printf('Power = %d MW', power);
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
در این برنامه:
1️⃣ مرحله اول
Variable تعریف میشود:
int power;
2️⃣ مرحله دوم
مقدار
100 به آن داده میشود:power = 100;
3️⃣ مرحله سوم
مقدار Variable چاپ میشود:
printf('Power = %d MW', power);خروجی:
power = 100 MW
🔄 مقدار Variable میتواند تغییر کند
یکی از ویژگیهای مهم Variable این است که مقدار آن ثابت نیست.
مثلاً:
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
int power;
power = 100;
printf('Power = %d MW', power);
power = 150;
printf('Power = %d MW', power);
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
خروجی:
Power = 100 MW
Power = 150 MW
یعنی ابتدا:
power → 100
و بعد:
power → 150
🔹 نامگذاری Variableها
انتخاب نام مناسب برای Variable بسیار مهم است.
نامهایی مانند:
x
a
b
n
ممکن است در مثالهای خیلی ساده قابل قبول باشند، اما در پروژههای واقعی خوانایی کد را کاهش میدهند.
بهتر است نام Variable نشاندهنده مفهوم آن باشد.
مثلاً:
power
voltage
current
loading
lineCount
busCount
totalPower
این نامها خیلی خواناتر هستند.
مثلاً وقتی میبینیم:
totalPower = power1 + power2;
تقریباً بدون توضیح هم متوجه منطق برنامه میشویم.
#سطح_1
#DIgSILENT #PowerFactory #DPL #PowerSystems #مهندسی_برق
✅ @PowerFactoryDIgSILENT
𝐏𝐨𝐰𝐞𝐫𝐅𝐚𝐜𝐭𝐨𝐫𝐲 𝐃𝐈𝐠𝐒𝐈𝐋𝐄𝐍𝐓 | آموزش نرم افزار دیگسایلنت پاورفکتوری
🔰 سطح 1 - بخش 9 🔰 📌 Variable در DPL در پستهای قبلی با Comment، Statement و Expression آشنا شدیم. حالا به یکی از مهمترین مفاهیم برنامهنویسی میرسیم: 🔹 Variable یا متغیر چیست؟ تقریباً در تمام برنامههای DPL که در ادامه دوره مینویسیم، با Variableها سروکار…
🔰 ادامه سطح 1 - بخش 9 🔰
🔹 Variable و Expression
حالا ارتباط Variable و Expression را که در پست قبل یاد گرفتیم ببینیم.
در اینجا:
یک Expression است.
و:
یک Variable است که نتیجه Expression را نگهداری میکند.
در نتیجه:
🔹 چند Variable در یک تعریف
در صورت همنوع بودن Variableها میتوان آنها را در یک Statement تعریف کرد.
مثلاً:
در اینجا سه Variable از نوع
البته در پروژههای مهندسی واقعی باید نوع داده را متناسب با ماهیت مقدار انتخاب کنیم؛ مثلاً برای مقادیر اعشاری معمولاً به نوع مناسب عددی نیاز خواهیم داشت که در پستهای بعدی بررسی میکنیم.
🔹 Variableها فقط عدد نیستند
یکی از نکات بسیار مهم در DPL این است که Variable میتواند انواع مختلفی داشته باشد.
در ادامه دوره با مواردی مانند:
کار خواهیم کرد.
مثلاً:
و این بخش یکی از پایههای اصلی دوره خواهد بود.
🔥 Variable در PowerFactory
اینجا Variableها اهمیت بسیار بیشتری پیدا میکنند.
فرض کنید در آینده میخواهیم تعداد خطوط شبکه را نگهداری کنیم:
یا مقدار Loading یک خط را:
یا یک Object مربوط به خط را:
یا مجموعهای از خطوط را:
در نتیجه Variableها پل ارتباطی بین منطق برنامه DPL و اطلاعات PowerFactory هستند.
⚠️ یک اشتباه رایج
نباید قبل از تعریف Variable از آن استفاده کنیم.
مثلاً این ساختار صحیح نیست:
اگر
ابتدا باید Variable را تعریف کنیم:
و سپس مقداردهی کنیم:
یعنی:
🧠 یک مثال کامل
بیایید مفاهیمی که تا اینجا یاد گرفتهایم را کنار هم قرار دهیم:
ساختار برنامه:
این الگو را در بسیاری از برنامههای آینده نیز خواهیم دید.
🎯 جمعبندی
در این پست یاد گرفتیم:
☜ Variable چیست؟
☜ چرا از Variable استفاده میکنیم.
☜ چگونه Variable تعریف کنیم.
☜ چگونه به Variable مقدار بدهیم.
☜ چگونه مقدار Variable را تغییر دهیم.
☜ چگونه Variable را در Expression استفاده کنیم.
☜ چگونه چند Variable تعریف کنیم.
☜ Variableها میتوانند انواع مختلفی داشته باشند.
☜ در PowerFactory، Variableها برای نگهداری مقادیر و Objectها اهمیت زیادی دارند.
⭐️ قانون طلایی
#سطح_1
#DIgSILENT #PowerFactory #DPL #PowerSystems #مهندسی_برق
✅ @PowerFactoryDIgSILENT
🔹 Variable و Expression
حالا ارتباط Variable و Expression را که در پست قبل یاد گرفتیم ببینیم.
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
int power1, power2, totalPower;
power1 = 100;
power2 = 150;
totalPower = power1 + power2;
printf('Total Power = %d MW', totalPower);
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
در اینجا:
power1 + power2
یک Expression است.
و:
totalPower
یک Variable است که نتیجه Expression را نگهداری میکند.
در نتیجه:
power1 = 100
power2 = 150
↓
power1 + power2
↓
totalPower = 250
🔹 چند Variable در یک تعریف
در صورت همنوع بودن Variableها میتوان آنها را در یک Statement تعریف کرد.
مثلاً:
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
int voltage, current, power;
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
در اینجا سه Variable از نوع
int داریم:voltage
current
power
البته در پروژههای مهندسی واقعی باید نوع داده را متناسب با ماهیت مقدار انتخاب کنیم؛ مثلاً برای مقادیر اعشاری معمولاً به نوع مناسب عددی نیاز خواهیم داشت که در پستهای بعدی بررسی میکنیم.
🔹 Variableها فقط عدد نیستند
یکی از نکات بسیار مهم در DPL این است که Variable میتواند انواع مختلفی داشته باشد.
در ادامه دوره با مواردی مانند:
Integer
Real
String
Boolean
Object
Set
کار خواهیم کرد.
مثلاً:
Integer ☜ عدد صحیح
Real ☜ عدد اعشاری
String ☜ متن
Boolean ☜ مقدار منطقی
Object ☜ یک Object از PowerFactory
Set ☜ مجموعهای از Objectها
و این بخش یکی از پایههای اصلی دوره خواهد بود.
🔥 Variable در PowerFactory
اینجا Variableها اهمیت بسیار بیشتری پیدا میکنند.
فرض کنید در آینده میخواهیم تعداد خطوط شبکه را نگهداری کنیم:
lineCount
یا مقدار Loading یک خط را:
loading
یا یک Object مربوط به خط را:
line
یا مجموعهای از خطوط را:
lines
در نتیجه Variableها پل ارتباطی بین منطق برنامه DPL و اطلاعات PowerFactory هستند.
⚠️ یک اشتباه رایج
نباید قبل از تعریف Variable از آن استفاده کنیم.
مثلاً این ساختار صحیح نیست:
power = 100;
اگر
power قبلاً تعریف نشده باشد.ابتدا باید Variable را تعریف کنیم:
int power;
و سپس مقداردهی کنیم:
power = 100;
یعنی:
تعریف
↓
مقداردهی
↓
استفاده
🧠 یک مثال کامل
بیایید مفاهیمی که تا اینجا یاد گرفتهایم را کنار هم قرار دهیم:
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
! Define variables
int power1, power2, totalPower;
! Assign values
power1 = 100;
power2 = 150;
! Calculate total power
totalPower = power1 + power2;
! Display result
printf('Total Power = %d MW', totalPower);
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
ساختار برنامه:
Comment
↓
Variable Definition
↓
Assignment
↓
Expression
↓
Result
↓
Output
این الگو را در بسیاری از برنامههای آینده نیز خواهیم دید.
🎯 جمعبندی
در این پست یاد گرفتیم:
☜ Variable چیست؟
☜ چرا از Variable استفاده میکنیم.
☜ چگونه Variable تعریف کنیم.
☜ چگونه به Variable مقدار بدهیم.
☜ چگونه مقدار Variable را تغییر دهیم.
☜ چگونه Variable را در Expression استفاده کنیم.
☜ چگونه چند Variable تعریف کنیم.
☜ Variableها میتوانند انواع مختلفی داشته باشند.
☜ در PowerFactory، Variableها برای نگهداری مقادیر و Objectها اهمیت زیادی دارند.
⭐️ قانون طلایی
Variable یک نام برای نگهداری و استفاده مجدد از یک مقدار در برنامه است.
#سطح_1
#DIgSILENT #PowerFactory #DPL #PowerSystems #مهندسی_برق
✅ @PowerFactoryDIgSILENT
𝐏𝐨𝐰𝐞𝐫𝐅𝐚𝐜𝐭𝐨𝐫𝐲 𝐃𝐈𝐠𝐒𝐈𝐋𝐄𝐍𝐓 | آموزش نرم افزار دیگسایلنت پاورفکتوری
🔰 ادامه سطح 1 - بخش 9 🔰 🔹 Variable و Expression حالا ارتباط Variable و Expression را که در پست قبل یاد گرفتیم ببینیم. ! =================================== ! ✅ Telegram: @PowerFactoryDIgSILENT ! =================================== int power1, power2, totalPower;…
🎯 تمرین شماره 9
برنامهای بنویسید که سه Variable برای موارد زیر داشته باشد:
سپس مجموع توانها را محاسبه کرده و نتیجه را نمایش دهید.
هدف تمرین:
استفاده همزمان از Variable + Assignment + Expression + Function.
#تمرین_سطح_1
#تمرین
برنامهای بنویسید که سه Variable برای موارد زیر داشته باشد:
Power 1 = 120
Power 2 = 180
Power 3 = 250
سپس مجموع توانها را محاسبه کرده و نتیجه را نمایش دهید.
هدف تمرین:
استفاده همزمان از Variable + Assignment + Expression + Function.
#تمرین_سطح_1
#تمرین
🔰 سطح 1 - بخش 10 🔰
📌 مقداردهی و تغییر مقدار Variable
در پست قبلی با مفهوم Variable آشنا شدیم و دیدیم که متغیر محلی برای نگهداری یک مقدار است.
اما یک سؤال مهم وجود دارد:
پاسخ این سؤال در مفهوم Assignment یا مقداردهی قرار دارد.
🔹 Assignment چیست؟
وقتی یک مقدار را به یک Variable نسبت میدهیم، در حال انجام Assignment هستیم.
ساختار کلی:
مثلاً:
در اینجا:
یعنی:
🔹 Assignment شامل دو طرف است
به این Statement دقت کنید:
سمت چپ:
Variable است.
سمت راست:
مقداری است که قرار است در Variable قرار بگیرد.
بنابراین:
🔹 مقدار Variable قابل تغییر است
همانطور که گفتیم، Variable یک مقدار ثابت نیست.
مثلاً:
خروجی:
یعنی مقدار Variable در طول اجرای برنامه تغییر کرده است:
🔹 مقداردهی میتواند با یک Expression انجام شود
مقدار سمت راست
میتوانیم یک Expression داشته باشیم.
مثلاً:
در اینجا:
سمت راست:
یک Expression است.
ابتدا Expression محاسبه میشود:
سپس نتیجه در
🔹 مقداردهی یک Variable با Variable دیگر
میتوان مقدار یک Variable را در Variable دیگری قرار داد.
مثلاً:
در اینجا ابتدا:
و سپس:
بنابراین مقدار
🔄 بعد از کپی شدن مقدار، دو Variable مستقل هستند
این نکته بسیار مهم است.
مثلاً:
در اینجا بعد از اجرای:
مقدار
بعداً:
باعث تغییر
نتیجه:
#سطح_1
#DIgSILENT #PowerFactory #DPL #PowerSystems #مهندسی_برق
✅ @PowerFactoryDIgSILENT
📌 مقداردهی و تغییر مقدار Variable
در پست قبلی با مفهوم Variable آشنا شدیم و دیدیم که متغیر محلی برای نگهداری یک مقدار است.
اما یک سؤال مهم وجود دارد:
🔹 چگونه یک مقدار را داخل Variable قرار دهیم و بعداً مقدار آن را تغییر دهیم؟
پاسخ این سؤال در مفهوم Assignment یا مقداردهی قرار دارد.
🔹 Assignment چیست؟
وقتی یک مقدار را به یک Variable نسبت میدهیم، در حال انجام Assignment هستیم.
ساختار کلی:
Variable = Value;
مثلاً:
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
int power;
power = 100;
printf('Power = %d MW', power);
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
در اینجا:
power = 100;
یعنی:
مقدار
100را در Variable به نام
powerقرار بده.
🔹 Assignment شامل دو طرف است
به این Statement دقت کنید:
power = 100;
سمت چپ:
power
Variable است.
سمت راست:
100
مقداری است که قرار است در Variable قرار بگیرد.
بنابراین:
Assignment
│
┌──────┴──────┐
↓ ↓
Variable Value
power 100
🔹 مقدار Variable قابل تغییر است
همانطور که گفتیم، Variable یک مقدار ثابت نیست.
مثلاً:
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
int power;
power = 100;
printf('Power = %d MW', power);
power = 200;
printf('Power = %d MW', power);
power = 350;
printf('Power = %d MW', power);
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
خروجی:
Power = 100 MW
Power = 200 MW
Power = 350 MW
یعنی مقدار Variable در طول اجرای برنامه تغییر کرده است:
power = 100
↓
power = 200
↓
power = 350
🔹 مقداردهی میتواند با یک Expression انجام شود
مقدار سمت راست
= الزاماً یک عدد ثابت نیست.میتوانیم یک Expression داشته باشیم.
مثلاً:
! ===================================
! Telegram: @PowerFactoryDIgSILENT
! ===================================
int power1, power2, totalPower;
power1 = 100;
power2 = 150;
totalPower = power1 + power2;
printf('Total Power = %d MW', totalPower);
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
در اینجا:
totalPower = power1 + power2;
سمت راست:
power1 + power2
یک Expression است.
ابتدا Expression محاسبه میشود:
100 + 150 = 250
سپس نتیجه در
totalPower قرار میگیرد:totalPower = 250
🔹 مقداردهی یک Variable با Variable دیگر
میتوان مقدار یک Variable را در Variable دیگری قرار داد.
مثلاً:
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
int power1, power2;
power1 = 250;
power2 = power1;
printf('Power 1 = %d MW', power1);
printf('Power 2 = %d MW', power2);
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
در اینجا ابتدا:
power1 = 250
و سپس:
power2 = power1
بنابراین مقدار
250 در power2 نیز قرار میگیرد.🔄 بعد از کپی شدن مقدار، دو Variable مستقل هستند
این نکته بسیار مهم است.
مثلاً:
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
int power1, power2;
power1 = 250;
power2 = power1;
power1 = 500;
printf('Power 1 = %d MW', power1);
printf('Power 2 = %d MW', power2);
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
در اینجا بعد از اجرای:
power2 = power1;
مقدار
250 در power2 قرار گرفته است.بعداً:
power1 = 500;
باعث تغییر
power2 نمیشود.نتیجه:
Power 1 = 500 MW
Power 2 = 250 MW
#سطح_1
#DIgSILENT #PowerFactory #DPL #PowerSystems #مهندسی_برق
✅ @PowerFactoryDIgSILENT
𝐏𝐨𝐰𝐞𝐫𝐅𝐚𝐜𝐭𝐨𝐫𝐲 𝐃𝐈𝐠𝐒𝐈𝐋𝐄𝐍𝐓 | آموزش نرم افزار دیگسایلنت پاورفکتوری
🔰 سطح 1 - بخش 10 🔰 📌 مقداردهی و تغییر مقدار Variable در پست قبلی با مفهوم Variable آشنا شدیم و دیدیم که متغیر محلی برای نگهداری یک مقدار است. اما یک سؤال مهم وجود دارد: 🔹 چگونه یک مقدار را داخل Variable قرار دهیم و بعداً مقدار آن را تغییر دهیم؟ پاسخ این سؤال…
🔰 ادامه سطح 1 - بخش 10 🔰
🔹 مقداردهی میتواند مرحلهای باشد
فرض کنید میخواهیم مجموع سه مقدار را محاسبه کنیم.
میتوانیم این کار را مرحلهبهمرحله انجام دهیم:
مقدار
در نتیجه:
🔹 Assignment با عملگرهای ریاضی
در Assignment میتوانیم از Expressionهای مختلف استفاده کنیم.
مثلاً:
ابتدا:
سپس:
یعنی:
و در نهایت:
⚠️ یک اشتباه بسیار مهم
علامت
در این دستور:
ما نمیگوییم:
بلکه میگوییم:
در نتیجه
مقایسهها و عملگرهای مقایسهای را در بخش مربوط به Operatorها بررسی خواهیم کرد.
🔹 ترتیب اجرای Assignmentها مهم است
به این مثال توجه کنید:
ابتدا:
سپس:
بنابراین:
اما اگر ترتیب را اشتباه کنیم، نتیجه مورد انتظار را نخواهیم داشت.
مثلاً در برنامههای واقعی باید قبل از استفاده از یک Variable، مطمئن شویم مقدار مناسبی در آن قرار گرفته است.
🔥 Assignment در پروژههای PowerFactory
حالا این مفهوم ساده را به کاربردهای واقعی DPL نزدیک کنیم.
فرض کنید در آینده مقدار Loading یک تجهیز را از PowerFactory دریافت کردهایم و در یک Variable ذخیره میکنیم.
بهصورت مفهومی:
مثلاً:
در اینجا Assignment یکی از مراحل اصلی پردازش اطلاعات خواهد بود.
#سطح_1
#DIgSILENT #PowerFactory #DPL #PowerSystems #مهندسی_برق
✅ @PowerFactoryDIgSILENT
🔹 مقداردهی میتواند مرحلهای باشد
فرض کنید میخواهیم مجموع سه مقدار را محاسبه کنیم.
میتوانیم این کار را مرحلهبهمرحله انجام دهیم:
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
int power1, power2, power3, totalPower;
power1 = 100;
power2 = 200;
power3 = 300;
totalPower = power1;
totalPower = totalPower + power2;
totalPower = totalPower + power3;
printf('Total Power = %d MW', totalPower);
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
مقدار
totalPower به ترتیب تغییر میکند:totalPower = 100
totalPower = 100 + 200
= 300
totalPower = 300 + 300
= 600
در نتیجه:
Total Power = 600 MW
🔹 Assignment با عملگرهای ریاضی
در Assignment میتوانیم از Expressionهای مختلف استفاده کنیم.
مثلاً:
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
int value;
value = 100;
value = value + 20;
printf('Value = %d', value);
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
ابتدا:
value = 100
سپس:
value = value + 20
یعنی:
value = 100 + 20
و در نهایت:
value = 120
⚠️ یک اشتباه بسیار مهم
علامت
= در Assignment به معنی «برابر بودن» در مفهوم ریاضی نیست.در این دستور:
power = 100;
ما نمیگوییم:
power از نظر ریاضی برابر 100 است.
بلکه میگوییم:
مقدار 100 را در Variable به نام Power قرار بده.
در نتیجه
= را در این مرحله بهتر است عملگر مقداردهی در نظر بگیریم.مقایسهها و عملگرهای مقایسهای را در بخش مربوط به Operatorها بررسی خواهیم کرد.
🔹 ترتیب اجرای Assignmentها مهم است
به این مثال توجه کنید:
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
int value, result;
value = 10;
result = value + 5;
printf('Result = %d', result);
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
ابتدا:
value = 10
سپس:
result = value + 5
بنابراین:
result = 15
اما اگر ترتیب را اشتباه کنیم، نتیجه مورد انتظار را نخواهیم داشت.
مثلاً در برنامههای واقعی باید قبل از استفاده از یک Variable، مطمئن شویم مقدار مناسبی در آن قرار گرفته است.
🔥 Assignment در پروژههای PowerFactory
حالا این مفهوم ساده را به کاربردهای واقعی DPL نزدیک کنیم.
فرض کنید در آینده مقدار Loading یک تجهیز را از PowerFactory دریافت کردهایم و در یک Variable ذخیره میکنیم.
بهصورت مفهومی:
Object
↓
Attribute
↓
Value
↓
Variable
↓
Analysis
مثلاً:
Line
↓
Loading
↓
loading
↓
loading > 100
↓
Overload
در اینجا Assignment یکی از مراحل اصلی پردازش اطلاعات خواهد بود.
#سطح_1
#DIgSILENT #PowerFactory #DPL #PowerSystems #مهندسی_برق
✅ @PowerFactoryDIgSILENT
𝐏𝐨𝐰𝐞𝐫𝐅𝐚𝐜𝐭𝐨𝐫𝐲 𝐃𝐈𝐠𝐒𝐈𝐋𝐄𝐍𝐓 | آموزش نرم افزار دیگسایلنت پاورفکتوری
🔰 ادامه سطح 1 - بخش 10 🔰 🔹 مقداردهی میتواند مرحلهای باشد فرض کنید میخواهیم مجموع سه مقدار را محاسبه کنیم. میتوانیم این کار را مرحلهبهمرحله انجام دهیم: ! =================================== ! ✅ Telegram: @PowerFactoryDIgSILENT ! ===================================…
🔰 ادامه سطح 1 - بخش 10 🔰
🧠 یک مثال ترکیبی
در مثال زیر چند مفهوم قبلی را همزمان میبینیم:
خروجی:
ساختار برنامه:
⚠️ نکات مهم
1️⃣ Variable باید از قبل تعریف شده باشد
قبل از:
باید Variable مناسب تعریف شده باشد.
2️⃣ نوع داده باید مناسب باشد
اگر قرار است مقدار اعشاری ذخیره کنیم، نمیتوانیم بدون توجه به نوع داده، آن را مانند یک عدد صحیح مدیریت کنیم.
انواع داده و تفاوت Integer و Real را در پستهای بعدی بهصورت دقیق بررسی خواهیم کرد.
3️⃣ مقدار قبلی ممکن است با مقدار جدید جایگزین شود
وقتی مینویسیم:
در نهایت مقدار فعلی
🎯 جمعبندی
در این پست یاد گرفتیم:
☜ Assignment چیست؟
☜ چگونه یک Variable را مقداردهی کنیم.
☜ چگونه مقدار Variable را تغییر دهیم.
☜ چگونه از Variable دیگر برای مقداردهی استفاده کنیم.
☜ چگونه یک Expression را به Variable اختصاص دهیم.
☜ چرا ترتیب Assignmentها اهمیت دارد.
☜ مفهوم
☜ Assignment چگونه در پردازش اطلاعات PowerFactory کاربرد پیدا میکند.
⭐️ قانون طلایی
#سطح_1
#DIgSILENT #PowerFactory #DPL #PowerSystems #مهندسی_برق
✅ @PowerFactoryDIgSILENT
🧠 یک مثال ترکیبی
در مثال زیر چند مفهوم قبلی را همزمان میبینیم:
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
! Define variables
int basePower, additionalPower, totalPower;
! Initial values
basePower = 500;
additionalPower = 150;
! Calculate total power
totalPower = basePower + additionalPower;
printf('Base Power = %d MW', basePower);
printf('Additional Power = %d MW', additionalPower);
printf('Total Power = %d MW', totalPower);
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
خروجی:
Base Power = 500 MW
Additional Power = 150 MW
Total Power = 650 MW
ساختار برنامه:
Variable Definition
↓
Assignment
↓
Expression
↓
Assignment
↓
Output
⚠️ نکات مهم
1️⃣ Variable باید از قبل تعریف شده باشد
قبل از:
power = 100;
باید Variable مناسب تعریف شده باشد.
2️⃣ نوع داده باید مناسب باشد
اگر قرار است مقدار اعشاری ذخیره کنیم، نمیتوانیم بدون توجه به نوع داده، آن را مانند یک عدد صحیح مدیریت کنیم.
انواع داده و تفاوت Integer و Real را در پستهای بعدی بهصورت دقیق بررسی خواهیم کرد.
3️⃣ مقدار قبلی ممکن است با مقدار جدید جایگزین شود
وقتی مینویسیم:
power = 100;
power = 200;
در نهایت مقدار فعلی
power برابر 200 خواهد بود.🎯 جمعبندی
در این پست یاد گرفتیم:
☜ Assignment چیست؟
☜ چگونه یک Variable را مقداردهی کنیم.
☜ چگونه مقدار Variable را تغییر دهیم.
☜ چگونه از Variable دیگر برای مقداردهی استفاده کنیم.
☜ چگونه یک Expression را به Variable اختصاص دهیم.
☜ چرا ترتیب Assignmentها اهمیت دارد.
☜ مفهوم
= در Assignment چیست؟☜ Assignment چگونه در پردازش اطلاعات PowerFactory کاربرد پیدا میکند.
⭐️ قانون طلایی
در Assignment، نتیجه سمت راست محاسبه میشود و مقدار حاصل در Variable سمت چپ قرار میگیرد.
#سطح_1
#DIgSILENT #PowerFactory #DPL #PowerSystems #مهندسی_برق
✅ @PowerFactoryDIgSILENT
𝐏𝐨𝐰𝐞𝐫𝐅𝐚𝐜𝐭𝐨𝐫𝐲 𝐃𝐈𝐠𝐒𝐈𝐋𝐄𝐍𝐓 | آموزش نرم افزار دیگسایلنت پاورفکتوری
🔰 ادامه سطح 1 - بخش 10 🔰 🧠 یک مثال ترکیبی در مثال زیر چند مفهوم قبلی را همزمان میبینیم: ! =================================== ! ✅ Telegram: @PowerFactoryDIgSILENT ! =================================== ! Define variables int basePower, additionalPower,…
🎯 تمرین شماره 10
برنامهای بنویسید که:
یک Variable به نام
مقدار اولیه آن را
مقدار آن را به
سپس
مقدار نهایی را با
انتظار داریم مقدار نهایی برابر باشد با:
#تمرین_سطح_1
#تمرین
برنامهای بنویسید که:
یک Variable به نام
load تعریف کند.مقدار اولیه آن را
100 قرار دهد.مقدار آن را به
150 تغییر دهد.سپس
50 واحد به مقدار آن اضافه کند.مقدار نهایی را با
printf نمایش دهد.انتظار داریم مقدار نهایی برابر باشد با:
200
#تمرین_سطح_1
#تمرین
🔰 سطح 1 - بخش 11 🔰
📌 انواع داده در DPL
تا اینجا با Variable، Assignment و Expression آشنا شدیم.
اما یک سؤال مهم وجود دارد:
پاسخ در مفهوم Data Type یا نوع داده است.
در DPL، انتخاب نوع داده اهمیت زیادی دارد؛ چون دادهای که با آن کار میکنیم ممکن است یک عدد صحیح، عدد اعشاری، متن، مقدار منطقی، یک Object از PowerFactory یا مجموعهای از Objectها باشد.
1️⃣ Integer — عدد صحیح
برای نگهداری مقادیر عددی بدون بخش اعشاری از نوع صحیح استفاده میکنیم.
مثلاً:
یک مثال مرتبط با PowerFactory:
خروجی:
کاربردهای رایج Integer
☜ تعداد تجهیزات
☜ شماره سناریو
☜ شمارنده حلقهها
☜ تعداد Busها
☜ تعداد خطوط
☜ تعداد ترانسفورماتورها
☜ Indexها
2️⃣ Real — عدد اعشاری
در مطالعات سیستم قدرت، با مقادیر اعشاری بسیار زیاد سروکار داریم.
مثلاً:
بنابراین برای چنین دادههایی باید از نوع عددی مناسب برای مقادیر اعشاری استفاده کنیم.
در DPL این مقادیر با نوع
مثلاً:
خروجی:
مثال واقعیتر
فرض کنید حد مجاز Loading را 100 درصد در نظر گرفتهایم:
خروجی:
این نوع داده در پروژههای Load Flow، Short Circuit و Voltage Analysis بسیار پرکاربرد خواهد بود.
⚠️ Integer یا Double؟
این تفاوت را جدی بگیرید.
اگر داده ما:
باشد، یک مقدار صحیح است.
اما اگر:
باشد، باید از نوعی استفاده کنیم که بتواند بخش اعشاری را نگهداری کند.
مثلاً در یک پروژه واقعی:
3️⃣ String — داده متنی
گاهی دادهای که با آن کار میکنیم عدد نیست؛ بلکه متن است.
در PowerFactory با نام تجهیزات بسیار زیاد سروکار داریم.
مثلاً:
برای نگهداری چنین اطلاعاتی از
خروجی:
🔹 String در گزارشگیری
فرض کنید میخواهیم نام یک تجهیز را همراه با نتیجه تحلیل نمایش دهیم:
خروجی:
این ترکیب String + Double در گزارشگیریهای آینده بسیار مهم خواهد بود.
#سطح_1
#DIgSILENT #PowerFactory #DPL #PowerSystems #مهندسی_برق
✅ @PowerFactoryDIgSILENT
📌 انواع داده در DPL
تا اینجا با Variable، Assignment و Expression آشنا شدیم.
اما یک سؤال مهم وجود دارد:
🔹 وقتی میخواهیم یک Variable تعریف کنیم، از کجا بدانیم باید
intاستفاده کنیم یا
doubleیا
stringیا یک نوع دیگر؟
پاسخ در مفهوم Data Type یا نوع داده است.
در DPL، انتخاب نوع داده اهمیت زیادی دارد؛ چون دادهای که با آن کار میکنیم ممکن است یک عدد صحیح، عدد اعشاری، متن، مقدار منطقی، یک Object از PowerFactory یا مجموعهای از Objectها باشد.
1️⃣ Integer — عدد صحیح
برای نگهداری مقادیر عددی بدون بخش اعشاری از نوع صحیح استفاده میکنیم.
مثلاً:
تعداد خطوط = 125
تعداد Busها = 48
تعداد ترانسفورماتورها = 12
یک مثال مرتبط با PowerFactory:
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
int lineCount;
lineCount = 125;
printf('Number of Lines = %d', lineCount);
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
خروجی:
Number of Lines = 125
کاربردهای رایج Integer
☜ تعداد تجهیزات
☜ شماره سناریو
☜ شمارنده حلقهها
☜ تعداد Busها
☜ تعداد خطوط
☜ تعداد ترانسفورماتورها
☜ Indexها
2️⃣ Real — عدد اعشاری
در مطالعات سیستم قدرت، با مقادیر اعشاری بسیار زیاد سروکار داریم.
مثلاً:
Voltage = 0.987 pu
Loading = 87.35 %
Power = 125.6 MW
Current = 456.72 A
بنابراین برای چنین دادههایی باید از نوع عددی مناسب برای مقادیر اعشاری استفاده کنیم.
در DPL این مقادیر با نوع
double تعریف میشوند.مثلاً:
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
double voltage;
voltage = 0.987;
printf('Bus Voltage = %.3f pu', voltage);
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
خروجی:
Bus Voltage = 0.987 pu
مثال واقعیتر
فرض کنید حد مجاز Loading را 100 درصد در نظر گرفتهایم:
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
double loading;
loading = 103.75;
printf('Line Loading = %.2f %%', loading);
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
خروجی:
Line Loading = 103.75 %
این نوع داده در پروژههای Load Flow، Short Circuit و Voltage Analysis بسیار پرکاربرد خواهد بود.
⚠️ Integer یا Double؟
این تفاوت را جدی بگیرید.
اگر داده ما:
125
باشد، یک مقدار صحیح است.
اما اگر:
125.75
باشد، باید از نوعی استفاده کنیم که بتواند بخش اعشاری را نگهداری کند.
مثلاً در یک پروژه واقعی:
Number of Lines → Integer
Bus Voltage → Double
Line Loading → Double
Active Power → Double
3️⃣ String — داده متنی
گاهی دادهای که با آن کار میکنیم عدد نیست؛ بلکه متن است.
در PowerFactory با نام تجهیزات بسیار زیاد سروکار داریم.
مثلاً:
Line_230kV_01
Bus_230_01
TR_230_63_01
Substation_A
برای نگهداری چنین اطلاعاتی از
string استفاده میکنیم.! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
string lineName;
lineName = 'Line_230kV_01';
printf('Line Name = %s', lineName);
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
خروجی:
Line Name = Line_230kV_01
🔹 String در گزارشگیری
فرض کنید میخواهیم نام یک تجهیز را همراه با نتیجه تحلیل نمایش دهیم:
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
string lineName;
double loading;
lineName = 'Line_230kV_01';
loading = 108.42;
printf('Line: %s | Loading: %.2f %%', lineName, loading);
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
خروجی:
Line: Line_230kV_01 | Loading: 108.42 %
این ترکیب String + Double در گزارشگیریهای آینده بسیار مهم خواهد بود.
#سطح_1
#DIgSILENT #PowerFactory #DPL #PowerSystems #مهندسی_برق
✅ @PowerFactoryDIgSILENT
𝐏𝐨𝐰𝐞𝐫𝐅𝐚𝐜𝐭𝐨𝐫𝐲 𝐃𝐈𝐠𝐒𝐈𝐋𝐄𝐍𝐓 | آموزش نرم افزار دیگسایلنت پاورفکتوری
🔰 سطح 1 - بخش 11 🔰 📌 انواع داده در DPL تا اینجا با Variable، Assignment و Expression آشنا شدیم. اما یک سؤال مهم وجود دارد: 🔹 وقتی میخواهیم یک Variable تعریف کنیم، از کجا بدانیم باید int استفاده کنیم یا double یا string یا یک نوع دیگر؟ پاسخ در مفهوم…
🔰 ادامه سطح 1 - بخش 11 🔰
4️⃣ Boolean — مقدار منطقی
گاهی لازم نیست یک عدد یا متن ذخیره کنیم.
فقط میخواهیم بدانیم:
برای این نوع داده از مقدار منطقی استفاده میکنیم.
مثلاً:
یا:
یک مثال مفهومی:
منطق برنامه:
⚠️ توجه: در مثالهای آموزشی این پست هدف نشان دادن نقش نوع داده منطقی است؛ جزئیات Syntax مربوط به Boolean و شرطها را در بخش Operator و
5️⃣ Object — نگهداری Reference به یک Object
اینجا وارد بخش بسیار مهم DPL میشویم.
در PowerFactory تجهیزات پروژه بهصورت Object وجود دارند.
مثلاً:
در DPL میتوانیم یک Variable داشته باشیم که به یک Object اشاره کند.
بهصورت مفهومی:
این مفهوم بعداً برای کار با Objectهای واقعی PowerFactory بسیار مهم خواهد بود.
مثلاً وقتی میخواهیم:
باید بتوانیم Reference آن Object را در یک Variable نگهداری کنیم.
6️⃣ Set — مجموعهای از Objectها
حالا فرض کنید فقط یک خط نداریم.
شبکه ما شامل:
است.
نمیتوانیم برای هر خط یک Variable مستقل تعریف کنیم.
اینجاست که Set اهمیت پیدا میکند.
Set را میتوان بهصورت ساده اینگونه تصور کرد:
در آینده میتوانیم مثلاً مجموعهای از خطوط مرتبط را پیدا کنیم و سپس با یک Loop روی آنها حرکت کنیم.
این موضوع یکی از مهمترین کاربردهای Set در DPL است.
🔥 یک مثال واقعیتر از ترکیب انواع داده
فرض کنید میخواهیم اطلاعات یک خط را برای گزارش نگهداری کنیم:
یعنی:
این دقیقاً همان چیزی است که در پروژههای واقعی DPL با آن روبهرو خواهیم شد.
#سطح_1
#DIgSILENT #PowerFactory #DPL #PowerSystems #مهندسی_برق
✅ @PowerFactoryDIgSILENT
4️⃣ Boolean — مقدار منطقی
گاهی لازم نیست یک عدد یا متن ذخیره کنیم.
فقط میخواهیم بدانیم:
آیا یک شرط برقرار است یا خیر؟
برای این نوع داده از مقدار منطقی استفاده میکنیم.
مثلاً:
Overloaded = True
یا:
Overloaded = False
یک مثال مفهومی:
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
int loading;
bool overloaded;
loading = 105;
overloaded = loading > 100;
if (overloaded)
{
printf('Line is overloaded');
}
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
منطق برنامه:
Loading = 105
↓
105 > 100
↓
True
↓
Overloaded = True
↓
Line is overloaded
⚠️ توجه: در مثالهای آموزشی این پست هدف نشان دادن نقش نوع داده منطقی است؛ جزئیات Syntax مربوط به Boolean و شرطها را در بخش Operator و
if دقیقتر بررسی خواهیم کرد.5️⃣ Object — نگهداری Reference به یک Object
اینجا وارد بخش بسیار مهم DPL میشویم.
در PowerFactory تجهیزات پروژه بهصورت Object وجود دارند.
مثلاً:
ElmLne → Line
ElmTerm → Terminal / Bus
ElmTr2 → 2-Winding Transformer
ElmLod → Load
ElmSym → Synchronous Machine
در DPL میتوانیم یک Variable داشته باشیم که به یک Object اشاره کند.
بهصورت مفهومی:
line
↓
Line Object
↓
Line_230kV_01
این مفهوم بعداً برای کار با Objectهای واقعی PowerFactory بسیار مهم خواهد بود.
مثلاً وقتی میخواهیم:
«خط موردنظر را پیدا کن و Loading آن را بخوان»
باید بتوانیم Reference آن Object را در یک Variable نگهداری کنیم.
6️⃣ Set — مجموعهای از Objectها
حالا فرض کنید فقط یک خط نداریم.
شبکه ما شامل:
Line 1
Line 2
Line 3
...
Line 500
است.
نمیتوانیم برای هر خط یک Variable مستقل تعریف کنیم.
اینجاست که Set اهمیت پیدا میکند.
Set را میتوان بهصورت ساده اینگونه تصور کرد:
Set
│
├── Line 1
├── Line 2
├── Line 3
├── Line 4
└── ...
در آینده میتوانیم مثلاً مجموعهای از خطوط مرتبط را پیدا کنیم و سپس با یک Loop روی آنها حرکت کنیم.
این موضوع یکی از مهمترین کاربردهای Set در DPL است.
🔥 یک مثال واقعیتر از ترکیب انواع داده
فرض کنید میخواهیم اطلاعات یک خط را برای گزارش نگهداری کنیم:
نام خط → String
طول خط → Double
Loading → Double
تعداد خطوط → Integer
وضعیت → Boolean
خود خط → Object
مجموع خطوط → Set
یعنی:
Line Name → String
Length → Double
Loading → Double
Line Count → Integer
Overloaded → Boolean
Line → Object
Lines → Set
این دقیقاً همان چیزی است که در پروژههای واقعی DPL با آن روبهرو خواهیم شد.
#سطح_1
#DIgSILENT #PowerFactory #DPL #PowerSystems #مهندسی_برق
✅ @PowerFactoryDIgSILENT
𝐏𝐨𝐰𝐞𝐫𝐅𝐚𝐜𝐭𝐨𝐫𝐲 𝐃𝐈𝐠𝐒𝐈𝐋𝐄𝐍𝐓 | آموزش نرم افزار دیگسایلنت پاورفکتوری
🔰 ادامه سطح 1 - بخش 11 🔰 4️⃣ Boolean — مقدار منطقی گاهی لازم نیست یک عدد یا متن ذخیره کنیم. فقط میخواهیم بدانیم: آیا یک شرط برقرار است یا خیر؟ برای این نوع داده از مقدار منطقی استفاده میکنیم. مثلاً: Overloaded = True یا: Overloaded = False یک مثال مفهومی:…
🔰 ادامه سطح 1 - بخش 11 🔰
🧠 یک سناریوی PowerFactory را تصور کنیم
فرض کنید میخواهیم یک برنامه برای بررسی Loading خطوط بسازیم.
منطق برنامه:
در این فرآیند تقریباً تمام انواع دادهای که امروز یاد گرفتیم درگیر میشوند.
🔹 مثال ترکیبی
مثلاً اطلاعات یک خط را بهصورت مفهومی در Variableهای مختلف نگهداری میکنیم:
منطق برنامه:
و خروجی تقریباً به این شکل خواهد بود:
⚠️ یک نکته بسیار مهم
در DPL، Object و Set را با یکدیگر اشتباه نگیرید.
مثلاً:
ولی:
مثلاً:
در بخشهای بعدی این تفاوت را بهصورت عملی و با Objectهای واقعی PowerFactory بررسی خواهیم کرد.
🎯 جمعبندی
در این پست با انواع داده مهم DPL آشنا شدیم:
برای مقادیر صحیح مثل تعداد تجهیزات
برای مقادیر اعشاری مثل ولتاژ، توان و Loading
برای متن و نام تجهیزات.
برای وضعیتهای منطقی مثل Overloaded / Normal
برای نگهداری Reference یک Object از PowerFactory
برای نگهداری مجموعهای از Objectها.
و مهمتر از همه یاد گرفتیم که انتخاب Data Type باید بر اساس ماهیت واقعی داده انجام شود.
#سطح_1
#DIgSILENT #PowerFactory #DPL #PowerSystems #مهندسی_برق
✅ @PowerFactoryDIgSILENT
🧠 یک سناریوی PowerFactory را تصور کنیم
فرض کنید میخواهیم یک برنامه برای بررسی Loading خطوط بسازیم.
منطق برنامه:
Lines
↓
Set
↓
انتخاب یک Line
↓
Object
↓
Loading
↓
Double
↓
Loading > 100 ?
⬋ ⬊
True False
↓ ↓
Overloaded Normal
در این فرآیند تقریباً تمام انواع دادهای که امروز یاد گرفتیم درگیر میشوند.
🔹 مثال ترکیبی
مثلاً اطلاعات یک خط را بهصورت مفهومی در Variableهای مختلف نگهداری میکنیم:
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
string lineName;
double loading;
int lineNumber;
bool overloaded;
lineNumber = 1;
lineName = 'Line_230kV_01';
loading = 108.42;
overloaded = loading > 100;
printf('Line %d: %s', lineNumber, lineName);
printf('Loading = %.2f %%', loading);
if (overloaded)
{
printf('Status = OVERLOADED');
}
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
منطق برنامه:
lineNumber → 1
lineName → Line_230kV_01
loading → 108.42
overloaded → True
و خروجی تقریباً به این شکل خواهد بود:
Line 1: Line_230kV_01
Loading = 108.42 %
Status = OVERLOADED
⚠️ یک نکته بسیار مهم
در DPL، Object و Set را با یکدیگر اشتباه نگیرید.
مثلاً:
Object
↓
یک تجهیز
ولی:
Set
↓
مجموعهای از تجهیزات
مثلاً:
line
↓
یک Line
lines
↓
مجموعهای از Lineها
در بخشهای بعدی این تفاوت را بهصورت عملی و با Objectهای واقعی PowerFactory بررسی خواهیم کرد.
🎯 جمعبندی
در این پست با انواع داده مهم DPL آشنا شدیم:
intبرای مقادیر صحیح مثل تعداد تجهیزات
doubleبرای مقادیر اعشاری مثل ولتاژ، توان و Loading
stringبرای متن و نام تجهیزات.
boolبرای وضعیتهای منطقی مثل Overloaded / Normal
objectبرای نگهداری Reference یک Object از PowerFactory
setبرای نگهداری مجموعهای از Objectها.
و مهمتر از همه یاد گرفتیم که انتخاب Data Type باید بر اساس ماهیت واقعی داده انجام شود.
#سطح_1
#DIgSILENT #PowerFactory #DPL #PowerSystems #مهندسی_برق
✅ @PowerFactoryDIgSILENT
𝐏𝐨𝐰𝐞𝐫𝐅𝐚𝐜𝐭𝐨𝐫𝐲 𝐃𝐈𝐠𝐒𝐈𝐋𝐄𝐍𝐓 | آموزش نرم افزار دیگسایلنت پاورفکتوری
🔰 ادامه سطح 1 - بخش 11 🔰 🧠 یک سناریوی PowerFactory را تصور کنیم فرض کنید میخواهیم یک برنامه برای بررسی Loading خطوط بسازیم. منطق برنامه: Lines ↓ Set ↓ انتخاب یک Line …
🎯 تمرین شماره 11
فرض کنید میخواهیم اطلاعات یک ترانسفورماتور را برای تحلیل نگهداری کنیم.
برای هر مورد مشخص کنید چه نوع دادهای مناسب است:
نام ترانسفورماتور
توان نامی، مثلاً 160 MVA
تعداد ترانسفورماتورها
وضعیت Overload
خود Object ترانسفورماتور
مجموعه تمام ترانسفورماتورها
💡 راهنمای تمرین
به این سؤال فکر کنید:
پاسخ صحیح این تمرین پایه بسیاری از Scriptهای آینده ما خواهد بود.
#تمرین_سطح_1
#تمرین
فرض کنید میخواهیم اطلاعات یک ترانسفورماتور را برای تحلیل نگهداری کنیم.
برای هر مورد مشخص کنید چه نوع دادهای مناسب است:
نام ترانسفورماتور
توان نامی، مثلاً 160 MVA
تعداد ترانسفورماتورها
وضعیت Overload
خود Object ترانسفورماتور
مجموعه تمام ترانسفورماتورها
💡 راهنمای تمرین
به این سؤال فکر کنید:
آیا داده عدد صحیح است، عدد اعشاری است، متن است، مقدار منطقی است، یک Object است یا مجموعهای از Objectها؟
پاسخ صحیح این تمرین پایه بسیاری از Scriptهای آینده ما خواهد بود.
#تمرین_سطح_1
#تمرین
🔰 سطح 1 - بخش 12 🔰
📌 Integer در DPL
در پست قبل با انواع داده در DPL آشنا شدیم.
در این پست میخواهیم یکی از سادهترین و در عین حال پرکاربردترین انواع داده را بررسی کنیم:
نوع
1️⃣ Integer چیست؟
Integer به اعداد صحیح گفته میشود؛ یعنی مقادیری مانند:
اما مقادیری مانند:
عدد صحیح نیستند.
در DPL برای تعریف یک Variable از نوع Integer از:
استفاده میکنیم.
2️⃣ تعریف یک Integer
ساختار کلی:
مثلاً:
در اینجا:
نوع داده است و:
نام Variable است.
مقدار آن نیز:
است.
3️⃣ کاربرد Integer در PowerFactory
در پروژههای واقعی PowerFactory، Integer کاربردهای بسیار زیادی دارد.
مثلاً برای نگهداری:
☜ تعداد Busها
☜ تعداد خطوط
☜ تعداد ترانسفورماتورها
☜ شماره سناریو
☜ شماره مرحله تحلیل
☜ شمارنده Loop
☜ Index یک عضو
☜ تعداد Contingencyها
☜ تعداد خطاهای شناساییشده
استفاده میشود.
4️⃣ شمارش تجهیزات
یکی از اولین کاربردهای واقعی Integer، شمارش Objectها است.
فرض کنید یک Set از تجهیزات داریم.
بهصورت مفهومی:
برای نگهداری تعداد اعضای این مجموعه، به یک Integer نیاز داریم.
مثلاً:
میتواند تعداد Busها را نگهداری کند.
در ادامه دوره که با
5️⃣ Integer در شمارندهها
یکی از مهمترین کاربردهای
مثلاً فرض کنید میخواهیم تعداد تجهیزات بررسیشده را بشماریم.
منطق:
Variable مربوط به Counter باید بتواند اعداد صحیح را نگهداری کند.
مثلاً:
و بعد:
6️⃣ یک مثال مهندسی: شمارش Violations
فرض کنید در یک مطالعه Load Flow میخواهیم تعداد تجهیزات دارای مشکل را بشماریم.
مثلاً:
یک Counter میتواند تعداد موارد شناساییشده را نگهداری کند.
منطق:
در پایان مثلاً:
این یکی از کاربردهای بسیار مهم Integer در پروژههای اتوماسیون خواهد بود.
7️⃣ Integer در شمارهگذاری
فرض کنید میخواهیم تجهیزات یک گزارش را شمارهگذاری کنیم:
شماره هر ردیف میتواند توسط یک Integer نگهداری شود.
مثلاً:
که از
8️⃣ Integer در Loop
در آینده با حلقههای
در بسیاری از Loopها به یک Variable صحیح برای کنترل تکرار نیاز داریم.
مثلاً مفهوم کلی:
بنابراین Integer یکی از پایههای اصلی Loop و Automation است.
9️⃣ عملیات ریاضی روی Integer
روی مقادیر Integer میتوان عملیات ریاضی انجام داد.
مثلاً:
اینجا:
محاسبه شده و نتیجه در:
قرار گرفته است.
#سطح_1
#DIgSILENT #PowerFactory #DPL #PowerSystems #مهندسی_برق
✅ @PowerFactoryDIgSILENT
📌 Integer در DPL
در پست قبل با انواع داده در DPL آشنا شدیم.
در این پست میخواهیم یکی از سادهترین و در عین حال پرکاربردترین انواع داده را بررسی کنیم:
🔹 Integer یا عدد صحیح
نوع
int زمانی استفاده میشود که بخواهیم یک مقدار بدون بخش اعشاری را در Variable نگهداری کنیم.1️⃣ Integer چیست؟
Integer به اعداد صحیح گفته میشود؛ یعنی مقادیری مانند:
0
1
2
10
100
-5
-20
اما مقادیری مانند:
10.5
0.95
125.75
عدد صحیح نیستند.
در DPL برای تعریف یک Variable از نوع Integer از:
int
استفاده میکنیم.
2️⃣ تعریف یک Integer
ساختار کلی:
int VariableName;
مثلاً:
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
int busCount;
busCount = 25;
printf('Number of Buses = %d', busCount);
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
در اینجا:
int
نوع داده است و:
busCount
نام Variable است.
مقدار آن نیز:
25
است.
3️⃣ کاربرد Integer در PowerFactory
در پروژههای واقعی PowerFactory، Integer کاربردهای بسیار زیادی دارد.
مثلاً برای نگهداری:
☜ تعداد Busها
☜ تعداد خطوط
☜ تعداد ترانسفورماتورها
☜ شماره سناریو
☜ شماره مرحله تحلیل
☜ شمارنده Loop
☜ Index یک عضو
☜ تعداد Contingencyها
☜ تعداد خطاهای شناساییشده
استفاده میشود.
4️⃣ شمارش تجهیزات
یکی از اولین کاربردهای واقعی Integer، شمارش Objectها است.
فرض کنید یک Set از تجهیزات داریم.
بهصورت مفهومی:
Set
│
├── Bus 1
├── Bus 2
├── Bus 3
├── ...
└── Bus N
برای نگهداری تعداد اعضای این مجموعه، به یک Integer نیاز داریم.
مثلاً:
busCount
میتواند تعداد Busها را نگهداری کند.
در ادامه دوره که با
Set و Objectها بهصورت عملی کار کنیم، همین مفهوم را روی Objectهای واقعی PowerFactory پیادهسازی خواهیم کرد.5️⃣ Integer در شمارندهها
یکی از مهمترین کاربردهای
int، استفاده بهعنوان Counter است.مثلاً فرض کنید میخواهیم تعداد تجهیزات بررسیشده را بشماریم.
منطق:
شروع
↓
Counter = 0
↓
بررسی تجهیز
↓
Counter = Counter + 1
↓
تجهیز بعدی
↓
...
Variable مربوط به Counter باید بتواند اعداد صحیح را نگهداری کند.
مثلاً:
counter = 0
و بعد:
counter = counter + 1
6️⃣ یک مثال مهندسی: شمارش Violations
فرض کنید در یک مطالعه Load Flow میخواهیم تعداد تجهیزات دارای مشکل را بشماریم.
مثلاً:
Voltage Violation
Loading Violation
یک Counter میتواند تعداد موارد شناساییشده را نگهداری کند.
منطق:
Violation Count = 0
اگر تجهیز مشکل داشت:
Violation Count = Violation Count + 1
در پایان مثلاً:
Total Violations = 7
این یکی از کاربردهای بسیار مهم Integer در پروژههای اتوماسیون خواهد بود.
7️⃣ Integer در شمارهگذاری
فرض کنید میخواهیم تجهیزات یک گزارش را شمارهگذاری کنیم:
1. Line A
2. Line B
3. Line C
4. Line D
شماره هر ردیف میتواند توسط یک Integer نگهداری شود.
مثلاً:
reportIndex
که از
1 شروع میشود و با پردازش هر تجهیز افزایش پیدا میکند.8️⃣ Integer در Loop
در آینده با حلقههای
for و while بهصورت کامل کار خواهیم کرد.در بسیاری از Loopها به یک Variable صحیح برای کنترل تکرار نیاز داریم.
مثلاً مفهوم کلی:
counter = 1
تا زمانی که counter به حد مشخص نرسیده:
عملیات
counter = counter + 1
بنابراین Integer یکی از پایههای اصلی Loop و Automation است.
9️⃣ عملیات ریاضی روی Integer
روی مقادیر Integer میتوان عملیات ریاضی انجام داد.
مثلاً:
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
int feeders, transformers, totalEquipment;
feeders = 12;
transformers = 4;
totalEquipment = feeders + transformers;
printf('Total Equipment = %d', totalEquipment);
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
اینجا:
12 + 4
محاسبه شده و نتیجه در:
totalEquipment
قرار گرفته است.
#سطح_1
#DIgSILENT #PowerFactory #DPL #PowerSystems #مهندسی_برق
✅ @PowerFactoryDIgSILENT
𝐏𝐨𝐰𝐞𝐫𝐅𝐚𝐜𝐭𝐨𝐫𝐲 𝐃𝐈𝐠𝐒𝐈𝐋𝐄𝐍𝐓 | آموزش نرم افزار دیگسایلنت پاورفکتوری
🔰 سطح 1 - بخش 12 🔰 📌 Integer در DPL در پست قبل با انواع داده در DPL آشنا شدیم. در این پست میخواهیم یکی از سادهترین و در عین حال پرکاربردترین انواع داده را بررسی کنیم: 🔹 Integer یا عدد صحیح نوع int زمانی استفاده میشود که بخواهیم یک مقدار بدون بخش اعشاری…
🔰 ادامه سطح 1 - بخش 12 🔰
🔹 افزایش مقدار Integer
یکی از الگوهای بسیار مهم:
یا
است.
مثلاً:
در نهایت:
خواهیم داشت.
🔹 کاهش مقدار Integer
همین مفهوم برای کاهش مقدار نیز وجود دارد:
نتیجه:
🔹 Integer و مقادیر منفی
Integer فقط برای اعداد مثبت نیست.
مثلاً:
خروجی:
⚠️ Integer برای همه اعداد مناسب نیست
یکی از اشتباهات رایج این است که چون یک مقدار «عدد» است، آن را
مثلاً:
اینها دارای بخش اعشاری هستند.
بنابراین
در این موارد از نوع عددی اعشاری مناسب، یعنی
🔥 یک مثال کاربردیتر
فرض کنید در یک فرآیند تحلیل، سه نوع تجهیز را بررسی کردهایم:
میتوانیم تعداد کل تجهیزات را محاسبه کنیم:
نتیجه:
نکته مهم این مثال این است که Integer برای تعداد تجهیزات کاملاً مناسب است.
🧠 Integer در پروژههای آینده DPL
در پروژههای واقعی دوره،
بنابراین ممکن است یک Script همزمان چند Integer داشته باشد:
هرکدام نقش مشخصی در برنامه خواهند داشت.
⚠️ نکته مهم درباره Integer و تقسیم
در محاسبات، هنگام کار با اعداد صحیح باید به نوع نتیجه عملیات توجه داشته باشیم.
بهخصوص در تقسیم، نباید بدون توجه به نوع داده فرض کنیم نتیجه همیشه یک عدد اعشاری خواهد بود.
مثلاً اگر هدف ما محاسبه یک نسبت مهندسی باشد:
و نتیجه باید اعشاری باشد، باید نوع داده مناسب برای نتیجه را در نظر بگیریم.
این موضوع را هنگام بررسی
🎯 جمعبندی
در این پست یاد گرفتیم:
☜
☜ Integer میتواند مثبت، صفر یا منفی باشد.
☜ برای شمارش تجهیزات بسیار مناسب است.
☜ برای Counterها کاربرد زیادی دارد.
☜ در Loopها بسیار پرکاربرد است.
☜ برای شمارهگذاری و Indexها استفاده میشود.
☜ برای شمارش خطاها و Violations کاربرد دارد.
☜ برای مقادیر اعشاری مانند Voltage و Loading نباید از Integer استفاده کنیم.
⭐️ قانون طلایی
#سطح_1
#DIgSILENT #PowerFactory #DPL #PowerSystems #مهندسی_برق
✅ @PowerFactoryDIgSILENT
🔹 افزایش مقدار Integer
یکی از الگوهای بسیار مهم:
counter = counter + 1;
یا
counter += 1;
است.
مثلاً:
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
int equipmentCount;
equipmentCount = 0;
equipmentCount = equipmentCount + 1;
equipmentCount = equipmentCount + 1;
equipmentCount = equipmentCount + 1;
printf('Equipment Count = %d', equipmentCount);
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
در نهایت:
Equipment Count = 3
خواهیم داشت.
🔹 کاهش مقدار Integer
همین مفهوم برای کاهش مقدار نیز وجود دارد:
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
int remaining;
remaining = 10;
remaining = remaining - 1; ! OR remaining -= 1
printf('Remaining = %d', remaining);
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
نتیجه:
Remaining = 9
🔹 Integer و مقادیر منفی
Integer فقط برای اعداد مثبت نیست.
مثلاً:
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
int difference;
difference = -15;
printf('Difference = %d', difference);
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
خروجی:
Difference = -15
⚠️ Integer برای همه اعداد مناسب نیست
یکی از اشتباهات رایج این است که چون یک مقدار «عدد» است، آن را
int تعریف کنیم.مثلاً:
Voltage = 0.987 pu
Loading = 87.35 %
Power = 125.6 MW
اینها دارای بخش اعشاری هستند.
بنابراین
int انتخاب مناسبی برای چنین دادههایی نیست.در این موارد از نوع عددی اعشاری مناسب، یعنی
double، استفاده خواهیم کرد.🔥 یک مثال کاربردیتر
فرض کنید در یک فرآیند تحلیل، سه نوع تجهیز را بررسی کردهایم:
Bus → 45
Line → 38
Transformer → 12
میتوانیم تعداد کل تجهیزات را محاسبه کنیم:
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
int busCount;
int lineCount;
int transformerCount;
int totalCount;
busCount = 45;
lineCount = 38;
transformerCount = 12;
totalCount = busCount + lineCount + transformerCount;
printf('Bus Count = %d', busCount);
printf('Line Count = %d', lineCount);
printf('Transformer Count = %d', transformerCount);
printf('Total Count = %d', totalCount);
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
نتیجه:
Bus Count = 45
Line Count = 38
Transformer Count = 12
Total Count = 95
نکته مهم این مثال این است که Integer برای تعداد تجهیزات کاملاً مناسب است.
🧠 Integer در پروژههای آینده DPL
در پروژههای واقعی دوره،
int را در مواردی مثل این خواهیم دید:Set تجهیزات
↓
Loop
↓
Counter
↓
بررسی Object
↓
اگر شرط برقرار بود
↓
Violation Count++
بنابراین ممکن است یک Script همزمان چند Integer داشته باشد:
objectCount
lineCount
busCount
errorCount
...
هرکدام نقش مشخصی در برنامه خواهند داشت.
⚠️ نکته مهم درباره Integer و تقسیم
در محاسبات، هنگام کار با اعداد صحیح باید به نوع نتیجه عملیات توجه داشته باشیم.
بهخصوص در تقسیم، نباید بدون توجه به نوع داده فرض کنیم نتیجه همیشه یک عدد اعشاری خواهد بود.
مثلاً اگر هدف ما محاسبه یک نسبت مهندسی باشد:
Loading / Limit
و نتیجه باید اعشاری باشد، باید نوع داده مناسب برای نتیجه را در نظر بگیریم.
این موضوع را هنگام بررسی
double با مثالهای دقیقتر بررسی خواهیم کرد.🎯 جمعبندی
در این پست یاد گرفتیم:
☜
int برای نگهداری اعداد صحیح استفاده میشود.☜ Integer میتواند مثبت، صفر یا منفی باشد.
☜ برای شمارش تجهیزات بسیار مناسب است.
☜ برای Counterها کاربرد زیادی دارد.
☜ در Loopها بسیار پرکاربرد است.
☜ برای شمارهگذاری و Indexها استفاده میشود.
☜ برای شمارش خطاها و Violations کاربرد دارد.
☜ برای مقادیر اعشاری مانند Voltage و Loading نباید از Integer استفاده کنیم.
⭐️ قانون طلایی
اگر داده ماهیت «تعداد، شمارنده، شماره یا مقدار صحیح» دارد، Integer یکی از گزینههای اصلی شماست.
#سطح_1
#DIgSILENT #PowerFactory #DPL #PowerSystems #مهندسی_برق
✅ @PowerFactoryDIgSILENT
𝐏𝐨𝐰𝐞𝐫𝐅𝐚𝐜𝐭𝐨𝐫𝐲 𝐃𝐈𝐠𝐒𝐈𝐋𝐄𝐍𝐓 | آموزش نرم افزار دیگسایلنت پاورفکتوری
🔰 ادامه سطح 1 - بخش 12 🔰 🔹 افزایش مقدار Integer یکی از الگوهای بسیار مهم: counter = counter + 1; یا counter += 1; است. مثلاً: ! =================================== ! ✅ Telegram: @PowerFactoryDIgSILENT ! =================================== int equipmentCount;…
🎯 تمرین شماره 12
فرض کنید یک فرآیند بررسی شبکه انجام دادهاید و این نتایج به دست آمده است:
☜ 6 خط دارای Overload هستند.
☜ 4 ترانسفورماتور دارای Overload هستند.
☜ 3 Bus دارای Undervoltage هستند.
☜ 2 Bus دارای Overvoltage هستند.
برنامه DPL بنویسید که:
☜ برای هرکدام یک Variable از نوع
☜ تعداد کل Equipment Violations را محاسبه کند.
☜ تعداد کل Voltage Violations را جداگانه محاسبه کند.
☜ تعداد کل Violations را در یک Variable دیگر ذخیره کند.
☜ نتیجه را با
🎯 نکته تمرین
جواب را فقط با جمع چهار عدد ننویسید؛ هدف این است که ساختار منطقی زیر را خودتان پیاده کنید:
#تمرین_سطح_1
#تمرین
فرض کنید یک فرآیند بررسی شبکه انجام دادهاید و این نتایج به دست آمده است:
☜ 6 خط دارای Overload هستند.
☜ 4 ترانسفورماتور دارای Overload هستند.
☜ 3 Bus دارای Undervoltage هستند.
☜ 2 Bus دارای Overvoltage هستند.
برنامه DPL بنویسید که:
☜ برای هرکدام یک Variable از نوع
int تعریف کند.☜ تعداد کل Equipment Violations را محاسبه کند.
☜ تعداد کل Voltage Violations را جداگانه محاسبه کند.
☜ تعداد کل Violations را در یک Variable دیگر ذخیره کند.
☜ نتیجه را با
printf نمایش دهد.🎯 نکته تمرین
جواب را فقط با جمع چهار عدد ننویسید؛ هدف این است که ساختار منطقی زیر را خودتان پیاده کنید:
Overload Violations
+
Voltage Violations
↓
Total Violations
#تمرین_سطح_1
#تمرین
🔰 سطح 1 - بخش 13 🔰
📌 Double در DPL
در پست قبلی با
اما در مطالعات سیستم قدرت، بیشتر مقادیر مهم ما اعشاری هستند:
☜ ولتاژ:
☜ بارگذاری:
☜ توان اکتیو:
☜ توان راکتیو:
☜ جریان:
برای چنین مقادیری در DPL از نوع:
استفاده میکنیم.
🔹 Double چیست؟
مثلاً:
خروجی:
🔹 چرا در PowerFactory به Double نیاز داریم؟
فرض کنید ولتاژ یک Bus برابر باشد با:
اگر بخواهیم این مقدار را برای تحلیل در Variable نگهداری کنیم، باید بتوانیم بخش اعشاری آن را حفظ کنیم.
یا مثلاً Loading یک خط:
است.
اگر فقط به اعداد صحیح محدود باشیم، اطلاعات اعشاری از بین میرود.
بنابراین:
🔹 تعریف و مقداردهی Double
ساختار کلی:
مثلاً:
خروجی:
🔹 Double و محاسبات مهندسی
یکی از مهمترین کاربردهای Double انجام محاسبات روی نتایج مطالعات است.
مثلاً فرض کنید توان تولیدی یک واحد:
و توان مصرفی:
باشد.
میتوانیم اختلاف آنها را محاسبه کنیم:
نتیجه:
🔹 محاسبه Loading
حالا یک مثال بسیار نزدیکتر به کاری که در PowerFactory انجام خواهیم داد.
فرض کنید:
و حد مجاز:
است.
میتوانیم درصد باقیمانده تا حد مجاز را محاسبه کنیم:
خروجی:
این نوع محاسبه بعدها در ساخت گزارش تجهیزات بحرانی بسیار کاربردی خواهد بود.
🔹 Double در تحلیل ولتاژ
فرض کنید محدوده مجاز ولتاژ را اینگونه تعریف کردهایم:
و ولتاژ یک Bus:
است.
میتوانیم فاصله آن از حد پایین را محاسبه کنیم:
نتیجه:
در آینده میتوانیم همین منطق را با
#سطح_1
#DIgSILENT #PowerFactory #DPL #PowerSystems #مهندسی_برق
✅ @PowerFactoryDIgSILENT
📌 Double در DPL
در پست قبلی با
Integer آشنا شدیم؛ نوع دادهای که برای اعداد صحیح مثل تعداد تجهیزات، شمارندهها و شماره سناریوها استفاده میشود.اما در مطالعات سیستم قدرت، بیشتر مقادیر مهم ما اعشاری هستند:
☜ ولتاژ:
0.98pu ☜ بارگذاری:
87.35%☜ توان اکتیو:
125.6MW ☜ توان راکتیو:
42.75MVAr ☜ جریان:
456.82A برای چنین مقادیری در DPL از نوع:
double
استفاده میکنیم.
🔹 Double چیست؟
double برای نگهداری اعداد اعشاری استفاده میشود.مثلاً:
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
double voltage;
voltage = 0.985;
printf('Voltage = %.3f pu', voltage);
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
خروجی:
Voltage = 0.985 pu
🔹 چرا در PowerFactory به Double نیاز داریم؟
فرض کنید ولتاژ یک Bus برابر باشد با:
0.973 pu
اگر بخواهیم این مقدار را برای تحلیل در Variable نگهداری کنیم، باید بتوانیم بخش اعشاری آن را حفظ کنیم.
یا مثلاً Loading یک خط:
103.72 %
است.
اگر فقط به اعداد صحیح محدود باشیم، اطلاعات اعشاری از بین میرود.
بنابراین:
Voltage → double
Loading → double
Power → double
Current → double
🔹 تعریف و مقداردهی Double
ساختار کلی:
double VariableName;
مثلاً:
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
double loading;
loading = 87.35;
printf('Loading = %.2f %%', loading);
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
خروجی:
Loading = 87.35 %
🔹 Double و محاسبات مهندسی
یکی از مهمترین کاربردهای Double انجام محاسبات روی نتایج مطالعات است.
مثلاً فرض کنید توان تولیدی یک واحد:
P = 125.5 MW
و توان مصرفی:
P = 87.25 MW
باشد.
میتوانیم اختلاف آنها را محاسبه کنیم:
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
double generation;
double load;
double surplus;
generation = 125.5;
load = 87.25;
surplus = generation - load;
printf('Generation = %.2f MW', generation);
printf('Load = %.2f MW', load);
printf('Surplus = %.2f MW', surplus);
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
نتیجه:
Generation = 125.50 MW
Load = 87.25 MW
Surplus = 38.25 MW
🔹 محاسبه Loading
حالا یک مثال بسیار نزدیکتر به کاری که در PowerFactory انجام خواهیم داد.
فرض کنید:
Actual Loading = 87.5 %
و حد مجاز:
Limit = 100 %
است.
میتوانیم درصد باقیمانده تا حد مجاز را محاسبه کنیم:
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
double loading;
double limit;
double margin;
loading = 87.5;
limit = 100.0;
margin = limit - loading;
printf('Loading = %.2f %%', loading);
printf('Margin = %.2f %%', margin);
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
خروجی:
Loading = 87.50 %
Margin = 12.50 %
این نوع محاسبه بعدها در ساخت گزارش تجهیزات بحرانی بسیار کاربردی خواهد بود.
🔹 Double در تحلیل ولتاژ
فرض کنید محدوده مجاز ولتاژ را اینگونه تعریف کردهایم:
Minimum = 0.95 pu
Maximum = 1.05 pu
و ولتاژ یک Bus:
0.928 pu
است.
میتوانیم فاصله آن از حد پایین را محاسبه کنیم:
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
double voltage;
double minVoltage;
double deviation;
voltage = 0.928;
minVoltage = 0.950;
deviation = minVoltage - voltage;
printf('Voltage = %.3f pu', voltage);
printf('Deviation = %.3f pu', deviation);
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
نتیجه:
Voltage = 0.928 pu
Deviation = 0.022 pu
در آینده میتوانیم همین منطق را با
if ترکیب کنیم تا Busهای دارای Undervoltage را شناسایی کنیم.#سطح_1
#DIgSILENT #PowerFactory #DPL #PowerSystems #مهندسی_برق
✅ @PowerFactoryDIgSILENT
𝐏𝐨𝐰𝐞𝐫𝐅𝐚𝐜𝐭𝐨𝐫𝐲 𝐃𝐈𝐠𝐒𝐈𝐋𝐄𝐍𝐓 | آموزش نرم افزار دیگسایلنت پاورفکتوری
🔰 سطح 1 - بخش 13 🔰 📌 Double در DPL در پست قبلی با Integer آشنا شدیم؛ نوع دادهای که برای اعداد صحیح مثل تعداد تجهیزات، شمارندهها و شماره سناریوها استفاده میشود. اما در مطالعات سیستم قدرت، بیشتر مقادیر مهم ما اعشاری هستند: ☜ ولتاژ: 0.98pu ☜ بارگذاری:…
🔰 ادامه سطح 1 - بخش 13 🔰
🔹 Double و درصد
فرض کنید توان فعلی یک تجهیز:
و ظرفیت آن:
است.
درصد استفاده از ظرفیت:
میشود.
در DPL:
خروجی:
🔹 Double و محاسبات چندمرحلهای
میتوانیم چند محاسبه را پشت سر هم انجام دهیم.
مثلاً فرض کنید توان یک ژنراتور از:
به:
افزایش یافته است.
مقدار افزایش:
و درصد افزایش:
خواهد بود.
خروجی:
این الگو بعدها برای مقایسه Study Caseها و سناریوها بسیار مفید خواهد بود.
🔹 Double و دقت نمایش
در
مثلاً:
یعنی یک رقم اعشار.
یعنی دو رقم اعشار.
یعنی سه رقم اعشار.
مثلاً:
بهصورت مفهومی خروجی به شکل زیر خواهد بود:
⚠️ توجه کنید که این فقط نحوه نمایش مقدار است؛ با محدود کردن تعداد ارقام در
🔹 Double در مقایسه با یک Limit
یکی از کاربردهای مهم Double در تحلیل شبکه، مقایسه یک مقدار با حد مجاز است.
مثلاً:
در آینده میتوانیم بنویسیم:
یعنی:
این ساختار پایه بسیاری از Scriptهای تحلیلی ما خواهد بود.
#سطح_1
#DIgSILENT #PowerFactory #DPL #PowerSystems #مهندسی_برق
✅ @PowerFactoryDIgSILENT
🔹 Double و درصد
فرض کنید توان فعلی یک تجهیز:
75 MW
و ظرفیت آن:
100 MW
است.
درصد استفاده از ظرفیت:
75 / 100 × 100 = 75 %
میشود.
در DPL:
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
double actualPower;
double capacity;
double utilization;
actualPower = 75.0;
capacity = 100.0;
utilization = actualPower / capacity * 100.0;
printf('Utilization = %.2f %%', utilization);
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
خروجی:
Utilization = 75.00 %
🔹 Double و محاسبات چندمرحلهای
میتوانیم چند محاسبه را پشت سر هم انجام دهیم.
مثلاً فرض کنید توان یک ژنراتور از:
120 MW
به:
138.5 MW
افزایش یافته است.
مقدار افزایش:
18.5 MW
و درصد افزایش:
15.42 %
خواهد بود.
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
double oldPower;
double newPower;
double difference;
double percentage;
oldPower = 120.0;
newPower = 138.5;
difference = newPower - oldPower;
percentage = difference / oldPower * 100.0;
printf('Old Power = %.2f MW', oldPower);
printf('New Power = %.2f MW', newPower);
printf('Difference = %.2f MW', difference);
printf('Increase = %.2f %%', percentage);
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
خروجی:
Old Power = 120.00 MW
New Power = 138.50 MW
Difference = 18.50 MW
Increase = 15.42 %
این الگو بعدها برای مقایسه Study Caseها و سناریوها بسیار مفید خواهد بود.
🔹 Double و دقت نمایش
در
printf میتوانیم مشخص کنیم چند رقم اعشار نمایش داده شود.مثلاً:
%.1f
یعنی یک رقم اعشار.
%.2f
یعنی دو رقم اعشار.
%.3f
یعنی سه رقم اعشار.
مثلاً:
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
double voltage;
voltage = 0.987654;
printf('%.1f', voltage);
printf('%.2f', voltage);
printf('%.3f', voltage);
printf('%.6f', voltage);
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
بهصورت مفهومی خروجی به شکل زیر خواهد بود:
1.0
0.99
0.988
0.987654
⚠️ توجه کنید که این فقط نحوه نمایش مقدار است؛ با محدود کردن تعداد ارقام در
printf، خود مقدار Variable تغییر نمیکند.🔹 Double در مقایسه با یک Limit
یکی از کاربردهای مهم Double در تحلیل شبکه، مقایسه یک مقدار با حد مجاز است.
مثلاً:
Loading = 108.6 %
Limit = 100 %
در آینده میتوانیم بنویسیم:
اگر Loading > Limit
↓
تجهیز Overloaded است
یعنی:
Double
↓
Measurement
↓
Comparison
↓
Decision
این ساختار پایه بسیاری از Scriptهای تحلیلی ما خواهد بود.
#سطح_1
#DIgSILENT #PowerFactory #DPL #PowerSystems #مهندسی_برق
✅ @PowerFactoryDIgSILENT
𝐏𝐨𝐰𝐞𝐫𝐅𝐚𝐜𝐭𝐨𝐫𝐲 𝐃𝐈𝐠𝐒𝐈𝐋𝐄𝐍𝐓 | آموزش نرم افزار دیگسایلنت پاورفکتوری
🔰 ادامه سطح 1 - بخش 13 🔰 🔹 Double و درصد فرض کنید توان فعلی یک تجهیز: 75 MW و ظرفیت آن: 100 MW است. درصد استفاده از ظرفیت: 75 / 100 × 100 = 75 % میشود. در DPL: ! =================================== ! ✅ Telegram: @PowerFactoryDIgSILENT ! ===============…
🔰 ادامه سطح 1 - بخش 13 🔰
⚠️ یک اشتباه رایج
نباید برای مقدار اعشاری، صرفاً به این دلیل که «عدد است»، از
مثلاً اگر:
باشد، این داده ماهیت اعشاری دارد.
در تحلیل سیستم قدرت، تفاوت بین:
و:
بسیار مهم است.
پس باید نوع داده را بر اساس ماهیت داده انتخاب کنیم، نه صرفاً بر اساس اینکه داده عددی است.
🧠 یک مثال ترکیبی PowerFactory
فرض کنید نتیجه یک مطالعه Load Flow برای یک تجهیز این مقادیر را به ما داده است:
برای نگهداری این مقادیر:
اینجا هر سه Variable از یک نوع هستند، چون هر سه مقدار اعشاری هستند.
🎯 نکته بسیار مهم برای ادامه دوره
در پروژههای واقعی DPL معمولاً دادهها را بهصورت منفرد بررسی نمیکنیم.
مثلاً ممکن است برای یک Line داشته باشیم:
و برای مجموعه خطوط:
بنابراین در Scriptهای واقعی، انواع داده مختلف دائماً کنار یکدیگر قرار میگیرند.
🎯 جمعبندی
در این پست یاد گرفتیم:
☜
☜ Voltage، Loading، Power و Current نمونههای مهم آن هستند.
☜ Double در محاسبات مهندسی بسیار پرکاربرد است.
☜ میتوان با Double اختلاف، درصد تغییر، Margin و نسبتها را محاسبه کرد.
☜ تعداد ارقام نمایش دادهشده با
☜ نباید دادههای اعشاری را صرفاً به دلیل عددی بودن، Integer در نظر گرفت.
⭐️ قانون طلایی
#سطح_1
#DIgSILENT #PowerFactory #DPL #PowerSystems #مهندسی_برق
✅ @PowerFactoryDIgSILENT
⚠️ یک اشتباه رایج
نباید برای مقدار اعشاری، صرفاً به این دلیل که «عدد است»، از
int استفاده کنیم.مثلاً اگر:
voltage = 0.973
باشد، این داده ماهیت اعشاری دارد.
در تحلیل سیستم قدرت، تفاوت بین:
0.973
و:
1.000
بسیار مهم است.
پس باید نوع داده را بر اساس ماهیت داده انتخاب کنیم، نه صرفاً بر اساس اینکه داده عددی است.
🧠 یک مثال ترکیبی PowerFactory
فرض کنید نتیجه یک مطالعه Load Flow برای یک تجهیز این مقادیر را به ما داده است:
Voltage = 0.942 pu
Loading = 96.75 %
Power = 184.35 MW
برای نگهداری این مقادیر:
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
double voltage;
double loading;
double power;
voltage = 0.942;
loading = 96.75;
power = 184.35;
printf('Voltage = %.3f pu', voltage);
printf('Loading = %.2f %%', loading);
printf('Power = %.2f MW', power);
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
اینجا هر سه Variable از یک نوع هستند، چون هر سه مقدار اعشاری هستند.
🎯 نکته بسیار مهم برای ادامه دوره
در پروژههای واقعی DPL معمولاً دادهها را بهصورت منفرد بررسی نمیکنیم.
مثلاً ممکن است برای یک Line داشته باشیم:
Line Object
↓
Name → String
Length → Double
Status → Boolean
و برای مجموعه خطوط:
All Lines
↓
Set
بنابراین در Scriptهای واقعی، انواع داده مختلف دائماً کنار یکدیگر قرار میگیرند.
🎯 جمعبندی
در این پست یاد گرفتیم:
☜
double برای مقادیر اعشاری استفاده میشود.☜ Voltage، Loading، Power و Current نمونههای مهم آن هستند.
☜ Double در محاسبات مهندسی بسیار پرکاربرد است.
☜ میتوان با Double اختلاف، درصد تغییر، Margin و نسبتها را محاسبه کرد.
☜ تعداد ارقام نمایش دادهشده با
printf قابل کنترل است.☜ نباید دادههای اعشاری را صرفاً به دلیل عددی بودن، Integer در نظر گرفت.
⭐️ قانون طلایی
هرجا با یک مقدار اندازهگیریشده یا محاسبهشده با بخش اعشاری سروکار داریم، باید نوع داده مناسب اعشاری را در نظر بگیریم.
#سطح_1
#DIgSILENT #PowerFactory #DPL #PowerSystems #مهندسی_برق
✅ @PowerFactoryDIgSILENT
𝐏𝐨𝐰𝐞𝐫𝐅𝐚𝐜𝐭𝐨𝐫𝐲 𝐃𝐈𝐠𝐒𝐈𝐋𝐄𝐍𝐓 | آموزش نرم افزار دیگسایلنت پاورفکتوری
🔰 ادامه سطح 1 - بخش 13 🔰 ⚠️ یک اشتباه رایج نباید برای مقدار اعشاری، صرفاً به این دلیل که «عدد است»، از int استفاده کنیم. مثلاً اگر: voltage = 0.973 باشد، این داده ماهیت اعشاری دارد. در تحلیل سیستم قدرت، تفاوت بین: 0.973 و: 1.000 بسیار مهم است. پس باید نوع…
🎯 تمرین شماره 13
در یک مطالعه فرضی، مشخص شده است که یک فیدر در دو حالت مختلف دارای شرایط زیر است:
حالت اول
حالت دوم
برنامهای بنویسید که:
☜ توان حالت اول و دوم را در دو Variable از نوع
☜ Loading هر دو حالت را در دو Variable جداگانه ذخیره کند.
☜ افزایش توان بین دو حالت را محاسبه کند.
☜ درصد افزایش توان را محاسبه کند.
☜ تغییر Loading را محاسبه کند.
☜ تمام نتایج را با تعداد مناسب ارقام اعشار نمایش دهد.
💡 دقت کنید
این بار هدف فقط نمایش مقادیر نیست؛ باید از
#تمرین_سطح_1
#تمرین
در یک مطالعه فرضی، مشخص شده است که یک فیدر در دو حالت مختلف دارای شرایط زیر است:
حالت اول
Power = 72.5 MW
Loading = 68.4 %
حالت دوم
Power = 91.8 MW
Loading = 86.7 %
برنامهای بنویسید که:
☜ توان حالت اول و دوم را در دو Variable از نوع
double ذخیره کند.☜ Loading هر دو حالت را در دو Variable جداگانه ذخیره کند.
☜ افزایش توان بین دو حالت را محاسبه کند.
☜ درصد افزایش توان را محاسبه کند.
☜ تغییر Loading را محاسبه کند.
☜ تمام نتایج را با تعداد مناسب ارقام اعشار نمایش دهد.
💡 دقت کنید
این بار هدف فقط نمایش مقادیر نیست؛ باید از
double برای انجام محاسبات واقعی بین دو حالت استفاده کنید.#تمرین_سطح_1
#تمرین
🔰 سطح 1 - بخش 14 🔰
📌 String در DPL
در پستهای قبلی با
تا اینجا بیشتر با اعداد و محاسبات کار کردیم؛ اما در PowerFactory دائماً با اطلاعات متنی هم سروکار داریم:
نام خط
نام باس
نام پست
نام ترانسفورماتور
نام Study Case
نام سناریو
پیامهای گزارش
متنهای خروجی
برای نگهداری این نوع اطلاعات از String استفاده میکنیم.
🔹 String چیست؟
مثلاً:
یک Variable از نوع String به این شکل تعریف میشود:
خروجی:
🔹 تعریف String
ساختار کلی:
مثلاً:
خروجی:
🔹 متن در String چگونه نوشته میشود؟
در مثالهای DPL، متن را داخل کوتیشن قرار میدهیم:
مثلاً:
نکته مهم این است که:
یک عدد است، ولی:
یک String است.
🔹 3. تفاوت Number و String
این تفاوت در PowerFactory بسیار مهم است.
فرض کنید:
را داریم.
این یک مقدار عددی است و میتوانیم روی آن محاسبات انجام دهیم.
اما:
یک متن است.
نمیتوانیم آن را مستقیماً مانند یک عدد در محاسبات ریاضی استفاده کنیم.
مثلاً این دو مفهوم کاملاً متفاوتاند:
و:
اولی برای محاسبه مناسب است.
دومی برای نمایش و گزارش مناسب است.
🔹 String در نام تجهیزات
یکی از مهمترین کاربردهای String در DPL، کار با نام تجهیزات است.
فرض کنید نام یک خط را داریم:
میتوانیم آن را در یک Variable ذخیره کنیم:
خروجی:
این مفهوم بعداً زمانی که از Objectهای واقعی PowerFactory نام آنها را استخراج کنیم، اهمیت زیادی پیدا میکند.
🔹 ترکیب String با عدد
یکی از کاربردهای بسیار مهم String، ساخت گزارش است.
فرض کنید:
میخواهیم این دو را در یک پیام نمایش دهیم.
خروجی:
اینجا سه مفهوم با هم ترکیب شدهاند:
این الگو در گزارشهای DPL بسیار پرکاربرد خواهد بود.
#سطح_1
#DIgSILENT #PowerFactory #DPL #PowerSystems #مهندسی_برق
✅ @PowerFactoryDIgSILENT
📌 String در DPL
در پستهای قبلی با
int و double آشنا شدیم.تا اینجا بیشتر با اعداد و محاسبات کار کردیم؛ اما در PowerFactory دائماً با اطلاعات متنی هم سروکار داریم:
نام خط
نام باس
نام پست
نام ترانسفورماتور
نام Study Case
نام سناریو
پیامهای گزارش
متنهای خروجی
برای نگهداری این نوع اطلاعات از String استفاده میکنیم.
🔹 String چیست؟
String برای نگهداری دادههای متنی استفاده میشود.مثلاً:
Line_230kV_01
Bus_230_05
Substation_A
Base Case
Peak Load
یک Variable از نوع String به این شکل تعریف میشود:
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
string lineName;
lineName = 'Line_230kV_01';
printf('Line Name = %s', lineName);
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
خروجی:
Line Name = Line_230kV_01
🔹 تعریف String
ساختار کلی:
string VariableName;
مثلاً:
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
string substationName;
string studyCaseName;
substationName = 'Substation_A';
studyCaseName = 'Peak_Load';
printf('Substation = %s', substationName);
printf('Study Case = %s', studyCaseName);
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
خروجی:
Substation = Substation_A
Study Case = Peak_Load
🔹 متن در String چگونه نوشته میشود؟
در مثالهای DPL، متن را داخل کوتیشن قرار میدهیم:
'Line_230kV_01'
مثلاً:
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
string voltageLevel;
voltageLevel = '230 kV';
printf('Voltage Level = %s', voltageLevel);
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
نکته مهم این است که:
230
یک عدد است، ولی:
'230'
یک String است.
🔹 3. تفاوت Number و String
این تفاوت در PowerFactory بسیار مهم است.
فرض کنید:
230
را داریم.
این یک مقدار عددی است و میتوانیم روی آن محاسبات انجام دهیم.
اما:
'230 kV'
یک متن است.
نمیتوانیم آن را مستقیماً مانند یک عدد در محاسبات ریاضی استفاده کنیم.
مثلاً این دو مفهوم کاملاً متفاوتاند:
voltage = 230
و:
voltageText = '230 kV'
اولی برای محاسبه مناسب است.
دومی برای نمایش و گزارش مناسب است.
🔹 String در نام تجهیزات
یکی از مهمترین کاربردهای String در DPL، کار با نام تجهیزات است.
فرض کنید نام یک خط را داریم:
Line_400kV_North_01
میتوانیم آن را در یک Variable ذخیره کنیم:
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
string lineName;
lineName = 'Line_400kV_North_01';
printf('Equipment: %s', lineName);
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
خروجی:
Equipment: Line_400kV_North_01
این مفهوم بعداً زمانی که از Objectهای واقعی PowerFactory نام آنها را استخراج کنیم، اهمیت زیادی پیدا میکند.
🔹 ترکیب String با عدد
یکی از کاربردهای بسیار مهم String، ساخت گزارش است.
فرض کنید:
Line Name = Line_230kV_05
Loading = 108.35 %
میخواهیم این دو را در یک پیام نمایش دهیم.
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
string lineName;
double loading;
lineName = 'Line_230kV_05';
loading = 108.35;
printf('Line %s has a loading of %.2f %%', lineName, loading);
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
خروجی:
Line Line_230kV_05 has a loading of 108.35 %
اینجا سه مفهوم با هم ترکیب شدهاند:
String
+
Double
+
printf
این الگو در گزارشهای DPL بسیار پرکاربرد خواهد بود.
#سطح_1
#DIgSILENT #PowerFactory #DPL #PowerSystems #مهندسی_برق
✅ @PowerFactoryDIgSILENT
𝐏𝐨𝐰𝐞𝐫𝐅𝐚𝐜𝐭𝐨𝐫𝐲 𝐃𝐈𝐠𝐒𝐈𝐋𝐄𝐍𝐓 | آموزش نرم افزار دیگسایلنت پاورفکتوری
🔰 سطح 1 - بخش 14 🔰 📌 String در DPL در پستهای قبلی با int و double آشنا شدیم. تا اینجا بیشتر با اعداد و محاسبات کار کردیم؛ اما در PowerFactory دائماً با اطلاعات متنی هم سروکار داریم: نام خط نام باس نام پست نام ترانسفورماتور نام Study Case نام سناریو پیامهای…
🔰 ادامه سطح 1 - بخش 14 🔰
🔹 ساخت پیامهای خوانا
فرض کنید میخواهیم وضعیت یک تجهیز را گزارش کنیم:
میتوانیم نام تجهیز را در یک String نگهداری کنیم:
این روش باعث میشود Script ما بتواند برای تجهیزات مختلف، پیامهای متفاوت و خوانا تولید کند.
🔹 چند String در یک برنامه
میتوانیم چند Variable از نوع String داشته باشیم.
مثلاً:
خروجی:
چنین ساختاری بعدها برای گزارشگیری خودکار بسیار مفید خواهد بود.
🔹 ترکیب چند String
گاهی میخواهیم چند قطعه متن را به یک متن تبدیل کنیم.
مثلاً:
و به یک متن مانند:
برسیم.
در DPL برای کار با Stringها توابع و امکانات مختلفی وجود دارد که در بخش مربوط به String Operations بهصورت دقیق بررسی خواهیم کرد.
نکته مهم این است که فعلاً مفهوم را در ذهن داشته باشید:
🔹 String و گزارش تجهیزات
فرض کنید در آینده یک Script داریم که خطوط دارای Overload را پیدا میکند.
برای هر خط میتوانیم اطلاعاتی مانند:
را در گزارش قرار دهیم.
مثلاً خروجی:
در اینجا:
یعنی String بخش مهمی از سیستم گزارشگیری ما خواهد بود.
🔥 10. یک مثال واقعیتر
فرض کنید اطلاعات یک تجهیز به این صورت است:
میتوانیم اطلاعات متنی و عددی را کنار هم قرار دهیم:
خروجی:
این دقیقاً شبیه ساختار اطلاعاتی است که در پروژههای واقعی DPL با آن کار خواهیم کرد.
#سطح_1
#DIgSILENT #PowerFactory #DPL #PowerSystems #مهندسی_برق
✅ @PowerFactoryDIgSILENT
🔹 ساخت پیامهای خوانا
فرض کنید میخواهیم وضعیت یک تجهیز را گزارش کنیم:
Transformer TR_63_20_01 is overloaded.
میتوانیم نام تجهیز را در یک String نگهداری کنیم:
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
string transformerName;
transformerName = 'TR_63_20_01';
printf('Transformer %s is overloaded.', transformerName);
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
این روش باعث میشود Script ما بتواند برای تجهیزات مختلف، پیامهای متفاوت و خوانا تولید کند.
🔹 چند String در یک برنامه
میتوانیم چند Variable از نوع String داشته باشیم.
مثلاً:
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
string region;
string substation;
string voltageLevel;
string studyCase;
region = 'North';
substation = 'Substation_01';
voltageLevel = '230 kV';
studyCase = 'Peak_Load';
printf('Region : %s', region);
printf('Substation : %s', substation);
printf('Voltage Level: %s', voltageLevel);
printf('Study Case : %s', studyCase);
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
خروجی:
Region : North
Substation : Substation_01
Voltage Level: 230 kV
Study Case : Peak_Load
چنین ساختاری بعدها برای گزارشگیری خودکار بسیار مفید خواهد بود.
🔹 ترکیب چند String
گاهی میخواهیم چند قطعه متن را به یک متن تبدیل کنیم.
مثلاً:
North
+
Substation_01
+
230 kV
و به یک متن مانند:
North - Substation_01 - 230 kV
برسیم.
در DPL برای کار با Stringها توابع و امکانات مختلفی وجود دارد که در بخش مربوط به String Operations بهصورت دقیق بررسی خواهیم کرد.
نکته مهم این است که فعلاً مفهوم را در ذهن داشته باشید:
String 1 + String 2
↓
String جدید
🔹 String و گزارش تجهیزات
فرض کنید در آینده یک Script داریم که خطوط دارای Overload را پیدا میکند.
برای هر خط میتوانیم اطلاعاتی مانند:
Line Name
Loading
Status
را در گزارش قرار دهیم.
مثلاً خروجی:
Line_230_01 | 104.52 % | OVERLOADED
Line_230_07 | 112.35 % | OVERLOADED
Line_400_02 | 101.18 % | OVERLOADED
در اینجا:
Line Name → String
Loading → Double
Status → String
یعنی String بخش مهمی از سیستم گزارشگیری ما خواهد بود.
🔥 10. یک مثال واقعیتر
فرض کنید اطلاعات یک تجهیز به این صورت است:
Equipment Name = TR_230_63_01
Type = Transformer
Voltage Level = 230 kV / 63 kV
Loading = 96.75 %
میتوانیم اطلاعات متنی و عددی را کنار هم قرار دهیم:
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
string equipmentName;
string equipmentType;
string voltageLevel;
double loading;
equipmentName = 'TR_230_63_01';
equipmentType = 'Transformer';
voltageLevel = '230 kV / 63 kV';
loading = 96.75;
printf('Equipment : %s', equipmentName);
printf('Type : %s', equipmentType);
printf('Voltage : %s', voltageLevel);
printf('Loading : %.2f %%', loading);
! ===================================
! ✅ Telegram: @PowerFactoryDIgSILENT
! ===================================
خروجی:
Equipment : TR_230_63_01
Type : Transformer
Voltage : 230 kV / 63 kV
Loading : 96.75 %
این دقیقاً شبیه ساختار اطلاعاتی است که در پروژههای واقعی DPL با آن کار خواهیم کرد.
#سطح_1
#DIgSILENT #PowerFactory #DPL #PowerSystems #مهندسی_برق
✅ @PowerFactoryDIgSILENT