ساختار کلی دستور
تعریف دستور ResetQ
پارامترها
module: شماره ماژول (0 برای CPU و 1-16 برای کارتهای توسعه)
Output: شماره خروجی (0 تا 5 برای CPU و 0-32 برای کارتهای توسعه)
روشهای استفاده
1- غیر فعال کردن خروجی های منفرد
2- غیر فعال کردن چندین خروجی
مثالهای کاربردی
کنترل موتور
// توقف موتور بالا
void motorUpStop() {
ResetQ(0, 0); // غیرفعال کردن موتور بالا (Q0.0)
}
// توقف موتور پایین
void motorDownStop() {
ResetQ(0, 1); // غیرفعال کردن موتور پایین (Q0.1)
}
// توقف هر دو موتور
void motorBothStop() {
ResetQ(0, 0); // موتور بالا
ResetQ(0, 1); // موتور پایین
}
// کنترل موتور با توقف
void motorControl() {
if (I0[0].Value) {
SetQ(0, 0); // فعال کردن موتور بالا
} else {
ResetQ(0, 0); // غیرفعال کردن موتور بالا
}
}
کنترل رله
// غیرفعال کردن رله اصلی
void relayMainOff() {
ResetQ(0, 2); // غیرفعال کردن رله اصلی (Q0.2)
}
// غیرفعال کردن رله کمکی
void relayAuxOff() {
ResetQ(0, 3); // غیرفعال کردن رله کمکی (Q0.3)
}
// غیرفعال کردن رله هشدار
void relayAlarmOff() {
ResetQ(0, 4); // غیرفعال کردن رله هشدار (Q0.4)
}
// کنترل رله با تایمر
void relayControl() {
if (I0[0].Value) {
SetQ(0, 2); // فعال کردن رله
}
if (T0.Q) { // تایمر تمام شده
ResetQ(0, 2); // غیرفعال کردن رله
}
}
کنترل چراغها
// خاموش کردن چراغ اصلی
void lightMainOff() {
ResetQ(0, 2); // خاموش کردن چراغ اصلی (Q0.2)
}
// خاموش کردن چراغ نشانگر
void lightIndicatorOff() {
ResetQ(0, 3); // خاموش کردن چراغ نشانگر (Q0.3)
}
// خاموش کردن چراغ هشدار
void lightWarningOff() {
ResetQ(0, 4); // خاموش کردن چراغ هشدار (Q0.4)
}
// خاموش کردن چراغ اضطراری
void lightEmergencyOff() {
ResetQ(0, 5); // خاموش کردن چراغ اضطراری (Q0.5)
}
کنترل شرطی
کنترل با تایمر
// کنترل با تایمر
void timedControl() {
static uint32_t startTime = 0;
if (startCondition) {
startTime = espGetTimerTicks();
SetQ(0, 0); // شروع
}
if (espGetTimerTicks() - startTime > 5000) { // 5 ثانیه
ResetQ(0, 0); // توقف بعد از 5 ثانیه
}
}
کنترل پالس
کنترل توالی
کنترل ایمنی
// کنترل با بررسی شرایط ایمنی
void safeControl() {
if (emergencyStop) {
// توقف اضطراری - غیرفعال کردن تمام خروجیها
allOutputsOff();
return;
}
if (!safetyConditionsMet) {
ResetQ(0, 0); // غیرفعال کردن در صورت عدم ایمنی
}
}