RND // Chuyển số thực 32 bit sang số nguyên 32 bit và làm tròn kết quả.
T MD20 // Chuyển kết quả vào ô nhớ MD20.
3.7.9. Lệnh chuyển số thực thành số nguyên nhỏ, không nhỏ hơn số thực
Cú pháp RND+
Lệnh chuyển số thực 32 bit trong thanh ghi ACCU 1 thành số nguyên 32 bit và làm tròn nó có giá trị gần nhất nhưng không nhỏ hơn số thực đã cho. Kết quả lưu giữ trong ACCU 1. Nội dung của thanh ghi ACCU 2 không thay đổi. Nếu số vượt ra khỏi giới hạn mà một số nguyên 32 bit có thể biểu diễn được thì bit trạng thái OV và OS sẽ nhận giá trị 1 (tràn).
3.7.10. Lệnh chuyển số thực thành số nguyên lớn nhất, không lớn hơn số thực
Cú pháp RND-
Lệnh chuyển số thực 32 bit trong thanh ghi ACCU 1 thành số nguyên 32 bit và làm tròn nó có giá trị gần nhất nhưng không lớn hơn số thực đã cho. Kết quả lưu giữ trong ACCU 1. Nội dung của thanh ghi ACCU 2 không thay đổi. Nếu số vượt ra khỏi giới hạn mà một số nguyên 32 bit có thể biểu diễn được thì bit trạng thái OV và OS sẽ nhận giá trị 1 (tràn).
Giá trị trước chuyển đổi Chuyển đổi Giá trị sau chuyển đổi
MD = “100.5” -> RND -> MD20 = “+100”
MD = “-100.5” -> RND -> MD20 = “-100”
MD = “-15.6” -> RND -> MD20 = “-15”
Giá trị trước chuyển đổi Chuyển đổi Giá trị sau chuyển đổi
MD = “100.5” -> RND+ -> MD20 = “+100”
MD = “-100.5” -> RND+ ->
MD = “-15.6” -> RND+ -> MD20 = “-15”
MD20 = “-100”
Giá trị trước chuyển đổi Chuyển đổi Giá trị sau chuyển đổi
MD = “100.5” -> RND+ -> MD20 = “+100”
MD = “-100.5” -> RND+ -> MD20 = “-100”
MD = “-15.6” -> RND+ -> MD20 = “-15”
3.7.11. Lệnh lấy phần nguyên (Round)
Cú pháp TRUNC
Lệnh không có toán hạng và thực hiện việc lấy phần nguyên của số thực trong ACCU 1. Kết quả lưu giữ lại ở trong ACCU 1. Nội dung ACCU 2 không thay đổi. Nếu số vượt ra khỏi giới hạn mà một số nguyên 32 bit có thể biểu diễn được thì bit trạng thái OV và OS sẽ nhận giá trị 1 (tràn).
Giá trị trước chuyển đổi Chuyển đổi Giá trị sau chuyển đổi
MD = “100.5” -> RND - -> MD20 = “+100”
MD = “-100.5” -> RND - -> MD20 = “-100”
MD = “-15.6” -> RND - -> MD20 = “-15”
Ví dụ: Hãy viết tiếp các câu lệnh vào những dòng có nhiều dấu chấm (số dòng không hạn chế) để đạt được kết quả chứa trong ô nhớ MD20 có giá trị là 7.5
L 2400 T MW2 T MW2 ………. ……… ……… L 5 ………. ……… ……… T MD20 • Chương trình
Network1: //Nạp giá trị số nguyên 2 byte 2400 vào ô nhớ MW2
L 2400 T MW 2 T MW 2
Network2: //Đổi số nguyên 2 byte ở ô nhớ MW2 sang số nguyên 4 byte và lưu vào ô nhớ MD4.
L MW 2 ITD ITD T MD 4
Network3: //Đổi số nguyên 4 byte ở ô nhớ MD4 sang số thực 4 byte và lưu vào ô nhớ MD8.
L MD 4 DTR DTR T MD 8
Network4: //Phép chiasố thực giữa giá trị trong ô nhớ MD8 và 1600.0 rồi lưu vào ô nhớ MD12.
L MD 8 L 1.600000e+003 L 1.600000e+003 /R
T MD 12
Network5: //Đổi số nguyên 2 byte là 5 sang số nguyên 4 byte và lưu vào ô nhớ MD16.
L 5 ITD ITD T MD 16
Network6: //Đổi số nguyên 4 byte ở ô nhớ MD16 sang số thực 4 byte và lưu vào ô nhớ MD24.
L MD 16 DTR DTR T MD 24
Network7: //Nhân số thực giữa giá trị trong ô nhớ MD12 và MD24, kết quả là 7.5 lưu trong MD20.
L MD 12 L MD 24 L MD 24 *R
3.8. LỆNH ĐIỀU KHIỂN THỜI GIAN (timer instruction) 3.8.1. Nguyên tắc hoạt động của timer 3.8.1. Nguyên tắc hoạt động của timer
Bộ định thời là một thành phần của bộ điều khiển lập trình có nhiệm vụ tạo ra thời gian trễ mong muốn giữa tín hiệu logic ngõ vào và tín hiệu logic ngõ ra. Lệnh điều khiển thời gian cho phép chương trình thực hiện các chức năng như:
Làm trễ hoạt động
Theo dõi và kiểm soát chuỗi thời gian Đo lường thời gian…
Nguyên tắc hoạt động được mô tả hình 3.11
Khởi tạo timer
Hiển thị Xóa ngõ vào Tín hiệu vào Thời gian trễ đặt trước Timer word Tín hiệu ra
Hình 3.11 – Nguyên tắc hoạt động timer
Ngay tại thời điểm kích timer, giá trị PV ( thời gian trễ đặt trước) được nạp vào thanh ghi 16 bit của Timer word ( gọi là thanh ghi CV – current value). Timer sẽ ghi lai thời gian biến thiên kể từ khi có tín hiệu kích bằng cách giảm tương ứng giá trị của CV. Nếu giá trị của CV về bằng 0 thì timer sẽ đạt được thời gian trễ mong muốn và đều này sẽ là thay đổi trạng thái tín hiệu ngõ ra.
Vùng nhớ
Các timer được phân bố trong bộ nhớ của CPU và trong S7-300 chứa đến 256 bộ định thời, và được quy định một từ 16 bit cho mỗi địa chỉ timer.
Thời gian trễ
Thời gian trễ τkhai báo cho timer bằng một giá trị tương ứng 16 bit, hình 3.12. Bao gồm 2 phần và được tính theo 3-1
Độ phân giải ε( timer resolution): Bit 12 và 13 của từ timer chứa độ phân giải theo sắp xếp của mã nhị phân, và có 4 độ phân giải từ 10ms, 100ms, 1s , 10s. Giá trị đặt trước PV (Preset Value): bao gồm bít 0 đến bit 11, giá trị là số BCD (0 ÷999)
τ = ε* PV [3-1]
Giá trị thời gian trễ đặt trước được định dạng trực tiếp theo các kiểu dữ liệu sau: Số nguyên 16 bit: W#16#txyz
Trong đó:
• t = độ phân giải (0 -> 10 MS,1-> 100MS,2-> 1S, 3->10S ) • x, y, z : giá trị thời gian theo dạng BCD
• Trong đó: H = giờ (Hours); M = phút (Minutes) ; S = giây (Seconds) ; MS = miligiây (Miliseconds) ; a, b, c, d: là giá trị người sử dụng.
• Độ phân giải được chọn tự động và sẽ làm tròn đến độ phân giải kế cận thấp nhất.
Giá trị lớn nhất có thể đặt được là 9.990 giây hoặc là 2H_46M_30S
Độ phân giải Giá trị PV dưới dạng mã BCD 0≤PV≤999
Độ phân giải Bit 12 & 13
10 MS 00 100 MS 01 100 MS 01
1 S 10
10 S 11
Độ phân giải Giới hạn thời gian
10 MS 10MS ÷ 9S_990MS100 MS 100MS ÷ 1M_39S_900MS 100 MS 100MS ÷ 1M_39S_900MS 1 S 1S to 16M_39S 10 S 10S to 2H_46M_30S 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 τ
Hình 3.12 - Độ phân giải của bộ định thời
Các loại timer
Bao gồm các loại timer sau: S_PULSE, S_PEXT, S_ODT, S_ODTS, S_OFFDT
3.8.2. Các tác vụ timer
Làm việc với timer phải khai báo đầy đủ các yếu tố sau đây: Khai báo loại timer sử dụng
Khai báo tín hiệu kích timer (Enable timer) Khai báo tín hiệu xóa timer
Khai báo thời gian trễ mong muốn Hiển thị thời gian đọc tức thời
3.8.2.1. Tín hiệu kích timer
Ngỏ vào Start (bắt đầu): timer được bắt đầu hoạt động với sự thay đổi tín hiệu từ “0” lên “1” (RLO) ở ngỏ vào Start của nó. Thời gian và hoạt động của timer phải được lập trình ngay sau hoạt động quét điều kiện bắt đầu.
Ví dụ:
A I0.0