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 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 . . . . ....

pdf81 trang | Chia sẻ: hunglv | Lượt xem: 1281 | Lượt tải: 0download
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:

  • pdf32LV09_CNTT_KHMTNguyenTuanAnh.pdf
Tài liệu liên quan