Robot c«ng nghiÖp 66
Khi kÕt thóc mét hµm hoÆc thñ tôc ®îc gäi, nã tù ®éng tr¶ vÒ dßng lÖnh tiÕp theo.
CÊu tróc chung cña mét ch¬ng tr×nh nh sau :
; Dßng ®Çu tiªn dïng ghi chó vÒ néi dung ch¬ng tr×nh, dßng nÇy sÏ thÓ hiÖn trong
; hép héi tho¹i Compile/Edit ®Ó ngêi sö dông dÔ nhËn biÕt vÒ néi dung cña ch¬ng
; tr×nh.
Proc main ; b¾t ®Çu ch¬ng tr×nh chÝnh
(Khai b¸o biÕn)
(c¸c c©u lÖnh thÓ hiÖn néi dung ch¬ng tr×nh)
. . . . .
Endproc ; hÕt ch¬ng tr×nh chÝnh.
Proc (tªn thñ tôc) ; B¾t ®Çu mét thñ tôc
(khai b¸o c¸c tham biÕn nÕu cã)
(khai b¸o c¸c biÕn ®Þa ph¬ng)
(c¸c c©u lÖnh thÓ hiÖn néi dung thñ tôc)
. . . . .
Endproc ; hÕt mét thñ tôc
Func (tªn hµm) ; B¾t ®Çu mét hµm
(khai b¸o c¸c tham biÕn nÕu cã)
(khai b¸o c¸c biÕn ®Þa ph¬ng)
(c¸c c©u lÖnh thÓ hiÖn néi dung cña hµm)
. . . . .
return (biÕn) ; tr¶ gi¸ trÞ cña biÕn vÒ thñ tôc gäi
Endproc ; kÕt thóc hµm
5.4.4. Mét sè phÐp tÝnh dïng trong ASPECT :
ASPECT sö dông nhiÒu phÐp tÝnh sè häc vµ logic kh¸c nhau, díi ®©y giíi
thiÖu mét sè phÐp tÝnh hay dïng :
+, -, *, / PhÐp to¸n céng, trõ, nh©n, chia.
>, <, >=, <= Lín h¬n, nhá h¬n, lín h¬n hoÆc b»ng, nhá h¬n hoÆc b»ng.
!= Kh¸c víi
! NOT
&& AND
|| OR
++, -- T¨ng hoÆc gi¶m mét ®¬n vÞ.
?: Thùc hiÖn mét ®iÒu kiÖn
.v.v...
VÝ dô 1 : Cho A=2, B=4
A+B-- = 6 : A ®îc céng víi B tríc, vµ råi B gi¶m ®i 1 (B=3).
A+ --B = 5 : Tríc tiªn B gi¶m ®i 1, sau ®ã céng A víi B.
VÝ dô 2 :
TS. Ph¹m §¨ng Phíc
Robot c«ng nghiÖp 67
Proc main
integer A,B,C,D
integer Tong
A=2, B=4
C=A+B
Tong = A+ --B
D=(tong < C) ? tong : C ; nÕu Tong < C th× D=Tong, nÕu sai D=C
Usermsg " D = %d , C = %d" D,C
Endproc
KÕt qu¶ D = 5 vµ C = 6.
5.4.5. Mét sè tõ lÖnh trong ASPECT hay dïng khi ®iÒu khiÓn robot:
Ng«n ng÷ ASPECT cã h¬n 600 tõ lÖnh, dïng víi nhiÒu môc ®Ých kh¸c nhau.
PhÇn nÇy chØ giíi thiÖu s¬ lît mét sè lÖnh hay dïng khi lËp tr×nh ®iÒu khiÓn
robot.
Ngêi ®äc cã thÓ sö dông môc Help trªn menu cöa sæ so¹n th¶o ®Ó biÕt thªm
chi tiÕt.
* C¸c lÖnh c¨n b¶n :
call :
Gäi mét thñ tôc hoÆc hµm tõ ch¬ng tr×nh chÝnh hoÆc tõ mét thñ tôc
kh¸c.
Có ph¸p :
Khi gäi mét hµm :
call <tªn> [WITH <danh s¸ch tham biÕn>] [INTO <biÕn>]
Khi gäi mét thñ tôc :
call <tªn> [WITH <danh s¸ch tham biÕn>]
tªn : tªn thñ tôc hoÆc hµm ®îc gäi.
Danh s¸ch tham biÕn : Tªn c¸c tham biÕn trong thñ tôc hoÆc hµm.
INTO <biÕn> : ChØ dïng khi gäi mét hµm, biÕn sÏ chøa gi¸ trÞ tr¶ l¹i
cña hµm.
case/endcase :
C©u lÖnh lùa chän, dïng víi tõ lÖnh Switch.
ph¸p :
switch <biÕn> (string | integer | long)
case <gi¸ trÞ so s¸nh> (string | integer | long)
...
[exitswitch] ; tho¸t khái khèi lÖnh switch kh«ng
... ®iÒu kiÖn.
[endcase]
[default] ; thùc hiÖn khi c¸c trêng hîp so s¸nh
... ®Òu kh«ng ®óng.
endcase
TS. Ph¹m §¨ng Phíc
Robot c«ng nghiÖp 68
endswitch
VÝ dô :
proc main
integer Alpha = 2 ; g¸n gi¸ trÞ ban ®Çu cho biÕn Alpha=2.
switch Alpha ; t×m gi¸ trÞ cña biÕn sè
case 0 ; Trêng hîp biÕn cã gi¸ trÞ b»ng 0.
usermsg "Alpha = 0" ; XuÊt kÕt qu¶ trªn cöa sæ mµn h×nh.
Endcase ; HÕt trêng hîp so s¸nh thø nhÊt.
case 1 ; t¬ng tù nh trªn . . .
usermsg "Alpha = 1"
endcase
case 2
usermsg "Alpha = 2"
endcase
endswitch ; lu«n ®i kÌm víi switch ®Ó kÕt thóc khèi lÖnh switch.
endproc
if / endif : C©u lÖnh ®iÒu kiÖn.
Có ph¸p :
if <®iÒu kiÖn 1>
...
[elseif <®iÒu kiÖn 2]
...
[else]
...
endif ; kÕt thóc khèi lÖnh if.
(LÖnh nÇy gÇn gièng nh lÖnh if trong Pascal, kh«ng cã tõ then).
while/endwhile :
LÆp l¹i mét sè c©u lÖnh cho ®Õn khi ®iÒu kiÖn kiÓm tra lµ sai.
VÝ dô :
proc main
integer SoLanLap = 0 ; BiÕn nguyªn dïng ®Ó ®Õm sè lÇn lÆp
while (SoLanLap++) < 3 ; Mçi lÇn lÆp biÕn t¨ng gi¸ trÞ thªm mét
endwhile ; KÕt thóc khèi lÖnh while.
usermsg "Toi da lap %d lan" SoLanLap
endproc
for/endfor : C©u lÖnh lÆp theo mét sè lÇn nhÊt ®Þnh
ph¸p :
for <biÕn ®Õm>=<gi¸ trÞ ban ®Çu> UPTO | DOWNTO <gi¸ trÞcuèi>
[BY <bíc>]
.
[exitfor] ; ChuyÓn ®iÒu khiÓn tho¸t khái c©u lÖnh lÆp for
. ; ®Õn dßng lÖnh sau endfor
TS. Ph¹m §¨ng Phíc
Robot c«ng nghiÖp 69
endfor
Return :
Tho¸t khái thñ tôc hoÆc hµm hiÖn t¹i, tiÕp tôc ë c©u lÖnh tiÕp theo cña
thñ tôc ®· gäi.
* C¸c lÖnh kh¸c :
transmit : Göi mét dßng ký tù (lÖnh) ®Õn cæng ®ang ho¹t ®éng.
VÝ dô :
proc main
transmit "B-250~C-200~F-240~~P+200” ; ChuyÓn lÖnh ®iÒu khiÓn robot TG-45
endproc
Pause : T¹m dõng thùc hiÖn ch¬ng tr×nh trong mét sè gi©y qui ®Þnh.
ph¸p :
pause <sè gi©y | FOREVER>
VÝ dô :
Pause 5 : t¹m dõng thùc hiÖn ch¬ng tr×nh 5 gi©y
Pause Forever : Dõng víi thêi gian kh«ng x¸c ®Þnh. LÖnh Pause cã thÓ
®îc huû bá khi Ên Ctl-Break.
Ký tù ~ thay cho lÖnh pause víi gi¸ trÞ dõng b»ng 0,5 gi©y.
VÝ dô : Transmit “B+200~~E-100”
Sau khi truyÒn lÖnh B+200 sÏ t¹m dõng 1 gi©y (2 ký tù ~) míi truyÒn tiÕp
lÖnh E-100.
chdir : Thay ®æi ®êng dÉn ®Õn mét æ ®Üa hoÆc th môc kh¸c.
Có ph¸p : chdir <”Tªn ®êng dÉn”>
VÝ dô :
Chdir “C:\ procom3\Robot”
copyfile : Copy mét file theo ®êng dÉn hoÆc víi mét tªn kh¸c.
Có ph¸p : copyfile <”file nguån”> <”file ®Ých”>
VÝ dô :
copy “C:\ Procom3\ aspect\ robot.was” “C:\ tam\ robot1.txt”
delfile : Xo¸ mét file theo chØ ®Þnh.
Có ph¸p : delfile <”tªn file”>
mkdir : T¹o mét th môc míi.
Có ph¸p : mkdir <”tªn th muc”>
rmdir : Xo¸ mét th môc (trèng)
TS. Ph¹m §¨ng Phíc
Robot c«ng nghiÖp 70
Có ph¸p : rmdir <”tªn th môc”>
rename : §æi tªn mét file.
Có ph¸p : rename <”tªn file cò”> <”tªn file míi”>
Fopen : Më mét file ®Ó ®äc hoÆc ghi.
Có ph¸p : fopen <sè hiÖu file> <”tªn file”> READ | WRITE |
READWRITE | CREATE | APPEND | READAPPEND
C¸c tuú chän : READ : chØ ®äc; READWRITE : cã thÓ ®äc vµ ghi;
CREATE : T¹o míi; APPEND : Ghi tiÕp vµo cuèi file;
READAPPEND : Cã thÓ ®äc vµ ghi tiÕp vµo cuèi file.
Fclose : §ãng mét file ®· më.
Có ph¸p : Fclose <sè hiÖu file>
fputs : Ghi mét chuçi ký tù lªn file.
Có ph¸p : fputs <sè hiÖu file> <”chuçi ký tù”>
VÝ dô :
proc main
string Fname = "Vidu.txt" ; Tªn file ®îc më.
if fopen 0 Fname CREATE ; T¹o míi vµ më mét file cã tªn “Vidu.txt”
fputs 0 "Day la file moi duoc mo !" ; Ghi mét chuçi lªn file.
fclose 0 ; §ãng file ®· ®îc t¹o míi vµ më.
else
errormsg "Couldn't open file `"%s`"." Fname
endif
endproc
feof : KiÓm tra ®iÒu kiÖn ®· ë cuèi mét file.
Có ph¸p : feof <sè hiÖu file> [biÕn nguyªn]
[biÕn nguyªn] : cã gi¸ trÞ 0 nÕu cha kÕt thóc file, b»ng 1
nÕu ®· kÕt thóc file.
Fgets : §äc mét dßng ký tù tõ mét tÖp ®· më ghi vµo mét biÕn.
Có ph¸p : fgets <sè hiÖu file> <tªn biÕn kiÓu string>
VÝ dô :
proc main
string Fname = "Vidu.txt" ; Tªn file cÇn ®äc
string chuoi ; BiÕn chuoi nhËn gi¸ trÞ ®äc tõ file.
if fopen 0 Fname READ ; Më file chØ ®Ó ®äc (sè hiÖu file id=0).
while not feof 0 ; LÆp l¹i khi cha kÕt thóc file.
fgets 0 FInput ; §äc mét dßng tõ file
TS. Ph¹m §¨ng Phíc