Bài 3 : Các tập lập điều khiển chương trình
2.3. Đồng hồ Thời gian thực
Một số tập lệnh xử lý thời gian liên quan đến ngày, giờ. Ta sử dụng các lệnh ngày và giờ để lập trình những tính toán về lịch và thời gian.
• T_CONV chuyển đổi kiểu dữ liệu của một giá trị thời gian: (Time sang Dlnt) hay (Dlnt sang Time)
• T_ADD cộng các giá trị Time và DTL: (Time + Time = Time) hay (DTL + DTL = DTL)
• T_SUB trừ các giá trị Time và DTL: (Time – Time = Time) hay (DTL – Time = DTL)
• T_DIFF đưa ra sự khác nhau giữa hai giá trị DTL như một giá trị Time: DTL – DTL = Time
Bảng dữ liệu thời gian và ngày: Kiểu dữ liệu Độ lớn Giới hạn Ví dụ Time 32 bits T#-24d_20h_31m_23s_648ms đến T#24d_20h_31m_23s_647ms Được lưu trữ : -2,147,483,648 ms đến +2,147,483,647 ms T#5m_30s T#1d_2h_15m_30s_45ms TIME#10d20h30m20s630ms 500h10000ms 10d20h30m20s630ms Date 16 bits D#1990-1-1 to D#2168-12-31 D#2009-12-31 DATE#2009-12-31 2009-12-31 Time_of _Day 32
bits TOD#0:0:0.0 to TOD#23:59:59.999
TOD#10:20:30.400 TIME_OF_DAY#10:20:30.400 23:10:1 DTL (Date and Time Long) 12 bytes Min.: DTL#1970-01-01-00:00:00.0 Max.: DTL#2262-04- 11:23:47:16.854 775 807 DTL#2008-12-16- 20:30:20.250
Lệnh chuyển đổi thời gian mở rộng T_CONV: Thực hiện chuyển đổi dữ liệu tham số đầu vào sang kiểu dữ liệu đầu ra OUT.
Hình 3.9.Cấu trúc lệnh T_CONV Tham số
Khai
IN Input DT, S5TIME, TIME I, Q, M, D, L hoặc hằng số
Giá trị muốn chuyển đổi.
OUT Return DATE, INT, TOD, TIME, S5TIME
I, Q, M, D, L Kết quả phép chuyển đổi.
Ví dụ: Chuyển đổi dữ liệu đầu vào 20ms sang kiểu dữ liệu đầu ra Time_Of_Day
Kết quả
Thay đổi tham số đầu vào
Lệnh cộng thời gian T_ADD: thực hiện phép cộng thời gian của tham số IN1 và IN2, kết quả đưa ra OUT. Các dạng dữ liệu có thể cộng được:
● Cộng hai khoảng thời gian với nhau: Time + Time = Time
● Cộng một khoảng thời gian đến một thời điểm: DTL + Time = DTL Tham số
Khai
báo Kiểu dữ liệu Vùng nhớ Mô tả
IN1 Input Time, DTL, TOD M, D, L Giá trị thời gian 1.
IN2 Input Time M, D, L Giá trị thời gian 2.
OUT Return DTL, Time M, D, L Kết quả thực hiện.
Ví dụ: Cộng giá trị thời gian 40ms vào thời gian hiện thời.
Bảng dữ liệu Data block và chọn tham số
Lệnh ghi thời gian thực cho hệ thống WR_SYS_T (Write System Time): Thiết lập đồng hồ thời gian trong ngày của PLC với một giá trị DTL tại thông số IN. Giá trị thời gian này không bao gồm múi giờ địa phương hay độ dịch chỉnh thời gian tiết kiệm ánh sáng ngày
Hình 3.10.Cấu trúc lệnh WR_SYS_T
Tham số Khai báo Kiểu dữ liệu Vùng nhớ Mô tả
Tham số Khai báo Kiểu dữ liệu Vùng nhớ Mô tả
RET_VAL Return Int D, L Lỗi trả về trong phần help của
Tia Portal
Ví dụ: Cài đặt thời gian cho đồng hồ CPU, dữ liệu sử dụng DATE AND TIME. Khai báo dữ liệu trong My DataBlock.
Kết quả mô phỏng:
Bảng mã lỗi trả về tra cứu trong phần help của Tia Portal. Thời gian cài đặt tối thiểu cho PLC là giây, đồng thời dữ liệu về ngày trong tuần sẽ được lệnh WR_SYS_T tính toán theo dữ liệu thời gian thực gốc của PLC được quy định bởi nhà sản xuất.
Lệnh đọc thời gian thực hệ thống RD_SYS_T (Read System Time): Đọc thời gian hiện thời của hệ thống từ PLC đang hoạt động. Giá trị này không bao gồm múi giờ địa phương hay độ dịch chỉnh thời gian tiết kiệm ánh sáng ngày. Giá trị đọc được này sẽ trả về vùng nhớ OUT với kiểu dữ liệu DTL.
Hình 3.11.Cấu trúc lệnh RD_SYS_T
Tham số Khai báo Kiểu dữ liệu Vùng nhớ Mô tả
RET_VAL Return Int D, L Lỗi trả về trong phần hepl
của Tia Portal
OUT Output DTL D, L Lỗi trả về trong phần Help
của Tia Portal
Lệnh đọc thời gian giờ địa phương RD_LOC_T (Read Local Time): đưa ra thời gian địa phương hiện thời của PLC trả về kiểu dữ liệu DTL. Giá trị thời gian này là Thời gian địa phương được tính toán bằng cách sử dụng múi giờ và độ dịch chỉnh thời gian tiết kiệm ánh sáng ngày (daylight saving time) được thiết lập trong phần cấu hình thiết bị CPU Clock.
Hình 3.12.Cấu trúc lệnh RD_LOC_T
Tham số Khai báo Kiểu dữ liệu Vùng nhớ Mô tả
RET_VAL Return Int D, L Thời gian ngày và giờ của CPU OUT Output DTL D, L Lỗi trả về trong phần Help của Tia
Portal Ví dụ: Đọc thời gian giờ hiện tại
Hàm RD_LOC_T Chạy mô phỏng Bảng tham số RET_VAL Mã lỗi * (W#16#....) Mô tả 0000 Không có lỗi
0001 Không có lỗi. Thời gian địa phương đầu ra là thời gian tiết kiệm ánh sáng ngày. No error. Local time is output as daylight saving time. 8080 Thời gian đại phương không được đọc.
8081
Thời gian địa phương hiện thời không được lưu lại vì dữ liệu nằm ngoài phạm vi cho phép đối với kiểu dữ liệu đã chọn của tham số OUT Với DT: min. DT#1990-01-01-0:0:0, max. DT#2089-12-31- 23:59:59.999
Với LDT: min. LDT#1970-01-01-0:0:0.000000000, max. LDT#2262- 04-11-23:47:16.854775807
Với DTL: min. DTL#1970-01-01-00:00:00.0, max. DTL#2262-04-11- 23:47:16.854775807
* Mã lỗi có thể được hiển thị dạng giá trị số nguyên hoặc số hexa trong lập trình. Để biết thông tin về cách chuyển đổi các định dạng hiển thị, hãy tham khảo "Xem thêm". Ví dụ: Hệ thống điều khiển tự động trong vườn kính trồng hoa thực hiện điều khiển kiểm soát theo yêu cầu sau:
Từ 6h – 6h30 thực hiện tưới nước cho cây. Từ 18h đến 19h bật đèn chiếu sáng cho cây. Thực hiện:
Tạo bảng dữ liệu Mydata_Time