Delta PLC İçin Modbus Program Yazmak.

başka bir inverter var derken marka ve model nedir haberleşme protokolünü bilmek gerekiyor.
 
Arkadaşlar bende sizin verdiğiniz projelerdeki gibi bi uygulama yapmak istedim ancak başarılı olamadım delta plc'yi c# ile kontrol etmek istiyorum acaba sizin şu projelerin kaynak kodları var mı? rica etsem gönderebilir misinz?
benim kodlarda aşağıda;

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;


namespace delta_plc_ilk_uygulama
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
if (serialPort1.IsOpen == false)
{
serialPort1.Open();


}
}


private void button1_Click(object sender, EventArgs e)
// :01050500FF00F6 :01050500FF00F5 // :01050500FF00F6




{
byte[] buffer = StringToByteArray("3A01050500FF00F60D0A");
serialPort1.Write(buffer, 0, buffer.Length) ;
}


private void button3_Click(object sender, EventArgs e)
{
serialPort1.Write("PON");
}


public static byte[] StringToByteArray(string hex)
{
return Enumerable.Range(0, hex.Length)
.Where(x => x % 2 == 0)
.Select(x => Convert.ToByte(hex.Substring(x, 2), 16))
.ToArray();
}
}
}
 
Seri porttan, Delta PLC ve servo sürücülerle MODBUS ile haberleşmek için gerekli modülü bi iş için ben daha önce yazmıştım. Kodu aşağıda:

Delta MODBUS modülü

Bu kod Python programlama dili ile yazılmış. Bunu doğrudan kullanabileceğin gibi, aynı kodu başka bir programlama dili ile de yazabilirsin.


Evet, bildigimiz seri haberleşme ile gerçekleştiriyoruz. RS-232 veya RS-485 kullanabilirsin. Bilgisayara doğrudan bağlayacaksan RS-232 kullanacaksın.



Hyper Terminal ile cevap alırsın. Cevap alamadığına göre
* ya düzgün kablo kullanmadın
* ya seri port ayarların PC ve PLC'de aynı değil
* ya gönderdiğin paketin formatı bozuk
* ya da Check Sum degeri dogru hesaplanmamış



MODBUS için bu komponente ihtiyacın yok.

Math modülüne ihtiyacınız yok(Kullanmasanız da olur)

LRC Check Pythonic yolu:

PHP:
def calc(self,word):
        sta = 0
        sayi = 0
        key=""
        for i in range(2,(len(word)+1),2):
            a = word[sta:i]
            sta=i
            sayi += int(a,16)
            key = str(hex(256-((sayi)%256)).split("x")[1].upper())
            if len(key) ==1:
                key = "0"+key
        return ":"+word+key+"\r\n"
 
hocam kolay gelsin. bu sitedeki ilk mesajım çünkü iytiyacım olan şey değişti. şimdiye kadar ETE hocamla picproje'de veya etepic sitesinde düşe kalka ilerliyor, 18f452 lerle birşeyler yapmaya çalışıyordum. ama durum değişti, yeni bilgilere ihtiyaç hasıl oldu.

değerli hocam, üzerinde uğraştığım ciddi bir proje var.
16 tane selenoid valfi sürmem gerekiyor. örneğin:


BASLA:
FOR I=1 TO 12 '(satırdaki rakam sayısı. 1'den itibaren)
FOR B=2 TO 1 step -1 '(satır sayısı. 1'den itibaren )
C=(12*B)-I '(satır*sütun-ilk for...)

LOOKUP C,[$00,$00,$00,$00,$00,$00,$00,$FF,$FF,$FF,$FF,$FF,_
$FF,$FF,$FF,$FF,$FF,$FE,$FC,$F8,$F0,$E0,$C0,$00],DEGER

SHIFTOUT BILGI, SAAT,0, [DEGER]
NEXT B
PULSOUT YUKLE,5


ADCIN 0,A
PAUSE A
NEXT I
GOTO BASLA

diye bir program yazdım. pic'e 2 tane de 74hc 595 çoklayıcı bağladım. programla ilk önce bir 595'e $00 gönderiyor, sonra diğerine $FF gönderiyor, sonra da bu değerleri (tabiki binary düzende) basıyor. bastıktan sonra a kadar pause yapıyor ve sondan başa doğru tarayarak geliyor. sanırım anlatabildim. hocam bunu 64 tane selenoid valf sürecek şekilde yaptım ama kafam karıştı. nedeni mi? elektromanyetik gürültü ve beslemenin sıhhati. ben ürünün endüstriyel standartlarda olmasını istiyorum. bundan dolayı da plc işimi çözermi acaba diye araştırmalara başladım.
hocam kısacası plc benim 64 tane selenoid valfimi benim belirleyeceğim bir düzende a süresi boyunca açık kapatır mı?
yani elimde değerler matrisi olacak ve plc belirtilen sırada ve sürede bu değerleri valflere basacak. mümkün mü?
teşekkürler

- - - Updated - - -

hocam kolay gelsin. bu sitedeki ilk mesajım çünkü iytiyacım olan şey değişti. şimdiye kadar ETE hocamla picproje'de veya etepic sitesinde düşe kalka ilerliyor, 18f452 lerle birşeyler yapmaya çalışıyordum. ama durum değişti, yeni bilgilere ihtiyaç hasıl oldu.

değerli hocam, üzerinde uğraştığım ciddi bir proje var.
16 tane selenoid valfi sürmem gerekiyor. örneğin:


BASLA:
FOR I=1 TO 12 '(satırdaki rakam sayısı. 1'den itibaren)
FOR B=2 TO 1 step -1 '(satır sayısı. 1'den itibaren )
C=(12*B)-I '(satır*sütun-ilk for...)

LOOKUP C,[$00,$00,$00,$00,$00,$00,$00,$FF,$FF,$FF,$FF,$FF,_
$FF,$FF,$FF,$FF,$FF,$FE,$FC,$F8,$F0,$E0,$C0,$00],DEGER

SHIFTOUT BILGI, SAAT,0, [DEGER]
NEXT B
PULSOUT YUKLE,5


ADCIN 0,A
PAUSE A
NEXT I
GOTO BASLA

diye bir program yazdım. pic'e 2 tane de 74hc 595 çoklayıcı bağladım. programla ilk önce bir 595'e $00 gönderiyor, sonra diğerine $FF gönderiyor, sonra da bu değerleri (tabiki binary düzende) basıyor. bastıktan sonra a kadar pause yapıyor ve sondan başa doğru tarayarak geliyor. sanırım anlatabildim. hocam bunu 64 tane selenoid valf sürecek şekilde yaptım ama kafam karıştı. nedeni mi? elektromanyetik gürültü ve beslemenin sıhhati. ben ürünün endüstriyel standartlarda olmasını istiyorum. bundan dolayı da plc işimi çözermi acaba diye araştırmalara başladım.
hocam kısacası plc benim 64 tane selenoid valfimi benim belirleyeceğim bir düzende a süresi boyunca açık kapatır mı?
yani elimde değerler matrisi olacak ve plc belirtilen sırada ve sürede bu değerleri valflere basacak. mümkün mü?
teşekkürler
 
Merhabalar dediğiniz sistem PLC ile olur elbette fakat maliyetli olur bu iş için bana göre plc, bunun yerine pic kontrollü, modbus haberleşmeli endüstriyel bir kart ile'de bu iş çözülebilir. Tabiki yapacağınız uygulama sadece bir seferlik ise, bu seferde endüstriyel kart tasarımına gitmek maliyet ve emek açısından PLC ye göre dezavantaklı kalır.

Yukarıdaki seçenekler doğrultusunda uygulamanız eğer birden fazla olacaksa ve bu tip endüstriyel bir kart tasarlayamazsanız, bu kartı sizin yerinize yapabilir ve çalışır halde teslim edebilirim, hayırlı çalışmalar.
 
öncelikle cevabınız için teşekkür ederim. aslında durum şu şekilde. ben 16 selenoid valfi çalıştıracak bir kart yaptım ve uzun süre sorunsuz çalıştı. sonra 64 valf için ürettim o da çalıştı. şimdilik bir sıkıntı yok. ancak ben aslında türkiye de satılan elektronik devre elemanlarına, devrenin besleme kalitesine ve biraz da tasarımıma güvenemediğim için, neticede de bu ürünü sattığımda hiçbir sorun olmaması gerektiğini düşündüğüm için plc ye yönelmiştim. tabi bu aşamada sizin teklifinizi de değerlendirmeye almam lazım.
istediğim şey şu:
64 tane 10 watt-12 v selenoid valfi sürebilecek
usb (veya cf, mmc kart da olur) den bilgileri eş zamanlı alabilecek,
mümkünse uzaktan kumanda da bağlanabilecek bir devreye ihtiyacım var. bunu siz tasarlarsanız bana maliyeti ne kadar olur?
bunu plc ile yapmak istesek (plc nin markası önemli değil) ne kadar tutar?
bunları bilmek isterim.
teşekkürler
 
Son düzenleme:
6 sayfadır okuyorum burda elle tutulur bir örnek bulacağım diye ama gene nafile herkes ucundan bir şey sormuş cevabını almış gitmiş bir tane örnek var onunda kaynak kodları yok....

deneyen arkadaşlardan kimse başarılı olamadı mı acaba rica etsem kaynak kodlu bir örnek verebilirmisiniz..
bazı arkdaşlar kaynak dökümanlardan işi çözebiliyorlar ama benim gibi bazılarıda örnekleri inceleyerek çözüyor....

sitemim affola

saygılarımla
 
emrah kardeşim programın bitince paylaşacaktın. durumun nedir acaba.
 
arkadaşlar delta plc ile modbus rtu haberleşi yapmak için plc tarafında bir kod eklemek veya ayar yapmak gereiyormu başlangıçdaki iletişim ayarlarından rtu şekmekten başka kod kısmına ayrıca bir ekleme yapmak gerekimi saygılarımla
 
6 sayfadır okuyorum burda elle tutulur bir örnek bulacağım diye ama gene nafile herkes ucundan bir şey sormuş cevabını almış gitmiş bir tane örnek var onunda kaynak kodları yok....

deneyen arkadaşlardan kimse başarılı olamadı mı acaba rica etsem kaynak kodlu bir örnek verebilirmisiniz..
bazı arkdaşlar kaynak dökümanlardan işi çözebiliyorlar ama benim gibi bazılarıda örnekleri inceleyerek çözüyor....

sitemim affola

saygılarımla

Tüm sayfaları detaylıca okumadım fakat alttaki ücretsiz kütüphane ile ModBus protokolünü bazı programlama dilleri için kullanabilirsiniz.

Java versiyonunu kullanarak 10 dakikada bir cihaza bağlanıp verilerini almıştım.
 

Forum istatistikleri

Konular
130,176
Mesajlar
934,017
Kullanıcılar
453,312
Son üye
Burak_dmn

Yeni konular

Geri
Üst