Merhaba arkadaşlar. Daha önce bu forumda böyle bir konu açılmış, daha önce hiç SCL kullanmadım ancak orada verilen kodları derleyip çalıştırdığı da hata vermedi. Ama sayıları sıralama işlemini de yapmadı. Nerede hata yaptığımı anlayamadım yardımcı olur musunuz lütfen. Aşağıda proje resimlerini paylaşıyorum.
Başlangıç değerine 0 ve bitiş değerine 31 yazdım. Data block a HMI' dan ve Vat tablosundan değer gönderdim. Değerleri data block a yazdı, ancak sıralama işlemini yapmıyor.
Daha önce paylaşılan kodları aşağıda paylaşıyorum.
Konu içindeki mesaj 'Siemens Simatic S7 SCL Programlama Dili' https://www.kontrolkalemi.com/forum/konu/siemens-simatic-s7-scl-programlama-dili.1047/post-150043
Problemin nerede olduğunu anlayamadım açıkçası, Set lemem gereken bir komut falan var mı? Yoksa SCL Kodundaki [0..31] komutunu [0..4] yapınca çözülecek mi problem? SCL Konusunda çok yeniyim o yüzden nasıl yapmam gerektiğini bilmiyorum, FB 100 ü OB1 de çağırdığımda yapmam gereken başka bir şey var mı? Bir de rica etsem eğer imkânınız varsa projeyi buraya yükleyebilir misiniz? Teşekkür ederim. İyi çalışmalar.
Yazdığınız kodda if bloğunda data[j] değerini swap değişkenine atamışsınız.
data değerini değiştirmişsiniz ama data[j] için bir değişiklik yapmamışsınız. Orjinal postta dikkat ederseniz o kısım da yapılmış.
Kod:
IF DB101.Data[i]> DB101.Data[j] THEN // i ve j inci veriler test edilir
Swap := DB101.Data[j]; // Yer degiştirme işlemi yapıyoruz
DB101.Data[j] := DB101.Data[i];
DB101.Data[i] := Swap;
END_IF;
Merhaba @elektronikmuh paylaştığınız proje çalıştı, desteğiniz için teşekkür ederim. Size bir sorum daha olucak, FB100 'ü açtığımda STL Olarak açılıyor ama siz projeyi SCL Olarak yazmıştınız bunun neden STL Olarak açıldığını anlayamadım. Bir de DB101.DBD0 değerinin Sıfırdan büyük olması koşulunu nasıl ekleyebiliriz? Yani Array daki herhangi bir değer sıfırdan büyük ise o değer yazılsın. Sadece Array daki değerlerin hepsi sıfır ise
DB101.DBD0 değeri "0" olsun. Şeklinde bir komut eklenebilir mi? Teşekkür ederim.