Tek encoder 2 plc?

merhaba,
1 encoderi, PLC de farklı 2 adrese nasıl tanıtabilirim.
örnek olarak.
encoderi sıfırlayıp, d1 adresine 0 gönderip, biraz daha çevirip d2 adresine 0 gönderip, d1 ve d2 adreselerini farklı farklı aynı anda, her turda 1200 pulsa kadar saydıracağım.
d1 ve d2 adresleri arasında ki fark sabit kalacak.
d1 : 100 iken d2: 600,,,,,, d1 : 200 iken d2 : 700 ,,,,,, d1 : 1000 iken d2 : 300 (1500-1200),,,,, olacak
 
Move komutu ile yapabilirsin her pozisyon için okuduğun değeri başka bir adrese yada datablok a taşursın böylece istediğin kadar pozisyon yaratabilirsin.
 
maalesef move ile aynı değeri taşır.
ben encoderden değeri d1 e taşıyıp, başka bir pozisyondan da d2 ye taşıyacağım.
fakat d1 ve d2 arasında ki fark sabit kalacak.
aynı encoder, örnek olarak 0 dan 1200 e,
D1 de 100 iken, D2 de 200 olabilir.
sonra D1 de 400 iken, D2 de 500 olacak.
fark her zaman 100 puls olacak.
ve D1 . 1200 pulse dan sonra 0 a gelirken D2 100 e gelmiş olacak.
 
D1+100=D2
 
maalesef toplama işlemi işimi görmüyor.
sürekli sabit bir değer taşımayacağım.
makinenin bir turunda (1200 pulse de) 2 farklı konumu tanıtmam gerekiyor ve bu sürekli sabit değil.
daha iyi bir örnek için, konveyör üzerinde hareket eden 100 cm lik parçanın 1. referans için tam köşesini (0 pulse) ve 2. referans için 58.cm ni tanıtacağım. parçalar arası da sabit 50 cm.
yani 0 pulse tekrar 0 pulse ye gelene kadar konveyör 150 cm hareket edecek.
100 cm parçanın ilk köşesini ve 2. olarak değişken ortasında bir noktayı referans aldıracağım.
D1 e 0 pulse verebilirim her zaman, fakat D2 ye aradaki fark kadar offset yaptırmam gerekiyor.
D1+100 dersem D2 : 1200 pulse de 1300 olacak. fakat bana 100 yazması lazım.
2 ayrı encoder çalışıyormuş gibi düşünebiliriz.
tekrar ilginize teşekkür ediyorum.
encoder 0 dan 1200 e sayarken,
D1 de başka yerden başlayıp sayacak,
D2 de başka yerden başlayıp sayacak.
ama her iki (D1 ve D2 ) değeri de 0-1200 arası sayacak.
 
Son düzenleme:
Enkoder 0 ila 1200 arası bir yerde, mesela 200 de iken D1 in sıfırdan başlamasını istiyorsun diye anladım.
Bu durumda D1=Enkoder Değeri-200 olmaz mı?
 
move ile zaten aynı değeri hep aynı yere taşımayacaksın kendin gerekli şart yerine geldiği zaman istediğin değişkene taşıyacaksın.
puls 1200 e eşitse db1.dbd100 e taşı
puls 2400 e eşitse db1.dbd104 e taşı
puls 5000 e eşitse db1.dbd108 e taşı
bu biraz senin hayal gücüne ve algoritma yaratma yeteneğine kalıyor.
 
Enkoder 0 ila 1200 arası bir yerde, mesela 200 de iken D1 in sıfırdan başlamasını istiyorsun diye anladım.
Bu durumda D1=Enkoder Değeri-200 olmaz mı?
evet bir aralıkta bu işlem doğru.
fakat encoder başa dönüp 0 olursa D1:0, D2: -200 olacak. hatalı olacak.

a : D1:0 iken, D2 nin 1000 olmasını istiyorum.
b : D1:100 iken D2 nin 1100,
c : D1: 200 iken D2 nin 1200 yada 0 (başa dönecek)
d : D1: 300 iken D2 nin 100 diye farklı farklı başlangıçlardan başlamasını istiyorum.
bu fark değeri de hiç bir zaman sabit bir değer olmayacak.
bazen 257, bazen 369, bazen 784 gibi pozisyona göre değişiklik gösterecek.
ilginize teşekkür ediyorum.
1 encoderi 2 farklı encoder gibi kullanmak istiyorum.
plc girişi yeterli değil ve encoder bağlayacağım yer yok.
o yüzden 1 encoderden offsetlenmiş bir değer almam gerekiyor.
toplama çıkarma işlemiyle ortalarda yapabiliyorum ama başlangıç ve bitişte mantık hatası veriyor.
ayrıca aradaki fark tamamen üretime bağlı. sabit bir değer de değil.
 
"evet bir aralıkta bu işlem doğru.
fakat encoder başa dönüp 0 olursa D1:0, D2: -200 olacak. hatalı olacak."

Gerçekte de enkoder değeri geri sayarken sıfıra ulaştıktan sonra devam ederse eksiye doğru ilerlemeyecek mi?

Ha keza ana enkoder sıfırdan sonra geri dönmeye devam ederse negatif değer üretecektir.

Ana değer - 100 iken ikinci değer - 200 olacaktır.

Bunun neresi hatalı?

Kanaatimce istediğin farklı bir şey.
 
hayır encoder 0-1200 arası çalışıyor.
biraz ileri alıp örnek 30 den geriye doğru önce 0, hemen sonra 1200 oluyor, geri saymaya devam ediyor.0 ile 1200 arası sayıyor sadece.
yapmak istediğim;
D1 : 100 iken D2:200 olsun. ama bu fark D1: 1200 olduğunda D2 sıfırı geçmiş ve 100 fazla offset vermiş olsun. 1300 olmasın.
''eğer'' senaryosuyla yapmak aklıma geldi. değer 1200 den büyükse şu işlemi yap. küçükse şu işlemi yap diye. ama bayağı karışık işlemler olacak.
daha kolay bir yolu var mı?
HSC1 ve HSC2 diye aynı encodere bağlasam ne olur?
teşekkürler.
 
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için onları kabul etmelisiniz. Daha fazla bilgi edin…