2.2 Giới thiệu về PLC S7-300
2.2.5 Cấu trúc chơng trình
Chơng trình cho S7 – 300 đợc lu trong bộ nhớ của PLC ở vùng dành riêng cho chơng trình và có thể đợc lập với hai dạng cấu trúc khác nhau:
2.2.5.1 LËp tr×nh tuyÕn tÝnh
Lệnh cuối cùng Lệnh 2 Lệnh 1
OB1 Vòng quét
.. ..
H×nh 3-23: LËp tr×nh tuyÕn tÝnh
Toàn bộ chơng trình điều khiển nằm trong một khối trong bộ nhớ. Loại hình cấu trúc tuyến tính này phù hợp với những bài toán tự động nhỏ không phức tạp . Khối
đợc chọn phải là khối OB1, là khối mà PLC luôn quét và thực hiện các lệnh trong nó thờng xuyên, từ lệnh đầu tiên đến lệnh cuối cùng và quay lại lệnh đầu tiên.
2.2.5.2 LËp tr×nh cã cÊu tróc
Chơng trình đợc chia thành những phần nhỏ với từng nhiệm vụ riêng và phần này nằm trong những khối chơng trình khác nhau. Loại cấu trúc này phù hợp với bài toán điều khiển nhiều nhiệm vụ và phức tạp PLC S7 – 300 có bốn loại khối cơ
bản :
+ Loại khối OB ( organization block ): Khối tổ chức và quản lý chơng trình điều khiển. Có nhiều loại khối OB với những chức năng khác nhau, chúng đợc phân biệt với nhau bằng một số nguyên đi sau nhóm kí tự OB ví dụ nh OB1, OB35, OB8.
+ Loại khối FC ( Program block ): 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 ( chơng trình con có biến hình thức ).
Một chơng trình ứng dụng có thể có nhiều khối FC và các khối FC này đợc phân biệt với nhau bằng các số nguyên sau nhóm ký tự FC
+ Loại khối FB ( Function block ): Là loại khối FC đặc biệt có khả năng trao đổi một lợng dữ liệu lớn với các khối chơng trình khác. Các khối dữ liệu này đợc tổ chức thành khối dữ liệu riêng có tên gọi là Data block. Một chơng trình ứng dụng có thể có nhiều khối FB các khối FB này đợc phân biệt với nhau bằng các số nguyên sau nhóm ký tự FB.
+ Loại khối DB ( Data block ): Khối chứa các dữ liệu cần thiết để thực hiện ch-
ơng trình. Các tham số của khối do ngời tự đặt. Một chơng trình ứng dụng có thể có nhiều khối DB các khối DB này đợc phân biệt với nhau bằng các số nguyên sau nhãm ký tù DB.
… …
... …
H×nh 3-24: LËp tr×nh cã cÊu tróc
Chơng trình trong các khối đợc liên kết bằng các lệnh gọi khối, chuyển khối.
Xem những phần chơng trình trong các khối nh là các chơng trình con thì S7 – 300 cho phép gọi các chơng trình con lồng nhau, tức là từ chơng trình con này gọi một chơng trình con khác và từ chơng trình con đợc gọi lại gọi tới chơng trình con
Hệ
điêù hành
OB1
FC1
FB5
FB2
FC3
FC7
FB9
thứ ba Số các lệnh gọi lồng nhau phụ thuộc vào từng chủng loại modul CPU mà… ta sử dụng. Ví dụ với modul CPU 314 thì số lệnh gọi lồng nhau nhiều nhất có thể cho phép là 8 . Nếu số lần gọi lồng nhau mà vợt quá con số giới hạn cho phép PLC sẽ tự chuyển sang chế độ STOP vá đặt cờ báo lỗi.
2.2.5.3 Những khối OB đặc biệt
Trong khi khối OB1 đợc thc hiện đều đặn ở từng vòng quét trong giai đoạn thực hiện chơng trình ( giai đoạn 2 ) thì các khối OB khác chỉ thực hiện khi xuất hiện tín hiệu báo ngắt tơng ứng, nói cách khác chơng trình viết cho các khối OB này chính là chơng trình xử lý tín hiệu ngắt ( event ). Chúng bao gồm:
+ OB10 ( Time of day interrupt ): Chơng trình trong khối OB10 sẽ đợc thực hiệ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 OB10 có thể đợc gọi một lần, nhiều lần các đều nhau từng phút từng giờ từng ngày .. Việc quy định khoảng thời gian hay số lần gọi OB10 đợc thực hiện nhờ chơng trình hệ thống SFC28 hoặc trong báng tham số của modul CPU nhờ phần mÒm Step7.
+ OB20 ( Time delay interrupt ): Chơng trình trong khối OB20 sẽ đợc thực hiện sau một thời gian trễ đặt trớc kể từ khi gọi chơng trình hệ thống SFC32 để đặt thời gian trÔ .
+ OB35 ( Cyclic interrupt ): Chơng trình trong OB35 sẽ đợc thực hiện cách đều nhau trong một khoảng thời gian cố định, mặc định khoảng thời này sẽ là 100ms xong ta có thể thay đổi nó trong bảng tham số của modul CPU nhờ phần mềm Step7.
+ OB40 ( Hard ware interrupt ): Chơng trình 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 modul CPU thông qua các cổng vào ra số onboard đặc biệt hoặc thông qua các modul SM, CP, FM.
+ OB80 ( Cyle Time Fault ): Chơng trình OB80 sẽ đợc thực hiện khi thời gian vòng quét ( Scan time ) vợt qua khoảng thời gian cực đại đã quy định hoặc khi có một tín hiệu ngắt gọi một khối OB nào đó mà khối OB này cha kết thúc ở lần gọi trớc. Mặc định Scan time cực đại là 150ms nhng có thể thay đổi nó thông qua bảng tham số của modul CPU nhờ phần mềm Step7.
+ OB81 ( Power supply interrupt ): Modul CPU sẽ gọi chơng trình khong khối OB81 khi phát hiện they có lỗi về nguồn nuôi .
+ OB82 ( Diagnostic interrupt ): Chơng trình trong OB82 đợc gọi khi CPU
phát hiện có sự cố từ các modul mở rộng vào ra. Các modul mở rộng này phải là những modul có khả năng tự kiểm tra mình.
+ OB85 ( Not load Fault ): CPU sẽ gọi khối OB85 khi phát hiện they chơng trình ứng dụng có sử dụng chế độ ngắt nhng chơng trình xử lý tín hiệu ngắt lại không có trong khối OB tơng ứng.
+ OB87 ( Comminication Fault ): Khối OB87 sẽ đợc gọi khi CPU phát hiện thấy lỗi trong truyền thông ví dụ không có tín hiệu trả lời từ đối tác.
+ OB100 ( Start up information ): Khối OB100 sẽ đợc thực hiện một lần khi CPU chuyển trạng thái từ STOP sang RUN.
+ OB101 ( Cold Start up information - Chỉ có S7 – 400 ): Khối OB101 sẽ đợc thực hiện một lần khi công tắc nguồn của CPU chuyển từ trạng thái OFF sang ON.
+ OB121 ( Synchronous error ): Khối OB121 sẽ đợc thực hiện khi CPU phát hiện thấy lỗi logic trong chơng trình nh đổi sai kiểu dữ liệu hoặc lỗi truy cập khối DB, FC, FB khong có trong bộ nhớ của CPU.
+ OB122 (Synchronous error ): Khối OB122 sẽ đợc thực hiện khi CPU phát hiện thấy lỗi truy cập modul trong chơng trình.