10-12-2021, Saat: 15:41
Sürücülerde pals, yön ve enable uçları vardır. PLC ve görsel programlama kodlamaları aynıdır. Motorlar kaç mm veya kaç cm gideceği mesafesi belli olan uygulamadır. GMT PLC’yi kullanarak motorları iki türlü hareket ettirilir. Birincisi artımsal, ikincisi ise mutlak hareket. Artımsal, pals üretilerek motoru hareket ettirilir. Örnek 100 pals üret ve dur. 100 palslik çalışma anında motor ne kadar ilerlerse ölçülür ve net ölçüm ortaya çıkar. Gerekirse pals rakamları ile test edilerek istenilen motor hareket mesafesi ortaya çıkar. 100 pals üretildikten sonra 20 pals daha üret derseniz o zaman 120 pals üretilmiş olur. Önceki rakamın üzerine ilave edilerek arka planda hesaplama yapılır. Bu hareket tekniği artımsal olarak tanımlanır. Hareket kontrol sekmesinden hareket oluşturma fonksiyonu çalışma alanına getirilir. Motor sürücünün enable ve yön pinleri için openadlar eklenir.
Step motor 8 kablo bağlantısı:
GMTSuite editör programında konfigürasyon menüsünden ilgili kanal / lar aktif edilir. Üç adet hızlı çıkış kanalı vardır. 496T plc modelinin 0,1,2 digital çıkışları yüksek hızlı çıkış olarak kullanılır. 3,4,5 nolu digital çıkışlar ise yönlendirme için kullanılır. Yüksek hızlı uygulamalarda muhakkak 470 ohmluk direnç kullanılır.
Kolay gelsin.
Step motor 8 kablo bağlantısı:
A+ = MAVİ-SARI. A- = KIRMIZI – YEŞİL. B+ = TURNCU – KAHVE. B- = SİYAH - BEYAZ
GMTSuite editör programında konfigürasyon menüsünden ilgili kanal / lar aktif edilir. Üç adet hızlı çıkış kanalı vardır. 496T plc modelinin 0,1,2 digital çıkışları yüksek hızlı çıkış olarak kullanılır. 3,4,5 nolu digital çıkışlar ise yönlendirme için kullanılır. Yüksek hızlı uygulamalarda muhakkak 470 ohmluk direnç kullanılır.
unit Unit1;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls,
Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, iComponent, iVCLComponent, iCustomComponent, iSwitchLever,
iLed, iLedRound, iSwitchToggle, IdBaseComponent, IdComponent, IdTCPConnection,
IdTCPClient, IdModBusClient, Vcl.ExtCtrls;
type
TForm1 = class(TForm)
iSwitchLever1: TiSwitchLever;
Label1: TLabel;
iLedRound1: TiLedRound;
GroupBox1: TGroupBox;
Edit1: TEdit;
Button1: TButton;
Edit2: TEdit;
Button2: TButton;
Edit3: TEdit;
Button3: TButton;
GroupBox2: TGroupBox;
Edit4: TEdit;
Button4: TButton;
Edit5: TEdit;
Button5: TButton;
Edit6: TEdit;
Button6: TButton;
iSwitchToggle1: TiSwitchToggle;
Label2: TLabel;
iSwitchToggle2: TiSwitchToggle;
Label3: TLabel;
IdModBusClient1: TIdModBusClient;
Label6: TLabel;
iLedRound2: TiLedRound;
Label9: TLabel;
Edit7: TEdit;
Timer1: TTimer;
CheckBox1: TCheckBox;
procedure iSwitchLever1Change(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure CheckBox1Click(Sender: TObject);
procedure iSwitchToggle2Change(Sender: TObject);
procedure iSwitchToggle1Change(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
IdModBusClient1.Host := Edit7.Text;
// PULSE_HIZLANMA için ModBus : 40007 - 40000 = 7
IdModBusClient1.WriteRegister(7, StrToInt(Edit1.Text));
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
IdModBusClient1.Host := Edit7.Text;
// PULSE_HEDEF için ModBus : 40006 - 40000 = 6
IdModBusClient1.WriteRegister(6, StrToInt(Edit2.Text));
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
IdModBusClient1.Host := Edit7.Text;
// PULSE_YAVASLAMA için ModBus : 40005 - 40000 = 5
IdModBusClient1.WriteRegister(5, StrToInt(Edit3.Text));
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
IdModBusClient1.Host := Edit7.Text;
// FREKANS_HIZLANMA için ModBus : 40004 - 40000 = 4
IdModBusClient1.WriteRegister(4, StrToInt(Edit4.Text));
end;
procedure TForm1.Button5Click(Sender: TObject);
begin
IdModBusClient1.Host := Edit7.Text;
// FREKANS_HEDEF için ModBus : 40003 - 40000 = 3
IdModBusClient1.WriteRegister(3, StrToInt(Edit5.Text));
end;
procedure TForm1.Button6Click(Sender: TObject);
begin
IdModBusClient1.Host := Edit7.Text;
// FREKANS_YAVASLAMA için ModBus : 40002 - 40000 = 2
IdModBusClient1.WriteRegister(2, StrToInt(Edit6.Text));
end;
procedure TForm1.CheckBox1Click(Sender: TObject);
begin
Timer1.Enabled := CheckBox1.Checked;
end;
procedure TForm1.iSwitchLever1Change(Sender: TObject);
begin
iLedRound1.Active := iSwitchLever1.Active;
IdModBusClient1.Host := Edit7.Text;
if iSwitchLever1.Active then
// Motor çalıştırma için ModBus = 5
IdModBusClient1.WriteCoil(5, True) else
IdModBusClient1.WriteCoil(5, False);
end;
procedure TForm1.iSwitchToggle1Change(Sender: TObject);
begin
IdModBusClient1.Host := Edit7.Text;
if iSwitchToggle1.Active then
// Motor yönü için ModBus = 6
IdModBusClient1.WriteCoil(6, True) else
IdModBusClient1.WriteCoil(6, False);
end;
procedure TForm1.iSwitchToggle2Change(Sender: TObject);
begin
IdModBusClient1.Host := Edit7.Text;
if iSwitchToggle2.Active then
// Motor enable için ModBus = 1
IdModBusClient1.WriteCoil(1, True) else
IdModBusClient1.WriteCoil(1, False);
end;
procedure TForm1.Timer1Timer(Sender: TObject);
var MESGUL_DURUM: Boolean;
ANLIK_PULSE, TOPLAM_PULSE: word;
begin
IdModBusClient1.Host := Edit7.Text;
// Motor meşgul için ModBus = 7
IdModBusClient1.ReadCoil(7, MESGUL_DURUM);
if BoolToStr(MESGUL_DURUM) = '-1' then
iLedRound2.Active := True else iLedRound2.Active := False;
end;
end.
Kolay gelsin.
Teknik Öğretmen
Bilgisayar Formatörü
Bilgisayar Formatörü

