SƠ LƯỢCPhần chương trình chứa các lệnh điều khiển sẽ được chuyển vào card giao tiếp và lưu trữ tại đây.. Với chương trình quá lớn có thể vượt quá dung lượng của card giao tiếp, trong trư
Trang 1Chương 11:
TẬP LỆNH
SƠ LƯỢC
1 Tập lệnh
2 Lệnh “Label”
3 Lệnh “move”
4 Lệnh “moveto”
5 Lệnh “movep”
6 Lệnh “Send”
7 Lệnh “wait”
8 Lệnh “loop”
9 Lệnh “port” và “pulse”
10 Lệnh “reference”
11 Lệnh “tell”
12 Lệnh “Stop”
13 Lệnh “line”
14 Lệnh “repeat until”
15 Lệnh “go to”
16 Lệnh “null”
17 Lệnh “on-key”
18 Lệnh “on-port”
19 Lệnh “st-port”
20 Lệnh “arc-r” hoặc :arc-l”
Trang 2SƠ LƯỢC
Phần chương trình chứa các lệnh điều khiển sẽ được chuyển vào card giao tiếp và lưu trữ tại đây
Với chương trình quá lớn có thể vượt quá dung lượng của card giao tiếp, trong trường hợp này phải giải quyết bằng cách chia quá trình thực hiện thành nhiều bước, sau đó nạp vào card và thực hiện tuần tự
I _ TẬP LỆNH
1 Lệnh “Label”
- Ý nghĩa : Đặt nhản
- Cú pháp : [label].
- Ứng dụng : Một vài lệnh phân nhánh (nhảy), vị trí nhảy
được cho
tương đối và chỉ bắt đầu bằng một số
Ví dụ:
“goto-5” lệnh này nhảy luôn về lệnh thứ 5 Nhưng lệnh như thế này rất dề nhằm lẩn Do đó PAL-PC cho phép đặt vị trí nhảy bằng lệnh dưới dạng văn bản
Giải Thích
[Label] : Nhản bao gồm ký tự, ký số và dấu gạch dưới không được phép bắt đầu bằng ký số và kết thúc nhản bằng dấu hai chấm
Ví dụ:
- Các nhản hợp lệ
ANFANG:
prog-bokren:
anfang-zwitns:
Trang 3Nhãn ANFANG “và” anfang” được chương trình xem là khác nhau vì PAL-PC phân biệt chữ in và chữ thường
- Các nhãn không hợp lệ :
124: không cho phép dùng ký số làm nhản
1.Unterprog: Có dấu chấm “.” Và bắt đầu bằng một số PROG FRAESEN : Có khoảng trắng
Trong chương trình, nhản được dùng cho các lệnh nhảy
2 Lệnh “MOVE”
- Ý nghĩa : Di chuyển tương đối.
- Cú pháp : MOVE [x1 (xv)], [y1(v)], [z11 (zv1)], [z12(zv2)]
- Ứng dụng : Đây là lệnh cơ bản nhất dùng để di chuyển trục làm
việc
Giải Thích
[x1(xv)] : Khoảng dịch chuyển và tốc độ của trục x
[y1(yv)] : Khoảng dịch chuyển và tốc độ của trục y
[z11(zv1)] : Khoảng dịch chuyển và tốc độ lần 1 của trục z [z12(zv2)] : Khoảng dịch chuyển và tốc độ lần thứ 2 của trục z
Phải cho biết khoảng dịch chuyển và tốc độ dịch chuyển của từng trục, tốc độ được đặt trong dấu hoặc đơn sau khoảng dịch chuyển Các trị số được phân cách bằng dấu phẩy và chấm dứt lệnh bằng dấu chấm phẩy
Riêng đối với trục z có hai thông số vì quá trình dịch chuyển của trục này thường là lên và xuống
Phần thập phân của khoảng dịch chuyển được phân cách bằng dấu chấm, tốc độ phải là một số 21
Ví dụ:
Trang 4MOVE 2(2000); {Di chuyển trục x} MOVE 2(2000), 2(3000); {Di chuyển trục xy} MOVE 20(900), 30(1000), -30(100); {Di chuyển trục xz} MOVE 2(100), 2(100), 2.8)200), -2(100);
{Di chuyển trục xyz}
Lưu ý rằng PAL-PC có thể kiểm tra phạm vi di chuyển cho phép của máy
Quá trình dịch chuyển luôn luôn bắt đầu theo thứ tự với trục
xy sau đó đến thông số thứ nhất của trục z và cuối cùng là thông số thứ nhì của trục z Thứ tự này có thể thay đổi bằng lệnh
“line”
Đối với các trục không cần di chuyển, phải đặt khoảng dịch chuyển bằng 0, tốc độ đặt trong phạm vi cho phép (21 đến 20.000)
3 Lệnh “moveto”:
- Ý nghĩa : Di chuyển đến vị trí xác định
- Cú pháp : Moveto [x1(xv)], [y1(yv)], [z11(zv1)], [z12(zv2)];
- Ứng dụng : Cũng giống như lệnh move, tuy nhiên lệnh này có tác dụng di chuyển các trục đến một vị trí xuất phát xác định
Giải Thích
[x1 (xv)] : Khoảng dịch chuyển và tốc độ của trục x
[y1 ( (v)] : Khoảng dịch chuyển và tốc độ của trục y
[z11 (zv1)] : Khoảng dịch chuyển và tốc độ lần 1 của trục z [z12(zv2)] : Khoảng dịch chuyển và tốc độ lần thứ 2của trục z
Trang 5Để hiểu rỏ hơn về khái niệm vị trí tương đối và tuyệt đối đề nghị xem thêm tài liệu hướng dẫn card giao tiếp 4.0
4 Lệnh movep:
- Ý nghĩa : Dịch chuyển theo xung
- Cú pháp : MOVE [x1(xv)], [y1(yv)], [z11(zv1)], [z12(zv2)];
- Ứng dụng : Giống như lệnh move, tuy nhiện quá trình dịch
chuyển
sẽ dừng khi xuất hiện xung ở ngõ vào và lệnh tiếp theo sẽ được thực hiện
Giải Thích
[x1 (xv)] : Khoảng dịch chuyển và tốc độ của trục x
[y1 ( (v)] : Khoảng dịch chuyển và tốc độ của trục y
[z11 (zv1)] : Khoảng dịch chuyển và tốc độ lần 1 của trục z [z12(zv2)] : Khoảng dịch chuyển và tốc độ lần thứ 2của trục z
Xung vào phải có một bề rộng tối thiểu và khoảng cách 20s và tối đa là 100s, xung này được đưa đến ngõ vào stop của card giao tiếp, trong trường hợp xung quá rộng thì sai lệch movep nên thêm một lệnh trì hoãn
5 Lệnh send:
- Ý nghĩa : Phát ký hiệu đồng bộ
- Cú pháp : Send [zahl];
- Ứng dụng : Để tạo khả năng đồng bộ giữa hai card giao tiếp hoặc với máy tính thì phải gởi đi ký hiệu đồng bộ tại một vị trí xác định trong vùng dữ liệu
Giải Thích
[Zahl] là số từ 33 đến 126 (MÃ ASCII)
Trang 6Tín hiệu đồng bộ phải ở trong khoảng từ 33 đến 126, không nên dùng ký số 64 Ngay đầu chương trình nên định nghĩa các ký hiệu đồng bộ bằng lệnh #define, sau đó có thể dùng một tên cho ký hiệu đồng bộ
Ví dụ:
#define Bohren-ist-fertig 90; {ký hiệu đồng bộ bằng 90}
Send bohren-ist-fertig
6 Lệnh “wait”:
- Ý nghĩa : Ký hiệu đồng bộ
- Cú pháp : Wait [zahl], [offset];
- Ứng dụng : Đi kèm với lệnh send như đã trình
bày ở trên để chờ ký
- hiệu đồng bộ từ một card giao tiếp hoặc máy tính khác
Giải Thích
[Zahl] ký số từ 33 đến 126 (Mã ASCII)
[Offset] là một số cho biết vị trí số dòng lệnh trước hay sau hoặc một nhãn mà tại đó chương trình sẽ tiếp tục
- Card giao tiếp còn có thể thực hiện nhiều thao tác có thể tóm tắt như sau: Tiếp tục thực hiện sau khi nhận ký hiệu đồng bộ
- Card giao tiếp tự động thực hiện lệnh tiếp theo trong vùng dữ liệu khi nhận ký hiệu đồng bộ
Thực hiện tại vị trí tương đối:
Trang 7- Card giao tiếp nhảy đến vị trí được cho biết trong dòng lệnh
Nhận ký hiệu 127
- Card giao tiếp thực hiện reset và đợi lệnh từ máy tính
Ví dụ :
Wait 90, - 5; {Đợi ký hiệu 90 và sau khi nhận nhảy lùi lại
5 dòng trong chương trình}
Wait 80, ngang;{Đợi ký hiệu 80 và nhảy về phải “ngang” sau
khi nhận được ký hiệu.}
Ví dụ 2:
Label1:
Move {Phần lổ}
Send TELL-DA; {Sẵn sàng kiểm tra}
Wait TELL-OK, weiter; {Đợi cho phép}
Move {Đặt phần không dùng (phần hư)} Goto label1; {Thử phần tiếp theo}
Weiter:
Move {Đặt phần trong máy}
Move {Tại vị trí ra}
Goto label1; {Làm lại từ đầu}
Máy tính sẽ kiểm tra các phần và thông báo cho card giao tiếp theo một yêu cầu TELL-DA, sau khi kết thúc và các phần điều tốt thì TEELL-OK + 1 sẽ được chuyển đi và card giao tiếp sẽ đặt phần này vào máy, trong các trường hợp khác máy tính sẽ phát TEIL-OK + 0 và card giao tiếp sẽ đặt các phần không xử dụng và lổ vào phần tiếp theo
7 Lệnh “loop”
Trang 8- Ý nghĩa : Thực hiện vòng lặp
- Cú pháp : Loop [số] Times [label];
- Ứng dụng : Lặp lại các thao tác giống nhau
Giải Thích
[số] số từ 0 đến 32767, nếu bằng 0 có nghĩa là vòng lặp không chấm dứt
[Label] Lặp lại từ nhản xác định
Ví dụ 1:
Loop _1:
Move {Di chuyển }
-Loop 5 times loop_1; {Lặp lại 5 lần từ nhản “loop_1”}
Ví dụ 2:
Loop :
Move {Di chuyển }
-Loop 0 times loop_1; {Lặp lại từ nhản “loop”}
Nên dùng lệnh “Repeat” và “Until” vì dễ dùng và dịch chuyển nhanh hơn, lệnh loop còn xử dụng là do tương thích với các version cũ
8 Lệnh “Port” và “Pulse”
- Ý nghĩa : Nhập xung
- Cú pháp : Port [Trạng thái ]
- Ý nghĩa : Phát xung
- Cú pháp : Pulse [ Trạng thái ]
- Ứng dụng : Lệnh chỉ có tác dụng với tùy chọn
“Impulsesausgable” trên card giao tiếp
Trang 9 Giải Thích
[Trạng thái ] cho biết trạng thái cần có tại ngỏ ra, xem bảng sau:
Cú pháp Trạng thái
Port on; Ngỏ ra on
Port off; Ngỏ ra off
Pulse out; Phát xung 50 ms
Pulse in ; Chờ nhận xung
Pulse sync out; Phát xung, đợi xác nhận
Pulse sync in; Chờ xung, gởi xác nhận
Ngõ ra xung cũng được sử dụng cho yêu cầu đồng bộ giữa hai thiết bị (hai tùy chọn cuối cùng)
Nhiệm vụ chính của điều khiển xung là trong khi thực hiện chương trình có thể cho phép thao tác bằng tay tại một vị trí nào đó bằng cách tác động vào nút nhấn “start”, do nút “Start” được kết nối với ngỏ vào xung nên phải dùng lệnh “Pulse in”
Ví dụ
Pulse in; {đợi tác động nút Start”}
9 Lệnh “Times” và “Delay”
- Ý nghĩa : Tạo thời gian trì hoãn
- Cú pháp : Times [zeit]; hoặc delay [zeit];
- Ứng dụng : Tạo một thời gian trì hoãn, trong khoảng thời gian này
card giao tiếp không làm gì cả
Giải Thích
[ Zeit ] Thời gian trì hoãn (phần mười của giây )
Ví dụ:
Trang 10- Times 50; {Trì hoãn 50 giây}
- Delay 20; {Trì hoãn 2 giây}
- Thời gan trì hoãn tối đa là 3276,7 giây
10 Lệnh “Refrence”
- Ý nghĩa : Xác định vị trí chuẩn ( vị trí 0)
- Cú pháp : Refrence [Trục ];
- Ứng dụng : Rất cần thiết khi thời gian thực hiện quá dài, càng lúc càng xa vị trí chuẩn nhằm bù lại sai sót của động cơ bước, vì hệ thống tuyến tính Isel làm việc theo chế độ điều khiển vòng hở nên không có tín hiệu báo lổi hồi tiếp
Giải Thích
[ Trục ] Làm việc
Ví dụ:
Refrence xy; {Qua vị trí 0 của trục x và y}
Refrence x; {Qua vị trí 0 của trục x }
Refrence xyz; {Qua vị trí 0 cả 3 trục }
Lưu ý: Thứ tự thực hiện luôn là zyx, có nghĩa là trước tiên qua
vị trí 0 của z, sau đó y và cuối cùng là x Khi muốn thay đổi thứ tự thì phải dùng hai lệnh
Ví dụ 2:
Refrence x; {Qua vị trí 0 của trục x}
-Refrence y; {Qua vi trí 0 của trục y }
Về vị trí 0 được đúng thì trong phần khai báo phải xác định tốc độ chuẩn ( Xem mục 19 Lệnh # Ref_sped)
11 Lệnh “Tell”
- Ý nghĩa : Xuất ký hiệu điều khiển
Trang 11- Cú pháp : Tell [GN ] [Option];
- Ứng dụng : Việc xuất tín hiệu điều khiển phụ thuộc vào quá trình hệ cơ đồng bộ, lệnh này xuất 4 ký hiệu để khởi động một card giao tiếp thứ hai hoặc cũng có thể sử dụng cho các mục đích khác
Giải Thích
[ GN ] Số hiệu máy
[Option ] Lệnh điều khiển
Ví dụ:
Tell 0 start; {Khởi động máy số 0}
Tell 0 start, wait {Khởi động máy 0 và chờ dứt} Tell 0 Refrence xyz {Về vị trí chuẩn máy 0 }
Tell 0 Refrence, wait xyz {Về vị trí 0, chờ chấm dứt}
Tốt nhất nên dùng chức năng truyền thông để kiểm tra quá trình thực hiện lệnh này
12 Lệnh “Stop”
- Ý nghĩa : Đặt điểm dừng chương trình
- Cú pháp : Stop
- Ứng dụng : Báo chấm dứt chương trình
Ví dụ
#axit x; {chọn trục làm việc}
#units mm; {chọn đơn vị mm}
Refrence x; {Về vị trí 0 của trục x}
Move 100(8000); {di chuyển trục x 100mm}
Stop
Mỗi một chương trình phải có lệnh stop và phải kết thúc bằng dấu chấm phẩy
Trang 1213 Lệnh “Line”
- Ýù nghĩa : Xác định thứ tự
- Cú pháp : Line [ Trục ]
- Ứng dụng : Thứ tự mặc định là x/y, lệnh này dùng để thay đổi thứ tự nếu cần
Giải Thích
[ Trục ] cần thay đổi thứ tự
Ví dụ:
Line xy; {Thứ tự xy}
Line xz; {Thứ tự xz}
Line yz; Thứ tự yz}
Lệnh vẫn còn hiệu lực trong chương trình cho đến khi được thay đổi lại bằng lệnh “Line” Khi khởi động thứ tự mặc định sẻ là xy
Lệnh không ảnh hưởng khi trục quay về vị trí 0, thứ tự này là xyz
14 Lệnh Repeat until
- Ý nghĩa Thực hiện vòng lặp
- Cú pháp Repeat
-until[số ]
- Ứng dụng Thực hiện lặp lại một đoạn chương trình bắt đầu
từ vị trí “repeat” cho đến “’until”
Giải Thích
[ số ] số lần lặp lại, nếu bằng không thì quá trình lặp lại
không kết thúc
Ví dụ:
Repeat {Vị trí bắt đầu lặp }
Move {Dịch chuyển }
Trang 13Move {Dịch chuyển }
Until 7; {Lặp lại 7 lần}
Sau lệnh repeat khoảng có dâu chấm phẩy, do lệnh không có thông số nên trong vòng lặp có thể chứa một vòng lặp khác, số lượng “repeat” và “until” phụ thuộc vào bộ nhớ của card giao tiếp
Phải kết thúc lệnh “until” bằng dấu chấm phẩy
15 Lệnh “goto”
- Ý nghĩa : Rẽ nhánh (nhảy)
- Cú pháp : Goto [ đích ]
- Ứng dụng : Khi gặp lệnh nhảy, bộ đếm lệnh sẽ thay đổi giá trị và tiếp tục thực hiện tại vị trí đích
Giải Thích
[Đích ] Là ký số cho biết vị trí dòng lệnh tiếp tục ở trước hoặc sau dòng lệnh hiện hành hoặc một nhản ( số có thể ương hoặc âm) sẽ không kiểm tra nếu vị trí nhảy ở phía sau lệnh dừng của chương trình
Ví dụ:
Goto 5; {Nhảy đến lệnh thứ 5 kế tiếp}
Goto-5; {Nhảy lùi lại 5 lệnh }
Goto begin; {Nhảy đến lệnh “Begin”}
Goto end; {Nhảy đến lệnh “End”}
16 Lệnh “null”:
- Ý nghĩa : Xác định vị trí 0
- Cú pháp : Null [Trục]
- Ứng dụng : Tạo điểm 0 cho chi tiết
Giải Thích
Trang 14[ Trục ] Chọn trục cần tạo điểm 0.
Ví dụ:
Refrence xyz;
Moveto 20( ), 30( ), 15( ), 0( );
Null xyz;
Moveto 10( ), 20( ), 20( ), 0( );
Lệnh trên cùng dịch chuyển các trục về điểm 0 của máy, điểm 0 của chi tiết đặt tại vị trí 20, 30, 15 và lệnh di chuyển tiếp theo sẽ xem vị trí này là chuẩn, khoảng cách sau khi dịch chuyển so với điểm 0 chi tiết là 10, 20, 20 hoặc so với điểm 0 của máy là 30, 50, 35
Vì trong chế độ Teach-in tọa độ tương đối được so sánh với điểm 0 chi tiết đầu tiên Do đó chỉ nên dùng một điểm 0 trong chương trình bằng lệnh #null
Điểm 0 chi tiết có thể đặt trở về vị trí điểm 0 của máy, xem thêm chi tiết trong tài liệu hướng dẫn card giao tiếp 4.0
17 Lệnh “on-key”
- Ý nghĩa : Đọc từ bàn phím
- Cú pháp : On-key [số phím ], [ nhản ]; Và
- Cú pháp : Goto [ nhản “begin”]
- Ứng dụng : Thực hiện ứng dụng thông qua việc kết nối với một đơn vị chọn chương trình Ví dụ bàn phím gồm 12 phím được nối đến đầu giao tiếp của card
Giải Thích
[ Số phím ] cho biết số của phím
[ Nhản ] nhản tương ứng với phím đã chọn
Ví dụ:
#axit x;
Trang 15#until mm;
#elev 4;
Begin
On-key1, do_refernce;
On_key2, do_move;
On_key3, end;
Goto begin;
Do_refernce
Refernce x;
Goto begin;
Do_move:
Move 5(8000);
Goto begin;
End:
Stop.
- Nếu tác động phím F1 chương trình sẽ nhảy đến do_refernce
- Nếu tác động phím F2 chương trình sẽ nhảy đến do_move
- Nếu tác động F3 chương trình sẽ nhảy đến end và dừng luôn
18 Lệnh “On_port”
- Ý nghĩa : Đọc từ cổng vào
- Cú pháp : On-port [Address ], [Bitnr] = [wert],
[OFFSET];
- Ứng dụng : Card 4.0 đọc cổng vào và rẽ nhánh theo điều kiện
Giải Thích
[Address ] là con số cho biết địa chỉ, đối với lệnh này giá trị là 65531
Trang 16[BITNR ] xem mục 1.1
[WERT ] Xem mục 1.1
{OFFSET ] là 1 con số hoặc nhản cho biết vị trí rẻ nhánh trong chương trình
Cổng vào được đọc theo dạng bit hoặc byte, nếu thỏa điều kiện thì thực hiện bước nhảy
Ví dụ:
1 Dạng bit
On-port 65531 = 0,3; Bit 2 = Off Nhảy tới 3 dòng On-port 65531,8 = 1, -2; Nit 8 = on Nhảy lùi 2 dòng
On-port 65531,0 = 10,3; 0000.1010 nhảy tới 3 dòng On-port 65531,0 = 0, -2; 0000.0000 Nhảy lùi lại 2 dòng On-port 65531,0 = 205, -4; 1100.1101
Nhảy lùi lại 4 dòng
19 Lệnh “Set-port”
- Ý nghĩa : Đặt cổng ra
- Cú pháp : St_port [ ADDRESS ], {BITNR ], = [WEIT};
- Ứng dụng : Card 4.0 đặt giá trị cho cổng ra
Giải Thích
[ADDRESS] là số chỉ địa chỉ được cho ở bảng sau
Giá trị Cổng
65529 Cổng ra 1 (8 bit)
65530 Cổng ra 2 (8 bit) [BITNR ] Là số dùng để phân biệt dạng bit hoặc byte
1 Dạng bit
1 [BITNR ] 8
Trang 172 Dạng bit
[BITNR ] = 0 [WERT] Là số tùy theo {BITNR], giá trị là thập phân từ 0 đến 255 và chuyển sang nhị phân tại ngỏ ra tương ứng
Ví dụ:
1 Dạng bit
Lệnh Cổng ra bit Trạng thái
Set-port 65529,5 = 0; Port 1 5 OFF
Set-port 65529,4 = 1; Port 1 4 ON
Set-port 65529,4 = 0; Port 2 4 OFF
Set-port 65529,1 = 1; Port 2 1 ON
2 Dạng byte
Set-port 65529,128 = 10; Port 1 0000 1010
Set-port 65529,128 = 27; Port 1 0001 1000
Set-port 65529,128 = 205; Port 2 1100 1101
Set-port 65529,128 = 255; Port 2 1111 1111
Set-port 65529,128 = 0; Port 1 0000 0000
20 Lệnh Arc-r hoặc Arc-l
- Ý nghĩa : Vẽ vòng tròn theo chiều phải hoặc trái
- Cú pháp : Arc-r [r(v), [WINRELZ], [độ phân giải];
Hoặc:
- Cú pháp : Arc-l [r(v)], [WINKEL1],
[WINKELZ], [độ phân giải];
- Ứng dụng : Vẽ một cung tròn hoặc vòng tròn
Giải Thích
[r(v) Bán kính và tốc độ vẽ
[WINKEL1] Góc bắt đầu (tính bằng độ)