Страница 2 из 2 ПерваяПервая 12
Показано с 11 по 20 из 20

Тема: Fast Counter - баг в овеновской документации или в моей голове?

  1. #11
    Пользователь Аватар для A.Simonov
    Регистрация
    11.07.2017
    Адрес
    Москва
    Сообщений
    623

    По умолчанию

    Цитата Сообщение от Иван Иванович С Посмотреть сообщение
    Подскажите, пожалуйста, - у меня счетчик (Fast Counter) тоже не сбрасывается после обращения к переменной из Конфигурации. Ни в начале ни в конце цикла - просто копит до переполнения. Кто-нибудь решил эту проблему?
    На сколько я помню сброс не предусмотрен.
    Предполагается, что в коде проекта вы заводите свою переменную, и сбрасываете туда дельту показаний счетчика, между циклами ПЛК.

    Александр Андреевич Симонов
    Инженер по продуктам «ПЛК, модули и OwenCloud»

    Не работаю в ОВЕН с 01.07.22
    По всем вопросам обращайтесь на почту: support@owen.ru

  2. #12

    По умолчанию

    На сколько я помню сброс не предусмотрен.
    Предполагается, что в коде проекта вы заводите свою переменную, и сбрасываете туда дельту показаний счетчика, между циклами ПЛК.
    На ПЛК 160 счетчик сбрасывался сам при чтении переменной привязанной в конфигураторе, а теперь на ПЛК 160 [M02] пришлось сделать костыль с разностью значений между циклами. И при переполнении счетчика требуется еще контролировать чтобы кракозябра не получилась.

  3. #13
    Пользователь
    Регистрация
    23.09.2008
    Адрес
    Центророссийск
    Сообщений
    2,318

    По умолчанию

    .............
    Последний раз редактировалось Валенок; 25.10.2021 в 22:19.

  4. #14

    По умолчанию

    Просто должно работать и так с аппаратным сбросом счетчика. Или не должно? Почему тогда это не появилось в описании переноса прошивки с ПЛК 160 на ПЛК 160 [M02]?

  5. #15
    Пользователь Аватар для A.Simonov
    Регистрация
    11.07.2017
    Адрес
    Москва
    Сообщений
    623

    По умолчанию

    Цитата Сообщение от Иван Иванович С Посмотреть сообщение
    пришлось сделать костыль с разностью значений между циклами.
    Добрый день.

    Это как раз не костыль.
    Это правильная работа со счетчиком.

    Вы просто пишете такой код:
    ВашСчетчик := ВашСчетчик + (ПоказанияСчетчикаВЭтомЦикле - ПоказанияСчетчикаВПрошломЦикле);

    При необходимости увеличения диапазона счетчика (до 4 294 967 295) можно сделать его типом DWORD и тогда код будет таким:
    ВашСчетчик := ВашСчетчик + WORD_TO_DWORD(ПоказанияСчетчикаВЭтомЦикле - ПоказанияСчетчикаВПрошломЦикле);

    Цитата Сообщение от Иван Иванович С Посмотреть сообщение
    И при переполнении счетчика требуется еще контролировать чтобы кракозябра не получилась.
    Кракозябрам взяться не от куда. Допустим счетчик переполнился и мы имеет такие значения для расчета дельты:

    ПоказанияСчетчикаВПрошломЦикле (Тип WORD) — 65500
    ПоказанияСчетчикаВЭтомЦикле (Тип WORD) — 100

    Посчитаем дельту, учитывая что оба значения типа WORD:
    100 - 65500 = 100 + (0 - 65500 - 35) + 35 = 100 + (0 - 65535) + 35 = 100 + 1 + 35 = 136
    т.е. 36 импульсов вызвали переполнение счетчика, и еще 100 сверху.

    Пруф:
    2021-09-23_10-40-30.png

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

    Александр Андреевич Симонов
    Инженер по продуктам «ПЛК, модули и OwenCloud»

    Не работаю в ОВЕН с 01.07.22
    По всем вопросам обращайтесь на почту: support@owen.ru

  6. #16

    По умолчанию

    Спасибо большое!
    Кракозябры пропали. В исходном проекте показания счетчика WORD сразу использовались для расчета с переменными REAL плюс домножение на масштабный коэффициент. Вынес расчет дельты между циклами в отдельную строчку где все промежуточные переменные перевел на WORD. А в оконном фильтре где завожу результат добавил WORD_TO_REAL и все стало красиво.

    Просто странно - на старом ПЛК 160 счетчик сам сбрасывался. "Не было ни единого разрыва!"(с) ))))

  7. #17

    По умолчанию

    Цитата Сообщение от Иван Иванович С Посмотреть сообщение
    Спасибо большое!
    Кракозябры пропали. В исходном проекте показания счетчика WORD сразу использовались для расчета с переменными REAL плюс домножение на масштабный коэффициент. Вынес расчет дельты между циклами в отдельную строчку где все промежуточные переменные перевел на WORD. А в оконном фильтре где завожу результат добавил WORD_TO_REAL и все стало красиво.

    Просто странно - на старом ПЛК 160 счетчик сам сбрасывался. "Не было ни единого разрыва!"(с) ))))
    Ничего странного. В старом ПЛК использовался программный счётчик с максимальной частотой 3-10кГц. А в новом отдельный сопроцессор жесткого реального времени с частотой обработки сигналов до 500кГц. В первом случаем сброс успевал осуществляться за те 100 мкс, а сейчас за 1 мкс не успеет - вот и не сбрасывается
    Тролль-наседка, добрый, нежный и ласковый

  8. #18
    Пользователь Аватар для A.Simonov
    Регистрация
    11.07.2017
    Адрес
    Москва
    Сообщений
    623

    По умолчанию

    Цитата Сообщение от Иван Иванович С Посмотреть сообщение
    Просто странно - на старом ПЛК 160 счетчик сам сбрасывался. "Не было ни единого разрыва!"(с) ))))
    Немного изменили логику работы счетчика, видимо.
    Не помню уже как раньше было Давно уже не работал с ПЛК в старом исполнении

    P.S. В актуальной версии руководства по программированию работа описана именно так, как обсуждали выше.

    Александр Андреевич Симонов
    Инженер по продуктам «ПЛК, модули и OwenCloud»

    Не работаю в ОВЕН с 01.07.22
    По всем вопросам обращайтесь на почту: support@owen.ru

  9. #19

    По умолчанию

    Цитата Сообщение от Филоненко Владислав Посмотреть сообщение
    Ничего странного. В старом ПЛК использовался программный счётчик с максимальной частотой 3-10кГц. А в новом отдельный сопроцессор жесткого реального времени с частотой обработки сигналов до 500кГц. В первом случаем сброс успевал осуществляться за те 100 мкс, а сейчас за 1 мкс не успеет - вот и не сбрасывается
    Вот - это то что я хотел понять! Спасибо большое!

    У нас большой проект для серийного изделия давно написанный на аутсорсе под старый ПЛК 160. Теперь его самостоятельно портируем на ПЛК [M02], все сделали согласно "Инструкции по переносу". В итоге не заработали только счетчики. И библиотека SysComLib. ComService работает без проблем.

    ОФФТОП:
    SysComOpen не открывает порт RS-232. Открываем порт ComServiсe-ом. Но почему-то SysComWrite и SysComRead работают нормально по Port_Handle получаемым библиотекой ComService. Мы бы заменили полностью, но у нас особый протокол - не ModBus для порта RS-232. Структура формируется побайтно. Существует ли альтернатива SysLibCom?

  10. #20
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,224

    По умолчанию

    Цитата Сообщение от Иван Иванович С Посмотреть сообщение
    Вот - это то что я хотел понять! Спасибо большое!

    У нас большой проект для серийного изделия давно написанный на аутсорсе под старый ПЛК 160. Теперь его самостоятельно портируем на ПЛК [M02], все сделали согласно "Инструкции по переносу". В итоге не заработали только счетчики. И библиотека SysComLib. ComService работает без проблем.

    ОФФТОП:
    SysComOpen не открывает порт RS-232. Открываем порт ComServiсe-ом. Но почему-то SysComWrite и SysComRead работают нормально по Port_Handle получаемым библиотекой ComService. Мы бы заменили полностью, но у нас особый протокол - не ModBus для порта RS-232. Структура формируется побайтно. Существует ли альтернатива SysLibCom?
    ComServiсe это надстройка над SysComLib для открытия/закрытия порта, можете открыть эту библиотеку и так же портировать, то что считаете необходимым из неё, либо пользоваться совместно и SysComLib и ComService
    Альтернативой является UNM.lib
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

    среди успешных людей я не встречала нытиков
    Барбара Коркоран

Страница 2 из 2 ПерваяПервая 12

Похожие темы

  1. Создание документации
    от АлексPetr в разделе Трёп (Курилка)
    Ответов: 11
    Последнее сообщение: 20.02.2011, 10:32
  2. Как запустить Counter 16bit[VAR]
    от kpv8 в разделе ПЛК1хх
    Ответов: 3
    Последнее сообщение: 02.07.2010, 14:46
  3. запутался в документации
    от klochkov в разделе ПЛК1хх
    Ответов: 4
    Последнее сообщение: 27.05.2010, 11:35
  4. По Овеновской библиотеке PID ?
    от mar154 в разделе ПЛК1хх
    Ответов: 5
    Последнее сообщение: 28.10.2008, 12:32
  5. FREQ_MEASURE И COUNTER В PLC150
    от YURI в разделе ПЛК1хх
    Ответов: 2
    Последнее сообщение: 01.03.2007, 04:03

Ваши права

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