Konuyu Oyla:
  • Derecelendirme: 5/5 - 1 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Elektrik Sayaçlarından Veri Okuma
#1
Uygulamada TComPort bileşenleri kullanıldı. RS485 USB çeviricisi KÖHLER marka sayacın RS485 portuna bağlandı. OBIS kodları gönderilerek tüm elektriksel parametreler elde edilip MEMO bileşene aktarıldı.  Uygulamanın videosunu YOUTUBE'a gönderdim.



unit Unit1;

interface

uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
 Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, CPort, CPortCtl, Vcl.ExtCtrls;

type
 TForm1 = class(TForm)
   ComPort1: TComPort;
   ComComboBox1: TComComboBox;
   ComDataPacket1: TComDataPacket;
   Button1: TButton;
   Button3: TButton;
   Button4: TButton;
   Edit1: TEdit;
   Memo1: TMemo;
   Label2: TLabel;
   Button5: TButton;
   Edit2: TEdit;
   Timer1: TTimer;
   procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
   procedure Button1Click(Sender: TObject);
   procedure Button3Click(Sender: TObject);
   procedure ComDataPacket1Packet(Sender: TObject; const Str: string);
   procedure Button4Click(Sender: TObject);
   procedure Button5Click(Sender: TObject);
   procedure Timer1Timer(Sender: TObject);
   procedure FormCreate(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
   BILGI: WideString;
   GIDEN: String;
   ILK: Real;
   SON: Real;
 end;

var Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
 EnumComPorts(ComComboBox1.Items);
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
 ComPort1.Connected := False;
 ComPort1.Port := ComComboBox1.Text;
 ComPort1.BaudRate := br300;
 ComPort1.DataBits := dbSeven;
 ComPort1.Parity.Bits := prEven;
 ComPort1.StopBits := sbOneStopBit;
 ComPort1.Open;
 ComPort1.WriteStr('/?!' + #13#10);
 // ComPort1.WriteStr('/?!' + chr(13) + chr(10));
 // ComPort1.WriteStr('/?61149586!' + chr(13) + chr(10));
end;

procedure TForm1.ComDataPacket1Packet(Sender: TObject; const Str: string);
begin
 BILGI := BILGI + Str;
 if GIDEN = 'UYAN' then begin
   Memo1.Lines.Text := BILGI;
 end else if GIDEN = 'MANUEL' then begin
   Memo1.Lines.Text := BILGI;
 end
 else Label2.Caption := IntToStr(Round((GetTickCount - ILK) / MSecsPerSec)) + ' sn';
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
 GIDEN := '';
 BILGI := '';
 Label2.Caption := 'Okuma süresi 15sn';
 Application.ProcessMessages;
 ComPort1.Connected := False;
 ComPort1.Port := ComComboBox1.Text;
 ComPort1.BaudRate := br300;
 ComPort1.DataBits := dbSeven;
 ComPort1.Parity.Bits := prEven;
 ComPort1.StopBits := sbOneStopBit;
 ComPort1.Open;
 ComPort1.WriteStr('/?!' + #13#10);
 Sleep(1000);
 ComPort1.WriteStr(chr(6) + '050' + chr(13) + chr(10));
 Sleep(500);
 ComPort1.BaudRate := br9600;
 ComPort1.WriteStr(chr(1) + 'R2' + #2 + '0.0.0' + '()' + #13#10);
 ILK := GetTickCount;
 Timer1.Enabled := True;
end;

procedure TForm1.Button5Click(Sender: TObject);
begin
 GIDEN := 'MANUEL';
 BILGI := '';
 Label2.Caption := '';
 Application.ProcessMessages;
 ComPort1.Connected := False;
 ComPort1.Port := ComComboBox1.Text;
 ComPort1.BaudRate := br300;
 ComPort1.DataBits := dbSeven;
 ComPort1.Parity.Bits := prEven;
 ComPort1.StopBits := sbOneStopBit;
 ComPort1.Open;
 ComPort1.WriteStr('/?!' + #13#10);
 Sleep(1500);
 ComPort1.WriteStr(chr(6) + '051' + chr(13) + chr(10));
 Sleep(500);
 ComPort1.BaudRate := br9600;
 ComPort1.WriteStr(#1 + 'R2' + #2 + Edit1.Text + '()' + #3 + Edit2.Text);
 Timer1.Enabled := True;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 GIDEN := 'UYAN';
end;

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
 if Key = VK_ESCAPE then Close;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
 Memo1.Lines.Text := BILGI;
 Timer1.Enabled := False;
end;

end.
Teknik Öğretmen
Bilgisayar Formatörü
WWW
Cevapla
#2
Elinize, emeğinize sağlık hocam.
There is no place like "127.0.0.1"

"Vatanını en çok seven, görevini en iyi yapandır."

Cevapla
#3
Çok teşekkürler @guverdik hocam sağolun
saygılar mustafa ֍zgün 
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
Star Modbüs veri göndermek TurboPascal 5 804 06-10-2021, Saat: 09:38
Son Yorum: TurboPascal
  Multimetreden Seri Port Aracılığı ile Bilgi Okuma guverdik 0 1.156 12-02-2020, Saat: 09:31
Son Yorum: guverdik



Konuyu Okuyanlar: 1 Ziyaretçi