Страница 2 из 47 ПерваяПервая 123412 ... ПоследняяПоследняя
Показано с 11 по 20 из 467

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

  1. #11

    По умолчанию

    Так исторический сложилось, что в owen logic и в программируемых реле используется именно беззнаковый int, в планах конечно есть добавление новых типов данных
    Менеджер по продукту | Owen Logic
    email: soft@owen.ru

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

    По умолчанию

    Цитата Сообщение от Рогов Алексей Посмотреть сообщение
    Вложение 69388

    Добрый день!

    Подскажите, пожалуйста, как решить задачу с демультиплексором без последующих преобразований в бул.
    Наверное, так?

    Код:
    function_block functionblock1 //имя функционального блока.
    
    // 
        var_input //объявление входных переменных
          
           N : udint; //входная переменная для 
        end_var
    
        var_output //объявление выходных переменных
           Q0,Q1,Q2,Q3,Q4,Q5,Q6,Q7,Q8,Q9,Q10,Q11,Q12,Q13,Q14,Q15 : bool; //выходная переменная с типом данных bool
        end_var
    
        var //объявление локальных переменных
          
        end_var
           Q0 := N.0;
           Q1 := N.1;
           Q2 := N.2;
           Q3 := N.3;
           Q4 := N.4;
           Q5 := N.5;
           Q6 := N.6;
           Q7 := N.7;
           Q8 := N.8;
           Q9 := N.9;
           Q10 := N.10;
           Q11 := N.11;
           Q12 := N.12;
           Q13 := N.13;
           Q14 := N.14;
           Q15 := N.15;
    end_function_block

  3. #13

    По умолчанию

    Цитата Сообщение от Рогов Алексей Посмотреть сообщение
    Вложение 69388

    Добрый день!

    Подскажите, пожалуйста, как решить задачу с демультиплексором без последующих преобразований в бул.
    Думаю так будет верно

    2023-08-09_14-33-04.png
    Менеджер по продукту | Owen Logic
    email: soft@owen.ru

  4. #14

    По умолчанию

    Спасибо!
    Изучаем дальше!

  5. #15

    По умолчанию

    При использовании вызова внутри ФБ другого ФБ при запуске симуляции выходит ошибка

    Текст ошибки:
    System.InvalidOperationException: Sequence contains no elements
    at System.Linq.ThrowHelper.ThrowNoElementsException()
    at System.Linq.Enumerable.Single[TSource](IEnumerable`1 source)
    at ProgramRelayFBD.ApplicationLayer.ST.AddScrollToFun ctionBlockCommand.CreateArguments(CompilerExceptio n exception)
    at ProgramRelayFBD.ApplicationLayer.ST.AddScrollToFun ctionBlockCommand.Build(StFunctionBlockElement element, ProgramCode program, ICompiledProgramNetworkRepository compiledProgramNetworkRepo)
    at ProgramRelayFBD.ApplicationLayer.ST.SimulateFuncti onBlockElementService.Initialize(StFunctionBlockEl ement element, ProgramCode program, ICompiledProgramNetworkRepository compiledFunctionRepo, IBuildFunctionBlockElementService buildFunctionBlockElement)
    at ProgramRelayFBD.InfrastructureLayer.Adapters.FormP resenter.<>c__DisplayClass299_0.b__1(FunctionBlock BuildingStartedEvent ev)
    at DomainTemplates.DomainEvents.RaiseEvent[T](T event, IEnumerable`1 actions)
    at ProgramRelayFBD.DomainLayer.Simulation.SimulateCom pilerState.HandleBuildElement(IBuildingElement builder, ProgramCode program, ICompiler compiler)
    at Owen.Compiling.ProgramLinker.CompilingElements(Pro gramCode program, IEnumerable`1 elements, CancellationToken cancellationToken)
    at ProgramRelayFBD.DomainLayer.Compilers.BaseCompiler .Compiling(Generator generator, ProgramItem programItem, Stream stream, CancellationToken cancellationToken)
    at ProgramRelayFBD.DomainLayer.Series200.CompilerSeri es200.<>c__DisplayClass7_0.b__1()
    at System.Threading.ExecutionContext.RunFromThreadPoo lDispatchLoop(Thread threadPoolThread, ExecutionContext executionContext, ContextCallback callback, Object state)
    --- End of stack trace from previous location ---
    at System.Threading.Tasks.Task.ExecuteWithThreadLocal (Task& currentTaskSlot, Thread threadPoolThread)

  6. #16

    По умолчанию

    Цитата Сообщение от Валенок Посмотреть сообщение
    Мне показалось что какая то фигня с выравниванием. Какой состав объявлений?
    Да прямо стандартная болванка fb, обёрнутая в неё-же (перепривязаны вход-выходы)

    1 ФБ:
    function_block functionblock1 //имя функционального блока.

    // Пример функционального блока на ST, который является счетчиком и используется для прямого счета.
    // Операция «прямой счет» выполняется по переднему фронту импульса на входе «U»,
    // что увеличивает значение выходного сигнала «Q».
    // При поступлении на вход Res логической «1», выход счетчика «Q» устанавливается в значение входа «N».

    var_input //объявление входных переменных
    U : bool; //входная переменная с типом данных bool
    Res : bool; //входная переменная с типом данных bool
    N : udint; //входная переменная для значения счетчика после сброса
    end_var

    var_output //объявление выходных переменных
    Q : udint; //выходная переменная с типом данных udint
    end_var

    var //объявление локальных переменных
    CounterValue : udint; //переменная для текущего значения счетчика
    RTrig : bool; //переменная для определения переднего фронта на входе «U»
    end_var

    if Res then
    CounterValue := 0;
    end_if
    if U and not RTrig and not Res then
    CounterValue := (CounterValue + 1);
    RTrig := U;
    end_if
    if not U and RTrig then
    RTrig := false;
    end_if
    Q := CounterValue;

    end_function_block


    2 ФБ:
    function_block functionblock2 //имя функционального блока.

    // Пример функционального блока на ST, который является счетчиком и используется для прямого счета.
    // Операция «прямой счет» выполняется по переднему фронту импульса на входе «U»,
    // что увеличивает значение выходного сигнала «Q».
    // При поступлении на вход Res логической «1», выход счетчика «Q» устанавливается в значение входа «N».

    var_input //объявление входных переменных
    U : bool; //входная переменная с типом данных bool
    Res : bool; //входная переменная с типом данных bool
    N : udint; //входная переменная для значения счетчика после сброса
    end_var

    var_output //объявление выходных переменных
    Q : udint; //выходная переменная с типом данных udint
    end_var

    var //объявление локальных переменных
    CounterValue : functionblock1; //переменная для текущего значения счетчика
    end_var

    CounterValue(U := U, Res:= Res, N := N, Q => Q);

    end_function_block
    Последний раз редактировалось 1exan; 09.08.2023 в 18:31.

  7. #17

    По умолчанию

    Цитата Сообщение от Валенок Посмотреть сообщение
    перед CounterValue обьявите например 3...4 буля

    //я тоже в матрёшки сыграл. До 4-х дошел, дальше было лень
    Точно, достаточно поместить хоть 1 булевую или целочисленную, до или после объявления ФБ, то всё работает. Баг налицо. 1 ФБ в ФБ.jpg
    Код:
    var //объявление локальных переменных
        //x1 : bool;
        fbCTU1:functionblock1; //переменная для текущего значения счетчика
        x2 : udint;
    end_var
    Закомментировал обе переменных, сразу баг 1 ФБ в ФБ 2.jpg вот я вчера намучился, никак не работало(((
    Последний раз редактировалось kondor3000; 09.08.2023 в 20:19.

  8. #18
    Пользователь Аватар для Эдуард_Н
    Регистрация
    22.09.2014
    Адрес
    Курган
    Сообщений
    1,612

    По умолчанию

    А как эти ФБ теперь сохраняются?

  9. #19

    По умолчанию

    Цитата Сообщение от Эдуард_Н Посмотреть сообщение
    А как эти ФБ теперь сохраняются?
    Как у вас макросы сохранялись? Так и ФБ и функции, только у них свои папки.

  10. #20
    Пользователь Аватар для Эдуард_Н
    Регистрация
    22.09.2014
    Адрес
    Курган
    Сообщений
    1,612

    По умолчанию

    Цитата Сообщение от kondor3000 Посмотреть сообщение
    Как у вас макросы сохранялись? Так и ФБ и функции, только у них свои папки.
    Спасибо, прошляпил я это.

Страница 2 из 47 ПерваяПервая 123412 ... ПоследняяПоследняя

Похожие темы

  1. ПЛК73 (Функциональные кнопки)
    от necro в разделе ПЛК63/73
    Ответов: 8
    Последнее сообщение: 18.05.2022, 10:03
  2. Функциональные блоки
    от ribamuka в разделе СПК2хх
    Ответов: 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

Ваши права

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