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

Тема: Добавление выходных переменных в коде ST

  1. #1

    Question Добавление выходных переменных в коде ST

    Здравствуйте! Мне очень необходимо использовать VAR_OUTPUT в ST
    Cуть: У меня четыре насоса,если рабочий насос ушел в аварию то включить резервный насос. Блоками я пока не могу сделать или получится паутина из блоков
    Кодом написать оказывается легче, а блоками надо сидеть долго, если это вообще возможно, слишком много будет ИЛИ И НЕ и т.п.
    Как мне реализовать эту функцию пока не понимаю.

    ТЗ:
    4 входа

    авария насоса
    включение насоса
    выключение насоса
    резервирование насоса

    и таких пачек входов на четыре насоса

    4 выхода
    насос 1 вкл/выкл
    насос 2 вкл/выкл
    насос 3 вкл/выкл
    насос 4 вкл/выкл

  2. #2

    По умолчанию

    вкл/выкл - это кнопки Старт/Стоп?
    резервирование - это "не использовать"?

    Возьмите этот пример и доработайте под себя.
    Pump.jpg

    Код:
    function Pump: udint;
        var_input
            Fault1 : bool;
            Enable1: bool;
    
            Fault2 : bool;
            Enable2: bool;
    
            Fault3 : bool;
            Enable3: bool;
    
            Fault4 : bool;
            Enable4: bool;
        end_var
        
        var
           
        end_var
    
        Pump := 0;
        if Pump = 0 and Enable1 and Fault1 = false then
            Pump := 1;
        end_if
        if Pump = 0 and Enable2 and Fault2 = false then
            Pump := 2;
        end_if
        if Pump = 0 and Enable3 and Fault3 = false then
            Pump := 3;
        end_if
        if Pump = 0 and Enable4 and Fault4 = false then
            Pump := 4;
        end_if
    
    end_function
    Хотя можно и без ST.
    Изображения Изображения
    • Тип файла: jpg Pump1.jpg (95.8 Кб, Просмотров: 57)
    Последний раз редактировалось EFrol; 05.06.2022 в 22:36.

  3. #3

    По умолчанию

    Цитата Сообщение от Илья563 Посмотреть сообщение
    Здравствуйте! Мне очень необходимо использовать VAR_OUTPUT в ST
    Cуть: У меня четыре насоса,
    Когда пишите автомат состояний на ST, надо выход подавать на вход, через задержку. Тогда функция каждый цикл знает на каком этапе вы находитесь.
    А выход раскладывать для управления насосами. 1 Насосы на ST.jpg
    Последний раз редактировалось kondor3000; 06.06.2022 в 00:02.

  4. #4
    Пользователь Аватар для Сергей0308
    Регистрация
    25.06.2011
    Адрес
    Галактика Андромеды (M31)
    Сообщений
    8,236

    По умолчанию

    Цитата Сообщение от Илья563 Посмотреть сообщение
    Здравствуйте! Мне очень необходимо использовать VAR_OUTPUT в ST
    Cуть: У меня четыре насоса,если рабочий насос ушел в аварию то включить резервный насос. Блоками я пока не могу сделать или получится паутина из блоков
    Кодом написать оказывается легче, а блоками надо сидеть долго, если это вообще возможно, слишком много будет ИЛИ И НЕ и т.п.
    Как мне реализовать эту функцию пока не понимаю.

    ТЗ:
    4 входа

    авария насоса
    включение насоса
    выключение насоса
    резервирование насоса

    и таких пачек входов на четыре насоса

    4 выхода
    насос 1 вкл/выкл
    насос 2 вкл/выкл
    насос 3 вкл/выкл
    насос 4 вкл/выкл
    Может вам и ротация не помешает, короче здесь подобное обсуждали:

    https://owen.ru/forum/showthread.php?t=12691&page=41

    И, проще сделать на том языке, который знаешь!
    Если проблему можно решить за деньги, это не проблема, это расходы. Бог каждому посылает проблемы по его силам. Так что одно из двух. Либо ты можешь-таки
    справиться с проблемами, либо это не твои проблемы.

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

    По умолчанию

    Для квадратикофилов.
    Ну, внезапно, т.з чуть поменяется :
    1.Завтра станция может увеличится на X насосов.
    2.Работать должно свободно задаваемое оператором кол-во насосов. Например - 2.
    3.Каждый насос может отвалится в любой момент по своей аварии.
    4.Оператор может захотеть остановить/запустить любой насос в любой момент, но п.2 должен соблюдатся.

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

    По умолчанию

    Валенок в этом плане был прекрасный макрос от AI! на 8 насосов или чего угодно. Количество задавалось маской на одном входе. Так же маской можно было вывести из работы устройство на обслуживании и т.д.
    Все давно придумано. Правда есть там нюанс с автоматическим расчетом времени наработки, и он не всегда нужен.

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

    По умолчанию

    был прекрасный макрос
    А что с ним стало ?

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

    По умолчанию

    Валенок да ничего, наверняка где-то в темах о макросах остался, единственное, из-за наличия линий обратной связи в нем, его поведение в текущих версиях ОЛ под вопросом, правильно будет работать или нет, неизвестно.
    Я на ОЛ уже положил давно, использую какую-то старую версию, потому что все новое, спасибо Овену постоянно глючит. Устал эти инсталлы скачивать... Программеры кривопопые....

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

    По умолчанию

    хотел далее подтянуть что этому макросу видимо нужно еще внешний обвес пилить, не всякий оператор знает смысл местного слова "маска" (да и ненужно) а с учетом этого и слов про наработки получается каша из топора.
    Еще и искать этот макрос нужно.
    А пара циклов в st снимает ограничения на количество в принципе, и их не парят версии/таржеты/глюки и вообще ничего.

  10. #10

    По умолчанию

    ERROR_COUNT := 0;
    IF pump_run THEN
    IF pump1mode AND NOT pump1err THEN
    (*Запуск насоса 1*)
    END_IF

    IF pump1mode AND pump1err THEN
    ERROR_COUNT := ERROR_COUNT + 1
    (*Остановка насоса 1*)
    END_IF

    IF pump2mode AND NOT pump2err THEN
    (*Запуск насоса 2*)
    END_IF

    IF pump2mode AND pump2err THEN
    ERROR_COUNT := ERROR_COUNT + 1
    (*Остановка насоса 2*)
    END_IF


    (*Описание проверок других насосов*)


    IF NOT pump1mode AND NOT pump1err AND ERROR_COUNT > 0 THEN
    (*Запуск насоса 1 из резерва*)

    ERROR_COUNT := ERROR_COUNT - 1;
    END_IF

    IF NOT pump2mode AND NOT pump2err AND ERROR_COUNT > 0 THEN
    (*Запуск насоса 2 из резерва*)

    ERROR_COUNT := ERROR_COUNT - 1;
    END_IF

    IF NOT pump3mode AND NOT pump3err AND ERROR_COUNT > 0 THEN
    (*Запуск насоса 3 из резерва*)

    ERROR_COUNT := ERROR_COUNT - 1;
    END_IF

    IF NOT pump4mode AND NOT pump4err AND ERROR_COUNT > 0 THEN
    (*Запуск насоса 4 из резерва*)

    ERROR_COUNT := ERROR_COUNT - 1;
    END_IF




    END_IF

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

Похожие темы

  1. Ответов: 5
    Последнее сообщение: 10.05.2020, 21:36
  2. Замена выходных элементов с УУ на ТТ
    от Rebus77 в разделе Эксплуатация
    Ответов: 9
    Последнее сообщение: 25.10.2016, 12:19
  3. Характеристики аналоговых выходных модулей
    от Alexander_RT в разделе Подбор Оборудования
    Ответов: 3
    Последнее сообщение: 01.02.2011, 20:14
  4. плк150 скорость выходных сигналов
    от Инженер-Эл в разделе ПЛК1хх
    Ответов: 2
    Последнее сообщение: 18.11.2009, 12:14
  5. ТРМ 101 (Подключение выходных устройств)
    от Михалыч в разделе Эксплуатация
    Ответов: 5
    Последнее сообщение: 17.04.2008, 11:47

Метки этой темы

Ваши права

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