Automasi Bangunan eHouse – Mewujudkan lapisan perisian Windows dan algoritma adat

Automasi Utama eHouse dengan perisian PC membolehkan anda untuk mewujudkan lapisan untuk sistem automasi bangunan .
Ini membolehkan anda untuk membuat anda sendiri , algoritma individu , tidak dilaksanakan dalam perisian tegar atau pemandu yang mengawal bersiri Automasi Utama eHouse .
Untuk tujuan ini , kami menyediakan pengguna dengan kod sumber perisian (dalam Delphi 5) . Mereka boleh disusun dengan versi baru Delphi atau digunakan untuk bahasa pengaturcaraan lain .
Kami sedar memilih ini versi kuno kerana mereka sudah boleh didapati secara percuma untuk program amatur .
Mereka bekerja hanya sebagai tepat pada Windows XP , Vista , Windows 7 kedua-dua 32 dan 64 bit .
Perisian ini dipanggil eHouseLogAnalizer dan aplikasi ini template balak yang membaca fail teks sehingga tarikh .
Ia boleh diuruskan dan dipantau oleh aplikasi KillWdt . exe .
Ciri-ciri utama permohonan:

  • Membaca keluar status dan nama-nama semua pemandu
  • Baca status dan masukkan nama semua pemandu
  • Baca ukuran dan nama-nama semua pemandu mengukur input
  • Muatkan semua data ke memori program dalaman , yang boleh terus diproses oleh aplikasi

Permohonan menggunakan status fail yang dicipta untuk fail teks dalam direktori ‘ log / status / ‘ lanjutan ‘ . status ‘ .
Fail dibaca hanya sekiranya perubahan dalam eHouse permohonan . exe .

Pengawal data dimuatkan dalam keadaan berikut Rekod ” ehouse_rm_em_hm ” disenaraikan dalam RM array .

Di samping itu , data disimpan HeatManager pembolehubah berikut:
bonfire_status: string ; / / Status unggun api untuk HeatManager – Status perapian pemanasan panel eHouse . exe
boiler_status: string ; / / Status dandang untuk HM – status eHouse dandang pemanasan panel . exe
Solar_status: string ; / / Status sistem solar – status eHouse pemanasan solar panel . exe
recuperator_status: string ; / / Status pemulihan , pengudaraan , pemanas udara – status pengudaraan pemanas dan pemulihan haba
HADC: array [0 . . 15] dua ; / / Suhu Haba pengurus – suhu ukuran HeatManager
/ / Indeks pengurus Haba untuk akses langsung pelbagai HADC – Indeks suhu Malar untuk membaca langsung HeatManager suhu
Malar HM_GWC = 3 ; / / GWC – Ground Penukar Haba
HM_KOM1 = 4 ; / / Pendiangan Kot 1 – Unggun api jaket air 1
HM_KOMKONV = 5 ; / / Pendiangan konvekcyjne – unggun api perolakan
HM_KOM2 = 6 ; / / Kebakaran SATAH 2 – unggun api jaket air 2 (sandaran)
HM_TWEWN = 7 ; / / Suhu bilik Dalaman – suhu bilik dalaman
HM_SOLAR = 9 ; / / Pemungut matahari – sistem solar
HM_ZEWNPN = 8 ; / / Luar suhu utara – luaran suhu utara
HM_ZEWNPD = 1 ; Suhu / / Luar selatan – luaran suhu selatan
HM_KOC = 10 ; / / Suhu dandang – suhu dandang
HM_BANDOL = 11 ; / / CO / tangki air panas ke – penampan bawah watter panas
HM_REQIN = 12 ; / / Bersih udara recuperator input – udara input pemulihan jelas
HM_REQOUT = 13 ; / / Output recuperator rumah – pemulihan heaten segar meniup udara ke bilik – suhu
HM_NAG = 14 ; / / Suhu dikawal tiga – injap cara untuk pemanasan dan untuk radiator – suhu selepas tiga cara potong untuk pemanas air atau lain-lain sistem pemanasan
HM_REQWYC = 15 ; / / Home recuperator ekstrak kotor – pemulihan dari rumah kotor ekzos temp
HM_BANGORA = 2 ; / / Pemanasan / tangki air panas Góra – TOP penampan air panas
HM_BANSRO = 0 ; / / Pemanasan / tangki penyimpanan air panas satu cara – TENGAH penampan air panas
var HADCNames: array [0 . . 15] tali ; / / Nama sensor (mengukur input) HeatManagera
Fungsi asas EhouseLogAnalizer:
prosedur init_heat_temperature_names ; / / Memula dan / atau sensor suhu membaca nama HM
loadnames_rm prosedur ; / / Nama RoomManagerĂłw Beban (eHouse 1)
prosedur readethernetdevs ; / / Reads nama pemandu Ethernet (eHouse 2)
fungsi get_index_rm (str: string): integer ; / / Pulangan indeks jadual dengan carian roomManagerami oleh status nama fail
fungsi gb (CHR: char): boolean ; / / Mengembalikan nilai boolean bagi status membaca
prosedur adc_hm (str: string ; indeks: integer) ; / / Menukar tali dengan suhu yang direkodkan status baca HeatManagera
prosedur adc_rm (str: string ; indeks: integer) ; / / Memeluk rentetan ukuran analog apabila membaca RoomManagerĂłw status
GBS fungsi (b: boolean): String ; / / Tulis boolean dalam bentuk teks (0 , 1)
Fungsi RMDeviceIndexByName (str: string): integer ; / / Pulangan indeks jadual dengan carian RoomManagerami oleh pemandu nama
Fungsi RMGetOutputStateNr (indeks: integer ; OutputNr: integer): boolean ; / / Pulangan RM output negeri [indeks] dan bilangan output OutputNR
Fungsi RMGetOutputState (indeks: integer ; OutputName: string): boolean ; / / Pulangan RM output negeri [indeks] dan dipanggil keluar OutputName
Fungsi RMGetInputStateNr (indeks: integer ; InputNr: integer): boolean ; / / Pulangan status RM input [indeks] dan bilangan kemasukan InputNr
Fungsi RMGetInputState (indeks: integer ; InputName: string): boolean ; / / Pulangan status RM input [indeks] dan nama InputName kemasukan
Fungsi RMGetTempNr (indeks: integer ; InputNr: integer): double ; / / Pemulangan suhu RM [indeks] dan bilangan kemasukan InputNr
Fungsi RMGetTemp (indeks: integer ; InputName: string): kembar ; / / Pemulangan suhu RM [indeks] dan nama InputName kemasukan
Fungsi RMGetInvPercent (indeks: integer ; InputName: string): kembar ; / / Pulangan ukuran peratusan sebanyak 100 terbalik % – x RM [] indeks dan nama kemasukan InputName (berhubung dengan pengawal voltan bekalan)
Fungsi RMGetInvPercentNr (indeks: integer ; InputNr: integer): double ; / / Pulangan ukuran peratusan sebanyak 100 terbalik % – x RM [] indeks dan beberapa InputNr kemasukan (berhubung dengan pengawal voltan bekalan)
Fungsi RMGetPercent (indeks: integer ; InputName: string): kembar ; / / Pulangan ukuran peratusan [indeks] RM dan nama kemasukan InputName (berhubung dengan pengawal voltan bekalan)
Fungsi RMGetPercentNr (indeks: integer ; InputNr: integer): double ; / / Pulangan ukuran peratusan sebanyak 100 terbalik % – x RM [] indeks dan nama kemasukan InputNr (berhubung dengan pengawal voltan bekalan)
Fungsi RMGetDeviceOutputState (Devname: string ; OutputName: string): boolean ; / / Pulangan negeri pemandu output dipanggil Devname dan dipanggil keluar OutputName
Fungsi RMGetDeviceInputState (Devname: string ; InputName: string): boolean ; / / Pulangan status input pemandu nama dan nama kemasukan Devname InputName
Fungsi HMGetTemp (InputName: string): kembar ; / / Pulangan suhu input pengukur dipanggil untuk HeatManagera InputName
HMGetTempNr fungsi (InputNr: integer): double ; / / Pulangan suhu bilangan input pengukur untuk HeatManagera InputNr (1 . . 16)
fungsi chk_int (st: string): integer ; / / Selamat untuk menukar rentetan kepada integer
prosedur update_status ; / / Update status semua pemandu dalam jadual (mesti dijalankan secara berkala)
Test_save prosedur ; / / Ujian prosedur untuk menulis keputusan ke fail teks untuk mudah
Memula pemandu dan semua nama-nama yang dibuat sekali permohonan bermula (FormCreate)
prosedur TForm1 . FormCreate (sender: TObject) ;
memulakan
laluan: = getcurrentdir () ; / / Dapatkan jalan semasa program mestilah dalam direktori % eHouse_DIR % \ BIN \
laluan: = stringreplace (laluan , ‘ \ Bin ‘ , ‘ \ ‘ , [Rfignorecase]) ; / / Dapatkan jalan eHouse permohonan – menetapkan eHouse permohonan jalan
loadnames_rm ; Nama pengawal / / Beban ehouse1 – beban nama pemandu eHouse 1
init_heat_temperature_names ; / / Beban sensor heatManagera nama
readethernetdevs ; / / Beban pengawal nama eHouse ethernet – membaca peranti eHouse nama 2
timer1 . Interval: = 3000 ; / Cyclic / Set tugas selang dalam milisaat – Set masa untuk mula menyemak data kitaran
timer1 . Enabled: = true ; / / Mula tugas automatik (status kemas kini – termasuk pemeriksaan tetap data
update_status ; / / Reads status pertama
akhir ;
Cyclic memeriksa data dilakukan oleh fungsi Timer1 (Timer1Timer) berjalan dalam tempoh masa yang ditetapkan dalam parameter Timer1 . Jeda (dalam milisaat) .
prosedur TForm1 . Timer1Timer (sender: TObject) ;
var tf: textfile ;
memulakan
update_status ; / / Menukarkan status pemandu
Test_save ; / / Untuk ujian menulis semua keputusan ke fail teks
cuba / / mencipta fail penanda bagi permohonan KillExec . exe yang boleh ” menonton ” permohonan sebelum kemalangan
AssignFile (tf , jalan + ‘ balak \ log – analizer . stp ‘ ) ;
/ / Beritahu WDT Bahawa permohonan bekerja yang betul dengan menggunakan stampfile ” Log \ – analizer . stp ”
menulis semula (tf) ;
writeln (tf , ‘ 1 ‘ ) ;
akhirnya ;
closefile (tf) ;
akhir ;
akhir ;