Professional Documents
Culture Documents
SCL 2004
SCL 2004
Bu nedenle STEP7nin zellikleri ile birlikte yapsal bir dilin artlarn da iermektedir. FC, FB, DB, UDT, SFC, SFB Step7 yaplar SCLde oluturulabilir. Hazr bloklar kullanlabilir (S7lib. ktphanesi fonksiyonlar ve Step7 standart paketleri kullanlabilir). SCL de yazlm bloklar STL, LAD, FBD editrlerinden arlabilir. SCL, DIN EN-61131 (int. IEC 1131-3) standardna uygun olarak gelitirilmitir. SCL, Step7 yazlmn ve onunu programlama dilleri olan merdiven mant ve STL dillerini tamamlamakta ve gelitirmektedir. SCL, st seviye bir dilin zelliklerini tamakla beraber, tipik bir PLC yazlmnda olmas gereken giriler, klar, zamanlayclar, sayclar ve blok arlar gibi elemanlar iermektedir. SCL Uygulamas Gelitirme Ortam SCL uygulamalar iin gelimi bir uygulama ortam bulunmaktadr. Gelitirme ortam u bileenlerden olumaktadr. Fonksiyonlar(FCs), fonksiyon bloklar(FBs), organizasyon bloklar (OBs), data bloklar(DBs) ve kullanc tarafndan tanmlanm veri yaplar(UDTs) ieren programlar yazmak iin bir Editr.
Editrde yazlm olan kodu MC7 makine koduna dntren bir derleyici Batch Compiler (Yaratlan MC7 makine kodu tm S7-300/400 serisi ilemcilerde alabilmektedir). Kullanc programndaki mantksal hatalar saptayan bir debugger. SCL Kaynak Dosyas Oluturma ve Ulama SCL kaynak dosyas iki yoldan oluturulabilir. SCL Programlama Editr ile: Start mensnden Simatic/Step7/SCL-Programing S7Blocks yolunu izleyerek SCL programlama editrn anz. Editrde Files/New sekmesi aracl ile yeni bir SCL kaynak dosyas oluturabilirsiniz. Alan pencerede (ekil-1), Simatic Manager da oluturduunuz projeye ulap, SCL kaynak dosyanz S7 Program sekmesinin altndaki Sources klasrnn iine penceredeki Object name blmne dosya adn yazarak oluturabilirsiniz.
Simatic Maganager ile: SCL dosyalarnza Simatic Maganager iinden de ulaabilir ve oluturabilirsiniz. SCL kaynak dosyanz Step7 projenizin S7Program sekmesi altndaki Sources klasrn atktan sonra, farenin sa tuu ile aabileceiniz menden sras ile Insert New Object ve SCL Source sekmelerini seerek oluturabilirsiniz. Bu klasrn iindeki mevcut
dosyalarnz ift tklayarak aabilirsiniz. Bu durumda SCL programlama editr dorudan alacaktr.
SCL kaynak dosyalarn burada saklamaktadr SCL derleyicisi bloklar buraya yerletirmektedir.
SCL Editrnden ya da Simatic Managerdan oluturduunuz kaynak dosyalar projenizin altnda Sources klasrnde saklanr. SCL editrnde yazdnz kod derlendiinde oluturduunuz program kodu PLC makine koduna dntrlr ve projenizin altndaki Blocks klasrne yerletirilir. Derleyici ayn zamanda programda kullandnz simgesel adlar projenizin sembol tablosuna da kaydetmekte ve gerektiinde sembol tablosuna bavurmaktadr. SCL programnda S7 program bloklarn oluturabileceinizi ve blok arlar yapabileceinizi belirtmitik. Buna ek olarak programnzdan Step7 standart blok ktphanesindeki bloklar arp kullanabilirsiniz.
SCL Kaynak Dosyasnn Yaps SCLde programnzda oluturacanz bloklar tek kaynak dosyas ierisinde oluturabileceiniz gibi bloklarnz ayr kaynak dosyalar biiminde de oluturabilirsiniz. Derleme sonras bloklarnz ayn blok saklaycsna yerletirilmektedir.Tm programnz, iinde birden ok blok ieren bir ka kaynak dosyasndan oluabilir. Bu yap ekil-6da verilmitir.
Ancak, kaynak dosyalar olutururken bloklarn belirli bir sraya gre oluturulmalar gerekir.Uyulmas gereken kurallar aada verilmitir. Kullanc tarafndan tanmlanm veri tipleri (UDT), kullanldklar bloktan nce tanmlanmaldrlar. Bir UDT ye ait veri blou UDT den nce oluturulmaldr. Data bloklar kendilerine ulaan tm mantksal bloklardan nce yer almaldr. Bir fonksiyon blouna ilikilendirilmi data blou fonksiyon bloundan sonra yer almaldr.
Dier bloklar aran OB1, kaynak dosyasnn sonunda yer almaldr. Bir kaynak dosyasndan ardnz ancak ayn kaynak dosyasnda yer almayan bloklar, kaynak dosyas derlendiinde daha nceden kullanc programnda yer almaldr. Bu kurallar aadaki ekilde zetlenmitir.
Bir blou oluturan kaynak dosyas u blmlerden olumaktadr. Blok adnn ve trnn belirtildii blok bal. Blok zelliklerinin verildii blm (attributes) Deiken tanmlarnn yapld blm(declaration part) Kodlarn yazld blm( instuction part) Bloun sonlandrld blm.
DB5, FB10, FC62, FC61 ve OB1 bloklarndan oluan bir kaynak dosyasnn yaps ve FB10 blounun olarak inceleyeceiz. SCLde bloklarn balangcn ve sonunu belirtmek zere ayrlm blmleri yukardaki ekilde grlmektedir. zleyen blmde SCL blok yapsnn blmlerini ayrntl
anahtar szckler bulunmaktadr. ekil-9 da SCL bloklarna ilikin balang ve sonlandrma anahtar szckleri toplu olarak verilmitir.ekil-10da bu anahtar szcklerinin rnek olarak bir fonksiyon blouna (FB10) ilikin olanlarnn kaynak dosyasnda kullanm gsterilmitir. Burada FUNCTION_BLOK anahtar szc fonksiyon blounun balangcn gstermektedir.Bu anahtar szc boluktan sonra FB10 mutlak adresi izlemektedir. Bu alanda sembol tablosunda tanmlanm bir simgesel ad da
kullanlabilir.
Blok
END_FUCTION_BLOCK
anahtar
szc
ile
sonlandrlmtr.
Bu blmde blok ad, srm, yazar ve aile bilgileri girilebilir. Bu blmde yazacanz KNOW_HOW_PROTECT anahtar szc ile blounuza ifre koyup , kodlarn gizlenmesini salayabilirsiniz. Deiken Tanmlarnn Yapld Blm Bu blmde oluturacanz bloa ilikin giri, k deikenlerini, sabitleri, kullanacanz kalc ve geici deikenleri tanmlayabilirsiniz.Giri deikenleri VAR_INPUT.....END_VAR, k deikenleri VAR_OUTPUT .....END_VAR, sabitler CONST......END_CONST, kalc deikenler VAR..... END_VAR, geici deikenler VAR_TEMP......END_VAR anahtar szcklerinin arasna yazlmaldr. SCL de deiken tanmlanmasna ilikin bir rnek ekil-12 de verilmitir.
10
11
Bir Kaynak Dosyas rnei ekil-14de verilen kaynak dosyasnda BOOL tipinde iki giri deikeni olan ve BOOL tipinde deer dndren FC61 fonksiyonu, giri, k deikenleri olmayan ve deer dndrmeyen FC62 fonksiyonlar oluturulmu ve kaynak dosyasnn sonunda yer alan OB1den bu fonksiyonlara ar yaplmtr. NOT: Fonksiyon bloklarnn (FB) kendine ait veri bloklar bulunur. Deiken tanmlama blmnde tanmlayacanz kalc deikenler bu bloklarda saklanr. Fonksiyon bloundan kldnda bu deikenler deerlerini korur. Ancak, fonksiyonlarn (FC) kendilerine ait veri bloklar bulunmadndan bu bloklarda kalc deiken tanmlamalar yapamazsnz. ekil-15 de grld gibi SCL kaynak dosyasnda oluturduunuz bloklar FBDden arabilirsiniz ve balantlandrabilirsiniz.
12
13
Blok arlar
SCL bloklarnzdan daha nceden oluturulmu bloklara ar yapabilirsiniz. Blok arlar bloun simgesel ad ile ya da mutlak adresi ile yaplabilir. Blok arlar yaplrken ilgili blok iin gerekli parametre atamalar yaplmaldr. FBlerde sadece giri ve giri/k parametre atamalar yaplr. Bloun k deikenlerine atama yaplmaz. FBlerin dn deeri yoktur. k deikenlerine ayrca bloa ait veri bloundan ulalabilir. Fonksiyon arlarnda giri, k ve giri/k parametre atamalar yaplr, fonksiyonun dn deeri arld bloun deikenlerine atanabilir. ekil-16da bir fonksiyon blok ars rnei verilmitir.
14
Karakter Kmesi
Adan Zye kadar kk ve byk harfler 0dan 9a kadar tm rakamlar Boluk karakteri (ASCII kodu 32) ve tm kontrol karakterleri (ASCII 0 .. 31)
bulunmaktadr.
Anahtar Szckler
Anahtar szckler, SCLde nceden belirlenmi amalar iin
kullanlmak zere ayrlm szcklerdir. Anahtar szcklerin kullanmnda kk byk harf ayrm yoktur. Bu nedenle,rnein CONST anahtar szc const ve Const szckleri ile ayn biimde yorumlanacaktr. Anahtar szckler ve/veya simgesel adlar arasnda boluk braklmaldr. Anahtar szcklerin yan sra ; COS, SIN, TAN, SQRT, EXP, LOG, BOOL_TO_BYTE, INT_TO_REAL, INT_TO_WORD, REAL_TO_DWORD ...gibi standart fonksiyon adlar da SCLde kullanc tarafndan baka amalarla kullanlamayacak ayrlm szcklerdir.
15
Dil nesnelerine simgesel ad olarak anahtar szckler verilemez. Simgesel adn ilk karakteri rakam olmamal ve karakterler arasnda boluk braklmamaldr.
rnekler:
Names
Total 1234
Temperature
Array (anahtar szck) S value(karakterler arasnda boluk ) Yorum Satrlar SCLde / / ve (* ayrlm szcklerini kullanarak kodunuza yorum satrlar ekleyebilirsiniz. Bu szckleri izleyen satrlar derleyici tarafndan yorumlanmayacaktr.// belirteci kullanld satrn sonuna kadar etkilidir. (* ise iine ald tm satrlar yorum satr olarak iaretler. rnek: Value1 := 1234; // Bu bir yorum satrdr (*Bu aradaki tm satrlar yorumdur. Derleyici tarafndan yorumlanmayacaktr.*)
16
Bit veri tipleri: BOOL, BYTE, WORD, DWORD Karakter tipi; CHAR Saysal veri tipleri: INT, DINT, REAL Zaman veri tipleri: S5TIME, TIME, DATE, TIME_OF_DAY
Kullanc tarafndan tanmlanm veri tipleri UDT Parametre tipleri TIMER, COUNTER (zamanlayc ve sayc bloklar) BLOCK_FB, BLOCK_FC, BLOCK_DB, BLOCK_SDB (blok parameter tipleri) ANY POINTER
17
On tabannda gsterilim: 1000 +1_120_234_ -666_667 -99 ki tabannda gsterilim: Sekiz tabannda gsterilim: 16 tabannda gsterilim: 2#0101010 8#25707 16#1FA90B 16#F
Reel saylarn gsterilimi: -3.99 1000 1000.0 1234.5 3.0E10 Karakter gsterilimi: 'A' 'a' '$65' '$T' '$e1$4E'
'Hugo'
D#1998-05-11
TIME#20.5D T#20S_5MS
T#45.25M T#20m_23.5s
Bit veri tipi Anahtar szck BOOL BYTE WORD DWORD Veri uzunluu(bit) 1 8 16 32 Value range 0,1 or FALSE, TRUE -
18
16 32 32
Zaman veri tipleri S5TIME TIME(=DURATION) 16 32 T#0H_0M_0S_10MS..T#2H_46M_30S T#0D_0H_0M_0S_0MS. T#24D_20H_31M_023S_647MS D#1990-01-01 .. D#2168-12-31 TOD#0:0:0 .. TOD#23:59:59.999
DATE 16 TIME_OF_DAY(=TOD) 32
En fazla 254 karakter uzunluunda olabilen dizi (veri tipi: CHAR) Dizideki karakter says [ .. ] iinde belirtilir. Geniletilmi ASCII kullanlabilir. rnekler: ( en ok 10 karakterli dizi) (en ok 14 karakterli dizi) (STRING[254] e ka dmektedir ) karakter kmesindeki tm karakterler
ARRAY
Beli bir veri tipinde belli sayda eleman ieren deiken tanmlar.
19
ndeks aral [ .. ] iinde belirtilir. Veri tipi OF anahtar sznden sonra belirtilir. SCL alt boyutlu dizileri desteklemektedir
rnekler: ARRAY[1..10] OF REAL (10 reel saydan oluan dizi) ARRAY[1..10, 1..100] OF INT (1000 tamsaydan oluan 2 boyutlu dizi) ARRAY[3..10] OF UDT10 (UDT10 tipinde 8 eleman ieren dizi) ARRAY[1..10] OF STRUCT...END_STRUCT (ayn yapda 10 eleman ieren dizi) STRUCT (Structure) Deiik veri tiplerinde eitli saylarda bileen ieren deiken ierir. Bileenler STRUCT ve END_STRUCT anahtar szcklerinin arasnda tanmlanr. ie STRUCT yaplar kurulabilir. rnek: VAR Mot : STRUCT A1 : INT; A2 : STRING[100]; A3 : ARRAY[5..12] OF REAL; END_STRUCT; Vent: STRUCT S1 : STRUCT A1 : INT; A2 : ARRAY[1..12] OF INT; END_STRUCT; I2 : INT:= 25; END_STRUCT; END_VAR
20
zel veri tipi tanmlamasdr (tek bir STRUCT yaps kurulabilir) Bu veri tipi kendine ait (UDT) blounda tanmlanr UDT veri tipinde deikenler basit veri tipleri gibi proje iinde her yerde tanmlanabilir.
rnek: TYPE UDT1 STRUCT Power : REAL; Speed : INT; Motor : STRUCT Encoder : WORD; Producer : STRING[8]:= 'SIEMENS'; END_STRUCT; END_STRUCT END_TYPE
Anlam Bir zamanlayc iin tanmlayc, rnein T5 Bir sayc iin tanmlayc, rnein Z9 Anlam arld blokta kullanlacak olan zel bir blok iin tanmlayc rnein e.g FC101, DB42
ANY
21
Aritmetik lemler
Tekil lemler
Simge + -
rnek +A -A
Temel kili Operatrler lem Simge arpma * Blme / Modul alma MOD Tamsaylarda DIV Blme Toplama + karma s Alma lemi rnek A*B A/B I1 MOD I2 I1 DIV I2 A+B AB
lem s alma **
Simge
rnek A ** I1
Aritmetik ilem komutlarnn ilenenlerinin hangi veri tiplerinde olabilecekleri ve sonu deerlerinin tipi ekil-17 de verilmitir.
22
Tip I (ilenenler arasnda sra ilikisi bulunmaldr) lem kk kk eit byk byk eit ANY_NUM: ANY_CHAR: Simge < <= > >= INT, DINT, REAL CHAR, STRING (ASCII deeri karlatrmas) rnek A<B A <= B A>B A >= B
Bu ilemelerin ilenenleri
Tip II (ilenenler arasnda sra ilikisi olmasna gerek yok) lem eittir eit deil ANY_BIT: ANY_NUM: ANY_CHAR: Simge = <> rnek A=B A <> B
Bu ilemelerin ilenenleri BOOL, BYTE, WORD, DWORD INT, DINT, REAL CHAR, STRING
Mantksal lemler
lemler lem Tmleme VE EX-OR OR lenenlerin veri tipleri Veri tipleri: BOOL, BYTE, WORD, DWORD lgili komut NOT AND, & XOR OR rnek NOT A A AND B A XOR B A OR
Genel fonksiyonlar Giri parametresi Dn deeri ANY_NUM ANY_NUM ANY_NUM ANY_NUM ANY_NUM ANY_NUM Aklama mutlak deer alma Kare alma Karakk alma ABS SQR SQRT
Fonksiyon ad
24
Logaritmik fonksiyonlar EXP LN LOG ANY_NUM ANY_NUM ANY_NUM ANY_NUM ANY_NUM AMY_NUM ANY_NUM e zeri 10 zeri doal logaritma 10 tabannda log. EXPD ANY_NUM
Trigonometrik fonksiyonlar ACOS ANY_NUM ASIN COS SIN TAN ANY_NUM ANY_NUM ANY_NUM ANY_NUM ATAN ANY_NUM ANY_NUM ANY_NUM ANY_NUM ANY_NUM ANY_NUM ANY_NUM ark kosins ark sins ark tanjant kosins sins tanjant
rnekler RESULT RESULT RESULT := ABS( -5); // RESULT deeri 5 := SQRT (81.0); := SQR (23); // RESULT deeri 9.0 // RESULT deeri 529
25
WHILE BOOL_1 DO ... CONTINUE ... END_WHILE WHILE BOOL_1 DO ... EXIT ... END_WHILE IF INDEX <23 THEN GOTO MARKE_1; ... IF ENABLED THEN RETURN; ...
zleyen blmde SCL kontrol yaplarnn her birine ilikin sz dizimi ve rnekler verilmitir.
IF yaps
Sz dizimi IF < koul > THEN < komutlar >; ELSIF < koul > THEN < komutlar >; (istee bal) . . . ELSIF < koul > THEN < komutlar >; (istee bal) ELSE < komutlar >; (istee bal) END_IF rnek IF INPUT = FALSE THEN N := 0; SUM := 0.0; OK := FALSE; ELSIF START =_OK THEN N := N + 1; SUM := SUM + IN; ELSE OK := FALSE; END_IF;
26
CASE yaps
Sz dizimi CASE <koul> OF <deer dizisi>: <komutlar>; < deer dizisi >: <komutlar>; . . . < deer dizisi > <komutlar>; ELSE <komutlar>; END_CASE; rnek: CASE TW OF 1: DISPLAY := OVEN_TEMP; 2: DISPLAY := MOTOR_SPEED; 3: DISPLAY := GROSS_TARE; AW4 := 16#0003; 4..10: DISPLAY := MOTOR_TEMP; AW4 := 16#0004; ELSE: DISPLAY := 0; TW_ERROR := 1; END_CASE;
(istee bal)
FOR yaps
Sz dizimi FOR <sayacn ilk deer atamas TO <son deer koulu> BY <sayac art terimi> DO <komutlar>; END_FOR
27
rnek: FUNCTION_BLOCK FB20 VAR INDEX : INT; KEYWORD : ARRAY[1..51] OF STRING[20]; END_VAR BEGIN FOR INDEX := 1 TO 51 BY 2 DO IF KEYWORD[INDEX] = 'KEY' THEN EXIT; END_IF; END_FOR; : : END_FUNCTION_BLOCK
WHILE yaps
rnek:
FUNCTION_BLOCK FB20 VAR INDEX : INT; KEYWORD : ARRAY[1..51] OF STRING[20]; END_VAR BEGIN INDEX := 1; WHILE INDEX <= 51 AND KEYWORD[INDEX] <> 'KEY' DO INDEX := INDEX + 2; END_WHILE; : END_FUNCTION_BLOCK
28
REPEAT yaps
Sz dizimi REPEAT <komutlar>; END_REPEAT; rnek: FUNCTION_BLOCK FB20 VAR INDEX : INT; KEYWORD : ARRAY[1..51] OF STRING[20]; END_VAR UNTIL <koul>
BEGIN INDEX := -1; REPEAT INDEX := INDEX + 2; UNTIL INDEX > 51 OR KEYWORD[INDEX] = 'KEY' END_REPEAT; : : END_FUNCTION_BLOCK
CONTINUE yaps
INDEX := 0; WHILE INDEX <= 100 DO INDEX := INDEX + 1; IF FIELD[INDEX] = INDEX THEN CONTINUE;
29
EXIT yaps
INDEX_2 := 0; FOR INDEX_1 := 1 TO 51 BY 2 DO IF KEYWORD[INDEX_1] = 'KEY' THEN INDEX_2 := INDEX_1; EXIT; // (KEYWORD[INDEX_1] ierii 'KEY' e eit olduunda For dngsnden klr. END_IF; END_FOR; INDEX_SEARCHED GOTO yaps := INDEX_2;
Sz dizimi GOTO <Label for Jump Label>; rnek: LABEL LABEL1, LABEL2, LABEL3; END_LABEL BEGIN IF A > B THEN GOTO LABEL1; ELSIF A > C THEN GOTO LABEL2; END_IF;
30
RETURN yaps
Sz dizimi: RETURN rnek: INDEX := 0; WHILE INDEX <= 100 DO INDEX := INDEX + 1; IF FIELD[INDEX] = 0 THEN RETURN; ( *FIELD[INDEX] ierii 0 olduunda bloktan klr; *) ELSE ... END_IF; END_WHILE;
31
Sayc ierii iin bellekte 16 bitlik alan ayrlmtr. Bu alann dk anlaml 12 bitinde sayc ierii saklanmaktadr. Sayc ierii 0-999
32
aralnda deerler alabilir. Sayc ieriine BCD formatnda ve ya ikili kodda ulaabilir. Sayc fonksiyon arsna ilikin bir rnek aada verilmitir.
33
Zamanlayclar
SCL, Step 7nin kullancya salad zamanlayc fonksiyonlarn da desteklemektedir. Sayclar gibi bu fonksiyonlar da SCL programnzda carabilirsiniz. SCL, Step 7nin sunduu Kenar tetiklemeli zamanlayc(S_PULSE) Geniletilmi kenar tetiklemeli zamanlayc(S_PEXT) Gecikmeli kapatan zamanlayc(S_ODT) Kalc gecikmeli kapatan zamanlayc(S_ODTS) Gecikmeli aan zamanlayc (S_OFFDT) zamanlayc fonksiyonlarn desteklemektedir. Zamanlayc fonksiyonlar S5TIME tipinde bir k parametresi de bulunmktadr. Zamanlayclar iin bellekte 16 bitlik bir alan ayrlmtr. Dk anlaml 12 bit zamanlayc deerini BCD formatta saklamaktadr. 12ci ve 13c bitler zamanlayc ieriinin artrlma araln belirlemektedir. Zamanlayc ierii bu bitlerce belirlenen aralklarla zamanlayc ierii birer birim azaltlmaktadr.Zamanlayc ierii 0-9990 aralnda deerler alabilir. 14c ve 15ci bitler kullanlmamaktadr. tipinde deer dnmektedir
34
35
Aada zamanlayc ve sayc fonksiyonlarnn arld SAYICI ve ZAMANLAYICI fonksiyon bloklarnn merdiven mant ile arlmalar gsterilmitir.
36