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

Тема: ПЛК100 - Направте в "нужное русло"

  1. #1

    По умолчанию ПЛК100 - Направте в "нужное русло"

    Похоже я где-то не до конца уловил логику циклов и таймеров.(Язык ST)
    Элементарная программа -
    PROGRAM PLC_PRG
    VAR
    IN_0 AT %IX0.0.0:BOOL;
    OUT_0 AT %QX1.0:BOOL;
    TIME_OFF:TOF;
    END_VAR
    Программа -
    TIME_OFF(IN:=IN_0, PT:= T#5s);
    OUT_0:=TIME_OFF.Q;
    При кратковременном сигнале на IN_0 - на 5 секунд загорается OUT_0
    Но программа
    IF IN_0 THEN
    TIME_OFF(IN:=IN_0, PT:= T#5s);
    OUT_0:=TIME_OFF.Q;
    END_IF;
    При замыкании IN_0 - OUT_0 и TIME_OFF.Q постоянно TRUE
    Почему OUT_0 через 5 секунд не становится FALSE?
    Работа с ПЛК для меня в новику и видимо где то туплю...

  2. #2
    Пользователь Аватар для petera
    Регистрация
    06.05.2011
    Адрес
    Минск
    Сообщений
    3,841

    По умолчанию

    Цитата Сообщение от igkondrat Посмотреть сообщение
    Похоже я где-то не до конца уловил логику циклов и таймеров.(Язык ST)
    Элементарная программа -
    PROGRAM PLC_PRG
    VAR
    IN_0 AT %IX0.0.0:BOOL;
    OUT_0 AT %QX1.0:BOOL;
    TIME_OFF:TOF;
    END_VAR
    Программа -
    TIME_OFF(IN:=IN_0, PT:= T#5s);
    OUT_0:=TIME_OFF.Q;
    При кратковременном сигнале на IN_0 - на 5 секунд загорается OUT_0
    Но программа
    IF IN_0 THEN
    TIME_OFF(IN:=IN_0, PT:= T#5s);
    OUT_0:=TIME_OFF.Q;
    END_IF;
    При замыкании IN_0 - OUT_0 и TIME_OFF.Q постоянно TRUE
    Почему OUT_0 через 5 секунд не становится FALSE?
    Работа с ПЛК для меня в новику и видимо где то туплю...
    Почему? Да по тому, что ФБ TIME_OFF это программа(подпрограмма, если хотите). А так как в Вашей программе нет многозадачности, то и программный код подпрограммы ФБ TIME_OFF будет выполняться и соответственно будут обновляться его внутренние, входные и выходные переменные только в том случае, если в каждом цикле основной программы будет вызываться подпрограмма ФБ TIME_OFF.
    А в варианте
    Код:
    IF IN_0 THEN
    TIME_OFF(IN:=IN_0, PT:= T#5s);
    OUT_0:=TIME_OFF.Q;
    END_IF;
    если переменная IN_0:=FALSE, то обращения к таймеру не происходят и он будет в "замороженном" состоянии.

    З.Ы. Хотя IF IN_0 THEN... здесь вовсе не нужен, но если все таки хотите его использовать, то хотя бы так
    Код:
    PROGRAM PLC_PRG
    VAR
        TIME_OFF:TOF:=(PT:=T#5s);
        IN_0: BOOL;
        OUT_0: BOOL;
    END_VAR
    IF IN_0 THEN
    TIME_OFF(IN:=1);
    ELSE
    TIME_OFF(IN:=0);
    END_IF;
    OUT_0:=TIME_OFF.Q;
    Последний раз редактировалось petera; 26.07.2013 в 18:56.
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

  3. #3

    По умолчанию

    Спасибо за ответ, некоторая ясность появилась, а "IF THEN" я взял как просто пример, на самом деле задача совсем другая, с которой без этих операций на мой взгляд не обойтись.
    Если у кого есть время и желание помочь, опишу поставленную задачу, над которой и ломаю голову:
    Есть паркинг, с одним "въездом/выездом", две машины (одна заезжает, другая хочет выехать) разъехаться не смогут . Для, того чтобы этой ситуации избежать, решил использовать ПЛК100.
    Вот изначально НЕПРАВЕЛЬНЫЙ пример как я это хотел реализовать -
    IF IN_0=TRUE (*Если подъехала машина на въезд и сработал датчик\кнопка\картоприемник принял карту и т.д.*)
    THEN
    OUT_0:=TRUE; OUT_5:=TRUE; (*включаем светофоры красным на въезд и выезд*)
    TIME_OFF(IN:=IN_0, PT:= T#15s);
    OUT_1:=TIME_OFF.Q; (*В течении 15 секунд подаем сигнал для открытия шлагбаума*)
    WHILE IN_1 = FALSE (*Вход с фотоэлемента*)
    DO (*Тут должно было что-то крутиться и ждать пока машина заедет на фотоэлемент*)
    END_WHILE;
    WHILE IN_1 = TRUE
    DO .... (*Ждем выезда машины из фотоэлемента*)
    END_WHILE;
    OUT_1:=FALSE; (*Отключаем открытие шлагбаума (если не прошло 15 секунд по таймеру)*)
    TIME_OFF(IN:=TRUE , PT:=T#15s);
    OUT_2:=TIME_OFF.Q; (*Даем сигнал в течении 15 секунду на закрытие шлагбаума*)
    (*Машина спускается едет к месту выезда*)
    IF IN_2=TRUE (*Подъехала на выезд и сработал IN_2*)
    THEN
    TIME_OFF(IN:=IN_0, PT:= T#15s);
    OUT_3:=TIME_OFF.Q; (*Открываем выездной шлагбаум*)
    WHILE IN_3 = FALSE
    DO (*Ждем наезда на светодиод как и для вьезда*)
    END_WHILE;
    WHILE IN_3 = TRUE
    DO (*Ждем проезда светодиода*)
    END_WHILE;
    OUT_3:=FALSE; (*Выключаем открытие шлагбаума*)
    TIME_OFF(IN:=TRUE, PT:=T#15s);
    OUT_4:=TIME_OFF.Q; (*Подаем сигнал на закрытие шлагбаума в течении 15 секунд*)
    END_IF;

    (*Машина выехала*)
    OUT_0:=FALSE; OUT_5:=FALSE; (*Выключаем светофоры, т.е. загорается зеленый*)
    END_IF;
    ################################################## ##################
    Далее идет похожий блок IF THEN, но только для выезда "в обратную сторону", единственное что похоже надо предусмотреть что, если пока идет "цикл" IF THEN на въезд, ни как не реагировать на, то что может подъехать машина на выезд (IN_4 станет TRUE) и наоборот.
    Я прекрасно понимаю что описанное тут мной полная чушь, но это примерно как я это себе представлял, (да и написал бы php/perl/bash скрипт и запускал бы его раз в секунду :=) ), а как реализовать это на ПЛК - ума не приложу...
    Буду признателен за любые советы.

  4. #4
    Пользователь Аватар для Василий Кашуба
    Регистрация
    20.11.2011
    Адрес
    Ставрополь
    Сообщений
    2,492

    По умолчанию

    Если ещё не приобрели ПЛК, то могу помочь с написанием программы для ПР114.

  5. #5

    По умолчанию

    Ну очень сложно. Попробуйте написать алгоритм на Булевой алгебре. Ну очень простой. Потом реализацию на LD.

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

    По умолчанию

    Сильно много операторов цикла - поймите цикл и так есть. Оператор цикла - единственный оператор , тормозящий выполнение до своего окончания.
    Поэтому цикл в программе для ПЛК надо организовывать только когда НЕОБХОДИМО ВЫПОЛНИТЬ ВСЕ ОПЕРАЦИИ В ТЕКУЩЕМ "МЕСТЕ" ПРОГРАММЫ.
    В вашем случае просто - опишите алгоритм словами . Дальше пишите текст в ST и все.(как-бы переводя из языка русского в язык ST) .

    З.Ы Вашу задачу можно строк в 10-20 решить.

  7. #7

    По умолчанию

    Цитата Сообщение от Василий Кашуба Посмотреть сообщение
    Если ещё не приобрели ПЛК, то могу помочь с написанием программы для ПР114.
    Да этот ПЛК как год лежал без дела, вот и подумал что на нем можно реализовать...

  8. #8

    По умолчанию

    Ну собственно в комментариях, к описанной мною "индуской" программы, я и попытался описал алгоритм своими словами. Единственное, что мне пришло в голову, это использовать промежуточные переменные и при дальнейшем использовании "IF THEN", так же сравнивать с их значениями. К примеру, машина въехала, присвоить переменной X значение один, и до тех пор пока она не выехала (X станет 0) не реагировать на сторонние сигналы...
    По поводу "Оператор цикла - единственный оператор , тормозящий выполнение до своего окончания" - мне именно это и необходимо сделать, чтобы провести все операции от открытия шлагбаума на въезд и закрытие на выезд.
    Цитата Сообщение от Sergey666 Посмотреть сообщение
    З.Ы Вашу задачу можно строк в 10-20 решить.
    Если Вы считаете это элементарной задачей - с радостью приму Вашу помощь =)))

  9. #9
    Пользователь
    Регистрация
    28.08.2008
    Адрес
    23..93..123
    Сообщений
    1,688

    По умолчанию

    Если будет время баловатся...

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

    По умолчанию

    Ну Вам же предложили - опишите действия и состояния исполнителей во всех возможных ситуациях не думая о програмировании
    Типа:
    1.Нет машин нигде
    2.Только на выезде подъехала машина1
    3.Ждем карточку1 15сек
    4.Машина1 в процесса выезда
    5.Только на въезде подъехала машина2
    6.Ждем карточку2 15сек
    7.Машина2 в процесса въезда
    8.Одновременно подошли машина1 и машина2
    ..

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

Похожие темы

  1. Ответов: 7
    Последнее сообщение: 27.02.2013, 19:08
  2. Ответов: 2
    Последнее сообщение: 07.03.2012, 13:17
  3. Ответов: 3
    Последнее сообщение: 30.09.2010, 22:30
  4. как выбрать управление "прямое" или "обратное"
    от maxmore в разделе Эксплуатация
    Ответов: 1
    Последнее сообщение: 18.01.2010, 10:13

Ваши права

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