chng 3: Thiết kế
mạch
cho các
sen
s
or
Nh
trên
đã đề
cập,
để
dừng
chính xác
buồng thang
thì phải
có
tín
hiệu báo
giảm
tốc
tr
ớc
khi phanh
hãm đến sàn. Tại
vùng dừng,
ng
ời
ta bố trí 5
sens
o
r
đợc
bố
tr
í
nh
trên hình
vẽ 2-3. Tất
cả
5 sensor
này đợc
đấu
song song
và
đ
a
vào
một
đầu vào
ngắt số 0 của PLC.
Ch
ơng
trình ngắt sẽ
phải giải mã để
xác
định
thứ tự
các
tín hiệu
để báo
cho
ch
ơng
trình chính biết
để
có
c
á
c
phản
ứng
phù hợp.
*
1
2
3
4
5
6
7
8 9 10 11 12 13 14 15
16 17 18 19 20 21 22 23
24 25
26 27 28 29 30 31
32 33 34 35 36 37 38 39
40 41 42 43 44 45 46 47
48 49 50 51 52 53 54 55
56 57 58 59 60
O
p
en
C
l
o
se
E
mer
Se
n
sor 5
Sàn
tầng
Se
n sor 4
Se
n sor 3
Khối
đ
i
ều
kh
iể
n
độn
g
c
ơ
cửa
Ph
í
m g
ọ
i l
ê
n
Phím g
ọ
i
x
u
ố
ng
Se
n
sor 2
Se
n
sor 1
P
h
í
m g
ọ
i
x
u
ống
Sàn
tầng
Hình 2-3:
Vùng dừng cho thang máy.
2.1
Các
ch
ơng
trình xử
l
ý
phím
gọi
xuống
2.1.1 Có
phím
gọi xuống khi thang máy đang
dừng
(
SBN_1
):
Ke
y= curr?
y
e
s
C
all_door
*K
ey_dn
= 1
D
n_m
ax= key
++A
c_dn
Set
busy=
1
Set
R
un= 0
y
e
s
yes
Key >
Curr
Set
R
un= 1
H
ì
nh
2
-
1
:
Sơ
đ
ồ
thu
ậ
t
to
á
n
của ch
ơng
tr
ì
nh
bàn
p
h
í
m gọi
xuống khi thang
đang
dừng (
B
usy = 0 ).
1. Kiểm tra
tr
ờng
hợp
ng
ời
gọi thang đứng ở đúng tầng
mà
Cabin
thang
máy đang
dừng, nếu
đúng thì
sang
b
ớc
2, nếu sai
thì
sang
b
−
íc 3.
2. Gäi
ch
−
¬ng
tr×nh
më -
®ãng
cöa råi sang
b
−
íc 7.
3.
Đ
a
v
ị
trí
tầng
ng
ời
đứng
gọi thang ( Key )
vào hàng đợi
xuống;
đặt giá
trị
tầng lớn nhất trong
hàng đợi bằng
tầng
đợc
gọi;
tăng
số
phần tử trong hàng
đợi
xuống
lên
một
gi
á
trị;
thiết lập cờ busy (
báo
bận ) = 1;
sang
b
ớc 4.
4. So
sánh vị
trí tầng
ng
ời
đứng
gọi thang với tầng hiện
tạ
i
( Current ), nếu lớn
hơn thì
sang
b
ớc
5, nếu sai sang
b
ớc 6.
5. Thiết lập cờ
chạy lên
( Run = 0 ), sang
b
ớc 7.
6. Thiết lập cờ
chạy
xuống ( Run = 1 ), sang
b
ớc 7.
7. Kết thúc
ch
ơng
trình.
2.1.2 Có
phím
gọi xuống khi thang máy đang trong
hành trình lên ( SBN_2
):
*
K
ey_dn=1
yes
*Key_dn
=1
++Ac_
dn
yes
Ac_dn=1
Dn_m
ax<=key?
Dn_m
ax=key
yes
Hình 2
-2
:
Sơ
đ
ồ
thuật
toán
của
ch
ơn
g
trình bàn
phím gọi xuống khi thang
đang chạy lên
( Run = 0 )
1. Kiểm tra xem
đã
có số tầng trong
hàng đợi
xuống
ch
a,
nếu
đã
có
thì
sang
b
ớc
6, nếu
ch
a
thì
sang
b
ớc 2.
2.
Đ
a
vị
trí tầng
ng
ời
đứng
gọi thang ( Key )
vào hàng đợi
xuống; tăng
số
phần tử trong
hàng đợi
xuống
lên
một
giá
trị;
sang
b
ớc 3.
3. Kiểm tra xem có
phải là
ng
ời
gọi
đầu
tiên
không,
nếu
đúng thì
sang
b
ớc
5,
ng
ợc
lại thì
sang
b
ớc 4.
4. Kiểm tra
giá
trị tầng lớn nhất ( Dn_max ) trong
hàng đợi
so với tầng
đ
ợc
gọi, nếu Dn_max <= key
thì
sang
b
ớc
6,
ng
ợc
lại thì
sang
b
ớc 5.
5. Đặt Dn_max =
key.
6. Kết thúc
ch
ơng
trình.
2.1.3 Có phím gọi xuống khi thang máy đang
trong hành trình xuống(SBN_3
):
*Key_dn=1?
yes
*Key_d
n=1
yes
Key>curr?
++Wt_dn
++Ac_dn
Wt_dn=1
Dn_max<key ?
yes
yes
D
n_max=key
Hình
2
-
3
:
Sơ
đ
ồ
thu
ậ
t to
á
n
của
ch
ơng
tr
ì
nh
bàn
phím gọi
xuống khi thang
đ
ang ch
ạ
y
xuống ( Run = 1
)
1. Kiểm tra xem
đã
có số tầng trong
hàng đợi
xuống
ch
a,
nếu
đã
có
thì
sang
b
ớc
9, nếu
ch
a
thì
sang
b
ớc 2.
2.
Đ
a
v
ị
trí
tầng
ng
ời
đứng
gọi thang ( Key )
v
à
o
hàng
đợi
xuống; sang
b
ớc
3.
3. So
sánh
tầng gọi ( key ) với tầng hiện
tạ
i
( current ),
nếu nhỏ
hơn
thì
sang b
ớc
4,
ng
ợc
lại thì
sang
b
ớc
5.
4.
Tăng
số phần tử
đang đợc
phục vụ ( Wt_up ) trong
hàng đợi lên
1
giá
trị, sang
b
ớc 9.
5. Tăng số phần tử chờ
đợc
phục vụ ( Ac_up ) trong
hàng đợi
lên 1
giá
trị, sang
b
ớc 9.
6. Kiểm tra xem có
phải là
phần tử
đầu
tiên
đợc
đ
a
vào
hàng đợi
chờ phục
vụ, nếu
đúng thì
sang
b
ớc
8,
ng
ợc
lạ
i
sang
b
ớc 7.
7. So
sánh
phần tử nhỏ nhất trong
hàng đợi lên
(
Up_min ) với tầng gọi ( key
),
nếu nhỏ
hơn thì
sang
b
ớc
8,
ng
ợc
lạ
i
sang
b
ớc 9.
8. Đặt
giá trị
Up_min =
key.
9. Kết thúc
ch
ơng
trình.