Đồ án Ứng dụng PLC cho hệ thống khống chế điều khiển thang máy

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.

pdf41 trang | Chia sẻ: maiphuongdc | Lượt xem: 1480 | Lượt tải: 1download
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:

  • pdf1034_419_dieukhienthangmay.pdf