Просмотр полной версии : Макрос OperTimer
Vyacheslav
04.10.2021, 23:40
Макрос содержит три входные переменные:
ob_on - состояние основного процесса вкл/откл;
st_Sec - системное время в секундах от внутреннего таймера программируемого реле;
cmd_Reset - команда сброса наработки.
На выходе получается время наработки в минутах или часах и количество включений.
На обьекте, раз в несколько недель, самопроизвольно сбрасывается время наработки. В чем может быть причина? cmd_Reset заведена на дискретный вход с задержкой включения TON на 3 сек. Кнопку сброса специально никто не нажимает. Неужели длительные наводки более 3 сек на дискретном входе ПР200-220 при включении оборудования? Или, может быть, системное время в секундах может кратковременно обращаться в ноль?
...Или, может быть, системное время в секундах может кратковременно обращаться в ноль?
Посмотри на часы на руке
0,1,2,..58,59, 0,1,2,..58,59, 0,1,2,..58,59, .....
Только это предположение не имеет значения. Т.к. в ПРке нет никакого системного времени в секундах от внутреннего таймера программируемого реле
Ревака Юрий
05.10.2021, 11:48
Макрос содержит три входные переменные:
ob_on - состояние основного процесса вкл/откл;
st_Sec - системное время в секундах от внутреннего таймера программируемого реле;
cmd_Reset - команда сброса наработки.
На выходе получается время наработки в минутах или часах и количество включений.
На обьекте, раз в несколько недель, самопроизвольно сбрасывается время наработки. В чем может быть причина? cmd_Reset заведена на дискретный вход с задержкой включения TON на 3 сек. Кнопку сброса специально никто не нажимает. Неужели длительные наводки более 3 сек на дискретном входе ПР200-220 при включении оборудования? Или, может быть, системное время в секундах может кратковременно обращаться в ноль?
Самый простой вариант, залить программу без сброса, или блокировать ее с экрана. Выходы в минутах и часах, выход в часах это минуты/60, никакой магии там нет, системное время при переходе в "0" никак не влияет.
Vyacheslav
05.10.2021, 11:50
На всякий случай добавляю программу. Имеет значение только фрагмент напротив входа I5. Этот дискретный вход заведен на кнопку без фиксации. При нажатии на эту кнопку должно происходить обнуление выходной переменной hours макроса OperTimer. Кнопку никто не нажимает, а обнуление происходит (может быть при подаче питания 220В на ПР200?).
Vyacheslav
05.10.2021, 12:01
Юрий, спасибо за предложение. Макрос работает нормально у меня на столе, и, большую часть времени, на обьектах. Однако, через несколько недель, происходит спонтанный сброс наработки в реальных условиях на обьекте. Причины этого сброса непонятны. Ввод кратковременной 3 сек задержки на входе кнопки "сброс" не помогает.
Ревака Юрий
05.10.2021, 12:42
Юрий, спасибо за предложение. Макрос работает нормально у меня на столе, и, большую часть времени, на обьектах. Однако, через несколько недель, происходит спонтанный сброс наработки в реальных условиях на обьекте. Причины этого сброса непонятны. Ввод кратковременной 3 сек задержки на входе кнопки "сброс" не помогает.
А есть еще что-то энергонезависимое в этом проекте?
Vyacheslav
05.10.2021, 13:53
В проекте только две энергонезависимые переменные: lv_ Timer (h) и lv_ Num_ of_Inc или наработка в часах и количество включений. Обе образуются на выходе макроса OperTimer и эпизодически обе сбрасываются в ноль. Сброс отмечается удаленно по OwenCloud. На первом обьекте кнопка сброса была подключена к дискретному входу ПР200 и, далее, ко входной переменной макроса cmd_Reset. Наработка и количество включений иногда обнулялись. На втором обьекте ввел задержку TON 3 сек между дискретным входом ПР100 и макросом (может быть какие-нибудь кратковременные импульсные помехи при включении оборудования замыкают дискретный вход?!). Не помогло...
Ревака Юрий
05.10.2021, 14:51
В проекте только две энергонезависимые переменные: lv_ Timer (h) и lv_ Num_ of_Inc или наработка в часах и количество включений. Обе образуются на выходе макроса OperTimer и эпизодически обе сбрасываются в ноль. Сброс отмечается удаленно по OwenCloud. На первом обьекте кнопка сброса была подключена к дискретному входу ПР200 и, далее, ко входной переменной макроса cmd_Reset. Наработка и количество включений иногда обнулялись. На втором обьекте ввел задержку TON 3 сек между дискретным входом ПР100 и макросом (может быть какие-нибудь кратковременные импульсные помехи при включении оборудования замыкают дискретный вход?!). Не помогло...
Еще бы посмотреть как OwenCloud читает эти регистры, часто вижу как значения которые необходимо только читать, назначают и на запись.
В общем я бы сделал несколько вариантов для контроля:
-сброс запретил через булевую переменную на экране, для возможности ввести в работу когда все таки нужно будет сбросить.
-сделать несколько констант и контролировать их, если это прибор без экрана, то через облако и только читать.
ps с экраном если для ПР100 не подойдет конечно, тогда просто откинуть сброс.
Vyacheslav
05.10.2021, 15:28
В OwenCloud регистры выставлены только на чтение. Запись не разрешена. Конечно, в модификации с ПР200 можно сделать сброс наработки с экрана. Для ПР100 кнопка сброса неизбежна. Если, правда, обнуляется вся энергонезависимая память во время включения оборудования, тогда дело не в кнопках. Может это свойство всех ПР на 220В? Ставить сетевые фильтры? Переходить на 24В? Пока неясно...
Ну у меня с этим макросом проблема другая. У меня они отстают. Я делал проект управления уф лампами с учетом наработки на каждую лампу .При симуляции больше 6 макросов тормозит жутко . И это на 8 Винде и при 16гигах озу.
lord2210
06.10.2021, 07:47
Макрос содержит три входные переменные:
ob_on - состояние основного процесса вкл/откл;
st_Sec - системное время в секундах от внутреннего таймера программируемого реле;
cmd_Reset - команда сброса наработки.
На выходе получается время наработки в минутах или часах и количество включений.
На обьекте, раз в несколько недель, самопроизвольно сбрасывается время наработки. В чем может быть причина? cmd_Reset заведена на дискретный вход с задержкой включения TON на 3 сек. Кнопку сброса специально никто не нажимает. Неужели длительные наводки более 3 сек на дискретном входе ПР200-220 при включении оборудования? Или, может быть, системное время в секундах может кратковременно обращаться в ноль?
Попробуйте повесить на 5 вход нагрузку на 10 кОм, или лампочку светодиодную, контрольку, очень часто на пр200 с наводкой проблемы, а у Вас там ещё наверно и сыро.
Ревака Юрий
06.10.2021, 09:12
Ну у меня с этим макросом проблема другая. У меня они отстают. Я делал проект управления уф лампами с учетом наработки на каждую лампу .При симуляции больше 6 макросов тормозит жутко . И это на 8 Винде и при 16гигах озу.
Я уже второй раз на этом акцентирую внимание, симуляция и реальная работа это разные вещи, там ничего и не должно совпадать, учитывая что Вы самостоятельно задаете период и время цикла в симуляции.
В проекте только две энергонезависимые переменные: lv_ Timer (h) и lv_ Num_ of_Inc или наработка в часах и количество включений. Обе образуются на выходе макроса OperTimer и эпизодически обе сбрасываются в ноль. Сброс отмечается удаленно по OwenCloud. На первом обьекте кнопка сброса была подключена к дискретному входу ПР200 и, далее, ко входной переменной макроса cmd_Reset. Наработка и количество включений иногда обнулялись. На втором обьекте ввел задержку TON 3 сек между дискретным входом ПР100 и макросом (может быть какие-нибудь кратковременные импульсные помехи при включении оборудования замыкают дискретный вход?!). Не помогло...
А как задаются сетевые переменные для Cloud? На скрине не видно.
Vyacheslav
06.10.2021, 14:11
Сетевые переменные просто копируются из локальных, при этом двоичные переменные преобразуются в integer. Прилагаю сходный проект на ПР100.
Наверное, Юрий Ревака прав: могут затираться значения энергонезависимых переменных при помехах по питанию. Длительные наводки, приводящие к закорачиванию дискретного входа, тоже возможны, но кажутся менее вероятными.
Тогда переменные hours и num можно сразу сделать сетевыми и назначить им адреса, которые были у var5 и var6. Возможно, станет стабильнее. А все булевые переменные, кстати, можно собрать в одну; Cloud умеет работать с битовыми масками.
Vyacheslav
07.10.2021, 09:27
Переменная hours используется также в другом месте программы. Подставить вместо нее сетевую не получится.
"Нужно ли упаковывать битовые переменные в integer перед отправкой на сервер OwenCloud?". Когда-то даже хотел создать отдельную тему для обсуждения на форуме. Запаковать, конечно, можно. Однако, на сервере придется распаковывать, т.е считывать integer переменную несколько раз для того чтобы выделить конкретные биты. В итоге трафик не экономится, а задача немного усложняется. Складывать несколько битовых переменных или целых - практически одно и тоже для малых обьемов. Сетевые пакеты дополнительно нужно во что-то оборачивать. В итоге, выиграша от упаковки практически нет.
Ревака Юрий
07.10.2021, 09:58
Переменная hours используется также в другом месте программы. Подставить вместо нее сетевую не получится.
"Нужно ли упаковывать битовые переменные в integer перед отправкой на сервер OwenCloud?". Когда-то даже хотел создать отдельную тему для обсуждения на форуме. Запаковать, конечно, можно. Однако, на сервере придется распаковывать, т.е считывать integer переменную несколько раз для того чтобы выделить конкретные биты. В итоге трафик не экономится, а задача немного усложняется. Складывать несколько битовых переменных или целых - практически одно и тоже для малых обьемов. Сетевые пакеты дополнительно нужно во что-то оборачивать. В итоге, выиграша от упаковки практически нет.
По проекту вроде нет ничего критичного, назначить на вход сразу регистр наработки или через переменную, не думаю что проблема в этом, но можно на выход наработки повесить сетевой и обычный одновременно. На счет упаковки, на таком кол-ве 5 шт. будет экономия трафика небольшая, можно даже без макроса упаковать.
Вот тестовая программка для проверки работы таймера с выводом на экран. На табло выводим минуты: часы для всех восьми таймеров. Для чистоты теста запустите таймеры в одно время например в 12:00 и наслаждайтесь.
Вот тестовая программка для проверки работы таймера с выводом на экран. На табло выводим минуты: часы для всех восьми таймеров. Для чистоты теста запустите таймеры в одно время например в 12:00 и наслаждайтесь.
Так что мы там должны увидеть-то? И ещё: эту программу надобно в симуляторе смотреть или в ПРку заливать?
Переменная hours используется также в другом месте программы. Подставить вместо нее сетевую не получится.
"Нужно ли упаковывать битовые переменные в integer перед отправкой на сервер OwenCloud?". Когда-то даже хотел создать отдельную тему для обсуждения на форуме. Запаковать, конечно, можно. Однако, на сервере придется распаковывать, т.е считывать integer переменную несколько раз для того чтобы выделить конкретные биты. В итоге трафик не экономится, а задача немного усложняется. Складывать несколько битовых переменных или целых - практически одно и тоже для малых обьемов. Сетевые пакеты дополнительно нужно во что-то оборачивать. В итоге, выиграша от упаковки практически нет.
Она используется в блоке индикации наработки из трёх ламп, ага. Не вижу препятствий, чтобы читать значение из сетевой переменной.
Про несколько раз вообще не понял. Переменная считается 1 раз в виде битовой маски, дальше Cloud выделит все нужные биты. Ты же сам отправил в виде маски переменную lamps. Насколь понимаю, Cloud при этом показывает, какие конкретно лампы неисправны.
Что в железе что в симуляторе есть отставание изменения индикации от реального времени.
Что в железе что в симуляторе есть отставание изменения индикации от реального времени.
ОК, будет время -- попробую в железе.
Ревака Юрий
08.10.2021, 10:14
Вот тестовая программка для проверки работы таймера с выводом на экран. На табло выводим минуты: часы для всех восьми таймеров. Для чистоты теста запустите таймеры в одно время например в 12:00 и наслаждайтесь.
Поставил на тест, но так как измерения завязаны на секунды, то возможно нужно сделать корректировку хода, и это проблема конкретного прибора.
Vyacheslav
14.12.2021, 17:32
Макрос оказался ни при чем. Кнопку сброса наработки предполагалось сделать без фиксации. По факту сделали с фиксацией. Оператор ее однажды нажал, а отжимать не стал. Поэтому при каждом включении оборудования нажатая кнопка служила триггером и происходил сброс наработки.
lord2210
21.12.2021, 14:42
Макрос оказался ни при чем. Кнопку сброса наработки предполагалось сделать без фиксации. По факту сделали с фиксацией. Оператор ее однажды нажал, а отжимать не стал. Поэтому при каждом включении оборудования нажатая кнопка служила триггером и происходил сброс наработки.
Самый эпичный финал!!:eek:
Пять баллов ! :D
Всю техподдержку на уши поставил один короткозамкнутый оператор.
Вообще-то, неплохо бы было прикрутить детектор падающего уровня. Тогда пофиг какая кнопка будет.
С фиксацией или без.
А, если процедуру сброса нарисовать поззаковырестее....
Тогда вариантов попадания в подобные ситуации будет поменьше :cool:
Вот тестовая программка для проверки работы таймера с выводом на экран. На табло выводим минуты: часы для всех восьми таймеров. Для чистоты теста запустите таймеры в одно время например в 12:00 и наслаждайтесь. Не работает это у меня. Даже отдельно Open Time, даже переменные SEK, и т.п.
Что не так?
Моделирую в OL Версия 2.2.311.0.
Отдельно CT, STN, STU, и др. работают в модели.
kondor3000
11.11.2022, 20:20
Не работает это у меня. Даже отдельно Open Time, даже переменные SEK, и т.п.
Что не так?
Моделирую в OL Версия 2.2.311.0.
Отдельно CT, STN, STU, и др. работают в модели.
Всё работает, вот скрин симуляции 63788
Время в симуляции идёт медленнее
Всё работает, вот скрин симуляции Время в симуляции идёт медленнее Это понятно.
У меня даже логические уровни на линиях связи не высвечиваются.
Всё остальное на поле работает.
Как я понял, если хоть один элемент в отдельном узле не подключен, то схема этого узла не активна, и не работает.
Но почему, например, просто (сек) направленный в переменную не активен?
63789
kondor3000
11.11.2022, 20:54
Это понятно.
У меня даже логические уровни на линиях связи не высвечиваются.
Всё остальное на поле работает.
Как я понял, если хоть один элемент в отдельном узле не подключен, то схема этого узла не активна, и не работает.
Но почему, например, просто (сек) направленный в переменную не активен?
Сделайте переменную сс энергонезависимой или выведете на экран. Либо подключите куда нибудь, блок должен быть закончен.
Это понятно.
У меня даже логические уровни на линиях связи не высвечиваются.
Всё остальное на поле работает.
Как я понял, если хоть один элемент в отдельном узле не подключен, то схема этого узла не активна, и не работает.
Но почему, например, просто (сек) направленный в переменную не активен?
63789
Ну, так, если переменная нигде в программе не участвует, то нафига узел считать?
Сделайте переменную сс энергонезависимой или выведете на экран. Либо подключите куда нибудь, блок должен быть закончен. Спасибо огромное!!! :)
А то я час не мог разобраться. С ходу трудно охватить ВСЮ логику работы OL...
Ну, так, если переменная нигде в программе не участвует, то нафига узел считать? Я считал что для моделирования этого достаточно.
Всё заработало! :)
Добрый день. Подскажите, пожалуйста, в чем может быть причина.
Макрос заведен в проект и загружен в ПР100+Owencloud.
Очень сильно спешат часы как с самой эмуляции Owenlogic, так и при работе в ПР100. К примеру на 100 минут реального времени, набегает 140 минут в сетевых переменных.
Время контроллера синхронизировал по часам ПК
kondor3000
15.08.2023, 14:53
Добрый день. Подскажите, пожалуйста, в чем может быть причина.
Макрос заведен в проект и загружен в ПР100+Owencloud.
Очень сильно спешат часы как с самой эмуляции Owenlogic, так и при работе в ПР100. К примеру на 100 минут реального времени, набегает 140 минут в сетевых переменных.
Время контроллера синхронизировал по часам ПК
Часы в самой ПР не отличаются точностью, а синхронизация видимо не работает. Макрос тут не при чём, он берёт время в ПР.
Часы в самой ПР не отличаются точностью,.
Общая, но стабильная неточность или "джиттер" периода самих системных секунд ?
(железки нет, но задача появилась)
kondor3000
16.08.2023, 09:49
Общая, но стабильная неточность или "джиттер" периода самих системных секунд ?
(железки нет, но задача появилась)
Тоже нет железки, а жалобы на часы в ПР постоянны ( спешат и отстают), там есть коррекция за месяц, но и она работает непонятно ( и работает ли? ). Проще было сделать возможность синхронизации (коррекции из программы) времени в самой ПР, но и этого нет. По постам, большинство просто забила на показания времени, или корректирует вручную раз в месяц (неделю).
Можно синхронизировать часы только внешним Мастером. Одна из тем- https://owen.ru/forum/showthread.php?t=37859&highlight=%EA%EE%F0%F0%E5%EA%F6%E8%FF+%E2%F0%E5%EC %E5%ED%E8+%CF%D0200
Но в простых проектах, часто нет больше мастера, кроме самой ПР.
Если часы внутри железки спешат/отстают то внутренними средствами их подгонять не получится. Что-то с этим у Овен не задалось. До старых добрых часиков Электроника не дотянули. Там была настройка до 6,2 секунд в день коррекция, работала исправно. з.ы. и да, часы должны быть независимы от времени цикла программы ПР, уж не знаю, как там не железном уровне реализовано.
Остается только коррекция от внешнего источника, другой мастер.
Рогов Алексей
16.08.2023, 14:44
Вот тестовая программка для проверки работы таймера с выводом на экран. На табло выводим минуты: часы для всех восьми таймеров. Для чистоты теста запустите таймеры в одно время например в 12:00 и наслаждайтесь.
Вот теперь моя очередь ругаться, забудьте, пожалуйста, про эти ON -OFF с одной кнопки, про эти недоделанные Т триггеры без строба. А если Вы пресс гидравлический подобным образом управлять надумаете?
Тоже нет железки, а жалобы на часы в ПР постоянны ( спешат и отстают), там есть коррекция за месяц,. .
Не, мне как автокорректор для эрзац-gettickcount
А на нем нормальный ton/tof с мс (и с ET) пильнуть. Суточная неточность даже в десяток минут не страшна, за джиттер переживаю.
Вот тестовая программка для проверки работы таймера с выводом на экран. На табло выводим минуты: часы для всех восьми таймеров. Для чистоты теста запустите таймеры в одно время например в 12:00 и наслаждайтесь.
Запустил, ничего необычного не увидел
69648
Хотя, конечно, мой случай можно отнести к категории "раньше деревья были больше"
После последнего обновления среды OpenTimer отказывается работать на подсчет времени.
kondor3000
31.10.2023, 14:23
После последнего обновления среды OpenTimer отказывается работать на подсчет времени.
Проверил на последней версии, всё работает, скорее всего у вас выходные переменные не энергонезависимые, проверьте. 71252
Проверил на последней версии, всё работает, скорее всего у вас выходные переменные не энергонезависимые, проверьте. 71252
Еще раз проверил, не работает
https://www.youtube.com/shorts/qDaWnQe-HNw
Еще раз проверил, не работает
https://www.youtube.com/shorts/qDaWnQe-HNw
Макрос рабочий, это эмулятор при таком ускорении не успевает за секундами. Поставьте, 500 мс цикла и 10 мс периода
Powered by vBulletin® Version 4.2.3 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot