Digi-Key Electronics
Avtor: Rich Miron
2019_272_34
RazpoloĹžljivost nizkocenovnih pametnih senzorjev je omogoÄila poveÄanje ravni nadzora industrijske opreme do te toÄke, da je zdaj mogoÄe prediktivno vzdrĹževanje. Vendar zaradi zapletenosti potrebne strojne in aplikacijske programske opreme ostajajo za ĹĄtevilne razvijalce naloge zbiranja, strukturiranja, sporoÄanja, analiziranja in uporabe podatkov iz senzorjev za prediktivno vzdrĹževanje izmikajoÄe.
Zaradi hitro rastoÄega zanimanja za prediktivno vzdrĹževanje so dobavitelji polprevodnikov zaÄeli ponujati reĹĄitve celovitih platform, ki zdruĹžujejo veÄino potrebne strojne in programske opreme. S takimi platformami lahko razvijalci industrijskih aplikacij hitreje ter cenovno uÄinkoviteje vzpostavijo in izvajajo sisteme za prediktivno vzdrĹževanje.
Razvoj vzdrĹževanja od ugibanja k napovedovanju
Industrijski inĹženirji so mnogo let za zaznavanje teĹžav v strojih uporabljali vibracijsko analizo in druge metode. V preteklosti so se inĹženirji zanaĹĄali na dlanÄne analizatorje ali drugo namensko preizkusno opremo za zbiranje in obdelavo podatkov za analizo opreme. Koncepti IoT proizvajalcem zdaj omogoÄajo, da kritiÄno opremo opremijo z nizkocenovnimi senzorji, ki zagotavljajo podrobne podatkovne tokove, potrebne za spremljanje v realnem Äasu.
MoĹžnost neprekinjenega ocenjevanja delovanja opreme ponuja pomembno prednost za tovarniĹĄke operacije. Zdaj lahko industrijski inĹženirji uporabljajo aplikacije za lokalno ali oddaljeno spremljanje ter tako izboljĹĄajo ali celo zamenjajo programe naÄrtovanega roÄnega vzdrĹževanja, ki zahtevajo trud, tudi kadar ni prisotna nobena teĹžava, ali pa so po drugi strani prepozni, da bi prepreÄili stopnjevanje majhnih teĹžav do ĹĄkode na opremi. Namesto odzivanja na teĹžave, ki lahko zaustavijo proizvodne linije, lahko upravljavci tovarne uporabijo metode, ki temeljijo na senzorjih, da take teĹžave zaznajo vnaprej, pripravijo potrebne vire ali celo nadomestne stroje ter popravila izvedejo v Äasu, ki kar najmanj zmoti proizvodnjo.
Prediktivno vzdrĹževanje upravljavcem obratov ponuja priloĹžnost, da odkrijejo teĹžave, preden te privedejo do katastrofalnih odpovedi, s Äimer lahko ohranjajo integriteto proizvodne linije in varnost delavcev, hkrati pa te podatke tudi analizirajo za namene izboljĹĄanja procesov in izidov. Za razvijalce postane izziv priprava platforme, ki bi lahko zbirala podatke s pasovno ĹĄirino in loÄljivostjo, potrebnima za zaznavanje znakov osnovnih teĹžav v nadzorovani opremi.
Za vibracijsko analizo industrijski inĹženirji obiÄajno zbirajo vibracijske podatke v Äasovni in frekvenÄni domeni. IzkuĹĄeni inĹženirji lahko odkrijejo mehanske teĹžave v opremi Ĺže samo s pregledovanjem podatkov na teh dveh domenah. Primer: periodiÄni kratko trajajoÄi pulzi s ĹĄiroko frekvenÄno pasovno ĹĄirino obiÄajno nakazujejo, da je priĹĄlo do okvare komponente, kot je krogliÄni leĹžaj, zaradi Äesar pri vsakem zasuku udari ob steno svoje poti. Nasprotno pa so lahko dolgo trajajoÄi dogodki z ozko pasovno ĹĄirino znak, da komponente drgnejo ena ob drugo, kar bo sÄasoma privedlo do obrabe in morda odpovedi.
Za zanesljivo zajemanje takih podatkov pa morajo biti vibracijski senzorji dovolj robustni, da ohranijo svoje delovanje kljub nenadnim ĹĄokom, moÄnim vibracijam ali kakrĹĄnim koli drugim znaÄilnostim, ki so pogosto prisotne v industrijskih okoljih. Industrijska oprema lahko tudi pri obiÄajnem delovanju ustvari vibracije in mehanski ĹĄok, ki lahko preseĹžejo zmogljivosti starejĹĄih senzorjev vibracij. To teĹžavo je v veliki meri odpravil pojav senzorjev, ki temeljijo na tehnologiji mikromehanskih sistemov (MEMS). Senzorji MEMS, kot je STMicroelectronicsISM330DLC, lahko prenesejo impulze pospeĹĄkov do 10.000Â g za 0,2Â milisekunde (ms) in si ĹĄe vedno dovolj hitro opomorejo, da zagotavljajo meritve linearnega pospeĹĄka z obÄutljivostjo v mili-g.
Zanesljivi podatki iz senzorjev premikanja so kljuÄni za analizo napak, vendar so vibracije samo eden od indikatorjev zdravja stroja. IzkuĹĄeni inĹženirji lahko na podlagi podatkov o vibracijah zaznajo doloÄene naÄine okvare, podobno pa druge modalnosti senzorjev uporabljajo za doloÄitev Äasa od odkritja simptoma do funkcionalne odpovedi opreme, imenovanega interval potenciala do odpovedi (P-F). Primer: poveÄana poraba energije, hrup ali vroÄina pri veÄini strojev obiÄajno nakazujejo skrajĹĄani interval P-F (slika 1).
Da bi zajeli te dodatne indikatorje, morajo inĹženirji ustvariti senzorske sisteme, ki zmorejo zaznati najmanj vibracije, zvok, tlak, temperaturo in vlago. Po drugi strani pa lahko za razvijalce praktiÄni izzivi zdruĹževanja teh senzorjev v robustni zasnovi bistveno zakasnijo napredek proti veÄjim ciljem, povezanim z analizo opreme. Razvojni komplet STMicroelectronicsSTEVAL-BFA001V1B in pridruĹžena programska oprema zagotavljata celovito platformo, ki inĹženirjem omogoÄa uporabo aplikacij za nadzor opreme in prediktivno vzdrĹževanje.
ReferenÄna platforma
Razvojni komplet STEVAL-BFA001V1B sluĹži kot referenÄna zasnova in Ĺže pripravljena reĹĄitev, ki vkljuÄuje industrijsko senzorsko ploĹĄÄo in pridruĹženo programsko opremo za prediktivno vzdrĹževanje. PloĹĄÄa je celoten samostojni senzorski sistem (slika 2). ZdruĹžuje visokozmogljivi MCU STMicroelectronics 32-bit ARMÂŽÂ CortexÂŽ-M4 STM32F469 s celotnim naborom senzorjem, vkljuÄno s senzorjem gibanja ISM330DLC za prej omenjeno merjenje vibracij in tudi naslednje senzorje druĹžbe STMicroelectronics:
- senzor temperature in vlage HTS221
- senzor tlaka LPS22HBTR
- mikrofon MEMSÂ MP34DT05TR-A
2-megabajtni Flash pomnilnik, integriran v mikrokontroler, sistem dopolnjuje z 1-megabajtnim EEPROM-omM95M01-DF druĹžbe STMicroelectronics ter zajema zmogljivosti upravljanja napajanja s stikalnim regulatorjem STMicroelectronics L6984A in nizkonapetostnim (LDO) regulatorjem LDK220. Za poenostavitev razmestitve v industrijskih okoljih ploĹĄÄa na eni strani zajema prikljuÄek M12, podprt s sprejemnikom-oddajnikom IO-Link ST L6362A. Na drugi strani ploĹĄÄe razĹĄiritveni prikljuÄek razvijalcem omogoÄa dostop do GPIO izhodov mikrokontrolerja, analogno/digitalnegapretvornika (ADC) in serijskega I2C vmesnika. Rezultat je robusten sistem, ki je samo rahlo veÄji od industrijskega kabla M12, vendar je zmoĹžen izpolnjevanja celotnega nabora zahtev za nadzor opreme (slika 3).
Razvijalci lahko uporabijo kabel M12, vkljuÄen v komplet, ali dodajo lastne prikljuÄke M12. Komplet zajema adaptersko ploĹĄÄo za povezavo serijskega izhoda senzorske ploĹĄÄe M12 z vmesnikom ST-LINK/V2-1, ki je priloĹžen razvojni ploĹĄÄi STMicroelectronics STM32 Nucleo-64. Napajanje ploĹĄÄe lahko razvijalci sami zagotovijo prek kabla M12 ali pa kabel M12 prikljuÄijo v razvojno ploĹĄÄo IO-Link ST STEVAL-IDP004V1. S to ploĹĄÄo IO-Link se zagotovi najhitrejĹĄa pot do razvoja, saj lahko razvijalci hitro poveĹžejo veÄ industrijskih senzorskih ploĹĄÄ in za njihovo konfiguracijo uporabijo grafiÄni uporabniĹĄki vmesnik (GUI) STEVAL-IDP005V1-GUI_v1.0 druĹžbe STMicroelectronics, ki temelji na Windows operacijskem sistemu (slika 4).
Po zakljuÄku nastavitve na konfiguracijskem zaslonu se lahko razvijalci pomaknejo na zaslon Vibration Analysis (Analiza vibracij) za zbiranje podatkov. Po kliku gumba za zagon si lahko razvijalci ogledajo meritve vibracijske frekvence in rotacijske hitrosti, zbrane na oseh x, y in z (slika 5). LoÄen zaslon za okoljske meritve (zavihek ENV Measures) razvijalcem omogoÄa ogled podatkov o tlaku, temperaturi in vlagi, ki so jih zbrale posamezne senzorske ploĹĄÄe.
Razvoj programske opreme
Aplikacija GUI sicer zagotavlja hiter dostop do zmogljivosti senzorske ploĹĄÄe, vendar bodo razvijalci potrebovali prilagodljivejĹĄi dostop za ustvarjanje lastnih aplikacij za prediktivno vzdrĹževanje. Za razvoj po meri komplet programske opreme STSW-BFA001V1 druĹžbe STMicroelectronics ponuja celoten nabor modulov C programske opreme, vkljuÄno z gonilniki, knjiĹžnicami in vzorÄnimi aplikacijami (slika 6).
Med vzorci programske opreme komplet STSW-BFA001V1 zajema aplikacijo za spremljanje pogojev, ki predstavlja postopek zbiranja senzorskih podatkov in generiranja frekvenÄne domene, RMS ter vrednosti vrĹĄnega pospeĹĄka iz senzorja gibanja. Za produkcijsko zasnovo lahko razvijalci te podatke naloĹžijo v gostiteljsko aplikacijo, zasnovano za odkrivanje okvar. Aplikacija za prediktivno vzdrĹževanje razĹĄiri to temeljno zbirko podatkov s funkcijami, zasnovanimi za generiranje opozoril o moĹžnih okvarah.
Ta pristop ima ĹĄtevilne prednosti, najprivlaÄnejĹĄa pa je moĹžnost razĹĄiritve intervalov P-F z zagotavljanjem zgodnjega zaznavanja pogojev, ki signalizirajo potencialne okvare. Druga prednost je premik zaznavanja okvare bliĹžje k opremi, kar omogoÄa zgodnejĹĄe prepoznavanje okvar.
Aplikacija druĹžbe STMicroelectronics za prediktivno vzdrĹževanje prikazuje, kako lahko razvijalci izvajajo to zgodnje zaznavanje s primerjavo odÄitkov senzorjev z nizom vrednosti pragov za komponente hitrosti, pospeĹĄka in frekvence. V proizvodnem sistemu je izbira teh vrednosti pragov odvisna od ĹĄtevilnih dejavnikov, ki v tem Älanku niso zajeti.
Vendar je treba opozoriti, da obstajajo standardi, ki sluĹžijo kot referenca. Primer: standard ISOÂ 10816 podaja smernice glede vibracijskih vrednosti za ĹĄtiri razrede strojev, ki delujejo v ĹĄtirih razliÄnih obmoÄjih delovanja, vkljuÄno s cono A (dobro), cono B (zadovoljivo), cono C (neprimerno za neprekinjeno delovanje) in cono D (kritiÄno, z moĹžnostjo ĹĄkode pri neprekinjenem delovanju). Kot nakazujejo te cone, je treba upravljavce opozoriti, kadar ravni vibracij stroja doseĹžejo cono C, ko te ravni doseĹžejo cono D, pa se mora sproĹžiti nujnejĹĄi alarm.
DruĹžba STMicroelectronics je svojo aplikacijo za prediktivno vzdrĹževanje razvila tako, da podpira ta specifiÄni model uporabe. Glava dokumenta (MotionSP_Threshold.h) znotraj nabora programske opreme vzorÄnih aplikacij zajema vrednosti pragov za ravni opozoril in alarmov. V tem primeru je druĹžba STMicroelectronics definirala prag opozoril pri vrednostih za delovanje, ki jih standard ISOÂ 10816 priporoÄa kot mejo med conama B in C. Vrednosti pragov za alarme so vrednosti, ki jih standard ISOÂ 10816 doloÄa kot mejo med conama C in D. Ker tipiÄni senzor gibanja, kot je STMicroelectronics ISM330DLC, posreduje podatke v ravninah x, y in z, so zagotovljene tri vrednosti, vsaka za prag opozorila in alarma za vsako nadzorovano koliÄino â hitrost RMS, pospeĹĄek in hitra Fouriereva transformacija (FFT). Aplikacija uporablja prag za FFT-je v ĹĄtirih razliÄnih spektralnih podrazponih.
Rezultat je nabor vrednosti pragov, konsistenten s ĹĄirokim naborom realnih stanj delovanja stroja. Kljub temu bodo razvijalci seveda morali te vrednosti pragov za opozorila in alarme prilagoditi tako, da se bodo ujemali z ustreznimi znaÄilnostmi njihove nadzorovane opreme ter sploĹĄnimi cilji za opozorila in alarme.
Glava dokumenta zagotavlja operativne cilje za nadzor, glavna rutina (main.c) pa zagotavlja logiko za zaznavanje odklonov pragov v podatkih, ki so jih zbrali senzorji industrijske ploĹĄÄe. Po inicializiaciji strojne opreme in povezanih struktur programske opreme glavna rutina vstopi v neskonÄno zanko za generiranje vrednosti FFT za vibracijske podatke, merjenje vrednosti RMS in vrĹĄnega pospeĹĄka, zaznavanje preseganja pragov ter oddajanje opozoril (izpis 1), glej program 1.
Ko se izvajanje zanke nadaljuje, gonilniki senzorjev in upravitelji storitev v ploĹĄÄi podpirajo paketno branje podatkov ter polnijo medpomnilnike, spremljane z rutinami na viĹĄjih ravneh. VzorÄna programska oprema druĹžbe STMicroelectronics dodeli upravitelje na ravni aplikacije, kar razvijalcem omogoÄa, da zlahka zamenjajo lastne rutine in izpolnijo edinstvene zahteve, ne da bi morali posegati globlje v arhitekturo programske opreme.
Pri vsaki ponovitvi glavne zanke glavna rutina kliÄe MotionSP_TimeDomainAlarm(), da preveri pragove za hitrost RMS in vrĹĄni pospeĹĄek. Za preverjanja frekvenÄne domene glavna zanka ponavljajoÄe kliÄe MotionSP_Vibration_manager_run(), ki posredno kliÄe rutino drugega modula, MotionSP_FrequencyDomainProcess(), ta pa nazadnje kliÄe kalkulacijsko rutino FFT vmesne programske opreme, Äe je zahtevani kroĹžni medpomnilnik (AccCircBuffer) zadosti poln in je omogoÄen FFT (izpis 2). Ko se to zgodi, aplikacija za nadzor osnovnih pogojev uporabi isti vzorec, glej program 2.
Na koncu vsakega obdobja merjenja aplikacija uporabi ĹĄe eno rutino (MotionSP_TotalStatusAlarm()), s katero preveri vsak atribut podatkov o gibanju ter nastavi alarm frekvenÄne domene (pTotalFDAlarm) in alarm Äasovne domene (pTotalTDAlarm) na najviĹĄjo alarmno vrednost (izpis 3). Nato glavna rutina z izpisa 1 odda te alarme prek UART povezave, preden znova inicializira sistem za naslednje obdobje merjenja, glej program 3.
VzorÄna aplikacija druĹžbe STMicroelectronics razvijalcem omogoÄa hitro ocenjevanje funkcij in funkcionalnosti napovednega vzdrĹževanja. Äe poenostavimo: razvijalci lahko preprosto izvedejo povezavo z industrijsko senzorsko ploĹĄÄo prek programa za emulacijo terminalov in si takoj zaÄnejo ogledovati izmerjene vrednosti ter stanje opozoril/alarmov.
Za proizvodno aplikacijo pa bodo razvijalci verjetneje uporabili serijski vmesnik senzorske ploĹĄÄe za povezavo z viri v smeri proti toku za bolj prefinjeno spremljanje in nadzor aplikacije. VeÄji ponudniki storitev v oblaku za prediktivno vzdrĹževanje Ĺže ponujajo napredne reĹĄitve za strojno uÄenje. Microsoft Azure na primer v svoji ponudbi nabora pospeĹĄevalnikov reĹĄitev IoT ponuja reĹĄitev za prediktivno vzdrĹževanje.
Razvijalci si lahko celo zagotovijo zgodnji zaÄetek s pospeĹĄevalnikom Azure, ki zajema simulirane naprave, ki lahko zagotovijo veÄ tokov senzorskih podatkov, prevzete iz Nasinih turboreaktivnih motorjev. Na koncu verige orodij za ta pospeĹĄevalnik storitve strojnega uÄenja Azure zagotovijo priuÄeni model na podlagi teh podatkov. V nekaterih primerih lahko razvijalci izkoristijo prenos metod uÄenja, ki uporabljajo predhodno priuÄeni model, kot je model napovednega vzdrĹževanja Azure, kot izhodiĹĄÄno toÄko za lasten model strojnega uÄenja po meri.
ZakljuÄek
Zaradi rastoÄega zanimanja za prediktivno vzdrĹževanje so razvijalci primorani zagotavljati hitro razmestitev robustnih sistemov z veÄ senzorji, primernih za industrijska okolja. Celovita razvojna reĹĄitev druĹžbe STMicroelectronics zdruĹžuje strojno opremo senzorske ploĹĄÄe in okolje programske opreme, zasnovano posebej za zahteve napovednega vzdrĹževanja.
Z uporabo te reĹĄitve sistema lahko razvijalci takoj zaÄnejo vrednotiti prediktivno vzdrĹževanje, hitro razvijejo lastne aplikacije za prediktivno vzdrĹževanje in izkoristijo nastajajoÄe vire strojnega uÄenja, ki temelji na oblaku, da ustvarijo bolj prefinjene zmogljivosti napovednega vzdrĹževanja.
www.digikey.com
program 1
Izpis 1: Aplikacija druĹžbe STMicroelectronics za prediktivno vzdrĹževanje prikazuje uporabo neskonÄne zanke za identificiranje ter oddajanje alarmov na podlagi meritev frekvenÄne in Äasovne domene senzorskih podatkov. (Vir kode: STMicroelectronics)
/* Initialize the motion sensor */ MotionSensorInit(); MotionSP_TimeDomainAlarmInit(&sTdAlarm,&sTimeDomainVal,&sTdRmsThresholds, &sTdPkThre sholds); MotionSP_FreqDomainAlarmInit(&FDWarnThresh,&FDAlarmThresh,&THR_Fft_Alarms,MotionSP_Para meters.subrange_num); /****************************************************************************/ while (1) { /* Vibration Analysis */ MotionSP_Vibration_manager_run(&MotionSP_Parameters); /* Status check during Time domain Analysis */ MotionSP_TimeDomainAlarm(&sTdAlarm,&sTimeDomainVal, &sTdRmsThresholds, &sTdPkThresholds, &sTimeDomain); if(FinishAvgFlag == 1) { SendVibrationResult(); TD_Thresholds_DataSend(&sTdAlarm,&sTimeDomainVal); MotionSP_FreqDomainAlarm (&SRAmplitude, FDWarnThresh, FDAlarmThresh, MotionSP_Parameters.subrange_num, &THR_Check, &THR_Fft_Alarms); FD_Thresholds_DataSend(MotionSP_Parameters.subrange_num, &SRBinVal, &THR_Fft_Alarms, &THR_Check); MotionSP_TotalStatusAlarm(&sTdAlarm, &THR_Fft_Alarms, MotionSP_Parameters.subrange_num, &TotalTDAlarm, &TotalFDAlarm); Thresholds_DataSend(&TotalTDAlarm, &TotalFDAlarm); FinishAvgFlag = 0; RestartFlag = 1; // wait while the UART is transmitting while((HAL_UART_GetState(&hSrvUart) & HAL_UART_STATE_BUSY_TX ) == HAL_UART_STATE_BUSY_TX); strcpy((char *)SrvUartTxBuffer, "rn|#################### Next Measurement ########### #########rn"); HAL_UART_Transmit(&hSrvUart, SrvUartTxBuffer, strlen((char *)SrvUartTxBuffer), SRV_UART_TI MEOUT_MAX); nadaljevanje programa 1 nadaljevanje programa 1 MotionSP_TimeDomainAlarmInit(&sTdAlarm,&sTimeDomainVal, &sTdRmsThresholds,&sTdPkThresholds); MotionSP_FreqDomainAlarmInit(&FDWarnThresh, &FDAlarmThresh, &THR_Fft_Alarms, MotionSP_Parameters.subrange_num); /* Configure the Hardware using parameters in RAM */ MotionSP_Vibration_manager_init(&MotionSP_Parameters, 1); Accelero_MeasurementInit(); } }
program 2
Izpis 2: Ta rutina iz vzorÄne aplikacije druĹžbe STMicroelectronics prikazuje mehanizem za delo s kroĹžnim medpomnilnikom podatkov iz senzorja gibanja za analizo frekvenÄne domene. (Vir kode: STMicroelectronics)
/** * @brief Frequency Domain Processing starting from the Circular Buffer * @param pMotionSP_Parameters: Pointer to board parameters * @return None */ void MotionSP_FrequencyDomainProcess(sMotionSP_Parameter_t *pMotionSP_Parameters) { #define FFTSIZEDELTA (MotionSP_Parameters.size*((100.0-MotionSP_Parameters.ovl)/100.0)) if (fftIsEnabled == 1) { if (!accCircBuffIndexWaitForOvf) { if (AccCircBuffer.IdPos >= accCircBuffIndexForFft) { MotionSP_FFT_All_Axes(); accCircBuffIndexForFft += FFTSIZEDELTA; if (accCircBuffIndexForFft >= AccCircBuffer.Size) { accCircBuffIndexForFft -= AccCircBuffer.Size; accCircBuffIndexWaitForOvf = 1; } } } else { if (AccCircBuffer.Ovf) { AccCircBuffer.Ovf = 0; accCircBuffIndexWaitForOvf = 0; } } } }
program 3
Izpis 3: VzorÄna aplikacija druĹžbe STMicroelectronics prikazuje vzorec osnovne zasnove za delo z veÄ viri alarmov v aplikaciji za prediktivno vzdrĹževanje. (Vir kode: STMicroelectronics)
void MotionSP_TotalStatusAlarm(sTimeDomainAlarm_t *pTdAlarm, sFreqDomainAlarm_t *pTHR_Fft_Alarms, uint8_t subrange_num, Alarm_Type_t *pTotalTDAlarm, Alarm_Type_t *pTotalFDAlarm) { Alarm_Type_t TempAlarm = GOOD; Alarm_Type_t TempFDAlarm = GOOD; TempAlarm = MAX4(TempAlarm, pTdAlarm->PK_STATUS_AXIS_X, pTdAlarm->PK_STATUS_AXIS_Y, pTdAlarm->PK_STATUS_AXIS_Z); TempAlarm = MAX4(TempAlarm, pTdAlarm->RMS_STATUS_AXIS_X, pTdAlarm->RMS_STATUS_AXIS_Y, pTdAlarm->RMS_STATUS_AXIS_Z); for(int i=0; i<subrange_num; i++) { TempFDAlarm = MAX4(TempFDAlarm, pTHR_Fft_Alarms->STATUS_AXIS_X[i], pTHR_Fft_Alarms->STATUS_AXIS_Y[i], pTHR_Fft_Alarms->STATUS_AXIS_Z[i]); } *pTotalTDAlarm = TempAlarm; *pTotalFDAlarm = TempFDAlarm; }