Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (217.45 KB, 5 trang )
Tớ đang lập trình đèn giao thông dùng s7200 bài đèn giao thông, mình dùng vùng nhớ VB3,4,5. để nhập thời gian
thực vào! nhưng mình không biết khi bắt đầu chạy chương trình thì thời gian thực sẽ bắt đầu từ thời gian mình nhập
bên trên hay thế nào và mình lấy thời gian đó như thế nào?ví dụ mình muốn đọc thời gian thực từ 23h tới 5h thì mình
lấy như thế nào? mong các bạn giúp đỡ!
Việc thiết lập thời gian thực (TGT) trong s7-200 có 2 cách!
Cách 1: Thực hiện lệnh SET_RTC (tuy nhiên phương pháp này có vẻ ít dùng vì nó đòi hỏi phải thự hiện lệnh này
ngay lúc đúng thời gian ấy ngòai thực tế)
Cách 2: Thực hiện bằng PC.PC lúc connect với S7-200 qua RS-485 sẽ có chức năng đồng bộ hóa thời gian với
PC.Vì vậy chỉ thực hiện đồng bộ 1 phát là xong, thời gian sẽ dc duy trì tự động trong PLC.
Còn về cách đọc thời gian thực,vì dụ với bài đèn giao thông này đi.Anh sẽ dùng lệnh READ_RTC và move vào VB0
Như thế này này
Sau lệnh này thì thời gian thực sẽ move vào lần lượt các ô nhớ như sau:
VB0-YEAR (NĂM) TỪ 00-99
VB1-MONTH (THÁNG)từ 1-12
VB2-DAY (NGÀY)1-31
VB3-HOUR (GIỜ)00-23
VB4-MINUTE (PHÚT)00-59
VB5-SECOND (GIÂY)00-59
VB6- LÚC NÀO CŨNG LÀ 00
VB7-NGÀY TRONG TUẦN (1=CHỦ NHẬT)1-7
vì vậy anh ko nhất thiết (thậm chí có thể sai, vì có thể các giá trị sẽ chồng lấn nhau) nếu khai báo nhiều ô nhớ, chỉ
cần khai báo VB0 là dc!
TẤT CẢ CÁC Ô NHỚ NÀY ĐỀU CÓ GIÁ TRỊ LÀ SỐ BCD
Vì vậy, sau khi đọc thời gian thực vào các ô này, khi cần so sánh (ví dụ anh cần bật đèn vàng từ 23h đêm) thì anh
phải so sánh thế này
Sở dĩ là 35 là vì sao.Vì 23 giờ, số 23 là số BCD ko nén,ta phải đồi đồi số này ra thành số Binary đề có thề so sánh
bằng lệnh byte (vì byte là số binary)
Cách đổi thế này.2=0010; 3=0011; như vậy 23=0010 0011=00100011=35!
Và như vậy anh có thể đồi bất kì số nào, vì giới hạn là các số 2 chữ số thui ah
Việc set_RTC (hay dùng chức năng synchronyze-đồng bộ hóa thời gian với PC) là làm duy nhất 1 lần và chỉ 1 lần.
Còn Read_RTC phải là luôn luôn và luôn luôn đọc.Cụ thể đầu EN của lệnh Read_RTC ko cần nối tiếp điềm,có điện