Skip to main content

Omron Plc Programlama -4

OMRON PLC PROGRAMLAMA -4

Omron plc nasıl programlanır ? Omron plc dersleri nedir ? Omron plc’yi nasıl öğrenebiliriz ? Omron plc programlamanın temellerinde neler yatmaktadır ? Bu ve benzeri sorulara cevap aradığımız Omron Plc Programlama -4 adlı yazımızla karşınızdayız.

Başlayalım.

OMRON PLC PROGRAMLAMA

AlanBoyutAralıkHarici I/O Yerleşimi
I/O Alanı160 wordCIO0-CIO159Basit I/O Birimleri
Data Link alanı260 wordCIO 1000-1199Data ya da plc linkleri
Senkron Data Yenileme96 wordCIO 1200-1295Senkron birimler
CPU Bus Birim Alanı400 wordCIO 1500-1999CPU Bus birimleri
Özel I/O Birim Alanı960 wordCIO 2000-2959Özel I/O alanı
Pals I/O Alanı4 wordCIO 2960-2963Pals I/O modüllleri
Seri Plc Link Alanı90 wordCIO 03100 – 3189Plc linkleri
Devicenet alanı600 wordCIO 3200 – 3799Devicenet master
Dahili I/O alanı200 , 2344 wordCIO 1300-1499/3800-6143

Çalışma alanı : 512 word = W000 – W511

Kalıcı (Holding) alan : 512 word = H000 – H511

Yardımcı (Auxiliary) Alan = 3008 word: A000-447 / 448-959 / 960-1471/10.000-11.535 (Bu alanların hepsi için yazma ve programlama cihazı tarafından bir değişiklik yapılması söz konusu değildir.)

Bunun dışında , tüm yardımcı alanlarda bit erişimi , word erişimi , okuma , yazma ve değişim yapılmaktadır.

TR Alanı : 16 Bit : TR 0 – TR 15

DM Alanı : 32,768 word : D00000 – D32767 arasıdır

EM Alanı : Her bir bank için 32768 word ve toplamda 25 bank kullanılabilirdir : E00_0 <-> E18_32767 (0-18 Hex)

Timer flag’ı : 4096 bit : T0  – T4095

Counter flag’ı : 4096 bit : C0 – C4095

Timer PVs = 4096 word : T0 – T4095

Counter PVs = 4096 word : T0 – T4095

Task flag alanı : 128 bit : TK000 – TK127

Index Registerları : 16 Register : IR0-IR15

Data Registerları : 16 Register : DR0 – DR15

Condition flags : Örn : P_On , P_Off

Pals bitleri : Örn : 1s clock pals

I/O Hakkında Notlar:

1.CIO 160 ila CIO 0999 arası , belirli birimlerdeki ilk word değişimi ile genişletilebilir ilk word ayarları CX-Programmer içerisinde I/O tablosu üzerinden yapılır.İlk word ayarı aralığı : CIO 0’dan CIO 900’e kadardır.

2.Eğer I/O hafıza hold (tutma) bayrağı (A500.12) ‘On’ ise , çalışma modu değişse de , hafıza değerleri kalıcı olacaktır.Ek olarak eğer başlangıçta , I/O hafıza hold bayrağı durumu PLC setup üzerinden set edilirse , (IOM Hold bit parametresi) , güç kaynağı ‘On’ olduğunda hafıza değerleri de kalıcı olacaktır.

3.H512-H1535 arası yalnızca fonksiyon blok hafızası ya da SFC hafızası olarak kullanılabilirdir.

4.A960 –A1471 , A10000-A11535 CJ2 CPU birimleri yardımcı alanına genişleme için eklenmişlerdir.Bu wordlere , CPU bus birimleri , Özel I/O birimleri , PTs , destek yazılımları ile erişilemez.

Yalnızca aşağıdaki , CPU birimleri ile ve özel I/O birimleri spesifik olarak CJ2 CPU birimlerini destekler.

Ethernet/IP Birimi : CJ1W-EIP21

Pozisyon kontrol birimleri : CJ1W-NC214 , CJ1W-NC234, CJ1W-NC414 , CJ1W-NC434 , CJ1W-NC481 , CJ1W-NC881

Analog giriş birimi : CJ1W-ADO42

Analog çıkış birimi : CJ1W-DAO42V

I/O Alanı :

Giriş-Çıkış alan adres aralığı : CIO 0-159 word (CIO 0.00 – CIO 159.15 bit)

I/O üzerindeki wordler basit I/O birimleri üzerindeki I/O terminalleridir.

Input Bit : Giriş birimlerine yerleştirilen I/O alanındaki bite denir.Pushbutton anahtarları , limit anahtarları , fotoelektrik anahtarlar vb. cihazların on/off durumunu kontrol eder.

Plc’de giriş noktalarının durumunu Refreshing (yenilemek) için 3 yol bulunmaktadır.

Normal I/O refreshing

Immediate refreshing (!LD 1.01 gibi)

IORF(097) refreshing (IORF 0 3 -> 3 adet olacak şekilde CIO 0-3 yeniler)

Çıkış Biti : Çıkış üniteleri üzerinde bulunan I/O alanı içerisindeki bite , çıkış biti denir.Burada giriş biti ile aynı refresh için 3 yol bulnmaktadır.

Not : Çıkış bitlerinde bir sınırlama yoktur.

|——–|0.02|——-(0.00)

|——–|0.00|———() gibi…

Örnek 2:

|———|0.02|———–(0.00)

|——-|0.10|——(0.00)  Eğer aynı çıkış 2 bit ile kontrol ediliyorsa yalnızca en sondaki aktif olacaktır.

Data Link Alanı :

Data link alanı wordleri , LR’nin kontroller link ağları için data link alanını set etmesi durumunda kullanılabilir.

Aksi durumda ‘set’ olmazsa kullanılamaz.

CPU Bus Birim Alanı :

Her bir CPU birimi/ünitesi 25 word’e sahiptir.

0 (CIO 1500-1524) , 1 (CIO 1525-1549) , ………. ,F (CIO 1875-1899)

Özel I/O Ünite Alanları :

Adresler : CIO 2000-2959 word / 2000.00-2959.15 bit olarak..

Her bir ünite 10 word alacaktır ve 96 birim takılabilir.

0 (CIO 2000-2009) , 1 (CIO 2010 – 2019) , ……. , 95 (CIO 2950 – 2959)

Pals I/O Alanı : CIO 2960 -2963

CJ2M CPU ünitesine Pals I/O modülü takıldığında Pals I/O alanı pals I/O fonksiyonlarına yerleşir.

Modül numarasına göre her bir pals I/O modülü 2 word kapsar.Toplamda 4 word (Pals modülü 0 (2960-61) ve pals modülü 1 (2962-63))

DeviceNet Alanı :

DeviceNet uzaktan I/O haberleşmeleri için wordler , slavelere konmuştur.Data , devicenet ünitesi üzerinden programdan bağımsız şekilde networkten düzenli olarak çalışır (exchange olur).

Holding Alanı :

H000.00 <-> H511.15 (Bitler)

Bu bitler güç gelip gitsede , program işleyiş modu değişsede konumlarını korurlar.

Not : KEEP (011) komutu ile holding area bitleri kullanıldığında keep komutu reset inputu için eğer ‘AC güç besleme’ kullanılıyorsa , asla ‘kapalı kontak’ kullanmayınız.Çünkü güç gelip gittiğinde ‘holding area’ resetlenecektir.

Auxiliary (Yardımcı) Alan :

A0 – A1471 ve A10000-A11535’tir.

A0-A447 ve A10000-A11535 arası sadece okunabilirdir.A448 ile A1471 arası hem okunabilir hemde yazılabilirdir.

Temporary Relay (TR) Alanları :

TR alanları TR0-TR15 arası bit içermektedir.Çoklu çıkış alan dallanmalarında ve interlock kullanımı yoksa çok kullanışlıdır.

Data Memory (DM) Alanları :

DM alanı D0-D32767 aralığındaki adreslerdir.Bu data alanı genel data depolama  ve manipülasyon için kullanılır ve bit/word aracılığı ile erişilebilirdir.

DM alan içerisindeki data kalıcıdır.DM alan içerisindeki bitler force-set ya da force-reset yaptırılamaz.

Indirect (Dolaylı) Adresleme :

Wordler DM alanı içerisinde iki şekilde dolaylı olarak depolanabilirler.Binary mode ve BCD mode.

Binary Mode Adresleme (@D) :

DM adresinden önce @ karakteri konulursa , DM word içeriği binary olarak işlem görür ve işlemler DM wordteki binary adreslere göre işlem yapar.Tüm DM alanı (D0-D32767) hexadecimal değerler ise (0-7FFF) ile dolaylı adreslenebilir.

@D100 [0100 Hex] -> D256 (Gerçekte kullanılan adrestir)

BCD Mod Adresleme (*D)

‘*’ karakteri DM öncesinde kullanılırsa ve DM Wordleri BCD olarak kullanılabilir.Yalnızca (D0-D0999) adresleri dolaylı olarak indekslenebilir ve BCD değer olarak kullanılabilir.

Ör : MOV #1234 *D100

*D100 [0100 Hex] -> D100 [1234 Hex] (Gerçekte kullanılan adres)

D20000 ile D29599 arası : Özel I/O üniteleri için DM Alanlarıdır(100 word/Birim)

D30000 ile D31599 arası : CPU Bus birimleri için DM Alanlarıdır. (100 word/Birim)

OMRON PLC PROGRAMLAMA -4 SONUÇ :

Bugün Omron Plc Programlama -4 adlı yazımızı sizlerle paylaştık.Umuyorum Omron adına faydalı birtakım bilgiler edinmişsinizdir.

İyi Çalışmalar

Omron Plc Programlama -3

OMRON PLC PROGRAMLAMA -3

Omron plc nasıl programlanır ? Omron plc programlama da dikkat edilmesi gereken kurallar nedir ? Omron plc programlamanın temelleri nedir ? Bu ve benzeri sorulara cevap aradığımız Omron Plc Programlama -3 adlı yazımızla karşınızdayız.

Başlayalım.

OMRON PLC PROGRAMLAMA

Index Registers :

Plc hafıza adresini I/O hafıza içerisinde belirleyen bir pointer fonksiyonudur.

Index Registerları MOVR(560) ya da MOVRW(561) ile adres depolandıktan sonra , Index Register girişi operand olarak dolaylı adresleme yapılır ve diğer komutlarla beraber kullanılabilir.

Index Register’ın avantajı ise , timer , counter vb. dahil I/O hafızası içerisinde herhangi bir bit ya da word’ü belirleyebilir.

MOVR(560)-> |IR[](Index Register)| -> Pointer -> |I/O Hafıza Alanları|

Index Register Kullanımı :

Index Registerları for-next döngüleri gibi döngülerde kullanılabilirdir ve güçlü bir araçtır.Index Register içeriği artırılabilir , azaltılabilir ve kolayca ofsetlenebilirdir.

|Komut : IR| -> Dolaylı Adresleme -> IR0 -> IR0’ı artır ve komutu tekrarla -> |Data Tablosu|

Index Registerlar İçin Direkt Adresleme Komutları

Binary Add (+L) , Binary Subtract (-L) , Double Increment Binary (++L) , Double Decrement Binary (-L)

Örnek ;

Komut A m

Komut A m+1

Komut A m+2 vb. yazmak yerine ;

MOVR(560) m IR0

Komut A , IR0+ şeklinde kullanılabilir.

Örnek ;

LD P_Off

Out , IR0+

Buradaki işlem ; Plc adresi CIO 0.13 IR0 içinde depolandığında , Giriş koşulu kapalı (off) olduğu için , çıkış CIO 0.13 dolaylı olarak IR0’a atanır.Koşul çalışır ve IR0 1 artar.Böylece Plc hafıza adresi CIO 0.14 olur.

Örnek ;

LD P_Off

SET ,IR0+

Buradaki işlem ; Plc adresi CIO 0.13 IR0 içerisinde depolandığında , giriş koşulu off olduğu için SET komutu çalışmaz.Böylece IR0 aynı kalır.

Dikkat edilmesi gereken kurallar ;

Bir yerde yada fonksiyon bloğunda kullandığımız Index Registerlarını bir başka yerde kullanmak istediğimizde Index Registerlarını bir yere kaydetmelisiniz.Aksi durumda , hataya sebep olabilirler.

Ek olarak kullandığımız değerleri daha önceden ya da en başta kaydetmeliyiz.Yani , Index Registerlara bir değeri set etmez isek daha başta işlemler hatalı ilerleyebilirler.

Index Register Uygulama Örneği

D0-D99 dataları ile D100-D199 datalarını toplayıp ;

D0 için IR0 , D100 için IR1 ve D200 için IR2 Index Registerları kullanılacaktır.

Bu işlemi nasıl gerçekleştirebiliriz.

Kodlar :

|—-|↑a|————–|MOVR D0 IR0|——-|

|—-|↑a|————–|MOVR D100 IR1|——-|

|—-|↑a|————–|JMP &1000|——-|

|—–|FOR &100|——-|

|—-|a|———|+ ,IR0+ , IR1+ , IR2+|—|

|—————|NEXT|

|—————–|JME &1000|

Not : ‘a’ yükselen kenar tetiklendiğinde Index R set edilir.Off->On olmadan for-next döngüsü çalışmaz.

Not : JME &1000 için , Jump destination komut ‘a’ yükselen kenarı tetiklenmediğinde çalışır.

Devam edelim..

Not : Index registerlar şu komutlar ile direkt adreslenebilir ;

MOVR , MOVRW , SETR , GETR , RSRCH[] , RSORT[] , MOVL , XCGL , =L , <>L , <L , <=L , >L , >=L , CMPL , ++L , –L, +L , -L , FRMCV , TOCV

Index Registerlar Monitoring İşlemi :

Host link komutları ya da FINS komutlarını kullanarak Index Registerları izleyebiliriz ve bunları DM alanları vb. içerisinde tutarak değerlerini görebiliriz.

Örnek :

|——–|a|——|MOVR 0005 IR0|

|——-|P_On|—–|MOVL IR0 D2000| (D2000 ve D2001 adreslerinden okuyabiliriz)

Devam ..

Tasklar Arasında Index ve Data Registerlarını Paylaştırma

Normal ayarlarda; her bir task için registerlar birbirinden ayrılır.

Ayar : CX- Programmer içerisinde Proje Ağacı (Project Tree) kısmında PLC’e sağ tıklayın ve “properties”e basarak ilerleyin.Burada PLC properties dialog box görünecektir.General seçeneğinin alt tarafında bulunan “Use |R|DR independently per task” seçeneğindeki tik’i kaldırmalısınız.

Not : Yardımcı alan bayrakları ve Wordleri :

Adres: A99.14 -> 0 : Her bir task için registerları ayrı (default) , 1 : Tüm tasklar için registerları paylaştır.

Not : Index ve Data registerlarının paylaşımı , depolama ihtiyacını azaltır.

Not : Paylaşım olursa , tasklar arasındaki değişim zamanı hızlanacaktır.

Adres Ofseti Belirleme :

Belirli adres için köşeli parantez arası ofset değiştirilebilir.

Örnek :

D000[w0] -> w0 = &2 ise -> 2 eklenir ve sonuç D0.2 olacaktır.

10.00[4] -> 10.4’e eşittir.

D100[w1] -> w1 = &3 : D103’e eşittir.

Ofsetleme yalnızca -> H , W , DM ve EM alanlarında kullanılabilirdir.

Adres Ofsetleme Örneği :

D0-D99 ve D100-D199 arası D200-299.Eğer w0=30 olarak girilirse, ilgili Wordler d30-d99 ve d130-d199 ve d230-d299 olmalıdır.

|——–|↑a|—————-|MOV w0 w1|———|

|——————————|FOR &100|———-|

|——|a|————-|<  w1 &100|———–|+ D0[W1] D100[W1] D200[W1]|——|

|——-|+ +W1|—————-| (< W1 &100’ün sağ tarafına bağlıdır.)

|———————-|NEXT|——————–|

Condition (Koşul) Flags

Koşul bayrakları direk olarak sol tarafta bulunan bus bar’a bağlanamaz.

Örnek :

Doğru olan :

|———–||—————Komut A

|—–|P_EQ|—–Komut B     (Burada P_EQ ile başlayan satır komut A ile kontağın arasına bağlıdır.)

Yanlış :

|———|P_EQ|————Komut A

|———|P_EQ|————Komut B

Condition (Koşul) Bayraklarında Ana Turning On Durumları

Error Flag (P_ER) : Hata bayrağı

Equals Flag (P_EQ) : Eşittir bayrağı

Carry Flag (P_CY) : Elde bayrağı

Less than and greater than (P_LT , P_GT) : Büyüktür ya da küçüktür bayrağı

Negative Flag (P_N) : Eksi,Negatif bayrağı

Özel Program Bölümleri :

1.Subroutine : SBS , SBN ve RET , GSBS , GSBN , GRET Komutları

2.IL/ILC : IL ve ILC komutları

3.Step Ladder : Step komutları

4.FOR-NEXT : For ve Next Komutları

5.JMP0-JME0 : JMP0 ve JME0 komutları

6.Blok programlama alanı : BPRG ve BEND komutları

OMRON PLC PROGRAMLAMA -3 SONUÇ : 

Bugün Omron Plc Programlama -3 adlı yazımızı sizlerle paylaştık.Umuyorum faydalı olmuştur.Temel olarak altyapıyı oluşturmak adına uğraşıyorum.İlerleyen zamanlarda umuyorum bol uygulamalı yazılarla birlikte oluruz.

İyi Çalışmalar

 

Omron Plc Programlama -1

OMRON PLC PROGRAMLAMA -1

Omron plc nasıl programlanır ? Omron plc programlama da kullanılan teknikler nelerdir ? Omron plc programlamayı nasıl öğrenebiliriz ? Bu ve benzeri sorulara cevap aradığımız Omron Plc Programlama adlı yazımızla karşınızdayız.

Başlayalım.

OMRON PLC PROGRAMLAMA

Komut Yapıları :

Komut yapılarında giriş olarak sıralı olarak ;

Güç akışı , komut koşulu(1) , Flags(bayraklar) bulunur.

I/O hafızaya operandlar hedef olarak gider ya da source(kaynak) olarak döner.

Çıkış olarak ise  sıralı olarak ;

Güç akışı , komut koşulu(2), Flags (bayraklar) bulunur.

Girişte 1 numaralı komut koşulu yalnızca giriş komutlarını içerir.

Çıkışta komut koşulu ise , tüm komutlar için çıkış olmayabilir.

Power flow (Güç akışı) : Çalıştırma koşuludur.

Komut Koşulları ;

Interlocked : Programın bir parçasını kapatır(özel durumlar , çıkış biti etkisizleştirme , holding sayıcılar vb.).Set etmek için IL(002) , komut iptali için IL(003) kullanılır.

Break (514) : For-Next döngüsü çalışmasını sonlandırır(Diğer bir next’e kadar çalışmayı durdurur).Set için : BREAK , iptal için ,reset : NEXT

Blok Program Çalıştırma : BPRG(096)’dan BEND’e(801) program bloklarını çalıştırır.Set için BPRG(096) , reset , iptal için : BEND (801)

Operands : I/O alanı hafızası içerik ya da sabitlerini belirlemek için kullanılan preset komut parametrelerini özelleştirmek için kullanılır.Komut , operand olarak adres ya da sabitler girilerek çalıştırılabilir.

Operandlar , kaynak , hedef veya sayı operandları olarak 3’e ayrılırlar.

Örnek : MOV #0 D0 (#0 : S -> Source(kaynak) , D0 : D ->Destination(hedef))

Örnek : JMP &3 (&3 : N -> Number(Sayı))

Source (Kaynak) : Data ya da sabitin adresini okumak adına belirleme yapar.Nasıl ?

S : Source operandı (kaynak operandı)

C : Control data (kontrol datası) : Bit durumuna bağlı olarak farklı anlamdaki source operand içerisindeki datadır.

Destination (Hedef) : Data yazılacak adresi belirler.Data registerlardır aslında bunlar.

Number (Sayı) : Jump ya da subroutine numarası gibi komut içerisinde kullanılacak numarayı belirler.

Not : Operandlar ilk operand , ikinci operand gibi isimle anılırlar.

Örnek : MOV #0 D0 (#0 ilk operand , D0 ikinci operand)

Komut Değişkenleri :

Differentation :

‘On’ : @ : Komut çalıştırma şartı ‘on’ olduğunda differentiate olur.

‘Off’ : % : Çalıştırma şartı ‘off’ olduğunda differentiate olur.

Immediate Refreshing : ! : I/O alanındaki belirlenmiş datalar yenilenir(refresh).

Not : Non-Differentiated komutlar : Her saykılda çalışırlar.Differentiated komutlar ise yalnız bir defa çalışırlar.

@ İşareti :

Çıkış komutlarında : Sadece off -> on olduğu durumlarda bir saykıl çalışırlar ve diğer saykıllarda çalışmazlar.

Örnek : |———| 1.02|———-|@MOV|——|

CIO1.02 ‘off -> on’ olduğunda sadece bir kez mov komutu aktif olur.

Giriş komutlarında :

|↑|———–   (off -> on) olduğunda çalışma koşulu ‘on’ olur.Diğer saykılda çalışmaz.

Ya da yükselen kenarın değili olduğunda çalışma koşulu ‘off’ olur ve diğer saykılda ancak ‘on’ olur.

DIFU = @ ve DIFD = %

Not : Always P_On bayrağı ya da A200.11(First cycle bayrağı) giriş(input) bitini yükselen kenar komutu olarak kullanmayınız.

Aynı şekilde Always P_Off bayrağını da giriş biti düşen kenar olarak kullanmayınız.

Operandları Belirleme :

Örnek : 1.03 (1 -> Word , 03 -> Bit) CIO alanında word 1’in 3.biti anlamındadır.

Örnek : DM alanı : D1001.03 (D1001-> word adresi , 03 -> Bit numarası )

Örnek : Word adresi : I/O alanı da örneğin word adresi içerir.10 -> Word adresidir.

omron plc programlama

DM ve EM Alan Adresleri :

D ve E prefixleri ile verilirler.

Örneğin ;

EM Alanı : E200

DM Alanı : D200

EM Alanı Bank1 : E01.200 (E01 bank no , 200 word adresi)

Operandları Belirleme : 

Bit adresi ayarlama : 1.02 -> —–|1.02|——-

Örnek : 3 , D200 à MOV 3 D200

Bit adresleri için ofset belirleme :

Örnek : 100.00[2] (100.00 bit adres başlangıcı , [2] ise ofset adresi için bit numarası)

100.00[w0] (w0 = &2) -> |——| 100.00[2] |——-

Köşeli parantezler içerisinde , bit başlangıç adresi için bit ofsetlerini belirleriz.

Not : Word adresleri için ofset belirleme köşeli parantezler içi 0-15 arası sabit ya da I/O hafızadaki word adresi olabilir.

Örnek : D0 [2] (word adres başlangıcı, [2] ofset adres word sayısı) : D0 [W0] -> W0 = &2

Buradan örneğin ; MOV 3 D0[200] olarak kullanabiliriz.

Direkt Olmayan DM/EM Adreslerini Binary Modda Belirlemek

Belirlenmiş alanın başlangıcından itibaren ofset değeridir.Belirli DM , EM alanlarındaki word adresleri için binary data olarak çevrilir.Başına ‘@’ sembolünü koyarak binary modda direkt olmayacak şekilde işlem yapabiliriz.

Aralık (0-32767)

Örnek : @D…… -> İçerik |     | -> D…..

Burada içerik 0 ile 32767 (hex 0000’dan hex7FFF’e kadar binary datadır)

Örnek : D0…D32767 (@D……     0000 ile 7FFFF Hex arasında değerdir.ya da 0-32767 arası desimal değerdir)

Dikkat : İçerik (content) -> &256 -> Hex #0100 = D256’yı belirtir.

MOV #0001 @D3000

Örnek : E0_0 -> E0-32767 : EM alanı içerisinde bank0’ın belirlenmesi işlemi örneği

@D….. 8000’den  FFFF’e kadar hex data içerir.(32768 – 65535 arası)

&32769 içeriği = Hex #8001 -> E0_01’i belirtir.

Örnek : E[]_0 -> E[]_32767 : Bank numaralarını ifade eder.

@E[]_[][][][] (0000-7FFF) arası değer içeriyorsa (0000-32767 desimal değerdir.)

İçerik : &257 = Hex #0101 = E1_257’yi belirtir.

MOV #0001 @E1_200

Not : E([]+1)_0 -> E([]+1)_32767 : Burada @E[]_[][][][] 8000 ile FFFF Hex arası içeriyorsa (32768-65535 desimal)

İçerik : &32770 = Hex #8002 -> E2_2’yi belirtir.

OMRON PLC PROGRAMLAMA -1 SONUÇ : 

Bugün Omron Plc Programlama adlı yazımızı sizlerle paylaştık.Omron plc programlama ile ilgili bir seri oluşturma ve ardından bir kılavuz meydana getirme niyetindeyim.Umarım faydalı olur.

İyi Çalışmalar