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

Инженерное программное обеспечение

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

Сообщение TamTam » 25 июн 2018, 16:40

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

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

Сообщение mr_Frodo » 25 июн 2018, 23:53

а где второй дата блок для второго экземпляра FB?
Вот моя подпись...
Аватара пользователя
mr_Frodo
Специалист
 
Сообщения: 451
Зарегистрирован: 22 июл 2016, 20:38

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

Сообщение Михайло » 26 июн 2018, 02:03

1. #"Таймер контроля" - это переменная типа TEMP или STAT?
2. Как называется второй таймер? У него другое имя?

mr_Frodo писал(а):а где второй дата блок для второго экземпляра FB?

Здесь используются бездатаблочные варианты таймеров.
Михайло
Администратор
 
Сообщения: 3797
Зарегистрирован: 19 сен 2012, 19:16

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

Сообщение TamTam » 26 июн 2018, 08:53

Михайло писал(а):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 и сразу срабатывает переход на резерв, т.к. таймер не дает задержку.

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

Может экземпляры ФБ в разные нетворки вставлять?
TamTam
Дилетант
 
Сообщения: 6
Зарегистрирован: 25 июн 2018, 16:08

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

Сообщение Andrey.wys » 26 июн 2018, 08:54

Михайло писал(а):Здесь используются бездатаблочные варианты таймеров.

А можно подробнее? Если 2 насоса, то и вызывать фбшку надо с разными дбшками. А дбшка одна.
TamTam, покажите OB1.
Попробуйте использовать IEC таймеры (SFB4).
Andrey.wys
Любитель
 
Сообщения: 63
Зарегистрирован: 10 янв 2016, 00:35

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

Сообщение Михайло » 26 июн 2018, 10:38

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

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

p.s. Вроде вы это правило соблюдаете. Но ещё попробуйте откомпилировать DB2. Такое может быть: не сделана компиляция = не выделена память, нули.
Михайло
Администратор
 
Сообщения: 3797
Зарегистрирован: 19 сен 2012, 19:16

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

Сообщение TamTam » 26 июн 2018, 12:10

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

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

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

Сообщение mr_Frodo » 26 июн 2018, 12:35

Повторяю, не вижу в дереве программы дб, относящиеся к вызываемых экземплярах фб.
Вот моя подпись...
Аватара пользователя
mr_Frodo
Специалист
 
Сообщения: 451
Зарегистрирован: 22 июл 2016, 20:38

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

Сообщение TamTam » 26 июн 2018, 12:45

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


Я же начинающий. Некоторая терминология мне не до конца понятна. Здесь видно? С уважением.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
TamTam
Дилетант
 
Сообщения: 6
Зарегистрирован: 25 июн 2018, 16:08

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

Сообщение Andrey.wys » 26 июн 2018, 12:50

Еще раз покажите fb3
Andrey.wys
Любитель
 
Сообщения: 63
Зарегистрирован: 10 янв 2016, 00:35

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

Сообщение TamTam » 26 июн 2018, 13:29

У-упс, коллеги.
Я сам запутался и Вас похоже путаю. Я еще раз проверю свой "шедевр" и позже отпишусь.
Грешу на работу таймеров, а получается где-то у меня в программе сбрасываются выходы.
TamTam
Дилетант
 
Сообщения: 6
Зарегистрирован: 25 июн 2018, 16:08

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

Сообщение mr_Frodo » 26 июн 2018, 18:09

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


Я же начинающий. Некоторая терминология мне не до конца понятна. Здесь видно? С уважением.

Теперь видно, удовлетворён. Все в порядке.
В первой картинке этого состава программы не было.
Вот моя подпись...
Аватара пользователя
mr_Frodo
Специалист
 
Сообщения: 451
Зарегистрирован: 22 июл 2016, 20:38

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

Сообщение TamTam » 29 июн 2018, 12:19

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

Здесь же спрошу второй вопрос.
Есть датчик давления в магистрали с выходом 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.
TamTam
Дилетант
 
Сообщения: 6
Зарегистрирован: 25 июн 2018, 16:08

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

Сообщение Михайло » 29 июн 2018, 13:36

В проекте WinCC для KTP в настройках того элемента IO_Field надо вместо 99.9 указать формат s99.9, где s - это знак.
Михайло
Администратор
 
Сообщения: 3797
Зарегистрирован: 19 сен 2012, 19:16

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

Сообщение mr_Frodo » 30 июн 2018, 17:13

А (
L Давление
L 0.0
>= R
)
JCN NEX0
L 0.0
T Давление
NEX0: NOP0
Если Давление меньше 0, то оно переписывается нулем.
Вот моя подпись...
Аватара пользователя
mr_Frodo
Специалист
 
Сообщения: 451
Зарегистрирован: 22 июл 2016, 20:38

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

Сообщение Михайло » 30 июн 2018, 18:12

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

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

Сообщение mr_Frodo » 30 июн 2018, 18:17

Почему? Если фактически - это некорректная работа датчика.
И ещё... в блоке скалирования нет переключателя в виде бита для работы только в положительном диапазоне измерений?
Вот моя подпись...
Аватара пользователя
mr_Frodo
Специалист
 
Сообщения: 451
Зарегистрирован: 22 июл 2016, 20:38

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

Сообщение mr_Frodo » 30 июн 2018, 18:23

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

Я вот про это...
Вот моя подпись...
Аватара пользователя
mr_Frodo
Специалист
 
Сообщения: 451
Зарегистрирован: 22 июл 2016, 20:38

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

Сообщение Михайло » 30 июн 2018, 18:26

mr_Frodo писал(а):Если фактически - это некорректная работа датчика.

Корректная работа. Все токовые датчики по стандарту должны выдавать сигналы от 3,7 мА до 23 мА (примерно такой диапазон по моей памяти), т.е. с небольшим перегрузом, а то с игнорированием перегрузок как-то некрасиво выходит...
Михайло
Администратор
 
Сообщения: 3797
Зарегистрирован: 19 сен 2012, 19:16

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

Сообщение Ka3ax » 14 июл 2018, 10:16

Andrey.wys писал(а):
Михайло писал(а):
Попробуйте использовать IEC таймеры (SFB4).

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

В DB к FB6, где вызываются таймеры, таймеры присутствуют. все как бы красиво, но таймеры считают по кругу не останавливаясь.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Supervision of erection
Аватара пользователя
Ka3ax
Специалист
 
Сообщения: 298
Зарегистрирован: 07 сен 2013, 10:09

След.

Вернуться в Simatic TIA Portal / Step7

Кто сейчас на конференции

Сейчас этот форум просматривают: Google Adsense [Bot], Yandex [Bot] и гости: 1