Страница 801 из 888 ПерваяПервая ... 301701751791799800801802803811851 ... ПоследняяПоследняя
Показано с 8,001 по 8,010 из 8878

Тема: ВОПРОС-ОТВЕТ (отвечаем на простые вопросы от новичков)

  1. #8001

    По умолчанию

    Всем доброго дня. Есть такая тема. Мне нужно подсчитывать количество импульсов с энкодера в плк -150 за 1 секунду. Программа работает, но количество импульсов плавает, нет стабильности подсчета. Тогда я заменил энкодер на ФБ BLINK, результат тот же самый. Количество импульсов плавает, не т стабильности подсчета. С чем это может быть связано и если есть возможность как уйти от этого? Программку прилагаю.Вложение 51034

  2. #8002
    Пользователь
    Регистрация
    31.07.2013
    Адрес
    Аркаим
    Сообщений
    1,038

    По умолчанию

    Предполагаемая максимальная частота импульсов какая?

  3. #8003

    По умолчанию

    Добрый день, Такой вопросик. Если я использую библиотеки, значит мне конфигурировать модули в области ввода вывода ПЛК не нужно и наоборот? Правильно я понял?

  4. #8004

    По умолчанию

    Цитата Сообщение от Sulfur Посмотреть сообщение
    Предполагаемая максимальная частота импульсов какая?
    500 импульсов на оборот

  5. #8005

    По умолчанию

    Цитата Сообщение от Sulfur Посмотреть сообщение
    Предполагаемая максимальная частота импульсов какая?
    500 импульсов в секунду

  6. #8006
    Пользователь
    Регистрация
    31.07.2013
    Адрес
    Аркаим
    Сообщений
    1,038

    По умолчанию

    В спецификации ПЛК указано что до 1000Гц. Но есть сомнения, так как нет аппаратных счетчиков, а программа (один цикл скана) должна выполняться за 1 мс с учетом времени на служебные нужны ПЛК.
    Можно попробовать сделать свой ФБ
    VAR_In
    In:bool; Счетный вход.
    Reset (Global): bool; Сброс счетчика.
    ---
    Var_Out
    Out:WORD (или DWORD); Результат счета.
    ----
    Var_Global
    Old_In:bool; Предыдущее состояние входа.
    ====
    IF Reset THEN Out:=0; Reset:=FALSE; END_IF; Обнуляем счет по условию, сбрасываем флаг сброса.
    IF In<>Old_In THEN Old_In:=In; Out:=(Out+1)/2; END_IF; Если состояние входа изменилось, то инкрементируем счетчик. Деление на 2 потому что будут считаться как передние фронты, так и задние.
    ---------
    В ПЛЦ ПРГ
    VAR Imp: DWORD; Количество импульсов в секунду.
    Тащим на поляну наш ФБ.
    1. Делаем постоянно работающий блинк с периодом верх\них по 500мс.
    2. По переднему фронту блинка через R_TRIG считываем в переменную Imp из Оut сделанного ФБ, а так же делаем Reset ФБ = TRUE (он сбросится при вызове ФБ)

    В результате получаем количество импульсов в секунду.
    Но стабильности высокой ожидать не стоит, ибо скоростной счет не для данного ПЛК.
    ===========
    Ну или как вариант в вашей проге поменять ТР10 на блинк с периодом верх\них по 500мс, и возможно вместо F_TRIG10 поставить R_TRIG.

  7. #8007

    По умолчанию

    Цитата Сообщение от Валенок Посмотреть сообщение
    Значит принятый на работу в техподдержку чел еще не ознакомился с матчастью.
    Modbus RTU over TCP это конкретная реализация. Овен-плк в конфиге - не поддерживает.

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

    Пишу с телефона. Проект отправить не могу.

  8. #8008

    По умолчанию

    Цитата Сообщение от Sulfur Посмотреть сообщение
    В спецификации ПЛК указано что до 1000Гц. Но есть сомнения, так как нет аппаратных счетчиков, а программа (один цикл скана) должна выполняться за 1 мс с учетом времени на служебные нужны ПЛК.
    Можно попробовать сделать свой ФБ
    VAR_In
    In:bool; Счетный вход.
    Reset (Global): bool; Сброс счетчика.
    ---
    Var_Out
    Out:WORD (или DWORD); Результат счета.
    ----
    Var_Global
    Old_In:bool; Предыдущее состояние входа.
    ====
    IF Reset THEN Out:=0; Reset:=FALSE; END_IF; Обнуляем счет по условию, сбрасываем флаг сброса.
    IF In<>Old_In THEN Old_In:=In; Out:=(Out+1)/2; END_IF; Если состояние входа изменилось, то инкрементируем счетчик. Деление на 2 потому что будут считаться как передние фронты, так и задние.
    ---------
    В ПЛЦ ПРГ
    VAR Imp: DWORD; Количество импульсов в секунду.
    Тащим на поляну наш ФБ.
    1. Делаем постоянно работающий блинк с периодом верх\них по 500мс.
    2. По переднему фронту блинка через R_TRIG считываем в переменную Imp из Оut сделанного ФБ, а так же делаем Reset ФБ = TRUE (он сбросится при вызове ФБ)

    В результате получаем количество импульсов в секунду.
    Но стабильности высокой ожидать не стоит, ибо скоростной счет не для данного ПЛК.
    ===========
    Ну или как вариант в вашей проге поменять ТР10 на блинк с периодом верх\них по 500мс, и возможно вместо F_TRIG10 поставить R_TRIG.
    Спасибо, буду пробовать

  9. #8009

    По умолчанию

    Добрый вечер, вопрос такого характера:
    Во время выполнения программы, имеется несколько одинаково названных выходов. При выполнении программы, наблюдаю такую картину . Линия связи выхода FB или просто блока становится синей, соответственно выход отработал, но выходной блок подсоединенный к нему, не становятся активным TRUE. Проблема в неправильном порядке выполнении программы?
    Выполнял расстановку в соответствии с топологическом порядке, эффекта 0.Программа написана на CFC codesys 2.3

  10. #8010

    По умолчанию

    Цитата Сообщение от Миронов Илья Посмотреть сообщение
    ...
    Выполнял расстановку в соответствии с топологическом порядке, эффекта 0.Программа написана на CFC codesys 2.3
    ПКМ на рабочем поле -> Порядок -> В соответствии с потоком данных

Страница 801 из 888 ПерваяПервая ... 301701751791799800801802803811851 ... ПоследняяПоследняя

Метки этой темы

Ваши права

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