Подскажите, а есть ли готовые или общепринятые способы распознавания восстановления связи с ПЧВ01[МО1]?
Сделал вариант, который работает с помощью отслеживания текущего входного напряжения на ПЧВ.
При разнице с предыдущим сохраненным значением выше определенного значения считать что связь восстановилась
В данном случае для себе взял значение 150 (трех фаз у меня пока нет).
Цель - ПЛК при включении частотника должен писать в него (частотник) значение по умолчанию.
Но этот способ кажется корявым, что скажете?Код:IF (currentVoltage - savedVoltage) > 150 THEN FrequencySetOutputValue:= FrequencySetStartupValue; triggerFrequencySetOutputValue:= TRUE; END_IF //можно попробовать использовать xError или другие варианты, типа OwenDriver.hasError //но xInitDone хоть и интуитивно не так понятен, но стабильно TRUE если есть связь и FALSE, //если нет IF NOT PChV1_M01.xInitDone THEN currentVoltage := 0; END_IF savedVoltage := currentVoltage
До этого пытался соорудить что-то, сделав счетчик Модбас передач с помощью xDone, сохраняя и сравнивая предыдущее значение с текущим.
Пытаясь потом поймать момент восстановления, когда значения счетчиков сравнялись и xDone снова в True.
Стабильно рабочего варианта не вышло, ибо измененное текущее значение периодически перетиралось дефолтным.
Код://Работает при включении-выключении ПЧВ, но также счетчики периодически сравниваются при стабильно включенном ПЧВ IF (pchvModbusCountSaved = pchvModbusCount) AND PChV1_M01.xDone THEN FrequencySetOutputValue:= FrequencySetStartupValue; triggerFrequencySetOutputValue:= TRUE; END_IF //каждые 300 (например) циклов, сохраняем значение счетчика IF cycleCount MOD 300 = 0 THEN pchvModbusCountSaved := pchvModbusCount; END_IF IF PChV1_M01.xDone THEN pchvModbusCount := pchvModbusCount + 1; END_IF




Ответить с цитированием