Cảm biến, nút bấm và thiết bị chấp hành Thang máy cho một tòa nhà 6 tầng gồm có các thành phần sau: Các cảm biến: - Mỗi tầng có một cảm biến tiệm cận để xác định vị trí của thang máy -
Trang 1a BÀI TẬP DÀI THIẾT KẾ THANG MÁY 6 TẦNG BẰNG PLC S7-300
I Mô tả đối tượng thang máy và yêu cầu bài toán
1 Cảm biến, nút bấm và thiết bị chấp hành
Thang máy cho một tòa nhà 6 tầng gồm có các thành phần sau:
Các cảm biến:
- Mỗi tầng có một cảm biến tiệm cận để xác định vị trí của thang máy
- Ở của ra vào gắn 2 cảm biến tiệm cận để xác định trạng thái đóng hoàn toàn và
mở hoàn toàn của cửa
- Một cảm biến gắn ở cửa để xác định xem có người đang ra vào thang máy hay không
Nút bấm:
- Phía trong buồng thang có một bàn phím để đặt yêu cầu gồm 5 phím chọn tầng
và hai phím yêu cầu đóng mở cửa
- Phía ngoài buồng thang ở mỗi tầng có các phím gọi thang.Các phím gọi thang được chia làm hai loại đi lên và đi xuống để xác định hướng đi mong muốn của người dùng Các tầng từ 2-4 có cả hai phím đi lên và đi xuống, tầng 1 chỉ có phím đi lên, tầng 5 chỉ có phím đi xuống
Các cơ cấu chấp hành:
- Một động cơ để kéo thang chuyển động thẳng đứng được điều khiển bằng hai tín hiệu đi lên và đi xuống
- Một động cơ để đóng mở cửa được điều khiển bằng hai tín hiệu đóng cửa và mở cửa
2 Yêu cầu bài toán
Bài toán điều khiển logic cho hệ thống thang máy được chia thành hai bài toán nhỏ:
- Bài toán chuyển động có nhiệm vụ xác định chiều chuyển động của thang và xác định xem có mở của hay không
- Bài toán cửa thực hiện các thao tác đóng mở cửa
Giữa hai bài toán có một điều kiện liên động Bài toán của chỉ được thực hiện khi thang đã dừng lại còn bài toán chuyển động chỉ được thực hiện khi cửa thang đã được đóng hoàn toàn
Trang 2 Bài toán chuyển động
Ban đầu thang đang ở trạng thái nghỉ nếu có yêu cầu hoặc tín hiệu gọi thang thì thang sẽ chuyển chuyển sang trạng thái làm việc và kiểm tra các điều kiện bắt đầu chuyển động:
- Nếu các yêu cầu hoặc phím gọi nằm cùng tầng với vị trí hiện tại của thang thì
mở cửa thang và sau khi thực hiện xong bài toán cửa thang sẽ trở lại trạng thái nghỉ
- Nếu các yêu cầu và phím chọn nằm ở các tầng khác thì xác định chiều chuyển động cho thang để đi tới vị trí mong muốn của người dùng Nếu có cả yêu cầu ở trên và ở dưới vị trí hiện tại của thang thì trình tự ưu tiên như sau: nếu thang đang ở phía nửa trên của tòa nhà (trong trường hợp này và tầng 3-4) thì ưu tiên
đi lên, nếu thang đang ở nửa phía dưới của tòa nhà (tầng 2) thì ưu tiên đi xuống
- Nếu đồng thời xảy ra cả hai trường hợp trên thì thực hiện theo trường hợp thứ nhất
Khi thang đang chuyển động theo một chiều nhất định thì thực hiện ưu tiên theo chiều chuyển động:
- Khi đi qua một tầng thang chỉ mở cửa nếu có yêu cầu từ bàn phím trong thang máy hoặc yêu cầu cùng chiều với chiều chuyển động hiện thời của thang máy Sau khi đóng cửa các yêu cầu này sẽ được xóa đi Các yêu cầu ngược chiều sẽ không được thực hiện và cũng không bị xóa đi kễ cả nếu thang có dừng lại và
mở của tại vị trí tương ứng với yêu cầu đó
- Đồng thời khi đi qua một tầng ta sẽ kiểm tra các yêu cầu và phím chọn thuận theo chiều chuyển động (Nếu thang đi lên ta chỉ kiểm tra các yêu cầu và phím gọi đi lện của các tầng phía trên vị trí hiện tại của thang, nếu thang đi xuống thì ngược lại) Nếu không còn yêu cầu thuận chiều ta sẽ kiểm tra xem còn yêu cầu nào khác hay không Nếu còn thang sẽ đảo chiều chuyển động và đi tới vị trí mong muốn của người dùng, còn nếu không có yêu cầu nào khác thang sẽ dừng lại và chuyển sang trạng thái nghỉ
Bài toán cửa
Cửa thang sẽ mở khi thang đang đứng yên và có lệnh mở cửa được đưa ra từ bài toán chuyển động hoặc có yêu cầu mở cửa từ trong buồng thang
Khi có tín hiệu từ cảm biến cửa báo thang đã mở hoàn toàn thì động cơ thang sẽ dừng lại và một bộ đếm được khởi động
Khi thời gian bộ đếm kết thúc hoặc khi có yêu cầu đóng cửa từ trong buồng thang thì cửa thang sẽ được đóng lại
Trang 3Nếu thang đang đóng và có tín hiệu từ cảm biến của báo có người đang ra vào buồng thang thì cửa thang sẽ mở ra
Khi có tín hiệu từ cảm biến cửa báo cửa đã đóng hoàn toàn thì ta sẽ kiểm tra các điều kiện của thang để quyết định xem thang sẽ tiếp tục chuyển động hay dừng lại và chuyển sang trạng thái nghỉ
b II Thống kê các đầu vào – ra của hệ thống thang máy 6 tầng
c 1 Đầu vào
TT Giải thích Symbol Bit Bit M Ký hiệu
13 Gọi tầng 1 trong thang máy BI_F1_INSIDE I1.4 M1.4 B11
14 Gọi tầng 2 trong thang máy BI_F2_INSIDE I1.5 M1.5 B12
15 Gọi tầng 3 trong thang máy BI_F3_INSIDE I1.6 M1.6 B13
16 Gọi tầng 4 trong thang máy BI_F4_INSIDE I1.7 M1.7 B14
17 Gọi tầng 5 trong thang máy BI_F5_INSIDE I2.0 M2.0 B15
18 Gọi tầng 6 trong thang máy BI_F6_INSIDE I2.1 M2.1 B16
19 Nút mở cửa trong thang máy BI_OPEN_INSIDE I2.2 M2.2 B17
20 Nút đóng cửa trong thang máy BI_CLOSE_INSIDE I2.3 M2.3 B18
21 Nút cảnh báo dừng khẩn cấp BI_WARNING_INSIDE I2.4 M2.4 B19
Trang 4e 2 Đầu ra
TT Giải thích Symbol Bit Ký hiêu CTT & KĐM
1 Đèn trong thang máy khi làm việc Q_DEN_LV Q0.
0
Đ1
1
A1
2
A2
4 Động cơ mở cửa thang máy Q_OPEN Q0.
3
A3
5 Động cơ đóng cửa thang máy Q_CLOSE Q0.
4
A4
0
LED_UP
8 Led hiển thị đi xuống Q_LED_DOW
N
Q2.
1
LED_DOWN
III.Thuật toán
Bài toán điều khiển thang được chia làm ba phần:
- Vòng quét chính có nhiệm vụ đọc đầu vào lưu các giá trị vào bộ nhớ, thực hiện hiển thị led 7 thanh và kiểm tra các điều kiện để thực hiện hai bài toán con là bài toán chuyển động và bài toán cửa
- Bài toán chuyển động có nhiệm vụ xác định chiều chuyển động và xác định xem
có dừng thang và mở cửa hay không
- Bài toán cửa có nhiệm vụ thực hiện quá trình mở của, xóa các yêu cầu sau khi của đã đóng
Trong bài toán con có một số khâu để thực hiện một số nhiệm vụ trong bài toán:
- Khâu nhập dữ liệu có nhiệm vụ đọc các đầu vào và ghi vào vùng nhớ tương ứng trong bộ nhớ Khâu này được thực hiện khi bắt đầu vòng quét chính
- Khâu đưa đầu ra có nhiệm vụ dựa vào các biến trạng thái để tính toán các đầu ra
và đưa ra đầu ra điều khiển và hiển thị Khâu này được thực hiện ở cuối vòng quét chính
- Khâu tính toán sẽ tính các giá trị của biến yêu cầu và kiểm tra từ các biến đầu vào Khâu này thực hiện khi bắt đầu bài toán chuyển động
- Khâu kiểm tra và xóa yêu cầu có nhiệm vụ xóa các yêu cầu đã thực hiện kiểm tra xem thang sẽ tiếp tuc chuyển động hay sẽ chuyển sang trạng thái nghỉ
- Khâu kiểm tra điều kiện khi bắt đầu chuyển động có nhiệm vụ xác định chiều chuyển động ban đầu
Thuật toán được trình bày dưới dạng sơ đồ khối với một số quy ước như sau:
- Kí hiệu A là phép và logic, O là phép hoặc logic, NOT là phép đảo
Trang 5- Mid là một hằng số được cài đặt trong chương trình của Step 7 cụ thể trong trường hợp cụ thể của bài toán Mid = 3 ( 0x04 do vị trí trong thuật toán được thể hiện dưới dạng dãy các bit)
- Các kí hiệu của các biến trong thuật toán được liệt kê trong phần cấu trúc dữ liệu
IV Triển khai thuật toán trên Step 7
Trong chương trình địa chỉ vùng nhớ được thay bằng tên biến đã được cài đặt trong phần mềm Step 7 và đã được ghi rõ trong phần cấu trúc dữ liệu
1 Vòng quét chính
a Chương trình con đọc giá trị của đầu vào (Read_Data)
Các tín hiệu yêu cầu được đọc và lưu vào bộ nhớ Các yêu cầu này sẽ không mất đi khi các tín hiệu đầu vào kết thúc
Các tín hiệu từ cảm biến sẽ được đọc và thay đổi qua từng chu kì nên chỉ được ghi trực tiếp vào bộ nhớ
Địa chỉ đầu vào được cài đặt trong Step 7 và có thể thay đổi nêu có sự cố ở một trong các đầu vào
O "FLOOR_1"
O "M_FLOOR_1"
= "M_FLOOR_1"
O "FLOOR_2"
O "M_FLOOR_2"
= "M_FLOOR_2"
O "FLOOR_3"
O "M_FLOOR_3"
= "M_FLOOR_3"
O "FLOOR_4"
O "M_FLOOR_4"
= "M_FLOOR_4"
O "FLOOR_5"
O "M_FLOOR_5"
= "M_FLOOR_5"
O "UP_1"
O "M_UP_1"
= "M_UP_1"
O "UP_2"
O "M_UP_2"
= "M_UP_2"
O "DOWN_2"
O "M_DOWN_2"
= "M_DOWN_2"
O "DOWN_3"
O "M_DOWN_3"
= "M_DOWN_3"
O "DOWN_4"
O "M_DOWN_4"
= "M_DOWN_4"
O "DOWN_5"
O "M_DOWN_5"
= "M_DOWN_5"
A "Sensor_1"
= "M_Sensor_1"
A "Sensor_2"
= "M_Sensor_2"
A "Sensor_3"
= "M_Sensor_3"
A "Sensor_4"
= "M_Sensor_4"
A "Sensor_5"
Trang 6O "UP_3"
O "M_UP_3"
= "M_UP_3"
O "UP_4"
O "M_UP_4"
= "M_UP_4"
a Chương trình con hiển thị led (display)
Để hạn chế việc phải chuyển đổi đầu vào cảm biến sang một dạng khác chương trình hiển thị Led 7 thanh sẽ lấy đầu vào trực tiếp từ giá trị cảm biến tầng và chỉ được gọi khi giá trị cảm biến tầng khác không
L #hienthi
JL list
JU so0
JU so1
JU so2
JU so3
JU so4
JU so5
JU so6
JU so7
JU so8
JU so9
list: JU com
so0: L W#16#3F
T #hienthiled
JU com
so1: L W#16#6
T #hienthiled
JU com
so2: L W#16#59
T #hienthiled
Trang 7JU com
so3: L W#16#4F
T #hienthiled
JU com
so4: L W#16#66
T #hienthiled
JU com
so5: L W#16#6D
T #hienthiled
JU com
so6: L W#16#7D
T #hienthiled
JU com
so7: L W#16#7
T #hienthiled
JU com
so8: L W#16#7F
T #hienthiled
JU com
so9: L W#16#6F
T #hienthiled
JU com
com: BEU
b Chương trình chính (OB1)
PLC sẽ gọi chương trình con để đọc đầu vào sau đó kiểm tra điều kiện và quyết định xem sẽ gọi chương trình giải quyết bài toán chuyển động hoặc bài toán cửa và cuối cùng tính toán và đưa ra giá trị đầu ra tương ứng
Đầu ra của led chỉ chiều đi lên, đi xuống sẽ lấy từ giá trị của bit trạng thái đi lên, đi xuống
Trang 8Đầu ra của động cơ cửa sẽ lấy từ bit trạng thái đóng mở cửa
Đầu ra của động cơ buồng thang sẽ là giá trị của phép và giữa bit trạng thái chuyển động và bit trạng thái đi lên, đi xuống
L "M_Sensor"
L 0
==I
JC OUTPUT
CALL "Display"
Floor :="M_Sensor"
L "M_UP"
L "M_DOWN"
OW
L "M_FLOOR"
OW
L 0
==I
JC Door_Problem
A "Work"
JC Work
SET
= "F"
SET
= "Work"
JU Move_Problem
Work: A "CD"
JCN Door_Problem
Move_Problem : CALL "Move_Problem"
JU OUTPUT
Door_Problem : CALL "Door_Problem"
OUTPUT : A "UP"
A "CD"
= "Move_Up"
A "DOWN"
A "CD"
= "Move_Down"
A "CLOSE"
= "Move_Close"
A "OPEN"
= "Move_Open"
Trang 9A "UP"
= "LED_Up"
A "DOWN"
= "LED_Down"
1 Bài toán chuyển động
a Chương trình con tính các giá trị kiểm tra (CAL)
Từ đầu vào đã được đọc và ghi vào bộ nhớ ở vòng quét chính chương trình sẽ tính toán các biến YC và KT để xử dụng trong các phần tiếp theo của chương trình
L "M_UP"
L "M_DOWN"
OW
L "M_FLOOR"
OW
T "YC"
L "M_Sensor"
L 2
*I
L 1
-I
INVI
L "YC"
AW
T "YC_UP"
L "M_Sensor"
L 1
-I
L "YC"
AW
T "YC_DOWN"
L "M_Sensor"
L "YC"
AW
T "KT"
L "M_UP"
L "M_FLOOR"
OW
L "M_Sensor"
AW
T "KT_UP"
L "M_DOWN"
L "M_FLOOR"
OW
L "M_Sensor"
AW
T "KT_DOWN"
b Chương trình con xác định các điều kiện đầu (Start_Move)
Khi thang chuyển từ trạng thái nghỉ sang làm việc thì biến trạng thái F được đưa lên 1
Ở đầu bài toán chuyển động ta sẽ kiểm tra F và gọi hàm Start_Move nếu F bằng 1
để đưa ra các giá trị đầu của chuyển động
Khi kết thúc khối hàm ta sẽ xóa F để báo thang đã chuyển sang trạng thái làm việc
L "KT"
L 0
Trang 10==I
JCN OPEN
L "M_Sensor"
L #Mid
>I
JCN DOWN
L "YC_UP"
L 0
==I
JC MOVE_DOWN
JU MOVE_UP
DOWN: L "YC_DOWN"
L 0
==I
JCN MOVE_DOWN
MOVE_UP : SET
= "CD"
SET
= "UP"
JU END
MOVE_DOWN : SET
= "CD"
SET
= "DOWN"
JU END
OPEN: SET
= "D/M"
END: CLR
= "F"
c Bài toán chuyển động (Move_Problem)
Kiểm tra các giá trị tính toán được từ đó đưa ra tín hiệu cho biết chiều chuyển động của thang hay thang có dừng lại và mở của hay không bằng cách thay đổi các biến trạng thái đi lên, đi xuống, báo chuyển động và báo đóng mở cửa
Trang 11CALL "CAL"
A "F"
JCN CHECK
CALL "Start_Move"
JU END
CHECK: A "UP"
JCN Move_Down
L "KT_UP"
L 0
==I
JCN Open_Door
L "YC_UP"
L 0
==I
JCN END
JU Reverse
Move_Down : L "KT_DOWN"
L 0
==I
JCN Open_Door
L "YC_DOWN"
L 0
==I
JCN END
Reverse : A "UP"
NOT = "UP"
A "DOWN"
NOT = "DOWN"
A "CLOSE"
JC NOT_OPEN Open_Door : SET = "D/M"
CLR = "CD"
JU END NOT_OPEN : L "M_Sensor"
INVI
L "M_UP"
AW
T "M_UP"
POP
L "M_DOWN"
AW
T "M_DOWN"
END: CLR = "CLOSE"
2 Bài toán cửa
a Thực hiện việc đóng mở cửa (Door_Problem)
Thực hiện việc kiểm tra yêu cầu đóng mở cửa từ nút bấm và từ bài toán chuyển động kết hợp với các cảm biến để xác định chiều quay của động cơ cửa
A "D/M"
JCN STOP
CLR
= "D/M"
OPEN: SET
= "OPEN"
CLR
= "CLOSE"
A "Full_Open"
Trang 12JC FULL_OPEN
SET
= "Work"
BEU
STOP: O "OPEN"
O "Door_Open"
JC OPEN
A "CLOSE"
A "Contact"
JC OPEN
O "Timer"
O "Door_Close"
JCN WAIT
CLR
= "OPEN"
SET
= "CLOSE"
JU Timer
FULL_OPEN : CLR
= "OPEN"
Timer: A "Full_Open"
L S5T#5S
SD "Timer"
BEU
WAIT: A "Full_Close"
CC "Check"
d Xóa các yêu cầu và kiểm tra điều kiện (Check)
Các yêu cầu đã thực hiện sẽ được xóa khỏi bộ nhớ Sau khi xóa yêu cầu chương trình sẽ kiểm tra xem người dùng còn có các yêu cầu khác hay không Nếu còn thì hệ sẽ tiếp tục chuyển động còn nếu ngược lại thì hệ sẽ chuyển sang trạng thái nghỉ
O "UP"
O "DOWN"
JCN RESET
KHONG_DUNG : A "UP"
JC MOVE_UP
MOVE_DOWN : L "M_Sensor"
INVI
L "M_DOWN"