Professional Documents
Culture Documents
T.C.
KOCAELİ ÜNİVERSİTESİ
PROJE B
HAZIRLAYAN:
DANIŞMAN:
2002
2
ÖNSÖZ
Bu projenin temel amacı ilk olarak PLC denilince ilk akla gelen Türkiye ve
Dünya piyasasını elinde bulunduran Siemens’ in Simatic S-7 200 ( CPU 212 )
Programlanabilir Mantıksal Denetleyicisinin ileri yardım komutlarının
kavranmasının sağlanmasıdır.
İZMİT
3
İÇİNDEKİLER
ÖNSÖZ ..........................................................................................................................................................02
BÖLÜM 1
MATEMATİK/PID (STL)
1.1 TAM SAYI TOPLAMA (+I) ................................................................................................. 04
1.2 TAM SAYI ÇIKARMA (-I) ................................................................................................. 04
1.3 TAM SAYI ÇARPMA (MUL) ................................................................................................. 05
1.4 TAM SAYI BÖLME (DIV) ................................................................................................. 05
1.5 KAREKÖK ALMA (SQRT) ................................................................................................. 06
1.6 DOUBLE TAM SAYI TOPLAMA (+D) ........................................................................................ 07
1.7 DOUBLE TAM SAYI ÇIKARMA (-D) ........................................................................................ 07
1.8 GERÇEL SAYI TOPLAMA (+R) ................................................................................................. 08
1.9 GERÇEL SAYI ÇIKARMA (-R) ................................................................................................. 09
1.10 GERÇEL SAYI ÇARPMA (*R) ................................................................................................. 09
1.11 GERÇEL SAYI BÖLME (/R) ................................................................................................. 10
1.12 CPU HAFIZA TİPLERİ VE ARALIKLARI................................................................................. 10
1.13 PID KOMUTU ................................................................................................. 12
1.13.1 PID DÖNGÜSÜ ÇALIŞTIRMA ................................................................................................. 12
1.14 MATEMATİK/PID ÖRNEKLERİ ................................................................................................. 12
BÖLÜM 2
NETWORK
2.1 NETR/NETW KOMUTU ................................................................................................. 16
2.2 İLETİŞİM AĞIVERİ TABLOSUNUN KULLANIMI.................................................................. 17
2.3 HATALARIN ELE ALINMASI ................................................................................................. 18
BÖLÜM 3
ÖZEL HAFIZA BİTLERİ ................................................................................................. 18
BÖLÜM 4
4.1 HIZLI SAYICI TANIMLAMA ( STL ) ..................................................................... 18
4.2 LADDER HIZLI SAYICI KOMUT ÖRNEKLERİ ..................................................................... 20
4.3 LADDER ZAMAN SAATİ KOMUT ÖRNEKLERİ ..................................................................... 21
BÖLÜM 5
5.1 GERÇEK ZAMAN SAATİNİ OKU ..................................................................... 23
5.2 GERÇEK ZAMAN SAATİNİ AYARLA ..................................................................... 24
5.3 GERÇEK ZAMAN SAATİ ÖRNEKLERİ ..................................................................... 25
BÖLÜM 6
İLETİŞİM
6.1 İLETİŞİM KONFİGRASYONU ................................................................................................. 27
6.2 İNTERRUPT/İLETİŞİM ................................................................................................. 29
6.2.1 İNTERRUPT ALTPROGRAMI ................................................................................................. 30
6.2.2 İNTERRUPTTAN DÖNÜŞ ................................................................................................. 31
6.2.3 İLETİŞİM AĞINDAN OKU ................................................................................................. 32
6.2.4 İLETİŞİM AĞINA YAZ ................................................................................................. 32
6.2.5 İNTERRUPT OLGULARI ÖNCELİK TABLOSU..................................................................... 33
6.2.6 İNTERRUPT OLGULARI VERİ PAYLAŞIMI ..................................................................... 34
6.2.7 VERİ PAYLAŞIMI İÇİN PROGRAMLAMA TEKNİKLERİ ....................................... 34
6.3 LADDER INTERRUPT/İLETİŞİM ÖRNEKLERİ ..................................................................... 35
4
1. BÖLÜM : MATEMATİK/PID
IN1 (WORD): VW, T, C, IW, QW, MW, SMW, SW, AC, AIW, SABİT,
*VD, *AC
IN2 (WORD): VW, T, C, IW, QW, MW, SMW, SW, AC, *VD, *AC
AÇIKLAMA:
Bu komut, iki tane 16-bit tam sayıyı (IN1, IN2), toplar ve sonucu 16 bit
olarak IN2'ye yazar, yani: IN1 + IN2 = IN2
ÖRNEK:
LD I4.0
+I AC1, AC0
MUL AC1, VD100
DIV VW10, VD200
OPERANDLAR:
IN1 (WORD): VW, T, C, IW, QW, MW, SMW, SW, AC, AIW, SABİT,
*VD, *AC
IN2 (WORD): VW, T, C, IW, QW, MW, SMW, SW, AC, *VD, *AC
5
AÇIKLAMA:
Bu komut, iki tane 16-bit tam sayıyı (IN1, IN2), çıkarır ve sonucu 16 bit
olarak IN2'ye yazar, yani: IN2 - IN1 = IN2
ÖRNEK:
LD I4.0
-I AC1, AC0
MUL AC1, VD100
DIV VW10, VD200
IN1
IN1 (WORD): VW, T, C, IW, QW, MW, SMW, SW, AC, AIW, SABİT,
*VD, *AC
OUT (DWORD): VD, ID, QD, MD, SMD, SD, AC, *VD, *AC
AÇIKLAMA:
Bu komut, 16 bitlik bir tamsayıyla (IN1), 32 bitlik bir tam sayının (IN2)
küçük wordüyle (ilk 16 bitiyle) çarpar ve 32 bitlik sonucu IN2'ye yazar. Yani,
IN1 * IN2 = IN2
ÖRNEK:
LD I4.0
+D AC1, AC0
MUL AC1, VD100
DIV VW10, VD200
DIV
1.4 TAM SAYI BÖLME (STL) EN
IN1 (WORD): VW, T, C, IW, QW, MW, SMW, SW, AC, AIW, SABİT,
*VD, *AC
OUT (DWORD): VD, ID, QD, MD, SMD, SD, AC, *VD, *AC
AÇIKLAMA:
Bu komut, 32 bitlik bir tam sayının (IN2) küçük wordünü (ilk 16 bitini)
16 bitlik bir tamsaya (IN1) böler, ve 32 bitlik sonucu IN2'ye, IN2'nin küçük
word'ü bölümü, büyük word'ü kalanı içerecek şekilde yazar. Yani, IN2 / IN1 =
IN2
ÖRNEK:
LD I4.0
+D AC1, AC0
MUL AC1, VD100
DIV VW10, VD200
OPERANDLAR:
IN (DWORD): VD, ID, QD, MD, SMD, SD, AC, SABİT, *VD, *AC
OUT (DWORD): VD, ID, QD, MD, SMD, SD, AC, *VD, *AC
AÇIKLAMA:
ÖRNEK:
LD I4.0
SQRTAC1, AC0
MUL AC1, VD100
7
OPERANDLAR:
IN1 (DWORD): VD, ID, QD, MD, SMD, SD, AC, HC, SABİT, *VD,
*AC
IN2 (DWORD): VD, ID, QD, MD, SMD, SD, AC, *VD, *AC
AÇIKLAMA:
Bu komut, iki tane 32-bit tam sayıyı (IN1, IN2), toplar ve sonucu 32 bit
olarak IN2'ye yazar, yani: IN1 + IN2 = IN2
ÖRNEK:
LD I4.0
+D AC1, AC0
MUL AC1, VD100
DIV VW10, VD200
OPERANDLAR:
IN1 (DWORD): VD, ID, QD, MD, SMD, SD, AC, HC, SABİT, *VD,
*AC
IN2 (DWORD): VD, ID, QD, MD, SMD, SD, AC, *VD, *AC
8
AÇIKLAMA:
Bu komut, iki tane 32-bit tam sayıyı (IN1, IN2), çıkarır ve sonucu 32 bit
olarak IN2'ye yazar, yani: IN2 - IN1 = IN2
ÖRNEK:
LD I4.0
-D AC1, AC0
MUL AC1, VD100
DIV VW10, VD200
OPERANDLAR:
IN1 (DWORD): VD, ID, QD, MD, SMD, SD, AC, SABİT, *VD, *AC
OUT (DWORD): VD, ID, QD, SMD, AC, MD, SD, *VD, *AC,
AÇIKLAMA:
Bu komut, iki tane 32-bit gerçel sayıyı (IN1, IN2), toplar ve sonucu 32 bit
gerçel sayı olarak olarak IN2'ye yazar, yani: IN1 + IN2 = IN2
ÖRNEK:
LD I4.0
+R AC1, AC0
MUL AC1, VD100
DIV VW10, VD200
9
OPERANDLAR:
IN1 (DWORD): VD, ID, QD, MD, SMD, SD, AC, SABİT, *VD, *AC
OUT (DWORD): VD, ID, QD, MD, SMD, SD, AC, *VD, *AC
AÇIKLAMA:
Bu komut, iki tane 32-bit gerçel sayıyı (IN1, IN2), çıkarır ve sonucu 32
bit gerçel sayı olarak IN2'ye yazar, yani: IN2 - IN1 = IN2
ÖRNEK:
LD I4.0
-R AC1, AC0
MUL AC1, VD100
DIV VW10, VD200
OPERANDLAR:
IN1 (DWORD): VD, ID, QD, MD, SMD, SD, AC, SABİT, *VD, *AC
OUT (DWORD): VD, ID, QD, MD, SMD, SD, AC, *VD, *AC
10
AÇIKLAMA:
Bu komut, iki tane 32-bit gerçel sayıyı (IN1, IN2) çarpar ve sonucu 32 bit
gerçel sayı olarak IN2'ye yazar, yani: IN1 * IN2 = IN2
ÖRNEK:
LD I4.0
*R AC1, AC0
MUL AC1, VD100
DIV VW10, VD200
OPERANDLAR:
IN1 (DWORD): VD, ID, QD, MD, SMD, SD, AC, SABİT, *VD, *AC
OUT (DWORD): VD, ID, QD, MD, SMD, SD, AC, *VD, *AC
AÇIKLAMA:
Bu komut, iki tane 32-bit gerçel sayıyı (IN1, IN2) böler ve sonucu 32 bit
gerçel sayı olarak IN2'ye yazar, yani: IN1 / IN2 = IN2
ÖRNEK:
LD I4.0
/R AC1, AC0
MUL AC1, VD100
DIV VW10, VD200
Erişim tipi: Hafıza tipi CPU 212 CPU 214 CPU 215 CPU 216
Aralıklar Aralıklar Aralıklar Aralıklar
1.13 PID
Sembol:
Operandlar:
Table : VB
LOOP: CPU 214: 0 – 3
CPU 215/216: 0 – 7
Açıklama: Bu kutu belirtilen PID döngüsü ( loop) işlemini başlatır. PID
Döngüsü Tanımlama Tablosu (TABLE)nda tanımlanan giriş ve konfigürasyon
baz alınır.
2.BÖLÜM : NETWORK
S7-200, bir iletişim ağındaki CPUlarla iletişimi sağlamak için, hem ladder
da hem STL de İletişim Ağından Oku (NETR) ve İletişim Ağına Yaz (NETW)
komutları sağlamaktadır. NETR komutu, uzak CPU’dan belirli bir sayıda veriyi
okur, NETW ise yazar. NETR ve NETW komutları 7 baytlık bir veri tablosu
tarafından kontrol edilir. Bu tablodaki bilgilerden biri okunacak/yazılacak
verinin uzunluğudur (1 ila 16 bayt arasında). Bu da toplam data tablosunun 23
bayt olacağı anlamına gelir.
Ekran 2
Kaç iletişim ağı işlemi konfigüre etmek istiyorsunuz?
Ekran 3
Ekran 4
Her iletişim ağı işlemi için aşağıdaki bilgileri girmeniz gereklidir:
Ekran 5
Oluşturulan program kodu nereye yerleştirilecek?
Bir NETR veya NETW işlemi başlatıldıktan sonra, okunan veya yazılan
veriler kullanılmadan önce işlemin tamamlanmasını beklemek gereklidir. Bu
nedenle yardımcı araç, başka bir işlemi başlatmadan önce o anki işlemin
bittiğinden emin olunmasını sağlayacak bir kod oluşturur. Bunu sağlamak için
her ağ işlemi bir dizi SCR segmenti olarak kodlanmıştır. Bu kod, 3 SCR
segmenti içerir: İcra, Bekleme, Hata.
2. Bekleme segmenti durum bitlerini kontrol eder. Eğer bitler işlemin hata
olmadan bittiğini gösteriyorsa, bir sonraki ağ işlemine izin verilir. Eğer hata
oluştuysa, Hata segmentine geçiş yapılır.
3. Hata segmenti (başlangıç ayarı gereği) bir sonraki işleme geçiş yapacaktır.
Hatanın ele alınması konusu aşağıda incelenmiştir.
PPI/Master Modu
Salt oku bitler programınızın çeşitli alanları için bilgi sağlar. Oku /yaz
bitleri freeport modu, iletişim gibi bazı fonksiyonları çalıştırmanızı sağlar.
Format:
Operandlar:
Açıklama:
§ Tek faz (tek sayma girişi) yukarı/aşağı sayıcı, dahili yön kontrollu
§ Tek faz (tek sayma girişi) yukarı/aşağı sayıcı, harici yön kontrollu
§ Iki faz yukarı/aşağı sayıcı, ayrı ayrı yukarı say aşağı say girişleri ile
HSC0 hariç diğer hızlı sayıcılar reset ve start girişleri ile, reset ve start
girişleri olmadan veya reset girişi ile, fakat start girişi olmadan kullanılabilir.
Devre 1 I0.0 sürekli varsa zaman rölesi sayar. 3 sn (30 X 100ms) sonra T37
biti ON olur.
22
Devre 3 SM0.5 (1 snlik flaşör, 0.5 sn. ON ve 0.5 sn. OFF) var olduğu
sürece, zaman rölesi sayar. 6 sn (30x100x2 msn) sonra T5 biti ON olacaktır.
Format:
TODR T
Operandlar:
Açıklama:
VBD00 95 Yıl
VBD01 03 Ay
VBD02 24 Gün
VBD03 08 Saat
VBD04 00 Dakika
VBD05 00 Saniye
VBD06 00
VBD07 06 Haftanın
Günü
24-Mar-02
8.00.00
Cuma
Operandlar:
Açıklama:
Bu kutu, 8 baytlık bir hafıza bölgesindeki (T) tarih ve saat bilgilerini
CPU'daki saate yazar. Bilgiler BCD formatında ve komut işletilmeden önce
belirtilen hafıza alanına yazılmış olmalıdır.
VBD00 95 Yıl
VBD01 03 Ay
VBD02 24 Gün
VBD03 08 Saat
VBD04 00 Dakika
VBD05 00 Saniye
VBD06 00
VBD07 06 Haftanın
Günü
24-Mar-02
8.00.00
Cuma
Gün: 01-Ocak-90
Saat: 00:00:00
Haftanın Günü Pazar
Devre 2 I0.1 varsa, yıl değeri (bu örnekte 95) AC0a taşınır.
6. BÖLÜM : İLETİŞİM
6.1 İletişim Konfigrasyonu
Windows 95
Windows 3.1
CPU214 kablosu,MPI ISA 19.2 KB multimaster
CPU216 kartı
CPU 215
port 0
PC/PPI 9.6 KB veya PPI,PPI
Microwin32
4.0
Windows NT Windows 95 Windows NT
Windows 95 Windows 3.1 Windows 95
4.0
Windows NT 4.0
port 1
(DP portu)
MPI ISA on 12 MB
board
CP5411,
CP5511, CP5611
Birden çok CPUdan oluşan bir iletişim ağı kuruyorsanız, öncelikle her bir
CPUyla direkt bağlantı kurmalısınız. Önce her CPUya ayrı bir adres vermek
28
üzere basit direk bağlantı kurun. Eğer aynı adresi taşıyan birden çok CPU varsa
ağ doğru çalışmayacaktır.
S7-200 Programmable Controller System Manual (S7-200 Programlanabilir
Otomasyon Cihazı Kullanma Kılavuzu) nda yer alan aşağıdaki bölümler size
daha detaylı bilgi sağlayacaktır.
· Yeni bir proje oluştururken çıkan CPU Tipi diyalog kutusunda İletişimi
seçerek
Not :
STEP 7-Micro/WIN ve STEP 7 yazılımları, modülleri (Windows
sürücüleri) yüklemek, ayarlamak veya kaldırmak için aynı arayüzeyi kullanır.
İletişim diyalog kutusu yüklü sürücüyü gösterirken aslında gerçek yükleme ve
ayarlamaları yapan Setting the PG/PC Interface diyalog kutusudur. İletişim
diyalog kutusunda "PG/PC Arayüzey" butonunu tıklayarak buna ulaşabilirsiniz.
"Setting the PG/PC Interface" diyalog kutusu görüntülendiğinde F1 tuşuna
basarak ya da yardım butonunu tıklayarak yardım alabilirsiniz.
6.2İNTERRUPT/İLETİŞİM
Interrupt İlişkilendir
Sembol:
ATCH
EN
INT
EVEN
Operandlar:
Açıklama:
Interrupt Tipi CPU 212 CPU 214 CPU 215 CPU 216
İletişim 4 4 4 8
Giriş/Çıkış 4 16 16 16
Zaman kontrollu 2 4 8 8
30
Sembol:
DTCH
EN
EVEN
Operandlar:
Sembol:
INT
Operandlar:
Sembol:
ENI
Sembol:
DENI
Açıklama:
Sembol:
R
ETI Koşulsuz Geri Dön
Açıklama:
Sembol:
NETR
EN
TABLO
Açıklama:
Sembol:
NETW
EN
TABLO
Açıklama:
Bu kutu, tablodaki açıklamalara göre, belirli bir port'u (PORT) kullanarak
bir iletişim ağındaki cihaza veri aktarır.
NETR komutuyla okunabilecek, NETW ile yazılabilecek veri 16 bayttır.
Bir seferde toplam en fazla 8 NETR ve NETW komutu çalıştırılabilir. Örneğin, 2
NETR ve 6 NETW ya da 4 NETR ve 4 NETW gibi.
Sembol:
XMT
EN
Açıklama:
TABLO
PORT
33
**Eğer olgu 12 (HSC0 sayma değeri=ayar değeri) bir interruptla ilişkilendirilmişse, olgu 1 ve olgu
0 kullanılamaz. Tersi de doğrudur.
Interruptlar için yukarda belirtilen öncelikler geçerli olmakla beraber ilk gelenin işlemi bitmedikçe
diğerine geçilmez. Yani aynı anda sadece bir interrupt olgusu gerçeklenir. Örneğin, zaman kontrollu
bir interrupt çalışıyorsa, sona ermeden iletişim ya da dijital interruptlar işlenmez, ama kaybolmaz
da; sırada bekletilir.
34
Paylaşılan veri tek bir bayt, word ya da double word ise ve program
komut listesinde yazılmışsa, ara değerlerin paylaşılan veri içersinde yer
almadığından emin olunuz. Paylaşılan veri, ana programda sadece nihai sonuç
olarak yazılmalıdır. Örneğin, bir motorun hızını hızlı sayıcı üzerinden
ölçtüğümüzü ve motorun sürdüğü konveyörün hızıyla ilgilendiğimizi düşünelim.
Motorun hızından konveyörün hızına ulaşmak için redüksiyon oranını göz
önüne alarak bir çarpma/bölme işlemi yapmamız gerekir. Işte bu örnekte
paylaşılan veri motor hızı değil, konveyör hızı olmalıdır.
35
Paylaşılan veri tek bir bayt, word yada double word ise ve program ladder
olarak yazılmışsa, paylaşılan veri alanına erişim (yani yazma) taşı (MOVE)
komutuyla yapılmalıdır. Eğer ana program interrupt altprogramı tarafından
oluşturulan bir veriyi kullanacaksa, Taşı komutuyla veriyi paylaşılmayan bir veri
alanına ya da akümülatöre iletip komutlarınızda bu hafıza alanını kullanın.
Paylaşılan verinin büyüklüğü, ve programın yazılış şekli (ladder ya da komut
listesi) ne olursa olsun, eğer ana program interrupt altprogramı tarafından
oluşturulan bir veriyi ya da verileri kullanıyorsa, önce veriyi paylaşılmayan bir
alana ya da akümülatöre yükleyin, ana programda işlemlerinizi yapın, en
sonunda paylaşılan veri alanına taşıyın.
Devre 6 SMB2de alınan karaktere bak. Bu bir "A" mı? Eğer öyle ise
Q0.1i set et.