Страница 1 из 1

реле контроля фаз на FBD

Добавлено: 09 мар 2026, 15:00
sambo902006
Здравствуйте Знатоки, хочу на FBD в FLPROG сочинить реле контроля фаз, подскажите есть ли уже готовый блок, или какими блоками лучше воспользоваться?

Re: реле контроля фаз на FBD

Добавлено: 09 мар 2026, 15:07
ecoins
sambo902006 писал(а): 09 мар 2026, 15:00 Здравствуйте Знатоки, хочу на FBD в FLPROG сочинить реле контроля фаз, подскажите есть ли уже готовый блок, или какими блоками лучше воспользоваться?
А что у Вас в качестве источника сигналов?
Просто три дискретных сигнала? Если так, то подойдет стандартный блок & (И).

Re: реле контроля фаз на FBD

Добавлено: 09 мар 2026, 15:17
sambo902006
у меня подопытный плк FLE-30MR, у него есть аналоговые входа 10 вольт. Задумка на каждую фазу ставить делитель и уже из полученного значения их сравнивать, устанавливать смещение, следить по пиковым значениям и конечно пропускам. Хотя , если упростить то можно и по дискретным входам

Re: реле контроля фаз на FBD

Добавлено: 09 мар 2026, 16:33
montirovka
Реле контроля фаз изначально предусматривает определение правильности чередования фаз, основанное на замере угла по фазам. Буквально на прошлой неделе у знакомого перестал работать тепловой насос. На ТП поменяли фазы. Реле контроля фаз не включало компрессор до тех пор, пока я две фазы не поменял местами.
Попросил Алису написать скетч для блока Реле контроля фаз.
Показать
// Константы для пинов
const int phaseAPin = A0; // Фаза A
const int phaseBPin = A1; // Фаза B
const int phaseCPin = A2; // Фаза C
const int ledPin = 13; // Светодиод

// Переменные для хранения значений напряжения
int phaseA, phaseB, phaseC;

// Порог для определения наличия фазы (примерно 2,5 В в 10‑битном АЦП)
const int voltageThreshold = 512;
// Порог для детекции пересечения нуля (около 0 В)
const int zeroCrossThreshold = 5;

// Переменные для измерения фазового сдвига
unsigned long zeroCrossA = 0, zeroCrossB = 0, zeroCrossC = 0;
unsigned long timeA = 0, timeB = 0, timeC = 0;
float phaseShiftAB = 0.0, phaseShiftBC = 0.0, phaseShiftCA = 0.0;

// Флаг для первого обнаружения пересечения нуля
bool firstZeroCross = true;

void setup() {
// Инициализация последовательного порта для отладки
Serial.begin(9600);

// Настройка пинов
pinMode(phaseAPin, INPUT);
pinMode(phaseBPin, INPUT);
pinMode(phaseCPin, INPUT);
pinMode(ledPin, OUTPUT);

// Выключаем светодиод на старте
digitalWrite(ledPin, LOW);

Serial.println("Система контроля чередования фаз с измерением фазового сдвига запущена");
Serial.println("Светодиод горит, если всё в норме");
}

void loop() {
// Считываем значения с аналоговых входов
phaseA = analogRead(phaseAPin);
phaseB = analogRead(phaseBPin);
phaseC = analogRead(phaseCPin);

// Детекция пересечения нуля для фазы A
if (abs(phaseA - 512) < zeroCrossThreshold && firstZeroCross) {
zeroCrossA = micros();
timeA = zeroCrossA;
firstZeroCross = false;
} else if (abs(phaseA - 512) < zeroCrossThreshold) {
unsigned long currentTime = micros();
phaseShiftAB = calculatePhaseShift(timeA, currentTime);
timeA = currentTime;
}

// Детекция пересечения нуля для фазы B
if (abs(phaseB - 512) < zeroCrossThreshold && firstZeroCross) {
zeroCrossB = micros();
timeB = zeroCrossB;
firstZeroCross = false;
} else if (abs(phaseB - 512) < zeroCrossThreshold) {
unsigned long currentTime = micros();
phaseShiftBC = calculatePhaseShift(timeB, currentTime);
timeB = currentTime;
}

// Детекция пересечения нуля для фазы C
if (abs(phaseC - 512) < zeroCrossThreshold && firstZeroCross) {
zeroCrossC = micros();
timeC = zeroCrossC;
firstZeroCross = false;
} else if (abs(phaseC - 512) < zeroCrossThreshold) {
unsigned long currentTime = micros();
phaseShiftCA = calculatePhaseShift(timeC, currentTime);
timeC = currentTime;
}

// Выводим значения в монитор порта для отладки
Serial.print("Фаза A: ");
Serial.print(phaseA);
Serial.print(" | Фаза B: ");
Serial.print(phaseB);
Serial.print(" | Фаза C: ");
Serial.println(phaseC);

// Выводим фазовые сдвиги
Serial.print("Фазовый сдвиг AB: ");
Serial.print(phaseShiftAB);
Serial.print("° | BC: ");
Serial.print(phaseShiftBC);
Serial.print("° | CA: ");
Serial.println(phaseShiftCA);

// Проверяем наличие всех трёх фаз
bool allPhasesPresent = (phaseA > voltageThreshold) &&
(phaseB > voltageThreshold) &&
(phaseC > voltageThreshold);

// Проверяем правильное чередование фаз с учётом фазового сдвига
bool correctPhaseSequence = checkPhaseSequenceWithShift(phaseShiftAB, phaseShiftBC, phaseShiftCA);

// Логика управления светодиодом
bool systemOK = allPhasesPresent && correctPhaseSequence;

if (systemOK) {
digitalWrite(ledPin, HIGH); // Всё в норме — светодиод горит
Serial.println("✅ Всё в норме: все фазы присутствуют, чередование правильное");
} else {
digitalWrite(ledPin, LOW); // Ошибка — светодиод не горит
if (!allPhasesPresent) {
Serial.println("❌ Ошибка: отсутствует одна или несколько фаз");
} else {
Serial.println("❌ Ошибка: неправильное чередование фаз");
}
}

delay(500); // Задержка 500 мс между измерениями
}
Скетч для ознакомления.

Re: реле контроля фаз на FBD

Добавлено: 09 мар 2026, 16:44
Phazz
Используйте PZEM 6 вы получите полноценный мониторинг.
Смотри, что есть на AliExpress! Модуль мониторинга энергии PZEM-6L24 380V100A за 2 131 ₽ - уже со скидкой -39%
https://ali.click/d1u521n

Re: реле контроля фаз на FBD

Добавлено: 09 мар 2026, 17:28
ecoins
sambo902006 писал(а): 09 мар 2026, 15:17 у меня подопытный плк FLE-30MR, у него есть аналоговые входа 10 вольт. Задумка на каждую фазу ставить делитель и уже из полученного значения их сравнивать, устанавливать смещение, следить по пиковым значениям и конечно пропускам. Хотя , если упростить то можно и по дискретным входам
Контроль трех фаз - это ответственная задача. Возьмите что-то готовое, в итоге и дешевле получится:
https://www.ozon.ru/product/rele-kontro ... 8J2h0O316q
https://www.ozon.ru/product/rele-naprya ... l8DU4JYKDX
https://aliexpress.ru/wholesale?SearchT ... RWLA%3D%3D

С уважением, ecoins.

Re: реле контроля фаз на FBD

Добавлено: 16 мар 2026, 15:42
sambo902006
спасибо за советы, я понимаю, что готовые ркф меньше проблем, но хотелось бы что б законченный девайс в итоги страховал дополнительно направления вращения двигателя. И в случае несанкционированных действий горе обслуживающего персонала не позволял запустить двигатель.

Re: реле контроля фаз на FBD

Добавлено: 16 мар 2026, 15:44
sambo902006
вот здесь интересная статья про ркф : https://radioparty.ru/?view=article&id= ... -pic16f676

Re: реле контроля фаз на FBD

Добавлено: 16 мар 2026, 16:29
montirovka
sambo902006 писал(а): 16 мар 2026, 15:44 вот здесь интересная статья про ркф : https://radioparty.ru/?view=article&id= ... -pic16f676
В заметке ни чего не сказано о проверке чередования фаз.

Re: реле контроля фаз на FBD

Добавлено: 16 мар 2026, 17:23
sambo902006
чередование фаз думаю не сложно организовать по пиковым значениям