0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于物聯(lián)網(wǎng)云平臺的離心泵工況診斷系統(tǒng)

機(jī)智云 ? 2022-09-29 10:11 ? 次閱讀

傳統(tǒng)的離心泵工況診斷方法,傳感器安裝不便,診斷成本較高,實(shí)際應(yīng)用困難。本文由開發(fā)者對通過離心泵工況的機(jī)理進(jìn)行了研究,并設(shè)計(jì)研發(fā)了相應(yīng)的離心泵工況診斷系統(tǒng),從系統(tǒng)功能實(shí)現(xiàn),系統(tǒng)硬件總體設(shè)計(jì),系統(tǒng)軟件總體設(shè)計(jì)三方面對離心泵工況診斷系統(tǒng)的整體嵌入式架構(gòu)進(jìn)行了設(shè)計(jì)。01 系統(tǒng)功能實(shí)現(xiàn)1、能夠?qū)﹄x心泵驅(qū)動電機(jī)各相輸入電流進(jìn)行頻譜繪制。系統(tǒng)能向操作人員實(shí)時展示離心泵驅(qū)動電機(jī)各相輸入電流在 0~650Hz頻帶內(nèi)的頻譜。 2、能夠?qū)Ω黜?xiàng)離心泵工況診斷指標(biāo)進(jìn)行準(zhǔn)確計(jì)算。系統(tǒng)能對離心泵驅(qū)動電機(jī)定子電流均方根指標(biāo)、脈沖因子指標(biāo)等多項(xiàng)工況診斷指標(biāo)進(jìn)行實(shí)時計(jì)算。同時,系統(tǒng)應(yīng)能夠?qū)﹄x心泵驅(qū)動電機(jī)輸入功率、電網(wǎng)工頻進(jìn)行實(shí)時監(jiān)測。并對各項(xiàng)參數(shù)的計(jì)算及監(jiān)測誤差控制在低于1.8%的閾值內(nèi)。 3、實(shí)現(xiàn)信息交互。系統(tǒng)下位機(jī)應(yīng)能夠與 TFTLCD 屏以及移動端離心泵工況診斷 APP 兩個平臺之間進(jìn)行診斷信息交互。
02 系統(tǒng)硬件設(shè)計(jì)根據(jù)系統(tǒng)的功能設(shè)計(jì)指標(biāo),本文在系統(tǒng)硬件上設(shè)計(jì)了 MCU 核心控制模塊、AD 采集模塊、三相電參數(shù)監(jiān)測模塊、內(nèi)存擴(kuò)展模塊、數(shù)據(jù)存儲模塊、信息交互模塊、系統(tǒng)供電電源模塊共計(jì) 7 大功能模塊,系統(tǒng)總體框架圖如圖所示。

其中系統(tǒng)信息交互模塊實(shí)現(xiàn)了系統(tǒng)診斷信息的實(shí)時傳輸與共享,包括屏顯模塊、云端通信模塊兩部分。通過信息交互模塊,診斷信息被分別發(fā)送至了下位機(jī)端和移動端APP,操作人員可以根據(jù)需要自行選擇是進(jìn)行現(xiàn)場診斷還是進(jìn)行遠(yuǎn)程診斷。信息交互模塊的功能框架圖如下所示:

9f54868a-3f59-11ed-b180-dac502259ad0.png

屏顯模塊,負(fù)責(zé)將診斷信息直接呈現(xiàn)在顯示屏上。基于機(jī)智云平臺設(shè)計(jì)的云端通信模塊,則負(fù)責(zé)將診斷信息通過機(jī)智云服務(wù)器發(fā)送至操作人員的移動 APP 上。云端通信模塊的功能框架如下所示:

9f6d4e4a-3f59-11ed-b180-dac502259ad0.png

WiFi模塊對系統(tǒng)計(jì)算所得的診斷信息進(jìn)行封裝后傳至互聯(lián)網(wǎng),并通過互聯(lián)網(wǎng)上傳至機(jī)智云服務(wù)器,移動端離心泵工況診斷 APP 通過與機(jī)智云服務(wù)器通信實(shí)時獲取離心泵的工況診斷信息。

云端通信模塊中的WiFi模塊負(fù)責(zé)系統(tǒng)的配置入網(wǎng)。WiFi模塊的性能對通信質(zhì)量起著重要的影響作用。綜合考慮傳輸速率、距離、功耗和接受靈敏度這四方面因素,選用樂鑫 ESP8266WiFi 模組作為系統(tǒng)云端通信模塊的WiFi模塊,其原理圖和實(shí)物圖分別如下所示。

9f972d8c-3f59-11ed-b180-dac502259ad0.png

9fcad0ec-3f59-11ed-b180-dac502259ad0.png

離心泵工況診斷系統(tǒng)樣機(jī)的 PCB 設(shè)計(jì)圖和實(shí)物照片分別如下所示。

a00b78e0-3f59-11ed-b180-dac502259ad0.png

a05f4e20-3f59-11ed-b180-dac502259ad0.png03 系統(tǒng)軟件總體設(shè)計(jì)在軟件設(shè)計(jì)上,系統(tǒng)對電流信號的采集通過單片機(jī)ADC 功能,DMA 功能,通用定時器定時功能實(shí)現(xiàn);系統(tǒng)對電流信號的時頻轉(zhuǎn)換和對診斷指標(biāo)的計(jì)算通過單片機(jī)的 DSP 功能實(shí)現(xiàn);三相電參數(shù)監(jiān)測模塊與 MCU 核心控制模塊之間的信息交互通過單片機(jī)的 SPI 通信功能實(shí)現(xiàn);診斷信息的人機(jī)交互通過單片機(jī)的 FSMC 驅(qū)動功能,ESP8266 芯片的 WIFI入網(wǎng)功能以及單片機(jī)的串口通信功能實(shí)現(xiàn);系統(tǒng)內(nèi)存的擴(kuò)展通過單片機(jī)的 FSMC 驅(qū)動功能實(shí)現(xiàn);診斷信息的存儲通過單片機(jī)的 SDIO 驅(qū)動功能實(shí)現(xiàn)。 a0a58d4a-3f59-11ed-b180-dac502259ad0.png系統(tǒng)初始化在對 MCU 核心控制模塊進(jìn)行復(fù)位操作后,程序?qū)?main 函數(shù)出發(fā),首先執(zhí)行延時函數(shù)初始化,單片機(jī) GPIO 引腳初始化,中斷嵌套初始化,串口初始化操作,然后依照HARDWARE 中的子文件,依次完成對 AD 采集模塊,三相電參數(shù)監(jiān)測模塊,內(nèi)存擴(kuò)展模塊,數(shù)據(jù)存儲模塊,信息交互模塊的初始化操作,最后完成對 FFT 運(yùn)算相關(guān)參數(shù)的初始化,系統(tǒng)初始化程序的邏輯實(shí)現(xiàn)流程如下: a0b89552-3f59-11ed-b180-dac502259ad0.pnga0a58d4a-3f59-11ed-b180-dac502259ad0.png信息交互開發(fā)

信息交互程序包括兩方面,一是屏顯模塊的信息顯示程序,二是系統(tǒng)下位機(jī)與移動 APP之間的通信程序。屏顯模塊的信息顯示程序較簡單,MCU 核心控制模塊將屏顯模塊視為外部 SRAM 設(shè)備,通過 FSMC 對其進(jìn)行驅(qū)動,完成顯示。離心泵工況診斷系統(tǒng)的屏顯界面如下所示:

a0f26fa2-3f59-11ed-b180-dac502259ad0.pnga0a58d4a-3f59-11ed-b180-dac502259ad0.png平臺交互開發(fā)系統(tǒng)與移動 APP 之間的遠(yuǎn)程通信是基于第三方云端服務(wù)器實(shí)現(xiàn)的,系統(tǒng)通過 WiFi 模塊接入互聯(lián)網(wǎng)后,借助于第三方云端服務(wù)器與移動端 APP 之間進(jìn)行數(shù)據(jù)傳遞。可以理解為系統(tǒng)在下位機(jī)端、云端、移動端三者之間構(gòu)筑了一個相對完整的物聯(lián)網(wǎng)信息交互框架。

由于機(jī)智云平臺可以為用戶提供從設(shè)備接入到產(chǎn)品運(yùn)營管理的整個生命周期的服務(wù)。本文選用機(jī)智云作為系統(tǒng)云端通信的開發(fā)平臺?;跈C(jī)智云服務(wù)器的云端通信框架示意圖如下所示:

a1317d8c-3f59-11ed-b180-dac502259ad0.png云端通信是在設(shè)備端、云端、移動客戶端三者之間進(jìn)行的。設(shè)備端即診斷系統(tǒng)下位機(jī),在軟件上,設(shè)備端的云端通信功能要通過 GAgent 應(yīng)用程序?qū)崿F(xiàn)。GAgent 是為設(shè)備端接入機(jī)智云提供的嵌入式固件系統(tǒng)。在離心泵工況診斷系統(tǒng)中,GAgent 在 ATK-ESP8266 WiFi模塊上運(yùn)行,負(fù)責(zé)在設(shè)備端、云端、移動客戶端三者之間搭建以數(shù)據(jù)點(diǎn)為媒介的信息交互橋梁。在軟件上,移動客戶端基于 SDK 環(huán)境建立了與云端及設(shè)備端通信的 API 接口。設(shè)備端與云端,移動客戶端與云端之間傳輸?shù)男畔⒈环庋b成數(shù)據(jù)點(diǎn)格式,而 MCU 核心控制模塊在云端通信過程中主要負(fù)責(zé)數(shù)據(jù)點(diǎn)與系統(tǒng)實(shí)際動作之間的對應(yīng)轉(zhuǎn)換。三端協(xié)同工作,確保了物聯(lián)網(wǎng)中的信息通暢。?移動客戶端和設(shè)備端之間借助機(jī)智云平臺進(jìn)行通信。?

云端通信的具體開發(fā)步驟如下:

?創(chuàng)建產(chǎn)品:在機(jī)智云開發(fā)者中心官網(wǎng)中選擇“創(chuàng)建新產(chǎn)品”,并完成產(chǎn)品的屬性配置。具體地,本文在開發(fā)過程中,根據(jù)診斷系統(tǒng)的應(yīng)用領(lǐng)域選擇產(chǎn)品分類為“安防,監(jiān)控”類,將產(chǎn)品名稱命名為“離心泵工況診斷系統(tǒng) V1”,選擇技術(shù)方案類型為 WIFI/移動網(wǎng)絡(luò)方案,選擇通訊方式為 WIFI,選擇數(shù)據(jù)傳輸方式為定長。

?創(chuàng)建數(shù)據(jù)點(diǎn):數(shù)據(jù)點(diǎn)即設(shè)備產(chǎn)品功能的抽象。根據(jù)系統(tǒng)功能設(shè)計(jì)要求,分別建立采樣頻率、電網(wǎng)工頻、電機(jī)輸入功率、離心泵驅(qū)動電機(jī)定子電流均方根指標(biāo)、脈沖因子指標(biāo)、峭度系數(shù)指標(biāo)、總諧波失真指標(biāo)、信噪比指標(biāo)、信納比指標(biāo)共 9 項(xiàng)只讀數(shù)值類型的數(shù)據(jù)點(diǎn),用于顯示診斷信息。建立缺相報警這一項(xiàng)布爾值類型的數(shù)據(jù)點(diǎn),用于離心泵驅(qū)動電機(jī)某相斷路時報警。

?協(xié)議添加:生成并下載 MCU 開發(fā)代碼包。并在項(xiàng)目工程模板中添加 Gizwits 工程協(xié)議文檔。a1595dfc-3f59-11ed-b180-dac502259ad0.png

?程序改寫:基于機(jī)智云官網(wǎng)生成的 MCU 代碼包,對程序進(jìn)行改寫,將系統(tǒng)計(jì)算出的指標(biāo)值賦給對應(yīng)數(shù)據(jù)點(diǎn)。

?固件燒錄:將 GAgent 固件燒寫進(jìn) ATK-ESP8266 WIFI 模塊中。具體燒錄過程見:

http://docs.gizwits.com/zh-cn/deviceDev/ESP8266%E4%B8%B2%E5%8F%A3%E7%83%A7%E5%86%99%E8%AF%B4%E6%98%8E.html

?基于 Android Studio 環(huán)境,對機(jī)智云提供的 APP 開源框架進(jìn)行個性化修改,最后生成的移動客戶端界面。

?建立通信:操作 ATK-ESP8266 WIFI 模塊進(jìn)入 Airlink 模式下配網(wǎng),綁定設(shè)備,進(jìn)行對接通信測試,完成云端通信的所有配置。

系統(tǒng)APP界面圖如下:

a1874fd2-3f59-11ed-b180-dac502259ad0.png離泵工況診斷的功能實(shí)現(xiàn)代碼如下:

//ADC 參數(shù)配置:
voidADC_Config(void)
{ 
GPIO_InitTypeDefGPIO_InitStructure;
ADC_CommonInitTypeDefADC_CommonInitStructure;
ADC_InitTypeDefADC_InitStructure;

RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1,ENABLE);
 GPIO_InitStructureGPIO_Pin = GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3;
   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AN; 
   GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; 
   GPIO_Init(GPIOA, &GPIO_InitStructure); 

   RCC_APB2PeriphResetCmd(RCC_APB2Periph_ADC1,ENABLE); 
   RCC_APB2PeriphResetCmd(RCC_APB2Periph_ADC1,DISABLE); 

   ADC_CommonInitStructure.ADC_Mode= ADC_Mode_Independent; 
   ADC_CommonInitStructure.ADC_TwoSamplingDelay = ADC_TwoSamplingDelay_5Cycles; 
   ADC_CommonInitStructure.ADC_DMAAccessMode =ADC_DMAAccessMode_Disabled; 
   ADC_CommonInitStructure.ADC_Prescaler= ADC_Prescaler_Div4; 
   ADC_CommonInit(&ADC_CommonInitStructure); 

   ADC_InitStructure.ADC_Resolution= ADC_Resolution_12b; 
   ADC_InitStructure.ADC_ScanConvMode= ENABLE;  
   ADC_InitStructure.ADC_ContinuousConvMode= DISABLE; 


   ADC_InitStructure.ADC_ExternalTrigConvEdge = ADC_ExternalTrigConvEdge_Rising; 
   ADC_InitStructure.ADC_ExternalTrigConv= ADC_ExternalTrigConv_T2_TRGO; 
   ADC_InitStructure.ADC_DataAlign= ADC_DataAlign_Right; 
   ADC_InitStructure.ADC_NbrOfConversion= 3; 
   ADC_Init(ADC1, &ADC_InitStructure); 

   ADC_RegularChannelConfig(ADC1, ADC_Channel_1, 1, ADC_SampleTime_480Cycles);   
   ADC_RegularChannelConfig(ADC1, ADC_Channel_2, 2, ADC_SampleTime_480Cycles); 
   ADC_RegularChannelConfig(ADC1, ADC_Channel_3, 3, ADC_SampleTime_480Cycles);  

   ADC_DMARequestAfterLastTransferCmd(ADC1, ENABLE); 
   ADC_DMACmd(ADC1, ENABLE); 
   ADC_Cmd(ADC1, ENABLE); 
} 

  (2) 三相電參數(shù)監(jiān)測模塊參數(shù)配置:
  void EMU_init(int Phase,int Wire) 
  { 
  Write_Att7022(0xD3,0x0000);   //ATT7022E 復(fù)位 
  Write_Att7022(0xC3,0x000000);   //校表數(shù)據(jù)寄存器恢復(fù)到上電初始值 
Write_Att7022(0xC9,0x00005A);//使能SPI校表寫操作
Write_Att7022(0x01,0xB97E);//模式配置寄存器設(shè)置
  Write_Att7022(0x03,0xF884);   //EMU 單元配置 
  Write_Att7022(0x02,0x0100);   //ADC 增益配置寄存器配置 
  Write_Att7022(0x31,0x3437);   //模擬模塊寄存器使能 
  Write_Att7022(0x6D, 0xFF00);   // Vrefgain 補(bǔ)償曲線系數(shù) TCcoffA 設(shè)置 
  Write_Att7022(0x6E, 0x0DB8);   // Vrefgain 補(bǔ)償曲線系數(shù) TCcoffB 設(shè)置 
  Write_Att7022(0x6F, 0xD1DA);   // Vrefgain 補(bǔ)償曲線系數(shù) TCcoffC 設(shè)置 
  Write_Att7022(0x1E,HFCONST);   //HFconst 3200 
  Write_Att7022(0x17,(int)ATT_U_JIAOZHENG(0x0D,228.6));   //A 相電壓增益校準(zhǔn)
  Write_Att7022(0x18,(int)ATT_U_JIAOZHENG(0x0E,228.6));   //B 相電壓增益校準(zhǔn) 
  Write_Att7022(0x19,(int)ATT_U_JIAOZHENG(0x0F,229.7));   //C 相電壓增益校準(zhǔn) 
  Write_Att7022(0x1A,(int)ATT_I_JIAOZHENG(0x10,1.568));   //A 相電流增益校準(zhǔn) 
  Write_Att7022(0x1B,(int)ATT_I_JIAOZHENG(0x11,1.568));   //B 相電流增益校準(zhǔn) 
  Write_Att7022(0x1C,(int)ATT_I_JIAOZHENG(0x12,1.568));   //C 相電流增益校準(zhǔn) 
  Write_Att7022(0x04,(int)ATT_P_JIAOZHENG(0x01,358.448));   //A 相有功功率增益校準(zhǔn) 
  Write_Att7022(0x07,(int)ATT_P_JIAOZHENG(0x01,358.448));   //A 相無功功率增益校準(zhǔn) 
  Write_Att7022(0x0A,(int)ATT_P_JIAOZHENG(0x01,358.448));   //A 相視在功率增益校準(zhǔn) 
  Write_Att7022(0x05,(int)ATT_P_JIAOZHENG(0x02,358.448));   //B 相有功功率增益校準(zhǔn) 
  Write_Att7022(0x08,(int)ATT_P_JIAOZHENG(0x02,358.448));   //B 相無功功率增益校準(zhǔn) 
  Write_Att7022(0x0B,(int)ATT_P_JIAOZHENG(0x02,358.448));   //B 相視在功率增益校準(zhǔn) 
  Write_Att7022(0x06,(int)ATT_P_JIAOZHENG(0x03,358.448));   //C 相有功功率增益校準(zhǔn)
  Write_Att7022(0x09,(int)ATT_P_JIAOZHENG(0x03,358.448));   //C 相無功功率增益校準(zhǔn)
  Write_Att7022(0x0C,(int)ATT_P_JIAOZHENG(0x03,358.448));   //C 相視在功率增益校準(zhǔn)   

   if (Phase==3 && Wire==3){   //SEL 選擇 
     Write_Att7022(0x35,0x080E);   //IO 狀態(tài)寄存器配置 
   } 
   else if(Phase==3 && Wire==4){ 
     Write_Att7022(0x35,0x080F); 
   }   
  Write_Att7022(0xC5,0x0002);   //打開同步 
  Write_Att7022(0xC9,0x000000);   //關(guān)閉 SPI 校表寫操作     
  } 

  (3) main.c 文件相關(guān)程序:
  //頻譜繪制,帶寬 430Hz 
  void Frequency_Spectrum(float32_t * arry,float32_t x,uint16_t n){ 
     uint16_t i; 
  float power; 
  for(i=0;i<430;i++){ 
  if(*(arry+i)/x==1){ 
  *(arry+i)=1; 
     } 
  POINT_COLOR = BLACK; 
  LCD_DrawLine(15+i,200+208*n,15+i,200+208*n-(*(arry+i))*180); 
  }  
  POINT_COLOR = BLUE;    
  LCD_ShowString(330,20+208*n,120,12,12,"Freq(Hz)    Power(dB)"); 
  for(i=0;i<8;i++){ 
  power=10*log10(RMSharmonic[i]*RMSharmonic[i]); 
  LCD_ShowFloatNum(330,32+208*n+12*i,harmonic_frequency[i],2,12,0); 
  if(power>0){ 
  LCD_ShowFloatNum(396,32+208*n+12*i,power,2,12,0); 
  } 
  else{ 
  LCD_ShowString(390,32+208*n+12*i,6,12,12,"-"); 
  LCD_ShowFloatNum(396,32+208*n+12*i,(-power),2,12,0); 
  } 
  } 
  } 

  //頻域診斷指標(biāo)計(jì)算 
  void Frequency_OperationIndicator(float32_t * arry,uint16_t n) 
  {  
  uint16_t i; 
  float32_t current_power; 
  float32_t fundamental_power; 
  float32_t harmonic_power; 
  float32_t sqrt_harmonic_power; 
   for(i=0;i<(FFT_LENGTH/2+1);i++){ 
     if(i==0) 
    amplitude[i]=(*(arry+i)/FFT_LENGTH)* 4.39f;   //直流分量幅值還原,頻譜修正 
     else 
    amplitude[i]=(*(arry+i)*2/FFT_LENGTH) *4.39f;   //交流分量幅值還原,頻譜修正 
  } 

  arm_max_f32(amplitude,2049,harmonic,harmonic_frequency);   //基波基頻 
  RMSharmonic[0]=harmonic[0]/1.4142135623731f; 

  for(i=2;i<11;i++){ 
  arm_max_f32((amplitude+i*harmonic_frequency[0]-1),2,harmonic+i-1,harmonic_frequency
  +i-1);   //10 次以內(nèi)諧波 
  *(harmonic_frequency+i-1)=*(harmonic_frequency+i-1)+i*harmonic_frequency[0]-1;/諧頻 
  RMSharmonic[i-1]=harmonic[i-1]/1.4142135623731f; 
} 
  current_power=square(RMS[n],2);    //信號總功率 
  fundamental_power=square(RMSharmonic[0],2);//基波功率
  arm_power_f32(RMSharmonic+1,9,&harmonic_power);   //諧波功率 
  arm_sqrt_f32(harmonic_power,&sqrt_harmonic_power); 
  THD[n]=sqrt_harmonic_power/RMSharmonic[0];   //總諧波失真指標(biāo)計(jì)算 
  SNR[n]=(fundamental_power+harmonic_power)/(current_power-fundamental_power-harmon
  ic_power); 
     SINAD[n]=current_power/(current_power-fundamental_power); 
  arm_sqrt_f32(SNR[n],SNR+n);   //信噪比指標(biāo)計(jì)算 
  arm_sqrt_f32(SINAD[n],SINAD+n);   //信納比指標(biāo)計(jì)算 
  THD[n]=20*log10(THD[n]);   //dB 換算 
  SNR[n]=20*log10(SNR[n]);   //dB 換算 
  SINAD[n]=20*log10(SINAD[n]);  //dB 換算 
  Frequency_Spectrum(amplitude,harmonic[0],n); 
} 

  //時域診斷指標(biāo)計(jì)算 
  void Time_OperationIndicator(float32_t * arry,uint16_t n) 
  { 
  uint32_t i; 
  uint32_t imax;   
  float32_t max;    
  float32_t mean;   //平均值 
  float32_t meanabs;   //整流平均值 
     float32_t meansqrt;   //算術(shù)平方根的平均值 
  float32_t squaremeansqrt;   //方根幅值 

     arm_max_f32(arry,4096,&max,&imax);   //峰值計(jì)算 
  arm_mean_f32(arry,4096,&mean);   //平均值計(jì)算 
  arm_abs_f32(arry,arry,4096);   //絕對值計(jì)算 
  for(i=0;i<4096;i++){ 
  KURTOSIS[n]=KURTOSIS[n]+square((*(arry+i)-mean),4); 
  } 
     KURTOSIS[n]=KURTOSIS[n]/4096;  
  KURTOSIS[n]=KURTOSIS[n]/square((*(RMS+n)),4);   //峭度系數(shù)指標(biāo)計(jì)算 
  arm_mean_f32(arry,4096,&meanabs); 
  for(i=0;i<4096;i++){ 
  arm_sqrt_f32(*(arry+i),(arry+i)); 
     } 
  arm_mean_f32(arry,4096,&meansqrt); 
     squaremeansqrt=square(meansqrt,2); 
  PULSE[n]=max/meanabs;   //脈沖因子指標(biāo)計(jì)算 
  MARGIN[n]=max/squaremeansqrt;   //裕度因子指標(biāo)計(jì)算 
} 

  //Gizwits 協(xié)議初始化 
  void Gizwits_Init(void) 
  { 
    TIM3_Int_Init(10-1,8400-1);   //1MS 系統(tǒng)定時 
    usart3_init(9600);  
    memset((uint8_t*)¤tDataPoint, 0, sizeof(dataPoint_t));   //設(shè)備狀態(tài)結(jié)構(gòu)體初始化 
    gizwitsInit();   //緩沖區(qū)初始化 
  } 

  //機(jī)智云用戶自定義函數(shù) 
  void userHandle(void) 
  { 
  if(wifi_sta)   //WIFI 已連接 
  {     
       currentDataPoint.valueFe = Fe; 
    currentDataPoint.valuePin = Pin; 
    currentDataPoint.valueTHD = THD[3]; 
  currentDataPoint.valueSNR = SNR[3]; 
    currentDataPoint.valueSINAD = SINAD[3]; 
    currentDataPoint.valueCf = PULSE[3]; 
    currentDataPoint.valueCq = KURTOSIS[3]; 
    currentDataPoint.valueCe = MARGIN[3]; 
    currentDataPoint.valueFs = Fs; 
  } 
  } 

  //主函數(shù) 
  int main(void) 
{  
    uint16_t n; 
       int key; 
    arm_cfft_radix4_instance_f32 scfft; 
    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);    //系統(tǒng)中斷優(yōu)先級分組 
    delay_init(168);   //延時函數(shù)初始化 
    uart_init(115200);   //初始化串口 
       KEY_Init();   //按鍵初始化 
    Gizwits_Init();   //機(jī)智云協(xié)議初始化 
    TIM2_Int_Init();   //通用定時器 2 初始化 
       ADC_Config();   //ADC 參數(shù)配置 
    DMA_Config();   //DMA 參數(shù)配置 
       LCD_Init();   //LCD 初始化 
    FSMC_SRAM_Init();   //外部 SRAM 初始化   
       arm_cfft_radix4_init_f32(&scfft,FFT_LENGTH,0,1);   //初始化 scfft 結(jié)構(gòu)體,設(shè)定 FFT 參
    數(shù) 
       Screen_diaplay();   //界面顯示 
       EMU_init(3,4);   //三相電參數(shù)監(jiān)測模塊初始化 
       while (1) 
       { 
         if(flag_dma==1) 
    { 
    arm_rms_f32(ADC_Con_A[n],4096,RMS+0);    //A 相輸入電流均方根指標(biāo)計(jì)算 
       arm_rms_f32(ADC_Con_B[n],4096,RMS+1);    //B 相輸入電流均方根指標(biāo)計(jì)算 
       arm_rms_f32(ADC_Con_C[n],4096,RMS+2);    //C 相輸入電流均方根指標(biāo)計(jì)算 
       //復(fù)數(shù)構(gòu)造 
    for(n=0;n
         fft_inputbuf[0][2*n]=ADC_Con_A[n]* Kaiser [n]; 
         fft_inputbuf[0][2*n+1]=0;        
   fft_inputbuf[1][2*n]=ADC_Con_B[n]*Kaiser[n];
       fft_inputbuf[1][2*n+1]=0;   
         fft_inputbuf[2][2*n]=ADC_Con_C[n]* Kaiser [n]; 
         fft_inputbuf[2][2*n+1]=0;          
   } 
  arm_cfft_radix4_f32(&scfft,fft_inputbuf[0]);   //FFT 計(jì)算(基 4) 
  arm_cmplx_mag_f32(fft_inputbuf[0],fft_outputbufA,FFT_LENGTH);   //復(fù)數(shù)求模 
  arm_cfft_radix4_f32(&scfft,fft_inputbuf[1]); 
  arm_cmplx_mag_f32(fft_inputbuf[1],fft_outputbufB,FFT_LENGTH);  
  arm_cfft_radix4_f32(&scfft,fft_inputbuf[2]); 
  arm_cmplx_mag_f32(fft_inputbuf[2],fft_outputbufC,FFT_LENGTH);   

  Frequency_OperationIndicator(fft_outputbufA,0);   //頻域診斷指標(biāo)計(jì)算 
  Frequency_OperationIndicator(fft_outputbufB,1); 
  Frequency_OperationIndicator(fft_outputbufC,2); 
  Time_OperationIndicator(ADC_Con_A,0);   //時域診斷指標(biāo)計(jì)算 
  Time_OperationIndicator(ADC_Con_B,1); 
  Time_OperationIndicator(ADC_Con_C,2); 

     //合相診斷指標(biāo)計(jì)算 
  RMS[3]=(RMS[0]+RMS[1]+RMS[2])/3;   
     PULSE[3]=(PULSE[0]+PULSE[1]+PULSE[2])/3;      
     MARGIN[3]=(MARGIN[0]+MARGIN[1]+MARGIN[2])/3;     
     KURTOSIS[3]=(KURTOSIS[0]+KURTOSIS[1]+KURTOSIS[2])/3;     
  THD[3]=(THD[0]+THD[1]+THD[2])/3; 
  SNR[3]=(SNR[0]+SNR[1]+SNR[2])/3; 
    SINAD[3]=(SINAD[0]+SINAD[1]+SINAD[2])/3; 
  Fe=ReadSARegister(0x1C)/8192;   //電網(wǎng)工頻 
  Pin=Calculate_S(HXPhase)*2;   //電機(jī)輸入功率 

  LCD_ShowFloatNum(65,640,Fs,0,16,0); 
LCD_ShowFloatNum(65,665,F0,0,16,0); 
  LCD_ShowFloatNum(65,690,Fe,2,16,0); 
  LCD_ShowString(97,715,8,16,16,"-"); 
  LCD_ShowFloatNum(105,715,-THD[3],2,16,0); 
  LCD_ShowFloatNum(97,740,SNR[3],2,16,0); 
  LCD_ShowFloatNum(113,765,SINAD[3],2,16,0); 
  LCD_ShowFloatNum(352,640,RMS[3],2,16,0); 
  LCD_ShowFloatNum(344,665,PULSE[3],2,16,0); 
  LCD_ShowFloatNum(344,690,KURTOSIS[3],2,16,0); 
  LCD_ShowFloatNum(344,715,MARGIN[3],2,16,0); 
  LCD_ShowFloatNum(312,740,P,2,16,0); 

  userHandle();   //機(jī)智云協(xié)議用戶操作 
  gizwitsHandle((dataPoint_t *)¤tDataPoint);   //機(jī)智云協(xié)議處理 
  key = KEY_Scan(0); 
  if(key==KEY1_PRES)   //KEY1 按鍵按下 
  { 
  printf("WIFI 進(jìn)入 Airlink 連接模式\r\n"); 
     gizwitsSetMode(WIFI_AIRLINK_MODE);   //Airlink 模式接入 
  }   
  if(key==WKUP_PRES)   //KEY_UP 按鍵按下 
  {   
     printf("WIFI 復(fù)位,以重新配置連接\r\n"); 
     gizwitsSetMode(WIFI_RESET_MODE);   //WIFI 復(fù)位 
  } 
  } 
  }    
}

04 系統(tǒng)總結(jié)

綜合離心泵工況診斷系統(tǒng)的功能需求和硬件架構(gòu),本文從系統(tǒng)初始化、信息交互等方面對系統(tǒng)的功能實(shí)現(xiàn)程序進(jìn)行了設(shè)計(jì),基于機(jī)智云物聯(lián)網(wǎng)云平臺實(shí)現(xiàn)了電流信號的實(shí)時采集,診斷指標(biāo)的實(shí)時計(jì)算,電流頻譜的實(shí)時顯示,電機(jī)功率的實(shí)時監(jiān)測以及系統(tǒng)下位機(jī)與屏顯模塊、移動端 APP 兩個平臺之間的信息交互。

實(shí)物工作情況圖如下:

a1b0a4ae-3f59-11ed-b180-dac502259ad0.png

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
收藏 人收藏

    評論

    相關(guān)推薦

    工業(yè)聯(lián)網(wǎng)(IOT)平臺是什么

    、集成和智能化管理,從而為企業(yè)帶來前所未有的生產(chǎn)效率提升和資源配置優(yōu)化。 工業(yè)聯(lián)網(wǎng)(IoT)平臺的定義 工業(yè)
    的頭像 發(fā)表于 09-19 14:16 ?81次閱讀

    光伏電站故障預(yù)警與在線監(jiān)測智能診斷系統(tǒng) 一鍵運(yùn)檢 多維度故障對比

    光伏電站故障預(yù)警與在線監(jiān)測智能診斷系統(tǒng)|一鍵運(yùn)檢|多維度故障對比 光伏電站故障預(yù)警與在線監(jiān)測智能診斷系統(tǒng)是專為光伏電站設(shè)計(jì)的智能化運(yùn)維管理工具。該系統(tǒng)基于設(shè)備智能監(jiān)測、應(yīng)用算法模型進(jìn)行設(shè)備智能
    的頭像 發(fā)表于 07-30 15:33 ?358次閱讀

    聯(lián)網(wǎng)平臺是什么

    隨著信息技術(shù)的迅猛發(fā)展,聯(lián)網(wǎng)(IoT)已經(jīng)成為推動社會進(jìn)步和產(chǎn)業(yè)升級的重要力量。聯(lián)網(wǎng)平臺
    的頭像 發(fā)表于 07-25 16:51 ?370次閱讀

    應(yīng)用案例 基于聯(lián)網(wǎng)工控屏的工業(yè)離心機(jī)設(shè)備監(jiān)控系統(tǒng)

    現(xiàn)代工業(yè)生產(chǎn)中,離心機(jī)作為關(guān)鍵分離設(shè)備,在生產(chǎn)中扮演重要角色。隨信息技術(shù)發(fā)展,離心機(jī)智能化水平提高,企業(yè)將聯(lián)網(wǎng)工控屏與離心機(jī)結(jié)合,提高設(shè)備
    的頭像 發(fā)表于 07-04 14:50 ?224次閱讀
    應(yīng)用案例  基于<b class='flag-5'>物</b><b class='flag-5'>聯(lián)網(wǎng)</b>工控屏的工業(yè)<b class='flag-5'>離心</b>機(jī)設(shè)備監(jiān)控<b class='flag-5'>系統(tǒng)</b>

    聯(lián)網(wǎng)平臺地圖數(shù)據(jù)可視化

    隨著科技的飛速發(fā)展,聯(lián)網(wǎng)(IoT)技術(shù)已經(jīng)深入生產(chǎn)生活的方方面面,從智能家居到智慧城市,從工業(yè)自動化到農(nóng)業(yè)精準(zhǔn)管理,聯(lián)網(wǎng)正在以前所未有的速度改變著世界。而在
    的頭像 發(fā)表于 07-01 17:10 ?253次閱讀

    MQTT聯(lián)網(wǎng)平臺是什么

    ,在聯(lián)網(wǎng)(IoT)領(lǐng)域廣泛應(yīng)用于設(shè)備到設(shè)備以及設(shè)備到服務(wù)器的通信場景中。 聯(lián)網(wǎng)平臺(IoT
    的頭像 發(fā)表于 06-25 15:32 ?368次閱讀

    工業(yè)聯(lián)網(wǎng)平臺的應(yīng)用場景

    工業(yè)聯(lián)網(wǎng)(IIoT)平臺是將計(jì)算與聯(lián)網(wǎng)技術(shù)相
    的頭像 發(fā)表于 06-24 14:23 ?206次閱讀

    如何從0到1設(shè)計(jì)診斷系統(tǒng)

    診斷系統(tǒng)設(shè)計(jì)主要涵蓋了診斷方案設(shè)計(jì)、診斷需求定義和診斷數(shù)據(jù)庫開發(fā)。本文會逐一介紹這些環(huán)節(jié),以便更好地理解和把握診斷系統(tǒng)設(shè)計(jì)的全貌。
    的頭像 發(fā)表于 04-26 17:59 ?736次閱讀
    如何從0到1設(shè)計(jì)<b class='flag-5'>診斷系統(tǒng)</b>

    基于機(jī)智聯(lián)網(wǎng)平臺的智能垃圾回收箱與控制系統(tǒng)研究

    一款基于機(jī)械傳動、嵌入式系統(tǒng)聯(lián)網(wǎng)技術(shù)的智能垃圾回收箱及控制系統(tǒng)。結(jié)合功能需求設(shè)計(jì)了結(jié)構(gòu)方案,包括尺寸、開關(guān)門、防夾手機(jī)和稱重結(jié)構(gòu)等;選型硬件包括主控制器、電源、稱重檢測、顯示、電機(jī)
    發(fā)表于 04-09 17:25

    如何快速打造屬于自己的工業(yè)聯(lián)網(wǎng)平臺

    如何快速打造屬于自己的工業(yè)聯(lián)網(wǎng)平臺 工業(yè)聯(lián)網(wǎng)
    的頭像 發(fā)表于 01-25 16:51 ?452次閱讀
    如何快速打造屬于自己的工業(yè)<b class='flag-5'>物</b><b class='flag-5'>聯(lián)網(wǎng)</b><b class='flag-5'>云</b><b class='flag-5'>平臺</b>

    AioT聯(lián)平臺介紹

    系統(tǒng)介紹: AIoT智慧聯(lián)平臺是一個致力于打造物聯(lián)網(wǎng)大數(shù)據(jù)采集與分析、環(huán)境與狀態(tài)跟蹤監(jiān)控、全方位資產(chǎn)管理等綜合
    的頭像 發(fā)表于 01-11 13:09 ?751次閱讀
    AioT<b class='flag-5'>物</b>聯(lián)<b class='flag-5'>云</b><b class='flag-5'>平臺</b>介紹

    三相異步電動機(jī)和離心泵的區(qū)別

    三相異步電動機(jī)和離心泵的區(qū)別? 三相異步電動機(jī)和離心泵是工業(yè)生產(chǎn)中常用的兩種設(shè)備。它們的設(shè)計(jì)和工作原理有一些相似之處,但也存在一些明顯的區(qū)別。本文將詳盡、詳實(shí)、細(xì)致地比較三相異步電動機(jī)和離心泵的區(qū)別
    的頭像 發(fā)表于 12-19 10:01 ?841次閱讀

    19種的的動態(tài)工作原理和特點(diǎn)匯總整理

    工作原理:離心泵工作時,液體注滿殼,葉輪高速旋轉(zhuǎn),液體在離心力作用下產(chǎn)生高速度,高速液體經(jīng)過逐漸擴(kuò)大的殼通道,動壓頭轉(zhuǎn)變?yōu)殪o壓頭。
    發(fā)表于 11-30 09:49 ?641次閱讀

    離心泵控制系統(tǒng)如何實(shí)現(xiàn)遠(yuǎn)程監(jiān)控與運(yùn)維管理

    用戶的不喜。如果設(shè)備制造商還無法提供及時高效的維護(hù)服務(wù),那么就會影響到企業(yè)的形象口碑,客戶也不會有再次采購的意愿。 為實(shí)現(xiàn)離心泵控制系統(tǒng)的實(shí)時監(jiān)控與故障運(yùn)維,數(shù)之能提供工業(yè)數(shù)據(jù)可視化平臺,助力設(shè)備制造商實(shí)時監(jiān)管多個離
    的頭像 發(fā)表于 11-24 16:06 ?306次閱讀

    細(xì)說聯(lián)網(wǎng)聲發(fā)射監(jiān)測診斷系統(tǒng)

    聲發(fā)射監(jiān)測診斷系統(tǒng)組成:由智能聲波(聲發(fā)射)采集器、聯(lián)網(wǎng)平臺、客戶端組成。
    的頭像 發(fā)表于 11-15 14:55 ?550次閱讀
    細(xì)說<b class='flag-5'>物</b><b class='flag-5'>聯(lián)網(wǎng)</b>聲發(fā)射監(jiān)測<b class='flag-5'>診斷系統(tǒng)</b>