Các dạng biến-biến tạm thời và local block L Local data block: Miền dữ liệu địa phương, được các khối chương trình OB, FC, FB tổ chức, sử dụng cho các biến nháp tức thời và trao đổi dữ l
Trang 1TRƯỜNG CAO ĐẲNG NGHỀ ĐỒNG NAI
Trang 2TRƯỜNG CAO ĐẲNG NGHỀ ĐỒNG NAI
Trang 4LỜI NÓI ĐẦU
Môn học Xử lý lỗi SIMATIC S7-300 cung cấp các kiến thức về các chức năng chuyên dùng của phần mềm STEP7 trong quá trình lập trình và vận hành phần mềm Sinh viên sau khi học sẽ có khả năng phân tích và xử lý sự cố khi làm việc với phần mềm lập trình và vận hành PLC S7-300.
Giáo trình biên soạn dựa trên các tài liệu và hướng dẫn sử dụng mới nhất của hãng SIEMENS Được dùng làm tài liệu giảng dạy cho sinh v iên ngành Điện tử công nghiệp, Cơ điện tử, Tự động hóa, Điện công nghiệp.
Giáo trình Xử lý lỗi SIMATIC S7-300 trình bày theo phương pháp giảng dạy Mô đun thông qua các hình ảnh, giúp người học tiếp thu và thực hành làm theo một cách nhanh chóng.
Trong quá trình biên soạn, đã được các đồng nghiệp đóng góp nhiều ý kiến, mặc dù cố gắng sửa chữa, bổ sung Nhưng do kiến thức còn có hạn, nên chắc chắn không tránh khỏi những thiếu sót, hạn chế Mong nhận được các ý kiến đóng góp của bạn đọc.
Trang 5BÀI 1 KHỐI DỮ LIỆU DB
1.1 Khái niệm khối DB.
Khối DB ( Data Block): là khối vùng nhớ dùng để chứa một danh sách các biến.Trong S7-300 không có sẵn các khối DB Người lập trình phải tạo ra và cấu hình các khối
DB trong Step7 rồi download xuống S7-300 Một chương trình ứng dụng có thể cónhiều khối DB và các khối DB này được phân biệt với nhau bằng số nguyên
1.2 Phân chia vùng nhớ DB được minh họa như hình 1.1.
Hình 1.1Khi truy cập vùng nhớ DB, bắt buộc vùng nhớ đó phải tồn tại trong PLC Tức là ta
đã tạo vùng nhớ đó trong Step7 và download xuống PLC, nếu không PLC sẽ báo lỗi và
chuyển PLC sang chế độ STOP Ta có thể vẫn giữ PLC ở chế độ RUN bằng cách sử dụngcác khối OB tương ứng
1.3 Truy nhập vùng nhớ DB.
Để truy nhập vùng nhớ DB ta dùng cấu trúc định địa chỉ như sau:
- DBx.Dbty.z với kiểu BIT
- DBx.DBty
Trong đó:
• x: là chỉ số của khối DB (ví dụ DB1, DB2, …)
• t: là ký hiệu tương ứng với kiểu vùng nhớ n hư bảng 1.1
• y: là địa chỉ BYTE của vùng nhớ trong khối DB
• z là địa chỉ BIT của vùng nhớ trong khối DB
Trang 61.4 Khai báo khối DB
1.4.1 Các bước khai báo
Mở của sổ SIMATIC Manager Click chuột phải trên biểu tượng “Blocks” rồichọn “Insert New Object → Data Block Hình 1.2
Hình 1.2Hộp thoại “Properties – Data Block” xuất hiện Hình 1.3
Hình 1.3Trong mục “Name and type”, ta nhập tên của khối DB là “DB1, chọn kiểu DB là
“Shared DB” Một khối DB với tên “DB1” được tạo ra trong thư mục “Blocks” Hình 1.4
Trang 7Hình 1.4
Mở khối “DB1” bằng cách double click trên biểu tượng DB1 Giao diện xuất hiện
như hình 1.5
Hình 1.5
Ý nghĩa các cột như sau:
- Address: Địa chỉ tương đối của biến trong khối DB
- Name: Tên biến
- STRUCT: Kiểu biến (ví dụ REAL, WORD, …)
- Initial value: Giá trị khởi tạo của biến Đây là giá trị được gán cho biến khi tadownload khối DB xuống PLC
- Comment: Chú thích cho biến
Để thêm một biến , ta nhập tên biến, kiểu dữ liệu, giá trị khởi tạo và chú thích nếu cần
rồi bấm “ENTER” Phần mềm Step7 tự động thêm một hàng mới để ta thêm biến mới,hoặc ta có thể click chuột phải trên hàng bất kỳ rồi chọn “Declaration Line …” để thêmbiến mới Hình 1.6
Hình 1.6
Cột địa chỉ được gán tự động, ta không thể nhập cột này Sau khi khai báo xong các
biến, ta click nút “Save” để lưu cấu hình cho khối DB1
1.4.2 Kiểu SHARED DB và INSTANCE DB
1.4.2.1 Kiểu SHARED DB.
- Sharred DB là khối Data Block bình thườn g Đây chỉ là một khối DB độc lập
dùng để lưu một danh sách biến và ta phải tạ o danh sách biến này bằng tay
Trang 81.4.2.2 Kiểu INSTANCE DB.
- Instance DB là một khối Data Block được sử dụng cho FB Ta không thể tạo cácbiến trong Instance DB bằng tay, các khối Instance được tạ o tự động bằng Step7
1.5 CÁC VÍ DỤ.
1.5.1 Khối DB với kiểu SHARED DB.
Ví dụ 1: Tạo khối DB1 có kiểu là SHARED DB Trong khối DB1 tạo các biến sau:
+ Biến x; kiểu int
+ Biến y; kiểu real
+ Biến z; kiểu bool
Giải:
Bước 1: Tạo khối DB1 Hình 1.7
Hình 1.7 Bước 2: double click vào DB1 Hình 1.8
Hình 1.8 Bước 3: Đặt tên biến x Trong cột name, nhập vào chữ x Hình 1.9
Hình 1.9 Bước 4: Chọn kiểu Nhấn chuột phải vào cột type , chọn int như hình 1.10.
Trang 9Hình 1.10 Bước 5: Nhập giá trị ban đầu cho biến x Trong cột initial value, nhập giá trị 0 Hình 1.11
Hình 1.11 Bước 6: Tạo ghi chú cho biến x Trong cột comment , nhập “bien kieu nguyen” Hình 1.12
Trang 10Hình 1.14
Cuối cùng nhấn Save để lưu cấu hình cho DB và nhấn nút đóng cửa s ổ này lại
Ví dụ 2: Truy xuất các biến x, y, z trong khối DB1 vừa tạo ở trên.
+ Gán giá trị 1 vào cho biến x
+ Gán giá trị 2.5 vào cho biến y
+ Lấy giá trị biến z điều khiển ON/OF Q124.0
Giải:
1.5.2 Khối DB với kiểu INSTANCE DB.
Khối DB với k iểu INSTANCE DB sẽ được đề cập trong bài FB Vì khi đã có khối
FB thì mới tạo được khối DB kiểu INSTANCE DB
1.6 BÀI TẬP ÁP DỤNG.
1 Bài tập 1: Tạo khối DB có các biến sau: x(kiểu thực), y(kiểu thực), z(kiểu
thực), tong(kiểu thực) Tính: tong=x+y+z
2 Bài tập 2: Tạo khối DB có các biến sau: x(kiểu nguyên) , y(kiểu nguyên) ,
ketqua1(kiêu nguyen), ketqua2(kieu thực) Tính:
x+y, kết quả sẽ đưa vào ketqua1 hay ketqua2 Vì sao?
x/y, kết quả sẽ đưa vào ketqua1 hay ketqua2 Vì sao?
Trang 11BÀI 2: CHỨC NĂNG FC VÀ CÁC KHỐI FB
2.1 Các dạng biến-biến tạm thời và local block
L (Local data block): Miền dữ liệu địa phương, được các khối chương trình
OB, FC, FB tổ chức, sử dụng cho các biến nháp tức thời và trao đổi dữ liệu của biếnhình thức với nhữngkhối chương trình đã đã gọi nó Nội dung của một số dữ liệutrong miền nhớ này sẽ bị xóa khi kết thúc chương trình tương ứng trong OB, FC, FB
2.2 Khối FC
FC (Function): khối chương trình với những chức năng riêng giống như một
chương trình con hoặc một hàm Một chương trình ứng dụng có thể có nhiều khối
FC
Khi có lệnh gọi, chương trình chính OB1 dừng tạm thời, và chương trình con đượcgọi sẽ được thực hiện Sau khi thực hiện xong chương trình con, chu trình tiếp tục quétdòng lệnh tiếp theo của OB1
2.2.1 Tạo khối FC.
Mở của sổ SIMATIC Manager Click chuột phải trên biểu tượng “Blocks” rồichọn “Insert New Object → Function Hình 2.1
Hình 2.1Hộp thoại “Properties – Function” xuất hiện Hình 2.2
Trang 122.2.2 Viết chương trình và k hai báo local block cho khối FC.
Click chuột phải trên biểu tượng “FC1” rồi chọn “Open Oject” Hình 2.4
Hình 2.4Cửa xổ lập trình xuất hiện Hình 2.5
Hình 2.5Khai báo các biến cho khối FC Hình 2.6
Trang 13+ IN_OUT: biến vào/ra
- Name: tên của biến
- Data Type: kiểu dữ liệu của biến
- Comment: ghi chú cho biến
2.2.3 Gọi khối FC
Click chuột phải trên biểu tượng “OB1” rồi chọn “Open Oject” Hình 2.7
Hình 2.7Cửa xổ lập trình “OB1” xuất hiện Hình 2.8
Hình 2.8
Trang 14Click chuột phải trên biểu tượng “FC1” rồi chọn “Install Block” Hình 2.9.
Hình 2.9Khối “FC1” sẽ được chèn vào chương trình Hình 2.10
Hình 2.10
2.3 Khối FB
FB (Function Block) là một khối lập trình cho phép ta viết lệnh trong đó để thựchiện một số công việc nhất định FB cung cấp một giao diện (Interface) gồm các kiểubiến IN, OUT, IN_OUT, STAT, TEMP Ngoại trừ kiểu TEMP, các kiểu khác được cấpvùng nhớ trong một khối DB đi kèm, tức là khi ta gọi một khối FB nào đó, ta phải gán địachỉ của khối DB như một tham số đi kèm và danh sách biến của khối DB này hoàn toàngiống với danh sách biến mà ta cấu hình tron g khối FB
2.3.1 Tạo khối FB.
Mở cửa sổ SIMATIC Manager Click chuột phải trên biểu tượng “Blocks” rồichọn “Insert New Object → Function Block Hình 2.11
Trang 15Hình 2.11Hộp thoại “Properties – Function Block” xuất hiện Hình 2.12
Hình 2.12Trong mục “Name”, ta nhập tên của khối FB là “FB1”, mục “created in language”,chọn “LAD”, sau đó nhấn “OK” Một khối FB với tên “FB1” được tạo ra trong thư mục
“Blocks” Hình 2.13
Hình 2.13
Trang 162.3.2 Khai báo local block cho khối FB.
Click chuột phải trên “Blocks” rồi chọn “Insert New Object → Data Block” Hình2.14
Hình 2.14Hộp thoại “Properties – Data Block” xuất hiện Hình 2.15
Hình 2.15Trong mục “Name and type” nhập tên là DB1, kiểu là Instance DB và khối FBtham chiếu là FB1 rồi click “OK” Một khối DB2 được tạo ra trong thư mục “Blocks”.Hình 2.16
Hình 2.16
Trang 172.3.2 Lập trình và khai báo các biến cho khối FB.
Click chuột phải trên biểu tượng “FB1” rồi chọn “Open Oject” Hình 2.17
Hình 2.17Cửa xổ lập trình xuất hiện Hình 2 18
Hình 2.18Khai báo các biến cho khối FB Hình 2.19
Hình 2.19
Trang 18Click chuột phải trên biểu tượng “DB1” rồi chọn “Open Oject” Hình 2.20.
Hình 2.20
Ta sẽ thấy danh sách biến như hình 2.21
Hình 2.21
- Đây là danh sách biến được khai báo trong khố i FB1 Các biến này được tạo tự
động trong khối DB1 Ở đây ta có thêm cột “Declaration” hiển thị biến đó là kiểu IN,
OUT, IN_OUT, hay STAT
- Danh sách biến được khai báo trong FB 1 sẽ được tạo tự động trong khối Instance
DB tham chiếu tới nó, ta không thể chỉnh sửa danh sách biến này bằng tay
2.3.3 Gọi khối FB.
Click chuột phải trên biểu tượng “OB1” rồi chọn “Open Oject” Hình 2.22
Hình 2.22
Trang 19Cửa xổ lập trình “OB1” xuất hiện Hình 2.23.
Hình 2.23Click chuột phải trên biểu tượng “FB1” rồi chọn “Install Block” Hình 2.24
Hình 2.24Khối “FB1” sẽ được chèn vào chương trình Hình 2.25
Hình 2.25Tại vị trí phía trên của FB1 (vị trí ???), nhập DB1 là vùng nhớ tham chiếu củakhối FB1 Hình 2.26
Hình 2.26
Trang 20BÀI 3: CÁC KHỐI TỔ CHỨC OB
3.1 Tổng quan về các khối tổ chức
Khối OB (Organization Block): là khối tổ chức và quản lý chương trình điều khiển
Có nhiều loại OB với các chức năng khác nhau, chúng được phân biệt dựa vào số nguyêngán thêm phía sau: OB1, OB35, OB40…
Không phải tất cả các CPU đều có các khối OB như nhau Số lượng và chủng loạikhối OB tuỳ thuộc vào từng loại CPU
Hình 3.2
Trang 21Trong mục “Name”, ta nhập tên của khối OB là “OB100”, mục “created in
language”, chọn “LAD”, sau đó nhấn “OK” Một khối OB với tên “OB100” được tạo ratrong thư mục “Blocks” Hình 3.3
Hình 3.3
3.2.2 Lập trình khối OB100.
Click chuột phải trên biểu tượng “OB100” rồi chọn “Open Oject” Hình 3.4
Hình 3.4Cửa xổ lập trình “OB100” xuất hiện Hình 3.5
Hình 3.5
Trang 223.3 OB xử lý theo chu kỳ.
OB1 là khối luôn được CPU quét và thực hiện lặp lại các lệnh theo thứ tự từ trênxuống dưới
OB1 được mặc định tạo ra khi ta tạo một dự án mới
Mở và lập trình khối OB1: Click chuột phải trên biểu tượng “OB1” rồi chọn “Open
Oject” Hình 3.6
Hình 3.6Cửa xổ lập trình “OB1” xuất hiện Hình 3.7
Hình 3.7
3.4 Các OB ngắt
OB35(Cyclic interrupt): chương trình trong OB35 sẽ được thực hiện cách đềunhau theo một khoảng thời gian nhất định Mặc định thời gian này là 100ms, song ta
có thể thay đổi nó trong bảng tham số của CPU nhờ phần mềm STEP7
3.4.1.1 Cài đặt thời gian chu kỳ ngắt.
Trang 23Mở cửa sổ SIMATIC Manager Click chuột phải trên biểu tượng “Hardware” rồichọn “Open Object” Hình 3.8
Hình 3.8Cửa xổ “HW Config” (cài đặt phần cứng) xuất hiện Hình 3.9
Hình 3.9Click chuột phải trên “CPU 314-2DP” rồi chọn “Object Properties” Hình 3.10
Hình 3.10Hộp thoại “Properties Organization Block” xuất hiện Hình 3.11
Trang 24Hình 3.11Chọn thẻ “Cyclic Interrupts” Hình 3.12
Hình 3.12Tại cột “Execution” nhập thời gian của chu kỳ ngắt (mặc định là 100) Đơn vịtính là ms Sau đó chọn “Ok”
Tại cửa sổ “HW Config” nhấn nút (Save and compile) để kiểm tra và lưucấu hình phần cứng Sau đó đóng cửa sổ “HW Config”
3.4.1.2 Tạo OB35.
Mở cửa sổ SIMATIC Manager Click chuột phải trên biểu tượng “Blocks” rồichọn “Insert New Object → Organization Block Hình 3.13
Hình 3.13
Trang 25Hộp thoại “Properties Organization Block” xuất hiện Hình 3.14
Hình 3.14Trong mục “Name”, ta nhập tên của khối OB là “OB35”, mục “created in
language”, chọn “LAD”, sau đó nhấn “OK” Một khối OB với tên “OB35” được tạo ratrong thư mục “Blocks” Hình 3.15
Hình 3.15
3.4.1.3 Lập trình OB35
Click chuột phải trên biểu tượng “OB35” rồi chọn “Open Oject” Hình 3.16
Hình 3.16
Trang 26Cửa xổ lập trình “OB35” xuất hiện Hình 3.17.
Hình 3.17
OB10(Time of Day Interrupt): Chương trình trong khối OB10 sẽ được thựchiện khi giá trị của đồng hồ thời gian thực nằm trong một kho ảng thời gian đã được
quy định Việc quy định khoảng thời gian hay số lần gọi OB10 được cài đặt trên
phần mềm STEP7, sau đó download xuống PLC
OB10 có thể gọi một lần hay nhiều lần cách đều nhau từng phút, từng giờ,từng ngày
3.4.2.1 Cài đặt ngắt.
Mở cửa sổ SIMATIC Manager Click chuột phải trên biểu tượng “Hardware” rồichọn “Open Object” Hình 3.18
Hình 3.18Cửa xổ “HW Config” (cài đặt phần cứng) xuất hiện Hình 3.19
Trang 27Hình 3.19Click chuột phải trên “CPU 314-2DP” rồi chọn “Object Properties” Hình 3.20
Hình 3.20Hộp thoại “Properties Organization Block” xuất hiện Hình 3.21
Hình 3.21Chọn thẻ “Time of Day Interrupts” Hình 3.22
Trang 28Hình 3.22
- Cột “Execution”: chọn chu kỳ ngắt:
+ “None”: Không thực hiện quét OB10
+ “Once ”: Thực hiện quét OB10 một lần
+ “Every minute”: Thực hiện quét OB10 mỗi phút một lần
+ “Every hour”: Thực hiện quét OB10 mỗi giờ một lần
+ “Every day”: Thực hiện quét OB10 mỗi ngày một lần
+ “Every Week”: Thực hiện quét OB10 mỗi tuần một lần
+ “Every month”: Thực hiện quét OB10 mỗi tháng một lần
+ “End of month”: Thực hiện quét OB10 cuối tháng một lần
+ “Every year”: Thực hiện quét OB10 mỗi năm một lần
- Cột “Start Date ”: Ngày bắt đầu ngắt
- Cột “Time of day ”: Thời gian bắt đầu ngắt
- Cột “Active”: Chọn , cho phép ngắt
Sau đó chọn “Ok”
Tại cửa sổ “HW Config” nhấn nút (Save and compile) để kiểm tra và lưu
cấu hình phần cứng Sau đó đóng cửa sổ “HW Config”
3.4.2.2 Tạo OB10.
Mở cửa sổ SIMATIC Manager Click chuột phải trên biểu tượng “Blocks” rồichọn “Insert New Object → Organization Block Hình 3.23
Hình 3.23
Trang 29Hộp thoại “Properties Organization Block” xuất hiện Hình 3.24
Hình 3.24Trong mục “Name”, ta nhập tên của khối OB là “OB10”, mục “created in
language”, chọn “LAD”, sau đó nhấn “OK” Một khối OB với tên “OB10” được tạo ratrong thư mục “Blocks” Hình 3.25
Hình 3.25
3.4.2.3 Lập trình OB10
Click chuột phải trên biểu tượng “OB 10” rồi chọn “Open Oject” Hình 3.26
Hình 3.26
Trang 30Cửa xổ lập trình “OB10” xuất hiện Hình 3.27.
Hình 3.27
OB40(Hardware Interrupt): Chương trình trong OB40 sẽ được thực hiện khi xuất
hiện một tín hiệu bá o ngắt từ ngoại vi đưa vào module CPU thông qua các cổng vào
ra số onboard đặc biệt hoặc thông qua các module SM, CP, FM
3.4.3.1 Cài đặt cho phép ngắt.
Hình 3.25
Trang 31Hình 3.26
Hình 3.27
3.4.3.2 Tạo OB40.
Trang 33Hình 3.32
3.4.4 Ngắt trễ.
OB20 (Time delay interrupt): chương trình trong khối OB20 sẽ được thực hiệnsau một koảng thời gian trễ đặt trước kể từ khi chân EN của hàm SFC32 có tín hiệucạnh xuống gọi chương trình hệ thống SFC32
3.4.4.1 Tạo OB20.
Hình 3.33
Hình 3.34
Trang 34Hình 3.35
3.4.4.3 Lập trình OB20.
Hình 3.36
Hình 3.37
Trang 35OB85(Not load fault): được gọi khi chương trình có sử dụng chế độ ngắt nhưng
chương trình ngắt lại không có trong OB tương ứng
OB87(Communication Fault): được gọi khi CPU thấy có lỗi truyền thông
OB121(Synchronous error): được thực hiện khi CPU thấy lỗi logic trong
chương trình như sai kiểu dữ liệu h oặc lỗi truy cập các khối DB, FC, FB không có
trong CPU
OB122(Synchronous error): được thực hiện khi CPU phát hiện có, lỗi truy nhậpModule trong chương trình, ví dụ chương trình có lệnh truy nhập Module vào/ranhưng lại không tìm thấy Module này
3.5.1 Lỗi không đồng bộ.
3.5.2 Lỗi đồng bộ.
3.6 Các chức năng hệ thống SFC điều khiển các OB ngắt
4.6.1 Che và bỏ mặt nạ che các tín hiệu ngắt, tín hiệu báo lỗi không đồng
bộ
4.6.2 Che và bỏ mặt nạ che các tín hiệu ngắt, tín hiệu báo lỗi đồng bộ
3.7 Các thông tin trong local Block của OB