SQR //Xác định trị bình phương; ghi kết quả vào ACCU 1.
T MD20 //Chuyển kết quả tới MD20.
3.6.4.7. Phép lấy căn bậc hai
Cú pháp SQRT
Lệnh tính giá trị căn bậc hai của số thực trong ACCU 1 và lưu kết quả là số thực không âm vào ACCU 1. Nội dung của ACCU 2 không bị thay đổi.
Ví dụ:
L MD10 //Nạp giá trị MD10 vào ACCU 1.
SQRT //Lấy căn bậc hai; ghi kết quả vào ACCU 1.
T MD20 //Chuyển kết quả tới MD20.
3.6.4.8. Phép tính Sin
Cú pháp SIN
Lệnh tính Sin của số thực trong ACCU 1 và lưu kết quả là số thực vào ACCU 1. Nội dung của ACCU 2 không bị thay đổi. Nếu kết quả nằm trong khoảng (-3,402823E+38 ÷ -1,175495E-38) hoặc bằng 0 hoặc nằm trong khoảng (+1,175495E-38 ÷ 3,402823E+38) thì bit OV nhận giá trị 0, ngược lại thì bit trạng thái OV và OS sẽ có cùng giá trị 1 (bị tràn).
Ví dụ:
L MD10 //Nạp giá trị MD10 vào ACCU 1.
SIN //Tính SIN; ghi kết quả vào ACCU 1.
T MD20 //Chuyển kết quả tới MD20.
3.6.4.9. Phép tính Cos
Lệnh tính Cos của số thực trong ACCU 1 và lưu kết quả là số thực vào ACCU 1. Nội dung của ACCU 2 không bị thay đổi. Nếu kết quả nằm trong khoảng (-3,402823E+38 ÷ -1,175495E-38) hoặc bằng 0 hoặc nằm trong khoảng (+1,175495E-38 ÷ 3,402823E+38) thì bit OV nhận giá trị 0, ngược lại thì bit trạng thái OV và OS sẽ có cùng giá trị 1 (bị tràn).
Ví dụ:
L MD10 //Nạp giá trị MD10 vào ACCU 1.
Cos //Tính Cos; ghi kết quả vào ACCU 1.
T MD14 //Chuyển kết quả tới MD14.
3.6.4.10. Phép tính TAN
Cú pháp TAN
Lệnh tính Tan của số thực trong ACCU 1 và lưu kết quả là số thực vào ACCU 1. Nội dung của ACCU 2 không bị thay đổi. Nếu kết quả nằm trong khoảng (-3,402823E+38 ÷ -1,175495E-38) hoặc bằng 0 hoặc nằm trong khoảng (+1,175495E-38 ÷ 3,402823E+38) thì bit OV nhận giá trị 0, ngược lại thì bit trạng thái OV và OS sẽ có cùng giá trị 1 (bị tràn).
Ví dụ:
L MD10 //Nạp giá trị MD10 vào ACCU 1.
Tan //Tính Tan; ghi kết quả vào ACCU 1.
T MD14 //Chuyển kết quả tới MD14.
3.6.4.11. Phép tính ASIN
Cú pháp ASIN
Lệnh tính arcsin của số thực trong ACCU 1, số thực này phải nằm [-1÷1]. Kết quả là số thực [-π/2 ÷π/2] và được ghi vào ACCU 1. Nội dung của ACCU 2 không bị thay đổi.
3.6.4.12. Phép tính ACOS
Cú pháp ACOS
Lệnh tính arccos của số thực trong ACCU 1, số thực này phải nằm [-1÷1]. Kết quả là số thực [0 ÷π] và được ghi vào ACCU 1. Nội dung của ACCU 2 không bị thay đổi.
3.6.4.13. Phép tính ATAN
Cú pháp ATAN
Lệnh tính arctg của số thực trong ACCU 1, số thực này phải nằm [-1÷1]. Kết quả là số thực [-π/2 ÷π/2] và được ghi vào ACCU 1. Nội dung của ACCU 2 không bị thay đổi.
Ví dụ: Hệ thống điều khiển bãi đậu xe chứa tối đa là 12 chiếc mô tả hình 3.10. Mỗi lần xe vào, PLC tự động tăng thêm 1 bởi cảm biến phát hiện xe S1. Bất kỳ một chiếc xe nào đi ra khỏi bãi, PLC sẽ tự động giảm đi 1 bởi cảm biến phát hiện S2. Khi 12 chiếc xe được đăng ký, bảng hiệu đầy xe sẽ được sáng lên thông báo đến các xe không được vào nữa.
• Bảng gán nhiệm vụ I/O
Input (ngỏ vào) Output (ngỏ ra)
Tên gọi Địa chỉ Tên gọi Địa chỉ S1 I0.0 Car park full Q0.0
• Chương trình
Network1: // Khi S1 thay đổi trạng thái 0 -> 1 thì giá trị ô nhớ MW0 tăng lên 1.
A "S1" FP M 6.0 FP M 6.0
JNB _001 // Nhảy Khi RLO là “0” cùng với BR
L MW 0 L 1 L 1
+I
T MW 0
_001: NOP 0 // Kết thúc
Network2: // Khi LS2 là 1 thì cửa dừng lại tại giới hạn dưới
A "S2" FP M 6.1 FP M 6.1 JNB _003 L MW 0 L 1 -I T MW 0 _003: NOP 0
Network3: // Khi LS2 là 1 thì cửa dừng lại tại giới hạn dưới
L MW 0 L 12 L 12 ==I
= "CAR PARK FULL"
3.7. LỆNH CHUYỂN ĐỔI DỮ LIỆU (conversion instruction) 3.7.1. Khái niệm 3.7.1. Khái niệm
Khi giao tiếp thiết bị tương tự với PLC để thực hiện các nhiệm vụ thì tín hiệu thu nhận và xuất ra cần phải được xử lý thích hợp để đảm bảo được bản chất thực của nó. Ví dụ khi ta đọc tín hiệu từ các cảm biến tải trọng của một hệ thống cân đo tải trọng xe ô tô, việc đọc này phải được thực hiện qua các ngõ vào tương tự và ta nhận được số liệu dưới dạng nguyên 16 bit mang giá trị tín hiệu tương tự (cấu trúc vật lý) chứ không phải bản thân giá trị đó, bởi vậy để xử lý tiếp ta phải chuyển đổi số nguyên đó thành đúng giá trị thực, dấu phẩy động của tín hiệu tương tự ở ngõ vào. Tiếp cận với chuyển đổi dữ liệu chúng ta sẽ có một số lệnh cơ bản sau:
Chuyển BCD sang số nguyên 16 bit (Integer) Chuyển số nguyên 16 bit sang BCD
Chuyển BCD sang số nguyên 32 bit (Double Integer) Chuyển số nguyên 32 bit sang BCD
Chuyển số nguyên 16 bit sang số nguyên 32 bit Chuyển số nguyên 32 bit sang số thực 32 bit Một số dạng dữ liệu khác.
3.7.2. Chuyển BCD sang số nguyên 16 bit (Integer)
Cú pháp BTI
Lệnh không có toán hạng và thực hiện chuyển đổi một số BCD có 3 chữ số chứa trong nội dung của ACCU 1 thành số nguyên 16 bit. Kết quả được lưu giữ trong từ thấp của ACCU 1. Từ cao của ACCU 1 và nội dung ACCU 2 không bị thay đổi. Lệnh không làm thay đổi thanh ghi trạng thái.
Giới hạn cho phép của số BCD là –999 ÷ +999 do đó chỉ sử dụng 12 bit đầu của từ thấp. Bit 15 chỉ định dấu, 0 cho dấu (-) còn 1 cho dấu (+). Bit 12 đến bit 14 không sử dụng.
Nếu số BCD cần chuyển đổi có cấu trúc sai, ví dụ có chữ số (4 bits nhị phân) không nắm trong khoảng 0-9 thì CPU sẽ báo lỗi và chuyển về Stop mode hoặc sẽ gọi chương trình xử lý lỗi OB121.
Ví dụ: