天天看點

m基于可見光通信系統的RFID接口過程以及ALOHA防碰撞算法的matlab仿真1.算法描述2.matlab算法仿真效果3.MATLAB核心程式4.完整MATLAB

目錄

1.算法描述

2.matlab算法仿真效果

3.MATLAB核心程式

4.完整MATLAB

1.算法描述

       射頻識别技術(Radio Frequency Identification,RFID)是一種非接觸式自動識别技術,與傳統的識别方式相比,它無需直接接觸、無需光學可視、無需人工幹預即可完成資訊輸入和處理,具有操作友善快捷、存儲資料量大、保密性好、反應時間短、對環境适應性強等優點,現在已廣泛應用于工業自動化、商業自動化和交通運輸管理等領域,成為目前IT業研究的熱點技術之一。

  典型的RFID系統主要包括三個部分:電子标簽(tag)、讀寫器(Read)和應用系統(如圖1)。電子标簽放置在被識别的對象上,是RFID系統真正的資料載體。通常電子标簽處于休眠狀态,一旦進入讀寫器作用範圍内就會被激活,并與讀寫器進行無線射頻方式的非接觸式雙向資料通信,以達到識别并交換資料的目的。此外,許多讀寫器還都有附加的通信接口,以便将所獲的資料傳給應用系統進行進一步的處理。 

        對具有多個上傳信道可同時上傳ID資訊的RFID 系統的空中接口過程進行仿真, 探讨系統識别标簽的速率與信道數的關系,并與現有标準ISO,18000-6C的識别速率進行對比RFID 系統的空中接口過程, 當多個上傳信道同時上傳ID的時候,那麼必然會涉及到多個信道之間的幹擾,那麼信道數目越多,這種互相幹擾的就越嚴重,進而影響對不同上傳ID識别速率,是以我們需要研究多信道和識别速度的關系。根據上面内容,需要研究兩個方面的東西,一個接口過程,一個防碰撞算法。   

       RFID的接口過程滿足如下的結構框圖:

m基于可見光通信系統的RFID接口過程以及ALOHA防碰撞算法的matlab仿真1.算法描述2.matlab算法仿真效果3.MATLAB核心程式4.完整MATLAB

關于防碰撞算法:

         進行多種算法的對比:設定不同的ID數量,然後分别仿真其對應的識别時間,即速率,然後做出仿真圖。包括二進制搜尋算法。标準ISO,18000-6C用的是ALOHA算法。

        “Aloha算法是一種非常簡單的TDMA算法,該算法被廣泛應用在RFID系統中。這種算法多采取“标簽先發言”的方式,即标簽一進入讀寫器的閱讀區域就自動向讀寫器發送其自身的ID,随即标簽和讀寫器間開始通信。

       ALOHA算法是随機接入算法的一種,當标簽要發送資料資訊時,它可以在任意時間段随機發送,把它稱為純ALOHA算法。

2.matlab算法仿真效果

matlab2022a仿真結果如下:

m基于可見光通信系統的RFID接口過程以及ALOHA防碰撞算法的matlab仿真1.算法描述2.matlab算法仿真效果3.MATLAB核心程式4.完整MATLAB
m基于可見光通信系統的RFID接口過程以及ALOHA防碰撞算法的matlab仿真1.算法描述2.matlab算法仿真效果3.MATLAB核心程式4.完整MATLAB
m基于可見光通信系統的RFID接口過程以及ALOHA防碰撞算法的matlab仿真1.算法描述2.matlab算法仿真效果3.MATLAB核心程式4.完整MATLAB
m基于可見光通信系統的RFID接口過程以及ALOHA防碰撞算法的matlab仿真1.算法描述2.matlab算法仿真效果3.MATLAB核心程式4.完整MATLAB

3.MATLAB核心程式

%%
%參數定義
%資訊碼長度
SNR           = [10:1:17];
TDL           = [500,400,300,200,100,50,20,10];
ERR           = zeros(1,length(SNR));
 
for jj = 1:length(SNR)
    jj
    Num = 0;
    Ber = 0;
    while Ber <= TDL(jj); 
    Num = Num + 1;
    Ber
 
    Frame_length  = 10*64;    
    %資訊碼速率為10KHz
    Rates         = 10e3; 
    %發送帶寬20KHz
    Bwidth        = 2*Rates;     
    %發送信号功率2W
    Tpower        = 2;                        
    %載波頻率70MHz
    fc            = 70e6;      
    %采樣頻率280MHz,滿足四倍采樣
    fs            = fc*4;        
    %20KHz方波
    Swave1        = 20e3;            
    %40KHz方波
    Swave2        = 40e3;             
    %采樣點數
    M             = fs/(2*Swave2);   
    %資訊碼采樣點
    L             = fs/Rates; 
    %2ASK調制的調制度
    ma            = 0.5;     
    %alpha值
    alpha         = 2*ma/(1-ma);                         
 
 
    %%
    %随機資訊碼産生
    data_code0 = zeros(1,Frame_length);
    %随機産生資訊碼
    data_code0 =(randn(1,Frame_length)>=0.5);
 
    %%
    %CRC校驗
    data_code  = func_CRC(data_code0);
 
    %%
    %資料采樣化
    data_code_sample = func_samples(data_code,Frame_length,L);
 
    %%
    %編碼
    data_code_sample = func_encode(data_code_sample,data_code,Frame_length,L,M);
 
    %%
    %調制發送
    %FIR低通濾波器設計
    data_sample_fir  = func_filter(data_code_sample,fs,fc);
    T                = Frame_length*L*(1/fs);
    t                = [0:1/fs:T-(1/fs)];
    Carriers         = cos(2*pi*fc*t);
    %ASK調制
    RFID_ASK         =((2*Tpower).^0.5)*(1+alpha*data_sample_fir).*Carriers;
    %ASK調制信号加正弦波幹擾
    RFID_ASK_sin     = RFID_ASK + 10*cos(2*pi*fc*t+pi/6); 
 
 
    %高斯信道
    snr                = SNR(jj);                                  
    RFID_ASK_sin_N     = awgn(RFID_ASK_sin,snr,'measured');
 
 
    figure(1);
    subplot(221)
    plot(RFID_ASK(100:1000));
    title('2ASK調制信号');
    axis([0,1000,-10,10]);
 
    subplot(222)
    plot(RFID_ASK_sin(100:1000));
    grid on;
    title('ASK調制信号加正弦波幹擾');
    axis([0,1000,-30,30]);
 
    subplot(223)
    plot(RFID_ASK_sin_N(100:1000));
    grid on;
    title('過信道之後信号');
    axis([0,1000,-30,30]);
 
 
    %限幅
    AMP                = 10;
    RFID_ASK_sin_N_amp = func_amp_limit(RFID_ASK_sin_N,AMP);
 
 
    %ASK解調
    [RFID_deASK_filter,amp]=func_AKS_Demod(RFID_ASK_sin_N_amp,Carriers,fc,fs);
 
 
    subplot(224)
    plot(RFID_deASK_filter(100:end));
    grid on;
    title('2ASK解調信号');
    axis([0 L*Frame_length -5 20]);
 
 
    %判決門限
    RFID_deASK10  = func_unsamples(amp,Frame_length,M);
 
    %解碼
    data_code_rec = func_decode(RFID_deASK10,Frame_length);
 
    %統計誤碼率
    Err_rate      = func_err(data_code_rec,data_code,Frame_length);
    Ber           = Ber + Err_rate*Frame_length;
    end
    ERR(jj) = Ber/(Num*Frame_length);
end
 
figure;
semilogy(SNR,ERR,'b-o');
xlabel('SNR');
ylabel('BER');
grid on;
 01_094_m
           

4.完整MATLAB

V

V

繼續閱讀