Работа таймера в функциональном блоке

Инженерное программное обеспечение
TamTam
Дилетант
Сообщения: 16
Зарегистрирован: 25 июн 2018, 16:08

Работа таймера в функциональном блоке

Сообщение TamTam »

Здравствуйте.
Только учусь.
Возник вопрос с работой таймера в функциональном блоке.
Задача для примера. Есть 2 насоса: рабочий и резервный. Накидал ФБ. Вставил в программу 2 экземпляра. Но почему-то таймер работает только в первом дата блоке. во втором сразу значение таймера 0. Что я не так делаю никак не пойму. Буду признателен если разжуете.
Ошибка на рисунке второй контакт реле должен быть контактом таймера. Но это не суть.
У вас нет необходимых прав для просмотра вложений в этом сообщении.

Аватара пользователя
mr_Frodo
Профессионал
Сообщения: 588
Зарегистрирован: 22 июл 2016, 20:38

Re: Работа таймера в функциональном блоке

Сообщение mr_Frodo »

а где второй дата блок для второго экземпляра FB?
Вот моя подпись...

Михайло
Администратор
Сообщения: 4094
Зарегистрирован: 19 сен 2012, 19:16

Re: Работа таймера в функциональном блоке

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

1. #"Таймер контроля" - это переменная типа TEMP или STAT?
2. Как называется второй таймер? У него другое имя?
mr_Frodo писал(а):а где второй дата блок для второго экземпляра FB?
Здесь используются бездатаблочные варианты таймеров.

TamTam
Дилетант
Сообщения: 16
Зарегистрирован: 25 июн 2018, 16:08

Re: Работа таймера в функциональном блоке

Сообщение TamTam »

Михайло писал(а):1. #"Таймер контроля" - это переменная типа TEMP или STAT?
2. Как называется второй таймер? У него другое имя?
mr_Frodo писал(а):а где второй дата блок для второго экземпляра FB?
Здесь используются бездатаблочные варианты таймеров.
Рад что подключились.
1.#"Таймер контроля" - это переменная типа STAT. Объявлена внутри ФБ.
2.Таймер только один. Внутри ФБ. Я так понимаю в DB таймеру компилятор должен присвоить свой номер. Или я не правильно понимаю?
3. Второй дата блок на этой картинке не вставлял.

Пример привел по быстрому, чтобы разобрать принцип как работает таймер внутри ФБ и как надо включать ФБ в OB1, если несколько экземпляров этих ФБ.
У меня 3 группы насосов по основному и резервному в каждой. Написан один ФБ1 "контроль насоса".
В OB1 в одном нетворке вставил 2 экземпляра этого ФБ1 параллельно, с блоком данных DB1 и DB2. Этот нетворк назвал контроль работы насосов группы 1. То же самое для группы 2 и 3.
Таймеры работают только в блоках которые идут первыми, например, DB1 (далее DB3 и DB5). Если смотреть состояние переменных в онлайне, то в DB1 "таймер контроля" имеет уставку 10 сек. А в DB2 все значения сразу 0.

При работе программы получается, что я запускаю основной насос. таймер отсчитывает 10 секунд и если нет сигнала от реле давления срабатывает команда переход на резерв. А во втором экземпляре таймер уже с уставкой 0 и сразу срабатывает переход на резерв, т.к. таймер не дает задержку.

На самом деле у меня в программе несколько таймеров в ФБ. Все они ведут себя одинаково.

Может экземпляры ФБ в разные нетворки вставлять?

Andrey.wys
Любитель
Сообщения: 70
Зарегистрирован: 10 янв 2016, 00:35

Re: Работа таймера в функциональном блоке

Сообщение Andrey.wys »

Михайло писал(а): Здесь используются бездатаблочные варианты таймеров.
А можно подробнее? Если 2 насоса, то и вызывать фбшку надо с разными дбшками. А дбшка одна.
TamTam, покажите OB1.
Попробуйте использовать IEC таймеры (SFB4).

Михайло
Администратор
Сообщения: 4094
Зарегистрирован: 19 сен 2012, 19:16

Re: Работа таймера в функциональном блоке

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

Каждый таймер должен иметь отдельную область памяти, чтобы хранить своё состояние (уставку preset time - PT и сколько осталось elapsed time - ET). Если вы хотите, чтобы по сути один и тот же таймер в FB работал в двух местах, то вы должны выделить этим FB два разных места для хранения состояния, в том числе для хранения состояния таймера. А место для хранения состояния FB - это и есть прикрепленная к нему DB.

Кратче: если вы пишете одну FB, но используете её несколько раз одновременно (параллельно), то прикрепляйте к ней разные DB.

p.s. Вроде вы это правило соблюдаете. Но ещё попробуйте откомпилировать DB2. Такое может быть: не сделана компиляция = не выделена память, нули.

TamTam
Дилетант
Сообщения: 16
Зарегистрирован: 25 июн 2018, 16:08

Re: Работа таймера в функциональном блоке

Сообщение TamTam »

Сейчас проверил работу моего примера программы в симуляторе. Все работает правильно. Таймеры запускаются и отсчитывают уставку каждый в своем блоке.

В моей основной программе так не работает. Сделал скрин состояния дата блоков одного ФБ.
Слева дата блок имеет уставки таймеров, а тот который либо все нули, либо только некоторые поля имеют значения. Почему так?
Где-то я что-то не так нажал :cry:
У вас нет необходимых прав для просмотра вложений в этом сообщении.

Аватара пользователя
mr_Frodo
Профессионал
Сообщения: 588
Зарегистрирован: 22 июл 2016, 20:38

Re: Работа таймера в функциональном блоке

Сообщение mr_Frodo »

Повторяю, не вижу в дереве программы дб, относящиеся к вызываемых экземплярах фб.
Вот моя подпись...

TamTam
Дилетант
Сообщения: 16
Зарегистрирован: 25 июн 2018, 16:08

Re: Работа таймера в функциональном блоке

Сообщение TamTam »

mr_Frodo писал(а):Повторяю, не вижу в дереве программы дб, относящиеся к вызываемых экземплярах фб.
Я же начинающий. Некоторая терминология мне не до конца понятна. Здесь видно? С уважением.
У вас нет необходимых прав для просмотра вложений в этом сообщении.

Andrey.wys
Любитель
Сообщения: 70
Зарегистрирован: 10 янв 2016, 00:35

Re: Работа таймера в функциональном блоке

Сообщение Andrey.wys »

Еще раз покажите fb3

TamTam
Дилетант
Сообщения: 16
Зарегистрирован: 25 июн 2018, 16:08

Re: Работа таймера в функциональном блоке

Сообщение TamTam »

У-упс, коллеги.
Я сам запутался и Вас похоже путаю. Я еще раз проверю свой "шедевр" и позже отпишусь.
Грешу на работу таймеров, а получается где-то у меня в программе сбрасываются выходы.

Аватара пользователя
mr_Frodo
Профессионал
Сообщения: 588
Зарегистрирован: 22 июл 2016, 20:38

Re: Работа таймера в функциональном блоке

Сообщение mr_Frodo »

TamTam писал(а):
mr_Frodo писал(а):Повторяю, не вижу в дереве программы дб, относящиеся к вызываемых экземплярах фб.
Я же начинающий. Некоторая терминология мне не до конца понятна. Здесь видно? С уважением.
Теперь видно, удовлетворён. Все в порядке.
В первой картинке этого состава программы не было.
Вот моя подпись...

TamTam
Дилетант
Сообщения: 16
Зарегистрирован: 25 июн 2018, 16:08

Re: Работа таймера в функциональном блоке

Сообщение TamTam »

С вашей помощью разобрался. Таймеры в вызываемых экземплярах работают правильно.
Причина была в программе. Сигнал авария дублировался, поэтому второй экземпляр не запускался.
Решено. Я накосячил.

Здесь же спрошу второй вопрос.
Есть датчик давления в магистрали с выходом 4-20 мА. Подключен на вход с адресом %IW130. В программе подаю его значение на вход блока Norm_X (MIN=0, MAX=27648).
Далее с выхода блока NORM подаю на вход блока SCALE_X (MIN=0, MAX=10 бар). С выхода блока SCALE получаю тег "Давление".
Тэг "Давление" выведен на панель KTP600_Basic_mono.

Когда в трубе есть давление все хорошо, давление отображается. А когда насосы отключены, то получается сигнал с датчика меньше 4 мА. Значение входа отрицательно %IW130=-500. И соответственно тег "Давление" тоже отрицательно -0,2 бар.
На панели в поле вывода отображаются решетки. Как сделать чтобы отображалось 0? А то выглядит как обрыв датчика.
По справке TIA вроде написано, что если значение на входе блока меньше MIN, то значение на выходе блока должно равняться значению MIN.

Михайло
Администратор
Сообщения: 4094
Зарегистрирован: 19 сен 2012, 19:16

Re: Работа таймера в функциональном блоке

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

В проекте WinCC для KTP в настройках того элемента IO_Field надо вместо 99.9 указать формат s99.9, где s - это знак.

Аватара пользователя
mr_Frodo
Профессионал
Сообщения: 588
Зарегистрирован: 22 июл 2016, 20:38

Re: Работа таймера в функциональном блоке

Сообщение mr_Frodo »

А (
L Давление
L 0.0
>= R
)
JCN NEX0
L 0.0
T Давление
NEX0: NOP0
Если Давление меньше 0, то оно переписывается нулем.
Вот моя подпись...

Михайло
Администратор
Сообщения: 4094
Зарегистрирован: 19 сен 2012, 19:16

Re: Работа таймера в функциональном блоке

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

Метрологически некорректно так делать.

Аватара пользователя
mr_Frodo
Профессионал
Сообщения: 588
Зарегистрирован: 22 июл 2016, 20:38

Re: Работа таймера в функциональном блоке

Сообщение mr_Frodo »

Почему? Если фактически - это некорректная работа датчика.
И ещё... в блоке скалирования нет переключателя в виде бита для работы только в положительном диапазоне измерений?
Вот моя подпись...

Аватара пользователя
mr_Frodo
Профессионал
Сообщения: 588
Зарегистрирован: 22 июл 2016, 20:38

Re: Работа таймера в функциональном блоке

Сообщение mr_Frodo »

TamTam писал(а): По справке TIA вроде написано, что если значение на входе блока меньше MIN, то значение на выходе блока должно равняться значению MIN.
Я вот про это...
Вот моя подпись...

Михайло
Администратор
Сообщения: 4094
Зарегистрирован: 19 сен 2012, 19:16

Re: Работа таймера в функциональном блоке

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

mr_Frodo писал(а):Если фактически - это некорректная работа датчика.
Корректная работа. Все токовые датчики по стандарту должны выдавать сигналы от 3,7 мА до 23 мА (примерно такой диапазон по моей памяти), т.е. с небольшим перегрузом, а то с игнорированием перегрузок как-то некрасиво выходит...

Аватара пользователя
Ka3ax
Специалист
Сообщения: 303
Зарегистрирован: 07 сен 2013, 10:09

Re: Работа таймера в функциональном блоке

Сообщение Ka3ax »

Andrey.wys писал(а):
Михайло писал(а):
Попробуйте использовать IEC таймеры (SFB4).
мне уже на примере s7 classic разжевывали насчет мультиэкземпярного применения таймеров,
в tia на те же грабли наступаю, возможно, кто на примере IEC таймера покажет как мультиэкземплярно таймеры применять,
не понятно, что делать с DB IEC_Timer.
Основные принципы бы.

В DB к FB6, где вызываются таймеры, таймеры присутствуют. все как бы красиво, но таймеры считают по кругу не останавливаясь.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Supervision of erection

Ответить