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