Building Automation eHouse – Kreye yon superpositions lojisyèl Windows ak algoritm koutim

Automation Kay eHouse ak lojisyèl PC pèmèt ou kreye superpositions pou sistèm automatisation bilding .
Sa a pèmèt ou yo kreye pwòp ou , algoritm endividyèl , yo pa aplike nan lojisyèl mikrolojisyèl oswa chofè ki kontwole seri a Automation Kay eHouse .
Pou sa ka fèt , nou bay itilizatè yo ak kòd yo sous lojisyèl (nan Delphi 5) . Yo ka konpile ak plus vèsyon an Delphi oswa itilize pou lang programmation lòt .
Nou konsyans te chwazi sa a vèsyon reyaksyonè jan yo yo deja disponib pou gratis pou pwogram amatè .
Yo travay jis kòm fiable sou Windows XP , Vista , Windows 7 tou de 32 ak 64 ti jan .
Sa a lojisyèl rele eHouseLogAnalizer ak aplikasyon sa yo modèl mòso bwa ki li fichye tèks jiska dat .
Li kapab jere ak kontwole pa KillWdt aplikasyon pou . ègzekutabl .
Aparans kle de aplikasyon an:

  • Lekti soti estati a ak non nan tout chofè yo
  • Li estati ak antre nan non yo nan tout chofè
  • Li mezi yo ak non yo nan tout chofè yo mezire entrées
  • Chaje tout done yo memwa a pwogram entèn , ki ka pli lwen trete avan yon aplikasyon

Aplikasyon an sèvi ak estati a nan kreye dosye nan dosye tèks nan yon anyè ‘ mòso bwa / kondisyon / ‘ ekstansyon ‘ . estati ‘ .
Se dosye a li sèlman nan evènman an nan chanjman ki fèt nan eHouse aplikasyon an . ègzekutabl .

Contrôleur done yo ki chaje nan dosye yo ka sa yo ” ehouse_rm_em_hm ” ki nan lis nan RM nan etalaj .

Anplis de sa , done yo ki te kenbe HeatManager varyab ki annapre yo:
bonfire_status: fisèl ; / / Ki dènye nouvèl sou feu pou HeatManager – Chemine chofaj Status panèl eHouse . ègzekutabl
boiler_status: fisèl ; / / Ki dènye nouvèl sou kasrol pou HM – estati nan eHouse nan panèl chofaj kasrol . ègzekutabl
Solar_status: fisèl ; / / Ki dènye nouvèl sou sistèm solè – estati nan eHouse solè panèl chofaj . ègzekutabl
recuperator_status: fisèl ; / / Ki dènye nouvèl sou gerizon , vantilasyon , chofaj lè – estati nan vantilasyon chofaj ak rekiperasyon chalè
HADC: etalaj [0 . . 15] nan doub ; / / Chalè Tanperati manadjè – tanperati mezi HeatManager
/ / Chalè manadjè endèks pou gen aksè dirèk nan etalaj HADC – Endis tanperati konstan pou lekti dirèk nan HeatManager tanperati
Konstitisyon HM_GWC = 3 ; / / Gw – Ground Chalè echanjeur
HM_KOM1 = 4 ; / / Fireplace manto 1 – Feu dlo jacket 1
HM_KOMKONV = 5 ; / / Fireplace konvekcyjne – feu konveksyon
HM_KOM2 = 6 ; / / Ponpye avyon 2 – feu dlo jacket 2 (backup)
HM_TWEWN = 7 ; / / Entèn chanm tanperati – entèn chanm tanperati
HM_SOLAR = 9 ; / / Pèseptè solèy – sistèm solè
HM_ZEWNPN = 8 ; / / Ekstèn tanperati nò – ekstèn tanperati nò
HM_ZEWNPD = 1 ; / / Ekstèn tanperati nan sid la – ekstèn tanperati sid
HM_KOC = 10 ; / / Tanperati kasrol – tanperati kasrol
HM_BANDOL = 11 ; / / CO / dlo cho tank desann – cho watter anba tanpon
HM_REQIN = 12 ; / / Netwaye Air récupérateurs D ' – klè lè gerizon D '
HM_REQOUT = 13 ; / / Sòti récupérateurs lakay – heaten kou fre gerizon lè nan sal – tanperati
HM_NAG = 14 ; / / Tanperati kontwole twa – valv fason pou chofaj ak pou radyatè – tanperati apre twa koupur fason pou chofaj dlo oswa lòt sistèm chofaj
HM_REQWYC = 15 ; / / Kay récupérateurs ekstrè sal – gerizon nan kay sal echapman tanporèr
HM_BANGORA = 2 ; / / Chofaj / dlo cho tank gora – dlo cho tanpon TOP
HM_BANSRO = 0 ; / / Chofaj / cho tank rezèvwa pou dlo yon mwayen pou – MIDDLE dlo cho tanpon
var HADCNames: etalaj [0 . . 15] nan fisèl ; / / Non yo nan detèktè yo (mezire entrain) HeatManagera
Debaz fonksyon EhouseLogAnalizer:
pwosedi init_heat_temperature_names ; / / Inisyalize ak / oswa detèktè tanperati li non yo nan HM
loadnames_rm pwosedi ; / / Chaj RoomManagerĂłw non (eHouse 1)
pwosedi readethernetdevs ; / / ♦ Li non yo chofè Ethernet (eHouse 2)
get_index_rm fonksyon (str: fisèl): nonm antye ; / / Returns endèks la nan tab la avèk rechèch roomManagerami pa estati non dosye
fonksyon GB (kr: Char): Boolean ; / / Retounen yon valè Boolean pou estati li
adc_hm pwosedi (str: fisèl ; Main Index: nonm antye) ; / / Konvèti fisèl la ak anrejistre tanperati nan HeatManagera nan estati Read
adc_rm pwosedi (str: fisèl ; Main Index: nonm antye) ; / / Konvèti fil de mezi analòg lè lekti RoomManagerĂłw nan estati
GBS fonksyon (b: Boolean): chèn ; / / Ekri Boolean nan fòm tèks (0 , 1)
Fonksyon RMDeviceIndexByName (str: fisèl): nonm antye ; / / Returns endèks la nan tab la avèk rechèch RoomManagerami ke chofè non
RMGetOutputStateNr fonksyon (endèks: nonb antye relatif ; OutputNr: nonm antye): Boolean ; / / Retounen RM leta a pwodiksyon [endèks] ak OutputNR nan nimewo pwodiksyon
RMGetOutputState fonksyon (endèks: nonb antye relatif ; OutputName: fisèl): Boolean ; / / Returns RM leta a pwodiksyon [endèks] epi yo rele soti OutputName
RMGetInputStateNr fonksyon (endèks: nonb antye relatif ; InputNr: nonm antye): Boolean ; / / Returns estati a nan RM nan opinyon [endèks] ak kantite InputNr antre
RMGetInputState fonksyon (endèks: nonb antye relatif ; InputName: fisèl): Boolean ; / / Returns estati a nan RM nan opinyon [endèks] ak non InputName a antre
RMGetTempNr fonksyon (endèks: nonb antye relatif ; InputNr: nonm antye): doub ; / / Retounen tanperati a RM [endèks] ak kantite InputNr antre
RMGetTemp fonksyon (endèks: nonb antye relatif ; InputName: fisèl): doub ; / / Retounen tanperati a RM [endèks] ak non InputName a antre
RMGetInvPercent fonksyon (endèks: nonb antye relatif ; InputName: fisèl): doub ; / / Returns yon mezi pousantaj nan do 100 % – x RM [endèks] ak non InputName a antre (an relasyon ak kontwolè a vòltaj rezèv)
RMGetInvPercentNr fonksyon (endèks: nonb antye relatif ; InputNr: nonm antye): doub ; / / Returns yon mezi pousantaj nan do 100 % – x RM [endèks] ak kantite InputNr antre (an relasyon ak kontwolè a vòltaj rezèv)
RMGetPercent fonksyon (endèks: nonb antye relatif ; InputName: fisèl): doub ; / / Returns yon mezi pousantaj nan [endèks] RM ak non InputName a antre (an relasyon ak kontwolè a vòltaj rezèv)
RMGetPercentNr fonksyon (endèks: nonb antye relatif ; InputNr: nonm antye): doub ; / / Returns yon mezi pousantaj nan do 100 % – x RM [endèks] ak non InputNr a antre (an relasyon ak kontwolè a vòltaj rezèv)
RMGetDeviceOutputState fonksyon (Devname: fisèl ; OutputName: fisèl): Boolean ; / / Returns eta a nan chofè a pwodiksyon rele Devname epi yo rele soti OutputName
RMGetDeviceInputState fonksyon (Devname: fisèl ; InputName: fisèl): Boolean ; / / Returns estati a nan D 'a chofè non an ak non InputName a Devname antre
HMGetTemp fonksyon (InputName: fisèl): doub ; / / Tounen tanperati a nan D 'a mezire rele pou HeatManagera InputName
HMGetTempNr fonksyon (InputNr: nonm antye): doub ; / / Tounen tanperati a nan nimewo ki D 'pou mezire pou HeatManagera InputNr (1 . . 16)
chk_int fonksyon (st: fisèl): nonm antye ; / / Safe konvèti yon kòd nan yon nonb antye relatif
pwosedi update_status ; / / Mizajou estati a nan tout chofè ki nan tablo a (yo dwe kouri detanzantan)
Test_save pwosedi ; / / Tès pwosedi yo ekri rezilta yo nan yon dosye tèks pou fasil
Inisyalize chofè a ak tout non yo yo te fè yon fwa yo fin aplikasyon an te kòmanse (FormCreate)
pwosedi TForm1 . FormCreate (Sender: TObject) ;
kòmanse
chemen: = getcurrentdir () ; / / Jwenn chemen aktyèl la nan pwogram nan dwe nan anyè a % eHouse_DIR % \ BIN \
chemen: = stringreplace (chemen , ‘ \ Bin ‘ , ‘ \ ‘ , [Rfignorecase]) ; / / Jwenn chemen pou fè eHouse aplikasyon – kouche eHouse nan chemen aplikasyon
loadnames_rm ; / / Chaj kontwolè non ehouse1 – charj chofè non an eHouse 1
init_heat_temperature_names ; / / Detèktè heatManagera chaj non
readethernetdevs ; / / Chaj contrôleur non Ethernet eHouse – lekti aparèy non eHouse 2
timer1 . Entèval: = 3000 ; / / Set siklik travay entèval nan milisgond – Sets tan an kòmanse tcheke done siklik
timer1 . Pèmèt: = vre ; / / Kòmanse travay otomatik (update estati – gen ladan kont chèk regilye nan done
update_status ; / / ♦ Li estati an premye
fen ;
Se siklik done kont kouran fè pa fonksyon an Timer1 (Timer1Timer) kouri nan yon entèval de tan mete nan paramèt nan Timer1 . Entèval (nan milisgond) .
pwosedi TForm1 . Timer1Timer (Sender: TObject) ;
var tf: textfile ;
kòmanse
update_status ; / / Konvèti estati a nan chofè a
Test_save ; / / Pou tès ekri tout rezilta nan yon dosye tèks
eseye / / kreye yon dosye makè pou aplikasyon an KillExec . ègzekutabl ki kapab ” gade ” aplikasyon anvan aksidan
AssignFile (tf , chemen + ‘ journaux \ boutèy demi lit – analizer . stp ‘ ) ;
/ / Notifye WDT Sa aplikasyon ap travay kòrèkteman lè l sèvi avèk stampfile ” ouvri sesyon \ boutèy demi lit – analizer . stp ”
reyekri (tf) ;
writeln (tf , ‘ 1 ‘ ) ;
finalman ;
closefile (tf) ;
fen ;
fen ;