Tải bản đầy đủ (.pdf) (41 trang)

Xây dựng hệ thống quản lý cân động ứng dụng trong hệ thống cân tàu hỏa

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (5.45 MB, 41 trang )

ĐẠI HỌC THÁI NGUYÊN
KHOA CÔNG NGHỆ THÔNG TIN

Mục lục

1 Khảo sát hiện trạng hệ thống cân động vật thể
1.1 Thực trạng tập đoàn than - khoáng sản Việt Nam-TKV
1.2 Mô tả nghiệp vụ của hệ thống hiện hành . . . . . . . . .
1.3 Mô tả, xác định mục tiêu và yêu cầu của hệ thống mới .
1.4 Tổng kết chương . . . . . . . . . . . . . . . . . . . . . .

LUẬN VĂN CAO HỌC
Đề tài

Xây dựng hệ thống quản lý cân động
ứng dụng trong hệ thống cân tàu hỏa

2 Thiết kế tổng thể hệ thống cân
2.1 Thiết kế phần cứng . . . . . .
2.1.1 Các phương án thiết kế
2.1.2 Sơ đồ tổng thể . . . .
2.2

Chuyên ngành
: Khoa học máy tính
Người hướng dẫn
: PGS.TS. Đoàn Văn Ban
Học viên thực hiện : Nguyễn Tuấn Anh
Mã số
: 60.48.01


2.3

2.1.3 Ý nghĩa và yêu cầu kỹ thuật của từng khối .
Thiết kế phần mềm . . . . . . . . . . . . . . . . . .
2.2.1 Xác định các yêu cầu và phân tích hệ thống
2.2.2 Phân tích hệ thống hướng đối tượng . . . .
2.2.3 Thiết kế hệ thống hướng đối tượng . . . . .
2.2.4 Lập trình hướng đối tượng . . . . . . . . . .
Tổng kết chương . . . . . . . . . . . . . . . . . . .

3 Thiết kế chi tiết hệ thống cân động vật thể
3.1 Thiết kế phần cứng hệ thống . . . . . . . . . . . .
3.1.1 Khối cảm biến . . . . . . . . . . . . . . . .
3.1.2 Khối chuyển đổi ADC . . . . . . . . . . .
3.1.3 Khối truyền thông . . . . . . . . . . . . .
3.1.4 Khối nguồn . . . . . . . . . . . . . . . . .
3.2 Thiết kế hướng đối tượng phần mềm hệ thống [2]

Thái nguyên, tháng 8 năm 2009

Luận văn: Thiết kế hệ thống cân động.

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

động vật thể
. . . . . . . . . . . . . . .
phần cứng hệ thống . . .
. . . . . . . . . . . . . . .




Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

.
.
.
.
.
.

1
1
4
4
5
6
6
7
10

.
.
.
.
.
.
.

.
.

.
.
.
.
.

.
.
.
.
.
.
.

10
12
13
14
15
16
17

.
.
.
.
.
.

.

.
.
.
.
.

.
.
.
.
.
.

18
18
21
23
27
30
30

Nguyễn Tuấn Anh




MỤC LỤC

3.3


3.2.1
3.2.2
3.2.3
3.2.4
3.2.5
Tổng

ii

Khảo sát, xác định các yêu cầu
Phân tích hệ thống . . . . . . .
Thiết kế hệ thống . . . . . . . .
Lập trình và kiểm tra hệ thống
Vận hành và bảo trì hệ thống .
kết chương . . . . . . . . . . . .

4 Xây dựng hệ thống cân động vật
4.1 Giới thiệu về ngôn ngữ lập trình
4.2 Giới thiệu về ngôn ngữ lập trình
4.3 Các chức năng của chương trình
4.4 Màn hình giao diện chức năng .
4.5 Lập kế hoạch triển khai thực tế
4.6 Xác định rủi ro . . . . . . . . .
4.7 Đánh giá kết quả thử nghiệm .
A Vi điều khiển PIC
A.1 Từ Vi xử lý đến Vi điều khiển
A.2 Vi điều khiển họ PIC . . . . .
A.3 Lập trình cho PIC . . . . . .
A.4 Một vài đặc tính của PIC . .


.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.

.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.


.
.
.
.
.
.

thể
cho phần cứng nhúng
phần mềm: C# . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .

.
.
.
.

.
.
.
.

.
.
.

.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.

.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.
.
.

32

33
33
40
47
47

.
.
.
.
.
.
.

48
48
49
51
51
55
58
59

.
.
.
.

67
67

68
69
69

B Ứng dụng mạch khuếch đại thuật toán

71

B.1 Ứng dụng mạch tuyến tính . . . . . . . . . . . . . . . . .
B.2 Các ứng dụng phi tuyến . . . . . . . . . . . . . . . . . .

71
76

Chương 1

Khảo sát hiện trạng hệ thống cân
động vật thể
Giới thiệu về Tập đoàn Công nghiệp Than – Khoáng sản Việt Nam, giới
thiệu về phương pháp cân than trên tàu hỏa, đưa ra tính năng cần có của
hệ thống cân động mới.

1.1

Thực trạng tập đoàn than - khoáng sản Việt Nam-TKV

Chặng đường phát triển của Tập đoàn Công nghiệp Than –
Khoáng sản Việt Nam
Tập đoàn Công nghiệp Than – Khoáng sản Việt Nam (trước đây là
Tổng công ty Than việt Nam) được thành lập ngày 10/10/1994 theo

quyết định số 563/QĐ.TTg của Thủ tướng Chính phủ. Thực hiện nhiệm
vụ quan trọng mà Đảng và Nhà nước giao, ngay từ khi mới đi vào hoạt
động, Tập đoàn đã xây dựng đề án “Đổi mới tổ chức, quản lý, nâng
cao hiệu quả sản xuất kinh doanh”, lựa chọn chiến lược “phát triển kinh
doanh đa ngành trên nền công nghiệp than” và phương châm “cùng phát
triển với bạn hàng”. Từ mục tiêu chiến lược đã đề ra, Tập đoàn Công
nghiệp Than – Khoáng sản Việt Nam (TKV) đã thay đổi hẳn về cơ chế
quản lý, về mô hình tổ chức sản xuất và tiêu thụ sản phẩm, về cơ chế
quản lý tài chính, tích cực đầu tư, đổi mới công nghệ trong khai thác
than, đầu tư cải tạo hoàn thiện dây chuyền công nghệ trong khai thác
than, sàng tuyển, bến rót tiêu thụ.
Trên nền sản xuất than, Tập đoàn TKV đã mạnh dạn sử dụng nguồn
nhân lực sẵn có được tạo ra từ than để đầu tư các ngành nghề khác như
phát triển mạnh mẽ ngành cơ khí mỏ theo hướng hiện đại hóa cơ khí sửa

Luận văn: Thiết kế hệ thống cân động.

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

Nguyễn Tuấn Anh



Luận văn: Thiết kế hệ thống cân động.

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

Nguyễn Tuấn Anh





1.1 Thực trạng tập đoàn than - khoáng sản Việt Nam-TKV

2

1.1 Thực trạng tập đoàn than - khoáng sản Việt Nam-TKV

3

địa phương và cộng đồng; với đối tác và bạn hàng và hài hòa trong nội
bộ”, Tập đoàn cùng các công ty thành viên đã tập trung các nguồn lực,
đã sản xuất và tiêu thụ 37 triệu tấn than, vượt mục tiêu quy hoạch đến
năm 2010 (là 23 – 24 triệu tấn) do Thủ tướng Chính phủ phê duyệt.

Hình 1.1: Công ty than khoáng sản Việt Nam - TKV

chữa, phát triển cơ khí chế tạo, lắp ráp, sản xuất xe tải, đóng tàu thủy;
xây dựng các nhà máy nhiệt điện; tích cực đầu tư nâng cao sản lượng
khai thác khoáng sản; sản xuất vật liệu nổ công nghiệp, xi măng, vật
liệu xây dựng; công tác nghiên cứu, ứng dụng khoa học công nghệ, bảo
vệ môi trường được chú trọng; thương mại dịch vụ và các ngành nghề
khác đều được đầu tư phát triển.
Trong suốt chặng đường 12 năm hoạt động, công nhân, cán bộ Tập
đoàn Công nghiệp Than – Khoáng sản Việt Nam đã không ngừng nỗ
lực, chủ động, sáng tạo, đã khẳng định sức mạnh của mình bằng tinh
thần đoàn kết, quyết tâm vượt khó, phấn đấu vươn lên, liên tiếp hoàn
thành toàn diện các chỉ tiêu kế hoạch, năm sau cao hơn năm trước.
Năm 2003 đã khai thác và tiêu thụ 18 triệu tấn than, là đơn vị kinh tế
đầu tiên của cả nước đã hoàn thành và vượt kế hoạch trước 2 năm trong

mục tiêu kế hoạch 5 năm (2001 – 2005) mà Đại hội Đảng toàn quốc lần
thứ IX đã đề ra (Từ 14-16 triệu tấn).
Năm 2006, năm kỷ niệm 70 năm Truyền thống công nhân vùng mỏ Truyền thống Ngành Than, Tập đoàn Công nghiệp Than – Khoáng sản
Việt Nam tiếp tục chuyển đổi cơ chế quản lý mới, với mục tiêu chiến
lược “Từ tài nguyên khoáng sản và nguồn nhân lực đi lên giàu mạnh”
với phương châm “Phát triển hài hòa và thân thiện với môi trường, với
Luận văn: Thiết kế hệ thống cân động.

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

Nguyễn Tuấn Anh



12 năm, một hành trình đầy gian nan thử thách, song trong mỗi bước
đi của mình, Ngành Than – Khoáng sản Việt Nam luôn luôn được sự
quan tâm của Đảng, Nhà nước, Chính phủ, các cấp ủy Đảng, chính
quyền và nhân dân các địa phương. Sự quan tâm đó chính là nguồn cổ
vũ lớn lao, tiếp thêm sức mạnh để công nhân, cán bộ ngành Than –
Khoáng sản Việt Nam vững bước đi lên, lao động sáng tạo, trong khó
khăn, bản lĩnh người thợ mỏ càng được thể hiện và khẳng định, luôn
hăng hái đi đầu và hoàn thành xuất sắc mọi nhiệm vụ được giao. Phẩm
chất và sức sống của thợ mỏ trong suốt chặng đường hình thành và phát
triển là tinh thần “Kỷ luật và đồng tâm”, là bề dày truyền thống đã được
các thế hệ cán bộ, công nhân thợ mỏ kế tiếp giữ gìn và phát huy, lập
nhiều thành tích vẻ vang, xây dựng Tập đoàn phát triển nhanh, mạnh,
hiệu quả, vị thế ngày càng được nâng cao (theo [13]).
Công ty than Uông Bí là thành viên của tập đoàn than khoáng
sản TKV, chuyên cung cấp than cho nhà máy nhiệt điện Uông Bí, và
một số đơn vị khác. Hàng ngày, than được chở từ công ty than Uông Bí

đến nhà máy nhiệt điện để sản xuất điện năng cung cấp cho lưới điện
quốc gia.
Mỗi ngày, công ty than Uông Bí cung cấp cho nhà máy nhiệt điện phả
lại khoảng 4 chuyến tàu chở than, mỗi chuyến dài khoảng 5 đến 30 toa,
chất đầy than.
Có rất nhiều cách để xác định khối lượng than trên toa tàu, nhưng
thực tế, cho đến nay, tất cả vẫn là ước lượng, tính toán trọng lượng than
bán ra thị trường theo cách xác định khối lượng chứ không phải là trọng
lượng.
Phương pháp họ đang sử dụng là lấy mẫu than (Do KCS làm), xác
định khối lượng riêng, rồi đưa ra tỷ trọng của than. Nhân viên cân than
chỉ việc đo khối lượng rồi nhân với tỷ trọng sẽ được khối lượng ước tính
Trên thực tế, có rất nhiều vấn đề nảy sinh trong quá trình xác định
khối lượng, như khi KCS lấy mẫu, độ ẩm của than khác với độ ẩm khi
bán, điều đó có nghĩa là nếu trời mưa hoặc nắng thì than sẽ có khối
Luận văn: Thiết kế hệ thống cân động.

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

Nguyễn Tuấn Anh




1.2 Mô tả nghiệp vụ của hệ thống hiện hành

4

lượng khác đi so với ước tính. Do vậy bên bán và bên mua sẽ tính khối
lượng một chuyến hàng thường khác nhau.

1.2

Mô tả nghiệp vụ của hệ thống hiện hành

5

Mục tiêu của hệ thống mới:
Hệ thống mới phải khắc phục được các nhược điểm của hệ thống hiện
hành, và có các tính năng:
• Cân bằng thiết bị điện tử và máy tính.

Phương pháp xác định khối lượng, hiện nay quy trình tính toán
khối lượng của công ty than theo các bước sau đây, giả sử quá trình
xuất hàng của công ty:
• Than sẵn sàng xuất khỏi công ty, được KCS kiểm tra đánh giá về
chất lượng than, bao gồm khối lượng riêng, độ ẩm, độ bột (than
viên/cám),...
• KCS đưa ra công thức tính khối lượng than theo thể tích. Với V
(m3 ) than, với tỷ trọng k. Như vậy, khối lượng là m = V ∗ k(kg).
• Các bên liên quan đến mua bán than chứng kiến việc xác định thể
tích của tàu than, và ký kết vào phiếu cân.
• Phiếu cân được sao thành nhiều bản, mỗi bên liên quan giữ một
bản.
• Căn cứ vào phiếu cân, bên nhận than sẽ kiểm tra lại thể tích thực
của than mà mình được nhận, sau đó xác định lại tỷ trọng k của
than tại thời điểm nhận than, rồi tính ra khối lượng thực mà mình
nhận được.
• Hai bên thỏa thuận lại sai lệch rồi chấp nhận khối lượng thực theo
thỏa thuận.
1.3


1.4 Tổng kết chương

Mô tả, xác định mục tiêu và yêu cầu của hệ thống mới

• Xác định chính xác trọng lượng thực của than.
• Cân trong khi tàu đang chạy với vận tốc từ 3-15Km/h.
• Dải cân chính xác cho mỗi toa có khối lượng từ 100kg đến 120 tấn.
• Sai số cho phép nằm trong khoảng 0.5%
• Mất điện trong một khoảng thời gian nhất định, vẫn cân bình
thường.
• Lưu trữ được kết quả mỗi lần cân trong khoảng thời gian theo ý
muốn.
• Phân biệt và loại bỏ được đầu tàu.
• Phát hiện và cảnh báo toa rỗng (Toa không có hàng)
• Khối lượng không phụ thuộc KCS.
• Không phải trải qua các cuộc đàm phán về triết khấu khối lượng
theo thời tiết.
• Giao diện trên máy tính thân thiện.
• In trực tiếp phiếu cân từ phần mềm cho mỗi lần cân.
• Tống hợp được lượng than bán ra trong tháng / quý / năm.
1.4

Tổng kết chương

Phân tích ưu - nhược điểm của hệ thống hiện tại:
Hệ thống hiện tại hoàn toàn do con người chủ động, nên không thể chính
xác được. Đôi khi nắng mưa ảnh hưởng đến độ ẩm của than, làm cho tỷ
trọng khác với khi lấy mẫu, dẫn đến khi than bắt đầu xuất kho bên bán
có một khối lượng, khi than nhập kho của bên mua, sẽ có khối lượng

khác. Do hai bên mua và bán than đều muốn mình có lợi, cho nên xảy
ra mâu thuẫn và tranh chấp.

Khảo sát hiện trạng của hệ thống cũ là điều rất cần thiết, qua đó ta xác
định được hệ thống đang hoạt động như thế nào, quá trình vận hành hệ
thống ra sao, có những ưu nhược điểm gì,...

Luận văn: Thiết kế hệ thống cân động.

Luận văn: Thiết kế hệ thống cân động.

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

Nguyễn Tuấn Anh



Từ đó, ta xây dựng lên hệ thống mới, có tính hiệu quả cao hơn so với
hệ thống cũ, và phương pháp vận hành hệ thống có tính thừa kế.
Trong chương này, tất cả các đặc điểm của hệ thống mới đã được xác
lập, từ đó, làm nền tảng để thiết kế ở các chương tiếp theo.

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

Nguyễn Tuấn Anh




2.1 Thiết kế phần cứng


7

• Ổn định: Trong môi trường cân, có rất nhiều yếu tố ảnh hưởng đến
hệ thống, như mưa gió, sấm sét, mất điện, nhiễu,... Các yếu tố đó
trực tiếp hoặc gián tiếp gây mất ổn định cho hệ thống. Yêu cầu cần
phải hạn chế tối đa sự tác động của ngoại cảnh đến hệ thống,...

Chương 2

Vậy có những phương pháp nào có thể xây dựng phần cứng mà có thể
đạt được các yêu cầu trên?

Thiết kế tổng thể hệ thống cân
động vật thể
Thiết kế tổng thể cả hệ thống dưới dạng sơ đồ khối: thiết kế phần cứng và
phần mềm, nêu đặc điểm, yêu cầu kỹ thuật của mỗi khối, phương pháp
giao tiếp, mức tín hiệu vào ra,...

2.1

2.1.1

Các phương án thiết kế phần cứng hệ thống

Sơ đồ khối của hệ thống như hình 2.1. Trong đó, phần quan trọng nhất
là modul điều khiển trung tâm, có rất nhiều phương án thiết kế modul
điều khiển trung tâm, mỗi phương án đó, sẽ phải thiết kế các modul còn
lại sao cho phù hợp.
Dưới đây, chúng ta thiết kế và lựa chọn modul điều khiển trung tâm

(như trong hình 2.1), khi chọn được phương án hợp lý, sẽ đi thiết kế hệ
thống.

Thiết kế phần cứng
Hiển thị

Có rất nhiều cách thiết kế phần cứng, mục tiêu là làm sao phải đạt được
các tiêu chí sau:
• Hiệu quả, chính xác: Mỗi toa tàu, có thể nặng đến 120 tấn, (hoạt
động bình thường tại công ty than Uông bí là 50-60 tấn), với sai số
yêu cầu là không quá 0.5%, tức là: sai số m ≤ 0.0005∗120, 000(kg) =
60(kg)cho mỗi toa. Yêu cầu Loadcell (Cảm biến đo khối lượng) phải
chịu được sức nặng lên đến 120 tấn, bộ khuếch đại nằm trong dải
0 − 10v hoặc 4 − 20mA (Tín hiệu theo chuẩn công nghiệp) và bộ
chuyển đổi tín hiệu tương tự sang số (ADC) phải thỏa mãn yêu cầu
theo sai số như trên.
• Nhanh chóng: Tốc độ tàu yêu cầu khi cân là 3 − 15km/h, có nghĩa
là trong thời gian đó, phải thu thập đủ dữ liệu để có thể tính toán.
Tính toán được khối lượng của mỗi toa bằng cách tính tổng khối
lượng trên 2 trục bánh. Muốn tính được khối lượng, ta phải dùng
thuật toán như lọc, FFT, xác định đỉnh ,... Tất cả các thuật toán
trên đều cần nhiều mẫu mới có thể làm được. Tiêu chí đặt ra là ít
nhất, cần có khoảng ≥ 100 mẫu/một cụm bánh.
Luận văn: Thiết kế hệ thống cân động.

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

Nguyễn Tuấn Anh




Điều khiển
trung tâm

Phím điều khiển

Máy tính

Khuếch đại

Cảm biến khối lượng

Nguồn nuôi

Hình 2.1: Sơ đồ khối tổng thể

Luận văn: Thiết kế hệ thống cân động.

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

Nguyễn Tuấn Anh




2.1 Thiết kế phần cứng

8

2.1 Thiết kế phần cứng


9

Phương án 1:

Phương án 3:

Sử dụng card chuyển đổi ghép nối máy tính qua khe cắm PCI làm bộ
chuyển đổi tín hiệu: Card chuyển đổi vào ra số, tương tự của Advantech
có các tính năng sau:

Tự thiết kế card chuyển đổi ADC ghép nối USB. Tất cả các tính năng
được thiết kế phù hợp nhất với hệ thống.

• Vào/ra số 16 bit với mức logic 1 là 5v, mức logic 0 là 0v.
• 16 kênh vào tương tự 12 bit với ngưỡng vào điện áp là 0 ÷5v.
• 2 kênh ra tương tự 12 bit.

• Độ phân dải chuyển đổi ADC
• Tốc độ chuyển đổi
• Số lượng tín hiệu vào/ra
• Mức tín hiệu vào/ra

• Tốc độ chuyển đổi ADC tối đa của card là 200kbps (Kilobit Per
Second).

• Khả năng chống nhiễu
• Khả năng khuếch đại tín hiệu

• Có tính năng khuếch đại mềm

• Lựa chọn đọc 1 kênh hoặc nhiều kênh từ bộ đệm chuyển đổi.
• Card ghép nối sử dụng driver khi đọc tín hiệu từ Windows, khi đọc
trong DOS thì không cần driver.

• Tốc độ xử lý
• Giao diện ghép nối
• Phương thức truyền thông

Phương án 2:

Phương án lựa chọn: Phương án 3

Sử dụng PLC làm modul điều khiển trung tâm Phương án này rất được
sự tin tưởng bởi đã được kiểm nghiệm của công ty danh tiếng, các sản
phẩm của họ đã trải qua sự kiểm tra khắc nghiệt khi làm việc với môi
trường công nghiệp. Có thể kể ra đây các tính năng của PLC như sau:

Phân tích:
Tốc độ tàu đi tối đa là 15(km/h) ≈ 4.12(m/s). Khoảng cách giữa hai
điểm gần nhất trên 2 cụm trục liên tiếp là 2.27m, khoảng cách giữa 2
điểm tiếp xúc ray là 2.27m. Như vậy, thời gian mỗi cụm trục đi qua
khoảng 0.5s, trong thời gian này, ta phải lấy được ít nhất khoảng 300
mẫu khối lượng. Đối với phương án 1, độ phân dải chuyển đổi là 12 bit
4096 mức. Nếu dùng để cân, thì bước nhảy sẽ là: 120 tấn 4096 mức, hay
1 bước nhảy = 120,000(kg)
= 29.296875(kg). Nếu tín hiệu đọc về không có
4096(mức)

• Ổn định
• Số lượng tín hiệu vào/ra tùy chọn

• Tín hiệu số ra được điều khiển trực tiếp qua rơle nội.

bit lỗi, nếu 1 bit hàng đơn vị bị lỗi thì sai số tăng lên gấp 10 lần. Đó
là sai số tính trên 1 toa nếu tính tổng cả đoàn tàu thì sai số sẽ lớn hơn
nữa.

• Tín hiệu số vào: +24v
• Tín hiệu vào tương tự: 0 − 10v hoặc 4 − 20mA
• Tín hiệu ra tương tự: 0 − 10v
• Truyền thông với PC bằng cáp MPI hoặc PPI chuyên dụng, giao
thức RS232, RS485, ProfiBus, USB
• Phần mềm lập trình nhúng và phần mềm lập trình điều khiển được
hỗ trợ bởi hãng sản xuất.

Đối với phương án 2, dùng PLC với ADC 16 bit, phương án này hoàn
toàn khả thi, nhưng những modul ADC 16 bit tại Việt Nam rất khó
kiếm, giá thành rất cao.
Nếu ta tự thiết kế một modul theo phương án 3 thì giá thành sẽ hạ
xuống rất nhiều, mặt khác ta lại làm chủ công nghệ, bảo hành bảo trì
thuận tiện, và thiết kế sẽ bám sát các yêu cầu cụ thể của bài toán.

• Giá thành tùy từng chủng loại, số lượng modul.
Luận văn: Thiết kế hệ thống cân động.

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

Nguyễn Tuấn Anh




Luận văn: Thiết kế hệ thống cân động.

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

Nguyễn Tuấn Anh




2.1 Thiết kế phần cứng

2.1.2

10

Sơ đồ tổng thể

Bàn phím

Embedded
Microcontroller

3. Khuếch đại: Tín hiệu đầu cân là tín hiệu vi sai, tùy theo loại cảm
biến, nhưng trong công nghiệp, các loại loadcell thường có các tham
số như: 20mV/V, có nghĩa là khi chịu tải tối đa, khối cảm biến đưa
tín hiệu về là 20mV. Chúng ta cần khuếch đại tín hiệu đó lên đến
giá trị max của bộ chuyển đổi ADC, thường thì bộ chuyển đổi chấp
nhận dải 0..10v, có nghĩa là nhiệm vụ của bộ khuếch đại làm tăng
hệ số khuếch đại lên 500 lần


2
1
Khuếch ñại

Lọc & Chuyển ñổi ADC

Vi ñiều khiển nhúng
Communication
interface

Power system
4
5

Nguồn nuôi

3

Phần mềm quản lý

Truyền thông

Hình 2.2: Sơ đồ khối tổng thể được chọn

Trong sơ đồ khối tổng thể cả hệ thống (hình 2.2)bao gồm các modul
sau:
Bộ cảm biến khối lượng (Loadcell), Bộ lọc (Fillter), Khuếch đại (Ampli
Gain), Chuyển đổi ADC, Bộ vi điều khiển nhúng, Hiển thị, Truyền thông,
Nguồn nuôi.
2.1.3


11

2. Bộ lọc (Fillter): Khi được cấp điện áp, Modul cảm biến sẽ đưa tín
hiệu về tỉ lệ với khối lượng đặt lên đầu cân. Tín hiệu có ích rất yếu,
điều đó có nghĩa là ảnh hưởng của môi trường rất lớn lên tín hiệu,
hay nói cách khác, nhiễu sẽ rất cao.
Để giảm thiểu nhiễu, cần có một bộ lọc, lọc bỏ hết tất cả các tần số
nhiễu nằm ngoài dải, chỉ giữ lại tín hiệu thuộc tần số cần thiết.

Hiển thị

Cảm biến

2.1 Thiết kế phần cứng

Ý nghĩa và yêu cầu kỹ thuật của từng khối

1. Khối cảm biến khối lượng (Loadcell): Khối này là khối quan
trọng nhất trong phần cảm biến. Nó quyết định vai trò chịu lực của
vật đặt lên cân. Cần phải chọn loại Loadcell sao khả năng chịu lực
của bàn cân phải lớn hơn (thường là gấp rưỡi) tổng khối lượng lớn
nhất đặt lên bàn cân.
Về bản chất, khối này là một bộ, tập hợp của nhiều Loadcell, bố trí
trên bàn cân sao cho tổng khối lượng phân bố đều nhất.
Tín hiệu vào là: +10v, tín hiệu ra là vi sai cầu trở, tạo điện áp lệnh
giữa hai đầu ra để đưa đến bộ khuếch đại.
Luận văn: Thiết kế hệ thống cân động.

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên


Nguyễn Tuấn Anh



4. Bộ chuyển đổi ADC: Khi có tín hiệu đầu vào sau bộ khuếch đại,
trong modul này, cũng có thể thiết kế thêm bộ khuếch đại lặp, nhằm
đảm bảo tín hiệu đưa vào chuyển đổi là chuẩn nhất.
Xét về độ chính xác, modul này rất quan trọng, nó quyết định sai
số của hệ thống. Nếu chúng ta chọn độ phân dải thấp thì bước nhảy
của kết quả sẽ rất lớn, tức là sai số nhiều, và ngược lại, độ phân dải
của hệ thống càng cao thì càng cho kết quả chính xác [10].
Ví dụ: Nếu chúng ta cần cân 900kg
• Nếu chọn đọ phân dải là 2 bit, thì chúng ta có các giá trị số: 0,
1, 2, 3 và các giá trị khối lượng tương ứng là: 0, 300, 600, 900
(kg). Bước nhảy và cũng là sai số có thể xảy ra là ≈ 300(kg).
• Nếu chúng ta chọn độ phân dải là 3 bit,thì bước nhảy sẽ là: 0,
1, 2, 3, 4, 5, 6, 7 và giá trị bước nhảy của cân tương ứng sẽ là:
900/7 ≈ 128.57(kg). Có nghĩa là nếu độ phân dải là 3 bit, thì sẽ
chính xác hơn nhiều so với dùng độ phân dải 2 bit.
Từ đó, theo sai số cho phép là 0.5% của 120 tấn:
Sai số = 0.5% ∗ 120(tấn) = 0.6(tấn)
chúng ta sẽ tính toán được độ phân dải cần thiết sẽ là:
600(kg) ∗ X(bước nhảy) = 120.000(kg)
X=

120.000
= 200 = 2n
600


Luận văn: Thiết kế hệ thống cân động.

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

Nguyễn Tuấn Anh




2.2 Thiết kế phần mềm

12

n = log2 (200)

8(bit)

Trong đó: X: Số bước nhảy, n: Số bit (độ phân dải).
Để tăng độ chính xác, ta nâng cao độ phân dải lên 12 bit, thì sai số
phép cân sẽ là:
212 = 4096(Bước nhảy)
120.000
Sai số =
= 29.296875(kg)
4096
Tương tự, nếu dùng độ phân dải là 13 bit, thì sai số sẽ là: 14.6484375(kg);
nếu dùng độ phân dải 14bit, sai số sẽ là: 7.32421875(kg)
Với độ phân dải 14bit, ta thấy sai số là rất nhỏ, và hoàn toàn khả
thi, vậy ta chọn độ phân dải chuyển đổi ADC là 14 bit.
Một điều rất quan trọng nữa là tốc độ chuyển đổi. Nếu thời gian

chuyển đổi quá lâu thì lượng mẫu lấy được sẽ ít, dẫn tới việc tính
toán không được chính xác. Như vậy, cần phải chọn được bộ chuyển
đổi sao cho phải đảm bảo lượng mẫu có ích thu được là hơn 100
mẫu/s (theo thuật toán tính khối lượng) mới đảm bảo cân chính
xác.
5. Bộ vi điều khiển nhúng: là một hệ vi xử lý, có khả năng điều
khiển quá trình chuyển đổi AD, truyền thông với PC và giao tiếp
với các modul mở rộng như bàn phím (dùng để chỉnh zero, calib
động,...) và modul hiển thị trực tiếp (không thông qua PC). Một
phần rất quan trọng nữa, đó là giao tiếp được với máy tính, để giao
tiếp với máy tính, có thể tùy chọn các chuẩn truyền thông: USB,
RS232, RS485, ProfiBus,...
6. Hiển thị: Hiển thị giá trị đọc được theo thời gian thực của giá trị
cân, nhằm xác định được trạng thái hoạt động của hệ thống.
7. Truyền thông: Là một modul riêng, kết nối giữa máy tính với
PC, tuân thủ theo chuẩn truyền thông giữa PC và Bộ vi điều khiển
nhúng.
8. Nguồn nuôi: Cung cấp nguồn cho toàn bộ hệ thống: 220v, 0v, 5v,
10v, 12v, 24v,...
2.2

Thiết kế phần mềm

UML là ngôn ngữ mô hình hoá, trước hết nó mô tả ký pháp thống nhất,
ngữ nghĩa các định nghĩa trực quan tất cả các thành phần của mô hình.
Luận văn: Thiết kế hệ thống cân động.

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

Nguyễn Tuấn Anh




2.2 Thiết kế phần mềm

13

UML được sử dụng để hiển thị, đặc tả, tổ chức, xây dựng và làm tài liệu
các vật phẩm (artifacts) của tất cả các giai đoạn trong quá trình phát
triển phần mềm hướng đối tượng, đặc biệt là hai giai đoạn chính phân
tích, thiết kế dưới dạng các báo cáo, biểu đồ, bản mẫu hay các trang
web, v.v. UML là ngôn ngữ mô hình hoá độc lập với các công nghệ phát
triển phần mềm [2]
Nói cách khác, UML là ngôn ngữ mô hình hoá, ngôn ngữ đặc tả và
ngôn ngữ xây dựng mô hình trong quá trình phát triển phần mềm, đặc
biệt là trong phân tích và thiết kế hệ thống hướng đối tượng. UML là
ngôn ngữ hình thức, thống nhất và chuẩn hoá mô hình hệ thống một
cách trực quan. Nghĩa là các thành phần trong mô hình được thể hiện
bởi các ký hiệu đồ hoạ, biểu đồ và thể hiện đầy đủ mối quan hệ giữa các
chúng một cách thống nhất và có logic chặt chẽ.

2.2.1

Xác định các yêu cầu và phân tích hệ thống

Từ các yêu cầu của khách hàng, chúng ta xác định được các mục tiêu
của phần mềm cần phát triển. Thường đó là các yêu cầu chức năng về
những gì mà hệ thống phải thực hiện, nhưng chưa cần chỉ ra các chức
năng đó thực hiện như thế nào. Việc xác định đúng và đầy đủ các yêu
cầu của bài toán là nhiệm vụ rất quan trọng, nó làm cơ sở cho tất cả các

bước tiếp theo trong dự án phát triển phần mềm. Muốn vậy, thì phải
thực hiện đặc tả chi tiết các yêu cầu của hệ thống. UML cung cấp biểu
đồ ca sử dụng để đặc tả các yêu cầu của hệ thống. Tài liệu đặc tả các
yêu cầu được sử dụng để:
• Làm cơ sở để trao đổi với người sử dụng, để thảo luận giữa các
nhóm thành viên trong dự án phát triển phần mềm về những gì mà
hệ thống sẽ phải thực hiện (và cả những gì nó không cần thực hiện).
• Làm căn cứ cơ bản để kiểm tra, thử nghiệm trong các bước tiếp theo
của quá trình phát triển phần mềm.
Muốn đạt được các mục tiêu trên thì quá trình phải thực hiện:
• Xác định và hiểu rõ miền, phạm vi của bài toán: Những người phát
triển sẽ xây dựng hệ thống theo sự hiểu biết của họ như thế nào về
những yêu cầu của khách hàng và những khái niệm cơ sở của bài
toán ứng dụng.
• Nắm bắt các yêu cầu: Người phân tích phải nắm bắt được tất cả các
Luận văn: Thiết kế hệ thống cân động.

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

Nguyễn Tuấn Anh




2.2 Thiết kế phần mềm

14

2.2 Thiết kế phần mềm


nhu cầu của khách hàng bằng cách phải trao đổi với mọi người có
liên quan đến dự án, tham khảo các tài liệu liên quan. Thông qua
việc thảo luận, trao đổi với khách hàng, các chuyên gia của lĩnh vực
ứng dụng và những người đã, đang sử dụng những hệ thống có sẵn,
ta có thể phát hiện và nắm bắt được các yêu cầu của họ. Phương
pháp trừu tượng hoá giúp ta dễ dàng nắm bắt được các yêu cầu của
hệ thống.

Người phát
triển hệ thống

• Đã nêu được đầy đủ các yêu cầu về chức năng (dịch vụ), đầu vào /
ra và những dữ liệu cần thiết chưa?
Bức tranh chung trong pha phân tích các yêu cầu của hệ thống có thể
mô tả như trong hình 2.3 Vấn đề xác định đúng và đầy đủ các yêu cầu
của hệ thống là rất quan trọng, nó ảnh hưởng rất lớn tới chất lượng của
sản phẩn sau này.
2.2.2

Phân tích hệ thống hướng đối tượng

Phân tích hướng đối tượng (OOA): là một giai đoạn của quá trình phát
triển phần mềm, trong đó mô hình khái niệm được mô tả chính xác
thông qua các đối tượng thực và các khái niệm của bài toán ứng dụng.
Luận văn: Thiết kế hệ thống cân động.

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

Nguyễn Tuấn Anh




Nắm bắt
các yêu cầu
Mô tả
các yêu cầu

Khách hàng,
Các chuyên gia

Thẩm
ñịnh

Phân loại

hệ thống

Người sử dụng
(NSD)

• Thẩm định: Kiểm tra xem các yêu cầu có thống nhất với nhau và
đầy đủ không, đồng thời tìm cách giải quyết các mối mâu thuẫn giữa
các yêu cầu nếu có.

• Khách hàng, người sử dụng (NSD) và những người phát triển đã
hiểu hoàn toàn hệ thống chưa?

Hiểu rõ
các yêu cầu
Nghiên cứu

tính khả thi

• Phân loại: Vấn đề quan trọng nhất trong giai đoạn này là phải hiểu
rõ các yêu cầu đã được xác định. Muốn vậy, ta phải tìm cách phân
loại chúng theo tầm quan trọng, hay chức năng chính của những
người sử dụng và của khách hàng.

• Nghiên cứu tính khả thi: Tính khả thi của một dự án tin học phải
được thực hiện dựa trên các yếu tố bao gồm các khía cạnh tài chính,
chiến lược, thị trường, con người, đối tác, kỹ thuật, công nghệ và
phương pháp mô hình hoá, v.v. Nói chung, không có một qui tắc
hướng dẫn cụ thể để biết khi nào công việc phân tích các yêu cầu
sẽ kết thúc và quá trình phát triển có thể chuyển sang bước tiếp
theo. Nhưng có thể dựa vào các câu trả lời cho những câu hỏi sau
để chuyển sang bước tiếp theo.

15

Tài liệu ñặc tả yêu cầu
và bước tiếp theo

Hình 2.3: Mối quan hệ giữa các công việc trong pha phân tích các yêu cầu

Phân tích hướng đối tượng tập trung vào việc tìm kiếm các đối tượng,
khái niệm trong lĩnh vực bài toán và xác định mối quan hệ của chúng
trong hệ thống.
Nhiệm vụ của khâu phân tích là nghiên cứu kỹ các yêu cầu của hệ
thống và phân tích các thành phần của hệ thống cùng các mối quan hệ
của chúng. Trong khâu phân tích hệ thống chủ yếu trả lời câu hỏi:
• Hệ thống gồm những thành phần, bộ phận nào?

• Hệ thống cần thực hiện những cái gì?
Kết quả chính của pha phân tích hệ thống hướng đối tượng là biểu
đồ lớp, biểu đồ trạng thái, biểu đồ trình tự, biểu đồ cộng tác và biểu đồ
thành phần.
2.2.3

Thiết kế hệ thống hướng đối tượng

Dựa vào các đặc tả yêu cầu và các kết quả phân tích (các biểu đồ nêu
trên) để thiết kế hệ thống. Thiết kế hướng đối tượng (OOD) là một giai
đoạn trong quá trình phát triển phần mềm, trong đó hệ thống được tổ
chức thành tập các đối tượng tương tác với nhau và mô tả được cách để
hệ thống thực thi nhiệm vụ của bài toán ứng dụng. Trong khâu thiết kế
hệ thống hướng đối tượng chủ yếu trả lời câu hỏi:
Luận văn: Thiết kế hệ thống cân động.

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

Nguyễn Tuấn Anh




2.2 Thiết kế phần mềm

16

2.3 Tổng kết chương

• Làm như thế nào?


17

Mô hình khái niệm,
Đặc tả các yêu cầu

• Trong hệ thống có những lớp đối tượng nào, trách nhiệm của chúng
là gì?
• Các đối tượng tương tác với nhau như thế nào?

Thiết kế logic:
Phân chia các thành phần,
Nhiệm vụ các thành phần
Quan hệ giữa các thành phần

• Các nhiệm vụ mà mỗi lớp đối tượng phải thực hiện là gì?
• Dữ liệu nghiệp vụ và các giao diện được xây dựng như thế nào?
• Kiến trúc và cấu hình của hệ thống?

Kiến trúc chi tiết, cụ thể và
phụ thuộc vào vài đặt:
khung của hệ thống

Kiến trúc
tổng quát và
trừu tượng hoá

Thiết kế chi tiết:
Làm mịn dần các thành phần,
Cách thực hiện của mỗi thành phần

Thiết kế các mối quan hệ

Hình 2.4: Thiết kế logic và thiết kế chi tiết

Nhiệm vụ chính của thiết kế hệ thống là:
• Xây dựng các thiết kế chi tiết mô tả các thành phần của hệ thống ở
mức cao hơn khâu phân tích, thiết kế giao diện để phục vụ cho việc
cài đặt. Nghĩa là, các lớp đối tượng được định nghĩa chi tiết gồm
đầy đủ các thuộc tính, các thao tác phục vụ cho việc cài đặt bằng
ngôn ngữ lập trình hướng đối tượng được lựa chọn ở các bước sau.
• Đồng thời đưa ra được kiến trúc (là trọng tâm) của hệ thống để đảm
bảo cho hệ thống có thể thay đổi, có tính mở, dễ bảo trì, thân thiện
với NSD, v.v. Nghĩa là tổ chức các lớp thành các gói hoặc các hệ
thống con theo một kiến trúc phù hợp với nhu cầu phát triển của
công nghệ (mạng, phân tán, v.v.) đồng thời phù hợp với xu thế phát
triển của lĩnh vực ứng dụng.
• Thiết kế CSDL, có thể chọn mô hình quan hệ hay mô hình đối tượng.
Bởi vì tồn tại nhiều mô hình dữ liệu khác nhau, nên khi xây dựng hệ
thống phần mềm lớn chúng ta phải thiết kế các phương án tích hợp
dữ liệu từ nhiều nguồn khác nhau, nghĩa là những khả năng chuyển
đổi, kết hợp các mô hình dữ liệu đó với nhau.
Những kết quả trên được thể hiện trong các biểu đồ: biểu đồ lớp (chi
tiết), biểu đồ hành động, biểu đồ thành phần và biểu đồ triển khai.
Tất cả các kết quả thiết kế phải được ghi lại thành các hồ sơ, tài liệu
cho hệ thống. Trong các tài liệu thiết kế phải mô tả cụ thể những thành
phần nào, làm những gì và làm như thế nào.
2.2.4

mô đun chương trình (chương trình con). Mỗi mô đun này sẽ được kiểm
định hoặc thử nghiệm theo các tài liệu đặc tả của giai đoạn thiết kế.

Công việc này được mô tả như sau:
Đặc tả thiết kế

Lập trình
(Xây dựng các lớp)

Tập các mô đun
chương trình

Hình 2.5: Lập trình tập trung xây dựng lớp

Hiện nay có một số công cụ hỗ trợ cho quá trình phân tích, thiết kế
và có thể sinh mã tự động cho những thành phần chính của mô hình
như: Rose [4], hay Visual Studio .NET của Microsoft, v.v.
2.3

Tổng kết chương

Khâu thiết kế tổng thể là khâu rất quan trọng, ta phải thiết kế ở dạng
sơ đồ khối, chia bài toán thành nhiều module, mỗi module đảm nhận
một chức năng.
Ở chương này, ta chỉ xét đến chức năng các module, các yêu cầu đầu
vào/ra, sự liên kết giữa các module, phân chia công việc giữa phần mềm
và phần cứng, yêu cầu kỹ thuật,các điều kiện giới hạn của module,...

Lập trình hướng đối tượng

Trong giai đoạn này, mỗi thành phần đã được thiết kế sẽ được lập trình
bằng ngôn ngữ lập trình hướng đối tượng được lựa chọn thành những
Luận văn: Thiết kế hệ thống cân động.


Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

Nguyễn Tuấn Anh



Luận văn: Thiết kế hệ thống cân động.

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

Nguyễn Tuấn Anh




3.1 Thiết kế phần cứng hệ thống

19

Chương 3

Thiết kế chi tiết hệ thống cân động
vật thể

Chiều dài bàn cân

Hình 3.1: Thiết kế cơ khí gá lắp Loadcell

Thiết kế chi tiết cả hệ thống, dựa vào yêu cầu được đưa ra từ phần thiết

kế tổng thể, chương này triển khai chi tiết :
Về phần cứng: triển khai thiết kế mạch, đưa ra sơ đồ nguyên lý, phân
tích sự hoạt động của mạch, đưa ra thuật toán điều khiển, mã nguồn
điều khiển, và mã nguồn dùng để kiểm tra sự hoạt động của mạch
Về phần mềm: phân tích, thiết kế hướng đối tượng phần mềm cần có.
L

3.1

Thiết kế phần cứng hệ thống

Hình 3.2: Khoảng cách 2 bánh tàu trên một trục

Sau khi đã nghiên cứu ký lưỡng, chi tiết, tỉ mỉ về yêu cầu của hệ thống
mới, chúng ta có thể đưa ra được sơ đồ nguyên lý dạng chi tiết đến từng
linh kiện. Như hình 3.3, đó là phần mạch nguyên lý hệ thống. Chưa có
phần ngoại vi như: bộ biến đổi điện áp, cơ cấu gá lắp Loadcell, cáp và
cách chọn cáp tín hiệu,...
Để chi tiết hơn, dưới đây tôi xin trình bày về phần cơ khí trước.
Xem hình 3.1, trong đó: Ray tàu là hai đường thẳng song song, được
gá lên các tà vẹt. Tuy ngành đường sắt cũng đã rất cố gắng để trong
quá trình tàu chạy, các tà vẹt không nún, nhưng chỉ bằng phương pháp
trải đá 34 thì không thể tránh khỏi hiện tượng là các tà vẹt vẫn nún khi
có tàu chạy qua, đặc biệt là tàu chở đầy hàng.Để không bị nún khi cân,
chúng ta cần thiết kế một bàn cân. Bàn cân được thiết kế bằng bê tông,
đúc dày đặc khoảng 50cm, rộng gấp đôi khoảng cách giữa 2 tà vẹt, và
dài gấp đôi khoảng cách tiếp đất của 2 bánh tàu trên cùng một trục.

đó L là khoảng cách giữa hai bánh trên một cụm, L = 2.27m. Như vậy,
chiều dài bàn cân, tối thiểu phải là 4.54m. Để đảm bảo an toàn, ta chọn

chiều dài bàn cân là 6m. Do khoảng cách giữa hai điểm gần nhất của
hai bánh tàu là 9.5m, nên hoàn toàn yên tâm.
Độ dày của khối bê tông, phải đủ lớn để đảm bảo đặt toa tàu có khối
lượng 120 tấn lên thường xuyên mà không bị hỏng. Vấn đề sức bền cơ
khí, sẽ có một kỹ sư cơ khí thiết kế theo ý tưởng trên.
Từ thiết kế sơ đồ khối tổng thể, ta xác định đầu vào/ra và thiết kế
được sơ đồ chi tiết như hình 3.3.
Trong sơ đồ này, ta xác định được đầu vào/ra, mạch nguồn vào, bàn
phím chỉnh định, module khuếch đại, hai module hiển thị, giao tiếp với
PC,...

Bánh tàu cho mỗi toa được chia làm hai cụm, (xem hình 3.2), trong
Luận văn: Thiết kế hệ thống cân động.

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

Nguyễn Tuấn Anh



Luận văn: Thiết kế hệ thống cân động.

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

Nguyễn Tuấn Anh







PID5901

PISW3701

PISW3601

PISW3501

PISW3401

1N4148

PID5902

COD59
D59

Nguyễn Tuấn Anh
1

1

CO22p5
CO22p6
COXtal12M5

1

PILK10 PILK201 PILK301 PILK401 PILK501 PILK601


COLK1 COLK2 COLK3 COLK4 COLK5 COLK6
LK1

COSW34
COSW35
COSW36
COSW37

D

PIR5902

10k

CON 1

PIR5901

CON 1

R59
COR59

ICSP

LK4

1


C

2
B7
3
PIJ5603
4
PIJ5604
5
NLMCLR
MCLR
PIJ5605

PIJ5602

COJ56
J56

CON 1

VCC

LK3

1
B6
PIJ5601

PIJ6504


CON 1

B

+10V

VCC

R R R R

POGiam
Giam

PISW3702

PISW3602

PIR6601

PISW3502

PIR6801

COR68
R68

PIR6701

COR67
R67


PIR6501
R66
COR66

COR65
R65

Tang
POTang
POChe
Che dodo

PISW3402

PIR60 2 PIR6102 PIR6202 PIR6302

PI22p602

PIXtal12M501

PIXtal12M502

PI22p502

POXong
Xong

PI22p601


PI22p501

POS0
S-

POS0
S+

-12V
+10V

+12V

OSC2
RC0
RC1
RC2

PIMCU011

DO

14
PIMCU014

POGIAM
Giam

2


P18f2550

SDO - RX - RC7
TX - RC6
D+ - RC5
D- - RC4

VSS

VDD

PGD - RB7
PGC - RB6
PGM - RB5
AN11 - RB4
AN9 - RB3
INT2 - AN8 - RB2
SCL/K - INT1 - AN10 - RB1
SDA/I - INT0 - AN12 - RB0

Speed to PIC

To Main ADDA

S-

Speed in

To PIC display


104

COC11
C11

18
4
17
3
16 PIJ6602
2
PIMCU016
15 PIJ6601
1
PIMCU015

A4

VCC

PIC801
PIC802

4.7u

COC8
C8

3PIU203


VIN

COU2
U2

DO

GND

PIwr501

PIwr502

PIwr503

PIU201

Number: *

Revision:

*

2

PIR2301

PIR2302

3


100u

240

R23
COR23

Speed display.SchDoc

PIC701
PIC702

Weight Display.SchDoc

PIU202

D3

4

COC7
C7

PIC601
PIC602

+10V

224


COC6
C6

PID102

PID101

PIR2102

PIR2101

D1
COD1

4K7

R21
COR21

Cao hoc K6
DH KTCN
Thai Nguyen

4

Designed by TuÊn Anh. Website:

5K


wr5
COwr5

VOUT

LM317

Tªn s¶n phÈm: CB090504

+12V

VCC

POST0CP
ST_CP
VCC

DI
SH_CP
ST_CP

POSH0CP
SH_CP

PODO
DO

DO

GND


VCC

DI
SH_CP
ST_CP

PODO
DO

VCC

SH_CP
ST_CP

PODI
DI

D

Date: 7/28/2009
Time: 11:43:53 AM Sheet * of *
File: E:\Products\CB090504 Design\Imported CB090504.PRJPCB\KD & HT.SchDoc

*
Size:

104

COC12

C12

Title

HEADER 4

PIMCU017
PIJ6603

PIC1202

PIR6402

10k

PIC1201

COR64
R64
PIR6401

PIC1COJ66
02
J66

PIC1 01

PIMCU018
PIJ6604


19

20

PIMCU019

PIMCU020

PIMCU027

27
NLB6
B6
26
PIMCU026
25
PIMCU025
24
PIMCU024
23 POST0CP
PIMCU023
ST_CP
22 POSH0CP
PIMCU022
SH_CP
21
PIMCU021PODI
DI

NLB7

B7

POSpeed
PIC
Speed 22PIC

POMain
ADDA
Main ADDA

POWeight
disp
Weight disp

28
PIMCU028

Khuech dai.SchDoc

B1

S+

+12V
GND
-12V
+10V

3


Hình 3.3: Thiết kế chi tiết phần cứng hệ thống

POXONG
Xong

PIR6802

470

PIR6702

470

11
12
13

PIMCU013

PIMCU012

VUSB

OSC1

10

PIMCU010

VSS


RA0-AN0
RA1-AN1
RA2-AN2
RA3-AN3
RA4
RA5-AN4

MCLR

PIMCU09

9

8
PIMCU08

POTANG
Tang

PIR6602

470

6
7

PIMCU07

PIMCU06


PIR6502POCHE
Che do

470

2
3

PIMCU03
4
PIMCU04
5
PIMCU05

PIMCU02

1
PIMCU01

2

COMCU
MCU

POSpeed
fromINV
INV
Speed from


POMCLR
MCLR
POWEIGHT
DISP
Weight disp
POSPEED
PIC
Speed 22PIC

PIR60 1 PIR61COR60
01 PIR62R61
01 PIR6COR62
3R62
01 R63
COR63
R60COR61

POMCLR
MCLR

VCC

3
POS0
S+
4
S5
PIJ6505
POMAIN
ADDA

Main ADDA
6
PIJ6506
7
POSPEED
FROM
PIJ6507
Speed from
INVINV
8
PIJ6508
-12V
9
PIJ6509
VCC
10
PIJ65010
+12V
11
PIJ65011

1

CON 1

PIJ6503

HEADER 11

LK2


1

PIJ6501
2
PIJ6502

LK5

1

2

A

LK6

1

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
CON 1

Luận văn: Thiết kế hệ thống cân động.
1

ADJ
1
3
1


COJ65
J65

D

C

B

A

3.1 Thiết kế phần cứng hệ thống
20
3.1 Thiết kế phần cứng hệ thống

3.1.1

R

1 chỉnh

21

Khối cảm biến

Sơ đồ khối cảm biến, không được thể hiện đầy đủ trong hình 3.3, thiết
kế đầy đủ khối cảm biến bao gồm: Loadcell, khuếch đại. Tín hiệu ra phải
ở dạng chuẩn công nghiệp: 0..10v [11]
+10v


R
GND

S+

R

Luận văn: Thiết kế hệ thống cân động.

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

S-

R

Hình 3.4: Sơ đồ nguyên lý Loadcell

Hình 3.4 là sơ đồ nguyên lý của hầu hết các loại Loadcell. Bản chất
vấn đề chính là mạch cầu trở, theo sơ đồ đó, khi có một lực kéo hay nén
tác động lên Loadcell, cầu trở sẽ mất cân bằng, làm cho điện áp chảy
qua mạch thay đổi.
S+ và S- là hai đầu ra của mạch. Nếu cầu trở cân bằng thì VS+ = VS− ,
khi cầu không cân bằng thì VS+ = VS−
Tín hiệu ra S+ và S- tùy thuộc vào mỗi lại Loadcell nhưng hầu hết trong
công nghiệp thường chọn loại 20mV/V, hoặc 4 ÷ 20mA. Có nghĩa là nếu
chúng ta dùng Loadcell loại 15 tấn, và chúng ta đặt khối lượng là 15 tấn
lên Loadcell thì đầu ra (vi sai) giữa S+ và S- là 20mv hoặc 20mA, còn
khi bỏ lửng Loadcell thì đầu ra là 0mV hay 4mA.
Theo những đặc tính trên thì ta thiết kế được một bộ khuếch đại, như
hình 3.5.

Trong sơ đồ 3.5, có đầy đủ các thành phần sao cho kết quả đầu ra
là 0..10V hoặc 0..5v, vì một số dòng chuyển đổi ADC mới hiện nay chỉ
chấp nhận tín hiệu đầu vào trước khi chuyển đổi là 0..5v.

Phân tích nguyên lý hoạt động của mạch: Chân S+ và S- là hai
tín hiệu vào từ Loadcell, trong quá trình truyền dẫn, có thể tín hiệu về
đến bộ khuếch đại không thực sự cân bằng, hoặc do khối lượng bì,... làm
cho tín hiệu về lệch sẵn một khoảng, vậy ta cần phải chỉnh cân bằng1
bởi WR1. Tín hiệu sau đó được lọc nhiễu sơ bộ rồi qua mạch khuếch đại
âm, lọc và khuếch đại đảo lại để lấy tín hiệu (+) tại đầu ra. Tín hiệu ra
cân bằng, hay còn gọi là chỉnh không, chỉnh zero

Nguyễn Tuấn Anh




22

-

5

2
1

wr4

-12V


-

+

C5

3.1.2

R15

R6

+12V

Speed in

R4

C1

Khối chuyển đổi AD (AD: Analog to Digital; ADC: Analog to Digital
Converter) có nhiều phương án thiết kế, song ta cần chọn phương án
đơn giản nhất, đảm bảo hiệu quả, tốc độ, độ ổn định và tương thích tín
hiệu với toàn hệ thống. Sơ đồ tổng thể nằm trên hình 3.3.
Sơ đồ này tổng hợp cả các module khác, vậy nên ta tách ra cho dễ nhìn,
như hình 3.6.
MCU

1
Weight disp

Speed 2 PIC

2
3
4
5
6
7

MCLR
RA0-AN0
RA1-AN1
RA2-AN2
RA3-AN3
RA4
RA5-AN4

8

Hình 3.6: Sơ đồ nguyên lý khối AD

Khối ADC được nhúng vào vi điều khiển nên cần có thuật toán đọc
AD. Trong khối này, ta có đưa vào 2 tín hiệu là khối lượng và tốc độ.
Thuật toán đọc tín hiệu tương tự - số như hình 3.7.
Vi điều khiển ta chọn phải là loại tốc độ cao, trong họ vi điều khiển
8 bit, có vi mạch PIC18F4550. Vi điều khiển PIC18F4550 có tốc độ xử
lý lên đến 48MHz do vậy về tốc độ xử lý ta hoàn toàn yên tâm, không
cần lo lắng!
Chọn ngôn ngữ C để lập trình cho PIC, vì C là ngôn ngữ có cấu trúc
rất rõ ràng, và sát với ngôn ngữ bậc thấp, hỗ trợ nhiều thư viện,....


1

R2

R1

WR1

-12V

+12V

-12V

+10V

GND

+12V

3
2

S+

Theo thuật toán trên, ta viết phần mềm nhúng cho PIC, chương trình
con đọc dữ liệu ADC như sau: Mã nguồn:

Luận văn: Thiết kế hệ thống cân động.


Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

unsigned int ADC_Read(unsigned char ch){
unsigned int value=0;
setup_adc( ADC_CLOCK_INTERNAL );
setup_adc_ports( ALL_ANALOG );
set_adc_channel(ch);

D

C

B

+10V

SA

Khối chuyển đổi ADC

1

+10V

R3

Max 10v

3


2

+

11
-

4

-12V

U1A

R5

1

R7

R16

R8

2

3

2


+12V

7
1

C2

4
5

R9

3

6

Sp1

R10

1

6

+

11

2


4

2

23

4
3

Date: 7/31/2009
Time: 10:52:00 PM Sheet * of *
File: D:\Cao hoc\LVTN\Pictures\CB090504\Khuech dai.SchDoc

Revision: *

Designed by TuÊn Anh. Website:

D
wr5

7
U1B

C3
wr2

1

3


2
3

1

3.1 Thiết kế phần cứng hệ thống

nằm trong dải 0..10v, được chia làm hai ngả: lặp 0..10v và giảm áp, lặp
xuống còn 0..5v [10]
Tín hiệu ra sẽ được đưa đến module chuyển đổi AD. Trong mạch còn dự
phòng sẵn một mạch lọc và lặp áp độc lập nhằm xác định vận tốc nếu
cần.
Khối này không có sự can thiệp của phần mềm.

Hình 3.5: Sơ đồ nguyên lý mạch khuếch đại Loadcell

R12

T3

Title

*

C4

Number: *

1


R11

Size: A4

-

13

Speed to PIC

2
3

R13

KhuÕch ®¹i

U1D
+

12

-

WR3

R14

+


9

4
10

11

T4

4

3

11

U1C

8

14

To PIC display

To Main ADDA

4

HOLIA
No 103, Ga luu xa street
Phu xa

Thai Nguyen
Viet Nam

C

B

A

3.1 Thiết kế phần cứng hệ thống

Nguyễn Tuấn Anh



Luận văn: Thiết kế hệ thống cân động.

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

Nguyễn Tuấn Anh




3.1 Thiết kế phần cứng hệ thống

24

Kênh cần đọc: ch


Chọn kênh (ch)
Phát tín hiệu bắt đầu chuyển đổi

POSH0CP
SH_CP

C
D

3
8

B

F
G
E

C
D

PILed801 PILed802 PILed804 PILed805 PILed801 PILed809 PILed807 PILed806
PIU9015 PIU901 PIU902 PIU903 PIU904 PIU905 PIU906 PIU907

15
1
2
3
4
5

6
7
SH_CP
ST_CP

9

PIU909

OE
GND

VCC
CLR

SDO

PODO
DO

PIU9016 PIU9010 PIU9013 PIU908

16
10

PIU901 PIU9012

VCC

74hc595


13
8

POSDI4
SDI4

SH_CP
ST_CP

OE
GND

PIU8013 PIU808

9

PIU809

11
12

VCC
CLR

SDO

PIU8016 PIU8010

16

10

PIU801 PIU8012

COU9
14PIU9014 U9
POSDI4
SDI4
SDI

74hc595

13
8

POSDI3
SDI3

QA
QB
QC
QD
QE
QF
QG
QH

15
1
2

3
4
5
6
7

VCC

9

PIU709

11
12

OE
GND

VCC
CLR

PIU7016 PIU7010 PIU7013 PIU708

16
10

11
12

PIU701 PIU7012


SDO

SH_CP
ST_CP

COU8
U8
14
PIU8014 SDI
POSDI3
SDI3

74hc595

13
8

POSDI2
SDI2

SH_CP
ST_CP

VCC

9

PIU609


SH_CP
ST_CP

OE
GND

PIU6013 PIU608

16
10

PIU6016 PIU6010

13
8

VCC
CLR

SDO

QA
QB
QC
QD
QE
QF
QG
QH


15
1
2
3
4
5
6
7

QA
QB
QC
QD
QE
QF
QG
QH

15
1
2
3
4
5
6
7
SH_CP
ST_CP
11
12


SH_CP
ST_CP

COU7
U7
14
PIU7014 SDI
POSDI2
SDI2

74hc595

1
2
4
5
10
9
7
6

PILed701 PILed702 PILed704 PILed705 PILed701 PILed709 PILed70 PILed706
PIU8015 PIU801 PIU802 PIU803 PIU804 PIU805 PIU806 PIU807

1
2
4
5
10

9
7
6

PILed601 PILed602 PILed604 PILed605 PILed601 PILed609 PILed607 PILed60
PIU7015 PIU701 PIU702 PIU703 PIU704 PIU705 PIU706 PIU70

1
2
4
5
10
9
7
6

G
F
A
B
H
C
D
E

H

G
F
A

B
H
C
D
E

H

A

+2.5v
+2,5v

3
8

+2.5v
+2,5v
B
G

E

G
F
A
B
H
C
D

E

H

LED 7 THANH (DON, 12.5X19 )

C
D

A

F

PILed501 PILed502 PILed504 PILed50 PILed501 PILed509 PILed507 PILed506
PIU6015 PIU601 PIU602 PIU603 PIU604 PIU605 PIU60 PIU607

PIU601 PIU6012

}

B
G

E

270R

PIR2702
PILed803 PILed80


COLed8
Led8

G
F
A
B
H
C
D
E

H

A

F

COR27
R27

PIR2602
PILed703 PILed708

COLed7
Led7

LED 7 THANH (DON, 12.5X19 )

C

D

POSH0CP OST0CP

value = read_adc();
return value;

3
8

3
8

B
G

E

PIR2502
PILed603 PILed608

COLed6
Led6

LED 7 THANH (DON, 12.5X19 )

LED 7 THANH (DON, 12.5X19 )

270R


F

COU6
U6
14
PIU6014 SDI
PODI
DI

Hình 3.7: Sơ đồ thuật toán đọc ADC

PIR2701
COR26
R26

270R

QA
QB
QC
QD
QE
QF
QG
QH

END

VCC


PIR2601
COR25
R25

270R

1
2
4
5
10
9
7
6

Tín hiệu số

A

VCC

PIR2501
COR24
R24

PIR2402
PILed503 PILed508

COLed5
Led5


Đọc tín hiệu số

VCC

PIR2401

+2.5v
+2,5v

+
-

VCC
VCC

POGND
GND

SH_CP
ST_CP

POVCC
VCC

Chuyển đổi xong ?

+2.5v
+2,5v


POST0CP
ST_CP

_

25

Nguyên lý hoạt động của khối này là dùng phương pháp chuyển đổi tín
hiệu nối tiếp sang song song, dựa trên thanh di dịch 74595. Phương pháp
này rất hay, ở chỗ là nó có thể vừa là bộ chuyển đổi nối tiếp sang song
song, vừa là bộ chốt đệm dữ liệu hiển thị, làm cho ảnh hiển thị tĩnh và
sáng đều.

Begin ADC

-

3.1 Thiết kế phần cứng hệ thống

VCC

Hình 3.8: Sơ đồ nguyên lý mạch hiển thị
Ví dụ sau dùng để kiểm tra sự hoạt động của ADC:

#include <built_in.h>
unsigned int adc_rd;
void main() {
TRISA = 0xFF;
ANSEL = 0x07;
TRISC = 0x00;

TRISB = 0x00;
do {
temp_res = ADC_Read(2);
PORTB = temp_res;
PORTC = temp_res >> 8;
} while(1);

//
//
//
//

PORTA is input
Configure as analog
Pins PORTC are outputs
PORTB is output

// Get results of AD conversion
// Send lower 8 bits to PORTB
// Send most significant bits to PORTC

}

Hình 3.9: Mạch hiển thị khối lượng và tốc độ

Mạch hiển thị
Trong khối này (hình 3.8), còn cần phải có hiển thị thông tin, các thông
tin đọc được từ khối cảm biến sẽ được thể hiện trên khối hiển thị và
truyền lên PC.


// Display Buffer array to LED
void LED7Display(){
const int8 L7[12]={

Luận văn: Thiết kế hệ thống cân động.

Luận văn: Thiết kế hệ thống cân động.

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

Nguyễn Tuấn Anh



Chương trình con hiển thị dữ liệu từ bộ đệm ra LED 7 thanh:

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

Nguyễn Tuấn Anh




3.1 Thiết kế phần cứng hệ thống

26

3.1.3

0x88,0xEB,0x4C,0x49,0x2B,0x19,0x18,0xCB,0x8,0x9,0x7F,0xFF

};
#define black 11
#define negative 10
#define clock {output_bit(SH_CP,0);output_bit(SH_CP,1);}
#define out1bit output_bit(DI,buffer[k]&1);
#define ST_CP PIN_B2
#define SH_CP PIN_B1
#define DI PIN_B0
int8 k,k1,so0;
buffer[7]=L7[(W /1000)%10];
buffer[6]=L7[(W / 100)%10];
buffer[5]=L7[(W / 10)%10];
buffer[4]=L7[(W
)%10];
buffer[3]=L7[(SP/1000)%10];
buffer[2]=L7[(SP/ 100)%10];
buffer[1]=L7[(SP/ 10)%10];
buffer[0]=L7[(SP
)%10];
so0=1;
if((buffer[7]==L7[0])&&(so0)){buffer[7]=L7[black];}else
if((buffer[6]==L7[0])&&(so0)){buffer[6]=L7[black];}else
if((buffer[5]==L7[0])&&(so0)){buffer[5]=L7[black];}
so0=1;
if((buffer[3]==L7[0])&&(so0)){buffer[3]=L7[black];}else
if((buffer[2]==L7[0])&&(so0)){buffer[2]=L7[black];}else
if((buffer[1]==L7[0])&&(so0)){buffer[1]=L7[black];}

3.1 Thiết kế phần cứng hệ thống


27

Khối truyền thông

Khối truyền thông sẽ được thiết kế sao cho hoạt động nhanh nhất, ít lỗi
nhất đảm bảo được truyền thông với lượng mẫu theo yêu cầu của thuật
toán.
Có rất nhiều phương pháp lựa chọn truyền thông, như truyền thông
RS232, RS485, ProfiBus,.... Nhưng cách hợp lý nhất chính là truyền
thông USB. Sơ đồ ghép nối như hình 3.11, trong đó, cap truyền thông
không nên vượt quá 15m [15]

so0=0;
so0=0;

so0=0;
so0=0;

for(k=0;k<8;k++){
for(k1=0;k1<8;k1++){
out1bit clock buffer[k]>>=1;
}}
output_bit(ST_CP,0);
output_bit(ST_CP,1);

Hình 3.11: Truyền thông USB

}

Hình 3.10: Bàn phím chỉnh tham số gốc


Luận văn: Thiết kế hệ thống cân động.

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

Phím bấm
Phím bấm dùng để nhập các thông
tin đầu vào ngay trên khối chuyển
đổi, có thể nhập các tham số như
thay đổi số lượng mẫu cần lấy, calib
động, bù nhiệt,... Để đọc được giá trị
của phím bấm, ta sử dụng thuật toán
quét từng hàng và đọc từng cột, nếu
có sự khác biệt so với mặc định là có
phím được bấm.

Nguyễn Tuấn Anh



Để truyền thông được qua giao thức USB, chúng ta dùng chuẩn HID,
tốc độ hoạt động của chip phải là 48MHz (với truyền thông USB 2.0,
full speed) [14]
Phần mềm nhúng truyền thông USB, cần có các hàm: Hid Enable,
Hid Read, Hid Write, Hid Disable.
Với cấu trúc:
Hid Enable
Khai báo: void Hid Enable(unsigned readbuff, unsigned writebuff);
Trả về: không
Diễn tả: Cho phép giao tiếp USB HID. Tham số readbuff và writebuff

là Buffer Đọc và Viết Buffer, tương ứng, mà được sử dụng để giao tiếp
HID.
Chức năng này cần phải được gọi trước khi sử dụng các hàm khác của
Luận văn: Thiết kế hệ thống cân động.

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

Nguyễn Tuấn Anh




3.1 Thiết kế phần cứng hệ thống

28

thư viện USB HID.
Yêu cầu: Không
Ví dụ: Hid Enable(&rd, &wr);
Hid Read
Khai báo: unsigned char Hid Read(void);
Trả về: Số lượng các ký tự trong Đọc Buffer nhận được từ các máy chủ.
Diễn tả: Nhận được tin nhắn từ máy chủ và lưu nó trong bộ đệm đọc.
Hàm trả về số lượng các ký tự nhận được trong bộ đệm đọc.
Yêu cầu: USB HID cần phải được kích hoạt trước khi sử dụng chức năng
này.
Ví dụ: get = Hid Read();
Hid Write
Khai báo: unsigned short Hid Write(unsigned writebuff, unsigned short
len);

Trả về: Nếu việc truyền dữ liệu đã không thành công, hàm trả về 0. Nếu
không, nó trả về số lượng byte truyền được
Diễn tả: Hàm gửi dữ liệu từ Buffer Viết writebuff đến máy chủ. Viết
Buffer có cùng một tham số như được sử dụng trong khởi tạo; xem
Hid Enable. Len tham số cần để xác định chiều dài của dữ liệu sẽ được
truyền
Yêu cầu: USB HID cần phải được kích hoạt trước khi sử dụng chức năng
này.
Ví dụ:
// Thử đến khi thành công:
while (!HID Write(writebuff, 1));
Hid Disable
Khai báo: void Hid Disable(void);
Trả về: không
Diễn tả: Ngắt giao tiếp USB
Yêu cầu: USB HID cần phải được kích hoạt trước khi sử dụng chức năng
này.
Ví dụ: Hid Disable();
Đoạn mã nguồn dùng để kiểm tra việc truyền thông:
Ví dụ sau liên tục gửi các số 0 .. 255 đến PC qua USB(Universal Serial Bus). usbdsc.c phải được bao
gồm trong dự án.
unsigned short m, k;
unsigned short userRD_buffer[64];

Luận văn: Thiết kế hệ thống cân động.

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

Nguyễn Tuấn Anh




3.1 Thiết kế phần cứng hệ thống

29

unsigned short userWR_buffer[64];
void interrupt() {
asm CALL _Hid_InterruptProc
asm nop
}
void Init_Main() {
// Disable all interrupts
// Disable GIE, PEIE, TMR0IE, INT0IE,RBIE
INTCON = 0;
INTCON2 = 0xF5;
INTCON3 = 0xC0;
// Disable Priority Levels on interrupts
RCON.IPEN = 0;
PIE1 = 0;
PIE2 = 0;
PIR1 = 0;
PIR2 = 0;
// Configure all ports with analog function as digital
ADCON1 |= 0x0F;
// Ports Configuration
TRISA = 0;
TRISB = 0;
TRISC = 0xFF;
TRISD = 0xFF;

TRISE = 0x07;
LATA = 0;
LATB = 0;
LATC = 0;
LATD = 0;
LATE = 0;
// Clear user RAM
// Banks [00 .. 07] ( 8 x 256 = 2048 Bytes )
asm {
LFSR
FSR0, 0x000
MOVLW
0x08
CLRF
POSTINC0, 0
CPFSEQ
FSR0H, 0
BRA
$ - 2
}
// Timer 0
T0CON = 0x07;
TMR0H = (65536-156) >> 8;
TMR0L = (65536-156) & 0xFF;
INTCON.T0IE = 1;
// Enable T0IE
T0CON.TMR0ON = 1;
}
/** Main Program Routine **/
void main() {

Init_Main();
Hid_Enable(&userRD_buffer, &userWR_buffer);
do {
for (k = 0; k < 255; k++) {
// Prepare send buffer
userWR_buffer[0] = k;
// Send the number via USB
Luận văn: Thiết kế hệ thống cân động.

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

Nguyễn Tuấn Anh




3.2 Thiết kế hướng đối tượng phần mềm hệ thống [2]

30

3.2 Thiết kế hướng đối tượng phần mềm hệ thống [2]

31

Hid_Write(&userWR_buffer, 1);
}
} while (1);
Hid_Disable();
}
//————————————————-


3.1.4

Khối nguồn

Khối nguồn là khối cần đến sự ổn định của điện áp, đảm bảo điện áp
đúng thiết kế để cung cấp cho toàn bộ mạch. Khối nguồn được thiết kế
theo sơ đồ hình 3.12[15] .

Hình 3.13: Mô phỏng tín hiệu điện của khối nguồn

thiết kế, hơn nữa lại phụ thuộc cơ bản vào con người. Tuy nhiên phần
mềm và phần cứng lại có nhiều điểm đặc trưng rất khác nhau.
• Qui trình và phương pháp tổ chức thực hiện để sản xuất ra chúng
rất khác nhau,
Hình 3.12: Khối nguồn

Nguồn ở đây đã là nguồn điện áp thấp, đầu vào sau bộ biến áp có giá
trị từ 8-16v, qua nắn dòng bởi diode mắc hình cầu.
Nếu cần nguồn có mức điện áp khác, ta có thể dùng LM78xx (giá trị
điện áp ra sau ổn áp, ví dụ: 05, 08, 12,..) với điện áp dương và LM79xx
với điện áp âm, trong đó có thể dùng nguồn máy tính.
3.2

Thiết kế hướng đối tượng phần mềm hệ thống [2]

Phần mềm là một sản phẩm được phát triển hay được kỹ nghệ hoá và
được chế tạo tương tự như các sản phẩm công nghiệp (phần cứng) khác.
Phát triển phần mềm và chế tạo phần cứng cũng có những điểm tương
đồng: đều là sản phẩm và chất lượng của chúng phụ thuộc nhiều vào

Luận văn: Thiết kế hệ thống cân động.

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

Nguyễn Tuấn Anh



• Các giai đoạn chế tạo ra phần cứng có thể xác định và có khả năng
điều chỉnh được chất lượng của sản phẩm còn đối với phần mềm thì
không dễ gì thay đổi được,
• Mối quan hệ giữa người sử dụng và công việc cần thực hiện với từng
loại sản phẩm là hoàn toàn khác nhau,
• Cách tiếp cận để xây dựng, chế tạo các sản phẩm cũng khác nhau.
Khả năng nhân bản của chúng là hoàn toàn trái ngược nhau. Việc
bảo vệ bản quyền sản phẩm phần mềm là cực kỳ khó khăn vì khả
năng sao chép thành nhiều bản giống nhau là có thể thực hiện được
(tương đối dễ).
• Phần mềm khác hẳn với phần cứng là không bị hư hỏng theo thời
gian, không bị tác động của môi trường (thời tiết, nhiệt độ, điều
kiện, v.v. . . ). Do vậy, đối với phần cứng việc bảo hành là đảm bảo
nó hoạt động được như mới còn đối với phần mềm thì lại khác hẳn.
Luận văn: Thiết kế hệ thống cân động.

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

Nguyễn Tuấn Anh





3.2 Thiết kế hướng đối tượng phần mềm hệ thống [2]

32

Bảo hành, bảo trì phần mềm là bảo đảm cho hệ thống hoạt động
đúng với thiết kế và đáp ứng yêu cầu sử dụng của khách hàng. Chính
vì thế mà công bảo hành phần mềm là rất tốn kém, do đó đòi hỏi
phải tập trung nhiều hơn vào khâu phân tích, thiết kế hệ thống.
Mọi hệ thống phần mềm cũng như các hệ thống khác không thể tồn tại
độc lập mà nó luôn hoạt động và tồn tại trong một môi trường, tương
tác với thế giới xung quanh. Như vậy, một hệ thống có thể xem như là
hệ thống con của một hệ thống khác và bản thân nó lại có thể chứa một
số các hệ thống con khác nhỏ hơn.
Công nghệ phần cứng phát triển nhanh cả về chất lượng và tốc độ xử
lý với giá thành ngày một hạ trong khi giá phần mềm lại rất cao. Để
phát triển được những hệ thống phần mềm đáp ứng được những yêu cầu
trên thì đòi hỏi phải áp dụng lý thuyết, kỹ nghệ, phương pháp và công
cụ mới để tạo ra một qui trình phát triển phần mềm thống nhất. Như
vậy, công nghệ phần mềm (CNPM) là đề cập đến các lý thuyết, phương
pháp luận và các công cụ cần thiết để phát triển phần mềm. Mục đích
của CNPM là làm ra những phần mềm chất lượng cao, tin cậy với một
hạn chế về nguồn lực, theo đúng một lịch trình đặt trước, phù hợp với
ngân sách dự kiến và đáp ứng các yêu cầu người dùng. Hơn nữa, CNPM
không chỉ là phải làm ra hệ thống phần mềm mà phải làm được các hồ
sơ, tài liệu như các tài liệu thiết kế, tài liệu hướng dẫn sử dụng, v.v. làm
cơ sở để bảo trì và mở rộng, phát triển hệ thống sau này.
Tóm lại, để xây dựng được những hệ thống phần mềm đáp ứng những
yêu cầu trên, chúng ta cần phải:
• Có một qui trình phát triển phần mềm thống nhất gồm các bước

thực hiện rõ ràng, mà sau mỗi bước đều phải có các sản phẩm cụ
thể;
• Có các phương pháp và kỹ nghệ phù hợp với từng pha thực hiện
phát triển phần mềm;
• Có công cụ để làm ra sản phẩm phần mềm theo yêu cầu.
3.2.1

3.2 Thiết kế hướng đối tượng phần mềm hệ thống [2]

3.2.2

33

Phân tích hệ thống

Từ yêu cầu của công ty về các thông tin cần có của mỗi chuyến hàng,
và từ các mẫu biểu thu được trong quá trình khảo sát, ta đưa ra được
các thông tin cần thiết sau:
STT
1
2
3
4
5
6
7
8
9
10
11

12
13
14
15
16
3.2.3

Tên trường
Số hiệu đoàn tàu
Lần cân thứ
mã toa
Tốc độ
Loại than
Khối lượng tổng
Khối lượng bì
Khối lượng than
Vận tốc Max
Vận tốc min
Người vận hành
Địa điểm giao nhận
Đơn vị giao hàng
Đơn vị nhận hàng
Đơn vị giám định
Thời gian

Ghi chú

km/h
kg
kg

kg

Thời gian tại thời điểm cân

Thiết kế hệ thống

Thiết kế hệ thống được thực hiện lần lượt theo các bước sau:
• Mô tả bài toán
• Biểu đồ ca sử dụng
• Biểu đồ lớp
• Biểu đồ trình tự
• Biểu đồ cộng tác

Khảo sát, xác định các yêu cầu

• Thiết kế lớp chi tiết
Công tác khảo sát và xác định yêu cầu đã nêu rất kỹ trong chương 1. Ở
đây chỉ chú trọng đến thiết kế phần mềm.

• Biểu đồ thành phần
• Biểu đồ triển khai

Luận văn: Thiết kế hệ thống cân động.

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

Nguyễn Tuấn Anh




Luận văn: Thiết kế hệ thống cân động.

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

Nguyễn Tuấn Anh




3.2 Thiết kế hướng đối tượng phần mềm hệ thống [2]

34

Dưới đây, chúng ta phát triển hệ thống từng bước:
1. Mô tả bài toán:
Hệ thống cân động gồm có 4 bộ phận chính: Bộ phận bán hàng, bộ
phận mua hàng, bộ phận cân, giám định và hệ thống phần cứng +
phần mềm đáp ứng các yêu cầu cân động.
Bộ phận bán hàng có nhiệm vụ cung cấp than theo yêu cầu của bên
mua hàng, khi tàu cập trạm, cần có một tổ chịu trách nhiệm xúc
than đầy các toa. Xuất hoá đơn bán hàng cùng phiếu cân có xác
nhận của tổ giám định hai bên.
Bộ phận mua hàng có nhiệm vụ thanh toán theo hoá đơn đã được
thoả thuận trước. Bốc dỡ than xuống khỏi tàu. Cử cán bộ giám định
để giám định cùng với bên bán than tại cị trí cân.
Hệ thống của chúng ta gồm cả phần cứng và phần mềm. Nên việc
xây dựng hệ thống phần mềm cần gắn liền với hệ thống phần cứng.
Người vận hành có thể phải hiểu được cách vận hành của cả phần
cứng lẫn phần mềm.
Bộ phận dám định chính là cán bộ của phòng KCS của cả hai công

ty. Bộ phận này có nhiệm vụ là xác định những thông tin ghi trên
phiếu cân là chính xác.
Hệ thống phần cứng và phần mềm có nhiệm vụ: khi tàu đến bàn
cân, cần xác định được tàu đi theo hướng nào (Hướng từ ga đi có
hàng hay hướng về ga không hàng), xác định được đầu tàu, xác định
được khối lượng của từng toa, xác định được mã toa, xác định được
toa rỗng,....
Khi tàu đến bàn cân, Loadcell dưới gầm của ray sẽ chịu trách nhiệm
chuyển khối lượng của các toa tàu thành tín hiệu điện vi sai trong
thời gian thực, và tỷ lệ với khối lượng của toa.

3.2 Thiết kế hướng đối tượng phần mềm hệ thống [2]

35

đến bộ nhớ chung. Trong bộ nhớ chung, có nhiều tiến trình chia sẻ
thông tin này, như: tính khối lượng, hiển thị lên giao diện,...Bước
cuối cùng là lưu dữ liệu vào CSDL.
Khi người vận hành yêu cầu báo cáo, hệ thống sẽ lấy dữ liệu tại
CSDL theo truy vấn của người vận hành, điền vào phiếu cân và in
ra theo yêu cầu
Nếu cần báo cáo theo tháng, theo quý, theo năm, hệ thống sẽ dựa
theo truy vấn và tính toán rồi đưa ra kết quả tổng kết.
2. Biểu đồ ca sử dụng:
• Các tác nhân: Bằng những khảo sát hệ thống theo thực tế,
quá trình xây dựng và thiết kế tổng thể hệ thống, ta xác định
được các tác nhân như sau:
– Bên bán hàng: Có trách nhiệm cung cấp hàng theo nhu cầu
bên mua .
– Bên mua hàng: Nhận hàng từ bên bán, trả tiền theo hợp đồng.

– Hệ thống cân: Xác định chính xác lượng hàng hoá vận chuyển
qua.
– Bên giám định: Xác định, thống nhất thông tin giữa hệ thống,
bên bán và bên mua.
• Các ca sử dụng : chúng ta xác định ca sử dụng (những công
việc) hệ thống cần phải thực hiện như sau:
– Tàu chạy vào bàn cân: lái tàu cần cho tàu chạy đúng vận tốc
quy định (từ 3km/h đến 15km/h).
– In phiếu cân: in phiếu cân hiện tại của chuyến tàu vừa đi qua.
– Vấn tin: truy vấn thông tin theo ngày, tuần, quý, năm để phục
vụ thống kê.
• Biểu đồ ca sử dụng: Qua cách phân tích như trên, ta có biểu
đồ ca sử dụng như hình 3.14.
3. Biểu đồ lớp:

Tín hiệu điện vi sai được chuyển đến bộ khuếch đại tín hiệu theo
chuẩn đầu vào của hệ thống chuyển đổi ADC, lọc nhiễu rồi đưa
thẳng đến bộ chuyển đổi ADC.
Bộ chuyển đổi ADC có chức năng chuyển tín hiệu điện tương tự
thành tín hiệu số, đóng gói rồi truyền về máy tính.
Máy tính nhận dữ liệu, giải mã rồi đưa vào modul lọc nhiễu, rồi đưa
Luận văn: Thiết kế hệ thống cân động.

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

Nguyễn Tuấn Anh



• Xác định các lớp đối tượng:

Trên cơ sở phân tích các hoạt động của hệ thống cân động, chúng
ta dễ nhận thấy có những lớp đối tượng sau:
– Cảm biến: chuyển đổi khối lượng thành tín hiệu số tỷ lệ thuận.
Khi tàu đến, cần chuyển đổi tín hiệu trọng lượng thành tín
hiệu số và truyền lên máy tính. Trong khâu này cần thi hành
Luận văn: Thiết kế hệ thống cân động.

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

Nguyễn Tuấn Anh




3.2 Thiết kế hướng đối tượng phần mềm hệ thống [2]

In phiếu cân

Nhân
viên
vận
hành

Thống kê
tháng

36

3.2 Thiết kế hướng đối tượng phần mềm hệ thống [2]


37

Tính khối
lượng

Chuyển ñổi

Tàu và
nhân
viên
lái tàu

Hình 3.14: Biểu đồ ca sử dụng

các nhiệm vụ: nếu tàu đến (trọng lượng vượt ngưỡng) thì bắt
đầu đọc liên tục tín hiệu từ đầu cân, chuyển đổi thành tín
hiệu số, đóng gói thành dạng tin ngắn nhất, an toàn nhất,
khả năng phát hiện lỗi cao và nhanh nhất, rồi truyền lên máy
tính.
– Truyền thông: trên phần mềm, module này có nhiệm vụ nhận
tín hiệu được truyền lên từ phần nhúng, giải mã tín hiệu, kiểm
tra lỗi, lọc nhiễu và đưa tín hiệu vào bộ nhớ chung.
– Thuật toán: module này áp dụng một thuật toán tối ưu cho
bài toán này, tính toán khối lượng từ thông tin nhận được tại
bộ nhớ chung, xác định có bao nhiêu toa, mỗi toa bao nhiêu
kg, tính vận tốc của tàu, hướng tàu. Trả lại kết quả cho bộ
nhớ chung.
– Trung tâm: tính toán khối lượng tổng, xác định vận tốc max,
min, toa rỗng, đầu tàu; lưu thông tin vào CSDL
– Màn hình: lấy thông tin từ bộ nhớ chung để hiển thị lên giao

diện.
– Báo cáo: căn cứ vào câu truy vấn, theo thông tin từ bộ nhớ
chung (nếu truy vấn dữ liệu hiện tại) và CSDL, module này
sẽ tìm kiếm và điền đầy đủ thông tin cho báo cáo.
• Biểu đồ lớp và mối quan hệ giữa các lớp: được chỉ rõ như
hình 3.15.
4. Biểu đồ trình tự: Để hiểu rõ hoạt động của hệ thống, với mỗi ca sử
dụng cần phải xây dựng biểu đồ trình tự mô tả việc trao đổi thông
điệp giữa các đối tượng theo trục thời gian.
• Cập nhật thông tin: Bình thường, khi không có tàu, hệ thống
làm việc dạng dò thông tin. Mỗi khi tàu đến gần, mức tín hiệu
Luận văn: Thiết kế hệ thống cân động.

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

Nguyễn Tuấn Anh



Hình 3.15: Biểu đồ lớp

vượt ngưỡng, hệ thống bắt đầu làm việc hết công suất. Liên tục
chuyển đổi ADC (phần chuyển đổi tín hiệu tương tự vi sai sang
điện áp tương tự theo chuẩn của bộ ADC + lọc nhiễu đã có phần
cứng đảm nhiệm), đóng gói và truyền lên máy tính. Máy tính liên
tục cập nhật thông tin mới vào bộ nhớ chung; được diễn tả theo
hình 3.16.

Hình 3.16: Biểu đồ trình tự: "Cập nhật thông tin"


• Khi in thông tin, có 2 lý do để in là in phiếu cân của chuyến gần
nhất và in báo cáo, được mô tả như hình 3.17.
Luận văn: Thiết kế hệ thống cân động.

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

Nguyễn Tuấn Anh




3.2 Thiết kế hướng đối tượng phần mềm hệ thống [2]

38

3.2 Thiết kế hướng đối tượng phần mềm hệ thống [2]

39

6. Thiết kế lớp chi tiết:
Nhiệm vụ tiếp theo là xác định các thuộc tính và các thao tác của
các lớp đối tượng trong biểu đồ 3.15.
• Các thuộc tính được xác định thông qua việc phân tích các chức
năng và nhiệm vụ mà mỗi đối tượng phải thực hiện.
• Các thao tác: dựa chủ yêu vào các biểu đồ trình tự, biểu đồ cộng
tác và các mẫu gán trách nhiệm để xác định.
Từ hai cách thực hiện như trên chúng ta có biểu đồ lớp chi tiết như
hình 3.19.

Hình 3.17: Biểu đồ trình tự: "In phiếu cân"


5. Biểu đồ cộng tác:
Tương tự như biểu đồ trình tự, biểu đồ cộng tác tập trung mô tả
sự trao đổi tương tác giữa các đối tượng theo ngữ cảnh công việc,
không quan tâm tới yêu tố thời gian.
Biểu đồ cộng tác cho hệ thống được mô tả như hình 3.18

Hình 3.19: Biểu đồ lớp chi tiết
Hình 3.18: Biểu đồ cộng tác

Luận văn: Thiết kế hệ thống cân động.

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

Nguyễn Tuấn Anh



Luận văn: Thiết kế hệ thống cân động.

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

Nguyễn Tuấn Anh




3.2 Thiết kế hướng đối tượng phần mềm hệ thống [2]

3.2.4


40

Lập trình và kiểm tra hệ thống

Qua quá trình phân tích bài toán trên đây, ta có thể xây dựng được một
hệ thống hoàn hảo, gồm cả phần cứng, phần mềm nhúng và phần mềm.
Để xây dựng phần cứng, ta phải nắm rõ thêm được một số phần mềm
CAD (Computer-Aided Design) như Altium Designer, OrCAD,...[9] nhằm
xây dựng mạch in cho hệ thống. Sau khi thiết kế mạch in, sản phẩm của
chúng ta có thể như hình 3.20

CB090504

Hình 3.20: Mạch in thành phẩm

Phần mềm nhúng được lập trình trên nền vi điều khiển họ PIC, đoạn
mã nguồn có thể như sau:
Mã nguồn của đoạn chương trình đọc ADC:
unsigned int ReadADC(unsigned char ch){
unsigned int value=0;
setup_adc( ADC_CLOCK_INTERNAL );
setup_adc_ports( ALL_ANALOG );
set_adc_channel(ch);
value = read_adc();
return value;
}
Mã nguồn đoạn chương trình thiết lập và thử nghiệm truyền thông:
Luận văn: Thiết kế hệ thống cân động.


Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

Nguyễn Tuấn Anh



3.2 Thiết kế hướng đối tượng phần mềm hệ thống [2]

41

unsigned short m, k;
unsigned short userRD_buffer[64];
unsigned short userWR_buffer[64];
void interrupt() {
asm CALL _Hid_InterruptProc
asm nop
}
void Init_Main() {
// Disable all interrupts
// Disable GIE, PEIE, TMR0IE, INT0IE,RBIE
INTCON = 0;
INTCON2 = 0xF5;
INTCON3 = 0xC0;
// Disable Priority Levels on interrupts
RCON.IPEN = 0;
PIE1 = 0;
PIE2 = 0;
PIR1 = 0;
PIR2 = 0;
// Configure all ports with analog function as digital

ADCON1 |= 0x0F;
// Ports Configuration
TRISA = 0;
TRISB = 0;
TRISC = 0xFF;
TRISD = 0xFF;
TRISE = 0x07;
LATA = 0;
LATB = 0;
LATC = 0;
LATD = 0;
LATE = 0;
// Clear user RAM
// Banks [00 .. 07] ( 8 x 256 = 2048 Bytes )
asm {
LFSR
FSR0, 0x000
MOVLW
0x08
CLRF
POSTINC0, 0
CPFSEQ
FSR0H, 0
BRA
$ - 2
}
// Timer 0
T0CON = 0x07;
TMR0H = (65536-156) >> 8;
TMR0L = (65536-156) & 0xFF;

INTCON.T0IE = 1;
// Enable T0IE
T0CON.TMR0ON = 1;
}
/** Main Program Routine **/
void main() {
Init_Main();
Hid_Enable(&userRD_buffer, &userWR_buffer);
do {
for (k = 0; k < 255; k++) {
// Prepare send buffer
Luận văn: Thiết kế hệ thống cân động.

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

Nguyễn Tuấn Anh




3.2 Thiết kế hướng đối tượng phần mềm hệ thống [2]

42

userWR_buffer[0] = k;
// Send the number via USB
Hid_Write(&userWR_buffer, 1);

}


}
catch { }
}

Mã nguồn đoạn chương trình hiển thị LED 7 thanh:
// Display Buffer array to LED
void LED7Display(){
const int8 L7[12]={
0x88,0xEB,0x4C,0x49,0x2B,0x19,0x18,0xCB,0x8,0x9,0x7F,0xFF
};
#define black 11
#define negative 10
#define clock {output_bit(SH_CP,0);output_bit(SH_CP,1);}
#define out1bit output_bit(DI,buffer[k]&1);
#define ST_CP PIN_B2
#define SH_CP PIN_B1
#define DI PIN_B0
int8 k,k1,so0;
buffer[7]=L7[(W /1000)%10];
buffer[6]=L7[(W / 100)%10];
buffer[5]=L7[(W / 10)%10];
buffer[4]=L7[(W
)%10];
buffer[3]=L7[(SP/1000)%10];
buffer[2]=L7[(SP/ 100)%10];
buffer[1]=L7[(SP/ 10)%10];
buffer[0]=L7[(SP
)%10];
so0=1;
if((buffer[7]==L7[0])&&(so0)){buffer[7]=L7[black];}else

if((buffer[6]==L7[0])&&(so0)){buffer[6]=L7[black];}else
if((buffer[5]==L7[0])&&(so0)){buffer[5]=L7[black];}
so0=1;
if((buffer[3]==L7[0])&&(so0)){buffer[3]=L7[black];}else
if((buffer[2]==L7[0])&&(so0)){buffer[2]=L7[black];}else
if((buffer[1]==L7[0])&&(so0)){buffer[1]=L7[black];}

Đoạn chương trình xác định khối lượng toa tàu và lưu dữ liệu lên file:
private void timer1_Tick(object sender, EventArgs e)
{
com_data_receiv.Visible = blink;
if (mathe != "") { mathe_lst.Items.Insert(0,mathe.Substring
(0,mathe.Length -1)); mathe = ""; }
if (cuoi != dau)
{
while (cuoi != dau)
{
if (DAT[cuoi].Length >7)
{
A_old = A; B_old = B;
Conv(DAT[cuoi], out A, out B);
A += Convert.ToInt32(Zero1_txt.Text);
B += Convert.ToInt32(Zero2_txt.Text);
Can1_disp.Text = A.ToString();
Can2_disp.Text = B.ToString();
if (A > 30000) A = A_old;
if (B > 30000) B = B_old;
//------------------------------------------------------switch (startByte)
{
case 1: // data


so0=0;
so0=0;

so0=0;
so0=0;

TrongTruc_old1 = TrongTruc1;
TrongTruc_old2 = TrongTruc2;
vuotnguong_buf1[vuotnguong_buf1_cnt] =
A > Convert.ToUInt16(NguongKohang_txt.Text);
if (Huongtau_lbl.Text.Equals("Từ ga đi"))
vuotnguong_buf1[vuotnguong_buf1_cnt] =
A > Convert.ToUInt16(NguongCoHang_txt.Text);

for(k=0;k<8;k++){
for(k1=0;k1<8;k1++){
out1bit clock buffer[k]>>=1;
}}
output_bit(ST_CP,0);
output_bit(ST_CP,1);
}

vuotnguong_buf2[vuotnguong_buf2_cnt] =
B > Convert.ToUInt16(NguongKohang_txt.Text);
if (Huongtau_lbl.Text.Equals("Từ ga đi"))
vuotnguong_buf2[vuotnguong_buf2_cnt] =
B > Convert.ToUInt16(NguongCoHang_txt.Text);

Đoạn mã nguồn nhận dữ liệu trên PC:

private void COM1_DataReceived(object sender,
System.IO.Ports.SerialDataReceivedEventArgs e)
{
try

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

43

{
startByte = COM1.ReadByte();
str = COM1.ReadTo("\n").ToString();
//startByte = Convert.ToSByte(str.Substring(0, 1));
DAT[dau] = str;
if (++dau > Nmax) dau = 0;
blink = !blink;

}
} while (1);
Hid_Disable();

Luận văn: Thiết kế hệ thống cân động.

3.2 Thiết kế hướng đối tượng phần mềm hệ thống [2]

VuotNguong1 = true;
for (byte k = 0; k < 5; k++)
Nguyễn Tuấn Anh




Luận văn: Thiết kế hệ thống cân động.

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

Nguyễn Tuấn Anh




3.2 Thiết kế hướng đối tượng phần mềm hệ thống [2]

44

if (vuotnguong_buf1[k] == false)
{ VuotNguong1 = false; break; }
vuotnguong_buf1_cnt++;
if (vuotnguong_buf1_cnt > 4) vuotnguong_buf1_cnt = 0;
VuotNguong2 = true;
for (byte k = 0; k < 5; k++)
if (vuotnguong_buf2[k] == false)
{ VuotNguong2 = false; break; }
vuotnguong_buf2_cnt++;
if (vuotnguong_buf2_cnt > 4)
vuotnguong_buf2_cnt = 0;
if (VuotNguong1)
{
DAT_ILDE_cnt1 = 10; dat_cnt =
Convert.ToInt64(Tauquahan_txt.Text);
if (Huongtau_lbl.Text == "")

{
Huongtau_lbl.Text = "Từ ga đi";
huongtau_muiten.Text = "-->>";
DB_di.Rows.Clear();
}
}
if (VuotNguong2)
{
DAT_ILDE_cnt2 = 10; dat_cnt =
Convert.ToInt64(Tauquahan_txt.Text);
if (Huongtau_lbl.Text == "")
{
Huongtau_lbl.Text = "Đi về ga";
huongtau_muiten.Text = "<<--";
DB_ve.Rows.Clear();

3.2 Thiết kế hướng đối tượng phần mềm hệ thống [2]

45

{
OleDbConnection cnn = new OleDbConnection(strConn);
cnn.Open();
OleDbCommand cmd = new OleDbCommand(strSQL, cnn);
TAfunctions ta = new TAfunctions();
if(Cumcan1_opt.Checked )
Caculate(0);// tính cụm 0=A, 1=B
else
Caculate(1);// tính cụm 0=A, 1=B
// lưu vào CSDL:

//Tinh_btn_Click(sender,e);
//FileStream fs = new FileStream();
MaxValue_cnt = MaxValue("‘Lần cân thứ‘",
"TrainTime");
string filename= "DAT" +
DateTime.Today.Year.ToString() +
DateTime.Today.Month.ToString() +
DateTime.Today.Day.ToString() +
DateTime.Now.Hour.ToString() +
DateTime.Now.Minute.ToString();
string SQL = "Create table " + filename +
" (Cum1 Integer ,Cum2 Integer , Thoigian datetime)";
cmd.CommandText = SQL;
cmd.ExecuteNonQuery();
for (int r = 0; r < DBtemp.RowCount; r++)
{
SQL = "INSERT INTO " + filename +
" (Cum1,Cum2,Thoigian)
VALUES (" +
(DBtemp.Rows[r].Cells[0].Value) + "," +
(DBtemp.Rows[r].Cells[1].Value) + ",’" +
DBtemp.Rows[r].Cells[2].Value + "’)";
cmd.CommandText = SQL;
cmd.ExecuteNonQuery();

}
}
if (DAT_ILDE_cnt1 > 0) DAT_ILDE_cnt1--;
if (DAT_ILDE_cnt2 > 0) DAT_ILDE_cnt2--;
//Tàu ngoài cân, xóa hướng tàu,

//xóa bộ đệm của mỗi toa:
if (dat_cnt > 0)
{
dat_cnt--;
DBtemp.Rows.Add();
DBtemp.Rows[DBtemp.RowCount - 1].Cells[0].Value = A;
DBtemp.Rows[DBtemp.RowCount - 1].Cells[1].Value = B;
DBtemp.Rows[DBtemp.RowCount - 1].Cells[2].Value =
DateTime.Now ;
Disp1[Disp1_cuoi++] = A;
if (Disp1_cuoi > Disp_max) Disp1_cuoi = 0;
Disp2[Disp2_cuoi++] = B;
if (Disp2_cuoi > Disp_max) Disp2_cuoi = 0;
TongSomau.Text = DBtemp.RowCount.ToString ();
}
if (dat_cnt == 0) Huongtau_lbl.Text = "";
// Ngoài đoàn tàu:
if (dat_cnt == 1)

}
for (int r = 0; r < DB_di.RowCount-1; r++)
{
try
{
SQL = "INSERT INTO TrainData_tien (STT,‘Lần cân thứ‘,
‘Mã toa‘,‘Tốc độ (Km/h)‘,‘KL Tổng (Kg)‘)
VALUES (" +
DB_di.Rows[r].Cells["STT"].Value + "," +
MaxValue_cnt + ",’" +
DB_di.Rows[r].Cells["Mã toa"].Value + "’," +

DB_di.Rows[r].Cells["Tốc độ (Km/h)"].Value + "," +
DB_di.Rows[r].Cells["KL Tổng (Kg)"].Value + ")";
cmd.CommandText = SQL;
cmd.ExecuteNonQuery();
}
catch
{
}
}

Luận văn: Thiết kế hệ thống cân động.

Luận văn: Thiết kế hệ thống cân động.

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

Nguyễn Tuấn Anh



Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

Nguyễn Tuấn Anh




3.2 Thiết kế hướng đối tượng phần mềm hệ thống [2]

46


for (int r = 0; r < DB_ve.RowCount-1; r++)
{
try
{
SQL = "INSERT INTO TrainData_lui (STT,‘Lần cân thứ‘,
‘Mã toa‘,‘Tốc độ (Km/h)‘,‘KL Tổng (Kg)‘)
VALUES (" +
DB_ve.Rows[r].Cells["STT"].Value + "," +
MaxValue_cnt + ",’" +
DB_ve.Rows[r].Cells["Mã toa"].Value + "’," +
DB_ve.Rows[r].Cells["Tốc độ (Km/h)"].Value + "," +
DB_ve.Rows[r].Cells["KL Tổng (Kg)"].Value + ")";
cmd.CommandText = SQL;
cmd.ExecuteNonQuery();
}
catch { }
}
SQL = "INSERT INTO TrainTime (" +
"‘Lần cân thứ‘,‘Hướng tàu‘," +
"‘Thời gian‘,‘Số hiệu đoàn tàu‘," +
"‘KL Tổng(Kg)‘,‘Tên file dữ liệu gốc‘)VALUES (" +
MaxValue_cnt + ",’" +
Huongtau_lbl.Text + "’,’" +
System.DateTime.Now + "’,’" +
Sohieudoantau_txt.Text + "’,’" +
KLTong_txt.Text + "’,’" +
filename + "’)";
cmd.CommandText = SQL;
cmd.ExecuteNonQuery();


break;
}
}
if (++cuoi > Nmax) cuoi = 0;
}
}
}

3.2.5

Vận hành và bảo trì hệ thống

Hệ thống bao gồm cả phần cứng và phần mềm, do vậy, khi thiết kế cần
phải xác định rõ thời gian hệ thống hoạ động ổn định nhất để có phương
án bảo hành bải trì.
Trong sau khi thiết kế, hệ thống đã được kiểm thử tại công ty than
Vàng danh Uông bí, Quảng ninh.
Các mẫu thử khi có tàu chạy qua khá ổn, gần như không có nhiễu, dữ
liệu hoàn toàn như mong đợi. Nhìn các hình của mẫu (hình 4.4, 4.5, hình
4.6, hình 4.8) chúng ta có thể thấy rõ từng mẫu tín hiệu được gửi về.
Tổng kết chương

Chương này thiết kế chi tiết cả phần cứng và phần mềm.

}
//---------------------------------------------Tauqua_lbl.Text = dat_cnt.ToString();
break;
case 2:
Tocdo_lbl.Text =

Convert.ToString(Convert.ToSingle(A)/1000);

Về phần cứng, thiết kế được chi tiết các thành phần của từng module,
các tín hiệu đầu vào, đầu ra theo đúng như yêu cầu trong phần thiết kế
tổng thể, đảm bảo các module có thể hoạt động tốt trong phạm vi thiết
kế và có thể ghép nối giao tiếp với nhau an toàn.
Về phần mềm nhúng, đưa ra được các module dùng để kiểm tra sự
hoạt động độc lập từng module và module phần mềm dùng trong quá
trình vận hành hệ thống thực tế.

if (B == 11)
{
Huongtau_lbl.Text = "Từ ga đi";
huongtau_muiten.Text = "==>>";
}
if (B == 10)
{
Huongtau_lbl.Text = "Đi về ga";
huongtau_muiten.Text = "<<==";
}
break;
case 3: // Thông báo: phát hiện thấy đầu tàu=> hủy

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

47

// label19.Text = "Đầu tàu=11";
break;
case 4:


3.3

cnn.Close();
VuotNguong1 = false;
VuotNguong2 = false;

Luận văn: Thiết kế hệ thống cân động.

3.3 Tổng kết chương

Về phần mềm, đã thiết kế đạt yêu cầu, phân tích phần mềm hướng
đối tượng, phân tích từng quá trình, để lập trình viên dễ dàng hình dung
được sự vận hành của toàn bộ hệ thống, quá trình gia lệnh điều khiển,
cũng như luồng dữ liệu.

Nguyễn Tuấn Anh



Luận văn: Thiết kế hệ thống cân động.

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

Nguyễn Tuấn Anh





×