Lập trình cho Robot trong hệ
thống CIM
Cơ sở lập trình cho robot, ngôn ngữ MCL II
Giới thiệu về ngôn ngữ MCL II
MCL (Manufacturing Control Language) là một ngôn ngữ lập trình đa chức năng
dùng trong sản xuất, đợc tạo ra và phát triển để ứng dụng cho việc lập trình các
thiết bị và các hệ thống tự động. Đây là một ngôn ngữ đợc tạo ra để hợp nhất
những yêu cầu phong phú về lập trình của ngời sử dụng ở nhiều cấp độ khác nhau
trong sản xuất công nghiệp. Với MCL ngời sử dụng có thể tạo ra
từ những chơng trình đơn giản điều khiển robot và các thiết bị phụ trợ đến những
chơng trình phức tạp để điều khiển các robot, thu thập dữ liệu, giao tiếp thông tin
và xử lí các dữ liệu đó.
Mô tả các kiểu dữ liệu và các câu lệnh thờng đợc sử dụng trong ngôn ngữ
MCL II
Với phạm vi đề tài này, chúng tôi chỉ giới thiệu ngắn gọn những kiểu dữ liệu và
những câu lệnh thờng đợc sử dụng trong ngôn ngữ MCL để lập trình cho các robot
thực hiện các công việc nhất định theo mục đích của ngời sử dụng.
Các kiểu dữ liệu
Trong MCL sử dụng 3 kiểu dữ liệu thông dụng: Kiểu Integer (số nguyên), kiểu
String (xâu kí tự), và kiểu Point (điểm).
Kiểu Integer : Một biến có kiểu Integer, có thể là biến địa phơng hay toàn cục, có
giá trị nằm trong khoảng -2147483647 đến 2147483647.
Các toán tử dùng với kiểu Integer:
‘+’ : phép cộng
‘-’ : phép trừ
‘*’ : phép nhân
‘/’ : phép chia
‘^’ : luỹ thừa
Các toán tử so sánh dùng với kiểu Integer:
‘=’ : bằng
‘<>’: khác
‘>,<’ : lớn, bé hơn
Kiểu String : Một biến kiểu string là một xâu kí tự có độ dài tối đa là 255 kí
tự, biến kiểu string cũng có thể là biến địa phơng hoặc biến toàn cục.
Các toán tử dùng với kiểu String:
‘+’ : phép cộng
Các toán tử so sánh dùng với kiểu String:
‘=’ : bằng
‘<>’: khác
Kiểu Point : Biến Point trong ngôn ngữ MCL có thể coi giống nh biến bản ghi
trong các ngôn ngữ lập trình cấu trúc thông thờng nh Pascal. Trong phần mềm
quản lí robot các vị trí làm việc của robot đợc xác định là vị trí của các điểm và
quá trình hoạt động của robot tơng ứng với việc
robot sẽ dịch chuyển từ điểm này đến điểm kia với toạ độ của các điểm đã đợc ghi
nhớ trớc. Nh vậy thực chất giá trị của các biến Point ở đây là các thành phần toạ
độ của một điểm đã đợc ghi nhớ.
Khai báo một biến Point có dạng MyPoint<X, Y, Z, pitch, roll>
Trong các chơng trình lập trình cho robot thông thờng ta thờng sử dụng kiểu dữ
liệu Point dới dạng các mảng điểm để ghi nhớ các vị trí làm việc của robot tuỳ
theo từng công việc một, mỗi công việc sẽ tơng ứng với một mảng điểm riêng.
Ví dụ: Point Lathe [20] là khai báo một mảng có 20 phần tử điểm ứng với 20 vị trí
làm việc của robot.
Các câu lệnh thờng dùng
Lệnh ACCEL : Thay đổi gia tốc của robot
Khai báo : ACCEL giá trị [trục]
Với giá trị ở đây là giá trị của gia tốc mà ta muốn đặt
Trục: số hiệu của trục
Lệnh AND : Thực hiện phép logic and giữa 2 biểu thức
Khai báo : (biểu thức 1) AND (biểu thức 2)
Lệnh AND thờng đợc sử dụng kèm trong các câu lệnh if, while, repeat,nó chỉ trả
về kết quả true nếu cả hai biểu thức đều đúng.
Lệnh OR : Thực hiện phép logic or giữa 2 biểu thức
Lệnh rẽ nhánh BRANCH : Chuyển điều khiển chơng trình tới một nhãn cho sẵn.
Khai báo : BRANCH tên nhãn
Lệnh gọi chơng trình con CALL : Chuyển điều khiển chơng trình tới một chơng
trình con cho sẵn.
Khai báo : CALL tên chơng trình con
Lệnh CASE : Câu lệnh lựa chọn các trờng hợp.
Khai báo :
SELECT [biểu thức lựa chọn]
CASE biểu thức 1 THEN
//Các câu lệnh
CASE biểu thức 2 THEN
//Các câu lệnh
[OTHERWISE
//Các câu lệnh
]
ENDSELECT
Lệnh trễ thời gian DELAY : Dừng chơng trình trong một khoảng thời gian nhất
định.
Khai báo : DELAY thời gian
Thời gian ở đây đợc tính theo 1/100 giây
Lệnh dừng chơng trình END :thờng đợc sử dụng ở cuối một chơng trình
chính.
Lệnh FOR : Lệnh vòng lặp thực hiện một số lệnh với số lần hữ
Khai báo : FOR chỉ số bắt đầu TO chỉ số kết thúc [STEP giá trị]
//Các câu lệnh
NEXT
Trong đó, giá trị sau từ khoá STEP biểu thị khoảng tăng của chỉ số sau mỗi lần
lặp, mặc định là 1.
Lệnh GOTO có chức năng tơng tự câu lệnh rẽ nhánh BRANCH, chuyển điều
khiển chơng trình tới một nhãn định trớc.
Khai báo : GOTO tên nhãn
Lệnh kẹp chi tiết bằng hàm kẹp của robot GRASP
Khai báo : GRASP
Câu lệnh này thờng đi kèm với lệnh nhả chi tiết ra RELEASE
Khai báo : RELEASE
Lệnh GRWIDTH : Mở hàm kẹp của robot với một độ rộng nhất định
Khai báo : GRWIDTH độ rộng
Lệnh INP : cho phép kiểm tra trạng thái của tín hiệu vào đã định. Lệnh này có
thể đợc sử dụng kết hợp trong câu lệnh If-Then để tạo nên một câu lệnh chờ
điều kiện vào.
Khai báo : INP (input)
Ví dụ :
IF INP(2) = 1 THEN CALL LoadPallet
Lệnh IF-ELSE : Đợc sử dụng để điều khiển rẽ nhánh chơng trình
Khai báo : IF biểu thức THEN
//Các câu lệnh
[ELSE [IF ]
//Các câu lện
]
ENDIF
Lệnh LABEL : Đánh dấu vị trí nhãn trong chơng trình dùng cho câu lệnh rẽ
nhánh.
Khai báo : LABEL tên nhãn
Hoặc Tên nhãn :
Lệnh LMOVE : Di chuyển robot từ điểm này đến điểm kia theo một đờng
thẳng.
Khai báo : LMOVE điểm
Robot sẽ thực hiện việc di chuyển từ điểm hiện tại đến điểm đợc cho sau lệnh
LMOVE theo một đờng thẳng.
Lệnh LTMOVE : Di chuyển robot từ điểm này đến điểm kia theo một đờng
thẳng và tiếp tục chơng trình mà không đợi robot di chuyển xong.
Khai báo : LTMOVE điểm
Lệnh PMOVE: Di chuyển robot từ điểm hiện tại đến điểm yêu cầu theo quỹ
đạo ngắn nhất.
Khai báo : PMOVE điểm
Lệnh TMOVE: Di chuyển robot từ điểm hiện tại đến điểm yêu cầu theo quỹ
đạo ngắn nhất và tiếp tục thực hiện chơng trình mà không đợi cho đến khi robot
kết thúc dịch chuyển.
Khai báo : TMOVE điểm
Lệnh MEASURE : cho phép trả về khoảng cách hiện tại giữa hai hàm kẹp của
robot.
Khai báo : MEASURE ()
Lệnh này thờng đợc sử dụng dới dạng dist = MEASURE () sau đó so sánh dist
với một giá trị yêu cầu để xem xem robot có kẹp đợc chi tiết hay không.
Lệnh lặp REPEAT : cho phép lặp lại một đoạn chơng trình khi điều kiện kiểm
tra còn đúng.
Khai báo : REPEAT
//Các câu lệnh
UNTIL biểu thức
Lệnh SUB - RETURN : Bắt đầu và kết thúc một chơng trình con, chuyển điều
khiển chơng trình về chơng trình chính.
Khai báo :
SUB tên chơng trình con
//
//Các câu lệnh thực hiện trong chơng trình con
//
RETURN
Lệnh SPEED : Đặt tốc độ di chuyển cho robot
Khai báo : SPEED giá trị tốc độ yêu cầu
Lệnh WAITI : dừng chơng trình đợi một tín hiệu vào thay đổi đến một trạng
thái đặt trớc (On hoặc Off)
Khai báo : WAITI input number, giá trị
Trong đó input number là số hiệu đầu vào của tín hiệu đợi, giá trị có thể là 1 (ứng
với tín hiệu đầu vào On) hoặc 0 (ứng với tín hiệu đầu vào Off).
Lệnh WRITEO : Điều khiển bật tín hiệu ra đã định lên trạng thái On hoặc Off
và tiếp tục thực hiện dòng lệnh tiếp theo. Tín hiệu đợc xuất ra duy trì trạng thái ở
đầu ra cho đến khi gặp câu lệnh WRITEO tiếp theo trong chơng trình.
Lệnh WHILE : Thực hiện vòng lặp với một đoạn chơng trình cho đến khi điều
kiện sai.
Khai báo : WHILE biểu thức
//
//Các câu lệnh
//
WEND
Các lệnh XMOVE, YMOVE, ZMOVE : di chuyển theo các trục tơng ứng một
khoảng nhất định.
Khai báo : XMOVE khoảng cách
Các lệnh XTLMOVE, YTLMOVE, ZTLMOVE : di chuyển theo các trục trong
hệ toạ độ dụng cụ tơng ứng một khoảng nhất định.
Khai báo : XTLMOVE khoảng cách
3.2.1.3Các bớc để lập trình một chơng trình robot
Các bớc lập trình sau đây cho ta một phơng pháp thống nhất và hợp lý để lập bất
cứ một chơng trình ứng dụng của robot nào đặc biệt là những chơng trình phức
tạp. Sáu bớc để lập trình một chơng trình sau đây không chỉ giúp ta viết chơng
trình dễ dàng mà còn cung cấp cho ngời khác một hình ảnh cụ thể về ứng dụng đó.
1) Vẽ sơ đồ chung biểu diễn vị trí các robot, các thiết bị vào ra
cũng nh các kiểu tín hiệu vào ra của robot, vị trí phôi chi tiết.
2) Lập trình tự chung các thao tác dới dạng là bản tóm tắt chung
các bớc để robot thực hiện, tuy nhiển ở bớc này không cần mô tả chi tiết từng bớc
cụ thể robot sẽ làm gì.
3) Liệt kê danh sách các tín hiệu vào ra, danh sách này cần có
tên, chức năng và kiểu tín hiệu vào ra cần thiết cho ứng dụng đang lập cũng nh địa
chỉ I/O đối với mỗi thiết bị. Đây là bớc cho ta những mô tả chung cần thiết để lắp
đặt tế bào gia công.
4) Lập tiến trình cụ thể của các thao tác, tiến trình này liệt kê
từng bớc tất cả các hoạt động hoặc các giao tiếp đợc tiến hành để robot thực hiện
nhiệm vụ yêu cầu. Đây là sự chi tiết hoá trình tự chung của các thao tác.
5) Liệt kê danh sách các điểm, đây là các điểm cần để hoàn
thành trình tự cụ thể của các thao tác, chức năng của mỗi điểm cũng cần đợc mô
tả. Danh sách này cho phép ta dạy các điểm nhanh chóng và tham khảo chúng sau
này, mỗi khi cần kiểm tra chơng trình hoăch sửa đổi.
6) Viết chơng trình, đây là bớc cuối cùng sau khi đã có tất cả
những sờn công việc đã lập ở trên. Thờng chơng trình đợc lập bằng cách viết các
câu lệnh cho mỗi bớc trình tự cụ thể của các thao tác trong bớc 4. Nội dung của
trình tự cụ thể của các thao tác sẽ trở thành những chú thich để giải thích mỗi câu
lệnh trong chơng trình.