Mesafe Bilgisini 60cm Sonra Uygulamak

Nigerarcus

Üye
Katılım
29 Ocak 2024
Mesajlar
5
Puanları
1
Yaş
23
Merhaba arkadaşlar.

Bir kaynak makinesi otomasyonu üzerine çalışıyorum. Ürün yatay eksende enkoder bağlı bir asenkron motor ile yavaş bir şekilde ilerliyor. Kaynak ucu sabit bir şekilde kaynağını yaparak ürünü kaynaklıyor. Kaynak ucunun yüksekliği step motor tarafından kontrol edilebiliyor. Kaynağın düzgün olması için kaynak ucunun üründen sabit bir mesafede kalması gerekiyor. Ürünlerin de pürüzlü yapısı nedeniyle bir adet mesafe sensörüne ihtiyacım oluyor. Mesafe sensörüm 300 um hassasiyete sahip. Ancak kaynağın direk yapıldığı bölgede sıcaklıktan dolayı mesafe bilgisi okuyamadığım için sensör yatayda kaynak ucundan 60cm geride konumlandırılmış. Ürün yatayda hareket ederken önce sensörden geçip ardından kaynak ucuna varıyor. Benim kaynak ucunu o anki uygun yükseklikte ayarlamam için ürünün 60 cm'lik mesafe önceki yüksekliğini okuduğum değeri step motora girmem gerekiyor. Bit kaydırma gibi yöntemler kullanmayı düşündüm ancak milimetre mertebesinde çalışırsam 600 bit kaydırmam gerekiyor. Mesafe bilgisini de 8 bit olarak kaydetsem çok fazla uğraşacağım. Bunun kolay bir yöntemi var mıdır? Teşekkürler.

PLC: S7-12xx
 
Endüktif mesafe ölçen sensörler var. Onlar işinizi görebilir...
 
Kaynak mesafesini olcmek yerine ark voltajini okumayi ve bunu mesafe bilgisi gibi degerlendirmeyi dene.

Ark boyu uzarsa yuksek voltaj okursun. Ark mesafesi kisalirsa dusuk voltaj okursun.

Bunu da ark boyunu sabit tutmada geri besleme bilgisi olarak kullanirsin.

Ark voltajindan stabil bir bilgi uretmek icin filitreleme yapman gerekecek.
 
Endüktif mesafe ölçen sensörler var. Onlar işinizi görebilir...
Kızıl ötesi 300 um hassasiyete sahip 400mm'e kadar ölçüm yapabilen sensörüm mevcut.

Kaynak mesafesini olcmek yerine ark voltajini okumayi ve bunu mesafe bilgisi gibi degerlendirmeyi dene.

Ark boyu uzarsa yuksek voltaj okursun. Ark mesafesi kisalirsa dusuk voltaj okursun.

Bunu da ark boyunu sabit tutmada geri besleme bilgisi olarak kullanirsin.

Ark voltajindan stabil bir bilgi uretmek icin filitreleme yapman gerekecek.
Mantıklı bir düşünce. Bu uygulamada kullanılan bir yöntem mi?
 
Maalesef sensörü değiştirmeden pratik bir çözümü görünmüyor. Ama shift register komutlarını bir inceleyin belki daha kolay bir yöntem bulursunuz.
 
Son düzenleme:
kızılötesi Optik Sensörler düman çıkan ve ısı yayan işlerde pek kullanılamıyor ancak bu iş için robotik oygulamalarda kullanılanlar var.

Ayrıca söylediğiniz "belirli bir mesafe sonra" yüksekliği okuyp "düzeltebilirsiniz", ancak arada hangi değere göre işlem yapacaksınız?
Veya arada yükseklik azalıp-artarsa....
Kaynak yapılacak parça fotosu? düz bir eksendemi?
İstediğinizi yükseklik hassasiyeti nedir?.
Nitrojen Gazı ile hızlı soğutabilirsiniz.
İş ile ilgili biraz detay verin

Ayrıca kapasitif sensörler de kullanılıyor, mesela oksijen kesiminde, çok fazla ısı var, problemsiz çalışabiliyor.
Ülkemizde bulunabiliyor.
 
Son düzenleme:
Aşağıdaki koda benzer kaydırma işlemi yapılabilir. Kod; X hareketi +1mm değişikliğinde array dataları önce kaydırıp, Y yüksekliği verisini array_of_reals[0] a basar. X teki değişiklik miktarı n=600 e ulaştığında array_of_reals[599] veri yani 600 üncü mm değeri çıkışa sürekli basılır.

X tarafındaki hassasiyetin array boyutunu değiştirir unutma. Hassasiyet 0.5mm istenirse n=1200 olur.

Kod:
    IF ( X_mm - OLD_Xmm ) >= 1.0 THEN // X Hareketi 1mm değiştiğinde (X hep aynı yönde hareket ediyorsa)

        FOR i:=(n-1) TO 0 BY -1 DO   // Dataları kaydırma işlemi, en güncel veri  array_of_reals[0] da
           array_of_reals[ i+1 ]:=array_of_reals[ i ]; // i inci veriyi, (i+1) inci array a kaydır
        END_FOR

        Y_Yuksekligi     := Y_Yuksekligi +10; // Test için Y değerlerini Simüle etmek için bunu ekledim
        array_of_reals[0]:= Y_Yuksekligi ; // Y Yüksekliğini 0 ıncı array a kaydet
        OLD_Xmm          := X_mm;  // Eski Xmm değerini yenisi ile güncelle (X teki bir sonraki değişimi algılamak için)
    END_IF

    outShiftRegister := array_of_reals[n-1]; // n-1 inci array'ı çıkışa ver... n=600
 
Son düzenleme:
Maalesef sensörü değiştirmeden pratik bir çözümü görünmüyor. Ama shift register komutlarını bir inceleyin belki daha kolay bir yöntem bulursunuz.
8 bit kaydırarak bir çözüm ürettim.
kızılötesi Optik Sensörler düman çıkan ve ısı yayan işlerde pek kullanılamıyor ancak bu iş için robotik oygulamalarda kullanılanlar var.

Ayrıca söylediğiniz "belirli bir mesafe sonra" yüksekliği okuyp "düzeltebilirsiniz", ancak arada hangi değere göre işlem yapacaksınız?
Veya arada yükseklik azalıp-artarsa....
Kaynak yapılacak parça fotosu? düz bir eksendemi?
İstediğinizi yükseklik hassasiyeti nedir?.
Nitrojen Gazı ile hızlı soğutabilirsiniz.
İş ile ilgili biraz detay verin

Ayrıca kapasitif sensörler de kullanılıyor, mesela oksijen kesiminde, çok fazla ısı var, problemsiz çalışabiliyor.
Ülkemizde bulunabiliyor.
Olay zaten arada yüksekliğin azalıp artması. Sensörüm 400 milimetre mesafede 300 mikrometre hassasiyetle çalışıyor. Ürünün yüksekliği 40 cm'den daha fazla artamaz hatta kaynak bölgesinin yüksekliği ortalamadan en fazla 10 milimetre sapabilir. Bu yüzden inanılmaz bir çalışma aralığını ihtiyacım yok. Soğutma işlemi yapmak masraflı bir çözüm hatta çözüm bile sayılmaz saçma bir fikir... Kaynak makinesinin veya parçanın fotoğrafını bilgi güvenliğinden ötürü paylaşamam. Ancak düz bir eksen. Kapasitif sensör de kullanılabilir ama bu sorunuma bir çözüm değil. Sorunum sensör değil!
Aşağıdaki koda benzer kaydırma işlemi yapılabilir. X hareketi +1mm değişikliğinde Y yüksekliğini shift registeri önce kaydırıp, yeni veriyi array_of_reals[0] a basar. X teki değişiklik miktarı n=600 e ulaştığında array_of_reals[599] veri yani 600 üncü mm değeri çıkışa sürekli basılır.

X tarafındaki hassasiyetin array boyunutu değiştirir unutma.

Kod:
    IF ( X_mm - OLD_Xmm ) > 1.0 THEN // X Hareketi 1mm değiştiğinde (X hep aynı yönde hareket ediyorsa)

        FOR i:=(n-1) TO 0 BY -1 DO   // Dataları kaydırma işlemi, en güncel veri  array_of_reals[0] da
           array_of_reals[ i+1 ]:=array_of_reals[ i ]; // i inci veriyi, (i+1) inci array a kaydır
        END_FOR

       Y_Yuksekligi         := Y_Yuksekligi +10; // Test için Y değerlerini Simüle etmek için bunu ekledim
        array_of_reals[0]   := Y_Yuksekligi ; // Y Yüksekliğini kaydet
        OLD_Xmm             := X_mm;  // Eski Xmm değerini yenisi ile güncelle (X teki bir sonraki değişimi algılamak için)
    END_IF

    outShiftRegister := array_of_reals[n-1]; // n-1 inci array'ı çıkışa ver...
Dün bu saatlerde ben de aynı kodu yazarken siz de benim için bu cevabı yazmışsınız. Çok teşekkürler. Milimetrede bir değişen short int kaydıran bir kod yazdım ben de. Şimdilik işleme uydu gibi. Umarım yatayda milimetre bazında hassasiyet beni kurtarır. Tekrar teşekkür ederim.
 
Merhaba arkadaşlar. Dün testler yaptık. Kaynak ucu olması gerekenden erken yükseliyordu. Dizinin ve kodun kaydırma ve işleme parametrelerini oynayarak elimizden geldiğince düzeltmeye çalıştık. Ancak bit kaydırma işlemi encoder'e bağlı olduğu için encoder değerinin tam doğru olması gerekmekte. Bizim kodumuzda encoder'i milimetreye çevirme işlemimiz yanlışmış, bunu da optimize etmek durumunda kaldık.

Kaynak makinesi CLOOS, onlardan ark voltajı bilgisi alıp alamayacağımı sordum. Yetkili kişilerden dönüş bekliyorum. Köşeli kaynak olmadıkça ark voltajı bilgisi çok da işe yaramayabilirmiş.

Bir aklıma gelen fikirde kaynak ucunun olduğu noktaya tekerlekli şerit encoder bağlamak. Bu fikir daha önce aklıma gelseydi kesin onu uygulardım. Çünkü sanırım bu kadar yüksek hassasiyetle çalışmamıza gerek kalmayacak. Sayın @elektronikmuh 'e yardımlarından dolayı teşekkür ederim. Herkese iyi çalışmalar.
 
Tig kaynağı yapmıyorsanız, İzole okuma yapan bir analog modül ile kaynak voltajını sizde okuyabilirsiniz. Torc ucunda kaynak yokken 80V, kaynak esnasında en fazla 45V olur.
 

Yeni mesajlar

Forum istatistikleri

Konular
129,864
Mesajlar
930,851
Kullanıcılar
452,726
Son üye
ugur Göktürk

Yeni konular

Geri
Üst