CHƯƠNG 4 NGÔN NGỮ LẬP TRÌNH CHO PLC
4.2. Tập lệnh của S7-300
4.2.3 Các lệnh toán học
Tất cả các lệnh thực hiện với nội dung hai thanh ghi ACCU1 và ACCU2 đều tác động vào thanh ghi trạng thái như sau:
BR CC1 CC0 OV OS OR STA RLO FC
- x x x x - - - -
Trong đó hai bits CC1 và CC0 thay đổi theo quy tắc như bảng 4.10.
Bảng 4.10. Quy tắc thay đổi của CC0 và CC1 với các lệnh toán học
CC1 CC0 Ý nghĩa 0 0 Kết quả = 0 0 1 Kết quả < 0 1 0 Kết quả > 0 4.2.3.1. Nhóm lệnh làm việc với số nguyên 16 bits * Lệnh cộng Cú pháp +I Lệnh không có toán hạng.
Lệnh thực hiện phép cộng hai số nguyên 16 bits trong từ thấp hai thanh ghi ACCU1 và ACCU2, kết quảđược ghi vào từ thấp của ACCU1, nội dung thanh ghi ACCU2 không thay đổi. Nếu kết quả nằm trong khoảng -32768 32767 thì bit OV có giá trị bằng 0, ngược lại 2 bit OV và OS trong thanh ghi trạng thái có giá trị bằng 1.
Ví dụ: Cộng hai số nguyên 16 bits chứa trong IW10 và IW20, cất kết quả vào ô nhớ DBW20 của khối dữ liệu DB1. L IW10 L IW20 +I T DB1.DBW20 * Lệnh trừ Cú pháp -I Lệnh không có toán hạng.
Lệnh thực hiện phép trừ số nguyên 16 bits trong từ thấp của thanh ghi ACCU2 cho số nguyên 16 bits trong từ thấp của thanh ghi ACCU1. Kết quảđược ghi vào từ thấp của ACCU1, nội dung thanh ghi ACCU2 không thay đổi. Nếu kết quả nằm trong khoảng -32768 32767 thì bit OV có giá trị bằng 0, ngược lại 2 bit OV và OS trong thanh ghi trạng thái có giá trị bằng 1.
* Lệnh nhân
Cú pháp *I
Lệnh thực hiện phép nhân hai số nguyên 16 bits trong từ thấp hai thanh ghi ACCU1 và ACCU2, kết quảđược ghi vào từ thấp của ACCU1, nội dung thanh ghi ACCU2 không thay đổi. Nếu kết quả nằm trong khoảng -32768 32767 thì bit OV có giá trị bằng 0, ngược lại 2 bit OV và OS trong thanh ghi trạng thái có giá trị bằng 1.
* Lệnh chia
Cú pháp /I
Lệnh không có toán hạng.
Lệnh thực hiện phép chia số nguyên 16 bits trong từ thấp của thanh ghi ACCU2 cho số nguyên 16 bits trong từ thấp của thanh ghi ACCU1. Kết quả là một số nguyên 16 bits sẽđược ghi vào từ thấp của ACCU1, phân dư của phép chia được ghi vào từ cao trong thanh ghi ACCU1, nội dung thanh ghi ACCU2 không thay đổi. Nếu kết quả nằm trong khoảng -32768 32767 thì bit OV có giá trị bằng 0, ngược lại 2 bit OV và OS trong thanh ghi trạng thái có giá trị bằng 1.
4.2.3.2. Nhóm lệnh làm việc với số nguyên 32 bits
* Lệnh cộng
Cú pháp +D
Lệnh không có toán hạng.
Lệnh thực hiện phép cộng hai số nguyên 32 bits trong hai thanh ghi ACCU1 và ACCU2, kết quảđược ghi vào ACCU1, nội dung thanh ghi ACCU2 không thay đổi. Nếu kết quả nằm trong khoảng -2147483648 (-2^31) 2147483647 (2^31-1) thì bit OV có giá trị bằng 0, ngược lại 2 bit OV và OS trong thanh ghi trạng thái có giá trị bằng 1.
* Lệnh trừ
Cú pháp -D
Lệnh không có toán hạng.
Lệnh thực hiện phép trừ số nguyên 32 bits trong thanh ghi ACCU2 cho số nguyên 32 bits trong thanh ghi ACCU1. Kết quảđược ghi vào ACCU1, nội dung thanh ghi ACCU2 không thay đổi. Nếu kết quả nằm trong khoảng -2147483648 (-2^31) 2147483647 (2^31-1) thì bit OV có giá trị bằng 0, ngược lại 2 bits OV và OS trong thanh ghi trạng thái có giá trị bằng 1.
* Lệnh nhân
Cú pháp *D
Lệnh không có toán hạng.
Lệnh thực hiện phép nhân hai số nguyên 32 bits trong hai thanh ghi ACCU1 và ACCU2, kết quảđược ghi vào ACCU1, nội dung thanh ghi ACCU2 không thay đổi. Nếu kết quả nằm trong khoảng -2147483648 (-2^31) 2147483647 (2^31-1) thì bit OV có giá trị bằng 0, ngược lại 2 bits OV và OS trong thanh ghi trạng thái có giá trị bằng 1.
* Lệnh chia
Lệnh không có toán hạng.
Lệnh thực hiện phép chia số nguyên 32 bits trong thanh ghi ACCU2 cho số nguyên 32 bits trong thanh ghi ACCU1. Kết quả là một số nguyên 32 bits sẽđược ghi vào ACCU1. Nếu kết quả nằm trong khoảng -2147483648 (-2^31) 2147483647 (2^31-1) thì bit OV có giá trị bằng 0, ngược lại 2 bits OV và OS trong thanh ghi trạng thái có giá trị bằng 1.
* Lệnh lấy phần dư
Cú pháp MOD
Lệnh không có toán hạng và xác định phần dư của phép chia số nguyên 32 bits trong thanh ghi ACCU2 cho số nguyên 32 bits trong thanh ghi ACCU1. Kết quả là một số nguyên 32 bits sẽ được ghi vào ACCU1. Nếu kết quả nằm trong khoảng -2147483648 (-2^31) 2147483647 (2^31-1) thì bit OV có giá trị bằng 0, ngược lại 2 bits OV và OS trong thanh ghi trạng thái có giá trị bằng 1.
4.2.3.3. Nhóm lệnh làm việc với số thực 32 bits
* Lệnh cộng
Cú pháp +R
Lệnh không có toán hạng.
Lệnh thực hiện phép cộng hai số thực dấu phẩy động nằm trong hai thanh ghi ACCU1 và ACCU2, kết quảđược ghi vào ACCU1, nội dung thanh ghi ACCU2 không thay đổi. Nếu kết quả nằm trong khoảng -3.402823E+38 -1.175495E-38 hoặc 1.175495E-38 3.402823E+38 thì bit OV có giá trị bằng 0, ngược lại 2 bits OV và OS trong thanh ghi trạng thái có giá trị bằng 1.
* Lệnh trừ
Cú pháp -R
Lệnh không có toán hạng.
Lệnh thực hiện phép trừ số thực 32 bits trong thanh ghi ACCU2 cho số thực 32 bits trong thanh ghi ACCU1. Kết quảđược ghi vào ACCU1, nội dung thanh ghi ACCU2 không thay đổi. Nếu kết quả nằm trong khoảng -3.402823E+38 -1.175495E-38 hoặc 1.175495E-38 3.402823E+38 thì bit OV có giá trị bằng 0, ngược lại 2 bits OV và OS trong thanh ghi trạng thái có giá trị bằng 1. Ví dụ: Thực hiện phép trừ hai số thực MD10 - MD14, kết quả cất vào MD20: L MD10 L MD14 -R T MD20 * Lệnh nhân Cú pháp *R Lệnh không có toán hạng.
quảđược ghi vào ACCU1, nội dung thanh ghi ACCU2 không thay đổi. Nếu kết quả nằm trong khoảng -3.402823E+38 -1.175495E-38 hoặc 1.175495E-38 3.402823E+38 thì bit OV có giá trị bằng 0, ngược lại 2 bits OV và OS trong thanh ghi trạng thái có giá trị bằng 1.
* Lệnh chia
Cú pháp /R
Lệnh không có toán hạng.
Lệnh thực hiện phép chia số thực 32 bits trong thanh ghi ACCU2 cho số thực 32 bits trong thanh ghi ACCU1. Kết quả là một số thực 32 bits sẽđược ghi vào ACCU1. 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 có giá trị bằng 0, ngược lại 2 bits OV và OS trong thanh ghi trạng thái có giá trị bằng 1.
* Lệnh lấy giá trị tuyệt đối
Cú pháp ABS
Lệnh này không có toán hạng, nó xác định giá trị tuyệt đối của số thực trong ACCU1, kết quả ghi lại vào ACCU1. Lệnh này không làm thay đổi các bit trạng thái.