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

DB на вход своего FB

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

Автор темы
dsai
здесь недавно
здесь недавно
Сообщения: 94
Зарегистрирован: 21 дек 2019, 19:49
Имя: Дмитрий
Страна: Россия
город/регион: Тамбов
Благодарил (а): 7 раз
Поблагодарили: 4 раза

DB на вход своего FB

Сообщение dsai »

Добрый день, уважаемые коллеги!

Есть такая задачка. Имеется несколько DB, в которых хранятся определенные параметры (скажем так параметры защит насосов. Эти параметры задают, что проверять при работе насосов, а что нет. В DB переменные разного типа) и есть функциональные блоки, которые по этим параметрам определяют состояние насосов. Так вот вопрос, можно ли сделать так, чтобы на вход этого функционального блока я подавал именно всю DB, а не отдельные переменные? Количество параметров в DB около 20, и не особо приятно привязывать все эти параметры к входам FB (помимо параметров есть еще куча входных параметров и общее количество входов может достигать 40).

Как костыль нашел 2 решения:
1. Создаем свой тип данных и перепривязываем из DB параметры во временную переменную своего типа и подаем эту переменную на вход DB.
2. Пакуем все булевские параметры в глобальные переменные типа WORD и обращаемся ко всему побитно. А параметры других типов (INT и REAL) храним отдельно в отдельных глобальных переменных.

Какой вариант будет оптимальным для решения этой задачи? И возможно ли все таки привязывать целую DB на вход FB.

Использую TIA V16, контроллер серии ET200SP.

Заранее спасибо!
________________________________________________
Не так страшны первые 90% ПНР, как вторые 90% ПНР
Аватара пользователя

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

DB на вход своего FB

Сообщение Nicolayy »

dsai, почитай про DB_ANY

Автор темы
dsai
здесь недавно
здесь недавно
Сообщения: 94
Зарегистрирован: 21 дек 2019, 19:49
Имя: Дмитрий
Страна: Россия
город/регион: Тамбов
Благодарил (а): 7 раз
Поблагодарили: 4 раза

DB на вход своего FB

Сообщение dsai »

Nicolayy писал(а): 08 сен 2021, 10:12 dsai, почитай про DB_ANY
Спасибо, почитаю.

На данный момент нашел еще одно решение. Создал свой тип переменной и в одной единой DB храню переменные данного типа. Как итог на вход своего FB подаю 1 переменную, в которой хранится все необходимое, а также сократил кол-во DB с параметрами до одной.
________________________________________________
Не так страшны первые 90% ПНР, как вторые 90% ПНР
Аватара пользователя

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

DB на вход своего FB

Сообщение Nicolayy »

dsai, не обязательно даже свой тип создавать. Можно структурами обойтись. Просто Struct с одинаковым набором переменных внутри, и передавай его хоть в FC, хоть в FB - также, как передаешь переменную своего типа сейчас
Ответить

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