15 Kasım 2019, 09:08:10

Haberler:

Eposta uyarılarını yanıtlamayınız ( ! ) https://bit.ly/2J7yi0d


Üstadlara Soru & Beyin Fırtınası

Başlatan eem7490, 25 Ocak 2019, 20:34:34

eem7490

Herkese merhaba.

Az önce bir konuyu tartışırken aklıma bir fikir geldi. Bu konuda sizlerin fikirlerinizi almak ve beyin fırtınası yapmak istedim. Soracağım soruyu kullanan veya benzer mantıkta çalışan ürünler var. Ama daha önce konu üzerine çalışmadığım için net bir fikrim yok.

Diyelim bir kontrol sistemimiz var. Buna uygun belirli şartlar altında çalışan bir donanımı tasarlamışız ve sistem çalışıyor. Örnek olarak konu daha net anlaşılsın diye rezistansla sıcaklık kontrolü yapan bir sistem diyelim.Limit değerleri de 500°C ye kadar ölçüm yapabilen 5kW rezistansı sürebilen bir sistem düşünelim.

Sistemin çalışması için rezistans sürücü kısmı ve sıcaklığı ölçen bir katman yapmamız gerekiyor. Bunları da yaptık diyelim. Sistemi de PI veya PID algoritması ile kontrol ettiğimizi varsayalım. Burada bu algoritmanın girdileri referans sıcaklık ve ölçülen sıcaklık, çıktıları ise sisteme ne kadar enerji vereceğimiz. Burada bu algoritma için kullanmamız gereken değişkenler temelde hata ve hatanın bir önceki değeri ile KP, Kİ ve KD.Bir de Ts var tabiki. Bu yaptığım sistem 5kW'lık bir sisteme göreydi. Başka bir sistemde 1kW yeterli ve ona göre katsayıları basitçe girebileceğim bir bilgisayar programı da yaptım ve sistem güzel çalışıyor diyelim.

Şu ana kadar anlattıklarım sadece PID sistemi için kritik değerleri değiştirebilen sistem içindi. Şimdi benim asıl sormak istediğim soru şu. Öyle bir şey yapayım ki, ben kontrol algoritmasını komple değiştirebileyim. Örneğin PID değil de, Fuzzy-PID adaptif bir sistem yapmak istiyorum. Bunu cihazdaki gömülü yazılımı değiştirmeden tasarladığım bilgisayar programı ile değiştirebilmek istiyorum. Bahsettiğim sistem şu şekilde değil; bu alt program çalışmasın da şu alt program çalışsın şeklinde değil. Alt program komple değişsin şeklinde olacak. Bu örnek için değişecek olanlar şunlar oluyor. Yapılan matematik işlem sayısı ve şekli değişiyor, ayrıca sisteme ekstra değişkenler eklenilmesi gerekiyor.

Bu tarz bir sistem yapılabilir mi veya nasıl yapılır? Araştırılması gereken konu başlıkları nelerdir?

Aslında benim bu konu ile alakalı fikirlerim var. Ancak kimseyi yönlendirmemek adına siz değerli forum üyelerinin fikirlerini merak ediyorum.

Konu başlığında üstadlara diye yazdım. Ancak konuya ilgi duyan ve kendini üstad seviyesinde görmeyen arkadaşlarımızın da kıymetli fikirlerine açığız.  :)

Herkese çalışmalarında başarılar diyorum.


mustafacan

29 Ocak 2019, 01:41:20 #2 Son düzenlenme: 29 Ocak 2019, 01:42:26 mustafacan

Sistemden çekilen amperi başlangıçta 1 defa hesaplattır.
Çıkan değere göre tablo kullandır.
Not: üstad değilim...
Keşfedilecek çok teknoloji var. Boş Vaktim Yok!

Firzen

Valla sorunu tam anlamadım. Fuzzy-PID kullanmak istiyorsun ama gömülü olmasın diyorsun? Bunu yaparken Communication Delay yani Latency'i nasıl hesaba katacaksın? Evet ortada bir Ts var bu Ts sistemine göre bir Discrete Kontrol tasarlaman lazım buna hem fikiriz. Ama bu tarz bir sistemde incelediği kararlılık aralığı başlangıçta bir 5KW sonra 1KW yani Scaling Factor devreye giriyor.

Sorunun cevabına gelirsek yapılmaz değil yapılır hatta ben yayınımda yaptım "https://ieeexplore.ieee.org/abstract/document/8466284"; Burada sistemde örneklemeleri nasıl sabitlediğim vs yazıyor.

Not: üstad değilim...
Istanbul Technical University                                  Control and Automation Engineering

RaMu

Alıntı yapılan: eem7490 - 25 Ocak 2019, 20:34:34...
 Öyle bir şey yapayım ki, ben kontrol algoritmasını komple değiştirebileyim. Örneğin PID değil de, Fuzzy-PID adaptif bir sistem yapmak istiyorum. Bunu cihazdaki gömülü yazılımı değiştirmeden tasarladığım bilgisayar programı ile değiştirebilmek istiyorum.
...
Aslında kolay yolu bootloader ile yeni program yükleme ama
yapmak istediğin bu değil.

İstediğini yapabilmek için halihazırda
2 farklı sistem dediğin işleri yapan programların tamamının
önceden yazılmış ve cihazında mevcut bulunuyor olması lazım.
Sonrasında PC programı aracılığıyla hangisinin işletileceğini seçmek yeterli olur.

Yapılacak değişiklik sadece sabit değerleri değiştiriyor
faraza misal cihaz çıkış gücü alt limit üst limit değerleri gibi bir şey olsaydı,
cihazın hafızasında bir bölgede (eeprom da saklanan değerler gibi)
bu değerler tutulur ve yine gerektiğinde PC programı ile değiştirilebilir olabilirdi.
Sorularınıza hızlı cevap alın: http://www.picproje.org/index.php/topic,57135.0.html

foseydon

hocam senin istediğin şeyin tam karşılığı bootloader. yani programı komple değiştirmek istiyorsan kullanman gereken şey bu.

Mehmet Salim GÜLLÜCE

Extra memory ile selectible menü oluşturum istediğin poarametreleri girip istediklerini aktif pasif yapacak konfigürasyon oluşturmak sana daha çok uyar gibi.
Mesela ber eproma tablo oluştur.
Senin işlemci o tablodaki değerleri referans alarak iş yapsın.
PC den işlemciye bağlanarakta tablonun içeriğini değiştir. ;)

eem7490

Herkese teşekkür ederim cevaplarınız için. Öncelikle şuan bu konuyla alakalı bir proje üzerinde çalışmıyorum. Sadece geçen aklıma böyle bir fikir geldi ve fikirlerinizi almak istedim. Bunu belirteyim. Verdiğim örnek de anlaşılması kolay olsun diye o anda aklıma gelen uydurduğum bir örnektir.

Şimdi konuya gelince benim de fikrim şu şekilde. Konu bence de bootloader ile alakalı. Diyelim ki kontrol algoritmamız hariç yapılan diğer işlemler için gereken işlemci hafızası 9000 byte olsun.
Kontrol algoritmamız da :
int CTRL_Fnc(int ref, int measure)
{
  ....
  return r;
}
şeklinde bir fonksiyon olsun. Eğer burada PID kullanacaksak 100 byte'lık yer tutacağını varsayalım. Ancak bahsettiğim şeyi yapabilmek için biz bu "CTRL_Fnc" için hafızada 1000 byte'lık yer ayıralım. Bilgisayar ortamında hazılarlanan CTRL_Fnc fonksiyonunu gerekli olan hex formatına döüştürüp işlemciye gönderelim. işlemci de fonksiyonun başlangıç adresinden itibaren ayrılan bölgeye bu fonksiyonu yazsın.
Asıl programın içerisinde bu fonksiyon çağırılırken adresi çağırılacağından ve return işleminin nerede olacağı CTRL_Fnc içinde belirlendiğinden 100 byte'lık yer de tutsa 1000 byte'lık yerde tutsa gerekli işlemleri yapabilir diye düşünüyorum.
Yani böyle bir sistem oluşturulabilirse dışarıdan fonksiyon girilebileceğini düşünüyorum(tabiki belirli sınırlar içinde). Bu sayede de bu örnek için yeni bir kontrol algoritmaritması tasarlandığında MCU koduna hiç dokunmadan dışarıdan eklenebileceğini düşünüyorum.

Sizce olabilir mi?

yas

Aslında oluşturmak istediğin yapı plc ve bir çok otomasyon ürününde var. Örneğin operatör panellerinde reçeteler. Motor driver lardaki hazır yada değiştirilebilir makrolar gibi. Mesela piyasada bir çok uygulama için sürücülerdeki hazır makroları bir çok kullanıcı direk kullanırlar. Hidrofor hatları için basınca göre PID kontrol, asansör motorları için yumuşak kalkış ve duruş rampaları ve fren, ileri geri hareket uygulamaları gibi.... kullanıcı uygun gördüğü makroyu seçer isteğe göre sıfırdan da oluşturabilir yada mevcut makroları düzenleyebilir.

RaMu

Alıntı yapılan: eem7490 - 31 Ocak 2019, 00:17:29...
Sizce olabilir mi?
Teknik olabilir birebir yapılabilir,
mcu larda dediklerini yapmak için gereken özellikler mevcut.

Pratikte uygulama alanının olduğunu
kullanılabilir olduğunu düşünmüyorum.
Sorularınıza hızlı cevap alın: http://www.picproje.org/index.php/topic,57135.0.html

Monad

31 Ocak 2019, 07:53:31 #10 Son düzenlenme: 31 Ocak 2019, 08:00:31 Monad
Merhabalar,
PID değerlerini belirlemek için pek çok yöntem var, ziegler-nichols en çok bilineni, 'Şu ana kadar anlattıklarım' diye başlayan paragrafınızdan anladığım kadarıyla sistemin pid değerlerini belirlemek için kullanacağı algoritmayı gömülü yazılımı değiştirmeden bilgisayardan seçebilmek istiyorsunuz. Bunun için gömülü yazılımda kullanılacak algoritmaların hepsinin tasarımını yapıp gömüp, X isimli değişkenin değerinin karşılığı olan algoritmaya göre seçili algoritmayı uygulamasını sağlayabilirsiniz. X isimli değişkeni bilgisayardan değiştirdiğinizde sistem o algoritmaya göre PID katsayılarını belirleyecektir. Bunu da fonksiyon oluşturarak veya case yapısıyla halledebilirsiniz sanıyorum.