新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 用單片機系統實現故障診斷

        用單片機系統實現故障診斷

        作者: 時間:2012-03-19 來源:網絡 收藏

        4.軟件

        用Franklin C51[4]編制BP程序關鍵部分如下:
        uchar data i,j;
        float xdata show[17]; //征兆
        float xdata fault[11]; //類型
        float xdata weight[10][17]; //輸入層與隱含層間的權重
        float xdata vweight[11][10]; //隱含層與輸出層間的權重
        //這兩種權重已在PC機中訓練好,燒錄在EPROM中。
        float xdata Inet[10];
        …… //初始化,從采集濾波保存的信號中讀取show[17]
        for(i=0; i10; i++)
        for(j=0; j17; j++)
        Inet[i] += weight[i][j]*show[j];
        for(i=0; i11; i++)
        for(j=0; j10; j++)
        fault[i] += vweight[i][j] / (1.0 + exp(-Inet[j]));
        for(i=0; i11; i++)
        { if(fault[i] > 0.1)
        …… // 顯示出并調用通信程序上位機
        // 進行通信告知故障
        }

        通信功能的主要程序如下:
        //這里略去了中斷服務程序的初始化
        uchar idata transmit_buf[8] = fault1;
        uchar idata receive_buf[8];
        void transmit_data(void)
        { uchar p, i;
        transmit_ready = 0;
        do{ p = 0; //清校驗和
        for(i=0; i8; i++)
        { SBUF = transmit_buf[i];//發送一數據
        p += transmit_buf;
        while(TI != 1);
        TI = 0;
        }
        SBUF = p; //發送校驗和
        while(TI == 0); TI = 0;
        while(RI == 0); RI = 0;
        }while (SBUF != 0)//接收不正確,重新發送
        SM2 = 1; //設置監聽狀態
        ES = 1; //開串行口中斷
        }
        void receive_data(void)
        {
        uchar p, i;
        receive_ready = 0;
        while(1)
        {
        p=0; //清校驗和
        for(i=0; i8; i++)
        {
        while(RI != 1); RI = 0;
        receive_buf[i] = SBUF; //接收一數據
        p += receive_buf[i];
        }
        while(RI != 1); RI = 0;
        if(SBUF==p) {SBUF=0x00; break;}
        //校驗和相同,發00
        else{
        SBUF=0xff; //校驗和不同,發0FF
        while(TI == 0); TI = 0;}
        }
        SM2 = 1;
        ES = 1;
        }



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 黄大仙区| 黄冈市| 浑源县| 台北市| 抚州市| 确山县| 华安县| 如皋市| 大名县| 华阴市| 郎溪县| 长治县| 澄迈县| 石狮市| 灵寿县| 盐津县| 兴隆县| 南充市| 阜新| 乌审旗| 罗甸县| 南投市| 松江区| 洞口县| 镇安县| 青河县| 阿拉善左旗| 江川县| 阿勒泰市| 康保县| 霍州市| 晋中市| 博客| 西贡区| 青海省| 蓬溪县| 枣庄市| 如皋市| 石楼县| 凤庆县| 祁阳县|