𝐏𝐨𝐰𝐞𝐫𝐅𝐚𝐜𝐭𝐨𝐫𝐲 𝐃𝐈𝐠𝐒𝐈𝐋𝐄𝐍𝐓 | آموزش نرم افزار دیگسایلنت پاورفکتوری
495 subscribers
1 link
⚡️ آموزش تخصصی DIgSILENT PowerFactory
📚 از پایه تا پیشرفته | پروژه‌محور و کاربردی
💻 تحلیل شبکه | DPL | اتوماسیون
🎯 آموزش واقعی برای مهندسان برق قدرت

ارتباط با ما:
👥 @ElectricalDocumentAdmin
Download Telegram
🔰 سطح 1 - بخش 6 🔰

📌 ‏Comment در DPL
در پست قبل با ساختار کلی یک برنامه DPL آشنا شدیم.

یکی از اولین اجزای هر برنامه، Comment یا توضیحات داخل کد است.
ممکن است Comment در ظاهر موضوع ساده‌ای باشد، اما در پروژه‌های واقعی و مخصوصاً Scriptهای طولانی، نقش بسیار مهمی در خوانایی، مستندسازی و نگهداری کد دارد.

🔹 ‏Comment چیست؟
‏Comment متنی است که برای توضیح کد نوشته می‌شود و در منطق اجرای برنامه دخالتی ندارد.
در DPL برای نوشتن Comment از علامت:
!

استفاده می‌کنیم.
مثلاً:
! ===================================
! Telegram: @PowerFactoryDIgSILENT
! ===================================

! This is a comment

printf('Hello DPL!');

! ===================================
! Telegram: @PowerFactoryDIgSILENT
! ===================================

خط زیر:
! This is a comment

توسط DPL به‌عنوان Comment شناخته می‌شود.

🔹 چرا از Comment استفاده می‌کنیم؟
فرض کنید چند ماه بعد به یک Script برگردیم.
اگر کد به این شکل باشد:
Set = AllRelevant("*.ElmLne");

ممکن است فوراً به خاطر نیاوریم این خط دقیقاً برای چه کاری نوشته شده است.
اما اگر توضیح مناسبی اضافه کنیم:
! ===================================
! Telegram: @PowerFactoryDIgSILENT
! ===================================

! Get all relevant line objects
Set = AllRelevant("*.ElmLne");

! ===================================
! Telegram: @PowerFactoryDIgSILENT
! ===================================

هدف کد بسیار واضح‌تر می‌شود.

🔹 ‏Comment فقط برای توضیح کد نیست
از Comment می‌توان برای موارد مختلف استفاده کرد.
1️⃣ توضیح هدف برنامه
مثلاً:
! Calculate network loading

2️⃣ توضیح یک بخش از برنامه
! ================================
! Load Flow Calculation
! ================================

3️⃣ توضیح یک دستور
! Get all relevant line objects
Set = AllRelevant("*.ElmLne");

4️⃣ ثبت اطلاعات آموزشی
مثلاً در دوره آموزشی می‌توانیم مشخص کنیم این مثال مربوط به چه موضوعی است:
! Example 006
! Introduction to DPL Comments


🔹‏ Comment در ابتدای Script
در پروژه‌های واقعی بهتر است ابتدای Script مشخص باشد.
برای مثال:
! ===================================
! Telegram: @PowerFactoryDIgSILENT
! ===================================

! ===================================
! Example 006 - Comments in DPL
! ===================================

printf('Comment Example');

! ===================================
! Telegram: @PowerFactoryDIgSILENT
! ===================================

این نوع ساختار باعث می‌شود Scriptهای آموزشی ما از همان ابتدا منظم و قابل تشخیص باشند.
🔹 Comment در بین کد
می‌توانیم یک برنامه را به چند بخش تقسیم کنیم.
مثلاً:
! ===================================
! Telegram: @PowerFactoryDIgSILENT
! ===================================

! -------------------------------
! Input
! -------------------------------

! -------------------------------
! Calculation
! -------------------------------

! -------------------------------
! Output
! -------------------------------

printf('DPL Program');

! ===================================
! Telegram: @PowerFactoryDIgSILENT
! ===================================

در پروژه‌های بزرگ این روش بسیار مفید است.
🔹 Comment می‌تواند کد را موقتاً غیرفعال کند
یکی از کاربردهای بسیار مفید Comment در زمان Debug کردن است.
فرض کنید:
! ===================================
! Telegram: @PowerFactoryDIgSILENT
! ===================================

printf('Step 1');

! printf('Step 2');

printf('Step 3');

! ===================================
! Telegram: @PowerFactoryDIgSILENT
! ===================================

خط:
! printf('Step 2');

دیگر به‌عنوان دستور اجرایی پردازش نمی‌شود.
بنابراین می‌توانیم برای تست، بعضی قسمت‌های کد را موقتاً غیرفعال کنیم.

⚠️ البته در پروژه‌های بزرگ بهتر است برای مدیریت بخش‌های مختلف برنامه، از روش‌های ساختاریافته‌تر استفاده کنیم و صرفاً تعداد زیادی خط را Comment نکنیم.

#سطح_1
#DIgSILENT #PowerFactory #DPL #PowerSystems #مهندسی_برق

@PowerFactoryDIgSILENT
𝐏𝐨𝐰𝐞𝐫𝐅𝐚𝐜𝐭𝐨𝐫𝐲 𝐃𝐈𝐠𝐒𝐈𝐋𝐄𝐍𝐓 | آموزش نرم افزار دیگسایلنت پاورفکتوری
🔰 سطح 1 - بخش 6 🔰 📌 ‏Comment در DPL در پست قبل با ساختار کلی یک برنامه DPL آشنا شدیم. یکی از اولین اجزای هر برنامه، Comment یا توضیحات داخل کد است. ممکن است Comment در ظاهر موضوع ساده‌ای باشد، اما در پروژه‌های واقعی و مخصوصاً Scriptهای طولانی، نقش بسیار…
🔰 ادامه سطح 1 - بخش 6 🔰

🔹 ‏Comment و خوانایی کد
یک قانون مهم در برنامه‌نویسی وجود دارد:
‏Comment باید دلیل یا هدف کد را توضیح دهد، نه اینکه صرفاً خود کد را تکرار کند.

‏ Comment ضعیف:
! Print Hello
printf('Hello');

این Comment اطلاعات زیادی به ما نمی‌دهد.
‏Comment بهتر:
! ===================================
! Telegram: @PowerFactoryDIgSILENT
! ===================================

! Display a message to confirm that the script is running
printf('Hello');

! ===================================
! Telegram: @PowerFactoryDIgSILENT
! ===================================

در اینجا توضیح می‌دهد چرا این دستور وجود دارد.

🔹 ‏Comment در پروژه‌های حرفه‌ای
وقتی Script از چند خط به چند صد خط یا حتی بیشتر می‌رسد، می‌توان ساختار را به شکل زیر سازمان‌دهی کرد:
Program

├── Initialization

├── Input

├── Object Selection

├── Calculation

├── Result Processing

├── Reporting

└── Finalization

و برای هر بخش Comment مناسب قرار داد.
این موضوع در پروژه‌های حرفه‌ای DPL اهمیت زیادی پیدا می‌کند.

⚠️ نکته مهم درباره Comment
‏Comment کد اجرایی نیست.

بنابراین اگر اشتباهاً یک دستور DPL را داخل Comment قرار دهیم، آن دستور اجرا نخواهد شد.
مثلاً:
! ===================================
! Telegram: @PowerFactoryDIgSILENT
! ===================================

! printf('This message will NOT be executed');

printf('This message WILL be executed');

! ===================================
! Telegram: @PowerFactoryDIgSILENT
! ===================================

خروجی فقط:
This message WILL be executed

خواهد بود.

🎯 جمع‌بندی
در این پست یاد گرفتیم:
☜ ‏Comment چیست.
☜ علامت Comment در DPL چیست.
☜ چگونه برای کد توضیح بنویسیم.
☜ چگونه Script را بخش‌بندی کنیم.
☜ چگونه موقتاً یک دستور را غیرفعال کنیم.
☜ چرا Comment در پروژه‌های بزرگ اهمیت دارد.
☜ چگونه Comment مناسب و مفید بنویسیم.

قانون طلایی این پست:
کدی که قرار است دیگران بخوانند، باید برای انسان قابل فهم باشد؛ نه فقط برای کامپیوتر قابل اجرا.


#سطح_1
#DIgSILENT #PowerFactory #DPL #PowerSystems #مهندسی_برق

@PowerFactoryDIgSILENT
𝐏𝐨𝐰𝐞𝐫𝐅𝐚𝐜𝐭𝐨𝐫𝐲 𝐃𝐈𝐠𝐒𝐈𝐋𝐄𝐍𝐓 | آموزش نرم افزار دیگسایلنت پاورفکتوری
🔰 ادامه سطح 1 - بخش 6 🔰 🔹 ‏Comment و خوانایی کد یک قانون مهم در برنامه‌نویسی وجود دارد: ‏Comment باید دلیل یا هدف کد را توضیح دهد، نه اینکه صرفاً خود کد را تکرار کند. ‏ Comment ضعیف: ! Print Hello printf('Hello'); این Comment اطلاعات زیادی به ما نمی‌دهد.…
🎯 تمرین شماره 6

کد زیر را بررسی کنید و برای هر بخش یک Comment مناسب بنویسید:
! ===================================
! Telegram: @PowerFactoryDIgSILENT
! ===================================

printf('Start');

printf('Load Flow');

printf('Finish');

! ===================================
! Telegram: @PowerFactoryDIgSILENT
! ===================================

سعی کنید برنامه را به سه بخش تقسیم کنید:
Start → Calculation → Finish

#تمرین_سطح_1
#تمرین
🔰 سطح 1 - بخش 7 🔰

📌 ‏Statement در DPL
در پست‌های قبلی با Comment و ساختار کلی برنامه DPL آشنا شدیم.

حالا به یکی از پایه‌ای‌ترین مفاهیم برنامه‌نویسی می‌رسیم:
🔹Statement چیست؟

اگر بخواهیم خیلی ساده بگوییم:
‏Statement یعنی یک دستور قابل اجرا که به DPL می‌گوید چه کاری انجام دهد.


🔹 ‏Statement چیست؟
هر برنامه DPL از مجموعه‌ای از دستورها تشکیل شده است.
برای مثال:
! ===================================
! Telegram: @PowerFactoryDIgSILENT
! ===================================

printf('Hello DPL!');

! ===================================
! Telegram: @PowerFactoryDIgSILENT
! ===================================

در اینجا:
printf('Hello DPL!');

یک Statement است.

این Statement به DPL می‌گوید:
متن
Hello DPL!
را در خروجی نمایش بده.


🔹 پایان Statement با ;
یکی از نکات مهم در Syntax زبان DPL این است که پایان دستور را با:
;

مشخص می‌کنیم.

مثلاً:
! ===================================
! Telegram: @PowerFactoryDIgSILENT
! ===================================

printf('Statement 1');
printf('Statement 2');
printf('Statement 3');

! ===================================
! Telegram: @PowerFactoryDIgSILENT
! ===================================

در اینجا سه Statement داریم.
Statement 1 → printf('Statement 1');
Statement 2 → printf('Statement 2');
Statement 3 → printf('Statement 3');


🔹 ترتیب اجرای Statementها
DPL دستورات برنامه را بر اساس ساختار برنامه و ترتیب اجرای آن‌ها پردازش می‌کند.

مثلاً:
! ===================================
! Telegram: @PowerFactoryDIgSILENT
! ===================================

printf('First');
printf('Second');
printf('Third');

! ===================================
! Telegram: @PowerFactoryDIgSILENT
! ===================================

خروجی به ترتیب خواهد بود:
First
Second
Third

بنابراین ترتیب Statementها می‌تواند روی نتیجه برنامه تأثیر داشته باشد.

🔹 یک Statement می‌تواند محاسبات انجام دهد
‏Statementها فقط برای چاپ متن نیستند.

در برنامه‌نویسی می‌توانیم از آن‌ها برای انجام محاسبات نیز استفاده کنیم.
برای مثال:
! ===================================
! Telegram: @PowerFactoryDIgSILENT
! ===================================

int a, b, result;

a = 10;
b = 20;
result = a + b;

printf('Result = %d', result);

! ===================================
! Telegram: @PowerFactoryDIgSILENT
! ===================================

در این برنامه چند Statement داریم:
int a, b, result;
a = 10;
b = 20;
result = a + b;
printf(...);

هرکدام یک بخش از عملیات برنامه را انجام می‌دهند.

⚠️ نکته: جزئیات تعریف Variable و انواع داده را در پست‌های بعدی به‌صورت کامل بررسی خواهیم کرد. فعلاً هدف فقط شناخت مفهوم Statement است.


🔹 چند Statement در یک خط؟
از نظر خوانایی بهتر است هر دستور را در یک خط جدا بنویسیم.
مثلاً:
! ===================================
! Telegram: @PowerFactoryDIgSILENT
! ===================================

printf('A'); printf('B'); printf('C');

! ===================================
! Telegram: @PowerFactoryDIgSILENT
! ===================================


صحیح است اما این ساختار خواناتر است.

! ===================================
! Telegram: @PowerFactoryDIgSILENT
! ===================================

printf('A');
printf('B');
printf('C');

! ===================================
! Telegram: @PowerFactoryDIgSILENT
! ===================================


اما مفهوم اصلی این است که ; پایان Statement را مشخص می‌کند.
بنابراین خط‌بندی و پایان دستور دو مفهوم متفاوت هستند.

#سطح_1
#DIgSILENT #PowerFactory #DPL #PowerSystems #مهندسی_برق

@PowerFactoryDIgSILENT
𝐏𝐨𝐰𝐞𝐫𝐅𝐚𝐜𝐭𝐨𝐫𝐲 𝐃𝐈𝐠𝐒𝐈𝐋𝐄𝐍𝐓 | آموزش نرم افزار دیگسایلنت پاورفکتوری
🔰 سطح 1 - بخش 7 🔰 📌 ‏Statement در DPL در پست‌های قبلی با Comment و ساختار کلی برنامه DPL آشنا شدیم. حالا به یکی از پایه‌ای‌ترین مفاهیم برنامه‌نویسی می‌رسیم: 🔹‏ Statement چیست؟ اگر بخواهیم خیلی ساده بگوییم: ‏Statement یعنی یک دستور قابل اجرا که به DPL می‌گوید…
🔰 ادامه سطح 1 - بخش 7 🔰

🔹 یک اشتباه رایج
فراموش کردن ; می‌تواند باعث خطای Syntax شود.
مثلاً:
! ===================================
! Telegram: @PowerFactoryDIgSILENT
! ===================================

printf('Hello')
printf('World');

! ===================================
! Telegram: @PowerFactoryDIgSILENT
! ===================================

در اینجا بعد از Statement اول ; قرار نگرفته است.
بنابراین باید به این شکل باشد:
! ===================================
! Telegram: @PowerFactoryDIgSILENT
! ===================================

printf('Hello');
printf('World');

! ===================================
! Telegram: @PowerFactoryDIgSILENT
! ===================================


🔹 ‏Statement و Comment چه تفاوتی دارند؟
این دو را با هم اشتباه نگیریم.
Comment
! This is a comment

برای توضیح است و اجرا نمی‌شود.
Statement
printf('Hello');

یک دستور اجرایی است.

بنابراین:
! ===================================
! Telegram: @PowerFactoryDIgSILENT
! ===================================

! This line is a comment
printf('This line is a statement');

! ===================================
! Telegram: @PowerFactoryDIgSILENT
! ===================================


🔹 ‏Statementهای ساده‌ای که در ادامه می‌بینیم
در ادامه دوره با انواع مختلف Statementها مواجه خواهیم شد، از جمله:

Assignment
برای مقداردهی:
variable = value;

‏Function Call
برای فراخوانی Function:
printf(...);

Conditional Statement
برای تصمیم‌گیری:
if (...)
{
...
}

‏Loop Statement
برای تکرار:
for (...)
{
...
}

و در ادامه با Statementهای مرتبط با Object، Set، Study، Calculation و Automation نیز کار خواهیم کرد.

🧠 یک نکته مهم
در این مرحله باید یک تصویر ساده در ذهن داشته باشید:
DPL Program

Statement

Statement

Statement

Result


یعنی یک برنامه DPL از مجموعه‌ای از دستورها تشکیل می‌شود که با یک منطق مشخص کنار هم قرار گرفته‌اند.

در پست‌های بعدی یاد می‌گیریم این Statementها چگونه با Variable، Expression، Object و Function ترکیب می‌شوند.

🎯 جمع‌بندی
در این پست یاد گرفتیم:
☜ ‏Statement چیست.
☜ ‌‏Statement یک دستور اجرایی است.
☜ پایان Statement با ; مشخص می‌شود.
☜ یک برنامه می‌تواند چند Statement داشته باشد.
☜ ترتیب Statementها اهمیت دارد.
☜ ‏Comment‏ با Statement تفاوت دارد.
☜ فراموش کردن ; می‌تواند باعث Syntax Error شود.

⚡️ قانون طلایی این پست:
هر دستور اجرایی را به‌عنوان یک Statement بشناس و پایان آن را با Syntax صحیح مشخص کن.


#سطح_1
#DIgSILENT #PowerFactory #DPL #PowerSystems #مهندسی_برق

@PowerFactoryDIgSILENT
𝐏𝐨𝐰𝐞𝐫𝐅𝐚𝐜𝐭𝐨𝐫𝐲 𝐃𝐈𝐠𝐒𝐈𝐋𝐄𝐍𝐓 | آموزش نرم افزار دیگسایلنت پاورفکتوری
🔰 ادامه سطح 1 - بخش 7 🔰 🔹 یک اشتباه رایج فراموش کردن ; می‌تواند باعث خطای Syntax شود. مثلاً: ! =================================== ! Telegram: @PowerFactoryDIgSILENT ! =================================== printf('Hello') printf('World'); ! ===========…
🎯 تمرین شماره 7

کد زیر را ببینید:
! ===================================
! Telegram: @PowerFactoryDIgSILENT
! ===================================

printf('PowerFactory');
printf('DPL');
printf('Programming');

! ===================================
! Telegram: @PowerFactoryDIgSILENT
! ===================================

سؤال:
چند Statement در این برنامه وجود دارد؟
خروجی برنامه چیست؟
اگر ; بعد از Statement دوم حذف شود، چه اتفاقی می‌افتد؟

#تمرین_سطح_1
#تمرین
🔰 سطح 1 - بخش 8 🔰

📌 ‏Expression در DPL
در پست قبلی با مفهوم Statement آشنا شدیم.

حالا می‌خواهیم یکی از مفاهیم مهمی را یاد بگیریم که تقریباً در تمام برنامه‌های DPL با آن سروکار خواهیم داشت:
‌‌‏Expression چیست؟


به زبان ساده:
‏Expression عبارتی است که می‌تواند یک مقدار تولید کند.

این مقدار می‌تواند حاصل یک محاسبه، یک مقایسه، یک مقدار متغیر یا حتی اطلاعاتی باشد که از یک Object دریافت می‌کنیم.

مثلاً:
10 + 20

یک Expression است و نتیجه آن:
30

است.
یا:
5 * 4

نتیجه:
20


🔹 تفاوت Expression و Statement
این دو مفهوم را باید از همین ابتدا از هم تفکیک کنیم.

‏Expression
یک مقدار یا نتیجه تولید می‌کند:
10 + 20


❏ ‏Statement

یک دستور کامل برای انجام یک عملیات است:
result = 10 + 20;

در این مثال:
10 + 20

یک Expression است.
اما:
result = 10 + 20;

یک Statement است.
یعنی می‌توانیم بگوییم:
‏Expression می‌تواند بخشی از یک Statement باشد.


🔹 ‏Expressionهای ریاضی
یکی از ساده‌ترین انواع Expression، عبارت‌های ریاضی هستند.
مثلاً:
! ===================================
! Telegram: @PowerFactoryDIgSILENT
! ===================================

printf('Result = %d', 10 + 20);

! ===================================
! Telegram: @PowerFactoryDIgSILENT
! ===================================

در اینجا:
10 + 20

‏Expression است.
نتیجه محاسبه:
30

خواهد بود.

🔹 ‏Expression با متغیرها
‏Expression فقط شامل اعداد ثابت نیست.
می‌توانیم از Variableها نیز استفاده کنیم.
مثلاً:
! ===================================
! Telegram: @PowerFactoryDIgSILENT
! ===================================

int a, b;

a = 10;
b = 20;

printf('Sum = %d', a + b);

! ===================================
! Telegram: @PowerFactoryDIgSILENT
! ===================================

در اینجا:
a + b

یک Expression است.
چون مقدار a برابر 10 و مقدار b برابر 20 است، نتیجه Expression برابر 30 خواهد بود.

🔹‏ Expressionهای مختلف
‏Expression می‌تواند شکل‌های مختلفی داشته باشد.
1️⃣ ‏Expression ریاضی
a + b

2️⃣ ‌‏Expression مقایسه‌ای
a > b

این Expression نتیجه‌ای منطقی تولید می‌کند.
مثلاً اگر:
a = 20
b = 10

باشد:
a > b

برابر True خواهد بود.

3️⃣ ‏Expression ترکیبی
می‌توان چند Expression را با هم ترکیب کرد.
مثلاً:
a > 10 AND b < 50

این عبارت نیز یک Expression است و نتیجه آن می‌تواند True یا False باشد.

#سطح_1
#DIgSILENT #PowerFactory #DPL #PowerSystems #مهندسی_برق

@PowerFactoryDIgSILENT
𝐏𝐨𝐰𝐞𝐫𝐅𝐚𝐜𝐭𝐨𝐫𝐲 𝐃𝐈𝐠𝐒𝐈𝐋𝐄𝐍𝐓 | آموزش نرم افزار دیگسایلنت پاورفکتوری
🔰 سطح 1 - بخش 8 🔰 📌 ‏Expression در DPL در پست قبلی با مفهوم Statement آشنا شدیم. حالا می‌خواهیم یکی از مفاهیم مهمی را یاد بگیریم که تقریباً در تمام برنامه‌های DPL با آن سروکار خواهیم داشت: ‌‌‏Expression چیست؟ به زبان ساده: ‏Expression عبارتی است که می‌تواند…
🔰 ادامه سطح 1 - بخش 8 🔰

🔹 ‏Expression در شرط‌ها

در پست‌های آینده به‌صورت کامل با if کار خواهیم کرد.
اما همین حالا می‌توانیم ارتباط Expression و شرط را ببینیم:
! ===================================
! Telegram: @PowerFactoryDIgSILENT
! ===================================

int value;

value = 80;

if (value > 50)
{
printf('Value is greater than 50');
}

! ===================================
! Telegram: @PowerFactoryDIgSILENT
! ===================================

در اینجا:
value > 50

یک Expression است.
نتیجه آن تعیین می‌کند که دستورات داخل if اجرا شوند یا خیر.

🔹 ‏Expression و محاسبات مهندسی
حالا یک مثال نزدیک‌تر به کاربردهای PowerFactory ببینیم.
فرض کنید مقدار توان اکتیو و راکتیو را داریم و می‌خواهیم اندازه توان ظاهری را محاسبه کنیم.
فرمول:
S = √(P² + Q²)

بخش:
P² + Q²

یک Expression است.
بنابراین Expressionها در محاسبات مهندسی نقش بسیار مهمی دارند.
در ادامه دوره از همین مفهوم برای پردازش نتایج مطالعات PowerFactory استفاده خواهیم کرد.

🔹 ‏Expression و Objectهای PowerFactory
در مراحل بعدی، Expressionها بسیار جذاب‌تر می‌شوند.

فرض کنید یک Object از نوع خط داریم و می‌خواهیم یکی از Attributeهای آن را بررسی کنیم.
به‌صورت مفهومی:
Line Object

Attribute

Value

Expression

Comparison

Result

مثلاً:
اگر Loading یک خط بیشتر از 100 درصد بود، آن را به‌عنوان Overloaded گزارش کن.

منطق:
Loading > 100

یک Expression مقایسه‌ای است.
این دقیقاً یکی از مفاهیمی است که بعداً در پروژه‌های واقعی Load Flow از آن استفاده خواهیم کرد.

🔹 ‏Expression داخل Function
‏Expression می‌تواند به‌عنوان ورودی یک Function نیز استفاده شود.
مثلاً:
! ===================================
! Telegram: @PowerFactoryDIgSILENT
! ===================================

int a, b;

a = 15;
b = 25;

printf('Result = %d', a + b);

! ===================================
! Telegram: @PowerFactoryDIgSILENT
! ===================================

در اینجا:
a + b

‏Expression است و نتیجه آن به printf داده می‌شود.

⚠️ یک اشتباه رایج
گاهی Expression و Statement با هم اشتباه گرفته می‌شوند.
مثلاً:
a + b

به‌تنهایی یک Expression است.
اما:
result = a + b;

یک Statement است که در آن Expression:
a + b

استفاده شده است.
به این شکل در ذهن داشته باشید:
Statement

└── Expression

البته همه Statementها الزاماً Expression به این شکل ندارند؛ این فقط یک نمونه برای درک ارتباط این دو مفهوم است.

🧠 یک مثال کامل
بیایید همه چیز را کنار هم قرار دهیم:
! ===================================
! Telegram: @PowerFactoryDIgSILENT
! ===================================

int power1, power2, total;

power1 = 100;
power2 = 150;

total = power1 + power2;

printf('Total Power = %d MW', total);

! ===================================
! Telegram: @PowerFactoryDIgSILENT
! ===================================

بررسی کد:
power1 + power2

یک Expression است.
total = power1 + power2;

یک Statement است.
printf(...)

یک فراخوانی Function است که Expression/Value موردنظر را برای نمایش دریافت می‌کند.
و نتیجه:
Total Power = 250 MW

خواهد بود.

🎯 جمع‌بندی
در این پست یاد گرفتیم:
☜ ‏Expression چیست.
☜ ‏Expression می‌تواند یک مقدار تولید کند.
☜ ‏Expression می‌تواند شامل اعداد و Variableها باشد.
☜ ‏Expression می‌تواند ریاضی باشد.
☜ ‏Expression می‌تواند مقایسه‌ای باشد.
☜ ‏Expression می‌تواند در شرط‌ها استفاده شود.
☜ ‏Expression می‌تواند بخشی از یک Statement باشد.
☜ در آینده Expressionها را برای پردازش Attributeهای PowerFactory نیز استفاده خواهیم کرد.

⭐️ قانون طلایی
‏Expression نتیجه یا مقدار تولید می‌کند؛ Statement یک دستور کامل برای انجام یک عملیات است.


#سطح_1
#DIgSILENT #PowerFactory #DPL #PowerSystems #مهندسی_برق

@PowerFactoryDIgSILENT
𝐏𝐨𝐰𝐞𝐫𝐅𝐚𝐜𝐭𝐨𝐫𝐲 𝐃𝐈𝐠𝐒𝐈𝐋𝐄𝐍𝐓 | آموزش نرم افزار دیگسایلنت پاورفکتوری
🔰 ادامه سطح 1 - بخش 8 🔰 🔹 ‏Expression در شرط‌ها در پست‌های آینده به‌صورت کامل با if کار خواهیم کرد. اما همین حالا می‌توانیم ارتباط Expression و شرط را ببینیم: ! =================================== ! Telegram: @PowerFactoryDIgSILENT ! ==================…
🎯 تمرین شماره 8

در کد زیر 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 آشنا شدیم.

حالا به یکی از مهم‌ترین مفاهیم برنامه‌نویسی می‌رسیم:
🔹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 را که در پست قبل یاد گرفتیم ببینیم.
! ===================================
! 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 - بخش 10 🔰

📌 مقداردهی و تغییر مقدار 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 🔰

🔹 مقداردهی می‌تواند مرحله‌ای باشد

فرض کنید می‌خواهیم مجموع سه مقدار را محاسبه کنیم.
می‌توانیم این کار را مرحله‌به‌مرحله انجام دهیم:
! ===================================
! 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 🔰

🧠 یک مثال ترکیبی
در مثال زیر چند مفهوم قبلی را هم‌زمان می‌بینیم:
! ===================================
! 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 - بخش 11 🔰

📌 انواع داده در 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 — مقدار منطقی

گاهی لازم نیست یک عدد یا متن ذخیره کنیم.
فقط می‌خواهیم بدانیم:
آیا یک شرط برقرار است یا خیر؟

برای این نوع داده از مقدار منطقی استفاده می‌کنیم.
مثلاً:
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 خطوط بسازیم.
منطق برنامه:
                 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 ترانسفورماتور
مجموعه تمام ترانسفورماتورها

💡 راهنمای تمرین
به این سؤال فکر کنید:
آیا داده عدد صحیح است، عدد اعشاری است، متن است، مقدار منطقی است، یک Object است یا مجموعه‌ای از Objectها؟

پاسخ صحیح این تمرین پایه بسیاری از Scriptهای آینده ما خواهد بود.

#تمرین_سطح_1
#تمرین