Страница 14 из 20 ПерваяПервая ... 41213141516 ... ПоследняяПоследняя
Показано с 131 по 140 из 194

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

  1. #131

    По умолчанию

    Цитата Сообщение от Viktor D Посмотреть сообщение
    Сейчас я в отпуске, а всё железо на работе. Конечно проверил бы сам.
    Если ПР слейв, то вход останется TRUE, и выходные переменные останутся как до отключения панели.

  2. #132

    По умолчанию

    Спасибо. Буду пока програмку дома кодить.

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

    По умолчанию

    еще

    Цитата Сообщение от Viktor D Посмотреть сообщение
    Доброго дня всем.
    Возник такой вопрос:
    Допустим есть входная переменная в ФБ, которая привязана к инверсивной кнопке на панели управления. По её значению переключаются 2 выходные переменные. Что произойдёт с выходными сигналами ФБ при отключении питания панели если с панели приходило значение входной переменной true?

    Код:
        spd_sr_trig(S := spd_sel, R := not spd_sel);
        spd_1 := not spd_sr_trig.Q; spd_2 := spd_sr_trig.Q;
    ==>
    выкидывается тригер за ненадобностью и просто
    spd_1 := not spd_sel;
    spd_2 := spd_sel;

  4. #134

    По умолчанию

    Спасибо за совет. Просто я думал, если входной сигнал пропадёт то триггер будет запоминать последнее состояние входа.

  5. #135

    По умолчанию

    Цитата Сообщение от Viktor D Посмотреть сообщение
    Спасибо за совет. Просто я думал, если входной сигнал пропадёт то триггер будет запоминать последнее состояние входа.
    Чтобы триггер запомнил состояние, он должен быть энергонезависимый. Схемы таких триггеров, скрин 1 Схемы энергонезависимых триггеров.jpg
    На ST, входная и выходная переменная должна запоминаться вне блока. Если триггеров много, то запоминать маской бит.
    Последний раз редактировалось kondor3000; 08.11.2024 в 13:50.

  6. #136

    По умолчанию

    Появился ещё один вопрос. У меня в проекте есть несколько ПР200 с идентичными программами. Отличаются только адресом Cam. для каждого приходится создавать отдельное окно и в нём переназначать номера регистров.
    Может быть есть какой то способ использовать одно окно и из него обращаться к разным ПР200?

  7. #137

    По умолчанию

    Цитата Сообщение от Viktor D Посмотреть сообщение
    Появился ещё один вопрос. У меня в проекте есть несколько ПР200 с идентичными программами. Отличаются только адресом Cam. для каждого приходится создавать отдельное окно и в нём переназначать номера регистров.
    Может быть есть какой то способ использовать одно окно и из него обращаться к разным ПР200?
    Адреса регистров не надо менять, надо менять адрес ПР

  8. #138

    По умолчанию

    Доброй ночи.
    Прошу помощи в следующем вопросе:
    Хочу сделать ФБ для имитации токового датчика (температуры или другого какого типа). Смысл в том, что бы можно было имитировать работу датчика вращая энкодер.
    Собственно говоря частично получилось. На выходе целые числа 0 1 2 3 и тд. Если это считать милиамперами, то регулировка получается грубой. Если сделать счёт такой: 401 402 403 и потом всё разделить на 10, то получается приемлемо, но до 4 мА долго крутить ручку.
    В ФБ я сделал 2 варианта подсчёта с множителями х1 и х10.Переключение по кнопке энкодера. Только почему то при переключении накопленное значение меняется либо на 1 либо на 10. Подскажите как решить вопрос. Чего то я не знаю ещё.

    На выходе мне нужно число с плавающей запятой с точностью до десятых в пределах 4,0 --- 20,0 и что бы по нажатию кнопки менялись либо десятые либо единицы.

    Код:
    function_block encoder_1_
    
    
    
        var_input 
        in_1 : bool;
        in_2 : bool;
        reset : bool;
        end_var
    
        var_output 
        Q_int : udint;
        Q_float : real;
        end_var
    
        var   
        in_1_rt : SYS.RTRIG;
        in_2_rt : SYS.RTRIG;
        in_1_tof : SYS.TOF;
        in_2_tof : SYS.TOF;
        ctn : SYS.CTN;
        reset_ctn : SYS.CTN;
        mul_ctn : udint;
        res_int1 : udint;
        res_int2 : udint;
        res_1 : udint;
        res_2 : udint;
     
        stop_u : bool;
        stop_d : bool;
        ctn_r : bool;
        end_var
    
                                                       (*код программы*)
                                                       
                                                       
         in_1_tof(I := in_1 T := t#100ms); in_1_rt(i:=in_1);
         in_2_tof(I := in_2 T := t#100ms); in_2_rt(i:=in_2);                                              
                                                       
         reset_ctn(U := reset, R := reset_ctn.Q = 2 N := 0);                                              
         if reset_ctn.Q = 0 then  mul_ctn := 1;
         elsif reset_ctn.Q = 1 then mul_ctn := 2;
         else mul_ctn := 0;
         end_if
       
         case mul_ctn of
             
         1:
         ctn(U := in_1_rt.Q and not stop_u and not in_2_tof.Q, D := in_2_rt.Q and not stop_d and not in_1_tof.Q);
         stop_u := ctn.Q = 200;
         stop_d := ctn.Q = 0;
         res_int1 := ctn.Q;
        
         
         2:
         ctn(U := in_1_rt.Q and not stop_u and not in_2_tof.Q, D := in_2_rt.Q and not stop_d and not in_1_tof.Q);
         stop_u := ctn.Q = 20;
         stop_d := ctn.Q = 0;
         res_int2 := ctn.Q*10;
         
         end_case
         
         //дальше я не понимаю как сделать
         res_1:=res_int1; res_2:=res_int2;
         Q_int := res_1 + res_2;
         Q_float := udint_to_real(Q_int/10);
    Последний раз редактировалось Viktor D; 18.12.2024 в 04:38.

  9. #139

    По умолчанию

    Цитата Сообщение от Viktor D Посмотреть сообщение
    Доброй ночи.
    Прошу помощи в следующем вопросе:
    Хочу сделать ФБ для имитации токового датчика (температуры или другого какого типа). Смысл в том, что бы можно было имитировать работу датчика вращая энкодер.
    Собственно говоря частично получилось. На выходе целые числа 0 1 2 3 и тд. Если это считать милиамперами, то регулировка получается грубой. Если сделать счёт такой: 401 402 403 и потом всё разделить на 10, то получается приемлемо, но до 4 мА долго крутить ручку.
    В ФБ я сделал 2 варианта подсчёта с множителями х1 и х10.Переключение по кнопке энкодера. Только почему то при переключении накопленное значение меняется либо на 1 либо на 10. Подскажите как решить вопрос. Чего то я не знаю ещё.

    На выходе мне нужно число с плавающей запятой с точностью до десятых в пределах 4,0 --- 20,0 и что бы по нажатию кнопки менялись либо десятые либо единицы.
    Попробуйте так:
    Код:
    function_block encoder_1_
    
        var_input 
        in_1 : bool;
        in_2 : bool;
        reset : bool;
        N: real := 0.1;
        end_var
    
        var_output 
        count : real := 4;
        end_var
    
        var   
        in_1_rt : SYS.RTRIG;
        in_2_rt : SYS.RTRIG;
        in_1_tof : SYS.TOF;
        in_2_tof : SYS.TOF;
      
        end_var
    
         in_1_tof(I := in_1 T := t#100ms); in_1_rt(i:=in_1);
         in_2_tof(I := in_2 T := t#100ms); in_2_rt(i:=in_2);                                              
                                                       
    
        if reset then  count := 4.0;
        else 
            if in_1_rt.Q and not in_2_tof.Q then count := count + N; 
            elsif in_2_rt.Q and not in_1_tof.Q then count := count - N; 
            end_if
        end_if
        
        if count > 20.0 then  count := 20.0; end_if
        if count < 4.0 then  count := 4.0; end_if
    
    
     end_function_block
    Дискретность изменения выхода задаётся на одном из входов блока (N) - можете сами прикрутить туда то, как хотите её изменять

  10. #140

    По умолчанию

    Спасибо. Ваш вариант проще.
    Буду экспериментировать.

    Может быть есть смысл подсчёт вести не в целых числах, а десятичных и прибавлять/вычитать либо 1 либо 0.1 и это как то переключать....
    А по ресету устанавливать 12мА - середину диапазона.
    Надо пробовать разные варианты.

Страница 14 из 20 ПерваяПервая ... 41213141516 ... ПоследняяПоследняя

Похожие темы

  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

Ваши права

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