Страница 95 из 115 ПерваяПервая ... 45859394959697105 ... ПоследняяПоследняя
Показано с 941 по 950 из 1143

Тема: ПР205

  1. #941

    По умолчанию

    Спасибо всем за участие!
    Походу запись выходного блока переменной в конце цикла и есть причина.
    Все работает.

  2. #942
    Пользователь Аватар для Солнечный заяц
    Регистрация
    16.08.2009
    Адрес
    г. Рыбинск, Яр.обл.
    Сообщений
    237

    По умолчанию

    Здравствуйте,
    требуется добавить возможность задания начальных значений для энергозависимых переменных, т.к. к элементам на экране можно привязать только их. Я произвожу их корректировку в программе, но все равно возникают ошибки в подпрограммах. Приходится в каждой подпрограмме проверять входные значения на ноль.

  3. #943

    По умолчанию

    Цитата Сообщение от Солнечный заяц Посмотреть сообщение
    Здравствуйте,
    требуется добавить возможность задания начальных значений для энергозависимых переменных, т.к. к элементам на экране можно привязать только их. Я произвожу их корректировку в программе, но все равно возникают ошибки в подпрограммах. Приходится в каждой подпрограмме проверять входные значения на ноль.
    А с зависимыми то какая проблема?
    Код:
    If aaa= false then
       aaa:= true
       eee:= 100
       sss:= 210
    end if
    Переделать на FBD, если там нет ST не проблема...

    Или проблема в чем то другом?

  4. #944
    Пользователь Аватар для Солнечный заяц
    Регистрация
    16.08.2009
    Адрес
    г. Рыбинск, Яр.обл.
    Сообщений
    237

    По умолчанию

    Цитата Сообщение от МихаилГл Посмотреть сообщение
    А с зависимыми то какая проблема?
    Код:
    If aaa= false then
       aaa:= true
       eee:= 100
       sss:= 210
    end if
    Переделать на FBD, если там нет ST не проблема...

    Или проблема в чем то другом?
    В переменных индексы массива. При запуске эмуляции выдает ошибку "индекс вне диапазона". Не знаю, будет ли работать на реальном железе. Я подозреваю, что подпрограмма где используются индексы запускается раньше, чем подпрограмма, которая исправляет переменные, хотя расположена ниже. Последовательность запуска ФБ установить нельзя, как я понимаю.

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

    По умолчанию

    Цитата Сообщение от Солнечный заяц Посмотреть сообщение
    В переменных индексы массива. При запуске эмуляции выдает ошибку "индекс вне диапазона". Не знаю, будет ли работать на реальном железе. Я подозреваю, что подпрограмма где используются индексы запускается раньше, чем подпрограмма, которая исправляет переменные, хотя расположена ниже. Последовательность запуска ФБ установить нельзя, как я понимаю.
    Немножко не так. Блоки, грубо говоря, работают одновременно, но блок инициализации записывает значение в выходную переменную, и во входную переменную это значение попадает только в следующем цикле. Это можно обмануть, подключив вход с помощью линии связи а не через переменную

    1.png 2.png

    Или же, обработку второго блока делать с задержкой

    Код:
    function_block functionblock1 //имя функционального блока.
    
        var_input //объявление входных переменных
           U : udint; //входная переменная с типом данных bool
        end_var
    
        var_output //объявление выходных переменных
           Q : udint; //выходная переменная с типом данных udint
        end_var
        
        var
            init : bool;
        end_var
    
        if init then
            Q := 100 mod U;
        end_if
        init := true;
    
    end_function_block
    3.png

  6. #946

    По умолчанию

    Обычно, код должен быть сравнительно независимым от внешних факторов.
    Поэтому при использовании CASE настоятельно рекомендуется использовать ветку ELSE, в которой обрабатываются нештатные ситуации с выходом переменной из ряда перечислений.
    Поэтому, вместо фокусов с инициализацией я бы просто добавил на входе ФБ (или функции) на ST блок проверки корректности входных данных.

    Если посмотреть примеры из библиотек OSCAT и CoDeSys - в самом начале строки проверки.

    Кроме того, на входе в ФБ можно добавить вход EN, разрешающий работу алгоритма. Вход понадобится для приостановки алгоритма на период инициализации оборудования при включении питания - секунд на 5-10 - это значительно больше, чем один цикл.

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

    По умолчанию

    Цитата Сообщение от FPavel Посмотреть сообщение
    Обычно, код должен быть сравнительно независимым от внешних факторов.
    Поэтому при использовании CASE настоятельно рекомендуется использовать ветку ELSE, в которой обрабатываются нештатные ситуации с выходом переменной из ряда перечислений.
    Поэтому, вместо фокусов с инициализацией я бы просто добавил на входе ФБ (или функции) на ST блок проверки корректности входных данных.

    Если посмотреть примеры из библиотек OSCAT и CoDeSys - в самом начале строки проверки.

    Кроме того, на входе в ФБ можно добавить вход EN, разрешающий работу алгоритма. Вход понадобится для приостановки алгоритма на период инициализации оборудования при включении питания - секунд на 5-10 - это значительно больше, чем один цикл.
    Ну, старт контроллера - это форс мажорные внешние факторы и их лучше учитывать. Вход EN - более универсальный способ, но и внутренняя инициализация имеет место быть. И в том де ОSCAT много блоков с внутренней инициализацией

  8. #948

    По умолчанию

    Подскажите, если использовать st, в нём не поддерживаются всякие простые таймеры? типа ton/tof.

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

    По умолчанию

    meta11ist87 вызов штатных вроде пока не поддержан. Откройте справку ОЛ, там же все есть про ST для ПР

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

    По умолчанию

    Цитата Сообщение от meta11ist87 Посмотреть сообщение
    Подскажите, если использовать st, в нём не поддерживаются всякие простые таймеры? типа ton/tof.
    Поддерживается

Страница 95 из 115 ПерваяПервая ... 45859394959697105 ... ПоследняяПоследняя

Похожие темы

  1. Бета тест ПР205 в Owen Logic
    от Денисов Максим Сергеевич в разделе Среда программирования OWEN Logic
    Ответов: 66
    Последнее сообщение: 30.05.2023, 15:02
  2. Пр205 в новом каталоге
    от игорь68 в разделе Программируемые реле
    Ответов: 75
    Последнее сообщение: 10.04.2023, 12:48
  3. судьба пр205
    от Regedit в разделе Трёп (Курилка)
    Ответов: 3
    Последнее сообщение: 01.04.2022, 19:46

Ваши права

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