You are on page 1of 17

BÀI TẬP PLC

Bài 1 : Lập trình điều khiển đèn giao thông của 2 đoạn đường giao nhau ở 2 chế độ
1. Chế độ tự động với chu kì T=17sec(như sơ đồ bên dưới)
2. Chế độ tự sử (đèn vàng của 2 đường nhấp nháy) với chu kì T=1sec

CV
170
110
90
Đèn xanh 1 ĐV1 Đèn đỏ 1

6sec 2s 9sec 6s 8s 17s


Đường 1
Đồ thị biểu diễn
Giá trị thanh ghi T-Word (CV)

Đèn đỏ 2 Đèn xanh 2 ĐV2 ĐĐ2

7sec 7sec 2s 1s
Đường 2

Phân tích:
1. Sử dụng Timer T1 để xét từng khoảng thời gian ứng với khoảng thời gian từng đèn sáng
2. Đường 1 : Q4.0 điều khiển đèn xanh 1
Q4.1 điều khiển đèn vàng 1
Q4.2 điều khiển đèn đỏ 1
3. Đường 2 : Q5.0 điều khiển đèn xanh 2
Q5.1 điều khiển đèn vàng 2
Q5.2 điều khiển đèn đỏ 2
4. Chế độ tự sử : tạo ra xung vuông với chu kì T=1sec => đèn vàng trên cả 2 đường nhấp nháy

OB1:

A I 0.0 // Cổng vào điều khiển chế độ đèn tự động


AN T 1 // Kich lai bo dem T1=setpoit khi T1=0
L W#16#1170 // Nap thoi gian tre setpoit PV=170*100(ms)=17(s), 170:do phan giai
SD T 1 // Su dung Timer T1
// Dieu khien den giao thong cua duong 1
L T 1
L 110
>=I // So sanh: neu T1 >= 110 (tuong ung =11s)
= L 20.0 // thi set bit nho cuc bo L20.0=1
TAK // Hoan doi gia tri ACCU1 & ACCU2 cho nhau
L 90
<=I // So sanh: neu T1 <= 90 (=9s)
= L 20.1 // thi set bit nho cuc bo L20.1=1
A I 0.0 // Kiem tra xem co la che do tu dong hay khong?
A L 20.0 // Kiem tra T1 >= 110 (tuong ung =11s). Neu dung thi bat den xanh
= Q 4.0 // Bat den xanh 1

A I 0.0 // Kiem tra xem co la che do tu dong hay khong?


AN L 20.0 // Kiem tra: neu T1 < 110 (11s)
AN L 20.1 // Kiem tra: neu T1 > 90 (9s)
= Q 4.1 // Bat den vang 1 neu 90 < T1 < 110

A I 0.0 // Kiem tra xem co la che do tu dong hay khong?


A L 20.1 // Kiem tra: neu T1 <= 90 (9s)
= Q 4.2 // Bat den do 1

// Dieu khien duong 2 (tuong tu nhu duong 1. Chi khac trong khoang thoi gian T=17s duoc
chia lam 4 khoang)
L T 1
L 10
>=I
= L 21.0
TAK
L 30
>=I
= L 21.1
TAK
L 100
>=I
= L 21.2

A I 0.0
A(
AN L 21.0 // Neu T1 <= 1s
O L 21.2 // Hoac T1 >= 10s
)
= Q 5.2 // Bat den do 2

A I 0.0
A L 21.0 // Neu T1 >= 1s
AN L 21.1 // Neu T1 < 3s
= Q 5.1 // Bat den vang 2

A I 0.0
AN L 21.2 // Tuong tu
A L 21.1
= Q 5.0 // Bat den xanh 2

A I 0.0
BEC // Ket thuc chuong trinh de quay lai vong quet tiep theo neu I0.0=1
// chỉ khi I0.0=0 thì lệnh tiếp theo sau nó mới được thực hiện

// Chế độ không tự động (đèn vàng nhấp nháy tuần tự với chu kì 1s trên cả 2 làn đường)

A I 0.1 // Kiem tra che do khong tu dong thong qua cong vao I0.1
AN T 2
L W#16#1010 // Nap gia tri thoi gian tre PV=10 (1s)
SD T 2
L T 2
L 5
>=I
= L 21.3
A I 0.1
A L 21.3
= Q 4.1 // Den vang cua duong 1 sang khi T2 >= 5 (tuong ung 0.5s)
A I 0.1
AN L 21.3
= Q 5.1 // Den vang cua duong 2 sang khi T2 <= 5 (tuong ung 0.5s)

Bài 2 : Lập trình đếm số người có trong phòng nhờ 2 cảm biến I0.0 & I0.1 để xác định
người đi ra-đi vào(hai cảm biến được đắt rất gần nhau) . Nếu số người bằng 100 thì thông
báo ra cổng Q3.0. Hiển thị số người trong từng thời điểm thông qua cổng:QB0, QB1, QB2
trong đó: QB0 (hiển thị hàng trăm), QB1(hàng chục), QB2(hàng đơn vị).

OB1:

A I 0.1
FP M 0.0 // Kiem tra suon len cua cam bien I0.1
A I 0.0 // Kiem tra cam bien I0.0
= M 0.2 // Neu co nguoi vao phong thi set M0.2=1
A I 0.0
FP M 0.1 // Kiem tra suon len cua cam bien I0.0
A I 0.1 // Kiem tra cam bien I0.1
= M 0.3 // Neu co nguoi vao phong thi set M0.3=1
A M 0.2 // Co nguoi vao phong thi M0.2=1
CU C 0 // Tang bo dem C0 khi co nguoi di vao phong
A M 0.3 // Co nguoi ra khoi phong thi M0.3=1
CD C 0 // Giam bo dem C0 khi co nguoi di ra khoi phong
LC C 0
T MD 20 // Dung MD20 de luu gia tri cua bo dem C0
AD DW#16#F // Chi lay byte co trong so thap nhat(hang don vi)
T MD 24 // Gia tri cua hang don vi duoc truyen cho MD24
L MD 20 // Tiep tuc xu ly MD20(C0) de nhan duoc hang chuc
SRD 4 // Dich sang phai 4 bit-> de nhan duoc hang chuc
AD DW#16#F // Chi lay byte co trong so thap nhat(hang chuc)
T MD 28 // Gia tri cua hang tram duoc truyen cho MD28
L MD 20 // Tuong tu cho gia tri hang tram
SRD 8
AD DW#16#F
T MD 32 // Gia tri cua hang tram duoc truyen cho MD32

// Hien thi so nguoi bang LED

L MD 24 // Load MD24 trong do byte chua gia tri hdv o byte thap nhat ung MB27
L MB 27 // Load gia tri hang don vi
T QB 2 // Dua ra cong QB2

L MD 28 // Tuong tu cho hang chuc


L MB 31
T QB 1

L MD 32 // Tuong tu cho hang tram


L MB 35
T QB 0

// Kiem tra : so nguoi trong phong bang 100 thi thong bao ra cong Q3.0

L C 0
L 100
= =D // So sanh gia tri C0 voi 100 , Neu C0=100 thi set bit RL0=1
= Q 3.0 // Q3.0=RL0

 Nhận xét: Có thể dùng con trỏ để hiển thị số người trong phòng bằng LED ( như
trong bài tập thầy đã chữa, nhưng sẽ phức tạp hơn)
Bài 3: Lập trình điều khiển dòng chữ nhấp nháy theo chu kì. Biết cứ 100 vòng quét thì dòng
chữ tiếp theo được hiển thị. (chữ “điều” ứng với 1 bit ra Q4.7, chữ “khiển” ứng với 1 bit ra
Q4.6, tương tự cho các chữ còn lại)

Giải thích:
1. Bắt đầu chữ “điều” sáng tức là :Q4.7=1, từ Q4.0 đến Q4.6=0
2. Sau 100 vòng quét thì chữ “điều khiển” sáng tức là : Q4.7=Q4.6=1, từ Q4.0 đến Q4.5=0
3. Tương tự như trên sau 100 vòng quét thì chữ “điều khiển tự” sáng
8. Tắt tất cả các chữ “Điều khiển tự động 2 K 46” tức là từ Q4.0 đến Q4.7 =0(cho dòng
chữ “điều khiển tự động 2 K 46” nhấp nháy với chu kì =100 vòng quét
9. Hiện chữ “điều khiển tự động 2 K 46” (Q4.0->Q4.7=1)

1. Điều
2. Điều khiển
3. Điều khiển tự
4. Điều khiển tự động
5. Điều khiển tự động 2
6. Điều khiển tự động 2 K
7. Điều khiển tự động 2 K 46
8. 0 0 0 0 0 0 0( Tắt tất cả các chữ “Điều khiển tự động 2 K 46” )
9. Điều khiển tự động 2 K 46
10. ( Tắt tất cả các chữ )
11. Điều khiển tự động 2 K 46
12. ( Tắt tất cả các chữ )

Phân tích:
1. Sử dụng biến MW0 để đếm số vòng quét. Nếu MW0=100 thì gán lại cho MW0=0
2. Sử dụng biến MB2 để đếm số lần đèn nhấp nháy, sau khi mỗi chữ đã được hiển
thị (đèn sáng) ta tăng biến MB2 lên 1. Tới khi MB2=12 ta lại gán lại cho MB2=0
để tiếp tục chu kì đèn nhấp nháy tiếp theo
3. Sử dụng cổng QB4 để hiển thị dòng chữ. Mỗi chữ tương ứng với 1 bit (Q4.0)

OB100: nạp giá trị khởi tạo 1 lần khi chuyển từ chế độ STOP sang RUN

L 0
T MB2 // Biến đếm số lần đèn nhấp nháy
T MW0 // Biến đếm số vòng quét
OB1:

L MB 2 // Bien dem so lan den nhap nhay


JL list
JU ac0 // Nhảy tới nhãn ac0 nếu ACCU1=0 (hay MB2=0)
JU ac1 // Nhay toi nhan ac1 neu ACCU1=1 (hay MB2=1)
JU ac2
JU ac3
JU ac4
JU ac5
JU ac6
JU ac7
JU ac8
JU ac9
JU ac10
JU ac11
list: JU ac12

ac0: L 2#10000000 // Load 10000000 vào ACCU1 dưới dạng số nhi phân
=> Q4.7=1 => hiển thị chữ “điều”
JU m001 // Luon luon nhay toi nhan m001 ma khong cần kiem tra dieu kien
ac1: L 2#11000000 // Hiển thị chữ “điều khiển”
JU m001
ac2: L 2#11100000
JU m001
ac3: L 2#11110000
JU m001
ac4: L 2#11111000
JU m001
ac5: L 2#11111100
JU m001
ac6: L 2#11111110
JU m001
ac7: L 2#11111111
JU m001

ac8: L 2#0
JU m001
ac9: JU ac7
ac10: JU ac8
ac11: JU ac7
ac12: JU ac8

m001: T QB 4
L MW 0
L 1
+I // Tang bien dem so vong quet them 1
T MW 0
L 100
= =I // So sanh: neu MW0=100 thi RLO=1
JC tang // Nhay toi nhan "tang" neu RLO=1
BEU // Ket thuc vong quet ma khong can kiem tra dieu kien
tang: L 0
T MW 0 // Khi MW0=100 thi nap lai MW0=0
L MB 2
L 1
+I // Tang bien dem MB2 them 1
T MB 2
L 12
<=I // So sanh: neu MB2 <= 12 thi RLO=1
BEC // Ket thuc vong quet neu RLO=1
L 0 // Duoc thuc hien khi MB2 > 12
T MB 2 // Nap lai gia tri MB2=0 de quay lai chu ki den nhap nhay tiep theo

 Nhận xét : Có thể dùng Timer để thay cho việc đếm 100 vòng quét

Bài 4 : Lập trình điều khiển tay máy của Robot thực hiện việc gắp & nhả vật : bắt đầu từ
điểm A Robot đi xuống vị trí B để gắp vật rồi quay lại A->C->D (tại D, Robot nhả vật rồi
quay lại C->A->B…). Biết thời gian gắp vật là 3sec, thời gian nhả vật là 2sec.

I0.0 6 I0.2
( Vị trí bắt đầu) A C

3
1 2 4 5

( Vị trí gắp vật) B D ( Vị trí nhả vật)

I0.1 I0.3

Phân tích:
1. Bít I1.0 : Khởi động động cơ
2. Bít Q4.0 : điều khiển gắp vật (Q4.0=1: gắp vật, Q4.0=0 : nhả vật)
3. Bít Q4.1 : điều khiển Robot đi xuống
4. Bít Q4.2 : điều khiển Robot đi lên
5. Bít Q4.3 : điều khiển Robot rẽ phải
6. Bít Q4.4 : điều khiển Robot rẽ trái

A I 1.0 // Kiem tra nut khoi dong Robot


= M 1.0 // Co nho M1.0=1 -> Robot dang hoat dong

// Dinh nghia cac vi tri ma Robot phai di qua :A,B,C,D


A I 0.0 // Dinh nghia vi tri A bang cach Set bit M0.0=1
R M 0.1
R M 0.2
R M 0.3
S M 0.0

A I 0.1 // Dinh nghia vi tri B bang cach Set bit M0.1=1


R M 0.0
R M 0.2
R M 0.3
S M 0.1

A I 0.2 // Dinh nghia vi tri C bang cach Set bit M0.2=1


R M 0.0
R M 0.1
R M 0.3
S M 0.2

A I 0.3 // Dinh nghia vi tri D bang cach Set bit M0.3=1


R M 0.0
R M 0.1
R M 0.2
S M 0.3

// Dieu khien Robot di xuong (Robot di xuong khi Robot dang o vi tri A(M0.0=1)& Robot
dang khong co vat
// tren tay(Q4.0=0) hoac Robot dang o vi tri C & dang co vat tren tay(Q4.0=1) )
A M 1.0 // Kiem tra Robot dang hoat dong hay khong
A M 0.0 // Kiem tra Robot dang o vi tri A
AN Q 4.0 // Neu Q4.0=0 thi Robot dang khong co vat->di xuong B de lay vat
O(
A M 1.0
A M 0.2 // Kiem tra Robot dang o vi tri C
A Q 4.0 // Robot dang co vat tren tay -> di xuong D de nha vat
)
= Q 4.1 // Dieu khien cho Robot di xuong

// Dieu khien Robot di len (truoc khi di len thi can kiem tra xem da het thoi gian tre cua viec
gap & nha vat)
A M 1.0
A M 0.1 // Kiem tra Robot dang o vi tri B
A T 1 // Neu T1=0 thi RLO=1; (Kiem tra thoi gian gap vat=3s )
O(
A M 1.0
A M 0.3 // Kiem tra Robot dang o vi tri D
A T 2 // Neu T2=0 thi RLO=1; (Kiem tra thoi gian nha vat=2s)
)
= Q 4.2 // Dieu khien cho Robot di len

// Tao khoang thoi gian tre cho viec gap vat(T1=1s)


A M 0.1
A Q 4.0 // Kiem tra Robot dang co vat tren tay
L S5T#3S
SD T 1
// Tao khoang thoi gian tre cho viec nha vat(T2=100ms)
A M 0.3
AN Q 4.0 // Kiem tra Robot dang co vat tren tay
L S5T#2S
SD T 2

// Dieu khien Robot re phai( Robot re phai khi dang o vi tri A(M0.0=1) & dang co vat tren tay(Q4.0=1)
A M 1.0
A M 0.0
A Q 4.0
= Q 4.3 // Dieu khien Robot re phai

// Dieu khien Robot re trai ( Robot re trai khi dang o vi tri C(M0.2=1) & dang khong co vat
tren tay(Q4.0=0)
A M 1.0
A M 0.2
AN Q 4.0
= Q 4.4 // Dieu khien Robot re trai

// Dieu khien gap vat


A M 0.1
S Q 4.0

// Dieu khien nha vat


A M 0.3
R Q 4.0

Bài 5 : Bài toán thông báo về tàu hỏa khi đi qua dường ray thông qua 2 cảm biến I0.0 & I0.1
(2 cảm biến được đặt rất gần nhau):
1. Thông báo tàu chạy từ hướng nào
2. Kiểm tra xem tàu đã chạy qua đường ngang chưa(sau 1000 vòng quét)
3. Kiểm tra lỗi cảm biến

Hướng tàu chạy

I0.0 I0.1 Đường ray

Phân tích:
1. Bit Q4.0 : thông báo tàu chạy theo hướng 
2. Bit Q4.1 : thông báo tàu chạy theo hướng 
3. Bit Q5.0 : thông báo lỗi cảm biến I0.0
4. Bit Q5.1 : thông báo lỗi cảm biến I0.1
5. Bit Q5.2 : thông báo tàu dừng trên đường ngang
6. Biến MW0 : đếm số vòng quét
7. Biến MW2 : đếm số bánh tàu đi qua đường ngang

OB100:
L 0
T MW0
T MW2
OB1:

A I 0.0
FP M 4.0
JC trai
A I 0.1
FP M 4.1
JC phai

A Q 4.0
O Q 4.1
JC dem

A Q 4.0
O Q 4.1
JC dem

BEU

trai: L MW 0
L 1
+I
T MW 0
JU m001

phai: L MW 0
L 1
-I
T MW 0
JU m002
m001: L MW 0 // Kiem tra de thong bao huong tau chay
L 1
==I
= L 20.0
AN Q 4.0
AN Q 4.1
A L 20.0
S Q 4.0 // Tau chay theo huong ->
JU m003
m002: L MW 0
L -1
==I
= L 20.1
AN Q 4.0
AN Q 4.1
A L 20.1
S Q 4.1 // Tau chay theo huong <-
JU m003

m003: L MW 0 // Kiem tra loi cam bien


L 2
>=I
S Q 5.1 // Loi cam bien I0.1

TAK
L -2
<=I
S Q 5.0 // Loi cam bien I0.0

BEU

dem: L MW 2
L 1
+I
T MW 2
L 1000
==I
JC ktra
BEU
ktra: L MW 0
L 0
==I
R Q 4.0 // Tau da chay qua
R Q 4.1
NOT
= Q 5.2 // Tau dung tren duong ngang
Bài 6 : Lập trình điều khiển băng tải (trên băng tải có vật)
chạy đi chạy lại từ: A->C->D->B->D->C->A… Người điều khiển có thể ấn nút yêu cầu vật
tới vị trí mong muốn (I8.1, I8.2, I8.3, I8.4).

I8.5 I8.6 I8.7 I8.0 (cảm biến quang)


A C D B
Băng tải

I8.1 I8.2 I8.3 I8.4

Phân tích:
1. Các vị trí A,C,D,B được gắn các cảm biến vị trí tương ứng : I8.5 , I8.6 , I8.7 , I8.0
(trong đó I8.0 là cảm biến quang : bình thường có giá tri logic=1, khi có vật có giá
trị logic=0)
2. Các nút ấn yêu cầu tương ứng : I8.1 , I8.2 , I8.3 , I8.4

OB1:

// Điều khiển băng tải chạy đi chạy lại : A->C->D->B->D->C->A…


A I 8.5
R Q 8.6
S Q 8.5
AN I 8.0
R Q 8.5
S Q 8.6

// Định nghĩa các vị trí : A,B,C,D


A I 8.5 //Vi tri A
R M 8.6
R M 8.7
R M 8.0
S M 8.5
A I 8.6 //Vi tri C
R M 8.5
R M 8.7
R M 8.0
S M 8.6
A I 8.7 //Vi tri D
R M 8.5
R M 8.6
R M 8.0
S M 8.7
AN I 8.0 //Vi tri B
R M 8.5
R M 8.6
R M 8.7
S M 8.0

// Kiểm tra vị trí mà người điều khiển muốn vật trên băng tải tới vị trí mong muốn :1 , 2 , 3 , 4
A I 8.1
S M 8.1 //Yeu cau vi tri 1
A I 8.2
S M 8.2 //Yeu cau vi tri 2
A I 8.3
S M 8.3 //Yeu cau vi tri 3
A I 8.4
S M 8.4 //Yeu cau vi tri 4

// Điều khiển băng tải chuyển động từ A->B theo chiều được quy định bởi Q8.5(do người lập
trình lựa chọn)
A M 8.5
A(
A M 8.2
O M 8.3
O M 8.4
)
O(
A M 8.6
A(
A M 8.3
O M 8.4
)
)
O(
A M 8.7
A M 8.4
)
= Q 8.5

// Điều khiển băng tải chuyển động từ B->A theo chiều được quy định bởi Q8.6(do người lập
trình lựa chọn)
A M 8.0
A(
A M 8.1
O M 8.2
O M 8.3
)
O(
A M 8.7
A(
A M 8.1
O M 8.2
)
)
O(
A M 8.6
A M 8.1
)
= Q 8.6

// Reset yêu cầu (tức là: khi vật đã đến được vị trí mong muốn cần phải reset yêu cầu đó đi)
A I 8.5
A M 8.1
R M 8.1
A I 8.6
A M 8.2
R M 8.2
A I 8.7
A M 8.3
R M 8.3
AN I 8.0
A M 8.4
R M 8.4

 Nhận xét: Có thể lập trình điều khiển băng tải như trên nhưng tại mỗi vị trí A, B, C,
D vật dừng lại 1sec, rồi tiếp tục chuyển động .

Bài 7 : Lập trình điều khiển 1 tổ hợp máy bơm với 2 chế độ
1. Nếu I0.0=1 thì từng máy bơm hoạt động luân phiên trong khoảng thời gian 1giờ
(nhưng khi mô phỏng là 1sec).( Tại 1 thời điểm chỉ có 1 máy bơm hoạt động)

(MB1)->(MB2) ->(MB3) ->(MB4) ->(MB5) ->(MB6) ->(MB7) ->(MB8)

2. Nếu I0.1=1 thì cứ 2 máy bơm hoạt động luân phiên trong khoảng trong khoảng 2
giờ(trong mô phỏng là 2sec). Tại 1 thời điểm chỉ có 2 máy hoạt động.

(MB1,MB2)-> (MB3,MB4)-> (MB5,MB6)-> (MB7,MB8)


OB100:
L 0
T MB0
T MB1

OB1:

// Chọn chế độ điều khiển


A I 0.0
= Q 5.0
JC cd0
A I 0.1
= Q 5.1
JC cd1
BEU

// Chế độ từng máy hoạt động luân phiên


cd0: CLR
L MB 0
JL list
JU ac00
JU ac01
JU ac02
JU ac03
JU ac04
JU ac05
JU ac06
list: JU ac07
ac00: L 2#1
JU m000
ac01: L 2#10
JU m000
ac02: L 2#100
JU m000
ac03: L 2#1000
JU m000
ac04: L 2#10000
JU m000
ac05: L 2#100000
JU m000
ac06: L 2#1000000
JU m000
ac07: L 2#10000000
JU m000
m000: T QB 4
A I 0.0
AN T 0
L W#16#1010
SD T 0
L T 0
L 0
==I
JC inc0
BEU
inc0: L MB 0
L 1
+I
T MB 0
L MB 0
L 7
<=I
BEC
L 0
T MB 0

// Chế độ 2 máy bơm hoạt động luân phiên


cd1: CLR
L MB 1
JL lis1
JU ac10
JU ac11
JU ac12
lis1: JU ac13
ac10: L 2#11
JU m001
ac11: L 2#1100
JU m001
ac12: L 2#110000
JU m001
ac13: L 2#11000000
JU m001
m001: T QB 4
AN T 1
L W#16#1020
SD T 1
L T 1
L 0
==I
JC inc1
BEU
inc1: L MB 1
L 1
+I
T MB 1
L MB 1
L 3
<=I
BEC
L 0
T MB 1

********** HẾT **********

CHÚC THI TỐT

You might also like