შენობა ავტომატიზაცია eHouse – შექმნა Windows პროგრამული გადაფარვას და საბაჟო ალგორითმები

სახლის ავტომატიზაციის eHouse ერთად PC პროგრამული უზრუნველყოფის საშუალებას გაძლევთ შექმნათ გადაფარვას სამშენებლო ავტომატიზაციის სისტემა .
ეს საშუალებას გაძლევთ შექმნათ თქვენი საკუთარი , ინდივიდუალური ალგორითმები , არ განხორციელდა firmware ან მძღოლი პროგრამული უზრუნველყოფის რომ აკონტროლებს სერიული სახლის ავტომატიზაციის eHouse .
ამ მიზნით , ჩვენ უზრუნველყოფს მომხმარებლების პროგრამული წყაროს კოდები (in Delphi 5) . ისინი შეიძლება კომპილირებულია უფრო ახალი ვერსიები Delphi ან გამოყენებული იქნება სხვა პროგრამირების ენები .
ჩვენ შეგნებულად აირჩია ეს არქაული ვერსიები, რადგან ისინი უკვე ხელმისაწვდომია უფასოდ სამოყვარულო პროგრამა .
ისინი მუშაობენ, ისევე როგორც საიმედოდ on Windows XP , Vista , Windows 7 როგორც 32 და 64 bit .
ამ პროგრამული უზრუნველყოფის მოუწოდა eHouseLogAnalizer და ამ მორების განაცხადების თარგი რომ წაიკითხონ ტექსტი ფაილი დღემდე .
ეს შეიძლება იყოს მოახერხა და მონიტორინგს განაცხადების KillWdt . exe .
ძირითადი მახასიათებლები განაცხადის:

  • წაკითხვის გარეთ სტატუსი და სახელები ყველა მძღოლები
  • მოხმარებლის მდგომარეობა და შევა სახელები ყველა მძღოლები
  • მოხმარებლის გაზომვები და სახელები ყველა მძღოლები საზომი საშუალებებით
  • ჩავტვირთოთ ყველა მონაცემების შიდა პროგრამის მეხსიერება , რომელიც შეიძლება შემდგომი დამუშავდა განაცხადის

განაცხადის იყენებს სტატუსის შექმნილი ფაილების ტექსტი ფაილი დირექტორია ‘ ჟურნალები / სტატუსი / ‘ გაფართოება ‘ . სტატუსი ‘ .
ფაილის წაკითხვის მხოლოდ იმ შემთხვევაში, ცვლილებები განაცხადის eHouse . exe .

მონაცემთა კონტროლერები ჩატვირთვის შემდეგ ინსტანციაში ჩანაწერები ” ehouse_rm_em_hm ” ჩამოთვლილი მასივი RM .

გარდა ამისა , მონაცემები ინახება HeatManager შემდეგ ცვლადებს:
bonfire_status: სიმებიანი ; / / სტატუსი კოცონი ამისთვის HeatManager – სტატუსი ბუხარი გათბობა პანელი eHouse . exe
boiler_status: სიმებიანი ; / / სტატუსი საქვაბე ამისთვის HM – სტატუსის საქვაბე გათბობის პანელი eHouse . exe
Solar_status: სიმებიანი ; / / სტატუსი მზის სისტემაში – სტატუსი მზის გათბობის პანელი eHouse . exe
recuperator_status: სიმებიანი ; / / სტატუსი recuperation , სავენტილაციო , ჰაერის გათბობა – სტატუსის გათბობის სავენტილაციო და გათბობის აღდგენა
HADC: array [0 . . 15] ორმაგი ; / / სითბოს ტემპერატურა მენეჯერი – ტემპერატურის გაზომვა HeatManager
/ / სითბოს მენეჯერი ინდექსების პირდაპირი დაშვება HADC მასივი – მუდმივი ტემპერატურის მაჩვენებლები პირდაპირი მოსმენით ტემპერატურის HeatManager
Const HM_GWC = 3 ; / / GWC – ადგილზე სითბოს exchanger
HM_KOM1 = 4 ; / / ბუხარი Coat 1 – კოცონი წყლის ქურთუკი 1
HM_KOMKONV = 5 ; / / ბუხარი konvekcyjne – convection კოცონი
HM_KOM2 = 6 ; / / ცეცხლი თვითმფრინავი 2 – კოცონი წყლის ქურთუკი 2 (სარეზერვო)
HM_TWEWN = 7 ; / / შინაგან ოთახის ტემპერატურაზე – შიდა ოთახის ტემპერატურაზე
HM_SOLAR = 9 ; / / კოლექტორი მზე – მზის სისტემა
HM_ZEWNPN = 8 ; / / გარე ტემპერატურა ჩრდილოეთით – გარე ტემპერატურა ჩრდილოეთით
HM_ZEWNPD = 1 ; / / გარე ტემპერატურა სამხრეთ – გარე ტემპერატურა სამხრეთ
HM_KOC = 10 ; / / ტემპერატურა საქვაბე – ქვაბის ტემპერატურა
HM_BANDOL = 11 ; / / CO / ცხელი წყლით სატანკო ქვემოთ – ცხელი watter ბოლოში ბუფერული
HM_REQIN = 12 ; / / სუფთა ჰაერი recuperator შეყვანის – recuperation წმინდა ჰაერის შეყვანის
HM_REQOUT = 13 ; / / გამოყვანის recuperator მთავარი – heaten recuperation ახალი დარტყმა ჰაერი ოთახი – ტემპერატურა
HM_NAG = 14 ; / / ტემპერატურა კონტროლირებადი სამი – გზა სარქველი გათბობის და ვენტილატორები – ტემპერატურის სამი გზები გამომრთველი წყლის გამაცხელებელი ან სხვა გათბობა
HM_REQWYC = 15 ; / / მთავარი recuperator ექსტრაქტი ბინძური – recuperation სახლიდან ბინძური გამონაბოლქვი temp
HM_BANGORA = 2 ; / / გათბობა / ცხელი წყლით სატანკო გორა – ცხელი წყლით ბუფერულ TOP
HM_BANSRO = 0 ; / / გათბობა / ცხელი წყლით შენახვის სატანკო საშუალებით – MIDDLE ცხელი წყლით ბუფერულ
var HADCNames: array [0 . . 15] სიმებიანი ; / / სახელების სენსორების (გამზომი საშუალებებით) HeatManagera
ძირითადი ფუნქციები EhouseLogAnalizer:
პროცედურა init_heat_temperature_names ; / / ინიციალიზაცია და / ან ტემპერატურის სენსორები სახელების წაკითხვა HM
პროცედურა loadnames_rm ; / / Load RoomManagerĂłw სახელები (eHouse 1)
პროცედურა readethernetdevs ; / / წაკითხვა Ethernet მძღოლი სახელები (eHouse 2)
get_index_rm ფუნქცია (ქუჩა: string): მთელი რიცხვი ; / / ანაზღაურება ინდექსი მაგიდასთან roomManagerami ძებნა ფაილის სახელი სტატუსი
ფუნქციის Gb (Chr: char): ლოგიკური ; / / აბრუნებს ლოგიკური მნიშვნელობა წაკითხვის სტატუსი
adc_hm პროცედურა (ქუჩა: სიმებიანი ; ინდექსი: მთელი რიცხვი) ; / / გარდაქმნის სიმებიანი ერთად ჩაიწერა ტემპერატურებზე წაკითხული მდგომარეობა HeatManagera
adc_rm პროცედურა (ქუჩა: სიმებიანი ; ინდექსი: მთელი რიცხვი) ; / / გარდაქმნის სიმებიანი ანალოგური გაზომვის კითხვისას მდგომარეობა RoomManagerĂłw
gbs ფუნქცია (ბ: ლოგიკური): სიმებიანი ; / / დაწერეთ ლოგიკური ტექსტში ფორმა (0 , 1)
RMDeviceIndexByName ფუნქცია (ქუჩა: string): მთელი რიცხვი ; / / ანაზღაურება ინდექსი მაგიდასთან RoomManagerami ძებნა სახელის მძღოლი
RMGetOutputStateNr ფუნქცია (ინდექსი: მთელი რიცხვი ; OutputNr: მთელი რიცხვი): ლოგიკური ; / / დაბრუნება გამომავალი სახელმწიფო RM [ინდექსი] და გამომავალი ხმების OutputNR
RMGetOutputState ფუნქცია (ინდექსი: მთელი რიცხვი ; OutputName: string): ლოგიკური ; / / ანაზღაურება გამომავალი სახელმწიფო RM [ინდექსი] და მოუწოდა out OutputName
RMGetInputStateNr ფუნქცია (ინდექსი: მთელი რიცხვი ; InputNr: მთელი რიცხვი): ლოგიკური ; / / ანაზღაურება სტატუსის შეყვანის RM [ინდექსი] და რაოდენობის შესვლის InputNr
RMGetInputState ფუნქცია (ინდექსი: მთელი რიცხვი ; InputName: string): ლოგიკური ; / / ანაზღაურება სტატუსის შეყვანის RM [ინდექსი] და სახელი შესვლის InputName
RMGetTempNr ფუნქცია (ინდექსი: მთელი რიცხვი ; InputNr: მთელი რიცხვი): ორმაგი ; / / დააბრუნებს RM ტემპერატურის [ინდექსი] და რაოდენობის შესვლის InputNr
RMGetTemp ფუნქცია (ინდექსი: მთელი რიცხვი ; InputName: string): ორმაგი ; / / დააბრუნებს RM ტემპერატურის [ინდექსი] და სახელი შესვლის InputName
RMGetInvPercent ფუნქცია (ინდექსი: მთელი რიცხვი ; InputName: string): ორმაგი ; / / ანაზღაურება პროცენტული გაზომვა საპირისპირო 100 % – x RM [ინდექსი] და სახელი შესვლის InputName (მიმართებაში მიწოდება ძაბვის კონტროლერი)
RMGetInvPercentNr ფუნქცია (ინდექსი: მთელი რიცხვი ; InputNr: მთელი რიცხვი): ორმაგი ; / / ანაზღაურება პროცენტული გაზომვა საპირისპირო 100 % – x RM [ინდექსი] და რაოდენობის შესვლის InputNr (მიმართებაში მიწოდება ძაბვის კონტროლერი)
RMGetPercent ფუნქცია (ინდექსი: მთელი რიცხვი ; InputName: string): ორმაგი ; / / ანაზღაურება პროცენტული გაზომვა RM [ინდექსი] და სახელი შესვლის InputName (მიმართებაში მიწოდება ძაბვის კონტროლერი)
RMGetPercentNr ფუნქცია (ინდექსი: მთელი რიცხვი ; InputNr: მთელი რიცხვი): ორმაგი ; / / ანაზღაურება პროცენტული გაზომვა საპირისპირო 100 % – x RM [ინდექსი] და სახელი შესვლის InputNr (მიმართებაში მიწოდება ძაბვის კონტროლერი)
RMGetDeviceOutputState ფუნქცია (Devname: სიმებიანი ; OutputName: string): ლოგიკური ; / / ანაზღაურება სახელმწიფოს დრაივერი მოუწოდა Devname და მოუწოდა out OutputName
RMGetDeviceInputState ფუნქცია (Devname: სიმებიანი ; InputName: string): ლოგიკური ; / / ანაზღაურება სტატუსის მძღოლი შეყვანის სახელი და სახელით შესვლის Devname InputName
HMGetTemp ფუნქცია (InputName: string): ორმაგი ; / / დაბრუნება ტემპერატურა საზომი შეყვანის მოუწოდა HeatManagera InputName
HMGetTempNr ფუნქცია (InputNr: მთელი რიცხვი): ორმაგი ; / / დაბრუნება ტემპერატურა საზომი შეყვანის ნომერი HeatManagera InputNr (1 . . 16)
chk_int ფუნქცია (ქ: string): მთელი რიცხვი ; / / Safe გადაიყვანოთ string to მთელი რიცხვი
პროცედურა update_status ; / / განაახლოს სტატუსი, ყველა მძღოლები მაგიდა (უნდა აწარმოებს პერიოდულად)
პროცედურა Test_save ; / / სატესტო პროცედურის დაწერა შედეგების ტექსტური ფაილი ადვილი
ინიციალიზაცია მძღოლი და ყველა სახელები მზადდება ერთხელ განაცხადის დაიწყო (FormCreate)
პროცედურა TForm1 . FormCreate (Sender: TObject) ;
დაიწყოს
გეზი: = getcurrentdir () ; / / დააგროვე მიმდინარე გზაზე პროგრამა უნდა იყოს დირექტორია % eHouse_DIR % \ BIN \
გეზი: = stringreplace (გეზი , ‘ \ ბინ ‘ , ‘ \ ‘ , [Rfignorecase]) ; / / დააგროვე გზა განაცხადის eHouse – ადგენს განაცხადის გეზი eHouse
loadnames_rm ; / / Load კონტროლერი სახელები ehouse1 – იტვირთება მძღოლები სახელი eHouse 1
init_heat_temperature_names ; / / Load სენსორების heatManagera სახელი
readethernetdevs ; / / Load კონტროლერები Ethernet eHouse სახელები – კითხულობს მოწყობილობის სახელები eHouse 2
timer1 . ინტერვალი: = 3000 ; / / Set ციკლური ამოცანა შუალედი მილიწამებში – ადგენს დროა, დაიწყოს შემოწმების ციკლური მონაცემები
timer1 . შეეძლოს: = true ; / / Start ავტომატური დავალებები (სტატუსზე – მოიცავს რეგულარული შემოწმება მონაცემები
update_status ; / / წაკითხვა პირველი სტატუსი
ბოლოს ;
ციკლური მონაცემები შემოწმება ხდება ფუნქციის Timer1 (Timer1Timer) ეშვება ინტერვალის დროს მითითებული პარამეტრი Timer1 . ვადა (მილიწამებში) .
პროცედურა TForm1 . Timer1Timer (Sender: TObject) ;
var ტფ: textfile ;
დაიწყოს
update_status ; / / გარდაქმნის სტატუსის მძღოლი
Test_save ; / / For ტესტი წერს ყველა შედეგების ტექსტური ფაილი
ვცდილობთ / / შექმნა მარკერის ფაილი განაცხადის KillExec . exe, რომ შეუძლია ” უყუროთ ” განაცხადის ადრე ავიაკატასტროფის
AssignFile (tf , გეზი + ‘ მორები \ შესვლა – analizer . STP ‘ ) ;
/ / შემატყობინე WDT განაცხადის სამუშაო სწორად გამოყენებით stampfile ” შედით \ შესვლა – analizer . STP ”
გადაწერას (tf) ;
writeln (tf , ‘ 1 ‘ ) ;
საბოლოოდ ;
closefile (tf) ;
ბოლოს ;
ბოლოს ;