Страница 41 из 66 ПерваяПервая ... 31394041424351 ... ПоследняяПоследняя
Показано с 401 по 410 из 658

Тема: Функциональные блоки на языке ST

  1. #401

    По умолчанию

    Здравствуйте!
    Только начинаю пробовать писать на ST. Возможно тривиальный вопрос: как правильно сделать вызов ФБ таймера в другом ФБ. Ранее были приведены примеры. Не понял такие моменты: чтобы вызвать таймер, нужно в ФБ из которого его вызываем прописать все входные и выходные переменные для этого таймера, и сам таймер? Нужно ли на схеме располагать ФБ таймера? Если нет, то как компилятор "узнает", что на соответствующий вход приходят системные секунды? Если да, то при задании переменных таймера в вызывающем блоке, соответствующие входы/выходы появятся у вызывающего блока, для чего они будут нужны, ведь мы вызываем таймер из этого блока и при вызове передаем ему значения соответствующих переменных?

  2. #402

    По умолчанию

    Цитата Сообщение от LTM Посмотреть сообщение
    Здравствуйте!
    Только начинаю пробовать писать на ST. Возможно тривиальный вопрос: как правильно сделать вызов ФБ таймера в другом ФБ. Ранее были приведены примеры. Не понял такие моменты: чтобы вызвать таймер, нужно в ФБ из которого его вызываем прописать все входные и выходные переменные для этого таймера, и сам таймер? Нужно ли на схеме располагать ФБ таймера? Если нет, то как компилятор "узнает", что на соответствующий вход приходят системные секунды? Если да, то при задании переменных таймера в вызывающем блоке, соответствующие входы/выходы появятся у вызывающего блока, для чего они будут нужны, ведь мы вызываем таймер из этого блока и при вызове передаем ему значения соответствующих переменных?
    Для вызова таймере в ФБ, надо объявить экземпляр таймера в VAR и вызвать в программе
    Код:
    var_input 
         In : bool; // Входные переменные таймера
         PT : udint;  
    end_var
    var_output 
        ET  :udint;   // Выходные переменные таймера
        Q  : bool ;
    end_var
    var 
       T1, T2 : time; 
       TON1:TON;     //  объявление экземпляра TON1  таймера TON (самописный таймер)
       TON2:SYS.TON; //  объявление экземпляра TON2 системного таймера  SYS.TON
    end_var
          T1:=get_time();        //  Системное время 
          TON1 (IN :=In, PT:=PT, ET=>ET, Q=>Q); //   Вызов экземпляра TON1
          TON2 (I:=In,T:=T2,Q=>Q);    //   Вызов экземпляра системного TON2
    В последней версии Лоджика 2.6.345 уже доступны системные таймеры TON2 (I:=In,T:=T2,Q=>Q); и системное время T1:=get_time();
    Время T1, T2 : time; нельзя подать на вход и выход, использовать только в ФБ. Для выхода надо конвертировать, например ET:= time_to_udint(T1);
    Последний раз редактировалось kondor3000; 18.02.2024 в 18:52.

  3. #403

    По умолчанию

    Вот повтор примера вызова таймера в ФБ на ST, ранее приведенного в этой ветке:
    var_input //объявление входных переменных
    In : bool;
    Sek : udint;
    end_var
    var_output //объявление выходных переменных
    Q : bool;
    ET: udint;
    end_var

    var //объявление локальных переменных
    S1 : udint;
    TON1:TON;
    end_var

    TON1(In:=In,S:=Sek,PT:=10,Q=>Q,ET=>ET);

    end_function_block

    Сам таймер (TON) также на ST.
    Все таки нужно квадрат TON разместить на схеме? Если, Вы говорите, что вызов TON только через входы выходы вызывающего ФБ, то зачем здесь строчка:
    TON1(In:=In,S:=Sek,PT:=10,Q=>Q,ET=>ET); ?
    В общем, что-то конкретно не догоняю.

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

    По умолчанию

    Цитата Сообщение от LTM Посмотреть сообщение
    Вот повтор примера вызова таймера в ФБ на ST, ранее приведенного в этой ветке:
    var_input //объявление входных переменных
    In : bool;
    Sek : udint;
    end_var
    var_output //объявление выходных переменных
    Q : bool;
    ET: udint;
    end_var

    var //объявление локальных переменных
    S1 : udint;
    TON1:TON;
    end_var

    TON1(In:=In,S:=Sek,PT:=10,Q=>Q,ET=>ET);

    end_function_block

    Сам таймер (TON) также на ST.
    Все таки нужно квадрат TON разместить на схеме? Если, Вы говорите, что вызов TON только через входы выходы вызывающего ФБ, то зачем здесь строчка:
    TON1(In:=In,S:=Sek,PT:=10,Q=>Q,ET=>ET); ?
    В общем, что-то конкретно не догоняю.
    Если вы TON используете внутри ST (т.е., определили его в переменных), то не нужно его размещать на холсте. А строчка - это как раз его вызов

  5. #405

    По умолчанию

    Цитата Сообщение от LTM Посмотреть сообщение
    Вот повтор примера вызова таймера в ФБ на ST, ранее приведенного в этой ветке:
    Сам таймер (TON) также на ST.
    Все таки нужно квадрат TON разместить на схеме? Если, Вы говорите, что вызов TON только через входы выходы вызывающего ФБ, то зачем здесь строчка:
    TON1(In:=In,S:=Sek,PT:=10,Q=>Q,ET=>ET); ?
    В общем, что-то конкретно не догоняю.
    Не надо его размещать на схеме, в языке ST строчка TON1(In:=In,S:=Sek,PT:=10,Q=>Q,ET=>ET); это и есть его вызов, на входы и выходы заведены входные и выходные переменные.
    Типа аналог размещения на холсте в FBD.

  6. #406

    По умолчанию

    Спасибо, с этим понятно. Остался еще один момент: S:=Sek - это как раз и говорит о том, что на TON приходят системные секунды? Sek - зарезервированное слово?

  7. #407

    По умолчанию

    Цитата Сообщение от LTM Посмотреть сообщение
    Спасибо, с этим понятно. Остался еще один момент: S:=Sek - это как раз и говорит о том, что на TON приходят системные секунды? Sek - зарезервированное слово?
    Нет, сейчас его использую как Sek, системные секунды в Лоджике называются "Секунды".
    И кстати системные секунды не лучший вариант для таймера, даже Blink лучше будет.
    А вообще теперь есть системное время. Выше, в коде даже пример есть.
    Последний раз редактировалось kondor3000; 18.02.2024 в 18:53.

  8. #408
    Пользователь
    Регистрация
    09.12.2013
    Адрес
    Ставрополь
    Сообщений
    1,596

    По умолчанию

    Цитата Сообщение от LTM Посмотреть сообщение
    Спасибо, с этим понятно. Остался еще один момент: S:=Sek - это как раз и говорит о том, что на TON приходят системные секунды? Sek - зарезервированное слово?
    Блин, как все сложно с вами.
    Допустим, есть некий функциональный блок ФБ с входными переменными Вх1, Вх2, Вх3 и выходными Вых1 и Вых2. Чтобы его использовать в программе на ST нам надо сначала его прописать:
    Код:
    var
        МойФБ : ФБ;
    end_var
    Далее, где-то в программе, нам нужно его использовать. Мы можем прямо его вызвать, задав входные и получив выходные переменные:
    Код:
    МойФБ(Вх1:=чему-то, Вх2:=чему-то, Вх3:=чему-то, Вых1=>куда-то, Вых2=>куда-то);
    Можем сначала записать входные переменные:
    Код:
    МойФБ.Вх1 := чему-то;
    МойФБ.Вх2 := чему-то;
    МойФБ.Вх3 := чему-то;
    Потом, где-то вызвать сам блок на исполение:
    Код:
    МойФБ()
    И, еще, где-то, прочитать результат выполнения:
    Код:
    что-то :=МойФБ.Вых1;
    что-то := МойФБ.Вых2;
    Ну, и все это можно комбинировать

    Кстати, нашел все-таки, может и пригодится
    Вложения Вложения
    Последний раз редактировалось Dimensy; 18.02.2024 в 19:13.

  9. #409
    Пользователь
    Регистрация
    01.11.2022
    Адрес
    <7924127@mail.ru> Минск
    Сообщений
    508

    По умолчанию

    Цитата Сообщение от Dimensy Посмотреть сообщение
    Блин, как все сложно с вами.
    Допустим, есть некий функциональный блок ФБ с входными переменными Вх1, Вх2, Вх3 и выходными Вых1 и Вых2. Чтобы его использовать в программе на ST нам надо сначала его прописать:

    ...

    Ну, и все это можно комбинировать
    Эти сложности притащили из прошлого...

    Подпрограмм нормальных в ST не будет в принципе...

    Цитата Сообщение от Dimensy Посмотреть сообщение
    Кстати, нашел все-таки, может и пригодится
    Спасибо большое - пример оформления документации!!!

    ОВЕН - вот как выглядит ХЕЛП для оператора IF

    изображение_2024-02-19_090034503.png

    Сколько им можно говорить,
    что текстового описания недостаточно, нужны примеры!

  10. #410

    По умолчанию

    Здравствуйте, товарищи. У меня нарисовалась следующая проблема, есть проект на FB, есть на ST, хочу в проект на FB перенести блок на ST, копирую текст блока, вставляю в редактор, а тот выдаёт мне ошибки в каждой букве кода, или пишет, что данный документ не поддерживает этот формат. Пробовал разные блоки из проектов форума, всё едино. Проблему то решил, просто взяв за основу проект на ST и уже в него перенёс блоки FB, но с редактором ST так и не пошло. Что сие значит?

Страница 41 из 66 ПерваяПервая ... 31394041424351 ... ПоследняяПоследняя

Похожие темы

  1. ПЛК73 (Функциональные кнопки)
    от necro в разделе ПЛК63/73
    Ответов: 8
    Последнее сообщение: 18.05.2022, 10:03
  2. Функциональные блоки
    от ribamuka в разделе СПК2xx (архив)
    Ответов: 4
    Последнее сообщение: 08.04.2018, 15:01
  3. Функциональные блоки насосов в CoDeSys
    от Алексей Ермолаев в разделе ПЛК1хх
    Ответов: 6
    Последнее сообщение: 28.03.2017, 13:50
  4. Функциональные блоки- где искать?
    от Xops в разделе ПЛК1хх
    Ответов: 16
    Последнее сообщение: 01.03.2016, 11:07
  5. СПК функциональные клавиши
    от Lyohin в разделе Трёп (Курилка)
    Ответов: 0
    Последнее сообщение: 30.03.2015, 15:10

Ваши права

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