Tài liệu Luận văn 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: ĐẠI HỌC THÁI NGUYÊN
KHOA CÔNG NGHỆ THÔNG TIN
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
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
Thái nguyên, tháng 8 năm 2009
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
Mục lục
1 Khảo sát hiện trạng hệ thống cân động vật thể 1
1.1 Thực trạng tập đoàn than - khoáng sản Việt Nam-TKV 1
1.2 Mô tả nghiệp vụ của hệ thống hiện hành . . . . . . . . . 4
1.3 Mô tả, xác định mục tiêu và yêu cầu của hệ thống mới . 4
1.4 Tổng kết chương . . . . . . . . . . . . . . . . . . . . . . 5
2 Thiết kế tổng thể hệ thống cân động vật thể 6
2.1 Thiết kế phần cứng . . . . . . . . . . . . . . . . . . . . . 6
2.1.1 Các phương án thiết kế phần cứng hệ thống . . . 7
2.1.2 Sơ đồ tổng thể . . . . . . . . . . . . . . . . . . . 10
2.1.3 Ý nghĩa và yêu cầu kỹ thuật của từng khối . . . . 10
2.2 Thiết kế phần mềm . . . . ....
81 trang |
Chia sẻ: hunglv | Lượt xem: 1352 | Lượt tải: 0
Bạn đang xem trước 20 trang mẫu tài liệu Luận văn 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, để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
ĐẠI HỌC THÁI NGUYÊN
KHOA CÔNG NGHỆ THÔNG TIN
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
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
Thái nguyên, tháng 8 năm 2009
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
Mục lục
1 Khảo sát hiện trạng hệ thống cân động vật thể 1
1.1 Thực trạng tập đoàn than - khoáng sản Việt Nam-TKV 1
1.2 Mô tả nghiệp vụ của hệ thống hiện hành . . . . . . . . . 4
1.3 Mô tả, xác định mục tiêu và yêu cầu của hệ thống mới . 4
1.4 Tổng kết chương . . . . . . . . . . . . . . . . . . . . . . 5
2 Thiết kế tổng thể hệ thống cân động vật thể 6
2.1 Thiết kế phần cứng . . . . . . . . . . . . . . . . . . . . . 6
2.1.1 Các phương án thiết kế phần cứng hệ thống . . . 7
2.1.2 Sơ đồ tổng thể . . . . . . . . . . . . . . . . . . . 10
2.1.3 Ý nghĩa và yêu cầu kỹ thuật của từng khối . . . . 10
2.2 Thiết kế phần mềm . . . . . . . . . . . . . . . . . . . . . 12
2.2.1 Xác định các yêu cầu và phân tích hệ thống . . . 13
2.2.2 Phân tích hệ thống hướng đối tượng . . . . . . . 14
2.2.3 Thiết kế hệ thống hướng đối tượng . . . . . . . . 15
2.2.4 Lập trình hướng đối tượng . . . . . . . . . . . . . 16
2.3 Tổng kết chương . . . . . . . . . . . . . . . . . . . . . . 17
3 Thiết kế chi tiết hệ thống cân động vật thể 18
3.1 Thiết kế phần cứng hệ thống . . . . . . . . . . . . . . . . 18
3.1.1 Khối cảm biến . . . . . . . . . . . . . . . . . . . . 21
3.1.2 Khối chuyển đổi ADC . . . . . . . . . . . . . . . 23
3.1.3 Khối truyền thông . . . . . . . . . . . . . . . . . 27
3.1.4 Khối nguồn . . . . . . . . . . . . . . . . . . . . . 30
3.2 Thiết kế hướng đối tượng phần mềm hệ thống [2] . . . . 30
Luận văn: Thiết kế hệ thống cân động. Nguyễn Tuấn Anh
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
MỤC LỤC ii
3.2.1 Khảo sát, xác định các yêu cầu . . . . . . . . . . 32
3.2.2 Phân tích hệ thống . . . . . . . . . . . . . . . . . 33
3.2.3 Thiết kế hệ thống . . . . . . . . . . . . . . . . . . 33
3.2.4 Lập trình và kiểm tra hệ thống . . . . . . . . . . 40
3.2.5 Vận hành và bảo trì hệ thống . . . . . . . . . . . 47
3.3 Tổng kết chương . . . . . . . . . . . . . . . . . . . . . . 47
4 Xây dựng hệ thống cân động vật thể 48
4.1 Giới thiệu về ngôn ngữ lập trình cho phần cứng nhúng . 48
4.2 Giới thiệu về ngôn ngữ lập trình phần mềm: C# . . . . . 49
4.3 Các chức năng của chương trình . . . . . . . . . . . . . . 51
4.4 Màn hình giao diện chức năng . . . . . . . . . . . . . . . 51
4.5 Lập kế hoạch triển khai thực tế . . . . . . . . . . . . . . 55
4.6 Xác định rủi ro . . . . . . . . . . . . . . . . . . . . . . . 58
4.7 Đánh giá kết quả thử nghiệm . . . . . . . . . . . . . . . 59
A Vi điều khiển PIC 67
A.1 Từ Vi xử lý đến Vi điều khiển . . . . . . . . . . . . . . . 67
A.2 Vi điều khiển họ PIC . . . . . . . . . . . . . . . . . . . . 68
A.3 Lập trình cho PIC . . . . . . . . . . . . . . . . . . . . . 69
A.4 Một vài đặc tính của PIC . . . . . . . . . . . . . . . . . 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 . . . . . . . . . . . . . . . . . 71
B.2 Các ứng dụng phi tuyến . . . . . . . . . . . . . . . . . . 76
Luận văn: Thiết kế hệ thống cân động. Nguyễn Tuấn Anh
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
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. Nguyễn Tuấn Anh
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
1.1 Thực trạng tập đoàn than - khoáng sản Việt Nam-TKV 2
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. Nguyễn Tuấn Anh
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
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.
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. Nguyễn Tuấn Anh
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
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
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 Mô tả, xác định mục tiêu và yêu cầu của hệ thống mới
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.
Luận văn: Thiết kế hệ thống cân động. Nguyễn Tuấn Anh
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
1.4 Tổng kết chương 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.
• 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
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ì,...
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.
Luận văn: Thiết kế hệ thống cân động. Nguyễn Tuấn Anh
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
Chương 2
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 Thiết kế phần cứng
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. Nguyễn Tuấn Anh
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
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,...
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?
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.
Hiển thị
Điều khiển
trung tâmPhí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. Nguyễn Tuấn Anh
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
2.1 Thiết kế phần cứng 8
Phương án 1:
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:
• 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.
• Tốc độ chuyển đổi ADC tối đa của card là 200kbps (Kilobit Per
Second).
• 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.
Phương án 2:
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:
• Ổ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.
• 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.
• 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. Nguyễn Tuấn Anh
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
2.1 Thiết kế phần cứng 9
Phương án 3:
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.
• Độ 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
• Khả năng chống nhiễu
• Khả năng khuếch đại tín hiệu
• Tốc độ xử lý
• Giao diện ghép nối
• Phương thức truyền thông
Phương án lựa chọn: Phương án 3
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)4096(mức) = 29.296875(kg). Nếu tín hiệu đọc về không có
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.
Đố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.
Luận văn: Thiết kế hệ thống cân động. Nguyễn Tuấn Anh
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
2.1 Thiết kế phần cứng 10
2.1.2 Sơ đồ tổng thể
C
ả
m
b
iế
n
K
h
u
ế
ch
ñ
ạ
i
L
ọ
c
&
C
h
u
yể
n
ñ
ổ
i A
D
C
V
i ñ
iề
u
k
h
iể
n
n
h
ú
n
g
P
o
w
e
r
sy
st
e
m
E
m
b
e
d
d
e
d
M
ic
ro
co
n
tr
o
lle
r
C
o
m
m
u
n
ic
a
tio
n
in
te
rf
a
ce
T
ru
yề
n
t
h
ô
n
g
P
h
ầ
n
m
ề
m
q
u
ả
n
lý
N
g
u
ồ
n
n
u
ô
i
B
à
n
p
h
ím
H
iể
n
t
h
ị
1
2
3
4
5
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 Ý 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. Nguyễn Tuấn Anh
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
2.1 Thiết kế phần cứng 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.
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
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
600
= 200 = 2n
Luận văn: Thiết kế hệ thống cân động. Nguyễn Tuấn Anh
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
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)
Sai số =
120.000
4096
= 29.296875(kg)
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. Nguyễn Tuấn Anh
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
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. Nguyễn Tuấn Anh
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
2.2 Thiết kế phần mềm 14
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.
• 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.
• 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ó.
• 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.
• 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?
• Đã 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. Nguyễn Tuấn Anh
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
2.2 Thiết kế phần mềm 15
N
gư
ời
p
há
t
tr
iể
n
hệ
th
ốn
g
K
há
ch
h
àn
g,
C
ác
c
hu
yê
n
gi
a
hệ
th
ốn
g
N
gư
ời
s
ử
dụ
ng
(N
S
D
)
H
iể
u
rõ
cá
c
yê
u
cầ
u
N
ắm
b
ắt
cá
c
yê
u
cầ
u
T
ài
li
ệu
ñ
ặc
tả
y
êu
c
ầu
và
b
ướ
c
ti
ếp
th
eo
N
gh
iê
n
cứ
u
tín
h
kh
ả
th
i
T
hẩ
m
ñ
ịn
h
P
hâ
n
lo
ại
M
ô
tả
cá
c
yê
u
cầ
u
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. Nguyễn Tuấn Anh
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
2.2 Thiết kế phần mềm 16
• Làm như thế nào?
• 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?
• 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?
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 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. Nguyễn Tuấn Anh
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
2.3 Tổng kết chương 17
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ệ
Kiến trúc
tổng quát và
trừu tượng hoá
Mô hình khái niệm,
Đặc tả các yêu cầu
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
Kiến trúc chi tiết, cụ thể và
phụ thuộc vào vài đặt:
khung của hệ thống
Hình 2.4: Thiết kế logic và thiết kế chi tiết
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:
Lập trình
(Xây dựng các lớp)
Đặc tả thiết kế
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,...
Luận văn: Thiết kế hệ thống cân động. Nguyễn Tuấn Anh
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
Chương 3
Thiết kế chi tiết hệ thống cân động
vật thể
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ó.
3.1 Thiết kế phần cứng hệ thống
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.
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. Nguyễn Tuấn Anh
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
3.1 Thiết kế phần cứng hệ thống 19
Chiều dài bàn cân
Hình 3.1: Thiết kế cơ khí gá lắp Loadcell
L
Hình 3.2: Khoảng cách 2 bánh tàu trên 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,...
Luận văn: Thiết kế hệ thống cân động. Nguyễn Tuấn Anh
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
3.1 Thiết kế phần cứng hệ thống 20
11
22
33
44
D
D
C
C
B
B
A
A
*
C
ao
h
oc
K
6
D
H
K
TC
N
Th
ai
N
gu
ye
n
*
*
*
*
7/
28
/2
00
9
11
:4
3:
53
A
M
E:
\P
ro
du
ct
s\C
B0
90
50
4
D
es
ig
n\
Im
po
rte
d
CB
09
05
04
.P
RJ
PC
B\
K
D
&
H
T.
Sc
hD
oc
Ti
tle
Si
ze
:
N
um
be
r:
D
at
e:
Fi
le:
Re
vi
sio
n:
Sh
ee
t
of
Ti
m
e:
A4
D
es
ig
ne
d
by
T
uÊ
n
A
nh
. W
eb
si
te
: h
ttp
://
P
IC
A
T
.d
ie
uk
hi
en
.n
et
B7
B6 M
CL
R
B7
B6
D5
9 1
N4
14
8
1
LK6
CON1
ST
_C
P
SH
_C
P
D
O
V
CC
G
N
D
D
I
D
W
eig
ht
D
isp
lay
.S
ch
Do
c
S+ S-
To
P
IC
d
isp
la
y
To
M
ai
n
A
D
D
A
Sp
ee
d
in
Sp
ee
d
to
P
IC
-1
2V
G
N
D
+1
2V
+1
0V
B1 Kh
ue
ch
d
ai.
Sc
hD
oc
1
2
3
wr
5
5K
C6 22
4
R6
6
47
0
ST
_C
P
SH
_C
P
D
O
V
CC
G
N
D
D
I
D3
Sp
ee
d
dis
pla
y.
Sc
hD
oc
C1
2
10
4
R6
2
R
C1
1
10
4
R6
5
47
0
R6
0
R
R6
8
47
0
1 2 3 4 5 6 7 8 9 10 11
J6
5
HE
AD
ER
1
1
R2
1
4K
7
R2
3
24
0
1 2 3 4 5
J5
6
IC
SP
R6
4
10
k
1
LK1
CON1
D1
1234
J6
6
HE
AD
ER
4
1
LK3
CON1
R5
9
10
k
R6
3
R
M
CL
R
1
RA
0-
A
N
0
2
RA
1-
A
N
1
3
RA
2-
A
N
2
4
RA
3-
A
N
3
5
RA
4
6
RA
5-
A
N
4
7
V
SS
8
O
SC
1
9
O
SC
2
10
RC
0
11
RC
1
12
RC
2
13
V
U
SB
14
D
- -
R
C4
15
D
+
- R
C5
16
TX
-
RC
6
17
SD
O
-
RX
-
RC
7
18
V
SS
19
V
D
D
20
SD
A
/I
- I
N
T0
-
A
N
12
-
RB
0
21
SC
L/
K
-
IN
T1
-
A
N
10
-
RB
1
22
IN
T2
-
A
N
8
- R
B2
23
A
N
9
- R
B3
24
A
N
11
-
RB
4
25
PG
M
-
RB
5
26
PG
C
- R
B6
27
PG
D
-
RB
7
28
M
CU
P1
8f
25
50
R6
7
47
0
1
LK4
CON1
R6
1
R
C8 4.
7u
V
IN
3
V
O
U
T
2
ADJ
1
U2
LM
31
7
1
LK5
CON1
C7
10
0u
1
LK2
CON1
W
ei
gh
t d
isp
M
ai
n
A
D
D
A
W
ei
gh
t d
isp
D
I
SH
_C
P
ST
_C
P
D
O S
H
_C
P
ST
_C
P
D
O
M
ai
n
A
D
D
A
Sp
ee
d
fro
m
IN
V
Sp
ee
d
fro
m
IN
V
Sp
ee
d
2
PI
C
Sp
ee
d
2
PI
C
M
CL
R
M
CL
R
S+ S-
S+ S
-
D
I
SH
_C
P
ST
_C
P
Ch
e
do
Ta
ng
G
ia
m
X
on
g
Ch
e
do
Ta
ng
G
ia
m
X
on
g
+1
0V
+1
2V
+1
0V
V
CC
V
CC
+1
2V
-1
2V
-1
2V
+1
2V
V
CC
V
CC
V
CC
V
CC
V
CC
+1
0V
T
ªn
s
¶n
p
hÈ
m
: C
B
09
05
04
PI
22
p5
01
PI
22
p5
02
CO
22
p5
PI
22
p60
1
PI
22
p60
2
CO
22
p6
PIC601 PIC602
CO
C6
PIC701 PIC702
CO
C7
PIC801 PIC802
CO
C8
PIC1101 PIC1102
CO
C1
1
PIC1201 PIC1202
CO
C1
2
PID101 PID102
CO
D1
PI
D5
90
1
PI
D5
90
2
C
O
D
59
P
I
J
5
6
0
1
P
I
J
5
6
0
2
P
I
J
5
6
0
3
P
I
J
5
6
0
4
P
I
J
5
6
0
5
CO
J5
6
P
I
J
6
5
0
1
P
I
J
6
5
0
2
P
I
J
6
5
0
3
P
I
J
6
5
0
4
P
I
J
6
5
0
5
P
I
J
6
5
0
6
P
I
J
6
5
0
7
P
I
J
6
5
0
8
P
I
J
6
5
0
9
P
I
J
6
5
0
1
0
P
I
J
6
5
0
1
1
CO
J6
5
P
I
J
6
6
0
1
P
I
J
6
6
0
2
P
I
J
6
6
0
3
P
I
J
6
6
0
4C
OJ
66
PILK101
COLK1
PILK201
COLK2
PILK301
COLK3
PILK401
COLK4
PILK501
COLK5
PILK601
COLK6
P
I
M
C
U
0
1
P
I
M
C
U
0
2
P
I
M
C
U
0
3
P
I
M
C
U
0
4
P
I
M
C
U
0
5
P
I
M
C
U
0
6
P
I
M
C
U
0
7
P
I
M
C
U
0
8
P
I
M
C
U
0
9
P
I
M
C
U
01
0
P
I
M
C
U
0
1
1
P
I
M
C
U
0
1
2
P
I
M
C
U
0
1
3
P
I
M
C
U
0
1
4
P
I
M
C
U
0
1
5
P
I
M
C
U
0
1
6
P
I
M
C
U
0
1
7
P
I
M
C
U
0
1
8
P
I
M
C
U
0
1
9
P
I
M
C
U
0
2
0
P
I
M
C
U
02
1
P
I
M
C
U
0
2
2
P
I
M
C
U
02
3
P
I
M
C
U
02
4
P
I
M
C
U
02
5
P
I
M
C
U
0
2
6
P
I
M
C
U
0
2
7
P
I
M
C
U
02
8
C
O
M
C
U
PIR2101 PIR2102
CO
R2
1
PIR2301PIR2302
CO
R2
3
PIR5901 PIR5902
CO
R5
9
PIR6001 PIR6002
CO
R6
0
PIR6101 PIR6102
C
O
R
61
PIR6201 PIR6202
C
O
R
62
PIR6301 PIR6302
CO
R6
3
PI
R6
40
1
PI
R6
40
2
CO
R6
4
PI
R65
01
PI
R65
02
CO
R6
5
PI
R6
60
1
PI
R6
60
2
CO
R6
6
PI
R6
70
1
PI
R6
70
2
CO
R6
7
PI
R6
80
1
PI
R6
80
2
CO
R6
8
PIS
W34
01
PIS
W34
02
C
O
S
W
3
4
PI
SW
350
1
PI
SW
35
02
C
O
S
W
3
5
PI
SW
360
1
PI
SW
36
02
C
O
S
W
3
6
PI
SW
370
1
PI
SW
37
02
C
O
S
W
3
7
PIU201
PI
U2
02
PI
U2
03C
OU
2
PIwr501
PI
wr
50
2
PIwr503
CO
wr
5
PIXtal12M501PIXtal12M502
CO
Xt
al
12
M5
PIC601
PIC701
P
I
J
6
5
0
1
PIR2101
PIR2302
PI
U2
02
PIC801
P
I
J
6
5
0
1
0
PI
U2
03
P
I
J
6
5
0
8 P
I
J
5
6
0
1
P
I
M
C
U
0
2
7
NLB
6
P
I
J
5
6
0
2
P
I
M
C
U
02
8
NL
B7
P
O
D
O
P
I
M
C
U
02
1
P
O
D
I
PI
22
p5
01
PI
22
p60
1
PIC602
PIC702
PIC802
PIC1102
PIC1202
PID102
P
I
J
5
6
0
3
P
I
J
6
5
0
2
P
I
J
6
5
0
6
P
I
J
6
5
0
1
1
P
I
M
C
U
0
1
9
PI
R6
40
2
PIS
W34
01
PI
SW
350
1
PI
SW
360
1
PI
SW
370
1
PIwr501
P
I
J
5
6
0
5N
LM
CL
R
PI
22
p5
02
P
I
M
C
U
0
9
PIXtal12M502
PI
22
p60
2
P
I
M
C
U
01
0
PIXtal12M501
PID101PIR2102
PI
D5
90
1
PIR5902
P
I
J
6
6
0
1
P
I
M
C
U
0
1
5P
I
J
6
6
0
2
P
I
M
C
U
0
1
6P
I
J
6
6
0
3
P
I
M
C
U
0
1
7P
I
J
6
6
0
4
P
I
M
C
U
0
1
8
PILK101P
ILK201PILK
301PILK401
PILK501PIL
K601
PI
D5
90
2
P
I
M
C
U
0
1
P
O
M
C
L
R
P
I
M
C
U
0
4
P
I
M
C
U
0
5
P
I
M
C
U
0
6
P
I
M
C
U
0
7
P
I
M
C
U
0
8
P
I
M
C
U
0
1
1
PI
R6
80
2
P
O
X
o
n
g
P
I
M
C
U
0
1
2
PI
R6
70
2
P
O
G
i
a
m
P
I
M
C
U
0
1
3
PI
R6
60
2
P
O
T
a
n
g
P
I
M
C
U
0
1
4
PI
R65
02
P
O
C
h
e
do
P
I
M
C
U
02
4
P
I
M
C
U
02
5
P
I
M
C
U
0
2
6
PI
R6
40
1
PIR2301
PIU201
PI
wr
50
2
PIwr503
PIR6002
PI
R65
01
PIS
W34
02
PIR6102
PI
R6
60
1
PI
SW
35
02
PIR6202
PI
R6
70
1
PI
SW
36
02
PIR6302
PI
R6
80
1
PI
SW
37
02
P
I
J
6
5
0
3
P
O
S
0
P
I
J
6
5
0
4
P
O
S
0
P
I
M
C
U
0
2
2
P
O
S
H
0
C
P
P
I
J
6
5
0
7
PO
Sp
ee
d
fr
om
I
NV
P
I
M
C
U
0
3
PO
Sp
ee
d
2
PI
C
P
I
M
C
U
02
3
P
O
S
T
0
C
P
P
I
J
6
5
0
5
PO
Ma
in
A
DD
A
P
I
M
C
U
0
2
PO
We
ig
ht
d
is
p
PIC1101
PIC1201
P
I
J
5
6
0
4
P
I
J
6
5
0
9
P
I
M
C
U
0
2
0
PIR5901
PIR6001
PIR6101
PIR6201
PIR6301
P
OC
HE
D
O
P
O
D
I
P
O
D
O
P
O
G
I
A
M
P
O
M
A
I
N
A
D
D
A
P
O
M
C
L
R
P
O
S
0
PO
SH
0C
P
PO
SP
EE
D
2
PI
C
PO
SP
EE
D
FR
OM
I
NV
PO
ST
0C
P
P
O
T
A
N
G
PO
WE
IG
HT
D
IS
P
P
O
X
O
N
G
H
ìn
h
3.
3:
T
hi
ết
kế
ch
i
ti
ết
ph
ần
cứ
ng
hệ
th
ốn
g
Luận văn: Thiết kế hệ thống cân động. Nguyễn Tuấn Anh
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
3.1 Thiết kế phần cứng hệ thống 21
3.1.1 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]
R
RR
R
S+
S-
+10v
GND
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+ 6= 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
1chỉnh cân bằng, hay còn gọi là chỉnh không, chỉnh zero
Luận văn: Thiết kế hệ thống cân động. Nguyễn Tuấn Anh
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
3.1 Thiết kế phần cứng hệ thống 22
1
1
2
2
3
3
4
4
DD
CC
BB
AA
*
HOLIA
No 103, Ga luu xa street
Phu xa
Thai Nguyen
Viet Nam *
*
**
7/31/200910:52:00 PM
D:\Cao hoc\LVTN\Pictures\CB090504\Khuech dai.SchDoc
Title
Size:Number:
Date:
File:
Revision:
Sheetof Time:
A4
Designed by TuÊn Anh. Website:
T3
R5
C3
R15
-
+
3
2
6
71
45
Sp1
1
2
3
wr2
1
2
3
wr5
R6 R4
R7
R12
C5
R3
-
+
10
9
8
4
11
U1C
R16
R10R11
C1
R8
1
2
3
wr4
R2
-
+
3
2
1
4
11
U1A
R13
C4
-
+
12
13
14
4
11
U1D
-
+
5
6
7
4
11
U1B
R1
1
2
3
WR1
C2
R14
1
2
3
WR3
R9
To PIC display
To Main ADDA
S-
S+
+12V
GND
-12V
Speed in
Speed to PIC
+10V
+10V
+12V
-12V
-12V
+12V
-12V
+12V
+10V
KhuÕch ®¹i
Max 10v
T4
H
ìn
h
3.
5:
Sơ
đồ
ng
uy
ên
lý
m
ạc
h
kh
uế
ch
đạ
i
L
oa
dc
el
l
Luận văn: Thiết kế hệ thống cân động. Nguyễn Tuấn Anh
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
3.1 Thiết kế phần cứng hệ thống 23
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.
3.1.2 Khối chuyển đổi ADC
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.
MCLR1
RA0-AN02
RA1-AN13
RA2-AN24
RA3-AN35
RA46
RA5-AN47
8
MCU
Weight disp
Speed 2 PIC
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,....
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:
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);
Luận văn: Thiết kế hệ thống cân động. Nguyễn Tuấn Anh
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
3.1 Thiết kế phần cứng hệ thống 24
Begin ADC
Kênh cần đọc: ch
- Chọn kênh (ch)
- Phát tín hiệu bắt đầu chuyển đổi
Chuyển đổi xong ?
_
- Đọc tín hiệu số
+
Tín hiệu số
END
Hình 3.7: Sơ đồ thuật toán đọc ADC
value = read_adc();
return value;
}
Ví dụ sau dùng để kiểm tra sự hoạt động của ADC:
#include
unsigned int adc_rd;
void main() {
TRISA = 0xFF; // PORTA is input
ANSEL = 0x07; // Configure as analog
TRISC = 0x00; // Pins PORTC are outputs
TRISB = 0x00; // PORTB is output
do {
temp_res = ADC_Read(2); // Get results of AD conversion
PORTB = temp_res; // Send lower 8 bits to PORTB
PORTC = temp_res >> 8; // Send most significant bits to PORTC
} while(1);
}
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.
Luận văn: Thiết kế hệ thống cân động. Nguyễn Tuấn Anh
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
3.1 Thiết kế phần cứng hệ thống 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.
A
B
C
D
E
F
G
H
A
4
B
5
C
9
D
7
E
6
F
2
G
1
H
10
+2
,5
v
8
+2
.5
v
3Led8
LE
D
7
T
H
A
N
H
(
D
O
N
,
12
.5
X
19
)
R25
270R
R26
270R
A
B
C
D
E
F
G
H
A
4
B
5
C
9
D
7
E
6
F
2
G
1
H
10
+2
,5
v
8
+2
.5
v
3Led6
LE
D
7
T
H
A
N
H
(
D
O
N
,
12
.5
X
19
)
G
N
D
8
SDO 9
C
L
R
10
O
E
13
SDI14
V
C
C
16
SH
_C
P
11
ST
_C
P
12
Q
A
15
Q
B
1
Q
C
2
Q
D
3
Q
E
4
Q
F
5
Q
G
6
Q
H
7
U7
74hc595
R27
270R
G
N
D
8
SDO 9
C
L
R
10
O
E
13
SDI14
V
C
C
16
SH
_C
P
11
ST
_C
P
12
Q
A
15
Q
B
1
Q
C
2
Q
D
3
Q
E
4
Q
F
5
Q
G
6
Q
H
7
U8
74hc595
R24
270R
A
B
C
D
E
F
G
H
A
4
B
5
C
9
D
7
E
6
F
2
G
1
H
10
+2
,5
v
8
+2
.5
v
3Led7
LE
D
7
T
H
A
N
H
(
D
O
N
,
12
.5
X
19
)A
B
C
D
E
F
G
H
A
4
B
5
C
9
D
7
E
6
F
2
G
1
H
10
+2
,5
v
8
+2
.5
v
3Led5
LE
D
7
T
H
A
N
H
(
D
O
N
,
12
.5
X
19
)
G
N
D
8
SDO 9
C
L
R
10
O
E
13
SDI14
V
C
C
16
SH
_C
P
11
ST
_C
P
12
Q
A
15
Q
B
1
Q
C
2
Q
D
3
Q
E
4
Q
F
5
Q
G
6
Q
H
7
U9
74hc595
G
N
D
8
SDO 9
C
L
R
10
O
E
13
SDI14
V
C
C
16
SH
_C
P
11
ST
_C
P
12
Q
A
15
Q
B
1
Q
C
2
Q
D
3
Q
E
4
Q
F
5
Q
G
6
Q
H
7
U6
74hc595
ST_CP
SH_CP
DO
VCC
GND
DI
SDI3
SH
_C
P
ST
_C
P
SDI2
SH
_C
P
SDI4
ST
_C
P
SDI3
SH
_C
P
ST
_C
P
SDI4
SDI2
SH
_C
P
ST
_C
P
VCC
VCC
VCC
VCC
VCC
VCC
VCC
VCC
VCC
PILed501 PILed502
PILed503
PILed504 PILed505 PILed506PILed507
PILed508
PILed509PILed5010
COLed5
PILed601 PILed602
PILed603
PILed604 PILed605 PILed606PILed607
PILed608
PILed609PILed6010
COLed6
PILed701 PILed702
PILed703
PILed704 PILed705 PILed706PILed707
PILed708
PILed709PILed7010
COLed7
PILed801 PILed802
PILed803
PILed804 PILed805 PILed806PILed807
PILed808
PILed809PILed8010
COLed8
PIR2401
PIR2402
COR24
PIR2501
PIR2502
COR25
PIR2601
PIR2602
COR26
PIR2701
PIR2702
COR27
PIU601 PIU602 PIU603 PIU604 PIU605 PIU606 PIU607
PIU608
PIU609
PIU6010PIU6011 PIU6012 PIU6013
PIU6014
PIU6015
PIU6016
COU6
PIU701 PIU702 PIU703 PIU704 PIU705 PIU706 PIU707
PIU708
PIU709
PIU7010PIU7011 PIU7012 PIU7013
PIU7014
PIU7015
PIU7016
COU7
PIU801 PIU802 PIU803 PIU804 PIU805 PIU806 PIU807
PIU808
PIU809
PIU8010PIU8011 PIU8012 PIU8013
PIU8014
PIU8015
PIU8016
COU8
PIU901 PIU902 PIU903 PIU904 PIU905 PIU906 PIU907
PIU908
PIU909
PIU9010PIU9011 PIU9012 PIU9013
PIU9014
PIU9015
PIU9016
COU9
PO D
POS 0CP
POS 0CP
PO I POSDI2 POSDI3
PODO
POSDI4
POV C
PO PO 3 PO 4
POSH0CPPOST0CP
Hình 3.8: Sơ đồ nguyên lý mạch hiển thị
Hình 3.9: Mạch hiển thị khối lượng và tốc độ
Chương trình con hiển thị dữ liệu từ bộ đệm ra LED 7 thanh:
// Display Buffer array to LED
void LED7Display(){
const int8 L7[12]={
Luận văn: Thiết kế hệ thống cân động. Nguyễn Tuấn Anh
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
3.1 Thiết kế phần cứng hệ thống 26
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 so0=0;
if((buffer[6]==L7[0])&&(so0)){buffer[6]=L7[black];}else so0=0;
if((buffer[5]==L7[0])&&(so0)){buffer[5]=L7[black];}
so0=1;
if((buffer[3]==L7[0])&&(so0)){buffer[3]=L7[black];}else so0=0;
if((buffer[2]==L7[0])&&(so0)){buffer[2]=L7[black];}else so0=0;
if((buffer[1]==L7[0])&&(so0)){buffer[1]=L7[black];}
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.10: Bàn phím chỉnh tham số gốc
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.
Luận văn: Thiết kế hệ thống cân động. Nguyễn Tuấn Anh
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
3.1 Thiết kế phần cứng hệ thống 27
3.1.3 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]
Hình 3.11: Truyền thông USB
Để 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. Nguyễn Tuấn Anh
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
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. Nguyễn Tuấn Anh
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
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. Nguyễn Tuấn Anh
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
3.2 Thiết kế hướng đối tượng phần mềm hệ thống [2] 30
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.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. Nguyễn Tuấn Anh
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
3.2 Thiết kế hướng đối tượng phần mềm hệ thống [2] 31
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,
• 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. Nguyễn Tuấn Anh
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
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 Khảo sát, xác định các yêu cầu
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.
Luận văn: Thiết kế hệ thống cân động. Nguyễn Tuấn Anh
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
3.2 Thiết kế hướng đối tượng phần mềm hệ thống [2] 33
3.2.2 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 Tên trường Ghi chú
1 Số hiệu đoàn tàu
2 Lần cân thứ
3 mã toa
4 Tốc độ km/h
5 Loại than
6 Khối lượng tổng kg
7 Khối lượng bì kg
8 Khối lượng than kg
9 Vận tốc Max
10 Vận tốc min
11 Người vận hành
12 Địa điểm giao nhận
13 Đơn vị giao hàng
14 Đơn vị nhận hàng
15 Đơn vị giám định
16 Thời gian Thời gian tại thời điểm cân
3.2.3 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
• Thiết kế lớp chi tiết
• Biểu đồ thành phần
• Biểu đồ triển khai
Luận văn: Thiết kế hệ thống cân động. Nguyễn Tuấn Anh
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
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.
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. Nguyễn Tuấn Anh
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
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:
• 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. Nguyễn Tuấn Anh
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
3.2 Thiết kế hướng đối tượng phần mềm hệ thống [2] 36
Thống kê
tháng
In phiếu cân Tính khối
lượng
Chuyển ñổi
Nhân
viên
vận
hành
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. Nguyễn Tuấn Anh
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
3.2 Thiết kế hướng đối tượng phần mềm hệ thống [2] 37
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. Nguyễn Tuấn Anh
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
3.2 Thiết kế hướng đối tượng phần mềm hệ thống [2] 38
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.18: Biểu đồ cộng tác
Luận văn: Thiết kế hệ thống cân động. Nguyễn Tuấn Anh
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
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.19: Biểu đồ lớp chi tiết
Luận văn: Thiết kế hệ thống cân động. Nguyễn Tuấn Anh
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
3.2 Thiết kế hướng đối tượng phần mềm hệ thống [2] 40
3.2.4 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. Nguyễn Tuấn Anh
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
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. Nguyễn Tuấn Anh
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
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);
}
} while (1);
Hid_Disable();
}
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 so0=0;
if((buffer[6]==L7[0])&&(so0)){buffer[6]=L7[black];}else so0=0;
if((buffer[5]==L7[0])&&(so0)){buffer[5]=L7[black];}
so0=1;
if((buffer[3]==L7[0])&&(so0)){buffer[3]=L7[black];}else so0=0;
if((buffer[2]==L7[0])&&(so0)){buffer[2]=L7[black];}else so0=0;
if((buffer[1]==L7[0])&&(so0)){buffer[1]=L7[black];}
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);
}
Đ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
Luận văn: Thiết kế hệ thống cân động. Nguyễn Tuấn Anh
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
3.2 Thiết kế hướng đối tượng phần mềm hệ thống [2] 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;
}
catch { }
}
Đ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
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);
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);
VuotNguong1 = true;
for (byte k = 0; k < 5; k++)
Luận văn: Thiết kế hệ thống cân động. Nguyễn Tuấn Anh
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
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();
}
}
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)
Luận văn: Thiết kế hệ thống cân động. Nguyễn Tuấn Anh
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
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();
}
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. Nguyễn Tuấn Anh
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
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();
cnn.Close();
VuotNguong1 = false;
VuotNguong2 = false;
}
//----------------------------------------------
Tauqua_lbl.Text = dat_cnt.ToString();
break;
case 2:
Tocdo_lbl.Text =
Convert.ToString(Convert.ToSingle(A)/1000);
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
Luận văn: Thiết kế hệ thống cân động. Nguyễn Tuấn Anh
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
3.3 Tổng kết chương 47
// label19.Text = "Đầu tàu=11";
break;
case 4:
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ề.
3.3 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.
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ế.
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.
Luận văn: Thiết kế hệ thống cân động. Nguyễn Tuấn Anh
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
Chương 4
Xây dựng hệ thống cân động vật
thể
Giới thiệu về môi trường các ngôn ngữ lập trình:
• Firmware
• Software
Thiết kế chương trình, giao diện chức năng và một số mẫu dữ liệu thực
tế thu thập được.
4.1 Giới thiệu về ngôn ngữ lập trình cho phần cứng nhúng
Phần cứng đơn thuần, chỉ hoạt động theo thiết kế cố định ban đầu, nó
không thể linh động, không thể thay đổi các thông số, không thể đáp
ứng được các bài toán cần truyền thông theo quy chuẩn và không thể
áp dụng các thuật toán,...
Qua đó, để khắc phục được những nhược điểm trên chúng ta dùng
phần nhúng. Hệ thống nhúng là hệ thống có phần mềm nhúng trong
phần cứng. Có rất nhiều phần cứng hỗ trợ hệ nhúng, ví dụ: thông dụng
như Hệ vi điều khiển onchip 8051, PIC, AVR, ARM, PSoC, DSP,...
Mỗi nền phần cứng nhúng, sẽ đi kèm là một trình biên dịch, hỗ trợ
ngôn ngữ ASM và một số ngôn ngữ bậc cao khác. Trong hệ thống của
chúng ta, để thuận tiện, ta lập trình cho hệ nhúng bằng ngôn ngữ C.
Ngôn ngữ C là ngôn ngữ lập trình bậc cao, đã hỗ trợ hầu hết các chương
trình con thông dụng, có cấu trúc rõ ràng, mạch lạc, dễ hiểu và dễ lập
trình.
Luận văn: Thiết kế hệ thống cân động. Nguyễn Tuấn Anh
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
4.2 Giới thiệu về ngôn ngữ lập trình phần mềm: C# 49
Trong số các chương trình dịch C cho vi điều khiển, cũng có nhiều loại
(dị bản) C khác nhau, không tuân thủ thống nhất là dùng ANSI C, vậy
nên có đôi điều chúng ta cần phải nói đến. Ngôn ngữ C cho PIC được
CCS phát triển, dựa trên nền tảng C, nhưng các phương pháp vào/ra,
thay vì dùng thẳng các thanh ghi thì CCS lại sử dụng hàm. Ví dụ, để
xuất giá trị ra cổng RB, High-Tech (ngôn ngữ C theo chuẩn ANSI C)
viết lệnh là: PORTB=value; (với value là giá trị cần xuất); thì trong
CCS lại sử dụng hàm: output_ B(value);
Thay vì sử dụng các thanh ghi làm phương pháp vào/ra, CCS chuyển
hết thành dùng hàm như vậy, đôi khi cũng khó hiểu cho người mới tiếp
cận; song lại là một phương pháp viết lệnh tốt khi chúng ta cần chuyển
đổi chương trình dịch vì một lý do nào đó.
CCS là một hãng phát triển C cho PIC khá toàn diện, luôn cập nhật,
hỗ trợ những dòng vi điều khiển mới, làm cho người lập trình dễ dàng
tiếp cận với các vi điều khiển mới mà không gặp chút khó khăn nào;
CCS dùng phương pháp lập trình tương đồng cho các dòng vi điều khiển
khác nhau, chính vì vậy mà khi muốn thay đổi phần cứng thì phần mềm
không phải thay đổi nhiều.
Vì là lập trình C, nên CCS cũng hỗ trợ hầu hết các cấu trúc của C,
như khai báo biến, các toán tử, các phương pháp thực hiện biểu thức,
cấu trúc lặp, rẽ nhánh, con trỏ,... vậy nên, ta có thể dùng các kỹ năng
lập trình C cho phần mềm máy tính để lập trình cho hệ vi điều khiển.
Khi lập trình xong, ta có thể dịch ra mã *.Hex (một mã dạng mã
máy, nhưng là chuẩn để nạp vào PIC), sau đó dùng một chương trình
mô phỏng để mô phỏng lại hoạt động của hệ thống, cụ thể là lập trình
cho PIC, sau đó, nạp mã Hex đó vào phần cứng, kiểm thử xem hệ thống
hoạt động ổn chưa, nếu chưa thực sự ổn so với mong đợi, có thể sửa mã
nguồn, dịch rồi nạp lại.
4.2 Giới thiệu về ngôn ngữ lập trình phần mềm: C#
Ngôn ngữ C# khá đơn giản, chỉ khoảng 80 từ khóa và hơn mười mấy
kiểu dữ liệu được xây dựng sẵn. Tuy nhiên, ngôn ngữ C# có ý nghĩa cao
khi nó thực thi những khái niệm lập trình hiện đại. C# bao gồm tất cả
những hỗ trợ cho cấu trúc, thành phần component, lập trình hướng đối
Luận văn: Thiết kế hệ thống cân động. Nguyễn Tuấn Anh
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
4.2 Giới thiệu về ngôn ngữ lập trình phần mềm: C# 50
tượng. Những tính chất đó hiện diện trong một ngôn ngữ lập trình hiện
đại. Và ngôn ngữ C# hội đủ những điều kiện như vậy, hơn nữa nó được
xây dựng trên nền tảng của hai ngôn ngữ mạnh nhất là C++ và Java.
Ngôn ngữ C# được phát triển bởi đội ngũ kỹ sư của Microsoft, trong
đó người dẫn đầu là Anders Hejlsberg và Scott Wiltamuth. Cả hai người
này điều là những người nổi tiếng, trong đó Anders Hejlsberg được biết
đến là tác giả của Turbo Pascal, một ngôn ngữ lập trình PC phổ biến.
Và ông đứng đầu nhóm thiết kế Borland Delphi, một trong những thành
công đầu tiên của việc xây dựng môi trường phát triển tích hợp (IDE)
cho lập trình client/server. Phần cốt lõi hay còn gọi là trái tim của bất
cứ ngôn ngữ lập trình hướng đối tượng là sự hỗ trợ của nó cho việc định
nghĩa và làm việc với những lớp. Những lớp thì định nghĩa những kiểu
dữ liệu mới, cho phép người phát triển mở rộng ngôn ngữ để tạo mô hình
tốt hơn để giải quyết vấn đề. Ngôn ngữ C# chứa những từ khóa cho việc
khai báo những kiểu lớp đối tượng mới và những phương thức hay thuộc
tính của lớp, và cho việc thực thi đóng gói, kế thừa, và đa hình, ba thuộc
tính cơ bản của bất cứ ngôn ngữ lập trình hướng đối tượng. Trong ngôn
ngữ C# mọi thứ liên quan đến khai báo lớp điều được tìm thấy trong
phần khai báo của nó. Định nghĩa một lớp trong ngôn ngữ C# không
đòi hỏi phải chia ra tập tin header và tập tin nguồn giống như trong
ngôn ngữ C++. Hơn thế nữa, ngôn ngữ C# hỗ trợ kiểu XML, cho phép
chèn các tag XML để phát sinh tự động các document cho lớp.
C# cũng hỗ trợ giao diện interface, nó được xem như một cam kết
với một lớp cho những dịch vụ mà giao diện quy định. Trong ngôn ngữ
C#, một lớp chỉ có thể kế thừa từ duy nhất một lớp cha, tức là không
cho đa kế thừa như trong ngôn ngữ C++, tuy nhiên một lớp có thể
thực thi nhiều giao diện. Khi một lớp thực thi một giao diện thì nó sẽ
hứa là nó sẽ cung cấp chức năng thực thi giao diện. Trong ngôn ngữ
C#, những cấu trúc cũng được hỗ trợ, nhưng khái niệm về ngữ nghĩa
của nó thay đổi khác với C++. Trong C#, một cấu trúc được giới hạn,
là kiểu dữ liệu nhỏ gọn, và khi tạo thể hiện thì nó yêu cầu ít hơn về
hệ điều hành và bộ nhớ so với một lớp. Một cấu trúc thì không thể kế
thừa từ một lớp hay được kế thừa nhưng một cấu trúc có thể thực thi
một giao diện. Ngôn ngữ C# cung cấp những đặc tính hướng thành
phần (component-oriented), như là những thuộc tính, những sự kiện.
Lập trình hướng thành phần được hỗ trợ bởi CLR cho phép lưu trữ
metadata với mã nguồn cho một lớp. Metadata mô tả cho một lớp, bao
gồm những phương thức và những thuộc tính của nó, cũng như những
Luận văn: Thiết kế hệ thống cân động. Nguyễn Tuấn Anh
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
4.3 Các chức năng của chương trình 51
sự bảo mật cần thiết và những thuộc tính khác. Mã nguồn chứa đựng
những logic cần thiết để thực hiện những chức năng của nó.. Do vậy,
một lớp được biên dịch như là một khối self-contained, nên môi trường
hosting biết được cách đọc metadata của một lớp và mã nguồn cần thiết
mà không cần những thông tin khác để sử dụng nó. Một lưu ý cuối cùng
về ngôn ngữ C# là ngôn ngữ này cũng hỗ trợ việc truy cập bộ nhớ trực
tiếp sử dụng kiểu con trỏ của C++ và từ khóa cho dấu ngoặc [] trong
toán tử. Các mã nguồn này là không an toàn (unsafe). Và bộ giải phóng
bộ nhớ tự động của CLR sẽ không thực hiện việc giải phóng những đối
tượng được tham chiếu bằng sử dụng con trỏ cho đến khi chúng được
giải phóng.
Tại sao phải sử dụng ngôn ngữ C#
Nhiều người tin rằng không cần thiết có một ngôn ngữ lập trình mới.
Java, C++, Perl, Microsoft Visual Basic, và những ngôn ngữ khác được
nghĩ rằng đã cung cấp tất cả những chức năng cần thiết. Ngôn ngữ C#
là một ngôn ngữ được dẫn xuất từ C và C++, nhưng nó được tạo từ nền
tảng phát triển hơn. Microsoft bắt đầu với công việc trong C và C++
và thêm vào những đặc tính mới để làm cho ngôn ngữ này dễ sử dụng
hơn. Nhiều trong số những đặc tính này khá giống với những đặc tính
có trong ngôn ngữ Java. Không dừng lại ở đó, Microsoft đưa ra một số
mục đích khi xây dựng ngôn ngữ này.
4.3 Các chức năng của chương trình
Chức năng của hệ thống được cài đặt là thu thập dữ liệu, lưu trữ dữ liệu
đầy đủ của lần cân cuối cùng, thống kê, báo cáo, cài đặt cổng kết nối,
cài đặt phương pháp lọc lấy khối lượng toa.
4.4 Màn hình giao diện chức năng
Màn hình của hệ thống được thiết kế thân thiện với người sử dụng, hầu
hết là tự động, chỉ có in ấn, báo cáo thì cán bộ vận hành mới phải thao
tác. Xem hình 4.1 Trong màn hình giao diện chức năng, hình 4.1, có các
thành phần sau đây:
• Dạng sóng tín hiệu cân: Biểu thị tín hiệu nhận được ở dạng sóng
của toàn bộ đoàn tàu. từ dạng sóng này ta có thể dễ dàng nhìn ra
trạng thái của các toa tàu
Luận văn: Thiết kế hệ thống cân động. Nguyễn Tuấn Anh
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
4.4 Màn hình giao diện chức năng 52
Hình 4.1: Giao diện màn hình
• Chỉ số cân: Có hai cân cùng cân trên hệ thống, chỉ số cân biểu thị
giá trị số đọc được trên mỗi cân. Chỉ số cân chính là dữ liệu đầu vào
dùng để tính toán khối lượng.
• Thông tin vận hành: Là các thông tin ít thay đổi, như người vận
hành hệ thống, địa điểm giao nhận,... dùng để lưu vào mỗi ca làm
việc và trình bày trong mẫu hóa đơn cân.
• Các thông số : Biểu thị tốc độ đoàn tàu, hướng đi hay về ga, mã
toa,...
• Số liệu sử lý hiện thời : Là các số liệu thu được ngay tại thời điểm
tàu đang chạy, tính toán và xử lý số liệu trực tiếp và đưa ra thông
tin cần thiết.
Với hình 4.2, trong phần mềm, người sử dụng có thể in báo cáo theo thời
gian, hoặc có thể tìm theo tất cả các thông tin lưu trong CSDL.
Tại sao phải làm như vậy?
Bởi vì, có những chuyến hàng, được chở đi đều đặn, nhưng đến khi tổng
kết, người ta thấy cần kiểm tra lại thông tin, vậy nên, có thể báo cáo lại
tất cả những chuyến hàng đã được cân.
Thông tin về thời gian, dùng để chọn báo cáo theo khoảng thời gian,
như báo cáo theo tuần, báo cáo theo tháng hay theo năm,...
Luận văn: Thiết kế hệ thống cân động. Nguyễn Tuấn Anh
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
4.4 Màn hình giao diện chức năng 53
Hình 4.2: Giao diện màn hình báo cáo
Phương pháp thực hiện: Chọn khoảng thời gian cần báo cáo: Chọn
ngày bắt đầu trong mục từ ngày, ngày kết thúc: trong mục đến ngày, rồi
chọn nút bấm: OK.
Kết quả nhận được: Báo cáo theo danh sách các chuyến đã cân trong
khoảng thời gian được chọn.
Ở hình 4.3, trong TAB giao diện này, người dùng có thể tùy chọn các
thông số cài đặt, như: Thời gian chờ tàu qua, cấu hình tùy chọn cổng
COM cho dữ liệu và cho thẻ, cũng như sử dụng cụm cân nào để cân và
có bù hay không (bù sai do ảnh hưởng của thời tiết)...
Trong TAB này cũng sử dụng để cấu hình mã toa và tên toa.
Cách thức thực hiện:
• Đặt thời gian chờ tàu qua hẳn: nhập số (phần trăm giây).
Kết quả: sau khi tàu chạy qua, quá thời gian đặt, hệ thống sẽ hiểu
là đã hết toa.
• Chọn cổng COM cho dữ liệu và đầu đọc thẻ tại: Sử dụng cổng dữ
liệu, sử dụng cổng đọc thẻ.
Kết quả: Hệ thống sẽ hiểu cổng nào là cổng dữ liệu vào, cổng nào là
cổng đọc thẻ phân biệt các toa.
Luận văn: Thiết kế hệ thống cân động. Nguyễn Tuấn Anh
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
4.4 Màn hình giao diện chức năng 54
Hình 4.3: Giao diện màn hình cài đặt
• Chọn tham số lọc
Kết quả: ảnh hưởng đến kết quả cân. Trong các trường hợp kết cấu
cơ khí còn tốt thì chọn Lọc theo chiều cao tín hiệu, nếu kết cấu cơ
khí kém, sinh ra nhiều tạp nhiễu thì chọn Lọc theo dải tín hiệu
• Chọn cụm cân
Kết quả: thay đổi bàn cân (dùng trong trường hợp bảo dưỡng, thay
thế bàn cân)
• Tham số bù
Kết quả: Bù nhiễu theo thời tiết, nếu lượt đi và lượt về có thời tiết
hoàn toàn khác nhau thì thay đổi hệ số bù.
• Mã toa: Cập nhật thông tin về các toa có trong công ty
Cách thực hiện: Bấm vào dấu * để thêm toa mới; chọn cả hàng
ngang, bấm DEL để xoá toa
Kết quả: Thay đổi tên hiện thị trong báo cáo thay vì mã. Nếu không
có tên, báo cáo sẽ hiển thị mã toa.
Luận văn: Thiết kế hệ thống cân động. Nguyễn Tuấn Anh
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
4.5 Lập kế hoạch triển khai thực tế 55
4.5 Lập kế hoạch triển khai thực tế
Sau khi thiết kế xong hệ thống, cần triển khai trên thực tế để có thể
thực nghiệm và lập trình chính xác được. Trong quá trình nghiên cứu,
hệ thống đã được cài đặt thử nghiệm tại công ty than Vàng danh - Uông
bí - Quảng Ninh.
Mỗi đầu tàu, nặng trung bình là 56 tấn (loại to), và 27 tấn (loại nhỏ);
toa hàng không có hàng, nặng 17.5 tấn; toa hàng chở đầy hàng, nặng
bình quân là 50-55 tấn.Dưới đây là một số mẫu thu được từ thực tế.
-
20
000
20
00
40
00
60
00
80
00
10
00
0
12
00
0
14
00
0
16
00
0
1
35
69
10
3
13
7
17
1
20
5
23
9
27
3
30
7
34
1
37
5
40
9
44
3
47
7
51
1
54
5
Hình 4.4: Nhóm dữ liệu toa tàu có hàng
Hình 4.4 là một đoạn dữ liệu thu thập được của nhóm toa tàu có hàng.
Tham số trên trục tung là biên độ nhận được do chuyển đổi tương tự số,
đỉnh của các vùng là giá trị lớn nhất khi bánh tàu đè lên Loadcell. Mỗi
cụm có hai đỉnh, chính là hai bánh gắn liền trục. Phần bụng sâu chính
là phần thân toa, phần này có khoảng cách giữa hai bánh lớn nên giá trị
tiến về 0. Phần bụng cao (giá trị >0 và <2000 chính là phần ngăn cách
các toa, phần này có khoảng cách các bánh lớn hơn so với khoảng cách
của 2 bánh trên một trục nhưng lại nhỏ hơn so với khoảng cách giữa hai
cụm bánh trong cùng một toa. Chính vì vậy mà nó có độ sâu gần như
>0.
Hình 4.5 là dữ liệu của một đoàn tàu có 11 toa, có chở hàng, khối
lượng các toa gần như nhau.
Luận văn: Thiết kế hệ thống cân động. Nguyễn Tuấn Anh
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
4.5 Lập kế hoạch triển khai thực tế 56
-
20
000
20
00
40
00
60
00
80
00
10
00
0
12
00
0
14
00
0
1
12
6
25
1
37
6
50
1
62
6
75
1
87
6
10
01
11
26
12
51
13
76
15
01
16
26
17
51
18
76
20
01
21
26
22
51
23
76
25
01
26
26
27
51
28
76
30
01
31
26
Hình 4.5: Dữ liệu một chuyến tàu có hàng, 11 toa cả đầu tàu
-
20
000
20
00
40
00
60
00
80
00
10
00
0
12
00
0
14
00
0
1
12
6
25
1
37
6
50
1
62
6
75
1
87
6
10
01
11
26
12
51
13
76
15
01
16
26
17
51
18
76
20
01
21
26
22
51
23
76
25
01
26
26
27
51
28
76
30
01
31
26
Hình 4.6: Dữ liệu một chuyến tàu có hàng, 11 toa gồm cả đầu tàu
Và hình 4.6 được vẽ lại của hình 4.5 cho dễ nhìn.
Hình 4.7 là dữ liệu của một chuyến tàu, đầu tàu loại nhỏ (bên trái)
và các toa loại trung bình. Hình 4.8 là dữ liệu của một đoàn tàu không
hàng, đầu tàu cao trội lên, các toa khác không có hàng, tuy rằng khối
lượng gần như nhau, nhưng thực tế, khối lượng các toa không bằng nhau.
Hình 4.9 là ảnh thật của sản phẩm cân động như đã thiết kế.
Sản phẩm được đặt tên là CB090504, có hai hàng LED 7 thanh, hàng
trên thể hiện giá trị của cụm cân 1, hàng dưới thể hiện giá trị cụm cân
2.
Hình 4.9 dưới là hình nhóm sản phẩm gồm 6 cụm chuyển đổi, trên
thực tế, chỉ cần 01 bộ hoạt động tại một thời điểm, nhưng do đưa sản
phẩm vào ứng dụng, nên cần phải đảm bảo hệ thống hoạt động liên tục,
nên tác giả đã quyết định lắp 06 bộ trong một tủ, để thay thế ngay khi
cần thiết.
Luận văn: Thiết kế hệ thống cân động. Nguyễn Tuấn Anh
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
4.5 Lập kế hoạch triển khai thực tế 57
Se
ria
l l
a
n
ca
n
th
u
11
0
0.
1
0.
2
0.
3
0.
4
0.
5
0.
6
0.
7
0.
8
0.
9
1
70
13
9
20
8
27
7
34
6
41
5
48
4
55
3
62
2
69
1
76
0
82
9
89
8
96
7
10
36
11
05
Hình 4.7: Dữ liệu một chuyến tàu có hàng, đầu tàu loại nhỏ
Về
kh
ôn
g
hà
n
g
-
20
000
20
00
40
00
60
00
80
00
10
00
0
12
00
0
14
00
0
16
00
0
1
19
3
38
5
57
7
76
9
96
1
11
53
13
45
15
37
17
29
19
21
21
13
23
05
24
97
26
89
28
81
30
73
Hình 4.8: Dữ liệu một chuyến tàu không hàng, 11 toa cả đầu tàu
Luận văn: Thiết kế hệ thống cân động. Nguyễn Tuấn Anh
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
4.6 Xác định rủi ro 58
4.6 Xác định rủi ro
Hệ thống cân là hệ thống điện tử, do vậy không tránh khỏi những rủi
ro.
Rủi ro có thể xác định bởi các nguyên nhân sau:
1. Thiên tai: Thiên tai có thể là lũ lụt gây ngập, hỏng loadcell, sét
đánh gây cháy nổ hệ thống.
Phương án đưa ra là đào mương, rãnh thoát nước dọc theo bàn cân;
thiết kế hệ thống chống sét đảm bảo độ an toàn và tin cậy.
2. Nún, sụt nền bàn cân, bàn cân bị rung lắc: Trước khi thi công,
cần phải làm chắc chắn vị trí đất xung quanh bàn cân, đổ bê tông
cốt thép liên kết trong toàn bộ bàn cân, làm cọc đóng sâu xuống
nền đất nếu thấy cần thiết.
Chọn vị trí làm bàn cân sao cho không nằm cạnh đường tàu khác.
3. Độ bền linh kiện theo thời gian: Tuổi thọ của linh kiện là có
hạn, vậy nên khi thi công, cần phải dự phòng linh kiện, đề phòng
trường hợp xấu xảy ra.
4. Nguồn nuôi không đảm bảo: Nguồn cung cấp cho hệ thống là vô
cùng quan trọng. Điện áp khu vực cân cần phải được đảm bảo chắc
chắn sẵn sàng và ổn định. Cần thiết phải thêm một hệ thống gồm
có bộ lưu điện công suất khoảng ≥ 2Kw và một bộ ổn định điện áp
lắp sau bộ lưu điện.
5. Cấu hình sai hệ thống: Khi vận hành, đôi khi chính người vận
hành nắm không vững quy trình vận hành hoặc các tham số vận
hành, làm cho hệ thống chạy không được như mong muốn. Giải
pháp đưa ra là trước khi chuyển giao công nghệ cho cán bộ vận
hành, cần tổ chức khoá huấn luyện kỹ lưỡng phương pháp vận hành
hệ thống. Khi nào thấy hệ thống có vấn đề lạ, cần reset lại các tham
số như mặc định.
6. Chỉnh định không theo hướng dẫn vận hành: Khi chỉnh định
cân không theo hướng dẫn vận hành, thì dẫn đến các sai số không
đáng có, như mùa đông (trời lạnh, ray co) hệ thống lại làm việc theo
mùa hè (trời nóng, ray dãn nở).
7. Hỏng, nhiễu đường truyền do đặt gần đối tượng gây nhiễu:
Khi đường truyền tín hiệu bị đặt gần đối tượng gây nhiễu như động
cơ, máy khò hàn,... thì có thể dẫn đến hỏng đường truyền, hay nhẹ
hơn là nhiễu tín hiệu.
Luận văn: Thiết kế hệ thống cân động. Nguyễn Tuấn Anh
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
4.7 Đánh giá kết quả thử nghiệm 59
Khi phát hiện thấy tín hiệu nhận được không bình thường, đề nghị
các cán bộ vận hành kiểm tra đường truyền tín hiệu.
Không nên để máy tính quá xa tủ đo lường và khuếch đại tín hiệu,
khoảng cách an toàn nên để là ≤ 1.5m
4.7 Đánh giá kết quả thử nghiệm
Sau khi chương trình được hoàn thiện, phần mềm được đưa vào thực tế
để thử nghiệm. Sau một số lần thử nghiệm thực tế, phần mềm dần dần
lấy lại được tính đúng đắn và chính xác theo tính toán. Giao diện thân
thiện với người vận hành;
Mỗi người vận hành được đào tạo một khoảng thời gian ngắn là có
thể sử dụng tốt chương trình. Mỗi khi tàu qua, các module làm việc rồi
ghi lại kết quả, đưa kết luận về khối lượng ra phiếu cân và đưa vào CSDL.
Thực tế cho thấy, sai số do môi trường là khó tránh khỏi, ví dụ như
tàu chạy ban đêm, nhiệt độ thấp, ray tàu lạnh rồi cứng lại, ép xuống
bàn cân dẫn đến lệch kết quả so với ban ngày trời nắng, ray dãn nở.
Chính vì vậy, phải có hệ số bù lệch (bù zero). Sau khi bù lệch, kết quả
đúng như tính toán, sai số
Các file đính kèm theo tài liệu này:
- 32LV09_CNTT_KHMTNguyenTuanAnh.pdf