新聞中心

        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;
        }



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 信宜市| 临漳县| 房产| 威远县| 会昌县| 大丰市| 炉霍县| 广宗县| 南靖县| 毕节市| 西宁市| 云霄县| 闵行区| 广州市| 贵港市| 广汉市| 梓潼县| 周口市| 新乡市| 沈阳市| 东乡县| 尚志市| 交口县| 离岛区| 永城市| 乌海市| 连平县| 禄劝| 云南省| 金堂县| 柳河县| 大足县| 贵溪市| 旺苍县| 通辽市| 金山区| 卫辉市| 义乌市| 南安市| 石门县| 岳阳市|