1. Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
  2. Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
  3. Не писать свой вопрос в первую попавшуюся тему - вместо этого создать новую тему.
  4. За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения.
  5. Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
  6. Перед тем как что-то написать - читать здесь и здесь, а студентам - обязательно здесь.
  7. Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.

Автоматическое создание датаблоков

ПЛК SIMATIC (S7-200, S7-1200, S7-300, S7-400, S7-1500, ET200)
Ответить

Автор темы
sparda210
здесь недавно
здесь недавно
Сообщения: 19
Зарегистрирован: 24 дек 2020, 12:11
Имя: Антон
Благодарил (а): 3 раза
Поблагодарили: 2 раза

Автоматическое создание датаблоков

Сообщение sparda210 »

Доброго времени суток.
У меня не проблема, а скорее вопрос оптимизации работы.

Задача такая, есть ФБ для которого надо создать несколько сотен DB. Каким образом, можно быстро создать несколько instance DB?

Михайло
почётный участник форума
почётный участник форума
Сообщения: 3559
Зарегистрирован: 10 ноя 2009, 04:58
Имя: Толмачев Михаил Алексеевич
город/регион: г. Чехов, МО
Благодарил (а): 6 раз
Поблагодарили: 253 раза

Автоматическое создание датаблоков

Сообщение Михайло »

Одинаковые структуры у датаблоков? За счёт чего автоматизация-то?
Аватара пользователя

Nicolayy
освоился
освоился
Сообщения: 280
Зарегистрирован: 14 фев 2014, 11:55
Имя: Николай
Страна: Россия
Благодарил (а): 9 раз
Поблагодарили: 64 раза

Автоматическое создание датаблоков

Сообщение Nicolayy »

sparda210 писал(а): 13 янв 2021, 11:55 Задача такая, есть ФБ для которого надо создать несколько сотен DB.
Значит, вот если прям так рассматривать задачу "в лоб", как Вы написали, то в TIA Portal Вы так, скорее всего, не сделаете. Потому что, допустим, Вы создаёте два FB: первый - это и есть тот, с которого Вы собираетесь плодить экземплярные DB (т.е. по сути своей этот FB будет объявлением структуры класса, а экземплярные DB - его объектами), а во втором FB Вы попытаетесь объявить статическую переменную типа Array[0 .. 1000] of "FB1". Но ничего не получится - TIA Portal отругает Вас за это и пошлёт по-дальше, почему - неизвестно, но это так. Хотя, возможно, он даст Вам создать Array[0 .. 1000] of DB_ANY, но можно ли что-то из этого сделать - затрудняюсь сказать.

В любом случае Вашу задачу можно решить другим путем, вообще без FB. Т.е. по-старинке, примерно как это решалось в старых-добрых S7-200. Т.е. в глобальном DB объявляете массив структур, куда прописываете все переменные для Вашей функции (или свой тип данных можно объявить, если очень хочется). Затем создаете FC, куда в качестве аргумента передаете индекс массива и в самой функции обращаетесь к переменным как

Код: Выделить всё

GLOBAL_DB.My_Struct_Array[i].var1
и т.п.
Т.е. этот индекс массива - это такой условный номер Вашего как бы "виртуального" DB.
И еще тут, может быть, можно задействовать указатели, которые прописать в разделе TEMP у FC и присваивать им адреса переменных из структуры по индексу в начале этого FC (просто для сокращения конструкции обращения к переменным, приведенной выше), но это уже чисто внешний момент

Автор темы
sparda210
здесь недавно
здесь недавно
Сообщения: 19
Зарегистрирован: 24 дек 2020, 12:11
Имя: Антон
Благодарил (а): 3 раза
Поблагодарили: 2 раза

Автоматическое создание датаблоков

Сообщение sparda210 »

Когда я работал в Step7, я делал следующим образом:
-Создавал FB;
-Прописывал уйму DB в Symbol table;
- Создавал FC, где прописывал вызов FB относительно каждого DB;
- Компилировал и после компиляции, у меня создавались данные DB.

И потом я мог ими крутить как хотел, в TIA не получается такой способ.
Аватара пользователя

aranea
знаток Eplan
знаток Eplan
Сообщения: 1136
Зарегистрирован: 21 сен 2012, 22:45
Имя: aranea
Благодарил (а): 27 раз
Поблагодарили: 155 раз

Автоматическое создание датаблоков

Сообщение aranea »

sparda210, даже если вы как-то их создадите, каждый DB ведь нужно вызвать с своими параметрами (на этой-то стадии они и создаются ;))
Изображение

winb
освоился
освоился
Сообщения: 248
Зарегистрирован: 31 янв 2017, 08:44
Имя: Маркушин Андрей Геннадьевич
Страна: Россия
город/регион: Нижегородская обл., Выкса
Благодарил (а): 14 раз
Поблагодарили: 59 раз

Автоматическое создание датаблоков

Сообщение winb »

Лучше автоматизировать производство, чем автоматизировать автоматизацию производства :)
Аватара пользователя

Nicolayy
освоился
освоился
Сообщения: 280
Зарегистрирован: 14 фев 2014, 11:55
Имя: Николай
Страна: Россия
Благодарил (а): 9 раз
Поблагодарили: 64 раза

Автоматическое создание датаблоков

Сообщение Nicolayy »

sparda210 писал(а): 14 янв 2021, 04:41 Когда я работал в Step7, я делал следующим образом:
-Создавал FB;
-Прописывал уйму DB в Symbol table;
- Создавал FC, где прописывал вызов FB относительно каждого DB;
- Компилировал и после компиляции, у меня создавались данные DB.
Ах вот оно в чем дело... Т.е. вопрос не в оптимизированном доступе к сотням DB, а просто в том, что лень их создавать в среде программирования? Я даже и не думал, что такая проблема у кого-то может возникнуть.
winb писал(а): 14 янв 2021, 12:05 Лучше автоматизировать производство, чем автоматизировать автоматизацию производства :)
Вот это правильно написано. А Вам, sparda210, нужен "автоматизированный узбек" :lol: Т.е. надо просто найти помощника, который будет в TIA Portal создавать Вам DB, раз Вам лень. Лет десять назад у нас так сметщицу припрегли забивать теги в WinCC Flexible - надо было забить тысяч пять наверное тегов для Runtime, а программистам было лень это делать ))

POV
корифей
корифей
Сообщения: 755
Зарегистрирован: 12 авг 2008, 11:05
Имя: Патрушев Олег Валерьевич
Страна: Россия
город/регион: г. Н.Новгород
Благодарил (а): 93 раза
Поблагодарили: 143 раза

Автоматическое создание датаблоков

Сообщение POV »

Я так понимаю для автоматизации таких задач есть механизм Openness и импорт-экспорт.
Сам не пробовал, руками делаю. Чисто теоретически экспортировать один блок, размножить в ехселе каком или еще в чем (от формата) и импортировать. С тегами такое прокатывало у меня. С ДБ не пробовал.
Вон V16 уже репозитории и контроль версий поддерживает, там много чего наворочено.

Михайло
почётный участник форума
почётный участник форума
Сообщения: 3559
Зарегистрирован: 10 ноя 2009, 04:58
Имя: Толмачев Михаил Алексеевич
город/регион: г. Чехов, МО
Благодарил (а): 6 раз
Поблагодарили: 253 раза

Автоматическое создание датаблоков

Сообщение Михайло »

Так за счёт чего автоматизация? В общем виде Эксель ничего не даст, там чуть удобнее, но не более.

v0v
не первый раз у нас
не первый раз у нас
Сообщения: 343
Зарегистрирован: 12 дек 2018, 14:47
Имя: Влад
Благодарил (а): 1 раз
Поблагодарили: 44 раза

Автоматическое создание датаблоков

Сообщение v0v »

Посмотрите курс ST-7PRO2. В нем рассматривается создание, копирование DB (SFC22, SFC20). Может поможет.
Ответить

Вернуться в «Simatic TIA Portal»