Показано с 1 по 8 из 8

Тема: Непонятки с TON

  1. #1

    По умолчанию Непонятки с TON

    Изучаю потихоньку CoDeSys.Разбираюсь с таймерами.
    наткнулся на непонятный трабл. Из двух последовательно запускаемых
    таймеров один никак не хочет начинать отсчет,хотя .M, .StartTime, .IN, .PT, - устанавливаются, а отсчет .ET не идет.

    может кто объяснит почему Вар1 примера не работает, а Вар.2 работает.
    а то уже совсем загнался, как говорится толи лыжи не едут толи......
    Вложения Вложения
    • Тип файла: txt ex.txt (2.4 Кб, Просмотров: 109)
    Последний раз редактировалось olegsv; 08.06.2011 в 13:40.

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

    По умолчанию

    этот таймер работает по изменению с 1 в 0, так что вход IN должен как минимум перейти в состояние true затем обязательно в false, а если этот вход установить в одно из двух состоянии то работать не будет

  3. #3

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    этот таймер работает по изменению с 1 в 0, так что вход IN должен как минимум перейти в состояние true затем обязательно в false, а если этот вход установить в одно из двух состоянии то работать не будет
    так и есть.
    см. Вар2. отличие тольк в том, что включение/выключение вынесено и делается через переменную.
    и он работает.

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

    По умолчанию

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

  5. #5

    По умолчанию

    Таймер TON это функциональный блок.Экземпляр функционального блока есть программа. Чтобы программа выполнила какие либо действия, её нужно вызывать на исполнение, что и сделано во втором варианте.
    В первом варианте таймер вызывается только по условиям. Чтобы отслеживать изменение выходных переменных таймера, его надо вызывать в каждом цикле. В первом варианте достаточно в конце дописать операторы:
    TON_K();TON_Pipe();

  6. #6

    По умолчанию

    Тоесть получается что конструкция: if TON_K.Q Then ...
    не считается вызовом
    и корректно делать так:
    TON_K(); ...... if TON_K.Q Then .......
    при каждом проходе?

  7. #7

    По умолчанию

    TON_K.Q это переменная Q типа BOOL экземпляра функционального блока, переменные экземпляров ФБ сохраняются между вызовами и доступны для чтения. Чтобы переменные изменились, надо вызвать экземпляр ФБ на исполнение. Входные переменные, не заданные явно при вызове, сохраняют предыдущее значение.
    Для отслеживания работы таймера его надо вызывать в каждом цикле, а потом анализировать значение выходов.

  8. #8

    По умолчанию

    Спасибо.
    просто как то непревычно.
    Своя специфика есть у каждого сфта, просто надо привыкать.

Ваши права

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