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

Тема: Порядок выполнения кода LADDER

  1. #1

    По умолчанию Порядок выполнения кода LADDER

    Добрый день. Сами строки в ladder выполняются циклично и параллельно, насколько я понял.
    Но при написании программы столкнулся с тем, что строчки в блоке "execute" тоже выполняются параллельно, да и флаг выполнения блока "ENO" вывешивается до выполнения кода внутри.
    Прописал два таймера в блоке execute, и они начинают работу сразу параллельно друг другу.
    Вопрос, как организовать последовательное выполнение строчек кода?

    timer.png

  2. #2

    По умолчанию

    Проблема возникла конкретно в том, что мне нужно выполнять дальнейшую программу только после получения результата от execute блока, но это не получается реализовать из-за того что "ENO" срабатывает до выполнения кода внутри, так же, если прописать в конце кода что-то вроде result=TRUE, то она примет это значение сразу, как только программа зайдет в этот блок.

  3. #3

    По умолчанию

    Получается, что надо писать так:
    Код:
    IF NOT TON12.IN THEN
       // Выполнение кода
    END_IF
    // Пауза 2 раза по 10s
    TON12(IN:=in1,  PT:=T#10s);
    IF TON12.Q THEN
         TON13(IN:=in2,  PT:=T#10s);
         IF TON13.Q THEN
              ok := TRUE;
              TON12(IN:=FALSE); TON13(IN:=FALSE);
         END_IF
    END_IF
    Строки то выполняются последовательно, только они не ждут, когда таймеры отработают.
    Проверить состояние таймеров можно только на следующем цикле.
    Последний раз редактировалось EFrol; 23.09.2024 в 20:23.

  4. #4

    По умолчанию

    А если не брать в расчет работу с таймерами, у которых есть результат выполнения. А, например, если мы перебираем массив, и работаем со строками. то в конце каждого действия ставить дополнительные переменные, которые будут позволять переходить к следующей строчке только после завершения предыдущей?
    и вопрос, это особенность всех языков стандарта IEC61131-3?

  5. #5

    По умолчанию

    В принципе можно организовать цикл, но сразу же сработает сторожевой таймер.
    Дело в том, что в настройках конфигурации жестко задается время программного цикла.
    ОС ПЛК кроме цикла программы еще занимается и обменом по всем портам и т.д.
    Сдается мне, что многозадачность то - кооперативная. Не любит он длинные циклы в программе пользователя (а вдруг бесконечный цикл - "зависание")!
    И да - все языки этого стандарта такие.

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

    По умолчанию

    чтобы цикл не приводил к зависанию и сработке сторожевых таймеров то система должна быть многозадачной и позволять создавать потоки.
    То есть вы бесконечный цикл запускаете в отдельном потоке и в рамках основного потока к нему обращаетесь.
    Не уверен, что ST это позволяет в принципе

  7. #7

    По умолчанию

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

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

    По умолчанию

    Цитата Сообщение от DolomanN Посмотреть сообщение
    понял, в общем, получается что ограничение именно в цикличности исполнения программы. ПЛК не может выходить за свой цикл ожидая исполнения.
    всегда найдется место куда можно вставить return и программа дальше не пойдет пока не выполнится какое то условие в первом ПОУ

    Цитата Сообщение от DolomanN Посмотреть сообщение
    может кто-нибудь знает, можно ли прикрутить модуль входов-выходов ОВЕН к питону
    яндекс, гугл гитхаб, все знают
    https://github.com/ljean/modbus-tk/b...ter_example.py
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

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

Похожие темы

  1. Порядок выполнения цикла на ПЛК
    от shishkin_a_s@mail.ru в разделе Помощь Разработчикам
    Ответов: 15
    Последнее сообщение: 09.09.2024, 20:35
  2. Порядок выполнения
    от Anatoly.snjrs в разделе ПЛК2хх
    Ответов: 1
    Последнее сообщение: 25.04.2022, 13:26
  3. OWEN Logic Как изменить порядок выполнения операций
    от FPavel в разделе Программируемые реле
    Ответов: 5
    Последнее сообщение: 01.08.2015, 14:22
  4. Ответов: 26
    Последнее сообщение: 16.04.2014, 11:03
  5. Порядок расположения приборов
    от Qween в разделе Master SCADA 3
    Ответов: 3
    Последнее сообщение: 23.04.2013, 10:10

Ваши права

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