
FUNCTION_BLOCK Tfb_nytovacka
  VAR_TEMP
    poc1 : INT;
    pom_pozad_naloz_konc : USINT;
    pom_kusu_pridani : UINT;    
  END_VAR

//------------------------------------------------------------------------------
// 
// -pozadavek_koncovka = pozadavek nanytovani (pokud koncovka neni na luzku, tak se nabere) 0 ne , 1 vlevo 2 vpravo
// 
//------------------------------------------------------------------------------
		out_aretace_luzka = (out_nytov_luzko_vy AND in_luzko_vy);
		out_ofuk_nyt = (cas_ofuk > 0);

CASE koncovka OF
    0 :      
           out_nytov_luzko_za = 1; // luzko je zasunute
	IF(pozadek_koncovka > 0) THEN // pokud se m nabrat koncovka
	   IF NOT(in_koncovka_nalozena) THEN // neni  v lku , meme naloit
	      koncovka = 10;
	   ELSE
	   chyba(ch1 := 50, ch2 := 80); // Chyba nytovani // v nastroji zustala stara koncovka
	    koncovka := 255;
	   END_IF;
	ELSE
	   IF NOT(in_koncovka_nalozena) THEN // koncovka je nalozena
	   koncovka = 1;
	   END_IF;                  
	END_IF;

   1: // luko nahoru
	 IF (in_koncovka_nalozena) THEN  //neni nabrana koncovka 
            pozadek_koncovka :=  minuly_pozadavek_nalozeni_koncovky;
            koncovka_za := 50;  //na dalsi akci
          END_IF;
	IF (koncovka_za <> 50) THEN  //pokud se nema nejdrive nabirat koncovka          
         IF (nabehly_tlak_hydrauliky()) THEN   //nabehly tlak hydrauliky BOOL funkce pokud pravda muzem pokracovat
	      out_nytov_luzko_vy = 1; // vysunut luka
	      out_nytov_luzko_zas = 0; // odfouknut vzduchu 
	      cas_koncovka := cas_vysunuti_luzka;  // nahozeni casovace
	  IF ((nalozeni_koncovky = 1)) THEN  //pridzeni pri nytovani vlevo
		out_pritlacne_kola_vystup := 1; // pridrzeni na vystupu 
	  ELSE 
	    IF ((nalozeni_koncovky = 2)) THEN  // pridzeni pri nytovani vpravo 		
		out_pritlacne_kola_vstup := 1;  //pridrzeni lamely na zacatku
	    END_IF;
	  END_IF;
		koncovka = 2;
	 END_IF;	
        END_IF;
	
   2: // kontrola luzka nahoe pokud jo vysunut ntovac hlavy
	IF(in_luzko_vy) THEN // luzko je vysunut	 	  
	  out_nyt_hlava_d = 1; nytovaci hlava dolu
	  out_kleste_koncovky := 1;  //otevreni klesti
	  cas_koncovka = cas_koncovka_nyt;
	  koncovka = 3; // dali akce
	ELSE
	 IF(cas_koncovka = 0) THEN
	  IF NOT(in_luzko_vy) THEN // nevysunulo se luzko + dosel cas = chyba
	    koncovka = 255;
		chyba(ch1 := 63, ch2 := 97);  //"Chyba nastroje nytovani koncovek " / "-Nevysunulo se luzko"
	  END_IF;
	 END_IF;
	END_IF;

    3: //vracen do pvodnich poloh
	IF(cas_koncovka = 0)THEN // konec nytovani	 
	  out_nyt_hlava_d = 0; nytovaci hlava do puvodni polohy  
	  out_pritlacne_kola_vystup := 0;
	  out_pritlacne_kola_vstup := 0;
	  out_nytov_luzko_vy = 0;
	  out_nytov_luzko_zas = 1;
	  cas_koncovka = 200; // nahozeni casovae
	  koncovka = 4;
        END_IF;

    4: // kontrola luzka
	IF(in_luzko_za)THEN
	  out_nyt_luzko_za = 1;
	  IF(je_vyroba)
	    IF(nalozeni_koncovky = 1) // vlevo
	 	pozadek_koncovka= 1;
		koncovka = 0;
	     ELSE // vpravo
	        pozadek_koncovka= 2;
	        koncovka = 0; // novy pln
	    END_IF;
	  END_IF; 
	ELSE
	 IF(cas_koncovka = 0) THEN
	   IF NOT(in_luzko_za) THEN // dosel cas a luzko nezasunuto = chyba   
	    chyba(ch1 := 63, ch2 := 98);  //"Chyba nastroje nytovani koncovek - za nuzkama" / "-Nezasunulo se luzko"
	     koncovka = 255; // chyba
	   END_IF;
	 END_IF; 
	  

  10:   
      IF ((pozadavek_koncovka = 1)) THEN  //koncovka vlevo
        nalozeni_koncovky := 1; // vlevo pomocna promenna        
      ELSE // koncovka vpravo
	IF ((pozadavek_koncovka = 2)) THEN
	nalozeni_koncovky := 2; // pravo pomocna promenna           
      END_IF;
      out_nytov_luzko_vy := 0;  //vychozi klidova poloha
      out_nytov_luzko_za := 1; // zasunut lko, provede se kontrola      
      out_brzda_koncovky := 0;  //zabrzdene koncovky
      out_kleste_koncovky := 0;  //zavrene klesti
      out_pretoc_luzka_nyt := 0;  // poloha luzka je 0 - vlevo, 1 - vpravo
      out_pretoc_luzka_nab := 0;     
      cas_ofuk := 250;  // ofuk koncovek 
      cas_koncovka := 200;  //50;  //[10 ms] nahozeni casovace
      koncovka := 11;  //na dalsi akci  

   11 :  // kontrola zasunuti luzka a otoceni luzka do nabijeni
      IF (in_luzko_za) THEN  //luzko zasunuto                    
        out_pretoc_luzka_nab := 1; // pesunut do nabijeni (stredni poloha luzka)
	out_aretace_nab = 1;
        cas_koncovka_za := 70;  //[10 ms] nahozeni casovace        
        koncovka_za := 12;  //na dalsi akci
      ELSE
        IF (cas_koncovka_za = 0) THEN  //vyprsel cas + luzko neni zasunute = chyba
          chyba(ch1 := 63, ch2 := 98);  //"Chyba nastroje nytovani koncovek - za nuzkama" / "-Nezasunulo se luzko"
        END_IF;
      END_IF;
	
    12 :  
      IF (cas_koncovka = 0) THEN  //vyprsel cas               
        cas_ofuk := 250;  //dofouknuti koncovek okamzite
        cas_koncovka := 120;  //[10 ms] nahozeni casovace
        IF (in_koncovka_nalozena) THEN  //koncovka neni na luzku
          out_brzda_koncovky := 1;  //odbrzdeni koncovky
          out_kleste_koncovky := 1;  //otevreni klesti
        END_IF;        
        koncovka_za := 13;  //na dalsi akci
      END_IF;   

     13: // kontrola koncovky v luzku

        IF (cas_koncovka = 0) THEN  //vyprsel cas   
         IF (in_koncovka_nalozena) THEN  //koncovka neni na luzku         
              chyba(ch1 := 62, ch2 := 81);  //"Chyba nastroje nytovani koncovek " / "-Koncovka neni v nastroji"
            END_IF;
          ELSE
	    out_aretace_nab = 0; // zruseni aretace           
            out_kleste_koncovky := 0;  //zavreni klesti
	    out_brzda_koncovky := 0;  //zabrzdeni koncovky
	    pozadek_koncovka = 0; // koncovka je nalozena muzeme vynulovat pozadavek
	    koncovka = 14;
          END_IF;

     14 :  // pretoceni luzka do nytovani
      IF (cas_koncovka_za = 0) THEN  //vyprsel cas
        out_nytov_luzko_za := 1;   // porad zasunut luzko, abychom mohli otacet             
        IF(nalozeni_koncovky = 1) // otoceni vlevo
	 out_pretoc_luzka_nab = 0;
	 out_pretoc_luzka_nyt := 0;
         cas_koncovka := 50;
	ELSE // otoceni vpravo
	 out_pretoc_luzka_nab = 0;
	 out_pretoc_luzka_nyt := 1;
	 cas_koncovka := 50; 
	END_IF; 
        koncovka := 99;  //na dalsi akci
      END_IF;

   99 :  //ukonceni
      IF (cas_koncovka_za = 0) THEN  //vyprsel cas      	       
        koncovka := 0;  // nazacatek       
      END_IF;
  END_CASE;  

END_FUNCTION_BLOCK;

VAR_GLOBAL  //promenna - instance funkcniho bloku
  fb_nytovacka : Tfb_nytovacka;
END_VAR

 FUNCTION nabehly_tlak_hydrauliky : BOOL  //vraci, zda nabehly tlak hydrauliky (zaroven hydrauliku i zapina)
  IF (cas_hydraulika = 0) THEN  //hydraulika vypla
    cas_hydraulika := c_cas_hydraulika;  //zapnuti hydrauliky
    nabehly_tlak_hydrauliky := 0;  //nastaveni vystupu funkce
  ELSE  //hydraulika zapla
    IF (cas_hydraulika <= (c_cas_hydraulika - c_cas_nabehu_hydr)) THEN  //nabehly jiz tlak hydrauliky
      cas_hydraulika := (c_cas_hydraulika - c_cas_nabehu_hydr);  //udrzovani zapnute hydrauliky
      nabehly_tlak_hydrauliky := 1;  //nastaveni vystupu funkce
    ELSE  //jeste nenabehly tlak hydrauliky
      nabehly_tlak_hydrauliky := 0;  //nastaveni vystupu funkce
    END_IF;
  END_IF;
END_FUNCTION;




        