Lập
trình
cho
S7
và
các
PLC
khác
của
hãng
Siemens
dựa
trên
3
phương
pháp
cơ
bản:
-
Phương
pháp
hình
thang
(Ladder
logic
-
LAD).
-
Phương
pháp
khối
hàm
(Function
Block
Diagram
-
FBD).
-
Phương
pháp
liệt
kê
câu
lệnh
(Statement
List
-
STL).
Cơ
bản
về
lập
trình
PLC
S7200
1.
CÁC
LOẠI
NGÔN
NGỮ
LẬP
TRÌNH
PLC
Lập
trình
cho
S7
và
các
PLC
khác
của
hãng
Siemens
dựa
trên
3
phương
pháp
cơ
bản:
-
Phương
pháp
hình
thang
(Ladder
logic
-
LAD).
-
Phương
pháp
khối
hàm
(Function
Block
Diagram
-
FBD).
-
Phương
pháp
liệt
kê
câu
lệnh
(Statement
List
-
STL).
Trong
bài
viết
này
chúng
tôi
sẽ
giới
thiệu
các
thành
phần
cơ
bản
của
ba
phương
pháp
và
cách
sử
dụng
chúng
trong
lập
trình.
Nếu
chương
trình
được
viết
theo
ngôn
ngữ
LAD
(hoặc
FBD)
thì
có
thể
chưyển
sang
ngôn
ngữ
STL
hay
FBD
(hoặc
LAD)
tương
ứng.
Nhưng
không
phải
bất
cứ
chương
trình
viết
theo
STL
nào
cũng
chuyển
sang
ngôn
ngữ
LAD
hay
FBD
được.
Bộ
tập
lênh
STL
được
trình
bày
trong
giáo
án
này
đều
có
một
chức
năng
như
các
tiếp
điểm,
cuộn
dây,
các
hộp
(trong
LAD)
hay
IC
số
trong
FBD.
Những
lệnh
này
phải
phối
hợp
được
trạng
thái
các
tiếp
điểm
để
quyết
định
về
giá
trị
trạng
thái
đầu
ra
hoặc
giá
trị
logic
cho
phép
hoặc
không
cho
phép
thực
chức
năng
của
một
(hay
nhiều)
cuộn
dây
hoặc
hộp.
Trong
lập
trình
lôgic
thường
hay
sử
dụng
hai
ngôn
ngữ
LAD
và
STL
vì
nó
gần
gũi
hơn
đối
với
chuyên
ngành
điện.
Sau
đây
là
những
định
nghĩa
cần
phải
nắm
khi
bắt
tay
vào
thiết
kế
một
chương
trình:
Ngôn
ngữ
bảng
lệnh
là
gì
(STL)
Ngôn
ngữ
liệt
kê
lệnh,
ký
hiệu
là
STL
(Statement
List).
Đây
là
ngôn
ngữ
lập
trình
thông
thường
của
máy
tính.
Một
chương
trình
được
ghép
bởi
nhiều
lệnh
theo
một
thuật
toán
nhất
định,
mỗi
lệnh
chiếm
một
hàng
và
đều
có
cấu
trúc
chung
là:
"tên
lệnh"
+
"toán
hạng".
Một
số
lệnh
đặc
biệt
thì
có
thể
chỉ
có
tên
lệnh
mà
không
cần
toán
hạng.

Statement
List
-
STL
Ngôn
ngữ
sơ
đồ
thang
là
gì
(LAD)
Ngôn
ngữ
hình
thang,
ký
hiệu
là
LAD
(Ladder
Logic)
Với
loại
ngôn
ngữ
này
rất
thích
hợp
với
người
quen
thiết
kế
mạch
điều
khiển
logic.
Chương
trình
được
viết
dưới
dạng
liên
kết
giữa
các
công
tắc:
Ví
dụ:

Ladder
logic
-
LAD
2.
CHU
TRÌNH
LÀM
VIỆC,
LẬP
TRÌNH
VÀ
CẤU
TRÚC
CHƯƠNG
TRÌNH
Các
phương
pháp
lập
trình
2.1
Lập
trình
tuyến
tính
Phần
bộ
nhớ
của
CPU
dành
cho
chương
trình
ứng
dụng
có
tên
gọi
là
logic
Block.
Như
vậy
logic
block
là
tên
chung
để
gọi
tất
cả
các
khối
bao
gồm
những
khối
chương
trình
tổ
chức
OB,
khối
chương
trình
FC,
khối
hàm
FB.
Trong
các
loại
khối
chương
trình
đó
thì
chỉ
có
khối
duy
nhất
khối
OB1
được
thực
hiện
trực
tiếp
theo
vòng
quét.
Nó
được
hệ
điều
hành
gọi
theo
chu
kỳ
lặp
với
khảng
thời
gian
không
cách
đều
nhau
mà
phụ
thuộc
vào
độ
dài
của
chương
trình.
Các
loại
khối
chương
trình
khác
không
tham
gia
vào
vòng
quét.
Với
tổ
chức
chương
trình
như
vậy
thì
phần
chương
trình
trong
khối
OB1
có
đầy
đủ
điều
kiện
của
một
chương
trình
điều
khiển
thời
gian
thực
và
toàn
bộ
chương
trình
ứng
dụng
có
thể
chỉ
cần
viết
trong
OB1
là
đủ
như
hình
vẽ
sau.
Cách
tổ
chức
chương
trình
với
chỉ
một
khối
OB1
duy
nhất
như
vậy
được
gọi
là
lập
trình
tuyến
tính.
OB1
thực
hiện
theo
vòng
quétOB10
Ngắt
ở
thời
điểm
định
trướcOB82
Modulechuẩn
đoán
lỗi
Khối
OB1
được
hệ
thống
gọi
xoay
vòng
liên
tục
theo
vòng
quét.
Các
khối
OB
khác
không
tham
gia
vào
vòng
quét
được
gọi
bằng
những
tín
hiệu
báo
ngắt.
S7-300
có
nhiều
tín
hiệu
báo
ngắt
như
tín
hiệu
báo
ngắt
khi
có
sự
cố
nguồn
nuôi,
có
sự
cố
chập
mạch
ở
các
modul
mở
rộng,
tín
hiệu
báo
ngắt
theo
chu
kỳ
thời
gian,
và
mỗi
loại
tín
hiệu
báo
ngắt
như
vậy
cũng
chỉ
có
khả
năng
gọi
một
khối
OB
nhất
định.
Ví
dụ
tín
hiệu
báo
ngắt
sự
cố
nguồn
nuôi
chỉ
gọi
khối
OB81,
tín
hiệu
báo
ngắt
truyền
thông
chỉ
gọi
khối
OB87.
Mỗi
khi
xuất
hiện
tín
hiệu
báo
ngắt
hệ
thống
sẽ
dừng
công
việc
đang
thực
hiện
lại,
chẳng
hạn
như
tạm
dừng
việc
thực
hiện
chương
trình
trong
OB1,
và
chuyển
sang
thực
hiện
chương
trình
xử
lý
ngắt
tong
các
khối
OB
tương
ứng.
Ví
dụ
khi
đang
thực
hiện
chương
trình
trong
khối
OB1
mà
xuất
hiện
ngắt
báo
sự
cố
truyền
thông,
hệ
thống
sẽ
tạm
dừng
việc
thực
hiện
chương
trình
trong
OB1
lại
để
gọi
chương
trình
trong
khối
truyền
thông
OB87.
Chỉ
sau
khi
đã
thực
hiện
xong
chương
trình
trong
khối
OB87
thì
hệ
thống
mới
quay
trở
về
thực
hiện
tiếp
tục
phần
chương
trình
còn
lại
trong
OB1.
2.2
Lập
trình
cấu
trúc
Với
kiểu
lập
trình
có
cấu
trúc
thì
khác
vì
toàn
bộ
chương
trình
điều
khiển
được
chia
nhỏ
thành
các
khối
FC
và
FB
mang
một
nhiệm
vụ
cụ
thể
riêng
và
được
quản
lý
chung
bởi
những
khối
OB.
Kiểu
lập
trình
này
rất
phù
hợp
cho
những
bài
toán
phức
tạp,
nhiều
nhiệm
vụ
và
lại
rất
thuận
lợi
cho
việc
sửa
chữa
sau
này.
OB1
FB
FB
FB
FC
SFB
SFC
DB
DB
DB
DB
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ụ:
OB10,
OB85,
...
Khối
FC
(Program
Block):
Khối
chương
trình
với
những
chức
năng
riêng
giống
như
1
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
một
số
nguyên
sau
nhóm
kí
tự
FC.
Ví
dụ:
FC1,FC2….
Khối
FB
(Function
Block):
Là
loại
khối
FC
đặc
biệt
có
khả
năng
trao
đổi
1
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
phhả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.
Chẳng
hạn
như
FB1,FB2…
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
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,...
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ì
S7_300
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
và
từ
một
chương
trình
con
được
gọi
lại
gọi
tới
một
chương
trình
con
thứ
3,…
Số
các
lệnh
gọi
lồng
nhau
phụ
thuộc
vào
từng
chủng
loại
module
CPU
mà
ta
đang
sử
dụng.
Ví
dụ
đối
với
module
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
khối
lồng
nhau
mà
vượt
quá
con
số
giới
hạn
cho
phép
,PLC
sẽ
tự
chuyển
qua
chế
độ
Stop
và
đặt
cờ
báo
lỗi.
2.3.
Các
khối
OB
đặc
biệt
Trong
khi
khối
OB
được
thực
hiện
đều
đặn
ở
từng
vòng
quét
trong
giai
đoạn
thực
hiện
chương
trình
thì
các
khối
OB
khác
chỉ
được
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
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ể
gọi
một
lần
,nhiều
lần
cách
đề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
module
CPU
nhờ
phần
mềm
Step
7.
OB20
(
Time
Day
Interrupt):
Chương
trình
trong
khối
sẽ
được
thực
hiện
sau
một
khoảng
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
1
khoảng
thời
gian
cố
định.Mặc
định
khoảng
thời
gian
này
sẽ
là
100ms,xong
ta
có
thể
thay
đổi
nó
trong
bảng
tham
số
của
module
CPU
,nhờ
phần
mềm
Step7.
OB40
(Hardware
Interrupt)
:
Chương
trình
trong
OB
sẽ
được
thực
hiện
khi
xuất
hiện
1
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
OB80
(Cycle
Time
Fault):
Chương
trình
trong
khối
OB80
sẽ
được
thực
hiện
khi
thời
gian
vòng
quét(Scan
time)
vượt
quá
khoảng
thời
gian
cực
đại
đã
được
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
chưa
kết
thúc
ở
lần
gọi
trước.Mặc
định
thời
gian
Scan
time
cực
đại
là
150ms
,nhưng
có
thể
thay
đổi
nó
thông
qua
bảng
tham
số
của
module
CPU
nhờ
phần
mềm
Step
7.
OB81
(Power
Supply
fault):
CPU
sẽ
gọi
chương
trình
trong
khối
OB81
khi
phát
hiện
thấy
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
sự
cố
từ
các
Modul
vào
ra
OB85(
Not
Load
fault):Chương
trình
trong
OB82
được
gọi
khi
CPU
phát
hiện
thấy
chương
trình
ứng
dụng
có
sử
dụng
chế
độ
ngắt
nhưng
chương
trình
sử
lí
tín
hiệu
ngắt
lại
không
có
trong
khối
OB
tương
ứng.
OB87
(
Communication
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ụ
như
không
có
tín
hiệu
trả
lời
từ
các
đối
tác.
OB100
(
Start
Up
Information):Khối
OB100
sẽ
được
thực
hiện
1
lần
khi
CPU
chuyển
trạng
thái
Stop
sang
Run.
OB121
(
Synchronous
error):Khối
OB121
sẽ
được
gọi
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
nhập
khối
DB
,FC,FB
không
có
trong
bộ
nhớ
CPU.
OB122
(
Synchronous
error):Khối
OB122
sẽ
được
gọi
khi
CPU
phát
hiện
thấy
lỗi
truy
cập
module
trong
chương
trình,ví
dụ
chương
trình
có
lệnh
truy
nhập
module
vào
ra
mở
rộng
nhưng
lại
không
tìm
thấy
module
này.
SFB:
System
Function
block
Ý kiến bạn đọc