Tầng đếm thứ nhất đưa kết quả vào A1B1C1của vi mạch 4051 khống chế
hàng của bàn phím.
Khi ấn phím, hai đầu dây hàng và cột của phím đó được nối với nhau tạo
nên điện áp +5V từ Z2đưa sang Z1
để làm dừng bộ phát xung đồng hồ. Trên các
lối ra 1.6 sẽ giữ nguyên trạng tháicủa hai tầng đếm lúc dừng và đó cũng chính
là mã nhị phân tương ứng với ký tự ghi trên phím ấn.
Ví dụ khi ấn phím số “12” (hàng 3, cột 1), bộ phát xung đồng hồ tiếp tục
chạy, các lối ra của bộ đếm cứ liên tục thay đổi và chỉ dừng khi A1B1C1=110 (Z1
nối với 3) và A2B2C2= 100 (Z2nối với 1). Nhưvậy ở đầu ra ta sẽ có mã nhị phân
tương ứng với số 12 là 00001100.
Khi nhả phím, hai bộ đếm lại tiếp tục biến đổi quay vòng chờ đến khi có
một phím khác được ấn. Nếu có một phím thứ 2 được ấn trong khi phím thứ nhất
chưa được nhả thì vẫn không có gì thay đổi cho đến khi phím thứ nhất được nhả.
Sau đó quá trình biến đổi quay vòng lại được tiếp tục và chỉ dừng lại ứng với mã
nhị phân của phím thứ hai.
Do thực tế đề tài thiết kế thang máy cho cao ốc60 tầng, bàn phím chỉ đưa
ra số nhị phân lớn nhất là 63, tức là chỉ sử dụng hết 6 đường truyền dữ liệu nên
chỉ cần sử dụng 6 đầu vào ( INPUT ) của PLC.
41 trang |
Chia sẻ: maiphuongdc | Lượt xem: 1486 | Lượt tải: 1
Bạn đang xem trước 20 trang tài liệu Đồ án Ứng dụng PLC cho hệ thống khống chế điều khiển thang máy, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
hạy lên ( Run = 0 )
yes
*Key_dn=1
++Ac_dn
Dn_max<=key?
Dn_max=key
yes
Tín hiệu hóa và lý thuyết chung về tối −u luật điều khiển thang máy Huy Mạnh
Chuyên ngành Tự động hoá XNCN
13
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?
++Ac_dn
yes
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 )
yes
*Key_dn=1
Dn_max=key
++Wt_dn
Wt_dn=1 Dn_max<key ?
yes yes
Key>curr?
Tín hiệu hóa và lý thuyết chung về tối −u luật điều khiển thang máy Huy Mạnh
Chuyên ngành Tự động hoá XNCN
14
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.
2.2 Các ch−ơng trình xử lý phím gọi lên
2.2.1 Có phím gọi lên khi thang đang dừng ( SBN_4 ).
*Key_up=1
Up_min=key
++Ac_up
Set busy=1
Key > Curr
Key=curr?
Set Run=0
yes
yes
Set Run=1
yes
Call_door
Hình 2-4: Sơ đồ thuật toán của ch−ơng trình bàn phím
gọi lên khi thang đang dừng ( Busy = 0 )
Tín hiệu hóa và lý thuyết chung về tối −u luật điều khiển thang máy Huy Mạnh
Chuyên ngành Tự động hoá XNCN
15
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 ( Call door ) rồi sang b−ớc 7.
3. Đ−a vị trí tầng ng−ời đứng gọi thang ( Key ) vào hàng đợi lên; đặt giá trị
tầng nhỏ nhất trong hàng đợi lên bằng tầng đ−ợc gọi; tăng số phần tử trong
hàng đợi 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, ng−ợc lại thì 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.2.2 Có phím gọi lên khi thang máy đang trong hành trình xuống
(SBN_5 ):
*Key_up=1?
Wt_dn=1
yes
Hình 2-5 : Sơ đồ thuật toán của ch−ơng trình bàn phím
gọi lên khi thang đang chạy xuống ( Run = 1 ).
yes
*Key_up=1
++Wt_up
Up_min<key?
Up_min=key
yes
Tín hiệu hóa và lý thuyết chung về tối −u luật điều khiển thang máy Huy Mạnh
Chuyên ngành Tự động hoá XNCN
16
1. Kiểm tra xem đã có số tầng trong hàng đợi lên 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 lên; tăng số phần
tử trong hàng đợi 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 nhỏ nhất ( Up_min ) trong hàng đợi so với tầng đ−ợc
gọi, nếu Up_min >= key thì sang b−ớc 6, ng−ợc lại thì sang b−ớc 5.
5. Đặt Up_min = key.
6. Kết thúc ch−ơng trình.
2.2.3 Có phím gọi lên khi thang máy đang trong hành trình lên (
SBN_6.
*Key_up=1 ?
++Ac_up
yes
Hình 2-6 : Sơ đồ thuật toán của ch−ơng trình bàn phím
gọi lên khi thang đang chạy lên ( Run = 0 ).
yes
*Key_up=1
Up_min=key
++Wt_up
Wt_up=1 Up_min>key ?
yes yes
Key>curr?
Tín hiệu hóa và lý thuyết chung về tối −u luật điều khiển thang máy Huy Mạnh
Chuyên ngành Tự động hoá XNCN
17
1. Kiểm tra xem đã có số tầng trong hàng đợi lên 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 lên; 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ụ ( Ac_dn ) 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ụ ( Wt_dn ) 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ử lớn nhất trong hàng đợi xuống ( Dn_max )với tầng gọi (
key ), nếu nhỏ hơn thì sang b−ớc 9, ng−ợc lại sang b−ớc 8.
8. Đặt giá trị Dn_max = key.
9. Kết thúc ch−ơng trình.
2.3 Xử lý phím gọi tầng:
2.3.1 Có phím gọi tầng khi thang máy đang dừng ( SBN_7 ).
Start
0<Key<61 ?
Key>curr ?
*Keydn=1
Dn_max=key
++ Ac_dn
Busy=1; run=1
*Key_up=1
Up_min=key
++ Ac_up
Busy=1; run=0
Key<curr ?
End
Key=62 ?
Call Door
Yes
YesYes
Yes
Hình 2-7: Sơ đồ thuật toán ch−ơng trình xử lý phím gọi tầng
khi thang đang dừng ( run =0 ).
Tín hiệu hóa và lý thuyết chung về tối −u luật điều khiển thang máy Huy Mạnh
Chuyên ngành Tự động hoá XNCN
18
1. Kiểm tra phím mở cửa nhanh, nếu có thì chuyển sang b−ớc 7, ng−ợc lại thì
chuyển sang b−ớc 2.
2. Phát hiện xem phím bấm có nằm trong khoảng 0 < key < 61 không, nếu
đúng thì sang b−ớc 3, ng−ợc lại sang b−ớc 8. Trong tr−ờng hợp này, chỉ cho
phép tín hiệu gọi tầng và tín hiệu mở cửa nhanh, cấm phím dừng khẩn cấp
và phím đóng cửa nhanh.
3. So sánh tầng đ−ợc gọi xem có nhỏ hơn tầng hiện tại không, nếu đúng thì
sang b−ớc 6, ng−ợc lại thì sang b−ớc 4.
4. Kiểm tra xem phím bấm có lơn hơn tầng hiện tại không, nếu đúng thì sang
b−ớc 5, ng−ợc lại sang b−ớc 8.
5. Đ−a tầng đ−ợc gọi vào hàng đợi lên; gán giá trị nhỏ nhất trong hàng đợi lên
= tầng đ−ợc gọi; tăng giá trị số phần tử trong hàng đợi lên một giá trị; thiết
lập cờ busy = 1; bật cờ run = 0 ( chạy lên ), sang b−ớc 8 .
6. Đ−a tầng đ−ợc gọi vào hàng đợi xuống; gán giá trị lớn nhất trong hàng đợi
xuống = tầng đ−ợc gọi; tăng giá trị số phần tử trong hàng đợi xuống lên một
giá trị; thiết lập cờ busy = 1; bật cờ run = 1 ( chạy xuống ), sang b−ớc 8 .
7. Gọi ch−ơng trình mở - đóng cửa ( door ), sang b−ớc 8.
8. Kết thúc ch−ơng trình.
Tín hiệu hóa và lý thuyết chung về tối −u luật điều khiển thang máy Huy Mạnh
Chuyên ngành Tự động hoá XNCN
19
2.3.2 Có phím gọi tầng khi thang máy đang chạy xuống ( SBN_8 ).
Start
Key=63 ?
*Temp_dn=1
++Ac_dn
*Temp_dn=1 ?
Temp=1 ?Key=61 ?
Key=62 ?
Key<=curr ?
*Key_up=1 ?
*Key_up=1
++Wt_up
Wt_up=1 ?
*Key_dn=1 ?Running=1 ?Running=1 ?
*Up_min<key ?
End
Close-fast=1 Open-fast=1
*Key_dn=1
++Ac_dn
YesYes Yes
No
Yes
Yes
Yes
Yes
No
Yes
Yes
Up_min=key
Temp=curr
Hình 2-8: Sơ đồ thuật toán xử lý phím gọi tầng
khi thang đang trong hành trình chạy xuống ( run=1 ).
1. Kiểm tra phím dừng khẩn cấp có mã ( Scan code ) = 63 , nếu có thì chuyển
sang b−ớc 16, ng−ợc lại chuyển sang b−ớc 2.
2. Kiểm tra phím đóng cửa nhanh có mã ( Scan code ) = 61, nếu có thì chuyển
sang b−ớc 3, ng−ợc lại thì chuyển sang b−ớc 5.
3. Kiểm tra cờ đang chạy running, nếu đ−ợc bật thì chuyển sang b−ớc 20,
không thì sang b−ớc 4.
4. Thiết lập cờ đóng cửa nhanh, sang b−ớc 20.
5. Kiểm tra phím mở cửa nhanh có mã ( Scan code ) = 62, nếu có thì chuyển
sang b−ớc 6, ng−ợc lại thì chuyển sang b−ớc 8.
6. Kiểm tra cờ đang chạy running, nếu đ−ợc bật thì chuyển sang b−ớc 20,
không thì sang b−ớc 7.
7. Thiết lập cờ mở cửa nhanh, sang b−ớc 20.
Tín hiệu hóa và lý thuyết chung về tối −u luật điều khiển thang máy Huy Mạnh
Chuyên ngành Tự động hoá XNCN
20
8. So sánh tầng đ−ợc gọi với giá trị tầng hiện tại, nếu lớn hơn thì chuyển sang
b−ớc 9, ng−ợc lại sang b−ớc 11.
9. Kiểm tra xem giá trị tầng đ−ợc gọi đã có trong hàng đợi lên hay ch−a, nếu
có thì về b−ớc 20, ng−ợc lại sang b−ớc 10.
10. Đ−a giá trị tầng đ−ợc gọi vào hàng đợi lên; tăng giá trị của phần tử có trong
hàng đợi lên ( Ac_up ) một giá trị, sang b−ớc 20.
11. Kiểm tra xem giá trị tầng đ−ợc gọi đã có trong hàng đợi xuống hay ch−a,
nếu có thì về b−ớc 20, ng−ợc lại sang b−ớc 12.
12. Đ−a giá trị tầng đ−ợc gọi vào hàng đợi xuống; tăng giá trị của phần tử có
trong hàng đợi xuống ( Wt_dn ) lên một giá trị, sang b−ớc 13.
13. Kiểm tra xem tầng đ−ợc gọi có phải là phần tử đầu tiên trong hàng đợi
xuống không, nếu đúng sang b−ớc 15, ng−ợc lại sang b−ớc 14.
14. Kiểm tra xem tầng đ−ợc gọi có lớn hơn giá trị lớn nhất trong hàng đợi
xuống hay không, nếu đúng thì sang b−ớc 15, ng−ợc lại sang b−ớc 20.
15. Gán giá trị Dn_max = giá trị tầng đ−ợc gọi, sang b−ớc 20.
16. Đ−a giá trị tầng hiện tại cộng 1 vào ô nhớ tạm Temp, sang b−ớc 17.
17. So sánh giá trị ô nhớ Temp với 60, nếu bằng về b−ớc 20, ng−ợc lại sang
b−ớc 18.
18. Kiểm tra giá trị ô nhớ Temp có trong hàng đợi hay ch−a, có thì chuyển sang
b−ớc 20, ch−a sang b−ớc 19.
19. Gán giá trị ô nhớ Temp vào hàng đợi lên, tăng giá trị số phần tử có trong
hàng đợi lên lên một giá trị, sang b−ớc 20.
20. Kết thúc ch−ơng trình.
Tín hiệu hóa và lý thuyết chung về tối −u luật điều khiển thang máy Huy Mạnh
Chuyên ngành Tự động hoá XNCN
21
2.3.3 Có phím gọi tầng khi thang máy đang chạy lên ( SBN_9 ).
Yes
*Key_up=1
++Ac_up
Dn_max<key ?
*Key_up=1 ?
Close-fast=1
Running=1 ?
Yes
Open-fast=1
Running=1 ?
Yes Yes
*Key_dn=1
++Wt_dn
Dn_max=key
Wt_dn=1 ?
No
End
Temp=curr+1Key=63 ?
*Key_dn=1 ?
Key>curr ?
Yes
Yes
Yes
Yes
Key=62 ?
Key=61 ?
Start
*Temp_up=1
++Ac_up
Temp=60 ?
*Temp_up=1 ?
Yes
Yes
Hình 2-9 : Sơ đồ xử lý phím gọi tầng
khi thang đang trong hành trình lên ( run =0 ).
1. Kiểm tra phím dừng khẩn cấp có mã ( Scan code ) = 63 , nếu có thì chuyển
sang b−ớc 16, ng−ợc lại chuyển sang b−ớc 2.
2. Kiểm tra phím đóng cửa nhanh có mã ( Scan code ) = 61, nếu có thì chuyển
sang b−ớc 3, ng−ợc lại thì chuyển sang b−ớc 5.
3. Kiểm tra cờ đang chạy running, nếu đ−ợc bật thì chuyển sang b−ớc 20,
không thì sang b−ớc 4.
4. Thiết lập cờ đóng cửa nhanh, sang b−ớc 20.
5. Kiểm tra phím mở cửa nhanh có mã ( Scan code ) = 62, nếu có thì chuyển
sang b−ớc 6, ng−ợc lại thì chuyển sang b−ớc 8.
6. Kiểm tra cờ đang chạy running, nếu đ−ợc bật thì chuyển sang b−ớc 20,
không thì sang b−ớc 7.
7. Thiết lập cờ mở cửa nhanh, sang b−ớc 20.
Tín hiệu hóa và lý thuyết chung về tối −u luật điều khiển thang máy Huy Mạnh
Chuyên ngành Tự động hoá XNCN
22
8. So sánh tầng đ−ợc gọi với giá trị tầng hiện tại, nếu nhỏ hơn hoặc bằng thì
chuyển sang b−ớc 9, ng−ợc lại sang b−ớc 11.
9. Kiểm tra xem giá trị tầng đ−ợc gọi đã có trong hàng đợi xuống hay ch−a,
nếu có thì về b−ớc 20, ng−ợc lại sang b−ớc 10.
10. Đ−a giá trị tầng đ−ợc gọi vào hàng đợi xuống; tăng giá trị của phần tử có
trong hàng đợi xuống ( Ac_dn ) lên một giá trị, sang b−ớc 20.
11. Kiểm tra xem giá trị tầng đ−ợc gọi đã có trong hàng đợi lên hay ch−a, nếu
có thì về b−ớc 20, ng−ợc lại sang b−ớc 12.
12. Đ−a giá trị tầng đ−ợc gọi vào hàng đợi lên; tăng giá trị của phần tử có trong
hàng đợi xuống ( Wt_up ) lên một giá trị, sang b−ớc 13.
13. Kiểm tra xem tầng đ−ợc gọi có phải là phần tử đầu tiên trong hàng đợi lên
không, nếu đúng sang b−ớc 15, ng−ợc lại sang b−ớc 14.
14. Kiểm tra xem tầng đ−ợc gọi có nhỏ hơn giá trị nhỏ nhất ( Up_min ) trong
hàng đợi lên hay không, nếu đúng thì sang b−ớc 15, ng−ợc lại sang b−ớc
20.
15. Gán giá trị Up_min = giá trị tầng đ−ợc gọi, sang b−ớc 20.
16. Đ−a giá trị tầng hiện tại vào ô nhớ tạm Temp, sang b−ớc 17.
17. So sánh giá trị ô nhớ Temp với 1, nếu bằng về b−ớc 20, ng−ợc lại sang b−ớc
18.
18. Kiểm tra giá trị ô nhớ Temp có trong hàng đợi hay ch−a, có thì chuyển sang
b−ớc 20, ch−a sang b−ớc 19.
19. Gán giá trị ô nhớ Temp vào hàng đợi xuống, tăng giá trị số phần tử có trong
hàng đợi xuống lên một giá trị, sang b−ớc 20.
20. Kết thúc ch−ơng trình.
Tín hiệu hóa và lý thuyết chung về tối −u luật điều khiển thang máy Huy Mạnh
Chuyên ngành Tự động hoá XNCN
23
2.4 Ch−ơng trình xử lý phím chung Keyboard
Flo_Call?
Buzy=1?Run=0?
yesyes
Call_SBN01Call_SBN03Call_SBN02
Up_call ?
Li_call?
Busy=1
Run=0?
Call SBN04 Call SBN05 Call SBN06
Call SBN07 Call SBN09 Call SBN08
Run=0?Busy=1
yes yes yes
yes
yes
yes
Hình 2-10 : Sơ đồ thuật toán của ch−ơng trình bàn phím
Reset Key_buff01
Reset Key_buff02
No
1. Kiểm tra xem có phím gọi tầng không, nếu có chuyển sang b−ớc 2, ng−ợc
lại sang b−ớc 8.
2. Kiểm tra cờ busy, nếu busy = 1 chuyển sang b−ớc 3, ng−ợc lại sang b−ớc 6.
3. Kiểm tra cờ run, nếu run = 0 chuyển sang b−ớc 4, nếu run = 1 chuyển sang
b−ớc 5.
4. Gọi ch−ơng trình con SBN 002, sang b−ớc 8.
5. Gọi ch−ơng trình con SBN 003, sang b−ớc 8.
6. Gọi ch−ơng trình con SBN 001, sang b−ớc 8.
7. Reset cờ key_buff1 ( có phím gọi tầng ) = 0, sang b−ớc 8.
8. Kiểm tra xem có phím gọi thang không, có sang b−ớc 9, ng−ợc lại sang
b−ớc 21.
9. Kiểm tra cờ run, run = 0 thì sang b−ớc 10, run = 1 sang b−ớc 12.
10. Kiểm tra cờ busy, busy = 1 thì sang b−ớc 11, busy = 0 sang b−ớc 13.
11. Kiểm tra cờ run, run = 0 thì sang b−ớc 15, run = 1 sang b−ớc 14.
12. Kiểm tra cờ busy, busy = 1 thì sang b−ớc 17, busy = 0 sang b−ớc 16.
13. Gọi ch−ơng trình con SBN 007, sang b−ớc 20.
14. Gọi ch−ơng trình con SBN 009, sang b−ớc 20.
Tín hiệu hóa và lý thuyết chung về tối −u luật điều khiển thang máy Huy Mạnh
Chuyên ngành Tự động hoá XNCN
24
15. Gọi ch−ơng trình con SBN 008, sang b−ớc 20.
16. Gọi ch−ơng trình con SBN 004, sang b−ớc 20.
17. Kiểm tra cờ run, run = 0 thì sang b−ớc 19, run = 1 sang b−ớc 18.
18. Gọi ch−ơng trình con SBN 005, sang b−ớc 20.
19. Gọi ch−ơng trình con SBN 006, sang b−ớc 20.
20. Reset cờ key_buff 02 ( có phím gọi thang ) = 0.
21. Kết thúc ch−ơng trình.
2.5 Ch−ơng trình đóng - mở cửa ( door ).
C lose_fast?
yes
H ình 2-11: Sơ đồ thuật toán của ch−ơng trình cửa ( D oor ).
yes
O pen_D oor
Set TIM 01
R ead key
TIM 3=0
yes
R ead key
TIM 2=0?
Close door
Set TIM 03
1. Ra lệnh mở cửa; đặt bộ đếm TIM 002, chuyển sang b−ớc 2.
2. Kiểm tra xem đã hết thời gian trễ ch−a, nếu ch−a thì sang b−ớc 3, ng−ợc lại
sang b−ớc 5.
3. Gọi ch−ơng trình đọc phím ( Read_key ), sang b−ớc 4.
4. Kiểm tra xem có cờ đóng cửa nhanh không, nếu có thì sang b−ớc 5, ng−ợc
lại về b−ớc 2.
Tín hiệu hóa và lý thuyết chung về tối −u luật điều khiển thang máy Huy Mạnh
Chuyên ngành Tự động hoá XNCN
25
5. Ra lệnh đóng cửa, đặt bộ TIM 003, sang b−ớc 6.
6. Kiểm tra xem đã hết thời gian trễ ch−a, nếu ch−a thì sang b−ớc 7, ng−ợc lại
sang b−ớc 8.
7. Gọi ch−ơng trình đọc phím ( Read_key ), sang b−ớc 6.
8. Kết thúc ch−ơng trình.
2.6.1 các Ch−ơng trình ngắt.
2.6.1 Ch−ơng trình ngắt sensor.
Start
INC Sensor
Sensor CMP 3
Sensor CMP 5 Set S05 =1
Set S03 =1
Set S04 =1
End
<
<
=
>
=
Sơ đồ thuật toán xử lý ngắt Sensor
Start
Key_buff01=1 ?
No
Calculate Key
Set Key_buff01=1
End
Sơ đồ thuật toán xử lý ngắt bàn phím gọi tầng
Calculate Key
Set Key_buff01=1
Sơ đồ thuật toán xử lý ngắt bàn phím gọi thang
End
Key_buff01=1 ?
No
Start
Hình 2-12 : Các sơ đồ thuật toán xử lý ngắt.
Tín hiệu hóa và lý thuyết chung về tối −u luật điều khiển thang máy Huy Mạnh
Chuyên ngành Tự động hoá XNCN
26
1. Tăng giá trị sensor lên một giá trị, chuyển sang b−ớc 2.
2. So sánh giá trị của sensor với số 3, nếu bằng sang b−ớc 3, lớn hơn sang
b−ớc 4, nếu nhỏ hơn sang b−ớc 6.
3. Set cờ S03 = 1, sang b−ớc 7.
4. So sánh giá trị của sensor với số 5, nếu bằng sang b−ớc 5, nhỏ hơn sang
b−ớc 6.
5. Set cờ S05 = 1, Reset giá trị sensor = 0, chuyển sang b−ớc 7.
6. Set cờ S04 = 1, chuyển sang b−ớc 7.
7. Kết thúc ch−ơng trình.
2.6.2 Ch−ơng trình ngắt đọc phím gọi tầng.
1. Kiểm tra xem phím bấm tr−ớc đó đã đ−ợc xử lý ch−a, nếu ch−a ( key_buff
= 1 ) thì sang b−ớc 3, rồi ( key_buff1 = 0 ) thì sang b−ớc 2.
2. Tính toán và đ−a ra mã của phím đ−ợc gọi ( Scan code ), set key_buff1=1.
3. Kết thúc ch−ơng trình.
2.6.3 Ch−ơng trình ngắt đọc phím gọi thang.
1. Kiểm tra xem phím bấm tr−ớc đó đã đ−ợc xử lý ch−a, nếu ch−a ( key_buff
= 1 ) thì sang b−ớc 3, rồi ( key_buff2 = 0 ) thì sang b−ớc 2.
2. Tính toán và đ−a ra mã của phím đ−ợc gọi ( Scan code ), set key_buff2=1.
3. Kết thúc ch−ơng trình.
Tín hiệu hóa và lý thuyết chung về tối −u luật điều khiển thang máy Huy Mạnh
Chuyên ngành Tự động hoá XNCN
27
2.7 Ch−ơng trình chính
Start
Keyboard
busy=0 ?
Run=0 ?
Running=1
Run up
Ac_up=0 ?
S03=1 ? Keyboard
*Temp_up=1 ?
Slow_down
Stop
S04 =1 ?
S05 =1 ?
++Current
*Curr_up=0
--Ac_up
Set TIM00
Call Door
TIM00=0 ?
Ac_up=0 ?
Wt_dn=0 ?
Call Door
Curr_dn = 0
--Wt_dn
Temp=curr+1
Dn_max>curr ?
Dn_max=curr ?
Run = 1
Ac_dn=Wt_dn
Wt_dn =0
Wt_dn=0 ?
Over_weight ?
Bell
Keyboard
Keyboard
Keyboard Open_fast ?
Keyboard
Close =1 ?
S05=1 ?
++Current
Reset S03,S04,S05
Busy = 0
Temp=Dn_max?
Keyboard
S05 =1 ?
++Current
Reset S03,S04,S05
++Current
*Curr_up=0
Ac_dn=Wt_dn
Wt_dn=0
Ac_up=0 ?
TIM00=0 ?
Call Door
S04 =1 ?
Stop
S05 =1 ?
Slow_down
Open_fast ?
Keyboard
Busy = 0
Run =1
Set TIM00
Keyboard
Bell
Keyboard
Close =1 ? Over_weight ?
Running=1
Run dn
--Current
Reset S03,S04,S05
S05 =1 ?S03 =1 ?
Temp=curr Keyboard
Ac_up=0 ? Temp=Up_min?
Slow_down*Temp_dn=1 ?
Slow_down S04 =1 ?
StopS04 =1 ?
Stop S05 =1 ?
--Current
*Curr_dn=0
Ac_up=Wt_up
Wt_up=0
S05 =1 ?
--Current
*Curr_dn=0
--Ac_dn
Set TIM00
Run =0
Set TIM00
KeyboardTIM00=0 ?TIM00=0 ?
Open_fast ?Call DoorCall Door
Busy = 0Ac_up=0 ?Ac_dn=0 ?
Wt_up=0 ?
Run = 0
Ac_up=Wt_up
Wt_up =0
Wt_up=0 ?
Call Door
Curr_up = 0
--Wt_up
Up_min=curr ?
Up_min>curr ?
Busy = 0
Open_fast ? Keyboard
Keyboard
++Current
Reset S03,S04,S05
KeyboardS05 =1 ?
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
YesYes Yes
Yes
Yes
Yes
Yes
Yes
Yes Yes
Yes
YesYes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
YesYes
Yes
Yes
Yes
Yes
Yes
YesYes
Hình 2-13: L−u đồ thuật toán của ch−ơng trình chính
điều khiển thang máy nhà cao tầng.
Tín hiệu hóa và lý thuyết chung về tối −u luật điều khiển thang máy Huy Mạnh
Chuyên ngành Tự động hoá XNCN
28
1. Gọi ch−ơng trình đọc bàn phím ( Keyboard ), chuyển sang b−ớc 2.
2. Kiểm tra cờ busy, busy = 0 chuyển sang b−ớc 1, busy=chuyển sang b−ớc 3.
3. Kiểm tra cờ run, run = 0 chuyển sang b−ớc 4, run = 1 chuyển sang b−ớc 50.
4. Kiểm tra cờ Over_weight ( quá tải ), nếu Over_weight = 0 chuyển sang
b−ớc 6, Over_weight = 1 chuyển sang b−ớc 5.
5. Báo chuông quá tải, gọi ch−ơng trình Keyboard, chuyển sang b−ớc 4.
6. Kiểm tra cờ đóng cửa hoàn toàn ( Close ), close = 1 chuyển sang b−ớc 8,
ng−ợc lại chuyển sang b−ớc 7.
7. Gọi ch−ơng trình đọc bàn phím ( Keyboard ), chuyển sang b−ớc 6.
8. Thiết lập cờ running = 1 ( đang chạy ), và ra lệnh chạy lên, chuyển sang
b−ớc 9.
9. Kiểm tra sensor S03, nếu có chuyển sang b−ớc 11, ng−ợc lại chuyển sang
b−ớc 10.
10. Gọi ch−ơng trình đọc bàn phím ( Keyboard ) , chuyển sang b−ớc 9.
11. Gán Temp = current + 1 ( current là tầng hiện tại ), chuyển sang b−ớc 12.
12. Kiểm tra Ac_up ( số phần tử có trong hàng đợi lên cần đ−ợc phục vụ trong
hành trình hiện tại ), Ac_up = 0 chuyển sang b−ớc 37, ng−ợc lại chuyển
sang b−ớc 13.
13. Kiểm tra xem tầng sắp đến có cần dừng không, nếu có chuyển sang b−ớc
17, ng−ợc lại chuyển sang b−ớc 14.
14. Gọi ch−ơng trình đọc bàn phím ( Keyboard ) , chuyển sang b−ớc 15.
15. Kiểm tra sensor S05, nếu có chuyển sang b−ớc 16, ng−ợc lại chuyển sang
b−ớc 14.
16. Tăng chỉ số tầng hiện tại, Reset các sensor S03, S04, S05, chuyển sang b−ớc
9.
17. Ra lệnh giảm tốc, chuyển sang b−ớc 18.
18. Kiểm tra Sensor S04, nếu có chuyển sang b−ớc 19, ng−ợc lại chuyển sang
b−ớc 18.
19. Ra lệnh dừng, chuyển sang b−ớc 20.
20. Kiểm tra sensor S05, nếu có chuyển sang b−ớc 21, ng−ợc lại chuyển sang
b−ớc 20.
21. Tăng giá trị tầng hiện tại, xoá hàng đợi, trừ số phần tử trong hàng đợi lên đi
một giá trị , set TIM0 ( trễ thời gian chờ mở cửa ), chuyển sang b−ớc 22.
22. Kiểm tra TIM0, nếu hết thời gian trễ chuyển sang b−ớc 25, ng−ợc lại
chuyển sang b−ớc 23.
23. Gọi ch−ơng trình đọc bàn phím ( Keyboard ) , chuyển sang b−ớc 24.
Tín hiệu hóa và lý thuyết chung về tối −u luật điều khiển thang máy Huy Mạnh
Chuyên ngành Tự động hoá XNCN
29
24. Kiểm tra cờ mở cửa nhanh ( Open_fast ), nếu có chuyển sang b−ớc 25,
ng−ợc lại chuyển sang b−ớc 22.
25. Gọi ch−ơng trình mở cửa ( door ) , chuyển sang b−ớc 26.
26. Kiểm tra Ac_up ( số phần tử có trong hàng đợi lên cần đ−ợc phục vụ trong
hành trình hiện tại ), Ac_up = 0 chuyển sang b−ớc 27, ng−ợc lại chuyển
sang b−ớc 1.
27. Kiểm tra số phần tử trong hàng đợi xuống Wt_dn, Wn_dn = 0 thì chuyển
sang b−ớc 28, ng−ợc lại chuyển sang b−ớc 29.
28. Thiết lập cờ busy = 0, chuyển sang b−ớc 1.
29. So sánh giá trị Dn_max ( phần tử lớn nhất trong hàng đợi xuống ) với tầng
hiện tại , nếu Dn_max = current chuyển sang b−ớc 30, ng−ợc lại chuyển
sang b−ớc 31.
30. Gọi ch−ơng trình mở cửa, xoá phần tử trong hàng đợi xuống, giảm số phần
tử trong hàng đợi xuống đi một giá trị, chuyển sang b−ớc 32.
31. So sánh giá trị Dn_max ( phần tử lớn nhất trong hàng đợi xuống ) với tầng
hiện tại , nếu Dn_max > current chuyển sang b−ớc 1, ng−ợc lại chuyển sang
b−ớc 33.
32. Kiểm tra xem có phần tử trong hàng đợi xuống không, nếu có chuyển sang
b−ớc 33, ng−ợc lại chuyển sang b−ớc 28.
33. Thiết lập cờ run =1, gán Ac_dn = Wt_dn, gán Wt_dn =0 ( chuyển phần tử
từ hàng đợi chờ đ−ợc phục vụ sang hàng đợi cần đ−ợc phục vụ ), chuyển
sang b−ớc 1.
34. So sánh giá trị Temp với Dn_max, nếu Temp = Dn_max thì chuyển sang
b−ớc 38, ng−ợc lại chuyển sang b−ớc 35
35. Gọi ch−ơng trình đọc bàn phím ( Keyboard ), chuyển sang b−ớc 37.
36. Kiểm tra sensor S05, nếu có chuyển sang b−ớc 36, ng−ợc lại chuyển sang
b−ớc 37.
37. Tăng giá trị tầng hiện tại, reset các sensor S03, S04 và S05, chuyển sang
b−ớc 9.
38. Ra lệnh giảm tốc, chuyển sang b−ớc 39.
39. Kiểm tra Sensor S04, nếu có chuyển sang b−ớc 40, ng−ợc lại chuyển sang
b−ớc 39.
40. Ra lệnh dừng, chuyển sang b−ớc 41.
41. Kiểm tra sensor S05, nếu có chuyển sang b−ớc 42, ng−ợc lại chuyển sang
b−ớc 41.
Tín hiệu hóa và lý thuyết chung về tối −u luật điều khiển thang máy Huy Mạnh
Chuyên ngành Tự động hoá XNCN
30
42. Tăng giá trị tầng hiện tại, xoá hàng đợi, trừ số phần tử trong hàng đợi xuống
đi một giá trị , chuyển Ac_dn = Wt_dn, gán Wt_dn = 0, chuyển sang b−ớc
44.
43. Thiết lập cờ run =1, set TIM0 ( trễ thời gian chờ mở cửa ),chuyển sang b−ớc
44.
44. Kiểm tra TIM0, nếu hết thời gian trễ chuyển sang b−ớc 47, ng−ợc lại
chuyển sang b−ớc 45.
45. Gọi ch−ơng trình đọc bàn phím ( Keyboard ) , chuyển sang b−ớc 46.
46. Kiểm tra cờ mở cửa nhanh ( Open_fast ), nếu có chuyển sang b−ớc 47,
ng−ợc lại chuyển sang b−ớc 44.
47. Gọi ch−ơng trình mở cửa ( door ) , chuyển sang b−ớc 48.
48. Kiểm tra Ac_dn ( số phần tử có trong hàng đợi xuống cần đ−ợc phục vụ
trong hành trình hiện tại ), Ac_dn = 0 chuyển sang b−ớc 49, ng−ợc lại
chuyển sang b−ớc 1.
49. Thiết lập cờ busy = 0, chuyển sang b−ớc 1.
50. Kiểm tra cờ Over_weight ( quá tải ), nếu Over_weight = 0 chuyển sang
b−ớc 51, Over_weight = 1 chuyển sang b−ớc 50.
51. Báo chuông quá tải, gọi ch−ơng trình Keyboard, chuyển sang b−ớc 50.
52. Kiểm tra cờ đóng cửa hoàn toàn ( Close ), close = 1 chuyển sang b−ớc 53,
ng−ợc lại chuyển sang b−ớc 54.
53. Gọi ch−ơng trình đọc bàn phím ( Keyboard ), chuyển sang b−ớc 52.
54. Thiết lập cờ running = 1 ( đang chạy ), và ra lệnh chạy xuống, chuyển sang
b−ớc 55.
55. Kiểm tra sensor S03, nếu có chuyển sang b−ớc 57, ng−ợc lại chuyển sang
b−ớc 56.
56. Gọi ch−ơng trình đọc bàn phím ( Keyboard ) , chuyển sang b−ớc 57.
57. Gán Temp = current ( current là tầng hiện tại ), chuyển sang b−ớc 58.
58. Kiểm tra Ac_dn ( số phần tử có trong hàng đợi lên cần đ−ợc phục vụ trong
hành trình hiện tại ), Ac_dn = 0 chuyển sang b−ớc 80, ng−ợc lại chuyển
sang b−ớc 59.
59. Kiểm tra xem tầng sắp đến có cần dừng không, nếu có chuyển sang b−ớc
63, ng−ợc lại chuyển sang b−ớc 60.
60. Gọi ch−ơng trình đọc bàn phím ( Keyboard ) , chuyển sang b−ớc 61.
61. Kiểm tra sensor S05, nếu có chuyển sang b−ớc 62, ng−ợc lại chuyển sang
b−ớc 59.
62. Giảm chỉ số tầng hiện tại, Reset các sens
Các file đính kèm theo tài liệu này:
- 1034_419_dieukhienthangmay.pdf