Вход

Просмотр полной версии : ПР200 блок чтения из ФБ



alexx12
09.10.2019, 10:58
Добрый день. В проекте предусмотрены несколько таймеров ТОN. Мне необходимо получить значение времени с момента прихода сигнада на вход I ФБ TON. То есть время работы ФБ. Не нашел как это сделать. Это возможно? Или есть другой путь?

Ревака Юрий
09.10.2019, 11:18
Добрый день. В проекте предусмотрены несколько таймеров ТОN. Мне необходимо получить значение времени с момента прихода сигнада на вход I ФБ TON. То есть время работы ФБ. Не нашел как это сделать. Это возможно? Или есть другой путь?

Добрый день, есть другой путь, макрос TIME_U/D.

alexx12
09.10.2019, 12:55
Понятно, спасибо. Создал свой вариант TON.

melky
09.10.2019, 13:18
Ревака Юрий - макрос TIME_U/D - У компонента обнаружена оборванная связь...

Ревака Юрий
09.10.2019, 14:17
Ревака Юрий - макрос TIME_U/D - У компонента обнаружена оборванная связь...

В каком месте, можно скриншот?

melky
09.10.2019, 14:31
Ревака Юрий сразу, как открыл на редактирование в версии 1.15

Ревака Юрий
09.10.2019, 15:09
Ревака Юрий сразу, как открыл на редактирование в версии 1.15

Это похоже 1.15 сильно "умный стал",:D спасибо за обратную связь.

melky
09.10.2019, 15:25
на счет 1.15 - он не просто умный, он не открывает файл, сделанный в 1.12

Вот не пойму, неужели в загашниках Овен не собралось проектов, на которых можно тестировать работу обновлений ? скоро материться начну и требовать сатисфакции с вашими программистами :) ну там руки им поотрывать или чем они там по клавишам нажимают.....

Pvalp
09.10.2019, 22:39
Добрый день.
А можно как-то выводить на экран ПР200 текущие значения параметров генератора прямоугольных импульсов (BLINK): Th и TI ?

игорь68
09.10.2019, 22:48
Как вариант самому переписать макрос под себя с такими "плюшками"

Ревака Юрий
10.10.2019, 09:03
Добрый день.
А можно как-то выводить на экран ПР200 текущие значения параметров генератора прямоугольных импульсов (BLINK): Th и TI ?

Можно читать значения, но они будут статические, если необходимо в динамике, то по аналогии с вышеприведенным макросом можно вывести.

Pvalp
10.10.2019, 09:48
Пробовал через Read FB, действительно читает только статику (задание) и то если прикрепить преобразование to fload на переменную, на прямую интовскую переменную не читает, может кто делал такой макрос под себя?

Серёга Букашкин
10.10.2019, 18:46
К Юрию: Чтение из таймера его уставки не имеет никакой практической применимости. Похоже это недостаток или ошибка, хотелось бы видеть чтением из таймера текущее время, как видим его в симуляторе.

Pvalp
18.10.2019, 08:59
Вот попробовал создать макрос "BLINK с обратным отсчетом" на базе "TON энергонезависимый с обратным отсчётом времени" созданного "Сергей0308", хотелось бы услышать замечания, пожелания и мысли по оптимизации данного макроса.

petera
18.10.2019, 11:36
Вот попробовал создать макрос "BLINK с обратным отсчетом" на базе "TON энергонезависимый с обратным отсчётом времени" созданного "Сергей0308", хотелось бы услышать замечания, пожелания и мысли по оптимизации данного макроса.

У Вас, при построении BLINK на двух таймерах TON, используются два лишних элемента
45199
Фрагмент обведенный рамкой полностью эквивалентен

Ну и с учетом этого внутри "изобретенного макроса" будут аналогичные лишние элементы, которых даже больше - четыре лишних
45200

Должно остаться
45201

Pvalp
18.10.2019, 13:42
У Вас, при построении BLINK на двух таймерах TON, используются два лишних элемента
45199
Фрагмент обведенный рамкой полностью эквивалентен

Ну и с учетом этого внутри "изобретенного макроса" будут аналогичные лишние элементы, которых даже больше - четыре лишних
45200

Должно остаться
45201

Спасибо большое petera, однако при симуляции макроса меня беспокоит следующее:45209
Когда введены значения Th и TI, то все нормально:45211

petera
18.10.2019, 14:38
Спасибо большое petera, однако при симуляции макроса меня беспокоит следующее:45209
Когда введены значения Th и TI, то все нормально:45211

Это ошибка макроса TON_0.1s. У него, если время задано =0, на выходе 1 даже без сигнала на входе I1
Нужно добавить в макрос логику
45212

И будет ОК
45213

Я такими TON_s (основанными на блинкерах и счетчиках) не пользуюсь
У меня есть свой макрос TON с индикацией времени, вот здесь он используется https://owen.ru/forum/showthread.php?t=32035&p=316458&viewfull=1#post316458

Pvalp
18.10.2019, 14:51
Это ошибка макроса TON_0.1s. У него, если время задано =0, на выходе 1 даже без сигнала на входе I1
Нужно добавить в макрос логику
45212

И будет ОК
45213

Я такими TON_s (основанными на блинкерах и счетчиках) не пользуюсь
У меня есть свой макрос TON с индикацией времени, вот здесь он используется https://owen.ru/forum/showthread.php?t=32035&p=316458&viewfull=1#post316458

Спасибо petera, помогло, не могли-бы Вы показать свой макрос?

petera
18.10.2019, 15:03
В серьезных проектах, где время цикла больше 1мс, такие таймеры
45219
работать будут некорректно

По этому я использую другой принцип
45217

Здесь идет подсчет циклов выполнения программы
Для работы этих таймеров нужен макрос подсчета времени цикла, и количества циклов от включения питания ПР
45218

Уставка (PT)задается целым числом в мс, на выходе ET время прошедшее от старта(прямой счет), выходе (PT- ET) оставшееся время, эти времена тоже в мс, дискретность равна времени цикла.

Абсолютная погрешность вычисления интервалов времени не более половины времени цикла во всем допустимом диапазоне уставки в мс от Тц до 4294967295/Tц

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

Работает таймер так
Переменные на входе
dT - время цикла в мс(целое)
x_Clc - номер текущего цикла.

1. Уставка в мс переводится в количество циклов PT_Clc
45220
здесь деление выполняется с округлением, по этому погрешность вычисления интервалов времени не более половины времени цикла

2. В момент старта запоминаем номер текущего цикла в переменную Start_Clc
45221

3. В процессе работы вычисляется сколько циклов прошло от старта ET_Clc = x_Clc - Start_Clc
45222

4. И сравниваем уставку PT_Clc с прошедшим количеством циклов ET_Clc
45223

Pvalp
18.10.2019, 16:05
В серьезных проектах, где время цикла больше 1мс, такие таймеры
45219
работать будут некорректно

По этому я использую другой принцип
45217

Здесь идет подсчет циклов выполнения программы
Для работы этих таймеров нужен макрос подсчета времени цикла, и количества циклов от включения питания ПР
45218

Уставка (PT)задается целым числом в мс, на выходе ET время прошедшее от старта(прямой счет), выходе (PT- ET) оставшееся время, эти времена тоже в мс, дискретность равна времени цикла.

Абсолютная погрешность вычисления интервалов времени не более половины времени цикла во всем допустимом диапазоне уставки в мс от Тц до 4294967295/Tц

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

Работает таймер так
Переменные на входе
dT - время цикла в мс(целое)
x_Clc - номер текущего цикла.

1. Уставка в мс переводится в количество циклов PT_Clc
45220
здесь деление выполняется с округлением, по этому погрешность вычисления интервалов времени не более половины времени цикла

2. В момент старта запоминаем номер текущего цикла в переменную Start_Clc
45221

3. В процессе работы вычисляется сколько циклов прошло от старта ET_Clc = x_Clc - Start_Clc
45222

4. И сравниваем уставку PT_Clc с прошедшим количеством циклов ET_Clc
45223
Спасибо petera, все довольно подробно и ясно.

dan75
18.10.2019, 18:31
В серьезных проектах, где время цикла больше 1мс, такие таймеры
45219
работать будут некорректно

Т.е. хотите сказать, что временнЫе функциональные блоки жёстко привязаны ко времени цикла 1 мс и при автоподстройке этого времени начинают врать? Вот те новость! Чёт меня Овен разочаровывает как-то.

petera
18.10.2019, 19:50
Т.е. хотите сказать, что временнЫе функциональные блоки жёстко привязаны ко времени цикла 1 мс и при автоподстройке этого времени начинают врать? Вот те новость! Чёт меня Овен разочаровывает как-то.

Совсем не об этом.
Смотрите рисунок, блинк с временами включено и выключено по 0,001с т.е. 1 мс
А если время цикла будет 7мс? Что будет на выходе этого блинка? Я думаю, что будут импульсы длительностью в один цикл, т.е. не 1 мс, а 7!
Таким образом не выходе счетчика CTN1 будет импульс не через(0,001+0,001) * 50 =0,1с, а через (0,007+0,007) * 50 =0,7с
И при уставке (I2) например 10, насчитает таймер не 10с, а 70!
Класс - погрешность 700% ;)

ЗЫ.
А может при времени цикла > 1мс блин вообще перестанет работать!

dan75
19.10.2019, 11:38
Совсем не об этом.
Смотрите рисунок, блинк с временами включено и выключено по 0,001с т.е. 1 мс
А если время цикла будет 7мс? Что будет на выходе этого блинка? Я думаю, что будут импульсы длительностью в один цикл, т.е. не 1 мс, а 7!
Таким образом не выходе счетчика CTN1 будет импульс не через(0,001+0,001) * 50 =0,1с, а через (0,007+0,007) * 50 =0,7с
И при уставке (I2) например 10, насчитает таймер не 10с, а 70!
Класс - погрешность 700% ;)

ЗЫ.
А может при времени цикла > 1мс блин вообще перестанет работать!
Короче говоря, до тех пор, пока не требуется работать с интервалами, соизмеримыми со временем цикла, можно не париться и лепить на генераторах и счётчиках. Так?

Ревака Юрий
20.10.2019, 10:56
Короче говоря, до тех пор, пока не требуется работать с интервалами, соизмеримыми со временем цикла, можно не париться и лепить на генераторах и счётчиках. Так?

Когда-то обсуждали этот момент, нужно вспомнить подробности, там часть таймеров работает по прерыванию, и отрабатывает с заданной выдержкой, но учитывая что это не микроконтроллер и есть еще фильтры, реле на выходе и реакция исполнительного механизма, считать единицы мс смысла особого нет.
Пока сделал еще один, обновленный пример, по работе с таймерами и генераторами с экрана прибора, через Write_to_FB:

https://youtu.be/7XlMjFgQkoA

Pvalp
24.10.2019, 14:03
Спасибо "Сергей0308" ,"petera" и Реваке Юрию, благодаря их подсказкам родился проект продувок клапанов водогрейного котла с отображением обратного отсчета времени в двух вариантах: