Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 12

Тема: Открытие задвижки в ST

  1. #1

    По умолчанию Открытие задвижки в ST

    IF (open1 = 1) AND (cls1=TRUE) AND (st1=FALSE)
    THEN
    op1 :=TRUE;
    REPEAT op1:=TRUE;
    UNTIL (cls1<>TRUE)
    END_REPEAT
    ELSE op1:=FALSE;
    END_IF

    Когда условие выполняется ПЛК перезагружается. В чем загвоздка?
    Последний раз редактировалось Гадир; 11.07.2012 в 12:02.

  2. #2

    По умолчанию

    Так Вы таким условием организуете бесконечный цикл. Используйте условия IF, ELSIF.

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

    По умолчанию

    тут даже условия нет!
    (cls1<>TRUE)
    open1:=FALSE;
    это явная ошибка

  4. #4

    По умолчанию

    Я когда писал ошибся. А в программе так:
    IF (open1 = 1) AND (cls1=TRUE) AND (st1=FALSE) THEN
    op1 :=TRUE;
    REPEAT op1:=TRUE;
    UNTIL (cls1<>TRUE)
    END_REPEAT
    ELSE op1:=FALSE;
    END_IF

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

    По умолчанию

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

    ЗЫ и если честно коробят записи типа cls1=TRUE и cls1<>TRUE, для булевых можно просто написать имя переменной и если нужно выключенное состояние просто добавте NOT перед булевой переменной

  6. #6

    По умолчанию

    Сейчас написал:
    IF (open1 = 1) AND (cls1) AND (NOT st1) THEN
    op1;
    ELSIF (NOT cls1) THEN
    op1:=FALSE;
    open1:=0;
    ELSE op1:=FALSE;
    END_IF
    Вроде работает. Но что та я сомневаюсь что она делает то что я хочу)
    Последний раз редактировалось Гадир; 11.07.2012 в 12:31.

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

    По умолчанию

    Какие-то жуткие имена переменных и почти ни слова о задаче. Что за задвижка? У меня вентили и крышки открываются примерно так:
    Код:
    motor_to_open := (motor_to_open OR button_to_open) AND NOT endswitch_open;
    op1;
    Тут вы опять ошиблись.
    Последний раз редактировалось Yegor; 11.07.2012 в 14:01.

  8. #8

    По умолчанию

    Обычные задвижки. 2 сигнала управления(Открыть Закрыть) и 3 сигнала статуса (Открыто Закрыто Мануал/автомат). С поступление команды с программы об открытие ПЛК должен замкнуть выходы если статус поменялся завершить управляющий сигнал и обнулить буфер модбус. Вот и все 3 задвижки и 4 ходовой кран(Там тот же принцип но вместо Открыть закрыть-Форвард и Реверс ).

  9. #9

    По умолчанию

    Вот и проект. Проверял.
    Вложения Вложения

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

    По умолчанию

    Всё это
    IF ops1 = TRUE THEN
    opened1 :=1;
    ELSE opened1:=0;
    END_IF

    IF st1 = TRUE THEN
    status1 :=1;
    ELSE status1:=0;
    END_IF

    IF (open1 = 1) AND (cls1) AND (NOT st1) THEN
    op1:=TRUE;
    ELSIF (NOT cls1) THEN
    op1:=FALSE;
    open1:=0;
    ELSE op1:=FALSE;
    END_IF
    можно переписать как-то так:
    Код:
    op1 := (open1 = 1 OR op1) AND NOT st1 AND NOT ops1 AND NOT cl1;
    open1 := 0;
    opened1 := SEL(ops1, 0, 1);
    status1 := SEL(st1, 0, 1);
    Правда, я исхожу из того, что ваше отождествление открытого и незакрытого — ошибка. Возможно, это не так. Кстати, не лишним было бы оформить это как функциональный блок чтобы не заниматься копипастой.

    А ещё у вас переменные зачем-то по два раза объявляются — и в конфигурации, и в тексте программы. Определитесь. И modbus-регистрами вы разбрасываетесь налево и направо: вместо 16 бит задействуете лишь один. У вас там в конфигурации на модбас 17 булевых (по факту) переменных. Если не связано с ограничениями скады, то это страшное расточительство. Всё помещается в два регистра.
    Последний раз редактировалось Yegor; 12.07.2012 в 06:46.

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

Похожие темы

  1. прибор контроля положения задвижки
    от Roo в разделе Эксплуатация
    Ответов: 16
    Последнее сообщение: 18.08.2021, 08:50
  2. трм 212 положение задвижки
    от resident в разделе Помощь Разработчикам
    Ответов: 9
    Последнее сообщение: 15.07.2015, 16:02
  3. открытие/настройка Com - портов
    от vligm в разделе Помощь Разработчикам
    Ответов: 1
    Последнее сообщение: 27.08.2010, 11:26
  4. Открытие файла на дозапись.
    от izwerg в разделе ПЛК1хх
    Ответов: 24
    Последнее сообщение: 10.07.2007, 14:42
  5. Ответов: 7
    Последнее сообщение: 09.07.2007, 06:54

Ваши права

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