PDA

Просмотр полной версии : Энергонезависимость универсального счетчика CTN



Borserg
21.06.2021, 13:07
Коллеги, добрый день.

Энергонезависимость универсального счетчика CTN прекрасно работает в режиме прямого счета.
А как быть с обратным счетом?
Ведь значение точки обратного счета N (уставка) записывается в счетчик только по импульсу на его входе R.
После выключения/включения питания для запуска счета в обратном направлении снова надо записать значение уставки, подав импульс на вход R, но оно должно быть
равно уже не началу отсчета, а выходному значению на момент выключения питания. Но промежуточное состояние счетчика в режиме обратного счета не сохраняется.
Как быть?

Ревака Юрий
21.06.2021, 13:30
Коллеги, добрый день.

Энергонезависимость универсального счетчика CTN прекрасно работает в режиме прямого счета.
А как быть с обратным счетом?
Ведь значение точки обратного счета N (уставка) записывается в счетчик только по импульсу на его входе R.
После выключения/включения питания для запуска счета в обратном направлении снова надо записать значение уставки, подав импульс на вход R, но оно должно быть
равно уже не началу отсчета, а выходному значению на момент выключения питания. Но промежуточное состояние счетчика в режиме обратного счета не сохраняется.
Как быть?

Добрый день.

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

Если "промежуточное состояние счетчика в режиме обратного счета не сохраняется.", хотя это очень странно, то можно сохранить в свою переменную, и после перезагрузки подать ее в качестве уставки.
Пример сохраниения по флагу/импульсу есть тут:
https://youtu.be/LrpQqC7F9d4
можно сохранять хоть каждое новое значение.

Borserg
21.06.2021, 13:43
Предваряя справедливые вопросы о том, зачем это нужно, отвечаю.

Проект делаю на ПР100 (нужны всего 4 выхода).
Отсчет времени по секундным импульсам (делаю на BLINK).
При включении должен появиться сигнал на выходах Q1 и Q2 и начаться обратный отсчет времени.
По истечении N1 секунд сигнал на Q2 должен пропасть (сигнал на Q1 сохраняется).
По истечении N2 секунд должен пропасть сигнал на Q1 (т.е. нет сигнала ни на одном из выходов).
По истечении N3 секунд должен появиться сигнал на выходах Q3 и Q4.
По истечении N4=N1 секунд должен пропасть сигнал на Q4 (сигнал на Q3 сохраняется).
По истечении N5=N2 секунд должен пропасть сигнал на Q3 (т.е. нет сигнала ни на одном из выходов).
По истечении N6=N3 секунд цикл повторяется (как с момента включения питания).

Смысл в том, что после выключения/включения питания работа ПР100 должна продолжаться из состояния, в котором реле находилось на момент выключения питания.

Borserg
21.06.2021, 14:22
Добрый день.

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

Если "промежуточное состояние счетчика в режиме обратного счета не сохраняется.", хотя это очень странно

А оно действительно не сохраняется.
Два простейших примера на ИПП120:

Прямой счет:

55651

Считает и сохраняет состояние при выключении/включении питания на реальном "железе", в симуляторе тоже считает нормально.

Обратный счет:

55652

В симуляторе считает в обратную сторону от 65535, на реальном "железе" при запуске "висит" на значении 9999 (я переменную "Счет" вывожу на дисплей ИПП120).

Ревака Юрий
21.06.2021, 14:40
А оно действительно не сохраняется.
на реальном "железе" при запуске "висит" на значении 9999 (я переменную "Счет" вывожу на дисплей ИПП120).

9999 намекает на нехватку разрядов, я думаю там сохранено что-то типа 65530, но из-за 4 разрядов. он не может показать все число, и показывает максимальное для 4 разрядов. Увеличьте кол-во разрядов до 5 на экране.

Сергей0308
21.06.2021, 14:48
А оно действительно не сохраняется.
Два простейших примера на ИПП120:

Прямой счет:

55651

Считает и сохраняет состояние при выключении/включении питания на реальном "железе", в симуляторе тоже считает нормально.

Обратный счет:

55652

В симуляторе считает в обратную сторону от 65535, на реальном "железе" при запуске "висит" на значении 9999 (я переменную "Счет" вывожу на дисплей ИПП120).

Кто Вам мешает, уберите контроль диапазона(ограничение) и в 4 знаках какое максимальное значение может быть? Короче, нет слов!

55654

Borserg
21.06.2021, 14:52
9999 намекает на нехватку разрядов, я думаю там сохранено что-то типа 65530, но из-за 4 разрядов. он не может показать все число, и показывает максимальное для 4 разрядов. Увеличьте кол-во разрядов до 5 на экране.

Вы правы. Увеличил число разрядов до 5 и при обратном счете все заработало (и сохранение тоже).
Но ведь мне надо при первом запуске записать в счетчик значение, отличное от 65535, а сделать это я могу только указав это значение, как уставку в свойствах и подав имульс на вход R.
Но тогда при выключении/включении прибора начальное значение будет перезаписываться импульсом на входе R.
С блоком Write to FB ситуация аналогичная.

Буду думать, как реализовать описанный выше алгоритм.

Borserg
21.06.2021, 14:55
Кто Вам мешает, уберите контроль диапазона(ограничение) и в 4 знаках какое максимальное значение может быть? Короче, нет слов!

55654

Да дело не в выводе на дисплей (уж с этим как-нибудь разобрался бы :)), а с реализацией вышеописанного алгоритма.

Сергей0308
21.06.2021, 15:05
Да дело не в выводе на дисплей (уж с этим как-нибудь разобрался бы :)), а с реализацией вышеописанного алгоритма.

Так пишите уставку при начале(перед началом) обратного отсчёта, зачем Вы пишите при перезагрузке, да ещё и кто-то у Вас виноват, что Вы делаете через заднее место.
Для начала воспользуйтесь другими таймерами, множество таймеров выкладывали на форуме и в менеджере компонентов некоторые есть.

petera
21.06.2021, 15:06
Да дело не в выводе на дисплей (уж с этим как-нибудь разобрался бы :)), а с реализацией вышеописанного алгоритма.

Свой счетчик сделать.
И все дела!

petera
21.06.2021, 15:27
Вот CTN, который ВСЕ считает правильно.
55655

55656

Borserg
21.06.2021, 15:52
Так пишите уставку при начале(перед началом) обратного отсчёта, зачем Вы пишите при перезагрузке, да ещё и кто-то у Вас виноват, что Вы делаете через заднее место.
Для начала воспользуйтесь другими таймерами, множество таймеров выкладывали на форуме и в менеджере компонентов некоторые есть.

Ну зачем же так грубо? Я стараюсь вести себя на форуме корректно и ожидаю такого же поведения от собеседников.
Я разве кого-то виню? А про заднее место ..., лучше промолчу.


Свой счетчик сделать.
И все дела!

Так и планирую сделать.

Borserg
21.06.2021, 15:57
Вот CTN, который ВСЕ считает правильно.
55655

55656

Большое спасибо!

Borserg
21.06.2021, 23:30
Сделал обратный счет двух последовательных счетчиков, сделанных по рецепту petera.
Только энергонезависимой переменной CTN в макросе присвоил значение по умолчанию "20".
А на вход N макроса повесил константу 21, т.к. при значении 20 счет начинается с 19.

55667

Все работает корректно - сначала считает счетчик CTN1 до 0, потом CTN2 до 0, потом снова CTN1 и т.д.
При выключении/включении питания состояние счетчиков сохраняется.
Поэтому без проблем сделаю цепочку из 6 счетчиков для реализации описанного в начале поста алгоритма.

Сергей0308
22.06.2021, 06:24
Сделал обратный счет двух последовательных счетчиков, сделанных по рецепту petera.
Только энергонезависимой переменной CTN в макросе присвоил значение по умолчанию "20".
А на вход N макроса повесил константу 21, т.к. при значении 20 счет начинается с 19.

55667

Все работает корректно - сначала считает счетчик CTN1 до 0, потом CTN2 до 0, потом снова CTN1 и т.д.
При выключении/включении питания состояние счетчиков сохраняется.
Поэтому без проблем сделаю цепочку из 6 счетчиков для реализации описанного в начале поста алгоритма.

Если счётчики работают последовательно - достаточно одного счётчика, короче, не надо кучу счётчиков лепить! Если у Вас две ноги, Вы же не покупаете 40 сапог, может такое сравнение Вам будет понятней!

Borserg
22.06.2021, 10:12
Если счётчики работают последовательно - достаточно одного счётчика, короче, не надо кучу счётчиков лепить! Если у Вас две ноги, Вы же не покупаете 40 сапог, может такое сравнение Вам будет понятней!

Я же описывал алгоритм (https://owen.ru/forum/showthread.php?t=34975&p=358479&viewfull=1#post358479).

Хотелось бы увидеть его реализацию на одном счетчике.
Без конкретного примера Ваше высказывание - не более, чем пустые слова.
Ну и лирические отступления про "заднее место и 40 сапог" здесь совершенно неуместны.
У меня десятки успешно реализованных проектов на ПР200+СП307.
Просто со счетчиками (кроме счетчика часов наработки и сервисного счетчика с обратным отсчетом) не сталкивался.

Василий Кашуба
22.06.2021, 15:58
Предваряя справедливые вопросы о том, зачем это нужно, отвечаю.

Проект делаю на ПР100 (нужны всего 4 выхода).
Отсчет времени по секундным импульсам (делаю на BLINK).
При включении должен появиться сигнал на выходах Q1 и Q2 и начаться обратный отсчет времени.
По истечении N1 секунд сигнал на Q2 должен пропасть (сигнал на Q1 сохраняется).
По истечении N2 секунд должен пропасть сигнал на Q1 (т.е. нет сигнала ни на одном из выходов).
По истечении N3 секунд должен появиться сигнал на выходах Q3 и Q4.
По истечении N4=N1 секунд должен пропасть сигнал на Q4 (сигнал на Q3 сохраняется).
По истечении N5=N2 секунд должен пропасть сигнал на Q3 (т.е. нет сигнала ни на одном из выходов).
По истечении N6=N3 секунд цикл повторяется (как с момента включения питания).

Смысл в том, что после выключения/включения питания работа ПР100 должна продолжаться из состояния, в котором реле находилось на момент выключения питания.
Этот алгоритм называется Командоаппарат.

Сергей0308
22.06.2021, 16:20
У меня есть готовый командоаппарат реального времени на 32 команды 8-ми канальный:

55685

Можно под свои хотелки переделать!

Я его делал 4 года назад, боюсь сейчас бы сделал намного проще и лучше!

И этот проект посмотрите в посте #539: https://owen.ru/forum/showthread.php?t=25067&page=54

И здесь таймер выкладывал в посте #170: https://owen.ru/forum/showthread.php?t=33720&page=17

Короче, приблизительно как-то так:

55698

И это десятки раз подробно обсуждалось в различных темах, надоело повторять одно и тоже:

55699

Или так, с паузой:

55702

55703

Сергей0308
23.06.2021, 10:13
Ну зачем же так грубо? Я стараюсь вести себя на форуме корректно и ожидаю такого же поведения от собеседников.
Я разве кого-то виню? А про заднее место ..., лучше промолчу.



Так и планирую сделать.

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

Borserg
23.06.2021, 14:08
Так этот счётчик принципиально ничем не отличается от универсального счётчика из библиотеки ОЛ, за исключением диапазона счёта, короче, это ничего не изменит, кроме диапазона счёта, ферштейн?
Что за маразм, Вас же не устраивала логика работы этого элемента, а не диапазон счёта?!

Про диапазон счета вообще никто не говорил.
В макросе petera я могу задать начало отсчета заранее, присвоив энергонезависимой переменной CTN значение "по умолчанию". А в универсальном счетчике из библиотеки ОЛ - только по импульсу на входе R. Ферштейн?

Borserg
23.06.2021, 14:23
Этот алгоритм называется Командоаппарат.

Это алгоритм работы адсорбционного осушителя сжатого воздуха английского производства с горячей регенерацией адсорбента, поэтому 4 выхода.
Изначально в нем действительно стоял механический командоаппарат с приводом от моторчика.
Затем производитель выпустил комплект модернизации на базе программируемого реле Mitsubishi Alpha2.
Лет 10 осушитель отработал, но затем Альфа благополучно умерла.
Писать алгоритм для Альфы - занятие неблагодарное, поэтому решил сделать на ПР100 + ИПП120 (ПР200 не влазит на штатное место).

Сергей0308
23.06.2021, 14:29
Про диапазон счета вообще никто не говорил.
В макросе petera я могу задать начало отсчета заранее, присвоив энергонезависимой переменной CTN значение "по умолчанию". А в универсальном счетчике из библиотеки ОЛ - только по импульсу на входе R.

При энергонезависимости счётчика это при работе не будет иметь никакого значения, значение счётчика будет сохранено на момент выключения и ничто не мешает при первом запуске сразу после заливки программы ввести любую уставку, какую захотите, примерно как-то так:

55706

Вы для начала разберитесь как работают(могут работать) элементы из библиотеки ОЛ!
Короче, ближе к делу, чем мой вариант не устраивает? Я и проект выложил!

Borserg
23.06.2021, 15:52
При энергонезависимости счётчика это при работе не будет иметь никакого значения, значение счётчика будет сохранено на момент выключения и ничто не мешает при первом запуске сразу после заливки программы ввести любую уставку, какую захотите, примерно как-то так:

55706

Вы для начала разберитесь как работают(могут работать) элементы из библиотеки ОЛ!
Короче, ближе к делу, чем мой вариант не устраивает? Я и проект выложил!

Уверяю Вас, что работу элементов из библиотеки ОЛ проверяю в режиме симуляции и как они работают знаю.
Выложенный Вами скриншот в последнем посте очень информативный:confused:

Ссылки посмотрю на досуге.
А вообще проект я уже сделал, все работает, как мне надо.
Всем спасибо!

Сергей0308
23.06.2021, 16:02
Уверяю Вас, что работу элементов из библиотеки ОЛ проверяю в режиме симуляции и как они работают знаю.
Выложенный Вами скриншот в последнем посте очень информативный:confused:

Ссылки посмотрю на досуге.
А вообще проект я уже сделал, все работает, как мне надо.
Всем спасибо!

Опять лабуду пишите!
Энергонезависимость не симулируется, мне даже интересно как Вы проверяли, компьютер что ли выключали?
И я про проект толковал, а не скриншот, Вы разницу находите?!

Borserg
23.06.2021, 16:19
Опять лабуду пишите!
Энергонезависимость не симулируется, мне даже интересно как Вы проверяли, компьютер что ли выключали?
И я про проект толковал, а не скриншот, Вы разницу находите?!

Так зачем бессмысленные скриншоты выкладывать, "крутизну" показать?
Мол "не понимаешь, что там показано, нечего тебе тут делать".
Про выключение компьютера: Вы, наверное, считаете себя "высшим существом", еще бы - из Галактики Андромеды.
А ссылку на такую домашнюю страницу, как у Вас, я бы постеснялся обнародовать.
В Вашем проекте (без единого комментария) разобраться можете только Вы сами.
И где пример реализации задачи "на одном счетчике"?

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

Сергей0308
23.06.2021, 16:26
Так зачем бессмысленные скриншоты выкладывать, "крутизну" показать?
Мол "не понимаешь, что там показано, нечего тебе тут делать".
Про выключение компьютера: Вы, наверное, считаете себя "высшим существом", еще бы - из Галактики Андромеды.
А ссылку на такую домашнюю страницу, как у Вас, я бы постеснялся обнародовать.
В Вашем проекте (без единого комментария) разобраться можете только Вы сами.
И где пример реализации задачи "на одном счетчике"?

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

Так Вы ещё и плохо считаете, в проекте сколько таймеров?
И интересно зачем комментарии писать, если ничего не надо делать для симуляции работы, запускаешь симулятор и смотришь, всё!

Borserg
23.06.2021, 16:38
Так Вы ещё и плохо считаете, в проекте сколько таймеров?
И интересно зачем комментарии писать, если ничего не надо делать для симуляции работы, запускаешь симулятор и смотришь, всё!

Ну запустил симулятор, и что?
Для чего сие творение создано?
Даже выходы никак не названы.

Сергей0308
23.06.2021, 18:19
Ну запустил симулятор, и что?
Для чего сие творение создано?
Даже выходы никак не названы.

Так Вы ещё и врунишка, выхода аналогично подписаны как в ТЗ(алгоритме работы) Q1 - Q4 и уставки 1 - 3(в секундах) при необходимости(желании) можно умножить на выходе мультиплексора на 60(3600), тогда уставки станут в минутах(часах)! Ладно, я могу понять, что Вы не в зуб ногой, простого алгоритма не умеете сделать, обращайтесь - поможем, но врать то зачем?!
И, я так понимаю, как Вы только симулятор запускаете у Вас сразу память отшибает, так положите перед собой ТЗ, что Вы написали!

Borserg
23.06.2021, 19:07
Так Вы ещё и врунишка, выхода аналогично подписаны как в ТЗ(алгоритме работы) Q1 - Q4 и уставки 1 - 3(в секундах) при необходимости(желании) можно умножить на выходе мультиплексора на 60(3600), тогда уставки станут в минутах(часах)! Ладно, я могу понять, что Вы не в зуб ногой, простого алгоритма не умеете сделать, обращайтесь - поможем, но врать то зачем?!
И, я так понимаю, как Вы только симулятор запускаете у Вас сразу память отшибает, так положите перед собой ТЗ, что Вы написали!

Вы, вообще, о чем???
Я - про Ваш Командоаппарат реальногого времени с маской недели на 32 команды 8 канальный_00.owl (https://owen.ru/forum/attachment.php?attachmentid=55685&d=1624367926)
Где ссылка на проект по моему ТЗ???
Ваш единственный пост со ссылками на непонятно что здесь (https://owen.ru/forum/showthread.php?t=34975&p=358595&viewfull=1#post358595).

Сергей0308
23.06.2021, 19:26
Вы, вообще, о чем???
Я - про Ваш Командоаппарат реальногого времени с маской недели на 32 команды 8 канальный_00.owl (https://owen.ru/forum/attachment.php?attachmentid=55685&d=1624367926)
Где ссылка на проект по моему ТЗ???
Ваш единственный пост со ссылками на непонятно что здесь (https://owen.ru/forum/showthread.php?t=34975&p=358595&viewfull=1#post358595).

В 18 посте два нижних проекта посмотрите, мне кажется полностью удовлетворяют вашим хотелкам, даже могут их перекрыть в несколько сот раз, просто запустите симулятор и посмотрите, на нижнем можно и паузу в работе сделать(при этом выхода выключаются), для работы надо активировать первый вход(работа/пауза).

55708

Такое в первый раз встречается, чтобы проекты не видели!

Borserg
23.06.2021, 19:47
В 18 посте два нижних проекта посмотрите, мне кажется полностью удовлетворяют вашим хотелкам, даже могут их перекрыть в несколько сот раз, просто запустите симулятор и посмотрите, на нижнем можно и паузу в работе сделать(при этом выхода выключаются), для работы надо активировать первый вход(работа/пауза).

Извините, не понял, что БМП - это для меня :)

Вопрос: а чем Ваш проект (одних макросов - 9 шт.) лучше и проще моего?

Сергей0308
23.06.2021, 20:13
Извините, не понял, что БМП - это для меня :)

Вопрос: а чем Ваш проект (одних макросов - 9 шт.) лучше и проще моего?

Я вроде уже частично описывал: у меня один счётчик(таймер) для всех 6-и шагов программы, у Вас для каждого шага свой! Допустим нам надо в программе иметь 100 шагов, Вы будете 100 таймеров ставить?
Короче, моя программа позволяет иметь до 257 шагов в программе и до 32 выходов, включительно и можно любую логику задать перепрограммированием ПЗУ, у Вас жёсткая логика, при её изменении придётся программу изменять.
Допустим для выполнения нужного алгоритма требуется 500 шагов программы, мне не надо всю программу переделывать, достаточно расширить макрос ПЗУ до 500 шагов, всё!
Надеюсь, понятно объяснил, у меня для ленивых - сделал раз и на века, не надо переделывать!

Borserg
23.06.2021, 20:35
Я вроде уже частично описывал: у меня один счётчик(таймер) для всех 6-и шагов программы, у Вас для каждого шага свой! Допустим нам надо в программе иметь 100 шагов, Вы будете 100 таймеров ставить?
Короче, моя программа позволяет иметь до 257 шагов в программе и до 32 выходов, включительно и можно любую логику задать перепрограммированием ПЗУ, у Вас жёсткая логика, при её изменении придётся программу изменять.
Допустим для выполнения нужного алгоритма требуется 500 шагов программы, мне не надо всю программу переделывать, достаточно расширить макрос ПЗУ до 500 шагов, всё!
Надеюсь, понятно объяснил, у меня для ленивых - сделал раз и на века, не надо переделывать!

Да, все понятно.
Но у меня проект именно "на раз". Если и потребуется его еще применять, то для модернизации такого же осушителя. Так что менять ничего не надо.
Для других проектов применяю Ваш подход. Есть заготовки для ПР200 и СП307, которые потом вставляю в проекты под конкретную задачу.

Сергей0308
26.06.2021, 21:03
Да, все понятно.
Но у меня проект именно "на раз". Если и потребуется его еще применять, то для модернизации такого же осушителя. Так что менять ничего не надо.
Для других проектов применяю Ваш подход. Есть заготовки для ПР200 и СП307, которые потом вставляю в проекты под конкретную задачу.

Если 3-и(или более) уставки периодически повторяются, то можно упростить:

55750

55751

При таком построении можно задавать до 255(кратное трём) шагов программы с циклическим повторением уставок!

И вообще, если мой вариант урезать до уровня ваших хотелок, вам хватит 3 шага программы + Т-триггер для переключения двух пар выходов, то, боюсь, получится на порядок проще вашего, посмотрел ваш вариант, не понимаю чем он проще(по-вашему), мне кажется какой-то каменный век вернулся, для Вас не знаю, почему это проще кажется, наверно потому, что другого не знаете, короче, мне ваш вариант проще не кажется!

55752

55768

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

55786

55807

Вот, ещё один вариант сделал, загнал две уставки в одну переменную:

55869

Наверно не проще выходит из-за преобразований туда-сюда, но тоже может иметь свои плюсы, например при энергонезависимых уставках позволяет уменьшить объём занимаемой энергонезависимой памяти в два раза!

55870

Vladimir F
03.07.2021, 08:51
Здравствуйте окажите помощь. Проблема такая имеется панель оператора СП с неё пишутся уставки для ПР. Проблема в следующем при отключении СП установки обнуляются. Как реализовать память в ПР для сетевой переменной.

bayk
03.07.2021, 10:11
Вы уж простите, почему у вас обнуляются уставки на сп?? Что вы пытаетесь добиться? Сетевые переменные в ПР и так энергонезависимые. Решайте вопросы счтенмя записи в эти переменные в СП

melky
03.07.2021, 12:32
Vladimir F видимо при включении в СП нули и при включении питания она их и записывает в ПР.

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