Показано с 1 по 10 из 14

Тема: пробую разобраться

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    По умолчанию

    присвоить temp=reg мы сразу присвоили . А вот додуматься, что делить нужно не на "10" как в русской школе учили, а на "10.1" - это мощно! И много в кодесисах таких эксклюзивов? (Или REAL нужно только так делить? В якагавах деляться на целые) Но.. Заработала запятая .. спс!

    Новый глобальный вопрос. А как вообще стартует программа на выполнение? C какого момента?

    Поясню. Положим, надо выждать время после включения ПЛК, пока включатся ТРМ-ы, и запустить весело программу их опроса.

    Можно первым шагом поставить генератор сигнала - он сгенерирует на таймер, таймер отщелкает секунд 10 и поехали...
    Генератор искать долго, так, чтобы попроще - добавляем в ПЛК Конфигурацию модуль "статистика". Там есть PoweOn - он есмь Истина.

    Эту "истину" подаем на вход таймера.


    Запускаем. Работает.

    Внимание - вопрос. Загружаю программу без ее выполнения - таймер работает. Простите, а как он работает, если программа не запущена на выполнение?
    Последний раз редактировалось Irasha; 27.11.2009 в 19:55.

  2. #2

    По умолчанию

    Цитата Сообщение от Irasha Посмотреть сообщение
    ... додуматься, что делить нужно не на "10" как в русской школе учили, а на "10.1" - это мощно! И много в кодесисах таких эксклюзивов?
    Много, как и во всех современных языках программирования. Программист должен иметь возможность заставлять транслятор делать четко то, что надо (с напряжением 1 извилины мозга на 1 мс). Хочу делить в целых – беру целые константы. Хочу делить в реал – беру реал. Общепринятые типизированные константы (информатика в русской школе была? Бейсик там, Паскаль?). Все просто и технично. Если система программирования будет все чесать под одну гребенку (встречается в примитивных средах, для упрощения внутренней реализации), то возможно в 8 из 10 случаев это будет хорошо. Зато в оставшихся 2 выхода не будет.
    Можно писать 10.0 или REAL#10.
    Цитата Сообщение от Irasha Посмотреть сообщение
    ... А как вообще стартует программа на выполнение? C какого момента?
    С включения питания и работает по циклу, четко по стандарту МЭК.
    Цитата Сообщение от Irasha Посмотреть сообщение
    Положим, надо выждать время после включения ПЛК...генератор сигнала.. таймер..PoweOn...
    Зачем так сложно?
    Делаем PLC-PRG на SFC. На первый шаг Init ставим атрибут минимального времени выполнения, какой надо. Ниже Init переход всегда TRUE. Далее добавляем шаг в котором будет сидеть рабочая программа (на любом языке). Мышкой 4 клика и все дела.

    Кстати, стандартные таймеры МЭК запускаются не уровнем, а именно фронтом! Т.е. чтобы по признаку вкл. питания его запустить, надо исхитриться запустить программу еще до включения питания.
    Цитата Сообщение от Irasha Посмотреть сообщение
    Загружаю программу без ее выполнения - таймер работает.
    Не может быть. Где видно что он работает?

  3. #3

    По умолчанию

    Игорь, мерси, что ответили!

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

    Передача от начального init - это мысль.

    У SFC есть внутренняя, не объявляемая переменная "t" - время. Условие перехода, с шага под названием, например, Step1 можно написать по идее так: Step1.t > T#10s

    Но компилятор ругается на меня, и на этот переход, говорит "." needs structure variable

    Не пойму, чего ему не хватает - переменная внутренняя по MЭК-у..

  4. #4

    По умолчанию

    Цитата Сообщение от Irasha Посмотреть сообщение
    У SFC есть внутренняя, не объявляемая переменная "t" - время. Условие перехода, с шага под названием, например, Step1 можно написать по идее так: Step1.t > T#10s
    Не надо .t
    Еще проще – см. в хелпе 'редактор SFC' - 'Дополнения' - 'Атрибуты шага' - Мин. время. Ставим в окошке мин. время T#10s и все.
    .t работает только в полном МЭК SFC (см. МЭК шаги). В полном можно Step1.t > T#10s.

    У вас стоит режим упрощенного SFC. Поэтому компилятор ругается на отсутствующую структурную переменную. Для МЭК SFC в код включается более развитый (и объемный) исполнитель SFC с поддержкой всяких хитрых действий отложенных, задержанных и пр. Тут такая мощь избыточна.

    Ничего особо сложного в SFC нет. Въехать в него стоит очень красивые и легко читаемые программы получаются.
    Цитата Сообщение от Irasha Посмотреть сообщение
    Работу определили по тому, что все шаги TRUE были синенькие. Т.е. таймер уже отработал.
    Возможно, он еще и не начинал работать. В таймеры МЭК надо аккуратно вникнуть. Подробно тут.

Ваши права

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