You are on page 1of 28

8/4/2023

CHƯƠNG 3: Kỹ thuật lập trình PLC

99 4 August 2023

3.1. Giới thiệu chung

100 4 August 2023

1
8/4/2023

Lập trình có cấu trúc: Chương trình được chia


thành những phần nhỏ và mỗi phần thực thi những
nhiệm vụ chuyên biệt riêng của nó, từng phần này
nằm trong những khối chương trình khác nhau.
Loại hình thức cấu trúc này phù hợp với những bài
toán điều khiển nhiều nhiệm vụ và phức tạp. Có 4
loại khối cơ bản sau:

Trang 101 4 August 2023

OB (Organization Block): là khối tổ chức và quản


lý chương trình điều khiển. Có nhiều 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ụ: OB1, OB35, OB40, …
FC (Function): là chương trình với những chức
năng riêng giống như chương trình con và hàm
chức năng. Một chương trình ứng dụng có thể có
nhiều FC và các FC này được phân biệt với nhau
bằng một số nguyên sau nhóm ký tự FC. Ví dụ:
FC1, FC2, FC3, …

Trang 102 4 August 2023

2
8/4/2023

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 dữ liệu này phải đượ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 và các khối FB này được phân biệt với
nhau bằng một số nguyên sau nhóm ký tự FB. Ví
dụ: FB1, FB2, FB3, …

Trang 103 4 August 2023

DB (Data Block): 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 dùng tự đặt. 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 một số nguyên sau nhóm
ký tự DB. Ví dụ: DB1, DB2, DB3, … Có hai loại của
khối dữ liệu DB :
+ Global DB nơi mà tất cả các khối OB, FB và FC có
thể đọc được dữ liệu lưu trữ, hoặc có thể tự mình ghi
dữ liệu vào DB.
+ Instance DB được gán cho một khối FB nhất định.

Trang 104 4 August 2023

3
8/4/2023

Chương trình trong các khối được liên kết với nhau
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ì PLC S7 - 1200/1500 cho phép
gọi chương trình con lồng nhau, tức là chương
trình con này gọi một chương trình con khác. Số
các lệnh gọi lồng nhau phụ thuộc vào từng loại
CPU; cụ thể với PLC S7-1200 có thể gọi 16 khối
từ OB khởi động và thêm 6 khối từ các khối OB
ngắt, với PLC S7-1500 có thể gọi 24 khối chương
trình.

Trang 105 4 August 2023

Khi một chương trình khối FB được gọi, một Data


Block (DB) được gán với instance DB. Dữ liệu
trong Instance DB sau đó truy cập vào các biến của
khối FB. Các khu vực bộ nhớ khác nhau đã được
gán cho một FB nếu nó được gọi ra nhiều lần.
Các khối tổ chức OB có thể gọi các chương trình
FB, FC. Các khối OB sẽ không gọi được nhau,
cũng như các gọi FB/FC cũng không thể gọi OB

Trang 106 4 August 2023

4
8/4/2023

Trang 107 4 August 2023

Chu trình thực hiện chương trình

Trang 108 4 August 2023

5
8/4/2023

LẬP TRÌNH CÓ CẤU TRÚC

Ví dụ: điều khiển băng tải:


* Chế độ bằng tay:
Bấm start băng tải làm việc, bấm stop băng
tải dừng.
* Chế độ tự động:
Bấm start băng tải làm việc, cảm biến S1 có
tín hiệu sau 5s băng tải dừng.

www.themegallery.com Company Logo

www.themegallery.com Company Logo

6
8/4/2023

www.themegallery.com Company Logo

3.2. Lập trình tuyến tính

112 4 August 2023

7
8/4/2023

Toàn bộ chương trình nằm trong một khối của bộ


nhớ. Loại hình thức 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 đó
thường xuyên, từ lệnh đầu tiên đến lệnh cuối cùng
và quay lại

Trang 113 4 August 2023

3.2. Lập trình có cấu trúc

114 4 August 2023

8
8/4/2023

Chương trình người dùng thường được chia nhỏ


thành từng khối logic theo kiểu chương trình cấu
trúc, giúp cho việc lập trình và sửa lỗi thuận tiện.
Có nhiều loại khối logic:
 Khối tổ chức OB (Organization Blocks)
 Khối hàm FB (Function Block)
 Hàm FC (Functions)
 Khối dữ liệu Instance (Instance Data Blocks) liên
kết với FB.
 Khối dữ liệu toàn cục (Global Data Blocks)

Trang 115 4 August 2023

3.2.1. Các khối tổ chức OB

Các khối tổ chức OB sẽ không thể gọi được nhau,


cũng như trong các khối FB/FC cũng không thể gọi
OB. Chỉ khi có một sự kiện ngắt thực hiện mới có
thể gọi một khối OB.
CPU tổ chức các khối OB thành những mức độ ưu
tiên khác nhau và những khối OB có mức độ ưu
tiên cao hơn sẽ được thực hiện trước những khối
OB có mức độ ưu tiên thấp hơn. Mức độ thấp nhất
là khối OB1 với mức ưu tiên là 1, và mức cao nhất
là 24 (những version 4.0 trở lên là 26).

Trang 116 4 August 2023

9
8/4/2023

Mức độ ưu
Khối tổ chức OB Số lượng tiên
Program cycle Multiple 1
Startup Multiple 1
Time – delay interrupts 4 (1 OB tương ứng với 1 sự kiện) 3
Cyclic interrupts 4 (1 OB tương ứng với 1 sự kiện) 8
50 (1 OB tương ứng với 1 sự kiện,
tuy nhiên người dùng có thể gọi
Hardware interrupts cùng 1 OB cho nhiều sự kiện khác 18
nhau).
Time error interrupts 1 22 – 26
Diagnostic error
interrupts 1 5
Pull or plug of modules 1 6
Rack or station failure 1 6
Time of day Multiple 2
Status 1 4
Update 1 4
Profile 1 4
Trang 117 4 August 2023

Khối tổ chức khởi động – Startup OB

Khối khởi động được gọi khi PLC chuyển từ chế độ


STOP sang RUN, chỉ được gọi một lần duy nhất khi
PLC khởi động, thường được sử dụng để thiết lập
những tham số và trạng thái ban đầu.
Người dùng có thể gọi nhiều khối tổ chức Startup
OB trong chương trình điều khiển.

Trang 118 4 August 2023

10
8/4/2023

Khối tổ chức chính OB1 - Program Cycle

Khối tổ chức chính OB1 hay còn gọi là Main OB1


được thực gọi sau khi kết thúc quá trình khởi động
và sau khi kết thức chính nó, mọi OB đều có thể
ngắt OB1. Khi khối OB1 được thực hiện thì CPU sẽ
gửi đi dữ liệu toàn cục. Trước khi gọi lại Main OB1
thì CPU chuyển bộ nhớ đệm ra module output, cập
nhật bộ đệm đầu vào và nhận dữ liệu toàn cục.

Trang 119 4 August 2023

Trang 120 4 August 2023

11
8/4/2023

Chương trình trong OB1 có thể gọi các hàm


FC/FB, người dùng có thể gọi nhiều khối tổ chức
OB trong chương trình điều khiển.
Thời gian thực hiện khối OB1 gọi là thời gian quét
(scan time), CPU ấn định thời gian quét tối đa,
thông thường 150ms và tùy thuộc vào CPU, tuy
nhiên người dùng có thể thay đổi được trong cấu
hình Device trên phần mềm. Nếu chu kỳ quét của
CPU vượt thời gian quét tối đa thì CPU sẽ gọi
OB80 (Time error interrupt) hay chuyển sang
STOP.

Trang 121 4 August 2023

Khối tổ chức ngắt trì hoãn – Time delay Interrupt

Có 4 khối tổ chức OB cho phép thực hiện ngắt thời trễ


bắt đầu từ OB20 đến OB23.
 Chức năng của khối tổ chức Time delay Interrupt OB
 Hệ thống sẽ gọi khối OB tương ứng sau một thời gian
trễ, tên của OB sẽ được định danh trong tập lệnh
SRT_DINT. Để thực hiện việc gọi một OB ngắt trì hoãn
(ngắt trễ), người dùng cần phải thực hiện những nhiệm
vụ sau:
 Cần phải gọi tập lệnh SRT_DINT
 Sử dụng lệnh CAN_DINT để hủy ngắt trì hoãn thực
hiện khi chưa gọi khối OB ngắt trì hoãn
 Gọi khối OB ngắt trì hoãn trong Program blocks và
download xuống CPU
Trang 122 4 August 2023

12
8/4/2023

Một số đặc điểm của khối OB ngắt trì hoãn


 Ngắt trì hoãn có độ chính xác tới 1ms
 Khối OB ngắt trì hoãn chỉ được thực hiện khi CPU
trong trạng thái RUN. Chế độ Warm Restart sẽ xóa
tất cả sự kiện của ngắt trì hoãn.
 Người dùng có thể hủy ngắt trì hoãn với DIS_AIRT
và cho phép ngắt trì hoãn thực hiện lại với
EN_AIRT.
Chú ý: Nếu người dùng thực hiện lệnh DIS_AIRT
sau khi thực hiện lệnh SRT_DINT, ngắt trì hoãn chỉ
có thể thực hiện lại sau khi thực hiện lệnh
EN_AIRT.
Trang 123 4 August 2023

Khối tổ chức ngắt chu kỳ - Cyclic interrupts

Có 4 khối tổ chức ngắt chu kỳ OB33 được gọi theo


chu kỳ tuần hoàn. Thời gian thực hiện mỗi khối OB
ngắt chu kỳ phải nhỏ hơn chu kỳ ngắt. Thời gian
thực hiện mỗi khối OB ngắt chu kỳ phải nhỏ hơn
chu kỳ ngắt.
Thời gian thực hiện của OB ngắt chu kỳ có thể thay
đổi từ 1ms đến 60000ms
Khối OB ngắt chu kỳ được sử dụng với chức năng
lấy mẫu dữ liệu, thông tin…

Trang 124 4 August 2023

13
8/4/2023

Khối tổ chức ngắt phần cứng – Hardware


Interrupts
Có 50 khối tổ chức ngắt phần cứng bắt đầu từ
OB40. Khi có lỗi xảy ra ở phần cứng thì khối tổ
chức ngắt phần cứng sẽ được gọi, và tương ứng
với một sự kiện ngắt sẽ cho phép gọi một khối OB
do người dùng quy định. Ngắt phần cứng chỉ được
gọi trong chế độ RUN của CPU.

Trang 125 4 August 2023

Đặc điểm của khối tổ chức ngắt phần cứng


 Khi có một sự kiện ngắt phần cứng xảy ra, do
người dùng định nghĩa cho các ngõ vào (rising,
falling), do bộ đếm tốc độ cao, hay được gán trong
phần cứng để thực hiện ngắt thì một khối tổ chức
ngắt phần cứng OB được gọi.
 Nếu không có khối OB ngắt nào thực hiện thì OB
ngắt phần cứng sẽ thực hiện. Nếu có một khối ngắt
khác thực hiện thì khối tổ chức OB ngắt phần cứng
sẽ phụ thuộc vào mức độ ưu tiên mà thực hiện
trước hay sau. Khối OB ngắt phần cứng được xác
nhận sau khi hoàn thành chương trình trong nó.
Trang 126 4 August 2023

14
8/4/2023

 Đặc điểm của khối tổ chức ngắt phần cứng


 Nếu một sự kiện khác gây ra một ngắn phần cứng
trong cùng một module giữa thời gian xác định ngắt
và xác nhận ngắt thì áp dụng theo phương pháp sau:
 Nếu sự kiện ngắt xảy ra trên cùng một channel thì sự
kiện gọi tước đó sẽ được thực hiện và không thực
hiện thêm ngắt phần cứng lần nữa. Một ngắt phần
cứng khác chỉ được thực hiện nếu như ngắt phần
cứng hiện tại đã được xác nhận.
 Nếu sự kiện ngắt xảy ra trên một kênh khác, thì cả 2
ngắt phần cứng đều được thực hiên theo thứ tự ưu
tiên.
Trang 127 4 August 2023

Những sự kiện cho phép ngắt phần cứng thực hiện.


 Nhận tín hiệu xung sườn lên (rising): Tối đa là 16
sự kiện.
 Nhận tín hiệu xung sườn xuống (falling): Tối đa là
16 sự kiện.
 Sự kiện của bộ đếm tốc độ cao khi thay đổi chiều
đếm cung (Direction changed) tối đa là 6 sự kiện.
 Sự kiện của bộ đếm tốc độ cao khi thực hiện
External Reset tối đa là 6 sự kiện.

Trang 128 4 August 2023

15
8/4/2023

Khối tổ chức ngắt lỗi thời gian – Time error


interrupt OB
Khối tổ chức OB80 được gọi trong những trường
hợp sau:
Nếu số lệnh trong chương trình vượt quá giới hạn
chu kỳ quét (mặc định là 150ms) sẽ gây lỗi và khối
tổ chức OB80 sẽ được gọi.
Thời gian xử lý ngắt chu kỳ lớn hơn chu kỳ ngắt.
Khi thay đổ thời gian cài đặt/hoạt động của khối tổ
chức ngắt thời gian lỗi.

Trang 129 4 August 2023

Khối tổ chức ngắt chuẩn đoán – Diagnostic error


interrupt OB
Khối tổ chức ngắt chuẩn đoán OB thực hiện khi
CPU phát hiện ra lỗi chuẩn đoán, hoặc nếu module
có chức năng chuẩn đoán có khả năng nhận dạng
lỗi và người dùng kích hoạt ngắt chuẩn đoán lỗi
cho module. Khối OB ngắt chuẩn đoán lỗi thực hiện
ngắt chương trình Program cycle một cách bình
thường.
Người dùng có thể gọi là STP trong khối OB chuẩn
đoán để chuyển CPU sang trạng thái STOP như
mong muốn khi phát hiện ra sự kiện tương ứng.
Nếu người dùng gọi OB82 để thực hiện chuẩn
đoán lỗi nhưng không chương trình chuẩn đoán lỗi
thì CPU sẽ bỏ qua lỗi và tiếp tục trạng thái RUN.
Trang 130 4 August 2023

16
8/4/2023

Khối tổ chức báo lỗi thêm bớt module – Pull/plug


of module OB
Khối tổ chức báo lỗi thêm bớt module được thực
thi khi cấu hình các module I/O phân tán, module
mạng Profibus, Profinet, AS-I với sự kiện tháo/lắp
module vào CPU.

Trang 131 4 August 2023

Lập trình cấu trúc FB/FC

Instance
DB1

KHỐI
KHỐI CHƯƠNG
CHƯƠNG TRÌNH FC2
TRÌNH FB1
KHỐI CHƯƠNG
Global
TRÌNH CHÍNH DB2
OB1
KHỐI
CHƯƠNG
TRÌNH FC1

Trang 132 4 August 2023

17
8/4/2023

3.2.2. Lập trình khối FC

Giới thiệu về hàm chức năng FC


 Hàm chức năng FC là khối logic có các biến In,
Out, In/Out do chương trình gọi cung cấp cho hàm,
ngoài ra còn có các biến Temp sử dụng nội bộ (cục
bộ), tuy nhiên không bắt buộc phải dùng hết tất cả
các biến này.
 Hàm FC không có bộ nhớ nội nên dữ liệu mất đi
khi ra khỏi khối, cùng như không có khối giữ liệu
Instance DB giống như khối hàm chức năng FB.

Trang 133 4 August 2023

3.2.2. Lập trình khối FC

Quy tắc để gọi hàm chức năng FC


 Hàm chức năng FC được sử dụng chủ yếu khi giá
trị của hàm được trả lại các khối thực hiện lệnh gọi.
Ví dụ để thực hiện các toán tử hoạt động đơn lẻ,
các hàm toán học…
 Để không vi phạm các nguyên tắc của lập trình cấu
trúc, người dùng không nên truy cập trực tiếp
những địa chỉ toàn cục (global address) trong hàm
chức năng FC như: I, Q, M…Mỗi thông tin truyền
nhận giữa tín hiệu xử lý với các khối dữ liệu khác
phải sử dụng thông qua tham số của hàm chức
năng FC.
Trang 134 4 August 2023

18
8/4/2023

3.2.2. Lập trình khối FC

 Không sử dụng dữ liệu instance DB của FB làm


tham số đầu vào và tuyệt đối không sử dụng các
giá trị trả về RET_VAL cùng chung vùng nhớ.

Trang 135 4 August 2023

Hướng dẫn lập trình hàm chức năng FC

Ví dụ: Khởi tạo hàm chức năng FC1 thực hiện tính
toán giá trị một hàm số có công thức toán học sau:
K=4X + 5XYZ

Trang 136 4 August 2023

19
8/4/2023

Thực hiện

 Bước 1: Khởi tạo hàm chức năng FC1 tên Math_1:


Program blocks Add new block Function, đặt tên
Math_1 và chọn OK

Trang 137 4 August 2023

 Bước 2: Tại giao diện lập trình của hàm chức năng
FC Math_1 vừa mới khởi tạo, khai báo các thông
số cần thiết, cũng như kiểu dữ liệu phù hợp cho dữ
liệu bài toán vừa đưa ra.

Trang 138 4 August 2023

20
8/4/2023

 Bước 3: Lập trình hàm chức năng FC1: K=4X +


5XYZ

Trang 139 4 August 2023

Bước 4: Gọi hàm chức năng FC Math_1 trong


OB1 và thử mô phỏng kết quả với X=1.0, Y=2.0,
Z=3.0

Trang 140 4 August 2023

21
8/4/2023

3.2.3. Lập trình khối hàm chức năng FB Function


block
Giới thiệu về khối hàm chức năng FB
 Khối hàm chức năng FB là khối logic với các biến
In, Out, In/Out, Static và Temp – các biến này được
tạo ra trong bảng giao tiếp khối đi kèm – block
interface. Các biến In, Out, In/Out là các tham số
có địa chỉ cụ thể do chương trình gọi cung cấp cho
hàm, biến Static là biến trong chương trình FB
được lưu lại khi ra khỏi khối FB, biến Temp mất giá
trị khi ra khỏi khối FB.

Trang 141 4 August 2023

3.2.3. Lập trình khối hàm chức năng FB Function


block
Giới thiệu về khối hàm chức năng FB
 Khai báo khối hàm FB bắt buộc phải có khối dữ liệu
DB – Data block – để chứa các biến In, Out, In/Out
và Static. Có thể có nhiều khối dữ liệu DB cho 1
khối hàm chức năng FB để thực hiện các nhiệm vụ
khác nhau với quy trình vận hành giống nhau,
những DB đó được gọi là Instance DB. Như vậy,
khi chương trình gọi FB cần phải kèm theo
Instance DB tương ứng.

Trang 142 4 August 2023

22
8/4/2023

Quy tắc để gọi khối hàm FB


 Khi điều khiển tự động cho các đối tượng như động
cơ, băng tải, thuật toán PID, Fuzzy, Noron, …
người dùng sẽ được sử dụng các khối hàm chức
năng FB để viết chương trình.
 Để không vi phạm các nguyên tắc của lập trình cấu
trúc, người dùng không nên truy cập trực tiếp
những địa chỉ toàn cục trong khối hàm FB như: I,
Q, M,…mỗi thông tin truyền nhận giữa tín hiệu xử
lý với các khối dữ liệu khác nhau phải sử dụng
thông qua tham số của khối hàm FB.

Trang 143 4 August 2023

Quy tắc để gọi khối hàm FB


 Chỉ khi gọi khối FB ở mức cao nhất – liên quan tới
các khối tổ chức OB, người dùng có thể gắn những
tín hiệu xử lý I, Q, M… trực tiếp đến tham số của
khối

Trang 144 4 August 2023

23
8/4/2023

Lập trình khối hàm chức năng FB


Ví dụ: Cho dây chuyền như hình

Trang 145 4 August 2023

Tạo khối FB1 với tên Mode_Selection, thực hiện


điều khiển On/Off dây chuyền khởi động và lựa
chọn chế độ hoạt động của dây chuyền. Khối FB1
có những tham số đầu vào/đầu ra như sau:
 #Start (in, BOOL): khởi động dây chuyền khi
#Start=1
 #Stop (in, BOOL): dây chuyền tắt khi tác động
#Stop, và ưu tiên #Stop.
 #Plant_on (out, BOOL): khi dây chuyền khởi động
thì Plant_on = 1.

Trang 146 4 August 2023

24
8/4/2023

Người dùng có thể chọn chế độ hoạt động khi dây


chuyền khởi động:
#Auto_Man (in, BOOL): #Auto_Man = 0 chế độ
manual
#Auto_Man = 1 chế độ auto.
#OM_activate (in, BOOL): chế độ lựa chọn khi có
một xung (Adopt mode) của #OM_activate.
Khi chế độ hoạt động được lựa chọn thì các đèn
báo chỉ thị được xuất ra ngõ ra của khối FB1.
#OM_Man (out, BOOL): chế độ manual được kích
hoạt.
#OM_Auto (out, BOOL): chế độ auto được kích
Trang 147 4 August 2023
hoạt.

Hướng dẫn thực hiện

Bước 1: Khai báo các biến I/O theo phần ứng


tương ứng.

Trang 148 4 August 2023

25
8/4/2023

Bước 2: khởi tạo khối hàm FB1 với tên


Mode_Selection

Trang 149 4 August 2023

Bước 3: Khai báo các thông tin cần thiết của khối
FB, cũng như kiểu dữ liệu phù hợp cho dữ liệu bài
toán vừa đưa ra.

Trang 150 4 August 2023

26
8/4/2023

Bước 4: Lập trình khối FB theo yêu cầu bài toán


đưa ra:

Trang 151 4 August 2023

Trang 152 4 August 2023

27
8/4/2023

Bước 5: Gọi khối hàm FB Mode_Selection trong


OB1 và khai báo đầy đủ tham số Input/output cho
khối hàm.

Trang 153 4 August 2023

28

You might also like