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 B
Mục lục
1 Khảo sát hiện trạng hệ thống cân động vật thể
1.1 Thực trạng tập đoàn than - khoáng sản Việt Nam-TKV
1.2 Mô tả nghiệp vụ của hệ thống hiện hành . . . . . . . . .
1.3 Mô tả, xác định mục tiêu và yêu cầu của hệ thống mới .
1.4 Tổng kết chương . . . . . . . . . . . . . . . . . . . . . .
2 Thiết kế tổng thể hệ thống cân
2.1 Thiết kế phần cứng . . . . . .
2.1.1 Các phương án thiết kế
2.1.2 Sơ đồ tổng thể . . . .
2.2
2.3
động vật thể
. . . . . . . . . . . . . . .
phần cứng hệ thống . . .
. . . . . . . . . . . . . . .
2.1.3 Ý nghĩa và yêu cầu kỹ thuật của từng khối .
Thiết kế phần mềm . . . . . . . . . . . . . . . . . .
2.2.1 Xác định các yêu cầu và phân tích hệ thống
2.2.2 Phân tích hệ thống hướng đối tượng . . . .
2.2.3 Thiết kế hệ thống hướng đối tượng . . . . .
2.2.4 Lập trình hướng đối tượng . . . . . . . . . .
Tổng kết chương . . . . . . . . . . . . . . . . . . .
3 Thiết kế chi tiết hệ thống cân động vật thể
3.1 Thiết kế phần cứng hệ thống . . . . . . . . . . . .
3.1.1 Khối cảm biến . . . . . . . . . . . . . . . .
3.1.2 Khối chuyển đổi ADC . . . . . . . . . . .
3.1.3 Khối truyền thông . . . . . . . . . . . . .
3.1.4 Khối nguồn . . . . . . . . . . . . . . . . .
3.2 Thiết kế hướng đối tượng phần mềm hệ thống [2]
MỤC LỤC
Khảo sát, xác định các yêu cầu
Phân tích hệ thống . . . . . . .
Thiết kế hệ thống . . . . . . . .
Lập trình và kiểm tra hệ thống
Vận hành và bảo trì hệ thống .
kết chương . . . . . . . . . . . .
4 Xây dựng hệ thống cân động vật
4.1 Giới thiệu về ngôn ngữ lập trình
4.2 Giới thiệu về ngôn ngữ lập trình
4.3 Các chức năng của chương trình
4.4 Màn hình giao diện chức năng .
4.5 Lập kế hoạch triển khai thực tế
4.6 Xác định rủi ro . . . . . . . . .
4.7 Đánh giá kết quả thử nghiệm .
A Vi điều khiển PIC
A.1 Từ Vi xử lý đến Vi điều khiển
A.2 Vi điều khiển họ PIC . . . . .
A.3 Lập trình cho PIC . . . . . .
A.4 Một vài đặc tính của PIC . .
B Ứng dụng mạch khuếch đại thuật toán
71
B.1 Ứng dụng mạch tuyến tính . . . . . . . . . . . . . . . . .
B.2 Các ứng dụng phi tuyến . . . . . . . . . . . . . . . . . .
Luận văn: Thiết kế hệ thống cân động.
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
71
76
81 trang |
Chia sẻ: maiphuongtl | Lượt xem: 1810 | Lượt tải: 0
Bạn đang xem trước 20 trang 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, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
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ố nằm trong vùng cho phép: không quá 0.5%.
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 60
Hình một bộ:
6 bộ, được lắp trong tủ:
Hình 4.9: Sản phẩm thực 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
Kết luận
Các kết quả thực hiện
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ập chung vào nghiên cứu các quy trình cần
thiết từ ý tưởng thiết kế đến lắp đặt vận hành, bảo trì bảo dưỡng. Hệ
thống được thiết kế có thể đáp ứng đầy đủ các yếu tố như đã phân tích
từ đầu.
• Luận văn đã được thiết kế theo trình tự các bước trong giáo trình
phân tích thiết kế hệ thống, gồm các bước: Khảo sát xác định yêu
cầu và phân tích hệ thống ; Phân tích hệ thống hướng đối tượng ;
Thiết kế hệ thống hướng đối tượng ; và lập trình hướng đối tượng
• Luận văn đã đạt được các yêu cầu như khâu khảo sát và phân tích
yêu cầu
• Kết quả đã được kiểm thử trên thực tế và cho kết quả khả quan.
Tuy hệ thống đã được thiết kế rất cụ thể, song không tránh khỏi
những thiếu sót. Trong quá trình viết luận văn, có thể tác giả vẫn chưa
biểu đạt hết ý nghĩa của các khâu thiết kế, trình bày còn sơ sài, chưa
nêu bật hết các phần thiết kế chi tiết.
Về hệ thống cân, thiết kế như trong luận văn là có thể khả thi, song do
trình độ còn hạn chế, nên thiết kế có thể vẫn chưa phải là tối ưu nhất.
Phần mềm vẫn chưa được kiểm định theo thời gian, có thể trong quá
trình vận hành, sẽ có những lỗi không đáng có xảy ra, cần phải phát
triển và hoàn thiện.
Tính ứng dụng thực tiễn
Hệ thống có tính ứng dụng thực tiễn rất cao, không chỉ riêng ngành
than, mà còn có thể áp dụng trong nhiều ngành khác, như các ngà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.7 Đánh giá kết quả thử nghiệm 62
cân bò trong trang trại, cân ô tô, ...
Hướng phát triển
Do hệ thống có tính thực thi rất cao và rất cần thiết trong thực tế, nên
sau này, tác giả dự định sẽ tối ưu dần phần mềm và phần cứng, tìm hiểu
các cách thiết kế bộ chuyển đổi tối ưu hơn và nhân rộng sự áp dụng ra
nhiều lĩnh vực khác nhau để giảm giá thành của các hệ thống đang phải
nhập ngoạ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.7 Đánh giá kết quả thử nghiệm 63
Bảng thuật ngữ viết tắt
ADC (Analog Digial Converter): Bộ biến đổi tín hiệu tương tự thành tín hiệu số
Advantech tên một công ty sản xuất các sản phẩm ghép nối máy tính
ASM Assembly
AUSART Asynchronous Universal Serial Receive and Transmit
Buffer bộ đệm
CAN Control Area Network
CNPM Công nghệ phần mềm
CNTT Công nghệ thông tin
CSDL Cơ sở dữ liệu
DSP Digital Signal Processing
EEPROM Electrical Eraser Programmable Readonly Memmory
FFT Fast Furie Transform
Filter Bộ lọc tín hiệu
GNU General Public License
KCS Kiểm tra chất lượng sản phẩm
LED (Liquid Emiting Diode): tên một loại linh kiện điện tử
Loadcel tên một loại cảm biến khối lượng
MPI Multi Point Interface
NSD Người sử dụng
OOA Phân tích hướng đối tượng
OOD Thiết kế hướng đối tượng
PC Personal Computer
PCI Peripheral Controller Interface
PIC (Programmable Intelligent Computer): Tên một loại vi điều khiển
PPI Point to Point Interface
ProfiBus Tên một loại giao thức truyền thông nối tiếp
Rose Tên một phần mềm hỗ trợ thiết kế và lập trình hướng đối tượng
TKV Tên của tập đoàn Than và Khoáng sản Việt nam
UML (Unified Modeling Language): ngôn ngữ mô hình hoá thống nhất
USB Universal Serial Bus
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
Danh sách hình vẽ
1.1 Công ty than khoáng sản Việt Nam - TKV . . . . . . . . 2
2.1 Sơ đồ khối tổng thể . . . . . . . . . . . . . . . . . . . . . 7
2.2 Sơ đồ khối tổng thể được chọn . . . . . . . . . . . . . . . 10
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 . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.4 Thiết kế logic và thiết kế chi tiết . . . . . . . . . . . . . 17
2.5 Lập trình tập trung xây dựng lớp . . . . . . . . . . . . . 17
3.1 Thiết kế cơ khí gá lắp Loadcell . . . . . . . . . . . . . . 19
3.2 Khoảng cách 2 bánh tàu trên một trục . . . . . . . . . . 19
3.3 Thiết kế chi tiết phần cứng hệ thống . . . . . . . . . . . 20
3.4 Sơ đồ nguyên lý Loadcell . . . . . . . . . . . . . . . . . . 21
3.5 Sơ đồ nguyên lý mạch khuếch đại Loadcell . . . . . . . . 22
3.6 Sơ đồ nguyên lý khối AD . . . . . . . . . . . . . . . . . . 23
3.7 Sơ đồ thuật toán đọc ADC . . . . . . . . . . . . . . . . . 24
3.8 Sơ đồ nguyên lý mạch hiển thị . . . . . . . . . . . . . . . 25
3.9 Mạch hiển thị khối lượng và tốc độ . . . . . . . . . . . . 25
3.10 Bàn phím chỉnh tham số gốc . . . . . . . . . . . . . . . . 26
3.11 Truyền thông USB . . . . . . . . . . . . . . . . . . . . . 27
3.12 Khối nguồn . . . . . . . . . . . . . . . . . . . . . . . . . 30
3.13 Mô phỏng tín hiệu điện của khối nguồn . . . . . . . . . . 31
3.14 Biểu đồ ca sử dụng . . . . . . . . . . . . . . . . . . . . . 36
3.15 Biểu đồ lớp . . . . . . . . . . . . . . . . . . . . . . . . . 37
3.16 Biểu đồ trình tự: "Cập nhật thông tin" . . . . . . . . . . 37
3.17 Biểu đồ trình tự: "In phiếu cân" . . . . . . . . . . . . . . 38
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
DANH SÁCH HÌNH VẼ 65
3.18 Biểu đồ cộng tác . . . . . . . . . . . . . . . . . . . . . . 38
3.19 Biểu đồ lớp chi tiết . . . . . . . . . . . . . . . . . . . . . 39
3.20 Mạch in thành phẩm . . . . . . . . . . . . . . . . . . . . 40
4.1 Giao diện màn hình . . . . . . . . . . . . . . . . . . . . . 52
4.2 Giao diện màn hình báo cáo . . . . . . . . . . . . . . . . 53
4.3 Giao diện màn hình cài đặt . . . . . . . . . . . . . . . . 54
4.4 Nhóm dữ liệu toa tàu có hàng . . . . . . . . . . . . . . . 55
4.5 Dữ liệu một chuyến tàu có hàng, 11 toa cả đầu tàu . . . 56
4.6 Dữ liệu một chuyến tàu có hàng, 11 toa gồm cả đầu tàu 56
4.7 Dữ liệu một chuyến tàu có hàng, đầu tàu loại nhỏ . . . . 57
4.8 Dữ liệu một chuyến tàu không hàng, 11 toa cả đầu tàu . 57
4.9 Sản phẩm thực tế . . . . . . . . . . . . . . . . . . . . . . 60
B.1 Mạch khuếch đại vi sai . . . . . . . . . . . . . . . . . . . 72
B.2 Mạch khuếch đại đảo . . . . . . . . . . . . . . . . . . . . 72
B.3 Mạch khuếch đại không đảo . . . . . . . . . . . . . . . . 73
B.4 Mạch theo điện áp . . . . . . . . . . . . . . . . . . . . . 73
B.5 Mạch khuếch đại tổng . . . . . . . . . . . . . . . . . . . 74
B.6 Mạch tích phân . . . . . . . . . . . . . . . . . . . . . . . 74
B.7 - Mạch vi phân . . . . . . . . . . . . . . . . . . . . . . . 75
B.8 Mạch so sánh . . . . . . . . . . . . . . . . . . . . . . . . 75
B.9 Mạch khuếch đại đo lường . . . . . . . . . . . . . . . . . 75
B.10 Mạch chuyển đổi kiểu Schmitt (Schmitt trigger) . . . . . 76
B.11 Mạch giả lập cuộn cảm . . . . . . . . . . . . . . . . . . 76
B.12 Mạch biến đổi tổng trở âm . . . . . . . . . . . . . . . . 76
B.13 Mạch chỉnh lưu chính xác . . . . . . . . . . . . . . . . . 76
B.14 Mạch khuếch đại đầu ra Lô-ga . . . . . . . . . . . . . . 77
B.15 Mạch khuếch đại đầu ra hàm số mũ . . . . . . . . . . . 78
B.16 Một số loại Loadcell thông dụng . . . . . . . . . . . . . 78
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
Tài liệu tham khảo
[1] Nguyễn Quốc Trung (2004), Xử lý tín hiệu và lọc số, Nxb KHKT
[2] Đoàn Văn Ban (Hà Nội,2005), Phân tích, thiết kế hướng đối tượng
với UML
[3] Nguyễn Xuân Huy (1994), Công nghệ phần mềm, Đại học Tổng hợp
Tp. Hồ Chí Minh.
[4] Quatrani T. (2000), Visual Modeling With Rational Rose and UML,
Addison-Wesley,
[5] Hoàng Minh Sơn (2005), Mạng truyền thông công nghiệp, NXB
KHKT
[6] British Standard (1998), BS 7925- 2 - Standard for Software Com-
ponent Testing, British Computer Society
[7] Cem Kaner, Jack Falk, Hung Quoc Nguyen (1999), Testing Com-
puter Software, John Wiley Sons, Inc.
[8] IEEE (1997), IEEE Std 1028-1997 – IEEE Standard for Software
Review, The Institute of Electrical and Electronics Engineerings,
Inc., USA
[9]
[10]
[11]
[12]
[13]
[14]
[15]
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
Phụ lục A
Vi điều khiển PIC
A.1 Từ Vi xử lý đến Vi điều khiển
Bộ Vi xử lý có khả năng vượt bậc so với các hệ thống khác về khả năng
tính toán, xử lý, và thay đổi chương trình linh hoạt theo mục đích người
dùng, đặc biệt hiệu quả đối với các bài toán và hệ thống lớn.Tuy nhiên
đối với các ứng dụng nhỏ, tầm tính toán không đòi hỏi khả năng tính
toán lớn thì việc ứng dụng vi xử lý cần cân nhắc. Bởi vì hệ thống dù lớn
hay nhỏ, nếu dùng vi xử lý thì cũng đòi hỏi các khối mạch điện giao tiếp
phức tạp như nhau. Các khối này bao gồm bộ nhớ để chứa dữ liệu và
chương trình thực hiện, các mạch điện giao tiếp ngoại vi để xuất nhập
và điều khiển trở lại, các khối này cùng liên kết với vi xử lý thì mới thực
hiện được công việc. Để kết nối các khối này đòi hỏi người thiết kế phải
hiểu biết tinh tường về các thành phần vi xử lý, bộ nhớ, các thiết bị
ngoại vi. Hệ thống được tạo ra khá phức tạp, chiếm nhiều không gian,
mạch in phức tạp và vấn đề chính là trình độ người thiết kế. Kết quả là
giá thành sản phẩm cuối cùng rất cao, không phù hợp để áp dụng cho
các hệ thống nhỏ.
Vì một số nhược điểm trên nên các nhà chế tạo tích hợp một ít bộ
nhớ và một số mạch giao tiếp ngoại vi cùng với vi xử lý vào một IC
duy nhất được gọi là Microcontroller-Vi điều khiển. Vi điều khiển có
khả năng tương tự như khả năng của vi xử lý, nhưng cấu trúc phần
cứng dành cho người dùng đơn giản hơn nhiều. Vi điều khiển ra đời
mang lại sự tiện lợi đối với người dùng, họ không cần nắm vững một
khối lượng kiến thức quá lớn như người dùng vi xử lý, kết cấu mạch
điện dành cho người dùng cũng trở nên đơn giản hơn nhiều và có khả
năng giao tiếp trực tiếp với các thiết bị bên ngoài. Vi điều khiển tuy
được xây dựng với phần cứng dành cho người sử dụng đơn giản 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
A.2 Vi điều khiển họ PIC 68
nhưng thay vào lợi điểm này là khả năng xử lý bị giới hạn (tốc độ xử
lý chậm hơn và khả năng tính toán ít hơn, dung lượng chương trình bị
giới hạn). Thay vào đó, Vi điều khiển có giá thành rẻ hơn nhiều so với
vi xử lý, việc sử dụng đơn giản, do đó nó được ứng dụng rộng rãi vào
nhiều ứng dụng có chức năng đơn giản, không đòi hỏi tính toán phức tạp.
Vi điều khiển được ứng dụng trong các dây chuyền tự động loại nhỏ,
các robot có chức năng đơn giản, trong máy giặt, ôtô v.v...
A.2 Vi điều khiển họ PIC
PIC là một họ vi điều khiển RISC được sản xuất bởi công ty Microchip
Technology. Dòng PIC đầu tiên là PIC1650 được phát triển bởi Micro-
electronics Division thuộc General Instrument .
PIC bắt nguồn là chữ viết tắt của "Programmable Intelligent Com-
puter" (Máy tính khả trình thông minh) là một sản phẩm của hãng Gen-
eral Instruments đặt cho dòng sản phẩm đầu tiên của họ là PIC1650. Lúc
này, PIC1650 được dùng để giao tiếp với các thiết bị ngoại vi cho máy
chủ 16bit CP1600, vì vậy, người ta cũng gọi PIC với cái tên "Peripheral
Interface Controller" (Bộ điều khiển giao tiếp ngoại vi). CP1600 là một
CPU tốt, nhưng lại kém về các hoạt động xuất nhập, và vì vậy PIC 8-bit
được phát triển vào khoảng năm 1975 để hỗ trợ hoạt động xuất nhập
cho CP1600. PIC sử dụng microcode đơn giản đặt trong ROM, và mặc
dù, cụm từ RISC chưa được sử dụng thời bây giờ, nhưng PIC thực sự
là một vi điều khiển với kiến trúc RISC, chạy một lệnh một chu kỳ máy
(4 chu kỳ của bộ dao động).
Năm 1985 General Instruments bán bộ phận vi điện tử của họ, và chủ
sở hữu mới hủy bỏ hầu hết các dự án - lúc đó đã quá lỗi thời. Tuy nhiên
PIC được bổ sung EEPROM để tạo thành 1 bộ điều khiển vào ra khả
trình. Ngày nay rất nhiều dòng PIC được xuất xưởng với hàng loạt các
module ngoại vi tích hợp sẵn (như USART, PWM, ADC...), với bộ nhớ
chương trình từ 512 Word đến 32K Word.
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
A.3 Lập trình cho PIC 69
A.3 Lập trình cho PIC
PIC sử dụng tập lệnh RISC, với dòng PIC low-end (độ dài mã lệnh
12 bit, ví dụ: PIC12Cxxx) và mid-range (độ dài mã lệnh 14 bit, ví dụ:
PIC16Fxxxx), tập lệnh bao gồm khoảng 35 lệnh, và 70 lệnh đối với các
dòng PIC high-end (độ dài mã lệnh 16 bit, ví dụ: PIC18Fxxxx). Tập lệnh
bao gồm các lệnh tính toán trên các thanh ghi, với các hằng số, hoặc
các vị trí bộ nhớ, cũng như có các lệnh điều kiện, lệnh nhảy/gọi hàm,
và các lệnh để quay trở về, nó cũng có các tính năng phần cứng khác
như ngắt hoặc sleep (chế độ hoạt động tiết kiện điện). Microchip cung
cấp môi trường lập trình MPLAB, nó bao gồm phần mềm mô phỏng và
trình dịch ASM.
Một số công ty khác xây dựng các trình dịch C, Basic, Pascal cho
PIC. Microchip cũng bán trình dịch "C18" (cho dòng PIC high-end) và
"C30" (cho dòng dsPIC30Fxxx). Họ cũng cung cấp các bản "student
edition/demo" dành cho sinh viên hoặc người dùng thử, những version
này không có chức năng tối ưu hoá code và có thời hạn sử dụng giới
hạn. Những trình dịch mã nguồn mở cho C, Pascal, JAL, và Forth, cũng
được cung cấp bởi PicForth.
GPUTILS là một kho mã nguồn mở các công cụ, được cung cấp theo
công ước về bản quyền của GNU General Public License. GPUTILS bao
gồm các trình dịch, trình liên kết, chạy trên nền Linux, Mac OS X, OS/2
và Microsoft Windows. GPSIM cũng là một trình mô phỏng dành cho
vi điều khiển PIC thiết kế ứng với từng module phần cứng, cho phép giả
lập các thiết bị đặc biệt được kết nối với PIC, ví dụ như LCD, LED...
A.4 Một vài đặc tính của PIC
Hiện nay có khá nhiều dòng PIC và có rất nhiều khác biệt về phần cứng,
nhưng chúng ta có thể điểm qua một vài nét như sau:
• 8/16 bit CPU, xây dựng theo kiến trúc Harvard có sửa đổi
• Flash và ROM có thể tuỳ chọn từ 256 byte đến 256 Kbyte
• Các cổng Xuất/Nhập (I/O ports) (mức logic thường từ 0V đến 5.5V,
ứng với logic 0 và logic 1)
• 8/16 Bit Timer
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
A.4 Một vài đặc tính của PIC 70
• Công nghệ Nanowatt
• Các chuẩn Giao Tiếp Ngoại Vi Nối Tiếp Đồng bộ/Không đồng bộ
USART, AUSART, EUSARTs
• Bộ chuyển đổi ADC Analog-to-digital converters, 10/12 bit
• Bộ so sánh điện áp (Voltage Comparators)
• Các module Capture/Compare/PWM
• LCD
• MSSP Peripheral dùng cho các giao tiếp I2C, SPI, và I2S
• Bộ nhớ nội EEPROM - có thể ghi/xoá lên tới 1 triệu lần
• Module Điều khiển động cơ, đọc encoder
• Hỗ trợ giao tiếp USB
• Hỗ trợ điều khiển Ethernet
• Hỗ trợ giao tiếp CAN
• Hỗ trợ giao tiếp LIN
• Hỗ trợ giao tiếp IrDA
• Một số dòng có tích hợp bộ RF (PIC16F639, và rfPIC)
• KEELOQ Mã hoá và giải mã
• DSP những tính năng xử lý tín hiệu số (dsPIC)
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
Phụ lục B
Ứng dụng mạch khuếch đại thuật
toán
Bài này nêu lên một số ứng dụng tiêu biểu của các linh kiện tích hợp
mạch rắn - Mạch khuếch đại thuật toán. Trong bài có sử dụng các sơ đồ
đơn giản hóa, và người đọc nên lưu ý rằng nhiều chi tiết như tên của linh
kiện, số thứ tự chân ra và nguồn cung cấp không được thể hiện trong
hình.
Các điện trở sử dụng trong các sơ đồ thường được ghi nhận giá trị
trên đơn vị là kΩ. Các điện trở có dải < 1 kΩ có thể gây ra dòng điện
quá mức và có khả năng phá hỏng linh kiện. Các điện trở có dải >1 MΩ
có thể gây ra các tạp âm nhiệt và làm cho mạch vận hành kém ổn định
ứng với dòng định thiên đầu vào.
Ghi chú: Một điều quan trọng cần lưu ý là các công thức dưới đây giả
định rằng chúng ta sử dụng các mạch khuếch đại thuật toán lý tưởng.
Điều đó có nghĩa là khi thiết kế thực tế các mạch này cần phải tham
khảo thêm một số tài liệu chi tiết khác.
B.1 Ứng dụng mạch tuyến tính
Sau đây là các mạch bổ trợ cho việc thiết kế phần cứng trong luận vă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
72
Hình B.1: Mạch khuếch đại vi sai
Mạch điện này dùng để
tìm ra hiệu số, hoặc sai
số giữa 2 điện áp mà
mỗi điện áp có thể được
nhân với một vài hằng
số nào đó. Các hằng số
này xác định nhờ các
điện trở.
- Mạch khuếch đại vi sai
Thuật ngữ "Mạch khuếch đại vi sai" không
được nhầm lẫn với thuật ngữ "Mạch vi phân"
cũng trong bài này.
Vout = V2
(
(Rf + R1)Rg
(Rg + R2)R1
)
− V1
(
Rf
R1
)
Tổng trở vi sai Zin (giữa 2 chân đầu vào) =
R1 + R2
- Hệ số khuếch đại vi sai:
Nếu R1 = R2 và Rf = Rg, Vout = A(V2 − V1)
và A = Rf/R1
Hình B.2: Mạch khuếch đại đảo
Dùng để đổi dấu và
khuếch đại một điện áp
(nhân với một số âm)
- Mạch khuếch đại đảo
Vout = −Vin(Rf/Rin)
Zin = Rin (vì V − là một điểm đất ảo)
Một điện trở thứ ba, có trị số Rf ‖ Rin =
RfRin/(Rf +Rin), được thêm vào giữa đầu vào
không đảo và đất mặc dù đôi khi không cần
thiết lắm, nhưng nó sẽ giảm thiểu sai số do
dòng định thiên đầ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
73
Hình B.3: Mạch khuếch đại
không đảo
Dùng để khuếch đại
một điện áp (nhân với
một hằng số lớn hơn 1)
Vout = Vin
(
1 +
R2
R1
)
- Mạch khuếch đại không đảo
Zin = ∞ (thực ra, tổng trở bản thân của
đầu vào op-amp có giá trị từ 1Mω đến 10Tω.
Trong nhiều trường hợp tổng trở đầu vào có
thể được xem như cao hơn, do ảnh hưởng của
mạch hồi tiếp.)
Một điện trở thứ ba, có giá trị bằng Rf ‖ Rin
, được thêm vào giữa nguồn tín hiệu vào Vin
và đầu vào không đảo trong khi thực ra không
cần thiết, nhưng nó sẽ làm giảm thiểu những
sai số do dòng điện định thiên đầu vào.
Hình B.4: Mạch theo điện áp
- Mạch theo điện áp
Được sử dụng như một bộ khuếch đại đệm, để
giới hạn những ảnh hưởng của tải hay để phối
hợp tổng trở (nối giữa một linh kiện có tổng
trở nguồn lớn với một linh kiện khác có tổng
trở vào thấp). Do có hồi tiếp âm sâu, mạch
này có khuynh hướng không ổn định khi tải
có tính dung cao. Điều này có thể ngăn ngừa
bằng cách nối với tải qua 1 điện trở.
Vout = Vin
Zin = ∞ (thực ra, tổng trở bản thân của đầu
vào op-amp có giá trị từ 1Mω đến 10Tω.)
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
74
Hình B.5: Mạch khuếch đại tổng
- Mạch khuếch đại tổng
Mach được sử dụng để làm phép cộng một số
tín hiệu điện áp
Vout = −Rf
(
V1
R1
+
V2
R2
+ ... +
Vn
Rn
)
nếu R1 = R2 = ... = Rn, và Rf độc lập thì
Vout = −
(
Rf
R1
)
(V1 + V2 + · · ·+ Vn)
Nếu R1 = R2 = · · · = Rn = Rf
Vout = −(V1 + V2 + · · ·+ Vn)
Ngõ ra sẽ đổi dấu Tổng trở đầu vào Zn = Rn,
cho mỗi đầu vào (V − xem như điểm đất ảo)
Hình B.6: Mạch tích phân
- Mạch tích phân
Mạch này dùng để tích phân (có đảo dấu) một
tín hiệu theo thời gian.
Vout =
∫ t
0
− Vin
RC
dt + Vinitial
(Trong đó, Vin và Vout là các hàm số theo thời
gian, Vinitial là điện áp ngõ ra của mạch tích
phân tại thời điểm t = 0.)
Lưu ý rằng cấu trúc của mạch này cũng được
xem là mạch lọc thông thấp, một dạng của
mạch lọc tích 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
75
Hình B.7: - Mạch vi phân
- Mạch vi phân
Mạch này để lấy vi phân (có đảo dấu) một tín
hiệu theo thời gian. Thuật ngữ "Mạch vi phân"
tránh không nên nhầm lẫn với "mạch khuếch
đại vi sai", cũng trong trang này.
Vout = −RC
(
dVin
dt
)
(Trong đó, Vin và Vout là các hàm số theo thời
gian) Lưu ý rằng cấu trúc của mạch này có
thể xem như một mạch lọc thông thượng, một
dạng của mạch lọc tích cực.
Hình B.8: Mạch so sánh
- Mạch so sánh
Mạch này để so sánh hai tín hiệu điện áp, và
sẽ chuyển mạch ngõ ra để hiển thị mạch nào
có điện áp cao hơn.
Vout =
{
VS+ V1 > V2
VS− V1 < V2
(Trong đó Vs là điện áp nguồn, và mach sẽ được
cấp nguồn từ + Vs và −Vs.)
Hình B.9: Mạch khuếch đại đo
lường
- Mạch khuếch đại đo lường
Người ta kết hợp các đặc tính tổng trở vào rất
cao, độ suy giảm tín hiệu đồng pha cao, điện
áp bù đầu vào thấp và các đặc tính khác để
thiết kế mạch đo lường chính xác, độ nhiễu
thấp.
Mạch này được thiết lập bằng cách thêm một
mạch khuếch đại không đảo, đệm vào mỗi đầu
vào của mạch khuếch đại vi sai để tăng tổng
trở 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
76
Hình B.10: Mạch chuyển đổi kiểu
Schmitt (Schmitt trigger)
- Mạch chuyển đổi kiểu Schmitt (Schmitt
trigger)
Mạch so sánh có trễ
Độ trễ từ −R1R2 Vsat đến
R1
R2
Vsat.
Hình B.11: Mạch giả lập cuộn cảm
Hình B.12: Mạch biến đổi tổng trở âm
- Mạch biến đổi tổng trở âm
Rin = −R3R1
R2
B.2 Các ứng dụng phi tuyến
Dưới đây là các mạch phi tuyến, sử dụng để thiết kế từng phần tử của
mạch.
Hình B.13: Mạch chỉnh lưu
chính xác
- Mạch chỉnh lưu chính xác
Cấu hình cơ bản này có một số hạn chế. Để
biết thêm thông tin và để biết các cấu hình là
thực tế sử dụng, xem bài chí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
77
Hình B.14: Mạch khuếch đại đầu
ra Lô-ga
- Mạch khuếch đại đầu ra Lô-ga
Mối quan hệ giữa vin điện áp đầu vào và điện
áp đầu ra v(out) được cho bởi:
vout = −Vγ ln
(
vin
IS ·R
)
nơi Is là bão hòa dòng.
Nếu bộ khuếch đại được xem là lý tưởng, các
chân âm là được nối mass, do đó, dòng chảy
vào điện trở từ nguồn (và do đó thông qua các
diode để đầu ra, từ các op-amp đầu vào không
tạo điện áp) là:
vin
R
= IR = ID
ID có dòng chảy qua diode. Được biết, mối
quan hệ giữa dòng điện và điện áp cho diode
là:
ID = IS
(
e
VD
Vγ − 1
)
.
Điều này, khi điện áp lớn hơn không, có thể
được xấp xỉ bởi:
ID ' ISe
VD
Vγ .
Đưa các cặp công thức với nhau và xem xét
thấy có điện áp đầu ra là âm qua các diode
(Vout = - VD), mối quan hệ này được chứng
minh.
Lưu ý rằng điều này thực hiện không xem xét
sự ổn định nhiệt độ và không có hiệu ứng khác
lý tưở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
78
Hình B.15: Mạch khuếch đại đầu
ra hàm số mũ
- Mạch khuếch đại đầu ra hàm số mũ
Mối quan hệ giữa điện áp đầu vào vin và điện
áp đầu ra vout được cho bởi:
vout = −RISe
vin
Vγ
Nơi IS bão hoà dòng.
Xem xét hoạt động khuếch đại lý tưởng, thì
chân âm được nối đất, do đó, dòng thông qua
các diode được cho bởi:
ID = IS
(
e
VD
Vγ − 1
)
khi điện áp lớn hơn không, nó có thể được xấp
xỉ bởi:
ID ' ISe
VD
Vγ .
Điện áp đầu ra được cho bởi:
vout = −RID.
Hình B.16: Một số loại Loadcell thô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
Các file đính kèm theo tài liệu này:
- 32LV09_CNTT_KHMTNguyenTuanAnh.pdf