VKU
-
İçerik sayısı
82 -
Katılım
-
Son ziyaret
-
Days Won
3
İçerik Türü
Profiller
Forumlar
Günlükler
Takvim
İletiler bölümüne VKU kullanıcısının eklediği dosyalar
-
-
Sayın wera, çalışma üzerinden zaman geçti. Kayıtlarımı kontrol ettim. PLC den direkt PWM çıkışı almak için aşağıdaki gibi bir bağlantı yaptım. Ancak bu deneme idi. Çünkü PLC çıkışı 24V, motor kontrol kartı girişi ise 5V idi. Bu nedenle önce kontrol kartı olmadan deneme yaptım PWM ürettiğini gördüm. Sonra bu çıkış (24V) ile hız kontrol kartını (5V) voltaj düşürücü bir devre ile irtibatladım. Ancak, voltajı sabit tutamadığım için aşağıdaki safhayı gerçekleştirmek zorunda kaldım.
Kontrol kartı ile ilgili olarak STM32 kartını kullandım. Farklı sistemler arasındaki haberleşmeyi de Modbus ile gerçekleştirdim. Hız kontrolü de HMI ekranından seçildi, ancak STM32 nin PWM çıkışını kullandım. Bu uygulamada PLC PWM direkt olarak kullanmadım. Sanırım Konu açılış BAŞLIĞI ile gerçekleşen biraz farklı oldu.
-
Piyasada bulunan RS 485 MAX TTL modülü ile arduino kullanarak modbus haberleşmesi yapıyorsanız bir çok sorunla karşılaşabilirsiniz. ilk sorun bu modulün çabuk ısınması ve kendini kilitlemesidir. İkinci olarak Arduino Mega dan farklı bir kart kullanıyorsanız (Nano, UNO gibi) sıkıntı ile karşılaşacaksınız. En son da loop içinde 50-100 ms. gibi denenerek bulunacak bir delay gerekli olabilir.
İlk çözüm olarak kendi uygulamalarımda arduino tarafında nrf24 alıcı/verici modülü kullandım. PC/laptop tarafında arduino Nano ya da bir nrf24 modülü taktım. PC üzerinden vb.net/c# ile kod yazıp PLC ile TCP modbus haberleştirdim.
İkinci çözüm olarak bir HMI modbus master olarak kullanılır. RTU'lar bu hatta bağlanır. HMI - PLC için ayrı bir hat oluşturulur. HMI'de sorgulanan RTU değerleri timer lar ile PLC ye aktarılabilir.
-
-
I could not make a success connecting 396T PLC via my own broker on my PC. As Hanifi Bey explained the PLC does not allow customer broker.
But I may suggest another way to read/write Modbus addressed values between 396T PLC and PC.
VS 2019 Community, NUGET EasyModbusTCP by Stefan Roßmann.
Imports EasyModbus
Public Class Form1
Public Mb(10) As Boolean = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
Public Mw(3) As Integer ' 04x0001 ...' Use a radio button to connect PLC via local ethernet IP
' TbxPLC_IP.Text holds PLC IP Addr.
Private Sub RB_F1_ON_Click(sender As Object, e As EventArgs) Handles RB_F1_ON.Click
TcpClient_1 = New EasyModbus.ModbusClient(Convert.ToString(TbxPLC_IP.Text), 502) ' PLC
TcpClient_1.Connect()
End Sub' use a Timer with 200ms interval
Private Sub Timer2_Tick(sender As Object, e As EventArgs) Handles Timer2.Tick
' EasyModbus lib supports discrete connection. So, every time to read/write values make a new connection
TcpClient_1 = New EasyModbus.ModbusClient(Convert.ToString(TbxPLC_IP.Text), 502) ' PLC
TcpClient_1.Connect()
If TcpClient_1.Connected Then
' for coils
Mb = TcpClient_1.ReadCoils(0, 7) ' Coil 0 .. 6 -> adres 1..7' for holding Regs
Mw = TcpClient_1.ReadHoldingRegisters(0, 2)End If
End Sub
End Class -
Adresin bir eksiğini yazarak deneyiniz.
ReadHoldingRegister kullanıldığında, eğer Modbus 4X adresi 1 den başlıyor ve ardaşık iki adres bilgisi okunacak ise;
ModbusClient.ReadHoldingRegister(0,2);
4X adres 2001 den başlıyor ise, ModbusClient.ReadHoldingRegister(2000,2);
-
Laptop/desktop ile TCP aracılığı ile PLC oku/yazmak.
VB:NET de iken; (Not : C# örneği tüm veri tiplerini içeriyor, daha detaylı.)
Nudget dan EasyModbusTCP yükleyin.
Form1 oluşturun. Bir Button ekleyinPLC de iki adet değişken tanımlayın BIT olarak. ve Modbus kısmını aktif yapın.
PLC de RUN yapın. Simulasyonda iken bu iki değişken değerlerini SET veya RESET ile değiştirin.Aşağıdaki kodu deneyebilirsiniz.
Aslında herhangi bir tanım yapmadan PLC IP ile bağlanıp veri oku/yaz yapıp işi bitiriyorsunuz.-----------------------
Imports EasyModbusPublic Class Form1
Public TcpClient_1 As ModbusClient
Public Mb(2) As BooleanPrivate Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
TcpClient_1 = New EasyModbus.ModbusClient(Convert.ToString("PLC IP nizi buraya yazın."), 502) ' PLC
TcpClient_1.Connect()
if TcpClient_1.Connected then
Mb = TcpClient_1.ReadCoils(0, 2) ' Sıfırdan başla 2 kayıt oku.
console.writeln(Mb)
End if
End Class -
vb.net ile linkteki örneği kullanarak Nudget dan EasyModbusTCP yükleyerek ihtiyacım doğrultusunda bir yazılım geliştirmiştim.
Dikkat edilmesi gereken bir timer ile belirlenen tick aralığında HER SEFERİNDE yeniden bağlantı kurulmasıdır.
-
Ali Bey, Merhabalar.
Arkadaşa yardımcı olmak için için "toplamenerji" Real değerini 127.90 olarak başlattım. Toplama işlemi yapılıyor. Ancak 128 gelince artmıyor veya listelenmiyor gibi gözüküyor.
-
c alt programı kullanarak 0..5 (yani 6 adet rakam üret)
/* Intializes random number generator */
srand(time(NULL));
/* bir sayı üret */
sayi=rand()%6;
sayi değişkenini GMTSUITE Operandlar bölümünde WORD olarak tanımlayın. Aşağıdaki örnek 2 sn. de bir 0 ila 5 arasında random rakam üretiyor.
Sonra tetiklemeyi nasıl yapılacak ise ardından bu alt programı çağırın. Her seferinde 0..5 arasında bir değer dönecek. IF cümlecikleri ile bu değer kullanılabilir.
Not : Çevrim dışı Simulasyon ile denedim. ANSI C deki mod işlevinin gmtsuite de farklı bir kullanımı olabilir. Gerçek ortam denemesi yapmadım.
-
Aşağıdaki linkdeki gibi çalıştırdım. Belki işinize yarar.
-
PC'de mosquitto broker çalışıyor. PLC IP 192.168.0.55, PLC adı PLC1 iken --varsayımsal topic adı ile--
cmd'de; mosquitto_sub -h 192.168.0.55 -p "1234" -t "START" (ayrıca PLC1/START ile de denedim)
Error: Hedef makine etkin olarak reddettiğinden bağlantı kurulamadı. hatası döndü.
Anaconda Sypder'da;
from PyQt5 import QtCore, QtGui, QtWidgets
import paho.mqtt.client as mqtt
def on_connect(client, userdata, flags, rc): # The callback for when the client connects to the broker
print("Connected with result code {0}".format(str(rc))) # Print result of connection attempt
client.subscribe("PLC1/START")
def on_message(client, userdata, msg):
print("Message received-> " + msg.topic + " " + str(msg.payload)) # Print a received msg
QtWidgets.QPlainTextEdit(Form).plainTextEdit_2.text=str(msg.payload)
QtWidgets.QLabel(Form).label_2.setObjectName("str(msg.payload)")
client = mqtt.Client("c1")
client.on_connect = on_connect
client.on_message = on_message
client.connect('127.0.0.1')
client.loop_start()
çalışıyor.
cmd'den;
mosquitto_pub -t "PLC1/START" -m 1 veya -m 0 yapınca;
phytonda;
Message received-> PLC1/START b'1'
Message received-> PLC1/START b'0'bilgisi yazdırılıyor.
Bu durumda yerel PC de broker kullanıldığında; 396T PLC de örneğin START (bit, modbus addr 1) değişkeni için topic adının ne olduğu önem kazanıyor. Böylece PC'den ve phyton'dan bu isimle subscribe ve publish yapabileyim.
Yardımlarınız için teşekkür ederim.
-
Hanifi Bey, yardım menüsünde işlemin nasıl yapılacağını buldum. 396T ve PC arasında zaman kısıtı olmadan kullanım mümkün müdür? Teşekkürlerimle.
-
Hanifi Bey, GMTSuite'de MQTT server adını PC deki ile nasıl değiştirebilirim.
PLC'de subs./publ. tanımlama ve değişkeni pub. yapmak için hangi işlemleri yapmalıyım. Teşekkürlerimle.
-
Merhabalar,
Mqtt protokolünü biraz inceledim. Kullanışlı gözüküyor.
396T'da bir subscribe/publish client oluşturup, Ethernet üzerinden PC deki Mosquito Broker aracılığı ile Pyton'da hazırladığım GUI'ye bir kaç veri aktarabilir miyim? Örneğin, motor ON/OFF, sensör değeri vb.
Teşekkürlerimle.
-
Teşekkür ederim.
-
1 faz GSSF-L1 Servo sürücü (400 W motor) ile PLC bağlantısında;
Servo AIN1 (Analog Input)-19 --> PLC Analog +OUT
Servo Aktif-8 --> PLC Digital Çıkış (örneğin QP3)
Servo GNDA-21 --> PLC Analog GND
yaptım.
Ancak Emre Beyin pdf dokümanını incelememe rağmenServo COM1(pin2) --> PLC (24 VDC girişte) VCC mi yoksa GND ucuna mı bağlanmalı, netleştirir misiniz.
Teşekkürlerimle.
-
Merhabalar,
Ucuz bir HMI için sadece seri haberleşme yapan Nextion kullanılabilir. Ancak çabuk arızalanıyorlar. endüstriyel uygulamalar için dikkat etmek lazım.
Arduino da Modbus kullanımı için Mega tercih edilmeli, UNO kilitleniyor. Kod içinde delay kullanılmamalı.
Örnek Arduino kodu ek'tedir.
-
Selam,
QP1 den dc motor sürücüsüne dutycyle ile PWM gönderiyorum. Offine çalışmada, bir kaç derleme sonrası aşağıdaki hatayı aldım. Yardımcı olur musunuz?
-
Öğretici Projeler Bölümüne; mevcut projeye ilave olarak oluşturulacak bir veya birkaç yeni senaryoya uygun olarak, PLC'nin temel fonksiyonlarını içeren örnekler verilmesinin faydalı olacağını düşünüyorum. Bu hem PLC hem HMI özellikli olabilir.
Aslında, yardım dokümanında da fonksiyon veya birlikte çalışacağı fonksiyonlar ile PLC için bir çözüm de gösterilebilir. İlişkili fonksiyondan bu proje/ler sayfasına bağlantı konulabilir. Öğretmen okulundan bir arkadaşım toplulumuzun %85 oranında görsel temelli öğrenmeyi tercih ettiğini söyledi.
İyi Çalışmalar dilerim.
- 1
-
PLC ile ilgili bazı pdf ve video kaynakların listesi aşağıdadır.
pdf dokümanlarda başka markalar olsa da temelini bu kaynaklardan öğrendikten sonra GMTSuite yardım dokümanı ile ihtiyacınızı karşılayabileceğinizi düşünüyorum.
PLC Programlama Teknikleri : http://www.selcuk.edu.tr/dosyalar/files/074/Plc.pdf
PLC Programlama : http://megep.meb.gov.tr/mte_program_modul/moduller_pdf/Plc%20Programlama.pdf
PLC ye Hazırlık : http://www.megep.meb.gov.tr/mte_program_modul/moduller_pdf/Plc%20ye%20Haz%C4%B1rl%C4%B1k.pdf
PLC ile Ünite Kontrolü : http://www.megep.meb.gov.tr/mte_program_modul/moduller_pdf/PLC%20ile%20%C3%9Cnite%20Kontrol%C3%BC.pdf
PLC ve Montajı : http://www.megep.meb.gov.tr/mte_program_modul/moduller_pdf/Plc%20Ve%20Montaj%C4%B1.pdf
Temel PLC sistemleri : http://megep.meb.gov.tr/mte_program_modul/moduller_pdf/Temel%20Plc%20Sistemleri.pdf
Videolar :
GMTCNT Eğitim : https://www.youtube.com/channel/UCkTSrtTldg2x-ctHXi0CnLg
Elektrik Mühendisliği TV : https://www.youtube.com/watch?v=UFnWQSFqqJ8&list=PL7BhqOpVDO0gZ--Gz102zoxzG2xfZxhnL
Otomasyoncunuz : https://www.youtube.com/watch?v=PHaGmsA79zk
gAzi hocA : https://www.youtube.com/watch?v=klTo9uHDB7g
otomasyon online : https://www.youtube.com/watch?v=4ynOQ6CNtv8
AY-KA ROBOTİK VE AKIL OYUNLARI : https://www.youtube.com/watch?v=SmRVWoODF_Q
Ekrem Keleş : https://www.youtube.com/watch?v=ct4K5aBZo3I
Otomasyon Hocası : https://www.youtube.com/watch?v=jTuMaaM5Qpg
Saygılarımla.
- 1
-
TB6600 sinyal girişi 5VDC, PLC sinyal çıkışı 24V. Bu nedenle bir gerilim düşürücü gerekiyor.
TB6600 dokümanının 2. sayfasında 24V kullanıldığında 2K Ohm bir direnç önerilmiş.
Kendi uygulamalarımda GMT396T ile TB6600 bağlantısında 2.2K Ohm 2W direnç kullandım. Bilginize.
- 1
-
Merhabalar, benzer durumu yaşamıştım. Resetleyince sorun çözülmüştü.
A. Elektriği kesin. PLC'ye 24 VDC gelmesi lazım bir voltmetre ile girişi ölçün. PLC ek modül takılı ise sökün yeniden takın.
B. PLC'yi resetlemek için;
* PLC'nin enerjisi kesilir.
* PLC reset butonuna basılır.
* Butona basılı durumdayken PLC'ye enerji verilir.
1.Bu durumda yaklaşık 10 saniye içinde kırmızı uyarı ledi yanıp sönmesi için beklenir.2.Bu süre sonunda buton bırakılır.
Bu işlem sonunda PLC network şifresi 1234 değerine döner, IP ve DNS ayarları otomatik hale dönmüş olur. PLC içerisine yüklenmiş olan ladder program veya diğer ayarlar silinmez.
Menüden cihazlara tıklayın. EKLE yapın. (Ethernet kablosu ile bağlantı yapıyorsanız kablonun sağlam olduğunu kontrol edin) USB ile bağlantı için bir driver yüklenmesi gerekiyor. http://gmtcontrol.com/tr/yuklemeler/yazilimlar.html den yazılımı yükleyin. Dikkat : driver yükleyince bilgisayarın kapatılıp açılması tavsiye edilir.
D. Hala sorun devam ediyor ise firmayı arayın. Kolay gelsin.
- 1
-
-
Transmitterli PT100'ü, 396T Analog In girişinden 4-20mA olarak okunacak şekilde kullanıyorum.
L298N STEP DRİVER
in GMTSuite FORUM
gönderildi
Merhabalar, L298N modülü Arduino modülü gibi sistemler için uygundur. IN1,2,3,4 ile Enable pinleri 5VDC giriş ile çalışır. PLC çıkışları ise 24VDC dir. Ayrıca, Bu modül amatör işlere uygundur. Devre bölücü ile deneme yapılır. Ancak tavsiye etmem.