Encoder okuma değeriyle motor durdurma

Katılım
26 Ağu 2022
Mesajlar
34
Puanları
1
Encoderden aldığım anlık değerle karşılaştırma komutlarını kullanarak motoru durdurmak istiyorum referans değerini 1000 seçsem 999 da duruyor motor dönmeye devam ediyor yardımcı olabilir misiniz
 
Programin ilgili kismini bi gorelim.
Durdurma işlemini hardware interrupt da yazdım değer okumayı da main de görüntülüyorum. Durdurma işlemini mainde yazarsam sorun çözülüyor, neden interrupt da 999 da kaldığını anlayamadım. Referans değeri geldikten sonra cpunun interrput içindeki komutları yapması gerekmiyor mu?
 

Ekli dosyalar

  • 16855260587704685072067939876246.jpg
    16855260587704685072067939876246.jpg
    216.9 KB · Görüntüleme: 41
Meraktan soruyorum neden interupda yazıyorsun. Main de yazabilir yada fc de yazabilirsin ?
 
Meraktan soruyorum neden interupda yazıyorsun. Main de yazabilir yada fc de yazabilirsin ?
Yeni öğreniyorum, izlediğim videolarda interrupt içinde referans değerleriyle çıkış alınıyor bende aynı şekilde interrupt içinde program yazmak istedim mantığını halen anlamış değilim interputta yazmayacaksak referans tanımlayıp hardware interrupt neden oluşturuyoruz
 
Bu bloklar daha üst seviyelerde için vardır. Yani bir motoru durdurmaktan ziyade plc üzerinden oluşabilecek start stop gibi önem arz eden noktalarda ilk çalışma main bloğu vardır. Bence öğrenme aşamasında tavsiyem önce kod 'lar ile ilerleyebilirsin. Main'de hepsini yaz yada fc de yazabilirsin.
 
Durdurma işlemini hardware interrupt da yazdım değer okumayı da main de görüntülüyorum. Durdurma işlemini mainde yazarsam sorun çözülüyor, neden interrupt da 999 da kaldığını anlayamadım. Referans değeri geldikten sonra cpunun interrput içindeki komutları yapması gerekmiyor mu?

OB40 bi çevrim çalıştıktan sonra bi daha kullanamayacağınızı fark ettiniz mi?
 
OB40 bi çevrim çalıştıktan sonra bi daha kullanamayacağınızı fark ettiniz mi?
Edemedim daha açık yazarsanız,1 çevrim çalışsasa motorun çalışmasını resetlemesi gerekmiyor mu, ayrıca mainde pulse değeri artarken interrput içinde 999 da kalmasını nasil izah ediyorsunuz. Referans degeri ni 1000 yapıp interrupt oluşturduktan sonra cpu oraya yonleniyor sorun yok ancak 999 da neden kalıyor ve motor neden durmuyor programlar bir sıkıntı yok çünkü main ob de çalışıyor
 
Edemedim daha açık yazarsanız,1 çevrim çalışsasa motorun çalışmasını resetlemesi gerekmiyor mu, ayrıca mainde pulse değeri artarken interrput içinde 999 da kalmasını nasil izah ediyorsunuz. Referans degeri ni 1000 yapıp interrupt oluşturduktan sonra cpu oraya yonleniyor sorun yok ancak 999 da neden kalıyor ve motor neden durmuyor programlar bir sıkıntı yok çünkü main ob de çalışıyor

bilmiyorum belki input filitre zamanlarını düşürerek eşleşme sağlanabilir ama OB40 bir defa çağırabilir bir dahaki aynı işlemde program yine çalışmayacak.
 
bilmiyorum belki input filitre zamanlarını düşürerek eşleşme sağlanabilir ama OB40 bir defa çağırabilir bir dahaki aynı işlemde program yine çalışmayacak.
0.1 microsaniyede filtre zamanları onlarla da alakalı değil, son cümlenizden güzel bir çıkarım yaptım motoru durdursam bile mainde tekrar başlatmak istesem başlamayacak interruptta 1 kez çalıştığı için durmaya devam edecek anladim. O zaman biz 1 kez ve devamlı çıkış almak istediğimiz durumlarda mi interrupt kullanıyoruz doğru mu anladım
 

Forum istatistikleri

Konular
129,903
Mesajlar
931,174
Kullanıcılar
452,789
Son üye
yigitt.m
Geri
Üst