Önemli Bilgilendirme!
Forum sayfamızdan sınırsız faydalanmak için kullanıcı kaydı oluşturup giriş yapmalısınız. Özellikle mesaj eklentileri, linkler kullanıcı girişi yapmazsanız görüntülenmeyecektir. Aşağıdaki linke tıklayarak üye değilseniz kullanıcı oluşturabilirsiniz.
https://destek.delta-turkey.com/ucp.php?mode=register

ardinyo ile dvp 14ss2 haberlesme

Cevapla
Kullanıcı avatarı
t-a-n-e-r
Mesajlar: 20
Kayıt: 16 Şub 2022, 15:26
İletişim:
Durum: Çevrimdışı

ardinyo ile dvp 14ss2 haberlesme

Mesaj gönderen t-a-n-e-r »

merhaba arkadaslar.


bir haftadır ugrastıgım bı konuyu cozemedıgım ıcın sızlerın yardımına ıhtıyacım var.

sorunum su d100 datasını rs485 uzerinden ardinyoya yollıyarak sayıları dotmatrix bir ekrana yansıtmam gerekıyor ne yaptı ısem ekrana yazı gelmedı bunun uzerıne ardınyo da haberlesmenınmı gelmedıgını yoksa datanınmı yanlıs gelıdgını kontrol eden bır kod yazarak bu sorunun plc den data gelmedıgını tespıt ettım. daha oncedende bahsettıgım gıbı ben profosyonel bır yazılımcı degılım ve haberlesme komutları ıle ınternette buldugum butun ıslemlerı denedım. ama bır turlu plc nın 485 uzerınden datayı yollamasını saglıyamadım. yardımcı olursanız cok sevınırım.d100 datası bır counter sayıcı ve 0 ile 99 arası saymasını ıstıyorum.
Kullanıcı avatarı
Uğur
Mesaj Panosu Yöneticisi
Mesajlar: 9507
Kayıt: 06 Mar 2018, 10:37
Konum: İstanbul
İletişim:
Durum: Çevrimdışı

Re: ardinyo ile dvp 14ss2 haberlesme

Mesaj gönderen Uğur »

RS komutu ile bir porta veri gönderebilir portan gelen veriyi dinleyebilirsiniz. Manuelde detaylı uygulama örnekleri anlatılmıştır. Aşağıdaki dokümanı inceleyiniz.
Bu mesaja eklenen dosyaları görüntülemek için gerekli izinlere sahip değilsiniz.
Uğur Birdal - Technical Support Team Manager - DELTA Electronics Turkiye

Bildirimler İçin Whatsapp Kanalımıza Katılın
Whatsapp Kanal

https://www.linkedin.com/in/ugurbirdal
Kullanıcı avatarı
t-a-n-e-r
Mesajlar: 20
Kayıt: 16 Şub 2022, 15:26
İletişim:
Durum: Çevrimdışı

Re: ardinyo ile dvp 14ss2 haberlesme

Mesaj gönderen t-a-n-e-r »

ugur bey merhaba
cok degerlı paylasımınız ıcın tesekkur ederım forumda benzer konuları arastırır ıken bı kac forum baslıgını degısık kullanımlarla haberlesme sorununu cozdum sımdıkı sorunum sa su ekte vermıs oldugum dosyada x0 ve x1 on oldugunda datayı aktasıyor ama x1 on of yatıgımda artan degerı aktaramıyorum. x0 ı on of yaptıgımda artan degerı aktarıyorum. buna nasıl bı kontak uygulamalıyımkı bu serıyı bana sureklı aktarsın.


ardinyoda kullandıgım kodlar ıse aşagıdaki gibidir. lazım olan veya yardımcı ola bılecekler olursa bilgi paylastıkca buyur.

Kod: Tümünü seç

#include <ModbusRTUSlave.h>  // Modbus Slave Kütüphanesi
#include <SoftwareSerial.h>  // Yazılım Seri Port
#include <LedControl.h>      // MAX7219 Dot Matrix Kütüphanesi

// 📌 RS485 için Yazılım Seri Portu
#define RX_PIN 0   // RS485 Modülü RO pini (Arduino RX)
#define TX_PIN 1   // RS485 Modülü DI pini (Arduino TX)
#define DE_RE 2    // RS485 Modülü DE/RE pini

SoftwareSerial modbusSerial(RX_PIN, TX_PIN);  // Yazılım Seri Portu
ModbusRTUSlave slave(modbusSerial, DE_RE);    // Modbus Slave nesnesi

// 📌 MAX7219 Dot Matrix Bağlantıları
#define DIN_PIN 11  // Data In
#define CS_PIN  10  // Chip Select
#define CLK_PIN 13  // Clock

LedControl matrix = LedControl(DIN_PIN, CLK_PIN, CS_PIN, 4);  // 4'lü Dot Matrix bağlı

// 📌 Modbus Registerları (16-bit)
uint16_t holdingRegisters[5];  // **5 adet register** (H1000 için yeterli)

void setup() {
    Serial.begin(9600);                // Seri Monitör
    modbusSerial.begin(9600);          // Yazılım seri portu başlat
    
    // 📌 Modbus Slave Başlatma (Slave ID = 1, Baudrate = 9600, 8N1 formatında)
    slave.begin(2, 9600, SERIAL_7N1);
    slave.configureHoldingRegisters(holdingRegisters, 5); // **5 register kullanılıyor**

    // 📌 MAX7219 Başlatma
    for (int i = 0; i < 4; i++) {
        matrix.shutdown(i, false);  // Gücü aç
        matrix.setIntensity(i, 5);  // Parlaklık ayarla (0-15)
        matrix.clearDisplay(i);     // Ekranı temizle
    }
}

void loop() {
    slave.poll();  // Modbus haberleşmesini çalıştır

    int value = holdingRegisters[0]; // **📌 H1000 (4096) register'ını oku**
    
    Serial.print("H1000: ");  // **Seri port ile gelen değeri kontrol et**
    Serial.println(value);
    
    if (value >= 1 && value <= 99) {
        displayNumber(value); // 📌 01-99 arası ise ekrana yazdır
    } else {
        clearMatrix(); // 📌 Geçersiz değer geldiğinde ekranı temizle
    }
    
    delay(1000);
}

// 📌 2 Basamaklı Sayıyı Dot Matrix'e Yazdırma
void displayNumber(int num) {
    int tens = num / 10;  // Onlar basamağı
    int ones = num % 10;  // Birler basamağı
    
    byte digits[10][8] = {
        {0x3E, 0x51, 0x49, 0x45, 0x3E, 0x00, 0x00, 0x00}, // 0
        {0x00, 0x42, 0x7F, 0x40, 0x00, 0x00, 0x00, 0x00}, // 1
        {0x62, 0x51, 0x49, 0x49, 0x46, 0x00, 0x00, 0x00}, // 2
        {0x22, 0x49, 0x49, 0x49, 0x36, 0x00, 0x00, 0x00}, // 3
        {0x18, 0x14, 0x12, 0x7F, 0x10, 0x00, 0x00, 0x00}, // 4
        {0x2F, 0x49, 0x49, 0x49, 0x31, 0x00, 0x00, 0x00}, // 5
        {0x3E, 0x49, 0x49, 0x49, 0x32, 0x00, 0x00, 0x00}, // 6
        {0x01, 0x71, 0x09, 0x05, 0x03, 0x00, 0x00, 0x00}, // 7
        {0x36, 0x49, 0x49, 0x49, 0x36, 0x00, 0x00, 0x00}, // 8
        {0x26, 0x49, 0x49, 0x49, 0x3E, 0x00, 0x00, 0x00}  // 9
    };
    
    for (int i = 0; i < 8; i++) {
        matrix.setRow(2, i, digits[tens][i]); // 3. Matris (Onlar basamağı)
        matrix.setRow(3, i, digits[ones][i]); // 4. Matris (Birler basamağı)
    }
}

// 📌 MAX7219 Ekranı Temizleme
void clearMatrix() {
    for (int i = 0; i < 4; i++) {
        matrix.clearDisplay(i);
    }
}
Bu mesaja eklenen dosyaları görüntülemek için gerekli izinlere sahip değilsiniz.
Kullanıcı avatarı
Uğur
Mesaj Panosu Yöneticisi
Mesajlar: 9507
Kayıt: 06 Mar 2018, 10:37
Konum: İstanbul
İletişim:
Durum: Çevrimdışı

Re: ardinyo ile dvp 14ss2 haberlesme

Mesaj gönderen Uğur »

X0 ile D0 içeriğini gönderiyor. Bunu X0 yükselen kenarında yapıyor. X0 yerine 2 yerdede M1013 yazarsanız D0 içeriğini saniyede bir gönderir.
Bu mesaja eklenen dosyaları görüntülemek için gerekli izinlere sahip değilsiniz.
Uğur Birdal - Technical Support Team Manager - DELTA Electronics Turkiye

Bildirimler İçin Whatsapp Kanalımıza Katılın
Whatsapp Kanal

https://www.linkedin.com/in/ugurbirdal
Kullanıcı avatarı
t-a-n-e-r
Mesajlar: 20
Kayıt: 16 Şub 2022, 15:26
İletişim:
Durum: Çevrimdışı

Re: ardinyo ile dvp 14ss2 haberlesme

Mesaj gönderen t-a-n-e-r »

ugur bey yardımlarınız ıcın cok tesekkur ederım. şimdi progamı counter ıle sayma ıslemıne donusturerek en son halı ıle paylasıcagım umarım baska arkadaslarında ısıne yarıyacaktır.


iyi çalışmalar dilerim
Cevapla

“PLC Forum” sayfasına dön