Những hàm chuẩn quản lý ngắt

Một phần của tài liệu Giáo trình kỹ thuật điều khiển lập trình (Trang 136)

b) Những khốiOB đặc biệt

3.5. Những hàm chuẩn quản lý ngắt

3.5.1. Nghiên cứu các ngắt

3.5.1.1. Xử lý ngắt

Xử lý ngắt là một thủ tục xử lý chương trình được điều khiển bởi sự kiện. Khi một sự kiện xảy ra, hệ điều hành ngắt xử lý chương trình chính và gọi khối tổ chức được gán cho sự kiện. Trong khối tổ chức ngắt đặc biệt này (OB), cĩ chương trình điều khiển phản ứng với sự kiện. Cĩ thể lập trình cĩ cấu trúc trong OB phục vụ ngắt giống như chương trình chính. Sau khi chương trình này được xử lý, hệ điều hành tiếp tục xử lý chương trình chính tại thời điểm ngắt. Như vậy một ngắt cĩ thể xảy ra sau mỗi câu lệnh. Các sự cố dẫn đến ngắt chương trình chính cĩ thể là các ngắt và các lỗi. Khi cĩ nhiều sự kiện ngắt xảy ra thì xử lý ngắt được điều khiển tuần tự theo quyền ưu tiên. Nhiều sự kiện ngắt cĩ thể được kết hợp thành các lớp ưu tiên.

Hệ điều hành cung cấp cho các khối tổ chức ngắt thơng tin khởi động. Thơng tin khởi động nằm trong 20 byte đầu của dữ liệu cục bộ tạm thời của khối tổ chức riêng. Cần phải đảm bảo khai báo 20 byte này cho mọi khối tổ chức kể cả khi khơng sử dụng chúng. Chương trình các khối tổ chức (OB) trong standart library cĩ sẵn một mẫu cho khai báo. Cũng cĩ thể sử dụng cấu trúc biến khác và gán cho chúng các tên riêng.

Khi cài đặt tham số cho CPU hãy xác định số lượng dữ liệu cục bộ tạm thời cho mỗi khối tổ chức. Cần phải quan tâm dến số lượng dữ liệu cục bộ tạm thời của các khối được gọi bởi OB ngắt, đối với một khối tổ chức khơng sử dụng, đặt số dữ liệu cục bộ là “0”. Byte Hardware Interrupts OB40…OB47 Cyclic Interrupts OB30…OB38 Delay time Interrupts OB20… OB23 Time-of- day Interrupts OB10…OB17 0 Cấp sự kiện Cấp sự kiện Cấp sự kiện Cấp sự kiện 1 Sự kiện khởi động Sự kiện khởi động Sự kiện khởi động Sự kiện khởi động 2 Cấp ưu tiên Cấp ưu tiên Cấp ưu tiên Cấp ưu tiên

3 OB số OB số OB số OB số 4 - - - - 5 Nhận biết địa chỉ - - - 6-7 Địa chỉ bắt đầu mơ đun (WORD) Độ lệch pha ms (INT) Nhận biết nhiệm vụ (WORD) Khoảng thời gian (WORD)

8-9 Thơng tin - Khoảng thời gian - 10-11 Hardware interrupts (DWORD) Xung đồng hồ ms (INT) Trễ đã hết (TIME) -

12-19 Điểm thời gian sự kiện (DT)

Điểm thời gian sự kiện (DT)

Điểm thời gian sự kiện (DT)

Điểm thời gian sự kiện (DT) Bảng 3-16: ý nghĩa các ngắt.

3.5.1.2. Ngắt phần cứng (Hardware interrupts)

Ngắt cứng (cịn gọi là ngắt quá trình) được sử dụng để phát hiện ngay lập tức các sự cố nghiêm trọng từ hệ thống điều khiển, chuyển chúng vào trong chương trình phản ứng ngay lập tức bằng cách kích hoạt chương trình phục vụ ngắt tương ứng. Các khối tổ chức OB40 đến OB47 trong Step 7 được sử dụng cho ngắt cứng. Mỗi loại CPU cĩ một số khối nhất định.

a) Kích hoạt một ngắt cứng

Ngắt cứng được kích hoạt bởi một mơ đun cĩ khả năng phát tín hiệu ngắt. Ví dụ cĩ thể là một mơ đun cổng vào digital thu nhận tín hiệu từ quá trình hay một mơ đun chức năng. Theo mặc định tín hiệu kích ngắt bị khĩa. Khi cài đặt tham số cho mơ đun, cĩ thể cho phép kích hoạt các ngắt cứng (tham số tĩnh) trong thanh cơng cụ HW config trong cấu hình phần cứng. ở đây cũng cĩ thể cài đặt tín hiệu ngắt cứng được kích hoạt do một sự cố tự nơi khác đến hay tự phát ra hoặc do cả hai, (tham số động). Tham số động cĩ thể thay đổi với lệnh gọi SFC trong thời gian hoạt động. Khi cài đặt tham số cho mơ đun, cũng cĩ thể gán một khối tổ chức cho ngắt cứng.

Khi một ngắt cứng xảy ra, các khối tổ chức được gán cũng phải tồn tại. Nếu khơng, CPU đưa ra một thơng báo trong vùng đệm chuẩn đốn và gọi khối tổ chức báo lỗi khơng đồng bộ OB85 (Lỗi xử lý chương trình) hay đi vào chế độ STOP. Các ngắt cứng chỉ được kích khi ở chế độ RUN. Ngắt cứng bị từ chối trong khi khởi động.

b) Rà sốt các thơng tin khởi động

Trong khối tổ chức ngắt, cĩ thể biết được mơ đun nào kích các ngắt, Byte 5,6 và 7 của thơng tin khởi động của mơ đun này. Byte 8 đến 11 chứa trạng thái của các cổng vào digital và các trạng thái ngắt của mơ đun đối với các mơ đun khác.

c) Tạo cấu hình ngắt cứng trong CPU

Để tạo cấu hình các ngắt cứng trong CPU, gọi cấu hình phần cứng với cơng cụ HW Config. Thanh “Interrupts” trong hộp thoại “Object Properties” chỉ ra các

khối tổ chức ngắt cứng trong CPU đang sử dụng. Ta đặt cấp ưu tiên xử lý ở đây. Đối với mõi OB ngắt cứng được sử dụng cũng như đối với cấp độ ưu tiên phải được đặt sẵn ít nhất 20 bytes ở dữ liệu cục bộ thời. Thực hiện điều này trên thanh “memory” của “Object properties”.

d) Vơ hiệu hĩa và làm trễ các ngắt cứng

Cĩ thể điều khiển xử lý các ngắt cứng với Nhĩm lệnh chức năng hệ thống sau: SFC 39 DIS_IRT (khĩa ngắt), SFC40 EN_IRT (mở các ngắt bị chặn), SFC 41 DIS_AIRT (trì hỗn ngắt) và SFC 42 EN_AIRT (bỏ trì hỗn).

3.5.1.3. Ngắt chu kỳ (Cyclic Interrupts)

Ngắt chu kỳ được kích hoạt theo chu kỳ với một khoảng thời gian đều đặn. Ngắt chu kỳ (cịn gọi là watchdog interrupt) gọi một khối tổ chức đặc biệt dành riêng cho kiểu ngắt này. Với ngắt chu kỳ cĩ thể tạo ra chương trình được xử lý theo chu kỳ thời gian mà khơng phụ thuộc vào thời gian xử lý của chương trình. Các khối tổ chức OB30 đến OB38 ở STEP 7 dùng để xử lý ngắt chu kỳ. Mỗi loại CPU cĩ một hoặc nhiều khối.

a) Thiết kế ngắt chu kỳ

Ngắt chu kỳ được xác định trong HW Config khi cài đặt tham số cho CPU trong cấu hình phần cứng trong mục “ Cyclic Interrupt” của hộp thoại “ Object Properties”. Một ngắt chu kỳ cĩ 3 tham số: Chu kỳ thực hiện, độ sai dịch và cấp độ ưu tiên. Chu kỳ thực hiện và độ sai dịch cĩ thể thay đổi từ 1ms đến 1 minust với bước 1ms. Cấp độ ưu tiên tùy theo CPU cĩ thể chọn từ 2 đến 24 hoặc 0 (=ngắt khơng tác động). Đối với mỗi OB ngắt chu kỳ cũng như đối với cấp độ ưu tiên phải nhớ dành riêng tối thiểu 20 byte trong dữ liệu cục bộ tạm thời. Thực hiện điều này trên thanh “ Memory” của hộp thoại “ Object Properties”.

b) Độ sai dịch (phase offset)

Cĩ thể sử dụng tham số “phase offset” để xử lý các chương trình ngắt chu kỳ được đặt ở cùng một khoảng thời gian hay bội số của nĩ trong tham số “ Execution”. Điều này tăng độ chính xác của chu kỳ xử lý do khối tổ chức mức độ ưu tiên thấp hơn khơng phải đợi. Cả hai tham số “ Execution” và “ Phase offset” được khởi động khi CPU ở chế độ RUN.

c) Khĩa và trì hỗn ngắt chu kỳ

Cĩ thể sử dụng Nhĩm lệnh chức năng hệ thống sau để ảnh hưởng đến sự xử lý ngắt chu kỳ: SFC 39 DIS_IRT (khĩa ngắt), SFC 40 EN_IRT (mở các ngắt bị chặn), SFC 41 DIS_AIRT (trì hỗn ngắt).

3.5.1.4. Ngắt tại một thời điểm định trước (Time-of-day Interrupts)

Sử dụng ngắt tại một thời điểm định trước (ngắt thời gian trong ngày) khi muốn xử lý một chương trình tại một thời điểm xác định, hoặc chỉ một lần, hay hàng ngày. OB10 đến OB17 được sử dụng cho mục đích này. Mỗi loại CPU sử dụng một hay nhiều khối. Một ngắt thời điểm chỉ cĩ thể được tạo ra chính xác khi đồng hồ thời gian thực được điều chỉnh đúng.

a) Cài đặt ngắt thời điểm trong CPU

Ngắt thời điểm được cài đặt trong cấu hình phần cứng HW Config. Mục “Time Of Day Interrupts” trong hộp thoại “ Object Properties” liệt kê các OB cĩ giá trị cho mục đích này của CPU. Cĩ thể đặt cấp độ ưu tiên xử lý, thực hiện và khởi động điểm thời gian. Ngắt thời điểm được khởi động tự động với option “Active” khi CPU ở chế độ RUN.

Ngắt thời điểm cĩ thể được xử lý bởi một trong hai cách:

- Một lần: Khối tổ chức tương ứng được gọi một lần tại thời điểm đã đặt - Theo chu kỳ: Khối tổ chức tương ứng được khởi động hàng giờ, hàng

ngày, hàng tuần, hàng tháng, hàng năm.

Đối với các OB ngắt được sử dụng cũng như đối với cấp độ ưu tiên của nĩ phải được dành riêng ít nhất 20 byte ở dữ liệu cục bộ tạm thời ở mục “Memory” trong hộp thoại “Object Properties” của CPU. Phải chú ý rằng ngắt tại một thời điểm đã đặt cấu hình phải tồn tại trong chương trình, nếu khơng thì CPU sẽ gọi OB báo lỗi OB85 (xử lý lỗi chương trình) hoặc chuyển CPU về trạng thái STOP. b) Xử lý ngắt thời điểm với Nhĩm lệnh chức năng hệ thống

Để khởi động ngắt thời gian trong ngày, trước tiên phải đặt chỉnh thời gian khởi động và sau đĩ kích hoạt ngắt thời gian trong ngày. Cả hai khả năng này cĩ thể được tách ra và thực hiện ở HW Config và với Nhĩm lệnh chức năng hệ thống. Với hàm SFC 28 SET_TINT, đặt điểm thời gian khởi động và chu kỳ của ngắt thời gian trong ngày; Với hàm SFC 30 ACT_TINT, ta khởi động ngắt thời gian trong ngày.

Cĩ thể sử dụng hàm SFC 31 QRY_TINT để hỏi tình trạng của ngắt thời gian trong ngày. Hàm SFC 29 CAN_TINT hủy bỏ ngắt thời gian trong ngày đang hoạt động. Nếu muốn sử dụng lại ngắt thời gian trong ngày đã được hủy bỏ thì phải đặt thời gian phục hồi với SFC 28 SET_TINT và kích hoạt ngắt thời gian trong ngày với SFC 30 ACT_TINT. Ngắt thời gian trong ngày chỉđược thực hiện khi CPU ở chế độ RUN. Trong quá trình khởi động, ngắt thời gian trong ngày khơng được khởi động cho đến khi CPU đi vào chế độ RUN.

Bạn cĩ thể sử dụng Nhĩm lệnh chức năng hệ thống ssau đây để ảnh hưởng đến ngắt thời gian trong ngày: SFC 39DISS_IRT (khĩa ngắt), SFC 40 EN_INT (mở ngắt đã bị chặn), SFC 41 DIS_AIRT (trì hỗn ngắt) và SFC 42 EN_AIRT (bỏ trì hỗn).

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

Một phần của tài liệu Giáo trình kỹ thuật điều khiển lập trình (Trang 136)

Tải bản đầy đủ (PDF)

(177 trang)