Các khốiOB chứa chương trình ứng dụng xử 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 122 - 126)

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

3.4.4.1. Các khốiOB chứa chương trình ứng dụng xử lý ngắt

Chương trình ứng dụng xử lý ngắt được hiểu là loại chương trình viết cho các khối OB và được gọi bởi các tín hiệu báo ngắt. Cĩ ba loại tín hiệu báo ngắt:

- Được phát ra đều đặn cách đều nhau một khoảng thời gian định trước - Được phát ra tại một điểm thời gian định trước

- Được phát ra từ các mơ đun ( Ngắt cứng)

a) Các OB phụ vụ ngắt tuần tự theo thời gian ( sử dụng OB30 và OB38)

Ngay khi nhận thấy trong chương trình ứng dụng cĩ một trong các khối OB30... OB38, hệ thống sẽ tự động tích cực chế độ phát tín hiệu báo ngắt gọi các khối này với khoảng thời gian cách đều nhau. Giá trị mặc định cho chu kỳ phát tín hiệu báo ngắt này là khoảng 100ms. Nĩi cách khác, cứ 100ms thì các khối OB này được gọi và thực hiện một lần.

Tổng quát thì tất cả các khối OB trong khoảng OB30 ữ OB38 đều thuộc nhĩm khối chương trình xử lý ngắt theo chu kỳ thời gian. Song khơng phải mơ đun CPU nào cũng cho phép sử dụng tất cả các khối OB đĩ. Chẳng hạn CPU 314 chỉ cho phép sử dụng OB35.

Trường hợp cĩ nhiều khối OB cùng xử lý một tín hiệu ngắt thì ta cĩ thể phân biệt chúng với nhau theo thứ tự ưu tiên. Chỉ số thứ tự ưu tiên được gán cho từng khối nhớ phần mềm Step 7. Ta cũng cĩ thể sử dụng Step 7 để thay đổi chu kỳ phát tín hiệu báo ngắt.

Local block của các khối OB30 ữ OB38 cĩ dạng chung giống như của OB35 cho trong bảng 3-5 sau:

Tên hình thức Kiểu Giá trị và ý nghĩa

OB35_EV_CLASS Byte Bít 0-3=1(Coming event); Bít 4- 7=1 (Event class1)

OB35_SCAN_1 Byte Báo OB35 đã được thực hiện bằng

giá trị 16#36

OB35_PRIORITY Byte Cĩ giá trị là 11 (giá trị ưu tiên) OB35_OB_NUMBER Byte 35. Là chỉ số củ khối OB35 OB35_RESERVED_1 Byte Dự trữ ( của hệ điều hành)

OB35_ RESERVED_2 Byte Dự trữ ( của hệ điều hành) OB35_PHASE_OFFSET Word Thời gian trễ (milliseconds) 0B35_RESERVED_3 Int Dự trữ ( của hệ điều hành)

OB35_EXC_FREQ Int Chu kỳ thời gian thực hiện

(milliseconds)

OB35_DATE_TIME Date_and_Time Thời điểm OB35 bắt đầu được thực hiện

Bảng 3-5: ý nghĩa của khối OB 35.

Trong các biến của local block cần chú ý về ý nghĩa sử dụng của hai biến sau: OB35_EXC_FREQ chứa chu kỳ phát tín hiệu ngắt ( mặc định là 100ms hoặc đã được quy định lại thành T nhờ Step 7, nhưng giá trị đĩ là cố định trong suốt quá trình thực hiện chương trình ứng dụng sau này , tức là ta chỉ cĩ thể sửa lại chu kỳ T phát tín hiệu ngắt khi CPU ở chế độ STOP và phải sử dụng Simatic Manager để nạp các tham số mới cho mơ đun CPU)

OB35_PHASE_OFFSET: Chứa khoảng thời gian trễ kể từ khi xuất hiện tín hiệu báo ngắt đến khi OB35 được gọi. Thơng thường ơ nhớ này cĩ nội dung bằng 0, song trong một số trường hợp ứng dụng người ta vẫn phải gán cho nĩ một giá trị dương khác 0 nhằm tránh nguy cơ nhiều khối OB30 ữ OB38 cùng được thực hiện một lúc dễ gây ra lỗi về thời gian cho hệ thống.

Ta cĩ thể tích cực hoặc hủy bỏ chế độ ngắt theo chu kỳ bằng những hàm cĩ sẵn trong hệ điều hành và khơng cần phải chuyển CPU về trạng thái STOP. Cụ thể là Nhĩm lệnh:

- Hàm SFC39 (với tên hình thức DIS_IRT) cĩ tác dụng che ngắt

- Hàm SFC40 (với tên hình thức EN_IRT) cĩ tác dụng bỏ mặt nạ che ngắt - Hàm SFC41 ( tên hình thức DIS_AIRT) cĩ tác dụng che tất cả các ngắt cĩ

mức ưu tiên cao hơn tín hiệu ngắt đang được xử lý.

- Hàm SFC42 ( tên hình thức EN_AIRT) cĩ tác dụng bỏ mặt nạ che tất cả các ngắt cĩ mức ưu tiên cao hơn tín hiệu ngắt đang được xử lý.

b) Các OB phục vụ ngắt tại một thời điểm định trước (OB10 và OB17)

Khối OB10 nĩi riêng (ví dụ cho CPU 314) và các khối OB10 ữ OB17 nĩi chung (phụ thuộc chủng loại của mơ đun CPU) sẽ được hệ điều hành gọi một lần tại một thời điểm định trước hoặc nhiều lần kể từ thời điểm đã cho. Khi được gọi nhiều lần kể từ thời điểm đã được xác định, ta cĩ thể quy định

- Mỗi phút một lần, - Mỗi tiếng một lần, - Mỗi ngày một lần - Mỗi tuần một lần, - Mỗi tháng một lần, - Mỗi năm một lần

Khối OB10 cĩ local block như sau (tương tự cũng cho cả các khối OB10 ữ OB17)

Tên hình thức Kiểu Giá trị và ý nghĩa

OB10_EV_CLASS Byte B#16#11= Ngắt đang được tích cực.

OB10_STRT_INFO Byte B#16#11 = OB10 đã được gọi và thực hiện.

OB10_PRIORITY Byte Cĩ giá trị là2 (giá trị ưu tiên). OB10_OB_NUMBER Byte 10 Là chỉ số củ khối OB10. OB10_RESERVED_1 Byte Dự trữ ( của hệ điều hành). OB10_

RESERVED_2 Byte Dự trữ ( của hệ điều hành).

OB10_PERIOD_EXE Word Mã quy định chế độ thực hiện xử lý ngắt. W#16 # 0000: Một lần. W#16 # 0201: Mỗi phút một lần. W#16 # 0401: Mỗi giờ một lần. W#16 # 10001: Mỗi ngày một lần W#16 # 1201: Mỗi tuần một lần. W#16 # 1401: Mỗi tháng một lần. W#16 # 1801: Mỗi năm một lần. 0B10_RESERVED_3 Int Dự trữ ( của hệ điều hành).

OB10_

RESERVED_4 Int Dự trữ ( của hệ điều hành).

OB10_DATE_TIME Date_and_Time Thời điểm OB10 bắt đầu được thực hiện.

Bảng 3-6: ý nghĩa và cách sử dụng khối OB 10.

Cĩ hai cách để định nghĩa thời điểm phát tín hiệu ngắt và quy định chế độ làm việc (một lần hay nhiều lần) cho OB10 ữ OB17. C. Cách thứ nhất là sử dụng cơng cụ phần mềm Simatic Manager và cách thứ hai là sử dụng hàm SFC28 cĩ tên hình thức SET_TINT của hệ thống.

Sau khi định nghĩa thời điểm gọi khối OB10, bản thân khối OB10 cũng cần phải được tích cực. Ta cũng cĩ hai cách để tích cực khối OB10 bằng cơng cụ phần mềm Simatic Manager hoặc nhờ hàm SFC30 (cĩ tên hình thức ACT_TINT) của hệ thống.

Để hủy bỏ trạng thái tích cực của khối OB10 ta sử dụng hoặc cơng cụ phần mềm Simatic Manager hoặc nhờ hàm SFC29 (cĩ tên hình thức CAN_TINT).

Tín hiệu báo ngắt tại thời điểm định trước này cĩ thể được che nhờ hàm SFC39 (cĩ tên hình thức DIS_IRT) hay bĩc mặt nạ che nhờ hàm SFC40 (cĩ tên hình thức EN_IRT). Ngồi ra ta cũng cĩ thể sử dụng hàm SFC41 (cĩ tên hình thức DIS_AIRT) để che tất cả các ngắt cĩ mức ưu tiên cao hơn tín hiệu ngắt đang được xử lý hoặc hàm SFC42 ( cĩ tên hình thức EN_AIRT) để bỏ mặt nạ che tất cả các ngắt cĩ mức ưu tiên cao hơn tín hiệu ngắt đang được xử lý.

c) Các OB phục vụ cho ngắt cứng (OB40 và OB47)

Đây là các tín hiệu báo ngắt được phát ra từ các mơ đun mở rộng (mơ đun I/O; AI/AO; CP hay FM) hoặc từ các cổng vào ra số onboard (của mơ đun CPU IFM). Chế độ báo ngắt cứng này thường được sử dụng trong các chương trình điều khiển mà ở đĩ địi hỏi phải cĩ sự đáp ứng nhanh với tín hiệu từ ngồi đưa vào.

Khơng phải mọi loại mơ đun I/O; AI/AO mở rộng đều cĩ khả năng phát tín hiệu báo ngắt. Thậm chí đối với ngay cả những mơ đun đặc biệt cĩ khả năng phát tín hiệu ngắt cứng thì ta cũng phải đặt tham số chế độ ngắt cứng cho nĩ.

- Hoặc bằng phần mềm Simatic Manager ( cho các mơ đun I/O; AI/AO) hay bằng các phần mềm kèm theo của mơ đun CP, FM.

- Hoặc nhờ Nhĩm lệnh của hệ thống như:

+ SFC55 ( tên hình thức WR_ PARM) để ghi tham số đặt cấu hình cho mơ đun

+ SFC56 ( tên hình thức WR_ DPARM) để sửa đổi một vài tham số cấu hình cho mơ đun trong chế độ RUN.

+ SFC57 ( tên hình thức PARM_MOD ) để sửa đổi tồn bộ tham số cấu hình của mơ đun . Một điều đặc biệt của chế độ ngắt cứng là trong khoảng thời gian thực hiện chương trình của OB40 (hoặc khối OB40 ữ OB47) hệ thống sẽ khơng nhận và khơng xử lý bất cứ một tín hiệu ngắt cứng nào khác.

Tín hiệu ngắt cứng cũng cĩ thể được che, hủy mặt nạ che, che,bỏ mặt nạ che tất cả các ngắt cĩ mức ưu tien cao hơn nhờ Nhĩm lệnh: SFC39,SFC40, SFC41, SFC42.

Khối OB40 ( tương tự cũng như các khối từ OB40 ữ OB47) cĩ local block như sau:

Tên hình thức Kiểu Giá trị và ý nghĩa OB40_EV_CLASS Byte B#16#11= Ngắt đang được tích cực

OB40_STRT_INFO Byte B#16#11 = OB40 đã được gọi và thực hiện

OB40_PRIORITY Byte Cĩ giá trị là16 (thứ tự ưu tiên mặc định) OB40_OB_NUMBER Byte 40 Là chỉ số củ khối OB40

OB40_RESERVED_1 Byte Dự trữ ( của hệ điều hành) OB40_RESERVED_2 Byte Dự trữ ( của hệ điều hành)

OB40_MDL_EXE Int Địa chỉ mơ đun I/O số , mơ đun AI/AO, CP hay FM phát tín hiệu ngắt

OB40_POINT_ADDR Dword Nếu là mơ đun I/O số thì nội dung ơ nhớ này là địa chỉ cổng số phát tín hiệu ngắt Nếu là mơ đun AI/AO, CP hay FM thì nội dung ơ nhớ là trạng thái ngắt của mơ đun .

OB40_DATE_TIME Date_and _Time

Thời điểm OB40 bắt đàu được thực hiện Bảng 3-7: ý nghĩa và cách sử dụng khối OB 40.

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 122 - 126)

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

(177 trang)