You are on page 1of 36

1

T.C.
KOCAELİ ÜNİVERSİTESİ

TEKNİK EĞİTİM FAKÜLTESİ


ELEKTRİK ÖĞRETMENLİĞİ BÖLÜMÜ

PROJE B

İLERİ SEVİYE PLC KOMUTLARI

HAZIRLAYAN:

AD, SOYAD : ADNAN YAŞASIN


NO : 980302041

DANIŞMAN:

YRD. DOÇ. DR. ENGİN ÖZDEMİR

2002
2

ÖNSÖZ

Günümüzde, en iyi , en hızlı ve en verimliği üretimi sağlamanın temel


çözümü olan endüstriyel otomasyon , bütün dünyada büyük bir hızla gelişmekte
ve yaygınlaşmaktadır. Bu durum, bu konuda her geçen gün yetişmiş insan
gücüne olan gereksinimi arttırmaktadır. Ülkemizde de üretimi dünyadaki
gelişmiş ülkeler seviyesine yükseltmek için endüstriyel otomasyona önem
verilmeli ve üretim nasıl arttırılmalı? Sorusuna cevap aranmalıdır. İşte bu soruya
verilen cevaplardan birisi de seri üretim ve seri üretim bantlarının kontrolüdür.
Bant sistemlerinin yerinden ve yeni gelişen teknoloji sayesinde internet aracılığı
ile bir merkezden kontrolü ve bu işlem için hangi yöntemin kullanılacağının
tespitidir. İşte PLC bize bu isteklerimize cevap verebilecek bir otomasyon
cihazıdır.

Günümüzde endüstriyel otomasyon cihazları denilince ilk akla gelen cihaz


PLC’ dir. Bunun yanında SCADA sistemleri ve daha dar kapsamlı bilgisayar
tabanlı kontrol sistemleridir.
Teknolojinin gelişmesine bağlı olarak da PLC’ ler de gelişmiş ve ilk PLC’
lere göre epey gelişmeye uğramıştır.
Teknik gelişmeler ile PLC’ lere gelen yeni özellikle ise;
PID denetin kontrolünü yapabilmesi ,
Denetim yerinden farklı mesafelerden PLC’ lere internet aracılığı ile
kontrol verileri nin üretici firma tarafından belirlenen belirli protokoller aracılığı
ile aktarılabiliyor olması,
Step motor denetiminin ayrı sürücü sistemlerine ihtiyaç duyulmada PLC’
configrasyonuna ilave edilecek ilave modüller aracılığıyla direkt olarak
yapılabiliyor olması,
Termokupul gibi sıcaklık trasdüzerlerinin ilave modüller aracılığıyla PLC’
tarafından kontrol edilebilmesi,
Hızlı darbe üreten sensörlerin bunlar proksi switchler v.b. gibi cihazların
ürettikleri darbelerin algılamak için geliştirilen modüler,
Ve en önemlisi ise PLC’ nin endüstriyel otomasyonda yaygınlığının arması
için firmalar tarafından hazırlanan paket yazılım programlarının teknik
elemanların daha kolay anlayabileceği ve kullanabileceği hale getirilmesi.
Ve daha bir çok gelişmeler bulunmaktadır.
İşte bu gelişmeler sayesinde PLC’ ler otomasyon sistemlerinde diğer
sistemlere karşı ciddi bir rakip olarak, teknolojik evrimini sürdürmektedirler.

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

1.1 TAM SAYI TOPLAMA (STL)

NOT: CPU 210 tarafından desteklenmez.


ADD_I
EN
FORMAT:
IN1
+I IN1, IN2
IN2 OUT
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

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

1.2 TAM SAYI ÇIKARMA (STL)


SUB_I
EN
NOT: CPU 210 tarafından desteklenmez.
IN1
FORMAT:
IN2 OUT
-I IN1, IN2

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

1.3 TAM SAYI ÇARPMA (STL)

NOT: CPU 210 tarafından desteklenmez. MUL


EN

IN1

OPERANDLAR: IN2 OUT

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

NOT: CPU 210 tarafından desteklenmez. IN1


OPERANDLAR:
IN2 OUT
6

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

1.5 KAREKÖK ALMA (STL)

NOT: Sadece CPU 214, 215, ve 216 için

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:

Bu komut, 32 bit gerçel sayının karekökünü alır ve sonucu OUT'a yazar.


Yani, IN = OUT

ÖRNEK:

LD I4.0
SQRTAC1, AC0
MUL AC1, VD100
7

1.6 DOUBLE TAM SAYI TOPLAMA (STL)

NOT: CPU 210 tarafından desteklenmez.

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

1.7 DOUBLE TAM SAYI ÇIKARMA (STL)

NOT: CPU 210 tarafından desteklenmez.

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

1.8 GERÇEL SAYI TOPLAMA (STL)

NOT: Sadece CPU 214, 215, ve 216 için

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

1.9 GERÇEL SAYI ÇIKARMA (STL)

NOT: Sadece CPU 214, 215, ve 216 için

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

1.10 GERÇEL SAYI ÇARPMA (STL)

NOT: Sadece CPU 214, 215, ve 216 için

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

1.11 GERÇEL SAYI BÖLME (STL)

NOT: Sadece CPU 214, 215, ve 216 için

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

1.12 CPU HAFIZA TİPLERİ VE ARALIKLARI


STEP 7-Micro/WIN, CPU'yla iletişim kurmayı gerektiren bir işlem
olduğu zaman CPU modelini belirler. Programınızı oluştururken, giriş/çıkış
sayılarının ve hafızanın kullanılan CPU'ya uygun olduğundan emin olmalısınız.
11

Erişim tipi: Hafıza tipi CPU 212 CPU 214 CPU 215 CPU 216
Aralıklar Aralıklar Aralıklar Aralıklar

Bit V 0.0 - 1023.7 2.0 - 4095.7 2.0 - 5119.7 2.0 - 5119.7


(Bayt.bit) I 0.0 - 7.7 0.0 - 7.7 0.0 - 7.7 0.0 - 7.7
Q 1.0 - 7.7 1.0 - 7.7 1.0 - 7.7 0.0 - 31.7
M 0.0 - 15.7 0.0 - 31.7 0.0 - 31.7 0.0 - 7.7
SM 0.0 - 45.7 0.0 - 85.7 0.0 - 199.7 0.0 – 199
T 0 – 63 0 – 127 0 – 255 0 – 255
C 0 – 63 0 – 127 0 – 255 0 – 255
S 0.0 -7.7 0.0 - 15.7 0.0 - 31.7 0.0 - 31.7

Bayt VB 0 – 1023 0 – 4095 0 – 5119 0 – 5119


IB 0–7 0–7 0–7 0–7
QB 0–7 0-7 0–7 0-7
MB 0 – 15 0 – 31 0 – 31 0 – 31
SMB 0 – 45 0 – 85 0 – 199 0 – 199
AC 0-3 0-3 0-3 0–3
Sabit SB 0-7 0 - 15 0 - 31 0 - 31

Word VW 0-1022 0-4094 0-5118 0-5118


T 0-63 0-127 0-255 0-255
C 0-63 0-127 0-255 0-255
IVV 0-6 0-6 0-6 0-6
QVV 0-6 0-6 0-6 0-6
MVV 0-14 0-30 0-30 0-30
SMVV 0-44 0-84 0-198 0-198
AC 0-3 0-3 0-3 0-3
AIVV 0-30 0-30 0-30 0-30
AQVV 0-30 0-30 0-30 0-30
Sabit SVV 0-6 0-14 0-30 0-30
Double VD 0-1020 0-4092 0-5116 0-5116
Word ID 0-4 0-4 0-4 0-4
QD 0-4 0-4 0-4 0-4
MD 0-12 0-28 0-28 0-28
SMD 0-42 0-82 0-196 0-196
AC 0-3 0-3 0-3 0-3
HC 0 0-2 0-2 0-2
Sabit SD 0-4 0-4 0-28 0-28
12

1.13 PID

1.13.1 PID Döngüsü Çalıştırma :


Not: sadece CPU 214, 215, 216 için

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.

1.14 Matematik / PID Örnekleri:


Matematik/PID Örnekleri

Devre 1 İlk taramada, başlatma altprogramını çağır.

Devre 2 Ana program sonu.

Devre 3 Altprogramın başlangıcı.


13

Devre 4: SM0.0 varsa, 0.75 değeri (75%) VD104de


saklanıyor (döngü istenen değeri). Döngü kazancı VD112de saklanıyor. Döngü
örnekleme zamanı 0.1 saniye, VD116da saklanıyor. İntegral süresi 30 dk,
VD120de saklanıyor. Türevsel terim (VD124) yok. Zaman kontrollu interrupt 0
(SMB34) için zaman aralığı 100 ms. Bu interrupt, altprogram 0 ile
ilişkilendiriliyor. Interruptlara izin veriliyor.
14

Devre 5 Altprogramdan dönüş.

Devre 6 PID hesaplama interrupt altprogramı.

Devre 7 Proses değişkenini (PV) normalize edilmiş gerçel sayıya dönüştür.


PV unipolar bir giriştir ve negatif olamaz. SM0.0 varsa, akümülatör sıfırlanır
(AC0). Analog değer (AIW0) AC0da saklanır. DI_REAL 32 bitlik tam sayıyı
gerçel sayıya dönüştürür. DIV_R değeri AC0da normalize eder. MOV_R sayıyı
tablodaki yerine (VD100) aktarır.
15

Devre 8 Otomatik konumuna alınca döngüyü çalıştır. I0.0 varsa, PID


çalışsın (VB100).

Devre 9 Mn i ölçeklendirilmiş 16 bit tam sayıya dönüştür; Mn unipolar bir


değerdir ve negatif olamaz. SM0.0 varsa, döngü çıkışı (VD108) ölçeklendirilir
ve akümülatörde (AC0) saklanır. Gerçel sayı 32 bit tam sayıya dönüştürülür
(TRUNC) ve 16 bitlik tam sayı olarak analog çıkışa yazılır (AQW0).

Devre 10 Interrupt altprogramından dönüş.


16

2.BÖLÜM : NETWORK

2.1 NETR/NETW KOMUTU

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.

NETR/NETW yardımcı aracı, İletişim Ağı işlemlerini kolayca konfigüre


etmenizi sağlar. Yardımcı araç size başlangıç seçeneklerini soracak, seçiminize
uygun kodları oluşturacaktır. Yardımcı araç 24 ayrı iletişim ağı işlemini
konfigüre etmenize izin verir ve bu işlemler arasındaki koordinasyonu
sağlayacak kodu da oluşturur. Birinci ekrandan NETR/NETWi seçtikten sonra
aşağıdaki bilgileri girmeniz istenecektir:

Ekran 2
Kaç iletişim ağı işlemi konfigüre etmek istiyorsunuz?

Ekran 3

1. Hangi CPU portu iletişim için kullanılacak? PPI/Master modunu


ayarlamak için bu gereklidir. Aşağıdaki açıklamaya bakınız.

2. İletişim ağı data tablolarını başlatmak için hangi altprogram kullanılsın?

Ekran 4
Her iletişim ağı işlemi için aşağıdaki bilgileri girmeniz gereklidir:

1. Bu işlem NETR (oku) mu NETW (yaz) mı?

2. İletişim kurulacak CPUnun ağ adresi kaçtır?

3. Yerel CPUda veri tablosunun adresi nedir? Bu tablo, başlatma


altprogramında sizin için tanımlanacak olan veri tablosudur.

4. Uzak CPUdaki veri alanının adresi kaçtır? Bu okunacak veya yazılacak


verinin karşı CPUda bukunduğu yerdir.
17

5. Okunacak/yazılacak verinin uzunluğu kaç bayttır?

6. Veri düzenlemesini sağlamak için hangi altprogram kullanılacak? Detaylı


olarak aşağıda açıklanmıştır.

Ekran 5
Oluşturulan program kodu nereye yerleştirilecek?

Bütün bu soruları yanıtlandıktan ve Bitti butonunu tıkladıktan sonra


yardımcı araç, program ve data kod bloklarını oluşturacaktır.
Birden çok NETR/NETW işleminin koordinasyonu

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.

1. İcra segmenti ağ işlemini başlatır ve Bekleme segmentine geçiş yapar.

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.

2.2 İletişim Ağı Veri Tablosunun Kullanımı

Yardımcı aracın oluşturduğu program kodu, çakışan ağ işlemlerine karşı


koruma sağlar ve programınızın okunan veriyi doğru zamanda okuyup/yazması
için bir yol oluşturur. Oluşturulan kod herbir ağ işlemi için bir altprogram içerir.
Bu altprogramın amacı işlemin NETR veya NETW olmasına göre farklılaşır.
NETRde, veri kullanımı altprogramı, okuma işleminin hatasız olarak
sonuçlandığı her defada çağrılacaktır. Bu altprograma, veriyi tablodan dışarı
taşımak veya programınıza uygun olarak kullanmak için gereken kodu siz
yazacaksınız.
NETWda, veri kullanımı altprogramı, işlem başlamadan önce çağrılacaktır. Bu
altprograma, veriyi tabloya taşımak için gerekli kodu siz yazacaksınız.
18

Her veri kullanımı altprogramı, programın ilk taramasında da çağrılacak,


böylece veri tabloları herhangi bir iletişim ağı işlemi başlamadan önce
düzenlenmiş olacaktır.

2.3 Hataların Ele Alınması:

Hem NETR, hem de NETW komutu eğer işlem başarıyla


sonuçlanmadıysa bir hata biti set eder ve hata kodu belirtir. Yardımcı araç, her
işlem sonunda hataları kontrol edecek bir kod oluşturmaktadır. Eğer hata varsa,
o işlem için Hata SCR segmenti başlatılacaktır. Bu segmente kod yazarak hata
sonucunda yapılacakları programlayabilirsiniz.
Yardımcı araç, hata oluştuktan sonra diğer ağ işlemine geçmek üzere kod
oluşturur, ancak bunu değiştirmeniz mümkündür. Hatalı işlemi tekrarlatacak,
bütün ağ işlemlerini durduracak veya veri tablosunu tekrar başlatacak şekilde
program değişikliği yapabilirsiniz.

PPI/Master Modu

NETR ve NETW komutları ile iletişim sağlamak için, CPU iletişim


portunun PPI/Master modu olarak ayarlanmış olması gereklidir. Yardımcı araç,
bu kodu da sizin için oluşturmaktadır.
PPI Master modu, programın ilk taramasında çağrılan bir altprogramda
ayarlanmaktadır. İkinci taramaya kadar bir iletişim işlemine izin
verilmemektedir.

3. BÖLÜM : ÖZEL HAFIZA BİTLERİ

Özel hafıza bitleri, CPU ile programınız arasında iletişim sağlayarak


çeşitli kontrol fonksiyonlarını gerçekleştirmenizi sağlar. Her ne kadar bunlar
özel hafıza 'bitleri' olarak adlandırılsa da bit, bayt, word ve double word erişimi
mümkündür. Yani kullanım açısında M bitlerinden farkı yoktur.

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.

4. BÖLÜM : HIZLI SAYICI

4.1 Hızlı Sayıcı Tanımlama (STL)

Not: CPU 210 tarafından desteklenmez.


19

Format:

HDEF HSC, MOD

Operandlar:

HSC (byte) : CPU 212: 0CPU 214/215/216: 0-2


MODE (byte): CPU 212: 0CPU 214/215/216: 0 (HSC0); 0-11 (HSC1-2)

Açıklama:

Bu komut, ilgili Hızlı Sayıcı (HSC) değişik çalışma konumlarından


(MODE) birine göre tanımlanmasını sağlar. Her Hızlı Sayıcı için sadece bir
tanımlama kutusu kullanılabilir.

Temelde dört değişik çalışma konumu vardır.

§ 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

§ A/B sinyalli enkoder sayıcısı

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.

Reset girişi aktive edilirse, o anki sayma değeri sıfırlanır ve reset


kaldırılmadan tekrar saymaya başlamaz. Start kaldırıldığında ise sayma durur,
fakat sayıcı sıfırlanmaz. Eğer start yokken reset aktive edilirse, reset ihmal edilir.
Reset varken start aktive edilirse, sıfırlama gerçekleştirilir.
20

4.2 Ladder Hızlı Sayıcı Komut Örnekleri

Devre 1 İlk taramada sayıcıya izin verilir. Başlangıç sayma yönü


yukarıdır. Start ve reset girişleri aktif yüksek, sayma modu 4x olarak ayarlanır.

Devre 2 I0.2 geldiğinde, HSC1 anlık değeri silinir ve ayar değeri 50


yapılır.
21

Devre 3 I0.1 geldiğinde, darbe dizisi çıkışı kontrol baytı ayarlanır ve


PTO işlemi başlatılır: çevrim süresi 500ms, darbe sayısı 4, PLS 0 --> Q0.0.

Devre 4 Ana program sonu.

4.3 Ladder Zaman Rölesi/Sayıcı Örnekleri

Devre 1 I0.0 sürekli varsa zaman rölesi sayar. 3 sn (30 X 100ms) sonra T37
biti ON olur.
22

Devre 2 T37 varsa Q0.0 ON olsun.

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.

Devre 4 T5 ON olursa Q0.1 de ON olsun.

Devre 5 SM0.5 (1 snlik flaşör) ile sayıcı sayacak ve C0 biti 10 sayma


sonunda (yani 10 sn sonra) 1 olacaktır. I0.0 sayıcıyı sıfırlar. Bu örnekten de
görüleceği gibi zaman röleleri ve sayıcılar birbirlerine çok benzer.

Devre 6 C0 ON olduğunda Q0.2 da ON olsun.

Devre 7 Ana program sonu.


23

5. BÖLÜM : GERÇEK ZAMAN SAATİ

5.1 Gerçek Zaman Saatini Oku (STL)

Not:Sadece CPU 214, 215, ve 216 için

Format:

TODR T

Operandlar:

T (byte): VB, IB, QB, MB, SMB, SB, *VD, *AC

Açıklama:

Bu komu, gerçek zaman saatinden o anki saat ve tarihi okur. 8 baytlık


okuma değeri T ile tanımlanan adresle başlayan hafıza bölgesine yazılır.
Tarih ve zaman değerleri BCD formatındadır (Sadece Heksadesimal 0-9
rakamları kullanarak 4 bit).

Yıl/Ay yyaa yy - 0 ila 99 aa - 1 ila 12


Gün/Saat ggss gg - 1 ila 31 ss - 0 ila 23
Dakika/Saniye ddnn dd - 0 ila 59 nn - 0 ila 59
Haftanın Günü 000g g - 1 ila 7 1 = Pazar
g - 0 Haftanın günü 0 olarak kalır

Örnek: VB400den başlayan 8 baytlık hafıza alanı

READ RTC (Saat Okuma)


24

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

5.2 Gerçek Zaman Saatini Ayarla

Not:Sadece CPU 214, 215, ve 216 için

Operandlar:

T (byte): VB, IB, QB, MB, SMB, SB, *VD, *AC

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.

Yıl/Ay yyaa yy - 0 ila 99 aa - 1 ila 12


Gün/Saat ggss gg - 1 ila 31 ss - 0 ila 23
Dakika/Saniye ddnn dd - 0 ila 59 nn - 0 ila 59
Haftanın Günü 000g g - 1 ila 7 1 = Pazar
25

g - 0 Haftanın günü 0 olarak kalır

Örnek: VB400den başlayan 8 baytlık hafıza alanı

READ RTC (Saat Okuma)

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

Uzun süreli elektrik kesintileri:


Uzun süreli elektrik kesintilerinden ya da hafıza silindikten sonra saat,
aşağıdaki değerlere döner:

Gün: 01-Ocak-90
Saat: 00:00:00
Haftanın Günü Pazar

Saat yeniden ayarlanıncaya kadar bu değerde durur ve çalışmaz.

5.3 Gerçek Zaman Saati Örnekleri

Devre 1 I0.0 varsa, saat okunur ve VB400den başlayan alana yazılır.


26

Devre 2 I0.1 varsa, yıl değeri (bu örnekte 95) AC0a taşınır.

Devre 3 I0.2 varsa, AC0daki yıl değeri 1 arttırılır.

Devre 4 I0.3 varsa, yeni değer (96) VB400e yazılır.

Devre 5 I0.4 varsa, yeni değer saate aktarılır.

Devre 6 Ana program sonu.


27

6. BÖLÜM : İLETİŞİM
6.1 İletişim Konfigrasyonu

STEP 7-Micro/WIN ve S7-200 CPU iletişim konfigürasyonu, kullanılan


donanım ve yazılım kombinasyonuna göre değişir. Aşağıdaki tablo, STEP 7-
Micro/WIN 2.1 tarafından desteklenen donanım/yazılım kombinasyonlarını
özetlemektedir:

CPU Tipi Micro/ Desteklenen Desteklenen İşletim Ağ protokolü


WIN donanım hız sistemi
kurulu
mu
CPU212 PC/PPI 9.6 KB veya PPI,PPI
Microwin16

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

kablosu,MPI ISA 19.2 KB multimaster


kartı MPI ISA on
board CP5411,
CP5511, CP5611
CPU 215
Desteklenmez Desteklenmez Desteklenmez
Microwin16

4.0
Windows NT 4.0

port 1
(DP portu)

MPI ISA kartı 9.6 KB veya MPI


Microwin32

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.

· Bölüm 3: Installing and using the Micro/WIN Software

· Bölüm 4: Network Communications and the S7-200 CPU

İşletim sisteminize bağlı olarak iletişim ayarlarını aşağıdaki noktalardan


yapabilirsiniz:

· Windows 3.1 ile


- Sadece STEP-7 Micro/WIN yoluyla
· Windows 95 veya Windows NT 4.0 ile
- Kurulumun son aşamasında
- Windows kontrol panelinde yer alan PG/PC interface ikonuyla
- STEP-7 Micro/WIN yoluyla
STEP7-Micro/WIN Yoluyla İletişim Ayarlarını Yapmak
STEP-7 Micro/WIN içersinde bir iletişim diyalog kutusu yer almaktadır. Bu
kutuya aşağıdaki şekillerde ulaşabilirsiniz:

· Kurulum > İletişim menüsünü seçerek

· Yeni bir proje oluştururken çıkan CPU Tipi diyalog kutusunda İletişimi
seçerek

· Açılmış bir projeyle çalışırken, CPU > Tip menusunden İletişim


butonunu tıklayarak.

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.

STEP 7-Micro/WIN 16, Micro/WIN 32 - STEP 7 işlevlerinden sadece bir


kısmını kullanabilir. Eğer herhangi bir imkan mümkün değilse, ilgili diyalog
kutusunda gri olarak görülecektir.
29

6.2İNTERRUPT/İLETİŞİM
Interrupt İlişkilendir

Sembol:
ATCH
EN

INT

EVEN

Operandlar:

INT (bayt): CPU 212: 0-31


CPU 214/215/216: 0-127

EVENT (bayt): CPU 212: 0, 1, 8-10, 12


CPU 214: 0-20
CPU 215: 0-23
CPU 216: 0-26

Açıklama:

Bu kutu, bir interrupt olgusunu (EVENT) bir interrupt altprogramıyla


(INT) ilişkilendirir ve interrupt olgusuna izin verir.
Interruptlar öncelik grubuna göre CPU tarafından “ilk gelen ilk hizmet alır”
prensibiyle işlenir. Bir anda sadece bir interrupt aktif olabilir. Bir interrupt
çalışırken başka biri oluşursa (önceliği olsa bile) sonraki sıraya alınır
(kaybolmaz).

Eğer sistemin taşıyacağından daha fazla sayıda interrupt oluşursa,


interrupt görevi taşma özel hafıza biti set edilir. Görev alanı boşalınca ve
program akış kontrolu ana programa dönünce bu bit resetlenir.

Bir taşma oluşmadan, görev için aşağıdaki sayıda interrupt bekleyebilir.

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

Interrupt İlişkisini Kaldır

Sembol:
DTCH
EN

EVEN

Operandlar:

EVENT (bayt): CPU 212: 0, 1, 8-10, 12


CPU 214: 0-20
CPU 215: 0-23
CPU 216: 0-26
Açıklama:

Bu kutu, bir interrupt olgusunun (EVENT) bütün interrupt


altprogramlarıyla ilişkisini keser ve interrupt olgusunu engeller.

6.2.1 Interrupt Altprogramı

Sembol:

INT

Operandlar:

n (word): CPU 212: 0-31


CPU 214/215/216: 0-127
Açıklama:

Interrupt altprogramı (n) başlangıcını gösterir.


31

Interruptlara İzin Ver

Sembol:
ENI

Bu bobin, ilişkilendirilmiş bütün interrupt olgularının işlenmesine izin


verir.
Interrupt İznini Kaldır

Sembol:

DENI

Açıklama:

Bütün interruptların işlenmesini engeller.

6.2.2 Interrupttan Dönüş

Sembol:

R Koşullu Geri Dön


ETI

R
ETI Koşulsuz Geri Dön

Açıklama:

Koşullu dön bobini, öncesindeki mantık 1 ise interrupt altprogramını sona


erdirir. (CPU 210 tarafından desteklenmez.)
Koşulsuz geri dön bobini her interrupt programının son devresi olarak
bulunmalıdır.
32

6.2.3 İletişim Ağından Oku

Sembol:

NETR

EN

TABLO

Açıklama:

Bu kutu, tablodaki açıklamalara göre, belirli bir port'u (PORT) kullanarak


bir iletişim ağındaki cihazdan bilgi okur.
NETR kutusuyla okunabilecek, NETW ile yazılabilecek veri 16 bayttır.
Bir seferde toplam en fazla 8 NETR ve NETW kutusu çalıştırılabilir. Örneğin, 2
NETR ve 6 NETW ya da 4 NETR ve 4 NETW gibi.

6.2.4 İletişim Ağına Yaz

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

Bu kutu tablodaki (TABLE) verileri tanımlanan PORT'u kullanarak


gönderir. Tablonun ilk girdisi gönderilecek veri uzunluğunu içermelidir.

2 Interrupt Olguları Öncelik Tablosu


6.2.5

Olgu Öncelik Gruptaki


Destekleyen CPU
No Interrupt Açıklaması Grubu Önceliği 212 214 215 216
8 Port 0: karakter alımı İletişim 0 E E E E
9 Port 0: Iletildi (XMT) (En 0* E E E E
23 Port 0: mesaj alındı (RCV) yüksek) 0* E E
24 Port 1: mesaj alındı (RCV) 1 E
25 Port 1: karakter alımı 1* E
26 Port 1: iletildi (XMT) 1* E
0 Yükselen kenar, I0.0** Dijital 0 E E E E
2 Yükselen kenar, I0.1 (Orta) 1 E E E
4 Yükselen kenar, I0.2 2 E E E
6 Yükselen kenar, I0.3 3 E E E
1 Düşen kenar, I0.0** 4 E E E E
3 Düşen kenar, I0.1 5 E E E
5 Düşen kenar, I0.2 6 E E E
7 Düşen kenar, I0.3 7 E E E
12 HSC0 Sayma=Ayar ** 0 E E E E
13 HSC1 Sayma=Ayar 8 E E E
14 HSC1 yön değişti 9 E E E
15 HSC1 harici reset 10 E E E
16 HSC2 Sayma=Ayar 11 E E E
17 HSC2 yön değişti 13 E E E
19 PLS0 darbe sayısı 14 E E E
20 PLS1 darbe sayısı 15 E E E
10 Zaman kontrollu interrupt 0 Zaman 0 E E E E
11 Zaman kontrollu interrupt 1 Kontrollu 1 E E E
21 Zaman rölesi T32 anlık
değer=ayar değeri(endüşük) 2 E E
22 Zaman rölesi T96 anlık
değer=ayar değeri 3 E E
* İletişim çift yönlü (half-duplex) olduğundan, hem iletme hem alma aynı önceliğe sahiptir.

**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

6.2.6 Interrupt Olgularında Veri Paylaşımı

Interrupt olguları kullanıcı ana programıyla senkron olmadığından,


programın çalışmasının herhangi bir aşamasında gerçekleşebilir. Ana programla
interrupt altprogramının aynı veriyi paylaştığı durumlarda, veri paylaşımının
yaratabileceği problemlerden sakınmak için dikkatli bir programlama yapmak
gerekir.

Veri paylaşımında ortaya çıkabilecek problemler daha çok


tamamlanmamış bir program akışı sırasında gelecek interrupt olgusunun
geçersiz (henüz olması gereken değere ulaşmamış) bir veriyi kullanması ya da
interrupt altprogramının ana program tarafından kullanılacak bir veriyi zamansız
olarak değiştirmesi şeklinde görülebilir (çünkü interrupt geldiği zaman ana
programın hangi aşamada olduğuna bakılmaksızın ilgili altprograma sıçrama
yapılır).

Yukarda anlatılan durumlar programınızı STL veya Ladder olarak


yazdığınızda ortaya çıkabilir. Ladder programlamada ise, başka bir konuya daha
dikkat edilmelidir. Ladder komutlarının bir çoğu, bir dizi STL komutu oluşturur.
Ladder komutu ana programda ise ve paylaşılan bir veri alanı üzerinde işlem
yapıyorsa, tam bu sırada oluşacak interrupt sözü edilen bölgedeki değerleri
değiştirebilir ve sonuçta ladder komutu yanlış sonuç verebilir.

6.2.7 Veri Paylaşımı İçin Programlama Teknikleri

Burada anlatılan programlama teknikleri ana programla interrupt


altprogramları arasında veri paylaşımı olduğu durumlarda karşılaşılabilecek
problemleri giderecektir. Bu yöntemler, paylaşılan verilere erişimi kısıtlama ya
da paylaşılan verinin işlendiği sırada olabilecek interruptlara izin vermeme
prensibine dayanmaktadır. Uygun teknik, paylaşılan verinin büyüklüğüne (basit
elemanlar, örneğin bayt, word gibi; ya da karmaşık elemanlar, örneğin bir tablo
ya da birbiriyle ilişkili 2 ayrı word) ve kullanılan programlama yöntemine
bağlıdır.

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.

Son olarak, eğer paylaşılan veriler birbiriyle ilgili değerlerse, interruptlara


izin ver/kaldır (DISI, ENI) komutlarının kullanımı gerekebilir. Yukardaki
örnekte hem motor hızı, hem de konveyör hızıyla ilgilendiğimizi düşünelim.
Hesaplamadan önce DISI komutunu kullanın, bitince ENI ile interruptlara izin
verin. Aksi taktirde tam hesaplama sırasında gelecek bir interrupt, yeni motor
hızıyla eski konveyör hızının kullanılması gibi çelişkili bir duruma yol açabilir.

6.3 Ladder Interrupt/İletişim Örnekleri

Devre 1 İlk taramada, iletilecek veriye bir pointer oluştur. Freeport


modu, 9600 baud, parite yok, 8 bit/karakteri seç. SMB30 freeport kontrol
baytıdır.

Devre 2 I0.0 ve SM4.5 varsa, VD100 tarafından gösterilen bufferdaki


mesaj iletilir. SM4.5 iletim yokken vardır.
36

Devre 3 Alım interrupt olgusu 8i interrupt altprogramı 0 ile


ilişkilendir ve interrupta izin ver.

Devre 4 Ana program sonu.

Devre 5 Interrupt altprogramı 0.

Devre 6 SMB2de alınan karaktere bak. Bu bir "A" mı? Eğer öyle ise
Q0.1i set et.

Devre 7 Altprogramdan ana programa dönüş.

You might also like