8 giriş arasından seçilebilen 3 girişin, 3 çıkışı kontrol etmesi

Başlatan F®T, 30 Kasım 2015, 15:26:40

F®T

Arkadaşlar g1,g2,g3,g4,g5,g6,g7,g8  olarak 8 dijital girişimiz var.3 tane çıkışımız var.
Bu girişlerden  istediğimiz 3 girişi seçicez.
örneğin : g7,g4,g2 gibi.diğerleri işlem yapmıcak.Bu giriş sıralaması hangi sıralamada olursa olsun ilk giriş geldiğinde  c1 çıkışını aktif edecek. sonrasında gelecek ikinci giriş c2 çıkışını aktif edecek.3. girişte c3 çıkışını aktif edecek.

bunun gibi kaç senaryo varsa oluşturulabilecek.Her senaryoyu tek tek yazmak dışında ne gibi bir algoritma ile bu durumları yapabiliriz?
"Hakk" şerleri hayr eyler Zannetme ki gayr eyler Ârif anı seyreyler Mevlâ görelim neyler Neylerse güzel eyler.

ete

Giriş pinleri bu işte önemsiz. Giriş sırası öneml. Bu nedenle giris diye bir değisken tanımlarsın . Her giris sonunda değeri bir artırırsın. Sonra select case ile çıkışları sürersin
Giris= 0 ise sürme yok.
Giris=1 ise çıkıs-1 aktif
Giris=2 ise çıkış_2 aktif
Giris=3 ise çıkış-3 aktif ardından giris=0 yapılmalı
Ete

F®T

ETE hocam girişlerin şöyle bir önemi var.
seçilen 1. g7 seçilmişse ,aktif olursa   çıkıs1 aktif
            2. g4 seçilmişse ,aktif olursa   çıkıs2 aktif
            3. g2 seçilmişse ,aktif olursa   çıkıs3 aktif

bu sıralama şöylede olabilir.

seçilen 1. g2 seçilmişse ,aktif olursa   çıkıs1 aktif
            2. g5 seçilmişse ,aktif olursa   çıkıs2 aktif
            3. g8 seçilmişse ,aktif olursa   çıkıs3 aktif

Burda 8 giriş arasında seçilen girişlerin önceliği değişebiliyor.Seçilen girişler çıkışa eşleniyor.Birçok if then satırı ile belki yapılabilir.Baya bir satır olacak.
Fakat  dediğiniz gibi bir değişken ile istenilen giriş seçildi.Bu seçilen girişlerin önceliği ayarlanıp çıkışa nasıl  yönlendirilecek.
"Hakk" şerleri hayr eyler Zannetme ki gayr eyler Ârif anı seyreyler Mevlâ görelim neyler Neylerse güzel eyler.

ete

Bir formüle bağlanması zor. Aşağıdaki gibi 3 satırla halledilemezmi?

If g7=1 or g2=1 then çıkış1=1
If g4=1 or g5=1 then çıkış2=1
If g2=1 or  g8=1 then çıkış3=1

Dikkatini çekerim g2 her iki konumda yer almış birisi muhtemelen g1 veya başka bir şey olacak herhalde.

Ete

F®T

ETE hocam zaten sorun o.Herhangi bir giriş herhangi bir sırada olabilir.3 giriş seçiyorum ve bunların öncelik sırasını belirliyorum.Öncelik sırasına göre ilk önceliğini verdiğim giriş c1 ikinci c2 ücüncü c3 ü giriş olursa aktif edecek.Dediğiniz gibi olabilir.Fakat 8 girişede bu ıf then tanımlamalarını kullanmak icab ediyor.Çok olasılık oluşuyor.selct case kullansak bile yine karmaşık bir yapı oluşuyor.Heralde bir algoritma oluşturmak zor gibi.
"Hakk" şerleri hayr eyler Zannetme ki gayr eyler Ârif anı seyreyler Mevlâ görelim neyler Neylerse güzel eyler.

ete

Olayın bütününe konsantre olmak lazım. Bu şekilde olmak zor ve ayrıca her şeyin değişebileceği bir ortamda işi formül ile halletmek zor. Sonuçta işin nasıl olacağını sen biliyorsun ve kafandaki yapıya uygun bir format oluşturman daha doğru olur.

Ete

F®T

Evet hocam değişken çok ,karışık durumda çok.Bayağı bir olasılık var.Ben bir olasılıklarla ilgili bir formül ile alakalı bir yaklaşım olabilirmi diye düşündüm.Ama uzun yol görünüyor.Bir menu yapıp 1. öncelikliyi seçicem.daha sonraki aşamada 2. daha sonra 3. yü.Aynı zamanda seçtiklerime çıkış atamalarını yapıp halletmeye çalışıcam.
"Hakk" şerleri hayr eyler Zannetme ki gayr eyler Ârif anı seyreyler Mevlâ görelim neyler Neylerse güzel eyler.

Mali-88

aslında basit gibi görünüyor yanlış anlamadıysam  isiste denedim çalışıyor lütfen deneyiniz hangi giriş gelirse gelsin ilk giriş geldiğinde 1.çıkış 1.girişten sonra hangi gieiş gelirse gelsin 2.cıkıs 2.girişten sonra hangi gieiş gelirse gelsin 3.çıkış hiç giriş yoksa çıkışlar pasif şeklinde ayarladım porta çıkış port b giriş
@ __config _XT_OSC & _WDT_ON & _MCLRE_OFF & _LVP_OFF & _CP_OFF
TRISA=0
TRISB=255
CMCON=7
SYMBOL C0=PORTA.0
SYMBOL C1=PORTA.1
SYMBOL C2=PORTA.2

GIRIS_1_AKTIF VAR BYTE
GIRIS_2_AKTIF VAR BYTE
BASLA:
IF PORTB=0 THEN
GIRIS_1_AKTIF=0
GIRIS_2_AKTIF=0
C0=0
C1=0
C2=0
ENDIF


IF PORTB>0 AND C0=0 THEN
GIRIS_1_AKTIF=PORTB
PAUSE 10
C0=1
ENDIF

IF GIRIS_1_AKTIF<>PORTB AND C0=1 AND C1=0 THEN
GIRIS_2_AKTIF=PORTB
PAUSE 10
C1=1
ENDIF
IF GIRIS_2_AKTIF<>PORTB AND C1=1 AND C2=0 THEN
PAUSE 10
C2=1
ENDIF
GOTO BASLA

F®T

Mali-88 tabi güzel olmuş eline sağlık.Fakat biraz karmaşık bir sorun.8 adet girişi bir byte değişken olarak düşün.Bunlar arasında istenilen 3 bit seçiliyor ve bu 3 bit e öncelikli sıralama veriliyor bu sıralamaya göre 1. öncelikli olan bit 1.çıkışı  2. öncelikli olan bit 2.çıkışı  3. öncelikli olan bit 3.çıkışı tetikliyor. Böyle bir yapı olacak.Program yazmadan ziyade mantık oluşturma ile ilgili sıkıntı yaşıyorum.Mantığı yakaladığım an zaten program biter.Teşekkürler.
"Hakk" şerleri hayr eyler Zannetme ki gayr eyler Ârif anı seyreyler Mevlâ görelim neyler Neylerse güzel eyler.

İlyas KAYA

Epey kafa yordum ama oldu sonunda.

Program içindeki açıklamaları okuyun. Ben girişleri portb ye bağladım komple. Eğer başka portlara bağlı ise değişiklikleri yaparsınız kendiniz. Portb pull up.
16F628A ile yaptım.

Kodlar silinmistir. Bu kod yüzünden 3 gündür başım ağrıyor. Uykusuz kaldım algoritma oluşturdum. 255 farklı ıf yapısını 3 4 satıra sığdırdım ama arkadaş umursama di bir teşekkürü bırak anlamadığı haldé soru dahi sormadı. Bu durum birkaç defadir oluyor. Bundan sonra forumda kod paylaşımı yapmayacağım.
Göz odur ki dağ ardını görsün,
Akıl odur ki başa geleceği bilsin.!

F®T

İlyas Hocam selamlar.Malesef görevdeydim.Onarımcı olduğum için acil bir durum oluştu.Ondan dolayı konu ile  ilgilenemedim.Daha yeni geldim.Bu şekilde yanlış anlamanızdan dolayı çok üzgünüm.Yoksa verilen bir emeğin karşılığında bu tip davranış içinde olacak bir insan olmadığımı mesajlara bakıp anlayabilirsiniz.Peşin hükümlü olmamak lazım diye düşünüyorum.Kod önemli değil.İnsanlar herşeyden daha önemlidir.Sizin bu şekilde düşünmenize sebep olduğum için özür diliyorum.Hakkınızı helal edin.Allah razı olsun.İyi günler.
"Hakk" şerleri hayr eyler Zannetme ki gayr eyler Ârif anı seyreyler Mevlâ görelim neyler Neylerse güzel eyler.

ete

Zaman zaman bende aynı kanıya kapıldığım oluyor maalesef. Ancak tecrübelerim bana bu şekilde düşünmek için en az 7 gün geçmesi gerektiğini söylüyor artık. Bu sitede veya başka forumlarda insanlar birbirlerini yakından tanımıyor. Kimin ne iş yaptığınıda bilmiyoruz. Bu nedenle hep üyelerin ve özellikle yardım isteyenlerin PC başında beklediğini düşünüyoruz. Genelde böyle oluyor ama istisnalarda çok fazla bu nedenle kesin hüküm vermeden önce yeterli süre bırakmakta yarar var diyorum.

Ete


İlyas KAYA

Esasen hedef olarak seçmedim. Seçse idim konuya mesaj yazar mesajın görülmesini sağlardım. Bir çok kere aynısı olunca insan ister istemez kullan at gibi hissediyor kendini.
Aynı duyguları sanırım yaşamadan da anlayamıyor insan.

Kimseden maddi bir beklentimiz yok. Sadece bir teşekkür veya Allah c.c razı kelimesi olsun yetiyor.
Ama onu dahi yapmayanlar var.

Sizi dün online gördüm o nedenle böyle bir karar verdim.
Kızgınlık olarak algılamayın bu bir tepki sadece..

Çünkü o gün ki post saatime bakarsanız sabah 6. Ben o gün hiç uyumadım ve bunu nasıl kısa yoldan çözeriz diye uğraştım. Çünkü gerçekten daha önce yapılmamış yada yapanların paylaşmadığı bir algoritma var.

Çok basit görünse de bu algoritma ile PLC yapabilirsiniz. Hemde cihaz üzerinden programlayarak.
Özür dilemenizi erdemlik olarak algılıyorum. Bu nedenle sizi de üzmek istemiyorum.

Kodlar tartışmaya açıktır.Fazlalıklar var farkındayım. Ben tekrar ekliyor ve özür diliyorum.


#CONFIG
      __config _INTRC_OSC_NOCLKOUT & _WDT_OFF & _MCLRE_OFF & _LVP_OFF  & _CP_ON
#ENDCONFIG

CMCON=7

DEFINE OSC 4


option_reg.7=0


trisa=0
TRISB=255

GIRIS VAR PORTB


C1 VAR PORTA.0
C2 VAR PORTA.1
C3 VAR PORTA.2


CIKISAYAR VAR BYTE
OG VAR BYTE [8]

x var byte ' for için
y var byte 'for için
   
OKU VAR BYTE
OGBAK VAR BYTE
SIRAKONT VAR BYTE
ISLEM VAR BYTE
KES VAR BIT
OTOAYAR VAR BYTE



clear

'#########################
OG[0]=3   
OG[1]=1   
OG[2]=2 
' ONCELİK SIRASI BU ŞEKİLDE AYARLANACAK. İLK HANGİSİ AKTİF OLACAK İSE AYARLARINI YAPARKEN O ELEMAN 1 SONRAKİ 2 SONRAKİ 3 OLARAK SET EDİLECEK
' ORNEĞİN 6 NCI GİRİŞ 1NCİ SIRADA OLACAK İSE OG [5}=1 , 2NCİ GİRİŞ 2 AKTİF 2NCİ SIRADA OLACAK İSE OG[1]=2 OLACAK..
'############################



'CIKISAYAR=%11111000   'PORTB B7.....B0 . 0 OLAN BİTLER ET EDİLEN GİRİŞ BİTLERİ

' bÖYLECE sırayı ayarlamış olduk.


FOR X=0 TO 7
OTOAYAR=OG[X]

IF OTOAYAR>0 THEN
CIKISAYAR.0[X]=0
ELSE
CIKISAYAR.0[X]=1
ENDIF
NEXT
' CIKIS AYARINI ALMAYI OTOMATIKLESTIRDIM
'#######################################
X=0

'
       
bas:

IF PORTB=255 THEN KES=0


FOR X=0 TO 7 ' GİRİŞLERİ TARAYALIM

OKU=PORTB.0[X] ' PORTB NİN BİTLERİNİ SIRA İLE OKUYALIM

IF OKU=0 AND KES=0 THEN 'EĞER BUTONLARDAN BİRİ BASILDI İSE

    IF CIKISAYAR.0[X]=OKU THEN  ' GİRİŞ AKTİF OLARAK AYARLANMIŞMI

        if og[x]=SIRAKONT+1 then
        ISLEM=ISLEM +1
        SIRAKONT=SIRAKONT+1
        KES=1

        endif
    ENDIF

ENDIF




NEXT

SELECT CASE ISLEM

CASE 1
C1=1
CASE 2
C2=1
CASE 3
C3=1
END SELECT






goto bas

end
Göz odur ki dağ ardını görsün,
Akıl odur ki başa geleceği bilsin.!

F®T

Hocam insanın  olduğu yerde herşey olabilir.İnsan biranda farklı düşünebiliyor.Şaşarız beşeriz.
Çok çalışkan ve fedakar bir çalışanın sadece oturduğu anda iş verenin görüp o insan hakkında hüküm vermesi gibi durumlar gibi.Fakat genel bakmak lazım.Bu sitede başından beridir varım.Tüm mesajlardada insanlara küçük büyük iyi kötü demeden teşekkür etmeyi borç bilirim.Size tekrar teşekkür ediyorum.Hakkınızı helal edin.
Dediğim gibi çalıştığım konum itibarı ile zamanında mesajlara yanıt veremeyebiliyorum.Fırsat bulduğum anda cep ten online olup baktığım oluyor ama iş ortamında yanıt verme durumum zor olduğundan eve geldiğimde yanıt vermeye çalışıyorum.30 yıllık iş hayatımda hep kendimi güncel tutmaya ve çalıştığım yere daha iyisini vermeye gayret ediyorum.Bu sitelerde sorduğum sorular sonucuda inanınki kamuda çalışan biri olarak çalıştığım yere katkıda bulma amacım var.Kendimi otomatik maaşa bağladım gerisi boş gibi düşünen biri değilim.
Tekrar bu tip bir yanlışlığa sebep olduğum için sizden ve tüm siteden özür diliyorum.Allaha emanet olun.
"Hakk" şerleri hayr eyler Zannetme ki gayr eyler Ârif anı seyreyler Mevlâ görelim neyler Neylerse güzel eyler.

gogoce

Forumd
Alıntı yapılan: F.T - 03 Aralık 2015, 16:11:02
Hocam insanın  olduğu yerde herşey olabilir.İnsan biranda farklı düşünebiliyor.Şaşarız beşeriz.
Çok çalışkan ve fedakar bir çalışanın sadece oturduğu anda iş verenin görüp o insan hakkında hüküm vermesi gibi durumlar gibi.Fakat genel bakmak lazım.Bu sitede başından beridir varım.Tüm mesajlardada insanlara küçük büyük iyi kötü demeden teşekkür etmeyi borç bilirim.Size tekrar teşekkür ediyorum.Hakkınızı helal edin.
Dediğim gibi çalıştığım konum itibarı ile zamanında mesajlara yanıt veremeyebiliyorum.Fırsat bulduğum anda cep ten online olup baktığım oluyor ama iş ortamında yanıt verme durumum zor olduğundan eve geldiğimde yanıt vermeye çalışıyorum.30 yıllık iş hayatımda hep kendimi güncel tutmaya ve çalıştığım yere daha iyisini vermeye gayret ediyorum.Bu sitelerde sorduğum sorular sonucuda inanınki kamuda çalışan biri olarak çalıştığım yere katkıda bulma amacım var.Kendimi otomatik maaşa bağladım gerisi boş gibi düşünen biri değilim.
Tekrar bu tip bir yanlışlığa sebep olduğum için sizden ve tüm siteden özür diliyorum.Allaha emanet olun.


Forumda yanlış anlaşılmak gibi kötü duruma bende düştüm . F.T. yani Ferit abiyi şahsen de tanırım . Bu güne kadar ne sorduysam cevap verdi , ilgilendi . Ama şu da bilinmelidir ki online görünüldüğünde o anda pc nin yada telefonunun ekranı başında olunamayabiliniyor . Takdir edersiniz ki çalışan teknik elemanlarız . Arızanın ne zaman olacağı , hangi dakika nerede olacağımız belli olmadığı gibi internet için şehir merkezine indiğimiz durumlar da olabilmektedir . Teşekkür etmek için bile birkaç gün online olamadığımız da olabiliyor . Siz ustalarımız büyüklerimiz bilgili kişilerimiz bunları dikkate alarak yanıt verirseniz veya duruma göre değerlendirme yaparsanız seviniriz .


Anlayışla karşılayacağınızı ümit ediyor , Saygılar diliyorum





Ferit abi bu çalışmanı merakla takip ediyorum . Fuzy Logic benzeri bir çalışma gibi görüyorum . Hangi girişi nezaman seçeceğimiz hangisine hangi önceliği vereceğimiz sanırım programda değil dışarıdan ayarlanacak (eğer yanlış anlamadıysam )


Başarılar
Ne ukalayı affederim nede yapılan haksızlığı ...
Ya sus adam sansınlar , yada adam gibi kouş ilham alsınlar

Powered by EzPortal