Professional Documents
Culture Documents
net/publication/319204098
CITATIONS READS
0 1,891
1 author:
Murat Uzam
Yozgat Bozok University
158 PUBLICATIONS 2,142 CITATIONS
SEE PROFILE
Some of the authors of this publication are also working on these related projects:
An Image Interpreter for Vision-Based Logic Control of Manufacturing Plant View project
Optimal liveness-enforcing supervisors for automated manufacturing systems by structural analysis of Petri nets. View project
All content following this page was uploaded by Murat Uzam on 13 March 2018.
Bu kitap, başta öğrenciler ve piyasada çalışan mühendisler olmak üzere PLC ve endüstriyel
otomasyon alanında kendi özgün cihazlarını üretip kullanmayı düşünen herkese yardımcı olmak
amacıyla yazılmıştır.
Ülkemiz son yıllarda bir kalkınma hamlesi yapma gayreti içerisindedir. Bu bağlamda bu çalışmanın
ülkemizin kalkınma hamlesine yardımcı olması dileğiyle…
Mart 2013,
KAYSERİ
ii
PIC PLC PROJESİNİN GEÇMİŞİ VE KİTABIN KULLANIMI
Bu proje “bir PLC nasıl tasarlanır ve gerçekleştirilir?” sorusunun cevabı aranırken
gerçekleştirilmiştir. Bu sorunun cevabı, yazar tarafından yaklaşık 14 yıl önce “PICBIT” adındaki
bir projede kısmen bulunmuştur. Okuyucu internette “PICBIT” anahtar sözcüğüyle bir arama
yaparsa bu projeye ulaşacaktır. PICBIT, bir PIC16F84 mikrodenetleyicisi temelli, 5 girişli / 8
çıkışlı bir PLC projesidir. PICBIT’in “picbit.inc” adındaki dosyasında bu projeyi oluşturan temel
PLC makroları bulunmaktadır. Bu kitapta açıklanan “16 girişli / 16 çıkışlı PIC16F877A Temelli
PIC PLC” projesi, adı geçen bu PLC makrolarından esinlenilerek hazırlanmıştır. Tabii ki
PICBIT’te mevcut olmayan pek çok yeni özellik, gerçek bir PLC elde etmek amacıyla “16 girişli /
16 çıkışlı PIC16F877A Temelli PIC PLC” projesine dahil edilmiştir.
Okuyucu, yazarın [1]’de ifade edilen kitabını da inceleyebilir. [1]’de temel olarak üç konu
incelenmektedir. Öncelikle “PICBIT” yazılımı tanıtılarak, bu yazılım ve “PICBIT_PLC” donanımı
kullanılarak “lojik devreler” konularının deneysel olarak pekiştirilmesi hedeflenmiştir. İkinci
aşamada adı geçen yazılım ve donanımın, PLC konularının anlaşılması için kullanımı
incelenmiştir. Kitabın son kısmında ise PICBIT’in “picbit.inc” adındaki dosyasında bulunan temel
PLC makroları detaylı olarak açıklanmış ve uygulamaları incelenmiştir. Bu bağlamda burada
incelenecek olan konuların anlaşılmasına yardımcı olmak üzere [1]’deki kitaptan istifade edilebilir.
Bu kitapta açıklanan “16 girişli / 16 çıkışlı PIC16F877A Temelli PIC PLC” projesi ile ilgili olarak
Endüstri&Otomasyon dergisinde yayınlanan 15 makalenin detaylarına şu kaynaklardan ulaşılabilir:
[2 – 17]. Bu kitapta incelenen projenin benzeri, fakat PIC16F648A mikrodenetleyicisi ile
gerçekleştirilen PLC projesi, İngilizce makale dizisi olarak “Electronics World”
(http://www.electronicsworld.co.uk/) adlı bir dergide yayınlanmıştır [18 – 40]. Bu kitapta açıklanan
projeyle “Electronics World” dergisinde yayınlanmış olan projeyi kısaca karşılaştıralım.
“Electronics World” dergisinde yayınlanmış olan proje (dahili osilatörden elde edilen) 4 MHz’de
çalışan bir PIC16F648A mikrodenetleyicisi ile gerçekleştirilmiştir. Giriş/çıkış sayısı 8’in katları
olarak istenildiği kadar arttırılabilmektedir. Bu kitapta açıklanan proje ise 20 MHz’de çalışan bir
PIC16F877A mikrodenetleyicisi ile gerçekleştirilmiştir. Bu projede 16 giriş / 16 çıkış mevcuttur ve
bu sayı sabittir. Buna göre her iki projenin kendine göre üstün yanları mevcuttur.
Bu projede, endüstriyel PLC’lerdeki gibi bir grafik programlama arayüzü mevcut değildir. Bu
projede, PLC programları {Komut Listesi (Instruction List - IL) şeklinde ifade edilen PLC
programlama diline benzer şekilde} makrolar kullanılarak gerçekleştirilmektedir. Konu hakkında
yetenekli bir okuyucu, PIC16F877A temelli PIC PLC için bir PC programlama arayüzü
geliştirebilir.
Kitaptan en iyi şekilde faydalanmak için bazı ön bilgilere sahip olunması beklenmektedir.
Öncelikle bir PLC ile ilgili olarak hem donanım hem de yazılım hakkında temel seviyede bilgi
sahibi olmak gerekir. Kitapta geliştirilen kodlar, PIC ASSEMBLY dili kullanılarak MPLAB IDE
program geliştirme ortamında PIC16F877A mikrodenetleyicisi için elde edilmiştir. Bu sebeple
okuyucunun PIC ASSEMBLY dilini bilmesi, MPLAB IDE programıyla çalışmış olması ve
PIC16F877A mikrodenetleyicisi ile veya 8 bitlik başka bir PIC mikrodenetleyicisi ile daha önce
çalışmalar yapmış olması bu kitaptan azami şekilde faydalanmak için büyük kolaylık sağlayacaktır.
Bu kapsamda faydalı olacak bazı kaynaklar [41] ve [42]’de belirtilmiştir. Bu kaynaklar ve MPLAB
IDE’nin en son sürümü http://www.microchip.com/ internet sitesinden ücretsiz olarak temin
edilebilir.
iii
Kitabı oluşturan bölümler özetle aşağıda belirtilen içeriklere sahiptir.
1. Donanım: Bu bölümde 16 girişli / 16 çıkışlı PIC16F877A Temelli PIC PLC donanımı hakkında
detaylı bilgi verilmektedir.
2. Temel yazılım: Bu bölümde PIC16F877A temelli PIC PLC’nin temel yazılım yapısı
anlatılmaktadır. Bir PLC’nin tarama (scan) döngüsü şunlardan oluşur: 1. Girişleri al, 2. Kullanıcı
programını çalıştır, 3. Çıkışları güncelle. Ayrıca, PLC’deki tüm değişkenlerin tanımlanması ve
başlangıç şartlarına ayarlanması gerekir. PIC16F877A temelli PIC PLC’de gerekli tüm
fonksiyonlar PIC Assembly makroları olarak tanımlanmıştır. Bu bölümde, temel PIC PLC
makroları anlatılmaktadır.
iv
9. Lojik Makroları: Bu bölümde şu lojik makroları anlatılmaktadır: inv_R, AND, NAND, OR,
NOR, XOR, XNOR. Bu makrolar, 8 bitlik bir kaydedici (register – R1) ile bir başka 8 bitlik
kaydediciye (R2) ya da 8 bitlik sabit bir sayıya (constant – K) uygulanabilmektedir.
10. Kaydırma ve Döndürme Makroları (Shift & Rotate Macros): Bu bölümde şu kaydırma ve
döndürme makroları anlatılmaktadır: SHIFT_R (R kaydedicisinin içeriğini sağa kaydır), SHIFT_L
(R kaydedicisinin içeriğini sola kaydır), ROTATE_R (R kaydedicisinin içeriğini sağa döndür),
ROTATE_L (R kaydedicisinin içeriğini sola döndür), SWAP (kaydedicinin ilk 4 bitini son 4 biti ile
değiştir).
11. Veri Seçici (Multiplexer) Makroları: Bu bölümde şu veri seçici makroları anlatılmaktadır:
mux_2_1 (2x1 MUX), mux_2_1_E (aktif 1 yetkileme girişli 2x1 MUX), mux_4_1 (4x1 MUX),
mux_4_1_E (aktif 1 yetkileme girişli 4x1 MUX), mux_8_1 (8x1 MUX), mux_8_1_E (aktif 1
yetkileme girişli 8x1 MUX).
13. Kod Çözücü (Decoder) Makroları: Bu bölümde şu kod çözücü makroları anlatılmaktadır:
decod_1_2 (1x2 kod çözücü), decod_1_2_AL (aktif 0 çıkışlı 1x2 kod çözücü),
decod_1_2_E(aktif 1 yetkileme girişli 1x2 kod çözücü), decod_1_2_E_AL (aktif 1 yetkileme girişli
ve aktif 0 çıkışlı 1x2 kod çözücü), decod_2_4 (2x4 kod çözücü), decod_2_4_AL(aktif 0 çıkışlı 2x4
kod çözücü), decod_2_4_E (aktif 1 yetkileme girişli 2x4 kod çözücü), decod_2_4_E_AL (aktif 1
yetkileme girişli ve aktif 0 çıkışlı 2x4 kod çözücü), decod_3_8 (3x8 kod çözücü), decod_3_8_AL
(aktif 0 çıkışlı 3x8 kod çözücü), decod_3_8_E (aktif 1 yetkileme girişli 3x8 kod çözücü),
decod_3_8_E_AL (aktif 1 yetkileme girişli ve aktif 0 çıkışlı 3x8 kod çözücü).
15. Bir Örnek: Bu bölümde PIC16F877A temelli PIC PLC kullanılarak uzaktan kumandalı bir
model kapının değişik çalışma senaryoları için kontrol edilmesi anlatılmaktadır.
v
Tablo 0.1’de bu kitapta anlatılan 16 girişli / 16 çıkışlı PIC16F877A temelli PIC PLC’nin genel
karakteristikleri özetlenmiştir.
vi
TOF8, TOF8+1, …, TOF8_Q0,
8 ters zaman rölesi
TOF8+7, TOF8_Q, TOF8_Q1, …,
(off delay timer)
TOF8_RED TOF8_Q7
TP8, TP8+1, …,
TP8_Q0,
8 pals zaman rölesi TP8+7, TP8_Q,
TP8_Q1, …,
(pulse timer) TP8_RED1,
TP8_Q7
TP8_RED2
TOS8, TOS8+1, …,
TOS8_Q0,
8 osilatör zaman rölesi TOS8+7,
TOS8_Q1, …,
(oscillator timer) TOS8_Q
TOS8_Q7
TOS8_RED
CV8, CTU8_Q0,
8 sayıcı (counter)
CV8+1, …, CV8+7, CTU8_Q1, …,
CTU8_Q7
CTU: İleri sayıcı
CTU8_Q, veya
(Up counter)
CTU8_RED, CTD8_Q0,
CTD8_Q1, …,
CTD:Geri sayıcı
CTD8_Q, CTD8_Q7
(Down counter)
CTD8_RED, veya
CTUD8_Q0,
CTUD:İleri/Geri sayıcı
CTUD8_Q, CTUD8_Q1, …,
(Up/Down counter)
CTUD8_RED, CTUD8_Q7
regi,biti : giriş biti ; rego,bito : çıkış biti
Önemli not: Her hangi bir anda hangi tür olduğuna bakılmaksızın toplamda sadece 8 tane sayıcı
kullanılabilir.
vii
İÇİNDEKİLER
sayfa
Bölüm 1 - PIC16F877A Mikrodenetleyicisi Temelli PIC PLC Donanımı ......................... 1
viii
sayfa
Bölüm 5 - Zamanlayıcı Makroları ........................................................................................... 79
5.1. Düz Zaman Rölesi (On Delay Timer - TON) ................................................................... 83
5.2. “TON_8” 8 Bitlik Düz Zaman Rölesi Makrosu ………………....................................... 84
5.3. Ters Zaman Rölesi (Off Delay Timer - TOF) ................................................................... 86
5.4. “TOF_8” 8 Bitlik Ters Zaman Rölesi Makrosu ................................................................ 87
5.5. Pals Zaman Rölesi (Pulse Timer – TP) …….................................................................... 89
5.6. “TP_8” 8 Bitlik Pals Zaman Rölesi Makrosu ................................................................... 90
5.7. Osilatör Zaman Rölesi (Oscillator Timer – TOS) ............................................................ 92
5.8. “TOS_8” 8 Bitlik Osilatör Zaman Rölesi Makrosu .......................................................... 93
5.9. Zamanlayıcı Makrolarının Kullanımıyla İlgili Örnekler .................................................. 95
ix
sayfa
Bölüm 9 - Lojik Makroları ....................................................................................................... 152
9.1. “R1andR2” Makrosu ………............................................................................................ 153
9.2. “RandK” Makrosu ………................................................................................................ 154
9.3. “R1nandR2” Makrosu ……….......................................................................................... 155
9.4. “RnandK” Makrosu ……….............................................................................................. 156
9.5. “R1orR2” Makrosu ……….............................................................................................. 157
9.6. “RorK” Makrosu ……….................................................................................................. 158
9.7. “R1norR2” Makrosu …….…............................................................................................ 159
9.8. “RnorK” Makrosu …………............................................................................................ 160
9.9. “R1xorR2” Makrosu ………............................................................................................ 161
9.10. “RxorK” Makrosu ………….......................................................................................... 162
9.11. “R1xnorR2” Makrosu ………........................................................................................ 163
9.12. “RxnorK” Makrosu …..……........................................................................................... 164
9.13. “invR” Makrosu …………........................................................................................... 165
9.14. Lojik Makrolarının Kullanımıyla İlgili Örnek ……….................................................... 166
x
sayfa
Bölüm 13 - Kod Çözücü (Decoder) Makroları ...................................................................... 240
13.1. “decod_1_2” Makrosu ………....................................................................................... 241
13.2. “decod_1_2_AL” Makrosu ………................................................................................ 243
13.3. “decod_1_2_E” Makrosu ………................................................................................... 245
13.4. “decod_1_2_E_AL” Makrosu ……............................................................................... 247
13.5. “decod_2_4” Makrosu ………........................................................................................ 249
13.6. “decod_2_4_AL” Makrosu ………................................................................................ 251
13.7. “decod_2_4_E” Makrosu ……….................................................................................... 253
13.8. “decod_2_4_E_AL” Makrosu ……............................................................................... 256
13.9. “decod_3_8” Makrosu ………....................................................................................... 259
13.10. “decod_3_8_AL” Makrosu ………............................................................................... 262
13.11. “decod_3_8_E” Makrosu ………................................................................................. 265
13.12. “decod_3_8_E_AL” Makrosu …….............................................................................. 268
13.13. Kod çözücü (Decoder) Makrolarının Kullanımıyla İlgili Örnekler …………............. 271
xi