Страница 1 из 3 123 ПоследняяПоследняя
Показано с 1 по 10 из 23

Тема: Главный цикл

  1. #1

    По умолчанию Главный цикл

    Извиняюсь, если задаю глупый вопрос, однако освещен он слабо.

    Как устроен главный цикл в плк?

    Ну к примеру тип такого?

    while(1)
    {
    do PLC_PRG();
    }

    Просто вот в чем возникло сомнение.
    Есть примитивная "программа" :


    LED = 255; //зажечь все светодиоды


    После заливки и старта - выходит так - что светодиоды просто моргнули, но не зажглись.
    Значит их значения сбросились в 0 и программа прекратила выполнение?

    Вообщем довольно интересно как-там и что)

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

    По умолчанию

    Что это за LED переменная? откуда она?
    Плк итак за вас крутит цикл.
    Устроенно так
    1) опрос входов
    2) выполнение прораммы
    3) запись выходов
    И так постоянно.

  3. #3

    По умолчанию

    Хех) Ну LED - это просто переменная приатаченная к состоянию светодиодов на лицевой панели плк.

    Ну скажем чтоб зажечь самый первый светодиод нужно сделать так
    LED.0 =1;

    И т.д. - т.е. 8-битная переменная - если зажечь все т.е. LED=b'11111111' или по десятеричной LED=255;

    А вот это:
    "1) опрос входов
    2) выполнение прораммы
    3) запись выходов"
    странно.

    Ибо выходит так :

    Бесконечный цикл
    {
    Опрос входов плк

    "Зажечь все светодиоды"

    Запись выходов.
    }

    По логике - они(светодиоды) - должны загореться и все. Но они тухнут.... Значит где-то что-то их сбрасывает.

    Полная программа так и выглядит:

    PROGRAM PLC_PRG
    VAR
    END_VAR

    LED = 255;

    Все. Т.е. они ни где не устанавливаются в 0. По логике - зажгли -и в следующем глобальном цикле плк - зажгли еще раз(т.е. ничего не меняем) и так и далее.

    Как же так? Хм.....

  4. #4
    Пользователь
    Регистрация
    24.07.2012
    Адрес
    Россия
    Сообщений
    1,492

    По умолчанию

    Что за плк?
    Светодиоды вы ведь можете зажечь только если будете включать выхода так?

    Так на ST

    IF pusk THEN (*PUSK - bool*)
    LED:=255;
    END_IF

    Если на CFC, то так

    cosesys0.jpg

  5. #5

    По умолчанию

    Ну почему тогда у меня вот такая ситуация.
    Если код выглядит так :
    1.png

    То светодиоды вспыхивают и мгновенно тухнут.

    А если код поправить так :
    2.png
    Тогда при пуске - они загораются и горят. ну так то да - там же мною реализован бесконечный цикл.

    Но почему не работает бесконечный цикл в первом случае?

    Контролер - ПЛК73М

    Признаюсь сразу - я с плк работаю впервые в жизни. Работаю уже целых 2 часа. Но в целом я хорошо знаю С++, так что вот не могу понять почему тот "автоматический бесконечный главный цикл - на деле не бесконечный"
    Последний раз редактировалось fzr125; 12.06.2014 в 14:35.

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

    По умолчанию

    Здесь цикл в цикле это не хорошо.
    Очень надо аккуратно, потому что сидит ватч дог.
    Всетаки где описана LED, в конфинураторе?
    Почему бы вам не включить каждый выход отдельно и посмотреть?
    О While забудьте пока что.

  7. #7

    По умолчанию

    Угу. LED - задана в конфигурации PLC. Раздел Additional[FIX] - а именно там где пишет "Светодиоды".

    3.png

    Насчет каждого входа.
    Я даже так писал :

    LED.0 = 1;
    LED.1 = 0;
    LED.2 = 1;
    LED.3 = 0;
    LED.4 = 1;

    Нифига - вспыхивают и мгновенно гаснут(

    Мне необходимо это понять для того чтобы двигаться далее.
    Последний раз редактировалось fzr125; 12.06.2014 в 15:02.

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

    По умолчанию

    1....

    2. Ваше
    temp := true
    if temp then
    led := 255
    end_if
    тавтология для человека программирующего вообще. Достаточно
    led := 255;
    Если ж хочется ровно 1 раз и все, то
    if temp then
    led := 255
    end_if
    temp := false;
    Да и то, при условии
    var
    temp : bool := true;

    2.
    temp := true;
    while temp do
    led := 255;
    end_while
    Не надо ля-ля про то, что это работает как надо. Разве што только "надо" - это перезагрузка и обрыв связи.


    так что вот не могу понять почему тот "автоматический бесконечный главный цикл - на деле не бесконечный"
    См. внимательно
    Цитата Сообщение от Scream Посмотреть сообщение
    Что это за LED переменная? откуда она?
    Плк итак за вас крутит цикл.
    Устроенно так
    1) опрос входов
    2) выполнение прораммы
    3) запись выходов
    И так постоянно.

    PS
    Пока отвечал - некоторые вещи прояснились.
    онлайн/старт - делаем после загрузки ?
    Последний раз редактировалось Валенок; 12.06.2014 в 15:08.

  9. #9

    По умолчанию

    1. фулл код приведен в посте #5.
    Какой еще вам код нужен?
    Как привязан - показано в посте #7
    Я сам не люблю Ванг)

    2. Что ж. LED = 255; - я опробовал в самом начале - прежде чем писать всякую хрень с while)
    >Если ж хочется ровно 1 раз и все, то
    Хочется написать LED=255; - и чтобы светодиоды горели. А не моргнув тухли.

    С while - я и так знаю что такое приведет к зимней лисичке) Это было сделано для разового теста - не более.

  10. #10

    По умолчанию

    >онлайн/старт - делаем после загрузки ?
    Естественно)
    Хотя..... сек...

    Не, я уже сам перепугался. Пускаю. Заливаю так.
    1) Компилируем
    2) Online->Login
    3) Run
    Последний раз редактировалось fzr125; 12.06.2014 в 15:16.

Страница 1 из 3 123 ПоследняяПоследняя

Похожие темы

  1. Цикл на языке ST
    от servo в разделе ПЛК1хх
    Ответов: 17
    Последнее сообщение: 06.06.2019, 16:00
  2. Цикл опроса Modbus Universal OPC Server
    от Tester в разделе Master SCADA 3
    Ответов: 7
    Последнее сообщение: 27.03.2014, 12:42
  3. Ответов: 2
    Последнее сообщение: 29.08.2012, 11:17
  4. Ответов: 3
    Последнее сообщение: 25.09.2008, 18:38

Ваши права

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