Aseron

Sorbarakas_v1

May 16th, 2018
639
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. MODULE Module1
  2.     VAR num hengerek{3}; !hengerek beolvasott pozicioja
  3.     VAR num sorrend{3}; ! sorrend alapjan valo helyes poziciok
  4.     VAR string pozicio{3} := ["az elso", "a masodik", "a harmadik"];
  5.     VAR num eltolas{3} := [-150, 0, 150]; ! offset ertekek
  6.     VAR num answer; !hengerek pozicioinak felhasznalo altal megadott beolvasasanal
  7.     VAR bool unfinished; !ha meg igaz, hogy nem vegzett, fusson tovabb
  8.     VAR num helyes; !helyes pozicio (i meg j mindig poziciok balrol jobbra ertve)
  9.     VAR num koztes := 0; !koztes pozicio, amin muvelet v√©gezheto plusz ciklus nelkul
  10.     VAR string strj; !poziciok szamanak str-bol num-ba alakitasa
  11.     VAR string strh; !hengerek szamanak str-bol num-ba alakitasa
  12.     CONST robtarget Target_10:=[[465.000171125,0,577.000019014],[0.499999683,0.500000317,-0.500000317,-0.499999683],[0,0,0,0],[9E9,9E9,9E9,9E9,9E9,9E9]];
  13.     CONST robtarget Target_20:=[[465.000042379,0,577.000004709],[0.499999922,0.500000078,-0.500000078,-0.499999922],[0,0,0,0],[9E9,9E9,9E9,9E9,9E9,9E9]];
  14.     CONST robtarget Target_30:=[[707.364580278,0,126.655665543],[0.499999683,0.500000317,-0.500000317,-0.499999683],[0,0,0,0],[9E9,9E9,9E9,9E9,9E9,9E9]];
  15.     CONST robtarget Target_40:=[[692.364678146,0,252.338804923],[0.499999668,0.500000332,-0.500000332,-0.499999668],[-1,0,-1,0],[9E9,9E9,9E9,9E9,9E9,9E9]];
  16.     CONST robtarget Target_50:=[[173.65155778,670.234275478,252.338804923],[0.701433155,0.701434086,-0.089391762,-0.089391644],[0,-1,-1,0],[9E9,9E9,9E9,9E9,9E9,9E9]];
  17.     CONST robtarget Target_60:=[[-428.25,535.55,252.339],[0.661948307,0.661948307,0.248645207,0.248645207],[1,0,-1,0],[9E9,9E9,9E9,9E9,9E9,9E9]];
  18.     CONST robtarget Target_70:=[[-428.248,535.554,56.752],[0.661948307,0.661948307,0.248645207,0.248645207],[1,0,-1,0],[9E9,9E9,9E9,9E9,9E9,9E9]];
  19.     CONST robtarget Target_80:=[[-428.25,535.55,252.339],[0.661948307,0.661948307,0.248645207,0.248645207],[1,0,-1,0],[9E9,9E9,9E9,9E9,9E9,9E9]];
  20.     CONST robtarget Target_90:=[[573.525,535.318,256.643],[0.664436053,0.657606978,0.249669028,0.2524741],[0,-1,-1,0],[9E9,9E9,9E9,9E9,9E9,9E9]];
  21.     CONST robtarget Target_100:=[[573.525,535.318,56.75],[0.664436053,0.657606978,0.249669028,0.2524741],[0,-1,-1,0],[9E9,9E9,9E9,9E9,9E9,9E9]];
  22.     VAR intnum interrupt := 0;
  23.  
  24.     TRAP FutoszalagTrap
  25.         FutoszalagStop;
  26.         interrupt:=0;
  27.     ENDTRAP
  28.     PROC Megfog()
  29.         PulseDO DO10_2;
  30.         WaitTime 1;
  31.     ENDPROC
  32.     PROC Elenged()
  33.         PulseDO DO10_1;
  34.         WaitTime 1;
  35.     ENDPROC  
  36.     PROC FutoszalagIndit()
  37.         SetDO DO10_3, 1;
  38.         WaitTime 1;
  39.     ENDPROC
  40.     PROC FutoszalagStop()
  41.         SetDO DO10_3, 0;
  42.         WaitTime 1;
  43.     ENDPROC
  44.     PROC Path_10()
  45.         MoveJ Target_20,v1000,fine,MegfogoTool\WObj:=wobj0; !kezdo pozicio
  46.         WHILE unfinished DO
  47.            
  48.             CONNECT interrupt WITH FutoszalagTrap;
  49.             ISignalDI DI10_13, 1, interrupt;
  50.            
  51.             FOR j FROM 1 TO 3 DO
  52.                 IF hengerek{j} <> sorrend{j} THEN !ha nem egyezik valamelyik sorrend tomb elemevel az aktualis henger, akkor belep, kolunben kesz!  
  53.                     strj := NumToStr(j,1);
  54.                     strh := NumToStr(hengerek{j},1);
  55.                     TPWrite strj + ". pozicion a " + strh + "-s henger van!"; !hibas, mert... x. henger y. pozicion van
  56.                     TPWrite "Pozicionalas szukseges!";
  57.                     MoveL Offs (Target_40, 0, eltolas{j}, 0),v1000,fine,MegfogoTool\WObj:=wobj0;
  58.                     MoveJ Offs (Target_30, 0, eltolas{j}, 0), v1000,fine,MegfogoTool\WObj:=wobj0;
  59.                     Megfog;
  60.                     MoveL Offs (Target_40, 0, eltolas{j}, 0),v1000,fine,MegfogoTool\WObj:=wobj0;
  61.                     MoveC Target_50, Target_60, v1000,fine,MegfogoTool\WObj:=wobj0;
  62.                     MoveL Target_70,v1000,fine,MegfogoTool\WObj:=wobj0;
  63.                     Elenged;
  64.                     MoveL Target_80,v1000,fine,MegfogoTool\WObj:=wobj0;
  65.                     FutoszalagIndit;
  66.                     ! futoszalag inditasa utan megkeressuk a helyes sorrend szerinti hengert, felemeljuk,
  67.                     ! majd ahonnan elobb a futoszalagra helyezett hengert felemeltuk, atrakjuk oda
  68.                     FOR i FROM 1 TO 3 DO
  69.                         IF hengerek{i} = sorrend{j} THEN
  70.                             helyes := i;      
  71.                         ENDIF
  72.                     ENDFOR
  73.                     MoveJ Offs (Target_40, 0, eltolas{helyes}, 0),v1000,fine,MegfogoTool\WObj:=wobj0;
  74.                     MoveJ Offs (Target_30, 0, eltolas{helyes}, 0), v1000,fine,MegfogoTool\WObj:=wobj0;
  75.                     Megfog;
  76.                     MoveL Offs (Target_40, 0, eltolas{helyes}, 0),v1000,fine,MegfogoTool\WObj:=wobj0;
  77.                     MoveL Offs (Target_40, 0, eltolas{j}, 0),v1000,fine,MegfogoTool\WObj:=wobj0;
  78.                     MoveJ Offs (Target_30, 0, eltolas{j}, 0), v1000,fine,MegfogoTool\WObj:=wobj0;
  79.                     Elenged;
  80.                     hengerek{j} := sorrend{j}; !mivel a henger pozicioja valtozik, ezt a programban is rogziteni kell
  81.                     MoveL Offs (Target_40, 0, eltolas{j}, 0),v1000,fine,MegfogoTool\WObj:=wobj0;
  82.                    
  83.                     IF hengerek{helyes} <> sorrend{helyes} THEN
  84.                         FOR i FROM 1 TO 3 DO
  85.                             IF hengerek{i} = sorrend{helyes} THEN
  86.                                 strj := NumToStr(i,1);
  87.                                 strh := NumToStr(hengerek{i},1);
  88.                                 TPWrite strj + ". pozicion a " + strh + "-s henger van!"; !hibas, mert... x. henger y. pozicion van
  89.                                 TPWrite "Pozicionalas szukseges!";
  90.                                 koztes := i;
  91.                                 MoveJ Offs (Target_40, 0, eltolas{koztes}, 0),v1000,fine,MegfogoTool\WObj:=wobj0;
  92.                                 MoveJ Offs (Target_30, 0, eltolas{koztes}, 0), v1000,fine,MegfogoTool\WObj:=wobj0;
  93.                                 Megfog;
  94.                                 MoveL Offs (Target_40, 0, eltolas{koztes}, 0),v1000,fine,MegfogoTool\WObj:=wobj0;
  95.                                 MoveL Offs (Target_40, 0, eltolas{helyes}, 0),v1000,fine,MegfogoTool\WObj:=wobj0;
  96.                                 MoveJ Offs (Target_30, 0, eltolas{helyes}, 0), v1000,fine,MegfogoTool\WObj:=wobj0;
  97.                                 Elenged;
  98.                                 MoveL Offs (Target_40, 0, eltolas{helyes}, 0),v1000,fine,MegfogoTool\WObj:=wobj0;
  99.                             ENDIF
  100.                         ENDFOR
  101.                         hengerek{helyes} := sorrend{helyes}; !mivel a henger pozicioja valtozik, ezt a programban is rogziteni kell
  102.                     ENDIF
  103.                    
  104.                     IF koztes = 0 THEN
  105.                         koztes:= helyes;
  106.                     ENDIF
  107.                    
  108.                     MoveL Target_90,v1000,fine,MegfogoTool\WObj:=wobj0;
  109.                    
  110.                     WaitDI DI10_13, 1;
  111.                    
  112.                     MoveJ Target_100,v1000,fine,MegfogoTool\WObj:=wobj0;
  113.                     Megfog;
  114.                     MoveJ Target_90,v1000,fine,MegfogoTool\WObj:=wobj0;
  115.                     MoveL Offs (Target_40, 0, eltolas{koztes}, 0),v1000,fine,MegfogoTool\WObj:=wobj0;
  116.                     MoveJ Offs (Target_30, 0, eltolas{koztes}, 0), v1000,fine,MegfogoTool\WObj:=wobj0;
  117.                     Elenged;
  118.                     hengerek{koztes} := sorrend{koztes};!mivel a henger pozicioja valtozik, ezt a programban is rogziteni kell
  119.                 ELSE
  120.                     unfinished:= FALSE;
  121.                 ENDIF
  122.             ENDFOR
  123.             TPWrite "Minden henger helyes sorrendben van!";
  124.             TPWrite "Viszlat!";
  125.             MoveJ Target_20,v1000,fine,MegfogoTool\WObj:=wobj0;
  126.             IDelete interrupt;
  127.         ENDWHILE  
  128.     ENDPROC
  129.    
  130.     PROC Main()
  131.         VAR num n :=0;
  132.         VAR num m :=0;
  133.         unfinished := TRUE;
  134.         TPWrite "Udvozlom!";
  135.         TPReadFK n, "Elinditsam a programot?" , "Igen!" , "Nem!", "", stEmpty, "";
  136.         IF n = 1 THEN
  137.             FOR i FROM 1 TO 3 DO
  138.                 TPReadNum answer, "Melyik henger van balrol " + pozicio{i} + " pozicion ?";
  139.                 hengerek{i} := answer;
  140.             ENDFOR
  141.             TPReadFK m, "Milyen legyen a sorrend?" , "Novekvo!" , "Csokkeno!", "", stEmpty, "";
  142.             IF m = 1 THEN
  143.                 TPWrite "Novekvo sorrendben valo mukodes!";
  144.                 sorrend := [1, 2, 3];
  145.                 Path_10;
  146.             ELSEIF m = 2 THEN
  147.                 TPWrite "Csokkeno sorrendben valo mukodes!";
  148.                 sorrend := [3, 2, 1];
  149.                 Path_10;
  150.             ELSE
  151.                 TPWrite "Nincs ilyen lehetoseg!";
  152.             ENDIF
  153.         ELSEIF n = 2 THEN
  154.             TPWrite "Viszlat!";
  155.         ELSE
  156.                 TPWrite "Nincs ilyen lehetoseg!";
  157.         ENDIF
  158.     ENDPROC
  159. ENDMODULE
RAW Paste Data