1. sayfa (Toplam 1 sayfa)

dvp15mc-06 data indexleme ve log

Gönderilme zamanı: 16 Oca 2025, 12:04
gönderen hakanmuh
Merhabalar
DVP15 mc kullanıyorum Banta bağladığım bir enkoder vasıtasıyla bantın başında bulunan klepe valfinin yükselen kenarında ürünü banta bıraktığım noktanın encoder pozisyonunu max 15 adet index açarak herbirine sıra ile doldurmak (kaydetmek) istiyorum.
klepeden sabit bir uzaklıkta ise sıra ile ilk giren endexteki bilgi ile ara mesafeyi toplayarak bir çıkış almak istiyorum. sanırım anlatabildim. encoder pozisyon bilgisini nasıl indexleyebilirim. canopen builder kullanıyorum.


Teşekkürler

Re: dvp15mc-06 data indexleme ve log

Gönderilme zamanı: 16 Oca 2025, 13:33
gönderen Turhan
ADR komutunu inceleyebilirmisiniz?

.

Re: dvp15mc-06 data indexleme ve log

Gönderilme zamanı: 17 Oca 2025, 11:14
gönderen hakanmuh
bunun yerine yeni bi st pou açıp buraya şöyle birşey yazsam destekler mi

VAR
count: INT := 0; (* Sayaç: Bant üzerindeki toplam adım *)
materialBuffer: ARRAY[1..10] OF INT := [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; (* Buffer, 10 malzeme saklanabilir *)
bufferSize: INT := 0; (* Buffer'da kaç malzeme olduğunu tutar *)
dep_aramesafe: INT := 10; (* Depozitör ile klepe arasındaki mesafe *)
pulser_klepeac: BOOL := FALSE; (* Klepeyi açma komutu (rising edge) *)
Enc_Actpos: INT := 0; (* Bant pozisyonunu gösteren enkoder değeri *)
m_depozitor_bas: BOOL := FALSE; (* Depozitör başlatma komutu *)
dep_basti: BOOL := FALSE; (* Depozitörün bastığı sinyal (rising edge) *)
waiting_for_deposit: BOOL := FALSE; (* Depozitör işlem tamamlanana kadar bekleme *)
END_VAR

(* Bant hareketi simülasyonu *)
count := count + 1;

(* Malzeme düştü mü? *)
IF pulser_klepeac THEN
(* Malzeme düştüğünde, sayacı kaydet ve buffer'a ekle *)
IF bufferSize < 10 THEN
bufferSize := bufferSize + 1; (* Buffer'da yeni bir eleman ekle *)
materialBuffer[bufferSize] := Enc_Actpos; (* Sayacın mevcut değerini buffer'a ekle *)
END_IF;
END_IF;

(* Malzeme depozitöre ulaşırsa işlem yap *)
IF bufferSize > 0 AND (materialBuffer[1] + dep_aramesafe <= Enc_Actpos) THEN
(* Depozitöre işlem yapılacak *)
m_depozitor_bas := TRUE; (* Depozitör başlatılıyor *)
waiting_for_deposit := TRUE; (* Depozitör işlemi bekleniyor *)
(* Buffer'dan ilk malzemeyi çıkar *)
FOR i := 1 TO bufferSize-1 DO
materialBuffer := materialBuffer[i+1]; (* Malzemeleri kaydır *)
END_FOR;
bufferSize := bufferSize - 1; (* Buffer boyutunu azalt *)
END_IF;

(* Depozitör işlemi tamamlanınca, dep_basti sinyali geldiğinde *)
IF waiting_for_deposit AND dep_basti THEN
(* Depozitör bir malzeme bastı, işlemi tamamladı *)
m_depozitor_bas := FALSE; (* Depozitör başlatma komutunu sıfırla *)
waiting_for_deposit := FALSE; (* Depozitör işlemi tamamlandı, bekleme sona erdi *)
dep_basti := FALSE; (* Depozitörün bastığı sinyali sıfırla *)
END_IF;

Re: dvp15mc-06 data indexleme ve log

Gönderilme zamanı: 17 Oca 2025, 12:03
gönderen Turhan
Aşağıdaki yazım formatında indexleme yapabiliyorsunuz. Variable tanımlamanızı ise üst sekmede yer alan alanda yapmalısınız.

.

Re: dvp15mc-06 data indexleme ve log

Gönderilme zamanı: 17 Oca 2025, 12:08
gönderen hakanmuh
DATA TYPE KISMINDA ARRAY AÇILMADIĞI İÇİN (BEN GÖREMEDİM) SORMUŞTUM CANOPENBUILDER VER 6.09
YAN TARAFINDAKİ OK TA ARRAY WİZARD VARMIŞ