SIEMENS, DF&PD

Предыдущее посещение: Чт июл 07, 2016 17:56 Текущее время: Чт июл 07, 2016 17:56

Часовой пояс: UTC + 3 часа




 [ Сообщений: 18 ] 
Автор Сообщение
 Заголовок сообщения: помогите с таймерами....
СообщениеДобавлено: Чт июл 14, 2011 14:14 
Не в сети
Новый писатель

Зарегистрирован: Чт июл 14, 2011 14:08
Сообщения: 18
пробую накидать универсальный блок(в LADе). В блоке используется таймер, вот под него нужна некая переменная in-out( дабы таймер не обнулялся каждый раз). Есть у кого пример или на пальцах объясните. Поиск по документации не дали результата....


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт июл 14, 2011 15:14 
Не в сети
Известный Писатель

Зарегистрирован: Чт мар 08, 2007 17:11
Сообщения: 336
Откуда: Киров - - Вятка - - Хлынов
Самое простое - передавать во внутрь функции номер таймера.
Изображение
Если функция в программе будет вызываться лишь несколько раз, это сработает (таймеров хватит). Номер таймера при вызове функции (в ОВ1, например) каждый раз будет разный, и обнуляться они не будут.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт июл 14, 2011 15:52 
Не в сети
Новый писатель

Зарегистрирован: Чт июл 14, 2011 14:08
Сообщения: 18
спасибо.
а можно усложнить? ваше решение приемлемо, но влечёт за собой изначальное объявление таймеров. А вот если бы они сами объявлялись в FC...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт июл 14, 2011 22:38 
Не в сети

Зарегистрирован: Пт янв 29, 2010 8:21
Сообщения: 7
Откуда: Чебоксары
Таймер и так не обнуляется вообще-то если сделать все правильно... Главное чтобы функция с таймером выполнялась каждый цикл. Если ты включаешь-отключаешь функцию по входу EN, то после отключения через этот вход таймер перестает считать.
А вообще желательно поконкретнее что вам нужно...
Часто то что никак не удается получить какими-то заумными способами решается элементарно. :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср июл 20, 2011 6:23 
Не в сети
Известный Писатель

Зарегистрирован: Вт июл 06, 2010 11:44
Сообщения: 315
Откуда: Газ-Система-Сервис Пермь
системные таймеры - в топку.
велосипед, что вам нужен, уже изобретен и не раз.
ищите по форуму и найдете.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср мар 14, 2012 13:30 
Не в сети
Новый писатель

Зарегистрирован: Пн мар 12, 2012 20:35
Сообщения: 33
а можно как-то объявить таймер в функции так, что бы он был доступен только локально в этой функции?

Например, в функции используется таймер T1. Функция вызывается в программе 5 раз. Но во всех 5-ти вызываемый функциях используется таймер Т1. Хотелось бы чтобы функция работала только со своим локальным таймером.. что-то типа - в первой функции Т1.1, 2-й - Т1.2, 3-й - Т1.3, 4-й - Т1.4, 5-й - Т1.5. (но не передавая в функцию номер таймера так как предлагалось выше mva-78)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср мар 14, 2012 14:51 
Не в сети
Писатель со стажем

Зарегистрирован: Ср мар 03, 2010 12:59
Сообщения: 698
Откуда: Одесса
если работаешь с системными таймерами, то так, как ты хочешь - нельзя. Таймер, будучи запущен, считает уставку времени и после окончания прохождения блока, если конечно ты ему ресет не делаешь. А иначе какой в нем смысл?
так, как ты хочешь, возможно будет с функциями SBF4 (TON) и SFB5 (TOFF), ну и конечно же под каждый вызов свой экземплярный блок
Или оперировать системным временем и считать пройденнын секунды от запуска программного таймера,
или как тут некоторые показывали, складывать на каждом цикле прошлое время скана и опираться на эти суммы как на пройденное время.
В любом случае так, как ты хочешь обойтись с системным таймером формата T[Timer_Number] - не получится


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср мар 14, 2012 15:34 
Не в сети
Новый писатель

Зарегистрирован: Пн мар 12, 2012 20:35
Сообщения: 33
fatman писал(а):
если работаешь с системными таймерами, то так, как ты хочешь - нельзя. Таймер, будучи запущен, считает уставку времени и после окончания прохождения блока, если конечно ты ему ресет не делаешь. А иначе какой в нем смысл?
так, как ты хочешь, возможно будет с функциями SBF4 (TON) и SFB5 (TOFF), ну и конечно же под каждый вызов свой экземплярный блок
Или оперировать системным временем и считать пройденнын секунды от запуска программного таймера,
или как тут некоторые показывали, складывать на каждом цикле прошлое время скана и опираться на эти суммы как на пройденное время.
В любом случае так, как ты хочешь обойтись с системным таймером формата T[Timer_Number] - не получится


Если использовать SFB4(5), то каждому такому SFB нужно задавать DB. Если бы была функция SFС (аналог SFB4(5)), для которой ничего задавать не нужно??? тогда этот вариант подошел бы.
А так (используя совет с системным временем) придется создать свои FC таймеров TON, TOF используя системное время..


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср мар 14, 2012 15:52 
Не в сети
Писатель со стажем

Зарегистрирован: Ср мар 03, 2010 12:59
Сообщения: 698
Откуда: Одесса
а в чем затруднение с DB? религиозные какие-то моменты?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср мар 14, 2012 15:56 
Не в сети
Новый писатель

Зарегистрирован: Пн мар 12, 2012 20:35
Сообщения: 33
fatman писал(а):
а в чем затруднение с DB? религиозные какие-то моменты?


нет))), просто в случае с системными таймерами, каждой вызываемой функции нужно отправлять Timer_Number.

а тут придется каждой вызываемой функции указывать DB_number

или я чего-то не понимаю?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср мар 14, 2012 16:01 
Не в сети
Писатель со стажем

Зарегистрирован: Ср мар 03, 2010 12:59
Сообщения: 698
Откуда: Одесса
и даже не просто указывать DB_Number, а еще и генерировать саму ДБ как минимум. Вобщем тебе и вправду проще работать с калькуляцией от системного цикла или времени, если ты так уж сильно хочешь универсализировать свою функцию. Но вот какая штука - тебе надо где-то хранить эти числа от цикла к циклу. Где хранить собираешься? Я вижу на скрине, что ты тулишь это все в FC, а в ней нет области памяти переменных. А значит тебе надо переходить на FB и instance DB (черт, опять эти DB :) ), или использовать системную меркерную память для временного хранения пройденного времени, а это уже опять-таки не универсально.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср мар 14, 2012 16:30 
В сети
Это точно не человек

Зарегистрирован: Чт фев 16, 2006 12:27
Сообщения: 7512
Откуда: Украина
Если функции вызывать не в OB1, а в OB с постоянным интервалом между вызовами (OB35, к примеру), то таймеры можно заменить счётчиками:-)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср мар 14, 2012 20:15 
Не в сети
Новый писатель

Зарегистрирован: Пн мар 12, 2012 20:35
Сообщения: 33
Пишу свою функцию таймера TON
http://pixs.ru/showimage/pic1PNG_6600146_4275367.png

Дальше нужно сравнить PT_time и SUB_time - и на выходе получу сигнал, что таймер сработал. Они в формате TIME, а функции сравнения форматов TIME не нахожу, так же не нахожу функций преобразования формата TIME в какой-то другой формат.

может вообше есть вариант по проще?)))


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт мар 15, 2012 7:22 
Не в сети
Написал больше чем Вы читали

Зарегистрирован: Вс фев 26, 2006 21:44
Сообщения: 1688
Откуда: Липецк, ОАО "НЛМК"
Eugene1974 писал(а):
OB с постоянным интервалом между вызовами

Можно, только осторожно - смотрите систему приотритетов при вызове OB и прерываний.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт мар 15, 2012 11:39 
В сети
Это точно не человек

Зарегистрирован: Чт фев 16, 2006 12:27
Сообщения: 7512
Откуда: Украина
Это Вы уже в дебри полезли, уважаемый Негатив:-)
Не думаю, что здесь обсуждаются таймеры, отсчитывающие время с высокой точностью. Потеря нескольких миллисекунд или даже десятых долей секунды - ИМХО, ничего страшного, если речь идёт о контроле времени открытия задвижки-баттерфляя, например.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт мар 15, 2012 12:10 
Не в сети
Написал больше чем Вы читали

Зарегистрирован: Вс фев 26, 2006 21:44
Сообщения: 1688
Откуда: Липецк, ОАО "НЛМК"
А вот если о расчёте расхода или скорости - то влияние будет гораздо более серьёзным.
В любом случае, спросившему следует знать об этом.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт мар 15, 2012 12:46 
В сети
Это точно не человек

Зарегистрирован: Чт фев 16, 2006 12:27
Сообщения: 7512
Откуда: Украина
Безусловно, следует.
Но для начала спросившему не мешало бы полистать раздел букваря про функции и функциональные блоки, особенно про их отличия друг от друга:
Buuu писал(а):
а можно как-то объявить таймер в функции так, что бы он был доступен только локально в этой функции?

Например, в функции используется таймер T1. Функция вызывается в программе 5 раз. Но во всех 5-ти вызываемый функциях используется таймер Т1. Хотелось бы чтобы функция работала только со своим локальным таймером.. что-то типа - в первой функции Т1.1, 2-й - Т1.2, 3-й - Т1.3, 4-й - Т1.4, 5-й - Т1.5. (но не передавая в функцию номер таймера так как предлагалось выше mva-78)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт мар 30, 2012 11:05 
Не в сети
Новый писатель

Зарегистрирован: Чт июл 14, 2011 14:08
Сообщения: 18
Очень приятно что тема жива и развивается.

Поставленную задачу решил другим более изящным способом (не исмользуя системные таймеры). Честно говоря даже не помню задачу.Давно было.

Всем спасибо.Тему удалить.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
 [ Сообщений: 18 ] 

Часовой пояс: UTC + 3 часа


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 8


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения

Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group