hệ thống bãi giữ xe ô tôt tự động
TRANSCRIPT
Phần I: Hệ thống bãi giữ xe ôtô tự động Luận văn tốt nghiệp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 1
PHẦN I
HỆ THỐNG BÃI GIỮ XE ÔTÔ TỰ ĐỘNG
I.TÌM HIỂU VỀ BÃI GIỮ XE
Ngày nay ở các trung tâm thành phố lớn với sự phát triển mật độ dân cư và
xe cộ ngày càng đông đúc. Đặc biệt là sự gia tăng về số lượng xe ôtô ngày càng
nhiều và điều này phần nào cũng phản ánh sự phát triển của một quốc gia. Song
song với sự phát triển đó, người ta đặt vấn đề là xây dựng những bãi giữ xe để phục
vụ cho người dân trong công việc cũng như trong việc đi lại của họ. Vì thế, ngày
nay trên các nước tiên tiến trên thế giới như Nhật Bản, Hàn Quốc,…ở những thành
phố chật hẹp, người ta xây dựng hệ thống bãi giữ xe ôtô tự động được trang bị thiết
bị nâng để di chuyển ôtô từ mặt đất lên điểm
đỗ trên cao(hệ thống nổi hoặc di chuyển xe
xuống điểm đỗ dưới lòng đất (hệ thống ngầm).
Đây là những giải pháp giúp tăng hơn 100 lần
số lượng xe trên một diện tích truyền thống,
cho phép giải quyết trình trạng thiếu mặt bằng
xây dựng.
Một số mô hình bãi xe thực tế ở một số nước
Mô hình xếp chồng (Auto Stacker):
Mô hình này sử dụng
một hệ thống thủy lực để nâng
tối đa 4 ôtô xếp cạnh nhau lên
một tầng cao để dành chỗ cho 4
xe khác ở bên dưới. Tuy nhiên,
giải pháp này chỉ phù hợp với qui
mô nhỏ, hiệu quả kinh tế không cao.
Phần I: Hệ thống bãi giữ xe ôtô tự động Luận văn tốt nghiệp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 2
Mô hình bãi xe nhiều tầng (Driver in Parking):
Mô hình này với các đường dốc để chủ xe tự
lái vào và ra khỏi bãi xe. Mức độ tự động hoá tương
đối không cao. Giải pháp này tuy phổ biến nhưng
chưa phổ biến về mặt không gian, ô nhiễm môi
trường.
Mô hình bãi giữ xe tự động hoá (Above ground Automated Parking):
Mô hình này là một bước cải
tiến so với 2 mô hình trên,sức chứa có
thể tăng gấp nhiều lần so với mô hình bãi
giữ xe nhiều tầng. Bố trí các xe sát nhau
và thu hẹp khoảng cách giữa các tầng,
các khâu nhận bão quản và trả xe hoàn
toàn được tự động hóa.
Mô hình bãi xe tự động hoá dạng ngầm (Underground Automated Parking):
Có cấu trúc tương tự mô hình bãi giữ xe tự
động hoá nhưng đươc thiết kế ở dạng ngầm dưới
đất.
II.HỆ THỐNG QUẢN LÝ BÃI GIỮ XE ÔTÔ TỰ ĐỘNG
Hệ thống quản lý bãi xe tự động được thực hiện một cách tự động nhờ vào
việc lập trình cho PLC và các cảm biến được đặt tại các cửa vào và ra.
Sức chưá của bãi xe cho phép tối đa là
100 xe bao gồm các loại xe 4 chỗ, xe 7 chỗ,
xe 12 chỗ và xe 30 chỗ. Khi có xe vào, cảm
biến phát hiện và PLC điều khiển mở cửa cho
xe vào, phân loại xe, và nhờ việc phân loại xe
mà PLC đếm số xe các loại vào trong ngày.
Khi xe đã vào, cảm biến sẽ phát hiện và PLC điều khiển đóng cửa vào.
Phần I: Hệ thống bãi giữ xe ôtô tự động Luận văn tốt nghiệp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 3
Và tương tự, khi có xe
ra, cảm biến sẽ phát hiện và
điều khiển mở cửa cho xe ra,
phân loại xe và PLC sẽ đếm số
xe các loại ra trong ngày. Khi
xe đã ra, cảm biến sẽ phát hiện,
PLC điều khiển đóng cửa ra.
Khi bãi xe còn trống xe, thì
một đèn xanh sẽ sáng để báo
hiệu là xe được phép vào. Ngược lại, khi bãi xe
đầy thì đèn đỏ sẽ sáng để báo hiệu là xe không
được phép vào.
1. CÁC KHÂU CƠ BẢN
Mở cửa
Khi có xe vào hoặc ra, thì các cảm biến tại các cửa vào hoặc ra sẽ nhận biết
được tín hiệu và thông báo đến PLC, PLC sẽ tác động điều khiển mở cửa. Khi cửa
mở tối đa, công tắc hành trình sẽ tác động, PLC sẽ điều khiển cửa dừng lại.
Phân loại xe và đếm số xe, tính tiền gửi xe
Khi xe đã vào hoặc ra, cảm biến sẽ phân loại xe 4 chỗ, 7 chỗ, 12 chỗ, 30 chỗ
và thông báo đến PLC, PLC sẽ tác động đến bộ đếm để đếm số xe vào hoặc ra và
tính tiền gửi xe.
Đóng cửa
Khi xe đã vào hoặc đã ra khỏi cửa, cảm biến sẽ nhận biết được tín hiệu và sẽ
thông báo đến PLC, PLC sẽ tác động điều khiển mở cửa. Khi cửa đóng tối đa, công
tắc hành trình sẽ tác động, PLC sẽ điều khiển cửa dừng lại.
2. NGUYÊN TẮC HOẠT ĐỘNG
Hệ thống quản lý bãi giữ xe ôtô hoạt động dựa trên nguyên tắc lập trình PLC
dùng để điều khiển các cửa vào ra, phân loại và đếm số xe thông qua các cảm biến,
Phần I: Hệ thống bãi giữ xe ôtô tự động Luận văn tốt nghiệp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 4
động cơ, công tắc hành trình,v.v,…truyền động của cửa nhờ vào môt động cơ được
gắn trực tiếp với thanh gạt.
Cửa vào
Khi có xe vào, cảm biến S1 sẽ nhận biết được tín hiệu và chuyển đến PLC,
PLC điều khiển mở cửa.
Khi thanh gạt mở tối đa sẽ chạm vào công tắc hành trình trên CT1 ở cửa vào,
công tắc này tác động đến PLC, PLC sẽ điều khiển dừng mở cửa.
Khi xe đã vào, tuỳ theo từng loại xe mà các cảm biến S2, S3, S4, S5 tác động
đến bộ đếm của PLC để đếm số xe vào trong bãi.
Khi xe đã vào, cảm biến S5 sẽ tác động, đưa tín hiệu về PLC, PLC sẽ điều
khiển đóng cửa lại.
Khi thanh gạt đóng tối đa sẽ chạm vào công tắc hành trình dưới CT2 ở cửa
vào, công tắc này sẽ tác động đến PLC, PLC sẽ điều khiển dừng đóng cửa.
Cửa ra
Khi có xe ra, cảm biến S6 sẽ nhận biết được tín hiệu và chuyển đến PLC,
PLC điều khiển mở cửa.
Khi thanh gạt mở tối đa sẽ chạm vào công tắc hành trình trên CT3 ở cửa ra,
công tắc này tác động đến PLC, PLC sẽ điều khiển dừng mở cửa.
Khi xe đã ra, tuỳ theo từng loại xe mà các cảm biến S7, S8, S9, S10 tác động
đến bộ đếm của PLC để đếm số xe ra khỏi bãi.
Khi xe đã ra, cảm biến S10 sẽ tác động, đưa tín hiệu về PLC, PLC sẽ điều
khiển đóng cửa lại.
Khi thanh gạt đóng tối đa sẽ chạm vào công tắc hành trình dưới CT4 ở cửa ra,
công tắc này sẽ tác động đến PLC, PLC sẽ điều khiển dừng đóng cửa.
Sau khi đã phân loại xe ra, giao tiếp máy tính sẽ tính tiền thời gian mà xe đã
gửi ở trong bãi xe.
3. PHẦN TỬ ĐIỀU KHIỂN, CẢM BIẾN VÀ CHẤP HÀNH CỦA THIẾT BỊ
Thiết bị điều khiển
PLC là thiết bị lập trình điều khiển cho các hoạt động đóng mở cửa, hiển thị
đèn, phân loại xe và đếm số xe.
Phần I: Hệ thống bãi giữ xe ôtô tự động Luận văn tốt nghiệp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 5
Cấu trúc phần cứng:
Nguồn: AC (220V,110V)
DC (24V,12V)
Bộ vi xử lý: đọc các tín hiệu vào thực hiện các hoạt động điều khiển theo
chương trình đã được lưu trong bộ nhớ và truyền các tín hiệu ra các thiết bị xuất.
Bộ nhớ: Là nơi để lưu dữ liệu và chương trình cho các hoạt động điều khiển
dưới sự kiểm tra của bộ vi xử lý.
ROM : bộ nhớ chỉ đọc
RAM : bộ nhớ truy xuất ngẫu nhiên
EEPROM : có thể xoá bằng điện và có thể lập trình lại được.
Thiết bị lập trình:
+ Lập trình trên máy tính
Thiết bị lập trình
Bộ nhớ Giao diện xuất Giao diện
Bộ vi xử lý
Nguồn
Bus dữ liệu
Bộ nhớ Vi xử lý Bộ nhớ
Bus điều khiển
Thiết bị nhập
Phần I: Hệ thống bãi giữ xe ôtô tự động Luận văn tốt nghiệp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 6
+ Lập trình riêng
Các thiết bị nhập và xuất :
Cung cấp giao diện giữa hệ thống và thế giới bên ngoài cho phép kết
nối giữa các cảm biến, động cơ và PLC.
Ưu điểm của PLC:
Có kích thước nhỏ gọn, được thiết kế để có thể chịu được rung động,nhiệt,
độ ẩm và tiếng ồn.
Có độ ổn định cao.
Dễ dàng nhanh chóng thay đổi cấu trúc của mạch điều khiển bằng cách lập
trình lại đáp ứng yêu cầu điều khiển mà không cần thay đổi phần cứng.
Có các chức năng kiểm tra lỗi, dự báo lỗi.
Có thể nhân đôi các ứng dụng nhanh và ít tốn kém.
Có thể kết nối mạng vi tính để giám sát hệ thống.
Điều khiển linh hoạt đa dạng.
Các ứng dụng của PLC:
Điều khiển bãi giữ xe ôtô tự động.
Điều khiển các quá trình sản suất.
Giám sát hệ thống,an toàn nhà xưởng.
Hệ thống báo động.
Điều khiển thang máy.
Điều khiển động cơ.
Cảm biến
Cảm biến quang:
Cảm biến quang là cảm biến hoạt động dựa trên nguyên tắc phát và thu tín
hiệu ánh sáng.
Có 2 dạng cảm biến quang:
Cảm biến quang dạng thu và phát rời:
Là cảm biến gồm hai bộ phát và thu được tách rời ra riêng
biệt. Các thiết bị chuyển mạch quang điện vận hành theo kiểu truyền
phát, vật thể cần phát hiện sẽ chắn chùm ánh sáng (thường là bức xạ
hồng ngoại) không cho chúng chiếu tới thiết bị dò.
Phần I: Hệ thống bãi giữ xe ôtô tự động Luận văn tốt nghiệp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 7
Cảm biến quang dạng thu và phát chung:
Là cảm biến gồm hai phần phát và thu được gộp chung thành
một khối. Các thiết bị chuyển mạch quang điện vận hành theo kiểu
phản xạ, vật thể cần phát hiện sẽ phản chiếu chùm ánh sáng lên thiết
bị dò.
Trong cả hai loại trên, cực phát xạ thông thường là Diode phát quang (LED).
Thiết bị dò bức xạ có thể là Transistor quang, thường là hai Transistor được gọi là
cặp Darlington. Cặp Darlington làm tăng độ nhạy của thiết bị. Tuỳ theo mạch được
sử dung đầu ra có thể được chế tạo để chuyển mạch đến mức thấp khi ánh sáng đến
Transistor.
Các cảm biến được cung cấp dưới dạng các hộp cảm nhận sự có mặt của các
vật thể ở khoảng cách ngắn, thường nhỏ hơn 5mm đối với cảm biến hình chữ U.
Đối với các loại cảm biến nói trên, ánh sáng được chuyển thành sự thay đổi
dòng điện, điện áp hoặc điện trở đó chính làmột đặc trưng mang bản chất điện.
Cảm biến thu phát hồng ngoại:
IC phát BL9148:
Đây là một bộ truyền phát hồng ngoại ứng dụng bởi công nghệ CMOS. 1948
kết hợp với BL9149 tạo ra 10 chức năng , với BL 9150 tạo ra 18 chức năng và 75
lệnh có thể phát xạ: trong đó 63 lệnh là liên tục, có thế có nhiều tổ hợp phím; 12
phím không liên tục, chỉ có thể sử dụng phím đơn. Với cách tổ hợp như vậy có thể
dùng cho nhiều loại thiết bị từ xa.
Đặc tính :
Diode phát quang
Thiết bị dò quang học
Vật thể
Diode phát quang Thiết bị dò quang lọc
Phần I: Hệ thống bãi giữ xe ôtô tự động Luận văn tốt nghiệp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 8
+ Được sản xuất theo công nghệ CMOS.
+ Tiêu thụ công suất thấp.
+ Vùng điện áp hoạt động : 2.2V ÷ 5V
+ Sử dụng được nhiều phím
+ Ít thành phần ngoài.
Ứng dụng :
Bộ phát hồng ngoại trong các thiết bị điện tử như: TV, Video cassette
Recoder, và cũng có thể sử dụng để cho các ứng dụng công nghiệp khác.
Sơ đồ và chức năng các chân IC :
+ Chân 1(Vss): là chân Mass được nối với cực âm
của nguồn điện.
+ Chân 2 va 3: là hai chân để nối với bộ giao động
bên ngoài.
+ Chân 4-9(K1-K9): là đầu của các tính hiệu bàn
phím kiểu ma trận, các chân K1 đến K6 kết hợp với các
chân 10 đến 12(T1-T3) để tạo thành ma trận phím 18 phím
+ Chân 13 (CODE): là chân mã số dùng để kết hợp với các chân T1-T2 để
tạo ra tổ hợp mã hệ thống giữa phần phát và phần thu.
+ Chân 14 (TEST): là chân dùng để kiểm tra mã của phần phát, bình thường
khi sử dụng có thể bỏ trống.
+ Chân 15 (TXout): là đầu ra của tín hiệu đã được điều chế FM.
+ Chân 16 (Vcc): là chân cấp nguồn dương.
Sơ đồ khối:
Bộ tạo dao động và bộ phân tần: để có
thể phát được đi xa, ta cần có một xung
có tấn số 38 Khz ở nơi nhận nhưng trên
thị trường khó tìm được thạch anh
đúng tần số nên ta chọn tần số của
thạch anh là 455Khz cho bộ tạo cao
động. Sau đó tần số sẽ được đưa qua bộ
phân tần để chia nó ra thành 12 lần.
Phần I: Hệ thống bãi giữ xe ôtô tự động Luận văn tốt nghiệp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 9
Mạch ứng dụng :
150 pF
DIODE
0
R2
10K
3 VCC
1MF
0
DIODE
0
3 VCC
0 10K
LED
150 pF
U5
BL 9148
1
7
16
1211
15
6
3
45
14
109
13
8
2 VSS
K4
VCC
T3T2
TXOUT
K3
XT
K1K2
TEST
T1K6
CODE
K5
XT
455KHZ
100
HONG NGOAI
Tính toán:
Bộ tạo dao động tần số sóng mang:
+ Chọn tần số dao động: tần số sóng mang mang
mã truyền là tần số thu được do vi mạch mã hóa sau
khi tiến hành chia 12 lần đối với tần số dao động của
bộ cộng hưởng bằng thạch anh được đấu bên ngoài.
Cho nên mức độ ổn định của tần số này phụ thuộc vào
chất lượng và quy cách của thạch anh. Tần số dao
động của mạch phát thường là 400-500KHz. Đối với
mạch phát trên thì ta chọn thạch anh là 455KHz.
+ Tần số dao động của sóng mang được tính theo công thức:
12Cfoscf
Từ đó suy ra: 455 /12 38Cf KHz KHz
+ Do cấu tạo bên trong của IC BL9148 có một cổng đảo dùng để phối hợp với
các linh kiện bên ngoài bằng thạch anh hoặc bằng mạch LC để tạo thành mạch dao
động. Vì mạch LC khá cồng kềnh và độ ổn định không cao so với thạch anh nên ta
chọn bộ dao động thạch anh.
Mạch khuếch đại phát : Do tín hiệu ngõ ra của IC phát có dòng bé: -
0.1mA1.0mA nên ta phải khuếch đại chúng lên. Vì thế, ta dùng transistor để
khuếch đại dòng cấp cho Led hồng ngoại phát đi.
Phần I: Hệ thống bãi giữ xe ôtô tự động Luận văn tốt nghiệp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 10
+ Khi chưa cấp nguồn thì Q off
không có dòng qua Led hồng ngoại.
+ Khi cấp nguồn cho mạch phát : Q on
Vout = VB Q dẫn bão hòa VCE = VCE bão
hòa = 0.2V
+ Led hồng ngoại có điện áp cho phép trong
khoảng 1.23.3 V, dòng làm việc 30mA1A, RIR =
1030
1.2 3.3IRV V
* *IR E IR EIR IR
MAX MIN
R V R VR RV V
1.2V1
* 3.3EIR
IR
VR VR R
Sau khi tính toán ta chọn R1=10K, RIR= biến trở 10K.
Cài mã cho mạch phát :
+ Vì chọn IC thu là BL9149 nên theo lý thuyết thì IC thu không vó chân C1. Do
đó chân C1 của IC phát luôn ở mức logic “1”. Nhiệm vụ còn lại là xác định tổ hợp
mã cho chân C2 và C3.
+ Đối với mạch ở trên thì cách cài mã như sau:
+ Ta xác định mã muốn cài là: C1 =”1”, C3 = “0”.
+ Từ đó, tại chân C2, ta nối một diode với chân Code, còn chân C3 thì bỏ trống.
+ Như vậy, để IC thu nhận biết đúng thì ta cũng phải cài đúng như vậy.
Bảng mã hệ thống
BL9418 BL9419
C1 C2 C3 C2 C3
1 1 0 1 0
BL9148: “1”_nối diode
“0”_bỏ trống
BL9419: “1”_nối tụ xuống Mass
“0”_nối xuống Mass
Phần I: Hệ thống bãi giữ xe ôtô tự động Luận văn tốt nghiệp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 11
+ Chọn ngõ ra ở chế độ liên tục là các chân ra từ HP1- HP5 để sử dụng cho
phẩn cảm biến phát hiện vật trong mô hình.
IC thu BL9149 :
BL9149 cũng được chế tạo bởi công nghệ CMOS. Nó có thể điều khiển tối đa 10
thiết bị.
Đặc tính:
+ Tiêu tán công suất thấp.
+ Khả năng chống nhiễu rất cao.
+ Nhận được đồng thời 5 chức năng từ IC phát BL9148.
+ Cung cấp bộ dao động RC.
+ Bộ lọc số và kiểm tra mã ngăn ngừa sự tác động từ những nguồn sáng
khác nhau như đèn PL. do đó không ảnh hưởng đến độ nhạy của mắt thu.
Sơ đồ và chức năng của các chân của IC :
+ Chân 1(Vss): là chân Mass được nối với cực âm của
nguồn điện.
+ Chân 2 (RXin): là đầu vào tín hiệu thu.
+ Các chân 3-7 (HP1-HP5): là đầu ra tín hiệu liên tục.
Chỉ cần thu được tín hiệu tương ứng với đầu ra nào
thì đầu ra đó sẽ luôn duy trì ở mức logic ”1” .
+ Các chân 8-12 (SP1-SP5): là đầu ra tín hiệu không
liên tục.chỉt cần thu được tín hiệu tương ứng với đầu ra nào thì đầu ra đó sẽ
duy trì ở mức logic “1” trong khoảng thời gian là 107ms.
+ Chân 13-14 (CODE3- CODE2): để tạo ra mã tổ hợp các hệ thống giữa phần
phát và phần thu. Mã số của hai chân này phải giống tổ hợp mã hệ thống của
phần phát thì mới thu được tín hiệu.
+ Chân 15 (OSC): dùng để nối với tụ điện và điện trở bên ngoài tạo ra dao dộng
cho mạch.
+ Chân 16 (Vcc): là chân được nối với cực dương của nguồn cung cấp.
Sơ đồ khối:
Phần I: Hệ thống bãi giữ xe ôtô tự động Luận văn tốt nghiệp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 12
Giải thích sơ đồ khối:
+ Sau khi IC phát BL9148 phát ra
tín hiệu (2 chu kỳ), tín hiệu sẽ được mắt
thu tiếp nhận rồi đưa nó đến chân Rxin.
Chân Rxin có nhiệm vụ sẽ chỉnh lại dạng
sóng của tín hiệu cho chuẩn. Sau đó, tín
hiệu được đưa tới bộ lọc số. Bộ lọc số có
nhiệm vụ lọc lấy các dữ liệu rồi đưa đến
thanh nghi 12 bit. Tiếp đến, dữ liệu thứ hai sẽ nạp vạo thanh nghi.Dữ liệu đầu tiên
sẽ được đưa qua bộ đệm ngõ ra nếu mã của nó khớp với mã của phần phát. Trường
hợp, mã của dữ liệu không khớp với mã cùa phần phát thì quá trình sẽ được lặp lại.
Khi các dữ liệu nhận đã được thông qua, ngõ ra sẽ chuyển từ mức thấp lên mức cao.
Mạch ứng dụng:
10K
102
102
OUT 1
1
0
10K
BL 9149
1
7
16
1211
15
6
3
45
14
109
13
8
2 VSS
HP5
VCC
SP1SP2
OSC
HP4
HP1
HP2HP3
CODE 2
SP3SP4
CODE3
SP5
RXin
5 VCC
0
5 VCC
0
102
0
OUT 1
39K
MAT THU
1 3 2
VIN
GN
D
VOU
T
0
C1815
Tính toán :
Mạch khuếch đại và tách sóng:
Q ở trạng thái bảo hòa VCEBH = 0.1V
Phần I: Hệ thống bãi giữ xe ôtô tự động Luận văn tốt nghiệp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 13
+ Khi chưa nhận tín hiệu: VIN=0.8V
IBH = 0.02mA
VIN = VRB + VBE
IN BEB
B
V VRI
3
0.8 0.7 50.02 10BR K
Từ đó, dựa vào thực tế ta chọn RB = 4.7K
+ Mặt khác ta có :
VCC =VRC + VCEBH
VRC = VCC -VCEBH
CC CEBHC
CEBH
V VRI
3
5 0.1 510CR K
50 0.02 1CBHMin CBH Min BBH
BBH
I I I mAI
Ta chọn RC = 4.7K
+ Khi nhận tín hiệu VIN = 705 mV
3
0.705 0.7 15 10
IN BEB
B
V VI AR
VC = VCC – VRC =VCC - RC 3 65 5 10 10 100 4.5BI hfe V
+ Để Ic thu hoạt động tốt thì VIN = 2V3V
Với VIN 2V
2C INIC
INIC L
V Z VZ R
334.5 25 10 25 10
2 2C INIC
L INICV ZR Z
30LR K Từ đó ta chọn RL = 10K
+ Tuy nhiên, lý thuyết là như vậy nhưng thực tế thì hai điện trở RB và RC không
cần gắn. Nếu như thế thì khả năng thu của mạch sẽ tăng lên.
+ Tổ hợp mã hệ thống giữa IC phát BL9148 và IC thu BL 9149:
Phần I: Hệ thống bãi giữ xe ôtô tự động Luận văn tốt nghiệp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 14
Bảng mã hệ thống
BL9148 BL9149
C1 C2 C3 C2 C3
1 1 0 1 0
1 1 1 1 1
+ Vì BL9149 không có chân C1 nên chân C1 của BL9148 mặc nhiên ở mức logic
“1”. Qua bẳng mã hệ thống, ta thấy rằng tổ hợp mã của các chân C2 và C3 của hai
chan Ic phát phải giống nhau, đó là mã hệ thống. Trong các tổ hợp mã không có tổ
hợp C2 = C3= 0.
+ Các chân C2 và C3 sẽ ở mức logic “1” nếu nối một tụ giữa chân Cn ( n = 2, 3)
và Mass. Ngược lại, nếu các chân C2 và C3 sẽ ở mức logic “0” nếu nối xuống Mass.
Ứng dụng:
Cảm biến quang được ứng dụng rất phổ biến ngoài thực tế như trong các hệ
thống đóng mở cử tự động, đếm và phân loại sản phẩm,v.v…
Cảm biến từ (loop detector):
Cảm biến từ là một loại cảm biến dựa trên nguyên tắc truyền
dẫn điện từ. Điều này có ý nghĩa nếu một vật thể được đặt trong một
vùng từ trường thay đổi thì một điện thế được tạo ra trên vật thể đó.
Khi có điện trường được tạo ra xung quanh cuộn dây. Khi có
một vật thể kim loại đi vào vùng từ trường đang thay đổi. Dòng điện
được tạo ra trong vật thể kim loại, tiến trình này được gọi là sự
truyền dẫn, điều này là bởi vì tất cả các kim loại đều dẫn điện.
Khi một dòng diện được truyền trong một vật thể kim loại và
nó cũng tạo ra vùng từ trường của chính nó, những vùng từ trường
này có khả năng truyền dẫn một lượng nhỏ về điện trong chính cuộn
day của cảm biến. Do đó, cảm biến sẽ phát hiện được vật thể.
Ứng dụng:
Cảm biến từ được dùng nhiều trong thực tế như ở các trạm thu
phí xe ôtô tự động, các cổng tự động dành riêng cho xe lớn từ 4 chỗ trở lên hay các
ứng dụng phân loại sản phẩm kim loại hoặc phi kim loại.
Phần I: Hệ thống bãi giữ xe ôtô tự động Luận văn tốt nghiệp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 15
Thiết bị chấp hành:
Rơle:
Rơle là loại khí cụ điện tự động đóng ngắt mạch điện
điều khiển, tự động đóng ngắt các tiếp điểm khi có nguồn tác
động tức là khi có điện thì các tiếp điểm của Rơle hoạt động,
tiếp điểm thường mở thì đóng lại và tiếp điểm thường đóng thì
mở ra dùng để đảo chiều động cơ.
Nguyên lý hoạt động:
Rơle hoạt động dựa trên nguyên lý điện từ. Khi có dòng điện
chạy qua, cuộn day sẽ sinh ra lực hút điện từ, hút tấm kim loại
mỏng về phía lõi với một lực, nếu lực này thắng lực cản của lò
xo thì các tiếp điểm thường mở của Rơle sẽ đóng lại làm kín
mạch điều khiển. Khi dòng điện trong cuộn day giảm hoặc khi ngắt điện Rơle thì
lực hút lò xo sẽ thắng lực hút điện từ làm cho các tiếp điểm trở về vị trí ban đầu.
Ứng dụng:
Dùng trong các mạch tự động đóng ngắt, trong các mạch đảo chiều quay động cơ.
Động cơ:
Là một thiết bị chấp hành điện, khi có nguồn tác động thì động cơ sẽ hoạt
động và có thể đảo chiều quay của động cơ nhờ vào tác động của Rơle cũng như là
của bộ điều khiển PLC. Động cơ gồm hai phần chính:
Stator: Là phần đứng yên, gồm:
+ Vật liệu dẫn từ
+ Dây dẫn
+ Vỏ máy.
Rotor gồm:
+ Lõi sắt có nhiệm vụ dẫn từ.
+ Dây quấn.
Nguyên lý hoạt động:
Dựa trên hiện tượng cảm ứng điện từ. Khi có dòng điện đi qua cuộn dây của
động cơ, cuộn dây của động cơ sẽ sinh ra từ thông từ thông biến thiên sẽ sinh ra sức
điện động cảm ứng, cảm ứng lên Rotor nên Rotor quay, do đó động cơ hoạt động.
Phần II: Giới thiệu tổng quát về PLC Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 16
PHẦN II
GIỚI THIỆU TỔNG QUÁT VỀ PLC
I. SƠ LƯỢC VỀ LỊCH SỬ PHÁT TRIỂN
Là thiết bị điều khiển lập trình đầu tiên (PLC là viết tắt của chữ
Programmable Logic Controller ) đã được những nhà thiết kế cho ra đời năm 1968
(công ty General Motor Mỹ). Tuy nhiên, hệ thống này còn khá đơn giản và cồng
kềnh, người sử dụng gặp nhiều khó khăn trong việc vận hành hệ thống. Vì vậy các
nhà thiết kế từng bước cải tiến hệ thống làm cho hệ thống đơn giản, gọn nhẹ, dễ vận
hành, nhưng việc lập trình cho hệ thống còn khó khăn, do lúc này không có các thiết
bị lập trình ngoại vi hổ trợ cho công việc lập trình.
Để đơn giản hóa việc lập trình, hệ thống điều khiển lập trình cầm tay
(Programmable Controller Handle) đầu tiên được ra đời vào năm 1969. Điều này đã
tạo ra được một sự phát triển thực sự cho kỹ thuật điều khiển lập trình. Trong giai
đoạn này các hệ thống điều khiển lập trình (PLC) chỉ đơn giản nhằm thay thế hệ
thống Relay và dây nối trong hệ thống điều khiển cổ điển. Qua quá trình vận hành,
các nhà thiết kế đã từng bước tạo ra được một tiêu chuẩn mới cho hệ thống, tiêu
chuẩn đó là: Dạng lập trình dùng giản đồ hình thang (The Diagram Format). Trong
những năm đầu thập niên 1970, những hệ thống PLC còn có thêm khả năng vận
hành với những thuật toán hỗ trợ (arithmetic), “vận hành với các dữ liệu cập nhật”
(data manipulation). Do sự phát triển của loại màn hình dùng cho máy tính
(Cathode Ray Tube: CRT), nên việc giao tiếp giữa người điều khiển để lập trình cho
hệ thống càng trở nên thuận tiện hơn.
Sự phát triển của hệ thống phần cứng và phần mềm từ năm 1975 cho đến nay
đã làm cho hệ thống PLC phát triển mạnh hơn với các chức năng mở rộng: Hệ
thống ngõ vào/ra có thể tăng lên đến 8000 cổng vào/ra, dung lượng bộ nhớ chương
trình tăng lên hơn 128000 từ bộ nhớ (word of memory). Ngoài ra các nhà thiết kế
còn tạo ra kỹ thuật kết nối với các hệ thống PLC riêng lẽ thành một hệ thống PLC
chung, tăng khả năng của từng hệ thống riêng lẽ. Tốc độ xử lý của hệ thống được
cải thiện, chu kỳ quét (scan) nhanh hơn làm cho hệ thống PLC xử lý tốt với những
chức năng phức tạp, số lượng cổng ra/vào lớn.
Phần II: Giới thiệu tổng quát về PLC Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 17
Đây là bộ điều khiển logic dựa trên công nghệ vi điều khiển.Một hệ thống
PLC là một mạch tích hợp của nhiều bộ phận bao gồm xử lý số học, điều khiển bộ
nhớ, và các thiết bị nhập_xuất v.v…, chức năng chính mà bất kỳ PLC nào cũng phải
có là thu nhập các tín hiệu đầu vào, căn cứ vào yêu cầu chương trình trong PLC mà
thực hiện so sánh, tính toán và xuất các tín hiệu đóng ngắt đầu ra cho phù hợp.
Chương trình trong PLC là do người sử dụng thực hiện bằng một hệ thống ngôn
ngữ lập trình dựa trên quy trình của một sơ đồ điều khiển bất kỳ, chương trình sau
khi viết xong được dịch ra mã máy và nạp vào bộ nhớ chương trình (EEPROM-
Electrical Erase Programmable Read Only Memory hay còn gọi là ROM điện)của
PLC ( các PLC khác nhau có dạng ngôn ngữ lập trình khác nhau ). PLC cho phép
nối trực tiếp những cơ cấu tác động đóng ngắt có công suất nhỏ ở ngõ ra và những
mạch chuyển đổi ngõ vào, đối với các mạch có công suất lớn khi cần ghép nối với
PLC cần có mạch điện tử trung gian.
Trong tương lai hệ thống PLC không chỉ giao tiếp với các hệ thống khác thông
qua CIM (Computer Integrated Manufacturing) để điều khiển các hệ thống: Robot,
Cad/Cam,… Ngoài ra các nhà thiết kế còn đang xây dựng các loại PLC với các
chức năng điều khiển “thông minh” (intelligence) còn gọi là các siêu PLC (super
PLC) cho tương lai.
II. CÁC ĐẶC ĐIỂM CỦA CPU S7-200
Đặc điểm CPU 221 CPU 222 CPU 224 CPU 226
Kích thước thật (mm) 90x80x62 90x80x62 90x80x62 90x80x62
Bộ nhớ PLC
Bộ nhớ chương trình 2048words
=4096 bytes
2048words
=4096 bytes
4096words
=8192bytes
4096words
=8192bytes
Bộ nhớ dữ liệu 1024words
=2048 bytes
1024words
=2048 bytes
2560words=
5120bytes
2560words
=5120bytes
Trữ chương trình EEPROM EEPROM EEPROM EEPROM
Dữ liệu dự phòng
(pin tụ điện)
Khoảng
50 giờ
Khoảng
50 giờ
Khoảng
190 giờ
Khoảng
190 giờ
Phần II: Giới thiệu tổng quát về PLC Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 18
Các đầu vào và ra cục bộ( I/O ) trên CPU
In/Out 6/4 8/6 14/10 24/16
Số module mở rộng Không có 2 7 7
Tổng số ngõ vào/ra ( I/O ) cực đại cho phép ( bao gồm cả module mở rộng )
( I/O ) Digital 256 ( 128 In
/ 128 Out )
256 (128 In
/ 128 Out )
256 ( 128 In
/ 128 Out )
256 ( 128In
/ 128 Out )
( I/O ) Analog Không có 16 In /16 Out 32 In/32 Out 32In/32Out
Các lệnh
Tốc độ xử lý nhị phân
tại tần số 33MHz 0,37 µ/lệnh 0,37 µ/lệnh 0,37 µ/lệnh 0,37 µ/lệnh
Dung lượng thanh ghi
(I/O) ảo
128I và128Q 128I và128Q 128I và128Q 128Ivà128
Q
Số lượng Rơle bên
trong
256 256 256 256
Số lượng bộ đếm
(Counter) và định thì
(Timer)
256/256 256/256 256/256 256/256
Word In/Word Out Không có 16/16 32/32 32/32
Sequetial Control
Relays
256 256 256 256
Vòng lặp For/Next Có Có Có Có
Tính toán với số
nguyên(+-*/)
Có Có Có Có
Tính toán với số
thực(+-*/)
Có Có Có Có
Các đặc tính nâng cao
Bộ đếm cao tốc 4H / W
(20KHz)
4H / W
(20KHz)
6H / W
(20KHz)
6H / W
(20KHz)
Điều chỉnh Analog 1 1 2 2
Xung nhịp xuất 2( 20KHz, 2( 20KHz, 2( 20KHz, 2( 20KHz,
Phần II: Giới thiệu tổng quát về PLC Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 19
cho DC ) cho DC ) cho DC ) cho DC )
Định thời gian ngắt 2 (1÷255
ms)
2 (1÷255
ms)
2 (1÷255
ms)
2(1÷255ms
Ngắt phần cứng đầu
vào
4,có bộ lọc
đầu vào
4,có bộ lọc
đầu vào
4,có bộ lọc
đầu vào
4,có bộ lọc
đầu vào
Đồng hồ thời gian
thực
Có Có Có (bên
trong)
Có (bên
trong)
Mật mã bảo mật Có Có Có Có
Một hệ thống lập trình cơ bản phải gồm có
CPU: là bộ xử lý trung tâm (Center Processing Unit), nó điều khiển mọi
hoạt động của PLC theo chương trình đề ra, thực hiện tính toán so sánh, định thời
gian, đếm các tín hiệu đầu vào tốc độ xung Clock cấp từ mạch thạch anh.
Bộ nhớ nằm bên trong CPU bao gồm bộ nhớ chương trình và bộ nhớ dữ liệu,
mỗi vùng có các chức năng và nhiệm vụ khác nhau.
Hình : sơ đồ khối của hệ thống điều khiển lập trình
Khối điều khiển trung tâm (CPU) gồm ba phần: bộ xử lý, hệ thống bộ nhớ và
hệ thống nguồn cung cấp.
Processor
I N P U T S
CENTRAL
PROCESSING UNIT
O U T P U T S
M
M
Phần II: Giới thiệu tổng quát về PLC Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 20
Hình : Sơ đồ khối tổng quát của CPU
Bộ nhớ chương trình dùng chứa chương trình điều khiển và xử lý dữ liệu.
Chương trình này được CPU sử dụng mỗi khi PLC hoạt động. Để đảm bảo an toàn
mỗi khi có sự cố mất điện, bộ nhớ chương trình được sử dụng bằng EEPROM
(Electrical Erase Programmable Read Only Memory). Khi nạp chương trình vào
PLC chương trình được trữ trong bộ nhớ này.
Bộ nhớ dữ liệu dùng chứa các thông số của chương trình trong quá trình hoạt
động như trạng thái các biến, giá trị đếm tức thời của Timer và Counter,v.v…Khi
nguồn điện cấp cho PLC bị mất nội dung của bộ nhớ dữ liệu vẫn được duy trì nhờ
một tụ điện.Bộ nhớ dữ liệu được sử dụng bằng Ram (Random Access Memory).
Vùng nhớ Ram chia làm 4 vùng chính:
Vùng chương trình(User Program):là miền bộ nhớ sử dụng để lưu trữ các
lệnh chương trình điều khiển.
Vùng tham số của CPU (CPU configuration): là miền lưu trữ các tham số như
từ khoá, địa chỉ trạm, trạng thái của CPU.
Vùng dữ liệu: dùng để chứa các dữ liệu chương trình bao gồm các kết quả,
các phép tính, các hằng số được định nghĩa trong chương trình,v.v…Các miền nhớ
này có thể truy cập theo bit, byte(8bit), word(2byte), doubleword(2 word). Vùng dữ
liệu lại được chia thành nhiều miền nhớ nhỏ với các công cụ riêng như sau :
V : (Variable Memory):vùng nhớ biến
I : ( Input Image Register):vùng nhớ ảnh ngõ vào
Q : (Output Image Register):vùng nhớ ảnh ngõ ra
M : (Internal Memory Bit):vùng nhớ nội
SM (Special Memory Bit) :vùng nhớ đặc biệt
Memory
Power Supply
Phần II: Giới thiệu tổng quát về PLC Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 21
Vùng đối tượng : chứa các thông số của Timer, Couter, các bộ đếm cao tốc,
các ngõ ra Analog, các thanh ghi tích luỹ, các hằng số được chứa trong vùng nhớ
này.
Vùng nhớ EEPROM được chia thành 3 vùng, vùng chương trình, vùng tham
số của CPU, vùng dữ liệu.Về bản chất các vùng nhớ của bộ nhớ EEPROM hoàn
toàn giống như vùng nhớ RAM. EEPROM dùng để nạp lại chương trình và một số
nội dung cho vùng nhớ RAM bị mất nguồn nuôi.
III. CẤU TRÚC CHƯƠNG TRÌNH CỦA S7-200
Có thể lập trình cho PLC S7-200 bằng cách sử dụng một trong những phần
mềm sau : STEP7-Micro/DOS
STEP7-Micro/WIN
Những phần mềm này đều có thể cài đặt được trên các máy lập trình họ
PG7xx và các máy tính cá nhân (PC).
Các chương trình cho S7-200 phải có cấu trúc bao gồm chương trình chính
(main program) và sau đó đến các chương trình con và các chương trình xử lý ngắt
được chỉ ra sau đây :
Chương trình chính được kết thúc bằng lệnh kết thúc chương trình (MEND).
Chương trình con là một bộ phận của chương trình. Các chương trình con
phải được viết sau lệnh kết thúc chương trình chính, đó là lệnh MEND.
Các chương trình xử lý ngắt là một bộ phận của chương trình. Nếu cần sử
dụng chương trình xử lý ngắt phải viết sau lệnh kết thúc chương trình chính MEND.
Các chương trình con được nhóm lại thành một nhóm ngay sau chương trình
chính. Sau đó đến ngay các chương trình xử lý ngắt. Bằng cách viết như vậy, cấu
trúc chương trình được rõ ràng và thuận tiện hơn trong việc đọc chương trình sau
này. Có thể tự do trộn lẫn các chương trình con và chương trình xử lý ngắt đằng sau
chương trình chính.
Thực hiện trong một vòng quét:
Main Program . .
Phần II: Giới thiệu tổng quát về PLC Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 22
. MEND
Thực hiện khi được chương trình chính gọi:
SBR 0 Chương trình con thứ nhất . . . RET . . . SBR n Chương trình con thứ n+1 . . . RET
Thực hiện khi có tín hiệu báo ngắt:
INT 0 Chương trình xử lý ngắt thứ nhất . . . RETI . . .
INT n Chương trình xử lý ngắt thứ n+1 . . . RETI
Phần II: Giới thiệu tổng quát về PLC Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 23
Hình : Cấu trúc chương trình của S7 –200
Hình: Hình ảnh thực tế của một PLC SIMATIC S7-200 CPU 214
Hình : Hình ảnh của module mở rộng EM223
IV.HOẠT ĐỘNG CỦA MỘT PLC
CPU S7-200 có các chế độ hoạt động thể hiện bằng đèn trên PLC như sau:
SF : đèn màu đỏ báo hệ thống bị hỏng.
RUN : đèn màu xanh chỉ thị PLC đang ở chế độ làm việc và thực hiện chương
trình đã nạp vào bộ nhớ.
Phần II: Giới thiệu tổng quát về PLC Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 24
STOP : đèn màu vàng chỉ thị PLC đang ở chế độ dừng.
Khi hoạt động ở chế độ RUN, CPU S7-200 được thiết kế để thực hiện một loạt
các thao tác theo chu kỳ và một chu kỳ thực hiện thao tác đó người ta gọi là một
vòng quét ( Scan Cycle). Trong một vòng quét, CPU thực hiện các công việc sau :
Đọc trạng thái các ngõ vào (Reading The Input): bắt đầu mỗi vòng quét, PLC
đọc trạng thái ngõ vào và ghi trong thanh ghi ảnh ngõ vào.
Thực hiện chương trình (Excecuting The Program): trong suốt một vòng quét,
PLC thực hiện từ lệnh đầu tiên của chương trình đến khi gặp lệnh END
(STEP7_Micro/Win 3.2 tự động hiểu chương trình kết thúc khi gặp Network trống
kế tiếp trong chương trình ). Tại thời điểm thực hiện các lệnh liên quan với các ngõ
vào, ra, lệnh không làm việc trực tiếp với các cổng vào ra mà chỉ xử lý thông qua
thanh ghi ảnh của các ngõ vào ra trong vùng nhớ tham số. Riêng đối với các lệnh
I/O Immediate (ngay lập tức) thì hệ thống sẽ cho ngừng mọi công việc khác, ngay
cả chương trình xử lý ngắt để thực hiện ngay lập tức lệnh này (giá trị ngõ vào nạp
ngay vào thanh ghi ảnh hoặc xuất ngay giá trị trong thanh ghi ảnh đến ngõ ra)
không đợi đến thứ tự thực hiện của vòng quét.- Truyền thông nội bộ giữa các PLC
(Processing Any Communication Requests): thực hiện việc trao đổi thông tin giữa
các PLC trong mạng và xử lý các tín hiệu phản hồi.
Tự chuẩn đoán lỗi (Excicuting The CPU Self-Test Diagnostics): CPU tiến
hành kiểm tra bộ nhớ chương trình và trạng thái module mở rộng.
Xuất dữ liệu ra các ngõ ra (Writing To The Outputs): kết thúc mỗi vòng quét
CPU xuất các giá trị trong thanh ghi ảo ngõ ra đến ngõ ra. Khi CPU chuyển trạng
thái RUN đến STOP (bằng nút gạt trên PLC), các giá trị của các thanh ghi ảnh ngõ
ra sẽ được gán bằng các giá trị đã định nghĩa sẵn trong Output Table.
Về cơ bản hoạt động của một PLC cũng khá đơn giản. Đầu tiên, hệ thống các
cổng vào/ra (Input/Output) (còn gọi là các Module xuất/nhập) dùng để đưa các tín
hiệu từ các thiết bị ngoại vi vào CPU (như các Sensor, Contact, tín hiệu từ động cơ
…). Sau khi nhận được tín hiệu ở ngõ vào thì CPU sẽ xử lý và đưa các tín hiệu điều
khiển qua Module xuất ra các thiết bị được điều khiển.
Trong suốt quá trình hoạt động, CPU đọc hoặc quét (scan) dữ liệu hoặc trạng
thái của các thiết bị ngoại vi thông qua ngõ vào, sau đó thực hiện các chương trình
Phần II: Giới thiệu tổng quát về PLC Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 25
trong bộ nhớ như sau: một bộ đếm chương trình sẽ nhặt lệnh từ bộ nhớ chương trình
đưa ra thanh ghi lệnh để thi hành. Chương trình ở dạng STL (Statement List – Dạng
lệnh liệt kê) hay ở dạng LADDER (dạng hình thang) sẽ được dịch ra ngôn ngữ máy
cất trong bộ nhớ chương trình. Sau khi thực hiện xong chương trình, CPU sẽ gởi
hoặc cập nhật (update) tín hiệu tới các thiết bị, được điều khiển thông qua Module
xuất. Một chu kỳ gồm đọc tín hiệu ở ngõ vào, thực hiện chương trình và gởi cập
nhật tín hiệu ở ngõ ra được gọi là một chu kỳ quét (Scanning).
Dưới đây chỉ là mô tả hoạt động đơn giản của một PLC, với hoạt động này sẽ
giúp cho người thiết kế nắm được nguyên tắc của một PLC. Nhằm cụ thể hóa hoạt
động của một PLC.
V.PHƯƠNG PHÁP LẬP TRÌNH CHO CPU S7-200
S7-200 biểu diễn một mạch logic cứng bằng một dãy các lệnh lập
trình.Chương trình bao gồm một tập dãy các lệnh.S7-200 thực hiện chương trình bắt
đầu từ lệnh lập trình đầu tiên và kết thúc ở lệnh lập trình cuối trong một vòng. Một
vòng như vậy được gọi là vòng quét (scan).
Một vòng quét (scan cycle) được bắt đầu bằng việc đọc trạng thái của đầu vào,
và sau đó thực hiện chương trình.Scan cycle kết thúc bằng việc thay đổi trạng thái
đầu ra. Trước khi bắt đầu một vòng quét tiếp theo S7-200 thực thi các nhiệm vụ bên
trong và nhiệm vụ truyền thông, sơ đồ hoạt động của một PLC là một vòng quét
(scan cycle) như sau :
Một CPU S7-200 với phần mềm Step7-Micro/Win 3.2 cung cấp cho người sử
dụng 3 phương thức lập trình là dạng LAD,STL và FBD với thiết lập SIMATIC và
IEC 1131-3:
Giai đoạn chuyển
dữ liệu ra ngoại vi
Giai đoạn nhập dữ
liệu từ ngoại vi
Giai đoạn truyền thông
nội bộ và tự kiểm tra
Giai đoạn thực
hiện chương trình
Phần II: Giới thiệu tổng quát về PLC Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 26
Lập trình theo kiểu danh sách lệnh (statement list editor)
Định nghĩa về STL:
Phương pháp liệt kê lệnh (STL) là phương pháp thể hiện chương trình dưới
dạng tập hợp các câu lệnh, mỗi câu lệnh trong chương trình, kể cả những lệnh hình
thức biểu diễn một chức năng của PLC.
Phương thức này biểu diễn chương trình điều khiển bằng các dòng lệnh liên
tiếp mỗi dòng lệnh là nội dung mà các thao tác mà các CPU phải tác động đến các
đối tượng lệnh (toán hạng). Nói chung, STL dành cho những người có kinh nghiệm
lập trình, đây là ngôn ngữ thuần tuý của CPU. Đối tượng lệnh bao gồm hai thành
phần, phần đầu tên và loại đối tượng lệnh, phần sau là tham số xác định cụ thể đối
tượng lệnh (địa chỉ đối tượng).
VD : IB5 (trong đó IB là loại đối tượng và 5 tham số).
Các đặc điểm chính cần biết khi chọn phương pháp lập trình dạng STL :
STL thích hợp cho các lập trình viên có kinh nghiệm.
STL có thể cho phép bạn giải quyết các vấn đề không thể thực hiện dễ dàng
bằng dạng LAD hay FBD.
Chỉ sử dụng được STL với thiết lập SIMATIC.
Trong khi luôn có thể sử dụng dạng STL để hiển thị một chương trình viết
bằng dạng LAD hay FBD,điều ngược lại thì không luôn đúng. Không thể luôn sử
dụng dạng LAD hay FBD để hiển thị một chương trình viết bằng dạng STL.
Lập trình theo biểu đồ hình thang (ladder logic editor)
Định nghĩa về LAD:
LAD là một ngôn ngữ lập trình bằng đồ hoạ. Những thành phần cơ bản dùng
trong LAD tương ứng với các thành phần của bảng điều khiển bằng RƠLE.
Đây là phương thức lập trình bằng hình ảnh được sử dụng thông dụng bởi các
lập trình viên tại các nhà máy,xí nghiệp. Phương pháp này biểu thị chức năng điều
khiển bằng các ký hiệu sơ đồ mạch điện như tiếp điểm, cuộn dây v.v…Khi viết
chương trình dạng LAD ta tiến hành sắp xếp các khối hình thành một hệ thống
Logic (Network Logic) để có thể thực hiện yêu cầu đề ra. Chương trình được xử lý
một Network tại một thời điểm từ trái sang phải và từ trên xuống dưới, khi CPU xử
Phần II: Giới thiệu tổng quát về PLC Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 27
lý tới cuối chương trình nó lại thực hiện từ đầu chương trình. Các khối lệnh hình
ảnh có thể là các tiếp điểm,cuộn dây hoặc các khối hình hộp :
Các tiếp điểm (Contacks): là biểu tượng mô tả tiếp điểm của Rơle bao gồm
các tiếp điểm thường đóng và các tiếp điểm thường mở.
Các cuộn dây (Coils): là biểu tượng của Rơle được mắc theo chiều dòng điện
cung cấp cho Rơle.
Các khối hình hộp (Boxes): là biểu tượng mô tả các hàm khác nhau, nó làm
việc khi có dòng điện chạy đến hộp. Mỗi khối mô tả một chức năng khác nhau như
so sánh, Timer, Counter, các phép toán v.v…Các chức năng này được thực hiện khi
có dòng điện chạy cuộn dây và các hộp phải được mắc đúng chiều dòng điện.
Mạng LAD: là đường nối các phần tử thành một mạch hoàn thiện, đi từ đường
nguồn bên trái sang đường nguồn bên phải. Đường nguồn bên trái là dây nóng,
đường nguồn bên phải là dây trung hoà hay là đường trở về nguồn cung cấp. Đường
nguồn bên phải thường không được thể hiện khi dùng chương trình tiện dụng
STEP7-Mcro/DOS hoặc STEP7-Mcro/WIN. Dòng điện chạy từ trái qua các tiếp
điểm đóng đến các cuộn dây hoặc các hộp trở về bên phải nguồn.
Các đặc điểm chính cần biết khi chọn phương pháp lập trình dạng LAD :
Dạng LAD dễ dàng cho người bắt đầu sử dụng.
Vấn đề mô tả bằng đồ hoạ dễ dàng và được sử dụng phổ biến hơn.
Dạng LAD có thể sử dụng được cả hai thiết lập SIMATIC và IEC 1131-3.
Luôn sử dụng dạng STL để hiển thị chương trình viết bằng dạng LAD.
Lập trình theo kiểu biểu đồ hình khối (Function Block Diagram) :
Step7_Mcro/Win 3.2 cho phép tạo các lệnh như các hộp Logic giống với các
biểu đồ cổng chung. Trong FBD không có công tắc (contact) và cuộn dây (Coils)
như dạng LAD nhưng có các lệnh tương đương xuất hiện như các hộp lệnh.Logic
của chương trình nhận được từ sự liên kết giữa các hộp lệnh, ví dụ đầu ra từ một
lệnh (như hộp lệnh END) có thể sử dụng làm điều kiện cho một lệnh khác (như
Timer) để tạo sự điều khiển hợp lý. Khái niệm liên kết cho phép giải quyết một
trạng thái rộng của vấn đề logic.
Các đặc điểm chính cần biết khi chọn phương pháp lập trình dạng FBD :
Phần II: Giới thiệu tổng quát về PLC Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 28
Dạng đồ hoạ logic bằng cổng thích hợp để theo dõi chương trình.
Dạng FBD có thể sử dụng được cả hai thiết lập SIMATIC và IEC 1131-3.
Luôn sử dụng dạng STL để hiển thị chương trình viết bằng dạng FBD.
Phương pháp lập trình theo kiểu danh sách lệnh (STL) sử dụng vùng ngăn xếp
Logic (Stack Logic) của CPU để giải quyết các thao tác Logic. Để tạo ra một
chương trình dạng STL, người lập trình cần phải hiểu rõ phương thức sử dụng bit
ngăn xếp logic của S7-200. Ngăn xếp Logic là một hệ thống gồm 9 bit xếp chồng
lên nhau, các thuật toán liên quan đến ngăn xếp Logic đều chỉ làm việc với bit đầu
tiên hoặc với bit thứ hai của ngăn xếp. Giá trị logic mới đều có thể được gửi (hoặc
được nối thêm) vào ngăn xếp. Khi có yêu cầu phối hợp hai bit đầu tiên của ngăn xếp
thì ngăn xếp sẽ được kéo lên 1 bit, các dạng LAD và FBD tự động chèn các lệnh
vào toán hạng Stack, trong STL phải thực hiện chèn vào vùng Stack bằng các lệnh.
Vùng Stack của CPU S7-200 :
Định nghĩa về ngăn xếp logic (logic stack) :
Bit của Logic Stack :
S0
S1
S2
S3
S4
S5
S6
S7
S8
Phần II: Giới thiệu tổng quát về PLC Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 29
Stack 0: bit thứ nhất hay ngăn trên cùng của Stack.
Stack 1: ngăn thứ hai của Stack.
Stack 2: ngăn thứ ba của Stack.
Stack 3: ngăn thứ tư của Stack.
Stack 4: ngăn thứ năm của Stack.
Stack 5: ngăn thứ sáu của Stack.
Stack 6: ngăn thứ bảy của Stack.
Stack 7: ngăn thứ tám của Stack.
Stack 8: ngăn thứ chín của Stack.
VI.TẬP LỆNH S7-200
1. Các lệnh vào ra của chương trình
Dạng lệnh Mô tả chức năng lệnh
LAD
Tiếp điểm thường đóng sẽ đóng khi có giá trị logic bit
bằng 0, và sẽ mở khi có giá trị logic bằng 1
Toán hạng: Bit: I, Q, M, SM, T, C, V(n)
LAD
Tiếp điểm thường hở sẽ được đóng nếu giá trị logic bằng
1 và sẽ hở nếu giá trị logic bằng 0
Toán hạng: Bit: I, Q, M, SM, T, C, V(n)
LAD
Tiếp điểm thường hở sẽ đóng tức thời khi giá trị bit bằng
1 và sẽ mở tức thời nếu giá trị logic bằng 0.
Toán hạng: Bit: I, Q, M, SM, CT, V(n)
LAD
Tiếp điểm thường đóng sẽ mở tức thời khi giá trị logic
bằng 1 và ngược lại
Toán hạng: Bit: I, Q, M, SM, CT, V(n)
LAD
Tiếp điểm đảo trạng thái của dòng cung cấp. Nếu dòng
cung cấp có tiếp điểm đảo thì nó ngắt mạch, và ngược lại.
Phần II: Giới thiệu tổng quát về PLC Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 30
LAD
Lệnh nhận biết trạng thái chuyển từ 0 lên 1 trong một chu
kì quét. Khi chuyển từ 0 lên 1 thì sẽ cho thông mạch.
LAD
Lệnh nhận biết sự chuyển trạng thái từ 1 xuống 0 trong
một chu kì quét. Khi chuyển từ 1 xuống 0 thì thông mạch
LAD
Cuộn dây ở đầu ra sẽ được kích thích khi có dòng điều
khiển đi ra
LAD
Cuộn dây ở đầu ra được kích thích tức thời khi có dòng
điều khiển đi qua
Toán hạng: Bit: I, Q, M, SM, T, C, V(n)
LAD
Dùng để đóng một mảng gồm n tiếp điểm kể từ giá trị ban
đầu bit
Toán hạng: Bit: I, Q, M, SM, T, C, V, IB, QB, MB, SMB,
VB, AC, *VD, *AC, Const
LAD
Dùng để ngắt một mảng gồm n tiếp điểm kể từ giá trị ban
đầu bit
Toán hạng: Bit: I, Q, M, SM, T, C, V, IB, QB, MB, SMB,
VB, AC, *VD, *AC, Const
LAD
Ghi tức thời giá trị logic vào một mảng gồm n bit kể từ
giá trị ban đầu bit
Toán hạng: Bit: I, Q, M, SM, T, C, V(Bit), IB, QB, MB,
SMB, VB, AC, *VD, *AC, Const
LAD
Xóa một mảng tức thời gồm n bit kể từ địa chỉ bit. Nếu bit
chỉ vào Timer hoặc Counter thì lệnh sẽ xóa bit đầu ra của
Timer/Counter
Toán hạng: Bit: I, Q, M, SM, T, C, V(Bit), IB, QB, MB,
SMB, VB, AC, *VD, *AC, Const
Phần II: Giới thiệu tổng quát về PLC Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 31
LAD
Lệnh này không có hiệu lực trong chương trình. Toán
hạng: N là một số từ 0 đến 255
2. Các lệnh dùng để so sánh hai tiếp điểm
Dạng lệnh Mô tả chức năng lệnh
LAD
Lệnh so sánh bằng sẽ làm cho tiếp điểm đóng khi IN1
bằng IN2 (IN1, IN2 kiểu Byte)
Toán hạng: IN1, IN2: VB, IB, QB, MB, SMB, AC, Const,
*VD, *AC
LAD
Lệnh so sánh bằng sẽ làm cho tiếp điểm đóng khi IN1
bằng IN2 (IN1, IN2 kiểu Word) và ngược lại
Toán hạng: IN1, IN2: VW, IW, MW, SMW, AC, Const,
T, C, AIW, *VD, *AC
LAD
Lệnh so sánh bằng làm cho tiếp điểm đóng khi IN1 bằng
IN2 (IN1, IN2 kiểu Double Word) và ngược lại
Toán hạng: IN1, IN2: VD, ID, MD, SMD, AC, Const,
HC, *VD, *AC
LAD
Lệnh so sánh bằng làm tiếp điểm đóng khi IN1 bằng IN2
(IN1,IN2 kiểu Real số thực) và ngược lại
Toán hạng: IN1, IN2: VD, ID, QD, MD, SMD, AC, HC,
*AC Const, *VD
LAD
Lệnh so sánh lớn hơn hoặc bằng sẽ làm cho tiếp điểm
đóng khi IN1 bằng IN2 (IN1, IN2 kiểu Byte)
Toán hạng: IN1, IN2: VB, IB, QB, MB, SMB, AC, Const,
*VD, *AC
Phần II: Giới thiệu tổng quát về PLC Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 32
LAD
Lệnh so sánh lớn hơn hoặc bằng sẽ làm cho tiếp điểm
đóng khi IN1 bằng IN2 (IN1, IN2 kiểu Word)
Toán hạng: IN1, IN2: VW, IW, MW, SMW, AC, Const,
T, C, AIW, *VD, *AC
LAD
Lệnh so sánh lớn hơn hoặc bằng sẽ làm cho tiếp điểm
đóng khi IN1 bằng IN2 (IN1,IN2 kiểu Dword)
Toán hạng: IN1, IN2: VD, ID, MD, SMD, AC, Const,
HC, *VD, *AC
LAD
Lệnh so sánh lớn hơn hoặc bằng sẽ làm cho tiếp điểm
đóng khi IN1 bằng IN2 (IN1, IN2 kiểu Real)
Toán hạng: IN1, IN2: VD, ID, QD, MD, SMD, AC, HC,
*AC Constant, *VD
LAD
Lệnh so sánh nhỏ hơn hoặc bằng sẽ làm cho tiếp điểm
đóng khi IN1 bằng IN2 (IN1, IN2 kiểu Byte)
Toán hạng: IN1, IN2: VB, IB, QB, MB, SMB, AC, Const,
*VD, *AC
LAD
Lệnh so sánh nhỏ hơn hoặc bằng sẽ làm cho tiếp điểm
đóng khi IN1 bằng IN2 (IN1, IN2 kiểu Word)
Toán hạng: IN1, IN2: VW, IW, MW, SMW, AC, Const,
T, C, AIW, *VD, *AC
LAD
Lệnh so sánh nhỏ hơn hoặc bằng sẽ làm cho tiếp điểm
đóng khi IN1 bằng IN2 (IN1, IN2 kiểu Dword)
Toán hạng: IN1, IN2: VD, ID, MD, SMD, AC, Const,
HC, *VD, *AC
Phần II: Giới thiệu tổng quát về PLC Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 33
LAD
Lệnh so sánh nhỏ hơn hoặc bằng sẽ làm cho tiếp điểm
đóng khi IN1 bằng IN2 (IN1, IN2 kiểu Real)
Toán hạng: IN1, IN2: VD, ID, QD, MD, SMD, AC, HC,
*AC Constant, *VD,
3. Các lệnh dịch chuyển nội dung ô nhớ
Dạng lệnh Mô tả chức năng lệnh
LAD
Sao chép nội dung của byte IN sang OUT
Toán hạng: IN: VB, IB, QB, MB, SMB, SB, AC, Cons,
*VD, *AC
OUT: VB, IB, QB, MB, SMB, SB, AC, *VD, *AC
LAD
Sao chép nội dung của Word IN sang OUT
Toán hạng: IN: VW, T, C, IW, QW, MW, SMW, SW
AC, AIW, Const, *VD, *AC
OUT: VW, T, C, IW, QW, MW, SMW, SW, AC, AQW,
*VD, *AC
LAD
Sao chép nội dung của Dword(Double Word) IN sang
OUT
IN: VD, ID, QD, MD, SD, SMD, HC, HC, *VD, *AC,
&VB, &IB, &QB, &MB, &T, &C, &SB, Const
OUT: VD, ID, QD, MD, SD, SMD, AC, *VD, *AC
LAD
Sao chép nội dung của Real (số thực) IN sang OUT
Toán hạng: IN: VD, ID, QD, MD, SD, SMD, AC, Const,
*VD, *AC
OUT: VD, ID, QD, MD, SMD, SD, AC, *VD, *AC
Phần II: Giới thiệu tổng quát về PLC Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 34
4. Các lệnh số học và tăng giảm
Dạng lệnh Mô tả chức năng lệnh
LAD
Lệnh cộng hai số nguyên 16 bit IN1 và IN2 kết quả là một
số nguyên OUT 16 bit. Trong STL thì kết quả ghi vào
IN1
Toán hạng: IN1, IN2: VW, T, C, IW, QW, MW, SMW,
SW, AC, AIW, Constan, *VD, *AC
OUT: VW, T, C, IW, QW, MW, SMW, SW, AC, *VD,
*AC
LAD
Lệnh cộng hai số nguyên 32 bit IN1 và IN2 kết quả là một
số nguyên OUT 32 bit. Trong STL thì kết quả ghi vào
IN1
Toán hạng: IN1, IN2: VD, ID, QD, MD, SMD, SD, AC,
HC, Constant, *VD, *AC
OUT: VD, ID, QD, MD, SMD, SD, AC, *VD, *AC
LAD
Lệnh cộng hai số thực 32 bit IN1 và IN2 kết quả là một số
thực OUT 32 bit. Trong STL thì kết quả ghi vào IN1
Toán hạng:IN1, IN2: VD, ID, QD, MD, SMD, SD, AC,
Constant, *VD, *AC
OUT: VD, ID, QD, MD, SMD, SD, AC, *VD, *AC
Phần II: Giới thiệu tổng quát về PLC Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 35
LAD
Lệnh trừ hai số nguyên 16 bit IN1 và IN2 kết quả là một
số nguyên OUT 16 bit. Trong STL thì kết quả ghi vào
IN1
Toán hạng: IN1, IN2: VW, T, C, IW, QW, MW, SMW,
SW, AC,AIW, Const, *VD, *AC
OUT: VW, T, C, IW, QW, MW, SMW, SW, AC, *VD,
*AC
LAD
Lệnh trừ hai số nguyên 32 bit IN1 và IN2 kết quả là một
số nguyên OUT 32 bit. Trong STL thì kết quả ghi vào
IN1
Toán hạng: IN1, IN2: VD, ID, QD, MD, SMD, SD, AC,
HC, Constant, *VD, *AC
OUT: VD, ID, QD, MD, SMD, SD, AC, *VD, *AC
LAD
Lệnh trừ hai số thực 32 bit IN1 và IN2 kết quả là một số
thực OUT 32 bit. Trong STL thì kết quả ghi vào IN1
Toán hạng: IN1, IN2: VD, ID, QD, MD, SMD, SD, AC,
Const, *VD, *AC
OUT: VD, ID, QD, MD, SMD, SD, AC, *VD, *AC
LAD
Lệnh thực hiện phép nhân giữa hai số nguyên 16 Bit IN1
và IN2 và cho kết quả 32 Bit ghi vào từ kép 32 bit OUT,
còn trong STL thì ghi vào IN2
Toán hạng: IN1, IN2: VW, T, C, IW, QW, MW, SMW,
SW, AC, AIW, Const, *VD, *AC
OUT: VD, ID, QD, MD, SMD, SD, AC, *VD, *AC
Phần II: Giới thiệu tổng quát về PLC Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 36
LAD
Lệnh thực hiện phép nhân giữa hai số thực 32 bit IN1 và
IN2 và cho là số thực 32 Bit ghi vào từ kép OUT, còn
trong STL thì ghi vào IN2
Toán hạng: IN1, IN2: VD,ID, QD, MD,SMD, SD, AC,
Const, *VD, *AC
OUT: VD, ID, QD, MD, SMD, SD, AC, *VD, *AC
LAD
Lệnh thực hiện phép chia giữa hai số nguyên 16 bit IN1
và IN2 và cho kết quả là số thực 32 bit ghi vào từ kép
OUT, còn trong STL thì ghi vào IN2
Toán hạng: IN1, IN2: VW, T, C, IW, QW, MW, SMW,
SW, AC, AIW, Constant, *VD, *AC
OUT: VD, ID, QD, MD, SMD, SD, AC, *VD, *AC
LAD
Lệnh thực hiện phép nhân giữa hai số thực 32 bit IN1 và
IN2 và cho kết quả là số thực ghi vào từ kép 32 bit OUT,
trong STL thì ghi vào IN2
Toán hạng: IN1, IN2: VD, ID, QD, MD, SMD, SD, AC,
Const, *VD, *AC
OUT: VD, ID, QD, MD, SMD, SD, AC, *VD, *AC
5. Giới thiệu về Timer và các lệnh điều khiển Timer
Timer là bộ tạo thời gian trễ giữa tín hiệu vào và tín hiệu ra nên trong điều
khiển thường được gọi là khâu trễ. S7-200 từ CPU 214 trở lên có 128 Timer được
chia làm hai loại khác nhau đó là :
Timer tạo thời gian trễ không có nhớ có nghỉa là khi tín hiệu logic vào IN ở
mức không thì Timer sẽ bị Reset. Timer Txx này có thể Reset bằng hai cách đó là
Phần II: Giới thiệu tổng quát về PLC Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 37
cho tín hiệu logic vào bằng không hoặc dùng lệnh R Txx (trong STL) để Reset lại
timer Txx. Timer này được dùng để tạo thời gian trễ trong một thời gian liên tục ký
hiệu là TON
Timer tạo thời gian trễ có nhớ có nghĩa là khi tín hiệu logic vào IN ở mức
không thì Timer này không chạy nữa nhưng khi tín hiệu lên mức cao lại thì Timer
lại tiếp tục chạy tiếp. Timer Txx này có thể Reset bằng cách dùng lệnh R Txx
(trong STL) để Reset lại timer Txx. Timer này được dùng để tạo thời gian trễ trong
một thời gian gián đoạn (trong nhiều khoảng thời gian khác nhau) kí hiệu là TONR
Cả hai loại Timer trên đều chạy đến giá trị đặt trước PT thì nó sẽ tự dừng lại
nếu muốn cho nó hoạt động lại thì ta phải Reset Timer lại.
Timer có những tính chất cơ bản sau :
Các bộ Timer điều được điều khiển bởi một cổng vào và một giá trị đếm tức
thời. Giá trị đếm tức thời được lưu trong một thanh ghi 2 Byte ( gọi là Tword) của
Timer xác định khoảng thời gian trễ được kích. Giá trị đếm tức thời của Timer luôn
luôn được so sánh với giá trị PT đặt trước.
Ngoài thanh ghi 2 byte T-word lưu giá trị tức thời còn có một bit kí hiệu T-bit
chỉ thị trạng thgái logci đầu ra giá trị logic này phụ thuộc vào kết quả so sánh giá trị
đếm tức thời với giá trị đặt trước. Khi giá trị đếm tức thời lớn hơn hoặc bằng giá trị
đặt trước thì T-bit sẽ có giá trị logic bằng 1 ngược lại T-bit sẽ có giá trị logic bằng
không.
Time có 3 độ phân giải đó là 1ms 10ms và 100ms và phân bố của các Timer
trong CPU214 như sau :
Lệnh Độ phân giải Giá trị cực đại Tên Timer
TON
1 ms 32767 T32;T96
10 ms 32767 T33T36;T97T100
100 ms 32767 T37T63;T101T127
1 ms 32767 T0;T64
Phần II: Giới thiệu tổng quát về PLC Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 38
TONR
10 ms 32767 T1T4; T65T68
100 ms 32767 T5T31; T69T95
Các lệnh điều khiển Timer
Dạng lệnh Mô tả chức năng lệnh
LAD
Khai báo Timer số hiệu xxx kiểu TON để tạo thời
gian trễ tính từ khi giá trị đầu vào IN được kích.
Nếu giá trị đếm tức thời lớn hơn hoặc bằng giá trị
đặt trước thì T-bit bằng 1.
Txxx: CPU214: 32-63, 96-127
PT:VW,T,C,IW,QW,MW,SMW,SW,AC,AIW,
Const, *VD, *AC.
LAD
Khai báo Timer số hiệu xxx kiểu TONR để tạo
thời gian trễ tính từ khi giá trị đầu vào IN được
kích. Nếu giá trị đếm tức thời lớn hơn hoặc bằng
giá trị đặt trước thì T-bit bằng 1
Txxx :CPU 214: 0-31, 64-95
PT:VW,T,C,IW, QW,MW,SMW, SW,AC,AIW,
Const, *VD, *AC.
6. Ngắt và xử lý ngắt
Các chế độ ngắt và xử lý ngắt cho phép thực hiện các quá trình tốc độ cao,
phản ứng kịp thời với các sự kiện ở bên tron và bên ngoài.
Nguyên tắc cơ bản của một chế độ ngắt cũng giống như thực hiện lệnh gọi
một chương trình con, sự khác nhau ở đây là chương trình con được gọi chủ động
bằng lệnh CALL, còn chương trình xử lý ngắt được gọi bị động bằng một tín hiệu
báo ngắt. Khi có một tín hiệu báo ngắt, hệ thống sẽ tổ chức gọi và thực hiện chương
Phần II: Giới thiệu tổng quát về PLC Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 39
trình con tương ứng với tín hiệu ngắt đó, hay nói cách khác là hệ thống sẽ tổ chức
xử lý tín hiệu ngắt đó. Chương trình con này được gọi là chương trình xử lý ngắt.
Do việc gọi chương trình xử lý ngắt bằng một tín hiệu báo ngắt mà thời điểm
xuất hiện tín hiệu báo ngắt hoàn toàn bị động, bởi vậy hệ thống sẽ phải hổ trợ thêm
cho công việc xử lý ngắt như: cất giữ nội dung ngăn xếp, nội dung thanh ghi AC và
các bit nhớ đặc biệt; tổ chức xếp hàng ưu tiên cho các tín hiệu báo ngắt trong trường
hợp chúng chưa kịp được xử lý
Trong CPU 224 có các kiểu tín hiệu báo ngắt sau đây:
Tám ngắt vào ra theo sườn lên hoặc theo sườn xuống của các cổng I0.0 đến I0.3
Hai ngắt thời gian.
Hai ngắt truyền thông nối tiếp (nhận và truyền)
Bảy ngắt bộ đếm tốc độ cao (CV=PV trển HSC0 và thay đổi hướng, xóa ngoài,
và CV=PV trên HSC1 và HSC2).
Hai ngắt đầu ra truyền xung là PT00 và PT01.
Khi có tín hiệu ngắt, giá trị cũ của ngăn xếp được cất đi, đỉnh của ngăn xếp
nhận giá trị logic mới là 1 còn các bit khác của ngăn xếp nhận giá trị logic 0. Bởi
vậy, khi vào đầu một chương trình xử lý ngắt, lệnh có điều kiện sẽ trở thành lệnh
không điều kiện.
Ngoài ra, để có thể tiếp tục thực hiện được chương trình sau ngắt, không
những nội dung của ngăn xếp mà cả nội dung của các thanh ghi AC cùng với các bit
nhớ trạng thái đặc biệt SM của thanh ghi và của các phép tính cũng sẽ được hệ
thống cất giữ trước khi thực hiện chương trình xử lý ngắt và được nạp lại ngay sau
khi kết thúc chương trình xử lý ngắt.
Các kiểu tín hiệu báo ngắt khác nhau của CPU 224 được trình bày trong bảng sau:
Sự kiện Mô tả ngắt CPU 224
0 Ngắt theo sườn lên I0.0 Y
1 Ngắt theo sườn xuống I0.0 Y
2 Ngắt theo sườn lên I0.1 Y
3 Ngắt theo sườn xuống I0.1 Y
4 Ngắt theo sườn lên I0.2 Y
5 Ngắt theo sườn xuống I0.2 Y
Phần II: Giới thiệu tổng quát về PLC Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 40
6 Ngắt theo sườn lên I0.3 Y
7 Ngắt theo sườn xuống I0.2 Y
8 Ngắt để nhận dữ liệu truyền thông (Port 0) Y
9 Ngắt để báo hoàn tất việc giử dữ liệu truyền thông Y
10 Ngắt theo thời gian 0 Y
11 Ngắt theo thời gian 1 Y
12 Ngắt theo HSC0, khi CV=PV Y
13 Ngắt theo HSC1, khi CV=PV Y
14 Ngắt theo HSC1, khi có tín hiệu báo đổi hướng đếm từ
bên ngoài
Y
15 Ngắt theo HSC1, khi có tín hiệu reset từ bên ngoài Y
16 Ngắt theo HSC2, khi CV=PV Y
17 Ngắt theo HSC2, khi có tín hiệu báo đổi hướng đếm từ
bên ngoài
Y
18 Ngắt theo HSC2, khi có tín hiệu reset từ bên ngoài Y
19 Ngắt theo PLS0, báo hoàn tất việc đếm xung Y
20 Ngắt theo PLS1, báo hoàn tất việc đếm xung Y
21 Ngắt theo Timer T32 (CT=PT) Y
22 Ngắt theo Timer T96 (CT=PT) Y
23 Ngắt khi hoàn tất việc nhận dữ liệu (Port 0) Y
Thứ tự ưu tiên của các kiểu ngắt
Nhóm ngắt truyền thông - Độ ưu tiên cao nhất.
Nhóm ngắt vào/ra (kể cả HSC và các đầu ra truyền xung).
Nhóm các tín hiệu báo ngắt thời gian - Độ ưu tiên thấp nhất.
Tại một thời điểm, nhiều nhất chỉ có một chương trình xử lý ngắt được thực
hiện. Khi đang thực hiện một chương trình xử lý ngắt thì tất cả tín hiệu báo ngắt
khác phải chờ tới khi hoàn tất chương trình xử lý ngắt đang thực hiện.
Khai báo và hủy một chế độ ngắt
Lệnh cho phép ngắt (Enable interrupt)
Phần II: Giới thiệu tổng quát về PLC Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 41
Lệnh cho phép ngắt là lệnh toàn cục cho phép xử lý các ngắt đã được khai báo.
Lệnh khai báo ngắt (Attach interrupt) và loại bỏ ngắt (Detach interrupt)
Lệnh ATCH gắn một sự kiện ngắt EVNT với 1 thủ tục xử lý ngắt INT, đồng
thời cho phép xử lý ngắt đó. Lệnh DTCH có tác dụng ngược lại.
Các cú pháp sử dụng lệnh ngắt
Dạng lệnh Mô tả chức năng lệnh
LAD
Khai báo sử dụng một chế độ ngắt với kiểu được
xác định bởi toán hạng Event. Chương trình xử lí
ngắt tương ứng được xác định bởi Int. sau khi khai
báo chế độ ngắt cũng được kích theo
INT: CPU 214: 0-127
EVENT: CPU 214: 0-20
LAD
Lệnh này dùng để hủy bỏ một chế độ ngắt mà kiểu
của nó được xác định bởi toán hạng Event
EVENT: CPU 214: 0-20
LAD
Lệnh này dùng để khai báo một chương trình xử lí
ngắt, nhãn xác định bởi n
CPU 214 0-127
LAD
Lệnh khai báo chế độ toàn cục ngắt hoặc kích hoạt
tất cả các chế độ ngắt đã bị hủy bởi lệnh DISI,đặt
sau ATCH
LAD
Lệnh hủy bỏ toàn bộ chế độ ngắt đã khai báo sử
dụng trước đó, lệnh chỉ có tác dụng với các tín
hiệu báo ngắt lên, nhưng các ngắt vẫn nằm trong
hàng chơ
Phần II: Giới thiệu tổng quát về PLC Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 42
LAD
Lệnh kết thúc chương trình xử lý ngắt không điều
kiện và bao giờ cũng nằm cuối chương trình xử lý
ngắt
7. Các lệnh điều khiển Counter
Counter là bộ đếm hiện chức năng sườn xung trong S7-200 các bộ đếm của
S7-200 được chia làm hai loại bộ đếm tiến (CTU) và bộ đếm tiến và lùi (CTUD)
Bộ đếm tiến CTU đếm số sườn lên của tín hiệu logic đầu vào tức là đếm số
lần thay đổi trạng thái logic từ 0 lên 1 của tín hiệu số sườn xung đếm được ghi vào
thanh ghi 2 byte của bộ đếm gọi là thanh ghi C-WORD
Nội dung của C-Word gọi là giá trị đến tức thời của bộ đếm luôn được so
sánh với giá trị đếm tức thời bằng hoặc lớn hơn giá trị đặt này thì bộ đếm báo ra
ngoài bằng cách đặt giá trị logic 1 vào một bit đặc biệt của nó được gọi là C bit
trường hợp giá trị đặc trước C bit có giá trị logic là 0
Các bộ counter đều có chân nối với tín hiệu điều khiển xóa để thực hiện việc
đặt lại chế độ khởi phát ban đầu (Reset) cho bộ đếm được ký hiệu bằng chữ R trong
LAD hay được quy định trạng thái logic của bit bắt đầu tiên của ngăn xếp trong
STL bộ đếm được reset khi tín hiệu bị xóa này có mức logic 1 hoặc khi lệnh R
(reset) thực hiện với Cbit. Khi bộ đếm được reset cả CWORD và Cbit đều nhận giá
trị 0
Bộ đếm CTUD đếm tiến khi gặp sườn lên của xung vào cổng đếm tiến ký
hiệu là CU trong LAD hoặc bit thứ 3 của ngăn xếp trong STL và đếm lùi khi gặp
sườn lên của xung vào cổng đếm lùi được ký hiệu là CD trong LAD hoặc bit thứ 2
của ngăn xếp trong STL
Khi đầu vào logic của chân xóa ký hiệu bằng R trong LAD hoặc bit thứ nhất
của ngăn xếp trong STL có giá trị logic là 1 hoặc bằng lệnh reset với C bit của bộ
đếm.
CTUD có giá trị đếm tức thời đúng bằng giá trị đang đếm và được lưu trong
thanh ghi 2byte C-Word của bộ đếm. Giá trị đếm tức thời luôn được so sánh với giá
trị đặt trước PV của bộ đếm
Phần II: Giới thiệu tổng quát về PLC Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 43
Nếu giá trị đếm tức thời lớn hơn bằng giá trị đặt trước thì Cbit có giá trị logic
bằng 1 còn các trường hợp khác giá trị logic bằng 0
Bộ đếm tiến CTU có miền giá trị đến tức thời từ 0 ( 32.767
Bộ đếm tiến lùi CTUD có miền giá trị đến tức thời từ là –32,768 ( 32.768
Lệnh khai báo sử dụng Bộ đếm trong LAD như sau :
LAD STL Toán hạng
CTU Cxx PV
Cxx CPU 214 0 47
80 127
PV: VW, T, C, IW,
QW(Word), MW, SMW, AC,
AIW
CTUD Cxx PV
Cxx CPU 214 48 79
PV: VW, T, C, IW,
QW(Word), MW, SMW, AC,
AIW, Hằng số
8. Các lệnh truyền thông
Sử dụng các lệnh truyền thông để trao đổi dữ liệu giữa PLC và máy tính cũng như
các thiết bị lập trình hay thiết bị hiển thị.
Dạng lệnh Mô tả chức năng
LAD
Truyền một chuổi byte dữ liệu từ bảng table
với chiều dài nằm trong byte đầu của bảng,
ra port
Toán hạng: TBL : IB,MB,VB,SB,QB, *VD
PORT: 0 ,1
CU PV
CTU CXX
CU CD PV
CTUD CXX
Phần II: Giới thiệu tổng quát về PLC Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 44
LAD
Nhận một chuổi byte dữ liệu từ vào bảng
table ở port
Toán hạng: TBL: IB,MB,VB,SB,QB,*VD
PORT: 0 ,1
9. Lệnh nhảy và lệnh gọi chương trình con
Các lệnh của chương trình, nếu không có những lệnh điều khiển riêng, sẽ
được thực hiện theo thứ tự từ trên xuống dưới trong một vòng quét. Lệnh điều khiển
chương trình cho phép thay đổi thứ tự thực hiện lệnh. Chúng cho phép chuyển thứ
tự thực hiện, đáng lẽ ra là lệnh tiếp theo, tới một lệnh bất cứ nào khác của chương
trình, trong đó nơi điều khiển chuyển đến được đánh dấu trước bằng một nhãn chỉ
đích. Thuộc nhóm lệnh điều khiển chương trình gồm: lệnh nhảy, lệnh gïọi chương
trình con. Nhãn chỉ đích, hay gọi đơn giản là nhãn, phải được đánh dấu trước khi
thực hiện nhảy hay lệnh gọi chương trình con.
Việc đặt nhãn cho lệnh nhảy phải nằm trong chương trình. Nhãn của chương
trình con, hoặc của chương trình xử lý ngắt được khai báo ở đầu chương trình.
Lệnh gọi chương trình con là lệnh chuyển điều khiển đến chương trình con.
Khi chương trình con thực hiện các phép tính của mình thì việc điều khiển lại được
chuyển trở về lệnh tiếp theo trong chương trình chính ngay sau lệnh gọi chương
trình con. Từ một chương trình con có thể gọi được một chương trình con khác
trong nó, có thể gọi như vậy nhiều nhất là 8 lần trong S7 – 200. Đệ qui (trong một
chương trình con có lệnh gọi đến chính nó) về nguyên tắc không bị cấm song phải
chú ý đến giới hạn trên.
Nếu lệnh nhảy hay lệnh gọi chương trình con được thực hiện thì đỉnh ngăn
xếp luôn có giá trị logic bằng 1. Bởi vậy trong chương trình con các lệnh có điều
khiển được thực hiện như các lệnh không điều kiện. Sau các lệnh LBL (đặt nhãn) và
SBR, lệnh LD trong STL sẽ bị vô hiệu hóa.
Khi một chương trình con được gọi, toàn bộ nội dung của ngăn xếp sẽ được
cất đi, đỉnh của ngăn xếp nhận một giá trị mới là 1, các bit khác còn lại của ngăn
xếp nhận giá trị logic 0 và chương trình được chuyển tiếp đến chương trình con đã
Phần II: Giới thiệu tổng quát về PLC Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 45
được gọi. Khi thực hiện xong chương trình con và trước khi điều khiển được
chuyển trở lại chương trình đã gọi nó, nội dung ngăn xếp đã được cất giữ trước đó
sẽ được chuyển trở lại ngăn xếp.
Nội dung của thanh ghi AC không được cất giữ khi gọi chương trình con,
nhưng khi một chương trình xử lý ngắt được gọi, nội dung của thanh ghi AC sẽ
được cất giữ trước khi thực hiện chương trình xử lý ngắt và nạp lại khi chương trình
xử lý ngắt đã được thực hiện xong. Bởi vậy chương trình xử lý ngắt có thể tự do sử
dụng bốn thanh ghi AC của S7 – 200.
JMP, CALL
LBL, SBR : Lệnh nhảy JMP và lệnh gọi chương trình con SBR cho phép
chuyển điều khiển từ vị trí này đến một vị trí khác trong chương trình. Cú pháp lệnh
nhảy và lệnh gọi chương trình con trong LAD và STL đều có toán hạng là nhãn chỉ
đích (nơi nhảy đến, nơi chứa chương trình con)
LAD STL Mô tả Toán hạng
n
─( JMP)
JMP Kn
Lệnh nhảy thực hiện việc chuyển
điều khiển đến nhãn n trong một
chương trình.
n:
CPU 212: 0÷63
CPU 214: 0÷255
JMP Kn
Lệnh khai báo nhãn n trong một
chương trình.
n
─( CALL)
CALL Kn
Lệnh gọi chương trình con, thực
hiện phép chuyển điều khiển đến
chương trình con có nhãn n.
n:
CPU 212: 0÷15
CPU 214: 0÷255
SBR Kn Lệnh gán nhãn cho một chương
trình con.
─( CRET)
CRET
Lệnh trở về chương trình đã gọi
chương trình con có điều kiện (bit
đầu của ngăn xếp có giá trị logic
bằng 1)
Không có
LBL: n
SBR:n
Phần II: Giới thiệu tổng quát về PLC Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 46
─( RET)
RET
Lệnh trở về chương trình đã gọi
chương trình con không điều kiện.
VII. SO SÁNH PLC VỚI CÁC HỆ THỐNG ĐIỀU KHIỂN KHÁC
PLC với hệ thống điều khiển bằng Relay
Việc phát triển hệ thống điều khiển bằng lập trình đã dần dần thay thế từng
bước điều khiển hệ thống bằng Relay trong các quá trình sản xuất. Khi thiết kế một
hệ thống điều khiển hiện đại, người kỹ sư phải cân nhắc, lựa chọn các hệ thống, hệ
thống điều khiển lập trình thường được sử dụng thay cho hệ thống điều khiển bằng
Relay do các nguyên nhân sau :
Thay đổi trình tự điều khiển một cách linh động.
Có độ tin cậy cao.
Khoảng không lắp đặt thiết bị nhỏ, không chiếm diện tích.
Có khả năng đưa tín hiệu điều khiển ở ngõ ra cao.
Sự chọn lựa dữ liệu một cách thuận lợi, dễ dàng.
Dễ dàng thay đổi cấu hình (hệ thống máy móc sản xuất) trong tương lai khi
có nhu cầu mở rộng sản xuất.
Đặc trưng cho hệ thống điều khiển chương trình là phù hợp với những nhu cầu
đã nêu trên, đồng thời về mặt kinh tế và thời gian thì hệ thống điều khiển lập trình
cũng vượt trội hơn hệ thống điều khiển cổ điển (Relay, Contactor,…). Hệ thống
điều khiển này cũng phù hợp với sự mở rộng hệ thống trong tương lai do không
phải đổi, bỏ hệ thống dây nối giữa hệ thống điều khiển và các thiết bị, mà chỉ đơn
giản là thay đổi chương trình cho phù hợp với điều kiện sản xuất mới.
PLC với máy tính
Cấu trúc giữa máy tính với PLC đều dựa trên bộ vi xử lý (CPU) để xử lý dữ
liệu. Tuy nhiên có một vài cấu trúc quan trọng cần phân biệt để thấy rõ sự khác biệt
giữa một PLC và một máy tính :
Không như máy tính, PLC được thiết kế đặc biệt để hoạt động trong môi
trường công nghiệp. Một PLC có thể được lắp đặt ở những nơi có độ nhiễu diện cao
Phần II: Giới thiệu tổng quát về PLC Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 47
(Electrical Noise), vùng có từ truờng mạnh, có các chấn động cơ khí, nhiệt độ môi
trường cao …
Điều quan trọng thứ hai đó là: một PLC được thiết kế với phần cứng và phần
mềm sao cho dễ lắp đặt (đối với phần cứng) đồng thời về mặt chương trình cũng
phải dễ dàng để người sử dụng (kỹ sư, kỹ thuật viên) thao tác lập trình một cách
nhanh chóng, thuận lợi (ví dụ: lập trình bằng ngôn ngữ hình thang… ).
PLC với máy tính cá nhân PC (Personal Computer):
Đối với một PC, người lập trình dễ nhận thấy được sự khác biệt giữa PC với
PLC, sự khác biệt có thể biết được như sau:
Máy tính không có các cổng giao tiếp trực tiếp với các thiết bị điều khiển,
đồng thời máy tính cũng hoạt động không tốt trong môi trường công nghiệp.
Ngôn ngữ lập trình trên máy tính không phải là dạng hình thang, máy tính
ngoài việc sử dụng các phần mềm chuyên biệt cho PLC, còn phải thông qua việc sử
dụng các phần mềm khác, làm "chậm" đi quá trình giao tiếp với các thiết bị được
điều khiển.
Tuy nhiên qua máy tính, PLC có thể dễ dàng kết nối với các hệ thống khác,
cũng như PLC có thể sử dụng bộ nhớ (có dung lượng rất lớn) của máy tính làm bộ
nhớ của PLC.
VIII. LỢI ÍCH CỦA VIỆC SỬ DỤNG PLC
Cùng với sự phát triển của phần cứng và phần mềm, PLC ngày càng tăng được
các tính năng cũng như lợi ích của PLC trong hoạt động công nghiệp. Kích thước
của PLC hiện nay được thu nhỏ lại để bộ nhớ và số lượng I/O càng nhiều hơn, các
ứng dụng của PLC càng mạnh hơn giúp người sử dụng giải quyết được nhiều vấn đề
phức tạp trong điều khiển hệ thống.
Lợi ích đầu tiên của PLC là hệ thống diều khiển chỉ cần lắp dặt một lần (đối
với sơ đồ hệ thống, các đường nối dây, các tín hiệu ở ngõ vào/ra …), mà không phải
thay đổi kết cấu của hệ thống sau này, giảm được sự tốn kém khi phải thay đổi lắp
đặt khi đổi thứ tự điều khiển (đối với hệ thống điều khiển Relay), khả năng chuyển
đổi hệ điều khiển cao hơn (như giao tiếp giữa các PLC để truyền dữ liệu điều khiển
lẫn nhau), hệ thống được điều khiển linh hoạt hơn.
Phần II: Giới thiệu tổng quát về PLC Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 48
Không như các hệ thống cũ, PLC có thể dễ dàng lắp đặt do chiếm một khoảng
không gian nhỏ hơn nhưng điều khiển nhanh, nhiều hơn các hệ thống khác. Điều
này càng tỏ ra thuận lợi hơn đối với các hệ thống điều khiển lớn, phức tạp, và quá
trình lắp đặt hệ thống PLC ít tốn thời gian hơn các hệ thống khác.
Cuối cùng là người sử dụng có thể nhận biết các trục trặc hệ thống của PLC
nhờ giao diện qua màn hình máy tính (một số PLC thế hệ sau có khả năng nhận biết
các hỏng hóc (trouble shoding) của hệ thống và báo cho người sử dụng), điều này
làm cho việc sửa chữa thuận lợi hơn.
IX. MỘT VÀI LĨNH VỰC TIÊU BIỂU ỨNG DỤNG PLC
Hiện nay PLC đã được ứng dụng thành công trong nhiều lĩnh vực sản xuất cả
trong công nghiệp và dân dụng. Từ những ứng dụng để điều khiển các hệ thống đơn
giản, chỉ có chức năng đóng/mở (ON/OFF) thông thường đến các úng dụng cho các
lĩnh vực phức tạp, đòi hỏi tính chính xác cao, ứng dụng các thuật toán trong quá
trình sản xuất. Các lĩnh vực tiêu biểu ứng dụng PLC hiện nay bao gồm:
Hóa học và dầu khí: Định áp suất (dầu), bơm dầu, điều khiển hệ thống ống
dẫn, cân đong trong ngành hóa …
Chế tạo máy và sản xuất: Tự động hóa trong chế tạo máy, cân đong, quá
trình lắp đặt máy, điều khiển nhiệt độ lò kim loại,… -Bột giấy, giấy, xử lý giấy :
điều khiển máy băm, quá trình ủ bột, quá trình cán, gia nhiệt, …
Thủy tinh và phim ảnh: quá trình đóng gói, thử nghiệm vật liệu, cân đong,
các khâu hoàn tất sản phẩm, đo cắt giấy, …
Thực phẩm, rượu bia, thuốc lá: đếm sản phẩm, kiểm tra sản phẩm, kiểm soát
quá trình sản xuất, bơm (bia, nước trái cây, …), cân đong, đóng gói, hòa trộn, …
Kim loại: điều khiển quá trình cán, cuốn (thép), quy trình sản xuất, kiểm tra
chất lượng.
Năng lượng: điều khiển nguyên liệu (cho quá trình đốt, xử lý trong các
turbin, …), các trạm cần hoạt động tuần tự khai thác vật liệu một cách tự động
(than, gỗ, dầu mỏ, …).
X. ỨNG DỤNG PLC VÀO CÁC QUY TRÌNH ĐIỀU KHIỂN TỰ ĐỘNG
Phần II: Giới thiệu tổng quát về PLC Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 49
Tự động hoá là một trong những yêu cầu căn bản của một nền công nghiệp
phát triển, đối với tự động hoá các quy trình điều khiển sẽ chính xác hơn, các sản
phẩm làm ra sẽ có chất lượng đồng nhất hơn và quan trọng nhất là do tiết kiệm được
chi phí nhân công và tiêu hao vật tư nên các sản phẩm này sẽ có giá thành rẽ hơn
các sản phẩm cùng loại sản xuất bằng tay.
Tự động hoá giải phóng người lao động khỏi những công việc nặng nhọc và
nguy hiểm, tạo điều kiện cho họ có nhiều thời gian hơn để nghiên cứu và cải tiến
các quy trình tự động hoá ngày càng tốt hơn.
Ngày nay, với sự phát triển của xã hội,nhu cầu về cuộc sống ngày càng cao,
tự động hoá không chỉ là ứng dụng trong công nghiệp mà xuất hiện ở khắp mọi nơi,
phục vụ cho mọi nhu cầu dân dụng của cuộc sống.
Trong giai đoạn ban đầu (khoảng cách giữa những thập niên 50 của thế kỷ 20) trong
các quy trình sản xuất của các ngành công nghiệp, một hệ thống điều khiển tự động
là tổ hợp phức tạp của các Rơle điện cơ. Tuy nhiên, các hệ thống có một số nhược
điểm :
Kích thước quá lớn và quá phức tạp đối với các hệ thống lớn, khó kiểm soát,
thời gian lắp đặt lâu.
Khi hoạt động xuất hiện hiện tượng hao mòn các tiếp điểm đóng ngắt nên
yêu cầu bảo dưỡng thường xuyên, do đó, tuổi thọ thiết bị thấp.
Hệ thống điều khiển Rơle là một hệ thống điều khiển theo quy trình cứng có
chức năng cố định, khi có yêu cầu thay đổi bất kỳ về quy trình hoạt động thì chỉ
thực hiện bằng cách nối lại hệ thống dây dẫn hoặc thay đổi thành hệ thống.
Phần III: Truyền thông sử dụng điều khiển FREEPORT Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 49
PHẦN III
TRUYỀN THÔNG SỬ DỤNG ĐIỀU KHIỂN FREEPORT
I.GIỚI THIỆU
Chế độ Freeport được sử dụng để điều khiển cổng truyền thông của CPU S7-
200 thông qua chương trình của người sử dụng. Ở chế độ Freeport, chương trình
CPU sử dụng các ngắt thu (receiveed interrupt), ngắt phát (transmited interrupt) và
các lệnh thu (RCV –Receive instruction) , lệnh phát (XMT – Transmit instruction)
để điều khiển cổng truyền thông của CPU. Ở chế độ này, giao thức truyền thông
được kiểm soát hoàn toàn bởi chương trình của người sử dụng. Các ô nhớ chuyên
dụng SMB30 ( đối với port 0) và SMB130 ( đối với port 1) được sử dụng để chọn
tốc độ truyền và bit chẵn / lẻ (parity).
Chế độ Freeport chỉ hoạt động khi CPU ở trạng thái RUN. Khi CPU ở trạng
thái STOP, chế độ Freeport ngưng hoạt động và chế độ truyền thông bình thường
được lập lại.
II.ỨNG DỤNG CỦA CHẾ ĐỘ FREEPORT
Chế độ Freeport cho phép CPU S7-200 giao tiếp với bất cứ thiết bị nào hỗ trợ
giao thức truyền thông 10 bit ( 7bit dữ liệu) hoặc 11 bit ( 7 hoặc 8 bit dữ liệu), vì
vậy, cho phép kết nối rất nhiều thiết bị khác nhau ( của nhiều nhà sản xuất khác
nhau ) vào mạng S7-200.
Trong trường hợp đơn giản nhất, có thể gởi dữ liệu đến máy in hoặc màn hình
chỉ sử dụng lệnh phát XMT. Các ví dụ khác bao gồm giao tiếp với thiết bị đọc bar
code, cân điện tử, máy hàn, các bộ cảm biến,... .Trong mỗi trường hợp cần phải viết
chương trình hỗ trợ giao thức truyền thông sử dụng bởi thiết bị cần kết nối.
Một ứng dụng quan trọng của chế độ Freeport là có thể sử dụng chế độ Freeport
để giao tiếp với cổng nối tiếp của máy tính cá nhân. Qua đó, người sử dụng có thể
viết chương trình máy tính ( bằng các ngôn ngữ thông dụng như C, Visual Basic,
Delphi,...) để giám sát và điều khiển hoạt động của CPU S7-200 hoặc mạng S7-200.
Phần III: Truyền thông sử dụng điều khiển FREEPORT Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 50
III.CÁC YÊU CẦU KĨ THUẬT
Cổng truyền thông của S7-200 là cổng RS-485. Do đó, khi kết nối với các
thiết bị sử dụng chuẩn truyền thông khác cần có thiết bị kết nối chuyên dụng để
chuyển đổi tín hiệu giữa 2 chuẩn sử dụng.
Trong trường hợp thiết bị cần kết nối sử dụng cổng truyền thông RS-232 có thể
sử dụng cáp MÁY TÍNH/PPI để kết nối. Tuy nhiên, thời gian quay vòng của cáp
MÁY TÍNH/PPI phải được tính đến trong chương trình: để đảm bảo không bị mất
dữ liệu, mỗi khi dữ liệu được truyền từ cổng RS-232 đến cổng RS-475, việc truyền
dữ liệu theo hướng ngược lại phải được trì hoãn một khoảng thời gian tối thiểu
bằng thời gian quay vòng của cáp (xem chương II).
Ngoài ra, cổng truyền thông RS-485 của CPU S7-200 chỉ hỗ trợ các tín hiệu thu
dữ liệu, phát dữ liệu và yêu cầu gởi (RTS). Các tín hiệu điều khiển CTS, DTR, các
tín hiệu bắt tay (handshaking) không được hỗ trợ. Điều này cũng cần được tính đến
khi thiết lập kết nối và lập trình sử dụng chế độ Freeport.
IV.KHỞI ĐỘNG CHẾ ĐỘ FREEPORT
Các ô nhớ chuyên dụng SMB30 và SMB130 được dùng để đặt cấu hình cho
port 0 và port 1 hoạt động ở chế độ Freeport, đồng thời cho phép chọn tốc độ
truyền, bit chẵn /lẻ và số bit dữ liệu. Các byte điều khiển này được mô tả trong bảng
sau:
Port 0 Port 1 Mô tả
Ô nhớ
SMB30
Ô nhớ
SMB130
MSB7 LSB0
p p d b b b m m Byte điềukhiển
chế độFreeport
SM30.6
và
SM30.7
SM130.6
và
SM130.7
pp : Chọn bit chẵn lẻ (parity)
00 = no parity
01 = even parity (parity chẵn)
10 = no parity
11 = odd parity (parity lẻ)
Phần III: Truyền thông sử dụng điều khiển FREEPORT Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 51
SM30.5 SM130.5
d : số bit dữ liệu trong 1 ký tự
0 = 8 bit cho 1 ký tự
1 = 7 bit cho 1 ký tự
SM30.2
đến
SM30.4
SM130.2
đến
SM130 .4
bbb: tốc độ truyền của chế độ Freeport
000 = 38400 baud (1920 baud đối với CPU 212)
001 = 19200 baud
010 = 9600 baud
011 = 4800 baud
100 = 2400 baud
101 = 1200 baud
110 = 600 baud
111 = 300 baud
SM30.0
và
SM30.1
SM130.0
và
SM130.1
mm : chọn giao thức .
00 = PPI chế độ slave
01 = chế độ Freeport
10 = PPI chế độ master
11 = dự trữ (mặc định là PPI chế độ slave)
Đối với port 0, một bit stop được thiết lập cho tất cả các cấu hình ngoại trừ
trường hợp 7 bit dữ liệu không có parity, trường hợp này có 2 bit stop. Đối với port
1, một bit stop được thiết lập cho tất cả các cấu hình .
Phần IV: Truyền thông nối tiếp dùng Visual Basic Luận văn tốt nghiệp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 52
PHẦN IV
TRUYỀN THÔNG NỐI TIẾP DÙNG VISUAL BASIC
I. TRUYỀN THÔNG NỐI TIẾP DÙNG VISUAL BASIC
Bình thường, khi chạy phần mềm Visual Basic ta chỉ thấy một số thành phần
quen thuộc trên hộp công cụ. Nhưng VB cho phép nhiều thành phần có thể bổ sung
thêm vào. Điều khiển truyền thông Mscomm của Visual Basic là một trong số các
đối tượng được bổ sung để tham gia vào một số việc truyền nhận dữ liệu thông qua
cổng nối tiếp.
Trong Visual Basic 6.0 ta có thể bổ sung thành phần Mscomm như sau :
Chọn Project( Component(ctrl-t) sẽ xuất hiện cửa sổ. Sau đó chọn Microsoft Comm
Control 6.0, Mscomm sẽ xuất hiện trên thanh công cụ.
Điều khiển truyền thông cung cấp hai khả năng để trao đổi thông tin :
Điều khiển sự kiện
Truyền thông điều khiển sự kiện là phương pháp tốt nhất được sử dụng trong
quá trình trao đổi thông tin nối tiếp khi nó giải phóng máy tính để làm các công việc
khác. Trong nhiều tình huống, ta cần được thông báo về sự thay đổi. Thí dụ như ta
cần biết khi có ký tự gửi đến hoặc sự thay đổi xảy ra trên đường DCD (Data Carier
Detect) hoặc đường RTS (Request to send). Để làm điều đó, ta sẽ phải dùng sự kiện
truyền thông OnComm để bẫy và điều khiển các sự kiện. Điều khiển truyền thông
còn phát hiện và điều khiển các lỗi truyền thông.
Hỏi vòng ( Polling )
Ta cũng có thể hỏi vòng các sự kiện và lỗi bằng cách kiểm tra giá trị của đặc
tính ComEvent sau mỗi chu kỳ của chương trình để xác định xem liệu một sự kiện
hoặc một lỗi đã xuất hiện. Chẳng hạn ,chương trình có thể tạo vòng lặp để chờ một
ký tự cần được nhận. Cứ mỗi lần như vậy, ký tự được đọc từ bộ đệm nhận. Thông
thường, phương pháp này được sử dụng khi chương trình có thời gian để tiến hành
hỏi vòng bộ nhận thông tin, hay nói cách khác là trong những ứng dụng không lớn.
Đặc tính
Thành phần comm. Được bổ sung vào biểu mẫu (form) bất cứ lúc nào cần
đến việc truyền thông nối tiếp.
Phần IV: Truyền thông nối tiếp dùng Visual Basic Luận văn tốt nghiệp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 53
Theo mặc định, cổng thứ nhất tạo ra đối tượng có tên là MSComm1, đối
tượng thứ hai là MSComm2,…
Thí dụ chỉ ra cách truyền thông qua cổng nối tiếp có thể được tiến hành như
thế nào bằng cách sử dụng một MODEM.
Private sub Form_load()
Dim Instring as String
Mscomm1.ComPort=1
‘sử dụng COM1
Mscomm1.Setting=”9600,N,8,1”
‘9600baud,no parity,8bit data,1bit stop
Mscomm1.InputLen=0
‘Mscomm đọc heat bộ đệm nhận khi dùng lệnh Input
Mscomm1.PortOpen=True
‘mở cổng
Mscomm1.Output=”ATVQ0”&Chr$(13)
‘gửi lệnh attention tới MODEM
‘đợi dữ liệu trở lại cổng nối tiếp
Do
DoEvents
Buffer$=Buffer$&Mscomm1.Input
Loop Until InStr(Buffer$,”OK”&vbCRLF)
‘đọc dữ liệu trả lời “OK”
Mscomm1.PortOpen=False
‘đóng cổng nối tiếp
End Sub
Settings:
Các đặc tính settings đặt và trả lại các thông số truyền thông cho cổng RS-
232, như tốc độ baud, chẳn lẻ, số bit dữ liệu và số các bit dừng.
Cú pháp của câu lệnh là:
[form]MSComm.Setting[=param.String$]
Phần IV: Truyền thông nối tiếp dùng Visual Basic Luận văn tốt nghiệp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 54
Nếu paramString không có khi mở cổng thì điều khiển truyền thông phát sinh
ra lỗi 380.
Paramstring là một xâu chứa bốn thông số thiết lập cho cổng RS-232 và có
dạng như sau:
“BBBB, P, D, S”
Ở đây, BBBB xác định tốc độ baud, P là bit chỉ tính chẳn lẻ, D là số bit dữ
liệu, và S là số các bit dừng (bit stop). Giá trị mace định của Paramstring là:
“9600, N, 8, 1”
Comport :
Đặc tính này đặt và trả lại số cổng truyền thông. Cú pháp của câu lệnh là:
[form]MSComm.CommPort[=port number%]
Trong khi thiết kế ta có thể đặt portnumber bằng một giá trị name trong
khoảng từ 1 đến 99(giá trị mace định là 1). Trước khi dùng lệnh này, phải thiết lập
cổng bằng CommPort. Nếu ta dùng đặc tính PortOpen trước khi thiết lập cổng bằng
CommPort thì điều khiển truyền thông sinh ra lỗi 68 (lỗi chu6a có thiết bị hoặc
cổng không tồn tại).
Đặc tính PortoPen
Đặc tính PortOpen đặt và trả lại trạng thái của cổng truyền thông (đóng hoặc
mở). Đặc tính này không có trong thời gian thiết kế chương trình. Cú pháp câu lệnh
là:
[form]MSComm.PortOpen[=True/False]
Thông số thiết lập là True để mở cổng, còn False để đóng (giải phóng) cổng và
xoá nội dung các bộ đệm nhận và truyền (tác động này tự động xảy ra khi một ứng
dụng được đóng).
Trước khi dùng đặc tính này, phải đặt số cổng bằng đặc tính CommPort, nếu ta
quên đi đặc điểm này thì lỗi 68 phát sinh.
Thí dụ về mở cổng truyền thông số 1(COM1) với tốc độ Baud là 4800 Baud,
không kiểm tra tính chẳn lẻ, 8 bit dữ liệu, 1 bit stop.
MSComm1.Setting=”4800, N, 8, 1”
Kiểu dữ liệu MSComm1. Setting là String.
Phần IV: Truyền thông nối tiếp dùng Visual Basic Luận văn tốt nghiệp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 55
Đặc tính Input
Input trả lại và xoá bỏ một chuỗi ký tự từ bộ đệm nhận. Đặc tính này không có
sẵn trong khi thiết kế và là chỉ đọc (Read_only) khi chạy chương trình. Cú pháp của
câu lệnh là:
[form]MSComm.Input
Đặc tính InputLen qui định số ký tự được đọc bởi câu lệnh Input. Để xác định
số các ký tự trong bộ đệm, đặc tính InBufferCount được kiểm tra. Đặt InputLen
bằng 0 để đọc heat bộ đệm nhận.
Đặc tính InputMode quyết định kiểu dữ liệu thu về qua đặc tính Input. Nếu
đặc tính này được đặt là CommInputModeText thì đặc tính Input sẽ trả về dữ liệu
kiểu Text. Nếu đặc tính này được đặt là CommInputModeBinary thì Input sẽ trả về
dữ liệu nhị phân.
Thí dụ chỉ cách đọc dữ liệu từ bộ đệm nhận :
Mscomm1.InputLen=0
‘đọc toàn bộ nội dung của bộ đệm nhận
If Mscomm1.InBufferCount then
‘kiểm tra có dữ liệu hay không
InString$=Mscomm1.Input
End if
Kiểu dữ liệu của đặc tính này là Variant
Đặc tính InBufferSize
Đặt và trả lại kích thước bộ đệm nhận, tính theo số byte.Cú pháp của câu lệnh
là :
[form]Mscomm.InBufferSize[=numbyte%]
Đặc tính này có liên quan đến kích thước bộ đệm nhận. Giá trị mặc định là
1024 bytes. Kích thước của bộ đệm phải được đặt sao cho nó có thể cất giữ được số
lớn nhất của các ký tự sẽ được nhận trước khi chương trình ứng dụng có thể đọc
chúng từ bộ đệm, trừ khi ta làm việc ở chế độ bắt tay (handshaking).
Kiểu dữ liệu của đặc tính này là Integer
Phần IV: Truyền thông nối tiếp dùng Visual Basic Luận văn tốt nghiệp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 56
Đặc tính InBufferCount
Trả lại số ký tự trong bộ đệm nhận. Nó cũng có thể được dùng để xoá bộ đệm
bằng cách đặt số của các ký tự bằng 0. Đặc tính này không có trong thời gian thiết
kế chương trình. Cú pháp của câu lệnh này là:
[form]Mscomm.InBufferCount[=Count%]
Ta có thể xoá bộ đệm nhận bằng cách đặt đặc tính InBufferCount=0
Kiểu dữ liệu của đặc tính này là Integer.
Đặc tính Output
Đặc tính Output sẽ viết một chuỗi ký tự vào bộ đệm truyền, đặc tính này
không có trong thời gian thiết kế chương trình. Cú pháp của câu lệnh này là :
Mscomm1.Output[=OutString$]
Thí dụ sau cho biết cách gửi ký tự mà người gõ từ bàn phím:
Private Sub Form_load(key Ascii as Integer)
Mscomm1.Outport=Chr$(Key Ascii)
End sub
Đặc tính Output có thể xuất dữ liệu dạng Text hay Binary. Để gửi dữ liệu
Text, ta phải khai báo một biến Variant và cho nó chứa chuỗi muốn gửi sau đó gán
biến này cho một đặc tính Output. Để gửi dữ liệu Binary, ta phải truyền một biến
Variant chứa một mảng các byte cho đặc tính Output.
Kiểu dữ liệu của dạng này là Variant.
Đặc tính OutputBufferSize
Đặc tính này đặt và trả lại kích thước của các ký tự trong bộ đệm truyền. Cú
pháp của câu lệnh này là :
[form]Mscomm.OutputBufferSize[=numbyte%]
Giá trị mặc định của đặc tính này là 512 bytes
Chú ý:
Không được nhầm lẫn giữa hai đặc tính OutBufferCount và OutBufferSize với
nhau. Đặc tính OutBufferCount nói lên số byte hiện đang có trong bộ đệm truyền,
còn OutBufferSize qui định tổng kích thước của bộ đệm truyền.
Không nên để kích thước của bộ đệm truyền quá lớn. Tuy nhiên, nếu để quá
nhỏ sẽ xảy ra hiện tượng tràn dữ liệu (trừ khi làm việc ở chế độ bắt tay). Thông
Phần IV: Truyền thông nối tiếp dùng Visual Basic Luận văn tốt nghiệp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 57
thường nên bắt đầu kích thước bộ đệm truyền 512 bytes. Nếu lỗi tràn xảy ra phải
tăng kích thước bộ đệm thích hợp.
Đặc tính OutBufferCount:
Đặc tính này trả lại số ký tự trong bộ đệm truyền. Nhờ đặc tính này, ta có thể
xoá nội dung bộ đệm truyền bằng cách đặt giá trị của OutBufferCount=0.Cú pháp
của câu lệnh này là:
[form]Mscomm.OutBufferCount[=value%]
Kiểu dữ liệu của đặc tính này là Integer.
Đặc tính SThreshold
Đặt và trả lại số ký tự tối thiểu của các ký tự có thể cho phép trong bộ đệm
truyền trước khi điều khiển truyền thông xác lập đặc tính CommEvent và phát sinh
sự kiện OnComm. Xác lập đặc tính SThreshold bằng 0 để vô hiệu hoá sự phát sinh
sự kiện OnComm. Ngược lại, nếu đặt SThreshold bằng 1 thì điều khiển truyền
thông phát sinh sự kiện OnComm (sự kiện OnComm được gọi) khi bộ đệm truyền
không có dữ liệu (hay bộ đệm truyền rỗng). Cú pháp của câu lệnh này là :
[form}MScomm.SThreshold[=numChars%]
II.CƠ SỞ DỮ LIỆU
1. Giới thiệu Cơ sở dữ liệu
Cơ sở dữ liệu là một kho chứa thông tin. Có nhiều loại cơ sở dữ liệu, nhưng
trong đề tài này chỉ quan tâm đến cơ sở dữ liệu quan hệ, là kiểu cơ sở dữ liệu phổ
biến nhất hiện nay.
Một cơ sở dữ liệu quan hệ:
Chứa dữ liệu trong các bảng, được cấu tạo bởi các dòng còn gọi là các mẩu tin,
và cột còn gọi là các trường
Cho phép lấy về (hay truy vấn) các tập hợp dữ liệu con từ các bảng.
Cho phép nối các bảng với nhau cho mục đích truy nhập các mẩu tin liên quan
với nhau chứa trong các bảng khác nhau.
Phần IV: Truyền thông nối tiếp dùng Visual Basic Luận văn tốt nghiệp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 58
Thiết kế cơ sở dữ liệu :
Để tạo một cơ sở dữ liệu, trước hết, ta phải xác định thông tin gì cần theo dõi.
Sau đó, ta thiết kế cơ sở dữ liệu, tạo bảng chứa các trường định nghĩa kiểu dữ liệu
sẽ có. Sau khi tạo ra cấu trúc cơ sở dữ liệu, cơ sở dữ liệu có thể chứa dữ liệu dưới
dạng mẩu tin. Ta không thể đưa dữ liệu vào mà không có bảng hay định nghĩa
trường vì dữ liệu sẽ không có chổ để chứa. Do đó, thiết kế cơ sở dữ liệu cực kỳ
quan trọng, nhất là rất khó thay đổi thiết kế một khi ta đã tạo xong nó.
Bảng ( tables ): chứa các mẩu tin là các mẩu dữ liệu riêng rẽ bên trong phân
nhóm dữ liệu.
Mẩu tin : chứa các trường( field ) . Mỗi trường thể hiện một bộ phận dữ liệu
trong một mẩu tin. Ví dụ như mổi mẩu tin thể hiện một mục trong danh bạ địa chỉ
chứa các trường tên và họ, địa chỉ, thành phố, số điện thoại.
Recordset là một cấu trúc dữ liệu thể hiện một tập hợp con các mẩu tin lấy về
từ cơ sở dữ liệu. Về khái niệm, nó tương tự một bảng nhưng có thêm một vài thuộc
tính riêng biệt quan trọng.
Các recordset được thể hiện như là các đối tượng, về khái niệm tương tự như
là các đối tượng giao diện người sử dụng ( như là một nút lệnh và hộp văn bản trong
Visual Basic)
2. Sử dụng Microsoft Access để tạo một cơ sở dữ liệu
Microsoft Access có một giao diện tinh xảo và dể dàng để tạo các đối tượng cơ
sở dữ liệu . Quan hệ giữa các bảng
a.Quan hệ Một - Một
Là loại quan hệ dễ hiểu và dể thực hiện nhất, bởi vì trong những mối quan hệ
như vậy, một bảng sẽ lấy vị trí của một trường trong bảng khác; trường liên quan
cũng dễ nhận dạng. Tuy nhiên, quan hệ một - một không phải là mối quan hệ thông
dụng nhất trong ứng dụng cơ sở dữ liệu.
b.Quan hệ Một - Nhiều
Phần IV: Truyền thông nối tiếp dùng Visual Basic Luận văn tốt nghiệp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 59
Phổ biến hơn quan hệ Một - Một, trong đó, mỗi mẩu tin trong một bảng này
không có, hoặc có một, hoặc nhiều mẩu tin trong một bảng liên hệ
c.Quan hệ Nhiều - Nhiều
Quan hệ Nhiều - Nhiều là bước phát triển của quan hệ Một - Nhiều. Ví dụ cổ
điển nhất của quan hệ Nhiều - Nhiều là học sinh và lớp. Mổi học sinh có nhiều lớp,
mỗi lóp có nhiều học sinh.
3.Liên kết Cơ sở dữ liệu( Access ) với Visual Basic
a.Sử dụng điều khiển DAO DATA
Ta có thể sử dụng điều khiển DAO Data để kết nối với một cơ sở dữ liệu Jet
của Microsoft. Mặc dù với sự xuất hiện của điều khiển mạnh hơn, ADO Data, việc
sử dụng điều khiển DAO Data bị giảm bớt, nhưng vẫn tồn tại lý do để sử dụng điều
khiển cổ điển DAO Data. Ngoài ra, nó còn có khả năng kết nối với các nguồn dữ
liệu như các tập tin dBASE, văn bản, bảng tính Excel.
b.Sử dụng điều khiển ADO DATA
Để tạo một ứng dụng dùng điều khiển ADO Data rất đơn giản. Thực ra, nếu
những gì ta quan tâm chỉ là duyệt cơ sở dữ liệu thì ta không cần phải lập trình gì cả.
Đây là một quy trình gồm hai bước quy định thuộc tính ConnectionString và
RecordSource của điều khiển Data, sau đó ràng buộc điều khiển với điều khiển giao
diện người sử dụng. Để thực hiện điều này, ta theo các bước sau:
Bắt đầu một đề án mới của Visual Basic
Dùng menu Project Components, lập trình tham chiếu đến “Microsoft ADO
Data Control 6.0 (OLEDB) bằng cách chọn vào hộp đánh dấu trong danh sách.
Nhấn OK. Điều khiển ADO Data xuất hiện trên thanh công cụ của Visual
Basic. Nhấn đúp chuột lên điều khiển để tạo một instance của điều khiển trên biểu
mẩu.
Hình 7: Điều khiển ADO Data
Phần IV: Truyền thông nối tiếp dùng Visual Basic Luận văn tốt nghiệp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 60
Nhấn nút phải chuột lên điều khiển. Từ menu bật ra, chọn ADODC
Properties. Chọn “User Connection Srting” rồi nhấn Build.
Hộp thoại Data Link Properties xuất hiện. Đây là hộp thoại ta dùng để kết
nối với cơ sở dữ liệu. Sau đó nhấn nút OK khi hoàn tất.
Đến đây bạn đã quay lại hộp thoại Property Pages của điều khiển ADO Data.
Kế tiếp, ta thông báo cho điều khiển bảng nào sẽ được dùng. Chọn tab
RecordSource, rồi chọn 2 – adCmdTable từ hộp kết hợp CommandType.
Chọn hợp kết hợp Table ỏ Stored Procedure Name. Hộp kết hợp hiển thị
danh sách tất cả các bảng trong cơ sở dữ liệu. Chọn tblCustomer, rồi nhấn OK.
Kết nối đến cơ sở dữ liệu xảy ra khi ứng dụng thi hành. Tuy nhiên kết nối
không có thông báo, bởi vì không có cách nào để hiển thị dữ liệu. Để hiển thị dữ
liệu trả về từ một điều khiển dữ liệu, ta phải tạo các điều khiển kết nối ràng buộc
với điều khiển dữ liệu bằng cách gán thuộc tính Datasource và DataField.
Cài đặt và thiết lập tham chiếu đến ADO trong ứng dụng Visual Basic
Trong đề án Visual Basic, chọn Project, References.
Hộp thoại References xuất hiện.
Chọn vào hộp đánh dấu “Microsoft AtiveX Data Objects 2.0 Library” rồi
nhấn OK.
Dùng đối tượng Connection của ADO để kết nối với nguồn dữ liệu
Đây là cách thứ hai liên kết với nguồn dữ liệu mà không thông qua điều khiển
ADO Data.
Dùng phương thức Open của đối tượng Connection để thiết lập kết nối với
nguồn dữ liệu. Để thông báo cho ADO cách nối với nguồn dữ liệu, ta phải cung cấp
thông tin dưới dạng chuỗi kết nối tương tự chuỗi kết nối của ODBC. Ta dùng thuộc
tính ConnectionString để thực hiện điều này. Ta còn có khả năng tùy chọn để chọn
trình cung cấp nào sẽ được dùng bằng cách quy định giá trị của thuộc tính Provider
của đối tượng Connection.
Ví dụ: Cách khai báo biến kết nối với nguồn dữ liệu
Phần IV: Truyền thông nối tiếp dùng Visual Basic Luận văn tốt nghiệp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 61
Option Explicit
Dim dl as New ADODB. Connection ‘ Biến kết nối với nguồn dữ liệu
Dim rs as New ADODB. Recordset ‘ Biến truy cập đến các bảng trong nguồn dữ
liệu
Public Sub ADOconnect()
Dim dbpath As String
dbpath = App.Path & "\DATA.mdb" ‘ đường dẩn đến nguồn dữ liệu
Set DL = New ADODB.Connection
With DL
.ConnectionString = "Provider=microsoft.jet.oledb.4.0; data source=" & bpath
.CommandTimeout = 0
.CursorLocation = adUseClient
.Open
End With
End Sub
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 62
PHẦN V
LẬP TRÌNH ỨNG DỤNG
I.PHÂN TÍCH CÁC NGÕ VÀO RA
Qui ước
Bãi xe chứa tối đa 100 xe.
Khi bãi xe trống đèn xanh sáng cho phép xe vào, khi bãi xe đầy, đèn đỏ
sáng báo hiệu xe không được vào.
Cảm biến S1 là cảm biến từ đặt dưới mặt đất trước cửa vào để nhận biết có
xe vào bãi xe.
Cảm biến S5 là cảm biến quang đặt sau cửa vào để biết xe đã vào bãi xe để
đóng cửa vào đồng thời S5 cũng là cảm biến phân loại cho xe 4 chỗ vào bãi xe.
Cảm biến S4 là cảm biến quang đặt ở độ cao 2m để loại bỏ sự phân loại cho
xe 4 chỗ vào. Khi đồng thời chỉ 2 cảm biến S4 và S5 nhận biết được tín hiệu tức là
có xe 7 chỗ vào bãi xe.
Cảm biến S3 là cảm biến quang đặt cách cảm biến quang S5 một khoảng cách
khoảng 4m để loại bỏ sự phân loại của xe 4 chỗ và xe 7 chỗ vào bãi xe. Khi đồng
thời cả 3 cảm biến S5, S4 và S3 nhận biết được tín hiệu tức là có xe 12 chỗ vào bãi
xe.
Cảm biến S2 là cảm biến quang đặt cách cảm biến quang S5 một khoảng cách
khoảng 8m để loại bỏ sự phân loại xe 4 chỗ, xe 7 chỗ và xe 12 chỗ vào bãi xe. Khi
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 63
đồng thời cả 4 cảm biến S5, S4, S3 và S2 nhận biết được tín hiệu tức là có xe 30 chỗ
vào bãi xe.
Cảm biến S6 là cảm biến từ đặt dưới mặt đất trước cửa ra để nhận biết có xe
ra.
Cảm biến S10 là cảm biến quang đặt sau cửa ra để biết xe đã ra khỏi bãi xe để
đóng cửa ra đồng thời S10 cũng là cảm biến phân loại cho xe 4 chỗ ra khỏi bãi xe.
Cảm biến S9 là cảm biến quang đặt ở độ cao 2m để loại bỏ sự phân loại cho
xe 4 chỗ ra khỏi bãi xe. Khi đồng thời chỉ 2 cảm biến S10 và S9 nhận biết được tín
hiệu tức là có xe 7chỗ ra khỏi bãi xe.
Cảm biến S8 là cảm biến quang đặt cách cảm biến quang S10 một khoảng
cách khoảng 4m để loại bỏ sự phân loại của xe 4 chỗ và xe 7 chỗ ra khỏi bãi xe.Khi
đồng thời cả 3 cảm biến S10, S9 và S8 nhận biết được tín hiệu tức là có xe 12 chỗ ra
khỏi bãi xe.
Cảm biến S7 là cảm biến quang đặt cách cảm biến quang S10 một khoảng
cách khoảng 8m để loại bỏ sự phân loại xe 4 chỗ, xe 7 chỗ và xe 12 chỗ ra khỏi bãi
xe. Khi đồng thời cả 4 cảm biến S10, S9, S8 và S7 nhận biết được tín hiệu tức là có xe
30 chỗ ra khỏi bãi xe.
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 64
Mô hình bãi giữ xe
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 65
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 66
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 67
Qui định các ngõ vào ra , Timer và Counter
Các ngõ vào :
Cảm biến S1:
I0.0 = 0 : không có xe
I0.0 = 1 : có xe
Cảm biến S2 :
I0.1 = 0 : không có xe
I0.1 = 1 : có xe
Cảm biến S3 :
I0.2 = 0 : không có xe
I0.2 = 1 : có xe
Cảm biến S4 :
I0.3 = 0 : không có xe
I0.3 = 1 :có xe
Cảm biến S5 :
I0.4 = 0 : không có xe
I0.4 = 1 : có xe
Cảm biến S6 :
I0.5 = 0 : không có xe
I0.5 = 1 : có xe
Cảm biến S7 :
I0.6 = 0 : không có xe
I0.6 = 1 : có xe
Cảm biến S8 :
I0.7 = 0 : không có xe
I0.7 = 1 : có xe
Cảm biến S9 :
I1.0 = 0 : không có xe
I1.0 = 1 : có xe
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 68
Cảm biến S10:
I1.1 = 0 : không có xe
I1.1 = 1 : có xe
Công tắc hành trình dưới tại cửa vào (CT1)
I1.2 = 0 : khi không bị thanh gạt tác động
I1.2 = 1 : khi bị thanh gạt tác động
Công tắc hành trình trên tại cửa vào (CT2)
I1.3 = 0 : khi không bị thanh gạt tác động
I1.3 = 1 : khi bị thanh gạt tác động
Công tắc hành trình dưới tại cửa ra (CT3)
I1.4 = 0 : khi không bị thanh gạt tác động
I1.4 = 1 : khi bị thanh gạt tác động
Công tắc hành trình trên tại cửa ra (CT4)
I1.5 = 0 : khi không bị thanh gạt tác động
I1.5 = 1 : khi bị thanh gạt tác động
Các ngõ ra :
Cửa vào :
Q0.0 = 0 : không mở cửa
Q0.0 = 1 : mở cửa
Q0.1 = 0 : không đóng cửa
Q0.1 = 1 : đóng cửa
Cửa ra :
Q0.2 = 0 : không mở cửa
Q0.2 = 1 : mở cửa
Q0.3 = 0 : không đóng cửa
Q0.3 = 1 : đóng cửa
Đèn xanh :
Q0.4 = 0 : đèn xanh tắt
Q0.4 = 1 : đèn xanh sáng
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 69
Đèn đỏ :
Q0.5 = 0 : đèn đỏ tắt
Q0.5 = 1 : đèn đỏ sáng
Đèn chiếu sáng :
Q0.6 = 0 : không bật đèn
Q0.6 = 1 : bật đèn
Sự cố :
Q1.0 = 0 : không có sự cố
Q1.0 = 1 : có sự cố
Counter :
C48 đếm xe 4 chỗ hiện có trong bãi xe.
C49 đếm xe 7 chỗ hiện có trong bãi xe.
C50 đếm xe 12 chỗ hiện có trong bãi xe.
C51 đếm xe 30 chỗ hiện có trong bãi xe.
C52 chứa kết quả của xe 7 chỗ nhân 2.
C53 chứa kết quả của xe 12 chỗ nhân 3.
C54 chứa kết quả của xe 30 chỗ nhân 4.
C55 chứa kết quả cộng của C48 và C52
C56 chứa kết quả cộng của C53 và C54
C57 chứa kết quả cộng của C55 và C56 (C57 chứa tổng số xe hiện
còn trong bãi xe).
Timer :
T37 là thời gian tối đa để mở cửa vào.
T38 là thời gian tối đa để mở cửa ra.
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 70
Bắt đầu
Có xe vào
Mở cửa vào
Mở xong
Ngừng mở
Kích Timer
<10s
Xe đã vào
Phân loại xe vào
Xe 4 chỗ
Xe 7 chỗ
Xe 12 chỗ
Xe 30 chỗ
Đếm xe vào ( xe 4 chỗ + xe 7 chỗ x 2 +
xe 12chỗ x 3 + xe 30chỗ x 4)
Hiệu số
Có xe ra
Mở cửa ra
Mở xong
Ngừng mở
Kích Timer
<10s
Xe đã ra
Phân loại xe ra Tính tiền
Y
Y
N
N
Đóng cửa vào
Đóng xong
Đếm xe ra ( xe 4 chỗ + xe 7 chỗ x 2 +
xe 12chỗ x 3 + xe 30chỗ x 4)
Đóng cửa ra
Đóng xong
Ngưng đóng Kết thúc
N
Y
N
Y
Y
N
Xekhácvào Y
N
Y
Y
Y
Y
N
N
N Xe khác ra
Y
Y
Y
Y
Y
Y
Y
Y
N
N
Y
<100
Đèn xanh CAR
EMPTY
Đèn đỏ CAR FULL
PART
Y N
Ngưng đóng
N
N
II. LƯU ĐỒ GIẢI THUẬT
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 71
III.GIAO DIỆN GIAO TIẾP MÁY TÍNH
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 72
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 73
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 74
IV.VIẾT CODE CHO GIAO DIỆN
Code Form Giao diện giao tiếp
Option Explicit
Dim Nhan() As Byte
' KHAI BAO BIEN DE KET NOI CSDL
Dim sqlLuuDL As String
Public rsLuuDL As New ADODB.Recordset
Dim sqlXera As String
Public rsCapnhatXera As New ADODB.Recordset
Dim sqlPhanloaixe As String
Dim rsPhanloaixe As New ADODB.Recordset
Public Soxe As String
Public Loaixe As String
Dim sott As Integer
Public ngayvao As Date
Dim giovao As String
Dim ngayra As Date
Dim giora As String
Public thanhtien As Double
Public thoigian As String
Private Sub Chitiet_Click()
Load Baixe
Baixe.Show
End Sub
Private Sub ClosePort_Click()
If MSComm1.PortOpen = True Then
MSComm1.PortOpen = False
OPENPORT.Enabled = True
sco.Enabled = True
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 75
End If
End Sub
Private Sub CmbXera_Click()
Dim soxe1 As String
soxe1 = CmbXera.Text
rsCapnhatXera.Find "[so xe] = '" & soxe1 & "'", , , adBookmarkFirst
If Not rsCapnhatXera.EOF Then
txtLoaixera.Text = rsCapnhatXera.Fields(1)
End If
End Sub
Private Sub CmbXera_Change()
Dim soxe1 As String
soxe1 = CmbXera.Text
rsCapnhatXera.Find "[so xe] = '" & soxe1 & "'", , , adBookmarkFirst
If Not rsCapnhatXera.EOF Then
txtLoaixera.Text = rsCapnhatXera.Fields(1)
End If
End Sub
Private Sub cmdBoqua_Click()
txtSoxevao.Text = ""
CmbLoaixevao.Text = "Chon loai xe"
CmbXera.Text = "Xe ra"
txtLoaixera.Text = "Chon loai xe"
txtSoxevao.Enabled = False
CmbLoaixevao.Enabled = False
CmbXera.Enabled = False
txtLoaixera.Enabled = False
CmdLuuVao.Enabled = False
CmdLuuRa.Enabled = False
End Sub
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 76
Private Sub CmdPhanloaixe_Click()
Load Form5
Form5.Show
End Sub
Private Sub lbxevao_Click()
txtSoxevao.Enabled = True
CmbLoaixevao.Enabled = True
CmbXera.Enabled = False
txtLoaixera.Enabled = False
lbxevao.ForeColor = &HFF0000
txtLoaixera.Text = "Loai xe ra"
CmbXera.Text = "Xe ra"
txtSoxevao.Text = ""
CmdLuuRa.Enabled = False
CmdLuuVao.Enabled = True
cmdBoqua.Enabled = True
End Sub
Private Sub lbxera_Click()
CmdLuuVao.Enabled = False
CmdLuuRa.Enabled = True
cmdBoqua.Enabled = True
txtSoxevao.Text = "Xe vao"
txtSoxevao.Enabled = False
CmbLoaixevao.Enabled = False
CmbXera.Enabled = True
txtLoaixera.Enabled = True
txtLoaixera.Locked = True
lbxera.ForeColor = &HFF0000
sqlXera = "SELECT * FROM CHITIET"
Set rsCapnhatXera = LayDL(sqlXera)
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 77
rsCapnhatXera.Sort = "[so xe] ASC"
If rsCapnhatXera.RecordCount > 0 Then
rsCapnhatXera.MoveFirst
Do While Not rsCapnhatXera.EOF
CmbXera.AddItem rsCapnhatXera.Fields(2)
rsCapnhatXera.MoveNext
Loop
rsCapnhatXera.MoveFirst
CmbXera.Text = rsCapnhatXera.Fields(2)
txtLoaixera.Text = rsCapnhatXera.Fields(1)
End If
End Sub
Private Sub CmdLuuVao_Click()
Dim Error As Integer
TIEP.Enabled = True
sqlLuuDL = "select * from chitiet"
Error = kiemtra
Set rsLuuDL = LayDL(sqlLuuDL)
If Error = 0 Then
If Val(CmbLoaixevao.Text) = False Then
MsgBox "Loai xe vao chi duoc chon gia tri tu 1 den 4 "
CmbLoaixevao.Text = ""
Exit Sub
End If
If Val(CmbLoaixevao.Text) > 4 Then
MsgBox "Loai xe khong duoc lon hon 4"
CmbLoaixevao.Text = ""
Exit Sub
End If
rsLuuDL.AddNew
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 78
GhiDL rsLuuDL
LuuDL rsLuuDL
txtSoxevao.Text = ""
CmbLoaixevao.Text = ""
End If
If Error = 1 Then
MsgBox "Vui long nhap so xe!"
Exit Sub
End If
If Error = 2 Then
MsgBox "Vui long chon loai xe!"
Exit Sub
End If
If Error = 3 Then
MsgBox "So xe chi duoc nhap 7 ki tu!"
txtSoxevao.Text = ""
Exit Sub
End If
If Error = 4 Then
MsgBox "Loai xe chi duoc chon tu 1 den 4!"
CmbLoaixevao.Text = ""
Exit Sub
End If
End Sub
Private Sub GhiDL(rs As ADODB.Recordset)
Dim s As String
Dim MALN As Variant
Dim tam As Variant
Dim rsDem As New ADODB.Recordset
s = "select * from chitiet"
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 79
Set rsDem = LayDL(s)
MALN = 0
Do While (Not rsDem.EOF)
tam = rsDem![stt]
If (MALN < tam) Then
MALN = tam
End If
rsDem.MoveNext
Loop
MALN = MALN + 1
rs.Fields(0) = MALN
rs.Fields(1) = CmbLoaixevao.Text
rs.Fields(2) = txtSoxevao.Text
rs.Fields(3) = Date
rs.Fields(4) = Time
rs.Fields(5) = 0
rs.Fields(6) = 0
rs.Fields(7) = 0
rs.Fields(8) = 0
Set rsDem = Nothing
End Sub
Private Sub Sco_Click()
Timer18.Enabled = False
MSComm1.Output = "a"
Timer18.Enabled = True
sco.Enabled = False
End Sub
Private Sub Exit_Click()
Call ClosePort_Click
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 80
End
End Sub
Private Sub Form_mousemove(button As Integer, shift As Integer, X As Single, Y
As Single)
lbxevao.FontUnderline = False
lbxevao.ForeColor = &HFF&
End Sub
Private Sub lbxevao_mousemove(button As Integer, shift As Integer, X As Single,
Y As Single)
lbxevao.FontUnderline = True
lbxevao.ForeColor = &HC000C0
lbxera.FontUnderline = False
lbxera.ForeColor = &HFF0000
End Sub
Private Sub lbxera_mousemove(button As Integer, shift As Integer, X As Single, Y
As Single)
lbxera.FontUnderline = True
lbxera.ForeColor = &HC000C0
lbxevao.FontUnderline = False
lbxevao.ForeColor = &HFF0000
End Sub
Private Sub Form_Load()
'---------------------------------------------------------------'
cnn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" &
App.Path & "\baigiuxe.mdb;Persist Security Info=False"
cnn.CursorLocation = adUseClient
cnn.Open
txtSoxevao.Enabled = False
CmbXera.Enabled = False
CmbLoaixevao.Enabled = False
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 81
txtLoaixera.Enabled = False
txtSoxevao.Text = " Xe vao"
CmdLuuVao.Enabled = False
CmdLuuRa.Enabled = False
cmdBoqua.Enabled = False
Dim i As Integer
For i = 1 To 4
Me.CmbLoaixevao.AddItem i
Next i
'--------------------------------------------------------------'
MSComm1.CommPort = 1
MSComm1.Settings = "9600,N,8,1"
MSComm1.InputLen = 0
MSComm1.RThreshold = 11
MSComm1.InputMode = comInputModeBinary
MSComm1.PortOpen = True
OPENPORT.Enabled = True
CLOSEPORT.Enabled = False
Timer18.Enabled = True
End Sub
Private Sub OpenPort_Click()
If MSComm1.PortOpen = True Then
MSComm1.PortOpen = False
End If
MSComm1.PortOpen = True
Timer18.Enabled = True
Timer19.Enabled = True
OPENPORT.Enabled = False
CLOSEPORT.Enabled = True
End Sub
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 82
Private Sub MSComm1_OnComm()
If MSComm1.InBufferCount >= 11 Then MSComm1.InputLen = 0
Nhan() = MSComm1.Input
Dim i, j, k, l, m, n, o, p, q, r, s As Integer
i = Nhan(0)
j = Nhan(1)
k = Nhan(2)
l = Nhan(3)
m = Nhan(4)
n = Nhan(5)
o = Nhan(6)
p = Nhan(7)
q = Nhan(8)
r = Nhan(9)
s = Nhan(10)
Text3.Text = o 'xe 4 cho
Text4.Text = p 'xe 7 cho
Text5.Text = q 'xe 12 cho
Text6.Text = r 'xe 30 cho
Text7.Text = s 'tong so xe
If i = 1 Then 'mo cua vao
Timer1.Enabled = True
Cuavao.Text = " MỞ "
If XanhVao.Visible = False Then
XanhVao.Visible = True
TatXanhVao.Visible = False
DoVao.Visible = False
TatDoVao.Visible = True
End If
If CTraiVao.Width = 495 And CPhaiVao.Width = 495 Then
Do
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 83
CTraiVao.Width = CTraiVao.Width - 1
CPhaiVao.Width = CPhaiVao.Width - 1
CPhaiVao.Left = CPhaiVao.Left + 1
Loop Until CTraiVao.Width = 15 And CPhaiVao.Width = 15
End If
End If
If i = 2 Then 'dong cua vao
Timer1.Enabled = True
Cuavao.Text = " ĐÓNG "
If XanhVao.Visible = True Then
XanhVao.Visible = False
TatXanhVao.Visible = True
DoVao.Visible = True
TatDoVao.Visible = False
End If
If CTraiVao.Width = 15 And CPhaiVao.Width = 15 Then
Do
CTraiVao.Width = CTraiVao.Width + 1
CPhaiVao.Width = CPhaiVao.Width + 1
CPhaiVao.Left = CPhaiVao.Left - 1
Loop Until CTraiVao.Width = 495 And CPhaiVao.Width = 495
End If
End If
If j = 1 Then 'mo cua ra
Timer2.Enabled = True
Cuara.Text = " MỞ "
If XanhRa.Visible = False Then
XanhRa.Visible = True
TatXanhRa.Visible = False
DoRa.Visible = False
TatDoRa.Visible = True
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 84
End If
If CTraiRa.Width = 495 And CPhaiRa.Width = 495 Then
Do
CTraiRa.Width = CTraiRa.Width - 1
CPhaiRa.Width = CPhaiRa.Width - 1
CPhaiRa.Left = CPhaiRa.Left + 1
Loop Until CTraiRa.Width = 15 And CPhaiRa.Width = 15
End If
End If
If j = 2 Then 'dong cua ra
Timer2.Enabled = True
Cuara.Text = " ĐÓNG "
If XanhRa.Visible = True Then
XanhRa.Visible = False
TatXanhRa.Visible = True
DoRa.Visible = True
TatDoRa.Visible = False
End If
If CTraiRa.Width = 15 And CPhaiRa.Width = 15 Then
Do
CTraiRa.Width = CTraiRa.Width + 1
CPhaiRa.Width = CPhaiRa.Width + 1
CPhaiRa.Left = CPhaiRa.Left - 1
Loop Until CTraiRa.Width = 495 And CPhaiRa.Width = 495
End If
End If
If k = 1 Then 'bai xe trong
Timer3.Enabled = True
TTrang.Text = " TRỐNG XE "
If XanhTrong.Visible = False Then
XanhTrong.Visible = True
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 85
TatXanhTrong.Visible = False
DoDay.Visible = False
TatDoDay.Visible = True
End If
End If
If k = 2 Then 'bai xe day
Timer3.Enabled = True
TTrang.Text = " ĐẦY XE "
If XanhTrong.Visible = True Then
XanhTrong.Visible = False
TatXanhTrong.Visible = True
DoDay.Visible = True
TatDoDay.Visible = False
End If
End If
If l = 1 Then ' mo den chieu sang
Timer5.Enabled = True
HTDen.Text = " MỞ "
If XanhDen.Visible = False Then
XanhDen.Visible = True
TatXanhDen.Visible = False
DoDen.Visible = False
TatDoDen.Visible = True
End If
End If
If l = 2 Then 'tat den chieu sang
Timer5.Enabled = True
HTDen.Text = " TẮT "
If XanhDen.Visible = True Then
XanhDen.Visible = False
TatXanhDen.Visible = True
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 86
DoDen.Visible = True
TatDoDen.Visible = False
End If
End If
If m = 1 Then
CmbLoaixevao.Text = "1"
End If
If m = 2 Then
CmbLoaixevao.Text = "2"
End If
If m = 3 Then
CmbLoaixevao.Text = "3"
End If
If m = 4 Then
CmbLoaixevao.Text = "4"
End If
If n = 1 Then
txtLoaixera.Text = "1"
End If
If n = 2 Then
txtLoaixera.Text = "2"
End If
If n = 3 Then
txtLoaixera.Text = "3"
End If
If n = 4 Then
txtLoaixera.Text = "4"
End If
End Sub
Private Sub CmdLuuRa_Click()
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 87
Dim gio1 As Integer
Dim phut1 As Integer
Dim tam1 As Integer
Dim tam2 As Integer
Dim tam3 As Integer
Dim gio2 As Integer
Dim phut2 As Integer
Dim gio3 As Integer
Dim phut3 As Integer
Dim Gia As Double
sqlXera = "select [so xe], [loai xe] from chitiet where [so xe] like '" &
CmbXera.Text & "' and [loai xe] like '" & txtLoaixera.Text & "' "
Set rsCapnhatXera = LayDL(sqlXera)
If (rsCapnhatXera.BOF = True And rsCapnhatXera.EOF = True) Then
MsgBox ("Khong co so xe nay, hay chon trong combo so xe!")
Else
rsCapnhatXera.MoveFirst
sqlXera = "select * from chitiet"
Set rsCapnhatXera = LayDL(sqlXera)
sqlXera = "select stt from chitiet where [so xe] = '" & Soxe & "' and [loai
xe]='" & Loaixe & "' "
sott = rsCapnhatXera.Fields(0)
Soxe = CmbXera.Text
Loaixe = txtLoaixera.Text
sqlXera = "UPDATE chitiet SET [ngay ra] = '" & Date & _
"' WHERE [loai xe] = '" & Loaixe & "' and [so xe] = '" & Soxe & "'" 'and [stt] =
'" & Val(sott) & "' "
Set rsCapnhatXera = LayDL(sqlXera)
sqlXera = "UPDATE chitiet SET [gio ra] = '" & Time & _
"' WHERE [loai xe] = '" & Loaixe & "'and [so xe] = '" & Soxe & "'" 'and [stt] =
'" & Val(sott) & "' " 'and [gio vao] = '" & rsGiovao.Fields(4) & "' "
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 88
Set rsCapnhatXera = LayDL(sqlXera)
sqlXera = "select [gio vao] from chitiet where [so xe] = '" & Soxe & "' and
[loai xe] = '" & Loaixe & "'" 'and [stt] = '" & Val(sott) & "' "
Set rsCapnhatXera = LayDL(sqlXera)
gio1 = (Hour(rsCapnhatXera![gio vao]))
phut1 = (Minute(rsCapnhatXera![gio vao]))
gio2 = Hour(Time)
phut2 = Minute(Time)
gio3 = gio2 - gio1
phut3 = phut2 - phut1
tam1 = gio1 * 60 + phut1
tam2 = gio2 * 60 + phut2
tam3 = tam2 - tam1
gio3 = tam3 / 60
phut3 = tam3 - (gio3 * 60)
thoigian = gio3 & " :" & phut3
sqlXera = "UPDATE chitiet SET [thoi gian goi (gio)] = '" & thoigian & _
"' WHERE [loai xe] = '" & Loaixe & "' and [so xe] = '" & Soxe & "'" 'and
[stt] = '" & Val(sott) & "'" 'and [gio vao] = '" & giovao & "' "
Set rsCapnhatXera = LayDL(sqlXera)
sqlPhanloaixe = "select [gia tien (vnd/gio)] from phanloaixe where loai = '" &
Loaixe & "'" 'and [stt] = '" & Val(sott) & "' "
Set rsPhanloaixe = LayDL(sqlPhanloaixe)
Gia = rsPhanloaixe![gia tien (vnd/gio)]
If Val(gio3 = 0) And Val(phut3) < 30 Then
gio3 = 1
thanhtien = Val(Gia) * Val(gio3)
End If
If (Val(phut3) > 15) And Val(gio3 > 0) Then
thanhtien = Val(Gia) * (Val(gio3) + 1)
Else
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 89
thanhtien = Val(Gia) * Val(gio3)
End If
sqlXera = "UPDATE chitiet SET [thanh tien (vnd)]= '" & Val(thanhtien) & "'
WHERE [loai xe] = '" & Loaixe & "' and [so xe] = '" & Soxe & "'" 'and [stt] = '" &
Val(sott) & "' " 'and [gio vao] = '" & giovao & "' "
Set rsCapnhatXera = LayDL(sqlXera)
soxe1 = Soxe
loaixe1 = Loaixe
sqlXera = "select [gio vao] from chitiet where [so xe] = '" & Soxe & "' and [loai
xe] = '" & Loaixe & "'" 'and [stt] = '" & Val(sott) & "' "
Set rsCapnhatXera = LayDL(sqlXera)
giovao1 = rsCapnhatXera![gio vao]
sqlXera = "select [ngay vao] from chitiet where [so xe] = '" & Soxe & "' and
[loai xe] = '" & Loaixe & "'" 'and [stt] = '" & Val(sott) & "' "
Set rsCapnhatXera = LayDL(sqlXera)
ngayvao1 = rsCapnhatXera![ngay vao]
thoigian1 = thoigian
thanhtien1 = thanhtien
Load Form4
Form4.Show
End If
End Sub
Private Sub TIEP_Click()
Load Form3
Form3.Show
End Sub
Private Sub Thoat2_Click()
Unload Me
End Sub
Private Sub Timer19_Timer()
MSComm1.Output = "*" + "*" + "*"
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 90
End Sub
Private Sub Timer7_Timer()
Dim X, Y
X = Right(FORM2.Caption, 1)
Y = Left(FORM2.Caption, Len(FORM2.Caption) - 1)
FORM2.Caption = X + Y
End Sub
Private Sub Timer8_Timer()
Tgian.Caption = Time
End Sub
Private Sub Timer9_Timer()
Ngay.Caption = Date
End Sub
Private Sub Timer16_Timer()
Dim U As String
Dim V As String
U = Left(Label2.Caption, 1)
V = Right(Label2.Caption, Len(Label2.Caption) - 1)
Label2.Caption = V + U
End Sub
Private Sub Form_Unload(Cancel As Integer)
Set rsLuuDL = Nothing
cnn.Close
End Sub
Private Sub Timervao_Timer()
If lbxevao.ForeColor = vbBlue Then lbxera.ForeColor = vbRed Else
lbxevao.ForeColor = vbBlue
End Sub
Private Sub XOA_Click()
Load Form4
Form4.Show
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 91
End Sub
Private Function kiemtra() As Integer
If (Me.txtSoxevao.Text = "") Then
kiemtra = 1
Exit Function
End If
If (Me.CmbLoaixevao.Text = "") Then
kiemtra = 2
Exit Function
End If
If Len(Me.txtSoxevao.Text) > 7 Or Len(Me.txtSoxevao.Text) < 7 Then
kiemtra = 3
Exit Function
End If
If Len(Me.CmbLoaixevao.Text) < 1 Or Len(Me.CmbLoaixevao.Text) > 1 Then
kiemtra = 4
Exit Function
Else
kiemtra = 0
End If
End Function
Code Form Cơ sở dữ liệu
Option Explicit
Dim sql As String
Dim str1 As String
Public rs1 As New ADODB.Recordset
Public rsCapnhatXe As New ADODB.Recordset
Dim sqlCapnhat As String
Dim Soxe As String
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 92
Dim Loaixe As String
Dim ngayvao As Date
Dim giovao As String
Dim ngayra As Date
Dim giora As String
'---------
Private Sub cbSoxe_Click()
Soxe = cbSoxe.Text
rsCapnhatXe.MoveFirst
rsCapnhatXe.Find "[so xe] = '" & Soxe & "'", , , adBookmarkFirst
If Not rsCapnhatXe.EOF Then
txtStt.Text = rsCapnhatXe.Fields(0)
DTPNgayvao.Value = rsCapnhatXe.Fields(3)
txtGiovao.Text = rsCapnhatXe.Fields(4)
txtThoigian.Text = rsCapnhatXe.Fields(7)
txtLoaixe.Text = rsCapnhatXe.Fields(1)
DTPNgayra.Value = rsCapnhatXe.Fields(5)
txtGiora.Text = rsCapnhatXe.Fields(6)
txtThanhtien.Text = rsCapnhatXe.Fields(8)
End If
End Sub
Private Sub CmdTim_Click()
OptSoxe.Visible = True
OptLoaixe.Visible = True
OptNgayvao.Visible = True
OptNgayra.Visible = True
If (OptSoxe) Then
str1 = "select * from chitiet where [so xe] like '" & cbSoxe.Text & "'"
Set rs1 = LayDL(str1)
rs1.Sort = "stt ASC"
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 93
Call XUATBANGCHITIETXETIM(cbSoxe.Text)
Else
If (OptNgayvao = True) Then
str1 = "select * from chitiet where [ngay vao] like '" & DTPNgayvao.Value & "'"
Set rs1 = LayDL(str1)
rs1.Sort = "stt ASC"
Call XUATBANGCHITIETXETIM(DTPNgayvao.Value)
Else
If (OptLoaixe = True) Then
str1 = "select * from chitiet where [loai xe] like '" & txtLoaixe.Text & "'"
Set rs1 = LayDL(str1)
rs1.Sort = "stt ASC"
Call XUATBANGCHITIETXETIM(txtLoaixe.Text)
Else
str1 = "select * from chitiet where [ngay ra] like '" & DTPNgayra.Value & "'"
Set rs1 = LayDL(str1)
rs1.Sort = "stt ASC"
Call XUATBANGCHITIETXETIM(DTPNgayra.Value)
End If
End If
End If
End Sub
Private Sub cmdTimkiem_Click()
OptSoxe.Visible = True
OptLoaixe.Visible = True
OptNgayvao.Visible = True
OptNgayra.Visible = True
txtLoaixe.Enabled = False
DTPNgayvao.Enabled = False
DTPNgayra.Enabled = False
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 94
cbSoxe.Enabled = False
CmdTimkiem.Visible = False
CmdTim.Visible = True
cmdXoa.Visible = False
CmdTimXoa.Visible = True
lbStt.Visible = False
LbGiovao.Visible = False
LbThoigiangoi.Visible = False
lbGiora.Visible = False
LbThanhtien.Visible = False
txtStt.Visible = False
txtGiovao.Visible = False
txtThoigian.Visible = False
txtGiora.Visible = False
txtThanhtien.Visible = False
End Sub
Private Sub CmdTimXoa_Click()
CmdTimkiem.Visible = True
cmdXoa.Visible = True
CmdTimkiem.Visible = True
CmdTim.Visible = False
lbStt.Visible = True
LbGiovao.Visible = True
LbThoigiangoi.Visible = True
lbGiora.Visible = True
LbThanhtien.Visible = True
txtStt.Visible = True
txtGiovao.Visible = True
txtThoigian.Visible = True
txtGiora.Visible = True
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 95
txtThanhtien.Visible = True
OptSoxe.Visible = False
OptLoaixe.Visible = False
OptNgayvao.Visible = False
OptNgayra.Visible = False
End Sub
Private Sub cmdXoa_Click()
Dim sql As String
Dim rs1 As New ADODB.Recordset
Dim vitri As Integer
OptSoxe.Visible = False
OptLoaixe.Visible = False
OptNgayvao.Visible = False
OptNgayra.Visible = False
sql = "select * from chitiet where [so xe]= '" & Soxe & "'"
Set rs1 = LayDL(sql)
If (rs1.BOF = True And rs1.EOF = True) Then
MsgBox ("Khong co so xe nay, hay chon trong combo so xe!")
Else
If MsgBox("Ban co chac la xoa khong ?", vbYesNo) = vbYes Then
rsCapnhatXe.Find "[so xe] = '" & Soxe & "'", , , adBookmarkFirst
rsCapnhatXe.Delete
LuuDL rsCapnhatXe
vitri = cbSoxe.ListIndex
cbSoxe.RemoveItem vitri
cbSoxe.Refresh
Call XUATBANGCHITIETXE
End If
End If
Set rs1 = Nothing
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 96
End Sub
Private Sub MSHFlexGridChitiet_Click()
MSHFlexGridChitiet.Refresh
Dim sql As String
Dim rs1 As New ADODB.Recordset
txtStt.Text = MSHFlexGridChitiet.MouseRow
Set rs1 = Nothing
End Sub
Private Sub OptLoaixe_Click()
txtLoaixe.Enabled = True
DTPNgayvao.Enabled = False
DTPNgayra.Enabled = False
cbSoxe.Enabled = False
txtLoaixe.Locked = False
End Sub
Private Sub OptNgayra_Click()
txtLoaixe.Enabled = False
DTPNgayvao.Enabled = False
DTPNgayra.Enabled = True
cbSoxe.Enabled = False
End Sub
Private Sub OptNgayvao_Click()
txtLoaixe.Enabled = False
DTPNgayvao.Enabled = True
DTPNgayra.Enabled = False
cbSoxe.Enabled = False
End Sub
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 97
Private Sub OptSoxe_Click()
txtLoaixe.Enabled = False
DTPNgayvao.Enabled = False
DTPNgayra.Enabled = False
cbSoxe.Enabled = True
End Sub
Private Sub THOAT_Click()
End
rs1.Close
End Sub
Private Sub TROVE_Click()
Unload Me
End Sub
Private Sub Form_Load()
OptSoxe.Visible = False
OptLoaixe.Visible = False
OptNgayvao.Visible = False
OptNgayra.Visible = False
txtStt.Locked = False
cbSoxe.Locked = False
DTPNgayvao.Enabled = True
DTPNgayra.Enabled = True
txtThoigian.Locked = True
txtThanhtien.Locked = True
txtLoaixe.Locked = True
txtGiora.Locked = True
txtGiovao.Locked = True
CmdTim.Visible = False
sqlCapnhat = "select * from chitiet where stt = 1 "
Set rsCapnhatXe = LayDL(sqlCapnhat)
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 98
txtStt.Text = rsCapnhatXe.Fields(0)
txtLoaixe.Text = rsCapnhatXe.Fields(1)
DTPNgayvao.Value = rsCapnhatXe.Fields(3)
txtGiovao.Text = rsCapnhatXe.Fields(4)
txtGiora.Text = rsCapnhatXe.Fields(6)
DTPNgayra.Value = rsCapnhatXe.Fields(5)
txtThoigian.Text = rsCapnhatXe.Fields(7)
txtThanhtien.Text = rsCapnhatXe.Fields(8)
cbSoxe.Text = rsCapnhatXe.Fields(2)
sqlCapnhat = "select * from chitiet"
Set rsCapnhatXe = LayDL(sqlCapnhat)
If rsCapnhatXe.RecordCount > 0 Then
rsCapnhatXe.MoveFirst
Do While Not rsCapnhatXe.EOF
cbSoxe.AddItem rsCapnhatXe.Fields(2)
rsCapnhatXe.MoveNext
Loop
End If
Call XUATBANGCHITIETXE
End Sub
Private Sub Form_Unload(Cancel As Integer)
MSHFlexGridChitiet.Refresh
Set rsCapnhatXe = Nothing
Set rs1 = Nothing
End Sub
Private Sub XUATBANGCHITIETXETIM(thamso As String)
Dim i As Integer
Dim soluong As Integer
soluong = 0
Dim Mang(9) As String
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 99
Mang(0) = "STT"
Mang(1) = "LOẠI XE"
Mang(2) = "SỐ XE"
Mang(3) = "NGÀY VÀO"
Mang(4) = "GIỜ VÀO"
Mang(5) = "NGÀY RA"
Mang(6) = "GIỜ RA"
Mang(7) = "THỜI GIAN GỬI (GIỜ)
Mang(8) = "THÀNH TIỀN (VNĐ)"
While Not rs1.EOF
soluong = soluong + 1
rs1.MoveNext
Wend
MSHFlexGridChitiet.Rows = soluong + 1
MSHFlexGridChitiet.Cols = 9
If (rs1.BOF = True And rs1.EOF = True) Then
MsgBox ("Co so du lieu rong!")
Else
rs1.MoveFirst
End If
For i = 0 To 8
MSHFlexGridChitiet.Row = 0
MSHFlexGridChitiet.Col = i
MSHFlexGridChitiet.Text = Mang(i)
Next i
i = 1
rs1.Sort = " stt asc"
While Not rs1.EOF
MSHFlexGridChitiet.Row = i
MSHFlexGridChitiet.Col = 0
MSHFlexGridChitiet.ColWidth(0) = 500
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 100
MSHFlexGridChitiet.Text = rs1.Fields(0)
MSHFlexGridChitiet.Col = 1
MSHFlexGridChitiet.ColWidth(1) = 900
MSHFlexGridChitiet.Text = rs1![loai xe]
MSHFlexGridChitiet.Col = 2
MSHFlexGridChitiet.ColWidth(2) = 1000
MSHFlexGridChitiet.Text = rs1![so xe]
MSHFlexGridChitiet.Col = 3
MSHFlexGridChitiet.ColWidth(3) = 1200
MSHFlexGridChitiet.Text = rs1![ngay vao]
MSHFlexGridChitiet.Col = 4
MSHFlexGridChitiet.ColWidth(4) = 1000
MSHFlexGridChitiet.Text = rs1![gio vao]
MSHFlexGridChitiet.Col = 5
MSHFlexGridChitiet.ColWidth(5) = 1200
MSHFlexGridChitiet.Text = rs1![ngay ra]
MSHFlexGridChitiet.Col = 6
MSHFlexGridChitiet.ColWidth(6) = 900
MSHFlexGridChitiet.Text = rs1![gio ra]
MSHFlexGridChitiet.Col = 7
MSHFlexGridChitiet.ColWidth(7) = 1500
MSHFlexGridChitiet.Text = rs1.Fields(7)
MSHFlexGridChitiet.Col = 8
MSHFlexGridChitiet.ColWidth(8) = 1800
MSHFlexGridChitiet.Text = rs1.Fields(8)
i = i + 1
rs1.MoveNext
Wend
Set rs1 = LayDL(str1)
End Sub
Private Sub XUATBANGCHITIETXE()
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 101
Dim i As Integer
Dim soluong As Integer
str1 = "select * from chitiet "
Set rs1 = LayDL(str1)
soluong = 0
Dim Mang(9) As String
Mang(0) = "STT"
Mang(1) = "LOẠI XE"
Mang(2) = "SỐ XE"
Mang(3) = "NGÀY VÀO"
Mang(4) = "GIỜ VÀO"
Mang(5) = "NGÀY RA"
Mang(6) = "GIỜ RA"
Mang(7) = "THỜI GIAN GỬI (GIỜ)"
Mang(8) = "THÀNH TIỀN (VNĐ)"
While Not rs1.EOF
soluong = soluong + 1
rs1.MoveNext
Wend
MSHFlexGridChitiet.Rows = soluong + 1
MSHFlexGridChitiet.Cols = 9
rs1.MoveFirst
For i = 0 To 8
MSHFlexGridChitiet.Row = 0
MSHFlexGridChitiet.Col = i
MSHFlexGridChitiet.Text = Mang(i)
Next i
i = 1
rs1.Sort = " stt asc"
While Not rs1.EOF
MSHFlexGridChitiet.Row = i
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 102
MSHFlexGridChitiet.Col = 0
MSHFlexGridChitiet.ColWidth(0) = 500
MSHFlexGridChitiet.Text = rs1.Fields(0)
MSHFlexGridChitiet.Col = 1
MSHFlexGridChitiet.ColWidth(1) = 900
MSHFlexGridChitiet.Text = rs1![loai xe]
MSHFlexGridChitiet.Col = 2
MSHFlexGridChitiet.ColWidth(2) = 1000
MSHFlexGridChitiet.Text = rs1![so xe]
MSHFlexGridChitiet.Col = 3
MSHFlexGridChitiet.ColWidth(3) = 1200
MSHFlexGridChitiet.Text = rs1![ngay vao]
MSHFlexGridChitiet.Col = 4
MSHFlexGridChitiet.ColWidth(4) = 1000
MSHFlexGridChitiet.Text = rs1![gio vao]
MSHFlexGridChitiet.Col = 5
MSHFlexGridChitiet.ColWidth(5) = 1200
MSHFlexGridChitiet.Text = rs1![ngay ra]
MSHFlexGridChitiet.Col = 6
MSHFlexGridChitiet.ColWidth(6) = 900
MSHFlexGridChitiet.Text = rs1![gio ra]
MSHFlexGridChitiet.Col = 7
MSHFlexGridChitiet.ColWidth(7) = 1500
MSHFlexGridChitiet.Text = rs1.Fields(7)
MSHFlexGridChitiet.Col = 8
MSHFlexGridChitiet.ColWidth(8) = 1800
MSHFlexGridChitiet.Text = rs1.Fields(8)
i = i + 1
rs1.MoveNext
Wend
Set rs1 = LayDL(str1)
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 103
End Sub
Code Form Phiếu thu :
Dim So As Integer
Dim tam As Integer
Private Sub CmdIn_Click()
MsgBox "Da thu tien!"
End Sub
Private Sub Form_Load()
lbNgay.Caption = Date
So = 0
If (So < tam) Then
LbSo.Caption = tam + 1
Else
So = 1
LbSo.Caption = So
End If
LbSoxe.Caption = soxe1
LbLoaixe.Caption = loaixe1
LbNgaygui.Caption = ngayvao1
LbGiogui.Caption = giovao1
Lbthoigian.Caption = thoigian1
LbThanhtien.Caption = thanhtien1
tam = So
End Sub
Code Form Cập nhật :
Dim sqlPhanloaixe As String
Dim rsPhanloaixe As New ADODB.Recordset
Dim sqlCapnhatPhanloai As String
Dim rsCapnhatPhanloai As New ADODB.Recordset
Dim sqlXoa As String
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 104
Dim rsXoa As New ADODB.Recordset
Dim sql As String
Dim rsxe As New ADODB.Recordset
Dim kiemtra As Integer
Private Sub cmdCapnhat_Click()
kiemtra = 2
cmdLuu.Visible = True
cmdThem.Visible = False
cmdCapnhat.Enabled = False
cmdXoa.Enabled = False
txtLoaixe.Enabled = False
txtChitietxe.Locked = False
txtGiatien.Locked = False
End Sub
Private Sub cmdLuu_Click()
Dim str As String
Dim rs1 As New ADODB.Recordset
cmdThem.Visible = True
cmdLuu.Visible = False
cmdCapnhat.Enabled = True
cmdXoa.Enabled = True
If kiemtra = 1 Then
rsPhanloaixe.AddNew
GhiPhanLoaiXe rsPhanloaixe
LuuDL rsPhanloaix
Else
If kiemtra = 2 Then
sqlCapnhatPhanloai = "UPDATE PHANLOAIXE SET [CHI TIET XE] = '"
& txtChitietxe.Text & _
"' WHERE LOAI = '" & txtLoaixe.Text & "'"
Set rsCapnhatPhanloai = LayDL(sqlCapnhatPhanloai)
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 105
sqlCapnhatPhanloai = "UPDATE PHANLOAIXE SET [GIA TIEN
(VND/GIO)] = '" & txtGiatien.Text & _
"' WHERE LOAI = '" & txtLoaixe.Text & "'"
Set rsCapnhatPhanloai = LayDL(sqlCapnhatPhanloai)
Else
sqlXoa = "select * from phanloaixe"
Set rsXoa = LayDL(sqlXoa)
If MsgBox("Ban co chac la xoa khong ?", vbYesNo) = vbYes Then
rsXoa.Find " loai = '" & txtLoaixe.Text & "'", , , adBookmarkFirst
rsXoa.Delete
LuuDL rsXoa
End If
End If
End If
Call HIENTHIPHANLOAIXE
End Sub
Private Sub cmdThem_Click()
kiemtra = 1
cmdThem.Visible = False
cmdLuu.Visible = True
cmdCapnhat.Enabled = False
cmdXoa.Enabled = False
txtLoaixe.Enabled = True
txtLoaixe.SetFocus
txtLoaixe.Text = ""
txtChitietxe.Text = ""
txtGiatien.Text = ""
txtLoaixe.Locked = False
txtChitietxe.Locked = False
txtGiatien.Locked = False
End Sub
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 106
Private Sub cmdTrove_Click()
Unload Me
End Sub
Private Sub cmdXoa_Click()
kiemtra = 3
cmdThem.Enabled = True
cmdThem.Visible = False
cmdLuu.Visible = True
cmdLuu.Enabled = True
cmdCapnhat.Enabled = False
cmdXoa.Enabled = False
txtLoaixe.Locked = True
txtChitietxe.Locked = True
txtGiatien.Locked = True
End Sub
Private Sub Form_Load()
cmdLuu.Visible = False
sqlPhanloaixe = "SELECT * FROM PHANLOAIXE"
Set rsPhanloaixe = LayDL(sqlPhanloaixe)
rsPhanloaixe.Sort = "LOAI ASC"
txtLoaixe.Locked = True
txtChitietxe.Locked = True
txtGiatien.Locked = True
txtLoaixe.Text = rsPhanloaixe.Fields(0)
txtChitietxe.Text = rsPhanloaixe.Fields(1)
txtGiatien.Text = rsPhanloaixe.Fields(2)
If rsPhanloaixe.RecordCount > 0 Then
rsPhanloaixe.MoveFirst
Call HIENTHIPHANLOAIXE
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 107
End If
End Sub
Private Sub HIENTHIPHANLOAIXE()
Dim i As Integer
Dim soluong As Integer
sql = "select * from phanloaixe "
Set rsxe = LayDL(sql)
soluong = 0
Dim Mang(3) As String
Mang(0) = "LOAÏI XE"
Mang(1) = "CHI TIEÁT XE"
Mang(2) = "GIAÙ TIEÀN (VNÑ/GIÔØ)"
While Not rsxe.EOF
soluong = soluong + 1
rsxe.MoveNext
Wend
MSHFGridPhanLoai.Rows = soluong + 1
MSHFGridPhanLoai.Cols = 3
rsxe.MoveFirst
For i = 0 To 2
MSHFGridPhanLoai.Row = 0
MSHFGridPhanLoai.Col = i
MSHFGridPhanLoai.Text = Mang(i)
Next i
i = 1
rsxe.Sort = " loai asc"
While Not rsxe.EOF
MSHFGridPhanLoai.Row = i
MSHFGridPhanLoai.Col = 0
MSHFGridPhanLoai.ColWidth(0) = 970
MSHFGridPhanLoai.Text = rsxe.Fields(0)
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 108
MSHFGridPhanLoai.Col = 1
MSHFGridPhanLoai.ColWidth(1) = 1300
MSHFGridPhanLoai.Text = rsxe![chi tiet xe]
MSHFGridPhanLoai.Col = 2
MSHFGridPhanLoai.ColWidth(2) = 2100
MSHFGridPhanLoai.Text = rsxe![gia tien (vnd/gio)]
i = i + 1
rsxe.MoveNext
Wend
Set rsxe = LayDL(sql)
End Sub
Private Sub Form_Unload(Cancel As Integer)
Set rsxe = Nothing
Set rsPhanloaixe = Nothing
Set rsCapnhatPhanloai = Nothing
Set rsXoa = Nothing
End Sub
Private Sub GhiPhanLoaiXe(rs As ADODB.Recordset)
rsPhanloaixe.Fields(0) = txtLoaixe.Text
rsPhanloaixe.Fields(1) = txtChitietxe.Text
rsPhanloaixe.Fields(2) = txtGiatien.Text
End Sub
Private Sub MSHFGridPhanLoai_Click()
txtLoaixe.Text = MSHFGridPhanLoai.MouseRow
sqlPhanloaixe = "select * from phanloaixe where loai = '" &
MSHFGridPhanLoai.MouseRow & "'"
Set rsPhanloaixe = LayDL(sqlPhanloaixe)
txtChitietxe.Text = rsPhanloaixe.Fields(1)
txtGiatien.Text = rsPhanloaixe.Fields(2)
End Sub
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 109
V. LẬP TRÌNH CHO PLC Ở DẠNG LADDER
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 110
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 111
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 112
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 113
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 114
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 115
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 116
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 117
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 118
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 119
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 120
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 121
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 122
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 123
Phần V: Lập trình ứng dụng Luận văn tốt nghiêp
Thiết Kế Hệ Thống Quản Lí Tự Động Bãi Giữ Xe Trang 124