Автоматизированная система диагностики дефектов в конструкциях электронных средств на основе акустических сигналов

Автор: Пользователь скрыл имя, 13 Декабря 2012 в 18:58, курсовая работа

Описание работы

Вибродиагностика - это одна из относительно новых отраслей науки, основанная на предположении, что любой объект (технический, биологический и т. д.) может быть представлен в виде колебательной системы и спектра вибросигнала, стимулированного либо тестом, либо функциональными возмущениями, содержащих информацию о техническом состоянии, дефектах и качестве объекта. Способ извлечения и расшифровки этой информации составляют основную задачу диагностики, которая в последнее время решается с помощью вычислительной техники. Различают функциональную и тестовую диагностику.

Работа содержит 1 файл

Курсовая работа.doc

— 336.00 Кб (Скачать)

if nargout > 1

     x=sparse(r,c,v);

else

  x=sparse(r,c+mn-1,v,p,1+fn2);

end

 

    1. Листинг Deltacoeff.m

 

function diff = deltacoeff(x)

%Author:        Olutope Foluso Omogbenigun

%Email:         olutopeomogbenigun at hotmail.com

%University:    London Metropolitan University

%Date:          12/07/07

%Syntax:        diff = deltacoeff(Matrix);

%Calculates the time derivative of  the MFCC

%coefficients matrix x and returns the result as a new matrix. 

 

[nr,nc] = size(x);

 

K = 3;          %Number of frame span(backward and forward span equal)

b = K:-1:-K;    %Vector of filter coefficients

 

%pads cepstral  coefficients matrix by repeating first and last rows K times

px = [repmat(x(1,:),K,1);x;repmat(x(end,:),K,1)];

 

diff = filter(b, 1, px, [], 1);  % filter data vector along each column

diff = diff/sum(b.^2);           %Divide by sum of square of all span values

% Trim off upper and lower K rows to make input and output matrix equal

diff = diff(K + [1:nr],:);

 

  1. Код программы DiagSound на языке C#
    1. Листинг файла Form1.cs

 

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

using MathWorks.MATLAB.NET.Utility;

using MathWorks.MATLAB.NET.Arrays;

using MatLab;

 

namespace DiagSound

{

    public partial class Form1 : Form

    {

        string FileName;

        Class1 obj = new Class1();//MatLab

        MWNumericArray MW ;

        int res = 0;

        Microsoft.Office.Interop.Excel.Application ObjExcel = new Microsoft.Office.Interop.Excel.Application();

        Microsoft.Office.Interop.Excel.Sheets ObjSheet;

        Microsoft.Office.Interop.Excel.Worksheet ObjWorkSheet;

        Microsoft.Office.Interop.Excel.Workbook ObjWorkBook;

 

        public int srav(double Vect, double Norma, double dx)

        {

            int res = 0;

            if (Math.Abs(Vect - Norma) <= dx)

                res++;

            return res;

        }

 

        public int readMat(Microsoft.Office.Interop.Excel.Range Norma, double Vect, int i, int j)

        {

            Microsoft.Office.Interop.Excel.Range N;

            Microsoft.Office.Interop.Excel.Range D;

            N = Norma.get_Offset(i, j);

            D = Norma.get_Offset(i + 18, j);

            if (Math.Abs(Convert.ToDouble(N.Value2.ToString()) - Vect)

                <= 2*Convert.ToDouble(D.Value2.ToString())) return 1;

            else return 0;

        }

 

        public Form1()

        {

            InitializeComponent();

        }

 

        private void выходToolStripMenuItem_Click(object sender, EventArgs e)

        {

            Close();

        }

 

        private void button1_Click(object sender, EventArgs e)

        {

            obj.Graf(FileName);

        }

 

        private void wavфаToolStripMenuItem_Click(object sender, EventArgs e)

        {

            if (openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK &&

                            openFileDialog1.FileName.Length > 0)

                FileName = openFileDialog1.FileName;

            else MessageBox.Show("Error");

            MW = (MWNumericArray)obj.Diag(FileName);

            listBox1.Items.Add("=================");

            listBox1.Items.Add("Wave-файл:");

            listBox1.Items.Add(openFileDialog1.FileName);

            listBox1.Items.Add("загружен!");

            button1.Enabled = true;

            if (openFileDialog2.FileName.Length > 0) button2.Enabled = true;

        }

 

        private void DataToolStripMenuItem_Click(object sender, EventArgs e)

        {

            if (openFileDialog2.ShowDialog() == System.Windows.Forms.DialogResult.OK &&

                            openFileDialog2.FileName.Length > 0)

            {

                listBox1.Items.Add("=================");

                listBox1.Items.Add("База дефектов:");

                listBox1.Items.Add(openFileDialog2.FileName);

                listBox1.Items.Add("загружена!");               

                if (openFileDialog1.FileName.Length > 0) button2.Enabled = true;

            }

        }

        private void оПрограммеToolStripMenuItem_Click(object sender, EventArgs e)

        {

            MessageBox.Show("Программа разработана  для курсовой работе\n по теме \"Автоматизированная система диагностики дефектов\nв конструкции электронных устройств\nс помощью акустических сигналов\"\nАвтор программы студент 3-го курса\nСургутского государственного университета \nВолков Александр\nкафедра АСОиУ\n2012г.","О программе");

        }

 

        private void button2_Click(object sender, EventArgs e)

        {

            ObjWorkBook = ObjExcel.Workbooks.Open(@openFileDialog2.FileName,

                    Type.Missing, Type.Missing, Type.Missing, Type.Missing,

                    Type.Missing, Type.Missing, Type.Missing, Type.Missing,

                    Type.Missing, Type.Missing, Type.Missing, Type.Missing,

                    Type.Missing, Type.Missing);

            ObjSheet = ObjWorkBook.Sheets;

            listBox1.Items.Add("=================");

            listBox1.Items.Add("Начала диагностики");

            for (int sample = 0; sample < (MW.NumberOfElements / 39) - 16; sample=sample+17)

            {

                res = 0;

                ObjWorkSheet = (Microsoft.Office.Interop.Excel.Worksheet)ObjSheet.get_Item(1);

                Microsoft.Office.Interop.Excel.Range ObjRanges;

                ObjRanges = ObjWorkSheet.get_Range("B2", Type.Missing);

               // if (readMat(ObjRanges, (double)MW[ 1 + sample, 1], 0, 0) > 0)

                    for (int i = 0; i < 17; i++)

                    {

                        for (int j = 0; j < 39; j++)

                            res = res + readMat(ObjRanges, (double)MW[i + 1 + sample, j + 1], i, j);

                    }

                if (res / 6.63 > 85)

                {

                    listBox1.Items.Add("Стук    " + Math.Round(res / 6.63, 2) + "%    [" + (sample / 17) * 0.2 + " ; " + Math.Round((sample / 17) * 0.2 + 0.2, 2) + "] сек");

                    //sample = sample + 17;

                }

                else

                {

                    res = 0;

                    ObjWorkSheet = (Microsoft.Office.Interop.Excel.Worksheet)ObjSheet.get_Item(2);

                    ObjRanges = ObjWorkSheet.get_Range("B2", Type.Missing);

                   // if (readMat(ObjRanges, (double)MW[1 + sample, 1], 0, 0) > 0)

                        for (int i = 0; i < 17; i++)

                        {

                            for (int j = 0; j < 39; j++)

                                res = res + readMat(ObjRanges, (double)MW[i + 1 + sample, j + 1], i, j);

                        }

                    if (res / 6.63 > 85)

                    {

                        listBox1.Items.Add("Треск     " + Math.Round(res / 6.63, 2) + "%    [" + Math.Round((sample / 17) * 0.2, 2) + " ; " + Math.Round((sample / 17) * 0.2 + 0.2, 2) + "] сек");

                        //sample = sample + 17;

                    }

                }

            }

            listBox1.Items.Add("Диагностика завершина");

            ObjExcel.Quit();

        }

 

        private void добавитьToolStripMenuItem_Click(object sender, EventArgs e)

        {

            MessageBox.Show("Для диагностики сигнала  необходимо сначала\nзагрузить Базу Дефектов и wave-файл содержащий\nсигнал, который нужно продиагностировать, после\nчего нажать кнопку Диагностика. После этого\nпрограмма начнет диагностировать сигнал и\nв случае обнаружения признаков дефекта\nвыводить в список наименование\nдефекта, процент схожести и отрезок времени\nна котором он обнаружил (в секундах)","Help");

        }

    }

}

 


Информация о работе Автоматизированная система диагностики дефектов в конструкциях электронных средств на основе акустических сигналов