Страница 9 из 19 ПерваяПервая ... 7891011 ... ПоследняяПоследняя
Показано с 81 по 90 из 194

Тема: СП310+пр200

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    По умолчанию

    Цитата Сообщение от Viktor D Посмотреть сообщение
    Спасибо за подсказки.
    Положил в копилку знаний.


    Сейчас прошу помочь разобраться как создать функциональный блок на ST.
    собственно говоря прочитав хелп к Овенлоджику и действуя по аналогии удалось самостоятельно создать ФБ типа таймер с задержкой отключения (для саморазвития и с прицелом на использование в следующем проекте).
    Далее хотел добавить в него на вход импульс включения длительнстью 10ms (по аналогии RTIG), но что то пошло не так.
    В редакторе висят 2 ошибки.
    Подскажите что делаю не так.
    Конкретно ошибка в том, что у ФБ типа TP.SYS отсутствует входная переменная с именем "strt_1", которой вы пытаетесь присвоить значение.
    Наверное планировалось сделать что-то типа такого:
    Код:
         strt_1 := strt;
        TP_1(I := strt, T := T#10ms);

  2. #2

    По умолчанию

    Ну не совсем так. В первом ФБ если подать на вход 1 и убрать то он отсчитывает 10 секунд Если 1 оставить то он продолжает считать бесконечно.
    Планировалось сделать что бы внутри ФБ был RTRIG.

    Исходя из вашей подсказки после TP_1 в скобках выражение:
    T:=10#ms - это время,
    а I:=strt, - это как понимать? (м.б входу ФБ присвоить значение переменной strt из основной программы)?

    Может есть где то более подробные разъяснения в этой части?
    Что должно быть в круглых скобках?


    PS.
    Сделал так:
    Код:
        TP_1(I := strt, T := T#10ms);
        strt_1 := TP_1.Q;
    вроде заработало.
    Правильно я понимаю, что I :=strt - это присвоение входу ФБ TP.SYS значения внешней переменной а strt_1 := TP_1.Q - это присвоение результата работы ФБ уже в следующую переменную?

    И забегаявперёд - если нужно будет использовать несколькоблоков TP.SYS то надо будет их нумеровать типа так:
    TP_1
    TP_2
    и т.д.
    ?
    Последний раз редактировалось Viktor D; 16.10.2024 в 04:47.

  3. #3

    По умолчанию

    Цитата Сообщение от Viktor D Посмотреть сообщение
    Ну не совсем так. В первом ФБ если подать на вход 1 и убрать то он отсчитывает 10 секунд Если 1 оставить то он продолжает считать бесконечно.
    Планировалось сделать что бы внутри ФБ был RTRIG.

    Исходя из вашей подсказки после TP_1 в скобках выражение:
    T:=10#ms - это время,
    а I:=strt, - это как понимать? (м.б входу ФБ присвоить значение переменной strt из основной программы)?

    Может есть где то более подробные разъяснения в этой части?
    Что должно быть в круглых скобках?


    PS.
    Сделал так:
    Код:
        TP_1(I := strt, T := T#10ms);
        strt_1 := TP_1.Q;
    вроде заработало.
    Правильно я понимаю, что I :=strt - это присвоение входу ФБ TP.SYS значения внешней переменной а strt_1 := TP_1.Q - это присвоение результата работы ФБ уже в следующую переменную?

    И забегаявперёд - если нужно будет использовать несколькоблоков TP.SYS то надо будет их нумеровать типа так:
    TP_1
    TP_2
    и т.д.
    ?
    Все примерно так и есть. Посмотрите базовую информацию по ST в справке по OL (там не очень много, но есть) - нет смысла копировать её сюда.
    Где-то на форуме была тема с реализацией ФБ типа "TON", "R_TRIG" и т.п. - поищите, если интересно.
    И ещё - вы пытаетесь сделать свой "R_TRIG" на основе системного ФБ "TP.SYS" - при том, что можно просто использовать ФБ "R_TRIG.SYS"

  4. #4

    По умолчанию

    Спасибо за подсказки.
    Собственно говоря я уже это читал, просто некотрые моменты не понятны (учился давно по другой специальности (ТМС) и тогда комп был редкость. Проги писали на Фортране на листочке и сдавали преподу, а он окидывал взглядом и выносил вердикт - будет работать или нет).

    Цель моих действий сделать ФБ который будет осуществлять следующий алгоритм: вращение вперёд-пауза-вращение назад и всё это повторять в течении определённого времени.
    Делаю это для общего развития. На стандартных ФБ из овенлоджика уже сделано, теперь хочу освоить хотя бы в общих чертах ST. Привязаться хочу к функции DT потому как делала в ОЛ на BLINK и CTN и столкнулся с тем, что на длительных выдержках время уходит от встроенных часов из за конечной скорости работы программы. Приходилось вводить коррекцию.
    Последний раз редактировалось Viktor D; 16.10.2024 в 05:29.

  5. #5

    По умолчанию

    Цитата Сообщение от Viktor D Посмотреть сообщение
    Спасибо за подсказки.
    Собственно говоря я уже это читал, просто некотрые моменты не понятны (учился давно по другой специальности (ТМС) и тогда комп был редкость. Проги писали на Фортране на листочке и сдавали преподу, а он окидывал взглядом и выносил вердикт - будет работать или нет).

    Цель моих действий сделать ФБ который будет осуществлять следующий алгоритм: вращение вперёд-пауза-вращение назад и всё это повторять в течении определённого времени.
    Делаю это для общего развития. На стандартных ФБ из овенлоджика уже сделано, теперь хочу освоить хотя бы в общих чертах ST. Привязаться хочу к функции DT потому как делала в ОЛ на BLINK и CTN и столкнулся с тем, что на длительных выдержках время уходит от встроенных часов из за конечной скорости работы программы. Приходилось вводить коррекцию.
    Посмотрите конструкцию SWITCH - для реализации на ST это лучше, чем CTN.
    По поводу неточности выдержки времени - я не уверен, что пользуясь внутренним таймером процессора вы не получите таких-же погрешностей на больших интервалах времени. И большая выдержка времени - это сколько в данном случае?

  6. #6

    По умолчанию

    Цитата Сообщение от Viktor D Посмотреть сообщение
    Спасибо за подсказки.
    Собственно говоря я уже это читал, просто некотрые моменты не понятны (учился давно по другой специальности (ТМС) и тогда комп был редкость. Проги писали на Фортране на листочке и сдавали преподу, а он окидывал взглядом и выносил вердикт - будет работать или нет).

    Цель моих действий сделать ФБ который будет осуществлять следующий алгоритм: вращение вперёд-пауза-вращение назад и всё это повторять в течении определённого времени.
    Делаю это для общего развития. На стандартных ФБ из овенлоджика уже сделано, теперь хочу освоить хотя бы в общих чертах ST. Привязаться хочу к функции DT потому как делала в ОЛ на BLINK и CTN и столкнулся с тем, что на длительных выдержках время уходит от встроенных часов из за конечной скорости работы программы. Приходилось вводить коррекцию.
    Предлагаю взять этот пример за основу и доработать под Ваши желания:
    Owen.jpg

    Код:
    function_block FPRP
    
        var_input
           OnOff : bool;    // Управление блоком
        end_var
    
        var_output
           FW, RW : bool;   // Сигналы вперед и назад
        end_var
    
        var
           State : udint;   // Текущее состояние
           t : udint;       // Метка времени события в мс
        end_var
    
        if OnOff then
            case State of
                0:  // Пауза 1 сек перед пуском вперед
                    if time_to_udint(get_time()) - t >= 1000 then
                        State := 1; FW := true; RW := false; t := time_to_udint(get_time());    // Пуск вперед
                    end_if
                1:  // Вращение вперед 2 сек перед паузой
                    if time_to_udint(get_time()) - t >= 2000 then
                        State := 2; FW := false; RW := false; t := time_to_udint(get_time());   // Пауза
                    end_if
                2:  // Пауза 1 сек перед пуском назад
                    if time_to_udint(get_time()) - t >= 1000 then
                        State := 3; FW := false; RW := true; t := time_to_udint(get_time());    // Пуск назад
                    end_if
                3:  // Вращение назад 2 сек перед паузой
                    if time_to_udint(get_time()) - t >= 2000 then
                        State := 0; FW := false; RW := false; t := time_to_udint(get_time());   // Пауза
                    end_if
            end_case
        else
            FW := false; RW := false; State := 0; t := 0;
        end_if
    end_function_block

  7. #7

    По умолчанию

    От суток до двух суток. Уже не помню какая там цифра набегала. На практике это и не важно в принципе. Просто тогда мы решили добиться точности и я в BLINK записывал 2 значения вкл - 1мкс, выкл 999мкс. Потом CTN ом считал количество секунд. А потом уже в залитой в ПР программе на макете сравнивал с часами реального времени ПРа и панели СП310. Затем уменьшал время выключенного состояния. Но такая регулировка получилась грубой.
    В принципе я хотел привязаться к системным перемненым секунды минуты часы для задачи общего времени выполнения цикла. Короткие промежутки вперёд-стоп-назад не так важны.
    Но как сделать не соображу пока.
    Опять же это чисто для понимания. На практике оно не так уж важно.

    В мануале rp_owen_logic.pdf есть такое:

    Функция GET_DATE_TIME
    Функция GET_DATE_TIME возвращает значение тип DT (4 байта), содержащее данные часов реального
    времени, в секундах с 00:00:00 1.01.2000 г., с учетом часового пояса, установленного в приборе
    Может к этой величине привязаться. По идее по ней внутренние часы сс мм чч и т.д. и должны работать.Следовательно расхождений выдержки с часами не должно быть.
    Или я что то не понимаю?
    Последний раз редактировалось Viktor D; 16.10.2024 в 07:00.

  8. #8

    По умолчанию

    Цитата Сообщение от Viktor D Посмотреть сообщение
    От суток до двух суток. Уже не помню какая там цифра набегала. На практике это и не важно в принципе. Просто тогда мы решили добиться точности и я в BLINK записывал 2 значения вкл - 1мкс, выкл 999мкс. Потом CTN ом считал количество секунд. А потом уже в залитой в ПР программе на макете сравнивал с часами реального времени ПРа и панели СП310. Затем уменьшал время выключенного состояния. Но такая регулировка получилась грубой.
    В принципе я хотел привязаться к системным перемненым секунды минуты часы для задачи общего времени выполнения цикла. Короткие промежутки вперёд-стоп-назад не так важны.
    Но как сделать не соображу пока.
    Опять же это чисто для понимания. На практике оно не так уж важно.

    В мануале rp_owen_logic.pdf есть такое:



    Может к этой величине привязаться. По идее по ней внутренние часы сс мм чч и т.д. и должны работать.Следовательно расхождений выдержки с часами не должно быть.
    Или я что то не понимаю?
    К точности работы часов реального времени ПР как раз было много претензий.
    Если вам точность не сильно важна, то можно использовать их.
    По поводу привязки - можете читать через GET_DATE_TIME текущее значение при начале нового периода, прибавлять к нему значение выдержки и ждать достижения этого значения, контролируя текущее значение времени через GET_DATE_TIME

  9. #9

    По умолчанию

    я может не всё понял, в чём проблема, но на форуме уже были жалобы на низкую точность частов в ПР

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

    По умолчанию

    почему не просто
    t : time;
    ?

    вангую что в else тоже
    t := time_to_udint(get_time());
    Последний раз редактировалось Валенок; 16.10.2024 в 08:41.

Страница 9 из 19 ПерваяПервая ... 7891011 ... ПоследняяПоследняя

Похожие темы

  1. Не получается опросить пр200 панелью сп310
    от дск в разделе Панели оператора (HMI)
    Ответов: 20
    Последнее сообщение: 24.01.2023, 10:13
  2. Подключение СП310 к пр200
    от Jakan в разделе Панели оператора (HMI)
    Ответов: 3
    Последнее сообщение: 22.08.2019, 23:23
  3. ПР200+СП310 в качестве МПР51
    от mouc1k в разделе Среда программирования OWEN Logic
    Ответов: 3
    Последнее сообщение: 25.12.2018, 11:30
  4. СП310 Сервер по Модбас ТСР + СП310 Слейв по Модбас RTU
    от Global в разделе Панели оператора (HMI)
    Ответов: 7
    Последнее сообщение: 19.04.2018, 11:16
  5. пр200+сп310
    от zamnarzanom в разделе Программируемые реле
    Ответов: 5
    Последнее сообщение: 10.10.2016, 09:13

Ваши права

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