Страница 2 из 3 ПерваяПервая 123 ПоследняяПоследняя
Показано с 11 по 20 из 23

Тема: Поочередное включение датчиков

  1. #11

    По умолчанию

    Цитата Сообщение от Cs-Cs Посмотреть сообщение
    In_Da_Cher_A ..
    Как его заставить учиться?..
    Научить читать документацию.
    Но это не поможет, ибо даже в чат гпт нет сил закинуть задание.

    Вот пример программы на языке ST (Structured Text), которая реализует описанную вами логику. Программа будет использовать переменные для отслеживания состояния и выполнения поочередного движения по датчикам. Мы также будем использовать таймер для реализации задержки в одну секунду на каждом этапе:
    Код:
    PROGRAM Main
    VAR
        i1 : BOOL;   // Кнопка старта
        i2 : BOOL;   // Кнопка стопа
        i3 : BOOL;   // Инфракрасный датчик
        i4 : BOOL;   // Датчик 1
        i5 : BOOL;   // Датчик 2
        i6 : BOOL;   // Датчик 3
        Q1 : BOOL;   // Лампа для датчика 1
        Q2 : BOOL;   // Лампа для датчика 2
        Q3 : BOOL;   // Лампа для датчика 3
        
        cycleCount : INT := 0;  // Счетчик циклов
        currentSensor : INT := 0; // Текущий датчик
        timer : TON;            // Таймер на 1 секунду
        movementActive : BOOL := FALSE;  // Активность движения
    END_VAR
    
    // Обработчик нажатия кнопки i1
    IF i1 AND NOT movementActive THEN
        movementActive := TRUE;          // Старт движения 
        cycleCount := 0;                 // Сброс счетчика циклов
        currentSensor := 0;              // Начинаем с первого датчика
    END_IF
    
    // Логика движения
    IF movementActive THEN
        // Проверка на умолчание остановки
        IF i2 OR i3 OR (cycleCount >= 7) THEN
            movementActive := FALSE;       // Остановка движения
            Q1 := FALSE;
            Q2 := FALSE;
            Q3 := FALSE;
            currentSensor := 0;            // Возврат на i4
        ELSE
            // Управление рядом датчиков
            CASE currentSensor OF
                0: // Датчик 1 (i4)
                    Q1 := TRUE;
                    Q2 := FALSE;
                    Q3 := FALSE;
                    timer(IN:= TRUE, PT:= T#1s);
                    IF timer.Q THEN
                        currentSensor := 1; // Переход ко второму датчику
                        timer(IN:= FALSE);   // Сброс таймера
                        cycleCount := cycleCount + 1; // Увеличиваем счетчик
                    END_IF;
                1: // Датчик 2 (i5)
                    Q1 := FALSE;
                    Q2 := TRUE;
                    Q3 := FALSE;
                    timer(IN:= TRUE, PT:= T#1s);
                    IF timer.Q THEN
                        currentSensor := 2; // Переход к третьему датчику
                        timer(IN:= FALSE);   // Сброс таймера
                    END_IF;
                2: // Датчик 3 (i6)
                    Q1 := FALSE;
                    Q2 := FALSE;
                    Q3 := TRUE;
                    timer(IN:= TRUE, PT:= T#1s);
                    IF timer.Q THEN
                        currentSensor := 0; // Возврат к первому датчику
                        timer(IN:= FALSE);   // Сброс таймера
                    END_IF;
            END_CASE;
        END_IF;
    ELSE
        // Если движение не активно, выключаем лампы
        Q1 := FALSE;
        Q2 := FALSE;
        Q3 := FALSE;
    END_IF;
    Но следующий вопрос будет, почему не работаем программа main и выдает ошибку.

  2. #12

    По умолчанию

    Цитата Сообщение от Cs-Cs Посмотреть сообщение
    In_Da_Cher_A Ты прав! Абсолютно.
    Но какое решение тут ты предложишь?
    У Автора темы так и есть одно сообщение на форуме. Он даже не отвечает.
    Как его заставить учиться?..
    учить надо тех, кто этого хочет.
    у всех вроде присутствует логическое мышление. но в подобных темах обязательно кто-то накинет на себя плащ "доброго самаритянина" и начнёт делать за этих лентяев,
    не надо никого заставлять, вы не его родители, его жизнь заставит, не мешайте естественному отбору.

  3. #13

    По умолчанию

    Задание так и представлено. Идет по кругу 123-123 и т.д 7 раз.

    Основной вопрос в том, как реализовать, чтобы в симуляторе при замыкании I1, был автоматически переход на I4. Реально ли вообще это

  4. #14

    По умолчанию

    Цитата Сообщение от Иван Туров Посмотреть сообщение
    Задание так и представлено. Идет по кругу 123-123 и т.д 7 раз.

    Основной вопрос в том, как реализовать, чтобы в симуляторе при замыкании I1, был автоматически переход на I4. Реально ли вообще это

    входы.jpg

    I - Input это входы.
    КАк вы хотите с одного входа сигнал передать на другой???
    Передать можно только на выход - Q, либо в конечную сетевую переменную, после необходимых действий (преобразований) полученного с входа сигнала.

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

    По умолчанию

    Если вопрос поставить иначе. Как при замыкании входа I1 ИСПОЛЬЗОВАТЬ в программе вход I4? тогда реализуемо через блок SEL

    начиналось движение по датчикам 1-3 (i4,i5,i6)
    для этого надо иметь датчики, или нарисовать табличку и руками их включать в эмуляции
    Последний раз редактировалось melky; 08.05.2025 в 13:23.

  6. #16

    По умолчанию

    не прошло и недели
    Цитата Сообщение от Иван Туров Посмотреть сообщение
    Основной вопрос в том, как реализовать, чтобы в симуляторе при замыкании I1, был автоматически переход на I4. Реально ли вообще это
    ваши мысли какие? как вы думаете это сделать и если сделать, то какими "инструментами"?
    при замыкании I1, был автоматически переход на I4.
    замыкании не И1, а чего? и переход чего на И4?

  7. #17

    По умолчанию

    Цитата Сообщение от In_Da_Cher_A Посмотреть сообщение
    не прошло и недели
    ваши мысли какие? как вы думаете это сделать и если сделать, то какими "инструментами"?
    замыкании не И1, а чего? и переход чего на И4?
    Я сделал это сейчас через ручное включение в эмуляции.

    I1- это кнопка ВКЛ конвеера, который ходит по кругу и включает лампочки при прохождении мимо датчиков, зависая на каждом на секунду. I4-это первый датчик

  8. #18

    По умолчанию

    Цитата Сообщение от Иван Туров Посмотреть сообщение
    Я сделал это сейчас через ручное включение в эмуляции.

    I1- это кнопка ВКЛ конвеера, который ходит по кругу и включает лампочки при прохождении мимо датчиков, зависая на каждом на секунду. I4-это первый датчик
    В эмуляции можно переключить входы, а в реале это физические кнопки подключённые ко входам.
    Кнопку нажать (датчик включить можно) можно, а вход переключить нельзя. Переключать можно только сигналы полученные со входов и выходы.
    Последний раз редактировалось kondor3000; 08.05.2025 в 18:46.

  9. #19

    По умолчанию

    I1- это кнопка ВКЛ конвеера, который ходит по кругу и включает лампочки при прохождении мимо датчиков, зависая на каждом на секунду. I4-это первый датчик
    отлично, Кнопка Вкл включает отсутствующий здесб двигатель конвейера, и даёт сигнал на вход И1, И1 даёт 1 (bool переменная) означающую для алгоритма Старт. Что дальше должно происходить при вращении вашего виртуального конвейера?
    пишите прям цепочку событий после ВКл 1 - двигатель вращается лента движется и ......бла бла бла
    2 - .....

  10. #20

    По умолчанию

    Цитата Сообщение от In_Da_Cher_A Посмотреть сообщение
    отлично, Кнопка Вкл включает отсутствующий здесб двигатель конвейера, и даёт сигнал на вход И1, И1 даёт 1 (bool переменная) означающую для алгоритма Старт. Что дальше должно происходить при вращении вашего виртуального конвейера?
    пишите прям цепочку событий после ВКл 1 - двигатель вращается лента движется и ......бла бла бла
    2 - .....
    1. Нажимаем ВКЛ (I1) - конвеер начал движение по кругу
    2. Доходит до датчика 1 (i4) останавливается на секунду (двигатель на время задержки выкл) в это время подсвечивается Q1(Лампочка)
    3. Едет дальше, доходит до датчика 2 (i5) останавливается на секунду (двгатель на время задержки выкл) в это время подсвечивается Q2 (Лампочка)
    4. Едет дальше, доходит до i6, задержка на секунду, в это время двигатель выкл,подсвечивается Q3(Лампочка)
    5. Так едет 7 раз по кругу, после чего останавливается, двигатель выкл.

    Доп условия: если нажать на I2, то двигатель выкл, конвеер останавливается, если нажать на I3, то конвеер останавливается на Q1

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

Похожие темы

  1. поочередное включение аварий
    от Maximus36 в разделе Среда программирования OWEN Logic
    Ответов: 37
    Последнее сообщение: 15.03.2024, 18:31
  2. Поочередное включение трех насосов.
    от Василий19 в разделе Среда программирования OWEN Logic
    Ответов: 1
    Последнее сообщение: 29.11.2023, 11:13
  3. Ответов: 1
    Последнее сообщение: 27.04.2020, 09:42
  4. Ответов: 1
    Последнее сообщение: 19.02.2020, 22:12
  5. включение ву2 на трм-101 ри
    от Asmodey в разделе Эксплуатация
    Ответов: 1
    Последнее сообщение: 13.10.2010, 07:46

Ваши права

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