Страница 3 из 4 ПерваяПервая 1234 ПоследняяПоследняя
Показано с 21 по 30 из 33

Тема: Работа CTN внутри макросов

  1. #21

    По умолчанию

    Я бы не стал тратить на записи о времени квитирования наши виртуальные ячейки памяти. У нас их и так кот наплакал. Поэтому 0 на входе не приводит к перезаписи.

    Стекообразный лог аварий -- это даже в чём-то проще. Лично я вижу это так: Когда при присутствии разрешающего сигнала En меняется значение входа I, оно записывается в первую ячейку и в следующем цикле буферизируется. Ежели значение на входе I поменялось (но не на 0), оно так же пишется в первую ячейку, а в остальные ячейки прописывается содержимое буферов предыдущих ячеек.

    Счётчик CTN1 считает количество аварий.Кста, флаг запуска на входе En как раз и нужен для правильной работы этого счётчика. Плохо только, что не записывается авария, ежели она присутствовала на входе при включении ПР. Но это решаемо.

    Счётчик CTN2 нужен для листания аварий по импульсам на входе L. Т.к. у нас стек, последняя авария всегда находится в ячейке f0.Поэтому сброс этого счётчика всегда выводит последнюю аварию. Сброс происходит при поступлении на вход новой аварии, очистке памяти или принудительно по входу R (например, по переменной перхода на экран).

    Вход Clr по идее должен был полностью очищать память, потом я посчитал, что достаточно очистить первую ячейку и сбросить счётчики. Скажем так, память этот вход стирает, но не форматирует, хе.

    Мой макрос RCTU -- это реверсивный инкрементный счётчик с возможностью автосброса и изменения уставки. Вот тут, правда, сказали, что не работает, хе. Один глюк нашёл, но в нашем случае он, как говорится, на скорость не влияет. Он нужен для того, чтобы при листании списка не отображать пустые ячейки.
    Вывод на экран осуществляется с помощью выходов Q и n. Q -- код аварии, n -- порядковый номер. При этом листание осуществляется от записи с максимальным номером до 1.
    Как-то так.
    Вложения Вложения

  2. #22

    По умолчанию

    PS: Вашу финальную версию посмотрел, но на ПР не тестил.

  3. #23
    Пользователь
    Регистрация
    27.11.2011
    Адрес
    Краснодар
    Сообщений
    10,583

    По умолчанию

    гляну как объект доделаем, сейчас уже времени нет. стек я делал на 8 ячеек кажется, не помню. Ну либо как вариант, что писал выше, использовать стек от Сергей308 на 32 ячейки.

    для существующего варианта можно добавить второй экран и раскидывать побитно все аварии. Но основная его цель, это компактность и передача по сети, а так как в Scada можно любые биты вытащить, абсолютно все равно что CD32 показывает на экране только старшую ошибку. ну и в Scada легко можно проверять 1970 год и ничего не делать, ну либо код 0 - нет ошибки, тоже ничего не делать.

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

  4. #24

    По умолчанию

    Ежели так рассуждать, какой смысл при наличии скады вообще вести лог в ПР? В скаде и памяти хоть попой кушай, и возможности несравнимы с ПРовскми. Читай ошибки с ПР и формируй журнал как нравится. Другое дело -- автономный режим. По описанному мной алгоритму работают многие автономные устройства. И, кста, на автономных контроллерах возможность очистки журнала как раз-таки есть.

  5. #25
    Пользователь
    Регистрация
    27.11.2011
    Адрес
    Краснодар
    Сообщений
    10,583

    По умолчанию

    Делать полноценный журнал ошибок на ПР это издевательство над его памятью. По этому и искал компактное решение. Ну и чтобы решение не зависело от периода опроса. Оно иногда специально может быть с большим периодом. Например опрос каждые 15 минут на удаленном объекте. А там, мы знаем точное время возникновения ошибки.. В общем как раз из всех этих соображений и делалось.

    Другой момент, Scada читает постоянно, но в базу пишется раз в минуту. а событие в ПР моет появиться между записью в БД...

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

  6. #26

    По умолчанию

    Ну а почему тогда очистка не нужна? Прочитали скадой, какие ошибки накопились с момента предыдущего опроса, да и обнулили список в ПР. Тоже ведь вариант.

  7. #27
    Пользователь
    Регистрация
    27.11.2011
    Адрес
    Краснодар
    Сообщений
    10,583

    По умолчанию

    А смысл? Ячейки памяти от этого не освободятся, только станут нулями. Да и полезно для обслуживающего персонала по месту, без всяких Scada. Или или так сказать. Если грамотно все организовать при работе с экраном.

  8. #28

    По умолчанию

    А пожалуй, что и так. При условии, что у нас запоминается время аварии. Есть ведь устройства, которые записывают просто сам факт аварии. Тогда, понятное дело, обнуляю список сразу после того, как прочитал, чтобы потом не путаться.
    Ну и, кста, есть у меня пара дешёвых-сердитых схем диспетчеризации, где ПР выступает в роли удалённого прибора, читая МВ110 на 16 входов и пару ТРМов. И никаких скад и даже панелей. Вот туда-то я при случае лог, наверно, и запихну.
    Последний раз редактировалось dan75; 08.12.2019 в 12:37.

  9. #29
    Пользователь
    Регистрация
    27.11.2011
    Адрес
    Краснодар
    Сообщений
    10,583

    По умолчанию

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

    Добавлен второй экран. Переходы с Главного экрана ОК - в Журнал Аварий, ESC - возврат к главному экрану
    В Журнале Аварий ОК - переход на Экран расшифровки, ESC - Возврат к Журналу Аварий, SEL и далее Стрелка Вверх - смена номера списка Журнала по кругу в сторону уменьшения то есть у нас 4, круг 4, 3, 2, 1, 0, 8, 7 и так далее (не хватает управления кнопками чтобы и туда и сюда можно было крутить)

    На стек бы переделать и с большим количеством записей, но чтобы память не увеличилась от того что есть... Некогда пока ковырять...
    По идее при отсутствии новой Аварии и листании на экране ПР в сеть передается последняя Дата + Код аварии. Дата в формате UTC

    Добавил версию 6, использовал макрос EEPROM32 от Сергей0308 правда покрошил его до 16 бит. Так как количество аварий ограничено 16-тью. Для сохранения времени просто используется два макроса и один для ошибок. Пробовал так же использовать макрос стека, но при его использовании мигает экран и еще какой-то был косяк.
    На простом EEPROM поведение лучше. За счет этих урезаний снизил потребляемые ресурсы. Да. В версии 5, забыл в параметрах макроса Лога включить параметр Сохр.Write = Да. Чтобы ПР мог сохранять ошибки после выключения, не стирая уже созданные.
    Вложения Вложения
    Последний раз редактировалось melky; 13.04.2020 в 13:53.

  10. #30

    По умолчанию

    Цитата Сообщение от melky Посмотреть сообщение
    dan75 спасибо за помощь. Окультурил, протестил на ПР. Моя вполне удовлетворен
    Главное что по сети я увижу и битовую маску ошибок и время ее возникновения.
    з.ы. можно убрать проверку на ноль внутри макроса, тогда можно видеть и время снятия ошибки соответственно.

    Время бы только победить, и фиг бы с ними, с 4-мя регистрами...

    В проекте полноценный макрос (з.ы. макросы, не относящиеся к макросу Alarm_log не удалял из проекта, так что экспорт, импорт в новый проект перенесут только нужное). Ну и пример настроенного экрана аварий. Все остальное почистил.
    Здравствуйте,как з.ы. можно убрать проверку на ноль внутри макроса, тогда можно видеть и время снятия ошибки соответственно.

Страница 3 из 4 ПерваяПервая 1234 ПоследняяПоследняя

Похожие темы

  1. Обсуждение макросов для OWEN Logic
    от Ревака Юрий в разделе Среда программирования OWEN Logic
    Ответов: 737
    Последнее сообщение: 24.02.2024, 09:54
  2. Не появляются именя макросов в блоке ФБ
    от smashrod в разделе Среда программирования OWEN Logic
    Ответов: 4
    Последнее сообщение: 30.03.2019, 10:52
  3. Локальная база макросов.
    от SF_Axel в разделе Среда программирования OWEN Logic
    Ответов: 40
    Последнее сообщение: 05.03.2017, 21:54
  4. Ошибка онлайн базы макросов
    от Владимир Геннадьевич в разделе Программируемые реле
    Ответов: 11
    Последнее сообщение: 04.07.2016, 12:35
  5. Отображение имён входов у макросов
    от Владимир Ситников в разделе Среда программирования OWEN Logic
    Ответов: 15
    Последнее сообщение: 06.04.2016, 18:40

Ваши права

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