Найти тему
Геннадий Антонов

VBA и дифференциальная защита Vamp 59

Давайте сегодня поговорим о трудоемких вычислениях с помощью Visual Basic Application.

Эта статья о том, как иногда простые с виду задачи, могут перерасти в сложные вычисления.

Помните в своей первой заметке про Visual Basic я запостил скриншот с графиком в Excel, так вот речь пойдет о нем сейчас.

Однажды, пришлось проверять дифференциальную защиту линии (ДЗЛ) на базе терминалов Vamp 59.

В мануале на терминал защиты были расписаны уравнения на основе которых, терминал производил вычисления дифференциального и тормозного тока (Idifferential and Ibias).

Для того чтобы было нагляднее, я решил на тот момент, нарисовать график в Excel, на котором можно было бы все увидеть.

Сказано, сделано.

Вот он, смотрите на скриншоте.

-2

Тут нужны, думаю, небольшие пояснения.

Серо-оранжевая линия на графике, это граница зоны срабатывания ДЗЛ. Эта граница состоит из трех прямых отрезков, в ячейках Excel - Прямой участок, Slope 1, Slope 2.

Красная точка - это результат вычислений уравнений, который в режиме реальной времени производят терминалы защиты Vamp 59.

Если точка находится под серо-оранжевой кривой линией - то все нормально.

Если же точка расположена над кривой, как на скриншоте, то это условие для срабатывания защиты.

Хм, думаю, ну ладно, а что, если мы захотим узнать, какой нам нужно подать ток, чтобы получить данную красную точку в том или ином месте графика?

Сейчас, думаю напишу формулу в Excel, и все у меня будет благополучно считаться.

Но не тут то было!

Мне с удивлением пришлось отметить, что данные формулы считались только в одну сторону.

Обратное преобразование из конечного результата в них было невозможно.

Вот эти незамысловатые формулы.

-3

Я полагаю, что тут дело все модулях числа. Именно модуль делает эти формулы условно необратимыми.

По крайней мере я не нашел математического решения обратного преобразования.

Может быть читатели смогут?

Я написал слово "условно", потому что все таки обратить их можно, просто нужно взять и перебрать ВСЕ возможные значение токов, и посмотреть (сравнить) результат с тем, что нам нужен.

Поэтому мой график был доработан следующим образом.

-4

Была добавлена синяя точка на графике.

Это то место на графике, куда мы хотим "передвинуть" красную точку.

Другими словами, какие величины токов нужно подать, чтобы красна точка, передвинулась на место синей.

Был написан макрос, который производит вычисления (перебор значений), по нажатию на кнопку "Подбор значений"

В процессе разработки программы, я заметил, что искомых исходных значений может быть множество.

Поэтому я ограничил вывод в результат первые найденные 20 значений.

Как получилось, смотрите на видео.