IPB

Здравствуйте, гость ( Вход | Регистрация )

2 страниц V   1 2 >  
Ответить в эту темуОткрыть новую тему
> FX/Q - Эффективное использование таймеров
acoustik
сообщение 3.08.2014 - 13:22
Сообщение #1


Гигант мысли
****

Группа: Пользователи
Сообщений: 408
Регистрация: 3.08.2014
Пользователь №: 10311



Здравствуйте, уважаемые Знатоки!
Суть вопроса: имееться несколько (много) входных сигналов, по примеру, представленному на скриншоте ниже. Необходимо выборочно (некоторые) из этих сигналов пропускать через таймер, т.е. выход должен сработать через опр. интервал времени. Как видим на скриншоте - входов всего 16. Но что делать, если их будет, скажем, штук 200? Несмотря на то, что таймеров как-бы хватает, но не прикручивать же каждому входу отдельный таймер? Кажется что это не идеальное решение...
Вопрос: как наименее затратно организовать работу таймера(ов), возможно через DUT и прочие уловки?

Прикрепленный файл  ______1.PNG ( 30.64 килобайт ) Кол-во скачиваний: 44


--------------------
There are only 10 types of people in the world — those who understand binary, and those who don't.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
inntele
сообщение 3.08.2014 - 17:15
Сообщение #2


Гуру
******

Группа: Пользователи
Сообщений: 1000
Регистрация: 19.08.2009
Пользователь №: 9149



Тут отыщете пример, как это реализуется.


--------------------
Мозг любого человека работает круглосуточно. Но мозг инженера отличается тем, что способен при этом проанализировать задачу, синтезировать несколько техничных ее решений, а затем выбрать из этих решений наилучшее.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
acoustik
сообщение 3.08.2014 - 20:28
Сообщение #3


Гигант мысли
****

Группа: Пользователи
Сообщений: 408
Регистрация: 3.08.2014
Пользователь №: 10311



Цитата(inntele @ 3.08.2014 - 23:15) *
Тут отыщете пример, как это реализуется.

Хм, весьма хороший пример, inntele. (Object Control). Вы использовали DUT со вложенными FB. Я изучил данное решение, но пока не хватает ума прикрутить это к моему вопросу. Если не трудно, можно по шагам? ) А еще, мне кажется, что в Вашем примере возникнет ошибка обработки, связанная со временем цикла. Или это только кажется...


--------------------
There are only 10 types of people in the world — those who understand binary, and those who don't.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
inntele
сообщение 3.08.2014 - 21:02
Сообщение #4


Гуру
******

Группа: Пользователи
Сообщений: 1000
Регистрация: 19.08.2009
Пользователь №: 9149



Цитата(acoustik @ 3.08.2014 - 22:28) *
Цитата(inntele @ 3.08.2014 - 23:15) *
Тут отыщете пример, как это реализуется.

Хм, весьма хороший пример, inntele. (Object Control). Вы использовали DUT со вложенными FB. Я изучил данное решение, но пока не хватает ума прикрутить это к моему вопросу. Если не трудно, можно по шагам? ) А еще, мне кажется, что в Вашем примере возникнет ошибка обработки, связанная со временем цикла. Или это только кажется...


Это кажется.
К вашему вопросу пример соотносится следующим образом. Товарищу хронически не хватало доступных таймеров, соответственно, я продемонстрировал на примере, как обойтись всего одним. Пример был направлен на то, чтобы показать прием использования одного таймера (а равно - счетчика) при реализации в программе множества идентичных друг другу процедур, а не то, как вообще следует писать программы. Если прочтете весь топик, Вы это увидите.


--------------------
Мозг любого человека работает круглосуточно. Но мозг инженера отличается тем, что способен при этом проанализировать задачу, синтезировать несколько техничных ее решений, а затем выбрать из этих решений наилучшее.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
acoustik
сообщение 3.08.2014 - 23:01
Сообщение #5


Гигант мысли
****

Группа: Пользователи
Сообщений: 408
Регистрация: 3.08.2014
Пользователь №: 10311



Цитата(inntele @ 4.08.2014 - 03:02) *
Это кажется.
К вашему вопросу пример соотносится следующим образом. Товарищу хронически не хватало доступных таймеров, соответственно, я продемонстрировал на примере, как обойтись всего одним. Пример был направлен на то, чтобы показать прием использования одного таймера (а равно - счетчика) при реализации в программе множества идентичных друг другу процедур, а не то, как вообще следует писать программы. Если прочтете весь топик, Вы это увидите.


Топик то прочел, но.... Управляя тысячью нагревателями Вы все это сокрыли во вложенных FB... А Вы уверены, что Fault_Timer реально отрабатывает заданный промежуток времени? Решение весьма прагматичное, должен отметить.


--------------------
There are only 10 types of people in the world — those who understand binary, and those who don't.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
inntele
сообщение 4.08.2014 - 07:00
Сообщение #6


Гуру
******

Группа: Пользователи
Сообщений: 1000
Регистрация: 19.08.2009
Пользователь №: 9149



Цитата(acoustik @ 4.08.2014 - 01:01) *
Цитата(inntele @ 4.08.2014 - 03:02) *
Это кажется.
К вашему вопросу пример соотносится следующим образом. Товарищу хронически не хватало доступных таймеров, соответственно, я продемонстрировал на примере, как обойтись всего одним. Пример был направлен на то, чтобы показать прием использования одного таймера (а равно - счетчика) при реализации в программе множества идентичных друг другу процедур, а не то, как вообще следует писать программы. Если прочтете весь топик, Вы это увидите.


Топик то прочел, но.... Управляя тысячью нагревателями Вы все это сокрыли во вложенных FB... А Вы уверены, что Fault_Timer реально отрабатывает заданный промежуток времени? Решение весьма прагматичное, должен отметить.


Разумеется. Работоспособность алгоритма проверена. Если там и присутствуют ошибки, то они незначительные.
В том, что программа функционирует надлежащим образом, можете удостовериться сами. Причем от использования циклов можно отказаться, применив функциональные блоки в режиме макрокода. В свою очередь, это позволит сделать сам код у функциональных блоков существенно короче, так как в этом случае отпадает необходимость предварительно осуществлять выборку из массивов, а после обработки переписывать обновленные данные обратно в массив: входное значение Zone_Num функционального блока будет задаваться уже не переменной, а соответствующей константой, и фактические адреса ячеек будут автоматически вычислены и подставлены в исполняемый код по значению Zone_Num. Что нужно предпринять, чтобы этот вариант реализовать, расписано мною в том же топике.
Если же проверку проводить без переписывания, то достаточно всего лишь сократить количество циклов с тысяч до охватываемого глазом, к примеру, до 3-4-5-6-7-8. Пример с использованием циклов был дан с единственной целью - показать как можно экстремально сократить размер программы, ибо для топикстартера это представляло вторую проблему.

P.S. Вы напрасно концентрируете внимание на вложенных FB. К Вашему вопросу этот прием никакого отношения не имеет и на работоспособность программ абсолютно никакого влияния не оказывает.

Сообщение отредактировал inntele - 4.08.2014 - 07:08


--------------------
Мозг любого человека работает круглосуточно. Но мозг инженера отличается тем, что способен при этом проанализировать задачу, синтезировать несколько техничных ее решений, а затем выбрать из этих решений наилучшее.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
acoustik
сообщение 4.08.2014 - 10:54
Сообщение #7


Гигант мысли
****

Группа: Пользователи
Сообщений: 408
Регистрация: 3.08.2014
Пользователь №: 10311



Ну... теоретически да, вроде бы похоже, что программа рабочая. Вот только надо подумать как бы так ее слегка видоизменить, чтоб понаблюдать за процессом. Сократить кол-во циклов как вариант.
И я так понимаю, что без применения DUT не обойтись (в случае с таймером) ? И можно ли в данном случае в качестве уставки времени применить индексированную переменную, как это скажется на работе блока в целом? (к примеру, у некоторых выходов разные интервалы времени, не один, как в Вашем примере [D5004] ).

Сообщение отредактировал acoustik - 4.08.2014 - 10:58


--------------------
There are only 10 types of people in the world — those who understand binary, and those who don't.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
inntele
сообщение 4.08.2014 - 11:05
Сообщение #8


Гуру
******

Группа: Пользователи
Сообщений: 1000
Регистрация: 19.08.2009
Пользователь №: 9149



Цитата(acoustik @ 4.08.2014 - 12:54) *
Ну... теоретически да, вроде бы похоже, что программа рабочая. Вот только надо подумать как бы так ее слегка видоизменить, чтоб понаблюдать за процессом. Сократить кол-во циклов как вариант.
И я так понимаю, что без применения DUT не обойтись (в случае с таймером) ?


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


--------------------
Мозг любого человека работает круглосуточно. Но мозг инженера отличается тем, что способен при этом проанализировать задачу, синтезировать несколько техничных ее решений, а затем выбрать из этих решений наилучшее.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
inntele
сообщение 4.08.2014 - 11:08
Сообщение #9


Гуру
******

Группа: Пользователи
Сообщений: 1000
Регистрация: 19.08.2009
Пользователь №: 9149



Индексированную нельзя. Команда работы с таймером не поддерживает работу с индексированными переменными.*

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



Сообщение отредактировал inntele - 7.08.2014 - 08:32


--------------------
Мозг любого человека работает круглосуточно. Но мозг инженера отличается тем, что способен при этом проанализировать задачу, синтезировать несколько техничных ее решений, а затем выбрать из этих решений наилучшее.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
acoustik
сообщение 4.08.2014 - 11:21
Сообщение #10


Гигант мысли
****

Группа: Пользователи
Сообщений: 408
Регистрация: 3.08.2014
Пользователь №: 10311



Цитата(inntele @ 4.08.2014 - 17:05) *
... Важно здесь только одно: до выполнения блока таймера перезаписать ему текущее значение из соответствующей ячейки памяти, а после его выполнения это значение сохранить в той же самой ячейке.

Хм... А можно понагляднее, если не трудно? )


--------------------
There are only 10 types of people in the world — those who understand binary, and those who don't.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
acoustik
сообщение 4.08.2014 - 11:24
Сообщение #11


Гигант мысли
****

Группа: Пользователи
Сообщений: 408
Регистрация: 3.08.2014
Пользователь №: 10311



Цитата(inntele @ 4.08.2014 - 17:05) *
DUT решают вопрос унификации и легкого построения идентичных процедур. Тогда как один и тот же таймер может быть использован в функциональных блоках совершенно разных по наполнению.

Ну а в основном суть я уловил, в каком направлении копать. Буду мыслить... ) Спасибо за пример!


--------------------
There are only 10 types of people in the world — those who understand binary, and those who don't.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
inntele
сообщение 4.08.2014 - 11:44
Сообщение #12


Гуру
******

Группа: Пользователи
Сообщений: 1000
Регистрация: 19.08.2009
Пользователь №: 9149



Цитата(acoustik @ 4.08.2014 - 13:21) *
Цитата(inntele @ 4.08.2014 - 17:05) *
... Важно здесь только одно: до выполнения блока таймера перезаписать ему текущее значение из соответствующей ячейки памяти, а после его выполнения это значение сохранить в той же самой ячейке.

Хм... А можно понагляднее, если не трудно? )


acoustik, в примере единственный таймер TIMER_100_FB_M. Находится он в функциональном блоке FB_Heater. Выше ФБ таймера в его значение ValueIn записывается значение из нужной ячейки хранящей значение таймера для соответствующей переменной после предыдущей обработки тем же таймером, а по завершении выполнения этого блока текущее значение с выхода ValueOut перезаписывается обратно в ячейку.


--------------------
Мозг любого человека работает круглосуточно. Но мозг инженера отличается тем, что способен при этом проанализировать задачу, синтезировать несколько техничных ее решений, а затем выбрать из этих решений наилучшее.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
acoustik
сообщение 4.08.2014 - 11:52
Сообщение #13


Гигант мысли
****

Группа: Пользователи
Сообщений: 408
Регистрация: 3.08.2014
Пользователь №: 10311



Цитата(inntele @ 4.08.2014 - 17:44) *
acoustik, в примере единственный таймер TIMER_100_FB_M. Находится он в функциональном блоке FB_Heater. Выше ФБ таймера в его значение ValueIn записывается значение из нужной ячейки хранящей значение таймера для соответствующей переменной после предыдущей обработки тем же таймером, а по завершении выполнения этого блока текущее значение с выхода ValueOut перезаписывается обратно в ячейку.


Это я вроде понял. Иными словами, поправьте если не прав, получается что прошедшее время (Fault Time) n-ного выхода (нагревателя) записалось в ячейку, затем обработался следующий выход и т.д. А потом, когда по циклу опять обрабатывается этот n-ный выход, значение (накопленное) времени записывается в ValueIn таймера и отсчет продолжается уже с этого значения?

Сообщение отредактировал acoustik - 4.08.2014 - 11:55


--------------------
There are only 10 types of people in the world — those who understand binary, and those who don't.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
inntele
сообщение 4.08.2014 - 12:03
Сообщение #14


Гуру
******

Группа: Пользователи
Сообщений: 1000
Регистрация: 19.08.2009
Пользователь №: 9149



Цитата(acoustik @ 4.08.2014 - 13:52) *
Это я вроде понял. Иными словами, поправьте если не прав, получается что прошедшее время (Fault Time) n-ного выхода (нагревателя) записалось в ячейку, затем обработался следующий выход и т.д. А потом, когда по циклу опять обрабатывается этот n-ный выход, значение (накопленное) времени записывается в ValueIn таймера и отсчет продолжается уже с этого значения?


Именно так.


--------------------
Мозг любого человека работает круглосуточно. Но мозг инженера отличается тем, что способен при этом проанализировать задачу, синтезировать несколько техничных ее решений, а затем выбрать из этих решений наилучшее.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
acoustik
сообщение 4.08.2014 - 12:08
Сообщение #15


Гигант мысли
****

Группа: Пользователи
Сообщений: 408
Регистрация: 3.08.2014
Пользователь №: 10311



А еще, inntele, хотя немного не по теме, можете подтвердить следующее: в cpu system Q, к примеру, имеются входы X0, X1 ... Xn. И выходы Y0, Y1 ... Yn уже использовать нельзя. Нужно продолжать нумерацию Yn+1 и т.д. Верно ли это? Где то я про это читал, но не помню где и не могу найти, но в памяти отложилось что то подобное...


--------------------
There are only 10 types of people in the world — those who understand binary, and those who don't.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения

2 страниц V   1 2 >
Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия Сейчас: 18.04.2024 - 06:33