PDA

Просмотреть полную версию : Часовой таймер


rate216
03.06.2014, 10:47
Как сделать часовой таймер, чтоб через n часов на выходе появлялась 1 ?

Arsie
03.06.2014, 10:57
Как сделать часовой таймер, чтоб через n часов на выходе появлялась 1 ?

Вас не устраивает готовый из библиотеки (http://forum.segnetics.com/forumdisplay.php?f=34)?

Или вы просто туда не заглядывали? ;)

rate216
03.06.2014, 11:01
Регистратор моточасов?

Arsie
03.06.2014, 11:05
Регистратор моточасов?

Подскажу. Вы спрашивали о таймере. Соответственно ищите таймер.

Sergey Cherevko
03.06.2014, 11:10
Как сделать часовой таймер, чтоб через n часов на выходе появлялась 1 ?
Можно двумя способами:
1.берется текущее время (GetRealTime), к часам добавляется n (ADD(int)), сохраняем в регистр (REG(int)) и сравниваем (CMP(int)) когда текущие часы сравняются с уставкой в регистре.
2.узнаем количество тиков программы в секунде/минуте/часе (TimeToTick), преобразуем в длинное целое (int->long), умножаем полученный период на n*3600/n*60/n (MUL(long)) и каждый тик вычитаем по единичке (SUB(long)). Как довычитаем до нуля - n часов прошло.

Arsie
03.06.2014, 11:15
Можно двумя способами:
1.берется текущее время (GetRealTime), к часам добавляется n (ADD(int)), сохраняем в регистр (REG(int)) и сравниваем (CMP(int)) когда текущие часы сравняются с уставкой в регистре.


Да-да, макрос из библиотеки именно так и делает :)

rate216
03.06.2014, 11:19
А так не получится? Большая точность и энергонезависимая память не нужна

http://forum.segnetics.com/attachment.php?attachmentid=2016&stc=1&d=1401776332

Arsie
03.06.2014, 11:51
А так не получится? Большая точность и энергонезависимая память не нужна


Так сделать можно, вот только погрешность будет до часа. Ведь если вы запустите счёт в 12:59, первый час пройдёт уже через минуту.

rate216
03.06.2014, 11:58
Так сделать можно, вот только погрешность будет до часа. Ведь если вы запустите счёт в 12:59, первый час пройдёт уже через минуту.

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

Sergey Cherevko
03.06.2014, 12:37
Вполне пойдет для смены насосов раз в пару суток. Спасибо за помощь.
Если раз в сутки, то простой пример из трех блоков в прицепе №1.
Если нужна не полночь, то простой пример из четырех блоков в прицепе №2 (в частности 12:34).

Scorpio
04.06.2014, 20:56
Вполне пойдет для смены насосов раз в пару суток. Спасибо за помощь.

Тогда могу предложить уже отработанный макрос для ротации двух устройств.

Arsie
05.06.2014, 11:19
Тогда могу предложить уже отработанный макрос для ротации двух устройств.

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

Sergey Cherevko
05.06.2014, 13:48
Тогда могу предложить уже отработанный макрос для ротации двух устройств.
Я бы в этот макрос добавил проверку работоспособности насосов чтобы не произошла ротация на неисправный насос...

Arsie
05.06.2014, 14:05
Я бы в этот макрос добавил проверку работоспособности насосов чтобы не произошла ротация на неисправный насос...

Могу это повторять бесконечно: "Всегда проще взять макрос обслуживания насосов из Конструктора ИТП. Там, кроме ротации, все остальные нужные сигналы присутствуют".

Что за маниакальное стремление "велосипеды" изобретать, ещё и не учитывая всех сценариев.

Sergey Cherevko
05.06.2014, 16:32
Что за маниакальное стремление "велосипеды" изобретать, ещё и не учитывая всех сценариев.
Вообще-то есть разные задачи и есть разная квалификация программистов.
Кто-то реализует только стандартные задачи с помощью конструкторов, а кто-то реализует нестандартые задачи самостоятельно. Не стоит всех загонять в прокрустово ложе и всех грести под одну гребенку. :nono:
PS: тиражирование созданных конструктором стандартных задач имеет как плюсы, так и минусы.
Плюсы: экономия времени и сил на разработку и отладку.
Минусы: деградация специалиста, не нагружающего свой основной рабочий инструмент - голову. И так весь интернет забит абсолютно недумающими ретрансляторами чужого мнения :(
PPS: хочет человек использовать готовый макрос - пусть использует. А хочет человек сам творить - не стоит его за это осуждать и обзывать маньяком.

Arsie
05.06.2014, 16:44
Вообще-то есть разные задачи и есть разная квалификация программистов.
Кто-то реализует только стандартные задачи с помощью конструкторов, а кто-то реализует нестандартые задачи самостоятельно.

Эх... Так и запишем: нестандартная задача нестандартной ротации нестандартного дубля насосов :)

Sergey Cherevko
05.06.2014, 16:53
Эх... Так и запишем: нестандатртная задача нестандартной ротации нестандартного дубля насосов :)
Арсений, я бы тоже повеселился над Вашей иронией, если бы не совсем свежий пример из практики: при стандартной ротации насосов вылетает в перегрузку по току преобразователь частоты.
Пришлось "маниакально" писать нестандартный макрос.

Arsie
05.06.2014, 17:00
Арсений, я бы тоже повеселился над Вашей иронией, если бы не совсем свежий пример из практики: при стандартной ротации насосов вылетает в перегрузку по току преобразователь частоты.
Пришлось "маниакально" писать нестандартный макрос.

Расскажите, пожалуйста, что было причиной перегрузки по току?

Sergey Cherevko
05.06.2014, 17:23
Расскажите, пожалуйста, что было причиной перегрузки по току?
Причина была в том, что при стандартной ротации "на лету" насос с нулевой скоростью сразу подключался на некую ненулевую и бросок пускового тока, в несколько раз превышающий номинальный, для преобразователя был неприятной неожиданностью.

Arsie
05.06.2014, 17:51
Причина была в том, что при стандартной ротации "на лету" насос с нулевой скоростью сразу подключался на некую ненулевую и бросок пускового тока, в несколько раз превышающий номинальный, для преобразователя был неприятной неожиданностью.

Как макросом проблему решили?

Sergey Cherevko
05.06.2014, 18:15
Как макросом проблему решили?
Проблема решилась макросом, выполняющим последовательность пауза ПИД-регулятора - стоп преобразователя - ротация - пуск преобразователя - снятие паузы ПИД-регулятора.
Перед тем, как ответить на вопрос "я не прав?", хотелось бы услышать, какой именно стандартный макрос из конструктора выполняет эту последовательность.

Arsie
05.06.2014, 18:16
Проблема решилась макросом, выполняющим последовательность пауза ПИД-регулятора - стоп преобразователя - ротация - пуск преобразователя - снятие паузы ПИД-регулятора.
Перед тем, как ответить на вопрос "я не прав?", хотелось бы услышать, какой именно стандартный макрос из конструктора выполняет эту последовательность.

Всего-то нужно было вывести сигнал остановки ПЧ наружу. И всё. И регулятору паузу дать. Штатный макрос переделывать не нужно.

Sergey Cherevko
05.06.2014, 18:24
Всего-то нужно было вывести сигнал остановки ПЧ наружу. И всё. И регулятору паузу дать. Штатный макрос переделывать не нужно.
А там и всего лишь выведен наружу сигнал остановки. Плюс пауза регулятора. Плюс необходимые задержки. Плюс контроль а-ля обратная связь. Плюс диагностика. Всего лишь...
И какая экономия времени и сил от использования стандартного макроса как части последовательности? Только честно!

Arsie
05.06.2014, 18:27
А там и всего лишь выведен наружу сигнал остановки. Плюс пауза регулятора. Плюс необходимые задержки. Плюс контроль а-ля обратная связь. Плюс диагностика. Всего лишь...

Какая диагностика? Единственное, что нужно - это стоп частотнику, можно тупо параллельно включению пускателей и паузу регулятору. Всё.

На самом частотнике настроить остановку выбегом и работу с отсекающим пускателем. Если не умеет - отключить проверку потери двигателя.

Sergey Cherevko
05.06.2014, 18:54
Какая диагностика? Единственное, что нужно - это стоп частотнику, можно тупо параллельно включению пускателей и паузу регулятору. Всё.

На самом частотнике настроить остановку выбегом и работу с отсекающим пускателем. Если не умеет - отключить проверку потери двигателя.
До начала пуско-наладки все так и было.
Как стало после пусконаладки - я выше написал.
Умение уходить от заданных вопросов я тоже оценил :smile:

Arsie
05.06.2014, 19:14
До начала пуско-наладки все так и было.
Как стало после пусконаладки - я выше написал.
Умение уходить от заданных вопросов я тоже оценил :smile:

А что уходить. Штатный макрос я бы и не трогал. Если нужны контролируемый останов-запуск, то это всё внешней обвеской делается.

Всю нужную логику макрос делает, мимо неё не пройти при любом раскладе.

djaval
07.06.2014, 00:57
А у меня недавно была проблема, что при ротации насосов вставал в аварию чиллер. Это происходило потому, что сперва отключался работающий насос, а сразу за этим запускался резервный. В результате возникало мгновение, когда расход был близок к нулю (пока второй насос не разогнался), и на чиллере срабатывала встроенная защита по расходу.

Пришлось делать так, чтобы сперва запускался второй насос и через 2 секунды отключался первый - чтобы не прерывался расход воды через чиллер...

Arsie
08.06.2014, 11:42
А у меня недавно была проблема, что при ротации насосов вставал в аварию чиллер. Это происходило потому, что сперва отключался работающий насос, а сразу за этим запускался резервный. В результате возникало мгновение, когда расход был близок к нулю (пока второй насос не разогнался), и на чиллере срабатывала встроенная защита по расходу.

Пришлось делать так, чтобы сперва запускался второй насос и через 2 секунды отключался первый - чтобы не прерывался расход воды через чиллер...

Случаев разных миллион может быть. Где-то, два насоса, работающие параллельно, создадут гидроудар. Где-то нет. А где-то создадут, но программист этого не заметит, а эксплуатация будет недовольна потом всю жизнь.

Всё в нашем мире взаимосвязано. Я бы ротацию осуществлял в тот момент, когда чиллер выключает компрессор и проводил бы её с остановкой чиллера.

Но, опять же, переделки макроса ваш случай не требует. Причём совсем. Чиллеру нужна кратковременная прокачка теплоносителя после остановки, т.е. на выключение насоса нужно ставить задержку. Эта же задержка органично устроит и перекрывание работы насосов при ротации.

Scorpio
08.06.2014, 13:43
Я бы в этот макрос добавил проверку работоспособности насосов чтобы не произошла ротация на неисправный насос...
Этот макрос лишь маленький кусочек программы. Вы думаете для чего на входе макроса есть входы "Reset" и "Останов счета"?

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

Sergey Cherevko
09.06.2014, 11:13
Этот макрос лишь маленький кусочек программы. Вы думаете для чего на входе макроса есть входы "Reset" и "Останов счета"?
Я думаю, что "Reset" нужен для принудительного переключения на 2й насос при неисправности 1го. А "Останов счета" нужен для отмены ротации по всяким разным причинам, часть из которых могут быть неисправности насосов.
А еще я думаю, что этот макрос даже с внешней обвязкой без танцев с бубнами не сможет принудительно переключиться на 1й насос при неисправности 2го, о чем я выше и написал.

djaval
14.06.2014, 23:53
Но, опять же, переделки макроса ваш случай не требует. Причём совсем. Чиллеру нужна кратковременная прокачка теплоносителя после остановки, т.е. на выключение насоса нужно ставить задержку. Эта же задержка органично устроит и перекрывание работы насосов при ротации.

Ну да, в итоге так и сделал :) Хотя по началу пытался мудрить... )) Кстати, так часто бывает: мудришь-мудришь, а решение оказывается совсем простое и на поверхности :smile:

ViS
19.06.2014, 15:57
Вот у меня тоже чиллер падает в ошибку при переключении насосов по ротации из-за провала протока... Включать два насоса нельзя. Соответственно алгоритм при ротации должен быть таким:
- наступило время Ч (смены насосов)
- на чиллер подается команда останова
- насос молотит еще 5 минут (время остановки чиллера, если выключить насос раньше, до полной остановки чиллера - падает в ошибку, сброс только вручную на чиллере)
- остановка работающего насоса
- запуск второго насоса
-команда на включение чиллера

Как это реализовать внешней обвязкой стандартного макроса?
Может уже торможу, переработав, но что-то не соображу :)

Arsie
19.06.2014, 16:51
Вот у меня тоже чиллер падает в ошибку при переключении насосов по ротации из-за провала протока... Включать два насоса нельзя. Соответственно алгоритм при ротации должен быть таким:
- наступило время Ч (смены насосов)
- на чиллер подается команда останова
- насос молотит еще 5 минут (время остановки чиллера, если выключить насос раньше, до полной остановки чиллера - падает в ошибку, сброс только вручную на чиллере)
- остановка работающего насоса
- запуск второго насоса
-команда на включение чиллера

Как это реализовать внешней обвязкой стандартного макроса?
Может уже торможу, переработав, но что-то не соображу :)

Честно говоря, просто и банально. Главное - научиться отличать алгоритм от шелухи.

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

Но все они строятся по одной и той же формуле, которая описывает любую прямую. Это формула kx+b.

Именно коэффициенты задают, как будет проведена эта прямая. Не нужно каждый раз придумывать свою формулу. Достаточно найти коэффициенты.

Так и в вашей задаче. Вам нужен АВР + ротация. Всяческие задержки - это коэффициенты. Не более.

Смотрите прилагаемый рисунок.

ViS
19.06.2014, 17:51
Мде... Воровать - так миллион, тормозить - так стояночным... :)
Спасибо!

Надо выспаться...


P.S. Еще лет несколько назад Арсений старательно убеждал нас, что If...EndIf это зло и ну его нафиг, а тут оно вот оно :)

Arsie
19.06.2014, 18:25
P.S. Еще лет несколько назад Арсений старательно убеждал нас, что If...EndIf это зло и ну его нафиг, а тут оно вот оно :)


И зачем тут условное выполнение? :scratch_o

ViS
19.06.2014, 18:58
Судя по тому, как оно стоит в макросе, осмелюсь предположить, что вы его туда поставили в целях экономии процессорного времени при отключенном контуре :)

Arsie
19.06.2014, 19:00
Судя по тому, как оно стоит в макросе, осмелюсь предположить, что вы его туда поставили в целях экономии процессорного времени при отключенном контуре :)

Ну так-то да. Но для 2Gi это неактуально. Как и для всех будущих наших контроллеров.

Костыль, одним словом.

ViS
19.06.2014, 19:09
а для Пикселя или 2G?