Страница 299 из 1042 ПерваяПервая ... 199249289297298299300301309349399799 ... ПоследняяПоследняя
Показано с 2,981 по 2,990 из 10414

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

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

    По умолчанию

    Вопрос по циклу ПЛК.
    выставил когда-то мин 10 мс, на данный момент по статистики выполнение в 100 мкс - 9-10, свободно из расчета 1 мкс - 9ххх (так понимаю в районе 9 мс).
    Свободное время учитывается во времени цикла ?, то есть программа отработала за 1 мс , 9 мс курит и начинается новый цикл ?

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

    По умолчанию

    что же тут t
    очепятка. Пусть будет t0 : time;
    то есть программа отработала за 1 мс , 9 мс курит и начинается новый цикл ?
    Да. Новый цикл начинает по окончанию текущего, но не ранее МинЦ
    В IF таймер надо явно сбрасывать tm(in:=false), иначе фигня какая-то получается периодом
    И тогда нет смыcла в "not tm.q", просто true

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

    По умолчанию

    Валенок с таймером сообразил, просто делал сброс чуть по другому.

    Так а как коррелируется тогда time_to_real(time() - t0) вот здесь
    интеграл := интеграл + ai * time_to_real(time() - t0) / 1000;
    t := time();
    К соотношению часа ?
    приход стал равен 1, мы считали время и отняли 0 (самый первый опрос) и потом запомнили время в переменной t0. И что у нас в расчете за первый опрос, если ПЛК не перегружался ? или такого косяка не должно быть при обновлении программы или просто вносит необходимость выполнять перезапуск ?
    Ну и все равно необходимо вычислять соотношение периода опроса к часу. если раз в секунду опрос, то это 1/3600, если 0,5 с то 1/7200 и т.д.

    Глупый вопрос, опрос переменной из Modbus контроллер выполняет только в начале/конце цикла основной программы ?
    И еще один, таймер ведь будет сброшен физически только на следующем цикле программы ?

  4. #2984
    Пользователь
    Регистрация
    12.07.2007
    Адрес
    Воронеж
    Сообщений
    883

    По умолчанию

    Цитата Сообщение от petera Посмотреть сообщение

    ЗЫ. К стати в примере из http://www.owen.ru/forum/showthread....l=1#post143814

    Ошибка должно быть так
    Код:
    TM(in:=NOT TM.q, pt:=t#1s);
    IF NOT TM.q THEN
    A:=A+IN/X;
    END_IF
    Если таймер это TON, то я подразумевал подсчет при срабатывании таймера. Т.е. каждую секунду производится сложение.

    И еще один, таймер ведь будет сброшен физически только на следующем цикле программы ?
    Таймер должен сбросится при проходе цикла через его инициализацию, т.е. TM(in:=NOT TM.q, pt:=t#1s);

    P.S.
    Уже прочитал))

    P.P.S.
    Кстати, по поводу цикла контроллера.
    Был объект - упаковщик.
    Необходимо было по метке на пленке, тормозить саму пленку.
    В теории все просто - увидел метку послал сигнал на тормоз, пленка остановилась.

    Так вот ПЛК110 постоянно останавливал пленку в разных местах (+-1см), хотя программа была из одной строки, и в теории цикл всегда одинаковый, метка видится хорошо, но остановка плавала.
    Бились над этим долго, перешли на схему от Итальянцев, с использованием реле для остановки - все стало тютелька в тютелюку. (Но остановкой уже заведует реле, а не ПЛК)

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

    По умолчанию

    Непомню уже с чем было связано, но я сперва проверяю условие на выход таймера, а после него само выполнение таймера (про ton говорю, др. не пользуюсь)

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

    По умолчанию

    Вот и я думаю, что все же лучше опрашивать через конфигуратор задач строго раз в секунду, все же от накопления погрешности от цикла программы избавляемся.

  7. #2987
    Пользователь
    Регистрация
    13.10.2011
    Адрес
    Златоуст
    Сообщений
    1,021

    По умолчанию

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

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

    По умолчанию

    Yegor программа будет со временем расти. Мне вот интересно, таймеры в CDS являются системными или работают строго по циклам программы ? они вообще учитывают время перекура цикла ?

    Так вот и интересно, насколько влияет опрос вызова таймера в каждом цикле.

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

    По умолчанию

    Таймеры никак не привязаны к циклам. Например ton поднимается при вызове, но не ранее чем прошло заданный интервал времени. Не ранее.
    Минц 100мс, ton.pt 150мс => Отработка ton через 200мс. При этом в ET будет [U]150.[/U
    Так как проверять не хочется, то при
    период:=time()-t0;
    t0:=time();
    период не зависит от PT таймера.

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

    По умолчанию

    Блин, перезалил удаленно программу, на всякий случай сделал "Создание загрузочного проекта" и ресетнул ПЛК. Оба модуля ввода отвалились
    Питание передернуть смогу только приехав домой. Вопрос, вылечить удаленно можно ?

    Валенок может немного не так выражаюсь.
    Вот пример. Минц=10 мс
    Есть команды ТМ(in:=true, pt:=t#1s)
    и есть условие IF TM.Q Then
    бла-бла-бла
    TM(in:=false)
    End_if

    Когда сбросится в данном случае таймер ? - сразу ?, а запустится он когда ? - только на чтении строки ТМ(in:=true, pt:=t#1s) ?, то есть между сбросом и запуском пройдет целый цикл ?

Страница 299 из 1042 ПерваяПервая ... 199249289297298299300301309349399799 ... ПоследняяПоследняя

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

Ваши права

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