Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- MODULE Module1
- VAR num hengerek{3}; !hengerek beolvasott pozicioja
- VAR num sorrend{3}; ! sorrend alapjan valo helyes poziciok
- VAR string pozicio{3} := ["az elso", "a masodik", "a harmadik"];
- VAR num eltolas{3} := [-150, 0, 150]; ! offset ertekek
- VAR num answer; !hengerek pozicioinak felhasznalo altal megadott beolvasasanal
- VAR bool unfinished; !ha meg igaz, hogy nem vegzett, fusson tovabb
- VAR num helyes; !helyes pozicio (i meg j mindig poziciok balrol jobbra ertve)
- VAR num koztes := 0; !koztes pozicio, amin muvelet végezheto plusz ciklus nelkul
- VAR string strj; !poziciok szamanak str-bol num-ba alakitasa
- VAR string strh; !hengerek szamanak str-bol num-ba alakitasa
- 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]];
- 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]];
- 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]];
- 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]];
- 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]];
- 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]];
- 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]];
- 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]];
- 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]];
- 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]];
- VAR intnum interrupt := 0;
- TRAP FutoszalagTrap
- FutoszalagStop;
- interrupt:=0;
- ENDTRAP
- PROC Megfog()
- PulseDO DO10_2;
- WaitTime 1;
- ENDPROC
- PROC Elenged()
- PulseDO DO10_1;
- WaitTime 1;
- ENDPROC
- PROC FutoszalagIndit()
- SetDO DO10_3, 1;
- WaitTime 1;
- ENDPROC
- PROC FutoszalagStop()
- SetDO DO10_3, 0;
- WaitTime 1;
- ENDPROC
- PROC Path_10()
- MoveJ Target_20,v1000,fine,MegfogoTool\WObj:=wobj0; !kezdo pozicio
- WHILE unfinished DO
- CONNECT interrupt WITH FutoszalagTrap;
- ISignalDI DI10_13, 1, interrupt;
- FOR j FROM 1 TO 3 DO
- IF hengerek{j} <> sorrend{j} THEN !ha nem egyezik valamelyik sorrend tomb elemevel az aktualis henger, akkor belep, kolunben kesz!
- strj := NumToStr(j,1);
- strh := NumToStr(hengerek{j},1);
- TPWrite strj + ". pozicion a " + strh + "-s henger van!"; !hibas, mert... x. henger y. pozicion van
- TPWrite "Pozicionalas szukseges!";
- MoveL Offs (Target_40, 0, eltolas{j}, 0),v1000,fine,MegfogoTool\WObj:=wobj0;
- MoveJ Offs (Target_30, 0, eltolas{j}, 0), v1000,fine,MegfogoTool\WObj:=wobj0;
- Megfog;
- MoveL Offs (Target_40, 0, eltolas{j}, 0),v1000,fine,MegfogoTool\WObj:=wobj0;
- MoveC Target_50, Target_60, v1000,fine,MegfogoTool\WObj:=wobj0;
- MoveL Target_70,v1000,fine,MegfogoTool\WObj:=wobj0;
- Elenged;
- MoveL Target_80,v1000,fine,MegfogoTool\WObj:=wobj0;
- FutoszalagIndit;
- ! futoszalag inditasa utan megkeressuk a helyes sorrend szerinti hengert, felemeljuk,
- ! majd ahonnan elobb a futoszalagra helyezett hengert felemeltuk, atrakjuk oda
- FOR i FROM 1 TO 3 DO
- IF hengerek{i} = sorrend{j} THEN
- helyes := i;
- ENDIF
- ENDFOR
- MoveJ Offs (Target_40, 0, eltolas{helyes}, 0),v1000,fine,MegfogoTool\WObj:=wobj0;
- MoveJ Offs (Target_30, 0, eltolas{helyes}, 0), v1000,fine,MegfogoTool\WObj:=wobj0;
- Megfog;
- MoveL Offs (Target_40, 0, eltolas{helyes}, 0),v1000,fine,MegfogoTool\WObj:=wobj0;
- MoveL Offs (Target_40, 0, eltolas{j}, 0),v1000,fine,MegfogoTool\WObj:=wobj0;
- MoveJ Offs (Target_30, 0, eltolas{j}, 0), v1000,fine,MegfogoTool\WObj:=wobj0;
- Elenged;
- hengerek{j} := sorrend{j}; !mivel a henger pozicioja valtozik, ezt a programban is rogziteni kell
- MoveL Offs (Target_40, 0, eltolas{j}, 0),v1000,fine,MegfogoTool\WObj:=wobj0;
- IF hengerek{helyes} <> sorrend{helyes} THEN
- FOR i FROM 1 TO 3 DO
- IF hengerek{i} = sorrend{helyes} THEN
- strj := NumToStr(i,1);
- strh := NumToStr(hengerek{i},1);
- TPWrite strj + ". pozicion a " + strh + "-s henger van!"; !hibas, mert... x. henger y. pozicion van
- TPWrite "Pozicionalas szukseges!";
- koztes := i;
- MoveJ Offs (Target_40, 0, eltolas{koztes}, 0),v1000,fine,MegfogoTool\WObj:=wobj0;
- MoveJ Offs (Target_30, 0, eltolas{koztes}, 0), v1000,fine,MegfogoTool\WObj:=wobj0;
- Megfog;
- MoveL Offs (Target_40, 0, eltolas{koztes}, 0),v1000,fine,MegfogoTool\WObj:=wobj0;
- MoveL Offs (Target_40, 0, eltolas{helyes}, 0),v1000,fine,MegfogoTool\WObj:=wobj0;
- MoveJ Offs (Target_30, 0, eltolas{helyes}, 0), v1000,fine,MegfogoTool\WObj:=wobj0;
- Elenged;
- MoveL Offs (Target_40, 0, eltolas{helyes}, 0),v1000,fine,MegfogoTool\WObj:=wobj0;
- ENDIF
- ENDFOR
- hengerek{helyes} := sorrend{helyes}; !mivel a henger pozicioja valtozik, ezt a programban is rogziteni kell
- ENDIF
- IF koztes = 0 THEN
- koztes:= helyes;
- ENDIF
- MoveL Target_90,v1000,fine,MegfogoTool\WObj:=wobj0;
- WaitDI DI10_13, 1;
- MoveJ Target_100,v1000,fine,MegfogoTool\WObj:=wobj0;
- Megfog;
- MoveJ Target_90,v1000,fine,MegfogoTool\WObj:=wobj0;
- MoveL Offs (Target_40, 0, eltolas{koztes}, 0),v1000,fine,MegfogoTool\WObj:=wobj0;
- MoveJ Offs (Target_30, 0, eltolas{koztes}, 0), v1000,fine,MegfogoTool\WObj:=wobj0;
- Elenged;
- hengerek{koztes} := sorrend{koztes};!mivel a henger pozicioja valtozik, ezt a programban is rogziteni kell
- ELSE
- unfinished:= FALSE;
- ENDIF
- ENDFOR
- TPWrite "Minden henger helyes sorrendben van!";
- TPWrite "Viszlat!";
- MoveJ Target_20,v1000,fine,MegfogoTool\WObj:=wobj0;
- IDelete interrupt;
- ENDWHILE
- ENDPROC
- PROC Main()
- VAR num n :=0;
- VAR num m :=0;
- unfinished := TRUE;
- TPWrite "Udvozlom!";
- TPReadFK n, "Elinditsam a programot?" , "Igen!" , "Nem!", "", stEmpty, "";
- IF n = 1 THEN
- FOR i FROM 1 TO 3 DO
- TPReadNum answer, "Melyik henger van balrol " + pozicio{i} + " pozicion ?";
- hengerek{i} := answer;
- ENDFOR
- TPReadFK m, "Milyen legyen a sorrend?" , "Novekvo!" , "Csokkeno!", "", stEmpty, "";
- IF m = 1 THEN
- TPWrite "Novekvo sorrendben valo mukodes!";
- sorrend := [1, 2, 3];
- Path_10;
- ELSEIF m = 2 THEN
- TPWrite "Csokkeno sorrendben valo mukodes!";
- sorrend := [3, 2, 1];
- Path_10;
- ELSE
- TPWrite "Nincs ilyen lehetoseg!";
- ENDIF
- ELSEIF n = 2 THEN
- TPWrite "Viszlat!";
- ELSE
- TPWrite "Nincs ilyen lehetoseg!";
- ENDIF
- ENDPROC
- ENDMODULE
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement