S7-1500. ANY_DB

Ааааааааааа.... Несколько дней прошло с зудящей мыслью, а что это за фрукт такой ANY_DB. И вот наконец-то теоретическое послание о том что такое ANY_DB и попытки разобраться, а зачем он нужен(я так и не понял, но об этом после).

Немного неофициальной теории

В целом это еще один инструмент для унификации процессов и написании мега универсальных ФБ. Особенность того, что ANY_DB хранит номер DB и может быть использован до того как мы создали дб. В ANY_DB хранится номер любой БД(Ох если все было так просто).

Вы не сможете записать в параметр ANY_DB DB с резервированием памяти
S7-1500. ANY_DB АСУ ТП, Автоматизация

И так что мы можем точно писать в ANY_DB:

1)Экземпляры UDT и системных типов

2)Экземпляры FB

3)DB которые были созданы как массив.

Из этого списка пункты 1 и 3 имеют возможность конвертирования в Variant. В целом есть две команды:

VARIANT_TO_DB_ANY

DB_ANY_TO_VARIANT

И больше с этим типом данных нельзя сделать НИ-ЧЕ-ГО!

Как ANY_DB в VARIANT превратить и что с этим дальше делать.

В целом после столь скудной теоретической части давайте фантазировать.

ANY_DB мы можем конdертить в variant.

А дальше там скармливать что хочешь и куда хочешь, у нас же есть REF_TO и ?=

В коде это будет выглядеть следующим образом:

S7-1500. ANY_DB АСУ ТП, Автоматизация

Ну и если подняться выше, то можно узнать, что на вход ANY_DB я подаю Data_Block_2

S7-1500. ANY_DB АСУ ТП, Автоматизация

Тут для закрепления требуется какая-то задачка, но на ум пока ничего толкового не приходит. Разве что какая-то фантастическая сборная линия с тремя операциями по координатам. Но если вдруг у вас появились идеи как это куда-то приделать или вы использовали где-то, то пожалуйста, поделитесь информацией.

Лига КИПиА

37 постов452 подписчика

Добавить пост

Правила сообщества

Правила - в соответствии с общими правилами Пикабу.