Показано с 1 по 8 из 8

Тема: ПЛК110 + энокдер не работает триггер по переднему фронту.

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

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

    По умолчанию

    Ветка бестолковая, пусть хотя-бы код для подключения энкодера и увеличения ко-ва импульсов на один оборот тут будет.
    Новичкам, таким как я, точно пригодится.
    Код:
    (*Объявление переменных*)
    PROGRAM Incoder
    VAR
    	R_TRIG_A1: R_TRIG;
    	F_TRIG_A1: F_TRIG;
    	R_TRIG_B1: R_TRIG;
    	F_TRIG_B1: F_TRIG;
    	R_TRIG_A2: R_TRIG;
    	F_TRIG_A2: F_TRIG;
    	R_TRIG_B2: R_TRIG;
    	F_TRIG_B2: F_TRIG;
    
    	IN: BYTE; (* Образ байта быстрых входов *)
    END_VAR
    
    (* Код програvмы Incoder*)
    IN:=SysPortIn(0);
    
    A1:=in.0;
    B1:=in.1;
    A2:=in.2;
    B2:=in.3;
    
    R_TRIG_A1(CLK:=A1 , Q=> );
    F_TRIG_A1(CLK:=A1 , Q=> );
    R_TRIG_B1(CLK:=B1 , Q=> );
    F_TRIG_B1(CLK:=B1, Q=> );
    
    R_TRIG_A2(CLK:=A2 , Q=> );
    F_TRIG_A2(CLK:=A2 , Q=> );
    R_TRIG_B2(CLK:=B2 , Q=> );
    F_TRIG_B2(CLK:=B2 , Q=> );
    
    IF R_TRIG_A2.Q AND NOT B2 THEN (* Одиночные импульсы*)
    sh_a2:=sh_a2+1; (*Сложение*)
    END_IF
    IF R_TRIG_A2.Q AND  B2 THEN 
    sh_a2:=sh_a2-1; (*Вычитание*)
    END_IF
    
    IF F_TRIG_A2.Q AND  B2 THEN (*Удвоение точности*)
    sh_a2:=sh_a2+1;
    END_IF
    IF F_TRIG_A2.Q AND NOT  B2 THEN
    sh_a2:=sh_a2-1;
    END_IF
    
    IF R_TRIG_B2.Q AND  A2 THEN (*Утроение точности*)
    sh_a2:=sh_a2+1;
    END_IF
    IF R_TRIG_B2.Q AND NOT A2 THEN
    sh_a2:=sh_a2-1;
    END_IF
    
    IF F_TRIG_B2.Q AND  A2 THEN (*Повышение ко-ва импульсно на 1 оборот в 4 раза*)
    sh_a2:=sh_a2-1;
    END_IF
    IF F_TRIG_B2.Q AND NOT  A2 THEN
    sh_a2:=sh_a2+1;
    END_IF
    Основная программа
    Код:
    (*Переменная *)
    PROGRAM PLC_PRG
    VAR
    	StartPlc: BOOL:=TRUE;
    END_VAR
    
    (*Тело программы*)
    
    IF StartPlc THEN
    SetIRQ(20);
    END_IF
    IF in_z2 THEN
    sh_a1:=sh_a1+1;
    END_IF
    
    
    
    StartPlc:=FALSE;
    Тригеры объявлены для двух энкодеров, используется в коде только энкодер 2 с фазами А2 и В2.
    Последний раз редактировалось Deanisii; 12.06.2024 в 09:26.

Похожие темы

  1. Не работает RS триггер.
    от Gatling в разделе ПЛК2хх
    Ответов: 6
    Последнее сообщение: 08.09.2022, 18:33
  2. Ответов: 14
    Последнее сообщение: 04.05.2018, 20:54
  3. Ложный импульс по фронту R_TRIG
    от skinnbatter в разделе ПЛК1хх
    Ответов: 4
    Последнее сообщение: 19.07.2017, 05:02
  4. ПЛК110-30 не работает
    от приборист в разделе ПЛК1хх
    Ответов: 1
    Последнее сообщение: 05.02.2016, 18:56
  5. Запоминание переменной по фронту импульса
    от Goga2000 в разделе Программируемые реле
    Ответов: 5
    Последнее сообщение: 21.03.2014, 15:40

Ваши права

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