Saturday, February 22, 2014

Lập trình khối FB trong Step7 Manager


Phần này ta sẽ viết chương trình cho một khối FB và gọi nó trong OB1. Hy vọng đọc xong phần này, các bạn sẽ hiểu được cấu trúc biến và cách hoạt động của một khối FB.
Bây giờ ta sẽ viết một khối FB có chức năng như sau: Đọc giá trị WORD tại đầu vào tương tự PIW, chuyển đổi nó thành giá trị quá trình thực.


Ta cần vài tham số sau:
  • ipwPer: Giá trị WORD đầu vào tương tự.
  • iprMaxPV: Giá trị lớn nhất của đại lượng cần đo.
  • oprPV: Giá trị của đại lượng cần đo được tính toán.
Ở đây ta sẽ dùng công thức chuyển đổi để tính giá trị oprPV như sau:

                       oprPV = iprMaxPV * ipwPer / 27648

Ta cần thêm ba tham số để cảnh báo đầu ra oprPV:
  • opbyAlarm: BYTE xác định cảnh báo, BIT 0 cảnh báo thấp, BIT 1 cảnh báo cao
  • svrLLM: Giá trị cảnh báo thấp, khi oprPV nhỏ hơn giá trị này, BIT 0 được gán bằng TRUE, ngược lại được gán bằng FALSE.
  • svrHLM: Giá trị cảnh báo cao, khi oprPV lớn hơn giá trị này, BIT 1 được gán bằng TRUE, ngược lại được gán bằng FALSE.
Sau đây là các bước tiến hành trong Step7 Manager

     1.   Mở Step7 Manager, mở project “example” mà ta đã làm việc trong các phần trước.

     2.   Mở rộng thư mục “example → PLC → CPU314 → S7 Program → Blocks”. Right click trên biểu tượng “Blocks” rồi chọn “Insert New Object → Function Block”. Hộp thoại “Properties – Function Block” mở ra.

     3.   Nhập tên trong ô “Name” là FB1 rồi click OK. Khối FB1 được tạo ra trong cửa sổ “Objects”.

     4.   Double click trên biểu tượng “FB1” để mở nó trong “LAD/STL/FBD”.

     5.   Ta tạo các biến như bảng sau

Tên biến
Kiểu biến
Kiểu dữ liệu
Chú thích
ipwPer
IN
WORD
Giá trị đầu vào tương tự
iprMaxPV
IN
REAL
Maximum của giá trị đo
oprPV
OUT
REAL
Giá trị đo được tính toán
opbyAlarm
OUT
BYTE
BYTE xác định trang thái của giá trị đo
svrLLM
STAT
REAL
Giá trị cảnh báo thấp
svrHLM
STAT
REAL
Giá trị cảnh báo cao

Sau đây tôi hướng dẫn cách tạo biến trong FB cho kiểu IN, các kiểu khác hoàn toàn tương tự. Bạn double click trên FB1 để mở nó trong trình soạn thảo “LAD/STL/FBD”. Bạn thấy giao diện như hình.


Bạn tìm cửa sổ con “Interface”, bạn thấy trong đó có năm thư mục con tương ứng với năm kiểu biến IN, OUT, IN_OUT, STAT, TEMP. Cửa sổ con bên cạnh nó được dùng để soạn thảo biến. Bạn click chọn một thư mục rồi nhập tên biến cho thư mục đó trong cửa sổ bên cạnh.

Để thêm biến "ipwPer", bạn click chọn thư mục “IN”, bạn nhập tên “ipwPer” trong trường “Name”, nhập “WORD” trong trường “Data Type”, nhập giá trị khởi tạo nếu muốn, nếu không mặc định nó là bằng 0. Bạn tiếp tục như vậy cho các biến khác, cuối cùng ta được các biến IN như hình dưới.

Sau khi tạo xong các biến, click nút Save để lưu khối FB, một hộp thoại “Save” hiện ra như hình dưới hỏi là giao diện biến đã thay đổi, bạn có muốn lưu hay không, bạn click nút “Yes” để lưu khối FB.

Đến đây ta đã tạo xong giao diện biến cho khối FB1.



     6.   Bây giờ ta lập trình như dưới đây

NETWORK
TITLE =Tinh toan oprPV

L #iprMaxPV;
L #ipwPer;
ITD ;
DTR ;
*R ;
L   2.764800e+004;
/R ;
T #oprPV;

NETWORK
TITLE =Alarm - Low

L #oprPV;
L #svrLLM;
<R ;
= L 0.0;

NETWORK
TITLE =Alarm - High

L #oprPV;
L #svrHLM;
>R ;
= L 0.1;

NETWORK
TITLE =Alarm - Output

L LB 0;
T #opbyAlarm;


     7.   Gọi FB1 trong OB1. Mở OB1 trong LAD/STL/FBD”, trong OB1 viết chương trình như sau.

                           CALL FB1, DB1

Sau khi viết lệnh và bấm “ENTER”, phần mềm sẽ hiển thị hộp thoại hỏi có tạo instance DB cho FB1 hay không, bạn chọn “Yes”, kết quả là phần mềm tạo một khối DB1 trong cửa sổ “Objects” trong Step7 Manager. Bạn vào link sau để tìm hiểu về Data Block.
http://step7control.blogspot.com/2014/02/data-block-trong-s7-300.html

     8.   Mở DB1 trong …. Bạn sẽ thấy một danh sách biến tương ứng với các biến mà tạo đã khai báo trong FB1 được tạo ra tự động trong DB1, ta không thể chỉnh sửa khối DB1 này.

Đến đây ta đã hoàn thành việc tạo FB1 và gọi nó trong PLC, bạn có thể mở PLCSIM rồi download các khối FB1, DB1, OB1 xuống để mô phỏng.


Chú ý
Các khối lập trình FB, FC và các khối DB là không có sẵn trong PLC. Khi bạn gọi một khối nào đó trong vòng quét của PLC, bắt buộc khối đó phải tồn tại trong PLC tức là bạn đã download nó xuống PLC, nếu không PLC sẽ báo lỗi và chuyển sang chế độ “STOP”.

1 comment: