Giáo trình Hệ thống sản xuất tự động hóa với PLCs - Phần 18: Lập trình bằng danh sách lệnh

18. LẬP TRÌNH BẰNG DANH SÁCH LỆNH  
Chủ đề:  
Các mã lệnh và các phép tính danh sách dòng lệnh (IL)  
Chuyển từ logic bậc thang sang IL  
Độ trễ dòng lệnh hướng ngăn xếp  
Phiên bản IL của Allen Bradley  
Mục tiêu:  
Học được các nền tảng của lập trình IL  
Hiểu được mối quan hệ giữa logic bậc thang và các chương trình IL  
18.1 GIỚI THIỆU  
Lập trình IL được định nghĩa như là thành phần của chuẩn IEC 61131. Nó dùng  
các dòng lệnh rất đơn giản tương tự như các ngôn ngữ lập trình gợi nhớ nguyên thủy  
mà các ngôn ngữ này được phát triển cho các PLC. (Ghi chú: một vài người đọc sẽ  
nhận ra sự tương tự với ngôn ngữ lập trình assembly). Nó là mức cơ bản nhất của  
ngôn ngữ lập trình – mọi ngôn ngữ lập trình khác có thể được chuyển tới các chương  
trình IL. Hầu hết các lập trình viên không dùng lập trình IL trong một ngày liên tục, trừ  
khi họ dùng các bộ lập trình bằng tay.  
18.2 PHIÊN BẢN IEC 61131  
Để dễ hiểu, chương này sẽ tập trung vào quá trình chuyển đổi logic bậc thang  
sang các chương trình IL. Một ví dụ đơn giản được chỉ ra trong hình 18.1 bằng cách  
sử dụng các định nghĩa tìm được trong chuẩn IEC này. Bậc của logic bậc thang này  
bao gồm bốn đầu vào, và một đầu ra. Nó có thể biểu diễn trong một phương trình  
Bun bằng cách dùng các dấu ngoặc đơn. Phương trình này sau đó có thể được  
chuyển đổi một cách trực tiếp tới các dòng lệnh. Phần đầu của chương trình này bắt  
đầu tại nhãn START:. Tại điểm này giá trị đầu tiên được tải, và phần còn lại của biểu  
thức này được chia thành những đoạn nhỏ. Thay đổi đáng kể duy nhất là AND NOT  
trở thành ANDN.  
Nhãn  
START: LD  
Mã lệnh Toán hạng  
Ghi chú  
(* Load input bit 00 *)  
Tải bit đầu vào 00  
(* Start a branch and load input bit 01 *)  
Bắt đầu một nhánh và tải bit đầu vào 01  
(* Load input bit 02 *)  
Tải bit đầu vào 02  
(* Load input bit 03 and invert *)  
Tải bit đầu vào 03 và lộn ngược  
%I:000/00  
%I:000/01  
%I:000/02  
%I:000/03  
AND(  
OR(  
ANDN  
)
)
ST  
%O:001/00 (* SET the output bit 00 *)  
ĐẶT bit đầu ra 00  
Figure 18.1 An Instruction List Example – Một ví dụ danh sách lệnh  
Một ý tưởng quan trọng trong ngôn ngữ lập trình này là ngăn xếp. (Ghi chú: nếu  
bạn dùng một máy tính với RPN bạn đã quen thuộc với điều này). Bạn có thể nghĩ về  
nó như một danh sách làm về sau. Với phương trình trong hình 18.1 số hạng đầu tiên  
trong biểu thức này là LD I:000/00, nhưng phép tính đầu tiên phải là (I:000/02 AND  
NOT I:000/03). Các giá trị dòng lệnh này được đẩy vào ngăn xếp cho đến khi số hạng  
lồng nhau sâu nhất được thấy. Hình 18.2 minh họa biểu thức này được đẩy vào ngăn  
xếp như thế nào. Dòng lệnh LD đẩy giá trị đầu tiên vào ngăn xếp. Câu lệnh tiếp theo  
là AND, nhưng nó được theo sau bởi một dấu mở ngoặc đơn ’(’ vì thế ngăn xếp này  
phải hạ xuống. Dòng OR( mà nó theo sau cũng có cùng hiệu ứng. Lệnh ANDN không  
cần đợi, vì thế tính toán được làm xong một cách tức thời và một result_1 vẫn còn.  
Các lệnh hai dấu đóng ngoặc đơn ‘)’ tiếp theo loại bỏ lệnh ngăn chặn ‘(’ ra khỏi ngăn  
xếp, và cho phép duy trì các dòng lệnh OR I:000/1 và AND I:000/0 được thực hiện  
xong. Kết quả cuối cùng phải là một bit đơn lẻ result_3. Hai ví dụ sau theo sau được  
cho các điều kiện đầu vào khác nhau. Nếu kết quả cuối cùng trong ngăn xếp là 0, thì  
đầu ra ST O:001/0 sẽ thiết đặt đầu ra này, ngược lại nó sẽ tắt nó đi.  
Figure 18.2 Using a Stack for Instruction Lists  
Dùng một ngăn xếp cho các danh sách lệnh  
Một danh sách của các phép toán được cho trong hình 18.3. Các bổ nghĩa là:  
N – phủ định một đầu vào hay một đầu ra  
( - lồng một phép toán và đặt nó trong một ngăn xếp để được kéo ra bởi ‘)’  
C – bắt buộc một kiểm tra cho các kết được đánh giá hiện thời tại đỉnh của  
ngăn xếp này  
Các toán tử này có thể sử dụng nhiều kiểu dữ liệu, như được chỉ ra trong cột các  
kiểu dữ liệu. Danh sách này phải được hỗ trợ bởi mọi nhà cung cấp, nhưng các hàm  
bổ sung có thể được gọi bằng cách dùng hàm CAL.  
Toán  
tử  
Bổ  
nghĩa  
N
Các kiểu Mô tả  
dữ liệu  
LD  
many  
many  
BOOL  
BOOL  
BOOL  
set current result to value  
Đặt kết quả hiện thời tới giá trị  
store current result to location  
Lưu kết quả hiện thời tới vị trí  
set or reset a value (latches or flip-flops)  
Đặt hay đặt lại một giá trị (các chốt hay các mạch lật)  
boolean and  
ST  
N
S, R  
AND, & N, (  
OR N, (  
Phép toán Bun VÀ  
boolean or  
Phép toán Bun HOẶC  
boolean exclusive or  
Phép toán Bun XOR  
mathematical add  
XOR  
ADD  
SUB  
MUL  
DIV  
GT  
N, (  
BOOL  
many  
many  
many  
many  
many  
many  
many  
many  
many  
many  
LABEL  
NAME  
(
Phép toán toán học THÊM  
mathematical subtraction  
Phép toán toán học TRỪ  
mathematical multiplication  
Phép toán toán học NHÂN  
mathematical division  
Phép toán toán học CHIA  
comparison greater than >  
Phép toán so sánh lớn hơn >  
comparison greater than or equal >=  
Phép toán so sánh lớn hơn hay bằng >=  
comparison equals =  
Phép toán so sánh bằng =  
comparison not equal <>  
Phép toán so sánh không bằng <>  
comparison less than or equals <=  
Phép toán so sánh nhỏ hơn hay bằng <=  
comparison less than <  
(
(
(
(
GE  
(
EQ  
(
NE  
(
LE  
(
LT  
(
Phép toán so sánh nhỏ hơn <  
jump to LABEL  
nhảy tới NHÃN  
JMP  
CAL  
RET  
)
C, N  
C, N  
C, N  
call subroutine NAME  
Gọi chương trình con NAME  
return from subroutine call  
trở về từ cuộc gọi chương trình con  
get value from stack  
Lấy giá trị từ ngăn xếp  
Figure 18.3 IL Operations – Các phép toán IL  
18.3 PHIÊN BẢN ALLEN-BRADLEY  
Allen Bradley chỉ hỗ trợ lập trình IL trên dòng Micrologix 1000, và không có kế  
hoạch hỗ trợ nó trong tương lai. Các ví dụ tương ứng của logic bậc thang và các  
chương trình IL được chỉ trong hình 18.4 và 18.5. Các chương trình trong hình 18.4  
chỉ ra các biến thể khác nhau khi chỉ có một đầu ra đơn lẻ. Nhiều chương trình IL  
được cho ở chỗ nó có sẵn. Khi nhìn vào các ví dụ này ta nhớ lại ý tưởng của ngăn  
xếp. Khi một dòng lệnh LD hay LDN được gặp phải nó sẽ đặt một giá trị vào đỉnh của  
ngăn xếp. Các dòng lệnh ANB và ORB sẽ loại bỏ hai giá trị ở đỉnh của ngăn xếp, và  
thay thế chúng bởi một giá trị đơn mà giá trị ấy là kết quả của một phép toán Bun.  
Các hàm AND và OR lấy một giá trị ra khỏi đỉnh của ngăn xếp, thực thi một phép toán  
Bun và đặt kết quả trên đỉnh của ngăn xếp. Các chương trình tương ứng (tới phía  
phải) là ngắn hơn và sẽ chạy nhanh hơn.  
Figure 18.4 IL Equivalents for Ladder Logic – IL tương ứng với logic bậc thang  
Hình 18.5 chỉ ra các chương trình IL mà chúng được sinh ra khi có nhiều đầu ra.  
Điều này thường yêu cầu cái mà ngăn xếp được sử dụng để giữ các giá trị mà chúng  
sẽ được lấy mất một cách bình thường bằng cách sử dụng các hàm MPS, MPP và  
MRD. Dòng lệnh MPS sẽ lưu giá trị hiện thời của đỉnh của ngăn xếp. Xem xét ví dụ  
đầu tiên với hai đầu ra, giá trị của A được tải vào ngăn xếp bởi LD A. Dòng lệnh ST X  
kiểm tra đỉnh của ngăn xếp, nhưng không loại bỏ giá trị, vì thế nó vẫn có sẵn cho  
dòng ST Y. Trong ví dụ thứ ba giá trị ở đỉnh ngăn xếp sẽ không đúng khi bậc đầu ra  
thứ hai được kiểm tra. Vì thế, khi nhánh đầu ra này xuất hiện giá trị ở đỉnh ngăn xếp  
được sao chép bằng cách sử dụng MPS, và được đẩy vào đỉnh của ngăn xếp. Bản sao  
này sau đó được AND với B và được sử dụng để thiết đặt X. Sau đó giá trị ở đỉnh  
được kéo ra với lệnh MPP, để lại giá trị này tại đỉnh cái là nó trước bậc đầu ra thứ  
nhất. Ví dụ cuối chỉ ra nhiều bậc đầu ra. Trước khi bậc đầu tiên giá trị được sao chép  
vào ngăn xếp bằng cách dùng MPS. Trước khi bậc cuối giá trị ở đỉnh của ngăn xếp  
được loại bỏ bởi câu lệnh MPP. Nhưng, hai câu lệnh trung tâm dùng MRD để sao  
chép giá trị đúng tới đỉnh ngăn xếp – nó có thể được thay thế bởi MPP sau đó MPS.  
Figure 18.5 IL Programs for Multiple Outputs – Các chương trình cho các đầu ra  
Các lệnh phức tạp có thể được trình bày trong IL, như được chỉ trong hình 18.6.  
Ở đây hàm được liệt kê bởi sự gợi nhớ của chúng, và điều này được theo sau bởi các  
đối cho các hàm này. Dòng thứ hai không có bất cứ công tắc đầu vào nào, vì thế ngăn  
xếp ấy được tải với một giá trị đúng.  
START:LD I:001/0  
TON(T4:0, 1.0, 5, 0)  
LD 1  
ADD (3, T4:0.ACC, N7:0)  
END  
Figure 18.6 A Complex Ladder Rung and Equivalent IL  
Một bậc thang phức tạp và IL tương ứng  
Một ví dụ của một chương trình con ngôn ngữ lập trình lệnh được chỉ ra trong  
hình 18. 7. Chương trình này sẽ kiểm tra một đầu vào BCD trên thẻ I:000, và nó trở  
nên cao hơn 100 thì 2 giây sau đầu ra O:001/00 sẽ bật lên.  
Tệp chương trình 2:  
Nhãn Mã lệnh Toán hạng Ghi chú  
START: CAL  
3
(* Jump to program file 3 *) – Nhảy tới tệp chương  
trình 3  
Tệp chương trình 3:  
Nhãn Mã lệnh  
TEST: LD  
Toán hạng Ghi chú  
%I:000  
(* Load the word from input card 000 *)  
Tải từ từ thẻ đầu vào 000  
BCD_TO_INT  
(* Convert the BCD value to an integer *)  
Chuyển giá trị BCD này sang một số nguyên  
(* Store the value in N7:0 *)  
ST  
%N7:0  
100  
Lưu giá trị trong N7:0  
GT  
(* Check for the stored value (N7:0) > 100 *)  
Kiểm tra cho giá trị được lưu (N7:0)> 100  
(* If true jump to ON *)  
Nếu đúng nhảy tới ON  
(* Reset the timer *)  
JMPC  
CAL  
ON  
RES(C5:0)  
2
Đặt lại bộ bấm giờ  
ON:  
LD  
(* Load a value of 2 - for the preset *)  
Tải một giá trị của 2 – cho giá trị đặt trước  
(* Store 2 in the preset value *)  
Lưu 2 trong giá trị đặt trước  
ST  
%C5:0.PR  
CAL  
LD  
TON(C5:0) (* Update the timer *)  
Cập nhật bộ bấm giờ này  
%C5:0.DN (* Get the timer done condition bit *)  
Lấy bit điều kiện bộ bấm giờ làm việc xong  
ST  
%O:001/00 (* Set the output bit *)  
Đặt bit đầu ra  
RET  
(* Return from the subroutine *)  
Trở về từ chương trình con  
Figure 18.7 An Example of an IL Program – Một ví dụ về một chương trình IL  
18.4 TÓM TẮT  
Logic bậc thang có thể được chuyển tới các chương trình IL, nhưng các  
chương trình IL không luôn luôn được chuyển sang logic bậc thang.  
Các chương trình IL dùng một ngăn xếp để trì hoãn các hành động được chỉ ra  
bởi các dấu ngoặc đơn.  
Phiên bản Allen Bradley là tương tự, nhưng không giống với phiên bản IEC  
61131 của IL.  
18.5 BÀI TẬP THỰC HÀNH  
18.6 GIẢI PHÁP CHO BÀI TẬP THỰC HÀNH  
18.7 GIAO BÀI TẬP  
1. Giải thích hoạt động của một ngăn xếp  
2. Chuyển logic bậc thang sau sang các chương trình IL:  
3. Viết các chương trình sơ đồ bậc thang mà nó tương ứng với các chương trình Bun  
sau:  
LD 001  
OR 003  
LD 002  
OR 004  
AND LD  
LD 005  
OR 007  
AND 006  
LD 001  
AND 002  
LD 004  
AND 005  
OR LD  
OR 007  
LD NOT 001  
AND 002  
LD 004  
OR 007  
AND 005  
OR LD  
LD 003  
LD 003  
OR NOT 006  
OR NOT 006  
OR LD  
OUT 204  
AND LD  
AND LD  
OR NOT 008  
OUT 204  
AND 009  
OUT 206  
AND NOT 010  
OUT 201  
pdf 9 trang baolam 20361 Free
Bạn đang xem tài liệu "Giáo trình Hệ thống sản xuất tự động hóa với PLCs - Phần 18: Lập trình bằng danh sách lệnh", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdfgiao_trinh_he_thong_san_xuat_tu_dong_hoa_voi_plcs_phan_18_la.pdf