Ağaç şerit testere ile metal kesmek

Son düzeneğin resmini ve son programı da koyayım belki birisi problemi hemen görecek. Programın tek yaptığı, 40301 MODBUS registerinden itibaren iki register okumak. Aslında sadece tek register lazım da, orada byte count mu yoksa register count mu tam belli değil o yüzden iki diye kullandım. 40301 reigsterinde firmware versiyon var, net bir sayı dönmesi lazım.

1722120329265.jpeg


C:
#define PIN_DE 8
#define PIN_RE 9

static unsigned char cmd[10];
static unsigned long timer = 0;

static unsigned int crc_16 (unsigned char *buffer, unsigned int length)
{
  unsigned int i, j, temp_bit, temp_int, crc;
  crc = 0xFFFF;
  for ( i = 0; i < length; i++ )
  {
    temp_int = (unsigned char) *buffer++;
    crc ^= temp_int;
    for ( j = 0; j < 8; j++ )
    {
      temp_bit = crc & 0x0001;
      crc >>= 1;
      if ( temp_bit != 0 )
        crc ^= 0xA001;
    }
  }
  return crc;
}

static void tx_mode()
{
  digitalWrite(PIN_DE, 1);
  digitalWrite(PIN_RE, 1);
}

static void rx_mode()
{
  digitalWrite(PIN_DE, 0);
  digitalWrite(PIN_RE, 0);
}

void setup()
{
  Serial.begin(9600, SERIAL_8N1);
  pinMode(PIN_DE, OUTPUT);
  pinMode(PIN_RE, OUTPUT);
}

void loop()
{
  if ((millis() - timer) > 1000lu)
  {
    timer = millis();

    unsigned int reg_addr = 40301; // converter version

    unsigned int count = 0;
    cmd[count++] = 0x01;                    // device address
    cmd[count++] = 0x03;                    // function code (read holding registers)
    cmd[count++] = (reg_addr >> 8) & 0xff;  // register start (high)
    cmd[count++] = reg_addr & 0xff;         // register start (low)
    cmd[count++] = 0x00;                    // register count (high)
    cmd[count++] = 0x02;                    // register count (low)

    unsigned int crc = crc_16(cmd, count);
    cmd[count++] = crc & 0xff;
    cmd[count++] = (crc >> 8) & 0xff;

    tx_mode();
    delay(1);
    Serial.write(cmd, count);
    Serial.flush();
    delay(1);
    rx_mode();
  }
}
 
Haberleşme problemi ile doğrudan alakalı değil ama 2 noktayı belirtmek isterim.



1: Transmit receive seçimi için 2 ayrı IO kullanmak yerine aşağıdaki resimdeki gibi RE ve DE pinlerini birleştirip mcu tarafında tek IO ya bağlamak daha pratik bir yöntem


111.jpeg




2: Sürücü klemensinde bulunan 2 adet dirence gerek yok. Bias dirençleri kullandığınız modül tarafında zaten var.

222.jpg
 
Son paylaştığınız c kodunda gelen cevabın alınması ile ilgili kısımlar yok, sanırım skop üzerinden sürücünün verdiği / vereceği cevabı takip ediyorsunuz.

Birde bağlantı yapılırken 485 tarafındaki A-B pinler ters bağlanabiliyor. Kontrol etmekte veya yer değiştirip denemekte fayda var.
 
V20 dokümanında P+ biaslama direnci 10V a bağlı, MAX485 tarafındaki ise 5V a bağlı. Sistem çalışmadığı için her türlü farka bel bağlayıp deniyoruz işte :)

Artık bu aşamada sorunun bir şekilde V20 yapılandırmasından kaynaklandığını düşünüyorum. Dokümanda MODBUS için gereken yapılandırmaları sırayla yapmıştım, ama bugün tekrar yapacağım.

1722158613973.png



1722158645394.png
 
Sorun diferansiyel sinyallerin ters olmasından çıktı. Aslında daha önce farklı yönleri de sürekli deniyordum, ama daha önce farklı problemler de olduğu için sonuç vermemiş oldu. Şu anda converter versiyonunu okuyorum ve doğru değer olan 397 yi alıyorum.

1722178129525.png
 
V20 nin ortalama cevap verme süresi 20 - 30 ms gibi.

Sonra takmış olduğum terminasyon dirençlerinin hepsini söktüm. Çalışmaya devam etti. Sonra 19200 baud ile de denedim. Gene terminasyon dirençleri yok. Herşey genel olarak çalışmaya devam ediyor, ama arada bir komut alma hatası meydana geliyor. Bağlantı kablosunu dolanık hale getirdim (twisted pair), gene arada bir komut alma hatası oluyor.

Ben aslında çalışma moduna göre (şerit testere, torna taşlama) parametreleri set edip geçecektim, ama 19200 de arada bir komut hatası oluyorsa, 9600 de de çok daha nadir olsa da sorun çıkabilir. Bu durumda geri okuma da yapıp, parametre doğru set edilinceye kadar tekrar tekrar denemek gerekecek ...

Kablolarda ekranlama yok, V20 tarafındaki terminasyon dirençleri de yok, ama 20 cm kablo, sorun çıkmasına şaşırdım.
 
Şimdi tekrar 19200 yapılandırdım, ama bütün osiloskop problarını ve prob bağlantı kablolarını söktüm. V20 yi de reboot edip hata sayaçlarını sıfırladım ve testi tekrar başlattım. Bir gün boyunca her saniye converter versiyon öğrenecek. Sonra da hata sayacına bakacağım.

DSC00574.JPG
 
Gözünüz aydın.

Komut hatasının bir başka nedeni arduino ve modül arasındaki bağlanlantılar olabilir. Ben genel olarak geçmeli bağlantı düzeneklerinden uzak duruyorum.

Bir diğer öneri, motor sürücüdeki 5 nolu terminalindeki gnd bağlantısını kaldırın veya rs485 modülü üzerindeki gnd bağlantı noktasına bağlayıp deneyin.
 
RS485 de ekranlamaya ve GND bağlantısına gerek yok. Hatta GND bağlantısının olmaması gerekli. Sinyal "balanced" olarak yollandığı için bu tür korumalar gereksiz olmaktadır.
Aynı zamanda, besleme problemlerinin diğer cihazlara aktarılması için de GND bağlanmamalıdır.

Ayrıca, izolasyon düşünülüyor ise ISO3088 kullanılabilir.
 
Son düzenleme:
RS485 de ekranlamaya ve GND bağlantısına gerek yok. Hatta GND bağlantısının olmaması gerekli. Sinyal "balanced" olarak yollandığı için bu tür korumalar gereksiz olmaktadır.
Aynı zamanda, besleme problemlerinin diğer cihazlara aktarılması için de GND bağlanmamalıdır.

Bu mantıklı. Audio sistemlerde kullanılan XLR da da GND bağlanmaz, sadece diferansiyel çift gider. Panoyu toplarken GND yi bağlamayacağım.

Birkaç saattir bahçe belliyorum. Şimdi geri geldiğimde bakınca hata sayacının sıfır olduğunu görüyorum. Baud 19200. Demekki problar, probları bağlamak için kullandığım ara kablolar, belki de kötü temas eden bir konnektör hataya sebep oluyordu. Gene de sabaha kadar çalıştıracağım. Eğer hata olmazsa okuma işinden vazgeçeceğim :)
 
Bu arada dokümanı da baya okumuş oldum problemi araştırırken ve şunu farkettim. "Configuration Macro" diye bir özelliği varmış bu aletin. 12 tane hazır macro var, bir tanesi de MODBUS macrosu. Aktif hale getirince benim tıkır tıkır peş peşe yaptığım bütün yapılandırmaları otomatik olarak yapıyor ...
 
Evet hata sayacı sıfır. Doğrudan parametreleri yazıp işi bitireceğim. Bir de potansiyometre bağlama işini halletmem lazım devir ayarı için. Potansiyometreyi doğrudan V20 ye bağlayacağım.
 
Parametreleri elle değiştirmek zor mu neden böyle bir şeye ihtiyaç oldu? Hızlı parametre girmek için mi?
 
Parametreleri elle değiştirmek zor mu neden böyle bir şeye ihtiyaç oldu? Hızlı parametre girmek için mi?

Elle değiştirmek baya zor. Yüzlerce parametre var, yukarı aşağı tuşu ile bulmak uzun sürüyor, değiştirmesi uzun sürüyor, gereken parametreleri ve onların değerlerini hatırlamak da zor. Kabaca uygulamaya göre 10 parametre değişmesi gerekiyor.
 
Bugün panonun montajını yaptım. Daha arduino programı hazırlamadım çünkü hangi parametrelerin set edileceğini daha toparlayamadım. Ama en azından varsayılan ayarlarla testerenin çalıştığını göreyim dedim. Ama işim çok aksi gitti.

IMG_20240803_211251.jpg
 
İlk sorun, panoya bağlandıktan sonra aşağıdakı soğutma fanı deli gibi tırıldıyor, kafa şişiriyor. Onu sonra silikonla falan yapıştıracağın yerine.
 
Sonra motorun verilerini girdim alete. Anma voltalı, anma akımı, frekans, cos fi, anma gücü. Sadece devir ayarı tuhaftı (P0311). 1425 olarak çıkıyor ama benim değiştirmeme izin vermiyor. Neyse, yeterince yakın, bana izin verseydi motorun etiketinde yazan 1400 değerini girecektim. Ramp up and ramp down parametrelerini 0 yaptım. Sonra çıkışı ON yaptım.

Hemen bir uyarı verdi çıkışta yük yok diye (A922). E yok tabi, çalıştırmadım daha testereyi. Saçma bir uyarı. Neyse, sonra testerenin açma butonuna bastım, ama sürelki bir titreme oluyor, testere dönmeye çalışıyor ama dönemiyor. Testerenin açma butonunu basılı tuttum, baya bir titredikten sonra çalışmay başladı. Ama çok istikrarsız. Kapatıp tekrar açıınca titreme faslını aşamadım bir türlü. Sanki V20 sürekli olarak aşırı yük algılıyor, çıkışı kapatıyor, sonra tekrar açıyor ...
 
Motorun anma akımı 5 A, bunu parametre ekranında girdim. Ama tabi ilk anda motor 5 A den çok daha fazla çekiyor. Bunu V20 ye söylemek mi gerekiyor? Eğer gerekiyorsa bu çok tuhaf bir durum. Motor sürücüsü, bir motorun ilk anda fazla akım çekeceğini bilmesi ve tolere etmesi gerekmez mi?
 
Testere motoru 2.2 kW, V20 de 2.2 kW. Ama ben gene de 1.5 kW olan vakum pompası motoru ile deneme yaptım. Vakum pompasını açıp kapatabiliyorum sorunsuz. O zaman herhalde bir ayar var V20 de yapılması gereken.
 

Çevrimiçi üyeler

Forum istatistikleri

Konular
6,951
Mesajlar
118,748
Üyeler
2,824
Son üye
selocan32

Son kaynaklar

Son profil mesajları

hakan8470 wrote on Dede's profile.
1717172721760.png
Dedecim bu gul mu karanfil mi? Gerci ne farkeder onu da anlamam. Gerci bunun anlamini da bilmem :gulus2:
Lyewor_ wrote on hakan8470's profile.
Takip edilmeye başlanmışım :D ❤️
Merhaba elektronik tutsakları...
Lyewor_ wrote on taydin's profile.
Merhabalar. Elektrik laboratuvarınız varsa bunun hakkında bir konunuz var mı acaba? Sizin laboratuvarınızı merak ettim de :)
Lyewor_ wrote on taydin's profile.
Merhabalar forumda yeniyim! Bir sorum olacaktı lcr meterler hakkında. Hem bobini ölçen hemde bobin direnci ölçen bir lcr meter var mı acaba?
Back
Top