ZÁPISNÍK - v rámci programování sklouznete, ať chcete nebo nechcete do rutiny a vytvoříte si svůj styl. Následně nad nějakými problémy neuvažujete a řešíte je automaticky. Je potřeba nějaký impuls, abyste se dostali jinam. Sem-tam narazím na takovou věc, která mě zavede na lepší nebo přinejmenším jinou kolej a donutí mě zamyslet se nad mým a jiným řešením problému. Tyto věci jsem si soukromě porůznu poznamenával a až teď jsem se rozhodl psát si je na jedno místo, kde budou ležet pro další zpracování. Následně jsem si řekl, že pokud „nakopnou“ mě, tak by mohli pomoci i ostatním, proto jsem se rozhodl tento soubor umístit na web. Je to můj pomocný"sešit", proto příspěvky budou přidávány a odebírány podle toho, jak je budu zpracovávat a to bezVAROVÁNÍ! Berte to jen jako nástřel k zamyšlení a případné dotazy rád zodpovím.
*** (OK) zpracováno, použito, odzkoušeno ***
*Jak AND z OR? (OK)
---<NOT>----|OR|
| |---<NOT>-------(ST)
---<NOT>----|OR|
*Prostřídání od bitu? (OK)
--- Zavedeme si LONG proměnnou. Pokud je nějaký bit v jedničce, tak provedeme např. prostřídání a následně vynulování proměnné.
--- 19bit v LONG -> cca. 6 dní
--- 20bit v LONG -> cca. 12 dní
*Jak udělat pokud je jiná doba přeběhu ventilu při otevírání a zavírání?
--- PřeběhX MF [2,1] např.35,8 otevírá;zavírá;perioda 0,1s
--- Let PŘEBĚH = PřeběhX[int(AKCE < POLOHA), 0]
--- Valve AKCE, PŘEBĚH, POLOHA, ZAVÍRÁ, OTVÍRÁ
*Jak udělat teplotní integrál?
--- Integrál F inicializovat při teplém startu
--- IntegrálX MF [3,1] např.3,300,300 rozdíl teplot,integrály
--- ODCHYLKA F odchylka žádané od zkutečné
--- Let Integrál = if( ODCHYLKA > IntegrálX[0,0], Integrál + ODCHYLKA, 0)
--- Let Vyhodnocení integrálu
***tv_2_a_102_dso ->libSwitchHC
*Jak vyhodnotit poruchu snímače?
--- ix I pomocná proměnná
--- Fax F pomocná proměnná
--- Fbx F pomocná proměnná
--- Ni1000 #0.0,AI0_okamzita[0, 0], 6180 první snímač
--- Ni1000 #0.1,AI0_okamzita[1, 0], 6180 druhý snímač atd.
--- For ix, 0.000, 8.000 [počet snímačů], 1.000, :NONE *věrohodnost měření
--- Let AI0_F.(ix) = (AI0_okamzita[ix, 0] < Ti_Ameze[0, 0]) or (AI0_okamzita[ix, 0] > Ti_Ameze[0, 1])
--- EndFor
--- Let @poruchaSNÍMAČE = AI0_F != 0 *porucha snímače
--- Přepočty, filtrace jednotlivé snímače
--- If AI0_F.0, :NONE *první snímač
--- Let VYSLEDNA[0, 0] = AI0_okamzita[0, 0] *špatná teplota jen zobraz
--- Else :NONE
--- Let Fax = AI0_okamzita[0, 0] + Filtr[0, 1] *úprava hodnoty snímače
--- Filtr1R Fax, Fbx, Filtr[0, 0]
--- EndIf
--- Let VYSLEDNA[0, 0] = INT(Fbx * 10)/10 *na jedno desetinné místo
--- If AI0_F.1, :NONE *druhý snímač atd.
--- Let VYSLEDNA[1, 0] = AI0_okamzita[1, 0] *špatná teplota jen zobraz
--- Else :NONE
--- Let Fax = AI0_okamzita[1, 0] + Filtr[1, 1] *úprava hodnoty snímače
--- Filtr1R Fax, Fbx, Filtr[1, 0]
--- EndIf
--- Let VYSLEDNA[1, 0] = INT(Fbx * 10)/10 *na jedno desetinné místo
Jak vytvořit efektně programovou negaci digitálních vstupů? (OK)
--- DigIn #0, Ix0, 0x0000 * Digitální vstupy
--- Let DI0 = Ix0 ^ DI0_Neg * Negace digitálních vstupů podle DIO_Neg (1 = negované)
Jak realizovat průměr z několika snímačů jen pokud nejsou v poruše? (OK)
--- Let suma = 0; citac = 0
--- For Ix, 0.000, 2.000, 1.000 // druhá konstanta je (počet.průměrovaných.hodnot - 1)
--- Let suma = if (not Porucha.(Ix), suma+Hodnoty[Ix,0], suma)
--- Let citac = if (not Porucha.(Ix), citac+1, citac)
--- EndFor
--- Let Prumer = if(citac =! 0, suma/citac, implicitní hodnota)
Poslední komentáře