У меня сделано по первому варианту. Таймер находится (объявляется и вызывается) внутри ФБ, далее ФБ вызывается в Главной программе в цикле N раз. Таймер объявлен в VAR, т.е. внутренний.
Таймер2.png Таймер4.png
Последний раз редактировалось Mikhail_NNT; 20.01.2025 в 14:53.
Как вариант-костыль, сделайте в фб 20 таймеров, и передавайте в него i как входную переменную номера таймера. Но это все равно неправильный костыль и возможно не проканает, хотя... (Это как раз 2ой вариант кондора)
PS Скрины объявленных переменных делайте в оффлайне, это более информативно.
Последний раз редактировалось МихаилГл; 20.01.2025 в 15:02.
Mikhail_NNT вы один FB вызываете или создаете циклом 20 FB ? если вызов одного FB 20 раз, то его экземпляр всего один, соответственно и таймер 1.
Экземпляр FB создает набор переменных под себя. Вызов одного и того же в цикле работает с одним экземпляром переменных. Так как экземпляр создастся всего один.
Короче, ТС, покажите описание переменных в офлайне, народ хочет знать, у вас fb или array () of fb
PS Квадратных скобок в цикле нет... Это не массив...
Вот скрины работы 20 экземпляров ФБ, со встроенным таймером внутри ФБ. В примере Таймер на 20 секунд.
Сама программа, таймер встроен в ФБ 1 Программа с таймерами.jpg Вызов 20 экземпляров в цикле FOR 1 Работа 20 ФБ.jpg
Просмотр работы 17 и 18 экземпляра, включены не одновременно и время на таймерах разное !!! 1 Работа 17 и 18 таймера.jpg
То есть они работают, каждый в своём экземпляре ФБ.
Для просмотра работы, не открывая экземпляры, после цикла поставлена i:=17; и 17 экземпляр виден прямо в PLC_PRG.
Последний раз редактировалось kondor3000; 20.01.2025 в 18:26.