b) Những khốiOB đặc biệt
3.5.1.5. Ngắt trễ thời gian
Cĩ thể sử dụng ngắt trễ thời gian để thực hiện một thời gian trễ khơng phụ thuộc vào các Timer. Các khối tổ chức OB20 đến OB23 ở STEP 7 được sử dụng cho ngắt trễ thời gian. Mỗi loại CPU sử dụng một hay nhiều khối.
a) Đặt cấu hình ngắt trễ thời gian trong CPU
Sử dụng cơng cụ HW Config để đặt cấu hình ngắt trễ thời gian trong CPU. Mục “Interrupts” trong hộp thoại “Object Properties” liệt kê các khối tổ chức cĩ cho mục đích này. Cấp độ ưu tiên được đặt ở đây. Đối với OB ngắt trễ thời gian được sử dụng cũng như đối với cấp độ ưu tiên của nĩ phải lưu ý dành riêng ít nhất 20 byte dữ liệu cục bộ tạm thời trong mục “Memory” của hộp thoại Object Properties”.
b) Xử lý ngắt trễ thời gian với Nhĩm lệnh chức năng hệ thống
Cĩ thể khởi động ngắt trễ thời gian trong chương trình bằng cách gọi hàm chức năng hệ thống SFC 32 SRT_DINT. Việc gọi SFC cũng chuyển thời gian cần trễ và khối tổ chức được chọn tới hệ điều hành. Cĩ thể đặt thời gian trễ từ 1ms với độ chính xác là 1ms. Thời điểm gọi SFC cũng là thời điểm bắt đầu của thời gian trễ. Khối tổ chức đã được chọn được khởi động khi thời gian trễ đã hết. Chú ý rằng việc xử lý các khối tổ chức ngắt trễ thời gian cĩ thể bị trì hỗn nếu khối tổ chức cĩ cấp ưu tiên cao hơn đang được xử lý tại thời điểm OB ngắt đang được gọi.
Cĩ thể viết đè lên thời gian trễ đang chạy một giá trị mới bằng cách gọi hàm SFC 32 SRT_DINT. Thời gian trễ mới bắt đầu hoạt động tại thời điểm SFC được gọi. Cĩ thể hủy bỏ ngắt trễ thời gian đã khởi động bằng cách gọi hàm SFC 33 CAN_DINT lần thứ hai; khối tổ chức cĩ liên quan lúc này khơng bị gọi nữa . Hỏi trạng thái ngắt trễ thời gian bằng hàm SFC 34 QRY_DINT. Phải chắc chắn rằng OB ngắt trễ thời gian đang tồn tại trong CPU, nếu khơng CPU sẽ gọi OB báo lỗi OB85 hoặc đi vào chế độ STOP.
Ngắt trễ thời gian chỉ được thực hiện trong chế độ RUN của CPU. Cĩ thể khởi động ngắt trễ thời gian trong chương trình khởi động bằng việc gọi hàm SFC 32 SRT_DINT. Trong trường hợp này, CPU phải ở chế dộ RUN khi thời gian trễ đã chạy xong. Nếu khơng, CPU sẽ chờ gọi khối tổ chức cho đến khi kết thúc chương trình khởi động và gọi OB ngắt trễ thời gian trong khi chuyển sang chế độ RUN trước khi khởi động chương trình chính.
Cĩ thể sử dụng Nhĩm lệnh chức năng hệ thống sau đây để ảnh hưởng ngắt trễ thời gian: SFC 39 DIS_IRT ( khĩa ngắt), SFC 40 EN_IRT ( Mở ngắt bị khĩa), SFC 41 DIS_AIRT ( Trì hỗn ngắt) và SFC 42 EN_AIRT ( bỏ trì hỗn).
3.5.2. Những hàm chuẩn quản lý ngắt 3.5.2.1. Hàm SFC 39 (DIS - IRT) 3.5.2.1. Hàm SFC 39 (DIS - IRT)
Hàm cĩ tác dụng dương mặt nạ che. Một tín hiệu ngắt nhất định, một nhĩm các tín hiệu ngắt hoặc che tất cả các tín hiệu ngắt và tín hiệu báo lỗi khơng đồng bộ. Khi một tín hiệu ngắt hay báo lỗi được dương mặt nạ che, hệ thống sẽ khơng để ý tới tín hiệu đĩ nữa, tức là sẽ khơng gọi khối OB tương ứng chứa chương trình xử lý tín hiệu ngắt, báo lỗi này cho tới khi mặt nạ che được bỏ đi.
Hàm SFC39 cĩ các tham biến hình thức vào – ra như sau : Loại biến Tên biến Kiểu dữ
liệu
ý nghĩa
IN Mode Byte Xác định loại tín hiệu ngắt, báo lỗi được che
B#16#0: che tất cả các tín hiệu ngắt và tín hiệu báo lỗi khơng đồng bộ. Khơng che tín hiệu báo lỗi đồng bộ.
B#16#1: che tất cả các tín hiệu ngắt, báo lỗi thuộc một nhĩm nhất định. Nhĩm các tín hiệu được che được chỉ thị bởi tên khối OB đầu tiên của nhĩm biến OB – NR
B#16#2: Che một tín hiệu ngắt. Tín hiệu ngắt được che được chỉ thị bởi tên khối OB tương ứng cho biến OB - NR IN OB - NR INT Tên khối OB của tín hiệu ngắt, báo lỗi
được che
Out RET-VAL INT Giá trị trả về của hàm:
W#16#0000 : Hàm làm việc bình thường
W#16#8090: Dữ liệu cho OB – NR bị sai
W#16#8091: Dữ liệu cho Mode bị sai Bảng 3-17 : Hàm SFC39
3.5.2.2. Hàm SFC 40 (EN - IRT)
Hàm cĩ tác dụng gỡ bỏ mặt nạ che: - Của một tín hiệu ngắt
- Của một nhĩm các tín hiệu ngắt
- Của tất cả các tín hiệu ngắt và tín hiệu báo lỗi khơng đồng bộ. Khi một tín hiệu ngắt báo lỗi khơng đồng bộ được gỡ bỏ mặt nạ che,hệ thống sẽ gọi khối OB tương ứng chứa chương trình xử lý lỗi khi xuất hiện tín hiệu ngắt, báo lỗi này.
Hàm SFC40 cĩ các tham biến hình thức vào – ra như sau:
Loại biến Tên biến Kiểu dữ
liệu ý nghĩa
IN Mode byte
Xác định loại tín hiệu ngắt, báo lỗi được bỏ mặt nạ che.
B#16#0 : Bỏ mặt nạ che cho tất cả các tín hiệu ngắt và tín hiệu báo lỗi khơng đồng bộ
B#16#1 : Bỏ mặt nạ che cho tất cả các tín hiệu ngắt, báo lỗi thuộc một nhĩm nhất định. Nhĩm các tín hiệu này phải được chỉ thỉ bởi tên khối OB đầu tiên của nhĩm OB – NR
IN OB-NR INT
Tên khối OB của tín hiệu ngắt, báo lỗi được bỏ mặt nạ che
Out RET-VAL INT
Giá trị trả về của hàm :
W#16#0000 : Hàm làm việc bình thường
W#16#8090: Dữ liệu cho OB – NR bị sai
W#16#8091: Dữ liệu cho Mode bị sai
3.5.2.3. Hàm SFC41 (DIS - AIRT)
Hàm cĩ tác dụng dương mặt nạ che cho tất cả các tín hiệu ngắt, tín hiệu báo lỗi khơng đồng bộ cĩ thứ tự ưu tiên cao hơn độ ưu tiên của khối OB chứa lệnh gọi hàm này.
Trong một khối chương trình, hàm SFC41 cĩ thể được gọi nhiều lần, số lần gọi được hệ đều hành đếm và ghi nhận lại dưới dạng tham trị trả về của hàm.
Hàm chỉ cĩ một tham biến hình thức với tên RET-VAL thuộc loại biến Out và cĩ kiểu dữ liệu là INT. Tham trị trả về qua biến này là số lần hàm đã được gọi.
Các tín hiệu ngắt, báo lỗi đã được che sẽ khơng được hệ điều hành xử lý cho tới khi chúng được tích cực lại nhờ hàm SFC42 (EN-AIRT) hoặc khi khối chương trình chứa lệnh gọi hàm đã được thực hiện xong
3.5.2.4. Hàm SFC42 (EN-AIRT)
Hàm cĩ tác dụng bỏ mặt nạ che của tất cả các tín hiệu ngắt, tín hiệu báo lỗi khơng đồng bộ cĩ thứ tự ưu tiên cao hơn độ ưu tiên của khối OB chứa lệnh gọi hàm này.
Trong một khối chương trình, hàm SFC42 cĩ thể được gọi nhiều lần. Các tín hiệu ngắt, báo lỗi chỉ thực sự được bỏ mặt nạ che nếu số lần gọi SFC42 đúng bằng số lần gọi hàm SFC41 trước đĩ.
Hàm chỉ cĩ một biến hình thức với tên RET-VAL thuộc loại biến Out và cĩ kiểu dữ liệu là INT. Tham trị trả về qua biến này là:
- Số lần hàm cịn cần phải gọi để cĩ thể thực sự bỏ mặt nạ che của tất cả các tín hiệu ngắt, tín hiệu báo lỗi khơng đồng bộ.
- Hoặc là giá trị W#16#8080 nếu hàm SFC42 được gọi khi tất cả các tín hiệu ngắt và tín hiệu báo lỗi khơng đồng bộ đang ở trạng thái tích cực
Hàm SFC42 khơng bị ngắt tức là phần chương trình nằm giữa hai lệnh gọi hàm SFC41 và SFC42 sẽ khơng bị ngắt bởi bất cứ một tín hiệu báo ngắt hoặc tín hiệu báo lỗi khơng đồng bộ nào.