MỤC LỤC
Lời mở đầu.
PHẦN 1: PLCS7-300 . 1
Chương 1: Giới thiệu . 2
I. Tổng quan về bộ điều khiển lập trình được 2
1. Bộ điều khiển lập trình được 2
2. Điều khiển nối cứng và điều khiển lập trình được . 2
3. Quét chương trình tuần hoàn và ảnh các quá trình 3
a. Quét chương trình tuần hoàn 3
b. Aûnh các quá trình . 3
II. Cấu trúc và phân chia bộ nhớ . 4
1. Các module của PLC S7-300 4
a. Module CPU . 4
b. Module mở rộng 5
2. Kiểu dữ liệu và phân chia bộ nhớ 6
a. Kiểu dữ liệu . 6
b. Phân chia bộ nhớ . 6
c. Tầm địa chỉ tối đa cho các vùng nhớ . 7
3. Cấu trúc chương trình 8
a. Lập trình tuyến tính . 8
b. Lập trình có cấu trúc . 8
Chương 2: Ngôn ngữ lập trình S7-300 11
I. Sử dụng các ô nhớ và cấu trúc thanh ghi trạng thái 11
1. Địa chỉ ô nhớ 11
a. Phần chữ 11
b. Phần số . 12
2. Cấu trúc thanh ghi trạng thái . 12
II. Các lệnh và phép toán . 16
1. Lệnh nạp chuyển . 16
2. Các lệnh tác động vào RLO và ô nhớ 16
3. Các lệnh tác động vào hai thanh ghi ACCU1 và ACCU2 . 17
a. Nhóm lệnh đảo vị trí bytes 17
b. Nhóm lệnh tăng giảm 17
c. Nhóm lệnh dịch chuyển . 18
d. Nhóm lệnh chuyển đổi số BCD và số nguyên 20
e. Nhóm lệnh chuyển đổi số dấu chấm động sang số nguyên 20
f. Nhóm lệnh so sánh . 21
g. Nhóm lệnh số học . 22
4. Các lệnh điều khiển logic và điều khiển chương trình 23
a. Các lệnh điều khiển logic 23
b. Các lệnh điều khiển chương trình 25
5. Bộ định thời Timer . 29
a. Chức năng Timer 29
b. Các ví dụ bằng giản đồ cho từng loại Timer 30
6. Bộ đếm Counter 33
a. Chức năng Counter 33
b. Ví dụ minh họa . 34
Chương 3: Thực thi chương trình . 35
I. Hoạt động của CPU 35
1. Các vùng nhớ CPU . 35
2. Cất chương trình vào CPU 36
3. Định nghĩa các vùng nhớ giữ . 36
a. Sử dụng RAM không bốc hơi 37
b. Đặt cấu hình dữ liệu cất trong RAM . 38
c. Sử dụng pin backup để giữ dữ liệu 38
4. Hoạt động của CPU . 39
a. Chu kỳ quét 39
b. Các chế độ hoạt động . 39
c. Các chế độ hoạt động khác 41
II. Các khối logic 42
1. Các khối tổ chức OB . 42
2. Các hàm và các khối hàm . 48
3. Các khối hệ thống . 48
4. Các khối của các CPU của PLC S7-300 49
5. Thực thi chương trình trong OB1 . 49
a. Hoạt động của OB1 . 49
b. Dữ liệu cục bộ trong OB1 . 50
c. Thông tin Start up 50
d. Lớp ưu tiên và chương trình ngắt 51
PHẦN 2: LẬP TRÌNH WINCC . 54
Chương 1: Control Center . 55
I. Nội dung của Control Center 56
1. Chức năng 56
a. Nhiệm vụ của quản lý dữ liệu . 56
b. Nhiệm vụ của Control Center 56
2. Cấu trúc 57
3. Soạn thảo 58
4. Các thành phần của project trong Control Center . 58
a. Máy tính . 59
b. Quản lý tag 59
c. Các kiểu dữ liệu . 63
d. Soạn thảo . 65
Chương 2: Các thành phần soạn thảo 66
I. Alarm Logging 66
1. Chức năng . 66
a. Nhiệm vụ của Alarm Logging CS . 66
b. Nhiệm vụ của Alarm Logging RT 66
2. Khái quát về Alarm Logging . 66
a. Thông báo 66
b. Thủ tục thông báo . 67
c. Cấu trúc một thông báo 67
d. Tổ chức các thông báo 68
e. Hiển thị các thông báo trong chế độ run timer 68
II. Tag Logging 69
1. Chức năng . 69
a. Nhiệm vụ của Tag Logging CS 69
b. Nhiệm vụ của Tag Logging RT 69
c. Thực hiện Tag Logging . 70
d. Các kiểu dữ liệu 70
e. Các phương pháp lưu trữ dữ liệu quá trình . 71
2. Cấu trúc của Tag Logging CS 75
a. Timers 75
b. Achives 75
c. Trends 77
d. Tables 77
III. Graphic Designer 77
1. Chức năng 77
2. Cấu trúc . 77
a. Palette đối tượng . 78
b. Tab “Property” . 81
c. Tab “Event” 81
IV. Global Scripts 82
1. Giới thiệu . 82
2. Các hàm dự án 83
3. Các hàm chuẩn . 84
a. Các hàm chuẩn có sẵn trong hệ thống 84
b. Các hàm chuẩn lựa chọn . 86
4. Các hàm nội 86
V. Report Designer . 95
1. Giới thiệu 95
2. Báo cáo . 96
a. Báo cáo trong page layout . 97
b. Báo cáo trong line layout 98
3. Kết nối Report Layouts với các ứng dụng 98
a. Chọn dữ liệu để phản hồi tài liệu . 98
b. Chọn dữ liệu cho cấu hình on-line . 102
PHẦN 3: ỨNG DỤNG HỆ SCADA VÀO HỆ THỐNG PHA TRỘN HÓA CHẤT 103
Chương 1: Hệ thống Scada . 104
I. Giới thiệu hệ Scada . 104
II. Các đặc tính chính của hệ thống Scada hiện đại 107
Chương 2: Thực hiện chương trình 110
I. Giới thiệu về hệ thống pha trộn . 110
1. Giới thiệu tổng quát 110
2. Hoạt động của hệ thống . 110
II. Tạo các giao diện kết nối bằng WinCC 114
1. Các tags và nhóm tag đã tạo trong chương trình 114
2. Các giao diện cho chương trình . 116
a. Màn hình chính . 116
b. Màn hình “Giới thiệu” 117
c. Màn hình “Thông tin” 118
d. Màn hình “Điều khiển” 119
e. Màn hình “Mô hình” . 120
f. Màn hình “Xem dữ liệu” . 121
g. Màn hình “Thu thập” 122
h. Màn hình “Đồ thị” 123
i. Màn hình “Thông báo” 124
III. Lập trình cho hệ thống bằng Simatic S7-300 . 125
1. Đặc tính thiết bị 125
a. Cấu hình . 125
b. Cáp kết nối MPI . 126
2. Giới thiệu chương trình . 127
a. Các khối sử dụng trong chương trình . 127
b. Phần lập trình . 127
Chương 3: Kết quả thực hiện và hướng phát triển đề tài . 128
1. Kết quả thực hiện 128
2. Hướng phát triển đề tài 128
54 trang |
Chia sẻ: lvcdongnoi | Lượt xem: 3199 | Lượt tải: 1
Bạn đang xem trước 20 trang tài liệu Luận văn Thiết kế hệ SCADA dùng WinCC, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
C SIMATIC S7-300.
Chöông 2: Ngoân Ngöõ Laäp Trình S7-300
SÖÛ DUÏNG CAÙC OÂ NHÔÙ VAØ CAÁU TRUÙC THANH GHI TRAÏNG THAÙI.
Ñòa chæ oâ nhôù.
Ñòa chæ oâ nhôù goàm phaàn chöõ vaø phaàn soá.
Phaàn chöõ: chæ vò trí vaø kích thöôùc oâ nhôù.
M: chæ oâ nhôù trong mieàn caùc bieán côø coù kích thöôùc laø 1 bit.
MB: chæ oâ nhôù trong mieàn caùc bieán côø coù kích thöôùc laø 1 byte.
MW: chæ oâ nhôù trong mieàn caùc bieán côø coù kích thöôùc laø 2 bytes.
MD: chæ oâ nhôù trong mieàn caùc bieán côø coù kích thöôùc laø 4 bytes.
I: chæ oâ nhôù coù kích thöôùc laø 1 bit trong mieàn boä ñeäm coång vaøo soá.
IB: chæ oâ nhôù coù kích thöôùc laø 1 byte trong mieàn boä ñeäm coång vaøo soá.
IW: chæ oâ nhôù coù kích thöôùc laø 1 töø trong mieàn boä ñeäm coång vaøo soá.
ID: chæ oâ nhôù coù kích thöôùc laø 2 töø trong mieàn boä ñeäm coång vaøo soá.
Q: chæ oâ nhôù coù kích thöôùc laø 1 bit trong mieàn boä ñeäm coång ra soá.
QB: chæ oâ nhôù coù kích thöôùc laø 1 byte trong mieàn boä ñeäm coång ra soá.
QW: chæ oâ nhôù coù kích thöôùc laø 1 töø trong mieàn boä ñeäm coång ra soá.
QD: chæ oâ nhôù coù kích thöôùc laø 2 töø trong mieàn boä ñeäm coång ra soá.
T: chæ oâ nhôù trong mieàn nhôù cuûa boä thôøi gian Timer.
C: chæ oâ nhôù trong mieàn nhôù cuûa boä ñeám Counter.
PIB: chæ oâ nhôù coù kích thöôùc 1 byte thuoäc vuøng peripheral input.
PIW: chæ oâ nhôù coù kích thöôùc 1 töø thuoäc vuøng peripheral input.
PID: chæ oâ nhôù coù kích thöôùc 2 töø thuoäc vuøng peripheral input.
PQB: chæ oâ nhôù coù kích thöôùc 1 byte thuoäc vuøng peripheral output.
PQW: chæ oâ nhôù coù kích thöôùc 1 töø thuoäc vuøng peripheral output.
PQD: chæ oâ nhôù coù kích thöôùc 2 töø thuoäc vuøng peripheral output.
DBX: chæ oâ nhôù coù kích thöôùc 1 bit trong khoái döõ lieäu DB.
DBB: chæ oâ nhôù coù kích thöôùc 1 byte trong khoái döõ lieäu DB.
DBW: chæ oâ nhôù coù kích thöôùc 1 töø trong khoái döõ lieäu DB.
DBD: chæ oâ nhôù coù kích thöôùc 2 töø trong khoái döõ lieäu DB.
Phaàn soá:
Chæ ñòa chæ cuûa byte hoaëc bit trong mieàn nhôù ñaõ xaùc ñònh.
Neáu oâ nhôù ñaõ ñöôïc xaùc ñònh thoâng qua phaàn chöõ laø coù kích thöôùc 1 bit thì phaàn soá seõ goàm ñòa chæ cuûa byte vaø soá thöù töï cuûa bit trong byte ñoù ñöôïc taùch vôùi nhau baèng daáu chaám.
Ví duï: I 1.3
M 100.5
Q 124.7
Neáu oâ nhôù ñaõ ñöôïc xaùc ñònh laø 1 byte, töø hoaëc töø keùp thì phaàn soá seõ laø ñòa chæ byte ñaàu tieân trong maûng byte cuûa oâ nhôù ñoù.
Ví duï: DIB 15
MD 46
Caáu truùc thanh ghi traïng thaùi.
Khi thöïc hieän leänh , CPU seõ ghi nhaän laïi traïng thaùi cuûa pheùp tính trung gian cuõng nhö cuûa keát quaû vaøo moät thanh ghi ñaëc bieät goïi laø thanh ghi traïng thaùi (status word). Caáu truùc cuûa thanh ghi traïng thaùi:
215... ...29
28
27
26
25
24
23
22
21
20
BR
CC1
CC0
OV
OS
OR
STA
RLO
/FC
Bit /FC (first check)
Bit 0 cuûa thanh ghi traïng thaùi ñöôïc goïi laø bit kieåm tra ñaàu tieân (/FC). Moãi leänh kieåm tra traïng thaùi tín hieäu cuûa /FC cuõng nhö traïng thaùi tín hieäu cuûa toaùn haïng. Neáu bit /FC =0, leänh caát keát quaû kieåm tra traïng thaùi tín hieäu vaøo bit RLO vaø ñaët bit /FC leân 1. Quaù trình naøy ñöôïc goïi laø kieåm tra ñaàu tieân (first check) hay queùt laàn thöù nhaát (first scan).
Neáu bit /FC =1 thì leänh keát hôïp keát quaû doø möùc cuûa toaùn haïng hieän taïi vôùi RLO tröôùc ñoù ñeå taïo ra RLO môùi.
Chuoãi leänh logic luoân luoân keát thuùc baèng leänh xuaát (S,R hay =), leänh nhaûy lieân heä vôùi RLO, hoaëc moät trong caùc leänh loàng nhö A(, O(, X(, AN(, XN(; caùc leänh naøy reset bit /FC veà 0.
RLO (Result of Logic Operation): keát quaû cuûa pheùp toaùn logic.
Bit 1 cuûa STW ñöôïc goïi laø RLO, bit naøy chöùa keát quaû cuûa leänh logic treân bit hoaëc so saùnh soá hoïc.
Ta coù theå ñaët RLO khoâng ñieàu kieän leân 1 baèng leänh SET vaø xoùa RLO khoâng ñieàu kieän veà 0 baèng leänh CLR. Bit RLO cuõng coù lieân quan ñeán caùc leänh nhaûy coù ñieàu kieän.
Hình1.1: hieäu öùng cuûa traïng thaùi tín hieäu bit /FC treân caùc leänh logic.
Bit STA (status)
Bit STA chöùa giaù trò cuûa bit maø ta ñang tham chieáu. Traïng thaùi cuûa leänh bit maø truy caäp ñoïc boä nhôù (A, AN, O, ON, X, XN) luoân luoân baèng giaù trò cuûa bit maø leänh naøy kieåm tra (doø möùc). Traïng thaùi cuûa leänh bit ghi vaøo boä nhôù (S, R, =) baèng giaù trò cuûa bit maø leänh ghi vaøo; neáu khoâng coù xaûy ra ghi thì noù baèng giaù trò cuûa bit noù tham chieáu. Bit STA khoâng coù yù nghóa vôùi caùc leänh bit maø khoâng truy caäp boä nhôù, caùc leänh nhö vaäy ñaët bit STA leân 1. Bit naøy khoâng bò kieåm tra bôûi leänh, noù chæ ñöôïc dieãn dòch khi thöû chöông trình.
Bit OR
Bit caàn coù khi söû duïng leänh O ñeå thöïc hieän AND-tröôùc -OR. Haøm AND chöùa caùc leänh sau: A, AN, A(, AN(, ) vaø NOT. Bit OR cho thaáy caùc leänh maø haøm AND ñöôïc thöïc thi tröôùc ñoù ñaõ cho giaù trò 1. Baát cöù leänh xöû lyù bit khaùc reset bit OR.
Bit OV (Overflow)
Bit OV coù chöùc naêng baùo loãi. Noù ñöôïc ñaët leân 1 baèng leänh toaùn hoïc hay leänh so saùnh daáu chaám ñoäng sau khi loãi xaûy ra (traøn, pheùp toaùn khoâng hôïp leä, soá daáu chaám ñoäng khoâng hôïp leä). Bit naøy ñöôïc ñaët theo keát quaû cuûa leänh toaùn hoïc keá hay leänh so saùnh keá.
Bit OS (stored overflow bit)
Bit OS ñöôïc ñaët cuøng vôùi bit OV khi coù loãi xaûy ra. Bôûi vì bit OS vaãn giöõ laø 1 sau khi ñaõ khöû loãi, noù chöùa traïng thaùi bit OV vaø cho thaáy coù loãi hay khoâng coù loãi xaûy ra ôû moät trong caùc leänh ñöôïc thöïc thi tröôùc ñoù. Caùc leänh sau reset bit OS: JOS (jump after stored overflow), caùc leänh goïi khoái, vaø caùc leänh keát thuùc khoái.
Maõ ñieàu kieän CC1 vaø CC0
CC1
CC0
Giaûi thích
0
0
Keát quaû =0
0
1
Keát quaû <0
1
0
Keát quaû >0
Baûng 1.2: CC1 vaø CC0 sau leänh toaùn hoïc, khoâng coù traøn.
CC1
CC0
Giaûi thích
0
0
Traøn daõi trò aâm trong +I vaø +D
0
1
Traøn daõi trò aâm trong *I vaø *D
Traøn daõi trò döông trong +I, -I, +D, -D, NEGI vaø NEGD
1
0
Traøn daõi trò döông trong *I, *D, /I vaø /D
Traøn daõi trò aâm trong +I, -I, +D, -D
1
1
Chia cho 0 trong /I, /D, vaø MOD
Baûng 1.3: CC1 vaø CC0 sau leänh toaùn hoïc soá nguyeân, coù traøn.
CC1
CC0
Giaûi thích
0
0
Traøn döôùi
0
1
Traøn daõi trò aâm
1
0
Traøn daõi trò döông
1
1
Soá daáu chaám ñoäng khoâng hôïp leä
Baûng 1.4: CC1 vaø CC0 sau caùc leänh toaùn hoïc daáu chaám ñoäng, coù traøn.
CC1
CC0
Giaûi thích
0
0
ACCU 2 =ACCU 1
0
1
ACCU 2 <ACCU 1
1
0
ACCU 2 >ACCU 1
1
1
ACCU 1 hay ACCU 2 laø soá daáu chaám ñoäng khoâng hôïp leä
Baûng 1.5: CC1 vaø CC0 sau caùc leänh so saùnh.
CC1
CC0
Giaûi thích
0
0
Bit vöøa dòch ra laø 0
1
0
Bit vöøa dòch ra laø 1
Baûng 1.6: CC1 vaø CC0 sau caùc leänh dòch vaø xoay.
CC1
CC0
Giaûi thích
0
0
Keát quaû = 0
1
0
Keát quaû 0
Baûng 1.7: CC1 vaø CC0 sau caùc leänh logic treân word.
Bit BR (Binary Result)
Bit BR taïo lieân keát giöõa xöû lyù caùc bit vaø caùc word. Ñaây laø phöông tieän höõu hieäu ñeå dieãn dòch keát quaû cuûa pheùp toaùn treân word nhö keát quaû nhò phaân vaø ñöa keát quaû naøy vaøo chuoãi logic nhò phaân. Vôùi caùch nhìn naøy, bit BR bieãu dieãn bit boä nhôù beân trong maùy maø RLO caát vaøo tröôùc khi moät pheùp toaùn word laøm thay ñoåi RLO, ñeå cho RLO khaû duïng laàn nöõa sau khi pheùp toaùn tieáp tuïc chuoãi logic bit bò ngaét.
Bit BR töông öùng vôùi ngoõ ra cho pheùp (ENO = enable output) cuûa hoäp LAD. Ta neân söû duïng leänh SAVE ñeå caát RLO vaøo bit BR theo caùc tieâu chuaån sau:
Caát bit RLO =1 vaøo bit BR cho tröôøng hôïp maø FB hay FC ñöôïc thöïc thi khoâng coù loãi.
Caát bit RLO =0 vaøo bit BR cho tröôøng hôïp maø FB hay FC ñöôïc thöïc thi coù loãi.
Ta neân laäp trình caùc leänh naøy ôû cuoái FB hay FC ñeå chuùng laø caùc leänh cuoái cuøng ñöôïc thöïc thi trong khoái.
CAÙC LEÄNH VAØ PHEÙP TOAÙN.
Leänh naïp chuyeån.
Caùc leänh naøy duøng ñeå trao ñoåi thoâng tin baèng byte, word hay double word giöõa caùc module nhaäp vaø xuaát, PII vaø PIQ, boä ñònh thôøi, boä ñeám vaø côø, caùc khoái döõ lieäu (DB).
Döõ lieäu thöôøng khoâng ñöôïc trao ñoåi tröïc tieáp maø luoân luoân thoâng qua thanh ghi tích luõy ACCU. Noù laø thanh ghi trong boä xöû lyù vaø ñöôïc duøng nhö boä ñeäm (buffer).
Doøng ñi thoâng tin nhö sau:
Naïp (LOAD) töø boä nhôù nguoàn vaøo ACCU.
Chuyeån (TRANSFER) töø ACCU ñeán boä nhôù ñích.
Trong PLC coù 2 thanh ghi: ACCU1 vaø ACCU2, moãi thanh ghi coù chieàu daøi 2 word.
Chuù yù:
Load vaø Transfer tröïc tieáp khoâng qua PII vaø PIQ:
L PIB
T PQW
Vôùi P laø vieát taét cuûa Peripheral (ngoaïi vi).
Caùc leänh Load vaø Transfer tröïc tieáp chæ coù theå laäp trình baèng daïng STL (ngoaïi tröø caùc toaùn haïng cuûa Timer, Counter vaø caùc leänh so saùnh).
Caùc leänh taùc ñoäng vaøo RLO vaø oâ nhôù.
SET: leänh ghi logic 1 vaøo RLO.
CLR: leänh ghi logic 0 vaøo RLO.
NOT: leänh ñaûo giaù trò cuûa RLO.
S: leänh gaùn coù ñieàu kieän giaù trò logic 1 vaøo oâ nhôù.
R: leänh gaùn coù ñieàu kieän giaù trò logic 0 vaøo oâ nhôù.
FP : leänh phaùt hieän söôøn leân.
Toaùn haïng laø ñòa chæ bit I, Q, M, L, D vaø ñöôïc söû duïng nhö moät bieán côø ñeå ghi nhaän laïi giaù trò cuûa RLO taïi vò trí naøy trong chöông trình, nhöng cuûa voøng queùt tröôùc. Taïi moãi voøng queùt leänh seõ kieåm tra: neáu toaùn haïng coù giaù trò 0 vaø RLO coù giaù trò 1 thì seõ ghi 1 vaøo RLO, caùc tröôøng hôïp khaùc thì ghi 0, ñoàng thôøi chuyeån noäi dung cuûa RLO vaøo laïi bieán côø. Nhö vaäy RLO seõ coù giaù trò 1 trong moät voøng queùt khi coù söôøn leân trong RLO.
FN : leänh phaùt hieän söôøn xuoáng.
Toaùn haïng laø ñòa chæ bit I, Q, M, L, D vaø ñöôïc söû duïng nhö moät bieán côø ñeå ghi nhaän laïi giaù trò cuûa RLO taïi vò trí naøy trong chöông trình, nhöng cuûa voøng queùt tröôùc. Taïi moãi voøng queùt leänh seõ kieåm tra: neáu toaùn haïng coù giaù trò 1 vaø RLO coù giaù trò 0 thì seõ ghi 1 vaøo RLO, caùc tröôøng hôïp khaùc thì ghi 0, ñoàng thôøi chuyeån noäi dung cuûa RLO vaøo laïi bieán côø. Nhö vaäy RLO seõ coù giaù trò 1 trong moät voøng queùt khi coù söôøn leân trong RLO.
SAVE : leänh chuyeån giaù trò cuûa RLO vaøo BR.
Vaø moät soá pheùp tính cô baûn.
Caùc leänh taùc ñoäng vaøo 2 thanh ghi ACCU1 vaø ACCU2.
Nhoùm leänh ñaûo vò trí bytes:
POP : leänh chuyeån noäi dung cuûa ACCU2 vaøo ACCU1.
PUSH : leänh chuyeån noäi dung cuûa ACCU1 vaøo ACCU2.
TAK : leänh ñaûo noäi dung cuûa 2 thanh ghi ACCU1 vaø ACCU2.
CAW : leänh ñaûo noäi dung 2 bytes cuûa töø thaáp trong ACCU1.
CAD : leänh ñaûo noäi dung caùc bytes trong ACCU1.
INVI : leänh ñaûo giaù trò caùc bits trong töø thaáp cuûa ACCU1
INVD : leänh ñaûo giaù trò caùc bits cuûa ACCU1.
Nhoùm leänh taêng giaûm :
INC : leänh taêng noäi dung thanh ghi ACCU1.
Toaùn haïng laø soá nguyeân 8 bits. Leänh thöïc hieän pheùp coäng giöõa byte thaáp cuûa töø thaáp trong ACCU1 vôùi toaùn haïng. Keát quaû ñöôïc ghi laïi vaøo byte thaáp cuûa töø thaáp cuûa ACCU1.
DEC : leänh giaûm noäi dung thanh ghi ACCU1.
Toaùn haïng laø soá nguyeân 8 bits. Leänh thöïc hieän pheùp tröø byte thaáp cuûa töø thaáp trong ACCU1 cho toaùn haïng. Keát quaû ñöôïc ghi laïi vaøo byte thaáp cuûa töø thaáp cuûa ACCU1.
Nhoùm leänh dòch chuyeån:
RLD [n] : leänh xoay troøn caùc bits cuûa ACCU1 theo chieàu traùi.
RRD [n]: leänh xoay troøn caùc bits cuûa ACCU1 theo chieàu phaûi.
Leänh coù theå coù hoaëc khoâng coù toaùn haïng. Neáu toaùn haïng baèng 0 thì leänh töông ñöông vôùi leänh NOP.
RLDA : leänh xoay troøn ACCU1 theo chieàu traùi 1 bit.
RRDA : leänh xoay troøn ACCU1 theo chieàu phaûi 1 bit.
Baûng 1.8: toùm taét caùc leänh xoay bit.
Hình 1.2: xoay ACCU1 qua traùi 3 bit.
Thí duï: xoay phaûi word keùp.
L +3
L MD10
RRD
T MD20
Hình 1.3: xoay ACCU1 phaûi 3 bit.
Hình 1.4: xoay traùi 1 bit qua CC1.
SLW []: dòch traùi caùc bits trong töø thaáp cuûa ACCU1. Bit 0 ñöôïc ghi 0, bit 15 ñaåy vaøo CC1.
SLD []: dòch traùi caùc bits cuûa ACCU1. Bit 0 ñöôïc ghi 0, bit 31 ñaåy vaøo CC1.
SRW []: dòch phaûi caùc bits trong töø thaáp cuûa ACCU1. Bit 0 ñöôïc ghi 0, bit 15 ñaåy vaøo CC1.
SRD []: dòch phaûi caùc bits cuûa ACCU1. Bit 0 ñöôïc ghi 0, bit 31 ñaåy vaøo CC1.
SSI []: dòch phaûi caùc bits trong töø thaáp cuûa ACCU1. Bit 0 ñaåy vaøo CC1, bit 15 ghi laïi giaù trò cuõ.
SSD []: dòch phaûi caùc bits cuûa ACCU1. Bit 0 ñaåy vaøo CC1, bit 31 ghi laïi giaù trò cuõ.
Nhoùm leänh chuyeån ñoåi soá BCD vaø soá nguyeân:
Baûng sau toùm taét caùc leänh chuyeån ñoåi BCD vaø soá nguyeân (daïng STL):
Leänh
YÙ nghóa
Chöùc naêng
BTI
BCD sang soá nguyeân
Ñoåi soá BCD trong word thaáp cuûa ACCU1 sang soá nguyeân 16 bits
BTD
BCD sang soá nguyeân keùp
Ñoåi soá BCD trong ACCU1 sang soá nguyeân keùp 32 bits
ITB
Soá nguyeân sang BCD
Ñoåi soá nguyeân 16 bits trong word thaáp cuûa ACCU1 sang soá BCD
ITD
Soá nguyeân sang soá nguyeân keùp
Ñoåi soá nguyeân 16 bits trong word thaáp cuûa ACCU1 sang soá nguyeân keùp 32 bits
DTB
Soá nguyeân keùp sang BCD
Ñoåi soá nguyeân keùp 32 bits trong ACCU1 sang soá BCD
DTR
Soá nguyeân keùp sang soá thöïc
Ñoåi soá nguyeân keùp 32 bits trong ACCU1 sang soá daáu chaám ñoäng IEEE 32 bits (soá thöïc)
Baûng 1.9: chuyeån ñoåi soá BCD vaø soá nguyeân.
Nhoùm leänh chuyeån ñoåi soá daáu chaám ñoäng 32 bits sang soá nguyeân 32 bits:
Ta coù theå söû duïng baát kyø moät trong caùc leänh sau ñeå chuyeån ñoåi soá daáu chaám ñoäng IEEE 32 bits trong thanh ghi ACCU1 thaønh soá nguyeân keùp (caùc leänh khaùc nhau veà caùch laøm troøn) vaø keát quaû ñöôïc caát ôû ACCU1.
Leänh
YÙ nghóa
Chöùc naêng
RND
Laøm troøn
Laøm troøn soá ñöôïc chuyeån ñoåi ñeán soá nguyeân gaàn nhaát. Neáu phaàn phaân soá ôû giöõa keát quaû chaün vaø leû thì seõ choïn keát quaû chaün
RND+
Laøm troøn thaønh soá nguyeân keùp lôùn hôn
Laøm troøn thaønh soá nguyeân nhoû nhaát maø lôùn hôn hay baèng soá chaám ñoäng
RND-
Laøm troøn thaønh soá nguyeân keùp nhoû hôn
Laøm troøn thaønh soá nguyeân lôùn nhaát maø nhoû hôn hay baèng soá chaám ñoäng
TRUNC
Boû phaàn leû
Chæ laáy phaàn nguyeân cuûa soá chaám ñoäng
Baûng 1.10: chuyeån ñoåi soá daáu chaám ñoäng 32 bits sang soá ngöyeân 32 bits.
Hình 1.5: toùm taét caùc leänh chuyeån ñoåi vaø laøm troøn.
Nhoùm leänh so saùnh:
Duøng ñeå so saùnh caùc caëp giaù trò soá sau:
Hai soá nguyeân 16 bits.
Hai soá nguyeân keùp (32 bits).
Hai soá thöïc (daáu chaám ñoäng IEEE 32 bits).
CPU seõ so saùnh giaù trò soá ôû ACCU1, neáu keát quaû ñuùng noù seõ traû veà RLO=1, neáu sai thì RLO=0.
Vôùi soá nguyeân 16 bits thì noù döïa treân so saùnh word thaáp cuûa ACCU2 vôùi word thaáp cuûa ACCU1.
Daïng leänh so saùnh nhö sau:
op datatype
vôùi op (operator = toaùn töû) coù theå laø:
So saùnh
op
Baèng nhau
==
Khoâng baèng
Lôùn hôn
>
Nhoû hôn
<
Lôùn hôn hoaëc baèng
>=
Nhoû hôn hoaëc baèng
<=
datatype coù theå laø I (soá nguyeân 16 bits), D (soá nguyeân keùp 32 bits), R (soá thöïc).
Aûnh höôûng cuûa vieäc thöïc thi leänh so saùnh leân maõ ñieàu kieän CC1 vaø CC0.
Ñieàu kieän so saùnh
CC1
CC0
Caùc leänh nhaûy coù ñieàu kieän coù theå söû duïng
ACCU2>ACCU1
1
0
JN, JP
ACCU2<ACCU1
0
1
JN, JM
ACCU2=ACCU1
0
0
JZ
ACCU2ACCU1
0/1
1/0
JN
ACCU2>=ACCU1
1/0
0/0
JPZ
ACCU2<=ACCU1
0/0
1/0
JMZ
Baûng 1.11: aûnh höôûng cuûa caùc leänh so saùnh leân CC1 vaø CC0.
Nhoùm leänh soá hoïc:
Vôùi soá nguyeân 16 bits: coù caùc leänh thöïc hieän coäng (+I), tröø (-I), nhaân (*I), chia (/I). Laáy word thaáp cuûa ACCU2 +,-,*,/ vôùi word thaáp cuûa ACCU1, keát quaû laïi vaøo word thaáp cuûa ACCU1.
Vôùi soá nguyeân keùp 32 bits: coù caùc leänh thöïc hieän coäng (+D), tröø (-D), nhaân (*D), chia (/D). Laáy ACCU2 +,-,*,/ vôùi ACCU1, keát quaû laïi vaøo ACCU1.
Vôùi soá thöïc: coù caùc leänh thöïc hieän coäng (+R), tröø (-R), nhaân (*R), chia (/R). Laáy ACCU2 +,-,*,/ vôùi ACCU1, keát quaû laïi vaøo ACCU1.
Caùc leänh toaùn hoïc môû roäng treân soá thöïc:
Taát caû caùc leänh sau ñeàu thöïc hieän pheùp toaùn vôùi ñoái soá vaøo ôû ACCU1 vaø keát quaû caát ôû ACCU1.
ABS: laáy trò tuyeät ñoái.
SQRT: tính caên baäc hai (square root) x1/2
SQR: tính bình phöông (square) x2
LN: tính logarithm töï nhieân ln(x)
EXP: tính haøm muõ ex
SIN: tính sin(x)
COS: tính cos(x)
TAN: tính tg(x)
ASIN: tính arcsin(x)
ACOS: tính arccos(x)
ATAN: tính atctg(x)
Caùc leänh ñieàu khieån logic vaø ñieàu khieån chöông trình.
Caùc leänh ñieàu khieån logic:
Ta coù theå söû duïng caùc leänh jump (baét ñaàu baèng J) vaø loop ñeå ñieàu khieån reõ nhaùnh trong moät khoái chöông trình. Ñòa chæ cho leänh jump vaø loop laø nhaõn nhaûy ñeán trong chöông trình (label).
Coù caùc leänh ñieàu khieån logic sau:
Leänh nhaûy khoâng ñieàu kieän: JU, JL.
Leänh nhaûy coù ñieàu kieän theo RLO: JC, JCN, JCB, JNB.
Leänh nhaûy coù ñieàu kieän theo BR hoaëc OV/OS: JBI, JNBI, JO, JOS.
Leänh nhaûy theo maõ ñieàu kieän CC0, CC1: JZ,JN, JP, JM, JMZ, JPZ, JUO.
Leänh ñieàu khieån laëp voøng: LOOP.
Nhaõn nhaûy ñeán trong khoái chöông trình ñeå ñaùnh daáu neân chuyeån ñieàu khieån logic tôùi (nôi reõ nhaùnh ñeán). Noù coù chieàu daøi toái ña laø 4 kyù töï, vaø kyù töï ñaàu phaûi laø chöõ, sau noù phaûi coù daáu hai chaám.
Caùc leänh nhaûy khoâng ñieàu kieän:
Leänh nhaûy khoâng ñieàu kieän JU: leänh naøy ngaét luoàng ñieàu khieån bình thöôøng vaø nhaûy ñeán nhaõn ñöôïc chæ sau JU. Leänh naøy ñöôïc thöïc hieän baát chaáp ñieàu kieän naøo.
Leänh nhaûy theo danh saùch JL: (gioáng leänh case hay switch trong caùc ngoân ngöõ laäp trình khaùc).
Caùc leänh nhaûy coù ñieàu kieän döïa vaøo RLO:
JC nhaõn: nhaûy ñeán nhaõn neáu RLO=1 coøn ngöôïc laïi thì thöïc hieän leänh keá.
JCN nhaõn: nhaûy ñeán nhaõn neáu RLO=0 coøn ngöôïc laïi thì thöïc hieän leänh keá.
JCB nhaõn: neáu RLO=1 thì gaùn trò RLO vaøo BR vaø nhaûy ñeán nhaõn, coøn ngöôïc laïi thì thöïc hieän leänh keá.
JNB nhaõn: neáu RLO=0 thì gaùn trò RLO vaøo BR vaø nhaûy ñeán nhaõn, coøn ngöôïc laïi thì thöïc hieän leänh keá.
Caùc leänh nhaûy coù ñieàu kieän döïa theo BR hay OV/ OS:
Theo ñieàu kieän cuûa BR:
JBI nhaõn: neáu BR=1 thì nhaûy ñeán nhaõn, coøn ngöôïc laïi thì thöïc hieän leänh keá.
JNBI nhaõn: neáu BR=0 thì nhaûy ñeán nhaõn, coøn ngöôïc laïi thì thöïc hieän leänh keá.
Chuù yù: caùc leänh JBI vaø JNBI reset caùc bit OR vaø FC trong STW veà 0 vaø set bit STA leân 1.
Theo ñieàu kieän OV:
JO nhaõn: neáu OV=1 thì nhaûy ñeán nhaõn, coøn ngöôïc laïi thì thöïc hieän leänh keá.
Theo ñieàu kieän OS:
JOS nhaõn: neáu OV=1 thì nhaûy ñeán nhaõn, coøn ngöôïc laïi thì thöïc hieän leänh keá.
Leänh naøy reset bit OS veà 0.
Caùc leänh nhaûy coù ñieàu kieän döïa theo CC1 vaø CC0:
Daïng leänh: J nhaõn
Vôùi caùc ñieàu-kieän laø :
Z (zero): neáu keát quaû laø 0 thì nhaûy ñeán nhaõn, coøn ngöôïc laïi thì thöïc hieän leänh keá.
N (not zero): neáu keát quaû laø khaùc 0 thì nhaûy ñeán nhaõn, coøn ngöôïc laïi thì thöïc hieän leänh keá.
P (positive): neáu keát quaû >0 thì nhaûy ñeán nhaõn, coøn ngöôïc laïi thì thöïc hieän leänh keá.
M (minus = negative): neáu keát quaû <0 thì nhaûy ñeán nhaõn, coøn ngöôïc laïi thì thöïc hieän leänh keá.
MZ (minus hay zero): neáu keát quaû laø 0 hay <0 thì nhaûy ñeán nhaõn, coøn ngöôïc laïi thì thöïc hieän leänh keá.
PZ (positive hay zero): neáu keát quaû laø 0 hay >0 thì nhaûy ñeán nhaõn, coøn ngöôïc laïi thì thöïc hieän leänh keá.
UO (unordered): neáu 1 trong caùc soá cuûa pheùp toaùn daáu chaám ñoäng khoâng phaûi laø soá chaám ñoäng hôïp leä thì nhaûy ñeán nhaõn, coøn ngöôïc laïi thì thöïc hieän leänh keá.
Leänh ñieàu khieån voøng laëp:
Ta coù theå söû duïng leänh LOOP ñeå thöïc hieän moät ñoaïn chöông trình nhieàu laàn. Leänh LOOP giaûm word thaáp cuûa ACCU1 bôùt ñi 1 vaø kieåm tra trò môùi coù ñöôïc ôû ACCU1. Neáu ACCU1 luùc naøy khaùc khoâng thì nhaûy ñeán nhaõn chæ ra keá LOOP, coøn ngöôïc laïi thì thöïc hieän leänh keá.
Caùc leänh ñieàu khieån chöông trình:
Ta coù theå söû duïng caùc leänh sau ñeå ñieàu khieån chöông trình.
Leänh goïi CALL duøng ñeå goïi FC, FB, SFC hay SFB maø baát chaáp RLO hay baát cöù ñieàu kieän naøo khaùc.
Leänh goïi coù ñieàu kieän (CC) vaø khoâng ñieàu kieän (UC) duøng ñeå goïi caùc FC khoâng coù tham soá.
Leänh goïi khoâng ñieàu kieän (UC) duøng ñeå goïi SFC khoâng coù tham soá.
Rôø-le ñieàu khieån chính MCR (Master Control Relay).
Caùc leänh keát thuùc khoái khoâng ñieàu kieän (BEU) vaø keát thuùc khoái coù ñieàu kieän (BEC).
Gaùn tham soá khi goïi haøm vaø khoái haøm
Tham soá hình thöùc (formal parameter): laø tham soá maø teân vaø kieåu döõ lieäu cuûa noù ñöôïc gaùn vaø khai baùo khi taïo khoái. Sau ñoù khi vieát chöông trình thì STEP7 töï ñoäng lieät keâ taát caû caùc tham soá hình thöùc.
Khi ñoù ta phaûi gaùn caùc tham soá thaät (actual parameter) cho caùc tham soá hình thöùc. Tham soá thaät laø tham soá laø haøm vaø khoái haøm söû duïng trong luùc chaïy chöông trình. Tham soá thaät phaûi coù cuøng kieåu döõ lieäu vôùi tham soá hình thöùc töông öùng gaùn cho noù.
Goïi haøm vaø khoái haøm baèng CALL:
Ta coù theå söû duïng leänh CALL ñeå goïi caùc haøm (FC) vaø khoái haøm (FB), leänh naøy goïi FC hay FB do ta chæ ra vaø ñöôïc thöïc thi baát chaáp RLO hay baát kyø ñieàu kieän naøo khaùc.
Khi ta goïi khoái haøm FB thì ta phaûi cung caáp khoái döõ lieäu instance cuïc boä. Khoái döõ lieäu instance chöùa taát caû caùc bieán tónh vaø caùc tham soá thaät cuûa khoái haøm.
Khi ta goïi khoái haøm thì leänh CALL cheùp laïi moät trong caùc muïc sau vaøo khoái döõ lieäu instance cuûa khoái haøm, phuï thuoäc vaøo kieåu döõ lieäu cuûa tham soá thaät vaø vaøo khai baùo cuûa tham soá hình thöùc (IN, OUT, IN-OUT):
Giaù trò cuûa tham soá thaät.
Pointer chæ ñeán ñòa chæ cuûa tham soá thaät.
Pointer chæ ñeán “L stack” cuûa khoái goïi maø ôû ñoù giaù trò cuûa tham soá thaät ñaõ ñöôïc ñeäm.
Goïi FB vôùi DB instance vaø caùc tham soá khoái:
Vieäc goïi coù theå xaûy ra moät khi caùc chi tieát sau ñaõ ñöôïc ñöa vaøo luùc CALL:
Teân cuûa khoái haøm.
Teân cuûa khoái döõ lieäu instance vaø
Caùc tham soá.
Leänh goïi söû duïng ñòa chæ tuyeät ñoái hoaëc ñòa chæ kyù hieäu.
Goïi tuyeät ñoái: CALL FBx, Dby (caùc tham soá truyeàn);
Goïi baèng kyù hieäu: CALL fbname, datablockname (pass parameters);
Vôùi fbname= teân kyù hieäu cuûa khoái
datablockname= teân kyù hieäu cuûa khoái döõ lieäu
Goïi haøm vaø khoái haøm baèng CC vaø UC:
Daïng leänh: CC addr (conditional call: goïi khi RLO=1)
UC addr (unconditional call: goïi baát chaáp RLO)
Chuù yù: khoâng ñöôïc söû duïng DB “instance” vôùi CC vaø UC.
Addr coù theå laø ñòa chæ tröïc tieáp hay laø ñòa chæ giaùn tieáp boä nhôù (memory indirect address).
Laøm vieäc vôùi chöùc naêng MCR:
MCR duøng ñeå taïo hay ngaét luoàng naêng löôïng (ñöôøng daãn ñieän). Caùc leänh sau bò aûnh höôûng bôûi MCR laø: leänh gaùn (=), leänh SET vaø RESET bit (S, R) vaø leänh chuyeån döõ lieäu T (duøng byte, word, double word). Söï phuï thuoäc cuûa chuùng theo MCR ñöôïc cho theo baûng 1.12.
Traïng thaùi tín hieäu cuûa MCR
=
S hay R
T
0
Ghi 0
Khoâng ghi (nghóa laø toaùn haïng khoâng ñoåi)
Ghi 0
1
Thöïc thi bình thöôøng
Thöïc thi bình thöôøng
Thöïc thi bình thöôøng
Baûng 1.12: caùc leänh phuï thuoäc MCR.
Caùc leänh caøi ñaët MCR
MCRA: kích hoaït vuøng MRC (A= Activate)
MCRD: boû kích hoaït vuøng MCR (D= Deactivate)
MCR( : caát RLO vaøo ngaên xeáp MCR, baét ñaàu vuøng MCR
)MCR : laáy laïi RLO, keát thuùc vuøng MCR
Chuù yù: khoâng bao giôø söû duïng leänh MCR cho thieát bò an toaøn hay caáp cöùu!
Aûnh höôûng cuûa MCRA vaø MCRD
Trong vuøng MCR neáu goïi 1 haøm thì haøm ñoù khoâng bò aûnh höôûng cuûa vuøng MCR, muoán haøm coù vuøng MCR thì ta phaûi taïo theâm. Hình 1.6 cho thaáy aûnh höôûng cuûa vuøng MCR.
Caøi ñaët MCR
Caùc leänh sau baät hay taét chöùc naêng MCR:
Caát RLO trong ngaên xeáp MCR, baét ñaàu MCR: MCR(
Laáy laïi RLO< keát thuùc MCR: )MCR
Nhö vaäy, ta phaûi luoân luoân coù caëp MCR( vaø )MCR; heä thoáng cho pheùp loàng caùc caëp MCR( vaø )MCR vaø toái ña laø 8.
Hình 1.6: kích hoaït vaø boû kích hoaït vuøng MCR.
Caùc leänh keát thuùc khoái BEU vaø BEC
Leänh
YÙ nghóa
BE
Keát thuùc khoái (block end).
Khoái hieän haønh ñöôïc keát thuùc baát chaáp RLO.
Queùt chöông trình ñöôïc tieáp tuïc ôû leänh ngay sau leänh goïi khoái.
BE luoân luoân laø phaùt bieåu cuoái cuøng trong khoái.
BEU
Keát thuùc khoái khoâng ñieàu kieän (unconditional).
Khoái hieän haønh ñöôïc keát thuùc baát chaáp RLO.
Queùt chöông trình ñöôïc tieáp tuïc ôû leänh ngay sau leänh goïi khoái.
BEC
Keát thuùc khoái coù ñieàu kieän conditional).
Khi RLO=1 thì khoái hieän haønh ñöôïc keát thuùc vaø queùt chöông trình ñöôïc tieáp tuïc ôû leänh ngay sau leänh goïi khoái.
Khi RLO=0 thì khoâng thöïc hieän keát thuùc khoái vaø cho RLO=1 sau ñoù thöïc hieän leänh keá leänh naøy.
Baûng 1.13: toùm taét caùc leänh keát thuùc khoái.
Boä ñònh thôøi Timer.
Chöùc naêng Timer:
Caùc coâng vieäc caàn ñieàu khieån caàn nhieàu chöùc naêng Timer khaùc nhau. PLC SIMATIC S7 cho ngöôøi söû duïng moät soá timer vôùi caùc chöùc naêng khaùc nhau. Moät word 16 bits (timer word) trong vuøng döõ lieäu heä thoáng ñöôïc gaùn cho moät trong caùc timer.
Timer taïo neân moät chöùc naêng phöùc taïp vôùi caùc ngoõ vaøo vaø ngoõ ra sau:
Ngoõ vaøo Start: timer ñöôïc baét ñaàu vôùi söï thay ñoåi tín hieäu töø “0” leân “1” (RLO) ôû ngoõ vaøo Start cuûa noù. Thôøi gian vaø hoaït ñoäng cuûa timer phaûi ñöôïc laäp trình ngay sau hoaït ñoäng queùt ñieàu kieän baét ñaàu.
Ngoõ vaøo Reset: tín hieäu ôû ngoõ vaøo Reset (RLO=”1”) laøm döøng timer. Thôøi gian hieän haønh ñöôïc ñaët veà 0 vaø ngoõ ra Q cuûa timer bò xoùa veà “0”.
Caùc ngoõ ra soá: giaù trò thôøi gian thaät söï coù theå ñoïc ñöôïc töø hai ngoõ ra soá BI (soá nhò phaân) vaø BCD (soá thaäp phaân).
Ngoõ ra nhò phaân: traïng thaùi tín hieäu cuûa ngoõ ra nhò phaân Q cuûa timer phuï thuoäc vaøo chöùc naêng timer ñöôïc laäp trình.
Thôøi gian treã ñöôïc khai baùo vôùi timer baèng moät giaù trò 16 bits goàm 2 thaønh phaàn:
Ñoä phaân giaûi vôùi ñôn vò laø ms.
Moät soá nguyeân (BCD) trong khoaûng 0 ñeán 999, goïi laø PV.
Vaäy, thôøi gian treã =ñoä phaân giaûi* PV.
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Giaù trò PV döôùi daïng maõ BCD
Ñoä phaân giaûi
0
0
10ms
0
1
100ms
1
0
1s
1
1
10s
Khoâng söû duïng
Moät soá leänh daønh cho timer
FR Tx : leänh cho pheùp timer.
R Tx : chuû ñoäng xoùa timer.
L Tx : laáy giaù trò timer daïng nhò phaân.
L Tx : laáy giaù trò timer daïng BCD.
Vôùi x töø 0 ñeán 255.
Hình 1.7: caùc leänh cho pheùp söû duïng timer word nhö øñòa chæ.
Caùc ví duï baèng giaûn ñoà cho töøng loaïi timer:
Timer SD (On delay timer): treã theo söôøn leân khoâng nhôù.
Hình 1.8: giaûn ñoà xung cho timer SD.
Timer SS ( Retentive on delay timer): treã theo söôøn leân coù nhôù.
Hình1.9: giaûn ñoà xung cho timer SS.
Timer SP (Pulse timer): timer taïo xung khoâng coù nhôù.
Hình 1.10: giaûn ñoà xung cho timer SP.
Timer SE (Extended pulse timer): timer taïo xung coù nhôù.
Hình 1.11: giaûn ñoà xung cho timer SE.
Timer SF (Off delay): timer treã theo söôøn xuoáng.
Hình 1.12: giaûn ñoà xung cho timer SF.
Boä ñeám Counter.
Chöùc naêng Counter:
Counter laø boä ñeám thöïc hieän chöùc naêng ñeám söôøn xung cuûa caùc tín hieäu ñaàu vaøo. S7-300 coù toái ña 256 Counter, kyù hieäu Cx. Counter ñeám tieán theo söôøn leân cuûa moät tín hieäu vaøo thöù nhaát, kyù hieäu laø CU (count up) vaø ñeám luøi theo söôøn leân cuûa moät tín hieäu vaøo thöù hai, kyù hieäu laø CD (count down).
Caùc leänh duøng cho Counter.
FR Cx : leänh cho pheùp counter.
R Cx : leänh xoùa counter.
L Cx : ñoïc soá ñeám töùc thôøi daïng nhò phaân.
LC Cx : ñoïc soá ñeám töùc thôøi daïng BCD.
Hình 1.13: naïp giaù trò counter vaøo ACCU1 duøng leänh L.
Hình 1.14: naïp giaù trò counter vaøo ACCU1 duøng leänh LC.
Ví duï minh hoïa:
Hình 1.15: ví duï veà caùc leänh Counter.
Chöông 3: Thöïc Thi Chöông Trình
HOAÏT ÑOÄNG CUÛA CPU.
Caùc vuøng nhôù CPU.
CPU S7-300 coù 3 vuøng nhôù cô baûn:
Vuøng nhôù heä thoáng.
Vuøng nhôù naïp .
Vuøng nhôù laøm vieäc.
Boä nhôù laøm vieäc cuûa CPU cuõng cung caáp boä nhôù taïm (boä nhôù döõ lieäu cuïc boä hoaëc L stack) maø ñöôïc caáp phaùt cho chöông trình khi moät khoái con ñöôïc goïi. Khi khoái ñoù coøn tích cöïc, thì boä nhôù cuïc boä coøn ñöôïc duy trì, ta coù theå ghi döõ lieäu vaøo “L stack” (thay vì vaøo DB hay boä nhôù bit). Döõ lieäu naøy chæ hôïp leä khi khoái ñoù ñang tích cöïc; khi moät khoái môùi ñöôïc goïi thì “L stack” ñöôïc caáp phaùt laïi.
Hình 1.16: caùc vuøng nhôù trong caùc CPU cuûa PLC S7-300.
Ngoaøi ra, CPU coøn söû duïng caùc thaønh phaàn sau ñeå xöû lyù chöông trình:
Hai thanh ghi tích luõy 32 bits (ACCU1 vaø ACCU2) duøng ñeå laøm caùc toaùn haïng trong caùc leänh naïp, chuyeån, soá hoïc vaø dòch.
Hai thanh ghi ñòa chæ 32 bits (AR1 vaø AR2) ñöôïc duøng laøm pointer ñeå ñònh ñòa chæ giaùn tieáp thanh ghi.
Hai thanh ghi khoái döõ lieäu 32 bits (DB vaø DI) chöùa ñòa chæ cuûa DB ñang ñöôïc môû (tích cöïc). Moãi laàn ta coù theå môû 2 DB: moät laøm khoái döõ lieäu DB vaø moät laøm khoái döõ lieäu DI.
Töø traïng thaùi 16 bits (STW) chöùa traïng thaùi cuûa caùc leänh khi thöïc thi trong chöông trình nhö RLO,OV (overflow), OS (overflow stored), CC1 vaø CC0 (CC=condition code) vaø BR (binary result).
Caát chöông trình vaøo CPU.
Caùc phaàn töû cuûa chöông trình:
Chöông trình goàm caùc phaàn töû sau:
Caùc khoái logic: chöùa caùc leänh, kyù hieäu vaø chuù thích.
Caùc khoái döõ lieäu: chöùa döõ lieäu, kyù hieäu vaø chuù thích.
STEP7 löu tröõ caùc phaàn töû naøy trong caùc ñoái töôïng khaùc nhau trong caáu truùc file treân ñóa cöùng cuûa thieát bò laäp trình.
Taûi xuoáng (download) caùc thaønh phaàn chöông trình:
Khi ta download chöông trình, chæ coù caùc leänh, döõ lieäu vaø thoâng tin caàn ñeå quaûn lyù vaø ñeå bieân dòch laïi ñöôïc cheùp vaøo vuøng nhôù naïp trong CPU (xem hình 1.16).
CPU cheùp chöông trình (leänh vaø döõ lieäu) töø boä nhôù naïp vaøo boä nhôù laøm vieäc. Vieäc naøy ñöôïc thöïc hieän khi ta taûi chöông trình xuoáng CPU vaø (trong tröôøng hôïp maø chöông trình cuûa ta ñöôïc caát vaøo EEPROM cuûa boä nhôù naïp) sau khi reset boä nhôù (MRES). Caùc phaàn töû cuûa chöông trình maø khoâng caàn ñeå chaïy chöông trình vaãn giöõ ôû trong boä nhôù naïp; caùc DB ñöôïc taïo bôûi chöông trình (baèng caùch duøng SFC) ñöôïc caát vaøo chæ ôû boä nhôù laøm vieäc. Töø boä nhôù laøm vieäc, chöông trình cuûa ta truy caäp caùc vuøng nhôù khaùc.
Ñònh nghóa caùc vuøng nhôù “giöõ” (retentive).
Khi maát nguoàn ñieän hoaëc reset boä nhôù (MRES), boä nhôù CPU (boä nhôù naïp, boä nhôù laøm vieäc vaø boä nhôù heä thoáng ñoäng), taát caû döõ lieäu caát trong vuøng naøy bò maát. Caùc CPU S7 cho pheùp söû duïng caùc caùch sau ñeå giöõ chöông trình vaø döõ lieäu cuûa noù:
Ta coù theå giöõ chöông trình baèng caùch duøng EEPROM (duøng theû boä nhôù hoaëc coù saün trong CPU [tuøy CPU]).
Ta coù theå giöõ döõ lieäu cuï theå trong vuøng RAM khoâng boác hôi (non-volatile).
Ta coù theå giöõ taát caû caùc döõ lieäu ñöôïc caát trong boä nhôù naïp, boä nhôù laøm vieäc vaø caùc phaàn cuûa boä nhôù heä thoáng baèng caùch söû duïng pin backup.
Hình 1.17: naïp chöông trình vaøo boä nhôù CPU.
Söû duïng RAM khoâng boác hôi:
CPU S7 cung caáp vuøng RAM khoâng boác hôi (xem hình 1.18).
Hình 1.18: vuøng nhôù khoâng boác hôi.
Neáu ta ñaõ caát chöông trình trong EEPROM cho boä nhôù naïp, ta cuõng coù theå giöõ moät soá döõ lieäu (khi maát nguoàn hoaëc khi CPU töø STOP sang RUN) baèng caùch ñaët caáu hình löôïng döõ lieäu sau seõ ñöôïc caát trong vuøng RAM khoâng boác hôi:
Thoâng tin ñöôïc caát vaøo DB (chæ höõu duïng neáu ta cuõng ñaõ caát chöông trình vaøo EEPROM cuûa boä nhôù naïp).
Caùc giaù trò cuûa timer vaø counter.
Thoâng tin ñöôïc caát ôû boä nhôù bit.
Ñaët caáu hình döõ lieäu caát trong RAM:
Ta chæ ra caùc vuøng nhôù giöõ “retentive” khi ta ñaët caáu hình CPU vaø I/O (duøng öùng duïng “S7 Configuration” trong phaàn meàm STEP7).
Baûng sau cho thaáy löôïng boä nhôù maø coù theå ñöôïc ñaët caáu hình trong vuøng RAM khoâng boác hôi. Ta khoâng theå giöõ nhieàu hôn löôïng döõ lieäu cho CPU cuï theå.
Vuøng nhôù
Soá löôïng
Maëc nhieân
Moâ taû
Boä nhôù bit
0 ñeán 256
16
Soá byte cuûa nhôù bit ñöôïc giöõ
Timer
0 ñeán 128
0
Soá timer ñöôïc giöõ
Counter
0 ñeán 64
8
Soá counter ñöôïc giöõ
Soá DB
0 ñeán 127
1
Ta xaùc ñònh soá löôïng vuøng DB (maø coù theå moät phaàn cuûa DB) ñöôïc giöõ vaø cung caáp 3 word sau (byte) cho moãi DB ñöôïc giöõ:
Word 1: DB soá maáy (1 ñeán 127).
Word 2: ñòa chæ offset cuûa DB (0 ñeán 8191).
Word 3: chieàu daøi vuøng trong DB cuï theå ñöôïc giöõ (0 ñeán 65535 bytes).
Baûng 1.14: caùc vuøng nhôù giöõ (vôùi CPU 314).
Söû duïng pin backup ñeå giöõ döõ lieäu:
Vôùi pin backup, boä nhôù naïp vaø boä nhôù laøm vieäc ñöôïc giöõ khi bò maát nguoàn . Noù caát caùc chöông trình cuûa ta (caùc OB, FB, FC vaø DB). Neáu ta ñaët caáu hình baát cöù timer naøo, counter naøo hoaëc boä nhôù bit trong RAM khoâng boác hôi thì thoâng tin naøy cuõng ñöôïc giöõ.
Hoaït ñoäng cuûa CPU.
Chu kyø queùt (scan cycle):
Hình 1.19 cho thaáy caùc giai ñoaïn cuûa chu kyø queùt CPU S7:
CPU queùt traïng thaùi cuûa caùc module nhaäp vaø caäp nhaät vuøng nhôù ñeäm PII.
Thöïc thi chöông trình vaø thöïc hieän caùc taùc vuï maø chöông trình yeâu caàu.
Ghi caùc giaù trò töø vuøng ñeäm PIQ ra caùc module xuaát.
Sau khi ghi ra caùc ngoõ xuaát thì CPU tieáp tuïc laëp laïi töø ñaàu vaø ñoïc caùc traïng thaùi cuûa caùc module nhaäp.
Hình 1.19: chu kyø queùt CPU.
Caùc cheá ñoä hoaït ñoäng (coøn goïi laø cheá ñoä laøm vieäc):
Caùc cheá ñoä hoaït ñoäng moâ taû thao taùc cuûa CPU S7 ôû baát cöù thôøi ñieåm naøo. Khi bieát cheá ñoä hoaït ñoäng thì höõu ích cho vieäc laäp trình khôûi ñoäng, gôõ roái (debugging) chöông trình ñieàu khieån vaø ñeå söûa chöõa. Coù 4 cheá ñoä hoaït ñoäng trong PLC S7-300: STOP, START UP, RUN, vaø HOLD. (RUN vaø STOP lieân quan vôùi coâng taéc treân CPU).
ÔÛ cheá ñoä STOP, CPU naïp caáu hình, ñaët I/O vaät lyù vaøo traïng thaùi ban ñaàu ñöôïc ñònh nghóa tröôùc, vaø khoâng thöïc thi chöông trình ngöôøi söû duïng.
ÔÛ cheá ñoä START UP, CPU thöïc hieän caùc taùc vuï sau:
Thöïc thi khôûi ñoäng laïi ñaày ñuû (söû duïng OB100) (Complete restart):
Xoùa ñi caùc phaàn khoâng giöõ cuûa boä nhôù bit, boä nhôù timer, vaø boä nhôù counter; xoùa caùc ngaên xeáp ngaét vaø ngaên xeáp khoái; boû taát caû caùc baùo ñoäng quaù trình löu tröõ vaø baùo ñoäng chaån ñoaùn; vaø (ñoái vôùi khôûi ñoäng laïi ñaày ñuû) xaây döïng caùc danh saùch ñòa chæ vaø caùc baûng aûnh I/O.
Naïp caùc tham soá module vaøo caùc module.
Ñoïc caáu hình I/O vaø so saùnh traïng thaùi thaät cuûa I/O vaät lyù vôùi caùc traïng thaùi mong muoán.
ÔÛ cheá ñoä RUN, CPU thöïc thi chöông trình ngöôøi söû duïng , caäp nhaät I/O, xöû lyù baát cöù baùo ñoäng naøo, vaø thöïc hieän baát cöù taùc vuï xöû lyù loãi naøo.
ÔÛ cheá ñoä HOLD, thöïc thi chöông trình bò döøng vaø ta coù theå kieåm tra chöông trình ngöôøi söû duïng töøng böôùc. Chæ coù theå coù cheá ñoä HOLD khi ta ñang kieåm tra baèng thieát bò laäp trình.
Trong taát caû caùc cheá ñoä naøy, CPU coù theå truyeàn thoâng baèng giao tieáp MPI
Hình 1.20: thay ñoåi cheá ñoä hoaït ñoäng cuûa CPU.
Caùc cheá ñoä hoaït ñoäng khaùc:
Neáu CPU khoâng saün saøng hoaït ñoäng thì noù ôû moät trong caùc cheá ñoä sau:
OFF, nguoàn ñieän bò maát hay bò taét.
Hö hoûng, nghóa laø coù loãi. Ñeå kieåm tra xem thöïc söï coù phaûi bò hö hay khoâng thì chuyeån CPU sang STOP vaø taét nguoàn ñieän vaø roài môû laïi laàn nöõa. Neáu CPU khôûi ñoäng thì ñoïc caùc vuøng nhôù duøng cho chaån ñoaùn, neáu khoâng khôûi ñoäng ñöôïc thì coù leõ phaûi thay theá PLC khaùc.
Tham khaûo
Moâ taû
1
Khi nguoàn ñieän ñöôïc ñöa vaøo CPU, CPU ôû cheá ñoä STOP.
2
Khi coâng taéc (hoaëc thieát bò laäp trình) choïn RUN hay RUN-P, CPU vaøo cheá ñoä START UP.
3
Chuyeån veà cheá ñoä STOP khi :
Phaùt hieän coù loãi trong khi khôûi ñoäng.
CPU bò ñoåi sang STOP baèng coâng taéc (hoaëc thieát bò laäp trình).
Leänh STOP ñöôïc thöïc thi trong OB khôûi ñoäng.
Leänh truyeàn thoâng STOP ñöôïc thöïc thi.
4
CPU chuyeån sang cheá ñoä HOLD khi ñeán ñieåm ngaét trong chöông trình khôûi ñoäng.
5
CPU chuyeån sang cheá ñoä START UP khi ñieåm ngaét trong chöông trình khôûi ñoäng ñaõ ñöôïc ñaët vaø leänh EXIT HOLD ñaõ ñöôïc thöïc thi.
6
CPU trôû veà cheá ñoä STOP khi:
CPU bò ñoåi sang STOP baèng coâng taéc (hoaëc thieát bò laäp trình).
Leänh truyeàn thoâng (töø xa) STOP ñöôïc thöïc thi .
7
Neáu khôûi ñoäng thaønh coâng thì CPU chuyeån sang RUN.
8
CPU chuyeån sang laïi cheá ñoä STOP khi:
Phaùt hieän baát cöù loãi naøo trong cheá ñoä RUN vaø OB töông öùng khoâng ñöôïc naïp.
CPU bò ñoåi sang STOP baèng coâng taéc (hoaëc thieát bò laäp trình).
Leänh STOP ñöôïc thöïc thi trong OB khôûi ñoäng.
Leänh truyeàn thoâng STOP ñöôïc thöïc thi.
9
CPU chuyeån sang cheá ñoä HOLD khi ñeán ñieåm ngaét trong chöông trình khôûi ñoäng.
10
CPU chuyeån sang cheá ñoä RUN khi ñieåm ngaét ñaõ ñöôïc ñaët vaø leänh EXIT HOLD ñaõ ñöôïc thöïc thi.
Baûng 1.15: thay ñoåi caùc cheá ñoä hoaït ñoäng (moâ taû caùc ñieåm trong hình 1.20).
CAÙC KHOÁI LOGIC.
STEP7 cho caùc khoái khaùc nhau ñeå chöùa chöông trình vaø döõ lieäu maø chöông trình söû duïng. Döïa vaøo yeâu caàu cuûa mình maø ta coù theå caáu truùc chöông trình baèng caùc khoái logic (caùc khoái toå chöùc, khoái haøm vaø haøm).
Caùc khoái toå chöùc OB.
Caùc khoái toå chöùc OB laø giao tieáp giöõa CPU S7 vaø chöông trình. Ta coù theå caát toaøn boä chöông trình vaøo OB1, maø laëp laïi lieân tuïc, hoaëc ta coù theå caát chöông trình trong caùc khoái logic khaùc vaø söû duïng OB1 ñeå goïi caùc khoái naøy luùc thích hôïp. Ngoaøi OB1, heä ñieàu haønh coù theå goïi caùc OB khaùc ñeå ñaùp öùng caùc söï kieän cuï theå.
Moãi CPU S7 chöùa moät boä caùc OB (moãi CPU khaùc nhau) maø ta coù theå laäp trình. Caùc OB khaùc nhau thöïc hieän caùc chöùc naêng nhaát ñònh:
OB1: laëp voøng chöông trình chính (laëp voøng lieân tuïc).
OB10 (Time of Day Interrupt): ngaét thôøi gian trong ngaøy, baét ñaàu chaïy ôû thôøi ñieåm (ñöôïc laäp trình nhaát ñònh) ñaëc bieät.
OB20 (Time Delay Interrupt): ngaét trì hoaõn, chöông trình trong khoái naøy ñöôïc thöïc hieän sau moät khoaûng thôøi gian delay coá ñònh.
OB35 (Cyclic Interrupt): ngaét tuaàn hoaøn, laëp laïi sau khoaûng thôøi gian caùch ñeàu nhau ñöôïc ñònh tröôùc (1ms ñeán 1 phuùt).
OB40 (Hardware Interrupt): ngaét cöùng, chaïy khi phaùt hieän coù loãi trong module ngoaïi vi.
OB80 (Cycle Time Fault): loãi thôøi gian chu trình, thöïc hieän khi thôøi gian voøng queùt vöôït quaù thôøi gian cöïc ñaïi ñaõ ñònh .
OB81 (Power Supply Fault): thöïc hieän khi CPU phaùt hieän thaáy coù loãi nguoàn nuoâi.
OB82 (Diagnostic Interrupt): chöông trình trong khoái naøy ñöôïc goïi khi CPU phaùt hieän coù söï coá töø module I/O môû roäng.
OB85 (Not Load Fault): ñöôïc goïi khi CPU thaáy chöông trình öùng duïng coù söû duïng cheá ñoä ngaét nhöng chöông trình xöû lyù tín hieäu ngaét laïi khoâng coù trong khoái OB töông öùng.
OB87 (Communication Fault): thöïc hieän khi coù loãi truyeàn thoâng.
OB100 (Start Up Information): thöïc hieän moät laàn khi CPU chuyeån traïng thaùi töø STOP sang RUN.
OB101 (Cold Start Up Information_chæ coù ôû CPU S7-400): thöïc hieän moät laàn khi coâng taéc nguoàn cuûa CPU chuyeån traïng thaùi töø OFF sang ON.
OB121 ( Synchronous Error): ñöôïc goïi khi coù loãi logic trong chöông trình.
OB122 (Synchronous Error): ñöôïc goïi khi coù loãi module trong chöông trình.
Heä ñieàu haønh ghi thoâng tin cuï theå vaøo 20 bytes ñaàu cuûa caùc bieán taïm (temp) vôùi moãi OB. STEP7 cung caáp caùc bieán taïm naøy trong baûng khai baùo bieán cho OB. Chöông trình coù theå ñoïc thoâng tin naøy ñeå ñaùp öùng caùc söï kieän khaùc nhau trong CPU. Ta coù theå ñoåi teân caùc bieán taïm naøy neáu ta muoán, nhung khoâng neân ghi baát cöù döõ lieäu naøo vaøo caùc bieán taïm naøy: STEP7 ghi vaøo caùc bieán naøy moãi laàn OB baét ñaàu chaïy, vaø baát cöù döõ lieäu naøo maø ta caát ôû ñoù seõ bò maát. Ta coù theå theâm caùc bieán khaùc cho OB sau 20 bytes ñaàu naøy.
Baûng 1.16: local block cuûa khoái OB10.
Baûng 1.17: local block cuûa khoái OB20.
Baûng 1.18: local block cuûa khoái OB35.
Baûng 1.19: local block cuûa khoái OB40.
Baûng 1.20: local block cuûa khoái OB80.
Baûng 1.21: local block cuûa khoái OB81.
Baûng 1.22: local block cuûa khoái OB83.
Baûng 1.23: local block cuûa khoái OB85.
Baûng 1.24: local block cuûa khoái OB87.
Baûng 1.25: local block cuûa khoái OB122.
Caùc haøm vaø caùc khoái haøm.
Ta coù theå ñeå toaøn boä chöông trình trong OB1. Nhöng ñeå coù theå vieát chöông trình ñöôïc daøi hôn vaø coù caáu truùc, ta söû duïng caùc khoái logic. STEP7 cho theâm 2 loaïi khoái logic:
Khoái haøm FB (function block): laø khoái logic maø coù vuøng nhôù keát hôïp vôùi noù. FB caàn coù theâm boä nhôù ôû daïng khoái döõ lieäu tình huoáng “instance”. Caùc tham soá maø ñöa vaøo FB vaø moät soá döõ lieäu cuïc boä (caùc bieán “tónh”) ñöôïc caát trong DB tình huoáng; döõ lieäu cuïc boä khaùc (caùc bieán taïm) ñöôïc caát trong “L stack”. Döõ lieäu caát trong DB tình huoáng ñöôïc giöõ nguyeân khi FB hoaøn taát thöïc thi; döõ lieäu trong “L stack” khoâng ñöôïc giöõ laïi khi FB hoaøn taát.
Haøm (FC): laø khoái logic maø khoâng coù vuøng nhôù keát hôïp: FC khoâng caàn DB tình huoáng. Caùc bieán cuïc boä cuûa FC ñöôïc caát trong “L stack”; nhöõng döõ lieäu naøy khoâng ñöôïc giöõ laïi khi FC hoaøn taát thöïc thi.
Caùc khoái heä thoáng.
CPU S7 cho caùc khoái ñöôïc ñònh nghóa :
Khoái haøm heä thoáng SFB (System function block): laø khoái haøm ñöôïc tích hôïp trong CPU S7. Ta coù theå goïi SFB töø chöông trình; vì nhöõng SFB laø moät phaàn cuûa heä ñieàu haønh, ta khoâng caàn phaûi naïp chuùng vaøo nhö moät phaàn cuûa chöông trình. Töông töï vôùi FB, SFB caàn DB tình huoáng. Ta phaûi taûi DB naøy xuoáng CPU nhö moät phaàn cuûa chöông trình.
Haøm heä thoáng SFC (System function): haøm ñöôïc laäp trình tröôùc maø tích hôïp saün trong CPU S7. Ta coù theå goïi SFC töø chöông trình; vì nhöõng SFC laø moät phaàn cuûa heä ñieàu haønh, ta khoâng caàn phaûi naïp chuùng vaøo nhö moät phaàn cuûa chöông trình.
Khoái döõ lieäu heä thoáng SDB (system data block): vuøng nhôù cuûa chöông trình ñöôïc taïo bôûi caùc öùng duïng STEP7 khaùc nhau ñeå chöùa döõ lieäu caàn ñeå ñieàu haønh PLC. Thí duï: öùng duïng “S7 Configuration” caát döõ lieäu caáu hình vaø caùc tham soá laøm vieäc khaùc trong caùc SDB, vaø öùng duïng “Communication Configuration” taïo caùc SDB maø caát döõ lieäu thoâng tin toaøn cuïc ñöôïc chia xeû giöõa caùc CPU khaùc nhau.
Caùc khoái cuûa caùc CPU cuûa PLC S7-300.
Khoái
Soá löôïng
Kích thöôùc toái ña
Ghi chuù
312 IFM
314 IFM
313
314
315
315-2
DP
312
IFM
313,314
314 IFM
315
315-2 DP
OB
3
13
13
14
Bò giôùi haïn bôûi RAM
8 KB
FB
32 (0-31)
128 (0-127)
8 KB
FC
32 (0-31)
128 (0-127)
8KB
DB
63 (1-63)
127 (1-127)
8 KB
0 daønh rieâng
SFC
25
36
36 (37 vôùi 315)
40
-
SFB
2
7
-
-
-
Baûng 1.26: caùc khoái cuûa caùc CPU.
Thöïc thi chöông trình trong OB1.
Heä ñieàu haønh cuûa CPU S7 lieân tuïc laëp laïi thöïc thi OB1; khi OB1 hoaøn taát thöïc thi cuûa noù, heä ñieàu haønh cho OB1 chaïy laïi. Heä ñieàu haønh cuõng goïi OB1 khi OB100 (thoâng tin Start up) hoaøn taát. Ta cuõng coù theå söû duïng OB1 ñeå goïi caùc khoái haøm FB khaùc hoaëc caùc haøm FC, hoaëc ta coù theå chöùa taát caû chöông trình trong OB1; tuy nhieân ñeå thöïc thi chöông trình cuûa ta thì phaûi taûi xuoáng CPU.
Hoaït ñoäng cuûa OB1:
OB1 laëp laïi lieân tuïc, khi noù hoaøn taát thöïc thi, noù laïi baét ñaàu thöïc hieän laïi. OB1 coù ñoä öu tieân thaáp nhaát trong caùc OB; taát caû caùc OB khaùc coù theå ngaét vieäc xöû lyù OB1. Caùc söï kieän sau coù theå laøm cho heä ñieàu haønh goïi OB1:
Ghi nhaän thöïc thi OB1 (thoâng tin start up) ñaõ hoaøn taát.
Ghi nhaän thöïc thi OB1 (chu kyø tröôùc ) ñaõ hoaøn taát.
Klhi OB1 hoaøn taát thöïc thi, heä ñieàu haønh ghi thanh ghi PIQ ra caùc module xuaát ngoaïi vi vaø gôûi baát cöù döõ lieäu toaøn cuïc naøo. Tröôùc khi cho baét ñaàu laïi OB1; heä ñieààu haønh caäp nhaät baûng PII vaø nhaän baát cöù döõ lieäu toaøn cuïc naøo cho CPU.
STEP7 cho thôøi gian chu kyø toái ña maëc nhieân laø 150ms cho OB1. Ta coù theå söûa ñoåi giaù trò naøy, hoaëc ta coù theå söû duïng haøm heä thoáng (SFC) ñeå khôûi ñoäng laïi timer canh giöõ (cho pheùp chöông trình hoaøn taát thöïc thi cuûa noù). Neáu chöông trình cuûa ta vöôït quaù thôøi gian chu kyø toái ña cho OB1 thì heä ñieàu haønh goïi OB80 (loãi do thôøi gian chu kyø); neáu ta khoâng laäp trình OB80 thì CPU ñi vaøo cheá ñoä STOP.
Döõ lieäu cuïc boä cho OB1:
Ta coù baûng 1.27 cho thaáy caùc bieán taïm ñöôïc khai baùo trong baûng khai baùo döõ lieäu cuûa OB1. Chuùng laø 20 bytes ñaàu döõ lieäu maø ñöôïc caát trong “L stack” coù lôùp öu tieân 1. Ta coù theå söûa ñoåi caùc thoâng soá naøy baèng coâng cuï “S7 Confuguration” cuûa STEP7. Thí duï bieán OB1_MAX_CYCLE (thôøi gian chu kyø toái ña) tính theo ms coù trò maëc nhieân laø 150ms vaø taàm giaù trò ñaët ñöôïc töø 1ms tôùi 60 000ms (6s).
Baûng 1.27: caùc bieán cuïc boä cuûa OB1.
Thoâng tin Start up:
STEP7 cho OB100 ñeå ñöa vaøo ñaëc tính start-up cho CPU. Heä ñieàu haønh goïi OB100 moãi khi CPU ñi töø STOP sang RUN.
Ta coù theå caát chöông trình trong OB100 ñeå cho caáu hình theo yù muoán hoaëc caùc tham soá laøm vieäc khi start up.
Baûng 1.28 moâ taû caùc bieán taïm ñöôïc khai baùo trong baûng khai baùo bieán cuûa OB. Ta coù theå duøng coâng cuï “S7 Configuration” ñeå ñaët caáu hình ñaëc tính cuûa CPU.
Ngöôøi ta thöôøng söû duïng OB100 ñeå thieát laäp caùc tham soá ban ñaàu cho chöông trình nhö: taïo caùc traïng thaùi ban ñaàu, caùc döõ lieäu khôûi ñoäng, cho pheùp timer,...v.v.
Teân hình thöùc
Kieåu
Giaù trò vaø yù nghóa
OB100_EV_CLASS
Byte
B#16#13
OB100_STRTUP
Byte
Cheá ñoä goïi OB100:
B#16#81 = ñöôïc goïi khi chuyeån töø STOP sang RUN.
B#16#82 = ñöôïc goïi töï ñoäng khi chuyeån töø STOP sang RUN hoaëc khi chuyeån töø OFF sang ON vaø CPU vaãn ñang ôû traïng thaùi RUN.
OB100_PRIORITY
Byte
27 (thöù töï öu tieân)
OB100_OB_NUMBR
Byte
100 :laø chæ soá cuûa khoái OB100.
OB100_RESERVED_1
Byte
Döï tröõ
OB100_RESERVED_2
Byte
Döï tröõ
OB100_STOP
Byte
Maõ hieäu nga71t laøm cho CPU chuyeån veà traïng thaùi STOP.
OB100_STRT_INFO
Dword
Thoâng tin veà vieäc thöïc hieän cheá ñoä khôûi ñoäng.
OB100_DATE_TIME
Date_And_Time
Thôøi ñieåm OB100 baét ñaàu ñöôïc thöïc hieän.
Baûng 1.28: caùc bieán taïm trong OB100.
Lôùp öu tieân vaø chöông trình ngaét:
Caùc lôùp öu tieân (pripority classes)
CPU S7 cho caùc lôùp öu tieân cho moãi OB lieân heä. Caùc OB naøy cho pheùp ta taïo ra caùc chöông trình (hoaøn taát vôùi caùc leänh goïi FB vaø FC) maø thöïc thi ôû nhöõng thôøi ñieåm cuï theå hoaëc ñaùp öùng vôùi nhöõng söï kieän ñaëc bieät nhö phaùt hieän loãi. Döïa vaøo lôùp öu tieân cuûa OB, caùc chöông trình naøy coù theå ngaét xöû lyù caùc khoái trong chöông trình. Lôùp öu tieân vôùi ñoä öu tieân cao nhaát chaïy ñaàu tieân; neáu coù nhieàu hôn moät OB ñöôïc goïi bôûi heä ñieàu haønh thì tröôùc heát OB vôùi lôùp öu tieân cao nhaát ñöôïc thöïc thi, coøn caùc OB khaùc theo sau theo thöù töï öu tieân.
Loaïi OB
Moâ taû
Lôùp öu tieân
OB1
Chöông trình chính
Baét ñaàu chaïy khi keát thuùc chu kyø tröôùc
1 (thaáp nhaát)
OB10 ñeán OB17
Ngaét TOD
Baét ñaàu chaïy ôû ngaøy thaùng vaø thôøi gian ñaõ ñöôïc laäp trình
2
OB20 ñeán OB23
Ngaét treã
Söû duïng cuøng vôùi SFC32 (baét ñaàu ngaét treã) chaïy sau thôøi gian trì hoaõn ñaët tröôùc (theo ms)
Töông öùng 3 ñeán 6
OB30 ñeán OB38
Ngaét tuaàn hoaøn
Chaïy theo chu lyø laäp trình tröôùc (töø 1ms ñeán 1 phuùt)
Töông öùng 7 ñeán 15
OB40 ñeán OB47
Ngaét cöùng
Baét ñaàu chaïy khi phaùt hieän baùo ñoäng quaù trình töø module ngoaïi vi
Töông öùng 16 ñeán 23
OB80 ñeán OB87
Caùc loãi khoâng ñoàng boä
Baét ñaàu chaïy khi phaùt hieän loãi chaån ñoaùn module hoaëc coù loãi time-out
Öu tieân cao nhaát 26 (hoaëc 28 trong khi start up)
OB100
OB start up
Baét ñaàu chaïy khi CPU chuyeån töø STOP sang RUN
27
OB121, OB122
Caùc loãi ñoàng boä
Baét ñaàu chaïy khi phaùt hieän loãi laäp trình (OB121) hoaëc loãi truy caäp (OB122)
Cuøng öu tieân vôùi OB bò ngaét
Baûng 1.29: caùc OB vaø lôùp öu tieân cuûa noù.
Ngaét (interrupt) thöïc thi chöông trình
Bôûi vì OB1 caàn cho taát caû caùc chöông trình, OB1 naèm trong lôùp öu tieân thaáp nhaát. Ñieàu naøy laøm cho baát kyø OB naøo khaùc ñöôïc pheùp ngaét vieäc xöû lyù chöông trình chính. Khi taát caû caùc ngaét ñaõ ñöôïc xöû lyù xong, OB1 tieáp tuïc thöïc thi ôû ñieåm bò ngaét.
Khi CPU phaùt hieän söï kieän baét ñaàu vôùi OB coù lôùp öu tieân cao hôn OB ñang ñöôïc thöïc thi thì vieäc ngaét xaûy ra ôû cuoái leänh ñang ñöôïc xöû lyù. Heä ñieàu haønh caát toaøn boä ngaên xeáp thanh ghi cho khoái ngaét. Thoâng tin naøy ñöôïc laáy trôû laïi khi heä ñieàu haønh thöïc thi tieáp khoái bò ngaét.
OB ngaét thöïc thi khoái coù lôùp öu tieân khaùc coù theå goïi caùc haøm (FC) vaø caùc khoái haøm (FB) khi caàn. Soá laàn goïi loàng nhau phuï thuoäc vaøo CU. Thí duï CPU coù theå loàng ñeán 8 leänh goïi moãi laàn.
Caát döõ lieäu cho chöông trình bò ngaét
Khi heä ñieàu haønh phaùt hieän moät söï kieän baét ñaàu cho chaïy ñoái vôùi OB coù öu tieân cao hôn lôùp öu tieân ñang ñöôïc thöïc thi thì noù caát thoâng tin hieän haønh trong caùc thanh ghi tích luõy vaø caùc thanh ghi vaøo ngaên xeáp ngaét (I stack).
Neáu OB môùi goïi FB hay FC, döõ lieäu xöû lyù cho moãi khoái ñöôïc caát vaøo trong ngaên xeáp khoái (B stack). Coù theå coù ñeán 8 choã/ lôùp öu tieân trong “B stack”.
Khi OB môùi ñaõ hoaøn taát thöïc thi thì heä ñieàu haønh naïp laïi thoâng tin töø “I stack” vaø cho thöïc thi tieáp tuïc khoái bò ngaét töø choã ngaét ñaõ xaûy ra.
Khi CPU chuyeån sang cheá ñoä STOP, ta coù theå söû duïng coâng cuï “S7 Information” ñeå xem B stack vaø I stack. Ñieàu naøy giuùp cho ta xaùc ñònh ñöôïc vaán ñeà laøm cho CPU ñoåi cheá ñoä hoaït ñoäng.