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 thuộc loại:
− Đợ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 modul (ngắt cứng)
* Ngắt tuần tự theo thời gian (OB30 ữOB38)
Ngay khi nhận thấy trong chơng trình 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à 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 hợp thì tất cả các khối 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 module 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 báo 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 Step7. Ta cũng cĩ thể sử dụng Step7 để 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 sau:
Tên hình thức Kiểu Giá trị và ý nghĩa
OB35_EV_CLASS Byte Bits 0-3=1(Coming event), Bits 4-
7=1(Event class 1)
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(thứ tự u tiên)
I- Stack
Nội dung thanh ghi
ACCU1,ACCU2Nội dung thanh ghi AR1,AR2Nội dung thanh ghi DI,DBCon trỏ chỉ vào L-Stack chứa nội dung local block của khối mẹNội dung thanh ghi trạng tháiTên khối mẹĐịa chỉ quay về OB1
OB35_OB_NUMBR Byte 35 là chỉ số của 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ễ (miliseconds)
OB35_ 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
(miliseconds)
OB35_DATE_TIME Date_And_Tim
e Thời điểm OB35 bắt đầu đợc thựchiện
So với các biến trong local block của OB1 thì biến OB35_EXC_FREQ và OB35_PHASE_OFFSET là hơi khác về mặt ý nghĩa sử dụng và cần đợc giải thích rõ thêm :
OB35_EXC_FREQ chứa chu kỳ phát tín hiệu ngắt (mặc định là 100ms hoặc đã đợc qui định lại thành Ta nhờ Step7).
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 cho tới 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.
Nh đã nĩi, ngay khi phát hện thấy một trong các khối OB30 ữ OB38 cĩ
trong Load memory hệ thơng sẽ tự động tích cực chế độ phát tín hiệu báo
ngắt theo chu kỳ 100ms. Chu kỳ Ta =100ms mặc định cĩ thể sửa lại đợc nhờ
cơng cụ phần mềm Simatic Manager nhng giá trị sửa lại đĩ 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ỳ Ta phát tín hiệu ngắt khi CPU ở chế độ STOP và phải sử dụng
Simatic Manager để nạp tham số mới cho module CPU.
Linh hoạt hơn so với việc sửa đổi lại T, ta cĩ thể tích cực hoặc huỷ bỏ chế độ ngắt theo chu kỳ bằng những hàm cĩ sẵn trong hệ điều hành và do đĩ khơng cần phảI chuyển về trạng thái STOP cụ thể là:
− Hàm SFC39 (tên hình thức DIS_IRT) cĩ tác dụng che ngắt.
− Hàm SFC40 (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 sử 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 sử lý ngắt tại một thời điểm định trớc (OB10 ữ OB17).
Khối OB10 nĩi riêng (ví dụ cho module CPU 314) và các khối OB10 ữ
OB17 nĩi chung (phụ thuộc chủng loại của module 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ể qui đị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 (tơng tự cho cả các khối OB11 ữ 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(thứ tự u tiên)
OB10_OB_NUMBR Byte 10 là chỉ số của 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_EX
E Word Mã qui định về chế độ thực hiện sử 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#1001: 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 OB10_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.
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á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 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 hoặc bằng cơng cụ phần mềm Simatic Manager hoặc nhờ hàm SFC30 (cĩ tên hình thức CAN_TINT) của hệ thống.
Để huỷ 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ý.
Ngắt cứng (OB40 ữ OB47)
Đây là loại tín hiệu báo ngắt đợc phát từ module mở rộng (module I/O, AI/AO, CP hay FM) hoặc từ các cổng vào ra số onboard (của module 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.